/* Last Wallet Standing — live proto · Torchlight polish (from studio/polish-mock) */

:root {
  /* FanForce Spotlight tokens — LWS layout, FF surfaces */
  --bg: #0d0a18;
  --bg-raised: #141028;
  --bg-card: #1a1432;
  --bg-soft: #241c3f;
  --night: #0d0a18;
  --ember-char: #1a1432;
  --parchment: #f8f1de;
  --parchment-dim: rgba(248, 241, 222, 0.72);
  --parchment-mute: rgba(232, 226, 246, 0.55);
  --torch: #8f61ff;
  --torch-deep: #5d34d8;
  --torch-glow: rgba(143, 97, 255, 0.28);
  --torch-soft: rgba(143, 97, 255, 0.12);
  --reaped: #9b2d3c;
  --reaped-bright: #e85a6a;
  --reaped-glow: rgba(155, 45, 60, 0.35);
  --ember-orange: #e85a6a;
  --alive: #8f9aab;
  --sage: #9aa0b8;
  --hairline: rgba(203, 182, 255, 0.12);
  --hairline-warm: rgba(143, 97, 255, 0.32);
  --hairline-soft: rgba(248, 241, 222, 0.08);
  --muted: rgba(232, 226, 246, 0.50);
  --font-display: "Plus Jakarta Sans", "Figtree", system-ui, sans-serif;
  --font-ui: "Figtree", "IBM Plex Sans", system-ui, sans-serif;
  --radius: 16px;
  --radius-sm: 12px;
  --nav-h: 64px;
  --app-max: 1180px;
  --pad-x: 40px;
  --ff-glow: #1d1240;
  --ff-lilac: #cbb6ff;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body { min-height: 100%; }
body {
  min-height: 100vh;
  color: var(--parchment);
  font-family: var(--font-ui);
  font-size: 15px;
  line-height: 1.45;
  background:
    radial-gradient(ellipse 90% 55% at 50% -10%, rgba(143, 97, 255, 0.07), transparent 55%),
    radial-gradient(ellipse 60% 40% at 80% 100%, rgba(139, 30, 45, 0.06), transparent 50%),
    var(--bg);
  -webkit-font-smoothing: antialiased;
}

button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; border: none; background: none; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
ul { list-style: none; }

.app {
  width: 100%;
  max-width: var(--app-max);
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  position: relative;
  /* Clear fixed mobile bottom nav + home-indicator safe area */
  padding-bottom: calc(var(--nav-h) + env(safe-area-inset-bottom, 0px) + 28px);
}

/* ── Header / nav (mock) ── */
.site-header {
  position: sticky;
  top: 0;
  z-index: 40;
  background: rgba(13, 10, 24, 0.92);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--hairline);
}

.pretend-badge {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 6px 14px;
  background: rgba(143, 97, 255, 0.06);
  border-bottom: 1px solid var(--hairline);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--parchment-mute);
}
.pretend-badge .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--torch);
  box-shadow: 0 0 8px var(--torch-glow);
  flex-shrink: 0;
}
.pretend-badge .badge-soft { color: var(--sage); font-weight: 500; opacity: 0.85; }

.nav {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 16px;
  padding: 14px var(--pad-x);
}
button.nav-brand {
  appearance: none;
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  font: inherit;
  color: inherit;
  text-align: left;
  grid-column: 1;
  justify-self: start;
}
button.nav-brand:hover span { color: #cbb6ff; }
.nav-brand {
  font-family: var(--font-display);
  font-size: 22px;
  letter-spacing: 0.06em;
  color: var(--parchment);
  flex-shrink: 0;
  white-space: nowrap;
  justify-self: start;
}
.nav-brand span { color: var(--torch); }

.nav-links {
  display: none;
  gap: 8px;
  list-style: none;
  margin: 0;
  padding: 0;
  justify-content: center;
  justify-self: center;
  grid-column: 2;
}
.nav-links button,
.top-nav button {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 8px 16px;
  border-radius: 999px;
  color: var(--parchment-mute);
  transition: color 0.15s, background 0.15s;
}
.nav-links button:hover,
.top-nav button:hover { color: var(--parchment); }
.nav-links button.active,
.top-nav button.active {
  color: var(--parchment);
  background: var(--bg-soft);
}

.nav-aside {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-shrink: 0;
  justify-self: end;
  grid-column: 3;
}
.nav-rules {
  font-size: 12px;
  font-weight: 500;
  color: var(--parchment-mute);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.nav-rules:hover { color: var(--parchment-dim); }
.nav-rules.active { color: var(--torch); }
.nav-aside {
  display: flex;
  align-items: center;
  gap: 10px;
}
.nav-faq { /* same link-soft treatment as Rules */ }

.season-chip {
  display: flex; align-items: center; gap: 7px;
  background: rgba(143, 97, 255, 0.08);
  border: 1px solid var(--hairline-warm);
  color: var(--torch);
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.08em;
  padding: 6px 10px;
  border-radius: 8px;
}
.pulse {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--torch);
  animation: pulse 1.6s infinite;
}
@keyframes pulse {
  0% { box-shadow: 0 0 0 0 rgba(143, 97, 255, 0.55); }
  70% { box-shadow: 0 0 0 8px rgba(143, 97, 255, 0); }
  100% { box-shadow: 0 0 0 0 rgba(143, 97, 255, 0); }
}

/* Keep inactive screens laid out (no display:none) so tab switches reuse decode/layout. */
main {
  position: relative;
  flex: 1;
  width: 100%;
  min-height: 0;
}
.screen {
  display: block;
  visibility: hidden;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  pointer-events: none;
  height: 0;
  overflow: hidden;
  padding: 20px var(--pad-x) 28px;
  box-sizing: border-box;
}
.screen.active {
  visibility: visible;
  position: relative;
  height: auto;
  overflow: visible;
  pointer-events: auto;
  flex: 1;
}

/* Type helpers */
.display, .bebas { font-family: var(--font-display); letter-spacing: 0.04em; font-weight: 400; }
.muted { color: var(--parchment-mute); }
.dim { color: var(--parchment-dim); }
.torch { color: var(--torch); }
.reaped-c, .hot { color: var(--reaped-bright); }
.mono { font-family: var(--font-ui); font-variant-numeric: tabular-nums; }
.gold { color: var(--torch); }
.small { font-size: 12px; }

h1.page-title {
  font-family: var(--font-display);
  font-size: 48px;
  letter-spacing: 0.04em;
  color: var(--parchment);
  margin-bottom: 8px;
  font-weight: 400;
  line-height: 0.95;
}

/* Cards */
.card {
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 20px;
  padding: 20px 22px;
  margin-bottom: 14px;
  position: relative;
}
.card.star, .card.torch, .card.alive {
  border-color: var(--hairline-warm);
  box-shadow: 0 0 40px var(--torch-soft);
}
.card.warn-card {
  border-color: var(--hairline-warm);
  background: rgba(143, 97, 255, 0.08);
}
.card.accent-bar::before {
  content: "";
  position: absolute;
  left: 0; top: 16px; bottom: 16px;
  width: 3px;
  background: var(--torch);
  border-radius: 0 2px 2px 0;
}

.lbl {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 6px;
  font-weight: 600;
}
.lbl.hot { color: var(--reaped-bright); }
.lbl.torch { color: var(--torch); }
.lbl.alive { color: var(--parchment-dim); }

.hint {
  font-size: 13px;
  color: var(--parchment-mute);
  line-height: 1.5;
}
.kv-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--hairline);
  font-size: 14px;
}
.kv-row:last-child { border-bottom: none; }
.kv-row .k { color: var(--parchment-mute); }
.kv-row .v { color: var(--parchment); font-weight: 600; text-align: right; }

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.02em;
  padding: 16px 32px;
  border-radius: 14px;
  transition: transform 0.12s, box-shadow 0.12s, opacity 0.12s;
  width: auto;
}
.btn:active { transform: scale(0.98); }
.btn-primary {
  background: linear-gradient(180deg, #f0b84a 0%, var(--torch) 100%);
  color: #1a1206;
  box-shadow: 0 0 0 1px rgba(143, 97, 255, 0.4), 0 8px 32px var(--torch-glow);
}
.btn-primary:hover:not(:disabled) { transform: translateY(-1px); }
.btn-ghost {
  background: transparent;
  color: var(--parchment-dim);
  border: 1px solid var(--hairline);
  padding: 12px 20px;
  font-weight: 600;
  font-size: 13px;
}
.btn-muted {
  background: var(--bg-soft);
  color: var(--parchment-mute);
  border: 1px solid var(--hairline);
  padding: 12px 18px;
  font-size: 13px;
  font-weight: 600;
  border-radius: 12px;
}
.btn-danger {
  background: rgba(139, 30, 45, 0.35);
  color: var(--parchment);
  border: 1px solid rgba(196, 58, 74, 0.45);
}
.btn-sm { padding: 8px 12px; font-size: 12px; }
.btn-row { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.btn-row .btn { flex: 1; min-width: 120px; }
.btn:disabled { opacity: 0.4; cursor: not-allowed; transform: none !important; }
.link-soft {
  font-size: 13px;
  font-weight: 500;
  color: var(--parchment-mute);
  text-decoration: underline;
  text-underline-offset: 3px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
}
.link-soft:hover { color: var(--parchment-dim); }

/* Avatar */
.avatar {
  border-radius: 50%;
  object-fit: cover;
  background: var(--bg-soft);
  flex-shrink: 0;
}
.avatar--sm { width: 36px; height: 36px; }
.avatar--md { width: 52px; height: 52px; }
.avatar--lg { width: 88px; height: 88px; }
.initials {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--bg-soft);
  color: var(--parchment-dim);
  font-weight: 700;
  font-size: 14px;
  flex-shrink: 0;
}
.avatar-stack { display: flex; align-items: center; }
.avatar-stack .avatar {
  width: 28px; height: 28px;
  margin-left: -8px;
  border: 2px solid var(--bg-card);
}
.avatar-stack .avatar:first-child { margin-left: 0; }

/* Pills */
.pills { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; }
.pill {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 7px 12px;
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--parchment-mute);
  border: 1px solid transparent;
}
.pill:hover { color: var(--parchment); }
.pill.active {
  color: var(--parchment);
  border-color: var(--hairline-warm);
  background: rgba(143, 97, 255, 0.1);
}
.pill.hot.active, .pill.hot { color: var(--reaped-bright); }
.alive-pill {
  color: var(--torch) !important;
  border-color: var(--hairline-warm) !important;
  background: var(--torch-soft) !important;
}

/* Empty */
.empty {
  text-align: center;
  padding: 48px 24px;
  color: var(--parchment-mute);
}
.empty strong {
  display: block;
  color: var(--parchment);
  font-size: 18px;
  margin: 12px 0 6px;
}
.empty-mark {
  width: 48px; height: 48px;
  margin: 0 auto;
  color: var(--parchment-mute);
  opacity: 0.5;
}
.empty-mark svg { width: 100%; height: 100%; }

/* ========== FIRST RUN ========== */
.firstrun-overlay {
  position: fixed;
  inset: 0;
  z-index: 100;
  background:
    radial-gradient(ellipse 90% 55% at 50% -10%, rgba(143, 97, 255, 0.1), transparent 55%),
    var(--bg);
  overflow-y: auto;
  padding: 48px 24px 56px;
}
.firstrun-overlay[hidden] { display: none !important; }
.firstrun-inner {
  max-width: 1080px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: calc(100vh - 104px);
}
.firstrun-title { text-align: center; margin-bottom: 48px; }
.firstrun-title h1 {
  font-family: var(--font-display);
  font-size: clamp(40px, 8vw, 72px);
  letter-spacing: 0.06em;
  line-height: 0.92;
  text-shadow: 0 0 80px var(--torch-glow);
}
.firstrun-title p {
  margin-top: 12px;
  font-size: 16px;
  color: var(--parchment-mute);
}
.teach-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-bottom: 48px;
}
.teach-card {
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 24px;
  padding: 36px 28px 32px;
  min-height: 200px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  position: relative;
  overflow: hidden;
}
.teach-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 80% 60% at 50% 0%, var(--torch-soft), transparent 70%);
  pointer-events: none;
}
.teach-num {
  font-family: var(--font-display);
  font-size: 48px;
  color: var(--torch);
  line-height: 1;
  position: relative;
}
.teach-card p {
  font-size: 22px;
  font-weight: 600;
  line-height: 1.3;
  position: relative;
}
.firstrun-cta { text-align: center; }
.firstrun-cta .btn { font-size: 17px; padding: 18px 40px; }

/* ========== HOME ========== */
.home-hero { text-align: center; margin-bottom: 28px; }
.countdown-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 8px;
}
.countdown {
  font-family: var(--font-display);
  font-size: clamp(52px, 12vw, 84px);
  letter-spacing: 0.04em;
  line-height: 0.9;
  text-shadow: 0 0 60px var(--torch-glow);
}
.countdown .sep { color: var(--torch); opacity: 0.7; margin: 0 4px; }
.countdown.payday { color: var(--torch); font-size: clamp(40px, 10vw, 64px); }
.tagline {
  margin-top: 14px;
  font-size: 17px;
  color: var(--parchment-dim);
  font-weight: 500;
}

.stats-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-bottom: 12px;
}
.stat-card {
  text-align: center;
  padding: 24px 12px 20px;
  background: var(--bg-card);
  border-radius: 18px;
  border: 1px solid var(--hairline);
}
.stat-card .label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 10px;
}
.stat-card .value {
  font-family: var(--font-display);
  font-size: clamp(28px, 5vw, 48px);
  letter-spacing: 0.02em;
  line-height: 1;
}
.stats-hint {
  text-align: center;
  font-size: 12px;
  color: var(--parchment-mute);
  margin-bottom: 24px;
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.5;
}

.home-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 20px;
  align-items: stretch;
  margin-bottom: 16px;
}

.poster {
  display: flex;
  gap: 28px;
  align-items: center;
  padding: 28px 32px;
  background: var(--bg-card);
  border-radius: 24px;
  border: 1px solid rgba(139, 30, 45, 0.35);
  box-shadow: 0 0 48px var(--reaped-glow);
  position: relative;
  overflow: hidden;
}
.poster::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 70% 80% at 0% 50%, rgba(139, 30, 45, 0.18), transparent 60%);
  pointer-events: none;
}
.poster-face { position: relative; flex-shrink: 0; }
.poster-face img {
  width: 140px; height: 140px;
  border-radius: 20px;
  object-fit: cover;
  border: 2px solid rgba(196, 58, 74, 0.4);
}
.poster-meta { position: relative; flex: 1; min-width: 0; }
.poster-kicker {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--reaped-bright);
  margin-bottom: 8px;
}
.poster-name {
  font-family: var(--font-display);
  font-size: clamp(28px, 4vw, 42px);
  letter-spacing: 0.03em;
  margin-bottom: 10px;
}
.poster-quote {
  font-size: 16px;
  font-style: italic;
  color: var(--parchment-dim);
  line-height: 1.4;
  margin-bottom: 14px;
  max-width: 380px;
}
.poster-stamp {
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--reaped-bright);
  border: 1.5px solid var(--reaped-bright);
  padding: 6px 12px;
  border-radius: 6px;
  transform: rotate(-2deg);
}
.poster.waiting {
  border-color: var(--hairline);
  box-shadow: none;
}
.poster.waiting::before { display: none; }
.poster.waiting .poster-kicker { color: var(--parchment-mute); }

.you-strip {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 16px;
  padding: 28px;
  background: var(--bg-card);
  border-radius: 24px;
  border: 1px solid var(--hairline);
}
.you-strip-top { display: flex; align-items: center; gap: 14px; }
.you-strip .name { font-weight: 700; font-size: 16px; }
.you-strip .seat { font-size: 13px; color: var(--parchment-mute); margin-top: 2px; }
.you-strip .bag {
  font-family: var(--font-display);
  font-size: 36px;
  color: var(--torch);
  letter-spacing: 0.02em;
}
.you-strip .bag-label {
  font-size: 12px;
  color: var(--parchment-mute);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 4px;
}

.last-night-pool {
  margin: -4px 0 20px;
  padding: 12px 16px;
  background: rgba(22, 27, 34, 0.6);
  border: 1px solid var(--hairline);
  border-radius: 12px;
  font-size: 12px;
  color: var(--parchment-mute);
}
.last-night-pool-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin-bottom: 8px;
  color: var(--parchment-mute);
}
.last-night-pool-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 18px;
}
.last-night-pool-row strong { color: var(--torch); font-weight: 700; }
.last-night-pool-row .burn-val { color: var(--reaped-bright) !important; }

.home-cta { text-align: center; margin-top: 8px; }
.home-cta .btn { font-size: 17px; padding: 18px 40px; min-width: 280px; }
.home-footer-links {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-top: 18px;
  flex-wrap: wrap;
}
.home-payday {
  text-align: center;
  margin: 16px 0;
  padding: 16px;
  background: var(--torch-soft);
  border: 1px solid var(--hairline-warm);
  border-radius: 14px;
}
.home-payday p { margin-bottom: 10px; color: var(--parchment-dim); }

/* ========== CHAMBER ========== */
.page-head { margin-bottom: 20px; }
.page-head h1 {
  font-family: var(--font-display);
  font-size: clamp(36px, 5vw, 48px);
  letter-spacing: 0.04em;
  margin-bottom: 8px;
  font-weight: 400;
}
.page-head .cut { font-size: 15px; color: var(--parchment-dim); margin-bottom: 6px; }
.page-head .explain { font-size: 13px; color: var(--parchment-mute); max-width: 720px; }

.banner-night {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--reaped-bright);
  background: rgba(139, 30, 45, 0.2);
  border: 1px solid rgba(196, 58, 74, 0.35);
  padding: 8px 14px;
  border-radius: 8px;
  margin-bottom: 16px;
}
.chamber-past-banner {
  display: block;
  margin-bottom: 14px;
  padding: 12px 16px;
  background: rgba(139, 30, 45, 0.15);
  border: 1px solid rgba(196, 58, 74, 0.3);
  border-radius: 12px;
  font-size: 13px;
  color: var(--parchment-dim);
}
.chamber-past-banner strong { color: var(--reaped-bright); display: block; margin-bottom: 4px; }

.chamber-toolbar { margin-bottom: 8px; }
.chamber-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin: 12px 0 16px;
}
.chamber-search {
  flex: 1;
  min-width: 180px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 12px;
  padding: 10px 14px;
  color: var(--parchment);
  font-size: 14px;
}
.chamber-search:focus { outline: none; border-color: var(--hairline-warm); }
.chamber-explainer-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; align-items: center; }

.cast-list { display: flex; flex-direction: column; gap: 6px; }
.cast-row {
  display: grid;
  grid-template-columns: 56px 1fr auto;
  align-items: center;
  gap: 16px;
  padding: 14px 20px;
  background: var(--bg-card);
  border-radius: 14px;
  border: 1px solid transparent;
  position: relative;
}
.cast-row:hover { border-color: var(--hairline); }
.cast-row.is-you { border-color: var(--hairline-warm); }
.cast-rank {
  font-family: var(--font-display);
  font-size: 22px;
  color: var(--parchment-mute);
  text-align: center;
}
.cast-rank.gold { color: var(--torch); }
.cast-who { display: flex; align-items: center; gap: 14px; min-width: 0; }
.cast-who .handle { font-weight: 700; font-size: 16px; }
.cast-who .handle.unnamed { color: var(--parchment-mute); font-weight: 500; }
.cast-sub {
  font-size: 11px;
  color: var(--parchment-mute);
  margin-top: 2px;
}
.chip-you {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--torch);
  background: var(--torch-soft);
  border: 1px solid var(--hairline-warm);
  padding: 3px 8px;
  border-radius: 999px;
  margin-left: 8px;
  vertical-align: middle;
}
.cast-total {
  font-family: var(--font-display);
  font-size: 28px;
  color: var(--torch);
  letter-spacing: 0.02em;
  text-align: right;
  line-height: 1;
}
.cast-total .unit {
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 600;
  color: var(--parchment-mute);
  margin-left: 4px;
  letter-spacing: 0.04em;
}
.cast-total .pt {
  display: block;
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 500;
  color: var(--parchment-mute);
  margin-top: 4px;
  letter-spacing: 0;
}

