:root{--font-ui:"Segoe UI", Roboto, system-ui, -apple-system, sans-serif;--hue-0:214 69 60;--hue-1:235 140 50;--hue-2:226 199 59;--hue-3:96 180 90;--hue-4:64 190 180;--hue-5:86 140 230;--hue-6:150 100 220;--hue-7:225 120 180;--hue-8:150 150 150;--bg:#0a0d10;--panel:#1d1a16;--panel-2:#262119;--line:#3a342c;--rule:#4a4238;--line-strong:#b9ab93;--cell:#191612;--text:#efe7d8;--dim:#9b917f;--accent:#8fb4d6;--accent-dim:#33465a;--cage:#6d6456;--sum:#d7cbb2;--mark:#9b917f;--single:#7fbf8e;--single-bg:#7fbf8e21;--tallied:#b27ce04d;--spotlit:#d6b25e4d;--error:#e2564b;--clash:#a8564a;--sel:#d6b25e42;--peer:#ffffff0b;--cage-peer:#d6b25e12;--same:#8fb4d621;--shadow:#0000008c;--panel-rgb:29 26 22;--panel-2-rgb:38 33 25;--inc-rgb:47 107 63;--exc-rgb:168 55 45;--k-digit:#232019;--k-digit-line:#4a4236;--k-digit-text:#efe7d8;--k-edit:#1e1b16;--k-edit-line:#3a342c;--k-edit-text:#cabfa9;--k-aid:#1e1b16;--k-aid-line:#3a342c;--k-aid-text:#8fb4d6;--k-session:#1e1b16;--k-session-line:#3a342c;--k-session-text:#d99a86;--k-tally:#2a2034;--k-tally-line:#6b4d85;--k-tally-text:#d9c2ee;--diag-bg:#d6b25e3d;--window-line:#8fb4d659;--belt-line:#efe7d880;--dial-hi:#332c22;--dial-lo:#15120e;--dial-gloss:#ffffff12;--dial-shadow:#00000073;--dial-rib:#efe7d833;--clr-alpha:.36;--reg-alpha:.15;--win-alpha:.2}:root[data-theme=day]{--bg:#dfe4e9;--panel:#f6f1e6;--panel-2:#ece5d6;--line:#cdc3b1;--rule:#a89e8d;--line-strong:#16120c;--cell:#faf6ec;--text:#16120c;--dim:#6b6357;--accent:#2f4f6f;--accent-dim:#b9cad9;--cage:#8a8072;--sum:#2f2921;--mark:#7a7264;--single:#3f6b46;--single-bg:#3f6b461f;--tallied:#7c46b033;--spotlit:#be963c6b;--error:#a8221c;--clash:#b8604f;--sel:#be963c52;--peer:#16120c0b;--cage-peer:#6b635714;--same:#2f4f6f1a;--shadow:#3c322338;--panel-rgb:246 241 230;--panel-2-rgb:236 229 214;--inc-rgb:47 107 63;--exc-rgb:168 34 28;--k-digit:#fffdf8;--k-digit-line:#cdc3b1;--k-digit-text:#16120c;--k-edit:#ece5d6;--k-edit-line:#cdc3b1;--k-edit-text:#4a443a;--k-aid:#f6f1e6;--k-aid-line:#cdc3b1;--k-aid-text:#2f4f6f;--k-session:#f6f1e6;--k-session-line:#cdc3b1;--k-session-text:#8a4a3a;--k-tally:#f3ecf9;--k-tally-line:#cdb4e0;--k-tally-text:#6b3f96;--diag-bg:#be963c42;--window-line:#2f4f6f4d;--belt-line:#17273d73;--dial-hi:#fffdf6;--dial-lo:#d5ccb7;--dial-gloss:#ffffff8c;--dial-shadow:#3c32234d;--dial-rib:#16120c33;--clr-alpha:.3;--reg-alpha:.16;--win-alpha:.2}:root[data-theme=contrast]{--bg:#000;--panel:#000;--panel-2:#101014;--line:#8a8a8a;--rule:#8a8a8a;--line-strong:#fff;--cell:#000;--text:#fff;--dim:#c9c9c9;--accent:#56b4e9;--accent-dim:#0072b2;--cage:#fff;--sum:#f0e442;--mark:#56b4e9;--single:#33e0b0;--single-bg:#009e7338;--tallied:#cc79a761;--spotlit:#56b4e959;--error:#d55e00;--clash:#e69f00;--sel:#56b4e957;--peer:#ffffff1a;--cage-peer:#f0e4421f;--same:#56b4e92e;--shadow:#000000e6;--panel-rgb:0 0 0;--panel-2-rgb:16 16 20;--inc-rgb:0 114 178;--exc-rgb:213 94 0;--k-digit:#002218;--k-digit-line:#33e0b0;--k-digit-text:#fff;--k-edit:#262100;--k-edit-line:#f0e442;--k-edit-text:#fff;--k-aid:#001d2e;--k-aid-line:#56b4e9;--k-aid-text:#fff;--k-session:#2b1000;--k-session-line:#e69f00;--k-session-text:#fff;--k-tally:#26001d;--k-tally-line:#cc79a7;--k-tally-text:#fff;--diag-bg:#f0e4424d;--window-line:#f0e442;--belt-line:#fff;--dial-hi:#2b2b33;--dial-lo:#000;--dial-gloss:#ffffff17;--dial-shadow:#000c;--dial-rib:#ffffff52;--clr-alpha:.45;--reg-alpha:.3;--win-alpha:.34}:root[data-theme=contrast] .diag-cage,:root[data-theme=contrast] .window-cage{stroke-width:.07px}:root[data-theme=contrast] .btn{border-width:2px}:root[data-theme=contrast] .cell.error .big{text-decoration:line-through;text-decoration-thickness:2px}:root[data-theme=contrast] .cell.single{box-shadow:inset 0 0 0 2px var(--single)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);-webkit-text-size-adjust:100%;overscroll-behavior:none}#app{justify-content:center;min-height:100%;display:flex}.screen{flex-direction:column;gap:8px;width:100%;max-width:520px;padding:8px 8px 16px;display:flex}.titlebar{background:var(--panel);border:1px solid var(--line);border-radius:10px;align-items:center;gap:8px;min-height:42px;padding:6px 8px;display:flex}.titlebar .id{letter-spacing:.5px;color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}.titlebar .timer{border-radius:7px;flex:none;min-width:56px;padding:4px 8px;font-size:14px}.titlebar .candidates{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--mark);font-variant-numeric:tabular-nums;gap:5px;min-height:18px;margin-left:auto;font-size:15px;display:flex;overflow:hidden}.titlebar .candidates b{color:var(--accent);font-weight:700}.titlebar .candidates .cands{color:var(--mark);letter-spacing:.5px}.iconbtn{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:7px;flex:none;place-items:center;gap:3px;width:32px;height:28px;padding:5px 6px;display:grid}.iconbtn i{background:var(--text);width:100%;height:2px;display:block}.board{aspect-ratio:1;border:2px solid var(--line-strong);background:var(--cell);width:100%;box-shadow:0 6px 22px var(--shadow);touch-action:none;-webkit-user-select:none;user-select:none;grid-template-rows:repeat(9,minmax(0,1fr));grid-template-columns:repeat(9,minmax(0,1fr));display:grid;position:relative}.cell{border-top:1px solid var(--rule);border-left:1px solid var(--rule);background:var(--cell);cursor:pointer;place-items:center;min-width:0;min-height:0;font-size:min(6.4vw,33px);display:grid;position:relative;overflow:hidden}.board .row{display:contents}.row .cell:first-child{border-left:none}.row:first-child .cell{border-top:none}.cell:focus-visible{outline:3px solid var(--accent);outline-offset:-3px;z-index:3}.cell.reg-l{border-left:2px solid var(--line-strong)}.cell.reg-t{border-top:2px solid var(--line-strong)}.cell.diag-tint{background:var(--diag-bg)}.cell.peer{background:var(--peer)}.cell.same{background:var(--same)}.cell.single{background:var(--single-bg)}.cell.sel{background:var(--sel)}.cell.clash .big{color:var(--clash)}.cell.error{background:var(--error)}.cell.error .big{color:#fff}.cage-layer{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0}.diag-cage,.window-cage{fill:none;stroke:var(--line-strong);stroke-width:.04px;stroke-dasharray:.14 .09;stroke-linecap:round}.cell.window:after{content:"";box-shadow:inset 0 0 0 1px var(--window-line);pointer-events:none;z-index:0;position:absolute;inset:0}.cell.win-0:after{background:rgb(var(--hue-5) / var(--win-alpha))}.cell.win-1:after{background:rgb(var(--hue-3) / var(--win-alpha))}.cell.win-2:after{background:rgb(var(--hue-6) / var(--win-alpha))}.cell.win-3:after{background:rgb(var(--hue-1) / var(--win-alpha))}.cell[class*=clr-]:before,.cell[class*=reg-c]:before{content:"";pointer-events:none;z-index:0;position:absolute;inset:0}.cell.clr-0:before{background:rgb(var(--hue-0) / var(--clr-alpha))}.cell.clr-1:before{background:rgb(var(--hue-1) / var(--clr-alpha))}.cell.clr-2:before{background:rgb(var(--hue-2) / var(--clr-alpha))}.cell.clr-3:before{background:rgb(var(--hue-3) / var(--clr-alpha))}.cell.clr-4:before{background:rgb(var(--hue-4) / var(--clr-alpha))}.cell.clr-5:before{background:rgb(var(--hue-5) / var(--clr-alpha))}.cell.clr-6:before{background:rgb(var(--hue-6) / var(--clr-alpha))}.cell.clr-7:before{background:rgb(var(--hue-7) / var(--clr-alpha))}.cell.clr-8:before{background:rgb(var(--hue-8) / var(--clr-alpha))}.cell.reg-c0:before{background:rgb(var(--hue-0) / var(--reg-alpha))}.cell.reg-c1:before{background:rgb(var(--hue-1) / var(--reg-alpha))}.cell.reg-c2:before{background:rgb(var(--hue-2) / var(--reg-alpha))}.cell.reg-c3:before{background:rgb(var(--hue-3) / var(--reg-alpha))}.cell.reg-c4:before{background:rgb(var(--hue-4) / var(--reg-alpha))}.cell.reg-c5:before{background:rgb(var(--hue-5) / var(--reg-alpha))}.cell.reg-c6:before{background:rgb(var(--hue-6) / var(--reg-alpha))}.cell.reg-c7:before{background:rgb(var(--hue-7) / var(--reg-alpha))}.cell.reg-c8:before{background:rgb(var(--hue-8) / var(--reg-alpha))}.big{color:var(--accent);z-index:2;font-weight:700;line-height:1}.cell.given .big{color:var(--text);font-weight:800}.marks{color:var(--mark);z-index:1;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font-size:.32em;font-weight:700;line-height:1;display:grid;position:absolute;inset:12% 10%}.mark{place-items:center;display:grid}.cell.spotlit{background:var(--spotlit);box-shadow:inset 0 0 0 2px var(--accent)}.cell.single .marks{color:var(--single);font-weight:800}.controls{gap:8px;display:flex}:root[data-keypad=right] .controls{flex-direction:row-reverse}:root[data-keypad=right] .controls .actions{direction:rtl}:root[data-keypad=right] .controls .actions>*{direction:ltr}:root[data-keypad=right] .under-keys,:root[data-keypad=right] .under-actions{flex-direction:row-reverse}.controls-left{flex-direction:column;flex:0 0 54%;gap:6px;min-width:0;display:flex}.controls-right{flex-direction:column;flex:auto;gap:6px;min-width:0;display:flex}.numpad{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.under-keys{gap:6px;min-width:0;display:flex}.under-keys .key.clear,.under-keys .undo-pair{flex:1 1 0;min-width:0;margin:0}.controls .actions{flex:auto;grid-template-rows:repeat(3,1fr);grid-template-columns:1fr 1fr;grid-auto-flow:column;gap:5px;min-width:0;margin:0;display:grid}.controls .actions .btn{padding:4px 2px;font-size:13px}.undo-pair{grid-template-columns:1fr 1fr;gap:5px;min-width:0;display:grid}.btn.icon{place-items:center;padding:0;display:grid}.btn.icon svg{display:block}.pause-btn{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;touch-action:manipulation;border-radius:9px;justify-content:center;align-items:center;gap:4px;display:flex}.pause-btn i{background:var(--text);border-radius:1px;width:4px;height:16px;display:block}.pause-btn:active{background:var(--accent-dim)}.key,.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);font-family:var(--font-ui);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:9px;padding:10px 4px;font-size:20px;font-weight:600;position:relative}.key:active,.btn:active{background:var(--accent-dim)}.numpad .key{background:var(--k-digit);border-color:var(--k-digit-line);color:var(--k-digit-text)}.key.clear,.undo-pair .btn.icon{background:var(--k-edit);border-color:var(--k-edit-line);color:var(--k-edit-text)}.btn.aid{background:var(--k-aid);border-color:var(--k-aid-line);color:var(--k-aid-text)}.btn.session{background:var(--k-session);border-color:var(--k-session-line);color:var(--k-session-text)}.key.done{color:var(--dim);opacity:.45}.key .count{color:var(--dim);font-size:10px;font-weight:500;position:absolute;top:1px;right:3px}.key.clear{letter-spacing:1px;padding:12px 4px;font-size:14px}.notes-key{justify-content:center;align-items:center;gap:5px;display:flex}.notes-key svg{flex:none}.notes-key.on{background:var(--accent-dim);border-color:var(--accent);color:var(--text)}.timer{border:1px solid var(--line);text-align:center;font-variant-numeric:tabular-nums;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--panel);color:var(--text);border-radius:5px;place-items:center;padding:6px 4px;font-size:17px;font-weight:700;line-height:1;display:grid}.actions{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.btn{padding:11px 4px;font-size:15px}.btn[disabled]{opacity:.4;cursor:default}.btn.wide{grid-column:span 3}.btn.primary{background:var(--accent-dim);border-color:var(--accent)}.hero{text-align:center;padding:10px 0 2px}.hero h1{letter-spacing:1px;margin:0;font-size:30px;font-weight:800}.hero h1 span{color:var(--accent)}.hero p{color:var(--dim);margin:4px 0 0;font-size:13px}.picker-row{background:var(--panel);border:1px solid var(--line);border-radius:10px;grid-template-columns:minmax(108px,.75fr) minmax(0,1.25fr);align-items:center;gap:10px;padding:10px;display:grid}.voptions{flex-direction:column;gap:5px;display:flex}.vopt{color:var(--dim);font-family:var(--font-ui);text-align:left;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;padding:6px 2px;font-size:14px;font-weight:700;display:flex}.vopt.on{color:var(--text)}.vopt .switch{width:36px;height:20px}.vopt .switch:after{width:14px;height:14px}.vopt .switch.on:after{transform:translate(16px)}.picker-preview{flex-direction:column;align-items:center;gap:7px;min-width:0;display:flex}.game-preview{justify-content:center;width:100%;display:flex}.game-preview .board-preview{aspect-ratio:1;width:min(100%,208px);height:auto;box-shadow:0 4px 14px var(--shadow)}.board-preview{background:var(--cell);display:block}.pv-rule{stroke:var(--rule);stroke-width:.035px}.pv-region{stroke:var(--line-strong);stroke-width:.16px;stroke-linecap:square}.pv-frame{fill:none;stroke:var(--line-strong);stroke-width:.12px}.pv-diag-fill{fill:var(--diag-bg)}.pv-diag-cage,.pv-window-cage{fill:none;stroke:var(--line-strong);stroke-width:.05px;stroke-dasharray:.16 .11}.pv-window{fill:none;stroke:var(--window-line);stroke-width:.09px}.pv-clr-0{fill:rgb(var(--hue-0) / var(--clr-alpha))}.pv-clr-1{fill:rgb(var(--hue-1) / var(--clr-alpha))}.pv-clr-2{fill:rgb(var(--hue-2) / var(--clr-alpha))}.pv-clr-3{fill:rgb(var(--hue-3) / var(--clr-alpha))}.pv-clr-4{fill:rgb(var(--hue-4) / var(--clr-alpha))}.pv-clr-5{fill:rgb(var(--hue-5) / var(--clr-alpha))}.pv-clr-6{fill:rgb(var(--hue-6) / var(--clr-alpha))}.pv-clr-7{fill:rgb(var(--hue-7) / var(--clr-alpha))}.pv-clr-8{fill:rgb(var(--hue-8) / var(--clr-alpha))}.pv-reg-0{fill:rgb(var(--hue-0) / var(--reg-alpha))}.pv-reg-1{fill:rgb(var(--hue-1) / var(--reg-alpha))}.pv-reg-2{fill:rgb(var(--hue-2) / var(--reg-alpha))}.pv-reg-3{fill:rgb(var(--hue-3) / var(--reg-alpha))}.pv-reg-4{fill:rgb(var(--hue-4) / var(--reg-alpha))}.pv-reg-5{fill:rgb(var(--hue-5) / var(--reg-alpha))}.pv-reg-6{fill:rgb(var(--hue-6) / var(--reg-alpha))}.pv-reg-7{fill:rgb(var(--hue-7) / var(--reg-alpha))}.pv-reg-8{fill:rgb(var(--hue-8) / var(--reg-alpha))}.pv-win-0{fill:rgb(var(--hue-5) / var(--win-alpha))}.pv-win-1{fill:rgb(var(--hue-3) / var(--win-alpha))}.pv-win-2{fill:rgb(var(--hue-6) / var(--win-alpha))}.pv-win-3{fill:rgb(var(--hue-1) / var(--win-alpha))}.combo-label{color:var(--accent);letter-spacing:.4px;justify-content:center;align-items:center;gap:7px;margin:0;font-size:13px;font-weight:700;display:flex}.combo-label .stars{gap:1px;display:flex}.level-row{background:var(--panel);border:1px solid var(--line);-webkit-user-select:none;user-select:none;border-radius:10px;grid-template-columns:minmax(104px,.7fr) minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:12px;padding:10px 12px;display:grid}.col-title{color:var(--accent);letter-spacing:1px;text-transform:uppercase;margin:0;font-size:11px;font-weight:800}.level-desc{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.rank-line{color:var(--accent);letter-spacing:.3px;margin:0;font-size:11.5px;font-weight:700}.level-lead{color:var(--text);margin:0;font-size:12px;line-height:1.4}@media (max-width:460px){.level-row{grid-template-columns:minmax(96px,.8fr) minmax(0,1.2fr)}.level-row .play-col{flex-direction:row;grid-column:1/-1}.level-row .play-col>*{flex:1 1 0;min-width:0}}.dial-col{flex-direction:column;align-items:center;gap:2px;min-width:0;display:flex}.dial{aspect-ratio:1;touch-action:none;cursor:pointer;width:min(100%,132px);display:block}.dial:focus,.dial:focus-visible{outline:none}.dial:focus-visible .dial-bezel{stroke:var(--accent);stroke-width:2.2px}.dial-tick-casing{stroke:var(--belt-line);stroke-width:4.6px;stroke-linecap:round}.dial-tick{stroke-width:2.6px;stroke-linecap:round}.belt-glyph{align-items:center;display:inline-flex}.belt-glyph svg{display:block}.belt-stroke{stroke:var(--belt-line);stroke-width:1.3px;stroke-linejoin:round}.belt-dan{font-family:var(--font-ui);letter-spacing:.06em;fill:#fff;font-size:5px;font-weight:800}.dial-num{font-family:var(--font-ui);fill:var(--text);text-anchor:middle;opacity:.75;font-size:12.5px;font-weight:800}.dial-num.on{opacity:1;fill:var(--accent);font-size:14.5px}.dial-shadow{fill:var(--dial-shadow)}.dial-bezel{fill:var(--panel-2);stroke:var(--line);stroke-width:1.4px}.dial-face{stroke:var(--line);stroke-width:.8px}.dial-rib{stroke:var(--dial-rib);stroke-width:1.1px;stroke-linecap:round}.dial-pointer{stroke:var(--accent);stroke-width:3.4px;stroke-linecap:round}.dial-gloss{fill:var(--dial-gloss);pointer-events:none}.dial-label{color:var(--text);font-family:var(--font-ui);cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:6px;padding:2px 4px 2px 0;font-size:14.5px;font-weight:800;display:flex}.dial-label:hover,.dial-label:focus-visible{background:var(--accent-dim)}.dial-label .stars{gap:1px;display:flex}.level-info-badge{border:1px solid var(--dim);width:15px;height:15px;color:var(--dim);border-radius:50%;place-items:center;font-size:10px;font-weight:800;display:grid}.play-col{flex-direction:column;gap:8px;min-width:0;display:flex}.play-col .play-big{padding:13px 12px}.play-col .play-big .source-name{text-align:center;font-size:16px}.pool-left{color:var(--dim);font-variant-numeric:tabular-nums;margin:0;font-size:11.5px}.source{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;text-align:left;min-width:0;color:var(--text);touch-action:manipulation;border-radius:5px;flex:auto;padding:6px 5px;display:block}.source:active{background:var(--accent-dim)}.source[disabled]{opacity:.4;cursor:default}.source-name{font-size:14px;font-weight:700;line-height:1.2;display:block}.source.new .source-name{color:var(--accent)}.source-meta{color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11.5px;line-height:1.2;display:block;overflow:hidden}.hint-line{color:var(--dim);text-align:center;font-size:12px}.build-stamp{color:var(--dim);opacity:.65;text-align:center;font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:10.5px}.overlay{z-index:50;background:#000000b8;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.overlay.undimmed{background:0 0}.level-info-panel{max-width:390px}.level-info-stars{color:var(--accent);gap:2px;display:flex}.level-info-panel h2{margin-top:5px}.level-info-lead{color:var(--text);margin:0 0 10px;font-weight:650}.level-techniques{color:var(--text);margin:0 0 13px;padding-left:20px}.level-techniques li{margin:6px 0}.footer-buttons{gap:6px;display:grid}.footer-buttons.three{grid-template-columns:repeat(3,1fr)}.panel{background:var(--panel);border:1px solid var(--line);width:100%;max-width:480px;max-height:86vh;box-shadow:0 10px 40px var(--shadow);border-radius:12px;padding:14px;overflow:auto}.panel h2{color:var(--accent);margin:0 0 10px;font-size:19px}.panel-footer{padding:10px 14px calc(14px + env(safe-area-inset-bottom,0px));background:var(--panel);border-top:1px solid var(--line);gap:6px;margin:10px -14px -14px;display:grid;position:sticky;bottom:-14px}.panel-footer.two{grid-template-columns:1fr 1fr}.panel-footer.three{grid-template-columns:repeat(3,1fr)}.panel h3{color:var(--accent);margin:14px 0 6px;font-size:14px}.panel p,.panel li{color:var(--text);font-size:13px;line-height:1.5}.paused{color:var(--accent);z-index:60;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;background:#000;place-items:center;display:grid;position:fixed;inset:0}.paused h2{letter-spacing:3px;margin:0;font-size:40px}.paused p{color:var(--dim);margin:8px 0 0}.menu-list{flex-direction:column;gap:6px;display:flex}.menu-list button{text-align:left;font-size:15px}.setting{border-bottom:1px solid var(--line);cursor:pointer;align-items:center;gap:8px;padding:6px 2px;font-size:13.5px;display:flex}.setting:last-child{border-bottom:none}.setting.stacked{cursor:default;display:block}.setting.stacked .tabs{gap:6px;margin-top:6px;display:flex}.setting.stacked .tabs .btn{flex:1 1 0;padding:7px 4px;font-size:13px}.setting.stacked .tabs .btn.on{border-color:var(--accent);color:var(--accent);font-weight:700}.setting .label{flex:auto}.setting .label small{color:var(--dim);margin-top:1px;font-size:11px;line-height:1.3;display:block}.switch{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;flex:none;width:44px;height:24px;transition:background .15s;position:relative}.switch:after{content:"";background:var(--dim);border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch.on{background:var(--accent-dim);border-color:var(--accent)}.switch.on:after{background:var(--accent);transform:translate(20px)}.picker{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:5px;max-height:46vh;display:grid;overflow-y:auto}.picker-jump{color:var(--dim);align-items:center;gap:6px;margin-bottom:8px;font-size:12px;display:flex}.picker-jump input[type=number]{text-align:center;background:var(--panel-2);width:74px;color:var(--text);border:1px solid var(--line);border-radius:4px;flex:0 0 74px;padding:6px;font-size:15px}.picker-jump .btn{flex:none;padding:7px 14px}.picker-ranges{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.picker-ranges .btn{font-variant-numeric:tabular-nums;flex:none;padding:5px 8px;font-size:12px}.picker-ranges .btn.on{background:var(--accent-dim);border-color:var(--accent)}.picker button{font-variant-numeric:tabular-nums;padding:9px 2px;font-size:13px}.statrow{font-variant-numeric:tabular-nums;cursor:pointer;border-radius:4px;grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;padding:7px 8px;font-size:13px;display:grid}.statrow.locked{background:#dc78a02e}.statrow.released{background:#78d28c29}.unfinished-row{gap:5px;margin-bottom:5px;display:flex}.unfinished-row .statrow.open{flex:auto;min-width:0;margin-bottom:0}.rowx{background:var(--panel-2);border:1px solid var(--line);color:var(--error);cursor:pointer;touch-action:manipulation;border-radius:4px;flex:0 0 38px;place-items:center;font-size:14px;display:grid}.rowx svg{display:block}.rowx:active{background:var(--error);color:#fff}.statrow.open{background:var(--panel-2);border:1px solid var(--line);width:100%;color:var(--text);text-align:left;grid-template-columns:1fr auto auto auto auto;margin-bottom:5px;font-size:13px}.statrow .hold{color:var(--dim);letter-spacing:.6px;text-transform:uppercase;border:1px solid var(--line);border-radius:3px;padding:1px 4px;font-size:9.5px}.section-label{color:var(--accent);letter-spacing:.6px;text-transform:uppercase;margin:14px 0 6px;font-size:12px;font-weight:700}.statrow.open:active{background:var(--accent-dim)}.statrow .when{color:var(--dim);font-size:11.5px}.statrow .when.since{color:var(--text);font-weight:700}.tabs{gap:5px;margin-bottom:8px;display:flex}.tabs button{flex:auto;padding:8px 2px;font-size:14px}.tabs button.on{background:var(--accent-dim);border-color:var(--accent)}.summary{color:var(--dim);margin:0 0 8px;font-size:12.5px}.unfinished-picker{max-height:min(52dvh,420px);padding-right:2px;overflow-y:auto}.unfinished-picker .statrow.open{grid-template-columns:auto minmax(0,1fr) auto auto}.overlay.bottom-sheet{padding:8px 16px max(20px, calc(8px + env(safe-area-inset-bottom,0px)));align-items:end}.totals{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.totals .tile{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:6px;min-width:0;padding:7px 4px}.totals .tile b{color:var(--accent);font-variant-numeric:tabular-nums;font-size:19px;line-height:1.1;display:block}.totals .tile small{color:var(--dim);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:10.5px;display:block;overflow:hidden}.totals .spread{text-align:center;color:var(--dim);grid-column:1/-1;margin:0;font-size:11.5px}.won{text-align:center}.summary.techniques{color:var(--mark)}.won .time{color:var(--accent);font-variant-numeric:tabular-nums;margin:6px 0;font-size:34px;font-weight:800}.toast{background:var(--panel);border:1px solid var(--accent);color:var(--text);z-index:70;box-shadow:0 6px 20px var(--shadow);pointer-events:none;border-radius:20px;padding:9px 16px;font-size:13px;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.tutorial{text-align:center;max-width:390px}.tutorial .eyebrow{color:var(--accent);letter-spacing:1.5px;font-size:11px;font-weight:800}.tutorial-demo{border:1px solid var(--accent);background:var(--accent-dim);border-radius:8px;place-items:center;min-height:126px;margin:14px 0 10px;padding:18px 12px;display:grid}.tutorial-picture{justify-content:center;align-items:center;gap:10px;width:100%;display:flex}.tutorial-caption{color:var(--dim);text-align:left;max-width:90px;font-size:11px}.tutorial-grid{border:2px solid var(--line-strong);grid-template-columns:repeat(3,1fr);width:96px;height:96px;display:grid}.tutorial-cell{border:1px solid var(--line);background:var(--cell);color:var(--sum);place-items:start;padding:2px;font-size:9px;display:grid}.tutorial-cell.peer{background:var(--peer)}.tutorial-cell.selected{background:var(--sel);outline:2px solid var(--accent);outline-offset:-2px}.tutorial-large-cell{border:2px solid var(--cage);background:var(--cell);width:82px;height:82px;color:var(--text);place-items:center;font-size:36px;font-weight:800;display:grid}.tutorial-marks{width:62px;height:62px;color:var(--mark);grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(5,1fr);align-content:end;font-size:12px;display:grid}.tutorial-marks span{place-items:center;display:grid}.tutorial-key-row{gap:4px;display:flex}.tutorial-key-row:before{content:"Tap";color:var(--dim);align-self:center;margin-right:2px;font-size:11px}.tutorial-key-row{color:var(--k-digit-text);font-size:15px;font-weight:800}.tutorial-key-row span{border:1px solid var(--k-digit-line);background:var(--k-digit);border-radius:3px;min-width:28px;padding:6px 4px}.tutorial-key{border:1px solid var(--k-digit-line);background:var(--k-digit);width:56px;height:64px;color:var(--k-digit-text);border-radius:5px;place-items:center;font-size:25px;font-weight:800;display:grid}.tutorial-key small{color:var(--dim);font-size:8px;display:block}.tutorial-arrow{color:var(--accent);font-size:25px}.answer-cell{color:var(--text)}.tutorial-chip-on{background:var(--accent-dim)!important;border-color:var(--accent)!important;color:var(--text)!important}.tutorial-ready{flex-wrap:wrap}.tutorial-ready span{border:1px solid var(--line);background:var(--panel-2);border-radius:4px;padding:9px 12px;font-size:12px;font-weight:750}.tutorial-copy{min-height:58px}.guide{text-align:left;max-width:430px}.guide .eyebrow{color:var(--accent);letter-spacing:1.5px;font-size:11px;font-weight:800}.guide-header{align-items:center;gap:8px;margin:8px 0 6px;display:flex}.guide-header .stars{gap:1px;display:flex}.guide-level{color:var(--text);font-size:14px;font-weight:800}.guide-technique{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.guide-technique b{color:var(--accent);font-size:14px}.guide-technique p{color:var(--text);margin:3px 0 0;font-size:12.5px;line-height:1.45}.guide-progress{text-align:center;color:var(--dim);margin:8px 0;font-size:11.5px}.guide-title{color:var(--accent);margin:6px 0;font-size:19px}.guide .board-preview{aspect-ratio:1;width:min(100%,250px,44dvh);height:auto}.tg-example{justify-items:center;gap:4px;margin-top:8px;display:grid}.tg-board{aspect-ratio:1;background:var(--cell);width:min(100%,250px,44dvh);display:block}.tg-rule{stroke:var(--rule);stroke-width:.02px}.tg-box{stroke:var(--line-strong);stroke-width:.07px}.tg-frame{fill:none;stroke:var(--line-strong);stroke-width:.1px}.tg-key{fill:var(--sel)}.tg-link{fill:var(--same)}.tg-board text{font-family:var(--font-ui);text-anchor:middle}.tg-big{fill:var(--text);font-size:.62px;font-weight:700}.tg-cand{fill:var(--mark);font-size:.3px;font-weight:700}.tg-hit{fill:var(--accent);font-size:.3px;font-weight:800}.tg-strike{fill:var(--error);font-size:.3px;font-weight:800}.tg-slash{stroke:var(--error);stroke-width:.045px;stroke-linecap:round}.tg-caption{color:var(--dim);text-align:center;margin:0;font-size:11.5px}.guide .tutorial-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.tutorial-progress{color:var(--accent);letter-spacing:5px;margin:12px 0}.tutorial-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.tutorial-skip{color:var(--dim);cursor:pointer;background:0 0;border:0;margin-top:12px;text-decoration:underline}.update-notice{z-index:80;border:1px solid var(--accent);background:var(--panel);color:var(--text);box-shadow:0 6px 20px var(--shadow);border-radius:8px;align-items:center;gap:12px;padding:9px 10px 9px 14px;font-size:13px;display:flex;position:fixed;bottom:16px;right:16px}.update-notice .btn{padding:7px 12px}.spinner{border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;margin:0 auto 12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (orientation:landscape) and (max-height:560px){#app{align-items:flex-start}.screen.play{--board:min(calc(100dvh - 56px), calc(100vw - 236px));grid-template-columns:var(--board) minmax(0, 1fr);grid-template-rows:auto minmax(0,1fr);gap:6px;max-width:none;height:100dvh;padding:6px;display:grid}.screen.play>.titlebar{grid-column:1/-1;min-height:34px;padding:3px 8px}:root[data-keypad=left] .screen.play{grid-template-columns:minmax(0, 1fr) var(--board)}:root[data-keypad=left] .screen.play>.board{grid-column:2}:root[data-keypad=left] .screen.play>.controls{grid-area:2/1}.screen.play>.board{width:var(--board);height:var(--board);font-size:min(3.4vh,26px)}.screen.play>.controls{height:100%}.controls-left{flex:0 0 52%}.numpad{flex:auto;grid-auto-rows:minmax(0,1fr)}.controls .actions{grid-template-rows:repeat(3,minmax(0,1fr))}.key,.btn{padding:2px 4px;font-size:17px}.key.clear{padding:2px 4px}.controls .actions .btn{font-size:12.5px}.under-keys,.under-actions{flex:0 0 34px}.pause-btn{flex:0 0 40px}}@media (max-width:380px){.btn{font-size:13.5px}.key{padding:9px 4px;font-size:18px}}@media (orientation:landscape) and (max-height:560px){#app{align-items:flex-start}.screen.play{--board:min(calc(100dvh - 16px), calc(100vw - 336px), 720px);grid-template-columns:var(--board) minmax(0, 264px);grid-template-rows:auto minmax(0,1fr);justify-content:center;gap:8px;width:100%;max-width:none;height:100dvh;padding:8px;display:grid}.screen.play>.board{width:var(--board);height:var(--board);grid-area:1/1/span 2}.screen.play>.titlebar{grid-area:1/2;gap:6px;min-height:34px;padding:3px 6px}.titlebar.with-clock .timer{border-radius:7px;min-width:56px;margin-left:auto;padding:2px 6px;font-size:13px}.titlebar.with-clock .candidates{margin-left:0}.screen.play>.controls{grid-area:2/2;height:100%}.screen.play>.titlebar,.screen.play>.controls{justify-self:center;width:100%;max-width:264px}:root[data-keypad=left] .screen.play{grid-template-columns:minmax(0, 264px) var(--board)}:root[data-keypad=left] .screen.play>.board{grid-column:2}:root[data-keypad=left] .screen.play>.titlebar,:root[data-keypad=left] .screen.play>.controls{grid-column:1}.screen.play>.controls,:root[data-keypad=right] .screen.play>.controls{flex-direction:column}.controls-left{flex:0 0 56%}.controls-left,.controls-right{min-height:0}.numpad{flex:auto;grid-auto-rows:minmax(0,1fr)}.controls .actions,.numpad{grid-template-rows:repeat(3,minmax(0,1fr));min-height:0}.key,.btn{padding:2px 4px;font-size:17px}.key.clear{padding:2px 4px}.controls .actions .btn{font-size:12.5px}.under-keys{flex:0 0 34px}}
