:root{--bg: #0f1519;--panel: #17202a;--line: #2c3a47;--ink: #e8f0f4;--dim: #93a6b3;--accent: #7aa2f7;--accent2: #e0af68;--good: #7dd3a0;--bad: #f87171;--given-bg: #24333f}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Helvetica Neue,sans-serif;line-height:1.65}main{max-width:860px;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(--accent)}.sub{color:var(--dim);margin:0 0 1.6rem;font-size:.95rem}.sub strong{color:var(--ink)}.legend{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;color:var(--dim);font-size:.85rem;margin-bottom:1.2rem}.legend i{display:inline-flex;width:20px;height:20px;border-radius:5px;vertical-align:-5px;margin-right:6px;align-items:center;justify-content:center;font-style:normal;font-weight:700;font-size:.86rem}.legend .digit-demo{background:#101a22;border:2px solid var(--line);color:var(--ink)}.legend .given-demo{background:var(--given-bg);border:2px solid var(--accent2);color:var(--ink)}.legend .shape-demo{background:#7aa2f724;border:2px solid var(--accent);color:var(--accent)}#wrap{overflow-x:auto;padding-bottom:.4rem}#stage{width:fit-content;margin:0 auto}#board{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:6px;line-height:0}#board.solved{outline:2px solid var(--good)}#board svg{display:block}.cell{fill:#101a22;stroke:#223140;stroke-width:1;cursor:pointer}.cell.sel{stroke:var(--accent2);stroke-width:2}.cell.fixed{fill:var(--given-bg)}.cell.done{fill:#7dd3a012}.cell.broken{fill:#f8717138}.sym{pointer-events:none;font-weight:700;fill:var(--ink)}.sym.given{fill:var(--accent2)}.sym.wrong{fill:var(--bad)}.rb{stroke:#6a8cad;stroke-width:3;stroke-linecap:round;pointer-events:none}.frame{fill:none;stroke:#4a5f73;stroke-width:2;pointer-events:none}.hud{margin:.9rem 0 .6rem;min-height:1.4rem;color:var(--dim);font-size:.92rem;text-align:center}.controls{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;align-items:center;margin-bottom:2rem}.controls label{color:var(--dim);font-size:.88rem;display:inline-flex;gap:.45rem;align-items:center}select,button{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:.45rem .8rem;font-size:.9rem;cursor:pointer}select{max-width:21rem}button:hover,select:hover{border-color:var(--accent)}.notes{border-top:1px solid var(--line);padding-top:1.6rem;font-size:.95rem}.notes h2{font-size:1.15rem;margin:1.8rem 0 .6rem}.notes p{color:var(--dim);margin:.6rem 0}.notes strong,.notes em{color:var(--ink)}.notes code{background:#1c2833;border:1px solid var(--line);border-radius:5px;padding:.05rem .35rem;font-size:.85em;color:var(--accent)}.notes table,#shapenote table{border-collapse:collapse;margin:.8rem 0;font-size:.86rem;color:var(--dim)}.notes th,.notes td,#shapenote th,#shapenote td{border:1px solid var(--line);padding:.3rem .65rem;text-align:left}.notes th,#shapenote th{color:var(--ink);background:#1c2833}.notes .cap{font-size:.85rem;margin-top:-.2rem}#shapenote{overflow-x:auto}footer{margin-top:2.4rem;border-top:1px solid var(--line);padding-top:1.2rem;color:var(--dim);font-size:.85rem}.cell.dark{fill:#1a2b38}.cell.light{fill:#0c141c}.cell.fixed.dark{fill:#2b3a47}.cell.fixed.light{fill:#24333f}.cell.done{fill:#7dd3a017}.cell.broken{fill:#f871713d}.path{fill:none;stroke:var(--accent);stroke-width:6;stroke-linecap:round;stroke-linejoin:round;opacity:.6;pointer-events:none}.path.given{stroke:var(--accent2);opacity:.55}#board.solved .path{stroke:var(--good);opacity:.6}.sym{font-variant-numeric:tabular-nums}.typing{fill:var(--accent2);font-weight:700;pointer-events:none}.legend .path-demo{background:#7aa2f733;border:2px solid var(--accent);color:var(--accent)}.legend .dark-demo{background:#2b3a47;border:2px solid var(--line);color:var(--dim)}#colournote{overflow-x:auto}#colournote table{border-collapse:collapse;margin:.8rem 0;font-size:.86rem;color:var(--dim)}#colournote th,#colournote td{border:1px solid var(--line);padding:.3rem .65rem;text-align:left}#colournote th{color:var(--ink);background:#1c2833}.anchor{color:var(--ink)}