.cast-row.is-reaped {
  background: linear-gradient(90deg, rgba(139, 30, 45, 0.28), rgba(22, 27, 34, 0.95) 55%);
  border-color: rgba(196, 58, 74, 0.4);
}
.cast-row.is-reaped .cast-rank { color: var(--reaped-bright); }
.cast-row.is-reaped .handle {
  color: var(--parchment-dim);
  text-decoration: line-through;
  text-decoration-color: rgba(196, 58, 74, 0.5);
}
.cast-row.is-reaped .cast-total { color: var(--parchment-mute); }
.stamp-reaped {
  position: absolute;
  right: 160px;
  top: 50%;
  transform: translateY(-50%) rotate(-8deg);
  font-family: var(--font-display);
  font-size: 20px;
  letter-spacing: 0.12em;
  color: var(--reaped-bright);
  border: 2px solid var(--reaped-bright);
  padding: 4px 12px;
  border-radius: 4px;
  opacity: 0.9;
  pointer-events: none;
}
.cut-line {
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--reaped-bright);
  padding: 10px;
  margin: 4px 0;
  border-top: 1px dashed rgba(196, 58, 74, 0.35);
  border-bottom: 1px dashed rgba(196, 58, 74, 0.35);
}

/* ========== YOU ========== */
.you-hero {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 32px;
  align-items: end;
  margin-bottom: 16px;
  padding: 36px 40px;
  background: var(--bg-card);
  border-radius: 24px;
  border: 1px solid var(--hairline);
  box-shadow: 0 0 60px rgba(143, 97, 255, 0.05);
}
.you-balance-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 8px;
}
.you-balance {
  font-family: var(--font-display);
  font-size: clamp(48px, 8vw, 72px);
  color: var(--torch);
  letter-spacing: 0.02em;
  line-height: 0.95;
  text-shadow: 0 0 40px var(--torch-glow);
}
.you-meta { margin-top: 12px; font-size: 15px; color: var(--parchment-dim); }
.you-meta strong { color: var(--parchment); font-weight: 600; }
.you-credits { text-align: right; }
.you-credits .num {
  font-family: var(--font-display);
  font-size: 40px;
  color: var(--torch);
}
.you-credits .lbl {
  font-size: 12px;
  color: var(--parchment-mute);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.warn-strip {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 20px;
  background: rgba(143, 97, 255, 0.08);
  border: 1px solid var(--hairline-warm);
  border-radius: 12px;
  font-size: 13px;
  color: var(--parchment-dim);
  margin-bottom: 20px;
}
.warn-strip .icon { font-size: 18px; flex-shrink: 0; }

.segments, .you-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 24px;
  border-bottom: 1px solid var(--hairline);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x proximity;
  overscroll-behavior-x: contain;
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* IE/legacy */
}
.segments::-webkit-scrollbar,
.you-tabs::-webkit-scrollbar {
  display: none; /* Chrome/Safari */
  width: 0;
  height: 0;
}
.seg, .you-tab {
  font-size: 13px;
  font-weight: 600;
  padding: 10px 18px;
  color: var(--parchment-mute);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  white-space: nowrap;
  flex-shrink: 0;
  scroll-snap-align: start;
}
.seg.is-active, .you-tab.active {
  color: var(--parchment);
  border-bottom-color: var(--torch);
}
.seg.is-secondary, .you-tab.is-secondary {
  font-weight: 500;
  opacity: 0.7;
}

.jersey {
  display: flex;
  gap: 32px;
  align-items: center;
  padding: 32px 36px;
  background: var(--bg-card);
  border-radius: 24px;
  border: 1px solid var(--hairline-warm);
  box-shadow: 0 0 48px var(--torch-soft);
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
}
.jersey::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 50% 80% at 0% 50%, var(--torch-soft), transparent 60%);
  pointer-events: none;
}
.jersey-face { position: relative; flex-shrink: 0; }
.jersey-face img {
  width: 120px; height: 120px;
  border-radius: 20px;
  border: 2px solid var(--hairline-warm);
  object-fit: cover;
}
.jersey-body { position: relative; flex: 1; }
.jersey-kicker {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--torch);
  margin-bottom: 6px;
}
.jersey-name {
  font-family: var(--font-display);
  font-size: clamp(28px, 4vw, 40px);
  letter-spacing: 0.03em;
  margin-bottom: 10px;
}
.jersey-lock { font-size: 15px; color: var(--parchment-dim); margin-bottom: 6px; }
.jersey-lock strong { color: var(--torch); font-weight: 700; }
.jersey-example { font-size: 14px; color: var(--parchment-mute); }
.jersey-example em { color: var(--parchment-dim); font-style: normal; font-weight: 600; }

/* Free cheer jersey — quieter than locked earn jersey */
.jersey--cheer {
  border-color: var(--hairline, rgba(255,255,255,0.12));
  box-shadow: none;
}
.jersey--cheer::before {
  background: radial-gradient(ellipse 50% 80% at 0% 50%, rgba(180, 190, 210, 0.08), transparent 60%);
}
.jersey--cheer .jersey-kicker {
  color: var(--parchment-mute);
}
.jersey--cheer .jersey-lock strong,
.jersey--cheer .jersey-lock {
  color: var(--parchment-mute);
}
.jersey--cheer .jersey-face {
  position: relative;
}
.jersey--cheer .jersey-face img {
  border-color: rgba(255,255,255,0.14);
  opacity: 0.95;
}
.jersey-free-chip {
  position: absolute;
  top: -6px;
  right: -8px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.12em;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(180, 190, 210, 0.18);
  color: var(--parchment-dim);
  border: 1px solid rgba(255,255,255,0.12);
}
.cheer-fans li {
  opacity: 0.85;
}
.cheer-fallen-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  font-size: 13px;
  width: 100%;
}
.avatar-stack--sm .avatar {
  width: 22px;
  height: 22px;
}
.cast-sub .cheers-muted,
.cheers-muted {
  color: var(--parchment-mute);
  font-weight: 400;
}


.alloc-mini-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
.alloc-mini {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--bg-card);
  border-radius: 14px;
  border: 1px solid var(--hairline);
}
.alloc-mini img, .alloc-mini .initials {
  width: 40px; height: 40px; border-radius: 50%;
}
.alloc-mini .who { font-weight: 600; flex: 1; }
.alloc-mini .pct { color: var(--torch); font-family: var(--font-display); font-size: 22px; }

.you-advanced { text-align: center; margin-top: 8px; }
.you-panel { margin-top: 4px; }
.you-header { margin-bottom: 8px; }
.wallet-live {
  font-size: 12px;
  color: var(--parchment-mute);
  display: flex;
  align-items: center;
  gap: 6px;
}
.wallet-live .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--torch);
}

.alloc-list { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.alloc-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px;
  background: var(--bg-soft);
  border-radius: 12px;
}
.cheer { display: flex; align-items: center; gap: 12px; }
.crest {
  width: 40px; height: 40px; border-radius: 50%;
  background: var(--bg-card);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 13px;
}
.cheer .who { font-weight: 600; }
.cheer .tag { font-size: 12px; color: var(--parchment-mute); }
.team-spread-note { color: var(--torch); }

/* Dial (Chamber participant) */
.split-hdr { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 8px; }
.sticky-note {
  font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--torch); background: var(--torch-soft); padding: 4px 10px; border-radius: 999px;
  border: 1px solid var(--hairline-warm);
}
.dial-row {
  display: flex; align-items: center; gap: 12px; margin: 16px 0;
}
.dial-side { text-align: center; min-width: 64px; }
.dial-side .pct {
  font-family: var(--font-display); font-size: 36px; line-height: 1; color: var(--torch);
}
.dial-side.to-you .pct { color: var(--parchment); }
.dial-side .lab {
  font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--parchment-mute); margin-top: 4px; font-weight: 600;
}
.dial-mid { flex: 1; }
.dial-mid .vs {
  text-align: center; font-size: 11px; color: var(--parchment-mute);
  letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 8px;
}
.dial-track-wrap { position: relative; }
.dial-track-bg {
  position: absolute; left: 0; right: 0; top: 50%; height: 8px;
  transform: translateY(-50%); border-radius: 999px; pointer-events: none;
}
.dial-track-wrap input[type="range"] {
  width: 100%; appearance: none; background: transparent; height: 28px; position: relative; z-index: 1;
}
.dial-track-wrap input[type="range"]::-webkit-slider-runnable-track {
  height: 8px; background: transparent; border-radius: 999px;
}
.dial-track-wrap input[type="range"]::-webkit-slider-thumb {
  appearance: none; width: 22px; height: 22px; border-radius: 50%;
  background: var(--parchment); border: 3px solid var(--torch);
  margin-top: -7px; box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.dial-track-wrap input[type="range"]::-moz-range-track {
  height: 8px; background: transparent; border-radius: 999px;
}
.dial-track-wrap input[type="range"]::-moz-range-thumb {
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--parchment); border: 3px solid var(--torch);
}
.slider-labels {
  display: flex; justify-content: space-between;
  font-size: 11px; color: var(--parchment-mute); margin-top: 4px;
}
.preview-box {
  background: var(--bg-soft); border-radius: 12px; padding: 12px 14px; margin-top: 8px;
}
.preview-box .line { font-size: 14px; margin-bottom: 4px; }
.preview-box .line em { color: var(--torch); font-style: normal; font-weight: 700; }
.preview-box .sample { font-size: 12px; color: var(--parchment-mute); }

.reward-list { display: flex; flex-direction: column; gap: 12px; }
.reward-night-title { font-weight: 700; margin-bottom: 10px; }
.reward-block { margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--hairline); }
.reward-night .v.burn { color: var(--reaped-bright); }

/* ========== FALLEN ========== */
.fallen-head { margin-bottom: 18px; text-align: center; }
.fallen-sub { color: var(--parchment-mute); font-size: 14px; }
.fallen-stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 28px;
  padding: 4px 0 24px;
}
.exit-card {
  width: 100%;
  max-width: 680px;
  background: var(--bg-card);
  border-radius: 28px;
  border: 1px solid rgba(139, 30, 45, 0.4);
  box-shadow: 0 0 80px var(--reaped-glow);
  padding: 32px 40px 28px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.exit-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 70% 50% at 50% 0%, rgba(139, 30, 45, 0.25), transparent 55%),
    radial-gradient(ellipse 40% 30% at 50% 100%, rgba(143, 97, 255, 0.06), transparent 50%);
  pointer-events: none;
}
.exit-card > * { position: relative; }
.exit-portrait {
  width: 140px; height: 140px;
  border-radius: 20px;
  margin: 0 auto 16px;
  object-fit: cover;
  border: 3px solid rgba(196, 58, 74, 0.5);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);
}
.exit-stamp {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 24px;
  letter-spacing: 0.16em;
  color: var(--reaped-bright);
  border: 2.5px solid var(--reaped-bright);
  padding: 4px 14px;
  border-radius: 6px;
  transform: rotate(-6deg);
  margin-bottom: 12px;
}
.exit-name {
  font-family: var(--font-display);
  font-size: clamp(32px, 5vw, 44px);
  letter-spacing: 0.04em;
  margin-bottom: 4px;
}
.exit-nights {
  font-size: 13px;
  color: var(--parchment-mute);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 16px;
}
.exit-quote {
  font-size: 18px;
  font-style: italic;
  color: var(--parchment-dim);
  line-height: 1.4;
  max-width: 480px;
  margin: 0 auto 20px;
  padding: 0 12px;
}
.exit-quote::before { content: "“"; color: var(--reaped-bright); }
.exit-quote::after { content: "”"; color: var(--reaped-bright); }
.exit-split {
  display: flex;
  justify-content: center;
  gap: 40px;
  margin-bottom: 16px;
  padding: 14px 0;
  border-top: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
}
.exit-split .part .lbl {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 6px;
}
.exit-split .part .val {
  font-family: var(--font-display);
  font-size: 32px;
}
.exit-split .part .val.burn { color: var(--reaped-bright); }
.exit-split .part .val.pool { color: var(--torch); }
.exit-team {
  font-size: 14px;
  color: var(--parchment-dim);
  margin-bottom: 16px;
}
.exit-team strong { color: var(--parchment); }
.exit-supporters {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  font-size: 13px;
  color: var(--parchment-mute);
  flex-wrap: wrap;
}
.fallen-supporters {
  display: flex; flex-direction: column; gap: 8px; margin-top: 10px; text-align: left;
}
.fallen-supporters li {
  display: flex; align-items: center; gap: 10px;
  padding: 8px; background: rgba(0,0,0,0.2); border-radius: 10px;
}
.fallen-supporters img { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; }
.sup-name { font-weight: 600; font-size: 13px; }
.sup-meta { font-size: 11px; color: var(--parchment-mute); }

/* ========== RULES ========== */
.rules-prose { max-width: 720px; margin: 0 auto; }
.rules-head { margin-bottom: 28px; }
.rules-brand { font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--parchment-mute); margin-bottom: 8px; }
.rules-hook { font-size: 17px; color: var(--parchment-dim); margin: 10px 0; line-height: 1.45; }
.rules-demo-note { font-size: 12px; color: var(--parchment-mute); }
.rules-sec { margin-bottom: 24px; }
.rules-sec h2 {
  font-family: var(--font-display);
  font-size: 28px;
  letter-spacing: 0.04em;
  margin-bottom: 10px;
  color: var(--parchment);
}
.rules-sec ul { list-style: disc; padding-left: 20px; }
.rules-sec li {
  margin-bottom: 8px;
  color: var(--parchment-dim);
  font-size: 14px;
  line-height: 1.5;
}
.rules-sec li strong { color: var(--parchment); font-weight: 600; }
.rules-sec-later { opacity: 0.75; }
.rules-foot {
  margin-top: 32px;
  padding-top: 16px;
  border-top: 1px solid var(--hairline);
  font-size: 12px;
  color: var(--parchment-mute);
  line-height: 1.5;
}
.rules-how {
  margin-top: 20px;
  text-align: center;
}

/* ========== BOTTOM NAV ========== */
.bottom-nav {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  height: auto;
  min-height: var(--nav-h);
  display: flex;
  background: rgba(13, 10, 24, 0.96);
  backdrop-filter: blur(16px);
  border-top: 1px solid var(--hairline);
  z-index: 40;
  padding: 0 4px env(safe-area-inset-bottom, 0px);
  box-sizing: content-box;
}
.bottom-nav button {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  padding: 8px 4px;
}
.bottom-nav button.active { color: var(--torch); }
.bottom-nav .nav-ico { width: 22px; height: 22px; opacity: 0.7; }
.bottom-nav button.active .nav-ico { opacity: 1; color: var(--torch); }

/* ========== FLASH ========== */
.flash-overlay {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(5, 6, 8, 0.88);
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding: 24px 16px calc(24px + env(safe-area-inset-bottom, 0px));
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.flash-overlay.show { display: flex; }
.flash-card {
  width: 100%;
  max-width: 440px;
  background: var(--bg-card);
  border-radius: 28px;
  border: 1px solid rgba(139, 30, 45, 0.45);
  box-shadow: 0 0 80px var(--reaped-glow);
  padding: 32px 28px 28px;
  text-align: center;
  position: relative;
  overflow: visible;
  margin: auto; /* vertical center when short; scrolls when tall */
}
.flash-card::before {
  content: "";
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 70% 50% at 50% 0%, rgba(139, 30, 45, 0.3), transparent 55%);
  pointer-events: none;
}
.flash-card > * { position: relative; }
.flash-card .flash-face {
  width: 120px; height: 120px;
  border-radius: 20px;
  object-fit: cover;
  margin: 0 auto 14px;
  border: 3px solid rgba(196, 58, 74, 0.5);
}
.flash-card .tag {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 22px;
  letter-spacing: 0.14em;
  color: var(--reaped-bright);
  border: 2px solid var(--reaped-bright);
  padding: 4px 12px;
  border-radius: 6px;
  transform: rotate(-4deg);
  margin-bottom: 12px;
}
.flash-card .who {
  font-family: var(--font-display);
  font-size: 40px;
  letter-spacing: 0.03em;
  margin-bottom: 6px;
}
.flash-card .epi { font-size: 14px; color: var(--parchment-dim); margin-bottom: 8px; }
.flash-card .flash-quote {
  font-size: 15px; font-style: italic; color: var(--parchment-mute);
  margin-bottom: 14px; line-height: 1.4;
}
.flash-card .delta {
  font-size: 13px; color: var(--parchment-mute);
  line-height: 1.6; margin-bottom: 20px;
  padding: 12px 0;
  border-top: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
}
.flash-card .delta strong { color: var(--torch); font-weight: 700; }
.flash-card .delta .burn-em { color: var(--reaped-bright) !important; }
.flash-card .btn { width: 100%; }

/* ========== MODAL / SHEET ========== */
.modal-backdrop {
  position: fixed; inset: 0; z-index: 80;
  background: rgba(5, 6, 8, 0.75);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.modal-backdrop.show { display: flex; }
.sheet {
  width: 100%;
  max-width: 480px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 20px;
  padding: 28px 24px;
  max-height: min(90vh, 720px);
  overflow-y: auto;
  margin: auto;
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.55);
}
.sheet h2 {
  font-family: var(--font-display);
  font-size: 32px;
  letter-spacing: 0.04em;
  margin-bottom: 8px;
}
.field { margin-bottom: 14px; }
.field label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 6px;
}
.field input[type="text"],
.field textarea,
.field select {
  width: 100%;
  background: var(--bg-soft);
  border: 1px solid var(--hairline);
  border-radius: 12px;
  padding: 12px 14px;
  color: var(--parchment);
}
.field textarea { resize: vertical; min-height: 72px; }
.slider-wrap { margin: 12px 0; }
.slider-wrap input[type="range"],
.field input[type="range"] {
  width: 100%;
  accent-color: var(--torch);
}
.slider-val {
  text-align: center;
  font-family: var(--font-display);
  font-size: 36px;
  color: var(--torch);
  margin-top: 8px;
}

/* Toast */
.toast {
  position: fixed;
  bottom: calc(var(--nav-h) + env(safe-area-inset-bottom, 0px) + 20px);
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--bg-card);
  border: 1px solid var(--hairline-warm);
  color: var(--parchment);
  padding: 12px 20px;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 600;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s, transform 0.2s;
  z-index: 110;
  max-width: 90vw;
  box-shadow: 0 8px 32px rgba(0,0,0,0.4);
}
.toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

.credits-pending-warn {
  display: block;
  font-size: 11px;
  color: var(--torch);
  margin-top: 2px;
}

/* ========== RESPONSIVE ========== */
@media (min-width: 900px) {
  .nav-links { display: flex; }
  .bottom-nav { display: none; }
  .app { padding-bottom: 28px; }
  .toast { bottom: 28px; }
}

@media (max-width: 899px) {
  :root { --pad-x: 16px; }
  .nav { padding: 12px var(--pad-x); }
  .nav-brand { font-size: 16px; }
  .nav-aside .nav-rules,
  .nav-aside .nav-faq { display: none; }
  .seg, .you-tab { padding: 10px 14px; font-size: 12px; }
  .home-grid { grid-template-columns: 1fr; }
  .poster { flex-direction: column; text-align: center; gap: 16px; padding: 24px; }
  .poster-face img { width: 120px; height: 120px; margin: 0 auto; }
  .poster-quote { margin-left: auto; margin-right: auto; }
  .you-hero { grid-template-columns: 1fr; gap: 20px; padding: 28px 24px; }
  .you-credits { text-align: left; }
  .jersey { flex-direction: column; text-align: center; padding: 28px 24px; gap: 20px; }
  .jersey-face img { margin: 0 auto; }
  .stamp-reaped { right: 12px; font-size: 14px; padding: 2px 8px; }
  .cast-row { grid-template-columns: 40px 1fr auto; gap: 10px; padding: 12px 14px; }
  .cast-total { font-size: 22px; }
  .teach-row { grid-template-columns: 1fr; }
  .stats-row { gap: 10px; }
  .exit-card { padding: 28px 20px; }
  .exit-split { gap: 24px; }
  .modal-backdrop { align-items: center; }
}

@media (max-width: 480px) {
  .stat-card .value { font-size: 28px; }
  .countdown { font-size: 48px; }
  h1.page-title { font-size: 36px; }
}

