/* Extracted verbatim from the design prototype (docs/prototype.html).
   Edit here, not there: the prototype is a frozen reference.

   Every section below is a dashed banner comment, and the names here are the
   banner text verbatim, so searching one jumps straight to its block. Order is
   load-bearing: later rules win ties against equal specificity, so add to the
   end of a section rather than resorting the file. Breakpoints sit next to the
   rules they override rather than collecting at the bottom, so a section can be
   read without scrolling away.

   FOUNDATIONS
     Design tokens
     Base elements and page background
   CHROME
     Top nav bar (2009-style app tabs, not a sidebar)
     Mobile top bar + bottom nav
     Main content
     Cards / Plain sections
   HOME
     Impact numbers and weekly feed
   CONTROLS
     Buttons
     CSV dropzone (roster import)
     Section headers
     Legend
   PICKS
     Pick card (contestant summary row)
     Contestant grid
     Single-pick selection
     Pick history table (participant drill-down)
     Picks grid (participants x episodes)
   STANDINGS
     Standings
     Pool history page
     Trophies and toasts
   TORCH TALK
     Torch Talk (blog)
     Reactions & GIF comments
     Caption stickers
     Comments and composer
     Torch Talk post typography
     Webring badge
   ADMIN
     Admin
     Admin: contestant editor
     Admin: advantage editor
     Commissioner tools
     Sign-in
     Settings (season stepper, autosave, cards)
     Admin: start a season
     Finale
     Rehearsal
   OTHER
     Additions beyond the prototype */

  /* ---------- Design tokens ---------- */
  :root{
    --surface-0:#0b1219;
    --surface-1:#0f1a22;
    --surface-2:#111c25;
    --surface-3:#16242e;
    --surface-nav:#22303a;
    --line-1:#1f2f3a;
    --line-2:#2c4250;
    --text-1:#f2ede0;
    --text-2:#c7c1b3;
    --text-3:#8fa0aa;
    --gold:#d8a441;
    --gold-tint:rgba(216,164,65,.16);
    --rust:#d0603c;
    --rust-tint:rgba(208,96,60,.18);
    --teal:#4fb08a;
    --teal-tint:rgba(79,176,138,.16);
    --ember:#e08a3f;
    --s51-depth:#0a2233;
    --s51-shallow:#1f6f7a;
    --s51-bone:#e9e2d0;
    --s51-tribe-yellow:#d9b13a;
    --s51-tribe-purple:#7d5bb0;
    --s51-tribe-teal:#2a8f9c;
    --viz-stars:#8a9aa6;
    --viz-out:#a1533b;

    /* Admin — warm charcoal, so the commissioner can tell they are backstage. */
    --surface-admin-1:#1a1610;
    --surface-admin-0:#100e0a;
    --surface-admin-2:#221c14;
    --surface-admin-3:#2c2419;
    --surface-admin-nav:#2b241a;
    --line-admin-1:#33291d;
    --line-admin-2:#4a3c2b;
    --input-bg:#14110c;
    --input-border:#4a3c2b;
    --table-head:#8fa0aa;
    --table-stripe:rgba(255,255,255,.025);
    --badge-active:#3a9c6c;
    --badge-out:#5a3a30;
    --manual:#d8a441;
    --sync-ok:#1f6f7a;
    --toast-bg:#1c2f3a;

    --font-display:Cinzel, Georgia, serif;
    --font-body:"Source Sans 3", "Segoe UI", Arial, sans-serif;
    --font-mono:"Source Code Pro", "Courier Prime", ui-monospace, monospace;
    --r-card:12px;
    --r-sm:6px;
    --r-pill:999px;
    --shadow-card:0 6px 18px rgba(0,0,0,.35);
    --gloss:inset 0 1px 0 rgba(255,255,255,.06);

    --bg:var(--surface-0);
    --bg-elev:var(--surface-2);
    --bg-elev-2:var(--surface-3);
    --border:var(--line-2);
    --border-soft:var(--line-1);
    --text:var(--text-1);
    --text-dim:var(--text-2);
    --text-faint:var(--text-3);
    --gold-soft:var(--gold-tint);
    --gold-line:rgba(216,164,65,.55);
    --gold-ink:#2b1a05;
    --focus-ring:#4bc4dd;
    --focus:#4bc4dd;
    --green:var(--teal);
    --green-soft:var(--teal-tint);
    --rust-soft:var(--rust-tint);
    --blue:var(--s51-shallow);
    --blue-soft:rgba(31,111,122,.2);
    --tribe-a:var(--s51-tribe-yellow);
    --tribe-b:var(--s51-tribe-purple);
    --tribe-c:var(--s51-tribe-teal);
    --radius-card:var(--r-card);
    --radius-pill:var(--r-pill);
    --radius-sm:var(--r-sm);
    --shadow-drop:var(--shadow-card);
    --shadow-drop-lg:var(--shadow-card);
    --gloss-top:rgba(255,255,255,.06);
  }
  /* ---------- Base elements and page background ---------- */
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;background:var(--surface-0);color:var(--text-1);}
  html{overflow-x:clip;}
  body.admin{overflow-x:clip;max-width:100%;}
  body{
    font-family:var(--font-body);
    font-size:15px;
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
    position:relative;
    isolation:isolate;
  }
  body::before{
    content:'';
    position:fixed;
    inset:0;
    z-index:-2;
    background:linear-gradient(180deg, var(--surface-1) 0%, var(--surface-0) 100%);
    pointer-events:none;
  }
  body.admin{
    --surface-0:var(--surface-admin-0);
    --surface-1:var(--surface-admin-1);
    --surface-2:var(--surface-admin-2);
    --surface-3:var(--surface-admin-3);
    --surface-nav:var(--surface-admin-nav);
    --line-1:var(--line-admin-1);
    --line-2:var(--line-admin-2);
    --bg:var(--surface-admin-0);
    --bg-elev:var(--surface-admin-2);
    --bg-elev-2:var(--surface-admin-3);
    --border:var(--line-admin-2);
    --border-soft:var(--line-admin-1);
  }
  body.admin::before{
    background:linear-gradient(180deg, var(--surface-admin-1) 0%, var(--surface-admin-0) 100%);
  }
  body::after{
    content:'';
    position:fixed;
    inset:0;
    z-index:-1;
    pointer-events:none;
    background-image:url("/tribal-pattern.png");
    background-repeat:repeat;
    background-position:center top;
    background-size:320px 320px;
    opacity:.14;
    filter:invert(1);
    mix-blend-mode:soft-light;
  }
  a{color:inherit;}
  button{font-family:inherit;}

  /* ---------- Top nav bar (2009-style app tabs, not a sidebar) ---------- */
  .topbar{
    background:var(--surface-nav);
    border-bottom:1px solid var(--line-2);
    box-shadow:var(--shadow-card);
    position:sticky;
    top:0;
    z-index:20;
  }
  @media (max-width:900px){ .topbar{display:none;} }
  .topbar-inner{
    max-width:1040px;
    margin:0 auto;
    padding:16px 28px 0;
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:14px;
  }
  .brand{
    display:flex;
    align-items:baseline;
    gap:9px;
    padding-bottom:14px;
  }
  .brand-mark{
    font-family:var(--font-display);
    font-weight:700;
    font-size:19px;
    letter-spacing:0.06em;
    color:#fff;
    text-shadow:0 1px 0 rgba(0,0,0,0.6);
    white-space:nowrap;
    text-decoration:none;
  }
  .brand-mark:hover{color:var(--gold);}
  .brand-sub{
    color:rgba(255,255,255,0.55);
    font-size:12px;
    font-family:var(--font-mono);
    white-space:nowrap;
  }
  .nav-list{
    list-style:none;
    margin:0;padding:0;
    display:flex;
    flex-wrap:wrap;
    gap:3px;
  }
  .nav-item{
    padding:9px 18px;
    border-radius:6px 6px 0 0;
    color:rgba(255,255,255,0.65);
    cursor:pointer;
    font-size:14px;
    font-weight:bold;
    white-space:nowrap;
    text-shadow:0 -1px 0 rgba(0,0,0,0.4);
    border:1px solid transparent;
    border-bottom:none;
  }
  .nav-item:hover{color:#fff;background:rgba(255,255,255,0.06);}
  .nav-item.active{
    background:linear-gradient(180deg, var(--surface-2) 0%, var(--surface-1) 100%);
    color:var(--text-1);
    border-color:var(--line-2);
    box-shadow:var(--gloss);
  }

  .proto-bar{
    background:var(--bg-elev-2);
    border-bottom:1px solid var(--border);
    padding:8px 28px;
    font-size:11.5px;
    color:var(--text-faint);
    display:flex;
    align-items:center;
    gap:16px;
    flex-wrap:wrap;
  }
  @media (max-width:900px){ .proto-bar{display:none;} }
  .proto-bar label{margin-right:5px;}
  .proto-bar select{
    background:var(--bg-elev);
    color:var(--text);
    border:1px solid var(--border);
    border-radius:4px;
    padding:3px 6px;
    font-size:11.5px;
    font-family:var(--font-body);
  }

  /* ---------- Mobile top bar + bottom nav ---------- */
  .mobile-topbar{
    display:none;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:14px 16px;
    border-bottom:1px solid var(--border-soft);
    position:sticky;
    top:0;
    background:var(--bg);
    z-index:20;
  }
  .mobile-topbar > div:first-child{min-width:0;flex:1;}
  @media (max-width:900px){ .mobile-topbar{display:flex;} }
  .mobile-brand{font-family:var(--font-display);font-weight:700;font-size:16px;letter-spacing:0.08em;min-width:0;}
  .mobile-brand a{color:inherit;text-decoration:none;}
  .mobile-brand a:hover{color:var(--gold);}
  .mobile-sub{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);}
  .admin-nav-collapse{
    position:relative;
    min-width:0;
  }
  .admin-nav-collapse > summary{
    list-style:none;
    cursor:pointer;
  }
  .admin-nav-collapse > summary::-webkit-details-marker,
  .admin-nav-collapse > summary::marker{display:none;content:"";}
  .admin-nav-toggle{
    display:inline-flex;
    align-items:center;
    gap:7px;
    padding:7px 10px;
    border:1px solid var(--line-admin-2);
    border-radius:8px;
    background:var(--surface-admin-3);
    color:var(--text-1);
    font:700 12px var(--font-body);
    letter-spacing:.04em;
    text-transform:uppercase;
  }
  .admin-nav-toggle svg{width:18px;height:18px;flex-shrink:0;}
  .admin-nav-toggle:hover,
  .admin-nav-collapse[open] > .admin-nav-toggle{border-color:var(--gold-line);color:var(--gold);}
  .admin-topbar nav{align-self:flex-end;min-width:0;max-width:100%;}
  .admin-nav-drawer{
    display:flex;
    flex-direction:column;
    gap:2px;
    padding:8px;
    background:var(--surface-admin-3);
    border:1px solid var(--line-admin-1);
    box-shadow:var(--shadow-card);
  }
  .admin-nav-link{
    display:flex;
    align-items:center;
    gap:10px;
    padding:10px 12px;
    border-radius:8px;
    color:var(--text-2);
    text-decoration:none;
    font-size:14px;
    font-weight:600;
  }
  .admin-nav-link svg{width:18px;height:18px;flex-shrink:0;}
  .admin-nav-link:hover{background:rgba(255,255,255,.06);color:#fff;}
  .admin-nav-link.active{background:var(--gold-soft);color:var(--gold);}
  .mobile-topbar .admin-nav-collapse{position:static;}
  .mobile-topbar .admin-nav-drawer{
    position:absolute;
    left:0;
    right:0;
    top:100%;
    z-index:25;
    border-radius:0 0 10px 10px;
    max-height:min(70vh, 520px);
    overflow:auto;
  }

  .bottom-nav{
    display:none;
    position:fixed;
    bottom:0;left:0;right:0;
    background:var(--bg-elev);
    border-top:1px solid var(--border);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));
    z-index:30;
  }
  @media (max-width:900px){
    .bottom-nav{display:grid; grid-template-columns:repeat(6,1fr);}
  }
  .bottom-nav-item{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:3px;
    padding:8px 2px;
    color:var(--text-faint);
    font-size:10px;
    font-weight:500;
    border-radius:8px;
  }
  .bottom-nav-item svg{width:18px;height:18px;}
  .bottom-nav-item.active{color:var(--gold);}

  /* ---------- Main content ---------- */
  .main{
    padding:32px 28px 60px;
    max-width:1040px;
    width:100%;
    margin:0 auto;
  }
  @media (max-width:900px){
    .main{padding:20px 16px 90px;}
  }
  .page-header{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    margin-bottom:14px;
    flex-wrap:wrap;
    gap:8px;
  }
  .header-rule{
    height:2px;
    margin:0 0 22px;
    border-radius:2px;
    background:linear-gradient(90deg, var(--gold) 0%, var(--s51-shallow) 40%, var(--line-2) 70%, transparent 100%);
  }
  .page-title{
    font-family:var(--font-display);
    font-size:34px;
    font-weight:600;
    font-variant:small-caps;
    letter-spacing:0.01em;
    line-height:1.1;
    margin:0;
  }
  .page-meta{
    font-family:var(--font-mono);
    font-size:12px;
    color:var(--text-faint);
  }
  .page-sub{
    color:var(--text-dim);
    font-size:14px;
    margin:-14px 0 20px;
  }

  .content-grid{
    display:grid;
    grid-template-columns:2fr 1fr;
    gap:40px;
    align-items:start;
  }
  @media (max-width:760px){
    .content-grid{grid-template-columns:1fr;}
    .camp-latest{order:-1;}
  }

  .stack{display:flex;flex-direction:column;gap:40px;}

  /* ---------- Cards (used sparingly — only for the hero banner and
     interactive form controls that need a visible boundary) ---------- */
  .card{
    background:var(--surface-2);
    border:1px solid var(--line-2);
    border-radius:var(--radius-card);
    padding:20px 24px;
    box-shadow:var(--shadow-card), var(--gloss);
  }

  /* ---------- Plain sections (no box) — the default for content that
     doesn't need to look like a widget. A hairline divider appears
     automatically between consecutive sections in the same stack. ---------- */
  .section{}
  .stack > .section + .section{
    border-top:1px solid var(--line-1);
    padding-top:40px;
  }

  .stars-row{
    display:flex;
    align-items:center;
    gap:8px;
  }
  .stars-icons{color:var(--gold);letter-spacing:2px;font-size:18px;}
  .stars-icons .dim{color:var(--border);}
  .stars-count-label{font-size:14px;color:var(--text-dim);}
  .stars-count-label b{color:var(--text);font-weight:600;}
  .episode-event{
    font-size:14.5px;color:var(--text);display:flex;align-items:center;gap:8px;line-height:1.35;
  }
  .episode-event .mark{flex-shrink:0;}

  .stake-row{display:flex;align-items:center;gap:10px;margin-bottom:9px;}
  .stake-row:last-child{margin-bottom:0;}
  .stake-name{width:110px;flex-shrink:0;font-size:13px;font-weight:bold;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px;}
  .stake-bar-track{
    flex:1;height:20px;border-radius:4px;overflow:hidden;
    display:flex;
    background:var(--surface-3);border:1px solid #0a1116;
  }
  .stake-bar-fill{
    height:100%;
    flex-shrink:0;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.25);
  }
  .stake-bar-share{
    background:var(--gold);
  }
  .stake-n-share{color:var(--gold);font-family:var(--font-mono);font-weight:700;}
  .stake-n-count{color:var(--text-faint);font-size:11px;margin-left:6px;}
  .pick-share-block{margin:16px 0 20px;}
  .available-to{
    display:block;
    font-size:11.5px;
    color:var(--text-dim);
    font-weight:600;
  }
  .share-spark{
    display:flex;
    align-items:flex-end;
    gap:2px;
    height:18px;
  }
  .share-spark-bar{
    width:6px;
    background:var(--gold);
    border-radius:1px;
    min-height:2px;
  }
  .stake-pct{
    min-width:72px;
    flex-shrink:0;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    gap:1px;
    text-align:right;
    font-family:var(--font-mono);
    font-size:13px;
    font-weight:700;
    line-height:1.25;
    color:var(--text-1);
  }

  /* ---------- Impact numbers and weekly feed ---------- */
  .impact-feed{margin-top:4px;}
  .impact-feed-list{
    list-style:none;
    margin:0;
    padding:0;
    position:relative;
  }
  .impact-feed-list::before{
    content:"";
    position:absolute;
    left:4px;
    top:8px;
    bottom:8px;
    width:2px;
    background:var(--border);
  }
  .impact-feed-item{
    position:relative;
    padding:0 0 22px 22px;
  }
  .impact-feed-item:last-child{padding-bottom:0;}
  .impact-feed-item::before{
    content:"";
    position:absolute;
    left:0;
    top:6px;
    width:10px;
    height:10px;
    border-radius:50%;
    background:var(--gold);
    box-shadow:0 0 0 3px var(--bg);
  }
  .impact-feed-week{
    font-size:11px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--text-faint);
    margin:0 0 8px;
  }
  .impact-feed-events{display:flex;flex-direction:column;gap:6px;}
  .impact-feed-quiet{margin:0;font-size:13.5px;color:var(--text-dim);}
  .impact-feed-stats{
    margin:10px 0 0;
    font-size:13px;
    color:var(--text-dim);
    line-height:1.45;
  }
  .impact-feed-stats strong{
    font-family:var(--font-display);
    font-size:15px;
    font-weight:bold;
    color:var(--gold);
    text-shadow:0 1px 0 rgba(0,0,0,0.45);
  }
  .impact-feed-item .name-link{display:inline-block;margin-top:8px;font-size:13px;}

  /* ---------- Buttons ---------- */
  .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    padding:10px 16px;
    border-radius:var(--radius-sm);
    border:1.5px solid transparent;
    font:bold 13.5px/1 var(--font-body);
    white-space:nowrap;
    cursor:pointer;
    background:transparent;
    color:var(--text);
    text-decoration:none;
    box-shadow:none;
    text-shadow:none;
    transition:background-color .12s ease, border-color .12s ease, color .12s ease;
  }
  .btn:focus-visible{
    outline:2px solid var(--focus-ring);
    outline-offset:2px;
  }
  .btn:disabled,
  .btn.is-loading{
    opacity:0.4;
    cursor:not-allowed;
  }
  .btn.is-loading{cursor:progress;}
  .btn-primary{
    color:var(--gold);
    border-color:var(--gold);
  }
  .btn-primary:hover:not(:disabled){
    background:var(--gold-soft);
  }
  .btn-primary:active:not(:disabled){
    background:var(--gold);
    color:var(--gold-ink);
  }
  .btn-secondary{
    color:var(--text);
    border-color:var(--border);
  }
  .btn-secondary:hover:not(:disabled){
    border-color:var(--text-faint);
    background:rgba(255,255,255,0.04);
  }
  .btn-secondary:active:not(:disabled){
    background:var(--bg-elev-2);
  }
  .btn-ghost{
    color:var(--text-dim);
    border:1.5px dashed var(--border);
  }
  .btn-ghost:hover:not(:disabled){
    color:var(--text);
    border-style:solid;
  }
  .btn-ghost:active:not(:disabled){
    background:rgba(255,255,255,0.06);
  }
  .btn-danger{
    color:var(--rust);
    border-color:var(--rust);
  }
  .btn-danger:hover:not(:disabled){
    background:var(--rust-tint);
  }
  .btn-danger:active:not(:disabled){
    background:var(--rust);
    color:#fff;
  }
  .btn-spinner{
    width:13px;
    height:13px;
    border:2px solid currentColor;
    border-right-color:transparent;
    border-radius:50%;
    animation:btn-spin .8s linear infinite;
  }
  @keyframes btn-spin{to{transform:rotate(360deg);}}
  @media (prefers-reduced-motion: reduce){
    .btn{transition:none;}
    .btn-spinner{animation-duration:1.6s;}
  }
  .btn-full{width:100%;}
  .btn-sm{padding:7px 12px;font-size:12.5px;}

  .lock-line{display:flex;align-items:center;gap:7px;font-size:13.5px;color:var(--text-dim);}
  /* ---------- CSV dropzone (roster import) ---------- */
  .csv-dropzone{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:4px;
    min-height:168px;
    border:1.5px dashed var(--gold-line);
    border-radius:14px;
    background:transparent;
    padding:32px 20px;
    text-align:center;
    color:var(--text-dim);
    cursor:pointer;
    transition:border-color .15s ease, background .15s ease;
  }
  .csv-dropzone:hover,
  .csv-dropzone:focus-within{border-color:var(--gold-line);}
  .csv-dropzone.dragover{border-color:var(--gold);background:var(--gold-soft);color:var(--text);}
  .csv-dropzone-icon{width:36px;height:36px;color:var(--gold);margin-bottom:6px;}
  .csv-dropzone-title{font-size:15px;font-weight:600;color:var(--text);}
  .csv-dropzone-or{font-size:13px;color:var(--text-dim);}
  .csv-dropzone-browse{
    color:var(--gold);
    font-size:14px;
    font-weight:600;
    text-decoration:underline;
    text-underline-offset:3px;
  }
  .csv-dropzone.has-file{
    border-style:solid;
    border-color:var(--gold);
    background:var(--gold-soft);
  }
  .csv-dropzone.has-file .csv-dropzone-title,
  .csv-dropzone.has-file .csv-dropzone-or,
  .csv-dropzone.has-file .csv-dropzone-icon,
  .csv-dropzone.has-file .csv-dropzone-browse{display:none;}
  .csv-dropzone-again{display:none;}
  .csv-dropzone.has-file .csv-dropzone-again{display:inline;}
  .csv-dropzone-name[hidden]{display:none;}
  .csv-dropzone-name{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:6px;
    margin-top:4px;
    max-width:100%;
    padding:14px 18px;
    border-radius:10px;
    background:var(--bg);
    border:1px solid var(--gold);
    color:var(--text);
    font-size:16px;
    font-weight:700;
    line-height:1.35;
    overflow-wrap:anywhere;
  }
  .csv-dropzone-ready{
    font:700 11px var(--font-mono);
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--gold);
  }
  .csv-dropzone input[type=file]{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip-path:inset(50%);
    border:0;
    white-space:nowrap;
  }

  /* ---------- Section headers ---------- */
  .section-label{
    font-family:var(--font-display);
    font-size:22px;font-weight:600;font-variant:small-caps;
    letter-spacing:.06em;color:var(--text-2);margin:0 0 12px;
    line-height:1.2;
  }

  /* ---------- Pick card (contestant summary row) ---------- */
  .pick-card{
    display:flex;align-items:center;gap:14px;
    padding:13px 14px;border:1px solid var(--border-soft);
    border-radius:var(--radius-sm);background:var(--bg-elev-2);margin-bottom:8px;
  }
  .pick-card:last-child{margin-bottom:0;}
  .pick-card.eliminated{opacity:.55;}
  .avatar{
    width:44px;height:44px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--font-display);font-weight:bold;font-size:15px;
    color:var(--bg);flex-shrink:0;
    border:2px solid rgba(255,255,255,0.35);
    box-shadow:inset 0 2px 3px rgba(255,255,255,0.4), inset 0 -3px 4px rgba(0,0,0,0.35), 0 1px 3px rgba(0,0,0,0.5);
  }
  .avatar-sm{width:34px;height:34px;font-size:12.5px;}
  .avatar-lg{width:64px;height:64px;font-size:20px;}
  .tribe-icon{
    border-radius:6px;
    border:1.5px solid;
    display:flex;align-items:center;justify-content:center;
    flex-shrink:0;
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.15);
  }
  .tribe-icon svg{width:52%;height:52%;}
  .pick-info{flex:1;min-width:0;}
  .pick-name{font-weight:600;font-size:14.5px;}
  .pick-sub{font-size:12.5px;color:var(--text-faint);margin-top:1px;}
  .status-chip{
    display:inline-flex;align-items:center;
    font-size:10.5px;font-weight:700;font-family:var(--font-mono);
    letter-spacing:.06em;padding:3px 9px;margin-top:5px;
    border:2px solid currentColor;border-radius:3px;
    text-transform:uppercase;
    transform:rotate(-1.5deg);
  }
  .status-chip.eliminated{color:var(--rust);background:var(--rust-soft);transform:rotate(1.5deg);}
  .status-explain{font-size:11.5px;color:var(--text-faint);margin-top:4px;}

  .stat-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
  .stat-badge{
    display:inline-flex;align-items:center;gap:4px;
    font-size:11px;color:var(--text-dim);
    background:var(--bg-elev-2);border:1px solid var(--border);
    padding:2px 7px;border-radius:6px;font-family:var(--font-mono);
  }
  .stat-badge.idol-active{color:var(--gold);border-color:var(--gold-line);background:var(--gold-soft);}
  .stat-badge.idol-played{color:var(--text-faint);}
  .stat-badge svg{width:10px;height:10px;flex-shrink:0;}

  .pick-flag{
    text-align:right;flex-shrink:0;font-size:12px;color:var(--text-faint);white-space:nowrap;
  }

  /* ---------- Legend ---------- */
  .legend{
    display:flex;flex-wrap:wrap;gap:14px;
    font-size:12.5px;color:var(--text-dim);
    margin:-8px 0 20px;
  }
  .legend span b{color:var(--text);}

  /* ---------- Standings ---------- */
  .standings-row{
    display:grid;
    grid-template-columns:32px 1fr auto auto;
    align-items:center;gap:14px;padding:11px 10px;
    border-bottom:1px solid var(--border-soft);font-size:14px;
    transition:background .1s ease;
  }
  .standings-row[hidden],
  [data-standings-section][hidden],
  [data-standings-empty][hidden]{display:none;}
  .standings-row:nth-child(odd){background:rgba(255,255,255,0.025);}
  .standings-row:hover{background:var(--gold-soft);}
  .standings-row:last-child{border-bottom:none;}
  .standings-rank{font-family:var(--font-mono);color:var(--text-faint);font-size:13px;}
  .standings-name{font-weight:bold;display:flex;align-items:center;gap:9px;}
  .standings-stars{color:var(--gold);font-size:13.5px;white-space:nowrap;letter-spacing:0.5px;}
  .standings-stars .dim{color:var(--border);}
  .standings-stars.is-ready{font-weight:600;}
  .standings-threshold{
    font-size:12.5px;color:var(--text-faint);margin:0 10px 6px;
  }
  .standings-tools{
    display:flex;gap:12px;flex-wrap:wrap;align-items:end;
    margin:0 0 16px;
  }
  .standings-tools .field{flex:1;min-width:180px;margin:0;}
  .standings-tools .standings-sort{flex:0 0 190px;}
  .standings-week{white-space:nowrap;text-align:right;}
  .week-badge{
    font-size:11px;font-family:var(--font-mono);padding:2px 7px;border-radius:6px;
    border:1px solid rgba(0,0,0,0.3);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15);
  }
  .week-badge.yes{color:var(--s51-bone);background:var(--teal-tint);border-color:var(--teal);}
  .week-badge.no{color:var(--text-faint);background:linear-gradient(180deg, #263b44 0%, #16262d 100%);}
  @media (max-width:600px){
    .standings-week{display:none;}
    .standings-row{grid-template-columns:28px 1fr auto;}
  }

  .name-link{
    cursor:pointer;
    color:var(--ember);
    font-weight:600;
    text-decoration-line:underline;text-decoration-color:transparent;
    text-underline-offset:3px;
    transition:text-decoration-color .12s ease, color .12s ease;
  }
  .name-link:hover{text-decoration-color:currentColor;color:var(--ember);}
  .standings-name .name-link,
  .standings-name .name-link:hover{color:var(--text-1);font-weight:700;}

  /* ---------- Contestant grid ---------- */
  .contestant-list{display:flex;flex-direction:column;}
  .contestant-row-wrap{border-bottom:1px solid var(--border-soft);scroll-margin-top:110px;}
  .contestant-row-wrap.is-anchored > .contestant-row{background:rgba(217,177,58,.12);}
  .contestant-row-wrap:last-child{border-bottom:none;}
  .contestant-row{
    display:flex;align-items:center;gap:14px;
    padding:14px 6px;cursor:pointer;
    transition:background .12s ease;
    flex-wrap:wrap;
  }
  .contestant-row:hover{background:var(--bg-elev);}
  .contestant-photo{
    width:56px;height:56px;aspect-ratio:1;border-radius:8px;object-fit:cover;object-position:center;
    flex-shrink:0;align-self:center;
    border:1px solid var(--border);
  }
  .select-card .contestant-photo{width:56px;height:56px;margin-top:0;}
  .admin .contestant-photo{width:72px;height:72px;}
  .contestant-row-wrap.eliminated .contestant-row{opacity:.55;}
  .contestant-main{flex:1 1 200px;min-width:0;}
  .contestant-side{
    display:flex;flex-direction:column;align-items:flex-end;gap:5px;
    flex-shrink:0;margin-left:auto;
  }
  .contestant-name{font-weight:600;font-size:15px;}
  .contestant-sub{font-size:12.5px;color:var(--text-faint);}
  .tribe-tag{
    display:inline-flex;align-items:center;gap:5px;
    font-size:11px;font-family:var(--font-mono);
    padding:2px 8px 2px 6px;border-radius:3px;margin-top:6px;color:var(--text);
  }
  .tribe-tag svg{width:9px;height:9px;flex-shrink:0;}
  .detail-panel{
    padding:0 6px 16px 76px;
    font-size:13px;color:var(--text-dim);display:none;
  }
  .contestant-row-wrap.expanded .detail-panel{display:block;}
  .week-log-row{display:flex;justify-content:space-between;gap:8px;padding:3px 0;}
  .week-log-row .tag{font-size:11px;color:var(--text-faint);}
  @media (max-width:640px){
    .contestant-row{
      display:grid;
      grid-template-columns:56px minmax(0,1fr);
      grid-template-areas:"photo main" "side side";
      align-items:start;
      column-gap:12px;
      row-gap:10px;
    }
    .contestant-row > .contestant-photo,
    .contestant-row > .tribe-icon{grid-area:photo;}
    .contestant-main{grid-area:main;}
    .contestant-side{
      grid-area:side;
      width:100%;
      margin-left:0;
      align-items:flex-start;
    }
    .contestant-side .available-to{max-width:100%;}
  }

  /* ---------- Single-pick selection ---------- */
  .select-list{display:flex;flex-direction:column;gap:8px;}
  .select-card{
    position:relative;
    display:flex;align-items:flex-start;gap:13px;
    padding:12px 14px;border:1px solid var(--border-soft);
    border-radius:var(--radius-sm);background:var(--bg-elev-2);
    cursor:pointer;min-height:64px;
  }
  .select-card-main{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1;}
  .select-card-main .stat-badges{margin-top:0;}
  .select-card .select-check,
  .select-card .tribe-icon{margin-top:2px;}
  .select-card input[type=radio]{
    position:absolute;opacity:0;width:1px;height:1px;pointer-events:none;
  }
  .select-card:has(input:checked){border-color:var(--gold-line);background:var(--gold-soft);}
  .select-card:has(input:checked) .select-check{background:var(--gold);border-color:var(--gold);color:#1b1508;}
  .select-check{
    width:22px;height:22px;border-radius:50%;
    border:1.5px solid var(--border);
    display:flex;align-items:center;justify-content:center;
    flex-shrink:0;font-size:13px;color:transparent;
  }

  .confirm-banner{
    display:flex;align-items:center;gap:10px;
    background:var(--green-soft);color:var(--green);
    border:1px solid rgba(124,154,104,0.35);
    padding:12px 14px;border-radius:var(--radius-sm);
    font-weight:600;font-size:14px;margin-bottom:16px;
  }
  .timestamp-line{font-family:var(--font-mono);font-size:12px;color:var(--text-faint);margin-top:14px;}

  /* ---------- Pick history table (participant drill-down) ---------- */
  .history-row{
    display:grid;grid-template-columns:64px 1fr auto auto;
    align-items:center;gap:10px;padding:9px 4px;
    border-bottom:1px solid var(--border-soft);font-size:13.5px;
  }
  .history-row:last-child{border-bottom:none;}
  .history-row .wk{font-family:var(--font-mono);color:var(--text-faint);font-size:12px;}

  /* ---------- Torch Talk (blog) ---------- */
  .marquee-bar{
    overflow:hidden;white-space:nowrap;
    border:1px solid var(--border);border-radius:var(--radius-sm);
    background:var(--bg-elev-2);padding:7px 0;margin-bottom:18px;
  }
  .marquee-bar span{
    display:inline-block;padding-left:100%;
    font-family:var(--font-mono);font-size:12px;color:var(--gold);
    animation:marquee 18s linear infinite;
  }
  @keyframes marquee{ 0%{transform:translateX(0);} 100%{transform:translateX(-100%);} }

  .post-card{
    padding:28px 0;
  }
  .post-card + .post-card{
    border-top:1px solid var(--border-soft);
  }
  .post-title{font-family:var(--font-display);font-size:23px;font-weight:bold;margin:0 0 4px;display:flex;align-items:center;gap:8px;text-shadow:0 1px 0 rgba(0,0,0,0.6);}
  .post-byline{font-size:12.5px;color:var(--text-faint);margin-bottom:14px;font-family:var(--font-mono);}
  .post-body p{color:var(--text-dim);font-size:14.5px;line-height:1.65;margin:0 0 12px;}
  .post-body p:last-child{margin-bottom:0;}
  .post-photo{
    display:block;max-width:100%;height:auto;border-radius:8px;
    margin:10px 0;border:1px solid var(--border);
  }
  .post-stub{
    border-bottom:1px solid var(--border-soft);
    padding:12px 0;margin-bottom:0;display:flex;justify-content:space-between;
    align-items:center;color:var(--text-dim);font-size:13.5px;
  }

  .blink-new{
    display:inline-block;font-family:var(--font-mono);font-size:9.5px;font-weight:700;
    color:#0b141b;background:var(--rust);padding:1px 5px;border-radius:3px;
    letter-spacing:.04em;animation:blink-anim 1.1s steps(1) infinite;
    vertical-align:middle;
  }
  @keyframes blink-anim{ 50%{opacity:0.15;} }

  .hit-counter{
    display:inline-flex;align-items:center;gap:8px;
    background:#050a0e;border:1px solid var(--border);border-radius:4px;
    padding:5px 10px;margin:14px 0 0;
    font-family:var(--font-mono);font-size:12px;color:var(--text-faint);
  }
  .hit-counter .digits{
    color:#4fe07a;background:#0a1510;padding:1px 6px;border-radius:2px;
    letter-spacing:.08em;font-weight:600;
    text-shadow:0 0 6px rgba(79,224,122,0.5);
  }

  /* ---------- Reactions & GIF comments ---------- */
  .rxn-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;}
  .post > .rxn-row{margin-bottom:18px;}
  .rxn-chip-wrap{
    position:relative;width:auto;height:auto;margin:0;flex:none;
  }
  .rxn-chip{
    position:relative;display:inline-flex;align-items:center;gap:6px;
    width:auto;height:auto;min-height:40px;padding:3px 8px 3px 3px;
    border-radius:20px;border:1px solid var(--border);background:transparent;
    cursor:pointer;overflow:visible;box-shadow:none;
  }
  .rxn-chip img, .rxn-chip .reaction-gif{
    width:32px;height:32px;object-fit:cover;border-radius:16px;display:block;
  }
  .rxn-chip .count{
    position:static;min-width:0;height:auto;padding:0;
    border-radius:0;background:transparent;color:var(--text);
    font:700 12px var(--font-mono);line-height:1;
  }
  .rxn-chip.mine, .rxn-chip-wrap.mine .rxn-chip{
    border:1.5px solid var(--gold);background:var(--gold-tint);box-shadow:none;
  }
  .rxn-chip.mine .count{color:var(--text);}
  .rxn-chip-wrap:hover, .rxn-chip-wrap:focus-within{z-index:3;}
  .rxn-chip-wrap .rxn-tip{
    display:none;position:absolute;left:0;bottom:calc(100% + 10px);z-index:5;
    width:228px;text-align:left;pointer-events:none;
  }
  .rxn-chip-wrap:hover .rxn-tip, .rxn-chip-wrap:focus-within .rxn-tip{display:block;}
  .rxn-tip .gif-embed{margin:0;box-shadow:0 10px 28px rgba(0,0,0,.5);}
  .rxn-more{margin-left:12px;font-size:12px;color:var(--text-faint);font-family:var(--font-mono);}
  .rxn-add{
    list-style:none;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;
    width:40px;height:40px;min-width:40px;padding:0;
    border:1px dashed var(--border);border-radius:20px;
    color:var(--text-faint);font-size:18px;background:transparent;
  }
  .rxn-add::-webkit-details-marker, .rxn-add::marker{display:none;content:"";}
  .rxn-picker{position:relative;margin-left:10px;}
  .rxn-picker .gif-picker-pop{
    position:absolute;left:0;top:calc(100% + 8px);z-index:6;width:min(420px,90vw);
  }
  .rxn-menu-row{display:flex;flex-wrap:wrap;gap:8px;}
  .rxn-back{
    border:0;background:transparent;color:var(--text-dim);cursor:pointer;
    font-size:14px;padding:0 6px 0 0;line-height:1.2;
  }
  .rxn-back:hover, .rxn-back:focus-visible{color:var(--gold);}
  .rxn-sticker-tip{
    padding:10px 12px;border:1px solid var(--border);border-radius:10px;
    background:var(--bg-elev-2);box-shadow:0 10px 28px rgba(0,0,0,.5);
  }
  .rxn-sticker-tip p{margin:8px 0 0;font-size:12.5px;color:var(--text);line-height:1.35;}
  .rxn-chip .sticker-mark{
    width:32px;height:32px;margin:0;--sticker-bowl:#0a1116;
  }
  .rxn-pack .gif-picker-kicker{justify-content:flex-start;align-items:center;gap:8px;}
  .gif-embed{
    position:relative;margin:12px 0;max-width:min(280px,100%);
    border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#0a1116;
  }
  .gif-embed-frame{position:relative;display:block;}
  .gif-embed-frame::after{
    content:attr(data-overlay);
    position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    padding:10px;text-align:center;pointer-events:none;
    font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.14em;
    line-height:1.3;color:rgba(232,226,214,.88);
    text-shadow:0 1px 10px rgba(0,0,0,.85);
    background:linear-gradient(180deg,rgba(8,14,20,.12) 30%,rgba(8,14,20,.45));
  }
  .gif-embed-img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;}
  .gif-embed-cap{
    display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:7px 10px 8px;
    font-size:12px;color:var(--text);line-height:1.35;
  }
  .gif-embed-giphy{font-size:10px;letter-spacing:.08em;color:var(--text-faint);font-family:var(--font-mono);flex:0 0 auto;}
  .gif-embed-x{
    position:absolute;top:8px;right:8px;z-index:2;width:24px;height:24px;padding:0;
    border:0;border-radius:50%;background:#0a1116;color:var(--text);cursor:pointer;font-size:16px;line-height:24px;
    box-shadow:0 0 0 1px var(--border);
  }
  .gif-picker-pop{
    margin-top:10px;padding:14px 14px 12px;border:1px solid var(--border);border-radius:12px;
    background:var(--bg-elev-2);
  }
  .gif-picker-kicker{
    display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;justify-content:space-between;
    margin:0 0 12px;font-size:13.5px;color:var(--text);
  }
  .gif-picker-kicker-note{color:var(--text-faint);font-size:12px;}
  .gif-picker-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;}
  .gif-pick{
    position:relative;display:flex;flex-direction:column;align-items:stretch;padding:0;overflow:hidden;
    border:1px solid var(--border);border-radius:8px;background:#0a1116;color:#fff;
    cursor:pointer;font-size:11px;text-align:left;aspect-ratio:5/4;
  }
  .gif-pick img{width:100%;height:100%;object-fit:cover;display:block;}
  .gif-pick-label{
    position:absolute;left:0;right:0;bottom:0;padding:16px 7px 7px;
    background:linear-gradient(transparent,rgba(0,0,0,.78));
    white-space:normal;line-height:1.2;overflow:hidden;
  }
  .gif-pick:hover, .gif-pick:focus-visible{border-color:var(--gold-line);}
  .gif-pick.selected{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);}
  .sticker-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  .sticker-pick{
    aspect-ratio:1;align-items:stretch;justify-content:center;
    padding:8px;background:var(--bg-elev);
  }
  .sticker-pick .sticker-mark{
    width:100%;height:100%;margin:0;flex:1 1 auto;min-width:0;min-height:0;
    --sticker-bowl:var(--bg-elev);
  }
  .gif-picker-foot{
    display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 12px;
    margin:10px 0 0;font-size:11px;color:var(--text-faint);
  }
  .giphy-credit{font-size:11px;color:var(--text-faint);font-family:var(--font-mono);}
  .giphy-credit:hover{color:var(--gold);}
  @media (max-width:640px){
    .gif-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  }

  /* ---------- Caption stickers ---------- */
  .sticker-picker{
    display:grid;
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:8px;
    padding:10px;
    border:1px dashed var(--border);
    border-radius:var(--radius-sm);
    background:var(--bg-elev-2);
  }
  .sticker-option{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:8px;
    margin:0;
    padding:12px 6px 10px;
    border:1px solid var(--border);
    border-radius:12px;
    background:var(--bg-elev);
    cursor:pointer;
    color:var(--text);
    min-width:0;
  }
  .sticker-option.selected, .sticker-picker label:has(input:checked){
    border-color:var(--gold-line);
    background:var(--gold-soft);
  }
  .sticker-option-label{
    font-size:12px;
    font-weight:700;
    text-align:center;
    line-height:1.2;
  }
  .composer-sticker-kicker{
    margin:12px 0 8px;
    font-size:12px;
    color:var(--text-faint);
    font-family:var(--font-mono);
  }
  .sticker-mark{
    display:block;
    flex:0 0 auto;
    --sticker-bowl:var(--bg-elev);
    pointer-events:none;
  }
  .sticker-mark svg{display:block;width:100%;height:100%;}
  .sticker-mark-sm{width:28px;height:28px;}
  .sticker-mark-md{width:40px;height:40px;}
  .sticker-mark-lg{width:48px;height:48px;}
  .sticker-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
  .sticker-chip{
    position:relative;
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:4px 10px 4px 4px;
    border:1px solid var(--border);
    border-radius:20px;
    background:var(--surface-1);
    --sticker-bowl:var(--surface-1);
    vertical-align:middle;
  }
  .sticker-chip .sticker-mark{--sticker-bowl:var(--surface-1);}
  .sticker-chip-label{font-size:12.5px;font-weight:600;color:var(--text);}
  .sticker-chip-x{
    margin-left:2px;width:18px;height:18px;padding:0;border:0;border-radius:50%;
    background:transparent;color:var(--text-faint);cursor:pointer;font-size:15px;line-height:18px;
  }
  .sticker-chip-x:hover, .sticker-chip-x:focus-visible{color:var(--text);background:var(--bg-elev-2);}
  .post-heading{
    display:flex;
    align-items:center;
    gap:14px;
    margin:0 0 14px;
  }
  .post-heading-copy{min-width:0;}
  .post-heading .post-title{margin:0;}
  .post-heading .post-meta{margin:2px 0 0;}
  .post-heading .sticker-mark{--sticker-bowl:var(--bg);}

  .sticker-immunity{position:relative;display:block;width:100%;height:100%;overflow:hidden;}
  .sticker-immunity svg{position:absolute;inset:0;}
  .sticker-immunity-glint{
    position:absolute;
    left:29.7%;
    top:39%;
    width:40.6%;
    height:40.6%;
    border-radius:50%;
    overflow:hidden;
    pointer-events:none;
  }
  .sticker-immunity-glint::after{
    content:"";
    position:absolute;
    top:0;
    left:-40%;
    width:38%;
    height:100%;
    background:linear-gradient(90deg, transparent, rgba(242,237,224,.55), transparent);
    transform:skewX(-20deg);
    animation:sticker-shine 3s ease-in-out infinite;
  }
  .sticker-tc{position:relative;display:block;width:100%;height:100%;}
  .sticker-tc > svg{position:absolute;inset:0;width:100%;height:100%;z-index:2;}
  .sticker-tc-shadow{fill:var(--bg);}
  .sticker-tc-bowl{fill:var(--sticker-bowl);}
  .sticker-tc-paper{
    position:absolute;
    left:31.25%;
    top:12.5%;
    width:37.5%;
    height:37.5%;
    perspective:90px;
    z-index:1;
    animation:sticker-drop 4.4s ease-in-out infinite;
  }
  .sticker-tc-half{position:absolute;top:0;width:50%;height:100%;}
  .sticker-tc-half.l{
    left:0;
    background:#e9dcb8;
    clip-path:polygon(0 8%,25% 0,60% 12%,100% 0,100% 100%,55% 92%,20% 100%,0 88%,8% 50%);
  }
  .sticker-tc-half.r{
    left:50%;
    transform-style:preserve-3d;
    transform-origin:left center;
    animation:sticker-fold 4.4s ease-in-out infinite;
  }
  .sticker-tc-half svg{position:absolute;inset:0;width:100%;height:100%;}
  .sticker-tc-face{
    position:absolute;inset:0;
    backface-visibility:hidden;
    -webkit-backface-visibility:hidden;
    background:#e9dcb8;
    clip-path:polygon(0 0,40% 12%,75% 0,100% 8%,92% 50%,100% 88%,80% 100%,45% 92%,0 100%);
  }
  .sticker-tc-face.b{
    transform:rotateY(180deg);
    background:#d9cba2;
    clip-path:polygon(0 8%,20% 0,55% 12%,100% 0,100% 100%,60% 92%,25% 100%,0 88%,8% 50%);
  }
  .sticker-smoke{animation:sticker-smoke 2.4s ease-out infinite;transform-origin:center;}
  .sticker-smoke2{animation:sticker-smoke 2.4s ease-out .8s infinite;}
  .sticker-pulse{animation:sticker-pulse 2.2s ease-out infinite;transform-origin:center;}
  .sticker-shake{animation:sticker-shake 2.6s ease-in-out infinite;transform-origin:center;}
  .sticker-merge-l{animation:sticker-merge-l 3s ease-in-out infinite;}
  .sticker-merge-r{animation:sticker-merge-r 3s ease-in-out infinite;}
  @keyframes sticker-smoke{0%{transform:translateY(0);opacity:.9}100%{transform:translateY(-10px);opacity:0}}
  @keyframes sticker-shine{0%,55%{transform:translateX(-22px) skewX(-20deg)}100%{transform:translateX(30px) skewX(-20deg)}}
  @keyframes sticker-pulse{0%{transform:scale(.7);opacity:.8}100%{transform:scale(1.35);opacity:0}}
  @keyframes sticker-shake{
    0%,100%{transform:translateX(0)}
    20%{transform:translateX(-2px) rotate(-3deg)}
    40%{transform:translateX(2px) rotate(3deg)}
    60%{transform:translateX(-1px)}
    80%{transform:translateX(1px)}
  }
  @keyframes sticker-merge-l{0%,20%{transform:translateX(-8px)}60%,100%{transform:translateX(0)}}
  @keyframes sticker-merge-r{0%,20%{transform:translateX(8px)}60%,100%{transform:translateX(0)}}
  @keyframes sticker-fold{0%,18%{transform:rotateY(0)}44%,100%{transform:rotateY(-180deg)}}
  @keyframes sticker-drop{
    0%,50%{transform:translate(0,0);opacity:1}
    74%{transform:translate(25%,129%);opacity:1}
    82%,100%{transform:translate(25%,129%);opacity:0}
  }
  @media (max-width:720px){
    .sticker-picker{grid-template-columns:repeat(3,minmax(0,1fr));}
  }
  @media (prefers-reduced-motion: reduce){
    .sticker-smoke,.sticker-smoke2,.sticker-immunity-glint::after,.sticker-pulse,
    .sticker-shake,.sticker-merge-l,.sticker-merge-r,.sticker-tc-paper,.sticker-tc-half.r{animation:none;}
  }

  /* ---------- Comments and composer ---------- */
  .comments-block{margin-top:18px;padding-top:18px;border-top:1px solid var(--border-soft);}
  .comment{
    display:flex;gap:12px;margin-bottom:0;padding:16px 0;
    border-bottom:1px solid var(--border-soft);
  }
  .comment-avatar{
    flex:0 0 36px;width:36px;height:36px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    background:var(--bg-elev-2);border:1px solid var(--border);
    color:var(--text-dim);font-size:11px;font-weight:700;letter-spacing:.04em;
  }
  .comment-body{flex:1;min-width:0;}
  .comment-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;}
  .comment-name{font-weight:700;font-size:13.5px;}
  .comment-since{font-size:10.5px;color:var(--text-faint);font-family:var(--font-mono);display:block;}
  .comment-time{font-size:11px;color:var(--text-faint);font-family:var(--font-mono);margin-left:0;}
  .comment-text{font-size:13.5px;color:var(--text-dim);margin:4px 0 0;}
  .login-gate{
    border:1px dashed var(--border);border-radius:var(--radius-sm);
    padding:14px;text-align:center;color:var(--text-faint);font-size:13.5px;
  }
  .login-chooser{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:10px;}
  .composer{
    display:flex;flex-direction:column;gap:8px;
    background:transparent;border:0;padding:0;box-shadow:none;
  }
  .composer-box{
    border:1px solid var(--border);border-radius:12px;background:var(--bg-elev-2);padding:14px 14px 10px;
  }
  .composer-surface{
    display:none;min-height:88px;padding:4px 2px 12px;color:var(--text);
    font-family:var(--font-body);font-size:15px;line-height:1.5;outline:none;
    white-space:pre-wrap;word-wrap:break-word;
    -webkit-user-select:text;user-select:text;-webkit-touch-callout:default;
  }
  .composer-surface:empty::before{content:attr(data-placeholder);color:var(--text-faint);pointer-events:none;}
  .composer-surface .gif-embed{margin:10px 0;}
  .composer-surface .sticker-chip{margin:4px 2px;}
  .js-gifs .composer-surface{display:block;}
  .js-gifs .composer-fallback{
    position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);
    clip-path:inset(50%);left:0;top:0;pointer-events:none;
  }
  .gif-open-btn{display:inline-flex;align-items:center;gap:6px;}
  .gif-open-btn[aria-expanded="true"]{border-color:var(--gold);color:var(--gold);}
  .composer textarea, .composer-fallback{
    width:100%;min-height:60px;background:transparent;color:var(--text);
    border:0;border-radius:0;padding:4px 2px 12px;
    font-family:var(--font-body);font-size:15px;resize:vertical;
  }
  .composer-toolbar{
    display:flex;flex-wrap:wrap;align-items:center;gap:10px;
    padding-top:8px;border-top:1px solid var(--border-soft);
  }
  .composer-hint{flex:1;font-size:12px;color:var(--text-faint);}
  .composer-hint:empty{display:none;}
  .composer-toolbar .btn-primary{margin-left:auto;}
  @media (max-width:640px){
    .composer-hint{flex-basis:100%;}
    .composer-toolbar .btn-primary{margin-left:0;}
  }
  .format-toolbar{
    display:flex;flex-wrap:wrap;gap:4px;
    margin:0 0 8px;padding-bottom:8px;
    border-bottom:1px solid var(--border-soft);
  }
  .format-toolbar button{
    min-width:36px;min-height:36px;padding:0 8px;
    border:1px solid var(--border);border-radius:6px;
    background:transparent;color:var(--text);
    font:700 14px var(--font-body);line-height:1;cursor:pointer;
  }
  .format-toolbar button:hover,
  .format-toolbar button:focus-visible{border-color:var(--gold);color:var(--gold);}
  .composer-surface :is(span, font, b, strong, i, em, u, s, del, p, div, li, ul, ol, h1, h2, h3, h4):not(.link-chip):not(.link-chip-open):not(.link-chip-title):not(.link-chip-host):not(.link-chip-mark){
    color:inherit !important;
    -webkit-text-fill-color:currentColor !important;
    background:transparent !important;
    background-color:transparent !important;
  }
  .composer-surface strong, .composer-surface b{font-weight:700;}
  .composer-surface em, .composer-surface i{font-style:italic;}
  .composer-surface u{text-decoration:underline;}
  .composer-surface s, .composer-surface strike, .composer-surface del{text-decoration:line-through;}
  .composer-surface ul, .composer-surface ol{margin:0 0 8px;padding-left:1.4em;}
  .composer-surface ul{list-style:disc outside;}
  .composer-surface ol{list-style:decimal outside;}
  .composer-surface li{margin:2px 0;white-space:normal;}
  .composer-surface a:not(.link-chip):not(.link-chip-open){color:var(--gold);text-decoration:underline;}
  .recap-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
  .composer-fallback, textarea[data-recap-body]{
    -webkit-user-select:text;user-select:text;-webkit-touch-callout:default;
  }
  .composing-as{font-size:12.5px;color:var(--text-faint);}
  .composing-as b{color:var(--gold);}
  button.name-link{
    background:none;border:none;padding:0;font:inherit;color:inherit;
  }
  .composer-heading{
    display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;
    margin:22px 0 12px;
  }
  .composer-title{
    margin:0;font-family:var(--font-display);font-variant:small-caps;font-weight:600;
    font-size:22px;color:var(--text);letter-spacing:0;
  }
  .composer-scope{font:12px var(--font-mono);color:var(--text-faint);}
  .comments-block .composer-box{
    padding:0;overflow:hidden;background:var(--bg-elev);border-radius:12px;
  }
  .composer-id{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:10px 14px;border-bottom:1px solid var(--border-soft);
  }
  .composer-id-who{display:flex;align-items:center;gap:10px;min-width:0;font-size:13.5px;}
  .composer-id-avatar{flex:0 0 30px;width:30px;height:30px;font-size:11px;}
  .composer-id b{color:var(--text);font-weight:700;}
  .composer-torches{
    display:inline-flex;align-items:center;gap:1px;margin-left:4px;
    color:var(--gold);vertical-align:-3px;
  }
  .composer-not-you{
    flex:none;min-height:36px;padding:0 8px;border:0;background:transparent;
    color:var(--text-faint);font:600 12.5px var(--font-body);
    text-decoration:underline;cursor:pointer;
  }
  .comments-block .composer-surface{min-height:96px;padding:16px 14px;}
  .comments-block .composer-toolbar{
    gap:6px;padding:10px 12px;border-top:1px solid var(--border-soft);background:var(--surface-1);
  }
  .composer-tool{
    min-width:40px;min-height:40px;padding:0 8px;border-radius:8px;
    border:1px solid var(--border);background:transparent;color:var(--text);
    display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
    font:700 14px var(--font-body);
  }
  .composer-tool i{font-style:italic;}
  .composer-tool:hover, .composer-tool:focus-visible{border-color:var(--gold);color:var(--gold);}
  .composer-tool-gap{width:1px;height:24px;background:var(--border);margin:0 4px;flex:none;}
  .comments-block .composer-toolbar .gif-open-btn{
    min-height:40px;border-radius:8px;padding:0 12px;
  }
  .comments-block .composer-toolbar [data-open-gif-picker]{
    border-color:var(--gold);background:var(--gold-tint);color:var(--gold);
  }
  .btn-post{
    margin-left:auto;min-height:44px;padding:0 18px;border-radius:8px;
    border:1.5px solid var(--gold);background:transparent;color:var(--gold);
    font:700 14px var(--font-body);cursor:pointer;
  }
  .btn-post:hover, .btn-post:focus-visible{background:var(--gold-tint);}
  .composer-ask{display:none;font-size:12.5px;color:var(--text-faint);line-height:1.4;}
  .composer-card.is-asking .composer-ask-wide{display:block;margin-left:auto;}
  .composer-card.is-asking .btn-post{display:none;}
  .identity-gate{
    display:flex;flex-direction:column;gap:10px;
    padding:14px;border-top:1px solid var(--gold);background:var(--surface-1);
  }
  .composer-card:not(.is-asking) .identity-gate,
  .identity-gate[hidden]{display:none;}
  .identity-title{margin:0;font-size:14.5px;font-weight:700;}
  .identity-copy{margin:0;font-size:13px;color:var(--text-dim);line-height:1.45;}
  .identity-row{display:flex;gap:8px;}
  .identity-row input{
    flex:1;min-width:0;min-height:44px;padding:0 12px;
    border:1.5px solid var(--border);border-radius:8px;
    background:var(--bg-elev);color:var(--text);font:15px var(--font-body);
  }
  .identity-submit{
    min-height:44px;padding:0 16px;border-radius:8px;white-space:nowrap;
    border:1.5px solid var(--gold);background:var(--gold);color:#1e1204;
    font:700 14px var(--font-body);cursor:pointer;
  }
  .identity-gate.is-error{border-top-color:#b8531f;}
  .identity-gate.is-error input{border-color:var(--ember);}
  .identity-error{
    display:flex;align-items:flex-start;gap:8px;margin:0;
    font-size:13px;color:var(--ember);line-height:1.45;
  }
  .identity-error svg{flex:none;margin-top:2px;}
  @media (max-width:640px){
    .composer-title{font-size:19px;}
    .composer-card.is-asking .composer-ask-wide{display:none;}
    .composer-card.is-asking .composer-ask-narrow{display:block;flex-basis:100%;margin-top:2px;}
    .comments-block .btn-post{flex-basis:100%;margin-left:0;margin-top:4px;}
    .identity-row{flex-direction:column;}
  }
  .btn-retro{
    background:linear-gradient(180deg, #2a4250 0%, #16262f 100%);
    color:var(--gold);border:1px solid var(--border);
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.18), 0 2px 0 rgba(0,0,0,0.35);
    font-family:var(--font-mono);
  }
  .btn-retro:active{box-shadow:inset 0 1px 3px rgba(0,0,0,0.5); transform:translateY(1px);}

  /* ---------- Webring badge ---------- */
  .webring{
    display:flex;flex-wrap:wrap;gap:8px;margin-top:24px;padding-top:18px;
    border-top:1px dashed var(--border);
  }
  .webring-badge{
    font-family:var(--font-mono);font-size:10.5px;color:var(--text-faint);
    border:1px solid var(--border);border-radius:3px;padding:4px 8px;
    background:var(--bg-elev-2);
  }

  /* ---------- Admin ---------- */
  .admin-gate-wrap{
    max-width:360px;margin:60px auto;text-align:center;
  }
  .admin-gate-wrap input{
    width:100%;background:var(--input-bg);color:var(--text);
    border:1px solid var(--input-border);border-radius:var(--r-sm);padding:10px 12px;
    font-family:var(--font-mono);font-size:14px;text-align:center;
    letter-spacing:.1em;margin:14px 0;
  }
  .admin-error{color:var(--rust);font-size:12.5px;margin-top:-6px;margin-bottom:10px;min-height:16px;}
  .admin-subnav{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:22px;border-bottom:1px solid var(--border-soft);padding-bottom:0;}
  .admin-tab{
    padding:9px 16px;border-radius:6px 6px 0 0;cursor:pointer;
    font-size:13.5px;font-weight:bold;color:var(--text-faint);
    border:1px solid transparent;border-bottom:none;
  }
  /* One tab per episode, so wrapping costs a row of height every few weeks and
     buries the page. Narrow screens get one swipeable strip instead; ui.js
     scrolls the current week into view. */
  @media (max-width:640px){
    .admin-subnav{
      flex-wrap:nowrap;
      overflow-x:auto;
      overflow-y:hidden;
      scrollbar-width:none;
      -webkit-overflow-scrolling:touch;
      overscroll-behavior-x:contain;
    }
    .admin-subnav::-webkit-scrollbar{display:none;}
    .admin-tab{flex:0 0 auto;}
  }
  .admin-tab:hover{color:var(--text-dim);}
  .admin-tab.active{
    color:var(--text);background:var(--bg-elev);
    border-color:var(--border-soft);
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.06);
  }
  .admin-table{width:100%;border-collapse:collapse;font-size:13.5px;}
  .admin-table th{
    text-align:left;font:700 11px var(--font-display);font-variant:small-caps;
    letter-spacing:.1em;color:var(--table-head);padding:0 10px 8px;
    border-bottom:1px solid var(--border);
  }
  .admin-table td{padding:9px 10px;border-bottom:1px solid var(--line-admin-1);vertical-align:middle;}
  .admin-table tbody tr:nth-child(odd) td,
  .admin-table tbody tr:nth-child(odd) th{background:var(--table-stripe);}
  .admin-table .cell-mono{font-family:var(--font-mono);font-size:12px;color:var(--text-3);}
  .admin-table tr:last-child td,
  .admin-table tr:last-child th{border-bottom:none;}
  .admin-table input, .admin-table select{
    background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);
    border-radius:var(--r-sm);padding:5px 7px;font-size:12.5px;font-family:var(--font-body);width:100%;
  }
  .admin-table select{
    appearance:none;
    -webkit-appearance:none;
    width:auto;
    min-width:0;
    max-width:100%;
    padding:8px 32px 8px 12px;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%23aebdc2' d='M1.2 1.4 6 6.2l4.8-4.8' stroke='%23aebdc2' stroke-width='1.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat:no-repeat;
    background-position:right 12px center;
  }
  .admin-table input[type=number]{width:60px;}
  .admin-form{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;
    margin-bottom:14px;
  }
  .admin-form input, .admin-form select, .admin-form textarea{
    background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);
    border-radius:var(--r-sm);padding:8px 10px;font-size:13.5px;font-family:var(--font-body);width:100%;
  }
  .admin-form textarea{min-height:120px;resize:vertical;grid-column:1/-1;}
  .admin-note{
    font-size:12px;color:var(--text-faint);border-left:2px solid var(--border);
    padding-left:10px;margin:10px 0 16px;line-height:1.6;
  }

  /* ---------- Admin: contestant editor ---------- */
  .cd-layout{display:grid;grid-template-columns:260px 1fr;column-gap:18px;row-gap:0;align-items:start;}
  .cd-layout > .cd-list{grid-column:1;}
  /* Spans both list halves so the editor stays a single full-height column. */
  .cd-layout > .cd-editor{grid-column:2;grid-row:1 / span 2;}
  .cd-list{border:1px solid var(--border-soft);border-radius:var(--radius-sm);overflow:hidden;}
  /* The two halves butt together, so only the outer corners stay round. */
  .cd-list.is-above{border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;}
  .cd-list.is-above > .cd-row:last-child{border-bottom:1px solid var(--border-soft);}
  .cd-list.is-below{border-radius:0 0 var(--radius-sm) var(--radius-sm);}
  @media (max-width:760px){
    /* No columns to place into, so block flow drops the editor directly
       beneath the row that opened it and each half closes itself off. */
    .cd-layout{display:block;}
    .cd-layout > .cd-editor{margin:10px 0;min-height:0;}
    .cd-list.is-above{border-bottom:1px solid var(--border-soft);border-radius:var(--radius-sm);}
    .cd-list.is-above > .cd-row:last-child{border-bottom:none;}
    .cd-list.is-below{border-radius:var(--radius-sm);}
  }
  .cd-row{display:flex;align-items:center;gap:10px;padding:9px 10px;cursor:pointer;border-bottom:1px solid var(--border-soft);color:inherit;text-decoration:none;}
  .cd-row:last-child{border-bottom:none;}
  .cd-row:hover{background:var(--bg-elev);}
  .cd-row.active{background:var(--gold-soft);box-shadow:inset 3px 0 0 var(--gold);}
  .cd-row.out .cd-row-name{opacity:.55;}
  .cd-row-main{min-width:0;flex:1;}
  .cd-row-name{font-weight:bold;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .cd-row-sub{font-size:11px;color:var(--text-faint);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .manual-dot{width:7px;height:7px;border-radius:50%;background:var(--manual);flex-shrink:0;}
  .manual-tag{font-size:11px;font-family:var(--font-mono);color:var(--manual);border:1px solid rgba(216,164,65,.55);border-radius:3px;padding:0 6px;margin-left:6px;vertical-align:middle;}
  .cd-editor{border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:16px 18px;background:var(--bg-elev);min-height:200px;}
  .cd-empty{color:var(--text-3);font-size:13.5px;padding:28px;text-align:center;border:1px dashed var(--line-2);border-radius:var(--r-sm);}
  .cd-head{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--border-soft);margin-bottom:6px;}
  .cd-title{font-family:var(--font-display);font-weight:bold;font-size:18px;text-shadow:0 1px 0 rgba(0,0,0,0.5);}
  .cd-sub{font-size:11.5px;color:var(--text-faint);font-family:var(--font-mono);}
  .cd-section{padding:14px 0;border-bottom:1px solid var(--border-soft);}
  .cd-section:last-child{border-bottom:none;}
  .cd-label{font-size:11.5px;font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;}
  .cd-grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
  .cd-grid3 label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-dim);}
  .cd-field-label{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0;}
  .cd-field-label .manual-tag{margin-left:0;flex:none;}
  .cd-grid3 input,.cd-grid3 select,.cd-inline input{background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:var(--r-sm);padding:7px 9px;font-size:13px;font-family:var(--font-body);}
  .cd-inline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--text-dim);}
  .cd-hint{font-size:11.5px;color:var(--text-faint);}
  .seg{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;}
  .seg-btn{background:var(--bg-elev-2);color:var(--text-dim);border:none;border-right:1px solid var(--border);padding:8px 16px;font-size:13px;font-weight:bold;cursor:pointer;font-family:var(--font-body);}
  .seg-btn:last-child{border-right:none;}
  .seg-btn.on{background:var(--gold-soft);color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold-line);}
  .seg-btn.on.danger{background:var(--rust-soft);color:var(--rust);box-shadow:inset 0 0 0 1px var(--rust);}
  .cd-table{width:100%;border-collapse:collapse;font-size:13px;}
  .cd-table th{text-align:left;font-size:11px;color:var(--text-faint);font-weight:600;padding:0 8px 6px;border-bottom:1px solid var(--border);}
  .cd-table td{padding:7px 8px;border-bottom:1px solid var(--border-soft);}
  .cd-table tr.muted td{opacity:.4;}
  /* ---------- Admin: advantage editor ---------- */
  .adv-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;}
  .adv-meta{font:12px var(--font-mono);color:var(--text-3);}
  .adv-panel{background:var(--bg-elev);border:1px solid var(--line-2);border-radius:var(--r-card);overflow:hidden;}
  .adv-empty{padding:16px 18px;color:var(--text-3);font-size:13.5px;border-bottom:1px solid var(--line-1);}
  .adv-row{display:grid;grid-template-columns:1fr auto auto;gap:16px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line-1);}
  .adv-name{font-size:15px;font-weight:700;}
  .adv-timeline{font:12.5px var(--font-mono);color:var(--text-2);margin-top:3px;}
  .adv-chip{font:700 11px var(--font-mono);padding:3px 9px;border-radius:6px;background:var(--line-1);color:var(--text-2);}
  .adv-chip.is-active{background:var(--teal);color:#fff;}
  .adv-editor{padding:18px;background:var(--bg-elev-2);border-bottom:1px solid var(--line-1);box-shadow:inset 3px 0 0 var(--gold);display:flex;flex-direction:column;gap:18px;}
  .adv-row2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;align-items:end;}
  .adv-field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-2);}
  .adv-field select,.adv-field input[type=number],.adv-inline input{min-height:44px;padding:0 12px;border:1.5px solid var(--line-2);border-radius:6px;background:var(--input-bg);color:var(--text-1);font:15px var(--font-body);}
  .adv-field input[type=number]{width:100%;max-width:160px;}
  .adv-field input.invalid,.adv-inline input.invalid{border-color:var(--rust);}
  .adv-hint{font-weight:400;color:var(--text-3);}
  .adv-field-label{font-size:13px;font-weight:600;color:var(--text-2);}
  .adv-outcome-block{display:flex;flex-direction:column;gap:8px;}
  .adv-outcome-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap;}
  .adv-outcome{display:inline-flex;border:1.5px solid var(--line-2);border-radius:6px;overflow:hidden;background:var(--bg-elev-2);}
  .adv-outcome-opt{display:inline-flex;margin:0;}
  .adv-outcome-opt input{position:absolute;opacity:0;pointer-events:none;}
  .adv-outcome-opt span{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-right:1px solid var(--line-2);font:700 13.5px var(--font-body);color:var(--text-2);cursor:pointer;}
  .adv-outcome-opt:last-child span{border-right:0;}
  .adv-outcome-opt input:checked + span{background:var(--gold-soft);color:var(--gold);box-shadow:inset 0 0 0 1.5px var(--gold);}
  .adv-outcome-opt input:focus-visible + span{outline:2px solid var(--focus);outline-offset:2px;}
  .adv-inline{display:inline-flex;align-items:center;gap:10px;font-size:14px;color:var(--text-2);}
  .adv-inline input{width:90px;}
  .adv-editor:has([name=status][value=found]:checked) [data-adv-outcome-week]{display:none;}
  .adv-err{font-size:13px;color:var(--rust);display:flex;align-items:center;gap:6px;}
  .adv-actions{display:flex;justify-content:space-between;align-items:center;padding-top:6px;border-top:1px solid var(--line-1);gap:8px;flex-wrap:wrap;}
  .adv-actions-left{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
  .adv-footer{padding:14px 18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .adv-note{font-size:13px;color:var(--text-3);margin:12px 0 0;}
  .adv-footer .adv-note{margin:0;}
  @media (max-width:600px){
    .adv-row2{grid-template-columns:1fr;}
    .adv-row{grid-template-columns:1fr auto;}
    .adv-row .btn{grid-column:1 / -1;justify-self:start;}
  }
  /* ---------- Trophies and toasts ---------- */
  .trophy{font-size:.85em;cursor:default;white-space:nowrap;}
  .trophy-count{
    font-family:var(--font-body);
    font-size:1.45em;
    font-weight:700;
    letter-spacing:.02em;
    margin-left:.18em;
    color:var(--gold);
  }
  .toast-stack{
    position:fixed;bottom:20px;right:20px;z-index:100;
    display:flex;flex-direction:column;gap:8px;
  }
  .toast{
    background:var(--toast-bg);
    border:1px solid #0b1418;border-radius:var(--r-sm);
    padding:10px 14px;font-size:13px;color:var(--text);
    box-shadow:var(--shadow-card),var(--gloss);
    max-width:320px;
  }
  .admin-checkline{display:flex;align-items:center;gap:9px;padding:8px 10px;border-bottom:1px solid var(--border-soft);font-size:13.5px;}
  .admin-checkline:last-child{border-bottom:none;}

  /* ---------- Additions beyond the prototype ----------
     The prototype used inline styles and click handlers; these classes replace
     them so the page can run under a strict Content-Security-Policy. */

  .skip-link{
    position:absolute;
    left:-9999px;
    top:0;
    background:var(--bg-elev-2);
    color:var(--text);
    padding:10px 16px;
    border:1px solid var(--border);
    border-radius:0 0 var(--radius-sm) 0;
    z-index:100;
  }
  .skip-link:focus{left:0;}

  /* Navigation is real links now, so they need the anchor reset. */
  .nav-item{display:block;text-decoration:none;}
  .bottom-nav-item{text-decoration:none;}

  :focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;}

  .empty-state{color:var(--text-dim);font-size:14px;margin:0;}
  .section-intro{color:var(--text-dim);font-size:13px;margin:-4px 0 16px;}
  .section-label-spaced{margin-top:26px;}
  .num-sm{font-size:22px;}

  .mark-out{color:var(--rust);}
  .mark-win{color:var(--gold);}
  .impact-out{color:var(--rust);}

  .standings-row.is-out{opacity:.55;}
  .standings-row-compact{grid-template-columns:1fr auto;}
  .standings-row-pick{grid-template-columns:1fr auto;}
  .standings-row-result{grid-template-columns:1fr auto auto;}
  /* Every row sized its own columns, so the pick and the outcome landed at a
     different spot in each one. Sharing one set of tracks lines them up. */
  @supports (grid-template-columns: subgrid){
    .standings-list{display:grid;grid-template-columns:1fr auto auto;column-gap:14px;}
    .standings-list > .standings-row-result{grid-column:1 / -1;grid-template-columns:subgrid;}
  }
  .pick-inline{display:flex;align-items:center;gap:7px;font-size:13px;}
  .pick-outcome{font-size:12px;color:var(--text-faint);white-space:nowrap;}
  .pick-outcome.earned{color:var(--gold);}
  /* ---------- Picks grid (participants x episodes) ---------- */
  .picks-boot{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:8px;
    margin:0 0 14px;
    padding:10px 12px;
    background:rgba(224,93,58,0.12);
    border:1px solid rgba(224,93,58,0.35);
    border-radius:var(--radius-card);
    font-weight:600;
  }
  .picks-grid-week{display:block;}
  .picks-grid-boot{
    display:block;
    color:var(--rust);
    font-size:11px;
    font-weight:600;
    letter-spacing:0;
    margin-top:3px;
    text-transform:none;
  }
  .picks-grid-boot.is-empty{color:var(--text-faint);font-weight:500;}

  .picks-grid-legend{
    display:flex;
    flex-wrap:wrap;
    gap:10px 16px;
    margin:0 0 12px;
    font-size:12px;
    color:var(--text-faint);
  }
  .picks-grid-legend span{display:inline-flex;align-items:center;gap:6px;}
  .picks-early-hide{
    margin-left:auto;
    cursor:pointer;
    color:var(--gold);
    font-weight:600;
  }
  .picks-early-expand{
    display:block;
    cursor:pointer;
    color:inherit;
  }
  .picks-early-expand:hover .picks-grid-week{color:var(--gold);}
  [data-picks-grid]:not(:has([data-show-early]:checked)) .is-early{display:none;}
  [data-picks-grid]:has([data-show-early]:checked) .picks-early-stub{display:none;}
  [data-picks-grid]:not(:has([data-show-early]:checked)) .picks-early-hide{display:none;}
  .picks-early-stub{
    min-width:3.2rem;
    text-align:center;
    color:var(--text-faint);
  }
  .picks-grid-key{
    display:inline-block;
    width:11px;
    height:11px;
    border-radius:2px;
    border:1px solid var(--border);
    background:var(--bg-elev-2);
  }
  .picks-grid-key.is-star{background:var(--gold-tint);border-color:var(--gold-line);}
  .picks-grid-key.is-knockout{background:var(--rust-tint);border-color:var(--rust);}
  .picks-grid-key.is-safe{background:var(--teal-tint);border-color:var(--teal);}
  .picks-grid-key.is-locked{background:var(--surface-3);border-color:var(--line-2);}
  .picks-grid-key.is-hidden{background:var(--bg-elev-2);}
  .picks-grid-wrap{
    overflow:auto;
    max-height:min(70vh, 740px);
    border:1px solid var(--border);
    border-radius:var(--radius-card);
    background:var(--bg-elev);
    box-shadow:var(--shadow-drop);
  }
  .picks-grid{
    border-collapse:separate;
    border-spacing:0;
    font-size:12px;
    min-width:100%;
  }
  .picks-grid th,
  .picks-grid td{
    padding:7px 8px;
    border-bottom:1px solid var(--border-soft);
    border-right:1px solid var(--border-soft);
    white-space:nowrap;
  }
  .picks-grid thead th{
    position:sticky;
    top:0;
    z-index:2;
    background:#162c37;
    color:var(--text-faint);
    font-size:11px;
    font-weight:600;
    text-align:center;
    letter-spacing:0.04em;
    white-space:normal;
  }
  .picks-grid thead th.is-current .picks-grid-week{color:var(--gold);}
  .picks-grid .picks-grid-name{
    position:sticky;
    left:0;
    z-index:1;
    text-align:left;
    background:var(--bg-elev);
    box-shadow:2px 0 6px rgba(0,0,0,0.28);
    min-width:128px;
  }
  .picks-grid thead .picks-grid-name{
    z-index:3;
    background:#162c37;
    color:var(--text-faint);
  }
  .picks-grid tbody tr:nth-child(even) .picks-grid-name{background:#12242e;}
  .picks-grid tbody tr.is-out td,
  .picks-grid tbody tr.is-out .picks-grid-name{opacity:0.55;}
  .picks-grid-stars{
    margin-left:6px;
    color:var(--gold);
    font-size:11px;
    font-variant-numeric:tabular-nums;
  }
  .picks-grid-cell{
    text-align:center;
    min-width:4.6rem;
    font-weight:600;
  }
  .picks-grid-cell.is-star{background:var(--gold-tint);color:var(--gold);}
  .picks-grid-cell.is-knockout{background:var(--rust-tint);color:var(--rust);}
  .picks-grid-cell.is-safe{background:var(--teal-tint);color:var(--teal);}
  .picks-grid-cell.is-locked{background:var(--surface-3);color:var(--text-1);}
  .picks-grid-cell.is-hidden,
  .picks-grid-cell.is-empty,
  .picks-grid-cell.is-missed,
  .picks-grid-cell.is-after{color:var(--text-faint);font-weight:500;}
  .picked-by-count{font-size:11.5px;color:var(--text-faint);}

  /* Contestant cards are <details>, so the disclosure marker is suppressed
     and the row itself becomes the summary. */
  .contestant-row-wrap > summary{list-style:none;cursor:pointer;}
  .contestant-row-wrap > summary::-webkit-details-marker{display:none;}
  .contestant-row-wrap[open] .detail-panel{display:block;}
  .detail-pickers{margin-top:8px;}

  .name-cloud{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13.5px;}
  .name-cloud-sep{color:var(--text-faint);}

  /* ---------- Who's in the pool (pre-season picks) ---------- */
  .roster-page-head{align-items:flex-start;}
  .roster-lede{margin:8px 0 0;max-width:40em;color:var(--text-3);font-size:14.5px;line-height:1.45;}
  .roster-most-block{margin:0 0 22px;}
  .roster-most-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;}
  .roster-most-head .history-kicker{margin:0;}
  .roster-most{display:flex;gap:8px;overflow-x:auto;padding:10px 0 4px;}
  .roster-pill{
    flex-shrink:0;display:inline-flex;align-items:center;gap:8px;
    padding:8px 12px 8px 8px;border-radius:999px;
    background:var(--gold-tint);border:1px solid var(--gold-line);
    font-size:13.5px;font-weight:700;
  }
  .roster-pill .roster-avatar{width:28px;height:28px;font-size:11px;}
  .roster-tools{
    display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
    margin-bottom:14px;
  }
  .roster-filters{display:flex;flex-wrap:wrap;gap:8px;}
  .roster-filters button{
    min-height:36px;padding:0 12px;border-radius:999px;
    border:1px solid var(--line-2);background:transparent;color:var(--text-2);
    font:600 13px var(--font-body);cursor:pointer;
  }
  .roster-filters button[aria-pressed="true"]{border-color:var(--gold);color:var(--gold);background:var(--gold-tint);}
  .roster-sort{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-3);}
  .roster-sort select{
    min-height:36px;padding:0 8px;border:1px solid var(--line-2);border-radius:8px;
    background:var(--surface-2);color:var(--text-1);font:12.5px var(--font-body);
  }
  .roster-layout{display:grid;grid-template-columns:1fr 160px;gap:24px;align-items:start;}
  .roster-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;}
  .roster-group,.roster-group > .roster-grid{display:contents;}
  .roster-letter{display:none;margin:0;font:700 12px var(--font-mono);letter-spacing:.12em;color:var(--text-3);padding:6px 2px 0;}
  .roster-grid[data-roster-flat]{display:none;}
  .roster-groups.is-flat{display:block;}
  .roster-groups.is-flat .roster-group{display:none;}
  .roster-groups.is-flat .roster-grid[data-roster-flat]{
    display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;
  }
  .roster-person{
    min-width:0;border:1px solid var(--line-1);border-radius:10px;background:var(--surface-2);
  }
  .roster-person.is-champion{border-color:#3a4f2c;}
  .roster-person > summary{list-style:none;cursor:pointer;}
  .roster-person > summary::-webkit-details-marker{display:none;}
  .roster-card{
    display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 10px;min-width:0;
  }
  .roster-avatar{
    width:32px;height:32px;border-radius:50%;background:var(--line-2);
    display:flex;align-items:center;justify-content:center;
    font-weight:700;font-size:11.5px;flex-shrink:0;color:var(--text-1);
  }
  .roster-avatar.is-champion{background:#2f3f1a;}
  .roster-card-text{min-width:0;display:flex;flex-direction:column;}
  .roster-card-name{font-size:14.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .roster-titles{display:inline-flex;align-items:center;gap:3px;color:var(--gold);font:11px var(--font-mono);}
  .roster-titles .cup-icon{width:11px;height:11px;}
  .roster-title-count{font:11px var(--font-mono);color:var(--gold);}
  .roster-seasons{margin:0;padding:0 10px 8px 52px;font:11px var(--font-mono);color:var(--gold);}
  .roster-letters{display:flex;flex-wrap:wrap;gap:2px;}
  .roster-jump{
    min-width:28px;min-height:28px;display:inline-flex;align-items:center;justify-content:center;
    border:0;border-radius:6px;background:transparent;color:var(--text-3);
    font:700 12px var(--font-mono);cursor:pointer;padding:0;
  }
  .roster-jump:hover{color:var(--gold);}
  @media (max-width:760px){
    .roster-layout{grid-template-columns:1fr;}
    .roster-index{display:none;}
    .roster-groups{display:flex;flex-direction:column;gap:6px;}
    .roster-group{display:block;}
    .roster-group > .roster-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
    .roster-letter{display:block;}
    .roster-avatar{display:none;}
    .roster-pill .roster-avatar{display:flex;}
    .roster-card{justify-content:space-between;}
    .roster-card-text{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;width:100%;}
    .roster-seasons{padding-left:12px;}
    .roster-groups.is-flat .roster-grid[data-roster-flat]{grid-template-columns:1fr 1fr;}
  }

  .post{margin-bottom:8px;}
  /* ---------- Torch Talk post typography ---------- */
  .post-title{
    font-family:var(--font-display);
    font-weight:bold;
    font-size:21px;
    margin:0 0 6px;
    text-shadow:0 1px 0 rgba(0,0,0,0.5);
  }
  .post-title a{text-decoration:none;}
  .post-title a:hover{color:var(--gold);}
  .post-meta{color:var(--text-faint);font-size:12.5px;margin:0 0 14px;font-family:var(--font-mono);}
  .post-body p{color:var(--text-dim);font-size:14.5px;line-height:1.7;margin:0 0 14px;}
  .post-body strong, .comment-text strong{font-weight:700;color:var(--text);}
  .post-body em, .comment-text em{font-style:italic;}
  .post-body u, .comment-text u{text-decoration:underline;}
  .post-body s, .comment-text s{text-decoration:line-through;}
  .post-body ul, .comment-text ul{list-style:disc outside;}
  .post-body ol, .comment-text ol{list-style:decimal outside;}
  .post-body ul, .post-body ol, .comment-text ul, .comment-text ol{
    margin:0 0 12px;padding-left:1.4em;color:var(--text-dim);
  }
  .post-body li, .comment-text li{margin:4px 0;padding-left:0.2em;}
  .post-body a:not(.link-chip):not(.link-chip-open), .comment-text a:not(.link-chip):not(.link-chip-open){
    color:var(--gold);text-decoration:underline;
  }
  .comment-text p{margin:0 0 8px;font-size:inherit;color:inherit;}
  .comment-text p:last-child{margin-bottom:0;}
  .link-chip, .link-chip-open{
    display:inline-flex;align-items:center;gap:6px;
    max-width:min(100%, 420px);min-width:0;
    vertical-align:middle;line-height:1.2;
    color:var(--text);text-decoration:none;white-space:nowrap;
  }
  a.link-chip, span.link-chip{
    margin:0 2px;padding:2px 7px 2px 3px;
    border:1px solid var(--border);border-radius:6px;
    background:var(--bg-elev);
  }
  .link-chip-open{color:inherit;text-decoration:none;}
  .link-chip-icon, .link-chip-mark{
    width:16px;height:16px;border-radius:3px;flex:none;margin:0;border:0;object-fit:cover;
  }
  .link-chip-mark{
    display:inline-flex;align-items:center;justify-content:center;
    background:#2a2418;color:var(--gold);font-size:10px;font-weight:700;
  }
  .link-chip-title{
    font-weight:700;color:var(--text);
    overflow:hidden;text-overflow:ellipsis;max-width:240px;
  }
  .link-chip-host{
    font-weight:400;color:var(--text-faint);
    overflow:hidden;text-overflow:ellipsis;max-width:160px;
  }
  .link-chip-x{
    width:16px;height:16px;padding:0;border:0;background:transparent;
    color:var(--text-faint);font-size:14px;line-height:1;cursor:pointer;flex:none;
  }
  .link-chip-x:hover{color:var(--text);}
  .composer-surface .link-chip,
  .composer-surface .link-chip-open{
    background:var(--bg-elev) !important;
    color:var(--text) !important;
    -webkit-text-fill-color:currentColor !important;
    text-decoration:none !important;
  }
  .composer-surface .link-chip-title{
    color:var(--text) !important;-webkit-text-fill-color:currentColor !important;
    background:transparent !important;font-weight:700;
  }
  .composer-surface .link-chip-host{
    color:var(--text-faint) !important;-webkit-text-fill-color:currentColor !important;
    background:transparent !important;font-weight:400;
  }
  .composer-surface .link-chip-mark{
    background:#2a2418 !important;color:var(--gold) !important;-webkit-text-fill-color:currentColor !important;
  }
  .post-teaser-title{
    font-family:var(--font-display);
    font-weight:bold;
    font-size:19px;
    margin:0 0 10px;
    text-shadow:0 1px 0 rgba(0,0,0,0.5);
  }
  .post-stub{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:12px;
    padding:9px 0;
    border-bottom:1px solid var(--border-soft);
  }

  /* Titles shared with the picks roster. The history page itself is camp-styled. */
  .history-kicker{
    font-family:var(--font-display);
    font-variant:small-caps;
    font-weight:600;
    font-size:13px;
    letter-spacing:.08em;
    color:var(--text-3);
    margin:0 0 10px;
  }
  .history-chip-count{font:11px var(--font-mono);color:var(--gold);}
  .cup-icon{display:block;flex-shrink:0;}

  .admin-tab{text-decoration:none;}

  /* ---------- Commissioner tools ----------
     The admin chrome is deliberately a different colour from the public site.
     The risk here is acting destructively while believing you are on the
     public pages, so the bar reads as a different place at a glance. */

  .admin-topbar{background:var(--surface-admin-nav);border-bottom-color:var(--line-admin-1);}
  body.admin .topbar-inner{max-width:1180px;}
  body.admin .nav-item{padding:9px 12px;}
  @media (max-width:900px){
    body.admin .mobile-topbar{
      background:var(--surface-admin-nav);
      border-bottom-color:var(--line-admin-1);
      gap:12px;
    }
    body.admin .admin-bar{
      position:static;
      max-width:none;
      min-width:0;
    }
  }
  .commissioner-tag{
    font:700 10.5px var(--font-mono);
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--gold);
    border:1px solid var(--gold-line);
    border-radius:3px;
    padding:2px 7px;
    align-self:center;
    margin-bottom:12px;
  }

  .admin-bar{
    position:sticky;
    top:0;
    z-index:19;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    flex-wrap:wrap;
    max-width:1040px;
    margin:0 auto;
    padding:9px 28px;
    font-size:13px;
    color:var(--text-dim);
    background:var(--surface-admin-3);
    border-bottom:1px solid var(--line-admin-1);
  }
  .admin-bar strong{color:var(--text);}
  .admin-bar-links{display:flex;align-items:center;gap:16px;}
  .admin-bar-links form{margin:0;}
  .admin-bar a{color:var(--gold);}

  .linklike{
    background:none;
    border:0;
    padding:0;
    color:var(--gold);
    font-size:inherit;
    cursor:pointer;
    text-decoration:underline;
  }

  .flash{
    margin:0 0 18px;
    padding:11px 15px;
    border-radius:var(--radius-sm);
    font-size:14px;
    border:1px solid transparent;
  }
  .flash-ok{background:var(--green-soft);border-color:rgba(63,167,126,0.5);color:#cdeadd;}
  .flash-error{background:var(--rust-soft);border-color:rgba(224,93,58,0.5);color:#f6d3c8;}

  .admin-stats{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
    gap:10px;
    margin-bottom:22px;
  }
  .admin-stat{
    background:var(--bg-elev);
    border:1px solid var(--border-soft);
    border-radius:var(--radius-card);
    padding:13px 15px;
  }
  a.admin-stat{
    display:block;
    color:inherit;
    text-decoration:none;
  }
  a.admin-stat:hover,
  a.admin-stat:focus-visible{
    border-color:var(--gold);
  }
  .admin-stat-value{
    font-family:var(--font-display);
    font-weight:bold;
    font-size:22px;
    color:var(--gold);
  }
  a.admin-stat .admin-stat-value{
    font-size:16px;
    line-height:1.25;
  }
  .admin-stat-label{
    font-size:11px;
    letter-spacing:0.07em;
    text-transform:uppercase;
    color:var(--text-faint);
    margin-top:3px;
  }

  .section-meta{float:right;font-size:12px;font-weight:normal;color:var(--text-faint);}

  /* Checkboxes must not inherit the full-width sizing .admin-table gives text
     inputs, or each one stretches across its whole column. */
  .admin-table input[type=checkbox]{width:auto;}
  .admin-table .col-center{text-align:center;}
  /* Stays a table-cell: display:flex here would drop it out of the table
     layout and stop it lining up with the header row. */
  .admin-table .cell-name{
    font-weight:normal;
    font-size:13.5px;
    font-variant:normal;
    text-transform:none;
    letter-spacing:normal;
    color:var(--text);
    padding:9px 10px;
    border-bottom:1px solid var(--line-admin-1);
    white-space:nowrap;
  }
  .status-badge{
    display:inline-block;
    font:700 11px var(--font-mono);
    padding:2px 8px;
    border-radius:var(--r-sm);
    border:1px solid rgba(0,0,0,.3);
  }
  .status-badge.is-active{color:#eafff0;background:var(--badge-active);}
  .status-badge.is-out{color:var(--text-2);background:var(--badge-out);}
  .linkdanger{
    background:none;
    border:0;
    padding:0;
    color:var(--rust);
    font-size:12.5px;
    font-weight:600;
    cursor:pointer;
  }
  .admin-banner{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;
    border-left:3px solid var(--sync-ok);
    background:var(--surface-3);
    border-radius:var(--r-sm);
    padding:12px 14px;
    font-size:13.5px;
    color:var(--text-2);
    margin:0 0 18px;
  }
  .admin-banner.is-warn{border-left-color:var(--rust);color:var(--rust);}
  .admin-banner .btn{margin:0;}
  .admin .empty-state{
    color:var(--text-3);
    font-size:13.5px;
    padding:28px;
    text-align:center;
    border:1px dashed var(--line-2);
    border-radius:var(--r-sm);
  }
  body.admin .field input:not([type=checkbox]):not([type=radio]):not([type=file]),
  body.admin .field select,
  body.admin .field textarea{
    background:var(--input-bg);
    border-color:var(--input-border);
    font-size:14px;
    padding:8px 10px;
  }
  body.admin .field select,
  body.admin select.has-caret{
    appearance:none;
    -webkit-appearance:none;
    padding-right:32px;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%23aebdc2' d='M1.2 1.4 6 6.2l4.8-4.8' stroke='%23aebdc2' stroke-width='1.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat:no-repeat;
    background-position:right 12px center;
  }
  body.admin .field input:focus,
  body.admin .field select:focus,
  body.admin .field textarea:focus{
    outline:2px solid var(--focus);
    outline-offset:1px;
    border-color:var(--focus);
  }
  .tribe-dot{
    display:inline-block;
    width:9px;
    height:9px;
    border-radius:50%;
    margin-right:7px;
    vertical-align:middle;
    box-shadow:0 0 0 1px rgba(0,0,0,0.5);
  }

  .form-actions{
    display:flex;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;
    margin-top:18px;
  }
  .inline-field{
    display:flex;
    align-items:center;
    gap:7px;
    font-size:13.5px;
    color:var(--text-dim);
  }
  .inline-field input{width:auto;}

  .visually-hidden{
    position:absolute;
    width:1px;
    height:1px;
    overflow:hidden;
    clip-path:inset(50%);
    white-space:nowrap;
  }

  .chip-list{list-style:none;display:flex;flex-wrap:wrap;gap:7px;margin:0 0 16px;padding:0;}
  .chip{
    background:var(--bg-elev-2);
    border:1px solid var(--border-soft);
    border-radius:var(--radius-pill);
    padding:4px 12px;
    font-size:13px;
  }

  .admin-actions{display:flex;flex-wrap:wrap;gap:10px;}
  .admin-toolbar{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
    flex-wrap:wrap;
    margin-bottom:22px;
  }
  .admin-toolbar .section-intro{margin:0;flex:1;min-width:0;}
  .admin-toolbar form{margin:0;}

  .admin .main{padding:28px 32px 60px;max-width:min(1040px,100%);}
  .admin .page-header{margin-bottom:18px;}
  .admin .header-rule{margin:0 0 28px;}
  .admin .section{margin-bottom:36px;}
  .admin .section-follow{
    margin-top:12px;
    padding-top:32px;
    border-top:1px solid var(--border-soft);
  }
  .admin .section .field{margin-bottom:16px;}
  .admin .section .field-label{display:block;margin-bottom:6px;}
  .admin .form-actions{margin-top:24px;}
  .admin .section-intro{margin:0 0 20px;line-height:1.55;}
  .admin .admin-subnav{margin-bottom:28px;}
  .admin .flash{margin-bottom:24px;}
  .admin .cd-editor{padding:22px 24px;}
  .admin .cd-section{padding:18px 0;}
  .admin .cd-grid3{gap:14px;}
  .admin .admin-table th{padding:0 10px 8px;}
  .admin .admin-table td,
  .admin .admin-table .cell-name{padding:9px 10px;}
  .admin .post-stub{padding:16px 0;gap:16px;align-items:flex-start;}
  .admin .post-stub-main{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1;}
  .admin .post-stub-actions{
    display:flex;
    align-items:center;
    gap:10px;
    flex:0 0 auto;
    min-height:40px;
    padding-top:2px;
  }
  .admin .post-stub-actions .sticker-chip{margin:0;flex-shrink:0;}
  .admin .post-stub-actions .inline-field{margin:0;}
  .admin .post-stub-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .35em;}
  .admin .recap-comments{display:inline;}
  .admin .recap-comments > summary{
    display:inline;
    cursor:pointer;
    list-style:none;
    color:var(--gold);
  }
  .admin .recap-comments > summary::-webkit-details-marker,
  .admin .recap-comments > summary::marker{display:none;content:"";}
  .admin .recap-comments[open]{display:block;flex-basis:100%;}
  .admin .recap-comment-panel{margin-top:10px;}
  .admin .recap-comment{padding:10px 0;}
  .admin .recap-heading-row{
    display:grid;
    grid-template-columns:minmax(0,1.6fr) minmax(140px,.7fr);
    gap:16px 20px;
    align-items:start;
    margin-bottom:16px;
  }
  .admin .recap-heading-row .field{margin-bottom:0;}
  .admin .recap-heading-row select:has(option[value=""]:checked){color:var(--text-faint);}
  .admin .recap-heading-row select option{color:var(--text);}
  .admin .recap-heading-row select option[value=""]{color:var(--text-faint);}
  .admin .recap-title-sticker .sticker-picker{padding:8px;}
  .admin .recap-title-sticker .sticker-option{padding:8px 4px 6px;}
  .admin .recap-title-sticker .sticker-option-label{font-size:11px;}
  .admin .recap-composer.composer-box{
    background:var(--bg);
    border:1px solid var(--border);
    border-radius:var(--radius-sm);
    padding:10px 12px 8px;
  }
  .admin .recap-composer.composer-box:focus-within{
    outline:2px solid var(--gold);
    outline-offset:1px;
  }
  .admin .recap-surface{min-height:220px;font-size:15px;line-height:1.55;color:var(--text-1);}
  /* Notes on iPhone pastes black inline color, which disappears on this dark field. */
  .admin .recap-surface :is(span, font, b, strong, i, em, u, s, del, p, div, li, ul, ol, h1, h2, h3, h4):not(.link-chip):not(.link-chip-open):not(.link-chip-title):not(.link-chip-host):not(.link-chip-mark){
    color:inherit !important;
    -webkit-text-fill-color:currentColor !important;
    background:transparent !important;
    background-color:transparent !important;
  }
  .admin .recap-surface .post-photo{max-width:min(100%,420px);margin:10px 0;}
  .admin-dialog{
    border:1px solid var(--border);
    border-radius:var(--radius-card);
    background:var(--bg-elev);
    color:var(--text);
    padding:24px 24px 20px;
    max-width:420px;
    width:calc(100% - 32px);
  }
  .admin-dialog::backdrop{background:rgba(5,10,14,.62);}
  .admin-dialog .section-label{margin-top:0;}
  .admin-dialog .form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;}
  @media (max-width:720px){
    .admin .recap-heading-row{grid-template-columns:1fr;}
  }
  .admin .sticker-picker{margin:4px 0 8px;padding:12px;}
  .admin .admin-bar{padding:10px 32px;}
  .admin .topbar-inner{padding:16px 32px 0;}
  @media (max-width:900px){
    .admin .main{padding:20px 16px 48px;}
    .admin .admin-bar{padding:10px 16px;}
    .admin .section,
    .admin .picks-grid-wrap,
    .admin .admin-table{max-width:100%;}
    .admin .admin-table select{min-width:0;width:100%;}
    .admin .admin-table .cell-name{white-space:normal;}
    .admin .form-actions{gap:8px;}
    .admin .post-stub{flex-wrap:wrap;}
    .admin .post-stub-actions{margin-left:0;width:100%;justify-content:flex-end;}
    .admin .gif-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
    .admin .admin-form{grid-template-columns:1fr;}
    .admin .page-title{font-size:26px;}
    .admin .mobile-brand{font-size:14px;letter-spacing:.05em;}
  }

  .linklike:active, .linklike.is-loading{opacity:.65;}

  /* ---------- Sign-in ---------- */

  .admin-auth{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;}
  .auth-card{
    width:100%;
    max-width:410px;
    background:var(--bg-elev);
    border:1px solid var(--border);
    border-radius:var(--radius-card);
    box-shadow:var(--shadow-drop-lg);
    padding:30px;
  }
  .auth-title{
    font-family:var(--font-display);
    font-size:21px;
    font-weight:700;
    letter-spacing:0.04em;
    margin:0 0 9px;
  }
  .auth-sub{color:var(--text-dim);font-size:14px;line-height:1.6;margin:0 0 18px;}
  .auth-form{display:flex;flex-direction:column;gap:15px;}

  .field{display:flex;flex-direction:column;gap:6px;}
  .field-label{
    font-size:11px;
    letter-spacing:0.07em;
    text-transform:uppercase;
    color:var(--text-faint);
  }
  .field-hint{
    font-size:12.5px;
    color:var(--text-faint);
    line-height:1.45;
  }
  .field input,.field select,.field textarea{
    background:var(--bg);
    border:1px solid var(--border);
    border-radius:var(--radius-sm);
    color:var(--text);
    font-family:inherit;
    font-size:15px;
    padding:9px 11px;
    width:100%;
  }
  .field input.visually-hidden,
  .field input[type=file],
  .field input[hidden]{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    border:0;
    overflow:hidden;
    clip:rect(0,0,0,0);
    clip-path:inset(50%);
    white-space:nowrap;
  }
  .field input:focus,.field select:focus,.field textarea:focus{
    outline:2px solid var(--gold);
    outline-offset:1px;
  }

  /* ---------- Settings (season stepper, autosave, cards) ---------- */
  .admin:has(.settings-page) .main{max-width:min(1200px,100%);}
  .settings-page{
    display:grid;
    grid-template-columns:220px minmax(0,1fr);
    gap:40px;
    align-items:start;
  }
  .settings-toc{
    position:sticky;
    top:24px;
    display:flex;
    flex-direction:column;
    gap:2px;
  }
  .settings-page .admin-banner{margin:0;}
  .settings-toc-title{
    /* An h1 for the document outline, so reset the heading margin it brings. */
    margin:0;
    font-family:var(--font-display);
    font-variant:small-caps;
    font-weight:600;
    font-size:12px;
    letter-spacing:.12em;
    color:var(--text-dim);
    padding:0 12px 10px;
  }
  .settings-toc-link{
    text-decoration:none;
    padding:10px 12px;
    border-radius:6px;
    font-size:14px;
    color:var(--text-dim);
  }
  .settings-toc-link:hover{color:var(--text);}
  .settings-toc-link.is-active{
    font-weight:700;
    color:var(--text);
    background:var(--bg-elev);
    box-shadow:inset 3px 0 0 var(--gold);
  }
  .settings-toc-note{
    margin:18px 0 0;
    padding:10px 12px;
    font-size:12px;
    color:var(--text-dim);
    line-height:1.5;
  }
  .settings-body{display:flex;flex-direction:column;gap:28px;min-width:0;}
  .settings-card{
    background:var(--bg-elev);
    border:1px solid var(--border);
    border-radius:var(--radius-card);
    padding:22px 24px;
    display:flex;
    flex-direction:column;
    gap:14px;
  }
  .settings-card-head{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:16px;
    flex-wrap:wrap;
  }
  /* Keeps the meta line pinned right when the "Saved" note appears beside it. */
  .settings-card-head .settings-card-meta{margin-left:auto;}
  .settings-card-title{
    font-family:var(--font-display);
    font-variant:small-caps;
    font-weight:600;
    font-size:18px;
    margin:0;
  }
  .settings-card-meta{
    margin:0;
    font:12px var(--font-mono);
    color:var(--text-dim);
  }
  .settings-stepper{
    list-style:none;
    margin:0;
    padding:0;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:0;
  }
  .settings-step{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:8px;
    text-align:center;
    position:relative;
  }
  .settings-step:not(:last-child)::after{
    content:"";
    position:absolute;
    top:14px;
    left:50%;
    width:100%;
    height:2px;
    background:var(--border);
    z-index:0;
  }
  .settings-step.is-done:not(:last-child)::after{background:var(--gold);}
  .settings-step-mark{
    width:28px;
    height:28px;
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;
    font:700 12px var(--font-mono);
    position:relative;
    z-index:1;
    background:var(--bg-elev);
    border:2px solid var(--border);
    color:var(--text-dim);
  }
  .settings-step.is-done .settings-step-mark{
    background:var(--gold);
    border-color:var(--gold);
    color:#1e1204;
  }
  .settings-step.is-current .settings-step-mark{
    background:var(--gold);
    border-color:var(--gold);
    color:#1e1204;
    box-shadow:0 0 0 5px rgba(216,164,65,.22);
  }
  .settings-step-title{font-size:13px;font-weight:700;color:var(--text-dim);}
  .settings-step.is-current .settings-step-title{color:var(--gold);}
  .settings-step.is-done .settings-step-title{color:var(--text);}
  .settings-step-caption{font-size:12px;color:var(--text-dim);}
  .settings-next{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:16px;
    padding:14px 16px;
    background:var(--bg);
    border:1px solid var(--border);
    border-radius:8px;
  }
  .settings-next p{margin:0;font-size:14px;line-height:1.5;}
  .settings-next-actions{display:flex;gap:8px;align-items:center;flex-shrink:0;}
  .settings-next-actions form{margin:0;}
  .settings-back.btn-ghost{
    border-style:solid;
    border-color:transparent;
    color:var(--text-dim);
  }
  .settings-back.btn-ghost:hover:not(:disabled){color:var(--text);border-color:transparent;}
  .settings-threshold{
    display:grid;
    grid-template-columns:1fr auto;
    gap:24px;
    align-items:center;
    padding:14px 0 0;
    border-top:1px solid var(--border-soft);
    margin-top:4px;
  }
  .settings-threshold-title{font-size:15px;font-weight:700;}
  .settings-threshold-copy{font-size:13px;color:var(--text-dim);margin:2px 0 0;line-height:1.45;}
  .settings-threshold-copy b{color:var(--text);font-weight:700;}
  .settings-threshold-control{display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
  .settings-stepper-input{
    display:inline-flex;
    align-items:center;
    border:1.5px solid var(--border);
    border-radius:6px;
    overflow:hidden;
    background:var(--bg);
  }
  .settings-stepper-btn{
    width:44px;
    height:44px;
    border:0;
    background:transparent;
    color:var(--text);
    font-size:18px;
    cursor:pointer;
  }
  .settings-stepper-btn:hover{background:rgba(255,255,255,.04);}
  .settings-stepper-value{
    width:44px;
    height:44px;
    border:0;
    border-left:1px solid var(--border);
    border-right:1px solid var(--border);
    border-radius:0;
    background:transparent;
    color:var(--text);
    text-align:center;
    font:700 16px var(--font-mono);
    padding:0;
    -moz-appearance:textfield;
  }
  .settings-stepper-value::-webkit-outer-spin-button,
  .settings-stepper-value::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
  .settings-stepper-value:focus{outline:none;background:rgba(216,164,65,.08);}
  .settings-saved{
    font:12px var(--font-mono);
    color:#7fd0b0;
  }
  .settings-toggle{
    display:inline-flex;
    align-items:center;
    gap:10px;
    cursor:pointer;
    font-size:13px;
    color:var(--text-dim);
  }
  .settings-toggle input{
    position:absolute;
    opacity:0;
    width:1px;
    height:1px;
  }
  .settings-toggle-ui{
    position:relative;
    display:inline-block;
    width:40px;
    height:22px;
    border-radius:11px;
    background:var(--border);
    box-shadow:inset 0 1px 2px rgba(0,0,0,.4);
    flex-shrink:0;
  }
  .settings-toggle-ui::after{
    content:"";
    position:absolute;
    top:2px;
    left:2px;
    width:18px;
    height:18px;
    border-radius:50%;
    background:var(--text);
    box-shadow:0 1px 2px rgba(0,0,0,.5);
    transition:left .15s ease;
  }
  .settings-toggle input:checked + .settings-toggle-ui{background:var(--gold);}
  .settings-toggle input:checked + .settings-toggle-ui::after{left:20px;}
  .settings-toggle input:focus-visible + .settings-toggle-ui{outline:2px solid var(--gold);outline-offset:2px;}
  .settings-table-wrap{overflow-x:auto;}
  .settings-table{margin:0;font-size:14px;}
  .settings-table .col-right{text-align:right;}
  .settings-table td{vertical-align:top;padding-top:11px;padding-bottom:11px;}
  /* Wide enough that "Safety Without Power" is not cut off mid-word. */
  .settings-cell-name{width:24%;}
  .settings-cell-what{width:30%;}
  .admin-table .settings-cell-input{
    width:100%;
    min-width:0;
    background:transparent;
    border:1px solid transparent;
    border-radius:4px;
    color:inherit;
    font:inherit;
    font-weight:inherit;
    padding:6px 8px;
    margin:-6px -8px;
  }
  .admin-table .settings-cell-text{
    display:block;
    /* No drag handle: the box grows to fit its text instead. */
    resize:none;
    overflow:hidden;
    field-sizing:content;
    line-height:1.4;
    color:var(--text-2);
  }
  .settings-table td:first-child .settings-cell-input{font-weight:700;}
  .admin-table .settings-cell-input:hover{border-color:var(--border-soft);}
  .admin-table .settings-cell-input:focus{
    outline:none;
    border-color:var(--gold);
    background:var(--bg);
  }
  .settings-acquired{color:var(--text-dim);}
  .settings-in-use{font-size:12px;color:var(--text-dim);}
  .settings-page.js .settings-save-fallback{display:none;}
  .settings-add > summary{
    list-style:none;
    display:inline-flex;
    align-items:center;
    gap:8px;
    width:fit-content;
    cursor:pointer;
  }
  .settings-add > summary::-webkit-details-marker{display:none;}
  .settings-add-form{
    display:grid;
    grid-template-columns:minmax(0,240px) minmax(0,1fr) auto;
    gap:16px;
    /* Bottom-aligned so a label that wraps to two lines does not knock its
       own input out of line with the rest of the row. */
    align-items:end;
    margin-top:12px;
  }
  .settings-history-form{
    display:grid;
    grid-template-columns:92px 92px minmax(0,1fr) 110px auto;
    gap:16px;
    align-items:end;
    margin-top:12px;
  }
  .settings-history-add{
    display:grid;
    grid-template-columns:92px 92px minmax(0,1fr) 110px auto;
    gap:16px;
    align-items:end;
    padding:14px 12px;
    border:1px solid var(--gold);
    border-radius:8px;
    background:var(--bg);
  }
  .settings-add[open] .settings-add-form{
    padding:14px 12px;
    border:1px solid var(--gold);
    border-radius:8px;
    background:var(--bg);
  }
  .settings-add-field{
    display:flex;
    flex-direction:column;
    gap:6px;
    min-width:0;
    font-size:12px;
    color:var(--text-dim);
  }
  .settings-add-wide{grid-column:span 2;}
  .settings-add-note{grid-column:1 / -1;}
  .settings-add-field input{
    display:block;
    width:100%;
    min-height:40px;
    padding:0 10px;
    border:1px solid var(--border);
    border-radius:6px;
    background:var(--bg-elev);
    color:var(--text);
    font:14px var(--font-body);
  }
  .settings-add-actions{
    display:flex;
    gap:6px;
    flex-wrap:wrap;
  }
  .settings-hint{font-size:12px;color:var(--text-faint);}
  .settings-history-card{
    display:grid;
    grid-template-columns:90px 1fr 110px auto;
    gap:16px;
    align-items:center;
    padding:14px 12px;
    border:1px solid var(--border-soft);
    border-radius:8px;
  }
  .settings-history-num{
    font:700 16px var(--font-display);
  }
  .settings-history-year{font:12px var(--font-mono);color:var(--text-dim);}
  .settings-history-count{font:700 15px var(--font-mono);}
  .settings-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;}
  .settings-chip{
    padding:4px 10px;
    border-radius:999px;
    background:var(--bg);
    border:1px solid var(--border);
    font-size:13px;
  }
  .settings-history-edit > summary{
    list-style:none;
    cursor:pointer;
    width:fit-content;
  }
  .settings-history-edit > summary::-webkit-details-marker{display:none;}
  .settings-history-edit[open]{grid-column:1 / -1;}
  .settings-history-form{grid-column:1 / -1;}
  /* Note already takes a full row, so the buttons need one too rather than
     being squeezed into the leftover 92px column. */
  .settings-history-form .settings-add-actions{grid-column:1 / -1;}
  @media (max-width:900px){
    .settings-page{grid-template-columns:1fr;gap:20px;}
    .settings-toc{
      position:static;
      flex-direction:row;
      flex-wrap:wrap;
      gap:4px;
    }
    .settings-toc-title{width:100%;padding:0 0 4px;}
    .settings-toc-note{width:100%;margin-top:8px;padding:0;}
    .settings-toc-link.is-active{box-shadow:none;background:var(--gold-soft);color:var(--gold);}
    .settings-stepper{grid-template-columns:repeat(2,1fr);gap:16px 8px;}
    .settings-step:nth-child(2)::after{display:none;}
    .settings-next,
    .settings-threshold,
    .settings-history-card,
    .settings-add-form,
    .settings-history-form,
    .settings-history-add{grid-template-columns:1fr;}
    .settings-next{flex-direction:column;align-items:stretch;}
    .settings-next-actions{flex-wrap:wrap;}
    .settings-threshold-control{align-items:flex-start;}
    .settings-add-wide{grid-column:auto;}
  }

  /* ---------- Admin: start a season ---------- */
  .season-lead{max-width:68ch;}
  .season-steps{
    list-style:none;
    margin:0 0 18px;
    padding:0;
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:12px;
  }
  .season-step{
    display:flex;
    align-items:center;
    gap:10px;
    padding:12px 14px;
    border-radius:8px;
    background:var(--bg-elev);
    border:1px solid var(--border);
    font-size:13.5px;
    font-weight:700;
    color:var(--text-dim);
  }
  .season-step-num{
    width:24px;
    height:24px;
    border-radius:50%;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
    border:2px solid var(--border);
    font:700 11px var(--font-mono);
  }
  .season-step.is-done{color:var(--text);}
  .season-step.is-done .season-step-num{background:var(--gold);border-color:var(--gold);color:#1e1204;}
  .season-step.is-current{border-color:var(--gold);color:var(--gold);}
  .season-step.is-current .season-step-num{
    background:var(--gold);
    border-color:var(--gold);
    color:#1e1204;
    box-shadow:0 0 0 4px rgba(216,164,65,0.22);
  }
  .season-card{
    background:var(--bg-elev);
    border:1px solid var(--border);
    border-radius:12px;
    padding:20px 22px;
    margin-bottom:18px;
  }
  .season-card-title{
    margin:0 0 12px;
    font-family:var(--font-display);
    font-variant:small-caps;
    font-weight:600;
    font-size:16px;
  }
  .season-pull{
    display:grid;
    grid-template-columns:1fr auto;
    gap:20px;
    align-items:center;
  }
  .season-pull-main{display:flex;align-items:center;gap:16px;}
  .season-pull-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
  .season-number{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-dim);}
  .season-number input{
    width:110px;
    min-height:44px;
    padding:0 12px;
    border:1.5px solid var(--border);
    border-radius:6px;
    background:var(--bg);
    color:var(--text);
    font:700 16px var(--font-mono);
  }
  .season-pull-note{margin:0;font-size:13.5px;color:var(--text-dim);line-height:1.5;max-width:52ch;}
  .season-sync-ok{margin:0;font:12px var(--font-mono);color:var(--teal);}
  .season-note{margin:0;font-size:12.5px;color:var(--text-dim);}
  .season-split{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
  .season-split .season-card{margin:0;}
  .season-facts{display:grid;grid-template-columns:130px 1fr;gap:8px 14px;margin:0;font-size:14px;}
  .season-facts dt{color:var(--text-dim);}
  .season-facts dd{margin:0;}
  .season-tribes{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:8px;}
  .season-tribes li{display:flex;align-items:center;gap:12px;}
  .season-swatch{width:22px;height:22px;border-radius:5px;flex-shrink:0;}
  .season-tribe-name{font-weight:700;}
  .season-tribe-count{font:12px var(--font-mono);color:var(--text-dim);}
  .season-tribe-missing{color:var(--text-dim);font-size:13px;}
  .season-cast-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;}
  .season-cast-head .season-card-title{margin:0;}
  .season-table-wrap{overflow-x:auto;}
  .season-table{width:100%;border-collapse:collapse;font-size:14px;}
  .season-table th{
    text-align:left;
    font:700 11px var(--font-display);
    font-variant:small-caps;
    letter-spacing:0.1em;
    color:var(--text-dim);
    padding:0 10px 8px;
    border-bottom:1px solid var(--border);
  }
  .season-table td{padding:8px 10px;border-bottom:1px solid var(--border-soft);vertical-align:middle;}
  .season-cell{display:flex;align-items:center;gap:8px;}
  .season-table td:nth-child(2) .season-cell input{min-width:14rem;}
  .season-cell input{
    width:100%;
    min-width:0;
    padding:6px 8px;
    border:1px solid transparent;
    border-radius:6px;
    background:transparent;
    color:inherit;
    font:inherit;
  }
  .season-cell input:hover,
  .season-cell input:focus{border-color:var(--border);background:var(--bg);outline:none;}
  .season-cell.is-missing input{color:var(--ember);}
  .season-cell.is-missing input::placeholder{color:var(--ember);font:11px var(--font-mono);}
  .season-source{font:12px var(--font-mono);color:var(--text-dim);}
  .season-photo{width:48px;}
  .season-photo img{width:40px;height:40px;aspect-ratio:1;object-fit:cover;object-position:center;border-radius:6px;display:block;background:var(--bg-elev-2);}
  .season-remove{min-height:32px;padding:0 10px;font-size:13px;white-space:nowrap;}
  .season-tribe-cell input{font-weight:700;}
  .season-missing{
    margin:12px 0 0;
    padding:10px 12px;
    border-radius:6px;
    background:var(--bg);
    border-left:3px solid var(--ember);
    font-size:13px;
    color:var(--text);
  }
  .season-carry{margin-top:18px;}
  .season-carry-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;}
  .season-carry-item{display:flex;gap:12px;align-items:flex-start;}
  .season-carry-item input{margin-top:4px;accent-color:var(--gold);}
  .season-carry-item.is-disabled{opacity:0.7;}
  .season-start{
    margin-top:18px;
    padding:20px 22px;
    border-radius:12px;
    border:1px solid var(--gold);
    background:linear-gradient(180deg, rgba(216,164,65,0.10), var(--bg-elev) 45%);
    display:grid;
    grid-template-columns:1fr auto;
    gap:20px;
    align-items:center;
  }
  .season-start p{margin:0;font-size:14px;line-height:1.6;color:var(--text);}
  .season-start-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px;}
  .season-next{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:16px;
    margin:0 0 18px;
    padding:16px 18px;
    border-radius:12px;
    border:1px solid var(--gold);
    background:linear-gradient(180deg, rgba(216,164,65,0.10), var(--bg-elev) 45%);
  }
  .season-next p{margin:0;max-width:62ch;}
  .season-code{font:12px var(--font-mono);}
  @media (max-width:760px){
    .season-steps,
    .season-split,
    .season-carry-grid,
    .season-pull,
    .season-start,
    .season-next{grid-template-columns:1fr;}
    .season-pull-main,
    .season-next{flex-direction:column;align-items:stretch;}
    .season-pull-side,
    .season-start-actions{align-items:stretch;}
    .season-start-actions .btn{width:100%;}
  }

  /* ---------- Finale ---------- */
  .finale-hold,.finale-champions{display:flex;flex-direction:column;gap:22px;}
  .finale-hold-hero,.tb-hero{
    padding:28px 20px;border-radius:16px;background:var(--surface-2);border:1px solid var(--line-2);text-align:center;
  }
  .finale-hold-hero h1,.tb-hero h1{
    font-family:var(--font-display);font-variant:small-caps;font-weight:700;font-size:clamp(26px,4vw,40px);line-height:1.1;margin:8px 0;
  }
  .finale-hold-hero p,.tb-winner{color:var(--text-2);margin:0 auto;max-width:46ch;}
  .finale-hold-icon{width:64px;height:64px;color:var(--text-3);}
  .finale-hold-icon path:last-child{stroke:var(--gold);}
  .finale-share{display:flex;flex-direction:column;gap:12px;}
  .finale-share-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;}
  .finale-share-toggle{display:inline-flex;border:1px solid var(--line-2);border-radius:6px;overflow:hidden;}
  .finale-share-toggle label{min-height:32px;padding:6px 10px;font-size:12px;font-weight:600;cursor:pointer;}
  #share-finalists:checked ~ .finale-share-head label[for="share-finalists"],
  #share-everyone:checked ~ .finale-share-head label[for="share-everyone"]{
    color:var(--gold);background:var(--gold-tint);box-shadow:inset 0 0 0 1px var(--gold);
  }
  .finale-share .share-everyone{display:none;}
  #share-everyone:checked ~ .share-everyone{display:block;}
  #share-everyone:checked ~ .share-finalists{display:none;}
  .finale-bars{display:flex;flex-direction:column;gap:9px;}
  .finale-bar{display:grid;grid-template-columns:84px 1fr 44px;gap:10px;align-items:center;}
  .finale-bar-name{font-size:14px;font-weight:600;}
  .finale-bar-track{height:12px;background:var(--surface-3);border-radius:6px;overflow:hidden;}
  .finale-bar-track span{display:block;height:100%;background:var(--gold);border-radius:6px;}
  .finale-bar-pct{font:700 12px var(--font-mono);text-align:right;}
  .finale-share-note{font-size:12.5px;color:var(--text-3);margin:8px 0 0;}
  .finale-highlight-grid,.finale-stats,.tb-cards{display:grid;gap:8px;}
  .finale-highlight-grid,.finale-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));}
  .finale-highlight,.finale-stats div{padding:12px;border-radius:10px;background:var(--surface-2);}
  .finale-highlight strong,.finale-stats strong{display:block;font-family:var(--font-display);font-size:20px;line-height:1.15;}
  .finale-highlight span,.finale-stats span{display:block;margin-top:3px;font-size:12px;color:var(--text-3);line-height:1.35;}
  .finale-highlight.is-out strong,.finale-stats .is-out{color:var(--rust);}
  .finale-highlight.is-gold strong,.finale-stats .is-gold{color:var(--gold);}
  .tb-kicker{font:12px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);margin:0;}
  .tb-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:18px;text-align:left;}
  .tb-cards.is-many{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}
  .tb-card{padding:16px;border-radius:12px;background:var(--surface-1);border:1px solid var(--line-2);}
  .tb-card h2{font-family:var(--font-display);font-variant:small-caps;font-size:22px;margin:0;}
  .tb-card-compact h2{font-size:16px;}
  .tb-card-kicker,.tb-card-titles,.tb-card-note,.tb-card p{color:var(--text-3);font-size:13px;margin:4px 0 0;}
  .tb-card-stars{color:var(--gold);font-weight:700;}
  .reveal-again{margin-top:14px;}
  .finale-pick-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;}
  .finale-pick-list li{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;padding:10px 0;border-bottom:1px solid var(--line-1);}
  .finale-pick-name{font-weight:700;}
  .finale-pick-result.is-called,.finale-result.is-called{color:#7fd0b0;font-weight:600;}
  .finale-pick-result.is-missed,.finale-result.is-missed,.finale-pick-result.is-none{color:var(--text-3);}
  .finale-recap h2{font-family:var(--font-display);font-size:22px;margin:6px 0;}
  .finale-preview-banner{margin:0 0 12px;padding:10px 12px;border-radius:8px;background:var(--gold-tint);color:var(--gold);font-weight:700;}
  .finale-admin{display:flex;flex-direction:column;gap:18px;max-width:1040px;}
  .finale-badge{display:inline-block;font:700 11px var(--font-mono);letter-spacing:.12em;color:var(--ember);border:1px solid #b8531f;border-radius:4px;padding:6px 10px;background:rgba(184,83,31,.12);}
  .finale-badge.is-live{color:#7fd0b0;border-color:#7fd0b0;background:transparent;}
  .finale-card,.finale-publish{background:var(--surface-2);border:1px solid var(--line-2);border-radius:12px;padding:20px;}
  .finale-publish{border-color:var(--gold);background:linear-gradient(180deg,rgba(216,164,65,.1),var(--surface-2) 45%);display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;}
  .finale-card-head,.finale-publish-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}
  .finale-card h2{font-family:var(--font-display);font-variant:small-caps;font-size:18px;margin:0;}
  .finale-saved{color:#7fd0b0;font:12px var(--font-mono);margin:0;}
  .finale-rule{padding:12px 14px;border-radius:6px;background:var(--surface-0);border-left:3px solid var(--s51-shallow);font-size:13px;line-height:1.5;margin:8px 0;}
  .finale-rule.is-quiet{border-left-color:var(--line-2);}
  .finale-counts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px;}
  .finale-counts div{padding:12px;border-radius:8px;background:var(--surface-0);border:1px solid var(--line-1);}
  .finale-counts strong{display:block;font-family:var(--font-display);font-size:22px;}
  .finale-counts span{font-size:12px;color:var(--text-3);}
  .finale-filters{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;}
  .finale-filters button,.finale-filters input{min-height:40px;border-radius:6px;border:1px solid var(--line-2);background:transparent;color:var(--text-1);padding:0 12px;}
  .finale-filters button[aria-pressed="true"]{border-color:var(--gold);color:var(--gold);background:var(--gold-tint);}
  .finale-table-wrap.is-scroll{max-height:420px;overflow:auto;}
  .finale-table-wrap.is-scroll th{position:sticky;top:0;background:var(--surface-2);}
  .finale-row-cards{display:none;flex-direction:column;gap:10px;}
  .finale-person{border:1px solid var(--line-1);border-radius:8px;padding:12px;background:var(--surface-1);}
  .finale-person-head,.finale-person-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;}
  .finale-person-actions{margin-top:8px;padding-top:8px;border-top:1px solid var(--line-1);}
  .torch-pill{display:inline-flex;font:700 11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#1e1204;background:var(--gold);border-radius:4px;padding:3px 8px;}
  .finale-flag{font-weight:600;}
  html.reveal-seen .reveal{display:none;}
  .reveal{position:fixed;inset:0;z-index:40;background:#05090d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:24px;transition:opacity 1.1s ease,transform 1.1s ease;}
  .reveal.done{opacity:0;transform:translateY(-16px);pointer-events:none;}
  .reveal-kicker{font:12px var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--text-3);opacity:0;transition:opacity .9s ease;}
  .reveal-kicker.on{opacity:1;}
  .reveal-torches{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:center;gap:clamp(18px,6vw,64px);max-width:1100px;}
  .reveal.compact .reveal-torches{gap:14px 10px;}
  .reveal.dense .reveal-torches{gap:6px 4px;max-width:900px;}
  .reveal-torch{display:flex;flex-direction:column;align-items:center;gap:14px;width:clamp(88px,22vw,150px);}
  .reveal.compact .reveal-torch{width:96px;gap:8px;}
  .reveal.dense .reveal-torch{width:44px;gap:4px;}
  .reveal-flame{position:relative;width:64px;height:110px;display:flex;align-items:flex-end;justify-content:center;}
  .reveal.compact .reveal-flame{width:48px;height:84px;}
  .reveal.dense .reveal-flame{width:34px;height:60px;}
  .reveal-flame svg{width:100%;height:100%;overflow:visible;transform-origin:50% 100%;opacity:0;transform:scaleY(.05);transition:opacity .35s ease,transform .9s cubic-bezier(.2,.9,.3,1.15);}
  .reveal-torch.lit .reveal-flame svg{opacity:1;transform:scaleY(1);animation:reveal-sway 3.2s ease-in-out infinite;}
  .reveal-stick{width:10px;height:70px;border-radius:5px;background:linear-gradient(180deg,#5a3b22,#2b1a10);}
  .reveal.compact .reveal-stick{height:50px;width:8px;}
  .reveal.dense .reveal-stick{height:36px;width:6px;}
  .reveal-name{font:700 clamp(16px,3.4vw,24px)/1.15 var(--font-display);font-variant:small-caps;color:var(--gold);text-align:center;opacity:0;transition:opacity .7s ease .35s;}
  .reveal-titles{font:12px var(--font-mono);color:var(--text-3);text-align:center;opacity:0;transition:opacity .7s ease .6s;}
  .reveal.dense .reveal-name,.reveal.dense .reveal-titles{display:none;}
  .reveal-torch.lit .reveal-name,.reveal-torch.lit .reveal-titles{opacity:1;}
  .reveal-names{display:none;flex-wrap:wrap;justify-content:center;gap:6px 18px;max-width:900px;font:700 clamp(14px,2.4vw,18px)/1.3 var(--font-display);font-variant:small-caps;color:var(--gold);opacity:0;transition:opacity 1s ease;}
  .reveal.dense .reveal-names{display:flex;}
  .reveal-names.on{opacity:1;}
  .reveal-headline{font:700 clamp(28px,5.5vw,52px)/1.05 var(--font-display);font-variant:small-caps;text-align:center;margin:0;opacity:0;transform:translateY(10px);transition:opacity 1s ease,transform 1s ease;}
  .reveal-headline.on{opacity:1;transform:none;}
  .reveal-skip{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:41;min-height:44px;padding:0 14px;border-radius:6px;border:1px solid var(--line-2);background:rgba(11,18,25,.7);color:var(--text-2);cursor:pointer;}
  .reveal-spark{position:fixed;width:3px;height:3px;border-radius:50%;background:#ffc35a;pointer-events:none;z-index:42;transition:transform 1.3s ease-out,opacity 1.3s ease-out;}
  @keyframes reveal-sway{0%,100%{rotate:-2deg}50%{rotate:2deg}}
  @media (max-width:760px){
    .finale-table-wrap{display:none;}
    .finale-row-cards{display:flex;}
    .finale-publish,.finale-counts,.finale-pick-list li{grid-template-columns:1fr;}
    .tb-cards.is-many{grid-template-columns:repeat(2,1fr);}
  }
  @media (prefers-reduced-motion:reduce){
    .reveal,.reveal-flame svg,.reveal-name,.reveal-headline,.reveal-kicker{transition-duration:.2s;}
    .reveal-torch.lit .reveal-flame svg{animation:none;}
  }

  /* ---------- Roster roles and design notes ---------- */
  .roster-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:0 0 16px;}
  .roster-find{max-width:420px;margin:0;flex:1 1 240px;}
  .roster-sort{margin:0;flex:0 1 220px;}
  .roster-table tr[hidden],[data-roster-group][hidden]{display:none !important;}
  .roster-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;}
  .roster-head .section-intro{max-width:70ch;}
  .seg{display:inline-flex;border:1px solid var(--line-admin-1, var(--line-2));border-radius:6px;overflow:hidden;margin:0 0 18px;}
  .seg a,.seg label{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border-right:1px solid var(--line-admin-1, var(--line-2));color:var(--text-2);font-weight:600;font-size:12.5px;text-decoration:none;cursor:pointer;}
  .seg a:last-child,.seg label:last-child{border-right:0;}
  .seg a[aria-current="true"],.seg label:has(input:checked){background:rgba(216,164,65,.16);color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);}
  .seg input{position:absolute;opacity:0;width:1px;height:1px;}
  .role-badge{display:inline-flex;align-items:center;gap:6px;font:700 11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:6px;}
  .role-badge.is-observer{background:#2b3a44;color:#d9e6ea;}
  .role-badge.is-reviewer{background:#3b2f4a;color:#e6dcf3;}
  .role-perms{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--text-2);}
  .role-perms .is-on{color:#7fd0b0;}
  .roster-bulk{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:0 0 14px;}
  .roster-bulk .field{margin:0;min-width:220px;}
  .roster-bulk .section-intro{flex:1 1 220px;margin:0;}
  .roster-check{width:36px;text-align:center;}
  .roster-check input{width:auto;}
  .cell-actions{text-align:right;}
  .cell-actions .inline-field{display:inline-flex;margin:0 0 6px 6px;}
  .roster-pick{align-items:center;gap:6px;}
  .roster-pick select{max-width:11rem;}
  .cell-name .cell-mono{display:block;font-weight:400;}
  .recap-toggle{margin:0;}
  .recap-toggle label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:12.5px;color:var(--text-2);}
  .recap-toggle label.is-on{color:#7fd0b0;}
  .recap-toggle input{position:absolute;opacity:0;width:1px;height:1px;}
  .recap-toggle .switch{position:relative;width:36px;height:20px;border-radius:10px;background:#4a3c2b;}
  .recap-toggle .switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#f2ede0;}
  .recap-toggle label.is-on .switch{background:#1a6350;}
  .recap-toggle label.is-on .switch::after{left:18px;}
  .roster-add{border:1px solid var(--gold);border-radius:12px;padding:18px 20px;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end;}
  .roster-add-fields{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:12px;}
  .roster-add-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end;}
  .roster-add-actions .seg{margin:0;}
  .role-notes{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-top:18px;}
  .role-notes > div{padding:12px 14px;border-radius:6px;background:var(--surface-admin-2, var(--surface-2));font-size:13px;color:var(--text-2);line-height:1.5;}
  .role-notes > div:nth-child(1){border-left:3px solid #1f6f7a;}
  .role-notes > div:nth-child(2){border-left:3px solid #b8531f;}
  .role-notes > div:nth-child(3){border-left:3px solid #7d5bb0;}
  .watcher-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 28px;font-size:13px;}
  .watcher-banner-copy{display:inline-flex;align-items:center;gap:8px;}
  .watcher-banner.is-observer{background:#2b3a44;color:#d9e6ea;}
  .watcher-banner.is-observer a{color:#d9e6ea;}
  .watcher-banner.is-reviewer{background:#3b2f4a;color:#e6dcf3;}
  .reviewer-admin-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 28px;background:#3b2f4a;color:#e6dcf3;font-size:13.5px;}
  .reviewer-admin-hint{font:11px var(--font-mono);color:#cfc2e0;}
  .reviewer-tag{font:700 10.5px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#e6dcf3;border:1px solid #7d5bb0;border-radius:3px;padding:2px 7px;align-self:center;margin-bottom:12px;}
  .notes-dock{position:fixed;right:24px;bottom:24px;z-index:30;width:min(360px, calc(100vw - 32px));background:#111c25;border:1px solid #7d5bb0;border-radius:14px;box-shadow:0 16px 40px rgba(0,0,0,.55);}
  .notes-dock summary{display:flex;align-items:center;gap:8px;padding:12px 14px;background:#3b2f4a;color:#e6dcf3;cursor:pointer;font-family:var(--font-display);font-variant:small-caps;font-weight:600;}
  .notes-dock-body{padding:12px 14px;display:flex;flex-direction:column;gap:10px;max-height:360px;overflow:auto;}
  .note-kicker{margin:0;font:11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);}
  .note-empty{margin:0;color:var(--text-3);font-size:13px;}
  .note-card{padding:12px 14px;border-radius:8px;background:#0f1a22;border:1px solid #1f2f3a;}
  .note-card p{margin:0;}
  .note-card-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
  .note-meta{margin-top:6px !important;font:11.5px var(--font-mono);color:var(--text-3);}
  .note-status{font:700 10.5px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:4px;}
  .note-status.is-open{color:#7fd0b0;background:rgba(127,208,176,.14);border:1px solid rgba(127,208,176,.5);}
  .note-status.is-done{color:var(--text-3);background:#2b241a;border:1px solid #4a3c2b;}
  .note-reply{margin-top:10px;padding:10px 12px;border-left:3px solid var(--gold);background:#1a1610;font-size:13.5px;line-height:1.5;}
  .note-reply-by{font:11px var(--font-mono);color:var(--gold);margin-bottom:3px;}
  .note-actions,.note-compose{display:flex;flex-direction:column;gap:8px;margin-top:8px;}
  .note-actions textarea,.note-compose textarea{min-height:72px;padding:10px 12px;border:1.5px solid #2c4250;border-radius:8px;background:#0f1a22;color:inherit;font:14px var(--font-body);resize:vertical;}
  .note-action-row,.note-compose-row{display:flex;justify-content:space-between;align-items:center;gap:8px;}
  .note-compose-row span{font:11px var(--font-mono);color:var(--text-3);}
  .btn-note{min-height:40px;padding:0 14px;border-radius:8px;border:1.5px solid #7d5bb0;background:#7d5bb0;color:#fff;font-weight:700;}
  .note-inbox-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
  .note-inbox-head h2{margin:0;font-family:var(--font-display);font-variant:small-caps;}
  .note-list{display:flex;flex-direction:column;gap:10px;margin-top:12px;}
  .note-count{font:700 11px var(--font-mono);color:#7fd0b0;margin-left:6px;}
  .settings-card .note-card{background:var(--bg, #100e0a);}
  body.admin.is-reviewer form:not([data-reviewer-ok]){opacity:.72;}
  @media (max-width:760px){
    .roster-add,.role-notes{grid-template-columns:1fr;}
    .roster-add-fields{grid-template-columns:1fr;}
    .watcher-banner,.reviewer-admin-banner{flex-direction:column;align-items:flex-start;padding:10px 16px;}
    .notes-dock{right:12px;bottom:72px;}
    .roster-tools{display:block;}
    .roster-find,.roster-sort{max-width:none;margin:0 0 12px;}
    .roster-find input,.roster-sort select{font-size:16px;}
    .seg{display:flex;flex-wrap:wrap;width:100%;}
    .seg a,.seg label{flex:1 1 46%;justify-content:center;padding:8px;text-align:center;border-bottom:1px solid var(--line-admin-1, var(--line-2));}
    .roster-table,.roster-table tbody,.roster-table tr,.roster-table td,.roster-table th{display:block;width:auto;}
    .roster-table thead{display:none;}
    .roster-table tr{padding:14px 0;border-bottom:1px solid var(--line-admin-1, var(--line-2));}
    .roster-table td,.roster-table th{padding:0;border:0;background:transparent !important;text-align:left;}
    .roster-table .cell-name{font-size:16px;}
    .roster-table .cell-mono{overflow-wrap:anywhere;}
    .roster-table td[data-label]{margin-top:8px;}
    .roster-table td[data-label]::before{
      content:attr(data-label);
      display:block;
      margin-bottom:2px;
      font:700 10px var(--font-mono);
      letter-spacing:.08em;
      text-transform:uppercase;
      color:var(--text-3);
    }
    .roster-table .cell-actions{
      display:flex;
      flex-direction:column;
      align-items:stretch;
      gap:8px;
      margin-top:12px;
      text-align:left;
    }
    .roster-table .cell-actions .inline-field{display:flex;flex-wrap:wrap;gap:8px;width:100%;margin:0;}
    .roster-table .cell-actions .btn{flex:1 1 auto;min-height:44px;}
    .roster-table .cell-actions input[type=text],
    .roster-table .cell-actions select{flex:1 1 120px;width:auto;min-width:0;max-width:none;min-height:44px;}
    .roster-table tr:has(.roster-check){display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:8px;}
    .roster-table tr:has(.roster-check) > .roster-check{grid-row:1;grid-column:1;align-self:center;}
    .roster-table tr:has(.roster-check) > :not(.roster-check){grid-column:2;}
  }


  /* ---------- Rehearsal ---------- */
  .rehearsal-stop{
    display:grid;
    gap:6px;
    justify-items:start;
    padding:14px 0;
    border-top:1px solid var(--border-soft);
  }
  .rehearsal-stop p{margin:0;color:var(--text-2);font-size:14px;line-height:1.45;}
  .rehearsal-stop:last-child{border-bottom:1px solid var(--border-soft);}

  /* ---------- Polls ---------- */
  .poll-card,.poll-builder,.poll-admin-card{
    border:1px solid var(--border-soft);
    border-radius:10px;
    background:rgba(216,164,65,.06);
    padding:16px;
    margin:16px 0;
  }
  .poll-kicker,.poll-total,.poll-names,.poll-chip-meta{
    font:11px var(--font-mono);
    color:var(--text-3);
    margin:0;
  }
  .poll-question{margin:6px 0 12px;font-family:var(--font-display);font-size:22px;line-height:1.2;}
  .poll-called{margin:0 0 12px;color:var(--gold);font-weight:700;}
  .poll-choices{display:flex;flex-direction:column;gap:8px;}
  .poll-choice{display:flex;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--border-soft);border-radius:8px;}
  .poll-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;}
  .poll-foot p{margin:0;font:11px var(--font-mono);color:var(--text-3);}
  .poll-result{margin:0 0 10px;}
  .poll-result-row{display:flex;justify-content:space-between;gap:8px;font-size:14px;}
  .poll-yours{margin-left:8px;color:var(--gold);font:700 11px var(--font-mono);}
  .poll-track{height:8px;border-radius:99px;background:#1c2a33;overflow:hidden;margin-top:4px;}
  .poll-bar{display:block;height:100%;background:var(--gold);}
  .poll-result.is-mine .poll-bar{background:#7fd0b0;}
  .poll-names{margin-top:4px;}
  .poll-identity{margin-top:12px;}
  .poll-change{margin-top:8px;}
  .poll-chip{
    display:flex;justify-content:space-between;align-items:center;gap:12px;
    margin:8px 0;padding:10px 12px;border:1px dashed var(--gold);border-radius:8px;
    background:rgba(216,164,65,.08);
  }
  .poll-chip-copy{display:flex;flex-direction:column;gap:2px;}
  .poll-chip-actions{display:flex;gap:8px;}
  .poll-chip-actions button{font:12px var(--font-mono);background:none;border:0;color:var(--gold);cursor:pointer;}
  /* Desktop: the builder sits beside the recap, the way the Torch Talk design shows it. */
  @media (min-width:1100px){
    body.admin .main:has(form[data-recap-editor] > .poll-builder:not([hidden])){
      max-width:min(1468px, calc(100vw - 32px));
    }
    form[data-recap-editor]:has(> .poll-builder:not([hidden])){
      display:grid;
      grid-template-columns:minmax(0, 1fr) 420px;
      column-gap:28px;
      align-items:start;
    }
    form[data-recap-editor]:has(> .poll-builder:not([hidden])) > *{grid-column:1;}
    form[data-recap-editor]:has(> .poll-builder:not([hidden])) > .poll-builder{
      grid-column:2;
      grid-row:1 / span 24;
      position:sticky;
      top:24px;
      align-self:start;
      margin:0;
      max-height:calc(100vh - 40px);
      overflow:auto;
      border-color:var(--gold);
      background:var(--bg-elev);
      border-radius:12px;
    }
  }
  .poll-option{display:grid;grid-template-columns:24px minmax(0,1fr) 28px;gap:8px;align-items:center;margin-bottom:6px;min-width:0;}
  .poll-option-n{font:12px var(--font-mono);color:var(--text-3);}
  .poll-option-grip{display:none;}
  .poll-hint-phone,.poll-cast-label-short{display:none;}
  .poll-sheet,.poll-sheet-body{display:contents;}
  .poll-sheet-bar,.poll-sheet-foot{display:none;}
  .poll-option-actions,.poll-admin-actions,.poll-admin-head,.poll-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
  .poll-when:not([hidden]){display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
  .poll-segments{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
  .poll-segments button{border:1px solid var(--border-soft);background:transparent;color:inherit;border-radius:99px;padding:6px 10px;font:12px var(--font-mono);cursor:pointer;}
  .poll-segments button[aria-pressed="true"]{border-color:var(--gold);color:var(--gold);}
  .poll-admin-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
  .poll-filters a{font:12px var(--font-mono);color:var(--text-2);text-decoration:none;}
  .poll-filters a[aria-current="true"]{color:var(--gold);}
  .poll-voters p{display:flex;gap:10px;margin:4px 0;font-size:13px;}
  .poll-voters p span:last-child{margin-left:auto;color:var(--text-3);font:11px var(--font-mono);}
  .poll-preview{margin-top:8px;padding:10px;border-radius:8px;background:#0f1a22;}
  @media (max-width:760px){
    .poll-foot,.poll-admin-top{flex-direction:column;align-items:flex-start;}
  }
  @media (max-width:900px){
    body.admin .main,
    form[data-recap-editor],
    .poll-card,.poll-admin-card,.poll-chip,.composer-box{
      max-width:100%;
      min-width:0;
    }
    .poll-card,.poll-result-label,.poll-choice span{overflow-wrap:anywhere;}
    .poll-hint-desk,.poll-cast-label-long,.poll-sheet-kicker,.poll-roster-note,.poll-builder .form-actions{display:none;}
    .poll-hint-phone,.poll-cast-label-short{display:inline;}
    html:has(body.poll-sheet-open),
    body.poll-sheet-open{overflow:hidden;height:100%;}
    .poll-builder:not([hidden]){
      position:fixed;
      inset:0;
      z-index:40;
      margin:0;
      padding:0;
      border:0;
      border-radius:0;
      background:rgba(0,0,0,.55);
      max-width:100%;
      overflow:hidden;
    }
    .poll-sheet:not([hidden]),
    .poll-cast:not([hidden]){
      display:flex;
      flex-direction:column;
      position:absolute;
      left:0;
      right:0;
      top:36px;
      bottom:0;
      margin:0;
      background:var(--bg-elev);
      border:0;
      border-top:1px solid var(--gold);
      border-radius:16px 16px 0 0;
      max-width:100%;
      min-width:0;
      overflow:hidden;
      transition:transform .2s ease;
    }
    .poll-sheet-body,.poll-cast-list{
      display:flex;
      flex-direction:column;
      gap:8px;
      flex:1;
      min-height:0;
      min-width:0;
      overflow-x:hidden;
      overflow-y:auto;
      padding:16px;
    }
    .poll-sheet-bar{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:8px;
      padding:10px 16px 12px;
      border-bottom:1px solid var(--border-soft);
      flex:0 0 auto;
    }
    .poll-sheet-bar button{
      min-height:44px;
      padding:0 6px;
      border:0;
      background:transparent;
      color:var(--text-3);
      font:600 15px var(--font-body);
      cursor:pointer;
    }
    .poll-sheet-bar [data-poll-preview-btn]{color:var(--gold);font-weight:700;}
    .poll-sheet-title{
      display:flex;
      flex-direction:column;
      align-items:center;
      font-family:var(--font-display);
      font-variant:small-caps;
      font-weight:600;
      font-size:17px;
    }
    .poll-sheet-grab{width:36px;height:4px;border-radius:2px;background:var(--border);margin-bottom:6px;}
    .poll-cast-spacer{min-width:60px;}
    .poll-sheet-foot{
      display:flex;
      flex-direction:column;
      gap:8px;
      padding:12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
      border-top:1px solid var(--border-soft);
      background:var(--bg-elev);
      flex:0 0 auto;
    }
    .poll-sheet-foot .btn{min-height:52px;width:100%;border-radius:10px;font-size:17px;}
    .poll-sheet-foot p{margin:0;text-align:center;font:11.5px var(--font-mono);color:#7fd0b0;}
    .poll-cast .poll-sheet-foot p{color:var(--text-3);}
    .poll-chip{flex-direction:column;align-items:stretch;min-width:0;}
    .poll-chip-copy{min-width:0;}
    .poll-chip strong{overflow-wrap:anywhere;}
    .poll-chip-actions button{min-height:44px;border-radius:8px;font:700 14px var(--font-body);}
    .poll-chip-actions [data-poll-edit]{flex:1;border:1.5px solid var(--gold);color:var(--gold);}
    .poll-chip-actions [data-poll-remove]{padding:0 14px;border:1px solid var(--border);color:var(--text-3);font-weight:600;}
    .poll-option{grid-template-columns:18px minmax(0,1fr) 44px;}
    .poll-option-n{display:none;}
    .poll-option-grip{
      display:block;
      width:18px;
      height:24px;
      touch-action:none;
      background-image:radial-gradient(circle, #7d7461 1.3px, transparent 1.5px);
      background-size:8px 6px;
      background-repeat:repeat;
      background-position:center;
    }
    body.admin .poll-builder input:not([type=checkbox]):not([type=radio]),
    body.admin .poll-builder textarea{font-size:16px;min-width:0;max-width:100%;}
    .poll-sheet-bar{touch-action:none;}
    .poll-option-actions{flex-wrap:nowrap;}
    .poll-option-actions .btn{flex:1;min-width:0;min-height:48px;white-space:normal;}
    .poll-segments[data-poll-selection],
    .poll-segments[data-poll-results],
    .poll-segments[data-poll-names],
    .poll-cast-filters{
      display:flex;
      flex-wrap:nowrap;
      width:100%;
      max-width:100%;
      gap:0;
      margin-top:6px;
      border:1px solid var(--border);
      border-radius:8px;
      overflow:hidden;
    }
    .poll-cast-filters{margin:12px 16px 0;width:auto;}
    .poll-segments[data-poll-selection] button,
    .poll-segments[data-poll-results] button,
    .poll-segments[data-poll-names] button,
    .poll-cast-filters button{
      flex:1;
      min-width:0;
      min-height:46px;
      border:0;
      border-radius:0;
      border-right:1px solid var(--border);
    }
    .poll-segments[data-poll-selection] button:last-child,
    .poll-segments[data-poll-results] button:last-child,
    .poll-segments[data-poll-names] button:last-child,
    .poll-cast-filters button:last-child{border-right:0;}
    .poll-segments[data-poll-close]{
      flex-wrap:nowrap;
      overflow-x:auto;
      max-width:100%;
      -webkit-overflow-scrolling:touch;
    }
    .poll-segments[data-poll-close] button{flex-shrink:0;white-space:nowrap;}
    .poll-when:not([hidden]){flex-direction:column;align-items:stretch;max-width:100%;}
    .poll-when label{min-width:0;max-width:100%;}
    .poll-when input{width:100%;min-width:0;max-width:100%;}
    .poll-cast-row{
      display:flex;
      align-items:center;
      gap:12px;
      min-height:52px;
      padding:0 12px;
      border:1.5px solid var(--border);
      border-radius:10px;
      background:var(--bg);
      min-width:0;
    }
    .poll-cast-row.is-on{border-color:var(--gold);background:rgba(216,164,65,.1);}
    .poll-cast-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:var(--text-3);}
    .poll-cast-name{font-weight:600;min-width:0;overflow-wrap:anywhere;}
    .poll-cast-tribe{margin-left:auto;font:12px var(--font-mono);color:var(--text-3);flex-shrink:0;}
  }
