@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-display:swap;src:url(/assets/bricolage-grotesque-latin-Cre6nC2_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-display:swap;src:url(/assets/bricolage-grotesque-latin-ext-IcJDqblK.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--x:#ff5277;--o:#00b3ff;--win:#7cff8a;--primary:#ffe14d;--toggle-on:#b9a8ff;--danger:#ff8a8a;--on-color:#000;--border:3px;--cell:clamp(30px, 8.4vw, 50px);--gap:calc(var(--cell) * .1);--side:calc(var(--cell) * 4 + var(--gap) * 5);font-family:Bricolage Grotesque,ui-rounded,system-ui,sans-serif}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#e4e7ff;--dot:#00000024;--surface:#fff;--surface-2:#f1f2ff;--ink:#000;--muted:#3d3d5c;--line:#000;--shadow:#000;--slab:#ffe14d;--peer:#d9d2ff}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#15122b;--dot:#f3f0ff1f;--surface:#262147;--surface-2:#1d1938;--ink:#f3f0ff;--muted:#bdb6e6;--line:#f3f0ff;--shadow:#f3f0ff;--slab:#6c5ce7;--peer:#4b3f9e}[data-theme=candy]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#ffc8dd;--dot:#00000024;--surface:#fff;--surface-2:#ffe5ef;--ink:#000;--muted:#5c2a3d;--line:#000;--shadow:#000;--slab:#8ee3dd;--peer:#ffd1e3}[data-theme=mint]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#b6f0cf;--dot:#00000024;--surface:#fff;--surface-2:#e6fbef;--ink:#000;--muted:#24513a;--line:#000;--shadow:#000;--slab:#ff9f43;--peer:#fff1a8}[data-theme=midnight]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0b1a2e;--dot:#eaf4ff1f;--surface:#16304f;--surface-2:#10243d;--ink:#eaf4ff;--muted:#a9c2dd;--line:#eaf4ff;--shadow:#ff5277;--slab:#1f7a8c;--peer:#2b4f7a}[data-theme=snow]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#fff;--dot:#0000001a;--surface:#fff;--surface-2:#f6f6f6;--ink:#000;--muted:#555;--line:#000;--shadow:#000;--slab:#fff;--peer:#e8eeff}[data-theme=retro]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#f2cf9a;--dot:#2b1a1029;--surface:#fff6e6;--surface-2:#f8e3c2;--ink:#2b1a10;--muted:#6b4a2f;--line:#2b1a10;--shadow:#2b1a10;--slab:#e07a2f;--peer:#f5c26b}[data-theme=synthwave]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#1b0b3a;--dot:#ff6ec729;--surface:#2a1257;--surface-2:#200d45;--ink:#fdf0ff;--muted:#c9a6ff;--line:#ff6ec7;--shadow:#00e5ff;--slab:#4b1d8f;--peer:#5c2aa8}[data-theme=bloodmoon]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#170404;--dot:#ff78781f;--surface:#2e0a0c;--surface-2:#230709;--ink:#ffe3e3;--muted:#dba3a3;--line:#ffd0d0;--shadow:#c0001d;--slab:#7a0f1a;--peer:#5a1a20}[data-theme=coffee]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#1e140f;--dot:#f3e5d81a;--surface:#3b2a20;--surface-2:#2c1f17;--ink:#f3e5d8;--muted:#c7aa90;--line:#f3e5d8;--shadow:#c08552;--slab:#6f4e37;--peer:#57402f}[data-theme=batman]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0a0a0a;--dot:#ffffff14;--surface:#1c1c1c;--surface-2:#141414;--ink:#f2f2f2;--muted:#a6a6a6;--line:#f2f2f2;--shadow:#f2f2f2;--slab:#3a3a3a;--peer:#333;--x:#f2f2f2;--o:#9a9a9a;--win:#fff;--primary:#d4d4d4;--toggle-on:#bdbdbd;--danger:#8a8a8a}[data-theme=mono]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#e6e6e6;--dot:#00000029;--surface:#fff;--surface-2:#f2f2f2;--ink:#000;--muted:#4a4a4a;--line:#000;--shadow:#000;--slab:#bdbdbd;--peer:#dedede}*{box-sizing:border-box}body{min-height:100dvh;color:var(--ink);background:radial-gradient(var(--dot) 1.2px, transparent 1.6px) 0 0 / 22px 22px, var(--page);margin:0}button,input{font:inherit;color:inherit}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--o);outline-offset:2px}input{border:var(--border) solid var(--line);background:var(--surface);border-radius:8px;min-width:0;padding:.55rem .75rem;font-weight:600}input::placeholder{color:var(--muted);font-weight:400}.btn{border:var(--border) solid var(--line);background:var(--surface);min-height:2.6rem;color:var(--ink);box-shadow:3px 3px 0 var(--shadow);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:.45rem .85rem;font-weight:700;line-height:1.15;text-decoration:none;transition:translate 80ms,box-shadow 80ms,background .15s;display:inline-flex}.btn:hover:not(:disabled){box-shadow:4px 4px 0 var(--shadow);translate:-1px -1px}.btn:active:not(:disabled){box-shadow:0 0 0 var(--shadow);translate:3px 3px}.btn svg{flex:none}.btn-primary{background:var(--primary);color:var(--on-color);font-weight:800}.btn-small{min-height:2.1rem;box-shadow:2px 2px 0 var(--shadow);border-width:2px;padding:.25rem .65rem;font-size:.88rem}.btn-small:hover:not(:disabled){box-shadow:3px 3px 0 var(--shadow)}.btn-small:active:not(:disabled){translate:2px 2px}.btn-icon{width:2.6rem;padding:0}.btn-small.btn-icon{width:2.1rem}.tip{border:2px solid var(--line);background:var(--ink);max-width:min(20rem,100vw - 1rem);color:var(--surface);box-shadow:2px 2px 0 var(--shadow);pointer-events:none;border-radius:8px;margin:0;padding:.35rem .6rem;font-size:.82rem;font-weight:700;line-height:1.3;position:fixed;inset:auto;overflow:visible}[data-tip]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}button:disabled,input:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.app{max-width:74rem;padding:max(1.25rem, env(safe-area-inset-top)) 1rem 2.5rem;grid-template:"brand brand""stage panel""chat panel"1fr/minmax(0,1fr) 21rem;gap:1.75rem 2rem;margin:0 auto;display:grid}.brand{grid-area:brand;justify-content:space-between;align-items:center;gap:1rem;display:flex}.brand-links{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:.6rem;display:flex}.repo-link,.info-button{box-sizing:border-box;border:var(--border) solid var(--line);background:var(--surface);height:2.5rem;box-shadow:3px 3px 0 var(--shadow);color:var(--ink);cursor:pointer;border-radius:8px;flex:none;align-items:center;gap:.45rem;padding:.45rem .8rem;font-weight:800;text-decoration:none;transition:translate 80ms,box-shadow 80ms;display:inline-flex}.repo-link:hover,.info-button:hover{box-shadow:4px 4px 0 var(--shadow);translate:-1px -1px}.repo-link:active,.info-button:active{box-shadow:0 0 0 var(--shadow);translate:3px 3px}.brand h1{letter-spacing:-.05em;margin:0;font-size:clamp(2.4rem,7vw,3.6rem);font-weight:800;line-height:1}.home-link{color:inherit;text-decoration:none}.home-link:focus-visible{outline:3px solid var(--line);outline-offset:4px;border-radius:6px}.brand h1 span{border:var(--border) solid var(--line);background:var(--x);color:var(--on-color);box-shadow:4px 4px 0 var(--shadow);border-radius:8px;margin-left:.08em;padding:0 .14em .04em;display:inline-block;rotate:-5deg}.info-button{justify-content:center;width:2.5rem;padding:0}@media (width<=30rem){.repo-link span{display:none}.repo-link{justify-content:center;width:2.5rem;padding:0}}.info-panel{inset:max(.75rem, env(safe-area-inset-top)) auto auto 50%;box-sizing:border-box;border:var(--border) solid #000;background:var(--primary);width:min(100vw - 2rem,30rem);max-height:calc(100dvh - 2rem);color:var(--on-color);border-radius:12px;margin:0;padding:.8rem 1rem;line-height:1.4;position:fixed;overflow:auto;translate:-50%;box-shadow:5px 5px #000}.info-panel:popover-open{gap:.5rem;animation:.3s cubic-bezier(.34,1.56,.64,1) banner-in;display:grid}.info-panel h2{margin:0;font-size:1.05rem;font-weight:800}.info-panel h3{margin:.3rem 0 0;font-size:.95rem;font-weight:800}.info-panel :is(p,ul){margin:0;font-size:.9rem;font-weight:600}.info-panel ul{gap:.3rem;padding-left:1.2rem;display:grid}.info-close{justify-self:end}.info-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;display:flex}@keyframes banner-in{0%{translate:-50% -150%}}.segmented{border:var(--border) solid var(--line);background:var(--surface-2);box-shadow:3px 3px 0 var(--shadow);border-radius:10px;gap:.25rem;padding:.25rem;display:flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:2px solid #0000;border-radius:6px;flex:1;padding:.45rem .4rem;font-weight:600;line-height:1.15;transition:background .15s,color .15s}.segmented button:hover:not(:disabled):not([aria-pressed=true]){color:var(--ink);border-color:var(--line)}.segmented button[aria-pressed=true]{background:var(--ink);color:var(--surface);font-weight:800}.segmented button:disabled[aria-pressed=true]{opacity:1}.theme-picker{grid-template-columns:repeat(auto-fill,minmax(4.4rem,1fr));gap:.5rem;display:grid}.theme-picker button{border:2px solid var(--line);background:var(--surface);box-shadow:2px 2px 0 var(--shadow);cursor:pointer;border-radius:8px;gap:.3rem;padding:.35rem .35rem .3rem;font-size:.8rem;font-weight:700;transition:translate 80ms,box-shadow 80ms;display:grid}.theme-picker button:hover{box-shadow:3px 3px 0 var(--shadow);translate:-1px -1px}.theme-picker button:active{box-shadow:0 0 0 var(--shadow);translate:2px 2px}.theme-picker button[aria-pressed=true]{background:var(--primary);color:var(--on-color);font-weight:800}.theme-menu summary{border:var(--border) solid var(--line);background:var(--surface);box-shadow:3px 3px 0 var(--shadow);cursor:pointer;border-radius:10px;align-items:center;gap:.6rem;padding:.4rem .6rem;font-weight:800;list-style:none;display:flex}.theme-menu summary::-webkit-details-marker{display:none}.theme-menu summary:after{content:"";background:currentColor;width:1rem;height:1rem;margin-left:auto;transition:rotate .15s;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E") 50%/contain no-repeat}.theme-menu[open] summary:after{rotate:180deg}.theme-menu summary .swatch{width:3rem;height:1.9rem}.theme-menu .theme-picker{margin-top:.7rem}.swatch{border:2px solid #000;border-radius:5px;height:2.2rem;display:flex;overflow:hidden}.swatch span{background:var(--page);flex:1;place-items:center;display:grid}.swatch span:before{content:"";border:2px solid var(--line);background:var(--slab);width:1rem;height:1rem;box-shadow:2px 2px 0 var(--shadow);border-radius:3px}.stage{flex-direction:column;grid-area:stage;align-items:center;gap:1.1rem;min-width:0;display:flex;position:relative}.brand:has(>.status,>.page-title){flex-wrap:wrap;row-gap:.9rem}@media (width<64rem){.brand:has(>.status,>.page-title)>.brand-links{margin-left:auto}}.status{box-sizing:border-box;border:var(--border) solid var(--line);background:var(--surface);min-width:0;box-shadow:5px 5px 0 var(--shadow);text-align:center;text-wrap:balance;border-radius:10px;flex:100%;order:1;padding:.6rem 1.3rem;font-size:1.15rem;font-weight:800;transition:background .2s}@media (width>=64rem){.status{flex:0 28rem;order:0}}.page-title{letter-spacing:-.03em;flex:100%;order:1;margin:0;font-size:clamp(1.4rem,5vw,1.8rem);font-weight:800}@media (width>=64rem){.page-title{flex:auto;order:0}}body[data-turn=X] .status[data-state=playing]{background:var(--x);color:var(--on-color)}body[data-turn=O] .status[data-state=playing]{background:var(--o);color:var(--on-color)}.status[data-state=won],.status[data-state=timeout]{background:var(--win);color:var(--on-color);animation:.4s cubic-bezier(.34,1.56,.64,1) pop}.status[data-state=review]{background:var(--surface-2);color:var(--muted)}.board{gap:.5rem;max-width:100%;display:flex}.stage>.board:empty{min-height:calc(var(--side) * (.72 * 4 + .3) + .5rem * 3)}.board.thinking{cursor:progress}.layer{position:relative}.layer-label{border:2px solid var(--line);background:var(--surface);box-shadow:2px 2px 0 var(--shadow);white-space:nowrap;border-radius:6px;place-self:start;padding:.1rem .5rem;font-size:.8rem;font-weight:800}.grid{grid-template-columns:repeat(4, var(--cell));gap:var(--gap);padding:var(--gap);border:var(--border) solid var(--line);border-radius:calc(var(--cell) * .22);background:var(--slab);box-shadow:6px 6px 0 var(--shadow);display:grid}.stage:has(>.board.tower){cursor:grab;touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none}.stage[data-dragging]{cursor:grabbing}.board.tower{padding-block:0 calc(var(--side) * .3);flex-direction:column-reverse;align-items:center}.tower .layer{height:calc(var(--side) * .72);pointer-events:none;width:calc(var(--side) * 1.5);perspective:1400px;place-items:center;display:grid}.tower .layer-label{display:none}.tower .grid,.tower .plate{will-change:transform;grid-area:1/1;transition:transform .35s cubic-bezier(.34,1.3,.64,1)}.stage[data-dragging] .grid,.stage[data-dragging] .plate{transition:none}.tower .grid{box-shadow:none}.plate{display:none}.tower .plate{width:calc(var(--side) + var(--border) * 2);height:calc(var(--side) + var(--border) * 2);border-radius:calc(var(--cell) * .22);background:var(--shadow);display:block}.tower .cell,.tower .cell:hover,.tower .cell:focus-visible,.tower .cell:active{box-shadow:none}.board:not(.tower) :is(.base,.marks){display:none}.tower .grid:not(.base){background:0 0;border-color:#0000}.foot{width:var(--cell);height:var(--cell);border-radius:calc(var(--cell) * .16);background:var(--line)}.mark{width:var(--cell);height:var(--cell);position:relative}.tower .cell .piece{visibility:hidden}.tower .mark.x .piece,.tower .mark.o .piece{filter:drop-shadow(1px 0 0 var(--line)) drop-shadow(-1px 0 0 var(--line)) drop-shadow(0 1px 0 var(--line)) drop-shadow(0 -1px 0 var(--line))}.view-row{align-items:center;gap:.6rem;display:flex}.view-row .segmented{flex:1}.board.flat{--cell:clamp(24px, 8vw, 44px);justify-content:safe center;gap:1.25rem;max-width:100%;padding:.25rem .6rem .6rem .25rem;display:grid;overflow-x:auto}.flat.layout-grid{grid-template-columns:repeat(2,auto)}.flat.layout-row{--cell:clamp(20px, 3.4vw, 36px);grid-template-columns:repeat(4,auto)}.flat.layout-column{grid-template-columns:auto}.flat.layout-steps{flex-direction:column-reverse;align-items:flex-start;gap:.6rem;display:flex}.flat.layout-steps .layer{margin-left:calc(var(--i) * var(--cell) * 1.4)}.flat .layer{flex-direction:column;gap:.45rem;display:flex}.cell{pointer-events:auto;width:var(--cell);height:var(--cell);border:2px solid var(--line);border-radius:calc(var(--cell) * .16);background:var(--surface);box-shadow:2px 2px 0 var(--shadow);cursor:pointer;padding:0;transition:background .15s,translate 80ms,box-shadow 80ms;position:relative}.cell:hover,.cell:focus-visible{box-shadow:3px 3px 0 var(--shadow);outline:none;translate:-1px -1px}.cell:focus-visible{background:var(--peer)}.cell:active{box-shadow:0 0 0 var(--shadow);translate:2px 2px}.cell.peer{background:var(--peer)}.cell.last{border-style:dashed;border-width:4px}.piece{transition:scale .22s cubic-bezier(.34,1.56,.64,1);position:absolute;inset:14%;scale:0}:is(.cell,.mark).x .piece,:is(.cell,.mark).o .piece{filter:drop-shadow(1px 0 0 var(--line)) drop-shadow(-1px 0 0 var(--line)) drop-shadow(0 1px 0 var(--line)) drop-shadow(0 -1px 0 var(--line)) drop-shadow(2px 2px 0 var(--shadow));scale:1}.piece:before{content:"";position:absolute;inset:0}:is(.cell,.mark).x .piece:before{background:var(--x);clip-path:polygon(20% 0,50% 30%,80% 0,100% 20%,70% 50%,100% 80%,80% 100%,50% 70%,20% 100%,0 80%,30% 50%,0 20%)}:is(.cell,.mark).o .piece:before{border:calc(var(--cell) * .13) solid var(--o);border-radius:50%;inset:4%}.cell.win{background:var(--win);animation:.9s step-end infinite win-blink}.board.finished :is(.cell,.mark):not(.win) .piece{opacity:.35}.cell.shake{animation:.9s ease-out reject}.panel{border:var(--border) solid var(--line);background:var(--surface);box-shadow:8px 8px 0 var(--shadow);border-radius:14px;flex-direction:column;grid-area:panel;align-self:start;gap:1.1rem;padding:1.25rem;display:flex}.field{flex-direction:column;gap:.45rem;display:flex}.label{font-size:.9rem;font-weight:800}.score{text-align:center;grid-template-columns:repeat(3,1fr);gap:.6rem;display:grid}.score:empty{min-height:calc(.9rem + var(--border) * 2 + 1.7rem * 1.1 + 1.2rem)}.tally{border:var(--border) solid var(--line);background:var(--surface-2);box-shadow:3px 3px 0 var(--shadow);border-radius:10px;padding:.45rem .25rem}.tally.X{background:var(--x);color:var(--on-color)}.tally.O{background:var(--o);color:var(--on-color)}.tally b{font-size:1.7rem;font-weight:800;line-height:1.1;display:block}.tally span{font-size:.8rem;font-weight:600}.slot-row{align-items:stretch;gap:.6rem;display:grid}.slot-row>*{white-space:nowrap}.slot-row>[hidden]{visibility:hidden;display:flex!important}.actions{grid-template-columns:repeat(3,minmax(max-content,1fr));grid-template-areas:"new new new""swap sound voice"}#new-game{grid-area:new}.actions>.btn-icon{width:auto}#undo,#show-card{grid-area:swap}.sound-control{border:var(--border) solid var(--line);background:var(--surface);min-height:2.6rem;box-shadow:3px 3px 0 var(--shadow);border-radius:8px;grid-area:sound;display:flex;overflow:hidden}.sound-control #sound{flex:1}.sound-control button{cursor:pointer;background:0 0;border:0;place-items:center;padding:.4rem .6rem;display:grid}.sound-control button:hover{background:var(--surface-2)}.sound-control #sound-set{border-left:2px solid var(--line);padding-inline:.3rem}#voice{grid-area:voice;position:relative}#voice[aria-pressed=true]{background:var(--toggle-on);color:var(--on-color)}#voice[aria-pressed=true]:after{content:"";background:var(--muted);width:.5rem;height:.5rem;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;top:3px;right:3px}#voice[aria-pressed=true][data-state=listening]:after{background:var(--win);animation:1.2s ease-in-out infinite voice-pulse}@keyframes voice-pulse{50%{scale:1.4}}.voice-panel{gap:.3rem;width:min(100%,26rem);margin-inline:auto;display:grid}.voice-status{flex-wrap:wrap;justify-content:space-between;gap:0 .6rem;margin:0;font-size:.85rem;font-weight:700;display:flex}.voice-state{display:inline-grid}.voice-state>span{visibility:hidden;grid-area:1/1}.voice-state>[data-shown]{visibility:visible}.voice-status a{color:inherit;font-weight:600}.voice-panel #voice-recentre{justify-self:center}@media (pointer:coarse){.voice-panel #voice-recentre[hidden]{visibility:hidden;display:inline-flex!important}}.keypad .btn.place.voice-hold{background:linear-gradient(to right, var(--voice-hold-color,var(--x)) calc(var(--voice-hold,0) * 100%), var(--win) 0)}.keypad .btn.place[data-voice-mark=O]{--voice-hold-color:var(--o)}.sound-sets{border:var(--border) solid var(--line);background:var(--page);width:min(28rem,100vw - 2rem);max-height:min(40rem,100dvh - 2rem);color:var(--ink);box-shadow:6px 6px 0 var(--shadow);border-radius:12px;padding:1rem;overflow-y:auto}.sound-sets::backdrop{background:#00000059}.sound-sets-head{justify-content:space-between;align-items:center;display:flex}.sound-sets-head h2{margin:0;font-size:1.2rem}.sound-sets-note{color:var(--muted);margin:.3rem 0 .6rem;font-size:.85rem}.sound-set-group p{color:var(--muted);margin:0 0 .45rem;font-size:.78rem}.sound-set-group h3{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:.8rem 0 .15rem;font-size:.75rem}.sound-set-option{gap:.5rem;margin-bottom:.5rem;display:flex}.sound-set-choice{text-align:left;flex:1;justify-content:stretch;gap:.15rem;padding:.45rem .6rem;font-size:1rem;font-weight:400;display:grid}.sound-set-choice small{font-size:.78rem;line-height:1.25}.sound-set-choice[aria-pressed=true]{background:var(--primary);color:var(--on-color)}.btn.sound-set-play{flex:none;width:2.8rem;height:auto}.toggles{flex-wrap:wrap;gap:.6rem;display:flex}.toggles .btn{color:var(--muted);flex:1;padding-inline:.5rem;font-weight:600}.toggles .btn[aria-pressed=true]{background:var(--toggle-on);color:var(--on-color);font-weight:800}.field-head{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.lock svg{width:1rem;height:1rem}.lock[aria-pressed=true]{opacity:1;background:var(--primary);color:var(--on-color)}.train-link{border:var(--border) solid var(--line);background:var(--surface);box-shadow:3px 3px 0 var(--shadow);color:var(--ink);border-radius:8px;justify-content:center;align-items:center;gap:.5rem;padding:.55rem .85rem;font-weight:700;text-decoration:none;transition:translate 80ms,box-shadow 80ms,background .15s;display:flex}.train-link svg{width:1.25rem;height:1.25rem}.train-link:hover{box-shadow:4px 4px 0 var(--shadow);translate:-1px -1px}.train-link:active{box-shadow:0 0 0 var(--shadow);translate:3px 3px}.train-link.highlight{background:var(--primary);color:var(--on-color);font-weight:800;animation:.7s ease-in-out 3 train-pulse}@keyframes train-pulse{50%{box-shadow:6px 6px 0 var(--shadow);scale:1.04}}.help{color:var(--muted);font-size:.92rem}.help summary{cursor:pointer;color:var(--ink);font-weight:800}.help p{margin:.5rem 0 0;line-height:1.45}.help a{color:var(--ink);font-weight:800}.tuning fieldset{border:2px solid var(--line);border-radius:10px;margin:.8rem 0 0;padding:.6rem .7rem .7rem}.tuning legend{color:var(--ink);padding:0 .3rem;font-weight:800}.tuning label{justify-content:space-between;align-items:center;gap:.6rem;margin-top:.35rem;display:flex}.tuning input{text-align:right;flex:none;width:5.5rem;padding:.3rem .45rem}.tuning-reset{margin-top:.8rem}.online{border:var(--border) solid var(--line);background:var(--o);color:var(--on-color);box-shadow:4px 4px 0 var(--shadow);border-radius:12px;flex-direction:column;gap:.8rem;padding:.9rem;display:flex}.online .btn,.online input{color:#000;background:#fff;border-color:#000;box-shadow:3px 3px #000}.online .btn:hover:not(:disabled){box-shadow:4px 4px #000}.online input{box-shadow:none}.online-code{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.online-code b{letter-spacing:.2em;font-size:2.2rem;font-weight:800;line-height:1.1;display:block}.join-row{flex-wrap:wrap;gap:.5rem;display:flex}.join-row input{text-transform:uppercase;letter-spacing:.2em;flex:5rem}.board-hidden{aspect-ratio:1;border:var(--border) dashed var(--line);text-align:center;width:min(100%,22rem);color:var(--muted);background:repeating-linear-gradient(45deg, var(--dot) 0 2px, transparent 2px 14px), var(--surface);border-radius:14px;place-content:center;place-items:center;gap:.4rem;padding:1.5rem;font-weight:600;display:grid}.board-hidden strong{color:var(--ink);font-size:1.6rem;font-weight:800}.coords,.review{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.coords{flex-direction:column;gap:.55rem}.coords-head{justify-content:center;align-items:center;gap:.6rem;min-height:2.25rem;display:flex}.coords-title{font-size:.9rem;font-weight:800;line-height:1.2}.coords-hear{flex:none}.coords-slots{gap:.5rem;display:flex}.slot{border:var(--border) solid var(--line);background:var(--surface);border-radius:8px;justify-items:center;width:4.6rem;padding:.25rem .3rem .3rem;display:grid}.slot small{color:var(--muted);font-size:.75rem;font-weight:700}.slot b{min-height:1.6rem;font-size:1.4rem;font-weight:800;line-height:1.15}.slot.next{background:var(--primary);color:var(--on-color)}.slot.next small{color:var(--on-color)}.played-x .slot{background:var(--x);color:var(--on-color)}.played-o .slot{background:var(--o);color:var(--on-color)}.played-x .slot small,.played-o .slot small{color:var(--on-color)}.keypad{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.keypad .btn{min-width:2.9rem;min-height:2.9rem;padding:.4rem .6rem;font-size:1.2rem;font-weight:800}.keypad .btn.place{background:var(--win);color:var(--on-color)}.cell.aim{outline:3px solid var(--o);outline-offset:2px;background:var(--peer)}.review{border:var(--border) solid var(--line);background:var(--surface);box-shadow:4px 4px 0 var(--shadow);border-radius:12px;padding:.7rem .9rem;font-weight:700}.review-buttons{flex-wrap:wrap;gap:.45rem;display:flex}.chat{border:var(--border) solid var(--line);background:var(--surface);width:min(100%,26rem);box-shadow:4px 4px 0 var(--shadow);border-radius:12px;flex-direction:column;grid-area:chat;place-self:start center;gap:.5rem;padding:.7rem;display:flex}.chat-title{font-size:.9rem;font-weight:800}.chat-log{border:2px solid var(--line);background:var(--surface-2);border-radius:8px;flex-direction:column;gap:.4rem;height:9rem;margin:0;padding:.5rem;list-style:none;display:flex;overflow-y:auto}.chat-empty{color:var(--muted);margin:auto;font-weight:600}.chat-group{align-self:flex-start;align-items:flex-end;gap:.4rem;max-width:90%;display:flex}.chat-group.mine{flex-direction:row-reverse;align-self:flex-end}.chat-group>.avatar{flex-shrink:0;width:1.75rem;height:1.75rem}.chat-group-body{flex-direction:column;align-items:flex-start;gap:.2rem;min-width:0;display:flex}.chat-group.mine .chat-group-body{align-items:flex-end}.chat-group-body b{padding-inline:.2rem;font-size:.75rem}.chat-message{border:2px solid var(--line);max-width:100%;box-shadow:2px 2px 0 var(--shadow);color:var(--on-color);overflow-wrap:anywhere;border-radius:8px 8px 8px 2px;padding:.25rem .6rem .3rem}.chat-group.mine .chat-message{border-radius:8px 8px 2px}.from-x .chat-message{background:var(--x)}.from-o .chat-message{background:var(--o)}.chat-form{gap:.5rem;display:flex}.chat-form input{flex:1}.chat-notice{z-index:10;top:max(.75rem, env(safe-area-inset-top));border:var(--border) solid #000;background:var(--primary);width:min(100vw - 2rem,26rem);color:var(--on-color);text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:.6rem;padding:.55rem .8rem;animation:.3s cubic-bezier(.34,1.56,.64,1) notice-in;display:flex;position:fixed;left:50%;translate:-50%;box-shadow:5px 5px #000}.chat-notice.from-x{background:var(--x)}.chat-notice.from-o{background:var(--o)}.chat-notice-icon{flex:none}.chat-notice-body{flex:1;min-width:0;display:grid}.chat-notice-body b{font-size:.8rem}.chat-notice-body span{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.chat-notice small{color:#000;background:#fff;border:2px solid #000;border-radius:6px;padding:.2rem .5rem;font-weight:800}@keyframes notice-in{0%{translate:-50% -150%}}.limits{border:var(--border) solid var(--line);background:var(--surface-2);box-shadow:3px 3px 0 var(--shadow);border-radius:10px}.limit{gap:.5rem;padding:.6rem .7rem;display:grid}.limit+.limit{border-top:2px solid var(--line)}.limit-switch{cursor:pointer;justify-content:space-between;align-items:center;gap:.6rem;font-weight:700;display:flex}.limit-switch input{appearance:none;border:2px solid var(--line);background:var(--surface);width:44px;height:24px;box-shadow:2px 2px 0 var(--shadow);cursor:pointer;border-radius:4px;flex:none;margin:0;padding:0;transition:background .15s;position:relative}.limit-switch input:after{content:"";box-sizing:border-box;border:2px solid var(--line);background:var(--surface-2);border-radius:2px;width:16px;height:16px;transition:translate .15s,background .15s;position:absolute;top:2px;left:2px}.limit-switch input:checked{background:var(--toggle-on)}.limit-switch input:checked:after{background:var(--surface);translate:20px}.limit-options{border:2px solid var(--line);background:var(--surface);border-radius:8px;gap:.2rem;padding:.2rem;display:flex}.limit-options button,.limit-custom{min-width:0;color:var(--muted);cursor:pointer;background:0 0;border:2px solid #0000;border-radius:5px;flex:1;padding:.3rem .2rem;font-size:.9rem;font-weight:700;transition:background .15s,color .15s}.limit-options button:hover:not(:disabled):not([aria-pressed=true]){color:var(--ink);border-color:var(--line)}.limit-options button[aria-pressed=true],.limit-custom.active{background:var(--ink);color:var(--surface);font-weight:800}.limit-custom{border:2px dashed var(--line);cursor:text;flex:1.6;justify-content:center;align-items:center;gap:.15rem;padding-inline:.35rem;display:flex}.limit-custom input{width:4ch;min-width:0;color:inherit;text-align:right;font-variant-numeric:tabular-nums;appearance:textfield;background:0 0;border:0;border-radius:0;padding:0;font-weight:800}.limit-custom input::-webkit-inner-spin-button{appearance:none;margin:0}.limit-custom input::-webkit-outer-spin-button{appearance:none;margin:0}.limit-custom input:focus-visible{outline:none}.limit-custom:focus-within{color:var(--ink);background:var(--peer);border-style:solid}.limit-custom span{font-size:.8rem;font-weight:700}.limit-custom input:placeholder-shown{width:100%}.limit-custom input::placeholder{color:var(--muted);text-align:center;font-weight:600}.limit-custom input:placeholder-shown+span{display:none}.clock-summary{color:var(--muted);margin:0;font-size:.85rem;font-weight:600}.clocks{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.clock{border:var(--border) solid var(--line);background:var(--surface);box-shadow:3px 3px 0 var(--shadow);font-variant-numeric:tabular-nums;color:var(--muted);border-radius:8px;padding:.3rem .8rem;font-weight:800}.clock.x.active{background:var(--x);color:var(--on-color)}.clock.o.active{background:var(--o);color:var(--on-color)}.clock.low{outline:3px solid var(--danger);outline-offset:2px;animation:1s step-end infinite clock-blink}.clock.out{background:var(--danger);color:var(--on-color);text-decoration:line-through}.clock-note{text-align:center;width:100%;color:var(--muted);font-size:.85rem;font-weight:600}@keyframes clock-blink{50%{background:var(--danger);color:var(--on-color)}}.end-card{border:var(--border) solid var(--line);background:var(--surface);width:min(92vw,30rem);max-height:96dvh;color:var(--ink);box-shadow:8px 8px 0 var(--shadow);border-radius:14px;padding:1rem;overflow-y:auto}.end-card[open]{flex-direction:column;gap:.9rem;animation:.3s cubic-bezier(.34,1.56,.64,1) pop;display:flex}.end-card::backdrop{background:#0000008c}.end-card img{object-fit:contain;border:2px solid var(--line);border-radius:10px;width:100%;height:auto;max-height:70dvh}.end-card-picture{aspect-ratio:1080/1350;align-self:center;width:min(100%,56dvh);position:relative}.end-card-picture img{height:100%;max-height:none}.song-light{border:4px solid var(--primary);box-shadow:0 0 0 3px var(--line), 0 0 18px var(--primary);pointer-events:none;background:#ffffff40;border-radius:18%;animation:.18s ease-out song-pop;position:absolute}@keyframes song-pop{0%{scale:1.35}}.cell.sung{outline:4px solid var(--primary);outline-offset:2px;z-index:2}.include-options{flex-wrap:wrap;gap:.4rem 1.2rem;display:flex}.end-card .include{cursor:pointer;align-items:center;gap:.5rem;font-weight:700;display:flex}.end-card .include input{width:1.2rem;height:1.2rem;accent-color:var(--toggle-on);margin:0;padding:0}.end-card-actions{gap:.6rem;display:flex}.end-card .song{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin-left:auto}.end-card .song:is([data-state=held],[data-state=rendering]){background:var(--primary);color:var(--on-color)}.end-card .song[data-state=playing]{background:var(--surface-2)}.end-card-actions .btn{white-space:nowrap;flex:1}@media (width<=30rem){.end-card-actions{grid-template-columns:1fr 1fr;display:grid}}.end-card-actions .btn-primary{flex:1.5}.home-confirm{width:min(92vw,24rem)}.home-confirm p{margin:0;font-weight:700}.toast{left:50%;bottom:max(1.5rem, env(safe-area-inset-bottom));border:var(--border) solid var(--line);background:var(--ink);max-width:calc(100vw - 2rem);color:var(--surface);box-shadow:5px 5px 0 var(--x);opacity:0;pointer-events:none;border-radius:10px;padding:.75rem 1.2rem;font-weight:700;transition:opacity .2s,translate .2s;position:fixed;translate:-50% 1rem}.toast[data-tone=info]{box-shadow:5px 5px 0 var(--o)}.toast.show{opacity:1;translate:-50%}.burst{z-index:5;pointer-events:none;position:fixed;inset:0;overflow:hidden}.burst span{background:var(--c);border:2px solid #000;width:11px;height:11px;animation:1.4s cubic-bezier(.1,.8,.3,1) forwards burst;position:absolute;top:40%;left:50%}@keyframes burst{0%{opacity:1;translate:0;rotate:0deg}to{translate:var(--x) calc(var(--y) + 80px);opacity:0;rotate:540deg}}@keyframes win-blink{50%{background:var(--surface)}}@keyframes reject{0%{background:var(--danger);translate:0}10%{translate:-4px}20%{translate:4px}30%{translate:-3px}40%{background:var(--danger);translate:0}to{translate:0}}@keyframes pop{0%{scale:.85}to{scale:1}}@media (width>=72rem){.app:has(>.chat:not([hidden])){grid-template:"brand brand brand""chat stage panel"1fr/19rem minmax(0,1fr) 21rem;max-width:90rem}.app:has(>.chat:not([hidden])) .chat{justify-self:stretch;width:auto;position:sticky;top:1rem}.app:has(>.chat:not([hidden])) .chat-log{height:min(30rem,100dvh - 10rem)}}@media (width<=52rem){.app{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"brand""stage""chat""panel";gap:1.25rem}:root{--cell:clamp(30px, 11.5vw, 50px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.account-button{cursor:pointer;font:inherit}.account-button img:not([hidden])+svg{display:none}.avatar{border:2px solid var(--line);vertical-align:middle;object-fit:cover;border-radius:50%;width:1.4rem;height:1.4rem}.my-games{width:min(94vw,34rem)}.my-games-head{align-items:center;gap:.6rem;display:flex}.my-games-head h2{flex:1}.my-games h2,.my-games h3{margin:0;font-weight:800}.my-games h3{margin-block:.4rem;font-size:1rem}.account{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.account .avatar{border-radius:50%;flex-shrink:0;width:2rem;height:2rem}.account>span{flex:14rem}.my-games-note{color:var(--muted);margin:0;font-weight:600}.my-games-stats{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.5rem;display:grid}.my-tally{border:2px solid var(--line);background:var(--surface-2);border-radius:8px;padding:.45rem .6rem;display:grid}.my-tally span{color:var(--muted);font-size:.85rem}.my-games-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.my-games-list li{border:2px solid var(--line);background:var(--surface-2);border-radius:8px;align-items:center;gap:.6rem;padding:.4rem .6rem;display:flex}.my-games-list li>div{flex:1;min-width:0;display:grid}.my-games-list .avatar{border-radius:50%;flex-shrink:0;width:1.75rem;height:1.75rem}.my-games-list small{color:var(--muted)}.my-games-list li.active{background:var(--win);color:var(--on-color)}.my-games-list li.active small{color:inherit}.my-games-list .empty{color:var(--muted);font-weight:600}.badge{border:2px solid var(--line);background:var(--primary);color:var(--on-color);white-space:nowrap;border-radius:6px;padding:.1rem .45rem;font-size:.75rem;font-weight:800}.tally.away{opacity:.6;border-style:dashed}.tally .avatar{width:1.1rem;height:1.1rem;margin-right:.25rem}.update-bar{left:50%;top:max(.75rem, env(safe-area-inset-top));z-index:30;border:var(--border) solid var(--line);background:var(--surface);box-shadow:5px 5px 0 var(--shadow);border-radius:10px;align-items:center;gap:.75rem;padding:.55rem .75rem .55rem 1rem;font-weight:700;display:flex;position:fixed;translate:-50%}.nearby{border:var(--border) solid var(--line);background:var(--surface-2);box-shadow:4px 4px 0 var(--shadow);border-radius:12px;gap:.7rem;padding:.9rem;display:grid}.nearby-intro,.nearby-step-text{margin:0;font-weight:600}.nearby-me{align-items:center;gap:.5rem;display:flex}.nearby-me input{flex:1}.device-icon{border:2px solid var(--line);background:var(--surface);border-radius:8px;flex:none;place-items:center;width:2rem;height:2rem;display:inline-grid}.device-icon svg{width:1.3rem;height:1.3rem}.nearby-start,.nearby-actions{gap:.5rem;display:flex}.nearby .btn{flex:1}.nearby-step{gap:.6rem;display:grid}.nearby-qr{border:var(--border) solid var(--line);background:#fff;border-radius:10px;justify-self:center;width:min(100%,15rem);padding:.6rem}.nearby-qr svg{width:100%;height:auto;display:block}.nearby-text textarea{word-break:break-all;width:100%;margin-block:.4rem;font:.8rem ui-monospace,monospace}.nearby-input{gap:.5rem;display:grid}.nearby-devices{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.nearby-devices li{grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;column-gap:.6rem;display:grid}.nearby-devices .device-icon{grid-row:span 2}.nearby-devices small{color:var(--muted);font-weight:600}.nearby-lobby{gap:.5rem;display:grid}.nearby-hosts li{grid-template-columns:auto 1fr auto}.nearby-hosts li>:is(b,small){overflow-wrap:anywhere;grid-column:2;min-width:0}.nearby-hosts li>.btn{grid-area:1/3/span 2}.nearby-note{color:var(--muted);margin:0;font-weight:600}.nearby-laptop summary,.nearby-text summary{cursor:pointer;font-weight:700}.nearby-laptop p{color:var(--muted);margin:.4rem 0 0}.lan-host{align-items:center;gap:.5rem;margin:0;font-weight:800;display:flex}.mode-picker{grid-template-columns:1fr 1fr;display:grid}.mode-picker button{justify-content:center;align-items:center;gap:.45rem;padding-block:.5rem;display:flex}.mode-picker svg{flex:none;width:1.2rem;height:1.2rem}.nearby .join-row input{text-transform:none;letter-spacing:normal}.share-buttons{gap:.4rem;display:grid}.online-qr{text-align:center;justify-items:center;gap:.4rem;font-weight:700;display:grid}#share-qr[aria-expanded=true]{background:var(--ink);color:var(--surface)}.agent{border-top:2px dashed var(--line);margin-top:1.1rem;padding-top:.8rem}.agent-title{color:var(--ink);font-weight:800}.agent-snippet{border:2px solid var(--line);background:var(--surface-2);color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;margin:.5rem 0 0;padding:.55rem .7rem;font:.78rem/1.45 ui-monospace,monospace}.game-view{border:var(--border) solid var(--line);background:var(--surface);width:min(100%,36rem);box-shadow:4px 4px 0 var(--shadow);border-radius:12px;flex-wrap:wrap;align-items:center;gap:.7rem 1rem;padding:.7rem .9rem;display:flex}.game-view-text{flex:14rem;gap:.15rem;display:grid}.game-view-text strong{font-size:1.3rem;font-weight:800}.game-view-text small{color:var(--muted);font-weight:600}.game-view .btn{padding-inline:1.2rem}.my-games-history-actions{flex-wrap:wrap;gap:.5rem;display:flex}.my-games-more{margin-top:.5rem}.previews-list .preview{gap:.4rem;padding:.6rem .7rem;display:grid}.previews-list .preview.here{box-shadow:3px 3px 0 var(--shadow);border-width:3px}.previews-list .preview-head{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.preview-head b{overflow-wrap:anywhere;flex:12rem}.preview p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:.9rem}.previews-list .preview-people,.previews-list .preview-foot{flex-wrap:wrap;align-items:center;gap:.35rem .75rem;display:flex}.preview-people a{color:var(--ink);align-items:center;gap:.3rem;font-size:.85rem;font-weight:700;text-decoration:none;display:inline-flex}.preview-people .avatar{border-radius:50%;width:1.4rem;height:1.4rem;max-height:none}.preview-people a:hover{text-decoration:underline}.preview-foot small{color:var(--muted);flex:auto}.preview-foot a{border:2px solid var(--line);background:var(--surface);box-shadow:2px 2px 0 var(--shadow);color:var(--ink);border-radius:8px;padding:.3rem .65rem;font-size:.85rem;font-weight:800;text-decoration:none}.preview-foot a:first-of-type{background:var(--primary);color:var(--on-color)}.previews-list .preview-children{border-left:3px solid var(--line);gap:.4rem;margin:.2rem 0 0;padding:0 0 0 .6rem;list-style:none;display:grid}.previews-list .preview-children .preview{background:var(--surface)}.badge-quiet{background:var(--surface);color:var(--ink)}@media (width<=30rem){.preview-foot small{flex-basis:100%}}.players{gap:.5rem;display:grid}.players-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.players-list li{border:2px solid var(--line);background:var(--surface);border-radius:8px;grid-template-columns:2rem 1fr;align-items:center;gap:.35rem .6rem;padding:.45rem .55rem;display:grid}.players-mark{border:2px solid var(--line);border-radius:6px;grid-row:span 2;place-items:center;width:2rem;height:2rem;font-weight:900;display:grid}.players-mark.x{background:var(--x);color:var(--on-color)}.players-mark.o{background:var(--o);color:var(--on-color)}.players-name .avatar{flex-shrink:0;width:1.75rem;height:1.75rem}.players-name{overflow-wrap:anywhere;align-items:center;gap:.4rem;min-width:0;font-weight:800;display:flex}.players-note{color:var(--muted);grid-column:2;font-size:.85rem;font-weight:600}.players-row-actions{flex-wrap:wrap;grid-column:1/-1;gap:.4rem;display:flex}.players-row-actions:empty{display:none}.players-request{border:2px dashed var(--line);border-radius:8px;gap:.4rem;padding:.55rem;display:grid}.players-request p{margin:0;font-weight:700}.players-request-actions{gap:.4rem;display:flex}.rename{flex-wrap:wrap;gap:.5rem;width:100%;display:flex}.rename-form{flex-wrap:wrap;align-items:center;gap:.5rem;width:100%;display:flex}.rename-form input{flex:10rem}.rename-problem{color:var(--muted);flex-basis:100%;font-weight:700}.rename-problem:empty{display:none}