/* Chamber — pin you at top when at risk */
.cast-you-pin {
  position: sticky;
  top: 0;
  z-index: 5;
  margin-bottom: 12px;
  padding-bottom: 10px;
  background: linear-gradient(180deg, var(--bg, #0d0a18) 70%, transparent);
}
.cast-you-pin-label {
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--torch);
  margin: 0 0 8px 2px;
  font-weight: 600;
}
.cast-row--you-pin,
.cast-row.cast-row--you-pin {
  border-color: rgba(143, 97, 255, 0.55) !important;
  background: rgba(143, 97, 255, 0.1);
  box-shadow: 0 0 0 1px rgba(143, 97, 255, 0.2), 0 8px 24px rgba(0,0,0,0.35);
}

.jersey-place {
  margin: 6px 0 4px;
  font-size: 14px;
  color: var(--parchment);
  line-height: 1.35;
}
.jersey-crowd {
  margin: 0 0 8px;
  font-size: 13px;
}
.jersey-body .btn-row { flex-wrap: wrap; }

.cast-row--flash {
  animation: castFlash 1.8s ease;
  border-color: var(--torch) !important;
}
@keyframes castFlash {
  0%, 100% { box-shadow: none; }
  30% { box-shadow: 0 0 0 2px rgba(143,97,255,0.7), 0 0 28px rgba(143,97,255,0.35); }
}

.exit-last {
  width: 100%;
  max-width: 420px;
  margin: 0 auto 20px;
  text-align: left;
}
.exit-last-lbl {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--torch);
  font-weight: 600;
  margin-bottom: 8px;
}
.exit-last--empty .hint { opacity: 0.65; }
.exit-title {
  margin: 4px 0 8px;
  color: var(--parchment-mute);
  font-size: 14px;
}
.exit-quote {
  margin: 0;
  padding: 14px 16px;
  border-left: 3px solid var(--torch);
  background: rgba(143, 97, 255, 0.1);
  border-radius: 0 12px 12px 0;
  font-style: italic;
  font-size: 16px;
  line-height: 1.45;
  color: var(--parchment);
}
/* ========== S0+ NIGHT ACTIONS ========== */

/* —— Pot thermometer (Home) —— */
.pot-thermo {
  text-align: center;
  padding: 24px 28px 22px;
  margin-bottom: 18px;
  background: var(--bg-card);
  border-radius: 24px;
  border: 1px solid var(--hairline-warm);
  box-shadow: 0 0 60px rgba(143, 97, 255, 0.08);
  position: relative;
  overflow: hidden;
}
.pot-thermo::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 70% 60% at 50% 0%, var(--torch-soft), transparent 65%);
  pointer-events: none;
}
.pot-thermo > * { position: relative; }
.pot-thermo .label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 10px;
}
.pot-thermo .amount {
  font-family: var(--font-display);
  font-size: 64px;
  color: var(--torch);
  letter-spacing: 0.02em;
  line-height: 0.95;
  text-shadow: 0 0 48px var(--torch-glow);
}
.pot-thermo .amount .unit {
  font-family: var(--font-ui);
  font-size: 16px;
  font-weight: 600;
  color: var(--parchment-mute);
  margin-left: 8px;
  letter-spacing: 0.06em;
  vertical-align: super;
}
.pot-thermo .sub {
  margin-top: 12px;
  font-size: 14px;
  color: var(--parchment-dim);
  font-weight: 500;
}
.pot-thermo .breakdown {
  margin-top: 18px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 18px;
  font-size: 12px;
  color: var(--parchment-mute);
}
.pot-thermo .breakdown strong {
  color: var(--torch);
  font-weight: 700;
}

.thermo-bar {
  margin: 20px auto 0;
  max-width: 420px;
  height: 10px;
  border-radius: 999px;
  background: rgba(248, 241, 222, 0.08);
  overflow: hidden;
  border: 1px solid var(--hairline-warm);
}
.thermo-bar .fill {
  height: 100%;
  width: 68%;
  border-radius: 999px;
  background: linear-gradient(90deg, #c48920, var(--torch) 60%, #f0c56a);
  box-shadow: 0 0 16px var(--torch-glow);
}

/* —— Survivor streak badge —— */
.streak-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--torch);
  background: var(--torch-soft);
  border: 1px solid var(--hairline-warm);
  padding: 7px 14px;
  border-radius: 999px;
  margin-top: 14px;
}
.streak-badge .flame { font-size: 14px; line-height: 1; }

/* —— Night Actions panel —— */
.night-panel {
  margin-bottom: 24px;
}
.night-panel-head {
  margin-bottom: 16px;
}
.night-panel-head h2 {
  font-family: var(--font-display);
  font-size: 32px;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}
.night-panel-head p {
  font-size: 14px;
  color: var(--parchment-dim);
}
.night-panel-head .to-pot {
  color: var(--torch);
  font-weight: 600;
}

.action-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.action-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 20px 18px 18px;
  background: var(--bg-card);
  border-radius: 20px;
  border: 1px solid var(--hairline);
  min-height: 0;
  position: relative;
  overflow: hidden;
}
.action-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 80% 50% at 50% 0%, var(--torch-soft), transparent 70%);
  pointer-events: none;
  opacity: 0.7;
}
.action-card > * { position: relative; }
.action-card.is-done {
  border-color: var(--hairline-warm);
  box-shadow: 0 0 36px var(--torch-soft);
}
.action-icon {
  font-size: 24px;
  line-height: 1;
}
.action-title {
  font-family: var(--font-display);
  font-size: 26px;
  letter-spacing: 0.04em;
  line-height: 1;
}
.action-blurb {
  font-size: 13px;
  color: var(--parchment-dim);
  line-height: 1.4;
  flex: 1;
}
.action-price {
  font-size: 13px;
  font-weight: 600;
  color: var(--torch);
}
.action-price .dim-note {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  font-weight: 500;
  color: var(--parchment-mute);
}
.action-card .btn {
  width: 100%;
  margin-top: auto;
  padding: 12px 16px;
  font-size: 14px;
  border-radius: 12px;
}
.action-card .btn-done {
  background: rgba(143, 97, 255, 0.12);
  color: var(--torch);
  border: 1px solid var(--hairline-warm);
  font-weight: 700;
  cursor: default;
}
.badge-status {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  align-self: flex-start;
}
.badge-status.shielded {
  color: #7ec8a3;
  background: rgba(126, 200, 163, 0.12);
  border: 1px solid rgba(126, 200, 163, 0.35);
}
.badge-status.committed {
  color: var(--torch);
  background: var(--torch-soft);
  border: 1px solid var(--hairline-warm);
}
.badge-status.ready {
  color: var(--parchment-mute);
  background: rgba(248, 241, 222, 0.06);
  border: 1px solid var(--hairline);
}

.mark-target {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--bg-soft);
  border-radius: 12px;
  border: 1px solid var(--hairline);
  font-size: 13px;
}
.mark-target .handle { font-weight: 700; }
.mark-target .heat {
  margin-left: auto;
  color: var(--reaped-bright);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.04em;
}

@media (max-width: 900px) {
  .action-grid { grid-template-columns: 1fr; }
  .pot-thermo .amount { font-size: 56px; }
}

/* —— Chamber heat chips —— */
.cast-who-meta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.cast-who-meta .name-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}
.heat-chips {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 999px;
  line-height: 1.2;
}
.chip-shield {
  color: #7ec8a3;
  background: rgba(126, 200, 163, 0.12);
  border: 1px solid rgba(126, 200, 163, 0.35);
}
.chip-mark {
  color: var(--reaped-bright);
  background: rgba(139, 30, 45, 0.2);
  border: 1px solid rgba(196, 58, 74, 0.4);
}
.chip-lock {
  color: var(--torch);
  background: var(--torch-soft);
  border: 1px solid var(--hairline-warm);
}
.heat-pips {
  display: inline-flex;
  gap: 3px;
  margin-left: 2px;
  vertical-align: middle;
}
.heat-pips span,
.heat-pips .pip-paid {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--reaped-bright);
  box-shadow: 0 0 6px rgba(196, 58, 74, 0.5);
  box-sizing: border-box;
}
/* Hollow / soft fan-heat pip — free daily Mark (no $) */
.heat-pips .pip-free {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: transparent;
  border: 1.5px solid rgba(196, 58, 74, 0.75);
  box-shadow: none;
  opacity: 0.9;
}
/* Filled heart — Paid Cheer / Boost Favor (public) */
.heat-pips .pip-favor {
  width: auto;
  height: auto;
  border-radius: 0;
  background: transparent;
  border: none;
  box-shadow: none;
  color: #e85a7a;
  font-size: 10px;
  line-height: 1;
  text-shadow: 0 0 6px rgba(232, 90, 122, 0.55);
  margin-left: 1px;
}
.drip-pill--boost {
  color: #f0a0b4;
  background: rgba(232, 90, 122, 0.12);
  border: 1px solid rgba(232, 90, 122, 0.35);
}
.ff-cta-sec--boost .ico {
  color: #e85a7a;
}
.mark-odds-fill--boost {
  background: linear-gradient(90deg, rgba(80, 180, 120, 0.85), rgba(232, 90, 122, 0.9));
}
.cer-boost-flare {
  margin: 6px 0 0;
  font-size: 13px;
  color: #f0a0b4;
}
.sheet-boost .mark-delta {
  color: #7dcea0;
}
.chip-mark--fan {
  color: rgba(220, 140, 150, 0.95);
  background: rgba(139, 30, 45, 0.1);
  border-style: dashed;
}
.mark-free-hint {
  font-size: 11px;
  color: var(--parchment-mute);
  font-weight: 500;
}
.link-free-mark {
  color: var(--torch) !important;
}
.action-card--free-mark .action-icon {
  color: rgba(196, 58, 74, 0.7);
  font-size: 22px;
  line-height: 1;
}
.btn-free-mark {
  /* Keep torch primary — dark crimson made the CTA look disabled */
  background: linear-gradient(180deg, #f0b84a 0%, var(--torch) 100%);
  color: #1a1206;
  border-color: rgba(143, 97, 255, 0.55);
  box-shadow: 0 0 0 1px rgba(143, 97, 255, 0.4), 0 8px 32px var(--torch-glow);
  width: 100%;
  pointer-events: auto;
}
.btn-free-mark:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.sheet-free-mark .free-mark-kicker {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--torch);
  margin: 0 0 4px;
}
.sheet-free-mark .free-mark-promise {
  font-size: 15px;
  color: var(--parchment);
  margin: 0 0 12px;
  font-weight: 600;
}
.cast-row.is-shielded {
  border-color: rgba(126, 200, 163, 0.25);
}
.cast-row.is-marked {
  border-color: rgba(196, 58, 74, 0.28);
}

.legend-heat {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  margin-bottom: 18px;
  font-size: 12px;
  color: var(--parchment-mute);
  align-items: center;
}
.legend-heat .chip { pointer-events: none; }

.you-hero--compact {
  padding: 24px 32px;
  margin-bottom: 14px;
}
.you-hero--compact .you-balance { font-size: 56px; }
.night-panel { margin-bottom: 16px; }
.night-panel-head h2 { font-size: 28px; }
.jersey--compact {
  padding: 20px 28px;
  margin-bottom: 12px;
}
.jersey--compact .jersey-face img { width: 88px; height: 88px; }
.jersey--compact .jersey-name { font-size: 32px; }

.shell--dense .countdown { font-size: 64px; }
.shell--dense .home-hero { margin-bottom: 16px; }
.shell--dense .stats-row { gap: 14px; margin-bottom: 8px; }
.shell--dense .stat-card { padding: 18px 14px 16px; }
.shell--dense .stat-card .value { font-size: 36px; }
.shell--dense .stats-hint { margin-bottom: 16px; }
.shell--dense .home-grid { margin-bottom: 16px; gap: 14px; }
.shell--dense .poster { padding: 20px 24px; gap: 20px; }
.shell--dense .poster-face img { width: 120px; height: 120px; }
.shell--dense .poster-name { font-size: 32px; }
.shell--dense .you-strip { padding: 20px; gap: 12px; }
.shell--dense .you-strip .bag { font-size: 28px; }
.shell--dense .nav { margin-bottom: 14px; }

