*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{background:#0a0c0f;color-scheme:dark}
:root{
  --bg:#0a0c0f;--bg1:#0f1115;--bg2:#141820;
  --txt:#ffffff;--txt2:#c8c7bc;--txt3:#96a2b2;
  --brd:rgba(255,255,255,0.07);--brd2:rgba(255,255,255,0.13);
  --abg:#0c447c;--atxt:#b5d4f4;--abrd:#378add;--r:6px;
  --type-title:14px;--type-body:12px;--type-label:11px;--type-meta:11px;
  --text-strong:#e7ecf2;--text-body:#c5ced9;--text-label:#a6b2c1;
  --text-meta:#96a3b4;--text-disabled:#647286;
}
@media(prefers-color-scheme:dark){:root{
  --bg:#0a0c0f;--bg1:#0f1115;--bg2:#141820;
 --txt:#ffffff;--txt2:#c8c7bc;--txt3:#96a2b2;
  --brd:rgba(255,255,255,0.07);--brd2:rgba(255,255,255,0.13);
  --abg:#0c447c;--atxt:#b5d4f4;--abrd:#378add;
}}
body{background:var(--bg);font-family:system-ui,-apple-system,sans-serif;color:var(--txt);max-width:1440px;margin:0 auto;display:flex;flex-direction:column;height:100vh;scrollbar-gutter:stable}

/* The analyzer is a dark-only interface. Prevent native browser controls from
   painting a light button for one frame while a click triggers a rebuild. */
button{font:inherit;color:inherit;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;forced-color-adjust:none}

/* Chrome can briefly paint its native light pressed face before JavaScript
   replaces a large section. Every button in this dark-only interface gets a
   dark fallback for that compositor frame; component-specific active styles
   still win where they use a more specific selector. */
button:active{background-color:#0d1117}
html,body,#dashboard,.sec-wrap,.sec-body,.bottom,#hands-grid,.list-panel,
.matrix-panel,.matrix-scroll,.mx-body,.tl-wrap,.tl-canvas{background-color:#0a0c0f}

/* Prevent Chrome's bright pointer-focus flash on filter buttons, hand rows,
   and the timeline canvas. Keyboard navigation keeps a quiet visible cue. */
button:focus,button:focus-visible,[role="button"]:focus,[role="button"]:focus-visible,
.pill:focus,.tv-pill:focus,.hi:focus,.hmc:focus,.ps:focus,canvas:focus,select:focus{
  outline:none!important;box-shadow:none!important
}
#tlchart:focus,.hi:focus{outline:none!important}

/* A number of analyzer controls are deliberately lightweight div/span
   elements rather than native buttons. Keep pointer presses on those surfaces
   from producing Chrome's bright text-selection/compositor flash. */
button,[role="button"],.pill,.tv-pill,.hi,.hmc,.ps,.ps-level-segment,
.bslot,.tree-street-header,.sec-hdr,.chev,#tlchart{
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
  -webkit-tap-highlight-color:transparent
}
button::selection,[role="button"]::selection,.pill::selection,.tv-pill::selection,
.hi::selection,.hmc::selection,.ps::selection,.ps-level-segment::selection,
.bslot::selection,.tree-street-header::selection,.sec-hdr::selection,.chev::selection{
  background:transparent;color:inherit
}

#dashboard{display:none;flex-direction:column;flex:1;min-height:0}

.hdr{padding:.6rem 1rem .4rem;display:flex;align-items:baseline;gap:12px;border-bottom:.5px solid var(--brd2);flex-shrink:0}
.hdr h1{font-size:14px;font-weight:500}
.hdr .sub{font-size:11px;color:var(--txt3)}
.hdr-buyin-detail{font-size:11px;font-weight:400;color:var(--txt3)}

/* Phase bar */
.phase-bar{display:flex;height:22px;flex-shrink:0;margin:0 12px}
.phase-bar,.tl-wrap,.sec-wrap{width:calc(100% - 24px);margin-left:12px;margin-right:12px}
.ps{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:500;color:#fff;cursor:pointer;overflow:hidden;white-space:nowrap;transition:opacity .12s;user-select:none}
.ps:hover{opacity:.82}
.ps.active{outline:none;box-shadow:inset 0 -2px rgba(61,214,140,.75)}
.ps-level-block{position:relative;background:#4b5563}
.ps-level-segments{position:absolute;inset:0;display:flex}
.ps-level-segment{height:100%;border-right:1px solid rgba(255,255,255,.08);box-sizing:border-box}
.ps-level-segment:nth-child(odd){background:rgba(255,255,255,.035)}
.ps-level-segment:nth-child(even){background:rgba(255,255,255,.13)}
.ps-level-segment.active{background:rgba(61,214,140,.42);box-shadow:inset 0 0 0 1px rgba(110,231,183,.75)}
.ps-level-label{position:relative;z-index:1;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.8)}

/* Filter rows — unified dark-card style matching Tree View */
.filter-area{background:#0d1117;border-radius:8px;margin:4px 12px 6px;padding:4px 0;flex-shrink:0}
.filter-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:.28rem .9rem}
.filter-row + .filter-row{border-top:none}
.toolbar-menu{position:relative;flex:0 0 auto}.toolbar-menu summary{list-style:none;min-height:26px;box-sizing:border-box;padding:4px 10px;border:1px solid var(--brd2);border-radius:20px;color:var(--text-label);background:transparent;font-size:var(--type-body);font-weight:600;cursor:pointer}.toolbar-menu summary::-webkit-details-marker{display:none}.toolbar-menu summary::after{content:' ⌄';color:var(--text-meta)}.toolbar-menu[open] summary{border-color:#3b715e;color:#a7eccf;background:#0d1916}.toolbar-menu-popover{position:absolute;z-index:4000;top:calc(100% + 6px);left:0;display:grid;gap:5px;width:190px;padding:8px;border:1px solid #344258;border-radius:9px;background:#0c121b;box-shadow:0 14px 38px rgba(0,0,0,.55)}.toolbar-menu-popover.align-right{left:auto;right:0}.toolbar-menu-popover .pill{width:100%;min-height:31px!important;text-align:left;border-radius:6px!important}.toolbar-menu-popover .pill.on-reviewed,.toolbar-menu-popover .pill.on{border-color:#4974aa!important;color:#c9ddfb!important;background:#122238!important}
.sync-conflict-card{width:760px;max-height:82vh;overflow:auto}.sync-conflict-row{padding:14px;border:1px solid var(--brd);border-radius:8px;background:var(--panel)}.sync-conflict-row>div:first-child{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}.sync-conflict-row small{color:var(--text-meta)}.sync-conflict-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.sync-conflict-choices section{padding:10px;border:1px solid var(--brd2);border-radius:7px;background:var(--bg)}.sync-conflict-choices p{min-height:32px;margin:6px 0 10px;color:var(--text-body)}
@media(max-width:700px){.sync-conflict-choices{grid-template-columns:1fr}}
.flbl{font-size:10px;color:#4b5563;width:82px;flex-shrink:0;font-weight:500}
.pill{font-size:11px;padding:2px 8px;border:.5px solid #1f2937;border-radius:22px;background:transparent;color:#6b7280;cursor:pointer;transition:background .12s,color .12s,border-color .12s;-webkit-appearance:none;appearance:none}
.pill:hover{background:#0d1117;color:#9ca3af;border-color:#2d3748}
.pill:active{background:rgba(61,214,140,0.06);color:#6ee7b7;border-color:#1a4a2e}
.pill.on{background:rgba(61,214,140,0.12);color:#3dd68c;border-color:#1a4a2e}
/* Tree View pills — same shape, dark-mode aware */
.tv-pill{font-size:11px;padding:2px 9px;border:.5px solid #1f2937;border-radius:22px;background:transparent;color:#6b7280;cursor:pointer;transition:background .12s,color .12s,border-color .12s;}
.tv-pill:hover{background:#0f151c;color:#c9d1e0;}
.tv-pill.on{background:rgba(61,214,140,0.12);color:#3dd68c;border-color:#1a4a2e;}
/* Tree View 3-column layout */
#tv-layout{display:grid;grid-template-columns:230px 1fr 290px;gap:12px;align-items:start;}
#tv-left{display:flex;flex-direction:column;gap:7px;}
#tv-right{display:flex;flex-direction:column;gap:7px;}
.tv-blk{background:#0d1117;border:1px solid #131820;border-radius:8px;padding:12px;}
.tv-sec-hdr{font-size:9px;color:#4b5563;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:5px;}
.tv-node-hdr{font-size:9px;letter-spacing:.1em;color:#4b5563;font-weight:700;text-transform:uppercase;margin-bottom:8px;}
.tv-pill-row{display:flex;flex-wrap:wrap;gap:4px;}
.tv-act-sep{height:1px;background:#131820;margin:2px 0;}
.pill.on-win{background:#e4f5ec;color:#0f6e56;border-color:#5dcaa5}
.pill.on-loss{background:#fcebeb;color:#a32d2d;border-color:#f09595}
.pill.on-rfi{background:#f0eafc;color:#7c3aed;border-color:#c4a8f5}
.pill.on-rfi-raise{background:#f0eafc;color:#7c3aed;border-color:#c4a8f5}
@media(prefers-color-scheme:dark){
  .pill.on-win{background:#085041;color:#9fe1cb;border-color:#1d9e75}
  .pill.on-loss{background:#501313;color:#f7c1c1;border-color:#e24b4a}
  .pill.on-rfi{background:#2d1a5c;color:#c4a8f5;border-color:#7c3aed}
}
.bslot{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:26px;padding:0 5px;border:1px solid #1f2937;border-radius:5px;font-size:10px;font-weight:700;letter-spacing:.5px;background:#0d1117;color:#6b7280;cursor:pointer;transition:border-color .12s,color .12s}
.bs-sel{font-size:11px;padding:2px 2px;background:#0d1117;color:#c9d1e0;border:.5px solid #1f2937;border-radius:4px;cursor:pointer;width:38px;height:22px;appearance:none;text-align:center}
.bs-sel.active{border-color:#3dd68c;color:#3dd68c}
.bs-slot-group{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;border:.5px solid #1f2937;border-radius:5px;background:#141820}
.bs-slot-group.set{border-color:#3dd68c;background:rgba(61,214,140,.08)}
.bslot:hover{border-color:#6b7280}
.bslot.bslot-active{border-color:var(--acc,#5b8def);color:var(--acc,#5b8def);background:rgba(91,141,239,.08)}
.bslot.bslot-set{border-color:var(--acc,#5b8def);color:var(--txt);background:rgba(91,141,239,.14)}
.brank-row{display:flex;align-items:center;gap:3px;padding:.12rem .9rem .18rem;border-top:none}
.brank-row.hidden{display:none}
.clear-btn{font-size:11px;padding:2px 8px;border:.5px solid #1f2937;border-radius:22px;background:transparent;color:#4b5563;cursor:pointer;margin-left:auto;transition:color .12s,border-color .12s}
.clear-btn:hover{color:#c9d1e0;border-color:#374151}
.filter-count{font-size:10px;color:#4b5563;margin-left:auto}

/* Timeline */
.tl-wrap{padding:.3rem .75rem .15rem;border-bottom:none;flex-shrink:0}
.tl-canvas{position:relative;height:132px}
#tlchart{width:100%;height:100%;background:#0a0c0f}

/* Hand detail bar — ALWAYS rendered at a fixed height (never display:none),
   so selecting/deselecting a hand never changes page layout/height. Content
   that overflows the fixed height scrolls internally instead. */
.hd-bar{background:#0d1117;padding:.35rem .85rem;position:relative;max-height:340px;overflow-y:auto;flex-shrink:0}
.hd-bar::-webkit-scrollbar{width:6px}
.hd-bar::-webkit-scrollbar-thumb{background:#1f2937;border-radius:3px}
.hd-bar{scrollbar-width:thin}
.hd-close{position:absolute;right:.5rem;top:.25rem;border:none;background:none;color:var(--txt3);cursor:pointer;font-size:13px;padding:2px 4px;z-index:1}
.hd-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--txt3);font-size:12px}
.hd-wrap{display:flex;gap:10px;align-items:flex-start}
.hd-cards{font-size:20px;font-weight:500;flex-shrink:0;margin-top:2px}
/* flex:1 1 0 so hd-main fills ALL remaining width after the fixed-width
   side panel — this prevents the river from wrapping to a new line when
   there is clearly enough horizontal space to fit all 4 street blocks.
   The old flex:0 1 auto (shrink-wrap to content) was intended to avoid a
   "dead gap" on preflop-only folds, but that trade-off is not worth the
   river-wrapping regression on any hand that reaches the river. */
.hd-main{flex:1 1 0;min-width:0;max-width:760px}
.hd-meta{font-size:10.5px;color:var(--txt3);display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-bottom:3px}
.hd-ph{font-size:10px;font-weight:700;padding:2px 8px;border-radius:4px;color:#fff;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,0.4)}
.hd-res{font-size:10.5px;font-weight:500;padding:1px 6px;border-radius:3px}
.hd-vs{display:inline-flex;align-items:center;gap:2px;font-size:10.5px;font-weight:500;color:var(--txt2)}
.hd-vs-lbl{font-size:7.5px;font-weight:700;border-radius:3px;padding:0 3px}.hd-vs-lbl.hero{color:#fde68a;background:#78540a;border:1px solid #c9911a}.hd-vs-lbl.vill{color:var(--atxt);background:var(--abg);border:1px solid var(--abrd)}
.hd-streets{display:flex;gap:4px;flex-wrap:nowrap;overflow:hidden}
.hd-st{background:var(--bg2);border-radius:var(--r);padding:3px 6px;min-width:0;flex-shrink:1}
.hd-stlbl{font-size:8.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--txt3);margin-bottom:2px;font-weight:500}
.hd-st-board{display:flex;gap:4px;margin-bottom:4px;flex-wrap:wrap}
.hd-board{display:flex;gap:4px;margin-bottom:4px;flex-wrap:wrap}
/* Board (flop/turn/river) card chips — 30% bigger than the original
   11px/1px-4px per explicit user request, so the runout is easier to read
   at a glance. */
.hd-card{background:var(--bg);border:.5px solid var(--brd2);border-radius:4px;padding:1.5px 5px;font-size:14.5px;font-weight:500}
.ha{font-size:10px;display:flex;gap:7px;margin:0;padding:1px 0}
.ha .an{color:var(--txt2);font-size:10px;min-width:46px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}
.ha .ap{color:var(--atxt);background:var(--abg);font-size:8.5px;font-weight:500;border-radius:3px;padding:0 4px;flex-shrink:0;min-width:20px;text-align:center}
.ha .av{color:var(--txt2);min-width:30px;flex-shrink:0}
.ha .aa{color:var(--txt)}
.ha.me .an{color:var(--atxt);font-weight:500}
.hd-sd{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px;border-top:.5px solid var(--brd);margin-top:3px}
.sd-item{display:flex;align-items:center;gap:4px;font-size:11px}
.sd-name{color:var(--txt3);font-size:10px}
.sd-pos{color:var(--atxt);background:var(--abg);font-size:8.5px;font-weight:500;border-radius:3px;padding:0 4px}
.hd-bust{background:#fcebeb;color:#a32d2d;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:500}
@media(prefers-color-scheme:dark){.hd-bust{background:#501313;color:#f7c1c1}}
/* hd-crown: shown instead of .hd-bust on the literal final hand of a
   tournament hero WON outright (see render_logic2.js's isFinalHand/
   heroWonTournament) — that hand's only h.bu entry is the runner-up busting,
   never hero (winners never have an elimination line), so without this the
   hand where hero actually became champion looked identical to any other
   mid-tournament elimination. */
.hd-crown{background:#fff6da;color:#8a6d00;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:500}
@media(prefers-color-scheme:dark){.hd-crown{background:#4d3c00;color:#ffe28a}}
.rfi-tag{background:#f0eafc;color:#7c3aed;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:500}
@media(prefers-color-scheme:dark){.rfi-tag{background:#2d1a5c;color:#c4a8f5}}

/* ── Review panel — TV-aligned dark cards ── */
.rv-panel{border-top:.5px solid #131820;padding:10px 0 6px;margin-top:8px}
.rv-card{background:#0d1117;border:1px solid #131820;border-radius:8px;padding:8px 12px;margin-bottom:6px}
#review-panel #rv-spots-area{min-height:148px;box-sizing:border-box}
.rv-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.rv-row+.rv-row{margin-top:6px}
.rv-lbl{font-size:9px;color:#4b5563;text-transform:uppercase;letter-spacing:.08em;min-width:56px;flex-shrink:0;font-weight:700}
.rv-pill{font-size:11px;padding:2px 8px;border:.5px solid #1f2937;border-radius:22px;background:transparent;color:#6b7280;cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}
.rv-pill:hover{background:#0f151c;color:#c9d1e0}
.rv-pill.on-seen{background:#1e2a38;color:#9ca3af;border-color:#4b5563}
.rv-pill.on-correct{background:#085041;color:#9fe1cb;border-color:#1d9e75}
.rv-pill.on-mistake{background:#501313;color:#f7c1c1;border-color:#e24b4a}
.rv-pill.on-missed{background:#501313;color:#f7c1c1;border-color:#f87171}
.rv-pill.on-undecided{background:#1a2a3a;color:#93c5fd;border-color:#3b82f6}
.rv-pill.on-discuss{background:#4a2006;color:#fbbf7c;border-color:#d97706}
.rv-pill.on-feedback{background:#2d1a5c;color:#c4a8f5;border-color:#7c3aed}
.rv-pill.on-solver{background:#0a3020;color:#6ee7b7;border-color:#10b981}
.rv-pill.on-solver-lookup{background:#3a1a2e;color:#f9a8d4;border-color:#be185d}
.rv-pill.on-punt{background:#431407;color:#fdba74;border-color:#ea580c}
.rv-pill.on-mixed{background:#1a1030;color:#a78bfa;border-color:#7c3aed}
.rv-pill.on-street,.rv-pill.on-tag{background:rgba(61,214,140,0.12);color:#3dd68c;border-color:#1a4a2e}
.rv-pill.has-tags{border-color:#1a4a2e;color:#3dd68c}
.rv-note{width:100%;background:#111821;border:1px solid #263344;border-radius:8px;color:#e2e8f0;font-size:12px;padding:10px 12px;resize:vertical;min-height:60px;font-family:inherit;outline:none;margin-top:4px;transition:border-color .15s,background .15s}
.rv-note::placeholder{color:#374151;font-style:italic}
.rv-note:focus{border-color:#3dd68c;background:#0a0c0f}
.rv-panel [data-rv-stab]::before{content:'';display:inline-block;width:6px;height:6px;margin-right:7px;border-radius:50%;background:transparent;vertical-align:1px}
.rv-panel [data-rv-stab].has-verdict-correct::before{background:#3dd68c;box-shadow:0 0 0 2px rgba(61,214,140,.12)}
.rv-panel [data-rv-stab].has-verdict-mistake::before{background:#ef6b73;box-shadow:0 0 0 2px rgba(239,107,115,.12)}
.rv-panel [data-rv-stab].has-verdict-mixed::before{background:#a78bfa;box-shadow:0 0 0 2px rgba(167,139,250,.12)}
.rv-verdict-line{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap}
.rv-verdict-primary,.rv-verdict-extra{flex:0 0 auto;margin:0!important}
.rv-auto-spot{display:inline-flex;align-items:center;min-height:25px;padding:2px 9px;border:1px solid #25473b;border-radius:999px;color:#80cdb0;background:#0d211a;font-size:11px;font-weight:650}
.rv-save-btn{font-size:11px;padding:0 14px;height:26px;line-height:26px;border:.5px solid #1a4a2e;border-radius:6px;background:rgba(61,214,140,0.12);color:#3dd68c;cursor:pointer;font-weight:600;display:inline-flex;align-items:center}
.rv-save-btn:hover{filter:brightness(1.15)}
.rv-clear-btn{font-size:11px;padding:0 10px;height:26px;line-height:26px;border:.5px solid #1f2937;border-radius:6px;background:transparent;color:#4b5563;cursor:pointer;margin-left:auto;transition:color .12s;display:inline-flex;align-items:center}
.rv-status{font-size:10px;color:#4b5563;margin-left:6px;transition:opacity .3s}
/* Review dot badge in hand list */
.hi-rv-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;display:inline-block;margin-right:1px;vertical-align:middle}
.hi-rv-dot.rv-m{background:#e24b4a}
.hi-rv-dot.rv-c{background:#1d9e75}
.hi-rv-dot.rv-n{background:#7c3aed}
.hi-rv-dot.rv-f{background:#d97706}
/* Reviewed filter pill state */
.pill.on-reviewed{background:#2d1a5c;color:#c4a8f5;border-color:#7c3aed}
.pill.on-recording{background:#501313;color:#f7c1c1;border-color:#e24b4a}

/* Hand detail — LEFT-side panel: hero hand AND the showdown villain hand
   shown side-by-side at the same size (so the matchup is legible at a
   glance, not buried in the small per-villain list below), then villains
   who stayed in the hand but folded without showing, and a clear winner
   line. Sits first/leftmost (before the street-action history in
   .hd-main), per explicit user request, with the divider on its RIGHT
   edge now instead of its left. No max-height/scroll of its own anymore
   — it grows to its natural height and relies solely on the parent
   .hd-bar's single scrollbar (with a visible thumb, since macOS overlay
   scrollbars are otherwise invisible until actively scrolling), so
   "Result" at the bottom is always reachable via one consistent scroll
   instead of two independently-scrolling boxes. */
.hd-side{width:268px;flex-shrink:0;border-right:.5px solid var(--brd2);padding-right:10px;display:flex;flex-direction:column;gap:2px}
.hd-side-title{font-size:8.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--txt3);font-weight:500;margin-top:4px}
.hd-side-title:first-child{margin-top:0}
.hd-hand-row{display:flex;gap:8px;flex-wrap:wrap}
.hd-hand-box{flex:0 1 auto;min-width:108px}
/* Position badge shown to the LEFT of (in front of) the hero's/villain's
   cards in the hand boxes, e.g. "SB  A♦7♣" — same small-pill look as the
   per-action position tag (.ha .ap) and the villain-list position tag
   (.hd-vrow .vp), but defined standalone since this badge isn't nested
   inside either of those parent contexts. */
.hd-cards-row{display:flex;align-items:center;gap:5px}
.hd-pos{color:var(--atxt);background:var(--abg);font-size:8.5px;font-weight:500;border-radius:3px;padding:1px 4px;flex-shrink:0}
.hd-effpos{font-size:8px;font-weight:700;opacity:0.8}
.hd-hero-cards{font-size:19px;font-weight:600;line-height:1.1;white-space:nowrap}
.hd-hero-stack{font-size:12.5px;color:var(--txt);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hd-vrow{display:flex;align-items:center;gap:5px;font-size:11px;padding:1px 0;border-bottom:.5px solid var(--brd);white-space:nowrap}
.hd-vrow .vn{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt)}
.hd-vrow .vp{color:var(--atxt);background:var(--abg);font-size:8px;font-weight:500;border-radius:3px;padding:0 4px;flex-shrink:0}
.hd-vrow .vs{color:var(--txt);font-size:11.5px;font-weight:700;flex-shrink:0;min-width:64px;text-align:right;white-space:nowrap}
.hd-vrow .vc{flex-shrink:0;font-size:12px;font-weight:500}
.hd-effstack{display:inline-flex;align-items:center;gap:3px;background:var(--abg);color:var(--atxt);border:1px solid var(--abrd);border-radius:4px;padding:1px 7px;font-size:10.5px;font-weight:600;white-space:nowrap;margin-left:2px}
@media(prefers-color-scheme:dark){.hd-effstack{background:#172a40;color:#b5d4f4}}
.hd-winner{font-size:11px;font-weight:600;padding:3px 7px;border-radius:5px;background:#e4f5ec;color:#0f6e56;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(prefers-color-scheme:dark){.hd-winner{background:#085041;color:#9fe1cb}}

/* ── Collapsible sections — no lines, background contrast separates ── */
.sec-wrap{border-bottom:none;background:#0a0c0f}
.sec-wrap+.sec-wrap{border-top:none}
.sec-body{background:#0a0c0f}
.sec-hdr{display:flex;align-items:center;gap:8px;padding:.3rem .85rem;cursor:pointer;user-select:none;background:transparent;transition:background .1s;min-height:30px;border-radius:0}
.sec-hdr:hover{background:#0d1117}
.sec-title{font-size:10px;font-weight:600;color:#6b7280;flex-shrink:0;letter-spacing:.04em;text-transform:uppercase}
.sec-meta{font-size:10px;color:#4b5563;flex:1;margin-left:4px}
.hand-sort-wrap{display:inline-flex;align-items:center;gap:6px;margin-left:8px;color:#647082;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:default}
.hand-sort-wrap select{height:24px;min-width:142px;padding:0 24px 0 8px;border:1px solid #2a3544;border-radius:6px;background-color:#0d131c;color:#a7b2c1;color-scheme:dark;-webkit-appearance:none;appearance:none;font:500 10px/1 system-ui,sans-serif;outline:none;cursor:pointer;text-transform:none;letter-spacing:0;background-image:linear-gradient(45deg,transparent 50%,#718096 50%),linear-gradient(135deg,#718096 50%,transparent 50%);background-position:calc(100% - 11px) 9px,calc(100% - 7px) 9px;background-size:4px 4px,4px 4px;background-repeat:no-repeat}
.hand-sort-wrap select:hover,.hand-sort-wrap select:focus{color:#e1e7ef;border-color:#46556a;background-color:#111925}
.hand-sort-wrap select option{background:#0d131c;color:#d5dde8}
.sec-chev{font-size:10px;color:#3dd68c;transition:transform .18s;flex-shrink:0;width:18px;height:18px;border:1px solid rgba(61,214,140,0.35);border-radius:3px;display:inline-flex;align-items:center;justify-content:center;margin-right:5px}
.sec-chev:hover{border-color:#3dd68c}
.sec-wrap.collapsed>.sec-body{display:none}
.sec-wrap.collapsed .sec-chev{transform:rotate(-90deg)}

/* ── Hand detail v2: redesigned street grid + poker table ── */
.hd-wrap2{display:flex;gap:10px;align-items:flex-start;padding-top:4px}
.hd-tvw{display:none}
.hd-sv2{display:flex;gap:5px;align-items:flex-start;flex:1;min-width:0;overflow-x:auto}
.hd-stc2{display:flex;flex-direction:column;flex:1;min-width:110px;background:var(--bg2);border-radius:var(--r);padding:4px 6px 5px}
/* cards header row — fixed height so all 4 columns align */
.hd-sth2{height:30px;display:flex;gap:3px;align-items:center;flex-wrap:nowrap;overflow:hidden;margin-bottom:3px}
.hd-slbl2{font-size:8.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--txt3);margin-bottom:3px;font-weight:500;white-space:nowrap;display:flex;align-items:baseline;gap:5px}
.hd-allin{font-size:10px;color:var(--txt3);padding-top:2px;font-style:italic}

/* Review popup readability: the standalone window has ample width, so the
   street history can be comfortably larger without affecting the compact
   analyzer embedded in the main dashboard. */
.review-popup .hd-wrap2{gap:12px;padding-top:6px}
.review-popup .hd-sv2{gap:8px}
.review-popup .hd-stc2{min-width:145px;padding:6px 8px 7px}
.review-popup .hd-sth2{height:36px;gap:5px;margin-bottom:4px}
.review-popup .hd-stc2 .hd-card{font-size:17px!important;padding:3px 6px!important;border-radius:5px}
.review-popup .hd-slbl2{font-size:10px;margin-bottom:4px;gap:7px}
.review-popup .ha{font-size:11.5px;gap:9px;padding:2px 0;line-height:1.25}
.review-popup .ha .an{font-size:11.5px;min-width:54px}
.review-popup .ha .av{font-size:11.5px;min-width:38px}
.review-popup .ha .aa{font-size:11.5px}
.review-popup .hd-stc2 .hi-pos{font-size:9.5px!important;min-width:25px!important;padding:1px 4px!important}
.review-popup .hd-allin{font-size:11.5px;padding-top:4px}
/* fold action rows: dimmed */
.ha.me{background:rgba(201,145,26,0.05);border-radius:2px}
.ha-ind{width:3px;align-self:stretch;border-radius:1px;flex-shrink:0;min-height:10px}
.ha.hfold{opacity:1}
/* hero cards in preflop header same chip style as board cards */

/* ── Stats panel ── */
#stats-panel{padding:10px 14px 18px;overflow-x:auto}
select.f-range-sel{height:22px;font-size:11px;background:transparent;border:.5px solid #1f2937;border-radius:22px;color:#6b7280;padding:0 18px 0 8px;outline:none;cursor:pointer;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3E%3Cpath d='M0 0l4 4 4-4z' fill='%234b5563'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 5px center;min-width:52px;max-width:88px}
select.f-range-sel:hover{border-color:#374151;color:#9ca3af}
.sp-tbl{width:100%;border-collapse:collapse}
.sp-tbl thead th{color:#6b7280;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:8px 18px 8px;text-align:right;border-bottom:1px solid #1a2030;white-space:nowrap;background:#080b10}
.sp-tbl thead th:first-child{text-align:left;padding-left:12px}
.sp-tbl tbody td{padding:10px 18px;text-align:right;border-bottom:.5px solid #0f1318;white-space:nowrap;font-size:14px;color:#9ca3af;vertical-align:middle}
.sp-tbl tbody td:first-child{text-align:left;padding-left:12px}
.sp-tbl tbody tr:hover td{background:rgba(255,255,255,0.03)}
.sp-tbl tfoot td{border-top:2px solid #2d3748;padding:14px 18px;text-align:right;font-size:14px;font-weight:700;white-space:nowrap;color:#9ca3af;background:#0b0f18}
.sp-tbl tfoot td:first-child{text-align:left;padding-left:12px}
.sp-pos-lbl{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--atxt);background:var(--abg);border:1px solid var(--abrd);border-radius:4px;padding:3px 10px;display:inline-block;text-align:center;min-width:38px}
.sp-val-pos{color:#6ee7b7}.sp-val-neg{color:#fca5a5}.sp-val-hi{color:#e2e8f0;font-weight:700}


/* Bottom split — fills whatever vertical space remains after the (now
   fixed-height) panels above it, via flex instead of a brittle calc(). */
.bottom{display:block}  /* layout now driven by .sec-wrap */

/* Hand list — TV-aligned dark style, no per-row lines */
.list-panel{display:flex;flex-direction:column}
.panel-hdr{padding:.28rem .75rem;border-bottom:none;display:flex;align-items:center;gap:6px;background:#0a0c0f;flex-shrink:0}
.panel-title{font-size:10px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.04em}
.list-scroll{flex:1;overflow-y:auto;min-height:0;scrollbar-width:thin;scrollbar-color:#1f2937 transparent}
.list-scroll::-webkit-scrollbar{width:5px}
.list-scroll::-webkit-scrollbar-track{background:transparent}
.list-scroll::-webkit-scrollbar-thumb{background:#1f2937;border-radius:3px}
.list-scroll::-webkit-scrollbar-thumb:hover{background:#374151}
.hi{display:flex;align-items:center;gap:5px;padding:4px 10px;border-bottom:none;cursor:pointer;transition:background .1s;position:relative}
.hi:hover{background:#0d1117}
.hi.active{background:#0d1117;border-left:3px solid #3dd68c;padding-left:7px}
.hi-n{font-size:10px;color:#4b5563;width:30px;flex-shrink:0;text-align:right}
.hi-pos{font-size:9px;font-weight:500;color:var(--atxt);background:var(--abg);border-radius:3px;padding:1px 4px;flex-shrink:0;width:28px;text-align:center;white-space:nowrap}
.hi-ph{width:6px;height:6px;border-radius:50%;flex-shrink:0}.hi-ph-slot{width:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.hi-c{font-size:13px;font-weight:500;width:46px;flex-shrink:0;white-space:nowrap}
.hi-inf{flex:1;min-width:0;overflow:hidden}
.hi-m{font-size:10px;color:#4b5563}
.hi-note{font-size:11px;color:#c9d1e0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hi-event-slot{min-width:52px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;gap:3px;font-size:11px;line-height:1;white-space:nowrap}
.hi-event-icon{width:15px;flex:0 0 15px;text-align:center;display:inline-block}
.hi-screenshot-icon{filter:saturate(.7);opacity:.9}
.hi-shared-icon{color:#58e2a8;font-size:14px;font-weight:800}
.hi-shared-icon[data-manage-share]{cursor:pointer;border-radius:3px}
.hi-shared-icon[data-manage-share]:hover{background:rgba(61,214,140,.14);color:#8af0c2}
.hi-space-author{width:20px;height:20px;flex:0 0 20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#174638;border:1px solid #28745a;color:#b7f7dc;font-size:8px;font-weight:800;letter-spacing:.02em;cursor:help}
.hi-space-new-label{display:inline-flex;align-items:center;height:16px;padding:0 4px;border-radius:3px;background:#153354;border:1px solid #28639a;color:#9dcbf5;font-size:7px;font-weight:800;letter-spacing:.05em}
.hi-space-new{background:rgba(55,138,221,.10);box-shadow:inset 3px 0 #378add}
.hi-space-new:hover,.hi-space-new.active{background:rgba(55,138,221,.17)}
.hi-space-opened{background:rgba(255,255,255,.012)}
.hi-space-reviewed{background:rgba(61,214,140,.045);box-shadow:inset 3px 0 rgba(61,214,140,.48)}
.hi-space-reviewed:hover,.hi-space-reviewed.active{background:rgba(61,214,140,.09)}
.badge{font-size:9px;font-weight:500;border-radius:3px;padding:1px 5px;flex-shrink:0;width:16px;text-align:center}
.wbg{background:#085041;color:#9fe1cb}.lbg{background:#501313;color:#f7c1c1}.nbg{background:#141820;color:#6b7280}
.hi-rfi{font-size:9px;color:#c4a8f5;flex-shrink:0;font-weight:500}
/* Source-tournament tag */
.hi-src{font-size:9px;font-weight:500;color:#6b7280;background:#141820;border-radius:3px;padding:1px 4px;flex-shrink:0;white-space:nowrap}
.hi-bubble{font-size:10px;font-weight:800;color:#92400e;background:#fbbf24;border-radius:3px;padding:2px 7px;flex-shrink:0;white-space:nowrap;letter-spacing:.03em}
.hi-bubble-row{border-left:4px solid #f59e0b !important;background:rgba(245,158,11,.1) !important}
.hi.sel{outline:2px solid #3b82f6;outline-offset:-2px;background:rgba(59,130,246,.08)!important}
#bulk-bar{display:none;align-items:center;gap:4px;padding:5px 8px;background:#0d1117;border-bottom:none;flex-shrink:0;flex-wrap:wrap}
#bulk-bar.show{display:flex}
.bulk-review-actions{display:none}
.lesson-filter-clear{align-items:center;border:1px solid #23775e;border-radius:12px;background:#0c2a21;color:#82e1c0;font-size:var(--type-meta);font-weight:600;line-height:1;padding:4px 8px;cursor:pointer}
.lesson-list-topic{position:sticky;top:0;z-index:2;padding:7px 9px;background:#14202b;border-top:1px solid #2a3b4c;border-bottom:1px solid #2a3b4c;color:var(--text-strong);font-size:var(--type-label);font-weight:700;letter-spacing:.03em}
#bulk-sel-count{font-size:10px;color:#6b7280;margin-right:4px;white-space:nowrap}
#bulk-clear{padding:1px 5px;border:none;background:transparent;color:#6b7280;cursor:pointer;font-size:14px;line-height:1;margin-left:auto}
.hi.rank-1::after,.hi.rank-2::after,.hi.rank-3::after{content:'';position:absolute;right:0;top:0;bottom:0;width:3px;pointer-events:none}
.hi.rank-1::after{background:#d4a017}
.hi.rank-2::after{background:#9098a3}
.hi.rank-3::after{background:#b5651d}
.hi-rfi-slot{width:14px;flex-shrink:0;text-align:center}
.hi-mistake{width:11px;height:11px;border:1.3px solid #1f2937;border-radius:2px;flex-shrink:0;cursor:pointer;transition:background .12s,border-color .12s}
.hi-mistake:hover{border-color:#6b7280}
.hi-mistake.on{background:#e0a23a;border-color:#e0a23a}
.hi-mistake.on-correct{background:#1d9e75;border-color:#1d9e75}
.hi-mistake.on-mistake{background:#e24b4a;border-color:#e24b4a}
.hi-mistake.on-discuss{background:#d97706;border-color:#f59e0b}
.hi-mistake.on-feedback{background:#7c3aed;border-color:#a78bfa}
.hi-mistake.on-seen{background:#6b7280;border-color:#9ca3af}
.hi-mistake.on-undecided{background:#3b82f6;border-color:#93c5fd}
.hi-mistake.on-reviewed{background:#374151;border-color:#4b5563}

/* Matrix — TV-aligned dark style */
.matrix-panel{display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:0}
.mx-ctrl{display:flex;gap:4px;padding:.28rem .6rem;border-bottom:none;flex-wrap:wrap;align-items:center;background:transparent;flex-shrink:0}
/* mx-wld: Win/Loss/no-result percentage readout for the hands currently
   shown (same matchH set as the chart/list — see buildMatrix's wldStats),
   pushed to the far right of the matrix's Color row via margin-left:auto.
   Reuses the existing .wbg/.lbg/.nbg result colors for visual consistency. */
.mx-wld{margin-left:auto;display:flex;gap:8px;font-size:10px;color:var(--txt3);flex-shrink:0}
.mx-wld b{font-weight:700}
.mx-wld .w{color:#0f6e56}.mx-wld .l{color:#a32d2d}
@media(prefers-color-scheme:dark){.mx-wld .w{color:#9fe1cb}.mx-wld .l{color:#f7c1c1}}
.mx-body{display:flex;align-items:stretch;gap:12px;flex:1;min-height:0;overflow:hidden}
.matrix-scroll{overflow:hidden;padding:.35rem .4rem;flex:0 1 700px;min-width:0;min-height:0;box-sizing:border-box}
.mx-inspector{flex:1 1 260px;min-width:240px;max-width:360px;margin:.35rem .65rem .35rem 0;padding:12px 14px;background:#0a0e14;border:1px solid #263345;border-radius:8px;overflow:hidden;color:#c1cad6}
.mx-inspector-empty{height:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;color:#8491a3;font-size:13px;line-height:1.6}
.mxi-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-bottom:9px;border-bottom:1px solid #263345}
.mxi-combo{font-size:26px;font-weight:750;line-height:1;color:#f5f8fb;letter-spacing:-.03em}
.mxi-sample{font-size:12px;font-weight:550;color:#b5c0ce;margin-top:5px;line-height:1.25}.mxi-state{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#8df0ce;background:#0d2018;border:1px solid #276442;border-radius:10px;padding:2px 7px}
.mxi-metrics{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:9px 0 11px}
.mxi-metric{background:#0d131b;border:1px solid #263345;border-radius:6px;padding:7px 9px;min-width:0}
.mxi-metric-lbl{font-size:10px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:#aab6c6;white-space:nowrap}.mxi-metric-val{font-size:18px;font-weight:750;color:#eef3f8;margin-top:3px;font-variant-numeric:tabular-nums;line-height:1}.mxi-metric-sub{font-size:11px;color:#a0acbc;margin-top:3px;line-height:1.2}
.mxi-section-title{font-size:11px;font-weight:750;letter-spacing:.055em;text-transform:uppercase;color:#b8c3d1;margin-bottom:6px;line-height:1.25}
.mxi-action{display:grid;grid-template-columns:72px minmax(30px,1fr) 32px 40px;align-items:center;column-gap:8px;margin:6px 0;font-size:12px;line-height:1.2}.mxi-action-name{color:#d3dbe5;white-space:nowrap}.mxi-action-track{height:3px;background:#1a2430;border-radius:3px;overflow:hidden;opacity:.8}.mxi-action-fill{height:100%;border-radius:3px;opacity:.8}.mxi-action-count,.mxi-action-pct{text-align:right;color:#f3f6f9;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.mxi-action-pct{color:#c5cfdb}
@media(max-width:1000px){.mx-inspector{min-width:220px;padding:14px}.mxi-metrics{grid-template-columns:1fr}.mxi-action{grid-template-columns:68px minmax(24px,1fr) 32px 42px;column-gap:7px}.mxi-action-count,.mxi-action-pct{font-size:14px}}
.hmt{border-collapse:collapse;font-size:12px;table-layout:fixed;width:100%;max-width:728px;-webkit-user-select:none;user-select:none}
.hmt td,.hmt th{padding:0;border:.5px solid #131820}
.hmt ::selection{background:transparent;color:inherit}
.hmc{cursor:pointer;text-align:center;height:40px;position:relative;transition:filter .1s;vertical-align:middle}
.hmc:hover{filter:brightness(0.88)}
.hmc.sel{outline:2.5px solid var(--atxt);outline-offset:-2px;position:relative;z-index:2}
.hmc.empty{cursor:default;background:#0d1117!important}
.mx-leg{display:flex;gap:10px;padding:.28rem .6rem;flex-wrap:wrap;font-size:10px;color:#6b7280;border-top:.5px solid #131820;flex-shrink:0}
.mli{display:flex;align-items:center;gap:4px}
.mld{width:10px;height:10px;border-radius:2px;flex-shrink:0}
.mx-hinfo{display:flex;flex-direction:column;gap:3px;padding:.35rem .6rem;font-size:10px;color:#6b7280;flex-shrink:0;border-top:.5px solid #131820}
.mx-hinfo b{color:#e2e8f0;font-weight:600}
.mx-hinfo .sep{color:#1f2937;padding:0 2px}
.mhi-row{display:flex;align-items:center;gap:5px;line-height:1.5}
.mhi-lbl{color:#4b5563;min-width:68px;flex-shrink:0}
.mhi-time{color:#c9d1e0;font-variant-numeric:tabular-nums}
.mx-hinfo .cpybtn{font-size:9px;padding:1px 5px;border:1px solid #1f2937;border-radius:3px;background:none;color:#6b7280;cursor:pointer;line-height:1.4}
.mx-hinfo .cpybtn:hover{background:#0d1117}

/* Readability baseline — keep dense analytical layouts, but never rely on
   sub-11px low-contrast text for information the user must interpret. */
.hdr h1{font-size:15px;font-weight:650}.hdr .sub,.hdr-buyin-detail{font-size:12px;color:#b4bfcc}
.phase-bar{height:26px}.ps{font-size:11.5px;font-weight:700;text-shadow:0 1px 2px #000}
.flbl{font-size:11px;color:#98a6b7;font-weight:700}.pill,.tv-pill{font-size:12px;color:#aab6c5;padding:3px 9px}.clear-btn{font-size:12px;color:#9aa8b9}.filter-count{font-size:11px;color:#94a2b4}
.sec-title{font-size:11.5px;color:#aab6c5;font-weight:750}.sec-meta{font-size:11px;color:#8492a5}.hand-sort-wrap{font-size:10.5px;color:#93a1b3}
.hd-ph{font-size:11px;padding:3px 9px}.ha,.ha .an{font-size:12px}.ha .an{color:#d0d8e3}.hd-vrow{font-size:12px;padding:2px 0}.hd-allin,.sd-name{font-size:11px;color:#aab5c3}
.rv-lbl{font-size:10.5px;color:#9aa8b9}.rv-pill{font-size:12px;color:#aab6c5;padding:3px 9px}.rv-note{font-size:13px;color:#dce4ee}.rv-note::placeholder{color:#758398}.rv-status{font-size:11px;color:#8997a9}
.hi-n{font-size:11px;color:#8391a3}.hi-pos{font-size:10.5px}.hi-m{font-size:11px;color:#8391a3}.hi-note{font-size:12px}.hi-rfi,.hi-src,.badge{font-size:10px}
.mx-wld,.mx-leg,.mx-hinfo{font-size:11px;color:#95a3b5}.mhi-lbl{color:#8997a9}.mxi-metric-lbl{font-size:11px}.mxi-metric-sub{font-size:12px}.mxi-section-title{font-size:12px}
.pk-year-sep,.flt-lbl{font-size:11px;color:#91a0b2}.pk-date-btn{font-size:11px;color:#9eabbc}.pk-col-date,.pk-col-players,.pk-col-flag{font-size:12px}.pk-col-time,.pk-col-tid{font-size:11px;color:#8997a9}

/* Picker */
.picker{padding:1rem}
.picker-intro{font-size:12px;color:var(--txt2);margin-bottom:.8rem;line-height:1.5}
.picker-row{display:flex;align-items:center;gap:10px;margin-bottom:.6rem;flex-wrap:wrap}
.picker-row input[type=text]{flex:1;min-width:220px;font-size:12px;padding:6px 10px;border:.5px solid var(--brd2);border-radius:6px;background:var(--bg);color:var(--txt)}
/* View-mode switcher (Single Tournament / Date Range / Month / Session) and
   its three control rows — aggregates hands across multiple tournaments so
   RFI/position/phase stats can be read across a whole session, month, or
   custom date range instead of one tournament at a time. */
.picker-row input[type=date],.picker-row select{font-size:12px;padding:5px 8px;border:.5px solid var(--brd2);border-radius:6px;background:var(--bg);color:var(--txt)}
#agg-status{font-size:11px;color:var(--txt3)}
.picker-list{background:#080b10;border:1px solid #1c2030;border-radius:10px;max-height:55vh;overflow-y:auto;overflow-anchor:auto;scrollbar-width:thin;scrollbar-color:#1f2937 transparent}
.picker-list::-webkit-scrollbar{width:5px}
.picker-list::-webkit-scrollbar-track{background:transparent}
.picker-list::-webkit-scrollbar-thumb{background:#1f2937;border-radius:3px}
.picker-list::-webkit-scrollbar-thumb:hover{background:#374151}
.pk-item{display:flex;flex-direction:column;gap:4px;padding:10px 16px;border-bottom:1px solid #111827;cursor:pointer;position:relative;transition:background .12s}
.pk-item::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent;transition:background .12s}
.pk-item:last-child{border-bottom:none}
.pk-item:hover{background:#0f1520}
.pk-item:hover::before{background:linear-gradient(to bottom,#3dd68c,#7c3aed)}
/* Card-style separation for session/month agg rows */
.pk-item.pk-item-agg{margin-bottom:4px;border-radius:6px;border:1px solid #0d1526}
.pk-item.pk-item-agg:last-child{margin-bottom:0;border-bottom:1px solid #0d1526}
/* Year divider in session list */
.pk-year-sep{padding:10px 16px 4px;font-size:10px;font-weight:800;letter-spacing:.14em;color:#374151;text-transform:uppercase;pointer-events:none;user-select:none}
/* Date-range quick-select buttons */
.pk-date-btn{font-size:10px;font-weight:700;background:#0d1117;border:1px solid #1c2030;border-radius:5px;color:#6b7280;padding:3px 10px;cursor:pointer;transition:background .1s,border-color .1s,color .1s;white-space:nowrap;letter-spacing:.02em}
.pk-date-btn:hover{background:#111827;color:#c9d1e0;border-color:#2a3040}
.pk-date-btn.on{background:#0f2318;border-color:#1a4a2e;color:#3dd68c}
/* Medal dots — fixed-size CSS circles, no emoji height variance */
.pk-medal-dot{display:inline-flex;align-items:center;justify-content:center;width:10px;height:10px;border-radius:50%;font-size:9px;font-weight:800;color:rgba(0,0,0,.75);margin:1px 1px;flex-shrink:0;line-height:1;vertical-align:middle}
.pk-medal-g{background:linear-gradient(135deg,#fbbf24,#d97706)}
.pk-medal-s{background:linear-gradient(135deg,#d1d5db,#9ca3af)}
.pk-medal-b{background:linear-gradient(135deg,#c27c45,#92400e);color:rgba(255,255,255,.9)}
.pk-row1{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;overflow:hidden}
/* Fixed-width columns — every row shares the same grid so data stays aligned */
.pk-col-date{width:82px;flex-shrink:0;font-size:11px;color:#3dd68c;font-weight:600;white-space:nowrap}
.pk-col-time{width:68px;flex-shrink:0;font-size:10.5px;color:#4b5563;white-space:nowrap}
.pk-col-buyin{width:52px;flex-shrink:0;font-weight:700;font-size:13px;color:#3dd68c;letter-spacing:-.01em;white-space:nowrap}
.pk-col-tid{width:90px;flex-shrink:0;font-size:10px;color:#7c6ac4;font-family:monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pk-col-players{width:86px;flex-shrink:0;font-size:11px;color:#6b7280;white-space:nowrap}
.pk-col-result{width:130px;flex-shrink:0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pk-col-mistakes{width:38px;flex-shrink:0;text-align:right}
.pk-col-flag{font-size:10px;color:var(--txt3);flex-shrink:0}
/* Fixed badge zones — same width in every row so ITM/FT/eye are always column-aligned */
.pk-zone-itm{width:44px;flex-shrink:0;display:flex;justify-content:flex-end;align-items:center}
.pk-zone-ft{width:36px;flex-shrink:0;display:flex;justify-content:flex-end;align-items:center}
.pk-zone-medal{width:24px;flex-shrink:0;display:flex;justify-content:flex-end;align-items:center;font-size:14px;line-height:1}
.pk-zone-eye{width:22px;flex-shrink:0;display:flex;justify-content:center;align-items:center;font-size:14px;color:#4b5563;transition:color .15s;cursor:default}
.pk-zone-eye.pk-eye-seen{color:#3dd68c;opacity:.8}
/* Shared filter-bar atoms — Custom / Final Table / Schedule rows */
.flt-bar{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.flt-lbl{font-size:10px;font-weight:700;color:#4b5563;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;flex-shrink:0}
.flt-sep{width:1px;height:16px;background:#1a2030;flex-shrink:0;margin:0 2px;align-self:center}
.flt-dash{font-size:12px;color:#2d3748;flex-shrink:0}
.flt-sel{height:26px;font-size:11px;background:#0d1117;border:1px solid #1a2030;border-radius:5px;color:#c9d1e0;padding:0 7px;outline:none;cursor:pointer;font-family:inherit;transition:border-color .15s}
.flt-sel:hover,.flt-sel:focus{border-color:#2a3347}
.flt-date{height:26px;font-size:11px;background:#0d1117;border:1px solid #1a2030;border-radius:5px;color:#c9d1e0;padding:0 6px;outline:none;cursor:pointer;font-family:inherit;color-scheme:dark;transition:border-color .15s}
.flt-date:hover,.flt-date:focus{border-color:#2a3347}
.flt-load-btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 16px;background:transparent;border:1px solid #2a3040;border-radius:6px;color:#c9d1e0;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;font-family:inherit;flex-shrink:0}
.flt-load-btn:hover{border-color:#4a5570;color:#fff}
.flt-load-btn-green{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 20px;background:rgba(61,214,140,.07);border:1px solid rgba(61,214,140,.35);border-radius:7px;color:#3dd68c;font-size:12px;font-weight:700;cursor:pointer;transition:all .18s;white-space:nowrap;font-family:inherit;flex-shrink:0;letter-spacing:.01em}
.flt-load-btn-green:hover{background:rgba(61,214,140,.15);border-color:rgba(61,214,140,.65);color:#5fe8a8;box-shadow:0 0 12px rgba(61,214,140,.12)}
.flt-card{background:#070c14;border:1px solid #111b2a;border-radius:10px;padding:10px 16px;display:flex;flex-direction:column;gap:0}
.flt-row{display:flex;align-items:center;gap:10px;padding:6px 0}
.flt-row+.flt-row{border-top:none}
.flt-row-lbl{font-size:10px;font-weight:700;color:#374151;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;min-width:68px;flex-shrink:0}
.flt-status{font-size:11px;color:var(--txt3);flex-shrink:0}

/* Picker range panels: these controls are used for long numeric lists, so keep
   both the closed value and the opened native menu comfortably readable. */
.flt-card .flt-row{gap:11px;padding:7px 0}
.flt-card .flt-row-lbl{
  min-width:72px;
  font-size:12px;
  line-height:1.2;
  color:#a9b6c8;
  letter-spacing:.055em;
}
.flt-card .flt-sel{
  height:34px;
  min-width:88px!important;
  padding:0 10px;
  font-size:13px;
  font-weight:600;
  color:#e3e9f1;
  border-color:#334155;
  background:#0c121b;
}
.flt-card .flt-sel option{
  font-size:13px;
  font-weight:500;
  color:#f1f5f9;
  background:#151922;
}
.flt-card .flt-date{
  height:34px;
  min-width:132px;
  padding:0 9px;
  font-size:13px;
  font-weight:550;
  color:#e3e9f1;
  border-color:#334155;
  background:#0c121b;
}
.flt-card .flt-dash{font-size:14px;color:#718096}
.flt-card .flt-load-btn-green{height:34px;font-size:13px;padding:0 20px}
/* Agg (session/month) grid rows */
.pk-agg-row-wrap{display:flex;flex-direction:column}
.pk-agg-row1{display:flex;align-items:center;gap:7px;min-height:28px}
.pk-agg-year-row{min-height:64px;align-items:stretch}
.pk-agg-left{display:flex;align-items:center;gap:7px;flex:0 0 auto;max-width:210px;overflow:hidden}
.pk-agg-year-left{flex-direction:column;align-items:flex-start;gap:3px;justify-content:center}
.pk-agg-primary{font-size:var(--type-title);font-weight:700;color:#67e8ad;letter-spacing:-.01em;white-space:nowrap}
.pk-agg-year-title{font-weight:800}
.pk-agg-count{flex-shrink:0;font-size:var(--type-body);font-weight:500;color:var(--text-meta)}
.pk-agg-medals-mid{flex:1;min-width:0;font-size:14px;line-height:1.4;white-space:normal;overflow:visible;padding-right:14px;text-align:right;display:flex;flex-wrap:wrap;justify-content:flex-end;align-content:center;gap:0}
/* pk-agg-right has a FIXED width so money columns stay aligned across all rows.
   Widths sized for worst case: ITM 100% | FT: 88 | $100,000 × 3 cols */
.pk-agg-right{width:382px;flex-shrink:0;display:flex;align-items:center;gap:5px}
.pk-agg-itm{width:66px;flex-shrink:0;display:flex;justify-content:flex-end;align-items:center}
.pk-agg-ft{width:52px;flex-shrink:0;display:flex;justify-content:flex-end;align-items:center}
/* Three fixed-width money columns so values align vertically across all rows */
.pk-agg-money{display:flex;align-items:center;gap:4px;flex-shrink:0}
.pk-mcol{width:72px;flex-shrink:0;display:flex;justify-content:flex-end;align-items:center}
/* money pills */
.pk-mpill{border-radius:4px;padding:1px 6px;font-size:10px;white-space:nowrap;font-variant-numeric:tabular-nums}
.pk-mpill-in{background:#0d1117;border:1px solid #1a2030;color:#6b7280}
.pk-mpill-won{background:#0f2318;border:1px solid #1a4a2e;color:#3dd68c}
.pk-mpill-pos{background:#0f2318;border:1px solid #1a4a2e;color:#3dd68c;font-weight:600}
.pk-mpill-neg{background:#1f0d0d;border:1px solid #3a1111;color:#ef4444;font-weight:600}
/* ── Types timeline view ── */
.pk-tl-hour-hdr{display:flex;align-items:center;gap:10px;padding:22px 16px 8px;position:sticky;top:0;z-index:2;background:#080b10}
.pk-tl-hour-label{font-size:11px;font-weight:700;color:#a78bfa;letter-spacing:.1em;min-width:36px;flex-shrink:0;text-transform:uppercase}
.pk-tl-hour-line{display:none}
.pk-tl-hour-group{background:transparent;display:flex;flex-direction:column;gap:18px;padding-bottom:10px}
.pk-type-item{min-height:60px;background:#0d1117;border-radius:8px;border-bottom:none !important}
/* Line 1: time + full name */
.pk-tl-row1{display:flex;align-items:center;gap:7px}
.pk-tl-time{width:52px;flex-shrink:0;font-size:11px;color:#94a3b8;font-family:monospace;white-space:nowrap}
.pk-tl-name-full{flex-shrink:1;min-width:0;font-size:13px;font-weight:700;color:#3dd68c;letter-spacing:-.01em;cursor:text;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pk-tl-buyin-tag{font-size:10px;font-weight:500;color:#6b7280;white-space:nowrap;flex-shrink:0}
.pk-tl-hands-tag{font-size:11px;font-weight:600;color:#64748b;white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.pk-tl-count-badge{font-size:10px;font-weight:800;color:#fbbf24;background:#1c1608;border:1px solid #78350f;border-radius:4px;padding:1px 6px;white-space:nowrap;flex-shrink:0;line-height:1.4;min-width:26px;text-align:center}
/* Line 2: right stats (indented to align with start of name) */
.pk-tl-row2{display:flex;align-items:center;gap:5px;padding-left:59px;margin-top:3px}
.pk-tl-row2-spacer{flex:1}
/* Line 3: medals */
.pk-tl-medals-line{padding-left:59px;margin-top:5px;font-size:13px;line-height:1.4;min-height:18px}
/* Right section for types rows — wider than session/month to fit BB/100 column */
.pk-type-right{width:476px;flex-shrink:0;display:flex;align-items:center;gap:5px}
.pk-tl-bb100{width:92px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-start}
/* ── Schedule card grid ──────────────────────────────────────────────────── */
.sch-wrap{padding:10px 14px 24px}
.sch-time-sep{display:flex;align-items:center;gap:10px;padding:14px 0 8px}
.sch-time-sep::after{content:'';flex:1;height:1px;background:#0d1520}
.sch-time-lbl{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#4b5563;flex-shrink:0}
.sch-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:4px}
.sch-card{background:#0a0d14;border:1px solid #1c2030;border-radius:10px;cursor:pointer;overflow:hidden;display:flex;flex-direction:column;transition:transform .15s,border-color .18s,box-shadow .18s}
.sch-card:hover{transform:translateY(-2px);border-color:#2a3650;box-shadow:0 4px 22px rgba(0,0,0,.45)}
.sch-card-excl{opacity:.38}
.sch-card-strip{height:2px;background:linear-gradient(90deg,transparent,rgba(61,214,140,.28),transparent);flex-shrink:0}
.sch-card-body{padding:11px 13px 10px;display:flex;flex-direction:column;gap:5px;flex:1}
.sch-card-top{display:flex;align-items:center;gap:5px}
.sch-card-time{font-size:11px;font-weight:800;color:#3dd68c;letter-spacing:.03em;flex-shrink:0}
.sch-card-buyin-tag{font-size:10px;color:#4b5563;background:#0d1117;border:1px solid #1c2030;border-radius:3px;padding:1px 5px;flex-shrink:0}
.sch-card-count{font-size:10px;font-weight:800;color:#fbbf24;background:#1c1608;border:1px solid #78350f;border-radius:4px;padding:1px 6px;flex-shrink:0;line-height:1.4}
.sch-card-name{font-size:13px;font-weight:700;color:#c9d1e0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:text;letter-spacing:-.01em;display:block;transition:color .12s}
.sch-card-name:hover{color:#3dd68c}
.sch-card-stats{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:1px}
.sch-stat-itm{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;background:#0f2318;color:#3dd68c}
.sch-stat-ft{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;background:#0f1a35;color:#60a5fa}
.sch-stat-bb{font-size:10px;font-weight:600}
.sch-card-medals{margin-top:2px}
.sch-card-footer{display:flex;align-items:center;gap:6px;margin-top:auto;padding-top:6px}
.sch-excl-btn{font-size:10px;color:#4b5563;background:none;border:1px solid #1c2030;border-radius:4px;padding:1px 7px;cursor:pointer;opacity:0;transition:opacity .12s;font-family:inherit}
.sch-card:hover .sch-excl-btn{opacity:1}
.sch-restore-btn{font-size:10px;color:#a78bfa;background:none;border:1px solid #4c1d95;border-radius:4px;padding:1px 7px;cursor:pointer;font-family:inherit}
/* Format tag */
.pk-tag{background:#1a1535;color:#a78bfa;border-radius:4px;padding:1px 7px;font-size:10px;font-weight:600;white-space:nowrap;border:1px solid #2d1f6e}
.pk-latereg{font-size:10px;font-weight:700;color:#fb923c;white-space:nowrap;margin-left:4px}
.pk-meta{color:#6b7280;white-space:nowrap}
.pk-place{font-weight:600;color:#94a3b8;white-space:nowrap}
.pk-loading{color:#374151;font-style:italic}
.pk-podium{font-size:13px;white-space:nowrap}
.pk-itm{background:#052e1a;color:#34d399;border-radius:4px;padding:1px 7px;font-size:10px;font-weight:700;white-space:nowrap;border:1px solid #064e2a}
.pk-ft{background:#1e0d47;color:#c4b5fd;border-radius:4px;padding:1px 7px;font-size:10px;font-weight:700;white-space:nowrap;border:1px solid #3b1fa3}

/* ── Hall of Fame ────────────────────────────────────────────────────── */
#hof-overlay{display:none;position:fixed;inset:0;z-index:9999;background:#060810;overflow-y:auto;font-family:system-ui,-apple-system,sans-serif}
.hof-hdr{display:flex;align-items:center;gap:18px;padding:20px 28px 14px;border-bottom:1px solid #1c2030;background:#060810;position:sticky;top:0;z-index:2}
.hof-title{font-size:22px;font-weight:800;letter-spacing:-.02em;color:#fff;flex-shrink:0}
.hof-trophy-count{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#6b7280;flex-shrink:0}
.hof-stats-bar{display:flex;gap:16px;flex-wrap:wrap;flex:1}
.hof-stat{font-size:13px;color:#9ca3af;white-space:nowrap}
.hof-stat b{color:#e2e8f0;font-size:14px}
.hof-close{margin-left:auto;font-size:20px;line-height:1;background:none;border:none;color:#6b7280;cursor:pointer;padding:4px 8px;border-radius:6px;flex-shrink:0}
.hof-close:hover{color:#e2e8f0;background:#1c2030}
.hof-filters{display:flex;align-items:center;gap:8px;padding:12px 28px;flex-wrap:wrap;background:#060810;position:sticky;top:73px;z-index:2;border-bottom:1px solid #0d1117}
.hof-row-filters{display:flex;align-items:center;gap:6px;padding:5px 28px;flex-wrap:wrap;background:#060810;position:sticky;z-index:2;border-bottom:1px solid #0d1117}
#hof-year-filters{top:113px}
#hof-month-filters{top:147px}
.hof-row-label{font-size:10px;color:#374151;font-weight:700;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;min-width:38px;flex-shrink:0}
.hof-pill{font-size:11px;padding:4px 12px;border:1px solid #1c2030;border-radius:12px;background:none;color:#9ca3af;cursor:pointer;white-space:nowrap;transition:all .12s}
.hof-pill:hover{border-color:#374151;color:#e2e8f0}
.hof-pill.on{background:#1a0a3a;color:#c4b5fd;border-color:#4c1d95}
.hof-sep{width:1px;height:18px;background:#1c2030;flex-shrink:0}
.hof-sort-pill{font-size:11px;padding:4px 12px;border:1px solid #1c2030;border-radius:12px;background:none;color:#6b7280;cursor:pointer;white-space:nowrap;transition:all .12s}
.hof-sort-pill:hover{color:#9ca3af;border-color:#374151}
.hof-sort-pill.on{color:#fbbf24;border-color:#78350f;background:#1c1004}
.hof-place-toggle{font-size:11px;padding:4px 12px;border:1px solid #1c2030;border-radius:12px;background:none;color:#6b7280;cursor:pointer;white-space:nowrap;transition:all .12s}
.hof-place-toggle:hover{color:#9ca3af;border-color:#374151}
.hof-place-toggle.on{color:#3dd68c;border-color:#166534;background:#0d2018}
.hof-hero-block{display:flex;flex-direction:column;gap:2px;flex-shrink:0;border-right:1px solid #1c2030;padding-right:18px}
.hof-hero-name{font-size:12px;font-weight:700;color:#e2e8f0;white-space:nowrap;letter-spacing:-.01em}
.hof-hero-ctx{font-size:11px;color:#6b7280;white-space:nowrap}
.hof-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;padding:20px 28px 40px}
.hof-place-section{padding:0 28px 24px}
.hof-place-banner-hdr{display:flex;align-items:center;gap:12px;padding:20px 0 10px;border-bottom:2px solid #1c2030}
.hof-place-banner-label{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
.hof-place-banner-count{font-size:11px;color:#4b5563;white-space:nowrap}
.hof-place-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;padding:14px 0 0}
.hof-card{background:#0a0d14;border-radius:12px;overflow:hidden;border:1px solid #1c2030;cursor:pointer;transition:transform .15s,border-color .15s;display:flex;flex-direction:column}
.hof-card:hover{transform:translateY(-2px)}
.hof-card-gold{border-color:#78350f}
.hof-card-gold:hover{border-color:#d97706;box-shadow:0 0 18px rgba(251,191,36,.12)}
.hof-card-silver{border-color:#334155}
.hof-card-silver:hover{border-color:#94a3b8;box-shadow:0 0 18px rgba(148,163,184,.1)}
.hof-card-bronze{border-color:#3b1c0a}
.hof-card-bronze:hover{border-color:#b45309;box-shadow:0 0 14px rgba(180,83,9,.1)}
.hof-card-strip{height:3px;width:100%}
.hof-card-strip-gold{background:linear-gradient(90deg,#92400e,#fbbf24,#92400e)}
.hof-card-strip-silver{background:linear-gradient(90deg,#475569,#cbd5e1,#475569)}
.hof-card-strip-bronze{background:linear-gradient(90deg,#7c2d12,#f97316,#7c2d12)}
.hof-card-body{padding:16px 18px;flex:1;display:flex;flex-direction:column;gap:8px}
.hof-card-roi-line{display:flex;align-items:center}
.hof-card-top{display:flex;align-items:flex-start;gap:10px}
.hof-medal-big{font-size:28px;line-height:1;flex-shrink:0;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}
.hof-card-main{flex:1;min-width:0}
.hof-card-place{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;opacity:.7}
.hof-card-place-gold{color:#fbbf24}
.hof-card-place-silver{color:#94a3b8}
.hof-card-place-bronze{color:#f97316}
.hof-card-name{font-size:14px;font-weight:700;color:#3dd68c;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.hof-card-date{font-size:11px;color:#6b7280;margin-top:2px}
.hof-card-prize{font-size:18px;font-weight:800;letter-spacing:-.02em;color:#fbbf24;text-align:right;flex-shrink:0}
.hof-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hof-card-roi{font-size:11px;font-weight:700;color:#4ade80;white-space:nowrap}
.hof-tag-row{display:flex;gap:4px;flex-wrap:wrap;padding:2px 0 2px}
.hof-tag-chip{font-size:10px;font-weight:700;color:#a78bfa;background:rgba(109,40,217,.18);border-radius:4px;padding:1px 6px;letter-spacing:.04em;white-space:nowrap}
.hof-tag-latereg{color:#fb923c;background:rgba(251,146,60,.15)}
.hof-card-field{font-size:11px;color:#6b7280}
.hof-card-buyin{font-size:10px;color:#4b5563;background:#0d1117;border:1px solid #1c2030;border-radius:4px;padding:1px 6px}
.hof-card-footer{display:flex;align-items:center;gap:8px;padding-top:6px;border-top:1px solid #0d1117;margin-top:auto}
.hof-card-tid{font-size:10px;color:#374151;font-family:monospace}
.hof-card-ft{border-color:#1a2535}
.hof-card-ft:hover{border-color:#3b82f6;box-shadow:0 0 14px rgba(59,130,246,.1)}
.hof-card-strip-ft{background:linear-gradient(90deg,#1e3a5f,#3b82f6,#1e3a5f)}
.hof-card-place-ft{color:#60a5fa}
.hof-card-cash{border-color:#0d2318}
.hof-card-cash:hover{border-color:#3dd68c;box-shadow:0 0 14px rgba(61,214,140,.1)}
.hof-card-strip-cash{background:linear-gradient(90deg,#0d2318,#3dd68c,#0d2318)}
.hof-card-place-cash{color:#3dd68c}
.hof-ft-pos{font-size:18px;font-weight:900;color:#60a5fa;line-height:1.4;display:inline-block;width:36px;text-align:center}
/* HoF money-hide mode */
.hof-money-hidden .hof-card-prize{visibility:hidden}
.hof-money-hidden .hof-card-roi-line{display:none}
.hof-money-hidden .hof-bounty-line{display:none !important}
.hof-money-hidden .hof-prize-num{display:none}
.hof-money-hidden .hof-total-prize{display:none}
.hof-site-badge{font-size:10px;font-weight:700;border-radius:4px;padding:1px 6px;white-space:nowrap;display:inline-block;margin-left:auto}
.hof-site-badge-ps{background:#0c2d52;color:#b5d4f4;border:1px solid #378add}
.hof-site-badge-gg{background:#1a2e0a;color:#86efac;border:1px solid #4ade80}
.hof-site-badge-cp{background:#1c1a00;color:#fde68a;border:1px solid #ca8a04}
.hof-pill.site-on{background:#0d2018;color:#86efac;border-color:#4ade80}
.hof-hero-ctx2{font-size:10px;color:#4b5563;white-space:nowrap}
.hof-section-hdr{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#6b7280;padding:20px 28px 4px;display:flex;align-items:center;gap:12px}
.hof-section-hdr::after{content:'';flex:1;height:1px;background:#1c2030}
.hof-ft-pill{font-size:11px;padding:3px 10px;border:1px solid #1c2030;border-radius:12px;background:none;color:#9ca3af;cursor:pointer;white-space:nowrap;transition:all .12s}
.hof-ft-pill:hover{border-color:#374151;color:#e2e8f0}
.hof-ft-pill.on{background:#0f2a3a;color:#60a5fa;border-color:#1e3a5f}
.hof-ft-filters{position:sticky;top:113px!important}
.hof-open-btn{margin-left:auto;font-size:11px;font-weight:600;color:#a78bfa;background:none;border:1px solid #4c1d95;border-radius:6px;padding:3px 10px;cursor:pointer;transition:background .12s}
.hof-open-btn:hover{background:#1e1047}
.hof-leaderboard{display:flex;flex-direction:column;gap:10px;padding:20px 28px}
.hof-lb-row{background:#0a0d14;border:1px solid #1c2030;border-radius:10px;padding:12px 16px;display:flex;align-items:center;gap:14px;transition:border-color .15s}
.hof-lb-row:hover{border-color:#2d3748}
.hof-lb-rank{font-size:18px;flex-shrink:0;width:28px;text-align:center}
.hof-lb-name{font-size:13px;font-weight:700;color:#3dd68c;min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hof-lb-bar-wrap{width:140px;flex-shrink:0}
.hof-lb-bar-bg{height:6px;background:#0d1117;border-radius:3px;overflow:hidden}
.hof-lb-bar-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#7c3aed,#a78bfa)}
.hof-lb-wins{font-size:12px;font-weight:700;color:#c4b5fd;flex-shrink:0;min-width:50px;text-align:right}
.hof-lb-prize{font-size:11px;color:#fbbf24;flex-shrink:0;min-width:70px;text-align:right}
.hof-lb-buyin{font-size:10px;color:#4b5563}
/* HoF entry button in schedule */
.hof-entry-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 20px;margin:16px 14px 8px;background:linear-gradient(135deg,#0a0914,#130d28);border:1px solid #2d1f6e;border-radius:10px;cursor:pointer;font-size:13px;font-weight:700;color:#c4b5fd;letter-spacing:.01em;transition:all .18s;width:calc(100% - 28px);text-align:center}
.hof-entry-btn:hover{border-color:#7c3aed;color:#e9d5ff;box-shadow:0 0 20px rgba(124,58,237,.15)}

.picker-card{transition:border-color .2s,transform .2s;cursor:default;}
.picker-card:hover{border-color:#2c3550!important;transform:translateY(-2px);}
.pk-pill{font-size:11px;padding:3px 10px;border:.5px solid var(--brd2);border-radius:12px;background:none;color:var(--txt2);cursor:pointer;white-space:nowrap}
.pk-pill:hover{background:var(--bg2)}
.pk-pill.on{background:var(--abg);color:var(--atxt);border-color:var(--abrd)}
/* mistake-flag badge on picker rows */
.pk-mistake{background:#eef3fb;color:#185fa5;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0}
@media(prefers-color-scheme:dark){.pk-mistake{background:#172a40;color:#b5d4f4}}
#pick-folder{font-size:12px;padding:7px 16px;border:.5px solid var(--abrd);border-radius:6px;background:var(--abg);color:var(--atxt);cursor:pointer;font-weight:500}
#pick-folder:hover{opacity:.85}

.demo-banner{background:#161616;border:1px solid #252525;border-radius:8px;padding:16px 20px;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.demo-banner-left{display:flex;flex-direction:column;gap:4px}
.demo-banner-title{font-size:13px;font-weight:600;color:#e8e8e8}
.demo-banner-sub{font-size:11px;color:#555;line-height:1.5}
#demo-load-btn{flex-shrink:0;padding:8px 18px;background:transparent;border:1px solid #333;border-radius:6px;color:#aaa;font-size:12px;cursor:pointer;transition:border-color .15s,color .15s}
#demo-load-btn:hover{border-color:#666;color:#e8e8e8}
@keyframes pk-spin{to{transform:rotate(360deg)}}
.demo-sep{font-size:11px;color:#2a2a2a;text-align:center;margin:6px 0 14px;letter-spacing:.08em;user-select:none}
/* One typography system for session and single-tournament header metadata. */
#hdr-runners,#hdr-cur-tourn,#hdr-place,#hdr-prize,#hdr-meta{font-size:11px!important}
#hdr-cur-tourn span{font-size:11px!important}
.picker-view-controls{display:none;width:100%;box-sizing:border-box;margin-top:6px;padding:10px 14px;background:#0d1117;border:1px solid #1c2030;border-radius:10px}
.picker-view-controls.show{display:block}
.picker-view-controls .picker-control-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:28px}
.picker-view-controls .picker-control-line+.picker-control-line{margin-top:5px}
.picker-control-label{width:58px;flex-shrink:0;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#4b5563}
.picker-period-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:28px;padding:2px 0}
.picker-period-select{height:24px;min-width:68px;font-size:11px;background:#0a0e14;border:1px solid #1a2030;border-radius:5px;color:#6b7280;padding:0 7px;outline:none;font-family:inherit;transition:color .12s,border-color .12s}
.picker-period-select:hover,.picker-period-select:focus{color:#9ca3af;border-color:#2a3040}
.picker-period-sep{width:1px;height:16px;background:#1c2030;margin:0 3px;flex-shrink:0}
.picker-exact-date{margin-left:14px;min-width:126px;background:#0a0e14;color:#6b7280;border-color:#1a2030;transition:color .12s,border-color .12s}
.picker-exact-date:hover,.picker-exact-date:focus{color:#9ca3af;border-color:#2a3040}
.picker-exact-date::-webkit-calendar-picker-indicator{opacity:.38;filter:saturate(.35)}
.picker-exact-date:hover::-webkit-calendar-picker-indicator{opacity:.62}
.picker-search-toggle{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;background:none;border:1px solid #1c2030;border-radius:6px;color:#6b7280;cursor:pointer}
.picker-search-toggle:hover,.picker-search-toggle.on{color:#c9d1e0;border-color:#374151;background:#111827}

/* Control contrast pass — keep the restrained dark UI, but make interactive
   elements read clearly as controls instead of receding into the canvas. */
button:not(:disabled){filter:brightness(1.10)}
.pill,.tv-pill,.rv-pill,.clear-btn,.rv-clear-btn,
.bslot,select.f-range-sel,.pk-date-btn,.hof-sort-pill,
.hof-place-toggle,.pk-pill,.picker-period-select,.picker-exact-date,
.picker-search-toggle{
  color:#8793a3;
  border-color:#2a3544;
}
.pill:hover,.tv-pill:hover,.rv-pill:hover,.clear-btn:hover,.rv-clear-btn:hover,
.bslot:hover,select.f-range-sel:hover,.pk-date-btn:hover,.pk-pill:hover,
.picker-period-select:hover,.picker-exact-date:hover,.picker-search-toggle:hover{
  color:#d0d7e2;
  border-color:#46556a;
}
button:disabled,.pill:disabled,.tv-pill:disabled,.pk-pill:disabled{
  filter:none;
  color:#45505f;
  border-color:#1a2230;
  cursor:not-allowed;
}

/* Readability pass: labels and inactive controls must remain legible without
   competing with the selected state. These overrides intentionally live after
   the generic muted-control rule above so it cannot wash them out again. */
.flbl,.flt-lbl,.flt-row-lbl,.picker-control-label,.rv-lbl,
.tv-sec-hdr,.tv-node-hdr,.sec-title,.mhi-lbl{
  color:#8795a8;
}
.sec-meta,.filter-count{color:#718096}
.pill,.tv-pill,.rv-pill,.clear-btn,.rv-clear-btn,
.bslot,select.f-range-sel,.pk-date-btn,.hof-sort-pill,
.hof-place-toggle,.pk-pill,.picker-period-select,.picker-exact-date,
.picker-search-toggle{
  color:#aab5c4;
  border-color:#344153;
}
.pill:hover,.tv-pill:hover,.rv-pill:hover,.clear-btn:hover,.rv-clear-btn:hover,
.bslot:hover,select.f-range-sel:hover,.pk-date-btn:hover,.pk-pill:hover,
.picker-period-select:hover,.picker-exact-date:hover,.picker-search-toggle:hover{
  color:#edf2f7;
  border-color:#586a82;
}
.pill.on,.tv-pill.on{
  color:#67e8ad;
  border-color:#267a52;
  background:rgba(61,214,140,.17);
}
.pill.on-win{color:#b9f3df;border-color:#2fb586;background:#0a5948}
.pill.on-loss{color:#ffd0d0;border-color:#e05252;background:#5d1717}
.pill.on-rfi,.pill.on-rfi-raise{color:#d9c4ff;border-color:#8b5cf6;background:#332064}
.pk-pill.on{color:#d9eaff;border-color:#4c9ee8;background:#135a96}
.bslot.bslot-active{color:var(--acc,#79a7ff);border-color:var(--acc,#79a7ff);background:rgba(91,141,239,.14)}
.bslot.bslot-set{color:#f1f5f9;border-color:var(--acc,#79a7ff);background:rgba(91,141,239,.20)}
.tv-street-hdr{
  display:inline-flex;
  align-items:center;
  min-height:20px;
  padding:2px 8px;
  border:1px solid transparent;
  border-radius:22px;
  color:#91a0b4;
  font-size:10px;
  font-weight:700;
  letter-spacing:.06em;
  line-height:1;
  text-transform:uppercase;
  cursor:pointer;
  pointer-events:auto;
}
.tv-street-hdr.on{
  color:#67e8ad;
  border-color:#267a52;
  background:rgba(61,214,140,.17);
}
#mx-color-lbl{color:#8795a8!important}
.display-unit-toggle{margin-left:auto;display:inline-flex;align-items:center;border:1px solid var(--brd2);border-radius:5px;overflow:hidden;background:var(--bg1)}
.display-unit-toggle button{appearance:none;border:0;border-right:1px solid var(--brd2);background:transparent;color:var(--txt3);font:600 9px/1 system-ui,sans-serif;letter-spacing:.02em;padding:4px 7px;cursor:pointer;min-width:31px}
.display-unit-toggle button:last-child{border-right:0}
.display-unit-toggle button:hover{color:var(--txt2);background:rgba(61,214,140,.06)}
.display-unit-toggle button.active{color:#52e5a2;background:rgba(61,214,140,.14)}
.display-unit-toggle button:focus{outline:none;box-shadow:inset 0 0 0 1px rgba(82,229,162,.45)}
.detail-unit-toggle{margin-left:0;margin-right:4px}
.game-filter-chip{display:inline-flex;align-items:center;padding:3px 10px;border:1px solid #145c42;border-radius:5px;background:#0c3b2a;color:#75f0ba;font-size:11px;font-weight:650}
.game-filter-note{font-size:11px;color:var(--txt3)}

/* Global text-contrast system. Keep three visible hierarchy levels on the
   dark canvas; the old #374151/#4b5563 values were effectively unreadable. */
.flbl,.flt-lbl,.flt-row-lbl,.picker-control-label,.rv-lbl,
.tv-sec-hdr,.tv-node-hdr,.sec-title,.panel-title,.mhi-lbl,
.sch-time-lbl,.hof-row-label,.hof-section-hdr{
  color:#98a5b7;
}
.sec-meta,.filter-count,.rv-status,.hi-n,.hi-m,.pk-col-time,
.pk-zone-eye,.pk-year-sep,.pk-loading,.sch-card-buyin-tag,
.sch-excl-btn,.hof-place-banner-count,.hof-card-buyin,
.hof-card-tid,.hof-hero-ctx2,.hof-lb-buyin{
  color:#8290a3;
}
.mx-leg,.mx-hinfo,.hi-src,#bulk-sel-count,#bulk-clear,
.pk-col-players,.pk-meta,.pk-tl-buyin-tag,.game-filter-note,
.hof-trophy-count,.hof-close,.hof-hero-ctx,.hof-card-date,
.hof-card-field{
  color:#aab5c4;
}
.hof-pill,.hof-sort-pill,.hof-place-toggle{
  color:#b5bfcc;
  border-color:#344153;
}
.hof-pill:hover,.hof-sort-pill:hover,.hof-place-toggle:hover{
  color:#f1f5f9;
  border-color:#586a82;
}
.hof-card-date,.hof-card-field{font-weight:500}
.hof-card-tid{font-weight:600}
.rv-note::placeholder{color:#728094}
button:disabled,.pill:disabled,.tv-pill:disabled,.pk-pill:disabled{
  color:#687587;
}

/* Picker totals and site counts are data, not decorative metadata. */
#picker-loaded-count,#picker-count{color:#9da9b9!important;font-weight:500}
.picker-site-btn{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 10px;border:1px solid #344153;border-radius:5px;
  background:transparent;color:#b5bfcc;font:500 11px/1.35 system-ui,sans-serif;
  cursor:pointer;transition:color .12s,border-color .12s,background .12s;
}
.picker-site-btn:hover{color:#f1f5f9;border-color:#586a82;background:#111722}
.picker-site-btn.on{color:#e2d7ff;border-color:#7c3aed;background:#2d1f6e}
.picker-site-count{color:#96a5b8;font-weight:700}
.picker-site-btn.on .picker-site-count{color:#d8c8ff}

/* Review notes and attachment guidance must remain readable before and after
   the user enters content. */
.rv-note{color:#f1f5f9}
.rv-note::placeholder{color:#91a0b4;opacity:1}
#rv-ss-drop{color:#9da9b9!important;border-color:#344153!important}
#rv-ss-drop:hover{color:#d5dce6!important;border-color:#586a82!important}

/* V4 progressive Bet line filters: hidden until the primary Bet row is active. */
.tv-bet-detail{
  display:none;margin-top:3px;padding:7px;border:1px solid #273449;
  border-radius:6px;background:#0b111b;
}
.tv-bet-detail.open{display:block}
.tv-inline-detail.open{
  margin:3px 0 4px 26px;padding:2px 0 2px 10px;border:0;border-left:1px solid #38506a;
  border-radius:0;background:transparent;
}
.tv-inline-detail .tv-bet-subgroup+.tv-bet-subgroup{margin-top:5px;padding-top:5px}
.tv-inline-detail .tv-bet-subtitle{margin:2px 0 4px;color:#7f8da1}
.tv-inline-detail .tv-bet-options{display:flex;flex-direction:column;gap:3px}
.tv-inline-detail .tv-bet-options button{
  position:relative;display:flex;width:100%;min-height:27px;align-items:center;justify-content:flex-start;
  padding:4px 8px;border:1px solid #273449;border-radius:5px;background:transparent;
  color:#aeb9c8;font:600 11px/1.2 system-ui,sans-serif;
}
.tv-inline-detail .tv-bet-options button::before{content:'↳';margin-right:7px;color:#52647b;font-size:12px}
.tv-inline-detail .tv-bet-options button>span:first-child{margin-right:auto;text-align:left}
.tv-inline-detail .tv-bet-options button:hover{background:#0d1520;border-color:#465b75;color:#edf2f7}
.tv-inline-detail .tv-bet-options button.on{background:rgba(61,214,140,.1);border-color:#3dd68c;color:#e2f8ed}
.tv-inline-detail .tv-bet-count{min-width:34px;text-align:right;font-size:11px}
.tv-bet-subgroup+.tv-bet-subgroup{margin-top:7px;padding-top:7px;border-top:1px solid #1c2737}
.tv-bet-subtitle{margin-bottom:5px;color:#91a0b4;font-size:9px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}
.tv-bet-options{display:flex;flex-wrap:wrap;gap:4px}
.tv-bet-options button{
  display:inline-flex;align-items:center;gap:5px;min-height:23px;padding:3px 6px;
  border:1px solid #344153;border-radius:5px;background:#0d1420;color:#b7c2d0;
  font:600 10px/1.15 system-ui,sans-serif;cursor:pointer;
}
.tv-bet-options button:hover{color:#eef4fa;border-color:#59708c}
.tv-bet-options button.on{color:#d9ffeb;border-color:#2aa36c;background:rgba(61,214,140,.14)}
.tv-bet-options button:disabled{opacity:.34;cursor:default}
.tv-bet-count{color:#91a0b4;font-size:9px;font-weight:750}
.tv-bet-options button.on .tv-bet-count{color:#75efb2}
.tv-act-btn{height:27px;min-height:27px;box-sizing:border-box}
.tv-act-spacer{height:27px;min-height:27px;pointer-events:none}

/* Readability pass — functional controls must stay legible at normal browser
   zoom. Several of these elements carry old inline 9–11px styles, hence the
   deliberately scoped !important overrides. */
.filter-area .flbl,
.filter-area .sec-title{font-size:12px!important;color:#aeb9c8!important}
.filter-area .pill,
.filter-area .tv-pill,
#tv-open-btn,
#tv-sel-pill{
  min-height:28px;font-size:12px!important;line-height:1.2!important;
  color:#b8c3d1!important;padding:4px 10px!important;
}
.filter-area .pill.on,
.filter-area .pill.on-reviewed,
#tv-open-btn{color:#65ecad!important}
select.f-range-sel{
  height:29px!important;min-width:66px!important;padding:3px 24px 3px 9px!important;
  border-color:#354358!important;border-radius:7px!important;background-color:#0d1420!important;
  color:#c8d1dc!important;font-size:12px!important;font-weight:550!important;
}
#f-fmt{min-width:76px!important}
#f-seats{min-width:72px!important}
#f-start-time,#f-orbit{min-width:68px!important}
#f-bi-min,#f-bi-max{min-width:72px!important}
#f-field-min,#f-field-max{min-width:76px!important}
#f-bi-wrap>span:first-child,
#f-field-wrap>span:first-child{
  color:#aeb9c8!important;font-size:12px!important;font-weight:700!important;
}
#f-bi-wrap select+span,
#f-field-wrap select+span{color:#7f8da1!important;font-size:13px!important}
#f-fmt-clr,#f-seats-clr,#f-start-clr,#f-orbit-clr,
#f-bi-clr,#f-field-clr{color:#93a1b3!important;font-size:16px!important}
.filter-area button[title="Clear all tournament filters"]{
  min-height:27px!important;border-color:#354358!important;color:#aab6c5!important;
  font-size:11.5px!important;padding:4px 9px!important;
}
.filter-row>span[style*="background:#1f2937"]{background:#344153!important;height:18px!important}

/* Header, timeline, hand list and matrix: improve clarity without increasing
   the matrix footprint or reintroducing Safari scrollbars. */
#main-hdr [style*="font-size:9"],
#main-hdr [style*="font-size:10"],
#main-hdr [style*="font-size:11"]{font-size:12px!important}
.timeline-wrap,.chart-wrap{color:#aab5c4}
.sec-title,.sec-meta{letter-spacing:.055em}
.hi{min-height:28px}
.hi-note{font-size:12.5px;color:#d8e0ea}
.hi-n,.hi-m{font-size:11.5px;color:#98a6b8}
.hi-pos{font-size:11px}
.hmt{font-size:13px;font-weight:650}
.mx-leg,.mx-hinfo{font-size:11.5px;color:#a7b3c2}

/* Review pop-out uses the same readable floor as the analyzer. */
#review-panel [style*="font-size:9"],
#review-panel [style*="font-size:10"],
#review-panel [style*="font-size:11"],
.review-popup [style*="font-size:9"],
.review-popup [style*="font-size:10"],
.review-popup [style*="font-size:11"]{font-size:12px!important}
#review-panel .rv-lbl,.review-popup .rv-lbl{font-size:11px!important;color:#aab6c5!important}
#review-panel .rv-pill,.review-popup .rv-pill{min-height:27px;font-size:12px!important}
#review-panel .hd-slbl2,.review-popup .hd-slbl2{font-size:12px!important;color:#aab6c5!important}
#review-panel .hd-vrow,.review-popup .hd-vrow{font-size:12px!important;color:#d2dae5!important}

/* Tournament chooser and remaining metadata use the same text floor. */
#picker [style*="font-size:9"],
#picker [style*="font-size:10"],
#picker [style*="font-size:11"]{font-size:12px!important}
#picker [style*="color:#4b5563"],
#picker [style*="color:#4a5570"],
#picker [style*="color:#6b7280"]{color:#98a6b8!important}
#picker .pk-pill,
#picker .picker-period-select,
#picker .picker-exact-date,
#picker .picker-search-toggle{min-height:29px;font-size:12px!important}
#picker-search{height:30px!important;font-size:12px!important;border-color:#354358!important}
#date-filter-row>span{font-size:12px!important;color:#aab6c5!important}
#date-filter-row select{min-height:29px;font-size:12px!important;color:#c8d1dc!important;border-color:#354358!important}
#mx-color-lbl,#mx-hid,#mx-action-stats{font-size:11.5px!important;color:#9eabbc!important}
#review-popout-btn,#hdr-heuristic-btn,#review-mode-hdr-btn,#teach-toggle-btn{
  min-height:27px;font-size:12px!important;color:#aab6c5!important;
}
#review-mode-hdr-btn::before,#teach-toggle-btn::before{content:'';display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:transparent;vertical-align:1px}
#review-mode-hdr-btn.mode-active{color:#6ee7b7!important;border-color:#1f7657!important;background:rgba(61,214,140,.1)!important}
#review-mode-hdr-btn.mode-active::before{background:#3dd68c}
#teach-toggle-btn.mode-active{color:#c4b5fd!important;border-color:#7c3aed!important;background:rgba(124,58,237,.15)!important}
#teach-toggle-btn.mode-active::before{background:#a78bfa}

/* Authored heuristic editor and library */
#heur-ta{width:100%;height:130px;box-sizing:border-box;resize:vertical;font:inherit;font-size:13px;color:var(--text-body);background:var(--bg);border:1px solid var(--brd2);border-radius:7px;padding:10px 12px}
.heur-fields{display:grid;grid-template-columns:150px 1fr;gap:10px;margin-bottom:10px}
.heur-fields label,.lm-filter label{display:flex;flex-direction:column;gap:5px;font-size:var(--type-label);font-weight:700;color:var(--text-label)}
.heur-fields input,.heur-fields select,.lm-filter input,.lm-filter select{min-height:32px;background:var(--bg);border:1px solid var(--brd2);border-radius:6px;color:var(--text-body);font:inherit;padding:5px 9px}
#learnings-modal .lm-shell,#lessons-library-modal .lm-shell{width:820px;max-width:92vw;max-height:82vh;overflow:auto;background:var(--bg2);border:1px solid var(--brd2);border-radius:12px;padding:22px 24px;position:relative}
#lesson-editor-modal{z-index:9300;background:rgba(2,5,9,.9);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
#lesson-editor-modal .lm-shell{width:760px;max-width:92vw;max-height:86vh;overflow:auto;position:relative;padding:24px 26px;border:1px solid #40516a;border-radius:13px;background:#111a25;box-shadow:0 28px 90px rgba(0,0,0,.82),0 0 0 1px rgba(126,231,194,.07)}
#lesson-editor-modal .lesson-chapter{background:#0c131c;border-color:#314158}
.lm-toolbar{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.lm-filter{display:grid;grid-template-columns:minmax(220px,1fr) 140px 150px;gap:10px;flex:1}
.lm-card{border:1px solid var(--brd2);border-radius:9px;padding:12px 14px;background:var(--bg)}
.lm-card-head{display:flex;gap:8px;align-items:center;margin-bottom:7px;color:var(--text-meta);font-size:var(--type-meta)}
.lm-avatar{width:25px;height:25px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#155e4b;color:#d5fff1;font-weight:750;font-size:10px}
.lm-card-text{white-space:pre-wrap;color:var(--text-strong);font-size:13px;line-height:1.48}
.lm-card-actions{display:flex;gap:7px;margin-left:auto}
.lm-card-actions button,.lm-export{min-height:27px;border:1px solid var(--brd2);border-radius:20px;background:transparent;color:var(--text-label);font:inherit;font-size:12px;padding:3px 10px;cursor:pointer}
@media(max-width:650px){.heur-fields,.lm-filter{grid-template-columns:1fr}#learnings-modal .lm-shell,#lessons-library-modal .lm-shell,#lesson-editor-modal .lm-shell{margin:16px 10px;padding:18px}}
.heur-quick-tags,.library-tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 10px}.heur-quick-tags span{color:var(--text-meta);font-size:11px}.heur-quick-tags button,.library-tag{border:1px solid #33445a;border-radius:20px;background:#101824;color:#aebccc;font:inherit;font-size:11px;padding:3px 8px}.heur-quick-tags button{cursor:pointer}.library-tags{margin:9px 0 0}.lesson-library-filter{grid-template-columns:minmax(260px,1fr) 180px}
.selection-summary{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-meta);font-size:var(--type-meta);font-weight:500}
.review-filter-area{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.review-filter-divider{width:1px;height:18px;background:var(--brd2);margin:0 3px}.review-filter-area .pill.on{border-color:#3b715e;color:#a7eccf;background:#0d1916}.review-filter-area .flbl{width:auto!important}
.library-head{display:flex;align-items:center;gap:9px;margin-bottom:16px}.library-head>div:first-child{margin-right:auto}.library-title{font-size:16px;font-weight:700;color:var(--text-strong)}.library-subtitle,.library-stats{font-size:var(--type-meta);color:var(--text-meta);margin-top:3px}.library-close{font-size:20px;border:0;background:none;color:var(--text-meta);cursor:pointer}.library-filters{margin-bottom:14px}.library-list{display:flex;flex-direction:column;gap:10px}.library-empty{padding:18px 2px;color:var(--text-meta)}.library-kind{border:1px solid #344158;border-radius:20px;padding:2px 8px;color:var(--text-label)}.library-kind.session{border-color:#6d4bc1;color:#c4adff}.library-card-title{font-size:14px;font-weight:700;color:var(--text-strong)}.library-description{font-size:13px;color:var(--text-body);line-height:1.45;margin-top:5px;white-space:pre-wrap}.library-editor{position:fixed;inset:0;z-index:9200;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center}.library-editor-card{width:480px;max-width:90vw;background:var(--bg2);border:1px solid var(--brd2);border-radius:11px;padding:22px}.library-editor-card label{display:flex;flex-direction:column;gap:5px;margin-top:13px;font-size:var(--type-label);font-weight:700;color:var(--text-label)}.library-editor-card input,.library-editor-card textarea{background:var(--bg);border:1px solid var(--brd2);border-radius:7px;color:var(--text-body);font:inherit;padding:9px 10px;resize:vertical}.library-editor-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.lm-export.primary{border-color:#1d9e75;color:#9fe1cb;background:#085041}
.export-choice-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}.export-choice-list button{text-align:left;background:var(--bg);border:1px solid var(--brd2);border-radius:8px;color:var(--text-strong);padding:11px 13px;cursor:pointer;font:inherit}.export-choice-list button:hover{border-color:#39735e;background:#0d1916}.export-choice-list strong,.export-choice-list span{display:block}.export-choice-list span{font-size:12px;color:var(--text-meta);margin-top:3px}
.history-list{max-height:55vh;overflow:auto;margin-top:14px;display:flex;flex-direction:column;gap:8px}.history-row{border:1px solid var(--brd2);border-radius:7px;background:var(--bg);padding:10px}.history-row>div{display:flex;justify-content:space-between;gap:10px;color:var(--text-label);font-size:12px}.history-row span{color:var(--text-meta)}.history-row p{margin:7px 0 0;color:var(--text-body);font-size:12px;white-space:pre-wrap}

/* Palette normalization. The interface previously mixed the original
   near-black greys with the newer readable palette. Preserve hierarchy, but
   never use low contrast for information the user may need to interpret. */
#hdr-runners,#hdr-place,#hdr-meta,#bg-load-status,
.hdr .sub,.hdr-buyin-detail{color:#a5b1c0!important}
#main-hdr a,#main-hdr button:not(:disabled){color:#aab6c5}
.hd-meta,.hd-stlbl,.hd-slbl2,.hd-side-title,
.sd-name,.hd-allin{color:#9ba9ba!important}
.ha .an,.ha .av{color:#c4ceda!important}
.ha .aa{color:#e4e9f0!important}
.ha .aa[style*="var(--txt3)"]{color:#8e9cad!important}
.hd-vrow .vn{color:#e3e8ef!important}
.hd-vrow .vs{color:#edf2f7!important}
.hd-vrow .vc{filter:brightness(1.16)}
.sec-title,.panel-title{color:#a9b5c4!important}
.sec-meta,.filter-count{color:#8796a9!important}
button:disabled,.pill:disabled,.tv-pill:disabled,.pk-pill:disabled{
  color:#728196!important;border-color:#283446!important;opacity:.72;
}
#tv-layout [style*="color:#374151"],
#tv-layout [style*="color:#4b5563"],
#tv-line-desc{color:#8291a5!important}
#tv-layout [style*="font-size:9"]{font-size:10.5px!important}
.nbg{color:#8492a5}

/* Unified typography system. This is the authoritative visual layer; older
   component declarations remain only for layout and semantic state colours. */
body{font-size:var(--type-body);color:var(--text-body)}
.hdr h1,.ss-spaces-title{font-size:var(--type-title);color:var(--text-strong);font-weight:700}
.sec-title,.panel-title,.flbl,.rv-lbl,.picker-control-label,
.flt-lbl,.flt-row-lbl,.tv-sec-hdr,.tv-node-hdr{
  font-size:var(--type-label)!important;color:var(--text-label)!important;font-weight:700;
}
.sec-meta,.filter-count,.hdr .sub,.hdr-buyin-detail,.hd-meta,
.mx-leg,.mx-hinfo,.hi-n,.hi-m,.rv-status{
  font-size:var(--type-meta)!important;color:var(--text-meta)!important;
}
.pill,.tv-pill,.rv-pill,.clear-btn,.rv-clear-btn,.pk-pill,.pk-date-btn,
.hof-pill,.hof-sort-pill,.hof-place-toggle,.picker-period-select,
.picker-exact-date,select.f-range-sel,#tv-open-btn,#tv-sel-pill{
  min-height:26px!important;padding:3px 9px!important;font-size:var(--type-body)!important;
  font-weight:550!important;line-height:1.2!important;color:var(--text-label)!important;
}
.pill.on,.tv-pill.on,.rv-pill[class*="on-"],.pk-pill.on,
.filter-area .pill.on,.filter-area .pill.on-reviewed,#tv-open-btn{
  color:#67e8ad!important;
}
.pill.on-rfi,.pill.on-rfi-raise,.rv-pill.on-mixed{color:#d7c7fb!important}
.pill.on-loss,.rv-pill.on-mistake,.rv-pill.on-punt{color:#fecaca!important}
.pill.on-win,.rv-pill.on-correct{color:#a7eccf!important}
button:disabled,.pill:disabled,.tv-pill:disabled,.rv-pill:disabled,.pk-pill:disabled{
  color:var(--text-disabled)!important;opacity:.68;
}
#hdr-runners,#hdr-cur-tourn,#hdr-place,#hdr-meta,#bg-load-status{
  font-size:var(--type-body)!important;color:var(--text-meta)!important;font-weight:500!important;
}
#hdr-cur-tourn span{font-size:inherit!important}
#mx-hid,#mx-hid *,#sec-detail-meta,#sec-detail-meta *{
  font-size:var(--type-meta)!important;line-height:1.25;
}
#mx-hid,#sec-detail-meta{color:var(--text-meta)!important;font-weight:500}
#mx-hid [style*="var(--txt2)"],#sec-detail-meta [style*="#4b5563"],
#sec-detail-meta [style*="#6b7280"],#sec-detail-meta [style*="#9ca3af"]{
  color:var(--text-meta)!important;
}
.hd-stlbl,.hd-slbl2,.hd-side-title{font-size:var(--type-label)!important;color:var(--text-label)!important}
.ha,.ha .an,.ha .av,.ha .aa,.hd-vrow,.hd-vrow .vs,.hd-vrow .vc{
  font-size:var(--type-body)!important;
}
.hi-note{font-size:var(--type-body)!important}.hi-pos,.hi-n,.hi-m{font-size:var(--type-meta)!important}
.mxi-metric-sub,.mxi-section-title{font-size:var(--type-body)!important}
button:not(:disabled){filter:none}
.meta-id,.meta-text,.meta-separator{
  font-size:var(--type-meta)!important;color:var(--text-meta)!important;font-weight:500;
}
.meta-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:650}
.meta-emphasis{font-weight:650}.meta-separator{margin:0 4px;color:var(--text-disabled)!important}
.hdr-primary{font-size:var(--type-title);font-weight:700;color:var(--text-strong)}
.hdr-meta-text{font-size:var(--type-body)!important;font-weight:500!important;color:var(--text-meta)!important}
.hdr-positive{font-size:var(--type-body);font-weight:650;color:#67e8ad}

/* Reusable text roles for generated UI. New components should use these
   classes instead of defining one-off neutral greys and font sizes. */
.ui-title{font-size:var(--type-title)!important;color:var(--text-strong)!important;font-weight:700!important}
.ui-body{font-size:var(--type-body)!important;color:var(--text-body)!important;font-weight:500!important}
.ui-label{font-size:var(--type-label)!important;color:var(--text-label)!important;font-weight:700!important}
.ui-meta{font-size:var(--type-meta)!important;color:var(--text-meta)!important;font-weight:500!important}

/* One neutral control treatment across analyzer, picker, review and dialogs.
   Active/result colours remain owned by their semantic state classes. */
#main-hdr button,#picker button:not(.primary),#review-panel button,
.review-popup button,#ls-save-modal button,#ls-hand-modal button,
#storage-modal button,#heur-modal button,[data-rv-stab],#rv-add-to-lesson-btn{
  font-family:inherit!important;font-size:var(--type-body)!important;
  font-weight:550!important;color:var(--text-label)!important;
}
[data-rv-stab]{min-height:29px!important;padding:5px 8px!important}
[data-rv-stab]:not(.is-active):not(.has-content){color:var(--text-meta)!important}
#zoom-label{font-size:var(--type-meta)!important;color:var(--text-meta)!important}
#idb-loading-text{font-size:var(--type-body)!important;color:var(--text-body)!important}
#idb-loading-sub{font-size:var(--type-meta)!important;color:var(--text-meta)!important}

/* Normal informational copy must never use the old near-black palette. */
#main-hdr [style*="color:#4b5563"],#main-hdr [style*="color:#6b7280"],
#picker [style*="color:#374151"],#picker [style*="color:#4b5563"],#picker [style*="color:#6b7280"],
#review-panel [style*="color:#374151"],#review-panel [style*="color:#4b5563"],#review-panel [style*="color:#6b7280"],
.review-popup [style*="color:#374151"],.review-popup [style*="color:#4b5563"],.review-popup [style*="color:#6b7280"],
#ls-save-modal [style*="color:#374151"],#ls-save-modal [style*="color:#4b5563"],#ls-save-modal [style*="color:#6b7280"],
#ls-hand-modal [style*="color:#374151"],#ls-hand-modal [style*="color:#4b5563"],#ls-hand-modal [style*="color:#6b7280"]{
  color:var(--text-meta)!important;
}

/* Hall of Fame follows the same text hierarchy. Medal, placement, prize and
   site colours stay semantic; surrounding interface text is shared. */
.hof-title{color:var(--text-strong)!important}
.hof-stat,.hof-hero-name,.hof-card-field{font-size:var(--type-body)!important;color:var(--text-body)!important}
.hof-stat b,.hof-card-name{font-size:var(--type-title)!important}
.hof-trophy-count,.hof-hero-ctx,.hof-hero-ctx2,.hof-place-banner-count,
.hof-card-date,.hof-card-buyin,.hof-card-tid,.hof-lb-buyin{
  font-size:var(--type-meta)!important;color:var(--text-meta)!important;
}
.hof-row-label,.hof-section-hdr{font-size:var(--type-label)!important;color:var(--text-label)!important}
.hof-pill,.hof-sort-pill,.hof-place-toggle,.hof-ft-pill,.hof-open-btn,
.hof-entry-btn,.hof-close{
  font-family:inherit!important;font-size:var(--type-body)!important;
  font-weight:550!important;color:var(--text-label)!important;
}
.hof-pill.on{color:#d7c7fb!important}
.hof-sort-pill.on{color:#fbbf24!important}
.hof-place-toggle.on{color:#67e8ad!important}
.hof-ft-pill.on{color:#93c5fd!important}
.hof-open-btn,.hof-entry-btn{color:#c4b5fd!important}

/* Aggregate tournament rows are part of the picker typography system too. */
.pk-agg-primary{font-size:var(--type-title)!important}
.pk-agg-count{font-size:var(--type-body)!important;color:var(--text-meta)!important}
.pk-mpill,.pk-itm,.pk-ft{font-size:var(--type-meta)!important}
.pk-mpill-in{color:var(--text-meta)!important}

/* Semantic states are the deliberate exceptions to the neutral control
   palette. Keep their meaning after the shared button rule above. */
#change-btn,#picker .pk-pill.on,#tv-open-btn{color:#67e8ad!important}
#review-panel .rv-pill.on-correct,.review-popup .rv-pill.on-correct,
#review-panel .rv-pill.on-solver,.review-popup .rv-pill.on-solver,
#review-panel .rv-pill.on-street,.review-popup .rv-pill.on-street,
#review-panel .rv-pill.on-tag,.review-popup .rv-pill.on-tag{color:#a7eccf!important}
#review-panel .rv-pill.on-mistake,.review-popup .rv-pill.on-mistake,
#review-panel .rv-pill.on-missed,.review-popup .rv-pill.on-missed,
#review-panel .rv-pill.on-punt,.review-popup .rv-pill.on-punt{color:#fecaca!important}
#review-panel .rv-pill.on-mixed,.review-popup .rv-pill.on-mixed,
#review-panel .rv-pill.on-feedback,.review-popup .rv-pill.on-feedback,
#review-panel .rv-pill.on-solver-lookup,.review-popup .rv-pill.on-solver-lookup{color:#d7c7fb!important}
#review-panel .rv-pill.on-discuss,.review-popup .rv-pill.on-discuss{color:#fbd09d!important}
#review-panel .rv-pill.on-undecided,.review-popup .rv-pill.on-undecided{color:#bfdbfe!important}
#review-panel .rv-pill.on-seen,.review-popup .rv-pill.on-seen{color:var(--text-body)!important}
[data-rv-stab].is-active{color:var(--text-strong)!important;font-weight:650!important}
[data-rv-stab].has-content{color:#d7c7fb!important}
.lesson-edit-field{display:flex;flex-direction:column;gap:6px;margin:10px 0;color:var(--text-label);font-size:var(--type-label);font-weight:700}.lesson-edit-field input,.lesson-edit-field textarea{background:var(--bg);border:1px solid var(--brd2);border-radius:7px;color:var(--text-body);font:inherit;padding:9px 10px;resize:vertical}.lesson-topic-help{font-size:12px;color:var(--text-meta);margin:14px 0 8px}.lesson-chapters{max-height:48vh;overflow:auto;display:flex;flex-direction:column;gap:9px}.lesson-chapter{border:1px solid var(--brd2);border-radius:8px;padding:10px}.lesson-chapter-title{font-size:12px;font-weight:700;color:var(--text-strong);margin-bottom:8px}.lesson-chapter-title span{font-weight:400;color:var(--text-meta);margin-left:6px}.lesson-hand-grid{display:flex;flex-wrap:wrap;gap:6px}.lesson-hand-grid label{display:flex;align-items:center;gap:4px;padding:5px 7px;border-radius:5px;background:var(--bg);color:var(--text-body);font-size:12px;cursor:pointer}.lesson-hand-grid input{accent-color:#22c997}.lesson-editor-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:15px}.lesson-editor-actions button{padding:8px 13px;border:1px solid var(--brd2);border-radius:6px;background:transparent;color:var(--text-body);cursor:pointer}.lesson-editor-actions button.primary{border-color:#1d9e75;background:#085041;color:#9fe1cb;font-weight:700}
.review-popup #sec-detail .sec-hdr{flex-wrap:wrap;align-content:flex-start;min-height:60px}
.review-popup #sec-detail .sec-hdr>span:last-child{flex:0 0 100%;justify-content:flex-end!important;margin-left:0!important;padding-top:8px;border-top:1px solid rgba(31,41,55,.65)}
.review-popup #sec-detail-meta{flex:1;min-width:0;padding-right:8px}
.review-popup #hd-content{transition:min-height .12s ease}
.lesson-card{position:relative}.lesson-shared-state{color:#62d6ad;font-weight:700}.lesson-progress{height:4px;margin-top:12px;border-radius:4px;background:#17202c;overflow:hidden}.lesson-progress span{display:block;height:100%;background:#22a879;border-radius:4px}.lesson-progress-copy{margin-top:6px;font-size:11px;color:var(--text-meta)}.lesson-share-options{display:flex;flex-direction:column;gap:7px;margin:15px 0;max-height:320px;overflow:auto}.lesson-share-options label{display:flex;align-items:center;gap:10px;border:1px solid var(--brd2);border-radius:7px;padding:9px 10px;cursor:pointer}.lesson-share-options label:has(input:checked){border-color:#24795f;background:#0d211c}.lesson-share-options span{display:flex;flex-direction:column;color:var(--text-strong);font-size:13px}.lesson-share-options small{color:var(--text-meta);font-size:11px;margin-top:2px}.lesson-share-options input{accent-color:#22c997}.lesson-share-status{min-height:18px;color:#7dd3b5;font-size:12px}
.lesson-sync-state{color:#72d8b2;font-size:10px;font-weight:700}.lesson-sync-state.is-saving,.lesson-sync-state.is-legacy{color:#e8bc67}.lesson-sync-state.is-error{color:#ff8585}
.library-card-title{cursor:pointer}
.library-card-title:hover{color:#72dfba;text-decoration:underline;text-underline-offset:3px}
.lesson-chapter-title{display:flex;align-items:center;gap:8px}
.lesson-chapter-title input{min-width:0;flex:1;background:var(--bg);border:1px solid var(--brd2);border-radius:6px;color:var(--text-strong);font:inherit;padding:6px 8px}
.lesson-hand-grid{display:flex;flex-direction:column;gap:5px}
.lesson-editor-hand{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:6px;background:var(--bg);border:1px solid transparent;border-radius:6px;padding:4px 5px}
.lesson-editor-hand:hover{border-color:var(--brd2)}
.lesson-order{color:#72dfba;font-size:11px;font-weight:700;text-align:center}
.lesson-editor-hand label{background:transparent;padding:2px;min-width:0}
.lesson-move{display:flex;gap:3px}
.lesson-move button,.lesson-share-options>button{border:1px solid var(--brd2);border-radius:5px;background:var(--bg2);color:var(--text-body);cursor:pointer;padding:4px 7px}
.lesson-move button:disabled{opacity:.28;cursor:default}
.lesson-chapter-title .lesson-topic-move{margin-left:auto;display:flex;gap:3px}
.lesson-share-options>button{display:flex;justify-content:space-between;align-items:center;padding:9px 10px;text-align:left}
