:root{--bg: #0b1220;--panel: #121d2f;--line: #2a3c56;--ink: #e2e9f4;--dim: #90a2bd;--accent: #f2b880;--shade: #4cc9f0;--ghost: #2d5570;--good: #6fd3a8;--bad: #f87171;--cell: 46px}*{box-sizing:border-box}body{margin:0;background:radial-gradient(1200px 600px at 50% -10%,#16273f 0%,var(--bg) 60%);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Helvetica Neue,sans-serif;line-height:1.65}main{max-width:900px;margin:0 auto;padding:2.2rem 1.2rem 4rem}header h1{font-size:2.1rem;margin:0 0 .5rem;letter-spacing:-.02em}header h1 span{color:var(--shade)}.sub{color:var(--dim);margin:0 0 1.4rem;font-size:.95rem}.sub strong{color:var(--ink)}.sub em{color:var(--accent);font-style:italic}#wrap{display:flex;gap:22px;align-items:flex-start;flex-wrap:wrap;justify-content:center}h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--dim);margin:0 0 8px;font-weight:600}.stage{flex:0 0 auto}#boardwrap{position:relative;padding:10px;background:var(--panel);border:1px solid var(--line);border-radius:12px;display:inline-block}#board{display:grid;gap:0;position:relative}.cell{width:var(--cell);height:var(--cell);position:relative;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:700;color:var(--accent);background:#0f1a2b;border:1px solid #1d2b41;-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;transition:background .12s ease}.cell.on{background:var(--shade)}.cell.off:after{content:"";position:absolute;width:6px;height:6px;border-radius:50%;background:#33465f}.cell.gh-on:before,.cell.gh-off:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border-radius:4px;pointer-events:none}.cell.gh-on:before{border:2px dashed var(--ghost);background:#4cc9f01f}.cell.gh-off:before{border:2px dotted #3a4b64}.cell.clue{cursor:default;background:#16233a}.cell.clue span{display:flex;align-items:center;justify-content:center;width:78%;height:78%;border-radius:6px;background:#e8eef8;color:#0b1220;border:1px solid #b9c6da}.cell.clue.done span{background:var(--good)}.cell.clue.over span{background:var(--bad);color:#fff}@keyframes pulse{0%{background:#2b4763}to{background:#0f1a2b}}.cell.flash{animation:pulse .8s ease-out}.side{flex:1 1 260px;min-width:240px;max-width:320px}.budget{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:.75rem;padding:2px 8px;border-radius:999px;border:1px solid var(--line);background:#0f1a2b;color:var(--dim);font-variant-numeric:tabular-nums}.chip.ok{border-color:var(--good);color:var(--good)}.chip.bad{border-color:var(--bad);color:var(--bad)}.asidenote{color:var(--dim);font-size:.8rem;margin:10px 0 0}.legend{display:flex;flex-wrap:wrap;gap:14px;margin:22px 0 6px;font-size:.78rem;color:var(--dim)}.legend b{color:var(--ink)}.swatch{display:inline-block;width:16px;height:16px;border-radius:4px;vertical-align:middle;margin-right:6px}.swatch.on{background:var(--shade)}.swatch.off{background:#0f1a2b;border:1px solid #33465f;position:relative}.swatch.gh{background:#4cc9f01f;border:2px dashed var(--ghost)}.swatch.num{background:#e8eef8;border:1px solid #b9c6da}.hud{margin:14px 0 6px;min-height:1.6em;font-size:.9rem}.hud .win{color:var(--good);font-weight:600}.hud .err{color:var(--bad)}.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:6px}label{font-size:.8rem;color:var(--dim)}label.chk{display:inline-flex;align-items:center;gap:5px}select,button{font:inherit;font-size:.85rem;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:5px 10px;cursor:pointer}button:hover,select:hover{border-color:var(--shade)}.notes{margin-top:44px;border-top:1px solid var(--line);padding-top:10px}.notes h2{font-size:1.15rem;margin:34px 0 10px;letter-spacing:-.01em}.notes p,.notes li{font-size:.92rem;color:#c6d2e4}.notes code{background:#0f1a2b;border:1px solid var(--line);border-radius:5px;padding:0 5px;font-size:.85em;color:var(--accent)}.notes table{border-collapse:collapse;width:100%;margin:14px 0 18px;font-size:.83rem;font-variant-numeric:tabular-nums}.notes th,.notes td{border:1px solid var(--line);padding:5px 9px;text-align:right}.notes tr>th:first-child,.notes tr>td:first-child{text-align:left}.notes tr:first-child th{background:#0f1a2b;color:var(--dim);font-weight:600}.notes a{color:var(--shade)}footer{margin-top:40px;color:var(--dim);font-size:.82rem}footer a{color:var(--shade)}@media (max-width: 720px){:root{--cell: 34px}}
