.lab{max-width:960px;margin:0 auto;padding:1.5rem 1rem 3rem}.lab h1{margin:0;font-size:1.6rem}.lab .tag{color:var(--accent);vertical-align:middle;background:#e8eefc;border-radius:999px;padding:.1rem .5rem;font-size:.8rem;font-weight:500}.lab .subtitle,.lab .hint{color:var(--muted)}.lab .status{font-size:.9rem}.lab .status.ok{color:var(--ok)}.lab .error{color:var(--error)}.lab .panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;margin-top:1.25rem;padding:1rem 1.25rem}.lab .panel h2{margin:0 0 .75rem;font-size:1.15rem}.lab .fields{grid-template-columns:repeat(3,1fr);gap:.75rem;display:grid}.lab .fields label{color:var(--muted);flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}.lab .fields .wide{grid-column:1/-1}.lab .readout{align-items:center;gap:2rem;margin-top:1rem;display:flex}.lab .readout .big{font-variant-numeric:tabular-nums;font-size:2.4rem;font-weight:700}.lab .readout .pm{color:var(--muted);font-size:1rem;font-weight:400}.lab .readout dl{grid-template-columns:auto auto;gap:.15rem 1rem;margin:0;font-size:.9rem;display:grid}.lab .readout dt{color:var(--muted)}.lab .readout dd{margin:0}.lab .latency{margin-top:1rem;font-size:.9rem}@media (width<=640px){.lab .fields{grid-template-columns:1fr}.lab .readout{flex-direction:column;align-items:flex-start}}:root{--felt:#1f6f4a;--felt-dark:#155237;--felt-edge:#5b3a1e;--chip:#f1c232;--good:#1a7f37;--bad:#c62828;--marginal:#b26a00;--spade:#1d2330;--heart:#c62828;--diamond:#c62828;--club:#1d2330}kbd{font:inherit;opacity:.6;border:1px solid;border-radius:3px;margin-left:.25rem;padding:0 .3rem;font-size:.7rem}.muted{color:var(--muted)}.small{font-size:.85rem}.error{color:var(--error)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:disabled{background:var(--muted);border-color:var(--muted)}button.link{color:var(--accent);background:0 0;border:none;padding:.2rem 0;text-decoration:underline}label.check{align-items:center;gap:.4rem;font-size:.9rem;display:inline-flex}label.check input{width:auto}.setup{max-width:920px;margin:0 auto;padding:2rem 1rem 4rem}.setup h1{margin:0;font-size:2rem}.setup .lead{color:var(--muted);margin-top:.25rem}.setup section{margin-top:1.75rem}.setup h2{margin:0 0 .75rem;font-size:1.15rem}.presets-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;display:grid}.preset{text-align:left;border-radius:10px;flex-direction:column;gap:.3rem;padding:.8rem 1rem;display:flex}.preset span{color:var(--muted);font-size:.85rem}.preset.on{border-color:var(--accent);box-shadow:0 0 0 2px #1f6feb33}.form-row{flex-wrap:wrap;align-items:flex-end;gap:1.5rem;display:flex}fieldset{border:1px solid var(--border);border-radius:8px;padding:.5rem .9rem .75rem}fieldset label{margin-right:1rem}fieldset input[type=radio]{width:auto;margin-right:.3rem}.stack-input{flex-direction:column;gap:.25rem;max-width:14rem;font-size:.9rem;display:flex}.lineup{gap:.6rem;margin-top:1rem;display:grid}.lineup label{grid-template-columns:4rem 12rem 1fr;align-items:center;gap:.75rem;display:grid}.lineup select{font:inherit;border:1px solid var(--border);border-radius:6px;padding:.3rem}.setup .start{margin-top:2rem;padding:.7rem 2rem;font-size:1.1rem}.segmented{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.segmented button{border:none;border-right:1px solid var(--border);border-radius:0}.segmented button:last-child{border-right:none}.segmented button.on{background:var(--accent);color:#fff}.setup .check{margin-top:.75rem;display:block}.play{max-width:1440px;margin:0 auto;padding:.75rem 1rem 2rem}.play-header{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.hand-no{font-weight:600}.play-header .link{margin-left:auto}.play-body{grid-template-columns:minmax(0,1.25fr) minmax(360px,1fr);align-items:start;gap:1rem;display:grid}.felt{aspect-ratio:16/10;background:radial-gradient(ellipse at center, var(--felt) 0%, var(--felt-dark) 100%);border:14px solid var(--felt-edge);border-radius:50%/45%;margin:3.5rem 2.5rem 4rem;position:relative;box-shadow:inset 0 0 40px #0006}.seat{flex-direction:column;align-items:center;gap:.2rem;min-width:7.5rem;display:flex;position:absolute;transform:translate(-50%,-50%)}.seat-cards{gap:.2rem;min-height:3.1rem;display:flex}.seat-plate{border:2px solid var(--border);text-align:center;background:#fffffff0;border-radius:10px;min-width:7.5rem;padding:.3rem .6rem;font-size:.85rem}.seat.acting .seat-plate{border-color:var(--chip);box-shadow:0 0 0 3px #f1c23266}.seat.hero .seat-plate{border-color:var(--accent)}.seat.folded{opacity:.5}.seat.winner .seat-plate{border-color:var(--good)}.seat-top{justify-content:center;align-items:center;gap:.35rem;display:flex}.seat-name{font-weight:600}.pos{color:var(--muted);font-size:.7rem}.dealer{border:1px solid var(--text);background:#fff;border-radius:50%;place-items:center;width:1.15rem;height:1.15rem;font-size:.65rem;font-weight:700;display:inline-grid}.stack{font-variant-numeric:tabular-nums}.style-name{color:var(--muted);font-size:.7rem}.seat-status{color:var(--accent);font-size:.75rem;font-weight:600}.seat-status.win{color:var(--good)}.seat-status.thinking{color:var(--marginal)}.bet-chip{background:var(--chip);color:#3a2c00;border-radius:999px;padding:.1rem .5rem;font-size:.8rem;font-weight:700;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 2px #0005}.center{flex-direction:column;align-items:center;gap:.5rem;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.board{gap:.35rem;display:flex}.pot{color:#fff;text-shadow:0 1px 2px #0008;font-weight:700}.pcard{color:var(--spade);background:#fff;border:1px solid #c9ced8;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex;box-shadow:0 1px 2px #0003}.pcard.md{width:2.3rem;height:3.1rem;font-size:1.05rem}.pcard.lg{width:2.9rem;height:3.9rem;font-size:1.3rem}.pcard.sm{width:1.7rem;height:2.2rem;font-size:.8rem}.pcard.red{color:var(--heart)}.pcard.back{background:repeating-linear-gradient(45deg,#3b5bdb,#3b5bdb 4px,#4c6ef5 4px 8px);border-color:#364fc7}.pcard.empty{box-shadow:none;background:#ffffff1a;border:1px dashed #fff5}.below-table{margin-top:-2rem}.action-bar{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:.6rem;padding:.75rem;display:flex}.main-actions{gap:.5rem;display:flex}.act{flex:1;padding:.65rem .5rem;font-size:1rem;font-weight:600}.act.fold{border-color:#c6282855}.act.passive{border-color:#1f6feb55}.act.aggressive{background:var(--accent);border-color:var(--accent);color:#fff}.sizing input[type=range]{border:none;width:100%;padding:0}.sizing .presets{flex-wrap:wrap;gap:.35rem;margin-top:.35rem;display:flex}.sizing .presets button{padding:.25rem .6rem;font-size:.85rem}.hand-over{background:var(--panel);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.waiting{text-align:center;color:var(--muted)}.coach{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1rem 1.1rem}.coach h2{margin:0 0 .5rem;font-size:1.1rem}.coach h3{margin:1.25rem 0 .4rem;font-size:1rem}.feedback{border-radius:8px;margin:0 0 .75rem;padding:.6rem .75rem;font-weight:500}.feedback.compact{padding:.4rem .6rem;font-size:.85rem;font-weight:400}.feedback.fine{color:#135a28;background:#eaf6ee}.feedback.marginal{color:#7a4a00;background:#fff4e0}.feedback.mistake{color:#8c1d1d;background:#fdecea}.equity-row{align-items:flex-start;gap:1.5rem;display:flex}.equity-row .label,.metric-grid dt{color:var(--muted);font-size:.8rem}.equity-value{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700}.equity-value.good{color:var(--good)}.equity-value.bad{color:var(--bad)}.equity-row .ci{color:var(--muted);font-size:.9rem;font-weight:400}.equity-row .sub{color:var(--muted);font-size:.8rem}.price{flex:1}.meter{background:#eef0f4;border-radius:999px;height:.5rem;margin-top:.4rem;position:relative}.meter .fill{background:var(--accent);border-radius:999px;height:100%}.meter .mark{background:var(--text);width:2px;height:1rem;position:absolute;top:-.25rem}.metric-grid{grid-template-columns:repeat(4,1fr);gap:.5rem;margin:1rem 0;display:grid}.metric-grid dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.outs-block{border:1px solid var(--border);border-radius:8px;margin-bottom:1rem;padding:.5rem .75rem}.outs-block h4{margin:0;font-size:.95rem}.outs-block .rule{color:var(--muted);margin:.2rem 0 .4rem;font-size:.85rem}.outs-block .warn{color:var(--marginal)}.out-row{flex-wrap:wrap;align-items:center;gap:.25rem;margin-top:.25rem;display:flex}.out-row .tag{width:3rem;color:var(--good);font-size:.75rem;font-weight:600}.out-row .tag.dirty{color:var(--marginal)}.out-row .none{color:var(--muted);font-size:.85rem}.ev-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.88rem}.ev-table caption{text-align:left;padding-bottom:.3rem;font-weight:600}.ev-table th,.ev-table td{border-bottom:1px solid var(--border);text-align:right;padding:.3rem .4rem}.ev-table th:first-child{text-align:left;font-weight:500}.ev-table thead th{color:var(--muted);font-size:.8rem;font-weight:500}.ev-table tr.best{background:#eaf6ee}.ev-table tr.chosen th{font-weight:700}.badge{background:var(--good);color:#fff;border-radius:4px;margin-left:.4rem;padding:0 .35rem;font-size:.7rem}.badge.you{background:var(--accent)}.explanation{margin-top:1rem}.explanation .headline{margin:0 0 .25rem;font-weight:600}.explanation ul{margin:0;padding-left:1.2rem}.explanation li{margin:.25rem 0}.explanation .note{color:var(--muted);font-size:.78rem}.tabs{flex-wrap:wrap;gap:.3rem;display:flex}.tabs button{padding:.2rem .6rem;font-size:.85rem}.tabs button.on{border-color:var(--accent);color:var(--accent);font-weight:600}.range-summary{margin:.4rem 0;font-size:.85rem}.range-grid{border-collapse:collapse;table-layout:fixed;width:100%;font-size:.62rem}.range-grid th{color:var(--muted);width:1rem;font-weight:500}.range-grid td{background:color-mix(in srgb, #2f9e44 calc(var(--freq) * 100%), #eef0f4);border:1px solid #fff;padding:0}.range-grid td.blocked{background:repeating-linear-gradient(45deg,#e3e6ec,#e3e6ec 3px,#f4f5f7 3px 6px)}.range-grid td button,.range-grid td>span{aspect-ratio:1;width:100%;font-size:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0;display:block}.range-grid .cell-name{place-items:center;height:100%;display:grid}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app-nav{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:.25rem;padding:.5rem 1rem;display:flex}.app-nav .brand{margin-right:1rem;font-weight:700}.app-nav button{background:0 0;border:none;border-radius:6px;padding:.4rem .8rem}.app-nav button.on{color:var(--accent);background:#e8eefc;font-weight:600}.storage-warning{color:#7a4a00;background:#fff4e0;margin:0;padding:.4rem 1rem;font-size:.9rem}.note{color:var(--muted);font-size:.8rem}.label-badge{white-space:nowrap;border-radius:999px;align-items:center;gap:.2rem;padding:.05rem .45rem;font-size:.75rem;font-weight:600;display:inline-flex}.label-badge.fine{color:#006300;background:#eaf6ee}.label-badge.marginal{color:#7a4a00;background:#fff4e0}.label-badge.mistake{color:#8c1d1d;background:#fdecea}.review,.stats{max-width:1200px;margin:0 auto;padding:1.25rem 1rem 3rem}.review h1,.stats h1{margin:0 0 .5rem;font-size:1.5rem}.hand-list{border-collapse:collapse;background:var(--panel);width:100%;margin-top:1rem;font-size:.9rem}.hand-list th,.hand-list td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:.45rem .6rem}.hand-list thead th{color:var(--muted);font-size:.8rem;font-weight:500}.hand-list .cards{gap:.15rem;display:flex}.hand-list .up{color:var(--good);font-weight:600}.hand-list .down{color:var(--bad);font-weight:600}.label-counts{flex-wrap:wrap;gap:.25rem;display:flex}.detail-body{grid-template-columns:minmax(0,1.2fr) minmax(360px,1fr);align-items:start;gap:1rem;display:grid}.replay-controls{background:var(--panel);border:1px solid var(--border);border-radius:10px;align-items:center;gap:.4rem;margin-top:-2.5rem;padding:.5rem;display:flex}.step-caption{text-align:center;flex:1;font-size:.9rem}.decisions{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1rem}.decisions h2{margin:0 0 .5rem;font-size:1.1rem}.decision-list{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.decision-list button{text-align:left;align-items:center;gap:.6rem;width:100%;display:flex}.decision-list li.on button{border-color:var(--accent);box-shadow:0 0 0 2px #1f6feb33}.decision-list .street{width:3.5rem;color:var(--muted);font-size:.85rem}.decision-detail{margin-top:1rem}.stats{--series-1:#2a78d6;--chart-grid:#e1e0d9;--chart-axis:#c3c2b7;--chart-muted:#898781}.filter-row{gap:1rem;margin:.5rem 0 1.25rem;display:flex}.tiles{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;display:grid}.tile{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem}.tile-label{color:var(--muted);font-size:.85rem}.tile-value{font-size:1.8rem;font-weight:600}.tile-badges{flex-wrap:wrap;gap:.25rem;margin-top:.3rem;display:flex}.chart{background:var(--panel);border:1px solid var(--border);border-radius:10px;margin:1.25rem 0 0;padding:.75rem 1rem 1rem}.chart figcaption{justify-content:space-between;align-items:baseline;margin-bottom:.75rem;display:flex}.chart-title{font-weight:600}.bars{gap:.6rem;display:grid}.bar-row{border-radius:4px;grid-template-columns:9rem 1fr;align-items:center;gap:.75rem;display:grid}.bar-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bar-label{color:var(--text);font-size:.9rem}.bar-track{align-items:center;gap:.5rem;min-height:1.5rem;display:flex;position:relative}.bar{background:var(--series-1);border-radius:0 4px 4px 0;max-width:calc(100% - 4.5rem);height:20px;display:block}.bar-value{color:var(--text);font-variant-numeric:tabular-nums;font-size:.85rem}.tooltip{z-index:2;background:var(--text);color:#fff;white-space:nowrap;pointer-events:none;border-radius:6px;padding:.35rem .55rem;font-size:.8rem;position:absolute}.bar-track .tooltip{bottom:calc(100% + 4px);left:0}.trend-wrap{position:relative}.trend-wrap svg{width:100%;height:auto;display:block}.trend-wrap svg:focus-visible{outline:2px solid var(--accent)}.trend-wrap .grid{stroke:var(--chart-grid);stroke-width:1px}.trend-wrap .tick{fill:var(--chart-muted);font-variant-numeric:tabular-nums;font-size:12px}.trend-wrap .trend-line{fill:none;stroke:var(--series-1);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.trend-wrap .trend-dot{fill:var(--series-1);stroke:var(--panel);stroke-width:2px}.trend-wrap .crosshair{stroke:var(--chart-axis);stroke-width:1px}.trend-wrap .end-label{fill:var(--text);font-size:12px;font-weight:600}.trend-wrap .hit{fill:#0000}.trend-tooltip{transform:translate(-50%,calc(-100% - 10px))}.axis-note{text-align:center;color:var(--chart-muted);margin:0;font-size:.75rem}.chart-table{border-collapse:collapse;width:100%;font-size:.9rem}.chart-table th,.chart-table td{border-bottom:1px solid var(--border);text-align:left;padding:.3rem .5rem}.chart-table td{font-variant-numeric:tabular-nums}.danger-zone{align-items:center;gap:.75rem;margin-top:2.5rem;font-size:.9rem;display:flex}button.danger{background:var(--bad);border-color:var(--bad);color:#fff}@media (width<=1100px){.play-body,.detail-body{grid-template-columns:1fr}}@media (width<=640px){.felt{margin:3rem .5rem 4rem}.seat,.seat-plate{min-width:5.5rem}.metric-grid{grid-template-columns:repeat(2,1fr)}.lineup label{grid-template-columns:1fr}}:root{--bg:#f6f7f9;--panel:#fff;--text:#1d2330;--muted:#5d6677;--border:#d9dde5;--accent:#1b62d6;--ok:#1a7f37;--error:#c62828;--red-suit:#c62828;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;border-radius:6px;padding:.4rem .8rem}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.6;cursor:progress}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input{border:1px solid var(--border);border-radius:6px;width:100%;padding:.4rem .5rem}
