.vr-board{position:relative}.vr-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.vr-diag-cell:not(.selected):not(.peer):not(.same):not(.error){background:color-mix(in srgb,var(--surface),var(--accent) 7%)}.vr-diag{stroke:var(--accent);stroke-width:.03;opacity:.35}.vr-thermo polyline{fill:none;stroke:var(--muted);stroke-width:.3;stroke-linecap:round;stroke-linejoin:round;opacity:.32}.vr-thermo circle{fill:var(--muted);opacity:.32}.vr-arrow circle{fill:none;stroke:var(--muted);stroke-width:.05;opacity:.8}.vr-arrow polyline{fill:none;stroke:var(--muted);stroke-width:.05;stroke-linecap:round;stroke-linejoin:round;opacity:.8}.vr-dot{stroke:var(--text);stroke-width:.035}.vr-dot.w{fill:var(--surface)}.vr-dot.b{fill:var(--text)}.math-card{container-type:inline-size;aspect-ratio:1 / .8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4%;padding:6%;border-radius:14px;background:var(--surface);border:2px solid var(--border-strong);transition:border-color .15s,background-color .15s}.math-card.ok{border-color:var(--success)}.math-card.bad{border-color:var(--danger);background:color-mix(in srgb,var(--surface),var(--danger) 8%);animation:math-shake .3s ease}.math-card.hint{border-color:var(--accent)}@keyframes math-shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.math-progress{display:flex;gap:4px;width:100%}.math-progress span{flex:1;height:5px;border-radius:3px;background:var(--surface-3)}.math-progress span.done{background:var(--accent)}.math-progress span.now{background:var(--accent-strong)}.math-count{color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums}.math-question{font-size:min(15cqw,4.2rem);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:.01em}.math-answer{display:flex;gap:8px}.math-answer span{width:min(13cqw,3.4rem);aspect-ratio:.82;display:grid;place-items:center;border-radius:10px;border:2px solid var(--border);background:var(--surface-2);font-size:min(9cqw,2.4rem);font-weight:700;color:var(--user);font-variant-numeric:tabular-nums}.math-answer span.filled{border-color:var(--accent)}.math-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.math-pad .num{padding:14px 0;font-size:1.3rem}.math-hint{color:var(--muted)}.mem-board{--cols: 4;--rows: 4;display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:8px;aspect-ratio:calc(var(--cols) * .82) / var(--rows);max-height:calc(100dvh - 300px);margin:0 auto;container-type:inline-size;-webkit-user-select:none;user-select:none;touch-action:manipulation}.mem-card{position:relative;padding:0;border:none;background:none;perspective:600px;cursor:pointer;min-width:0;min-height:0}.mem-card:disabled{opacity:1;cursor:default}.mem-inner{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform .32s ease;transform-style:preserve-3d}.mem-card.up .mem-inner{transform:rotateY(180deg)}.mem-face{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;border-radius:10px;backface-visibility:hidden;-webkit-backface-visibility:hidden}.mem-back{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--accent) 22%,transparent) 0 6px,transparent 6px 12px),var(--surface-2);border:1px solid var(--border)}.mem-card:not(.up):hover .mem-back{border-color:var(--accent)}.mem-front{transform:rotateY(180deg);background:var(--surface);border:2px solid var(--border-strong);font-size:calc(100cqw / var(--cols) * .48);line-height:1}.mem-card.matched .mem-front{border-color:var(--accent);background:var(--accent-soft)}.mem-card.miss .mem-front{border-color:var(--danger)}.mem-card.pop .mem-inner{animation:mem-pop .35s ease .25s}@keyframes mem-pop{50%{transform:rotateY(180deg) scale(1.08)}}.mem-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mem-stats div{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--border)}.mem-stats span{font-size:.75rem;color:var(--muted)}.mem-stats strong{font-size:1.3rem;font-variant-numeric:tabular-nums}.cb-board{display:flex;flex-direction:column;gap:10px;min-height:0}.cb-secret{display:flex;justify-content:center;gap:8px;padding:10px;border-radius:12px;background:var(--surface-2);border:1px dashed var(--border-strong)}.cb-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:min(52dvh,440px);overflow-y:auto}.cb-row{display:grid;grid-template-columns:1.6em 1fr auto;align-items:center;gap:10px;padding:6px 10px;border-radius:10px;background:var(--surface);border:1px solid var(--border)}.cb-row.inconsistent{border-color:var(--danger)}.cb-row.draft{border-color:var(--accent);background:var(--accent-soft)}.cb-row.shake{animation:math-shake .3s ease}.cb-num{color:var(--muted);font-size:.8rem;font-variant-numeric:tabular-nums}.cb-guess{display:flex;gap:6px}.cb-score{display:flex;gap:10px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.cb-score.muted{font-weight:500;font-size:.8rem}.cb-near{color:var(--muted)}.cb-slot{padding:0;border:none;background:none}.cb-slot:disabled{opacity:1}.cb-peg{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;font-size:1.15rem;line-height:1;background:var(--surface-2);border:2px solid var(--border)}.cb-peg.empty{border-style:dashed}.cb-peg.hidden{color:var(--muted);font-weight:700}.cb-peg.locked{box-shadow:0 0 0 2px var(--accent)}.cb-peg.s0{color:#5d97f7}.cb-peg.s1{color:#e1a321}.cb-peg.s2{color:#16c4a6}.cb-peg.s3{color:#c08cf7}.cb-peg.s4{color:#e86aa8}.cb-peg.s5{color:#ef6f55}.cb-peg.s6{color:#8fa3b8}.cb-peg.s7{color:#b7c35a}:root[data-theme=light] .cb-peg.s0{color:#2449c4}:root[data-theme=light] .cb-peg.s1{color:#8a5a00}:root[data-theme=light] .cb-peg.s2{color:#0f8577}:root[data-theme=light] .cb-peg.s3{color:#7a45d0}:root[data-theme=light] .cb-peg.s4{color:#b0216f}:root[data-theme=light] .cb-peg.s5{color:#b8402a}:root[data-theme=light] .cb-peg.s6{color:#4c5d70}:root[data-theme=light] .cb-peg.s7{color:#66721a}.cb-palette{display:grid;gap:8px}.cb-pick{position:relative;padding:10px 0}.cb-key{position:absolute;right:6px;bottom:4px;font-size:.65rem;color:var(--muted)}.cb-submit{margin-top:0}.wd-grid{display:flex;flex-direction:column;align-items:center;gap:6px;container-type:inline-size;overflow-y:auto}.wd-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;width:min(100%,340px,max(200px,calc((100dvh - 470px)*.83 + 24px)))}.wd-row.shake{animation:math-shake .3s ease}.wd-tile{aspect-ratio:1;display:grid;place-items:center;border-radius:8px;border:2px solid var(--border);background:var(--surface);font-size:min(9cqw,1.9rem);font-weight:800;text-transform:uppercase;line-height:1}.wd-tile.typed{border-color:var(--border-strong);animation:wd-pop .1s ease}.wd-tile.ghost{color:var(--muted);opacity:.55;border-style:dotted}.wd-tile.correct,.wd-tile.present,.wd-tile.absent{animation:wd-flip .35s ease both}.wd-tile.correct{background:var(--success);border-color:var(--success);color:var(--on-accent)}.wd-tile.present{background:color-mix(in srgb,var(--surface),#e0a92a 30%);border:3px dashed #e0a92a}.wd-tile.absent{background:var(--surface-3);border-color:var(--surface-3);color:var(--muted)}.wd-row.inconsistent .wd-tile{box-shadow:inset 0 -3px 0 var(--danger)}@keyframes wd-flip{0%{transform:rotateX(90deg)}}@keyframes wd-pop{50%{transform:scale(1.08)}}.wd-keyboard{display:flex;flex-direction:column;gap:6px}.wd-krow{display:flex;justify-content:center;gap:4px}.wd-key{flex:1;max-width:42px;padding:12px 0;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);font-weight:700;text-transform:uppercase;font-size:.95rem}.wd-key.wide{flex:1.6;max-width:70px;font-size:.75rem}.wd-key.correct{background:var(--success);border-color:var(--success);color:var(--on-accent)}.wd-key.present{border:2px dashed #e0a92a;background:color-mix(in srgb,var(--surface-2),#e0a92a 25%)}.wd-key.absent{opacity:.4}:root[data-theme=light] .wd-tile.present,:root[data-theme=light] .wd-key.present{border-color:#9a6a00}.rz-dot{display:block;width:calc(100cqw / var(--n) * .15);height:calc(100cqw / var(--n) * .15);min-width:7px;min-height:7px;border-radius:50%;background:var(--text);box-shadow:0 0 0 2px var(--surface-2)}.sl-wrap{aspect-ratio:1;border-radius:8px;background:var(--surface);border:1px solid var(--border)}.sl-board{width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none;touch-action:manipulation}.sl-cell rect{fill:transparent;stroke:var(--border);stroke-width:.02;cursor:pointer}.sl-cell:hover rect{fill:var(--surface-2)}.sl-cell.cursor rect{stroke:var(--accent);stroke-width:.05}.sl-cell.flash rect{fill:var(--accent-soft)}.sl-diag{stroke:var(--accent);stroke-width:.11;stroke-linecap:round;pointer-events:none}.sl-diag.wrong{stroke:var(--danger)}.sl-board.completed .sl-diag{stroke:var(--text)}.sl-clue{pointer-events:none}.sl-clue circle{fill:var(--surface);stroke:var(--text);stroke-width:.04}.sl-clue text{fill:var(--text);font-size:.34px;font-weight:700}.sl-clue.met circle{stroke:var(--muted)}.sl-clue.done{opacity:.35}.sl-clue.bad circle{stroke:var(--danger);fill:var(--danger-soft)}.sl-clue.bad text{fill:var(--danger)}.mk-wrap{container-type:inline-size}.mk-board{--units: 8;display:grid;width:100%;aspect-ratio:1;-webkit-user-select:none;user-select:none;touch-action:none;border:2px solid var(--border-strong);border-radius:8px;overflow:hidden;background:var(--surface)}.mk-board.with-edges{border:none;border-radius:0;background:transparent;overflow:visible}.mk-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;background:var(--surface);border-right:1px solid var(--border);border-bottom:1px solid var(--border);font-size:calc(100cqw / var(--units) * .55);cursor:pointer;transition:background-color .08s}.mk-cell.edge-r{border-right:none}.mk-cell.edge-b{border-bottom:none}.mk-board.with-edges .mk-cell.edge-r{border-right:2px solid var(--border-strong)}.mk-board.with-edges .mk-cell.edge-b{border-bottom:2px solid var(--border-strong)}.mk-board.with-edges .mk-cell.edge-l{border-left:2px solid var(--border-strong)}.mk-board.with-edges .mk-cell.edge-t{border-top:2px solid var(--border-strong)}.mk-cell.fixed{cursor:default}.mk-cell.cursor{box-shadow:inset 0 0 0 2px var(--accent)}.mk-cell.error{background:var(--danger-soft)}.mk-cell.flash{animation:flash .8s ease 2}.mk-edge{display:grid;place-items:center;min-width:0;min-height:0;font-size:calc(100cqw / var(--units) * .48);font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}.mk-swatch{display:inline-grid;place-items:center;width:22px;height:22px}.mk-swatch svg{width:100%;height:100%}.hw-board .mk-cell.room-r{border-right:2.5px solid var(--border-strong)}.hw-board .mk-cell.room-b{border-bottom:2.5px solid var(--border-strong)}.hw-board .mk-cell.hw-shaded{background:var(--text)}.hw-board .mk-cell.hw-shaded .hw-clue{color:var(--bg)}.hw-clue{position:absolute;top:4%;left:8%;font-size:calc(100cqw / var(--units) * .32);font-weight:700;line-height:1;color:var(--text);pointer-events:none}.hw-dot{width:18%;height:18%;border-radius:50%;background:var(--accent);pointer-events:none}.hw-board .mk-cell.error.hw-shaded{background:var(--danger)}.hw-board.completed .mk-cell.hw-shaded{background:var(--accent)}.tp-board .mk-cell.tp-shaded{background:var(--text)}.tp-board .mk-cell.fixed{background:var(--surface-2);cursor:default}.tp-clue{display:flex;flex-wrap:wrap;justify-content:center;align-content:center;gap:.05em .45em;max-width:88%;font-weight:800;line-height:1;font-size:calc(100cqw / var(--units) * .46)}.tp-clue.k2{font-size:calc(100cqw / var(--units) * .36)}.tp-clue.k3,.tp-clue.k4{font-size:calc(100cqw / var(--units) * .28)}.tp-board .mk-cell.tp-done .tp-clue{opacity:.35}.tp-board .mk-cell.tp-bad .tp-clue{color:var(--danger)}.tp-dot{width:18%;height:18%;border-radius:50%;background:var(--accent)}.tp-board .mk-cell.error.tp-shaded{background:var(--danger)}.tp-board.completed .mk-cell.tp-shaded{background:var(--accent)}.sw-board{--n: 5;display:grid;grid-template-columns:repeat(var(--n),1fr);gap:8px;aspect-ratio:1;padding:10px;border-radius:14px;background:var(--surface);border:1px solid var(--border);touch-action:manipulation;-webkit-user-select:none;user-select:none}.sw-light{border-radius:22%;border:2px solid var(--border);background:var(--surface-2);padding:0;cursor:pointer;transition:background-color .15s,box-shadow .15s,transform .08s}.sw-light:active{transform:scale(.95)}.sw-light.on{background:var(--accent);border-color:var(--accent);box-shadow:0 0 18px var(--accent-strong),inset 0 0 0 3px color-mix(in srgb,white 25%,transparent)}.sw-light.cursor{outline:2px solid var(--text);outline-offset:2px}.sw-light.flash{animation:flash .8s ease 1}.sw-board.completed .sw-light{border-color:var(--border)}.mem-stats strong small{font-size:.8rem;color:var(--muted);font-weight:500}.mines-wrap{container-type:inline-size}.mines{--n: 8;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;gap:2px;padding:2px;border-radius:8px;background:var(--border);-webkit-user-select:none;user-select:none;touch-action:manipulation}.mines-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;border-radius:3px;font-size:calc(100cqw / var(--n) * .55);font-weight:800;font-variant-numeric:tabular-nums;cursor:pointer;line-height:1}.mines-cell.hidden{background:color-mix(in srgb,var(--surface-3),var(--text) 14%);box-shadow:inset 0 2px color-mix(in srgb,var(--text) 10%,transparent),inset 0 -2px color-mix(in srgb,var(--bg) 45%,transparent)}.mines-cell.hidden:hover{background:color-mix(in srgb,var(--surface-3),var(--accent) 22%)}.mines-cell.open{background:var(--bg);color:var(--text);cursor:default}.mines-cell.n1{color:var(--muted)}.mines-cell.n2{color:var(--text)}.mines-cell.n3,.mines-cell.n4,.mines-cell.n5,.mines-cell.n6,.mines-cell.n7,.mines-cell.n8{color:var(--accent)}.mines-cell.boom{background:var(--danger-soft)}.mines-cell.cursor{box-shadow:inset 0 0 0 2px var(--accent)}.mines-cell.error{background:var(--danger-soft)}.mines-cell.flash{animation:flash .8s ease 2}.mines-bomb{width:52%;height:52%;border-radius:50%;background:var(--danger);box-shadow:0 0 0 calc(100cqw / var(--n) * .06) var(--danger-soft)}.mines-flag{width:46%;height:56%;background:var(--accent);clip-path:polygon(14% 0,100% 30%,14% 60%,14% 100%,0 100%,0 0)}.mines-flag.swatch{width:14px;height:18px;display:inline-block}.mines-swatch.open{width:18px;height:18px;border-radius:3px;background:var(--surface);border:1px solid var(--border-strong);display:inline-block}.mines.completed .mines-cell.hidden,.mines.completed .mines-cell.flagged{background:var(--accent-soft)}.mines-left{text-align:center;color:var(--muted);font-size:.9rem;font-variant-numeric:tabular-nums}.bs-wrap{container-type:inline-size}.bs-board{--units: 10;display:grid;width:100%;aspect-ratio:1;-webkit-user-select:none;user-select:none;touch-action:none}.bs-edge{display:grid;place-items:center;min-width:0;min-height:0;font-size:calc(100cqw / var(--units) * .46);font-weight:700;font-variant-numeric:tabular-nums}.bs-count.done{color:var(--muted);opacity:.5}.bs-count.over{color:var(--danger)}.bs-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;background:var(--surface);border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer}.bs-cell.edge-t{border-top:2px solid var(--border-strong)}.bs-cell.edge-l{border-left:2px solid var(--border-strong)}.bs-cell.edge-r{border-right:2px solid var(--border-strong)}.bs-cell.edge-b{border-bottom:2px solid var(--border-strong)}.bs-cell.given{background:var(--surface-2);cursor:default}.bs-cell.cursor{box-shadow:inset 0 0 0 2px var(--accent)}.bs-cell.error{background:var(--danger-soft)}.bs-cell.flash{animation:flash .8s ease 2}.bs-ship{position:absolute;top:14%;right:14%;bottom:14%;left:14%;background:var(--accent);border-radius:4px}.bs-cell.given .bs-ship{background:var(--text)}.bs-ship.single{border-radius:50%}.bs-ship.mid-h{top:14%;right:-1px;bottom:14%;left:-1px;border-radius:0}.bs-ship.mid-v{top:-1px;right:14%;bottom:-1px;left:14%;border-radius:0}.bs-ship.end-l{top:14%;right:-1px;bottom:14%;left:14%;border-radius:999px 0 0 999px}.bs-ship.end-r{top:14%;right:14%;bottom:14%;left:-1px;border-radius:0 999px 999px 0}.bs-ship.end-t{top:14%;right:14%;bottom:-1px;left:14%;border-radius:999px 999px 0 0}.bs-ship.end-b{top:-1px;right:14%;bottom:14%;left:14%;border-radius:0 0 999px 999px}.bs-ship.block{top:16%;right:16%;bottom:16%;left:16%;border-radius:3px}.bs-cell.error .bs-ship{background:var(--danger)}.bs-water{width:55%;height:55%;color:var(--muted);opacity:.65}.bs-water svg{width:100%;height:100%}.bs-cell.error .bs-water{color:var(--danger);opacity:1}.bs-board.completed .bs-ship{background:var(--accent)}.bs-swatch{display:inline-grid;place-items:center;width:22px;height:22px;color:var(--accent)}.bs-swatch.water{color:var(--muted)}.bs-swatch svg{width:100%;height:100%}.bs-fleet{display:flex;flex-wrap:wrap;gap:8px 12px;padding:10px 12px;border-radius:12px;background:var(--surface);border:1px solid var(--border)}.bs-fleet-ship{display:inline-flex;gap:2px}.bs-fleet-ship i{width:14px;height:14px;border-radius:3px;background:var(--surface-3)}.bs-fleet-ship.done i,.mosaic-board .mk-cell.mo-on{background:var(--accent)}.mosaic-board.completed .mk-cell.mo-on{background:var(--text)}.mo-clue{position:relative;z-index:1;font-weight:700;font-size:calc(100cqw / var(--units) * .5);color:var(--text);font-variant-numeric:tabular-nums;line-height:1}.mk-cell.mo-on .mo-clue{color:var(--on-accent)}.mosaic-board.completed .mk-cell.mo-on .mo-clue{color:var(--bg)}.mk-cell.mo-done .mo-clue{opacity:.4}.mk-cell.mo-bad .mo-clue{color:var(--danger)}.mo-dot{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted);opacity:.7}.mo-dot svg{width:70%;height:70%}.mo-swatch{display:block;width:18px;height:18px;border-radius:3px;background:var(--accent)}.mosaic-board.completed .mk-cell{border-color:transparent}.th-piece{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.th-piece line{stroke:var(--surface-3);stroke-width:34;stroke-linecap:round}.th-piece circle{fill:var(--surface-3)}.th-piece.filled line{stroke:var(--accent)}.th-piece.filled circle{fill:var(--accent)}.thermo-board .mk-cell.fixed .th-piece.filled line,.thermo-board .mk-cell.fixed .th-piece.filled circle{opacity:.75}.th-dot{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted)}.th-dot svg{width:70%;height:70%}.th-dot.given,.th-count{color:var(--text)}.th-count.done{color:var(--muted);opacity:.5}.th-count.over{color:var(--danger)}.th-swatch{display:block;width:18px;height:18px;border-radius:50%;background:var(--accent)}.thermo-board.completed .mk-cell{border-color:transparent}.sk-board{--n: 5;position:relative;container-type:inline-size;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;border:2px solid var(--border-strong);border-radius:8px;overflow:hidden;background:var(--surface);touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair}.sk-cell{position:relative;display:grid;place-items:center;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:0;min-height:0}.sk-clue{position:relative;z-index:3;font-size:calc(100cqw / var(--n) * .5);font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;pointer-events:none}.sk-rect,.sk-preview{position:absolute;z-index:2;box-sizing:border-box;border-radius:6px;pointer-events:none;border:3px solid var(--surface);background-clip:padding-box}.sk-rect{box-shadow:inset 0 0 0 2px var(--accent)}.sk-rect.t0{background-color:color-mix(in srgb,var(--accent) 22%,transparent)}.sk-rect.t1{background-color:color-mix(in srgb,var(--accent) 34%,transparent)}.sk-rect.t2{background-color:color-mix(in srgb,var(--accent) 14%,transparent)}.sk-rect.invalid{box-shadow:inset 0 0 0 2px var(--muted);background-color:color-mix(in srgb,var(--muted) 14%,transparent)}.sk-rect.error{box-shadow:inset 0 0 0 2px var(--danger);background-color:var(--danger-soft)}.sk-rect.flash{animation:flash .8s ease 2}.sk-rect.ghost{box-shadow:inset 0 0 0 2px var(--danger);background:transparent}.sk-preview{border:2px dashed var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);display:grid;place-items:end end}.sk-preview span{margin:2px 6px;font-weight:700;font-size:.8rem;color:var(--accent)}.sk-board.completed .sk-rect{box-shadow:inset 0 0 0 2px var(--accent)}.fm-board .cell.fm-r{border-right:2px solid var(--border-strong)}.fm-board .cell.fm-b{border-bottom:2px solid var(--border-strong)}.fm-board .cell.fm-done:not(.selected):not(.error){background:color-mix(in srgb,var(--surface),var(--accent) 12%)}.fm-board .cell.fm-done.peer:not(.selected){background:color-mix(in srgb,var(--surface),var(--accent) 22%)}.nl-wrap{aspect-ratio:1;border:2px solid var(--border-strong);border-radius:8px;overflow:hidden;background:var(--surface)}.nl-board{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none}.nl-cell{fill:transparent;stroke:var(--border);stroke-width:.02}.nl-cell.flash{animation:nlflash .8s ease 2}@keyframes nlflash{50%{fill:var(--accent-strong)}}.nl-path{fill:none;stroke-width:.3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.nl-wrong{stroke:var(--danger);stroke-width:.1;stroke-dasharray:.12 .1;stroke-linecap:round;pointer-events:none}.nl-end{pointer-events:none}.nl-end text{fill:#0b0d12;font-size:.42px;font-weight:800}.nl-wrap.completed .nl-cell{stroke:transparent}.nl-cell.error{fill:var(--danger-soft)}.nl-end.bad circle{stroke:var(--danger);stroke-width:.08}.masyu-wrap{aspect-ratio:1;border-radius:8px;background:var(--surface);border:2px solid var(--border-strong);overflow:hidden}.masyu{width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none;touch-action:none}.masyu-grid line{stroke:var(--border);stroke-width:.02}.masyu-hit{fill:transparent;cursor:pointer}.masyu-line{stroke:var(--text);stroke-width:.12;stroke-linecap:round;pointer-events:none}.masyu-line.error{stroke:var(--danger)}.masyu-x{stroke:var(--muted);stroke-width:.05;stroke-linecap:round;pointer-events:none}.masyu-x.error{stroke:var(--danger)}.masyu-pearl{stroke:var(--text);stroke-width:.05;pointer-events:none}.masyu-pearl.white{fill:#f4f5f8}.masyu-pearl.black{fill:#0b0d12}.masyu-flash{fill:var(--accent-strong);pointer-events:none;animation:masyu-pulse .8s ease 2}@keyframes masyu-pulse{50%{opacity:.2}}.masyu.completed .masyu-line{stroke:var(--accent)}.pp-wrap{aspect-ratio:1;border-radius:8px;background:var(--surface);border:2px solid var(--border-strong);overflow:hidden}.pp{width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none;touch-action:manipulation}.pp-cell{fill:var(--surface-2);cursor:pointer;transition:fill .12s}.pp-cell:hover{fill:var(--surface-3)}.pp-cell.locked{fill:var(--surface-3);stroke:var(--border-strong);stroke-width:.03}.pp-cell.cursor{stroke:var(--accent);stroke-width:.06}.pp-cell.flash{animation:pp-pulse .8s ease 2}@keyframes pp-pulse{50%{fill:var(--accent-strong)}}.pp-tile{pointer-events:none;transition:transform .16s ease;color:var(--muted)}.pp-tile.lit{color:var(--accent)}.pp-tile.error{color:var(--danger)}.pp-tile line{stroke:currentColor;stroke-width:.24;stroke-linecap:round}.pp-end{fill:var(--surface);stroke:currentColor;stroke-width:.08}.pp-hub{fill:currentColor}.pp-source{fill:none;stroke:var(--text);stroke-width:.06}.pp.completed .pp-cell{fill:var(--surface)}.pp-lock-swatch{width:16px;height:16px;border-radius:4px;background:var(--surface-3);border:2px solid var(--border-strong)}.killer-cell .cell-value{position:relative;z-index:1}.killer-cell{--gap: 9%}.killer-outline{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:0 dashed var(--muted)}.killer-outline.t{top:var(--gap);border-top-width:1.5px}.killer-outline.b{bottom:var(--gap);border-bottom-width:1.5px}.killer-outline.l{left:var(--gap);border-left-width:1.5px}.killer-outline.r{right:var(--gap);border-right-width:1.5px}.killer-sum{position:absolute;top:2%;left:4%;z-index:2;padding:0 2px;font-size:calc(100cqw / var(--n) * .22);font-weight:700;line-height:1.1;color:var(--text);background:inherit;border-radius:2px;pointer-events:none}.killer-cell{background-color:var(--surface)}.killer-cell.peer{background-color:var(--surface-2)}.killer-cell.same{background-color:color-mix(in srgb,var(--surface),var(--accent) 16%)}.killer-cell.selected{background-color:color-mix(in srgb,var(--surface),var(--accent) 34%)}.killer-cell.error{background-color:color-mix(in srgb,var(--surface),var(--danger) 18%)}.killer-notes{top:22%;right:10%;bottom:10%;left:10%}.killer-corner{position:absolute;width:var(--gap);height:var(--gap);pointer-events:none;border:0 dashed var(--muted)}.killer-corner.tl{top:0;left:0;border-bottom-width:1.5px;border-right-width:1.5px}.killer-corner.tr{top:0;right:0;border-bottom-width:1.5px;border-left-width:1.5px}.killer-corner.bl{bottom:0;left:0;border-top-width:1.5px;border-right-width:1.5px}.killer-corner.br{bottom:0;right:0;border-top-width:1.5px;border-left-width:1.5px}.kakuro-board{--n: 8;container-type:inline-size;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;gap:1px;padding:1px;background:var(--border-strong);border-radius:8px;overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:manipulation}.kakuro-board .cell{border:none;font-size:calc(100cqw / var(--n) * .56);background:var(--surface-2)}.kakuro-board .cell.peer{background:color-mix(in srgb,var(--surface-2),var(--accent) 10%)}.kakuro-board .cell.same{background:color-mix(in srgb,var(--surface-2),var(--accent) 18%)}.kakuro-board .cell.selected{background:color-mix(in srgb,var(--surface-2),var(--accent) 36%)}.kakuro-board .cell.error{background:color-mix(in srgb,var(--surface-2),var(--danger) 20%)}.kakuro-black{position:relative;min-width:0;min-height:0;background:repeating-linear-gradient(-45deg,var(--bg) 0 4px,var(--border) 4px 5px)}.kakuro-black.clue{background:var(--bg)}.kakuro-diag{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top right,transparent calc(50% - .6px),var(--border-strong) calc(50% - .6px),var(--border-strong) calc(50% + .6px),transparent calc(50% + .6px))}.kakuro-sum{position:absolute;font-size:calc(100cqw / var(--n) * .3);font-weight:700;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}.kakuro-sum.across{top:10%;right:10%}.kakuro-sum.down{bottom:10%;left:10%}.kakuro-sum.active{color:var(--accent)}.kakuro-sum.done{color:var(--muted);opacity:.55}.kakuro-sum.bad{color:var(--danger)}.hitori-board{--n: 6;container-type:inline-size;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;gap:3px;padding:3px;background:var(--surface-2);border:2px solid var(--border-strong);border-radius:8px;-webkit-user-select:none;user-select:none;touch-action:none}.hitori-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:calc(100cqw / var(--n) * .48);font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color .1s}.hitori-cell.peer{background:var(--surface-3)}.hitori-cell.same span{color:var(--accent)}.hitori-cell.cursor{box-shadow:inset 0 0 0 2px var(--accent)}.hitori-cell.shaded{background:var(--text);border-color:var(--text)}.hitori-cell.shaded span{color:var(--bg);opacity:.45}.hitori-cell.circled:after{content:"";position:absolute;top:12%;right:12%;bottom:12%;left:12%;border:2px solid var(--accent);border-radius:50%}.hitori-cell.error.shaded{background:var(--danger);border-color:var(--danger)}.hitori-cell.error.circled:after{border-color:var(--danger)}.hitori-cell.flash{animation:flash .8s ease 2}.hitori-board.completed .hitori-cell.circled:after{border-color:transparent}.hitori-board.completed .hitori-cell.shaded{background:var(--accent);border-color:var(--accent)}.binairo-board .mk-cell.fixed{background:var(--surface-2)}.binairo-sym{width:62%;height:62%;border-radius:50%;box-sizing:border-box}.binairo-sym.zero{border:calc(100cqw / var(--units) * .075) solid var(--user)}.binairo-sym.one{background:var(--user)}.binairo-board .fixed .binairo-sym.zero{border-color:var(--given)}.binairo-board .fixed .binairo-sym.one{background:var(--given)}.binairo-board .error .binairo-sym.zero{border-color:var(--danger)}.binairo-board .error .binairo-sym.one{background:var(--danger)}.binairo-board.completed .binairo-sym.zero{border-color:var(--accent)}.binairo-board.completed .binairo-sym.one{background:var(--accent)}.starbattle-board .mk-cell.sb-r{border-right:3px solid var(--border-strong)}.starbattle-board .mk-cell.sb-b{border-bottom:3px solid var(--border-strong)}.starbattle-board .mk-cell.tint1{background:var(--surface-2)}.starbattle-board .mk-cell.tint2{background:color-mix(in srgb,var(--surface),var(--accent) 9%)}.sb-mark{width:70%;height:70%;display:grid;place-items:center}.sb-mark svg{width:100%;height:100%}.sb-mark.star{color:var(--accent)}.sb-mark.dot{color:var(--muted)}.starbattle-board .mk-cell.error .sb-mark{color:var(--danger)}.starbattle-board.completed .sb-mark.dot{opacity:.35}.tents-board{--tn-tree: #7da35f;--tn-grass: #93a07a}:root[data-theme=light] .tents-board{--tn-tree: #3f6b2f;--tn-grass: #7a8862}.tents-board .mk-cell.fixed{background:var(--surface)}.tn-mark{width:72%;height:72%;display:grid;place-items:center}.tn-mark svg{width:100%;height:100%}.tn-mark.tree{color:var(--tn-tree)}.tn-mark.tent{color:var(--accent)}.tn-mark.grass{width:55%;height:55%;color:var(--tn-grass);opacity:.55}.tents-board .mk-cell.error .tn-mark{color:var(--danger);opacity:1}.tn-count.done{color:var(--muted);opacity:.5}.tn-count.over{color:var(--danger)}.tents-board.completed .tn-mark.grass{opacity:.25}.lightup-wrap{container-type:inline-size}.lightup{--n: 7;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;border:2px solid var(--border-strong);border-radius:8px;overflow:hidden;background:var(--surface);-webkit-user-select:none;user-select:none;touch-action:manipulation}.lightup-cell{position:relative;display:grid;place-items:center;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:0;min-height:0;cursor:pointer;font-size:calc(100cqw / var(--n) * .5);font-weight:700;transition:background-color .12s}.lightup-cell.edge-r{border-right:none}.lightup-cell.edge-b{border-bottom:none}.lightup-cell.lit{background:var(--accent-soft)}.lightup-cell.black{background:var(--border-strong);color:var(--bg);cursor:default}.lightup-cell.black.ok{color:var(--surface-3)}.lightup-cell.black.bad{color:var(--danger)}.lightup-cell.cursor{box-shadow:inset 0 0 0 2px var(--accent)}.lightup-bulb{width:62%;height:62%;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--surface),var(--accent) 55%);box-shadow:0 0 calc(100cqw / var(--n) * .25) var(--accent-strong)}.lightup-cell.error .lightup-bulb{background:var(--danger);box-shadow:none}.lightup-dot{width:16%;height:16%;border-radius:50%;background:var(--muted)}.lightup-cell.error .lightup-dot{background:var(--danger)}.lightup-cell.flash{animation:flash .8s ease 2}.lightup.completed .lightup-cell.lit{background:var(--accent-strong)}.nurikabe-wrap{container-type:inline-size}.nurikabe{--n: 7;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;border:2px solid var(--border-strong);border-radius:8px;overflow:hidden;background:var(--surface);-webkit-user-select:none;user-select:none;touch-action:none}.nurikabe-cell{position:relative;display:grid;place-items:center;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:0;min-height:0;cursor:pointer;font-size:calc(100cqw / var(--n) * .5);font-weight:700;color:var(--text);transition:background-color .1s}.nurikabe-cell.edge-r{border-right:none}.nurikabe-cell.edge-b{border-bottom:none}.nurikabe-cell.clue{cursor:default}.nurikabe-cell.clue.done{color:var(--muted)}.nurikabe-cell.sea{background:var(--accent);border-color:color-mix(in srgb,var(--accent),var(--bg) 25%)}.nurikabe-cell.cursor{box-shadow:inset 0 0 0 2px var(--accent)}.nurikabe-cell.sea.cursor{box-shadow:inset 0 0 0 2px var(--text)}.nurikabe-dot{width:18%;height:18%;border-radius:50%;background:var(--muted)}.nurikabe-cell.error.sea{background:var(--danger)}.nurikabe-cell.error .nurikabe-dot,.nurikabe-cell.clue.bad{color:var(--danger);background:var(--danger)}.nurikabe-cell.clue.bad{background:var(--danger-soft)}.nurikabe-cell.flash{animation:flash .8s ease 2}.slither-wrap{aspect-ratio:1;border-radius:8px;background:var(--surface);border:1px solid var(--border)}.slither{width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none;touch-action:none}.slither-hit{fill:transparent;cursor:pointer}.slither-dot{fill:var(--muted)}.slither-clue{fill:var(--text);font-size:.55px;font-weight:700;pointer-events:none}.slither-clue.ok{fill:var(--muted);opacity:.6}.slither-clue.bad{fill:var(--danger)}.slither-line{stroke:var(--text);stroke-width:.11;stroke-linecap:round;pointer-events:none}.slither-line.error{stroke:var(--danger)}.slither-x{stroke:var(--muted);stroke-width:.05;stroke-linecap:round;pointer-events:none}.slither-x.error{stroke:var(--danger)}.slither-flash{fill:var(--accent-strong);pointer-events:none;animation:slither-pulse .8s ease 2}@keyframes slither-pulse{50%{opacity:.2}}.slither.completed .slither-line{stroke:var(--accent)}:root,:root[data-theme=dark]{color-scheme:dark;--bg: #0f1115;--surface: #171a21;--surface-2: #1f232c;--surface-3: #272c37;--border: #2c313d;--border-strong: #5a6275;--text: #e6e8ee;--muted: #8f98a8;--accent: #7c9cff;--accent-soft: rgba(124, 156, 255, .16);--accent-strong: rgba(124, 156, 255, .34);--on-accent: #0b0d12;--given: #e6e8ee;--user: #8fb0ff;--danger: #f87171;--danger-soft: rgba(248, 113, 113, .18);--success: #4ade80;--shadow: 0 10px 30px rgba(0, 0, 0, .45)}:root[data-theme=light]{color-scheme:light;--bg: #f5f6fa;--surface: #ffffff;--surface-2: #eef0f5;--surface-3: #e3e6ee;--border: #d9dde6;--border-strong: #3a4150;--text: #1a1d24;--muted: #646d7e;--accent: #3d63dd;--accent-soft: rgba(61, 99, 221, .1);--accent-strong: rgba(61, 99, 221, .24);--on-accent: #ffffff;--given: #1a1d24;--user: #2f55cc;--danger: #d93d3d;--danger-soft: rgba(217, 61, 61, .12);--success: #1f9d55;--shadow: 0 10px 30px rgba(20, 30, 60, .15)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body{min-height:100dvh}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.45}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.page{min-height:100dvh;display:flex;flex-direction:column}.page.center{align-items:center;justify-content:center}.container{width:100%;max-width:1000px;margin:0 auto;padding:8px 16px 48px}.container.narrow{max-width:640px}.muted{color:var(--muted)}.danger-text{color:var(--danger)}.accent-text{color:var(--accent);font-weight:600}.tagline{color:var(--muted);margin:4px 0 8px}.section-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:24px 0 10px}.header{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:max(8px,env(safe-area-inset-top)) 12px 8px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.header-title{margin:0;font-size:1.05rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-side{display:flex;align-items:center;gap:4px}.header-right{justify-content:flex-end}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:10px;border:none;background:transparent;color:var(--muted)}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.small{width:28px;height:28px}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);font-weight:600}.btn:hover{background:var(--surface-3)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{color:var(--danger);border-color:var(--danger-soft);background:var(--danger-soft)}.btn.big{width:100%;padding:14px;font-size:1.05rem;margin-top:12px}.badge{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 6px;border-radius:6px;background:var(--surface-3);color:var(--muted);margin-left:8px;vertical-align:middle}.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.game-card{display:flex;gap:14px;align-items:center;padding:14px;transition:transform .12s ease,border-color .12s ease}a.game-card:hover{border-color:var(--accent);transform:translateY(-1px)}.game-card.disabled{opacity:.55}.card-glyph{flex:none;width:52px;height:52px;display:grid;place-items:center;border-radius:12px;background:var(--accent-soft);color:var(--accent);font-size:1.4rem;font-weight:700}.game-card.disabled .card-glyph{background:var(--surface-2);color:var(--muted)}.card-title{font-weight:650}.card-desc{color:var(--muted);font-size:.85rem;margin-top:2px;line-height:1.35}.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.level-card{padding:14px;display:flex;flex-direction:column;gap:4px}.level-card:hover{border-color:var(--accent)}.level-name{font-weight:650;font-size:1.05rem}.level-meta{color:var(--muted);font-size:.8rem}.progress{height:4px;border-radius:2px;background:var(--surface-3);margin-top:8px;overflow:hidden}.progress-bar{height:100%;background:var(--accent)}.puzzle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:8px}.puzzle-num{aspect-ratio:1;display:grid;place-items:center;border-radius:10px;background:var(--surface);border:1px solid var(--border);font-weight:600;font-variant-numeric:tabular-nums}.puzzle-num:hover{border-color:var(--accent)}.puzzle-num.solved{background:var(--accent-soft);color:var(--accent);border-color:transparent}.puzzle-num.saved{border-color:var(--accent);border-style:dashed}.play{flex:1;width:100%;max-width:1000px;margin:0 auto;padding:12px 16px 24px;display:flex;flex-direction:column;align-items:center;gap:16px}.play-board,.play-side{width:100%;max-width:min(560px,calc(100dvh - 300px));min-width:min(100%,300px)}@media (min-width: 900px){.play{flex-direction:row;align-items:flex-start;justify-content:center;gap:32px;padding-top:24px}.play-board{max-width:min(600px,calc(100dvh - 140px))}.play-side{max-width:340px;padding-top:36px}}.statusbar{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:.85rem;margin-bottom:8px;min-height:28px}.timer{display:inline-flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums}.board-wrap{position:relative}.board{--n: 9;container-type:inline-size;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;border:2px solid var(--border-strong);border-radius:8px;overflow:hidden;background:var(--surface);-webkit-user-select:none;user-select:none;touch-action:manipulation}.cell{position:relative;display:grid;place-items:center;border-right:1px solid var(--border);border-bottom:1px solid var(--border);font-size:calc(100cqw / var(--n) * .56);font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color .08s}.cell.edge-r{border-right:none}.cell.edge-b{border-bottom:none}.cell.box-r{border-right:2px solid var(--border-strong)}.cell.box-b{border-bottom:2px solid var(--border-strong)}.cell.given{color:var(--given);font-weight:650}.cell.user{color:var(--user);font-weight:500}.cell.peer{background:var(--surface-2)}.cell.same{background:var(--accent-soft)}.cell.selected{background:var(--accent-strong)}.cell.error{color:var(--danger);background:var(--danger-soft)}.cell.selected.error{background:color-mix(in srgb,var(--danger-soft),var(--accent-strong))}.cell.flash{animation:flash .8s ease 2}@keyframes flash{50%{box-shadow:inset 0 0 0 3px var(--accent)}}.notes{position:absolute;top:4%;right:4%;bottom:4%;left:4%;display:grid;font-size:calc(100cqw / var(--n) * .22);color:var(--muted);line-height:1}.notes span{display:grid;place-items:center}.notes .note-hl{color:var(--accent);font-weight:700}.pause-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--surface);border:2px solid var(--border-strong);border-radius:8px}.pause-title{font-size:1.4rem;font-weight:650}.controls{display:flex;flex-direction:column;gap:12px}.tools{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.tool{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:12px;border:1px solid transparent;background:transparent;color:var(--muted);font-size:.75rem}.tool:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.tool.active{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.tool-state{font-style:normal;font-weight:700}.numpad{--cols: 9;display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:6px}@media (min-width: 900px){.numpad{grid-template-columns:repeat(min(var(--cols),3),1fr)}.num{aspect-ratio:1.3}}.num{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 0 6px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--user)}.num:hover{background:var(--surface-2)}.num:active{transform:scale(.96)}.num-digit{font-size:1.6rem;font-weight:600;line-height:1}.num-left{font-size:.65rem;color:var(--muted);min-height:1em;margin-top:2px}.num.done{opacity:.3}.toast{margin-top:12px;padding:12px 14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);font-size:.9rem;line-height:1.4;opacity:0;transform:translateY(6px);transition:opacity .2s,transform .2s;pointer-events:none;min-height:1em}.toast.show{opacity:1;transform:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:16px;background:#0000008c;animation:fade .2s ease}.modal{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:24px;box-shadow:var(--shadow);animation:pop .25s ease}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:scale(.94)}}.win{text-align:center}.win h2{margin:4px 0}.win-icon{font-size:2.6rem}.win-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.win-stats div{display:flex;flex-direction:column;gap:2px;padding:10px;border-radius:10px;background:var(--surface-2)}.win-stats span{font-size:.75rem;color:var(--muted)}.win-stats strong{font-size:1.2rem;font-variant-numeric:tabular-nums}.win-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.settings-card{padding:4px 16px}.settings-card>.btn,.settings-card>p{margin:12px 0}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--border)}.setting-row:last-child{border-bottom:none}.setting-label{font-weight:550}.setting-desc{color:var(--muted);font-size:.8rem;margin-top:2px;line-height:1.4}.setting-control{flex:none}.select{padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);font:inherit}.segmented{display:inline-flex;padding:3px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border)}.segmented button{border:none;background:transparent;padding:6px 12px;border-radius:7px;color:var(--muted);font-size:.85rem}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #00000040}.switch{position:relative;width:44px;height:26px;border-radius:13px;border:none;background:var(--surface-3);transition:background .15s}.switch.on{background:var(--accent)}.switch-thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .15s}.switch.on .switch-thumb{transform:translate(18px)}@media (max-width: 420px){.setting-row{flex-wrap:wrap}.num-digit{font-size:1.35rem}}.board.latin .cell.cage-r{border-right:2px solid var(--border-strong)}.board.latin .cell.cage-b{border-bottom:2px solid var(--border-strong)}.cage-label{position:absolute;top:3%;left:6%;font-size:calc(100cqw / var(--n) * .2);font-weight:700;color:var(--text);line-height:1;pointer-events:none;white-space:nowrap}.cell.has-label .notes{top:26%;right:4%;bottom:4%;left:4%}.board.futoshiki{gap:calc(100cqw / var(--n) * .16);padding:calc(100cqw / var(--n) * .08);background:var(--surface-2)}.board.futoshiki .cell{border:1px solid var(--border);border-radius:6px;background:var(--surface)}.board.futoshiki .cell.peer{background:var(--surface-3)}.board.futoshiki .cell.same{background:color-mix(in srgb,var(--surface),var(--accent) 16%)}.board.futoshiki .cell.selected{background:color-mix(in srgb,var(--surface),var(--accent) 34%)}.board.futoshiki .cell.error{background:color-mix(in srgb,var(--surface),var(--danger) 18%)}.sign{position:absolute;z-index:2;display:grid;place-items:center;color:var(--accent);font-weight:800;font-size:calc(100cqw / var(--n) * .26);line-height:1;pointer-events:none}.sign-h{left:100%;top:50%;width:calc(100cqw / var(--n) * .16 + 2px);transform:translateY(-50%)}.sign-v{top:100%;left:50%;height:calc(100cqw / var(--n) * .16 + 2px);transform:translate(-50%)}.edge-frame{--n: 4;container-type:inline-size;display:grid;grid-template-columns:repeat(calc(var(--n) + 2),minmax(0,1fr));grid-template-rows:repeat(calc(var(--n) + 2),minmax(0,1fr));aspect-ratio:1}.edge-board{min-width:0}.edge-board .board .cell{font-size:calc(100cqw / var(--n) * .5)}.edge-clue{display:grid;place-items:center;font-size:calc(100cqw / (var(--n) + 2) * .42);font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.edge-clue.ok{color:var(--success)}button.edge-clue{border:none;background:none;padding:0;border-radius:50%;cursor:pointer}button.edge-clue:hover{background:var(--surface-2)}.edge-clue.checked{opacity:.35;text-decoration:line-through;text-decoration-thickness:2px}.edge-clue.bad{color:var(--danger)}.tools.three{grid-template-columns:repeat(3,1fr)}.tools.five{grid-template-columns:repeat(5,1fr);gap:4px}.help-text{color:var(--muted);font-size:.8rem;line-height:1.45;margin:4px 2px 0}.mode-toggle{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mode-toggle button{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-weight:600}.mode-toggle button.active{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.mode-swatch{width:20px;height:20px;border-radius:4px;display:grid;place-items:center;font-size:.85rem}.mode-swatch.fill{background:var(--text)}.mode-swatch.cross{border:1px solid var(--border-strong);color:var(--muted)}@media (min-width: 900px){.play-board.wide{max-width:min(720px,calc(100dvh - 140px))}}.nono-wrap{container-type:inline-size}.nono{--units: 10;display:grid;width:100%;-webkit-user-select:none;user-select:none;touch-action:none;background:var(--bg)}.nono-clue{display:grid;place-items:center;font-size:calc(100cqw / var(--units) * .5);font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);line-height:1;min-width:0;min-height:0}.nono-clue.active{background:var(--surface-2)}.nono-clue.done{color:var(--muted);opacity:.45}.nono-clue.bad{color:var(--danger);opacity:1}.nono-cell{position:relative;background:var(--surface);border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:0;min-height:0;cursor:pointer}.nono-cell.sep-r{border-right:2px solid var(--border-strong)}.nono-cell.sep-b{border-bottom:2px solid var(--border-strong)}.nono-cell.line{background:var(--surface-2)}.nono-cell.cursor{box-shadow:inset 0 0 0 2px var(--accent)}.nono-cell.filled{background:var(--text)}.nono-cell.crossed:after{content:"✕";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:calc(100cqw / var(--units) * .5);color:var(--muted);opacity:.7}.nono-cell.error.filled{background:var(--danger)}.nono-cell.error.crossed:after{color:var(--danger);opacity:1}.nono-cell.flash{animation:flash .8s ease 2}.nono.completed .nono-cell{border-color:transparent}.nono.completed .nono-cell.crossed:after{content:none}.nono.completed .nono-cell.filled{background:var(--accent)}.nono-corner{min-width:0;min-height:0}.bridges-wrap{aspect-ratio:1;border-radius:8px;background:var(--surface);border:1px solid var(--border);padding:2%}.bridges{width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none;touch-action:none}.b-dots circle{fill:var(--border)}.b-hits line{stroke:transparent;stroke-width:.55;cursor:pointer}.b-bridge line{stroke:var(--text);stroke-width:.07;stroke-linecap:round;pointer-events:none}.b-bridge.error line{stroke:var(--danger)}.b-bridge.flash line{stroke:var(--accent);animation:bflash .7s ease 2}@keyframes bflash{50%{stroke-width:.16}}.b-island{cursor:pointer}.b-island circle{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:.05;transition:fill .15s}.b-island text{fill:var(--text);font-size:.42px;font-weight:700;pointer-events:none}.b-island.done circle{fill:var(--accent-soft);stroke:var(--accent)}.b-island.done text{fill:var(--accent)}.b-island.over circle{fill:var(--danger-soft);stroke:var(--danger)}.b-island.over text{fill:var(--danger)}.b-island.selected circle{stroke:var(--accent);stroke-width:.1}.bridges.completed .b-bridge line{stroke:var(--accent)}.continue-card{display:flex;align-items:center;gap:14px;padding:14px;margin-top:12px}.continue-card:hover{border-color:var(--accent)}.continue-card .card-text{flex:1;min-width:0}.continue-kicker{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.continue-play{flex:none;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:var(--on-accent)}.hub-continue{margin-bottom:8px}.hub-continue>span{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}.hub-continue small{font-size:.78rem;font-weight:500;opacity:.85}.level-card.last{border-color:var(--accent)}.level-open{font-size:.78rem;font-weight:600;color:var(--accent)}.daily-banner{display:flex;align-items:center;gap:14px;padding:14px;margin-top:12px;border-color:var(--accent);background:linear-gradient(135deg,var(--accent-soft),transparent 70%),var(--surface)}.daily-banner:hover{transform:translateY(-1px)}.daily-banner .card-text{flex:1;min-width:0}.daily-banner-icon{flex:none;width:52px;height:52px;display:grid;place-items:center;border-radius:12px;background:var(--accent);color:var(--on-accent)}.streak-badge{flex:none;display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}.streak-badge.active{color:#ff9f43;background:#ff9f4324}.daily-date{text-transform:capitalize}.streak-row,.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.stat-grid{grid-template-columns:repeat(2,1fr)}@media (min-width: 560px){.stat-grid{grid-template-columns:repeat(4,1fr)}}.stat-tile{padding:12px 14px;display:flex;flex-direction:column;gap:4px}.stat-label{font-size:.75rem;color:var(--muted)}.stat-value{font-size:1.5rem;font-variant-numeric:tabular-nums;white-space:nowrap}.flame{filter:grayscale(1);opacity:.5}.flame.lit{filter:none;opacity:1}.daily-desc{font-size:.85rem;line-height:1.45}.daily-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}.daily-item{display:flex;align-items:center;gap:14px;padding:12px 14px}.daily-item .card-text{flex:1}.daily-item:hover{border-color:var(--accent)}.daily-status{font-weight:650;color:var(--accent);font-size:.9rem}.daily-status.done{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--accent);color:var(--on-accent)}.daily-item.solved .card-glyph{background:var(--accent);color:var(--on-accent)}.streak-text{color:#ff9f43;font-weight:700}.howto h2{margin:8px 0 12px;font-size:1.2rem}.howto-glyph{width:48px;height:48px;display:grid;place-items:center;border-radius:12px;background:var(--accent-soft);color:var(--accent);font-size:1.4rem;font-weight:700}.howto ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;line-height:1.45}.howto-tip{margin:14px 0 4px;padding:10px 12px;border-radius:10px;background:var(--surface-2);font-size:.9rem;line-height:1.45}.howto-link{margin-top:24px}.chart-card{padding:16px 14px 10px}.activity{margin:0}.activity-plot{position:relative;display:grid;grid-template-columns:repeat(30,1fr);gap:2px;align-items:end;height:120px;padding-top:14px;border-bottom:1px solid var(--border);background:linear-gradient(to top,transparent calc(50% - .5px),var(--border) calc(50% - .5px),var(--border) calc(50% + .5px),transparent calc(50% + .5px)) 0 14px / 100% calc(100% - 14px) no-repeat}.activity-max{position:absolute;top:0;left:0;font-size:.7rem;color:var(--muted);line-height:1}.activity-col{position:relative;height:100%;display:flex;align-items:flex-end;outline:none;cursor:default}.activity-col.hover{background:var(--surface-2)}.activity-bar{width:100%;background:var(--accent);border-radius:4px 4px 0 0;min-height:0}.activity-col:focus-visible .activity-bar,.activity-col.hover .activity-bar{filter:brightness(1.15)}.activity-tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);z-index:3;display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:8px;background:var(--surface-3);border:1px solid var(--border);box-shadow:var(--shadow);font-size:.75rem;white-space:nowrap;pointer-events:none}.activity-tip.left{left:auto;right:0;transform:none}.activity-tip span{color:var(--muted)}.activity-axis{display:flex;justify-content:space-between;font-size:.7rem;color:var(--muted);margin-top:6px}.game-stats{padding:12px 14px;margin-bottom:10px}.game-stats-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.card-glyph.small{width:32px;height:32px;font-size:.95rem;border-radius:8px}.game-stats-summary{margin-left:auto;font-size:.8rem;color:var(--muted)}.level-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:.85rem;font-variant-numeric:tabular-nums}.level-table th{text-align:left;font-weight:600;color:var(--muted);font-size:.75rem;padding:4px 0;border-bottom:1px solid var(--border)}.level-table td{padding:6px 0;border-bottom:1px solid var(--border)}.level-table tr:last-child td{border-bottom:none}.level-table th:not(:first-child),.level-table td:not(:first-child){text-align:right}[data-cat]{--accent-soft: color-mix(in srgb, var(--accent) 16%, transparent);--accent-strong: color-mix(in srgb, var(--accent) 34%, transparent);--on-accent: #0b0d12}[data-cat=numbers]{--accent: #5d97f7}[data-cat=shading]{--accent: #16dab9}[data-cat=placement]{--accent: #d3a721}[data-cat=loops]{--accent: #ddabfc}[data-cat=regions]{--accent: #df61a3}:root[data-theme=light] [data-cat]{--accent-soft: color-mix(in srgb, var(--accent) 11%, transparent);--accent-strong: color-mix(in srgb, var(--accent) 26%, transparent);--on-accent: #ffffff}:root[data-theme=light] [data-cat=numbers]{--accent: #2239be}:root[data-theme=light] [data-cat=shading]{--accent: #15958e}:root[data-theme=light] [data-cat=placement]{--accent: #7f5005}:root[data-theme=light] [data-cat=loops]{--accent: #9c6af6}:root[data-theme=light] [data-cat=regions]{--accent: #8e116b}.cat-title{display:flex;align-items:center;gap:8px;color:var(--accent)}.cat-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.daily-date-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.small-btn{padding:6px 12px;font-size:.85rem}.cal{padding:10px 12px 14px}.cal-head{display:flex;align-items:center;justify-content:space-between}.cal-title{text-transform:capitalize}.cal-next svg{transform:scaleX(-1)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:6px}.cal-wd{text-align:center;font-size:.7rem;color:var(--muted);text-transform:uppercase;padding-bottom:2px}.cal-day{--fill: 0%;aspect-ratio:1;border-radius:10px;border:1px solid transparent;font-size:.85rem;font-variant-numeric:tabular-nums;background:linear-gradient(to top,var(--accent-soft) var(--fill),var(--surface-2) var(--fill))}.cal-day{position:relative}.cal-day.some:after{content:"";position:absolute;left:50%;bottom:12%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:var(--accent)}.cal-day.full{background:var(--accent);color:var(--on-accent);font-weight:700}.cal-day.today{border-color:var(--accent)}.cal-day.selected{outline:2px solid var(--text);outline-offset:1px}.cal-day:disabled{background:transparent;color:var(--muted);opacity:.4}.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}.ach{display:flex;gap:12px;align-items:center;padding:10px 12px}.ach:not(.done) .ach-icon{filter:grayscale(1);opacity:.45}.ach.done{border-color:var(--accent)}.ach-icon{font-size:1.6rem;line-height:1}.ach-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.ach-text span{font-size:.78rem;color:var(--muted);line-height:1.35}.ach-text .progress{margin-top:6px}.win-ach{margin:6px 0;padding:8px 10px;border-radius:10px;background:var(--accent-soft)}
