/* ═══════════════════════════════════════════════════════════════════════
   Battle21 Designer Room front page — Package 4 Guide 2 (DESIGN-PARITY)
   Ported from the locked source: Research/Battle21_Home_Shell.html
   (cardroom topbar · ctxbar · The room lobby · Today so far band · footer)
   Scoped under #fpRoom. REBUILT 2026-06-12 by a CSS-aware scoper after the
   first concatenation glued a literal style-tag line into the sheet and
   the browser dropped both token blocks (the operator-visible total break).
   ═══════════════════════════════════════════════════════════════════════ */
#fpRoom{
  --bg:#0E1116;--surface:#161B22;--surface2:#1C2230;--surface3:#222A3A;
  --border:#2A3142;--border2:#3A4258;--muted:#8A93A6;--dim:#808CA6;
  --text:#E5E9F0;--gold:#C8A56C;--gold-soft:rgba(200,165,108,0.12);
  --teal:#2A9D8F;--pos:#4ADE80;--neg:#F87171;--neu:#94A3B8;
  --warn:#F4C26B;--warn-soft:rgba(244,194,107,0.12);
  --r:8px;--r2:12px;--ok:#63cb9b;--okdim:#2f7152;--inset:#0e1116;
  --accent:#e8b262;--accent-ink:#1a1407;--amber-line:#6a5326;--amber-glow:#e8b26240;
  --sh:0 1px 2px rgba(0,0,0,.45);--sh-lift:0 10px 26px -12px rgba(0,0,0,.75);
  --fp-pos:#4ADE80;--fp-gold:#C8A56C;
  color:var(--text);font-feature-settings:'tnum' 1;font-variant-numeric:tabular-nums;
}
/* ── Home Shell fp-front-page (locked) ── */
#fpRoom{
  --bg:#0E1116; --surface:#181b22; --surface2:#1e2229; --rowsel:#20242e;
  --border:#272e3b; --border2:#3c4452;
  --text:#eef0f4; --muted:#9aa1b0; --dim:#8a93a5;
  --gold:#C8A56C; --pos:#4ADE80; --neg:#F87171; --warn:#ecb451;
  --ok:#63cb9b; --okdim:#2f7152; --warndim:#5e4a22;
  --accent:#e8b262; --accent-ink:#1a1407;
  --inset:#0e1116; --amber-line:#6a5326; --amber-glow:#e8b26240;
  --sh:0 1px 2px rgba(0,0,0,.45); --sh-lift:0 10px 26px -12px rgba(0,0,0,.75);
  --fp-pos:#4ADE80; --fp-gold:#C8A56C;
  background:radial-gradient(1100px 600px at 50% -16%, #14171d 0%, transparent 60%);
  font-family:Inter,"Noto Sans","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
}
#fpRoom .fp-wrap{max-width:1120px;margin:0 auto}
#fpRoom .ctxbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;padding:14px 18px;background:var(--surface);border:1px solid var(--border);border-radius:13px;font-size:14.5px;box-shadow:var(--sh)}
#fpRoom .ctxbar .term{color:var(--muted)}
#fpRoom .ctxbar .term b{color:var(--text);font-weight:700}
#fpRoom .ctxbar .dotsep{color:var(--dim)}
#fpRoom .ctxbar .right{margin-left:auto;display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13px}
#fpRoom .ctxbar .right b{color:var(--text);font-variant-numeric:tabular-nums}
#fpRoom .ctxbar .vsep{width:1px;height:14px;background:var(--border2)}
#fpRoom .ctxbar .live{display:flex;align-items:center;gap:6px;color:var(--ok);font-size:11.5px;font-weight:700;background:#10271d;border:1px solid var(--okdim);padding:3px 10px;border-radius:999px}
#fpRoom .ctxbar .live .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 8px var(--ok);animation:fpPulse 2.6s infinite}
@keyframes fpPulse{#fpRoom 0%, #fpRoom 100%{opacity:1}
#fpRoom 50%{opacity:.35}}
@media (prefers-reduced-motion: reduce){#fpRoom .ctxbar .live .dot{animation:none}}
#fpRoom .fp-secHead{display:flex;align-items:center;gap:14px;margin:22px 0 12px}
#fpRoom .fp-secHead h2{margin:0;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:800}
#fpRoom .fp-secHead .rule{flex:1;height:1px;background:var(--border)}
#fpRoom .fp-secHead .date{color:var(--dim);font-size:12px;font-variant-numeric:tabular-nums}
#fpRoom .fp-secHead .ledgerlink{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#aeb6c4;font-weight:800}
#fpRoom .fp-secHead .ledgerlink:hover{color:var(--text)}
#fpRoom .fp-lobby{display:grid;grid-template-columns:1fr 430px;gap:22px;align-items:start}
#fpRoom .fp-list{display:flex;flex-direction:column;gap:13px}
#fpRoom .lrow{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:17px 20px;cursor:pointer;transition:.15s;box-shadow:var(--sh)}
#fpRoom .lrow:hover{border-color:#48505e;transform:translateY(-2px);box-shadow:var(--sh-lift)}
#fpRoom .lrow.sel{border-color:rgba(238,240,244,.28);background:#1c2029;box-shadow:var(--sh-lift)}
#fpRoom .lrow.flash{animation:fpFlash 1.2s ease 2}
@keyframes fpFlash{#fpRoom 0%, #fpRoom 100%{box-shadow:0 1px 2px rgba(0,0,0,.45)}
#fpRoom 40%{box-shadow:0 0 0 2px #e8b262}}
#fpRoom .lrow .nm{font-size:18px;font-weight:700;letter-spacing:.1px}
#fpRoom .state{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:4px 10px;border-radius:999px;white-space:nowrap;display:inline-flex;gap:5px;margin-left:10px;vertical-align:2px}
/* Lobby-Freshness fix (2026-06-23, §2.1 class B): `.state{display:inline-flex}` above (id+class) out-specifies
   the UA `[hidden]{display:none}`, so a `hidden` "★ Your seat"/"Forming" badge stayed VISIBLE on every tile.
   Make the hidden attribute authoritative again (id+class+attr beats id+class). */
#fpRoom .state[hidden]{display:none}
#fpRoom .state--forming{background:transparent;color:#cbd5e1;border:1px solid #566070}
#fpRoom .state--seated{background:transparent;color:var(--accent);border:1px solid rgba(232,178,98,.5)}
#fpRoom .occ{display:flex;align-items:baseline;gap:9px;margin-top:9px;flex-wrap:wrap}
#fpRoom .occ b{font-size:23px;font-weight:800;letter-spacing:-.4px;font-variant-numeric:tabular-nums}
#fpRoom .occ .lab{font-size:13px;color:var(--muted)}
#fpRoom .occ .open{font-size:14px;font-weight:700;color:var(--ok)}
#fpRoom .occ .open.forming{color:#cbd5e1}
#fpRoom .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border2);background:#20242d;color:var(--text);border-radius:10px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;transition:.14s}
#fpRoom .btn:hover{border-color:#4a5260;background:#252a34}
#fpRoom .btn--primary{background:linear-gradient(180deg,#efbe72,#e4ab53);color:var(--accent-ink);border-color:transparent;font-weight:800;box-shadow:0 1px 0 rgba(255,255,255,.2) inset}
#fpRoom .btn--primary:hover{filter:brightness(1.05)}
#fpRoom .btn--ghost{background:transparent;border-color:var(--border)}
#fpRoom .btn--ghost:hover{background:#20252f;border-color:var(--border2)}
#fpRoom .btn--sm{padding:9px 14px;font-size:13px}
#fpRoom .fp-panel{position:sticky;top:70px;background:linear-gradient(180deg,#1e232c,var(--surface));border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:var(--sh-lift)}
#fpRoom .panel__head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:19px 21px 13px}
#fpRoom .panel__name{font-size:21px;font-weight:800;letter-spacing:-.2px}
#fpRoom .panel__sub{font-size:13px;color:var(--muted);font-weight:600;margin-top:4px}
#fpRoom .panel__sub b{color:var(--ok)}
#fpRoom .panel__sub b.forming{color:#cbd5e1}
#fpRoom .felt-wrap{padding:4px 21px 0}
#fpRoom .felt{position:relative;border-radius:120px/96px;aspect-ratio:1.42/1;width:100%;background:radial-gradient(120% 120% at 50% 38%, #1c3a2c 0%, #16302322 55%, transparent 72%),radial-gradient(140% 140% at 50% 50%, #14211b 0%, var(--inset) 78%);border:1px solid #2c3a33;box-shadow:0 0 0 6px #0c0f13 inset,0 0 0 7px #283a31 inset,0 14px 30px -16px rgba(0,0,0,.8)}
#fpRoom .felt__core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:#3f5a4c}
#fpRoom .seat{position:absolute;width:108px;transform:translate(-50%,-50%);background:linear-gradient(180deg,#242a34,#1c212a);border:1px solid var(--border2);border-radius:11px;padding:10px 11px;box-shadow:0 2px 6px -2px rgba(0,0,0,.6)}
#fpRoom .seat--open{background:var(--inset);border:1px dashed var(--border2);box-shadow:none}
#fpRoom .seat--mine{background:linear-gradient(180deg,#2e2718,#251d0d);border-color:var(--amber-line);box-shadow:0 0 0 1px var(--amber-glow) inset,0 4px 12px -4px var(--amber-glow)}
#fpRoom .seat.p1{left:31%;top:9%}
#fpRoom .seat.p2{left:69%;top:9%}
#fpRoom .seat.p3{left:13%;top:50%}
#fpRoom .seat.p4{left:87%;top:50%}
#fpRoom .seat.p5{left:31%;top:91%}
#fpRoom .seat.p6{left:69%;top:91%}
#fpRoom .seat__n{font-size:8.5px;font-weight:800;letter-spacing:.9px;text-transform:uppercase;color:var(--dim)}
#fpRoom .seat__name{font-weight:700;font-size:14.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#fpRoom .seat--open .seat__name{color:var(--ok)}
#fpRoom .seat--mine .seat__name{color:var(--accent)}
#fpRoom .seat__role{font-size:10px;color:var(--muted);font-weight:600;margin-top:1px}
#fpRoom .dlr{float:right;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:9.5px;font-weight:900;background:linear-gradient(180deg,#f2c074,#e3a648);color:var(--accent-ink);box-shadow:0 1px 3px rgba(0,0,0,.5)}
#fpRoom .youtag{float:right;font-size:8.5px;font-weight:900;letter-spacing:.5px;color:var(--accent-ink);background:var(--accent);padding:2px 6px;border-radius:5px}
#fpRoom .legend{display:flex;gap:15px;flex-wrap:wrap;padding:13px 21px 0;font-size:11px;color:var(--muted);font-weight:600;margin-top:0}
#fpRoom .legend .sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
#fpRoom .legend .sw.bot{background:#343c4b;border:1px solid #5a6375}
#fpRoom .legend .sw.open{background:var(--inset);border:1px dashed #5a6375}
#fpRoom .legend .sw.mine{background:#2e2718;border:1px solid var(--amber-line)}
#fpRoom .legend .sw.dealer{background:linear-gradient(180deg,#f2c074,#e3a648);border-radius:50%}
#fpRoom .note{margin:13px 21px 0;padding:11px 14px;border-radius:11px;font-size:13.5px;line-height:1.4;display:flex;gap:10px;align-items:flex-start}
#fpRoom .note .nd{margin-top:5px;flex:none;width:7px;height:7px;border-radius:50%}
#fpRoom .note.active{background:#101c16;border:1px solid var(--okdim);color:#bfead4}
#fpRoom .note.active .nd{background:var(--ok);box-shadow:0 0 7px var(--ok)}
#fpRoom .note.forming{background:#1d1810;border:1px solid var(--warndim);color:#ecd3a4}
#fpRoom .note.forming .nd{background:var(--accent)}
#fpRoom .panel__act{display:flex;gap:11px;padding:15px 21px 21px}
#fpRoom .panel__act .sit{flex:1.6;min-height:47px;font-size:15px}
#fpRoom .panel__act .watch{flex:1;min-height:47px}
#fpRoom .fp-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
#fpRoom .t-tile{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:16px 18px 14px;display:flex;flex-direction:column;gap:6px;min-height:132px;box-shadow:var(--sh);transition:border-color .14s}
#fpRoom .t-tile:hover{border-color:#3a4252}
#fpRoom #tile2, #fpRoom #tile3{padding-left:16px}
#fpRoom .t-tile .lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}
#fpRoom .t-tile .v{font-size:32px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.04}
#fpRoom .t-tile .v.pos{color:var(--pos)}
#fpRoom .t-tile .v.neg{color:var(--neg)}
#fpRoom .t-tile .v.gold{color:var(--gold)}
#fpRoom .t-tile .v.dim{color:var(--dim);font-weight:700}
#fpRoom .t-tile .sub{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
#fpRoom .t-tile .sub.tiny{font-size:11px;color:var(--dim)}
/* §H two-active-sessions — BOTH live sessions shown at once (no toggle); rows styled by .trow below */
#fpRoom .t-tile .ctas{margin-top:auto;padding-top:10px;border-top:1px dashed var(--border);display:flex;gap:16px;align-items:baseline}
#fpRoom .t-tile .cta{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#aeb6c4;font-weight:800;cursor:pointer}
#fpRoom .t-tile .cta:hover{color:var(--text)}
#fpRoom .t-tile .cta.quiet{color:var(--muted);font-weight:600;text-transform:none;letter-spacing:0;font-size:11.5px}
#fpRoom .t-tile .cta.quiet:hover{color:var(--text)}
#fpRoom .t-tile .tag{font-size:10px;font-weight:700;border-radius:999px;padding:2px 8px;letter-spacing:.04em;white-space:nowrap;display:inline-block}
#fpRoom .t-tile .tag.live{background:rgba(74,222,128,.13);color:var(--pos);border:1px solid #2c5e3a}
#fpRoom .t-tile .trow{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:4px 0}
#fpRoom .t-tile .trow + .trow{border-top:1px dashed var(--border)}
#fpRoom .t-tile .trow .n{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}
#fpRoom .t-tile .trow .m{font-size:11.5px;color:var(--muted)}
#fpRoom .t-tile .trow .up{color:var(--gold);cursor:pointer;font-weight:800}
#fpRoom .card-mini{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:34px;height:46px;background:#fafafa;color:#1b1b1f;border-radius:5px;font-weight:800;padding:2px;margin-right:4px;font-family:"Cambria","Hoefler Text","Times New Roman",Georgia,serif;font-variant-numeric:lining-nums tabular-nums;box-shadow:0 1px 2px rgba(0,0,0,.30);border:1px solid #c0c0c0;gap:0}
#fpRoom .card-mini.red{color:#c92a2a}
#fpRoom .card-mini .rank{font-size:24px;font-weight:800;line-height:1;letter-spacing:-.04em}
#fpRoom .card-mini .pip{font-size:17px;font-weight:600;line-height:1;margin-top:1px;opacity:.9}
#fpRoom .cards-row{display:inline-flex;align-items:center}
#fpRoom .fp-ride{background:var(--surface);border:1px solid var(--border);border-radius:13px;margin-bottom:12px;overflow:hidden;box-shadow:var(--sh)}
#fpRoom .ride-h{width:100%;display:flex;align-items:center;gap:16px;background:none;border:0;color:var(--text);padding:14px 18px;cursor:pointer;text-align:left;font:inherit}
#fpRoom .ride-h:hover .cta{color:var(--text)}
#fpRoom .ride-h .big{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
#fpRoom .ride-h .ends{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
#fpRoom .ride-h .ends b{color:var(--text);font-weight:700}
#fpRoom .ride-h .ends .lo{color:var(--neg)}
#fpRoom .ride-h .ends .hi{color:var(--gold)}
#fpRoom .ride-h .cta{margin-left:auto;color:#aeb6c4;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
#fpRoom .ride-b{display:none;padding:2px 18px 14px}
/* HOME-002: the shared ride toggle (ledger.js) toggles `.collapsed`, not `.open`.
   Reveal the body whenever the ride is NOT collapsed so "Show chart" works. */
#fpRoom .fp-ride:not(.collapsed) .ride-b{display:block}
#fpRoom .plot{position:relative}
#fpRoom .plot svg{width:100%;height:150px;display:block;overflow:visible}
#fpRoom .plot .zero{stroke:#3a4258;stroke-dasharray:2 4;stroke-width:1}
#fpRoom .plot .lin{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
#fpRoom .plot .dot{stroke:#0E1116;stroke-width:2}
#fpRoom .pillx{position:absolute;font-size:10.5px;font-weight:800;letter-spacing:.05em;padding:3px 9px;border-radius:999px;white-space:nowrap;pointer-events:none}
#fpRoom .pillx.peak{background:rgba(200,165,108,.14);border:1px solid rgba(200,165,108,.5);color:var(--gold)}
#fpRoom .pillx.low{background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.5);color:var(--neg)}
#fpRoom .axis{position:relative;height:15px;color:var(--dim);font-size:10.5px;margin-top:6px;font-variant-numeric:tabular-nums}
#fpRoom .axis span{position:absolute;transform:translateX(-50%)}
#fpRoom .axis span:first-child{transform:none}
#fpRoom .axis span:last-child{transform:translateX(-100%)}
#fpRoom .fp-grid2{display:grid;grid-template-columns:1fr 320px;gap:12px;align-items:start}
#fpRoom .fp-sec{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:16px;box-shadow:var(--sh)}
#fpRoom .fp-sec .head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
#fpRoom .fp-sec .head h3{margin:0;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
#fpRoom .fp-sec .head .meta{color:var(--dim);font-size:11.5px;margin-left:auto}
#fpRoom .fp-recent{display:grid;gap:6px}
#fpRoom .hand-row{display:grid;grid-template-columns:52px 76px 56px 1fr 16px;gap:10px;padding:8px 12px;background:#1C2230;border:1px solid transparent;border-bottom:1px solid var(--border);border-radius:8px;align-items:center;font-size:12px;cursor:pointer;transition:background .12s,border-color .12s}
#fpRoom .hand-row:last-of-type{border-bottom-color:transparent}
#fpRoom .hand-row:hover{border-color:var(--border2);background:#222A3A}
#fpRoom .hand-row .when{font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}
#fpRoom .hand-row .role{font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
#fpRoom .hand-row .role.dealer{color:var(--gold)}
#fpRoom .hand-row .sr{display:grid;grid-template-columns:1fr auto;column-gap:8px;row-gap:1px;align-items:baseline}
#fpRoom .hand-row .sr .label{font-weight:700;font-size:15px;letter-spacing:.02em;line-height:1.15}
#fpRoom .hand-row .sr .label.nat{color:var(--gold)}
#fpRoom .hand-row .sr .label.fh{color:#cf9090}
#fpRoom .hand-row .sr .label.neg{color:var(--neg)}
#fpRoom .hand-row .sr .bettors-note{color:var(--muted);font-weight:500;font-size:13px;letter-spacing:0}
#fpRoom .hand-row.dealer-row .cards-row{display:flex;width:100%;justify-content:center}
#fpRoom .hand-row.dealer-row .bettors-note{font-size:11px}
#fpRoom .hand-row .sr .cash{text-align:right;font-weight:700;font-size:18px;font-variant-numeric:tabular-nums;line-height:1.1}
#fpRoom .hand-row .sr.pos .cash{color:var(--pos)}
#fpRoom .hand-row .sr.neg .cash{color:var(--neg)}
#fpRoom .hand-row .chev{color:var(--dim)}
#fpRoom .pos{color:var(--pos)}
#fpRoom .neg{color:var(--neg)}
#fpRoom .ghostbtn{width:100%;margin-top:10px;background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:10px;cursor:pointer;font-size:13px;font-weight:600;transition:.12s;font-family:inherit}
#fpRoom .ghostbtn:hover{color:var(--text);border-color:var(--border2);background:#1c212b}
#fpRoom .fp-rail{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:16px;box-shadow:var(--sh)}
#fpRoom .fp-rail h4{margin:0 0 6px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
#fpRoom .ritem{padding:11px 0;border-bottom:1px solid #222936;cursor:pointer}
#fpRoom .ritem:last-of-type{border-bottom:0}
#fpRoom .ritem:hover .res{filter:brightness(1.1)}
#fpRoom .ritem .r1{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
#fpRoom .ritem .res{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
#fpRoom .ritem .meta{color:var(--muted);font-size:13px;margin-top:3px;font-variant-numeric:tabular-nums}
#fpRoom .ritem .meta2{color:var(--dim);font-size:12px;margin-top:1px;font-variant-numeric:tabular-nums}
#fpRoom .tagx{font-size:10px;font-weight:800;border-radius:999px;padding:2px 8px;letter-spacing:.04em;white-space:nowrap}
#fpRoom .tagx.live{background:rgba(74,222,128,.13);color:var(--pos);border:1px solid #2c5e3a}
#fpRoom .tagx.gold{background:rgba(200,165,108,.13);color:var(--gold);border:1px solid #5e4a22}
#fpRoom .fp-rail .ftr{margin-top:11px;padding-top:11px;border-top:1px dashed var(--border);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#aeb6c4;font-weight:800;cursor:pointer}
#fpRoom .fp-rail .ftr:hover{color:var(--text)}
#fpRoom .fp-signline{display:none;margin:22px 0 0;padding:17px 19px;border:1px dashed var(--border2);border-radius:13px;color:var(--muted);font-size:14px;background:var(--surface)}
#fpRoom .fp-signline b{color:var(--text)}
#fpRoom .fp-foot{margin-top:28px;padding-top:15px;border-top:1px solid var(--border);color:var(--dim);font-size:12.5px;display:flex;justify-content:space-between}
#fpRoom .fp-states{position:fixed;bottom:12px;right:12px;z-index:40;display:flex;gap:5px;align-items:center;background:rgba(16,18,24,.94);border:1px solid var(--border2);border-radius:999px;padding:6px 10px;backdrop-filter:blur(6px)}
#fpRoom .fp-states .lab{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-weight:800;margin-right:2px}
#fpRoom .fp-states button{border:1px solid var(--border2);background:#151920;color:var(--muted);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}
#fpRoom .fp-states button.on{background:var(--gold);border-color:var(--gold);color:#1a1308;font-weight:800}
@media(max-width:980px){#fpRoom .fp-lobby{grid-template-columns:1fr}
#fpRoom .fp-grid2{grid-template-columns:1fr}
#fpRoom .fp-strip{grid-template-columns:1fr}}
/* ── Home Shell shared primitives ── */
#fpRoom .topbar{position:sticky;top:0;z-index:60;background:rgba(14,17,22,0.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);padding:10px 24px;display:flex;align-items:center;justify-content:space-between}
#fpRoom .brand{display:flex;gap:10px;align-items:center;font-weight:700;letter-spacing:.02em}
#fpRoom .brand .b21{background:linear-gradient(135deg,var(--gold),#a07d3c);color:#1a1308;padding:4px 8px;border-radius:6px;font-size:12px;font-weight:800;letter-spacing:.06em}
#fpRoom .brand .lab{color:var(--muted);font-weight:500;font-size:13px}
#fpRoom .user{display:flex;gap:14px;align-items:center}
#fpRoom .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#3a4258,#1c2230);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--gold);font-size:12px;border:1px solid var(--border)}
#fpRoom .user-name{font-weight:600;font-size:13px}
#fpRoom .user-meta{color:var(--muted);font-size:14px}
#fpRoom .tabs{position:sticky;top:53px;z-index:55;background:var(--bg);border-bottom:1px solid var(--border);padding:0 24px;display:flex;gap:4px}
#fpRoom .tab-btn{padding:14px 18px;color:var(--muted);font-weight:500;font-size:14px;border-bottom:2px solid transparent;letter-spacing:.01em}
#fpRoom .tab-btn:hover{color:var(--text)}
#fpRoom .tab-btn.active{color:var(--text);border-bottom-color:var(--gold)}
#fpRoom .tag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.06em;background:var(--surface3);color:var(--muted);border:1px solid var(--border)}
#fpRoom .tag.pol{background:var(--pol-soft);border-color:#3d4a60;color:#9eaccd}
#fpRoom .tag.warn{background:var(--warn-soft);border-color:#5a4a20;color:var(--warn)}
#fpRoom .tag.gold{background:var(--gold-soft);border-color:#5a4a2a;color:var(--gold)}
#fpRoom .tag.pass{background:rgba(74,222,128,0.12);border-color:#2c5e3a;color:#86EFAC}
#fpRoom .tag.cap{background:rgba(244,194,107,0.12);border-color:#5a4a20;color:var(--warn)}
#fpRoom .tag.nat{background:rgba(124,200,255,0.10);border-color:#2c486e;color:#9CC6FF}
#fpRoom .tag.fh{background:rgba(255,150,150,0.08);border-color:#5e3030;color:#FFB8B8}
#fpRoom .tag.bot{background:#222a3a;border-color:#3a4258;color:var(--muted)}
#fpRoom .card-mini{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:34px;height:46px;background:#fafafa;color:#1b1b1f;border-radius:5px;font-weight:800;padding:2px;margin-right:4px;font-family:"Cambria","Hoefler Text","Times New Roman",Georgia,serif;font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum" 1,"tnum" 1;box-shadow:0 1px 2px rgba(0,0,0,.30);border:1px solid #c0c0c0;gap:0}
#fpRoom .card-mini.red{color:#c92a2a}
#fpRoom .card-mini.back{background:linear-gradient(135deg,#3a4258,#1c2230);color:var(--gold);border-color:#3a4258;font-size:11px}
#fpRoom .card-mini .rank{font-size:24px;font-weight:800;line-height:1;letter-spacing:-.04em}
#fpRoom .card-mini .pip{font-size:17px;font-weight:600;line-height:1;margin-top:1px;opacity:.9}
#fpRoom .cards-row{display:inline-flex;align-items:center}
/* HOME-003: a dealer row shows ONE card (the up card) — centered in the cards
   column, mirroring the bettor's two starting cards. (B21_SURFACE_DESIGN_NOTES.md) */
#fpRoom .dealer-row .cards-row{justify-self:center}
#fpRoom .dealer-row .card-mini{margin-right:0}
#fpRoom .recent-hands{display:grid;gap:6px}
#fpRoom .recent-hands .hand-row .dctx{display:inline-block;font-size:10px;color:var(--muted);background:rgba(255,255,255,0.04);border:1px solid var(--border);border-radius:4px;padding:1px 6px;font-weight:500;letter-spacing:.02em;white-space:nowrap}
#fpRoom .recent-hands .hand-row .splitmeta{display:block;font-size:10px;color:var(--gold);font-weight:500;margin-top:2px;letter-spacing:.02em;white-space:nowrap;opacity:0.85}
#fpRoom .hand-row.compact{grid-template-columns:52px 76px 56px 1fr 16px;padding:8px 12px;font-size:12px;align-items:center;gap:10px;border:1px solid transparent;border-bottom:1px solid var(--border);transition:background .12s,border-color .12s}
#fpRoom .hand-row.compact:last-of-type{border-bottom-color:transparent}
#fpRoom .hand-row.compact .when{font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}
#fpRoom .hand-row.compact .cards-row{align-self:center}
#fpRoom .hand-row.compact .role{font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
#fpRoom .hand-row.compact .sr{display:grid;grid-template-columns:1fr auto;column-gap:8px;row-gap:1px;align-items:baseline}
#fpRoom .hand-row.compact .sr .label{font-weight:700;font-size:15px;letter-spacing:.02em;line-height:1.15}
#fpRoom .hand-row.compact .sr .label.gold{color:var(--gold)}
#fpRoom .hand-row.compact .sr .label.nat{color:#9DD9FF}
#fpRoom .hand-row.compact .sr .label.fh{color:var(--warn)}
#fpRoom .hand-row.compact .sr .label.neg{color:var(--neg)}
#fpRoom .hand-row.compact .sr .detail{font-size:10px;color:var(--muted);letter-spacing:.02em;line-height:1.15;margin-top:1px}
#fpRoom .hand-row.compact .sr .detail .cap-shield{margin-left:6px;text-transform:uppercase}
#fpRoom .hand-row.compact .sr .cash{text-align:right;font-weight:700;font-size:18px;font-variant-numeric:tabular-nums;line-height:1.1}
#fpRoom .hand-row.compact .sr .bets{text-align:right;font-size:10.5px;font-variant-numeric:tabular-nums;line-height:1.1;margin-top:1px}
#fpRoom .hand-row.compact .sr.pos .cash{color:var(--pos)}
#fpRoom .hand-row.compact .sr.pos .bets{color:#6fb981}
#fpRoom .hand-row.compact .sr.neg .cash{color:var(--neg)}
#fpRoom .hand-row.compact .sr.neg .bets{color:#c98a8a}
#fpRoom .hand-row.compact .sr.neu .cash{color:var(--muted)}
#fpRoom .hand-row.compact .sr.neu .bets{color:var(--dim)}
#fpRoom .hand-row.compact .chev{color:var(--gold);font-size:15px;text-align:center;opacity:.45;transition:opacity .12s}
#fpRoom .hand-row.compact:hover{background:rgba(255,255,255,0.025);border-color:#3a4258}
#fpRoom .hand-row.compact:hover .chev{opacity:1}
#fpRoom .hand-row.hl-default{grid-template-columns:140px 70px 150px 184px 1fr auto 22px;gap:16px;padding:12px 16px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r);align-items:center;min-height:68px;cursor:pointer;transition:border-color .12s,background .12s;font-size:14.5px}
#fpRoom .hand-row.hl-default:hover{border-color:var(--border2);background:var(--surface3)}
#fpRoom .hand-row.hl-default .when{color:var(--dim);font-size:14px;white-space:nowrap}
#fpRoom .hand-row.hl-default .role{font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--muted)}
#fpRoom .hand-row.hl-default .role.dealer{color:var(--gold)}
#fpRoom .hand-row.hl-default .cards-block{display:inline-flex;align-items:center;gap:8px}
#fpRoom .hand-row.hl-default .hero-pair{display:inline-flex;align-items:center;gap:4px}
#fpRoom .hand-row.hl-default .dealer-card{display:inline-flex;align-items:center}
#fpRoom .hand-row.hl-default .line-vs{height:46px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0 4px}
#fpRoom .hand-row.hl-default .line-vs .vs{font-size:11px;font-weight:800;letter-spacing:.10em;color:var(--gold);text-transform:uppercase}
#fpRoom .hand-row.hl-default .dealer-blank{display:inline-flex;align-items:center;justify-content:center;width:34px;height:46px;color:var(--dim);font-size:14px;font-style:italic}
#fpRoom .hand-row.hl-default .card-mini{padding:1px;margin-right:0}
#fpRoom .hand-row.hl-default .card-mini .rank{font-size:24px;font-weight:800;line-height:1;letter-spacing:-.04em}
#fpRoom .hand-row.hl-default .card-mini .pip{font-size:17px;font-weight:600;line-height:1;margin-top:1px;opacity:.9}
#fpRoom .hand-row.hl-default .spot{font-size:16px;font-weight:700;color:var(--text);letter-spacing:.005em;white-space:nowrap}
#fpRoom .hand-row.hl-default .action-final{display:inline-flex;align-items:center;flex-wrap:wrap;font-size:15px;color:var(--text);line-height:1.4;min-width:0}
#fpRoom .hand-row.hl-default .action-final b{font-weight:700}
#fpRoom .hand-row.hl-default .action-final .sep{color:var(--dim);margin:0 8px}
#fpRoom .hand-row.hl-default .result{font-size:16.5px;font-weight:700;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
#fpRoom .hand-row.hl-default .result.pos{color:var(--pos)}
#fpRoom .hand-row.hl-default .result.neg{color:var(--neg)}
#fpRoom .hand-row.hl-default .result.neu{color:var(--neu)}
#fpRoom .hand-row.hl-default .chev{color:var(--gold);font-size:16px;font-weight:700;text-align:right}
#fpRoom .hand-row.hl-default .cap-shield{display:inline-flex;align-items:center;padding:1px 6px;background:var(--gold-soft);color:var(--warn);border:1px solid #5a4a20;border-radius:3px;font-size:10.5px;font-weight:700;letter-spacing:.04em;margin-left:0}
#fpRoom .hand-row.hl-default .view{display:none}
#fpRoom .hand-row.compact .sr .bettors-note{color:var(--muted);font-weight:500;font-size:13px;letter-spacing:0}
/* ── Home Shell topbar chrome (shell-v20) ── */
#fpRoom .topbar{height:54px;padding:0 24px;gap:22px;align-items:center}
#fpRoom .topbar .brand{flex:0 0 auto;align-items:center;gap:9px}
#fpRoom .brandname{font-weight:500;font-size:15px;color:var(--text);white-space:nowrap}
#fpRoom .brandname b{font-weight:800}
#fpRoom .topbar #tabnav.tabs{position:static;top:auto;z-index:auto;background:transparent;border-bottom:none;padding:0;margin:0;flex:1 1 auto;display:flex;gap:2px;height:54px;align-items:stretch;overflow-x:auto}
#fpRoom .topbar #tabnav .tab-btn{display:flex;align-items:center;height:54px;padding:0 16px;font-size:14px;border-bottom:2px solid transparent;background:transparent;white-space:nowrap}
#fpRoom .topbar #tabnav .tab-btn.active{color:var(--text);border-bottom-color:var(--gold)}
#fpRoom .topbar .user{flex:0 0 auto;gap:14px}
#fpRoom .shell-switch{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--gold);border:1px solid var(--border2,var(--border));border-radius:999px;padding:7px 14px;white-space:nowrap;text-decoration:none;background:var(--surface)}
#fpRoom .shell-switch:hover{color:var(--gold);border-color:var(--gold);filter:brightness(1.08)}
#fpRoom .topbar .user{border-left:1px solid var(--border);padding-left:18px}
#fpRoom .rules-link{color:var(--muted);font-size:13px;font-weight:500;text-decoration:none;white-space:nowrap}
#fpRoom .rules-link:hover{color:var(--text)}
#fpRoom .hero-subbar{display:flex;align-items:center;justify-content:space-between;gap:14px 24px;flex-wrap:wrap;position:sticky;top:54px;z-index:54;background:var(--bg);border-bottom:1px solid var(--border);margin-bottom:24px;box-shadow:0 4px 8px -4px rgba(0,0,0,.5)}
#fpRoom .hero-subbar .hero-subview-nav-v2{position:static;top:auto;border-bottom:none;box-shadow:none;margin:0;flex:0 1 auto;overflow-x:auto}
#fpRoom .hero-scope{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 0 7px 18px;border-left:1px solid var(--border)}
/* ── production additions (page shell · ride geometry · honest states) ── */
#fpRoom{display:block;min-height:100vh;background:var(--bg);padding:0 0 40px}
#fpRoom > .ctxbar, #fpRoom > .fp-secHead, #fpRoom > .fp-lobby, #fpRoom > #bandWrap,
#fpRoom > .fp-signline, #fpRoom > .fp-foot{max-width:1120px;margin-left:auto;margin-right:auto;padding-left:24px;padding-right:24px;box-sizing:content-box}
#fpRoom > .ctxbar{margin-top:16px}
#fpRoom a{color:inherit}
#fpRoom .ledgerlink{color:var(--gold)}
#fpRoom .ghostbtn{border:1px solid var(--border);border-radius:10px;padding:9px 0;color:var(--muted);margin-top:8px;font-size:13px}
#fpRoom .ghostbtn:hover{color:var(--text);border-color:var(--border2)}
#fpRoom .topbar{display:flex;justify-content:space-between}
#fpRoom .plot{position:relative;width:100%;cursor:crosshair;touch-action:none}
#fpRoom svg.chart{width:100%;display:block;overflow:visible;height:150px}
#fpRoom .ride-line{fill:none;stroke:var(--pos);stroke-width:2.4;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
#fpRoom .zero{stroke:#3a4258;stroke-dasharray:2 4;stroke-width:1}
#fpRoom .guide{stroke:rgba(255,255,255,0.22);stroke-width:1;opacity:0}
#fpRoom .ex-dot{stroke:#0E1116;stroke-width:2}
#fpRoom .ex-ring{fill:none;stroke-width:1.5;opacity:.55}
#fpRoom .ex-stem{stroke-width:1;stroke-dasharray:2 3;opacity:.5}
#fpRoom .peak .ex-dot{fill:var(--gold)}#fpRoom .peak .ex-ring{stroke:var(--gold)}#fpRoom .peak .ex-stem{stroke:var(--gold)}
#fpRoom .low .ex-dot{fill:var(--neg)}#fpRoom .low .ex-ring{stroke:var(--neg)}#fpRoom .low .ex-stem{stroke:var(--neg)}
#fpRoom .now-dot{fill:var(--pos);stroke:#0E1116;stroke-width:2}
#fpRoom .hov-halo{fill:rgba(74,222,128,0.18);opacity:0}
#fpRoom .hov-dot{fill:var(--pos);stroke:#0E1116;stroke-width:2;opacity:0}
#fpRoom .callout{position:absolute;font-size:11px;font-weight:800;letter-spacing:.04em;padding:3px 9px;border-radius:999px;white-space:nowrap;pointer-events:none}
#fpRoom .callout.peak{transform:translate(-50%,-135%);background:rgba(200,165,108,.14);border:1px solid rgba(200,165,108,.5);color:var(--gold)}
#fpRoom .callout.low{transform:translate(-50%,40%);background:rgba(248,113,113,.13);border:1px solid rgba(248,113,113,.5);color:var(--neg)}
#fpRoom .flag{position:absolute;transform:translate(-50%,0);background:var(--surface2);border:1px solid var(--border2);border-radius:10px;padding:7px 14px;pointer-events:none;opacity:0;box-shadow:0 10px 26px rgba(0,0,0,.55);white-space:nowrap;text-align:center}
#fpRoom .fdate{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:1px}
#fpRoom .fval{font-size:24px;font-weight:800;line-height:1.02;letter-spacing:-.01em;color:var(--pos)}
#fpRoom .fval.neg{color:var(--neg)}
#fpRoom .session-ride .ride-b{overflow:hidden;max-height:240px;transition:max-height .18s ease}
#fpRoom .session-ride.collapsed .ride-b{max-height:0}
.b21-skip-link:not(:focus){top:auto;bottom:100vh;transform:translateY(-8px)}