/* —— Night Actions aliases (match polish-mock HTML class names) —— */
.badge-status.committed { color: var(--torch); background: var(--torch-soft); border: 1px solid var(--hairline-warm); }
.btn.btn-done, .btn-done {
  background: rgba(143, 97, 255, 0.12);
  color: var(--torch);
  border: 1px solid var(--hairline-warm);
  font-weight: 700;
  cursor: default;
}
.chip.chip-shield { color: #7ec8a3; background: rgba(126, 200, 163, 0.12); border: 1px solid rgba(126, 200, 163, 0.35); }
.chip.chip-mark { color: var(--reaped-bright); background: rgba(139, 30, 45, 0.2); border: 1px solid rgba(196, 58, 74, 0.4); }
.chip.chip-lock { color: var(--torch); background: var(--torch-soft); border: 1px solid var(--hairline-warm); }
.cast-row.is-shielded { border-color: rgba(126, 200, 163, 0.25); }
.cast-row.is-marked { border-color: rgba(196, 58, 74, 0.28); }
.legend-heat, .legend-heat { display: flex; flex-wrap: wrap; gap: 12px 20px; margin-bottom: 18px; font-size: 12px; color: var(--parchment-mute); align-items: center; }
.sheet .hint-pot { color: var(--torch); font-weight: 600; }
.sheet .mark-presets { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }


/* Mark sheet — private odds preview (spender only) */
.sheet-mark .mark-odds {
  margin: 14px 0 18px;
  padding: 12px 14px;
  border-radius: 12px;
  background: rgba(0,0,0,0.28);
  border: 1px solid rgba(255,180,80,0.18);
}
.mark-odds-track {
  position: relative;
  height: 10px;
  border-radius: 999px;
  background: rgba(255,255,255,0.08);
  overflow: hidden;
}
.mark-odds-fill {
  height: 100%;
  width: 0%;
  border-radius: 999px;
  background: linear-gradient(90deg, #c4782a, #e8a04a);
  transition: width 0.15s ease;
}
.mark-odds-fill.is-hot {
  background: linear-gradient(90deg, #c43a4a, #e87840);
}
.mark-odds-fill.is-capped {
  background: linear-gradient(90deg, #c43a4a, #ff6b4a);
  box-shadow: 0 0 12px rgba(196,58,74,0.45);
}
.mark-odds-cap {
  position: absolute;
  right: 0;
  top: -3px;
  bottom: -3px;
  width: 2px;
  background: rgba(255,255,255,0.35);
}
.mark-odds-labels {
  display: flex;
  justify-content: space-between;
  margin-top: 6px;
  font-size: 11px;
  letter-spacing: 0.04em;
  color: rgba(255,255,255,0.45);
  font-family: var(--font-mono, ui-monospace, monospace);
}
.mark-odds-readout {
  margin: 10px 0 0;
  font-size: 14px;
  line-height: 1.35;
  color: var(--parchment, #f0e6d2);
}
.mark-odds-readout .mark-delta {
  color: var(--torch, #e8a04a);
  font-weight: 600;
}


.action-card.is-soon {
  opacity: 0.72;
  border-style: dashed;
}
.badge-status.soon {
  background: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.55);
}


.chip-mark .mark-count {
  font-weight: 600;
  margin-right: 4px;
}
.heat-reveal {
  margin: 14px 0 4px;
  padding: 12px 14px;
  border-radius: 12px;
  background: rgba(196, 58, 74, 0.12);
  border: 1px solid rgba(232, 160, 74, 0.28);
  text-align: left;
}
.heat-reveal-lbl {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--torch, #e8a04a);
  margin-bottom: 8px;
  font-weight: 700;
}
.heat-reveal-reaped {
  margin: 0 0 8px;
  font-size: 14px;
  line-height: 1.4;
  color: var(--parchment, #f0e6d2);
}
.heat-reveal-sub {
  margin: 8px 0 4px;
  font-size: 12px;
  color: rgba(255,255,255,0.45);
}
.heat-reveal-list {
  margin: 0;
  padding-left: 1.1em;
  font-size: 13px;
  color: rgba(240,230,210,0.85);
}
.heat-reveal-list .heat-name { font-weight: 600; color: var(--parchment, #f0e6d2); }
.exit-mark-heat {
  margin: 10px 0 0;
  font-size: 13px;
  color: var(--torch, #e8a04a);
}


/* ========== REAPING CEREMONY (5-beat) ========== */
.flash-overlay .ceremony-card {
  max-width: 460px;
  padding-top: 28px;
}
.cer-dots {
  display: flex;
  gap: 8px;
  justify-content: center;
  margin-bottom: 18px;
}
.cer-dots span {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(248, 241, 222, 0.2);
  transition: background 0.2s, box-shadow 0.2s;
}
.cer-dots span.on {
  background: var(--torch);
  box-shadow: 0 0 10px var(--torch-glow);
}
.cer-beat {
  animation: cerBeatIn 0.4s ease;
  min-height: 320px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
@keyframes cerBeatIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}
.cer-kicker {
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--torch);
  font-weight: 700;
  margin-bottom: 14px;
}
.cer-title {
  font-family: var(--font-display);
  font-size: clamp(36px, 8vw, 52px);
  letter-spacing: 0.04em;
  line-height: 0.95;
  margin: 0 0 12px;
}
.cer-title--sm { font-size: clamp(32px, 7vw, 42px); }
.cer-sub {
  font-size: 14px;
  color: var(--parchment-dim);
  margin: 0;
  max-width: 320px;
}
.cer-who {
  font-family: var(--font-display);
  font-size: 36px;
  letter-spacing: 0.03em;
  margin: 0 0 4px;
}
.cer-meta {
  font-size: 13px;
  color: var(--parchment-mute);
  margin: 0;
}
.cer-pulse {
  width: 112px;
  height: 112px;
  border-radius: 50%;
  border: 2px solid rgba(143, 97, 255, 0.4);
  margin: 0 auto 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 0 rgba(143, 97, 255, 0.35);
  animation: cerPulse 1.25s ease-out infinite;
  background: rgba(0, 0, 0, 0.25);
}
.cer-pulse span {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--torch);
  box-shadow: 0 0 16px var(--torch-glow);
}
@keyframes cerPulse {
  0% { box-shadow: 0 0 0 0 rgba(143, 97, 255, 0.45); }
  70% { box-shadow: 0 0 0 22px rgba(143, 97, 255, 0); }
  100% { box-shadow: 0 0 0 0 rgba(143, 97, 255, 0); }
}
.cer-face {
  width: 140px;
  height: 140px;
  border-radius: 18px;
  object-fit: cover;
  margin: 0 auto 14px;
  border: 3px solid var(--torch);
  box-shadow: 0 0 36px var(--torch-glow);
  display: block;
}
.cer-face--dead {
  border-color: var(--reaped-bright);
  box-shadow: 0 0 36px var(--reaped-glow);
  opacity: 0.9;
}
.cer-face--empty {
  background: var(--bg-soft);
}
.cer-stamp {
  display: inline-block;
  margin: 4px 0 10px;
  padding: 6px 16px;
  background: var(--reaped);
  color: #fff;
  font-family: var(--font-display);
  font-size: 26px;
  letter-spacing: 0.12em;
  transform: rotate(-6deg);
  box-shadow: 0 8px 24px var(--reaped-glow);
}
.cer-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  width: 100%;
  margin-top: 16px;
  text-align: left;
}
.cer-stat {
  background: rgba(0, 0, 0, 0.28);
  border: 1px solid var(--hairline);
  border-radius: 12px;
  padding: 12px 14px;
}
.cer-stat .lbl {
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--parchment-mute);
}
.cer-stat .val {
  font-family: var(--font-display);
  font-size: 26px;
  margin-top: 2px;
  color: var(--parchment);
}
.cer-stat .val.burn { color: var(--reaped-bright); }
.cer-stat .val.pool { color: var(--torch); }
.cer-heat {
  width: 100%;
  text-align: left;
  margin-top: 8px;
}
.cer-quote-lbl {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--parchment-mute);
  margin-bottom: 8px;
}
.cer-quote {
  font-size: 18px;
  font-style: italic;
  color: var(--parchment);
  line-height: 1.35;
  margin: 0 0 14px;
  max-width: 340px;
}
.cer-quote--empty { color: var(--parchment-mute); font-style: normal; font-size: 15px; }
.cer-controls {
  display: flex;
  gap: 10px;
  margin-top: 22px;
  width: 100%;
}
.cer-controls .btn { flex: 1; }
.cer-skip {
  display: block;
  margin: 12px auto 0;
  background: none;
  border: none;
  color: var(--parchment-mute);
  font-size: 12px;
  letter-spacing: 0.06em;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.cer-skip:hover { color: var(--parchment-dim); }

.cer-mute {
  position: absolute;
  top: 14px;
  right: 16px;
  z-index: 2;
  background: rgba(0,0,0,0.35);
  border: 1px solid var(--hairline);
  color: var(--parchment-mute);
  font-size: 11px;
  letter-spacing: 0.06em;
  padding: 6px 10px;
  border-radius: 999px;
  cursor: pointer;
}
.cer-mute:hover { color: var(--parchment); border-color: var(--hairline-warm); }
.cer-stamp--slam {
  animation: cerStampSlam 0.45s cubic-bezier(0.22, 1.2, 0.36, 1) both;
}
@keyframes cerStampSlam {
  0% { transform: rotate(-6deg) scale(1.55); opacity: 0.2; }
  60% { transform: rotate(-8deg) scale(0.96); opacity: 1; }
  100% { transform: rotate(-6deg) scale(1); opacity: 1; }
}
.ceremony-card.cer-shake {
  animation: cerShake 0.35s ease;
}
@keyframes cerShake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}
.cer-pop { animation: cerPop 0.28s ease; }
@keyframes cerPop {
  from { transform: scale(0.92); opacity: 0.5; }
  to { transform: scale(1); opacity: 1; }
}
.cer-personal {
  margin: 10px 0 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--torch);
}
.cer-envelope-seal {
  margin: 8px 0 0;
  font-size: 14px;
  color: var(--parchment-mute);
  font-style: italic;
}
.cer-envelope-reveal {
  animation: cerBeatIn 0.4s ease;
}
.cer-share-btn {
  margin-top: 16px;
  width: 100%;
}

.heat-reveal-list--ranked {
  list-style: none;
  padding-left: 0;
}
.heat-reveal-list--ranked li {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: baseline;
  padding: 6px 0;
  border-top: 1px solid var(--hairline);
}
.heat-reveal-list--ranked li:first-child { border-top: 0; }
.heat-rank {
  font-family: var(--font-display);
  color: var(--torch);
  font-size: 16px;
  min-width: 1.6em;
}
.heat-reaped-tag {
  color: var(--reaped-bright);
  font-weight: 700;
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.06em;
}
.heat-reveal-list--shield {
  list-style: none;
  padding-left: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
}
.heat-reveal-list--shield li {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(139, 149, 136, 0.12);
  border: 1px solid rgba(139, 149, 136, 0.25);
  font-size: 12px;
}
.cer-shield-block {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--hairline);
}

/* ========== NIGHT BOARD (full Chamber results) ========== */
.night-board {
  margin: 16px 0 28px;
  padding: 18px 16px 20px;
  border-radius: 18px;
  background: var(--bg-card);
  border: 1px solid var(--hairline-warm);
}
.night-board-head h2 {
  font-family: var(--font-display);
  font-size: 28px;
  letter-spacing: 0.04em;
  margin: 0 0 8px;
}
.nb-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 16px;
  font-size: 13px;
  color: var(--parchment-dim);
  margin: 0 0 12px;
}
.nb-summary strong { color: var(--torch); }
.nb-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 12px;
  color: var(--parchment-mute);
  margin-bottom: 10px;
}
.nb-swatch {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 3px;
  margin-right: 6px;
  vertical-align: -2px;
  border: 1px solid var(--hairline);
}
.nb-swatch--mark { background: var(--torch); box-shadow: 0 0 8px rgba(143,97,255,0.6); }
.nb-swatch--shield { background: #2a332c; box-shadow: inset 0 0 0 2px #a8b5a4; }
.nb-swatch--reaped { background: var(--reaped-bright); box-shadow: 0 0 8px var(--reaped-glow); }
.nb-heatgrid {
  display: grid;
  grid-template-columns: repeat(15, minmax(0, 1fr));
  gap: 5px;
  margin-bottom: 8px;
  padding: 12px;
  border-radius: 12px;
  background: rgba(0, 0, 0, 0.28);
  border: 1px solid var(--hairline);
}
@media (min-width: 720px) {
  .nb-heatgrid { grid-template-columns: repeat(20, minmax(0, 1fr)); gap: 6px; }
}
.nb-grid-hint {
  margin: 0 0 16px;
  font-size: 12px;
  color: var(--parchment-mute);
}
.nb-cell {
  aspect-ratio: 1;
  width: 100%;
  min-height: 22px;
  border-radius: 6px;
  border: 1px solid rgba(248, 241, 222, 0.1);
  padding: 0;
  background: rgba(248, 241, 222, 0.1);
  cursor: help;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
}
.nb-face {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 5px;
}
.nb-face--initials {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: rgba(248, 241, 222, 0.55);
  background: rgba(0, 0, 0, 0.25);
  border-radius: 5px;
}
.nb-cell.is-marked:not(.is-reaped) {
  border: 2px solid var(--torch);
  box-shadow:
    0 0 0 1px rgba(143, 97, 255, 0.35),
    0 0 14px rgba(143, 97, 255, 0.55);
}
.nb-cell.is-shielded:not(.is-reaped) {
  border: 2px solid #a8b5a4;
  box-shadow:
    0 0 0 1px rgba(168, 181, 164, 0.35),
    inset 0 0 0 2px rgba(168, 181, 164, 0.45);
}
.nb-cell.is-marked.is-shielded:not(.is-reaped) {
  border-color: var(--torch);
  box-shadow:
    0 0 0 1px rgba(143, 97, 255, 0.4),
    0 0 14px rgba(143, 97, 255, 0.45),
    inset 0 0 0 2px rgba(168, 181, 164, 0.7);
}
.nb-cell.is-reaped {
  border: 2px solid #ff6b7a !important;
  box-shadow:
    0 0 0 2px rgba(196, 58, 74, 0.5),
    0 0 18px rgba(196, 58, 74, 0.85);
  z-index: 2;
  transform: scale(1.08);
}
.nb-cell.is-reaped .nb-face {
  filter: grayscale(0.7) brightness(0.7);
}
.nb-cell.is-you:not(.is-reaped) {
  /* keep subtle — status badges carry meaning */
  outline: none;
}
.nb-cell:hover {
  transform: scale(1.4);
  z-index: 5;
}
.nb-cell.is-reaped:hover {
  transform: scale(1.45);
}
.nb-cell.is-marked:not(.is-reaped)::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 5px;
  pointer-events: none;
  background: linear-gradient(180deg, transparent 50%, rgba(143, 97, 255, 0.5));
}
.nb-cell.is-reaped::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 5px;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(139, 30, 45, 0.15), rgba(196, 58, 74, 0.72));
  z-index: 1;
}
.nb-badge {
  position: absolute;
  z-index: 3;
  min-width: 14px;
  height: 14px;
  padding: 0 3px;
  border-radius: 999px;
  font-size: 9px;
  font-weight: 800;
  line-height: 14px;
  text-align: center;
  pointer-events: none;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.55);
}
.nb-badge--reaped {
  right: -4px;
  top: -4px;
  min-width: 16px;
  height: 16px;
  line-height: 16px;
  background: var(--reaped-bright);
  color: #fff;
  font-size: 10px;
  letter-spacing: 0;
}
.nb-badge--mark {
  right: -3px;
  top: -3px;
  background: var(--torch);
  color: #1a1208;
}
.nb-badge--shield {
  left: -3px;
  bottom: -3px;
  background: #2a332c;
  color: #d5e0d2;
  border: 1px solid #a8b5a4;
  font-size: 8px;
  min-width: 15px;
  height: 15px;
  line-height: 13px;
}
.nb-subhead {
  font-family: var(--font-display);
  font-size: 18px;
  letter-spacing: 0.06em;
  margin: 14px 0 8px;
  color: var(--parchment-dim);
}
.nb-bars { display: flex; flex-direction: column; gap: 6px; max-height: 420px; overflow: auto; }
.nb-bar-row {
  display: grid;
  grid-template-columns: minmax(100px, 1.2fr) 2fr minmax(72px, 0.7fr);
  gap: 8px;
  align-items: center;
  font-size: 12px;
}
.nb-bar-label { color: var(--parchment); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nb-bar-label .rank { color: var(--torch); font-family: var(--font-display); margin-right: 4px; }
.nb-bar-track {
  height: 10px;
  border-radius: 999px;
  background: rgba(255,255,255,0.06);
  overflow: hidden;
}
.nb-bar-fill {
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #c4782a, #e8a04a);
}
.nb-bar-row.is-reaped .nb-bar-fill {
  background: linear-gradient(90deg, #8b1e2d, #c43a4a);
}
.nb-bar-val { color: var(--parchment-mute); text-align: right; font-variant-numeric: tabular-nums; }
.nb-tag-reaped { color: var(--reaped-bright); font-weight: 700; font-size: 10px; letter-spacing: 0.06em; }
.nb-tag-shield { opacity: 0.85; }
.nb-shields { display: flex; flex-wrap: wrap; gap: 8px; }
.nb-shield-chip {
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  background: rgba(139, 149, 136, 0.12);
  border: 1px solid rgba(139, 149, 136, 0.28);
}
.cer-end-actions { width: 100%; display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.cer-end-actions .cer-share-btn { margin-top: 0; }

.cer-end-line {
  margin: 12px 0 0;
  font-family: var(--font-display);
  font-size: 15px;
  letter-spacing: 0.06em;
  color: rgba(220, 170, 190, 0.92);
  text-align: center;
}
.exit-card.is-you {
  border-color: rgba(160, 70, 110, 0.55);
  box-shadow: 0 0 80px var(--reaped-glow), 0 0 40px rgba(100, 30, 70, 0.25);
}

/* —— Addiction drip: near-miss, pot pulse, streak tiers —— */
.near-miss {
  margin: 12px 0 14px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid var(--hairline-warm);
  background: rgba(143, 97, 255, 0.08);
}
.near-miss--dead { border-color: rgba(196, 58, 74, 0.45); background: rgba(196, 58, 74, 0.12); }
.near-miss--safe { border-color: rgba(168, 181, 164, 0.4); background: rgba(168, 181, 164, 0.1); }
.nm-kicker {
  display: block;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--torch);
  font-weight: 700;
  margin-bottom: 6px;
}
.near-miss p { margin: 0; font-size: 14px; color: var(--parchment); line-height: 1.4; }
.streak-badge--lit { border-color: rgba(143, 97, 255, 0.45); }
.streak-badge--iron { border-color: rgba(180, 200, 220, 0.5); box-shadow: 0 0 16px rgba(160, 180, 200, 0.2); }
.streak-badge--legend {
  border-color: rgba(143, 97, 255, 0.7);
  background: linear-gradient(90deg, rgba(143, 97, 255, 0.18), rgba(196, 58, 74, 0.12));
}
.streak-chip {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  background: rgba(143, 97, 255, 0.15);
  border: 1px solid rgba(143, 97, 255, 0.35);
  color: var(--torch);
  vertical-align: middle;
}
.streak-chip--iron { border-color: rgba(180, 200, 220, 0.5); color: #c5d4e0; }
.streak-chip--legend { border-color: #8f61ff; background: rgba(196, 58, 74, 0.2); }
.drip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 12px;
}
.drip-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  border: 1px solid var(--hairline);
  background: rgba(0, 0, 0, 0.28);
  color: var(--parchment);
}
.drip-pill--danger {
  border-color: rgba(196, 58, 74, 0.55);
  background: rgba(196, 58, 74, 0.18);
  color: #ffb4bc;
  animation: dripPulse 1.8s ease-in-out infinite;
}
.drip-pill--torch {
  border-color: rgba(143, 97, 255, 0.55);
  background: rgba(143, 97, 255, 0.14);
  color: var(--torch);
}
.drip-pill--pulse {
  border-color: rgba(143, 97, 255, 0.4);
  color: var(--parchment);
}
.drip-pill--block { display: flex; width: 100%; border-radius: 12px; margin: 0 0 12px; }
@keyframes dripPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(196, 58, 74, 0.35); }
  50% { box-shadow: 0 0 0 6px rgba(196, 58, 74, 0); }
}
.pot-thermo.is-pulse {
  animation: potGlow 1.2s ease;
}
.pot-pulse-tag {
  margin-left: 8px;
  color: var(--torch);
  font-size: 12px;
  letter-spacing: 0.06em;
}
.thermo-bar .fill.fill--twitch {
  animation: thermoTwitch 0.9s ease;
}
@keyframes potGlow {
  0% { box-shadow: 0 0 0 0 rgba(143, 97, 255, 0.4); }
  100% { box-shadow: 0 0 0 0 transparent; }
}
@keyframes thermoTwitch {
  0% { filter: brightness(1.4); }
  100% { filter: brightness(1); }
}

/* —— Live tickets meter (Chamber survivors) —— */
.ticket-meter {
  margin: 10px 0 14px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid rgba(143, 97, 255, 0.35);
  background: linear-gradient(135deg, rgba(143, 97, 255, 0.1), rgba(0, 0, 0, 0.35));
}
.ticket-meter--shielded {
  border-color: rgba(126, 200, 163, 0.4);
  background: rgba(126, 200, 163, 0.1);
}
.ticket-meter--hot {
  border-color: rgba(196, 58, 74, 0.55);
  box-shadow: 0 0 24px rgba(196, 58, 74, 0.18);
}
.ticket-meter-kicker {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--torch);
  font-weight: 700;
  margin-bottom: 4px;
}
.ticket-meter--shielded .ticket-meter-kicker { color: #9fd4b4; }
.ticket-meter-val {
  font-size: 20px;
  font-weight: 700;
  color: var(--parchment);
  margin-bottom: 8px;
}
.ticket-meter-val strong { color: var(--torch); font-variant-numeric: tabular-nums; }
.ticket-meter-bar {
  height: 6px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  overflow: hidden;
  margin-bottom: 8px;
}
.ticket-meter-fill {
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #8f61ff, #c43a4a);
  transition: width 0.35s ease;
}
.ticket-meter-sub {
  margin: 0;
  font-size: 12px;
  color: var(--parchment-mute);
  line-height: 1.35;
}
.cast-you-pin .ticket-meter { margin: 0 0 10px; }

/* —— Soft cast roles (hottest / Shielded) —— */
.cast-roles {
  margin: 0 0 14px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid var(--hairline-warm);
  background: rgba(0, 0, 0, 0.32);
}
.cast-roles--empty { opacity: 0.85; }
.cast-roles-kicker {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--torch);
  font-weight: 700;
  margin-bottom: 8px;
}
.cast-roles-empty {
  margin: 0;
  font-size: 13px;
  color: var(--parchment-mute);
}
.cast-roles-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.cast-roles-list--shield { margin-top: 8px; }
.cast-role {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}
.cast-role-tag {
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 999px;
  border: 1px solid var(--hairline);
  color: var(--parchment-mute);
}
.cast-role--hot .cast-role-tag {
  border-color: rgba(196, 58, 74, 0.5);
  color: #ffb4bc;
  background: rgba(196, 58, 74, 0.15);
}
.cast-role--shield .cast-role-tag {
  border-color: rgba(126, 200, 163, 0.45);
  color: #9fd4b4;
  background: rgba(126, 200, 163, 0.12);
}
.cast-role-name {
  font-weight: 700;
  color: var(--parchment);
}
.cast-role-meta {
  font-size: 12px;
  color: var(--parchment-mute);
  margin-left: auto;
}

/* —— Ghost seat banner —— */
.ghost-seat-banner {
  margin: 0 0 14px;
  padding: 14px 16px;
  border-radius: 16px;
  border: 1px solid rgba(160, 70, 110, 0.55);
  background:
    radial-gradient(ellipse at 20% 0%, rgba(160, 70, 110, 0.25), transparent 55%),
    rgba(0, 0, 0, 0.45);
  box-shadow: 0 0 40px rgba(100, 30, 70, 0.2);
}
.ghost-seat-kicker {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(220, 170, 190, 0.95);
  font-weight: 700;
  margin-bottom: 6px;
}
.ghost-seat-banner p {
  margin: 0 0 12px;
  font-size: 14px;
  color: var(--parchment);
  line-height: 1.4;
}
.ghost-seat-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* —— Fallen hub —— */
.fallen-hub-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.fallen-hub-actions .btn { width: 100%; max-width: 280px; }

/* —— Curse chip / night board —— */
.chip-curse {
  border-color: rgba(140, 80, 160, 0.55) !important;
  background: rgba(100, 40, 120, 0.28) !important;
  color: #e0b8f0 !important;
}
.nb-badge--curse {
  background: rgba(100, 40, 120, 0.9);
  color: #f0d8ff;
  font-size: 10px;
}

/* —— Daytime drip expands —— */
.drip-pill--cheer {
  border-color: rgba(126, 200, 163, 0.5);
  background: rgba(126, 200, 163, 0.14);
  color: #b8e6c8;
}
.drip-pill--cast {
  border-color: rgba(143, 97, 255, 0.4);
  color: var(--torch);
}
.drip-pill--flare {
  animation: dripPulse 1.2s ease-in-out infinite, dripFlare 0.9s ease;
}
@keyframes dripFlare {
  0% { transform: scale(1); filter: brightness(1.35); }
  100% { transform: scale(1); filter: brightness(1); }
}

/* —— Stronger streak theater —— */
.streak-badge--glow {
  box-shadow: 0 0 18px rgba(143, 97, 255, 0.25);
}
.streak-badge--ember { border-color: rgba(143, 97, 255, 0.25); }
.streak-chip-tag {
  margin-left: 2px;
  font-size: 9px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.85;
}
.streak-chip--lit {
  border-color: rgba(143, 97, 255, 0.55);
  box-shadow: 0 0 10px rgba(143, 97, 255, 0.2);
}
/* —— Cheer loyalty streak (spectator recognition · not Bind) —— */
.chip.chip-loyalty {
  color: #f0c27a;
  background: rgba(232, 160, 72, 0.14);
  border: 1px solid rgba(232, 160, 72, 0.42);
  font-weight: 700;
  max-width: 100%;
  white-space: normal;
  line-height: 1.35;
}
.jersey-loyalty {
  margin: 8px 0 0;
  font-size: 13px;
  color: #d8c4a0;
}
.jersey-loyalty--hot {
  color: #f0c27a;
  font-weight: 650;
}
.exit-loyalty,
.cer-loyalty-flare {
  margin: 8px 0 0;
  font-size: 13px;
  color: #f0c27a;
  font-weight: 600;
}
.cer-loyalty-flare {
  text-align: center;
}

/* —— Public Cheer fingerprint (broadcast) —— */
.chip.chip-cheer {
  color: #b8e6c8;
  background: rgba(126, 200, 163, 0.14);
  border: 1px solid rgba(126, 200, 163, 0.4);
  font-weight: 600;
  max-width: 100%;
  white-space: normal;
  line-height: 1.35;
}
.chip-cheer .cheer-fp-ico {
  opacity: 0.9;
  margin-right: 2px;
}
.chip-cheer--flare {
  animation: dripPulse 1.2s ease-in-out infinite, dripFlare 0.9s ease;
}
.cast-row.is-cheered {
  box-shadow: inset 3px 0 0 rgba(126, 200, 163, 0.35);
}
.cast-cheer-cue {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 10px;
  margin: 0 0 10px;
  padding: 8px 12px;
  border-radius: 10px;
  background: rgba(126, 200, 163, 0.1);
  border: 1px solid rgba(126, 200, 163, 0.28);
  font-size: 13px;
  color: #c8ecd4;
}
.cast-cheer-cue--flare {
  animation: dripPulse 1.2s ease-in-out infinite, dripFlare 0.9s ease;
}
.nb-badge--cheer {
  left: -4px;
  bottom: -4px;
  background: rgba(40, 90, 60, 0.92);
  color: #d4f0de;
  font-size: 10px;
  min-width: 16px;
  height: 16px;
  line-height: 16px;
}
.nb-swatch--cheer {
  background: #2a4a38;
  box-shadow: inset 0 0 0 2px #7ec8a3;
}
.nb-cell.has-cheer:not(.is-reaped) {
  box-shadow: 0 0 0 1px rgba(126, 200, 163, 0.35);
}
.cer-cheer-flare {
  margin: 10px auto 0;
  max-width: 28rem;
  padding: 8px 14px;
  border-radius: 999px;
  background: rgba(126, 200, 163, 0.12);
  border: 1px solid rgba(126, 200, 163, 0.35);
  color: #c8ecd4;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.cer-cheer-flare--soft {
  opacity: 0.85;
  background: rgba(126, 200, 163, 0.08);
  font-weight: 500;
}
.sheet-cheer h2 {
  color: #b8e6c8;
}


/* —— Chamber cast identity: patron meter + give-back —— */
.toast.toast--giveback {
  border-color: rgba(143, 97, 255, 0.55);
  background: linear-gradient(180deg, rgba(40, 28, 12, 0.98), var(--bg-card));
  max-width: min(420px, 92vw);
  text-align: center;
  line-height: 1.35;
  font-size: 13px;
}
.patron-meter {
  margin: 12px 0 14px;
  padding: 12px 14px;
  border-radius: 12px;
  background: rgba(143, 97, 255, 0.08);
  border: 1px solid rgba(143, 97, 255, 0.28);
}
.patron-meter--compact {
  margin: 8px 0 12px;
  padding: 10px 12px;
}
.patron-meter-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin-bottom: 6px;
}
.patron-meter-kicker {
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--torch);
  font-weight: 700;
}
.patron-meter-val {
  font-size: 15px;
  color: var(--parchment);
  margin-bottom: 8px;
}
.patron-meter-val strong { color: var(--torch); }
.patron-meter-bar {
  height: 8px;
  border-radius: 999px;
  background: rgba(255,255,255,0.08);
  overflow: hidden;
}
.patron-meter-fill {
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #c47a28, var(--torch));
  transition: width 0.25s ease;
}
.patron-meter-sub {
  margin: 8px 0 0;
  font-size: 12px;
  color: rgba(248, 241, 222, 0.55);
  line-height: 1.35;
}

