/* ── rosters (armies) ── */
.panel-roster { display: flex; flex-direction: column; gap: .8rem; }
.roster {
  border: 1px solid var(--border); border-radius: var(--radius-sm); padding: .7rem;
  background: linear-gradient(180deg, rgba(255, 255, 255, .05), rgba(0, 0, 0, .28));
  transition: box-shadow .3s, border-color .3s, transform .3s;
}
.roster.agatha.active { border-color: rgba(47, 95, 179, .75); box-shadow: 0 0 26px rgba(47, 95, 179, .28); }
.roster.mason.active { border-color: rgba(176, 42, 42, .75); box-shadow: 0 0 26px rgba(176, 42, 42, .3); }
.roster-head { display: flex; align-items: center; gap: .6rem; }
.roster-meta { display: flex; flex-direction: column; line-height: 1.25; flex: 1; }
.roster-name { font-family: var(--font-display); font-size: 1.15rem; }
.roster.agatha .roster-name { color: var(--agatha-2); }
.roster.mason .roster-name { color: var(--mason-2); }
.roster-side { font-size: .7rem; color: var(--muted); }
.roster-score {
  font-family: var(--font-latin); font-weight: 800; font-size: 1.5rem; color: var(--gold-2);
  min-width: 2ch; text-align: center;
}
.roster-score.bump { animation: scoreBump .5s var(--ease); }
@keyframes scoreBump { 40% { scale: 1.35; color: #fff; } }

/* ── morale bar ── */
.morale {
  margin-top: .55rem; height: 8px; border-radius: 999px; overflow: hidden;
  background: rgba(0, 0, 0, .55); border: 1px solid var(--border);
}
.morale-fill {
  display: block; height: 100%; width: 0%; border-radius: 999px;
  transition: width .55s var(--ease), filter .3s;
}
.roster.agatha .morale-fill { background: linear-gradient(90deg, #1c3a70, #4a7fe0, #9dc0ff); }
.roster.mason .morale-fill { background: linear-gradient(90deg, #5c1010, #b02a2a, #f08a6e); }
.roster.routed .morale-fill { filter: saturate(.4) brightness(.7); }

/* ── fallen piles ── */
.fallen {
  display: flex; flex-wrap: wrap; gap: .1rem; margin-top: .55rem; min-height: 26px; align-items: center;
  font-family: 'Segoe UI Symbol', 'Noto Sans Symbols 2', serif; font-size: 1.3rem; line-height: 1;
}
.fallen .fp { color: #6f6656; text-shadow: 0 1px 2px #000; }
.fallen .fp.w { color: #a9a08c; }
.fallen .fp.b { color: #6b6259; }
.fallen .fp:first-child { animation: fadeUp .4s var(--ease) both; }
.fallen-empty { font-family: var(--font-head); font-size: .72rem; color: var(--muted); }

/* ── streaks ── */
.streaks { display: flex; flex-direction: column; gap: .4rem; }
.streak-badge {
  display: flex; align-items: center; gap: .5rem; padding: .4rem .6rem;
  border: 1px solid var(--border-strong); border-radius: var(--radius-sm);
  background: linear-gradient(90deg, rgba(255, 168, 46, .16), rgba(0, 0, 0, .3));
  font-family: var(--font-head); font-size: .82rem; animation: fadeUp .35s var(--ease) both;
}
.streak-badge svg { width: 15px; height: 15px; color: var(--gold-2); }
.streak-badge.agatha { border-color: rgba(47, 95, 179, .6); color: var(--agatha-2); }
.streak-badge.mason { border-color: rgba(176, 42, 42, .6); color: var(--mason-2); }

/* ── chronicle ── */
.panel-log { display: flex; flex-direction: column; gap: .6rem; }
.panel-head { display: flex; align-items: center; justify-content: space-between; }
.panel-title { font-family: var(--font-display); font-size: 1.2rem; color: var(--gold-2); }
.panel-count { font-family: var(--font-latin); font-size: .8rem; color: var(--muted); }
.chronicle {
  display: flex; flex-direction: column; gap: .35rem; overflow-y: auto;
  max-height: min(46vh, 420px); padding-inline-end: .35rem;
  scrollbar-width: thin; scrollbar-color: var(--gold-deep) transparent;
}
.chronicle::-webkit-scrollbar { width: 6px; }
.chronicle::-webkit-scrollbar-thumb { background: var(--stone); border-radius: 6px; }
.chron-entry {
  border-inline-start: 2px solid var(--border-strong); padding: .3rem .5rem;
  background: rgba(255, 255, 255, .03); border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  font-family: var(--font-body); font-size: .88rem; color: var(--text-2);
  animation: fadeUp .3s var(--ease) both;
}
.chron-entry.agatha { border-inline-start-color: var(--agatha); }
.chron-entry.mason { border-inline-start-color: var(--mason); }
.chron-entry em { color: var(--gold-2); font-style: normal; font-family: var(--font-latin); font-size: .82rem; }
.chron-entry.kill { background: rgba(140, 17, 17, .14); color: var(--text); }
.chron-entry .cn { font-family: var(--font-head); font-size: .78rem; color: var(--muted); }
.chron-entry.cry { background: rgba(255, 168, 46, .1); }
.chronicle-empty { color: var(--muted); font-family: var(--font-body); font-size: .9rem; text-align: center; padding: 1.2rem .4rem; }

/* ── controls ── */
.controls { display: flex; flex-direction: column; gap: .45rem; margin-top: auto; }
