:root{--bg: #f5f6fa;--panel: #ffffff;--ink: #18202f;--muted: #5a6478;--line: #d8dce6;--accent: #1e40af;--accent-ink: #ffffff;--good: #15803d;--good-bg: #e6f5ec;--bad: #b91c1c;--bad-bg: #fde8e8;--warn: #92400e;--board: #1e3a8a;--hole: #f5f6fa;--p1: #dc2626;--p2: #eab308;--bar: #6366f1;--mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #10141c;--panel: #1a202b;--ink: #e5e8ef;--muted: #9aa3b5;--line: #2e3646;--accent: #7aa2ff;--accent-ink: #0b1430;--good: #4ade80;--good-bg: #13301f;--bad: #f87171;--bad-bg: #3a1d20;--warn: #fbbf24;--board: #1d3c8f;--hole: #10141c;--p1: #f87171;--p2: #facc15;--bar: #a5b4fc;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow-x:hidden}#app{max-width:1080px;margin:0 auto;padding:0 16px 48px}.site-header{padding:20px 0 10px;border-bottom:1px solid var(--line);margin-bottom:18px}.site-header h1{margin:0 0 12px;font-size:1.9rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}.logo{letter-spacing:-.15em;font-size:1.2rem;background:linear-gradient(90deg,var(--p1) 50%,var(--p2) 50%);-webkit-background-clip:text;background-clip:text;color:transparent}.tagline{font-size:1rem;font-weight:500;color:var(--muted)}nav{display:flex;flex-wrap:wrap;gap:6px}nav button{background:transparent;color:var(--ink);border-color:var(--line)}nav button[aria-selected=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button,.button{font:inherit;display:inline-block;text-decoration:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:6px;padding:6px 14px;cursor:pointer}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.danger{color:var(--bad)}button:disabled{opacity:.55;cursor:progress}button.link{border:none;background:none;padding:0;color:var(--accent);text-decoration:underline}button.chip{border-radius:999px;padding:3px 12px;font-size:.88rem}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select,textarea{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:5px 8px;max-width:100%}input[type=checkbox]{width:18px;height:18px;vertical-align:middle}input[type=file]{border:none;padding:0;position:absolute;width:1px;height:1px;opacity:0}textarea{width:100%;font-family:var(--mono);font-size:.85rem;margin-top:8px}code,pre{font-family:var(--mono);font-size:.86em}pre{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px 12px;overflow-x:auto}.view{display:grid;gap:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;min-width:0}.panel:empty{display:none}h2{margin:4px 0 8px;font-size:1.35rem}h3{margin:14px 0 6px;font-size:1.05rem}.muted{color:var(--muted)}.small{font-size:.88rem}.good{color:var(--good)}.bad{color:var(--bad)}.warn{color:var(--warn)}.num{font-variant-numeric:tabular-nums}.prose p,.prose li{max-width:78ch}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 18px;margin:10px 0}.grid[hidden]{display:none}.field{display:flex;flex-direction:column;gap:4px;font-size:.95rem;min-width:0}.field-label{font-weight:600}.field small{color:var(--muted);font-size:.8rem}fieldset{border:1px solid var(--line);border-radius:10px;margin:12px 0;padding:6px 14px 4px}legend{font-weight:600;padding:0 4px}.preset-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 2px}.errors{color:var(--bad);margin:8px 0}.check{display:block;padding:2px 0}.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 24px}.budget-line{margin:6px 0 4px}.budget{height:10px;background:var(--bg);border:1px solid var(--line);border-radius:999px;overflow:hidden}.budget-fill{height:100%;background:var(--good);transition:width .2s}.budget-fill.over{background:var(--bad)}.chart{width:100%;max-width:520px;height:auto;display:block}.chart .series{fill:none;stroke:var(--accent);stroke-width:2.2}.chart .axis{stroke:var(--line)}.chart .tick,.chart .chart-title{fill:var(--muted);font-size:10px}.table-wrap{overflow-x:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--line);white-space:nowrap}td.num,th.num{text-align:right}tr.house td{color:var(--muted)}.matrix td.cell{text-align:center;background:color-mix(in srgb,var(--good) calc(var(--frac) * 35%),transparent)}.matrix td.diag{text-align:center;color:var(--muted)}progress{width:100%}.games{font-size:.9rem;padding-left:22px}.games li{margin:3px 0}.brain{border-top:1px solid var(--line);padding:10px 0}.brain-head{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.brain-head h3{margin:0}.tag{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 5px}.badges{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.badge{font-size:.82rem;border-radius:999px;padding:2px 10px;border:1px solid var(--line)}.badge.ok{background:var(--good-bg);color:var(--good);border-color:transparent}.badge.no{background:var(--bad-bg);color:var(--bad);border-color:transparent}.badge.pending{color:var(--muted)}.board{width:100%;max-width:420px;height:auto;display:block}.board-bg{fill:var(--board)}.disc.empty{fill:var(--hole)}.disc.p1{fill:var(--p1)}.disc.p2{fill:var(--p2)}.disc.last{stroke:var(--ink);stroke-width:3}.mark{fill:none;stroke:#fff;stroke-width:3;stroke-dasharray:3 3}.prob-bar{fill:var(--bar)}.prob-label{fill:var(--muted);font-size:10px}.col-labels{display:grid;grid-template-columns:repeat(7,1fr);max-width:420px;text-align:center;color:var(--muted);font-size:.85rem}.replay{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:20px;align-items:start}.controls{justify-content:center;max-width:420px}.move-list{columns:2 150px;font-size:.88rem;padding-left:26px;margin:0}.move-list li.current{font-weight:700}.move-list li.flagged::marker{color:var(--bad)}@media(max-width:720px){.replay{grid-template-columns:minmax(0,1fr)}.site-header h1{font-size:1.5rem}}