.patron-meter-await {
  margin: 8px 0 0;
  padding: 8px 10px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--torch) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--torch) 35%, transparent);
  color: var(--ink, #f2e8d5);
  font-size: 0.88rem;
  line-height: 1.35;
  font-weight: 600;
}
.patron-meter-hint {
  margin: 6px 0 0;
  color: var(--muted, #9a9080);
  font-size: 0.8rem;
  line-height: 1.4;
}
.patron-meter--compact .patron-meter-val {
  font-size: 0.85rem;
}

.chip.chip-patron {
  color: #f0d8a8;
  background: rgba(143, 97, 255, 0.16);
  border: 1px solid rgba(143, 97, 255, 0.45);
  font-weight: 700;
  letter-spacing: 0.02em;
}
.cast-you-pin-label {
  letter-spacing: 0.01em;
}


/* —— At-risk ladder (pre-reaping draw share) —— */
.at-risk-ladder {
  margin: 0 0 14px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid var(--hairline-warm);
  background: rgba(0, 0, 0, 0.32);
}
.at-risk-ladder--empty { opacity: 0.85; }
.at-risk-ladder-kicker {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--torch);
  font-weight: 700;
  margin-bottom: 4px;
}
.at-risk-ladder-sub {
  margin: 0 0 10px;
  font-size: 12px;
  color: var(--parchment-mute);
}
.at-risk-ladder-empty {
  margin: 0;
  font-size: 13px;
  color: var(--parchment-mute);
}
.at-risk-armored {
  color: var(--alive, #3db8a0);
  font-weight: 600;
}
.at-risk-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.at-risk-row {
  display: grid;
  grid-template-columns: 22px 28px 1fr auto;
  gap: 8px;
  align-items: center;
  padding: 6px 8px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid transparent;
}
.at-risk-row--hot {
  border-color: color-mix(in srgb, var(--reaped, #e85d4c) 40%, transparent);
  background: color-mix(in srgb, var(--reaped, #e85d4c) 8%, transparent);
}
.at-risk-row--you {
  border-color: color-mix(in srgb, var(--torch) 45%, transparent);
}
.at-risk-rank {
  font-size: 11px;
  font-weight: 700;
  color: var(--parchment-mute);
  font-variant-numeric: tabular-nums;
  text-align: center;
}
.at-risk-face {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  background: #2a241c;
}
.at-risk-face--fallback {
  display: grid;
  place-items: center;
  font-size: 9px;
  font-weight: 800;
  color: #1a1005;
  background: var(--torch);
}
.at-risk-meta { min-width: 0; }
.at-risk-name {
  display: block;
  font-weight: 700;
  font-size: 13px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
  padding: 0;
}
.at-risk-mark {
  display: block;
  font-size: 11px;
  color: var(--parchment-mute);
  margin-top: 1px;
}
.at-risk-mark .heat-pips { margin-left: 4px; vertical-align: middle; }
.at-risk-right {
  text-align: right;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
}
.at-risk-pct {
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  font-size: 13px;
}
.chip-hot {
  font-size: 10px;
  border-radius: 999px;
  padding: 1px 7px;
  color: var(--torch);
  border: 1px solid color-mix(in srgb, var(--torch) 55%, transparent);
  background: color-mix(in srgb, var(--torch) 12%, transparent);
  font-weight: 700;
}

/* ═══════════════════════════════════════════
   Face-first Chamber / Home / You / Fallen
   (shipped from arena-kit/chamber-table)
   ═══════════════════════════════════════════ */

:root {
  --ff-surface: #1a1612;
  --ff-surface2: #241f19;
  --ff-line: #2e2820;
  --ff-mark: #e85d4c;
  --ff-shield: #3db8a0;
  --ff-face: 46px;
}

.ff-page-top {
  padding: 4px 0 12px;
}

button.ff-brand {
  display: inline-block;
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-align: left;
}
button.ff-brand:hover,
button.ff-brand:focus-visible {
  color: var(--parchment, #f3e6c8);
  outline: none;
}
.ff-brand {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
}
.ff-title-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-top: 4px;
}
.ff-title {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.15;
  font-family: var(--font-ui);
}
.ff-title em {
  font-style: normal;
  color: var(--torch);
}
.ff-night-chip {
  flex: 0 0 auto;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  font-size: 11px;
  font-weight: 650;
  color: var(--muted);
}
.ff-night-chip strong { color: var(--parchment); }
.ff-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.ff-note {
  margin-top: 8px;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.35;
}
.ff-note span { color: var(--parchment-dim); }
.ff-meta-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.ff-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 9px;
  border-radius: 999px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  font-size: 11px;
  color: var(--muted);
  font-weight: 560;
}
.ff-chip strong { color: var(--parchment); font-weight: 650; }
.ff-chip--pot {
  border-color: rgba(143, 97, 255, 0.35);
  background: rgba(143, 97, 255, 0.08);
  color: var(--torch);
}
.ff-chip--pot strong { color: var(--torch); }

/* Face discs */
.ff-face-wrap {
  position: relative;
  flex: 0 0 auto;
}
.ff-face,
.ff-initials {
  border-radius: 50%;
  object-fit: cover;
  display: block;
  background: var(--ff-surface2);
  border: 2.5px solid #2a241c;
}
.ff-face--cast .ff-face,
.ff-face--cast .ff-initials { width: 56px; height: 56px; }
.ff-face--sm .ff-face,
.ff-face--sm .ff-initials { width: 40px; height: 40px; }
.ff-face--md .ff-face,
.ff-face--md .ff-initials { width: 46px; height: 46px; }
.ff-face--lg .ff-face,
.ff-face--lg .ff-initials { width: 64px; height: 64px; }
.ff-face--xl .ff-face,
.ff-face--xl .ff-initials { width: 80px; height: 80px; }
.ff-face--hero .ff-face,
.ff-face--hero .ff-initials { width: 112px; height: 112px; }

.ff-initials {
  display: none;
  align-items: center;
  justify-content: center;
  background: linear-gradient(145deg, #3a3228, #241e18);
  font-size: 14px;
  font-weight: 700;
  color: #c9b89a;
}
.ff-face-wrap.has-fallback .ff-face { display: none; }
.ff-face-wrap.has-fallback .ff-initials { display: flex; }
.ff-face-wrap.is-dead .ff-face {
  filter: grayscale(0.55) brightness(0.85);
  border-color: rgba(232, 93, 76, 0.45);
}
.ff-you-face .ff-face,
.ff-you-hero .ff-face--xl .ff-face {
  border-color: var(--torch);
}
.ff-shield-badge {
  position: absolute;
  right: -2px;
  bottom: -2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--ff-shield);
  border: 2px solid var(--bg-card);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 8px;
  color: #06241e;
  font-weight: 800;
  line-height: 1;
}

/* YOU card (Home) */
.ff-you-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px;
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(143, 97, 255, 0.16), rgba(26, 22, 18, 0.98) 55%);
  border: 1px solid rgba(143, 97, 255, 0.45);
  box-shadow: inset 0 0 0 1px rgba(143, 97, 255, 0.1), 0 8px 28px rgba(0, 0, 0, 0.25);
}
.ff-you-meta { min-width: 0; flex: 1; }
.ff-you-handle,
.ff-hero-handle {
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.01em;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.ff-you-tag {
  display: inline-block;
  padding: 2px 6px;
  border-radius: 5px;
  background: var(--torch);
  color: #1a1206;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.04em;
  margin-left: 4px;
}
.ff-you-seat,
.ff-hero-seat {
  font-size: 12px;
  color: var(--muted);
  margin-top: 3px;
  font-weight: 550;
}
.ff-you-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.ff-stat {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 9px;
  border-radius: 8px;
  background: rgba(14, 12, 10, 0.45);
  border: 1px solid var(--ff-line);
  font-size: 11.5px;
  font-weight: 650;
  color: var(--parchment);
  font-variant-numeric: tabular-nums;
}
.ff-stat .lbl {
  color: #6e6254;
  font-weight: 550;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.ff-stat--risk {
  color: var(--torch);
  border-color: rgba(143, 97, 255, 0.3);
}
.ff-stat--streak {
  color: var(--ff-mark);
  border-color: rgba(232, 93, 76, 0.3);
  background: rgba(232, 93, 76, 0.1);
}

/* Pot */
.ff-pot-card {
  padding: 14px 16px 12px;
  border-radius: 16px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
}
.ff-pot-label {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #6e6254;
  font-weight: 650;
}
.ff-pot-value {
  margin-top: 4px;
  font-size: 28px;
  font-weight: 750;
  letter-spacing: -0.03em;
  color: var(--torch);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.ff-pot-value span {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  margin-left: 4px;
}
.ff-pot-bar {
  margin-top: 12px;
  height: 3px;
  border-radius: 999px;
  background: #2a241c;
  overflow: hidden;
}
.ff-pot-bar > i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(143, 97, 255, 0.35), var(--torch));
}
.ff-pot-note {
  margin-top: 8px;
  font-size: 11px;
  color: #6e6254;
  line-height: 1.35;
}
.ff-pot-note strong { color: #c4b49a; font-weight: 600; }

/* Cast strip */
.ff-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}
.ff-section-title {
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 700;
}
.ff-section-sub {
  font-size: 11px;
  color: #6e6254;
  font-weight: 550;
}
.ff-cast-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.ff-cast-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
  padding: 10px 6px;
  border-radius: 14px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  min-width: 0;
  color: inherit;
  width: 100%;
}
.ff-cast-card.is-hot {
  border-color: rgba(232, 93, 76, 0.4);
  background: linear-gradient(180deg, rgba(232, 93, 76, 0.1), var(--bg-card) 60%);
}
.ff-cast-face-wrap { position: relative; }
.ff-cast-card.is-hot .ff-face { border-color: rgba(232, 93, 76, 0.65); }
.ff-hot-chip {
  position: absolute;
  left: 50%;
  bottom: -5px;
  transform: translateX(-50%);
  padding: 1px 6px;
  border-radius: 999px;
  background: var(--ff-mark);
  color: #1a0806;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 0.04em;
  white-space: nowrap;
  box-shadow: 0 2px 6px rgba(232, 93, 76, 0.35);
  z-index: 1;
}
.ff-cast-handle {
  font-size: 11.5px;
  font-weight: 650;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
  line-height: 1.2;
}
.ff-cast-draw {
  font-size: 12.5px;
  font-weight: 750;
  color: var(--torch);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.ff-cast-draw .unit {
  font-size: 9px;
  font-weight: 550;
  color: #6e6254;
  margin-left: 1px;
}
.ff-empty-note {
  text-align: center;
  padding: 16px 8px;
  color: #6e6254;
  font-size: 12.5px;
}

.ff-team-line {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(26, 22, 18, 0.6);
  border: 1px solid var(--hairline);
  font-size: 12.5px;
  color: var(--parchment-dim);
}
.ff-team-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--torch);
  box-shadow: 0 0 8px rgba(143, 97, 255, 0.5);
  flex: 0 0 auto;
}

.ff-cta-primary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 14px 16px;
  border: none;
  border-radius: 14px;
  background: var(--torch);
  color: #1a1206;
  font-size: 15px;
  font-weight: 750;
  cursor: pointer;
  box-shadow: 0 0 0 1px rgba(143, 97, 255, 0.25), 0 8px 24px rgba(143, 97, 255, 0.22);
}
.ff-cta-primary:disabled { opacity: 0.45; cursor: default; }
.ff-cta-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
}
.ff-cta-sec {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 12px 8px;
  border-radius: 12px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  color: var(--parchment);
  font-size: 12px;
  font-weight: 650;
  cursor: pointer;
}
.ff-cta-sec .ico { font-size: 16px; line-height: 1; }
.ff-cta-sec--mark { color: var(--ff-mark); border-color: rgba(232, 93, 76, 0.28); }
.ff-cta-sec--shield { color: var(--ff-shield); border-color: rgba(61, 184, 160, 0.28); }
.ff-cta-sec--free { color: var(--torch); border-color: rgba(143, 97, 255, 0.28); }
.ff-cta-sec--torch {
  color: #1a1206;
  background: var(--torch);
  border-color: var(--torch);
  box-shadow: 0 4px 14px rgba(143, 97, 255, 0.2);
}
.ff-chamber-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 11px 14px;
  border-radius: 12px;
  background: transparent;
  border: 1px dashed #3a3228;
  color: var(--muted);
  font-size: 13px;
  font-weight: 650;
  cursor: pointer;
}
.ff-chamber-link span { color: var(--torch); }
.ff-home-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  justify-content: center;
  padding: 4px 0 8px;
}

/* Home role chip · tonight strip · verb toolbar (c100-19) */
.ff-role-block {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 2px;
}
.ff-role-chip {
  display: inline-flex;
  align-self: flex-start;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 750;
  letter-spacing: -0.01em;
  border: 1px solid var(--hairline);
  background: rgba(26, 22, 18, 0.85);
  color: var(--parchment);
}
.ff-role-chip.is-chamber {
  color: #1a1206;
  background: linear-gradient(135deg, var(--torch), #c48920);
  border-color: rgba(143, 97, 255, 0.55);
  box-shadow: 0 4px 14px rgba(143, 97, 255, 0.22);
}
.ff-role-chip.is-shielded {
  color: #06201a;
  background: linear-gradient(135deg, var(--ff-shield), #2a9a86);
  border-color: rgba(61, 184, 160, 0.5);
}
.ff-role-chip.is-outside {
  color: var(--parchment);
  background: rgba(40, 36, 30, 0.95);
  border-color: rgba(196, 180, 154, 0.28);
}
.ff-role-chip.is-nobag {
  color: #8a7c6a;
  background: rgba(20, 18, 14, 0.9);
  border-style: dashed;
}
.ff-role-hint {
  margin: 0;
  font-size: 12px;
  line-height: 1.4;
  color: #8a7c6a;
}

.ff-tonight-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding: 10px;
  border-radius: 14px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
}
.ff-tonight-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  padding: 4px 6px;
  border-radius: 8px;
  background: rgba(14, 12, 10, 0.35);
}
.ff-tonight-item .k {
  font-size: 9px;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #6e6254;
}
.ff-tonight-item .v {
  font-size: 12.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--parchment);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ff-tonight-pot { color: var(--torch); }

.ff-verb-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ff-verb-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ff-verb-label {
  font-size: 10px;
  font-weight: 750;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #6e6254;
  padding-left: 2px;
}
.ff-verb-btns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.ff-verb-btns--3 {
  grid-template-columns: 1fr 1fr 1fr;
}
.ff-verb-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 12px 8px;
  border-radius: 12px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  color: var(--parchment);
  font-size: 12px;
  font-weight: 650;
  cursor: pointer;
}
.ff-verb-btn .ico { font-size: 15px; line-height: 1; }
.ff-verb-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.ff-verb-btn--mark { color: var(--ff-mark); border-color: rgba(232, 93, 76, 0.28); }
.ff-verb-btn--free { color: var(--torch); border-color: rgba(143, 97, 255, 0.28); }
.ff-verb-btn--boost { color: #e87a9a; border-color: rgba(232, 122, 154, 0.28); }
.ff-verb-btn--cheer { color: #9ec5e8; border-color: rgba(158, 197, 232, 0.28); }
.ff-verb-btn--shield { color: var(--ff-shield); border-color: rgba(61, 184, 160, 0.28); }
.ff-verb-btn--buy {
  color: #1a1206;
  background: var(--torch);
  border-color: var(--torch);
  box-shadow: 0 4px 14px rgba(143, 97, 255, 0.2);
}
.ff-verb-grid--you .ff-verb-btn { padding: 10px 6px; font-size: 11.5px; }

@media (max-width: 360px) {
  .ff-tonight-strip { grid-template-columns: repeat(2, 1fr); }
  .ff-verb-btns--3 { grid-template-columns: 1fr 1fr; }
}


/* Chamber table */
.ff-chamber { display: flex; flex-direction: column; gap: 0; }
.ff-sticky-head {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(13, 10, 24, 0.96);
  backdrop-filter: blur(12px);
  margin: 0 calc(-1 * var(--pad-x, 16px));
  padding: 0 var(--pad-x, 16px);
}
.ff-controls {
  padding: 10px 0 8px;
  border-bottom: 1px solid var(--hairline);
}
.ff-sort-label {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #6e6254;
  margin-bottom: 6px;
  font-weight: 650;
}
.ff-sorts,
.ff-filters {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 2px;
}
.ff-sorts::-webkit-scrollbar,
.ff-filters::-webkit-scrollbar { display: none; }
.ff-sort {
  flex: 0 0 auto;
  border: 1px solid var(--hairline);
  background: var(--bg-card);
  color: var(--muted);
  border-radius: 999px;
  padding: 7px 12px;
  font-size: 12.5px;
  font-weight: 650;
  cursor: pointer;
}
.ff-sort.is-on {
  background: var(--torch);
  color: #1a1206;
  border-color: var(--torch);
  box-shadow: 0 0 0 1px rgba(143, 97, 255, 0.25), 0 4px 14px rgba(143, 97, 255, 0.2);
}
.ff-filters { margin-top: 4px; }
.ff-filter {
  flex: 0 0 auto;
  border: 1px solid transparent;
  background: transparent;
  color: var(--muted);
  border-radius: 8px;
  padding: 5px 10px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.ff-filter.is-on {
  background: var(--ff-surface2);
  border-color: var(--hairline);
  color: var(--parchment);
}
.ff-filter.is-on[data-mode="marked"] { color: var(--ff-mark); border-color: rgba(232, 93, 76, 0.35); }
.ff-filter.is-on[data-mode="shielded"] { color: var(--ff-shield); border-color: rgba(61, 184, 160, 0.35); }

.ff-cols {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) 0.7fr 0.55fr 0.45fr 0.45fr;
  gap: 4px;
  padding: 10px 8px 4px;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #6e6254;
  font-weight: 650;
}
.ff-cols span:nth-child(n + 2) { text-align: right; }

.ff-list { padding: 0 0 8px; }
.ff-row {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) 0.7fr 0.55fr 0.45fr 0.45fr;
  gap: 4px;
  align-items: center;
  padding: 9px 8px;
  margin-bottom: 4px;
  border-radius: 14px;
  background: var(--bg-card);
  border: 1px solid transparent;
  min-height: 64px;
}
.ff-row.is-you {
  background: linear-gradient(135deg, rgba(143, 97, 255, 0.14), rgba(26, 22, 18, 0.95) 55%);
  border-color: rgba(143, 97, 255, 0.45);
}
.ff-row.is-shielded { border-color: rgba(61, 184, 160, 0.22); }
.ff-row.is-marked:not(.is-you) {
  background: linear-gradient(90deg, rgba(232, 93, 76, 0.07), var(--bg-card) 40%);
}
.ff-row.is-reaped { opacity: 0.72; }
.ff-row.cast-row--flash {
  outline: 2px solid var(--torch);
  outline-offset: 2px;
}

.ff-who {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.ff-id { min-width: 0; }
.ff-handle {
  font-size: 13.5px;
  font-weight: 650;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.2;
  text-align: left;
  padding: 0;
  background: none;
  border: none;
  color: inherit;
  max-width: 100%;
}
.ff-seat {
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
}
.ff-cell {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-size: 12.5px;
  font-weight: 650;
  line-height: 1.15;
}
.ff-cell .unit {
  display: block;
  font-size: 9.5px;
  font-weight: 550;
  color: #6e6254;
  margin-top: 2px;
}
.ff-cell--risk { color: var(--torch); }
.ff-cell--fans { color: #c4b49a; }
.ff-mark-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 18px;
  padding: 0 5px;
  border-radius: 6px;
  background: rgba(232, 93, 76, 0.15);
  color: var(--ff-mark);
  font-size: 11px;
  font-weight: 750;
}
.ff-mark-chip.is-zero {
  background: transparent;
  color: #5a4e42;
  font-weight: 600;
}

.ff-pager {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 0 14px;
  border-top: 1px solid var(--hairline);
}
.ff-pager button {
  border: 1px solid var(--hairline);
  background: var(--bg-card);
  color: var(--parchment);
  border-radius: 10px;
  padding: 9px 14px;
  font-size: 13px;
  font-weight: 650;
  cursor: pointer;
  min-width: 72px;
}
.ff-pager button:disabled { opacity: 0.35; cursor: default; }
.ff-pager-mid {
  font-size: 12.5px;
  color: var(--muted);
  font-weight: 600;
  text-align: center;
}
.ff-pager-mid strong { color: var(--parchment); }

/* You hero */
.ff-you-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
  padding: 18px 14px 14px;
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(143, 97, 255, 0.12), rgba(22, 27, 34, 0.95) 55%);
  border: 1px solid rgba(143, 97, 255, 0.35);
}
.ff-hero-status {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--muted);
  margin-top: 2px;
}
.ff-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--ff-shield);
  box-shadow: 0 0 6px rgba(61, 184, 160, 0.5);
}
.ff-card {
  padding: 12px;
  border-radius: 14px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
}
.ff-solo-line {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--parchment-dim);
}
.ff-solo-ico {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--ff-surface2);
  border: 1px dashed var(--ff-line);
  color: var(--muted);
  font-size: 16px;
}
.ff-face-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--hairline);
}
.ff-face-row:last-child { border-bottom: none; padding-bottom: 0; }
.ff-face-row:first-child { padding-top: 0; }
.ff-fr-meta { min-width: 0; flex: 1; text-align: left; }
.ff-fr-handle {
  font-size: 13.5px;
  font-weight: 650;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ff-fr-sub {
  font-size: 11.5px;
  color: #6e6254;
  margin-top: 2px;
}
.ff-loyalty {
  flex: 0 0 auto;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(232, 93, 76, 0.12);
  border: 1px solid rgba(232, 93, 76, 0.3);
  color: var(--ff-mark);
  font-size: 11px;
  font-weight: 750;
}
.ff-meter-chip {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  font-size: 12.5px;
  color: var(--parchment-dim);
}
.ff-meter-bar {
  margin-top: 8px;
  height: 4px;
  border-radius: 999px;
  background: #2a241c;
  overflow: hidden;
}
.ff-meter-bar > i {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--ff-shield), var(--torch));
  border-radius: 999px;
}

