.bn{--bn-black: #1d1d1f;--bn-white: #fbfaf6;--bn-tray: #e9e6dc;--bn-hole: #f7f5ef;--bn-hole-edge: #dcd8cc;--bn-gap: clamp(3px, calc(32px / var(--n)), 6px);display:grid;justify-items:center;gap:14px;width:min(100%,560px)}[data-theme=dark] .bn{--bn-black: #050506;--bn-tray: #26262b;--bn-hole: #1c1c20;--bn-hole-edge: #121215}.bn-frame{width:100%}.bn-board{display:grid;grid-template-columns:repeat(var(--n),1fr);grid-template-rows:repeat(var(--n),1fr);gap:var(--bn-gap);padding:var(--bn-gap);aspect-ratio:1;background:var(--bn-tray);border-radius:16px;touch-action:none;-webkit-user-select:none;user-select:none}.bn-board:focus{outline:none}.bn-board{position:relative}.bn-sign{position:absolute;z-index:2;display:grid;place-items:center;width:clamp(14px,calc(150px / var(--n)),22px);height:clamp(14px,calc(150px / var(--n)),22px);translate:-50% -50%;border-radius:50%;background:var(--bn-tray);color:var(--text);font-size:clamp(11px,calc(120px / var(--n)),17px);font-weight:800;line-height:1;pointer-events:none}.bn-sign.bad{background:var(--danger);color:#fff}.bn-cell{position:relative;border-radius:22%;background:var(--bn-hole);box-shadow:inset 0 2px 0 var(--bn-hole-edge);cursor:pointer}.bn.readonly .bn-cell,.bn-cell.given{cursor:default}.bn-board:focus-visible .bn-cell.cursor{outline:3px solid var(--text);outline-offset:2px}.bn-tile{position:absolute;inset:11%;border-radius:50%}.bn-tile.black{background:var(--bn-black)}.bn-tile.white{border:2px solid var(--bn-black);background:var(--bn-white) padding-box}.bn-cell.triple .bn-tile:before{content:"";position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--danger) 70%,transparent) 0 3px,transparent 3px 8px)}.bn-cell.dup:before{content:"";position:absolute;inset:-2px;z-index:1;border-radius:inherit;border:2px dashed var(--danger);pointer-events:none}.bn-legend{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 16px;font-size:.85rem}.bn-legend span{display:inline-flex;align-items:center;gap:6px}.bn-swatch{display:inline-block;width:14px;height:14px;border-radius:50%}.bn-swatch.black{background:var(--bn-black)}.bn-swatch.white{border:1.5px solid var(--bn-black);background:var(--bn-white) padding-box}.bn.solved .bn-board{box-shadow:0 0 0 3px var(--ok)}.chess-wrap{container-type:inline-size;display:grid;gap:10px;justify-items:center;width:100%}.chess-status{min-height:1.4em;font-weight:700;color:var(--muted)}.chess-status.bad{color:var(--danger)}.chess-board{--bw: min(540px, calc(100cqw - 4px) );position:relative;width:var(--bw);aspect-ratio:1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border-radius:6px;overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.chess-sq{position:relative;display:grid;place-items:center;min-width:0;min-height:0;cursor:pointer}.chess-board.readonly .chess-sq{cursor:default}.chess-sq.light{background:#f0d9b5}.chess-sq.dark{background:#b58863}.chess-sq.last:before,.chess-sq.selected:before,.chess-sq.target:after{content:"";position:absolute;inset:0;pointer-events:none}.chess-sq.last:before{background:#9bc70069}.chess-sq.selected:before{background:#14551e80}.chess-sq.target:after{z-index:1;background:radial-gradient(transparent 0%,transparent 79%,rgba(20,85,0,.3) 80%)}.chess-coord{position:absolute;font-size:calc(var(--bw) / 8 * .2);font-weight:700;line-height:1;pointer-events:none}.chess-sq.light .chess-coord{color:#b58863}.chess-sq.dark .chess-coord{color:#f0d9b5}.chess-coord.rank{top:3px;left:3px}.chess-coord.file{bottom:3px;right:4px}.chess-piece{position:relative;width:100%;height:100%;pointer-events:none}.chess-piece.spent{opacity:.45}.chess-piece.lifted{opacity:.3}.chess-piece.dragging{position:absolute;z-index:2;width:calc(var(--bw) / 8);height:calc(var(--bw) / 8);transform:translate(-50%,-50%)}.edge-wrap{container-type:inline-size;display:grid;justify-items:center;width:100%;padding:8px 0}.edge-board{--bw: min(520px, calc(100cqw - 24px) );--cell: calc(var(--bw) / var(--n));position:relative;width:var(--bw);aspect-ratio:1;display:grid;background:var(--cell-bg);-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer}.edge-board.readonly{cursor:default}.edge-cell{display:grid;place-items:center;min-width:0;min-height:0;font-size:calc(var(--cell) * .5);font-weight:750;line-height:1}.edge-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;fill:none}.edge-hair{stroke:color-mix(in srgb,var(--grid-strong) 16%,transparent);stroke-width:1px}.edge-line{stroke:var(--ink);stroke-width:3px;stroke-linecap:square}.edge-line.fixed{stroke:var(--grid-strong)}.edge-line.bad{stroke:var(--danger)}.edge-cross{stroke:var(--muted);stroke-width:1.5px}.edge-point{fill:var(--ink)}.galaxy-dot{fill:var(--mark-white);stroke:var(--mark-rim);stroke-width:2px}.loop-clue.ok{color:var(--faint)}.loop-clue.bad{color:var(--danger)}.hz-wrap{container-type:inline-size;display:grid;gap:10px;justify-items:center;width:100%;--hz-grass: #3d9a48;--hz-line: rgba(0, 0, 0, .1);--hz-pen: #f2d16b;--hz-water: #2f7fc6;--hz-bank: #1f5a92;--hz-frame: #2c7a37}.hz-info{display:flex;gap:18px;font-weight:700;color:var(--muted)}.hz-info b{color:var(--text)}.hz-board{--bw: min(600px, calc(100cqw - 4px) );--px: calc(var(--bw) / var(--n) / 16);width:var(--bw);aspect-ratio:1;display:grid;border-radius:10px;outline:calc(var(--px) * 3) solid var(--hz-frame);-webkit-user-select:none;user-select:none;touch-action:none;background:var(--hz-grass)}.hz-cell{position:relative;min-width:0;min-height:0;background-size:100% 100%}.hz-cell.grass{background-color:var(--hz-grass);outline:.5px solid var(--hz-line);outline-offset:-.5px}.hz-cell.water{background-color:var(--hz-water)}.hz-cell.pen{background-color:var(--hz-pen);outline-color:#7850001f}.hz-cell.open{cursor:pointer}.hz-board.readonly .hz-cell{cursor:default}.hz-sprite,.hz-wall{position:absolute;left:0;width:100%;background-size:100% 100%;pointer-events:none}.hz-sprite{top:-8%;left:-8%;width:116%;height:116%;z-index:1}.hz-wall{bottom:0;height:125%;z-index:2}.lp-wrap{container-type:inline-size;display:grid;justify-items:center;width:100%}.lp-board{--bw: min(520px, calc(100cqw - 4px) );--cell: calc(var(--bw) / var(--n));aspect-ratio:1}.lp-circle{width:84%;height:84%;border-radius:50%;border:calc(var(--cell) * .09) solid var(--ink)}.lp-stick{position:absolute;background:var(--ink);border-radius:2px}.lp-stick.h{left:0;right:0;top:calc(50% - var(--cell) * .045);height:calc(var(--cell) * .09)}.lp-stick.v{top:0;bottom:0;left:calc(50% - var(--cell) * .045);width:calc(var(--cell) * .09)}.lp-link{position:absolute;background:var(--ink)}.lp-link.l,.lp-link.r{top:calc(50% - var(--cell) * .045);height:calc(var(--cell) * .09);width:12%}.lp-link.l{left:0}.lp-link.r{right:0}.lp-link.t,.lp-link.b{left:calc(50% - var(--cell) * .045);width:calc(var(--cell) * .09);height:12%}.lp-link.t{top:0}.lp-link.b{bottom:0}.pt-wrap{container-type:inline-size;display:grid;justify-items:center;width:100%;--pt-strength: 100%}[data-theme=dark] .pt-wrap{--pt-strength: 55%}.pt-board{--bw: min(520px, calc(100cqw - 4px) );--cell: calc(var(--bw) / var(--n));aspect-ratio:1}.pt-cell.owned{background:color-mix(in srgb,var(--tint) calc(var(--pt-strength) * .8),var(--cell-bg))}.pt-cell.clue{background:color-mix(in srgb,var(--tint) var(--pt-strength),var(--cell-bg))}.pt-cell.invalid{background:color-mix(in srgb,var(--muted) 25%,var(--cell-bg))}.pt-badge{position:absolute;top:6%;left:6%;width:26%;height:26%;fill:none;stroke:var(--text);stroke-width:1.6;opacity:.75}.pt-any{font-size:8px;font-weight:800;fill:var(--text);stroke:none}.pt-num{font-size:calc(var(--cell) * .46);font-weight:800;color:var(--text)}.pt-size{position:absolute;z-index:2;transform:translate(-60%,-60%);padding:2px 7px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:.8rem;font-weight:800;pointer-events:none;white-space:nowrap}.nono-wrap{display:grid;gap:10px;justify-items:center}.nono{--cell: min(var(--max), calc((100cqw - 16px) / (var(--w) + var(--rc) * .62 + .6)));--hair: color-mix(in srgb, var(--grid-strong) 16%, transparent);display:grid;grid-template-columns:auto auto;grid-template-areas:"corner cols" "rows board";gap:6px;-webkit-user-select:none;user-select:none}.nono.readonly .nono-board{pointer-events:none}.nono-corner{grid-area:corner}.nono-clues{display:grid;background:var(--surface-2);border-radius:10px;overflow:hidden;font-size:calc(var(--cell) * .42);font-weight:650;font-variant-numeric:tabular-nums;line-height:1.1}.nono-clues.cols{grid-area:cols;grid-template-columns:repeat(var(--w),var(--cell));padding:0 2px}.nono-clues.rows{grid-area:rows;grid-template-rows:repeat(var(--h),var(--cell));padding:2px 0}.nono-clue{display:flex;align-items:center;justify-content:flex-end}.cols .nono-clue{flex-direction:column;gap:.2em;padding:.45em 0}.rows .nono-clue{gap:.5em;padding:0 .55em 0 .6em}.cols .nono-clue.sep{box-shadow:inset -1px 0 var(--hair)}.rows .nono-clue.sep{box-shadow:inset 0 -1px var(--hair)}.nono-clue.hot{background:var(--surface-3)}.nono-clue.done{color:var(--faint)}.nono-board{grid-area:board;display:grid;grid-template-columns:repeat(var(--w),var(--cell));grid-template-rows:repeat(var(--h),var(--cell));border:2px solid var(--grid-strong);border-radius:12px;overflow:hidden;background:var(--cell-bg);touch-action:none}.nono-cell{position:relative;background:var(--cell-bg);border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);cursor:pointer}.nono-cell.sep-r{border-right:2px solid var(--grid-strong)}.nono-cell.sep-b{border-bottom:2px solid var(--grid-strong)}.nono-cell.last-c{border-right:none}.nono-cell.last-r{border-bottom:none}.nono-cell.hot{background:var(--cell-peer)}.nono-cell.filled{background:var(--ink)}.nono-cell.cross:before,.nono-cell.cross:after{content:"";position:absolute;left:24%;right:24%;top:50%;height:2px;margin-top:-1px;border-radius:1px;background:var(--faint);transform:rotate(45deg)}.nono-cell.cross:after{transform:rotate(-45deg)}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.tr-wrap{display:grid;justify-items:center;width:100%}.tr{--hair: color-mix(in srgb, var(--grid-strong) 16%, transparent);position:relative;display:grid;grid-template-columns:repeat(var(--n),1fr);grid-template-rows:repeat(var(--n),1fr);width:min(100%,520px);aspect-ratio:1;border:2px solid var(--grid-strong);border-radius:14px;overflow:hidden;background:var(--cell-bg);touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.tr:focus{outline:none}.tr.readonly{cursor:default}.tr-cell{border-right:1px solid var(--hair);border-bottom:1px solid var(--hair)}.tr-cell.last-c{border-right:none}.tr-cell.last-r{border-bottom:none}.tr-cell.on{background:color-mix(in srgb,var(--trail) 16%,var(--cell-bg))}.tr-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.tr-line{fill:none;stroke:var(--trail);stroke-width:.4;stroke-linecap:round;stroke-linejoin:round}.tr-dot{fill:var(--trail)}.tr-wall{stroke:var(--grid-strong);stroke-width:.11;stroke-linecap:round}.tr-nums{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--n),1fr);grid-template-rows:repeat(var(--n),1fr);pointer-events:none}.tr-nums>div{display:grid;place-items:center;container-type:size}.tr-num{display:grid;place-items:center;width:62cqmin;height:62cqmin;border-radius:50%;background:var(--ink);color:var(--paper);font-family:Nunito Variable,ui-rounded,Segoe UI,sans-serif;font-size:36cqmin;font-weight:800;line-height:1}.paper .ng-board{border-radius:14px;overflow:hidden}.paper{--entry: #1e3a8a}[data-theme=dark] .paper{--entry: #9db4ff}.paper .ng-cell .digit{font-size:calc(var(--cell) * .56);font-weight:800}.paper .ng-cell.given .digit{color:var(--text)}.paper .ng-cell:not(.given) .digit,[data-theme=dark] .paper .ng-cell:not(.given) .digit{color:var(--entry)}.paper .ng-cell.conflict .digit,[data-theme=dark] .paper .ng-cell.conflict .digit{color:var(--danger)}.paper .ineq{background:transparent}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/zilla-slab-latin-ext-600-normal-9hyyVsz0.woff2) format("woff2"),url(/assets/zilla-slab-latin-ext-600-normal-DTnoEnY3.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/zilla-slab-latin-600-normal-BRgn6X7z.woff2) format("woff2"),url(/assets/zilla-slab-latin-600-normal-iLPAhCz6.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/zilla-slab-latin-ext-700-normal-C1-U_e_0.woff2) format("woff2"),url(/assets/zilla-slab-latin-ext-700-normal-DQD_oLH8.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Zilla Slab;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/zilla-slab-latin-700-normal-CEKI1vVu.woff2) format("woff2"),url(/assets/zilla-slab-latin-700-normal-C8aaVMsA.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-cyrillic-ext-wght-normal-BbRulJFC.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-cyrillic-wght-normal-se3OnFSl.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-vietnamese-wght-normal-DTJpi3oK.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-latin-ext-wght-normal-CeZZaleV.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-latin-wght-normal-CLTz0ja0.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f3f0e8;--surface: #fbfaf6;--surface-2: #ede9df;--surface-3: #e0dbce;--border: #d6d0c1;--border-strong: #a8a293;--text: #171614;--muted: #625d52;--faint: #9d978a;--primary: #171614;--primary-text: #fbfaf6;--danger: #c8302f;--warn: #a8670f;--ok: #23824a;--ink: #171614;--paper: #ffffff;--rule: #171614;--cell-bg: #ffffff;--cell-given: #ecebe5;--cell-sel: #fde68a;--cell-peer: #f4f3ec;--cell-same: #fbeec0;--grid-line: #cfcdc3;--grid-strong: #141413;--team: #625d52;--red: #e5484d;--blue: #3e63dd;--radius: 4px;--radius-sm: 3px;--shadow: none;--lift: 3px 3px 0 var(--ink);--font: "Libre Franklin Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--display: "Zilla Slab", Rockwell, "Roboto Slab", Georgia, serif;--mono: ui-monospace, "SF Mono", "Cascadia Mono", Consolas, monospace;color-scheme:light}[data-theme=dark]{--bg: #171613;--surface: #201f1b;--surface-2: #2a2824;--surface-3: #35332e;--border: #3b3934;--border-strong: #5f5c54;--text: #efebe1;--muted: #b0aa9c;--faint: #7c776c;--primary: #efebe1;--primary-text: #171613;--danger: #f2555a;--warn: #e2a33a;--ok: #3fbf72;--ink: #efebe1;--paper: #1b1b1d;--rule: #efebe1;--cell-bg: #1f1f22;--cell-given: #2a2a2e;--cell-sel: #5c4b16;--cell-peer: #252528;--cell-same: #3d3518;--grid-line: #3b3b40;--grid-strong: #c9c9c4;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}body{min-height:100vh;display:flex;flex-direction:column}#root{flex:1;display:flex;flex-direction:column}h1,h2,h3,.display{margin:0;font-family:var(--display);font-weight:700;line-height:1.08;letter-spacing:-.01em}h1{font-size:2.4rem}h2{font-size:1.6rem}h3{font-size:1.2rem}p{margin:0}button,input,select{font:inherit;color:inherit}a{color:inherit}ul,ol{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:.85rem}.strong{font-weight:650}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.num{font-family:var(--font);font-weight:800;font-variant-numeric:tabular-nums lining-nums;letter-spacing:-.02em}h1,h2,h3,.display,.tile{font-variant-numeric:lining-nums}.error-text{color:var(--danger)}.center{justify-content:center}.center-text{text-align:center}.row{display:flex;align-items:center;flex-wrap:wrap}.gap{gap:8px}.label,.kicker{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.label{margin-bottom:6px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.card.ruled{border-color:var(--rule)}.card.narrow{max-width:440px;margin:48px auto;display:grid;gap:14px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.rule-head{border-top:3px solid var(--rule);padding-top:3px;margin-bottom:14px}.rule-head>*{border-top:1px solid var(--rule);padding-top:10px;display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.logo{display:inline-flex;gap:3px}.tile{display:inline-grid;place-items:center;width:1.9em;height:1.9em;font-family:var(--font);font-weight:800;border-radius:3px;background:var(--ink);color:var(--bg);line-height:1}.tile.red{background:var(--red);color:#fff}.tile.blue{background:var(--blue);color:#fff}.tile.blank{background:transparent;color:var(--text);box-shadow:inset 0 0 0 1.5px var(--ink)}.logo .tile{font-size:1.05rem}.logo-sm .tile{font-size:.8rem;width:1.75em;height:1.75em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border-radius:var(--radius-sm);border:1.5px solid var(--ink);background:var(--surface);font-weight:650;cursor:pointer;text-decoration:none;white-space:nowrap;transition:transform .08s,box-shadow .08s,background .12s}.btn:hover:not(:disabled){box-shadow:var(--lift);transform:translate(-1px,-1px)}.btn:active:not(:disabled){box-shadow:none;transform:none}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--ink);color:var(--bg)}.btn.accent{background:var(--red);border-color:var(--ink);color:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover:not(:disabled){box-shadow:none;transform:none;background:var(--surface-2)}.btn.quiet{border-color:var(--border-strong)}.btn.danger{color:var(--danger)}.btn.sm{padding:5px 10px;font-size:.85rem}.btn.lg{padding:12px 24px;font-size:1.05rem}.btn.xl{padding:15px 30px;font-size:1.15rem}.btn.block{width:100%}.icon-btn{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;cursor:pointer;font-size:1rem}.icon-btn:hover{border-color:var(--ink)}.link-btn{background:none;border:none;padding:0;cursor:pointer;font-size:.82rem;color:var(--muted);text-decoration:underline;text-underline-offset:2px}.link-btn:hover{color:var(--text)}.link-btn.danger{color:var(--danger)}.kbd{display:inline-block;padding:0 5px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:3px;font-family:var(--mono);font-size:.75rem;line-height:1.5}input,select{width:100%;padding:10px 12px;border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);outline:none}select{width:auto;padding:6px 10px}input:focus,select:focus{border-color:var(--ink)}.field{display:grid;gap:6px;font-weight:650;font-size:.9rem}.seg{display:inline-flex;border:1.5px solid var(--ink);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}.seg button{border:none;background:none;padding:6px 12px;cursor:pointer;font-weight:650;font-size:.88rem;border-right:1px solid var(--border)}.seg button:last-child{border-right:none}.seg button.on{background:var(--ink);color:var(--bg)}.seg button:disabled{cursor:default}.seg button:disabled:not(.on){color:var(--faint)}.seg-sm button{padding:3px 8px;font-size:.78rem}.switch{width:40px;height:22px;border-radius:11px;border:1.5px solid var(--ink);background:var(--surface-2);position:relative;cursor:pointer;flex-shrink:0;padding:0}.switch span{position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:var(--ink);transition:transform .15s}.switch.on{background:var(--ink)}.switch.on span{background:var(--bg);transform:translate(18px)}.switch:disabled{opacity:.5;cursor:default}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-sm);font-size:.78rem;font-weight:700}.pill.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}.pill.ok{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.badge{display:inline-flex;align-items:center;font-size:.68rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em;padding:1px 6px;border-radius:2px;border:1px solid currentColor;color:var(--muted)}.badge.solid{background:var(--ink);border-color:var(--ink);color:var(--bg)}.badge.new{background:var(--red);border-color:var(--red);color:#fff}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--surface);font-weight:650;font-size:.85rem;text-decoration:none;cursor:pointer}.chip.on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.team-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--team);flex-shrink:0}.toasts{position:fixed;bottom:20px;right:20px;display:grid;gap:8px;z-index:60;max-width:min(380px,calc(100vw - 40px))}.toast{padding:11px 15px;border-radius:var(--radius-sm);background:var(--surface);border:1.5px solid var(--ink);border-left:7px solid var(--team);box-shadow:var(--lift);font-weight:650;animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root{--mark-black: #171614;--mark-white: #ffffff;--mark-rim: var(--ink)}[data-theme=dark]{--mark-black: #0a0a0b;--mark-rim: #8b867c}.disc{width:72%;height:72%;border-radius:50%;border:2px solid var(--mark-rim)}.disc.black{background:var(--mark-black)}.disc.white{background:var(--mark-white)}.ng-wrap{display:grid;gap:14px;justify-items:center;width:100%}.ng{--clue: 0px;--bw: min(540px, calc(100cqw - 2 * var(--clue) - 4px));--cell: calc(var(--bw) / var(--cols));display:grid;grid-template-areas:"board"}.ng.with-outer{--clue: 30px;grid-template-areas:". top ." "left board right" ". bottom .";grid-template-columns:var(--clue) auto var(--clue);grid-template-rows:var(--clue) auto var(--clue)}.ng-board{position:relative;width:var(--bw);display:grid;border:2px solid var(--grid-strong);background:var(--cell-bg);-webkit-user-select:none;user-select:none;touch-action:manipulation}.ng-board:focus{outline:none}.ng-board:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 20%,transparent)}.ng-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;background:var(--cell-bg);cursor:pointer}.grid-lines{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;fill:none}.grid-hair{stroke:color-mix(in srgb,var(--grid-strong) 16%,transparent);stroke-width:1px}.grid-bold{stroke:var(--grid-strong)}.ng-cell.peer{background:var(--cell-peer)}.ng-cell.same{background:var(--cell-same)}.ng-cell.selected{background:var(--cell-sel)}.ng-board.readonly .ng-cell{cursor:default}.digit{font-size:calc(var(--cell) * .56);font-weight:500;line-height:1}.ng-cell.given .digit{font-weight:800}.ng-cell:not(.given) .digit{color:#2b59c3}[data-theme=dark] .ng-cell:not(.given) .digit{color:#8fb0ff}.ng-cell.conflict .digit{color:var(--danger)}.notes{position:absolute;inset:0;display:grid;padding:calc(var(--cell) * .08);font-size:calc(var(--cell) * .2);color:var(--muted);place-items:center;line-height:1}.cage-label~.notes{top:calc(var(--cell) * .24)}.cage-line{position:absolute;border:1.5px dashed var(--muted);pointer-events:none}.cage-line.bad{border-color:var(--danger)}.cage-label{position:absolute;top:2px;left:3px;z-index:1;padding:0 1px;font-size:calc(var(--cell) * .22);font-weight:700;line-height:1;background:inherit}.cage-label.bad{color:var(--danger)}.ng-edge{position:absolute;z-index:2;display:grid;place-items:center;transform:translate(-50%,-50%);pointer-events:none}.ineq{padding:0 2px;border-radius:4px;background:var(--cell-bg);font-size:calc(var(--cell) * .34);font-weight:800;line-height:1}.ineq.bad{color:var(--danger)}.kropki-dot{width:calc(var(--cell) * .24);height:calc(var(--cell) * .24);border-radius:50%;border:1.5px solid var(--mark-rim)}.kropki-dot.white{background:var(--mark-white)}.kropki-dot.black{background:var(--mark-black)}.ng-strip{display:grid;grid-template-columns:repeat(var(--cols),1fr);place-items:center;font-size:min(20px,calc(var(--cell) * .45));font-weight:750}.ng-strip.vertical{grid-template-columns:1fr;grid-template-rows:repeat(var(--rows),1fr)}.ng-strip .ok{color:var(--faint)}.ng-strip .bad{color:var(--danger)}.ng-cell.blocked{background:var(--surface-3);cursor:default}.kakuro-clue,.kakuro-wall{position:absolute;inset:0}.kakuro-clue{background:linear-gradient(to top right,transparent calc(50% - .75px),var(--border-strong) 50%,transparent calc(50% + .75px));font-size:calc(var(--cell) * .27);font-weight:750;line-height:1}.kc-across{position:absolute;top:10%;right:10%}.kc-down{position:absolute;bottom:10%;left:10%}.kc-across.ok,.kc-down.ok{color:var(--faint)}.kc-across.bad,.kc-down.bad{color:var(--danger)}.numpad{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;max-width:540px}.numpad .btn{min-width:44px}.sg-board{position:relative;width:var(--bw);display:grid;border:2px solid var(--grid-strong);border-radius:14px;overflow:hidden;background:var(--cell-bg);-webkit-user-select:none;user-select:none;touch-action:none}.sg-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;background:var(--cell-bg);cursor:pointer;font-size:calc(var(--cell) * .5);font-weight:700;line-height:1}.sg-cell.locked,.sg-board.readonly .sg-cell{cursor:default}.sg-board:not(.custom) .sg-cell.v1{background:var(--ink);color:var(--paper)}.sg-board.regioned:not(.custom) .sg-cell.v1{background:color-mix(in srgb,var(--ink) 60%,var(--cell-bg))}.sg-cell.bad{box-shadow:inset 0 0 0 calc(var(--cell) * .08) var(--danger)}.sg-dot{width:calc(var(--cell) * .16);height:calc(var(--cell) * .16);border-radius:50%;background:var(--faint)}.sg-clue{font-weight:750}.sg-cell.clue-done .sg-clue{color:var(--faint)}.sg-cell.clue-bad .sg-clue{color:var(--danger)}.sg-board:not(.custom) .sg-cell.v1.clue-done .sg-clue{color:color-mix(in srgb,var(--paper) 55%,var(--ink))}.sg-info{font-weight:700;color:var(--muted)}.sg-info.bad{color:var(--danger)}.ng-strip .idx{color:var(--faint);font-size:.8em;font-weight:600}.emoji{font-size:calc(var(--cell) * .6);line-height:1}.sg-num{display:grid;place-items:center;width:78%;height:78%;border-radius:50%}.sg-num.ringed{box-shadow:inset 0 0 0 2px var(--text)}.sg-board:not(.custom) .sg-cell.v1 .sg-num{color:color-mix(in srgb,var(--paper) 45%,var(--ink))}.sg-cell .disc{width:74%;height:74%}.sg-cell.given .disc{box-shadow:inset 0 0 0 3px var(--cell-given)}.sg-cell.given{background:var(--cell-given)}.star{font-size:calc(var(--cell) * .62);color:#e0a100}.sg-cell.tinted{background:color-mix(in srgb,var(--tint) 100%,var(--cell-bg))}[data-theme=dark] .sg-cell.tinted{background:color-mix(in srgb,var(--tint) 55%,var(--cell-bg))}.sg-cell.tinted .star{color:var(--ink)}.sg-cell.water{background:color-mix(in srgb,#3e8ed0 55%,var(--cell-bg))}.thermo{position:absolute;inset:0;--tube: var(--surface-3)}.thermo.full{--tube: #e5484d}.t-bulb,.t-core,.t-arm{position:absolute;background:var(--tube)}.t-bulb{inset:18%;border-radius:50%}.t-core{inset:32%;border-radius:3px}.t-arm.u,.t-arm.d{left:32%;right:32%}.t-arm.l,.t-arm.r{top:32%;bottom:32%}.t-arm.u{top:0;bottom:50%}.t-arm.d{top:50%;bottom:0}.t-arm.l{left:0;right:50%}.t-arm.r{left:50%;right:0}.thermo .sg-dot{position:absolute;left:42%;top:42%;background:var(--text)}.sg-cell.grass{background:color-mix(in srgb,#30a46c 22%,var(--cell-bg))}.sg-cell.sea{background:color-mix(in srgb,#3e8ed0 30%,var(--cell-bg))}.sg-cell.given{background-color:var(--cell-given)}.ship{position:absolute;inset:12%;background:var(--ink)}.fleet{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.fleet-ship{display:inline-flex;gap:2px}.fleet-ship span{width:14px;height:14px;border-radius:3px;background:var(--ink)}.fleet-ship.done span{background:var(--faint);opacity:.45}.tri{position:absolute;inset:0;background:var(--ink)}.tri.t1{clip-path:polygon(0 0,100% 0,0 100%)}.tri.t2{clip-path:polygon(0 0,100% 0,100% 100%)}.tri.t3{clip-path:polygon(100% 0,100% 100%,0 100%)}.tri.t4{clip-path:polygon(0 0,100% 100%,0 100%)}.sg-cell.wall{background:var(--ink);color:var(--paper)}.sg-cell.wall.ok{color:color-mix(in srgb,var(--paper) 45%,var(--ink))}.sg-cell.wall.bad{color:var(--danger)}.sg-cell.lit{background:color-mix(in srgb,#ffd23f 35%,var(--cell-bg))}.bulb{width:56%;height:56%;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff6c2,#f5b800 70%);box-shadow:0 0 calc(var(--cell) * .25) #ffd23f}.sg-cell.ms-hidden{background:var(--surface-3);box-shadow:inset 2px 2px color-mix(in srgb,#fff 50%,transparent),inset -2px -2px color-mix(in srgb,#000 15%,transparent)}.sg-cell.ms-open{background:var(--cell-bg)}.ms-n.n0{color:var(--faint);font-weight:600}.ms-n.n1{color:#2b59c3}.ms-n.n2{color:#30a46c}.ms-n.n3{color:#e5484d}.ms-n.n4{color:#6e3fbf}.ms-n.n5,.ms-n.n6,.ms-n.n7,.ms-n.n8{color:#b7472a}.room-label{position:absolute;top:2px;left:3px;font-size:calc(var(--cell) * .26)}.sg-board:not(.custom) .sg-cell.v1 .room-label{color:var(--paper)}.tapa-clue{display:grid;gap:0 4px;place-items:center;font-size:calc(var(--cell) * .3)}.tapa-clue.k1{font-size:calc(var(--cell) * .5)}.tapa-clue.k2,.tapa-clue.k3,.tapa-clue.k4{grid-template-columns:1fr 1fr}.masthead{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--rule)}.masthead-in{max-width:1320px;margin:0 auto;padding:9px 24px;display:flex;align-items:center;gap:28px}.brand{display:inline-flex;text-decoration:none}.nav{display:flex;gap:20px;font-weight:650;font-size:.92rem}.nav a{text-decoration:none;color:var(--muted);padding:4px 0;border-bottom:2px solid transparent}.nav a:hover{color:var(--text)}.nav a.active{color:var(--text);border-bottom-color:var(--ink)}.masthead-tools{margin-left:auto;display:flex;align-items:center;gap:8px}.page{flex:1;width:100%;max-width:1320px;margin:0 auto;padding:28px 24px 72px}.loading-note{padding:120px 0;text-align:center}.footer{border-top:3px double var(--rule);padding:22px 0 30px}.footer-in{max-width:1320px;margin:0 auto;padding:0 24px;display:flex;align-items:center;gap:22px;flex-wrap:wrap;color:var(--muted);font-size:.85rem}.footer-in p{flex:1;min-width:260px}.footer-links{display:flex;gap:16px}.footer-links a{color:var(--text);font-weight:650}.thumb{position:relative;aspect-ratio:1;overflow:hidden;display:grid;place-items:center;background:var(--surface)}.thumb.framed{border:1px solid var(--rule);border-radius:var(--radius);--pad: 6%}.thumb-fit{position:absolute;inset:var(--pad, 4%);display:flex;align-items:center;justify-content:center}.thumb-stage{flex-shrink:0;pointer-events:none;container-type:inline-size;display:flex;justify-content:center}.thumb .numpad,.thumb .bn-legend,.thumb .hz-info,.thumb .chess-status,.thumb .sg-info,.thumb .fleet,.thumb .ng-modes,.thumb .status-slot{display:none!important}.thumb-glyph{font-size:2rem;color:var(--faint)}.hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:56px;align-items:start;padding:26px 0 56px}.hero-copy{display:grid;gap:20px;align-content:start;padding-top:48px}.hero-title{font-size:clamp(2.6rem,5.2vw,4.4rem);line-height:.98;letter-spacing:-.02em}.hero-title-2{color:var(--red)}.lede{font-size:1.12rem;line-height:1.55;max-width:34em;color:var(--text)}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px}.join-form{display:flex;gap:6px}.code-input{width:9.5em;font-family:var(--display);font-weight:700;font-size:1.05rem;letter-spacing:.22em;text-transform:uppercase;padding:11px 12px}.code-input::placeholder{text-transform:none;letter-spacing:.02em;font-family:var(--font);font-weight:500;font-size:.95rem}.hero-note{color:var(--muted);font-size:.9rem}.demo{margin:0;display:grid;gap:10px}.demo-score{display:flex;align-items:baseline;gap:18px;font-weight:700;border-bottom:1px solid var(--rule);padding-bottom:8px}.demo-team{display:inline-flex;align-items:center;gap:7px}.demo-team b{font-size:1.5rem;min-width:1.4ch}.demo-goal{margin-left:auto;color:var(--muted);font-size:.85rem}.demo-board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.demo-cell{position:relative;border:1px solid var(--border);border-radius:3px;overflow:hidden;background:var(--surface);transition:border-color .2s}.demo-cell .thumb{--pad: 8%}.demo-cell.claimed{border-color:var(--team)}.demo-cell.claimed:after{content:"";position:absolute;inset:0;background:color-mix(in srgb,var(--team) 14%,transparent);box-shadow:inset 0 0 0 4px var(--team)}.demo-cell.last{animation:stamp .35s ease-out}@keyframes stamp{0%{transform:scale(1.12)}}.how,.shelf{padding:26px 0 40px}.how-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 56px}.how-cols>li{position:relative;display:grid;grid-template-rows:auto auto 1fr auto;gap:10px;padding:6px 0 10px}.how-cols>li+li:before{content:"";position:absolute;left:-28px;top:0;bottom:0;border-left:1px solid var(--border)}.how-num{font-size:3.2rem;line-height:.9;font-weight:700;color:var(--red)}.how-cols p{color:var(--muted)}.how-art{display:flex;align-items:center;gap:12px;min-height:120px;padding-bottom:8px}.mini-card{display:grid;place-items:center;width:64px;height:84px;border:1.5px solid var(--border-strong);border-radius:3px;font-size:1.4rem;color:var(--faint);background:var(--surface)}.mini-card.picked{border-color:var(--ink);color:var(--text);box-shadow:var(--lift)}.mini-arrow{font-family:var(--display);font-size:1.4rem;color:var(--muted)}.mini-board{display:grid;grid-template-columns:repeat(3,26px);gap:4px}.mini-board.big{grid-template-columns:repeat(3,34px)}.mini-board>span{aspect-ratio:1;border:1px solid var(--border-strong);border-radius:2px;background:var(--surface)}.mini-board .filled{background:var(--surface-3)}.mini-board .next{border:1.5px dashed var(--ink)}.mini-board .red{background:var(--red);border-color:var(--red)}.mini-board .blue{background:var(--blue);border-color:var(--blue)}.mini-score{position:relative;display:flex;width:100%;max-width:300px;height:26px;border:1.5px solid var(--ink);border-radius:2px;background:var(--surface)}.mini-score .red{background:var(--red)}.mini-score .blue{background:var(--blue);margin-left:auto}.mini-score .goal{position:absolute;left:52%;top:-6px;bottom:-6px;border-left:2px solid var(--ink)}.link-arrow{display:inline-flex;align-items:center;gap:6px;font-weight:700;text-decoration:none}.link-arrow:hover{text-decoration:underline}.shelf-lede{max-width:46em;margin-bottom:22px}.shelf-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px 36px}.shelf-family{position:relative;display:grid;align-content:start;gap:10px}.shelf-family+.shelf-family:before{content:"";position:absolute;left:-18px;top:0;bottom:0;border-left:1px solid var(--border)}.shelf-art{display:block;border:1px solid var(--border);border-radius:3px;overflow:hidden}.shelf-art .thumb{--pad: 10%}.shelf-art:hover{border-color:var(--ink)}.shelf-names{font-size:.88rem;color:var(--muted);line-height:1.45}.page-head{display:grid;gap:12px;padding:8px 0 28px;border-bottom:1px solid var(--rule);margin-bottom:28px}.page-head h1{font-size:clamp(2.2rem,4.5vw,3.4rem)}.library-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-top:6px}.search{max-width:260px}.library-family{margin-bottom:36px}.type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.type-card{display:grid;grid-template-rows:auto 1fr;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-decoration:none;overflow:hidden;transition:transform .08s,box-shadow .08s,border-color .08s}.type-card:hover{border-color:var(--ink);box-shadow:var(--lift);transform:translate(-1px,-1px)}.type-card .thumb{--pad: 9%;border-bottom:1px solid var(--border)}.type-card-text{padding:12px 14px 14px;display:grid;gap:5px;align-content:start}.type-card h3{display:flex;align-items:center;gap:8px}.type-card p{color:var(--muted);font-size:.88rem;line-height:1.4}.type-sizes{font-size:.78rem;font-weight:700;color:var(--muted)}.rules-card{display:grid;grid-template-columns:minmax(220px,380px) minmax(0,1fr);gap:36px;align-items:start}.rules-card.no-example{grid-template-columns:1fr}.rules-example{margin:0;display:grid;gap:10px;justify-items:center}.rules-example .thumb{width:100%}.rules-text{display:grid;gap:10px;align-content:start}.rules-title{font-size:2.2rem;display:flex;align-items:center;gap:10px}.rules-glyph{font-size:.8em;color:var(--muted)}.rules-gist{font-size:1.1rem;font-family:var(--display);font-weight:600;border-left:4px solid var(--red);padding-left:12px;margin:2px 0 6px}.rules-text .label{margin:8px 0 0}.rules-list{counter-reset:rule;display:grid;gap:8px}.rules-list li{counter-increment:rule;display:grid;grid-template-columns:1.8em 1fr;line-height:1.45}.rules-list li:before{content:counter(rule);font-family:var(--display);font-weight:700;color:var(--red)}.controls-list{display:grid;gap:5px;color:var(--muted);font-size:.92rem}.controls-list li{padding-left:1.2em;position:relative}.controls-list li:before{content:"—";position:absolute;left:0}.rules-cols{display:grid;gap:10px}.rules-card.compact .rules-cols{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:24px}.rules-card.compact .rules-list{gap:4px;font-size:.92rem}.rules-card.compact .rules-title{font-size:1.5rem}.rules-card.compact .rules-gist{font-size:1rem}.crumbs{font-size:.85rem;color:var(--muted);margin-bottom:18px}.crumbs a{color:var(--text);font-weight:650}.practice{margin-top:44px}.practice-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}.practice-board{display:grid;gap:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:16px}.practice-status{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.practice-clock{font-size:1.6rem;font-weight:700}.pager{display:flex;justify-content:space-between;margin-top:40px;padding-top:14px;border-top:1px solid var(--rule);font-weight:700}.pager a{display:inline-flex;align-items:center;gap:6px;text-decoration:none}.pager a:hover{text-decoration:underline}.modal{border:1.5px solid var(--ink);border-radius:var(--radius);padding:0;background:var(--surface);color:var(--text);width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 48px);box-shadow:6px 6px 0 var(--ink)}.modal.wide{width:min(980px,calc(100vw - 32px))}.modal::backdrop{background:#14120e73}.modal-body{position:relative;padding:26px 28px 28px}.modal-close{position:absolute;top:12px;right:12px}.join-card{justify-items:start}.invite-info{display:grid;gap:2px}.invite-what a{color:var(--text);font-weight:650}.match-facts{margin:0;display:grid;gap:8px}.match-facts div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dotted var(--border);padding-bottom:6px}.match-facts dt{color:var(--muted);font-size:.88rem}.match-facts dd{margin:0;font-weight:700;text-align:right}.join-card .field,.join-card .btn{width:100%}.code-tiles{display:inline-flex;gap:4px}.code-tiles .tile{font-size:1.5rem}.code-tiles.lg .tile{font-size:2rem}.room-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--rule)}.room-id{display:flex;align-items:center;gap:14px}.room-actions{display:flex;gap:8px}.invite-hint{margin-top:14px;padding:10px 14px;border-left:4px solid var(--red);background:var(--surface);font-weight:600}.lobby{display:grid;gap:0}.lobby-grid{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:32px;align-items:start;padding:22px 0 24px}.lobby-people{display:grid;gap:18px}.name-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.name-bar input{width:240px;font-weight:700}.name-bar.nudge input{border-color:var(--red)}.name-hint{color:var(--red);font-size:.85rem;font-weight:600}.team-columns{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.team-columns.n3{grid-template-columns:repeat(3,1fr)}.team-columns.n4{grid-template-columns:repeat(2,1fr)}.team-col{border:1px solid var(--border);border-top:6px solid var(--team);border-radius:var(--radius);background:var(--surface);padding:14px 16px 16px;display:grid;gap:10px;align-content:start;min-height:190px}.team-col.mine{border-color:var(--ink);border-top-color:var(--team);box-shadow:var(--lift)}.team-col.ffa{--team: var(--ink)}.team-col-head{display:flex;align-items:baseline;gap:10px}.team-col-head h3{flex:1;font-size:1.3rem}.team-join{margin-top:auto}.player-list{display:grid;gap:4px}.player-row{display:flex;align-items:center;gap:9px;min-height:34px}.player-row.offline{opacity:.5}.avatar{width:28px;height:28px;border-radius:3px;display:grid;place-items:center;font-family:var(--display);font-weight:700;background:var(--team, var(--ink));color:#fff;flex-shrink:0}.player-row.you .player-name{font-weight:700}.player-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.captain{display:inline-flex;align-items:center;gap:3px;font-size:.75rem;font-weight:750;color:var(--warn)}.row-actions{display:none;gap:10px}.player-row:hover .row-actions,.player-row:focus-within .row-actions{display:inline-flex}.spectators{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding-top:12px;border-top:1px solid var(--border)}.spectator-list{display:flex;flex-wrap:wrap;gap:4px 14px}.spectator-list .avatar{--team: var(--faint)}.match{border:1.5px solid var(--ink);border-radius:var(--radius);background:var(--surface);padding:18px 20px 20px;display:grid;gap:18px;position:sticky;top:74px}.match-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--rule);padding-bottom:10px}.match-group-body{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.presets{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%}.preset{display:grid;gap:2px;text-align:left;padding:10px 12px;border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.preset b{font-family:var(--display);font-size:1.1rem}.preset span{font-size:.78rem;color:var(--muted)}.preset.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);background:var(--surface-2)}.preset:disabled{cursor:default}.custom-rows{width:100%;display:grid;gap:8px;padding-top:4px}.hint{width:100%;font-size:.85rem;color:var(--muted)}.pool-line{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px}.pool-line b{font-size:1.3rem}.advanced{border-top:1px solid var(--border);padding-top:12px}.advanced summary{cursor:pointer;font-weight:700;font-size:.9rem}.advanced[open] summary{margin-bottom:12px}.advanced .setting-row+.setting-row{margin-top:10px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.setting-label{display:grid;font-weight:650;font-size:.9rem}.setting-label small{font-weight:500;color:var(--muted)}.start-bar{position:sticky;bottom:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 0;background:var(--bg);border-top:1px solid var(--rule)}.start-summary{display:grid;gap:2px}.match-summary{font-weight:700;font-size:1.05rem}.start-go{display:flex;align-items:center;gap:14px}.start-blocker{color:var(--muted);font-size:.88rem;max-width:320px;text-align:right}.pool{display:grid;gap:16px}.pool-head{display:flex;justify-content:space-between;gap:16px;padding-right:40px}.pool-count{font-size:1rem;color:var(--muted);white-space:nowrap}.pool-count b{font-size:2rem;color:var(--text)}.pool-family-head{display:flex;align-items:baseline;gap:14px;border-bottom:1px solid var(--rule);padding-bottom:6px;margin-bottom:10px}.pool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}.pool-type{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:10px;padding:8px 10px;border:1.5px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;opacity:.55}.pool-type.on{opacity:1;border-color:var(--ink)}.pool-type input{width:auto;accent-color:var(--ink)}.pool-glyph{font-size:1.3rem;width:1.4em;text-align:center}.pool-text{display:grid;line-height:1.25}.pool-text small{color:var(--muted);font-size:.76rem}.pool-rules{font-size:.75rem;color:var(--muted)}.board{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:5px}.bcell{position:relative;aspect-ratio:1;display:grid;grid-template-rows:1fr auto auto;justify-items:center;align-items:end;padding:6px 4px;border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);text-align:center;font:inherit;color:inherit;min-width:0;overflow:hidden}button.bcell:not(:disabled){cursor:pointer}button.bcell:not(:disabled):hover{border-color:var(--ink)}.bcell.empty{border-style:dashed;border-color:var(--border);background:transparent}.bcell.empty.next{border-color:var(--ink)}.bcell-glyph{font-size:1.5rem;line-height:1;align-self:center}.bcell-name{font-weight:700;font-size:.74rem;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bcell-size{font-size:.68rem;color:var(--muted)}.board.drafting .bcell:not(.empty):before{content:"";position:absolute;top:0;left:0;border-style:solid;border-width:12px 12px 0 0;border-color:var(--team) transparent transparent transparent}.bcell.latest{border-color:var(--ink);box-shadow:var(--lift);animation:stamp .3s ease-out}.bcell.claimed{background:var(--team);border-color:var(--team);color:#fff}.bcell.claimed .bcell-size{color:#fffc}.bcell.claimed.mine{box-shadow:inset 0 0 0 2px #ffffff8c}.bcell-owner{position:absolute;top:4px;right:5px;font-family:var(--display);font-weight:700;font-size:.85rem}.bcell.selected{outline:3px solid var(--ink);outline-offset:2px;z-index:1}.bcell-presence{position:absolute;top:3px;right:3px;display:flex;gap:2px}.bcell-presence span{width:16px;height:16px;border-radius:2px;display:grid;place-items:center;font-size:.62rem;font-weight:800;background:var(--team, var(--ink));color:#fff}.board.compact{gap:4px}.board.compact .bcell{padding:4px 2px}.board.compact .bcell-glyph{font-size:1.25rem}.board.compact .bcell-name{font-size:.68rem}.bcell-coord{position:absolute;top:3px;left:4px;font-size:.58rem;font-weight:800;color:var(--faint)}.bcell.claimed .bcell-coord{color:#ffffffbf}.board.compact .bcell-size{font-size:.58rem;line-height:1}.scorebar{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 24px;flex:1;min-width:0}.score-team{display:grid;gap:4px}.score-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.score-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-value{font-size:2.2rem;font-weight:700;line-height:1;color:var(--team)}.score-track{position:relative;height:10px;border:1.5px solid var(--ink);border-radius:2px;background:var(--surface)}.score-fill{display:block;height:100%;background:var(--team);transition:width .3s}.score-goal{position:absolute;top:-5px;bottom:-5px;border-left:2px solid var(--ink)}.draft{display:grid;gap:18px}.draft-band{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 22px;border:1.5px solid var(--ink);border-left:12px solid var(--team);border-radius:var(--radius);background:var(--surface)}.draft.my-pick .draft-band{background:var(--team);border-color:var(--ink);color:#fff;box-shadow:var(--lift)}.draft.my-pick .draft-band p,.draft.my-pick .draft-band .kicker{color:#ffffffd9}.draft.my-pick .draft-clock .num.hurry{color:#fff;text-decoration:underline 3px}.draft.my-pick .draft-clock-bar{border-color:#fff}.draft.my-pick .draft-clock-bar span{background:#fff}.draft:not(.my-pick) .option-main{opacity:.8}.draft-band-text{display:grid;gap:4px}.draft-band h1{font-size:clamp(1.8rem,3.4vw,2.6rem)}.draft.my-pick .draft-band h1{color:#fff}.draft-band p{color:var(--muted)}.draft-clock{display:grid;justify-items:end;gap:6px;min-width:140px}.draft-clock .num{font-size:3.4rem;font-weight:700;line-height:1}.draft-clock .num.hurry{color:var(--danger)}.draft-clock-bar{width:140px;height:8px;border:1.5px solid var(--ink);border-radius:2px;overflow:hidden}.draft-clock-bar span{display:block;height:100%;background:var(--team);transition:width .2s linear}.draft-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;max-width:1080px;width:100%;margin:0 auto}.draft-options.n3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:1100px}.draft-options.n4{grid-template-columns:repeat(4,minmax(0,1fr));max-width:1240px}.option{display:grid;gap:6px;justify-items:center}.option-main{position:relative;width:100%;display:grid;grid-template-columns:42% 1fr;gap:16px;align-items:center;padding:14px;border:1.5px solid var(--ink);border-radius:var(--radius);background:var(--surface);text-align:left;font:inherit;color:inherit;transition:transform .08s,box-shadow .08s}.option-main[aria-disabled=true]{border-color:var(--border-strong)}.option.pickable .option-main{cursor:pointer}@media(hover:hover){.option.pickable .option-main:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--team)}}.option.pickable .option-main:active{box-shadow:2px 2px 0 var(--team)}.option-main .thumb{border:1px solid var(--border);border-radius:3px;--pad: 6%}.option-text{display:grid;gap:8px}.option-name{font-family:var(--display);font-weight:700;font-size:1.6rem;line-height:1.05}.option-size{font-family:var(--font);font-size:.85rem;font-weight:700;color:var(--muted);white-space:nowrap}.option-gist{color:var(--muted);font-size:.95rem;line-height:1.4}.option-new{position:absolute;top:10px;right:10px;background:var(--surface);color:var(--red)}.option-key{position:absolute;bottom:10px;right:10px}.draft-note{text-align:center;color:var(--muted);font-size:.85rem}.draft-lower{display:grid;grid-template-columns:minmax(0,520px) minmax(0,1fr);gap:32px;align-items:start;padding-top:16px;border-top:1px solid var(--rule)}.draft-side{display:grid;gap:12px;align-content:start}.draft-teams{display:flex;flex-wrap:wrap;gap:8px}.team-chip{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.team-chip.active{border-color:var(--team);box-shadow:inset 4px 0 0 var(--team)}.pick-log{display:grid;gap:4px;max-height:340px;overflow:auto}.pick-log li{display:flex;align-items:center;gap:8px;font-size:.9rem;padding:3px 0;border-bottom:1px dotted var(--border)}.pick-log b{flex:1}.host-menu{position:relative;align-self:center}.host-menu summary{list-style:none}.host-menu summary::-webkit-details-marker{display:none}.host-menu-body{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:240px;display:grid;gap:10px;padding:12px;background:var(--surface);color:var(--text);border:1.5px solid var(--ink);border-radius:var(--radius);box-shadow:var(--lift)}.host-tag{font-size:.72rem;font-weight:700;color:var(--muted);text-transform:lowercase;font-variant:small-caps;letter-spacing:.04em}.stage-screen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,460px);gap:40px;align-items:center;padding:30px 0}.stage-card{display:grid;gap:12px}.stage-card h1{font-size:clamp(2rem,4vw,3rem)}.prep-count{font-size:4rem;font-weight:700;line-height:1}.prep-count span{font-size:1.6rem;color:var(--muted)}.prep-bar{height:12px;max-width:420px;border:1.5px solid var(--ink);border-radius:2px;overflow:hidden}.prep-bar span{display:block;height:100%;background:var(--ink);transition:width .3s}.game,.results{display:grid;gap:18px}.game-top{display:flex;gap:24px;align-items:stretch;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--rule)}.clock{display:grid;justify-items:end;align-content:center;gap:2px;min-width:170px}.clock-time{font-size:2.6rem;font-weight:700;line-height:1}.clock.overtime .clock-time,.clock.overtime .kicker{color:var(--danger)}.clock-hint{font-size:.8rem;color:var(--muted)}.game-body{display:grid;grid-template-columns:minmax(280px,400px) minmax(0,1fr);gap:26px;align-items:start}.game-side{display:grid;gap:14px;position:sticky;top:74px}.side-hint{font-size:.8rem;color:var(--muted)}.game-main{min-width:0}.empty-panel{display:grid;place-items:center;align-content:center;gap:12px;min-height:420px;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius);padding:24px}.countdown-num{font-size:8rem;font-weight:700;line-height:1;animation:stamp .35s ease-out}.feed ol{display:grid;gap:4px}.feed li{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:8px;font-size:.85rem}.feed-time{color:var(--muted);font-size:.8rem}.puzzle-panel{display:grid;gap:12px;border:1.5px solid var(--ink);border-radius:var(--radius);background:var(--surface);padding:16px 18px 20px}.puzzle-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid var(--border)}.puzzle-title{display:flex;align-items:baseline;gap:10px}.puzzle-title h2{font-size:1.7rem}.puzzle-glyph{font-size:1.3rem;color:var(--muted)}.puzzle-size{font-weight:700;color:var(--muted)}.puzzle-actions,.solver-tools{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.btn.asking{border-color:var(--danger);color:var(--danger)}.panel-rules{display:grid;gap:12px;justify-items:start;padding:14px 16px;background:var(--surface-2);border-radius:var(--radius-sm)}.banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:9px 14px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--team) 14%,var(--surface));border-left:5px solid var(--team);font-weight:650}.banner.subtle{--team: var(--faint)}.banner.warn{--team: var(--warn)}.banner.ok{--team: var(--ok)}.status-slot{min-height:44px;display:grid;align-content:center}.puzzle-stage{container-type:inline-size;display:flex;justify-content:center;padding:6px 0;overflow-x:auto}.result-banner{display:grid;gap:12px;justify-items:center;text-align:center;padding:30px 24px;border:1.5px solid var(--ink);border-radius:var(--radius);background:var(--surface)}.result-banner.won{border-top:12px solid var(--team);background:color-mix(in srgb,var(--team) 9%,var(--surface))}.result-banner h1{font-size:clamp(2.4rem,5vw,3.8rem)}.result-banner.won h1{color:var(--team)}.result-reason{color:var(--muted)}.result-banner .scorebar{width:100%;max-width:640px;text-align:left}.result-actions{margin-top:6px}.leaderboard{display:grid;gap:4px}.leaderboard li{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;padding:4px 0;border-bottom:1px dotted var(--border)}.lb-solves{font-size:1.3rem;font-weight:700}.playground{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px;align-items:start}.playground-list{display:grid;gap:12px}.playground-list .chip{padding:2px 9px}.playground .puzzle-panel .row{gap:8px}@media(max-width:960px){.hero{grid-template-columns:1fr;gap:36px}.demo{max-width:560px}.lobby-grid,.game-body,.draft-lower,.stage-screen,.playground{grid-template-columns:1fr}.match,.game-side{position:static}.game-side{order:2}.shelf-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.shelf-family:before{display:none}}@media(max-width:760px){.masthead-in{gap:14px;padding:8px 14px}.nav{gap:12px;font-size:.85rem}.nav a:first-child,.nav a:last-child{display:none}.masthead-tools{gap:5px}.logo-sm .tile{font-size:.68rem}.page{padding:18px 14px 56px}.hero-copy{padding-top:0}.join-form,.hero-actions .btn.xl{width:100%}.join-form .code-input{flex:1}.how-cols{grid-template-columns:1fr}.how-cols>li:before{display:none}.shelf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rules-card,.team-columns,.team-columns.n3,.draft-options,.draft-options.n3,.draft-options.n4{grid-template-columns:1fr}.option-main{grid-template-columns:34% 1fr}.presets{grid-template-columns:1fr}.draft-band{flex-direction:column;align-items:flex-start}.draft-clock{justify-items:start}}@media(max-width:480px){.nav{display:none}}.og{box-sizing:border-box;width:1200px;height:630px;display:grid;grid-template-columns:minmax(0,1fr) 486px;gap:60px;padding:56px 64px 52px;background:var(--bg);border-bottom:10px solid var(--ink);overflow:hidden}.og-copy{display:grid;grid-template-rows:auto 1fr auto;gap:32px}.og-copy .logo .tile{font-size:1.5rem}.og-text{display:grid;gap:18px;align-content:center}.og-title{font-size:4.25rem}.og-lede{font-size:1.3rem;line-height:1.45}.og-foot{display:flex;align-items:baseline;gap:16px;border-top:1px solid var(--rule);padding-top:14px;font-size:1.05rem;color:var(--muted)}.og-foot b{font-size:1.4rem;color:var(--text)}.og .demo{align-self:center}.panel-rules-actions{display:flex;flex-wrap:wrap;gap:8px}.example-modal{display:grid;gap:10px;width:min(420px,100%)}.example-modal h2{font-size:1.5rem}.solution-view{display:grid;gap:14px}.move-list{display:grid;gap:6px}.move-list ol{display:flex;flex-wrap:wrap;gap:4px 6px;margin:0;padding:0;list-style:none}.move-list li>span,.move-list button{display:inline-block;padding:3px 7px;border:1px solid var(--border);border-radius:3px;background:var(--surface);color:var(--text);font:inherit;font-family:var(--font);font-weight:700;font-size:.9rem;font-variant-numeric:tabular-nums}.move-list button{cursor:pointer}.move-list button.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}.move-no{color:var(--muted);font-weight:600}.move-list button.on .move-no{color:inherit;opacity:.7}.rules-example .move-list{width:100%}
