*{margin:0;padding:0}:root{--bg:#0f172a;--panel-bg:#1e293b;--card-bg:#fff;--text:#e2e8f0;--text-muted:#94a3b8;--border:#334155;--accent:#38bdf8}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.layout{grid-template-columns:320px 1fr;min-height:100vh;display:grid}.panel{background:var(--panel-bg);border-right:1px solid var(--border);padding:1.5rem 1.25rem;overflow-y:auto}.panel h2{color:var(--accent);margin:0 0 1rem;font-size:1.1rem}.field{border:none;margin-bottom:1.25rem;padding:0;display:block}fieldset.field{border:1px solid var(--border);border-radius:6px;padding:.75rem .85rem .5rem}fieldset.field legend{color:var(--text-muted);padding:0 .25rem;font-size:.8rem}.field>span{color:var(--text-muted);margin-bottom:.35rem;font-size:.85rem;display:block}.field select,.field input[type=number]{border:1px solid var(--border);width:100%;color:var(--text);font:inherit;background:#0f172a;border-radius:4px;padding:.4rem .55rem}.stack-row{grid-template-columns:60px 1fr;align-items:center;gap:.5rem;margin-bottom:.4rem;display:grid}.stack-row span{color:var(--text-muted);font-size:.85rem}.solver-status{color:var(--text-muted);min-height:1.2em;margin-top:.5rem;font-size:.8rem}.solver-status .error{color:#f87171}.warn-banner{color:#fbbf24;background:#d9770626;border:1px solid #d9770666;border-radius:4px;margin-bottom:.5rem;padding:.5rem .65rem;font-size:.75rem;line-height:1.4}.solving-block{flex-direction:column;gap:.3rem;display:flex}.solving-header{color:var(--text);align-items:center;gap:.35rem;font-size:.85rem;display:flex}.solving-elapsed{font-variant-numeric:tabular-nums;font-weight:500}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.progress-track{border:1px solid var(--border);background:#0f172a;border-radius:2px;height:4px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .1s linear}.payout-controls{gap:.4rem;margin-top:.4rem;display:flex}.mini-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;font-size:.75rem;font:inherit;background:#0f172a;border-radius:4px;flex:1;padding:.3rem .5rem}.mini-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.mini-btn:disabled{opacity:.4;cursor:not-allowed}.payout-sum{color:var(--text-muted);text-align:right;margin-top:.4rem;font-size:.7rem}.wsop-gen{margin-bottom:.6rem}.wsop-gen details summary{cursor:pointer;-webkit-user-select:none;user-select:none;background:#38bdf814;border:1px solid #38bdf84d;border-radius:4px;align-items:baseline;padding:.35rem .5rem;font-size:.78rem;list-style:none;display:flex}.wsop-gen details summary::-webkit-details-marker{display:none}.wsop-gen details summary:before{content:"▸";color:var(--accent);margin-right:.3rem;font-size:.7rem;transition:transform .15s}.wsop-gen details[open] summary:before{transform:rotate(90deg)}.wsop-gen-title{color:var(--accent);font-weight:600}.wsop-gen-body{flex-direction:column;gap:.3rem;padding:.6rem .5rem .3rem;display:flex}.wsop-preview{border:1px solid var(--border);background:#0f172a;border-radius:4px;margin-top:.4rem;padding:.5rem .6rem;font-size:.75rem}.wsop-preview-row{justify-content:space-between;margin-bottom:.2rem;display:flex}.wsop-preview-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-top:.5rem}.wsop-preview-table th,.wsop-preview-table td{text-align:left;border-bottom:1px solid var(--border);padding:.15rem .4rem;font-size:.72rem}.wsop-preview-table th{color:var(--text-muted);font-weight:500}.wsop-preview-table td:last-child{text-align:right}.wsop-apply{margin-top:.5rem}.wsop-disclaimer{margin-top:.4rem;font-size:.68rem;font-style:italic;line-height:1.4}.diff-legend{color:var(--text-muted);align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:.78rem;display:flex}.diff-swatch{vertical-align:middle;border-radius:2px;width:14px;height:14px;margin-right:.3rem;display:inline-block}.diff-tighter{background:#d32f2fd9}.diff-looser{background:#2e7d32d9}.diff-spacer{width:1rem}.bf-wrap{--bf-label-w:64px;-webkit-overflow-scrolling:touch;flex-direction:column;gap:.6rem;display:flex;overflow-x:auto}.bf-grid{background:var(--border);min-width:calc(var(--bf-label-w) + 9 * 52px);border-radius:4px;gap:2px;padding:2px;font-size:.78rem;display:grid}.bf-cell-inner>*{text-align:center;white-space:nowrap}.bf-cell-inner{width:100%;overflow:hidden}.bf-header{color:var(--text-muted);text-align:center;-webkit-user-select:none;user-select:none;background:#0f172a;padding:.35rem 0;font-weight:500}.bf-row-header{z-index:2;background:#0f172a;font-size:.75rem;position:sticky;left:0}.bf-corner{color:var(--text-muted);text-align:center;z-index:3;background:#0b1220;justify-content:center;align-items:center;padding:.3rem;font-size:.65rem;line-height:1.2;display:flex;position:sticky;left:0}.bf-arrow{margin:0 .15rem}.bf-cell{color:#f1f5f9;font-variant-numeric:tabular-nums;background:#f59e0b33;justify-content:center;align-items:center;min-height:30px;padding:.35rem .15rem;display:flex;overflow:hidden}.bf-cell-inner{flex-direction:column;align-items:center;line-height:1.1;display:flex}.bf-cell-rp{font-size:.82rem;font-weight:600}.bf-cell-bf{color:#0f172ab3;font-size:.7rem}.bf-cell:hover{outline:2px solid var(--accent);outline-offset:-2px;z-index:1}.bf-legend{color:var(--text-muted);align-items:center;gap:.5rem;font-size:.75rem;display:flex}.bf-legend-gradient{border:1px solid var(--border);background:linear-gradient(90deg,#f59e0b1f 0%,#f59e0be6 100%);border-radius:2px;flex:1;max-width:200px;height:12px}.bf-legend-tag{font-variant-numeric:tabular-nums}.bf-placeholder{text-align:center;color:var(--text-muted);padding:2rem}.ev-scatter{flex-direction:column;gap:.5rem;display:flex}.ev-scatter-legend{color:var(--text);align-items:center;gap:.4rem;font-size:.78rem;display:flex}.ev-legend-dot{background:#38bdf8;border-radius:50%;width:10px;height:10px;display:inline-block}.ev-tooltip{border:1px solid var(--border);color:var(--text);background:#0f172a;border-radius:6px;min-width:140px;padding:.5rem .65rem;font-size:.78rem}.ev-tooltip-pos{margin-bottom:.25rem;font-size:.95rem;font-weight:600}.ev-tooltip-tax{border-top:1px solid var(--border);margin-top:.25rem;padding-top:.25rem}.ev-tooltip-tax.pos{color:#4ade80}.ev-tooltip-tax.neg{color:#f87171}.ev-curve-controls{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.crossover-tag{color:#fbbf24;font-weight:500}.model-notes details summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:baseline;gap:.75rem;list-style:none;display:flex}.model-notes details summary::-webkit-details-marker{display:none}.model-notes details summary:before{content:"▸";color:var(--text-muted);margin-right:.1rem;font-size:.8rem;transition:transform .15s;display:inline-block}.model-notes details[open] summary:before{transform:rotate(90deg)}.model-notes details summary h2{margin:0;display:inline-block}.notes-body{margin-top:1rem;font-size:.85rem;line-height:1.55}.notes-body h4{color:var(--accent);margin:1rem 0 .4rem;font-size:.9rem;font-weight:600}.notes-body h4:first-of-type{margin-top:.5rem}.notes-body ul{margin:0;padding-left:1.2rem}.notes-body li{color:var(--text);margin-bottom:.45rem}.notes-body code{border:1px solid var(--border);background:#0f172a;border-radius:3px;padding:1px 5px;font-size:.78rem}.notes-body p{margin:1rem 0 0;font-size:.78rem}@media (width<=900px){.layout{grid-template-rows:auto 1fr;grid-template-columns:1fr;min-height:auto}.panel{border-right:none;border-bottom:1px solid var(--border);max-height:none;padding:1rem}.main{padding:1.25rem 1rem 1.5rem}.header h1{margin-bottom:1rem;font-size:1.15rem}.card{margin-bottom:1rem;padding:1rem}.card-header{flex-wrap:wrap;gap:.6rem}.card h2{font-size:.95rem}.range-grid{max-width:100%}.ev-grid{grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:.4rem}.ev-cell{padding:.4rem .45rem}.ev-value{font-size:1rem}.bf-wrap{--bf-label-w:42px}.bf-grid{min-width:calc(var(--bf-label-w) + 9 * 48px)}.bf-header,.bf-row-header{padding:.25rem 0;font-size:.62rem}.bf-corner{font-size:.55rem;line-height:1.1}.bf-cell{min-height:24px;padding:.25rem .1rem;font-size:.6rem}.bf-cell-inner{line-height:1.05}.bf-cell-rp{font-size:.68rem}.bf-cell-bf{font-size:.55rem}.solver-status{font-size:.75rem}.warn-banner{font-size:.72rem}}@media (width<=720px){.poker-seat{min-width:64px;padding:.25rem .4rem .3rem}.seat-pos{font-size:.68rem}.seat-stack{font-size:.78rem}.seat-ev{font-size:.62rem}.dealer-badge{width:18px;height:18px;font-size:.7rem}}@media (width<=540px){.poker-table{aspect-ratio:1}.poker-seat{min-width:56px;padding:.2rem .35rem .25rem}.seat-pos{font-size:.62rem}.seat-stack{font-size:.72rem}.seat-ev{font-size:.58rem}.poker-felt-label{font-size:.9rem}.header h1,.panel h2{font-size:1rem}.stack-row{grid-template-columns:50px 1fr}.field select,.field input[type=number]{padding:.5rem .55rem;font-size:16px}.inline-field{flex-wrap:wrap;justify-content:space-between;width:100%;font-size:.78rem}.inline-field select{flex:1;min-width:0;padding:.4rem;font-size:16px}.mini-btn{padding:.45rem .5rem;font-size:.8rem}.ev-scatter .recharts-legend-item-text,.ev-scatter .recharts-cartesian-axis-tick{font-size:10px!important}}.main{padding:1.5rem 1rem 2rem;overflow-y:auto}.header h1{color:#e2e8f0;margin:0 0 1.5rem;font-size:1.4rem}.card{background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;width:100%;margin-bottom:1.25rem;padding:1.25rem 1.5rem}.card h2{color:var(--accent);margin:0 0 1rem;font-size:1rem}.card-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.card-header h2{margin:0}.muted{color:var(--text-muted);font-size:.85rem}.range-stats{text-align:left;flex-direction:column;flex-basis:100%;gap:.2rem;display:flex}.inline-field{align-items:center;gap:.5rem;font-size:.85rem;display:inline-flex}.inline-field select{color:var(--text);border:1px solid var(--border);font:inherit;background:#0f172a;border-radius:4px;padding:.25rem .4rem}.ev-grid{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.5rem;display:grid}.ev-cell{border:1px solid var(--border);text-align:center;background:#0f172a;border-radius:6px;padding:.5rem .75rem}.ev-label{color:var(--text-muted);font-size:.75rem}.ev-value{color:var(--text);margin:.2rem 0;font-size:1.2rem;font-weight:600}.ev-stack{color:var(--text-muted);font-size:.75rem}.poker-table{aspect-ratio:1;width:100%;max-width:720px;margin:0 auto;position:relative}.poker-felt{background:radial-gradient(at 50% 30%,#ffffff0a 0%,#0000 60%),radial-gradient(#1f543b 0%,#0e3b27 100%);border:6px solid #11141d;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;inset:10% 6%;box-shadow:inset 0 0 60px #00000073,0 6px 20px #0000004d}.poker-felt-label{color:#ffffff1f;letter-spacing:.15em;text-transform:uppercase;pointer-events:none;font-size:1.2rem;font-weight:700}.poker-seat{border:1px solid var(--border);text-align:center;z-index:1;white-space:nowrap;background:#0f172a;border-radius:8px;min-width:64px;padding:.3rem .45rem .35rem;position:absolute;transform:translate(-50%,-50%);box-shadow:0 2px 8px #00000073}.poker-seat.is-bb{border-color:#38bdf8}.poker-seat.is-sb{border-color:#94a3b8}.poker-seat.is-btn{border-color:#fbbf24}.seat-pos{color:var(--accent);font-size:.68rem;font-weight:600;line-height:1.1}.seat-stack{color:var(--text);font-variant-numeric:tabular-nums;margin:.1rem 0 .05rem;font-size:.78rem;font-weight:600}.seat-ev{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.62rem}.dealer-badge{color:#1f2937;background:#fbbf24;border:1.5px solid #1f2937;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-family:Georgia,serif;font-size:.85rem;font-weight:700;display:flex;position:absolute;top:-8px;right:-8px;box-shadow:0 2px 4px #00000080}.range-matrix{flex-direction:column;gap:.5rem;display:flex}.range-grid{aspect-ratio:1;background:var(--border);border-radius:4px;grid-template-columns:repeat(13,1fr);gap:1px;width:100%;max-width:960px;display:grid;overflow:hidden;container-type:inline-size}.range-cell{color:var(--text);background:var(--panel-bg);-webkit-user-select:none;user-select:none;cursor:default;justify-content:center;align-items:center;font-size:clamp(.5rem,1.7cqw,.8rem);font-weight:500;display:flex}.range-cell:hover{outline:2px solid var(--accent);outline-offset:-2px;z-index:1}.range-legend{color:var(--text-muted);flex-direction:column;gap:.35rem;margin-top:.5rem;font-size:.75rem;display:flex}.legend-row{grid-template-columns:60px 220px 1fr 60px;align-items:center;gap:.5rem;display:grid}.legend-label{color:var(--text-muted);font-weight:500}.legend-gradient{border:1px solid var(--border);border-radius:2px;height:14px}.pair-gradient{background:linear-gradient(90deg,#f5f5f5 0%,#2e7d3293 50%,#2e7d32 100%)}.suited-gradient{background:linear-gradient(90deg,#f5f5f5 0%,#1976d293 50%,#1976d2 100%)}.offsuit-gradient{background:linear-gradient(90deg,#f5f5f5 0%,#d32f2f93 50%,#d32f2f 100%)}.diff-gradient{background:linear-gradient(90deg,#d32f2f 0%,#f5f5f5 50%,#2e7d32 100%)}.legend-ticks{color:var(--text-muted);justify-content:space-between;font-size:.7rem;display:flex}.legend-tag{color:var(--text-muted);font-size:.75rem}.legend-families{grid-template-columns:60px auto auto;gap:1.5rem}.legend-dot{vertical-align:middle;border-radius:2px;width:10px;height:10px;margin-right:.4rem;display:inline-block}.legend-pair{background:#2e7d32d9}.legend-suited{background:#1976d2d9}.legend-offsuit{background:#d32f2fd9}.range-placeholder{text-align:center;color:var(--text-muted);padding:2rem}.range-tooltip{pointer-events:none;z-index:1000;border:1px solid var(--border);color:var(--text);background:#0f172a;border-radius:6px;min-width:130px;padding:.5rem .75rem;font-size:.8rem;position:fixed;box-shadow:0 4px 12px #0006}.tooltip-hand{justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.3rem;font-size:1rem;font-weight:600;display:flex}.tooltip-family{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;font-weight:400}.tooltip-diff{border-top:1px solid var(--border);color:var(--accent);margin-top:.25rem;padding-top:.25rem}