/* Fallen memorial */
.ff-memorial-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 4px 0 16px;
}
.ff-memorial {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px;
  border-radius: 16px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
}
.ff-memorial.is-you {
  border-color: rgba(143, 97, 255, 0.4);
}
.ff-mem-meta { min-width: 0; flex: 1; }
.ff-mem-handle {
  font-size: 15px;
  font-weight: 700;
}
.ff-mem-line {
  font-size: 12px;
  color: var(--muted);
  margin-top: 2px;
}
.ff-mem-quote {
  margin: 8px 0 0;
  font-size: 13px;
  font-style: italic;
  color: var(--parchment-dim);
  line-height: 1.35;
}
.ff-mem-split {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
  font-size: 11.5px;
  color: #6e6254;
}
.ff-mem-split strong { color: var(--parchment); }
.ff-mem-night {
  flex: 0 0 auto;
  padding: 4px 9px;
  border-radius: 999px;
  background: rgba(232, 93, 76, 0.1);
  border: 1px solid rgba(232, 93, 76, 0.28);
  color: var(--ff-mark);
  font-size: 10.5px;
  font-weight: 750;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* Marks & Cheers breakout (c100-51) */
@media (min-width: 640px) {
  .ff-mc-grid { grid-template-columns: 1fr 1fr !important; }
}

/* Fallen memorial thicken (c100-50) */
.ff-mem-bag {
  margin-top: 8px;
  font-size: 12px;
  color: var(--parchment-dim, #c4b49a);
}
.ff-mem-bag strong {
  color: var(--torch, #8f61ff);
  font-weight: 750;
}
.ff-mem-cause,
.ff-mem-allies {
  margin-top: 4px;
  font-size: 11.5px;
  color: #6e6254;
  line-height: 1.35;
}
.ff-fallen-arc {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 2px 2px 12px;
  align-items: center;
}
.ff-fallen-arc-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 22px;
  padding: 0 7px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.03em;
  color: #6e6254;
  background: rgba(40, 32, 24, 0.45);
  border: 1px solid rgba(110, 98, 84, 0.35);
}
.ff-fallen-arc-dot.is-lit {
  color: var(--torch, #8f61ff);
  border-color: rgba(143, 97, 255, 0.45);
  background: rgba(143, 97, 255, 0.1);
  box-shadow: 0 0 8px rgba(143, 97, 255, 0.18);
}
.ff-fallen-demo {
  margin: 8px 0 20px;
  text-align: center;
}
.ff-fallen-demo-btn {
  font-size: 12px;
  opacity: 0.72;
}
.ff-fallen-demo .ff-demo-disclaimer {
  margin: 4px auto 0;
  max-width: 28rem;
  font-size: 10.5px;
  opacity: 0.65;
}

/* Ceremony face-first close */
.cer-beat--lastwords {
  max-height: min(78vh, 720px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 8px;
}
.cer-reap-hero { text-align: center; }
.cer-reap-hero .cer-face {
  width: 112px !important;
  height: 112px !important;
  margin: 0 auto 8px;
  border-radius: 50%;
  border: 3px solid rgba(196, 58, 74, 0.55);
}
.cer-section-lbl {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 700;
  margin: 14px 0 8px;
  text-align: left;
}
.cer-near-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px;
  border-radius: 14px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  text-align: left;
}
.cer-near-card .cer-face {
  width: 48px !important;
  height: 48px !important;
  border-radius: 50%;
  flex: 0 0 auto;
}
.cer-near-label {
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #6e6254;
  font-weight: 650;
}
.cer-near-name { font-size: 14px; font-weight: 700; margin-top: 2px; }
.cer-near-pct {
  margin-left: auto;
  font-size: 14px;
  font-weight: 750;
  color: var(--torch);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.cer-near-pct span {
  display: block;
  font-size: 9px;
  color: #6e6254;
  font-weight: 550;
}
.cer-also-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.cer-mini-face {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 8px 4px;
  border-radius: 12px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  text-align: center;
}
.cer-mini-face .cer-face {
  width: 44px !important;
  height: 44px !important;
  border-radius: 50%;
}
.cer-mini-name {
  font-size: 11px;
  font-weight: 650;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cer-mini-pct {
  font-size: 11px;
  font-weight: 750;
  color: var(--torch);
}

/* Mobile overflow guards */
@media (max-width: 480px) {
  .ff-cols { font-size: 9px; padding-left: 4px; padding-right: 4px; }
  .ff-row { grid-template-columns: minmax(0, 1.4fr) 0.65fr 0.55fr 0.4fr 0.4fr; padding: 8px 4px; gap: 2px; }
  .ff-cell { font-size: 11.5px; }
  .ff-cast-strip { gap: 6px; }
  .ff-sticky-head { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; }
  .screen.active { overflow-x: hidden; }
  .app { overflow-x: hidden; }
}

@media (min-width: 768px) {
  .ff-cast-strip { grid-template-columns: repeat(6, 1fr); }
  .ff-face--md .ff-face,
  .ff-face--md .ff-initials { width: 48px; height: 48px; }
}

@media (min-width: 1280px) {
  .ff-cast-strip { max-width: 720px; }
}

/* Face-first polish fixes */
.ff-handle {
  text-decoration: none !important;
  border-bottom: none;
}
.ff-handle:hover { color: var(--torch); }
.ff-cast-strip {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
.ff-pot-note strong { word-break: break-word; }

.ff-favor-pips {
  margin-left: 4px;
  color: #e85a7a;
  font-size: 10px;
  letter-spacing: 0.5px;
  text-shadow: 0 0 6px rgba(232, 90, 122, 0.45);
}

/* ============================================================
   Chamber show · c100-24 (addicting show · hero + heat race + cast drawer)
   ============================================================ */
.chamber-show {
  display: flex;
  flex-direction: column;
  position: relative;
  width: 100%;
  max-width: none;
  margin: 0 auto;
  overflow: visible;
  background:
    radial-gradient(ellipse 80% 50% at 50% 12%, rgba(143,97,255,0.16) 0%, transparent 55%),
    radial-gradient(ellipse at 50% 45%, #16102a 0%, #0a0714 72%);
  padding: 0 0 20px;
  min-height: min(92vh, 920px);
}
.chamber-show.is-locked .chs-verbs { opacity: 0.35; pointer-events: none; }

.chs-stage {
  flex: 0 0 auto;
  position: relative;
  padding: 14px 16px 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.chs-topline { text-align: center; z-index: 3; position: relative; width: 100%; }
.chs-topline h1 {
  margin: 0; font-weight: 500; font-size: 12px;
  letter-spacing: 0.2em; text-transform: uppercase; color: var(--torch, #a87dff);
}
.chs-clock {
  margin-top: 6px; font-variant-numeric: tabular-nums;
  font-size: 22px; letter-spacing: 0.06em; color: var(--parchment, #f2efe6);
  text-shadow: 0 0 24px rgba(143,97,255,0.25);
}
.chs-meta {
  margin-top: 4px; font-size: 11px; color: rgba(154,149,136,0.8);
  letter-spacing: 0.02em;
}
#chs-pot.chs-pot-tick {
  animation: chs-pot-tick 480ms ease-out;
  color: var(--torch, #a87dff);
}
@keyframes chs-pot-tick {
  0% { transform: scale(1); }
  40% { transform: scale(1.18); color: #cbb6ff; }
  100% { transform: scale(1); }
}

/* --- Heat race (addiction meter) --- */
.chs-heat-race {
  display: flex;
  gap: 8px;
  justify-content: center;
  align-items: stretch;
  flex-wrap: wrap;
  width: 100%;
  max-width: 720px;
  margin: 12px auto 4px;
  padding: 0 8px;
  z-index: 4;
  position: relative;
}
.chs-race-slot {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  flex: 1 1 140px;
  max-width: 220px;
  padding: 6px 10px 6px 6px;
  border-radius: 999px;
  border: 1px solid rgba(242,239,230,0.1);
  background: rgba(8,6,4,0.55);
  color: inherit;
  font: inherit;
  cursor: pointer;
  text-align: left;
  backdrop-filter: blur(6px);
  transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
}
.chs-race-slot.is-lead {
  border-color: rgba(143,97,255,0.45);
  box-shadow: 0 0 18px rgba(143,97,255,0.18);
}
.chs-race-slot.is-lit {
  border-color: rgba(203, 182, 255,0.7);
  background: rgba(143,97,255,0.1);
}
.chs-race-slot.is-you {
  border-style: dashed;
  border-color: rgba(94,224,154,0.4);
}
.chs-race-place {
  font-size: 10px; font-weight: 700; letter-spacing: 0.06em;
  color: var(--parchment-mute, #9a9588); width: 18px; text-align: center; flex-shrink: 0;
}
.chs-race-slot.is-lead .chs-race-place { color: var(--torch, #a87dff); }
.chs-race-face {
  width: 32px; height: 32px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
  border: 1px solid rgba(143,97,255,0.35);
}
.chs-race-who {
  display: flex; flex-direction: column; min-width: 0; line-height: 1.15;
}
.chs-race-handle {
  font-size: 12px; color: var(--torch, #a87dff);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.chs-race-heat {
  font-size: 11px; font-variant-numeric: tabular-nums;
  color: #ff8f76; letter-spacing: 0.02em;
}
.chs-race-empty { margin: 0; font-size: 12px; text-align: center; width: 100%; }

/* Arena: dim crowd + cinematic hero */
.chs-arena {
  position: relative;
  width: 100%;
  min-height: 320px;
  margin-top: 4px;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  padding: 0 8px 8px;
}
.chs-crowd {
  position: absolute;
  left: 2%; right: 2%;
  top: 0;
  height: 140px;
  display: grid;
  grid-template-columns: repeat(14, 1fr);
  gap: 3px 4px;
  padding: 8px 8px 0;
  opacity: 0.32;
  pointer-events: none;
  align-content: start;
  z-index: 1;
  overflow: hidden;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.3) 55%, transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.3) 55%, transparent 100%);
}
.chs-crowd-cell {
  position: relative; width: 100%; aspect-ratio: 1;
  padding: 0; margin: 0; border: 0; background: transparent;
  pointer-events: none; border-radius: 50%;
}
.chs-crowd-cell img,
.chs-crowd-cell .chs-face {
  width: 100%; height: 100%; border-radius: 50%;
  object-fit: cover; filter: brightness(0.4) saturate(0.5);
  border: 1px solid rgba(0,0,0,0.45); display: block;
  pointer-events: none; opacity: 0.85;
}
.chs-crowd-cell.is-hot img,
.chs-crowd-cell.is-hot .chs-face {
  filter: brightness(0.65) saturate(0.75);
  opacity: 0.18;
  box-shadow: 0 0 0 1px rgba(143,97,255,0.3);
}
.chs-crowd-dust {
  position: absolute; inset: -2px; border-radius: 50%;
  pointer-events: none; opacity: 0; transition: opacity 0.35s;
}
.chs-crowd-cell.dust-light .chs-crowd-dust,
.chs-crowd-cell.has-dust.dust-light .chs-crowd-dust {
  opacity: 0.55;
  background:
    radial-gradient(circle at 30% 74%, rgba(232,90,58,0.75) 0 1.6px, transparent 2px),
    radial-gradient(circle at 64% 80%, rgba(61,207,122,0.65) 0 1.4px, transparent 1.8px);
}
.chs-crowd-cell.dust-medium .chs-crowd-dust,
.chs-crowd-cell.has-dust.dust-medium .chs-crowd-dust {
  opacity: 0.8;
  background:
    radial-gradient(circle at 28% 70%, rgba(232,90,58,0.9) 0 2px, transparent 2.5px),
    radial-gradient(circle at 68% 76%, rgba(61,207,122,0.8) 0 1.8px, transparent 2.2px),
    radial-gradient(circle at 48% 88%, rgba(255,107,74,0.55) 0 1.4px, transparent 1.8px);
}
.chs-crowd-cell.dust-heavy .chs-crowd-dust,
.chs-crowd-cell.has-dust.dust-heavy .chs-crowd-dust {
  opacity: 0.95;
  background:
    radial-gradient(circle at 26% 68%, rgba(232,90,58,0.95) 0 2.2px, transparent 2.7px),
    radial-gradient(circle at 72% 74%, rgba(61,207,122,0.9) 0 2px, transparent 2.5px),
    radial-gradient(circle at 44% 86%, rgba(255,107,74,0.7) 0 1.6px, transparent 2px),
    radial-gradient(circle at 60% 64%, rgba(94,224,154,0.65) 0 1.5px, transparent 1.9px);
}
.chs-crowd-cell.mark-only .chs-crowd-dust {
  background:
    radial-gradient(circle at 30% 74%, rgba(232,90,58,0.95) 0 2px, transparent 2.5px),
    radial-gradient(circle at 62% 82%, rgba(255,107,74,0.75) 0 1.6px, transparent 2px);
}
.chs-crowd-cell.cheer-only .chs-crowd-dust {
  background:
    radial-gradient(circle at 34% 74%, rgba(61,207,122,0.95) 0 2px, transparent 2.5px),
    radial-gradient(circle at 64% 82%, rgba(94,224,154,0.75) 0 1.6px, transparent 2px);
}
.chs-crowd-cell.dust-paid .chs-crowd-dust { filter: brightness(1.25) saturate(1.15); }

/* Hero spotlight */
.chs-spot {
  position: relative; z-index: 2;
  margin-top: 36px; margin-bottom: 0;
  width: min(92%, 420px);
  text-align: center;
  padding-bottom: 4px;
}
.chs-spot.chs-cam-shake {
  animation: chs-cam-shake 400ms cubic-bezier(0.36, 0.07, 0.19, 0.97);
}
@keyframes chs-cam-shake {
  0%, 100% { transform: translate(0, 0); }
  20% { transform: translate(-4px, 2px) rotate(-0.4deg); }
  40% { transform: translate(5px, -2px) rotate(0.5deg); }
  60% { transform: translate(-3px, 1px); }
  80% { transform: translate(2px, -1px); }
}

.chs-beam {
  position: absolute;
  left: 50%; top: -90px;
  transform: translateX(-50%);
  width: 280px; height: 320px;
  pointer-events: none; z-index: 0;
  background:
    linear-gradient(to bottom,
      rgba(255,240,190,0.7) 0%,
      rgba(143,97,255,0.28) 26%,
      rgba(143,97,255,0.08) 58%,
      transparent 100%);
  clip-path: polygon(36% 0%, 64% 0%, 96% 100%, 4% 100%);
  opacity: 1;
  filter: blur(0.4px);
}
.chs-beam::after {
  content: "";
  position: absolute; left: 50%; top: 0;
  transform: translateX(-50%);
  width: 64px; height: 22px;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(255,248,220,1), rgba(143,97,255,0.45) 55%, transparent 72%);
  box-shadow: 0 0 40px 12px rgba(255,220,140,0.4);
}
.chs-floor-glow {
  position: absolute;
  left: 50%; bottom: 8px;
  transform: translateX(-50%);
  width: 260px; height: 64px;
  pointer-events: none; z-index: 0;
  background: radial-gradient(ellipse at 50% 50%,
    rgba(143,97,255,0.5) 0%,
    rgba(143,97,255,0.14) 42%,
    transparent 70%);
  filter: blur(3px);
}
.chs-throne {
  position: absolute;
  left: 50%; bottom: 72px;
  transform: translateX(-50%);
  width: 240px; height: 140px;
  pointer-events: none; z-index: 1;
  opacity: 0.9;
}
.chs-throne svg { width: 100%; height: 100%; display: block; }
.chs-last-bag {
  position: absolute;
  right: 4%; bottom: 78px;
  width: 64px; height: 56px;
  z-index: 3;
  pointer-events: none;
  filter: drop-shadow(0 0 12px rgba(240,208,120,0.7)) drop-shadow(0 4px 14px rgba(0,0,0,0.55));
  animation: chs-bag-glow 2.8s ease-in-out infinite;
}
.chs-last-bag svg { width: 100%; height: 100%; display: block; }
@keyframes chs-bag-glow {
  0%, 100% { filter: drop-shadow(0 0 8px rgba(240,208,120,0.5)) drop-shadow(0 4px 10px rgba(0,0,0,0.5)); transform: translateY(0); }
  50% { filter: drop-shadow(0 0 18px rgba(255,230,150,0.9)) drop-shadow(0 4px 12px rgba(0,0,0,0.55)); transform: translateY(-3px); }
}

/* Face only — no admin card chrome */
.chs-seat-card {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 8px 12px 4px;
  position: relative;
  overflow: visible;
  z-index: 2;
  transition: transform 0.2s, filter 0.25s;
}
.chs-seat-card.is-marked .chs-face-wrap .chs-face,
.chs-seat-card.is-marked .chs-face-wrap .face {
  box-shadow:
    0 0 0 4px rgba(232,90,58,0.35),
    0 16px 48px rgba(0,0,0,0.6),
    0 0 40px rgba(232,90,58,0.45);
}
.chs-seat-card.is-cheered .chs-face-wrap .chs-face,
.chs-seat-card.is-cheered .chs-face-wrap .face {
  box-shadow:
    0 0 0 4px rgba(61,207,122,0.35),
    0 16px 48px rgba(0,0,0,0.6),
    0 0 40px rgba(61,207,122,0.4);
}
.chs-seat-card.is-marked.is-cheered .chs-face-wrap .chs-face,
.chs-seat-card.is-marked.is-cheered .chs-face-wrap .face {
  box-shadow:
    0 0 0 4px rgba(143,97,255,0.35),
    0 16px 48px rgba(0,0,0,0.6),
    0 0 28px rgba(232,90,58,0.35),
    0 0 28px rgba(61,207,122,0.3);
}
.chs-seat-card.pulse { /* no transform — scaling the card drops the face */ }
.chs-seat-card #chs-confetti {
  position: absolute; inset: -20px -28px -8px;
  width: calc(100% + 56px); height: calc(100% + 28px);
  pointer-events: none; z-index: 1;
}
.chs-shockwave {
  position: absolute; inset: -4px; border-radius: 50%;
  pointer-events: none; z-index: 0; opacity: 0;
  border: 2px solid transparent;
  width: 160px; height: 160px; left: 50%; top: 4px;
  transform: translateX(-50%);
  margin: 0;
}
.chs-seat-card.shockwave-ring .chs-shockwave {
  animation: chs-shockwave-ring 420ms ease-out forwards;
}
@keyframes chs-shockwave-ring {
  0% { opacity: 0.9; transform: translateX(-50%) scale(0.92); border-color: rgba(255,107,74,0.85); box-shadow: 0 0 0 0 rgba(232,90,58,0.4); }
  100% { opacity: 0; transform: translateX(-50%) scale(1.2); border-color: rgba(232,90,58,0); box-shadow: 0 0 0 22px rgba(232,90,58,0); }
}

/* TV lower-thirds */
.chs-lower-thirds {
  position: relative; z-index: 3;
  margin: 2px auto 0;
  padding: 8px 16px 6px;
  max-width: 360px;
  background: linear-gradient(to top, rgba(0,0,0,0.72) 0%, rgba(0,0,0,0.35) 70%, transparent 100%);
  border-radius: 0 0 8px 8px;
}
.chs-lt-handle, .chs-handle {
  position: relative; z-index: 2;
  font-size: 18px; font-weight: 600; color: var(--torch, #a87dff); margin: 0;
  text-shadow: 0 2px 14px rgba(0,0,0,0.85);
  letter-spacing: 0.02em;
}
.chs-lt-bag, .chs-bag {
  position: relative; z-index: 2;
  margin: 4px 0 0; font-size: 13px; color: var(--parchment, #e8e0d0);
  font-variant-numeric: tabular-nums;
  text-shadow: 0 1px 10px rgba(0,0,0,0.75);
}
.chs-lt-bag.chs-heat-jump {
  animation: chs-heat-jump 380ms ease-out;
}
@keyframes chs-heat-jump {
  0% { transform: scale(1); }
  35% { transform: scale(1.12); color: #ff8f76; }
  100% { transform: scale(1); }
}
.chs-lt-hits, .chs-hit-count {
  position: relative; z-index: 2;
  margin: 5px 0 0; font-size: 12px;
  font-variant-numeric: tabular-nums; opacity: 0.95;
  text-shadow: 0 1px 8px rgba(0,0,0,0.7);
}
.chs-lt-hits .hm, .chs-hit-count .hm { color: #ff8f76; }
.chs-lt-hits .hc, .chs-hit-count .hc { color: #5ee09a; }

.chs-face-wrap {
  position: relative;
  width: 148px; height: 148px;
  margin: 0 auto 4px;
  z-index: 2;
  border-radius: 50%;
  /* Planted — never translate/scale this box on Mark/Cheer */
  contain: layout style;
}
.chs-face-wrap .chs-face,
.chs-face-wrap .face {
  width: 148px; height: 148px; border-radius: 50%;
  object-fit: cover; display: block;
  background: #1a1510;
  content-visibility: visible;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  border: 3px solid rgba(255,235,170,0.85);
  box-shadow:
    0 0 0 4px rgba(143,97,255,0.2),
    0 16px 48px rgba(0,0,0,0.6),
    0 0 56px rgba(255,220,140,0.35);
  transform-origin: 50% 55%;
}
.chs-face-fx {
  position: absolute; inset: 0; border-radius: 50%;
  pointer-events: none; z-index: 3; overflow: hidden;
}
.chs-face-fx svg { width: 100%; height: 100%; display: block; }
.chs-face-fx .expr { opacity: 0; transition: opacity 0.12s ease-out; }
.chs-face-wrap.react-frown .chs-face-fx .expr-frown { opacity: 1; }
.chs-face-wrap.react-smile .chs-face-fx .expr-smile { opacity: 1; }
.chs-face-wrap.frown-deep .chs-face-fx .expr-frown { opacity: 1; }
.chs-face-wrap.frown-deep .chs-face-fx .brow { stroke-width: 3.2; }
.chs-face-wrap.frown-deep .chs-face-fx .mouth-frown { stroke-width: 3.4; }
.chs-face-wrap.frown-mid .chs-face-fx .expr-frown { opacity: 1; }

.chs-face-flash {
  position: absolute; inset: -10px; border-radius: 50%;
  pointer-events: none; z-index: 3; opacity: 0;
  /* Ring only — never opaque-cover the photo (was causing “face disappears”) */
  background: radial-gradient(circle at 50% 45%,
    transparent 42%,
    rgba(255,90,60,0.28) 58%,
    rgba(232,90,58,0.12) 72%,
    transparent 82%);
  box-shadow: inset 0 0 0 2px rgba(255,120,90,0.35);
}
.chs-face-wrap.react-mark .chs-face-flash { animation: chs-flash-mark 280ms ease-out forwards; }
.chs-face-wrap.react-mark-paid .chs-face-flash { animation: chs-flash-mark-paid 340ms ease-out forwards; }
@keyframes chs-flash-mark { 0% { opacity: 0.85; } 100% { opacity: 0; } }
@keyframes chs-flash-mark-paid { 0% { opacity: 1; transform: scale(1.04); } 100% { opacity: 0; transform: scale(1.12); } }

.chs-face-wrap.react-mark .chs-face,
.chs-face-wrap.react-mark .face,
.chs-face-wrap.react-mark-paid .chs-face,
.chs-face-wrap.react-mark-paid .face,
.chs-face-wrap.react-cheer .chs-face,
.chs-face-wrap.react-cheer .face,
.chs-face-wrap.react-cheer-paid .chs-face,
.chs-face-wrap.react-cheer-paid .face {
  /* Face stays planted — motion lives on POW + flash ring only */
  animation: none !important;
  transform: none !important;
}
.chs-face-wrap.react-mark,
.chs-face-wrap.react-mark-paid {
  animation: chs-ring-hit 240ms ease-out;
}
.chs-face-wrap.react-cheer,
.chs-face-wrap.react-cheer-paid {
  animation: chs-ring-cheer 300ms ease-out;
}
@keyframes chs-ring-hit {
  0% { box-shadow: 0 0 0 0 rgba(232,90,58,0.55); }
  40% { box-shadow: 0 0 0 10px rgba(232,90,58,0.2); }
  100% { box-shadow: 0 0 0 0 rgba(232,90,58,0); }
}
@keyframes chs-ring-cheer {
  0% { box-shadow: 0 0 0 0 rgba(61,207,122,0.5); }
  40% { box-shadow: 0 0 0 10px rgba(61,207,122,0.22); }
  100% { box-shadow: 0 0 0 0 rgba(61,207,122,0); }
}
/* soft green swell on cheer card */
.chs-seat-card.is-cheered.pulse .chs-face-wrap .chs-face {
  box-shadow:
    0 0 0 4px rgba(61,207,122,0.45),
    0 16px 48px rgba(0,0,0,0.6),
    0 0 48px rgba(61,207,122,0.55);
}
@keyframes chs-punch {
  0% { transform: scale(1) translate(0,0); }
  30% { transform: scale(0.92) translate(-3px, 2px) rotate(-2deg); }
  55% { transform: scale(1.04) translate(2px, -1px); }
  100% { transform: scale(1) translate(0,0); }
}
@keyframes chs-punch-paid {
  0% { transform: scale(1); }
  25% { transform: scale(0.9) translate(-4px, 3px) rotate(-3deg); }
  60% { transform: scale(1.05) translate(3px, -2px); }
  100% { transform: scale(1); }
}
  25% { transform: scale(0.88) translate(-4px, 3px) rotate(-3deg); filter: brightness(1.15); }
  60% { transform: scale(1.06) translate(3px, -2px); }
  100% { transform: scale(1); filter: brightness(1); }
}
@keyframes chs-bounce {
  0% { transform: translateY(0) scale(1); }
  35% { transform: translateY(-8px) scale(1.05); }
  60% { transform: translateY(2px) scale(0.98); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes chs-bounce-paid {
  0% { transform: translateY(0) scale(1); }
  30% { transform: translateY(-12px) scale(1.08); }
  55% { transform: translateY(3px) scale(0.97); }
  100% { transform: translateY(0) scale(1); }
}
  30% { transform: translateY(-12px) scale(1.08); filter: brightness(1.12); }
  55% { transform: translateY(3px) scale(0.97); }
  100% { transform: translateY(0) scale(1); filter: brightness(1); }
}

/* Broadcast ticker */
.chs-ticker {
  min-height: 22px;
  margin: 8px auto 0;
  padding: 0 16px;
  font-size: 13px;
  letter-spacing: 0.04em;
  text-align: center;
  color: transparent;
  opacity: 0;
  transition: opacity 0.2s;
  z-index: 5;
}
.chs-ticker.is-on {
  opacity: 1;
  animation: chs-ticker-in 0.25s ease-out;
}
.chs-ticker.is-mark { color: #ff8f76; text-shadow: 0 0 12px rgba(232,90,58,0.45); }
.chs-ticker.is-cheer { color: #5ee09a; text-shadow: 0 0 12px rgba(61,207,122,0.4); }
.chs-ticker.is-paid { color: #cbb6ff; font-weight: 600; text-shadow: 0 0 14px rgba(143,97,255,0.5); }
@keyframes chs-ticker-in {
  from { transform: translateY(6px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

/* Verbs — free default; hold / Pay link for paid */
.chs-verbs {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 10px; margin: 12px 16px 0; z-index: 2;
  max-width: 480px; width: calc(100% - 32px); align-self: center;
}
.chs-verb {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  padding: 14px 16px; border-radius: 14px; cursor: pointer;
  border: 1px solid rgba(242,239,230,0.14);
  background: rgba(16,12,28,0.6); color: inherit; font: inherit;
  text-align: left;
  touch-action: manipulation;
  user-select: none;
  -webkit-user-select: none;
  transition: border-color 0.15s, background 0.15s, transform 0.1s;
}
.chs-verb:disabled { opacity: 0.4; cursor: not-allowed; }
.chs-verb .name { font-size: 16px; font-weight: 600; color: var(--parchment, #f2efe6); }
.chs-verb .sub { font-size: 11px; color: var(--parchment-mute, #9a9588); }
.chs-verb.is-paid-mode { border-color: rgba(232,90,58,0.4); }
.chs-verb.is-paid-mode .name { color: #ff8f76; }
.chs-verb.is-holding {
  border-color: rgba(232,90,58,0.65);
  background: rgba(232,90,58,0.12);
  transform: scale(0.98);
}
.chs-verb.is-holding .sub::after { content: ' · hold for $'; color: var(--torch, #a87dff); }

.chs-pay-hint {
  margin: 6px 16px 0; text-align: center;
  font-size: 12px; color: var(--parchment-mute, #9a9588);
}
.chs-pay-link {
  border: 0; background: none; padding: 0;
  color: rgba(255,143,118,0.9); font: inherit; font-size: 12px;
  text-decoration: underline; text-underline-offset: 2px;
  cursor: pointer;
}
.chs-pay-or { opacity: 0.75; }

.chs-castbar {
  display: flex; gap: 8px; justify-content: center; flex-wrap: wrap;
  align-items: center;
  margin: 14px 16px 0;
}
.chs-chip {
  border: 1px solid rgba(242,239,230,0.14);
  background: rgba(16,12,28,0.45); color: var(--parchment-mute, #9a9588);
  font: inherit; font-size: 12px; padding: 7px 14px; border-radius: 999px;
  cursor: pointer;
}
.chs-chip.is-on, .chs-chip.is-race {
  border-color: rgba(143,97,255,0.55);
  color: var(--torch, #a87dff);
  background: rgba(143,97,255,0.1);
}
.chs-cast-btn {
  border-color: rgba(242,239,230,0.2);
  color: var(--parchment, #f2efe6);
}

/* At-risk face strip removed c100-33 — heat race + Cast cover it */

.chs-hist { margin: 8px 12px 8px; justify-content: center; opacity: 0.85; }

/* Cast drawer / sheet */
.chs-drawer {
  position: fixed; inset: 0; z-index: 80;
  pointer-events: none; visibility: hidden;
}
.chs-drawer.open {
  pointer-events: auto; visibility: visible;
}
.chs-drawer-scrim {
  position: absolute; inset: 0;
  border: 0; padding: 0; margin: 0;
  background: rgba(0,0,0,0.55);
  opacity: 0; transition: opacity 0.22s;
  cursor: pointer;
}
.chs-drawer.open .chs-drawer-scrim { opacity: 1; }
.chs-drawer-sheet {
  position: absolute; left: 0; right: 0; bottom: 0;
  max-height: min(78vh, 720px);
  display: flex; flex-direction: column;
  padding: 12px 14px 20px;
  border-radius: 18px 18px 0 0;
  border: 1px solid rgba(242,239,230,0.12);
  border-bottom: 0;
  background: #12100c;
  box-shadow: 0 -12px 40px rgba(0,0,0,0.55);
  transform: translateY(110%);
  transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}
.chs-drawer.open .chs-drawer-sheet { transform: translateY(0); }
.chs-drawer-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin-bottom: 8px;
}
.chs-drawer-head h2 {
  margin: 0; font-size: 15px; font-weight: 500;
  color: var(--parchment, #f2efe6); letter-spacing: 0.04em;
}
.chs-drawer-close {
  border: 1px solid rgba(242,239,230,0.14);
  background: transparent; color: var(--parchment-mute, #9a9588);
  font: inherit; font-size: 12px; padding: 6px 12px; border-radius: 999px;
  cursor: pointer;
}
.chs-sort { display: flex; align-items: center; gap: 4px; margin-bottom: 8px; }
.chs-sort-label { font-size: 11px; color: var(--parchment-mute, #9a9588); margin-right: 4px; }
.chs-sort-btn {
  border: 1px solid transparent; background: transparent;
  color: var(--parchment-mute, #9a9588); font: inherit; font-size: 12px;
  padding: 4px 10px; border-radius: 8px; cursor: pointer;
}
.chs-sort-btn.is-on {
  border-color: rgba(143,97,255,0.45);
  color: var(--torch, #a87dff);
  background: rgba(143,97,255,0.08);
}
.chs-search {
  width: 100%; box-sizing: border-box;
  margin-bottom: 8px; padding: 8px 12px;
  border-radius: 10px; border: 1px solid rgba(242,239,230,0.12);
  background: rgba(0,0,0,0.25); color: inherit; font: inherit; font-size: 13px;
}
.chs-cols {
  display: grid; grid-template-columns: 1fr 88px 64px;
  gap: 8px; padding: 0 6px 6px;
  font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--parchment-mute, #9a9588);
}
.chs-roster-list, .chs-list {
  overflow: auto; flex: 1; -webkit-overflow-scrolling: touch;
  min-height: 120px; max-height: min(52vh, 480px);
}
.chs-row {
  display: grid; grid-template-columns: 1fr 88px 64px;
  gap: 8px; align-items: center;
  width: 100%; text-align: left;
  background: transparent; border: 1px solid transparent;
  border-radius: 12px; padding: 8px 6px;
  color: inherit; font: inherit; cursor: pointer;
}
.chs-row:hover { background: rgba(255,255,255,0.03); }
.chs-row.is-sel { border-color: rgba(143,97,255,0.55); background: rgba(143,97,255,0.06); }
.chs-who { display: flex; gap: 10px; align-items: center; min-width: 0; }
.chs-who img { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.chs-who span {
  font-size: 13px; color: var(--torch, #a87dff);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.chs-bagcell, .chs-heatcell {
  font-size: 12px; color: var(--parchment-mute, #9a9588);
  font-variant-numeric: tabular-nums;
}
.chs-heatcell.heatdots { letter-spacing: 1px; color: var(--torch, #a87dff); font-size: 9px; }

.chamber-show--past { padding: 16px; }

/* Kill legacy plaque / Free|Paid seg / Follow-heat bar */
.chs-stage-plaque,
.chs-mode,
.chs-seg,
.chs-followbar { display: none !important; }

@media (min-width: 800px) {
  .chs-stage { padding: 18px 28px 0; }
  .chs-arena { min-height: 380px; }
  .chs-crowd {
    left: 10%; right: 10%;
    height: 160px;
    grid-template-columns: repeat(18, 1fr);
    opacity: 0.28;
  }
  .chs-spot { width: min(48%, 440px); margin-top: 48px; }
  .chs-face-wrap,
  .chs-face-wrap .chs-face,
  .chs-face-wrap .face { width: 176px; height: 176px; }
  .chs-beam { width: 340px; height: 360px; top: -110px; }
  .chs-throne { width: 280px; height: 160px; bottom: 88px; }
  .chs-last-bag { width: 76px; height: 66px; right: 6%; bottom: 96px; }
  .chs-shockwave { width: 190px; height: 190px; }
  .chs-heat-race { max-width: 860px; }
  .chs-drawer-sheet {
    left: 50%; right: auto; bottom: 24px;
    width: min(520px, 92vw);
    transform: translate(-50%, 110%);
    border-radius: 18px;
    border-bottom: 1px solid rgba(242,239,230,0.12);
    max-height: min(70vh, 640px);
  }
  .chs-drawer.open .chs-drawer-sheet { transform: translate(-50%, 0); }
  .chs-cols, .chs-row { grid-template-columns: 1fr 100px 72px; }
}

@media (max-width: 540px) {
  .chs-arena { min-height: 280px; }
  .chs-crowd {
    height: 110px;
    grid-template-columns: repeat(10, 1fr);
    opacity: 0.3;
  }
  .chs-spot { width: min(96%, 340px); margin-top: 28px; }
  .chs-face-wrap,
  .chs-face-wrap .chs-face,
  .chs-face-wrap .face { width: 128px; height: 128px; }
  .chs-beam { width: 220px; height: 260px; top: -70px; }
  .chs-throne { width: 200px; bottom: 64px; }
  .chs-last-bag { width: 52px; height: 46px; right: 2%; bottom: 70px; }
  .chs-race-slot { flex: 1 1 120px; }
  .chs-lt-handle { font-size: 16px; }
  .chs-cols, .chs-row { grid-template-columns: 1fr 72px 52px; }
}


/* Comic impact words — WHAM / POW / BOOM */
.chs-seat-card { overflow: visible; }
.chs-pow {
  position: absolute;
  left: 50%;
  top: 18%;
  z-index: 8;
  pointer-events: none;
  font-family: Impact, Haettenschweiler, "Arial Black", "Franklin Gothic Heavy", sans-serif;
  font-size: clamp(28px, 7vw, 42px);
  font-weight: 900;
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: uppercase;
  color: #fff6e8;
  -webkit-text-stroke: 2px #1a0804;
  text-shadow:
    3px 3px 0 #c43a22,
    -1px -1px 0 #1a0804,
    0 0 18px rgba(255,120,60,0.75);
  transform: translate(calc(-50% + var(--chs-pow-x, 0px)), var(--chs-pow-y, -24px)) rotate(var(--chs-pow-rot, -12deg)) scale(0.4);
  opacity: 0;
  will-change: transform, opacity;
}
.chs-pow.is-on {
  animation: chs-pow-pop 560ms cubic-bezier(.15,.85,.25,1) forwards;
}
.chs-pow--paid {
  font-size: clamp(34px, 8vw, 52px);
  text-shadow:
    4px 4px 0 #ff4a22,
    -2px -2px 0 #1a0804,
    0 0 28px rgba(255,90,40,0.9);
  animation-duration: 700ms;
}
.chs-pow--cheer {
  color: #e8fff2;
  -webkit-text-stroke: 2px #0a2a18;
  text-shadow:
    3px 3px 0 #1f8a4c,
    -1px -1px 0 #0a2a18,
    0 0 16px rgba(94,224,154,0.7);
  font-size: clamp(22px, 5.5vw, 32px);
}
.chs-pow--cheer.chs-pow--paid {
  font-size: clamp(26px, 6.5vw, 38px);
}
@keyframes chs-pow-pop {
  0% {
    opacity: 0;
    transform: translate(calc(-50% + var(--chs-pow-x, 0px)), calc(var(--chs-pow-y, -24px) + 12px)) rotate(var(--chs-pow-rot, -12deg)) scale(0.35);
  }
  18% {
    opacity: 1;
    transform: translate(calc(-50% + var(--chs-pow-x, 0px)), var(--chs-pow-y, -24px)) rotate(var(--chs-pow-rot, -12deg)) scale(1.18);
  }
  55% {
    opacity: 1;
    transform: translate(calc(-50% + var(--chs-pow-x, 0px)), calc(var(--chs-pow-y, -24px) - 6px)) rotate(var(--chs-pow-rot, -12deg)) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(calc(-50% + var(--chs-pow-x, 0px)), calc(var(--chs-pow-y, -24px) - 28px)) rotate(var(--chs-pow-rot, -12deg)) scale(0.92);
  }
}


/* Paid sheet — locked to hot seat */
.chs-sheet-locked {
  display: flex; align-items: center; gap: 12px;
  margin: 0 0 14px; padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(143,97,255,0.35);
  background: rgba(143,97,255,0.08);
}
.chs-sheet-locked-face {
  width: 44px; height: 44px; border-radius: 50%;
  object-fit: cover;
  border: 2px solid rgba(143,97,255,0.55);
}
.chs-sheet-locked-kicker {
  font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
  color: rgba(143,97,255,0.85); margin-bottom: 2px;
}
.chs-sheet-locked-name {
  font-size: 15px; color: var(--torch, #a87dff); font-weight: 600;
}


/* Inline cast below stage — desktop board, not a phone sheet (c100-32) */
.chs-roster {
  margin: 20px auto 32px;
  padding: 16px 16px 12px;
  border-radius: 18px;
  border: 1px solid rgba(242,239,230,0.12);
  background:
    linear-gradient(180deg, rgba(18,14,10,0.92) 0%, rgba(10,8,18,0.88) 100%);
  box-shadow: 0 12px 40px rgba(0,0,0,0.35);
  width: calc(100% - 32px);
  max-width: 1120px;
  align-self: center;
  display: flex;
  flex-direction: column;
  min-height: 280px;
  max-height: none;
}
.chs-roster-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
  margin-bottom: 12px;
}
.chs-roster-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; flex: 1 1 auto; min-width: 0;
}
.chs-roster-head h2 {
  margin: 0; font-size: 16px; font-weight: 600;
  color: var(--torch, #a87dff); letter-spacing: 0.04em;
}
.chs-roster .chs-sort { margin-bottom: 0; }
.chs-roster .chs-search {
  flex: 1 1 220px;
  width: auto;
  min-width: 180px;
  max-width: 360px;
  margin-bottom: 0;
  padding: 10px 14px;
  font-size: 14px;
}
.chs-cols--dual { display: none; }
.chs-cols--single { display: grid; }
.chs-roster .chs-roster-list,
.chs-roster #chs-list {
  flex: 1 1 auto;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  min-height: 200px;
  max-height: min(56vh, 560px);
  padding-right: 4px;
  /* Quiet scrollbar — no bright OS chrome */
  scrollbar-width: thin;
  scrollbar-color: rgba(143,97,255,0.35) transparent;
}
.chs-roster .chs-roster-list::-webkit-scrollbar,
.chs-roster #chs-list::-webkit-scrollbar {
  width: 8px;
}
.chs-roster .chs-roster-list::-webkit-scrollbar-track,
.chs-roster #chs-list::-webkit-scrollbar-track {
  background: transparent;
}
.chs-roster .chs-roster-list::-webkit-scrollbar-thumb,
.chs-roster #chs-list::-webkit-scrollbar-thumb {
  background: rgba(143,97,255,0.28);
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
.chs-roster .chs-roster-list::-webkit-scrollbar-thumb:hover,
.chs-roster #chs-list::-webkit-scrollbar-thumb:hover {
  background: rgba(143,97,255,0.48);
  background-clip: padding-box;
}
.chs-roster .chs-row {
  padding: 10px 10px;
  border-radius: 14px;
}
.chs-roster .chs-who img {
  width: 40px; height: 40px;
  border: 1px solid rgba(143,97,255,0.25);
}
.chs-roster .chs-who span { font-size: 14px; }
.chs-roster .chs-bagcell,
.chs-roster .chs-heatcell { font-size: 13px; }

@media (min-width: 900px) {
  .chs-roster {
    width: calc(100% - 48px);
    padding: 18px 22px 14px;
    min-height: 360px;
  }
  .chs-roster-toolbar {
    flex-wrap: nowrap;
  }
  .chs-roster .chs-search {
    flex: 0 1 280px;
    max-width: 320px;
  }
  .chs-cols--single { display: none; }
  .chs-cols--dual {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 24px;
    margin-bottom: 6px;
  }
  .chs-cols--dual .chs-cols-pane {
    display: grid;
    grid-template-columns: 1fr 110px 80px;
    gap: 8px;
    padding: 0 10px 6px;
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--parchment-mute, #9a9588);
  }
  .chs-roster .chs-roster-list,
  .chs-roster #chs-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2px 24px;
    align-content: start;
    max-height: min(62vh, 680px);
    min-height: 320px;
  }
  .chs-roster .chs-row {
    grid-template-columns: 1fr 110px 80px;
    padding: 11px 10px;
  }
  .chs-roster .chs-who img { width: 44px; height: 44px; }
  .chs-roster .chs-who span { font-size: 15px; }
  .chs-verbs {
    max-width: 560px;
  }
}

@media (min-width: 1200px) {
  .chs-roster { max-width: 1200px; }
}


/* Cap hit banner on Mark / Boost sheets (c100-30) */
.sheet-cap-warn {
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid rgba(143, 97, 255, 0.45);
  background: rgba(143, 97, 255, 0.12);
  color: #f2efe6;
  font-size: 13px;
  line-height: 1.35;
}
.sheet-cap-warn strong { color: #a87dff; }
.sheet .btn-primary:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}


/* Home · Season 0 cold-open (c100-34) — Chamber owns Mark/Cheer */
.ff-tonight-strip--lean {
  grid-template-columns: repeat(3, 1fr);
}
.ff-cta-secondary {
  display: block;
  width: 100%;
  margin: 10px 0 0;
  padding: 12px 16px;
  border-radius: 14px;
  border: 1px solid rgba(242,239,230,0.14);
  background: transparent;
  color: var(--parchment-mute, #9a9588);
  font: inherit;
  font-size: 14px;
  cursor: pointer;
  text-align: center;
}
.ff-cta-secondary:disabled { opacity: 0.4; cursor: default; }
.ff-cta-secondary:hover:not(:disabled) {
  border-color: rgba(143,97,255,0.35);
  color: var(--parchment, #f2efe6);
}
.ff-seat-actions {
  margin: 22px 0 8px;
  padding: 14px 14px 12px;
  border-radius: 14px;
  border: 1px solid rgba(242,239,230,0.08);
  background: rgba(10,8,18,0.35);
}
.ff-seat-actions-label {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--parchment-mute, #9a9588);
  margin-bottom: 10px;
}
.ff-seat-actions-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.ff-seat-btn {
  flex: 1 1 0;
  min-width: 88px;
  padding: 11px 12px;
  border-radius: 12px;
  border: 1px solid rgba(242,239,230,0.12);
  background: rgba(16,12,28,0.55);
  color: var(--parchment, #f2efe6);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
}
.ff-seat-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.ff-seat-btn:hover:not(:disabled) {
  border-color: rgba(143,97,255,0.4);
  color: var(--torch, #a87dff);
}

/* Seat action hover tips (c100-49) */
.ff-seat-btn {
  position: relative;
}
@media (hover: hover) and (pointer: fine) {
  .ff-seat-btn[data-tip]::after {
    content: attr(data-tip);
    position: absolute;
    left: 50%;
    bottom: calc(100% + 8px);
    transform: translateX(-50%) translateY(4px);
    width: max(180px, 100%);
    max-width: 240px;
    padding: 8px 10px;
    border-radius: 10px;
    border: 1px solid rgba(143,97,255,0.35);
    background: rgba(12, 10, 8, 0.96);
    color: var(--parchment, #f2efe6);
    font-size: 11px;
    line-height: 1.35;
    letter-spacing: 0.01em;
    text-align: left;
    text-transform: none;
    white-space: normal;
    opacity: 0;
    pointer-events: none;
    z-index: 40;
    box-shadow: 0 8px 24px rgba(0,0,0,0.45);
    transition: opacity 0.12s ease, transform 0.12s ease;
  }
  .ff-seat-btn[data-tip]::before {
    content: '';
    position: absolute;
    left: 50%;
    bottom: calc(100% + 2px);
    transform: translateX(-50%);
    border: 6px solid transparent;
    border-top-color: rgba(143,97,255,0.35);
    opacity: 0;
    pointer-events: none;
    z-index: 41;
    transition: opacity 0.12s ease;
  }
  .ff-seat-btn[data-tip]:hover::after,
  .ff-seat-btn[data-tip]:focus-visible::after {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
  .ff-seat-btn[data-tip]:hover::before,
  .ff-seat-btn[data-tip]:focus-visible::before {
    opacity: 1;
  }
}


/* Home hero poster — Rosaaa / heat-lead spotlight (c100-35) */
.ff-hero-poster {
  display: block;
  width: 100%;
  margin: 6px 0 12px;
  padding: 0;
  border: 1px solid rgba(242,239,230,0.1);
  border-radius: 16px;
  overflow: hidden;
  text-align: center;
  color: inherit;
  font: inherit;
  background:
    radial-gradient(ellipse 70% 55% at 50% 18%, rgba(143,97,255,0.18) 0%, transparent 55%),
    radial-gradient(ellipse at 50% 70%, #16102a 0%, #0a0714 75%);
  box-shadow: 0 10px 28px rgba(0,0,0,0.4);
}
.ff-hero-poster:hover {
  border-color: rgba(143,97,255,0.35);
}
.ff-hero-stage {
  position: relative;
  height: 148px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  overflow: hidden;
  padding: 0 48px;
}
.ff-hero-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-60%);
  z-index: 4;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid rgba(242,239,230,0.18);
  background: rgba(10,8,18,0.65);
  color: var(--parchment, #f2efe6);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(6px);
}
.ff-hero-nav:hover {
  border-color: rgba(143,97,255,0.55);
  color: var(--torch, #a87dff);
  background: rgba(143,97,255,0.1);
}
.ff-hero-nav--prev { left: 12px; }
.ff-hero-nav--next { right: 12px; }
.ff-hero-cta-btn {
  display: inline-block;
  border: 0;
  background: none;
  padding: 0;
  margin: 0;
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--torch, #a87dff);
  letter-spacing: 0.02em;
  cursor: pointer;
}
.ff-hero-cta-btn:hover { text-decoration: underline; text-underline-offset: 3px; }
.ff-hero-who[data-kind="wallet"] {
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  color: rgba(242,239,230,0.85);
}
.ff-hero-beam {
  position: absolute;
  top: -28px;
  left: 50%;
  width: 150px;
  height: 180px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, rgba(203, 182, 255,0.35) 0%, rgba(143,97,255,0.08) 45%, transparent 100%);
  clip-path: polygon(38% 0, 62% 0, 92% 100%, 8% 100%);
  pointer-events: none;
  filter: blur(0.5px);
}
.ff-hero-floor {
  position: absolute;
  left: 50%;
  bottom: 18px;
  width: 160px;
  height: 28px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(143,97,255,0.35) 0%, transparent 70%);
  filter: blur(4px);
  pointer-events: none;
}
.ff-hero-face {
  position: relative;
  z-index: 2;
  width: 88px;
  height: 88px;
  margin-bottom: 18px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid rgba(203, 182, 255,0.55);
  box-shadow:
    0 0 0 4px rgba(143,97,255,0.12),
    0 8px 24px rgba(0,0,0,0.55),
    0 0 28px rgba(143,97,255,0.22);
}
.ff-hero-copy {
  position: relative;
  z-index: 3;
  padding: 0 16px 14px;
  text-align: center;
}
.ff-hero-kicker {
  margin: 0 0 8px;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--torch, #a87dff);
}
.ff-hero-line {
  margin: 0 0 6px;
  font-size: clamp(16px, 3.6vw, 20px);
  font-weight: 600;
  line-height: 1.25;
  color: var(--parchment, #f2efe6);
  letter-spacing: -0.01em;
  text-wrap: balance;
}
.ff-hero-meta {
  margin: 0 0 14px;
  font-size: 13px;
  color: var(--parchment-mute, #9a9588);
}
.ff-hero-who { color: var(--torch, #a87dff); }
.ff-hero-bag {
  color: var(--parchment, #f2efe6);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}
.ff-hero-cta {
  display: inline-block;
  font-size: 14px;
  font-weight: 600;
  color: var(--torch, #a87dff);
  letter-spacing: 0.02em;
}
@media (min-width: 800px) {
  .ff-hero-stage { height: 168px; }
  .ff-hero-face { width: 104px; height: 104px; margin-bottom: 22px; }
  .ff-hero-beam { width: 180px; height: 210px; top: -36px; }
  .ff-hero-copy { padding: 0 24px 16px; }
}


/* Home lean layout c100-37 */
.ff-page-top--lean {
  padding-bottom: 8px;
}
.ff-page-top--lean .ff-home-clock {
  margin-top: 10px;
  text-align: center;
}
.ff-page-top--lean .countdown {
  font-size: 28px;
  margin-top: 4px;
}
.ff-page-top--lean .countdown-label {
  margin-top: 0;
  font-size: 12px;
}
.ff-body--home {
  padding-top: 4px;
}
.ff-you-card--compact {
  padding: 12px 14px;
  margin-bottom: 12px;
  gap: 12px;
}
.ff-you-card--compact .ff-you-face,
.ff-you-card--compact .face-disc {
  width: 48px;
  height: 48px;
}
.ff-body--home .ff-seat-actions {
  margin-top: 14px;
}
.ff-body--home .ff-cta-secondary {
  margin-top: 12px;
}
.ff-hero-nav {
  width: 34px;
  height: 34px;
  font-size: 18px;
}
.ff-hero-meta { font-size: 12px; margin-bottom: 10px; }
.ff-hero-kicker { margin-bottom: 4px; font-size: 10px; }


/* Home status rail — you + tonight merged (c100-38) */
.ff-status-rail {
  margin: 4px 0 14px;
  padding: 12px 14px 10px;
  border-radius: 14px;
  border: 1px solid rgba(242,239,230,0.1);
  background: rgba(10,8,18,0.45);
}
.ff-status-you {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  min-width: 0;
}
.ff-status-face,
.ff-status-you .face-disc,
.ff-status-you img {
  width: 44px !important;
  height: 44px !important;
  flex-shrink: 0;
}
.ff-status-you-meta { min-width: 0; flex: 1; }
.ff-status-handle {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 14px;
  color: var(--torch, #a87dff);
  font-weight: 600;
}
.ff-status-seat {
  margin-top: 2px;
  font-size: 12px;
  color: var(--parchment-mute, #9a9588);
}
.ff-status-pill {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 2px 7px;
  border-radius: 999px;
  border: 1px solid rgba(143,97,255,0.35);
  color: var(--torch, #a87dff);
  background: rgba(143,97,255,0.08);
}
.ff-status-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.ff-status-metric {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  padding: 8px 8px;
  border-radius: 10px;
  background: rgba(0,0,0,0.22);
}
.ff-status-metric .k {
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--parchment-mute, #9a9588);
}
.ff-status-metric .v {
  font-size: 14px;
  font-variant-numeric: tabular-nums;
  color: var(--parchment, #f2efe6);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ff-status-metric--pot .v { color: var(--torch, #a87dff); font-weight: 600; }
.ff-status-stakes {
  margin: 10px 0 0;
  text-align: center;
  font-size: 12px;
  color: rgba(143,97,255,0.9);
  letter-spacing: 0.02em;
}
.ff-status-empty {
  margin: 0 0 10px;
  color: var(--parchment-mute, #9a9588);
  font-size: 13px;
}
@media (max-width: 520px) {
  .ff-status-metrics { grid-template-columns: repeat(2, 1fr); }
}


/* Overflow theater (c100-43) — solid bag glyph; pulse only (no empty fill bar) */
.chs-bag-heat {
  position: absolute;
  left: 50%;
  bottom: -2px;
  transform: translateX(-50%);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #cbb6ff;
  text-shadow: 0 1px 3px rgba(0,0,0,0.8);
  pointer-events: none;
}
.chs-last-bag.is-overflow {
  animation: chs-bag-overflow 1.1s ease-in-out infinite;
}
.chs-last-bag.is-overflow-hot {
  filter: drop-shadow(0 0 16px rgba(255,140,60,0.95)) drop-shadow(0 4px 14px rgba(0,0,0,0.55));
}
.chs-last-bag.is-overflow-critical {
  animation: chs-bag-critical 0.55s ease-in-out infinite;
  filter: drop-shadow(0 0 22px rgba(255,80,40,1)) drop-shadow(0 0 8px rgba(255,200,80,0.8));
}
@keyframes chs-bag-overflow {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-4px) scale(1.04); }
}
@keyframes chs-bag-critical {
  0%, 100% { transform: translateY(0) scale(1) rotate(0deg); }
  25% { transform: translateY(-5px) scale(1.06) rotate(-2deg); }
  75% { transform: translateY(-2px) scale(1.04) rotate(2deg); }
}
.chs-seat-card.is-overflow::after {
  content: '';
  position: absolute;
  left: 10%;
  right: 10%;
  bottom: 4%;
  height: 18%;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(255,120,60,0.35) 0%, transparent 70%);
  pointer-events: none;
  z-index: 1;
  animation: chs-overflow-glow 1.4s ease-in-out infinite;
}
.chs-seat-card.is-overflow-critical::after {
  background: radial-gradient(ellipse, rgba(255,80,40,0.55) 0%, transparent 70%);
  height: 26%;
}
@keyframes chs-overflow-glow {
  0%, 100% { opacity: 0.55; transform: scaleX(1); }
  50% { opacity: 1; transform: scaleX(1.08); }
}


/* Demo-only reaping control (c100-46) */
.ff-demo-reap {
  margin-top: 12px;
  padding: 10px 12px 12px;
  border-radius: 14px;
  border: 1px dashed rgba(143, 97, 255, 0.35);
  background: rgba(143, 97, 255, 0.06);
}
.ff-demo-reap .ff-cta-secondary,
.ff-demo-reap .ff-chamber-link {
  margin-top: 0;
  width: 100%;
  opacity: 0.72;
  border-style: dashed;
  background: rgba(8, 8, 10, 0.35);
  color: rgba(242, 239, 230, 0.7);
}
.ff-demo-reap .ff-cta-secondary:hover:not(:disabled),
.ff-demo-reap .ff-chamber-link:hover:not(:disabled) {
  opacity: 0.9;
  border-color: rgba(143, 97, 255, 0.45);
  color: var(--parchment, #f2efe6);
}
.ff-cta-demo::before {
  content: "DEMO";
  display: inline-block;
  margin-right: 8px;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  vertical-align: middle;
  color: #1a1208;
  background: rgba(143, 97, 255, 0.85);
}
.ff-demo-disclaimer {
  margin: 8px 2px 0;
  font-size: 11px;
  line-height: 1.35;
  color: rgba(143, 97, 255, 0.85);
  text-align: center;
}


/* c100-54 — Player block, memorial Marked/Cheered, chamber LT inbound */
.ff-player-block {
  padding-top: 4px;
  border-top: 1px solid rgba(110, 98, 84, 0.28);
}
.ff-inbound {
  margin-top: 6px;
}
.ff-inbound .kv-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-size: 12px;
  line-height: 1.35;
}
.ff-inbound .k {
  color: #6e6254;
  flex: 0 0 auto;
}
.ff-inbound .v {
  text-align: right;
  color: var(--parchment, #e8dcc8);
  font-weight: 600;
}
.ff-mem-marked,
.ff-mem-cheered {
  margin-top: 4px;
  font-size: 11.5px;
  line-height: 1.35;
  color: #c4b49a;
}
.ff-mem-marked {
  color: #d4a08a;
}
.ff-mem-cheered {
  color: #9bb89a;
}
.chs-lt-marked,
.chs-lt-cheered {
  margin: 2px 0 0;
  font-size: 11px;
  line-height: 1.3;
  color: rgba(232, 220, 200, 0.82);
  max-width: 22rem;
}
.chs-lt-marked {
  color: rgba(232, 168, 140, 0.9);
}
.chs-lt-cheered {
  color: rgba(160, 210, 170, 0.9);
}
/* Reaping demo CTA retired from Fallen (c100-54) — keep rule inert if leftover markup */
.ff-fallen-demo { display: none !important; }

/* Home: Player under hero = YOU rail + Your seat tools (c100-56) */
.ff-body--home .ff-player-block--home {
  margin: 10px 0 14px;
  padding: 12px 12px 10px;
  border-radius: 16px;
  border: 1px solid rgba(242,239,230,0.08);
  background: rgba(10,8,18,0.28);
}
.ff-body--home .ff-player-head {
  margin-bottom: 8px;
}
.ff-body--home .ff-player-block--home .ff-status-rail {
  margin: 0 0 10px;
  border: none;
  background: transparent;
  padding: 0;
}
.ff-body--home .ff-player-block--home .ff-seat-actions {
  margin-top: 0;
  margin-bottom: 0;
}

/* Chamber bag footnote (c100-59) */
.chs-lt-bag-note {
  margin: 2px 0 0;
  font-size: 10px;
  line-height: 1.35;
  color: var(--parchment-mute, #9a9588);
  text-shadow: 0 1px 8px rgba(0,0,0,0.7);
}
.chs-bag-footnote {
  margin: 4px 0 8px;
  padding: 0 2px;
  font-size: 10px;
  color: var(--parchment-mute, #9a9588);
}

/* Give-back % on Chamber stage / Cast (c100-61) */
.chs-lt-giveback {
  margin: 2px 0 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--torch, #a87dff);
  text-shadow: 0 1px 10px rgba(0,0,0,0.75);
}
.chs-bagcell .chs-gb {
  display: block;
  font-size: 10px;
  font-weight: 500;
  color: var(--parchment-mute, #9a9588);
  margin-top: 2px;
}

/* c100-70 · narrow viewport containment (desktop layout unchanged) */
@media (max-width: 899px) {
  html, body { overflow-x: clip; }
}
@media (max-width: 480px) {
  .pretend-badge {
    gap: 6px;
    padding-inline: 10px;
    font-size: 9px;
    letter-spacing: 0.08em;
    white-space: nowrap;
  }
  .pretend-badge > span { white-space: nowrap; }
  .you-tabs { gap: 2px; }
  .you-tab {
    padding-inline: 9px;
    font-size: 11px;
  }
}
