@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-ext-400-normal-CiZNW1ec.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-400-normal-DYBYyMQr.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff)format("woff");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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-ext-500-normal-h0Fp6aX0.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-500-normal-CK0UkkKf.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff)format("woff");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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-600-normal-DkpCIyan.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-ext-600-normal-BNd8euf0.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-600-normal-BeUwKxhG.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-600-normal-5IO4e7bK.woff)format("woff");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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-vietnamese-700-normal-Csr0PCuG.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-700-normal-By_5yT39.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-ext-700-normal-C8_gqRu2.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-700-normal-4Hjo2OtD.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-700-normal-DlW1Zbsh.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-700-normal-C2EtzaOi.woff)format("woff");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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/be-vietnam-pro-vietnamese-800-normal-D4LFh2W4.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-800-normal-CA0HL1e4.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/be-vietnam-pro-latin-ext-800-normal-GEpNgheG.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-800-normal-BvOXQlBN.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/be-vietnam-pro-latin-800-normal-BpHZASpI.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-800-normal-Cwp5p0gU.woff)format("woff");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:"Baloo 2";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/baloo-2-devanagari-700-normal-D37Te3iF.woff2)format("woff2"),url(/assets/baloo-2-devanagari-700-normal-CEIF4sJg.woff)format("woff");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:"Baloo 2";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/baloo-2-vietnamese-700-normal-h4tlcePq.woff2)format("woff2"),url(/assets/baloo-2-vietnamese-700-normal-DoF59Mjc.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Baloo 2";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/baloo-2-latin-ext-700-normal-Mlh7kdab.woff2)format("woff2"),url(/assets/baloo-2-latin-ext-700-normal-D6LeXASg.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Baloo 2";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/baloo-2-latin-700-normal-CqTg7A15.woff2)format("woff2"),url(/assets/baloo-2-latin-700-normal-Ld3Zm3l2.woff)format("woff");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:"Baloo 2";font-style:normal;font-display:swap;font-weight:800;src:url(/assets/baloo-2-devanagari-800-normal-BURIY0wZ.woff2)format("woff2"),url(/assets/baloo-2-devanagari-800-normal-YLp1oUqR.woff)format("woff");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:"Baloo 2";font-style:normal;font-display:swap;font-weight:800;src:url(/assets/baloo-2-vietnamese-800-normal-ConLnEgt.woff2)format("woff2"),url(/assets/baloo-2-vietnamese-800-normal-GQACmpuv.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Baloo 2";font-style:normal;font-display:swap;font-weight:800;src:url(/assets/baloo-2-latin-ext-800-normal-C_Iwmf1s.woff2)format("woff2"),url(/assets/baloo-2-latin-ext-800-normal-D-iCxxqE.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Baloo 2";font-style:normal;font-display:swap;font-weight:800;src:url(/assets/baloo-2-latin-800-normal-BbF3Etk1.woff2)format("woff2"),url(/assets/baloo-2-latin-800-normal-B8BXfZF7.woff)format("woff");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}:root{--font-display:"Baloo 2", "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", sans-serif;--font-body:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", sans-serif;--font-game:"Kenney Future", "Baloo 2", "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", sans-serif;--depth:5px;--radius-sm:10px;--radius-md:16px;--radius-lg:24px;--radius-xl:32px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--tap-min:44px;--dur-fast:.15s;--dur-base:.25s;--dur-slow:.4s;--ease-out:cubic-bezier(.2, .8, .2, 1)}:root,:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef0ff;--surface:#fff;--surface-2:#e2e5fb;--border:#c3c7ee;--text:#17123f;--text-muted:#4a4680;--accent:#ffc531;--accent-text:#3a2500;--player-a:#5b3df5;--player-b:#1c6fd1;--stone-a:#c23a17;--stone-b:#2559d6;--mark-a:#c23a17;--mark-b:#2559d6;--positive:#0b7a4b;--negative:#c42b2b;--warning:#8f5b00;--board-a:#f6e4c2;--board-b:#ead0a0;--ink:#17123f;--info:#1c6fd1;--info-text:#fff}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#15114a;--surface:#1e1960;--surface-2:#2a2470;--border:#3a33a8;--text:#fff;--text-muted:#c9c4f2;--accent:#ffc531;--accent-text:#3a2500;--player-a:#a78bfa;--player-b:#4fb3ff;--stone-a:#ff6b5b;--stone-b:#5ca8ff;--mark-a:#ff6b5b;--mark-b:#5ca8ff;--positive:#3ddc84;--negative:#ff6b6b;--warning:#ffc531;--board-a:#2a2470;--board-b:#241e66;--ink:#0f0c38;--info:#2b8af0;--info-text:#fff}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#15114a;--surface:#1e1960;--surface-2:#2a2470;--border:#3a33a8;--text:#fff;--text-muted:#c9c4f2;--accent:#ffc531;--accent-text:#3a2500;--player-a:#a78bfa;--player-b:#4fb3ff;--stone-a:#ff6b5b;--stone-b:#5ca8ff;--mark-a:#ff6b5b;--mark-b:#5ca8ff;--positive:#3ddc84;--negative:#ff6b6b;--warning:#ffc531;--board-a:#2a2470;--board-b:#241e66;--ink:#0f0c38;--info:#2b8af0;--info-text:#fff}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-block-size:100dvh;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.5}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0;line-height:1.2}p{margin:0}a{color:inherit}[hidden]{display:none!important}.icon{flex:none;display:block}.icon--k{-webkit-mask:var(--icon) center / contain no-repeat;-webkit-mask:var(--icon) center / contain no-repeat;mask:var(--icon) center / contain no-repeat;background-color:currentColor}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.btn{--btn-bg:var(--surface-2);--btn-fg:var(--text);justify-content:center;align-items:center;gap:var(--space-2);min-block-size:var(--tap-min);padding-inline:var(--space-4);border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--btn-bg);color:var(--btn-fg);font:inherit;font-family:var(--font-display);cursor:pointer;touch-action:manipulation;box-shadow:inset 0 -4px 0 color-mix(in oklab, var(--ink) 22%, transparent), 0 var(--depth) 0 var(--ink);transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), filter var(--dur-fast) var(--ease-out);font-size:1.02rem;font-weight:800;line-height:1.1;text-decoration:none;display:inline-flex}.btn:hover{filter:brightness(1.08)}.btn:active{box-shadow:inset 0 -2px 0 color-mix(in oklab, var(--ink) 22%, transparent), 0 1px 0 var(--ink);transform:translateY(4px)}.btn--primary{--btn-bg:var(--accent);--btn-fg:var(--accent-text)}.btn--info{--btn-bg:var(--info);--btn-fg:var(--info-text);font-size:1.2rem}.btn--ghost{--btn-bg:transparent;box-shadow:none;border-color:#0000}.btn--ghost:active{box-shadow:none}.btn--danger{--btn-bg:var(--surface-2);--btn-fg:var(--negative)}.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}.select{min-block-size:var(--tap-min);padding-inline:var(--space-3);border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text);font:inherit;font-family:var(--font-display);box-shadow:0 4px 0 var(--ink);font-weight:800}.card{padding:var(--space-5);border:4px solid var(--ink);border-radius:var(--radius-lg);background:var(--surface);box-shadow:inset 0 4px 0 var(--surface-2), 0 6px 0 var(--ink)}.chip{padding:var(--space-1) var(--space-3);border:2px solid;border-radius:999px;align-items:center;font-size:.875rem;font-weight:700;display:inline-flex}.chip--positive{color:var(--positive)}.chip--negative{color:var(--negative)}.chip--warning{color:var(--warning)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@font-face{font-family:Kenney Future;src:url(/assets/kenney-future-DVB-apiN.ttf)format("truetype");font-display:swap}html{scroll-behavior:smooth}body{background:var(--bg)}::selection{background:color-mix(in oklab, var(--accent) 28%, transparent);color:var(--text)}.app{flex-direction:column;min-block-size:100dvh;display:flex}.app[data-page=play]:has(.play[data-view=playing]){block-size:100dvh;overflow:hidden}.container{inline-size:100%;max-inline-size:1320px;padding-inline:var(--space-4);margin-inline:auto}@media (min-width:768px){.container{padding-inline:var(--space-6)}}.app-header{z-index:30;border-block-end:4px solid var(--ink);background:var(--surface);padding-block-start:env(safe-area-inset-top);position:sticky;inset-block-start:0}.header-inner{align-items:center;gap:var(--space-4);min-block-size:64px;padding-block:var(--space-2);display:flex}.brand{align-items:center;gap:var(--space-2);flex:none;text-decoration:none;display:inline-flex}.brand-mark{border:3px solid var(--ink);background:var(--accent);block-size:42px;inline-size:42px;color:var(--accent-text);box-shadow:inset 0 -4px 0 color-mix(in oklab, var(--ink) 22%, transparent), 0 4px 0 var(--ink);border-radius:13px;flex:none;place-items:center;display:grid;position:relative;transform:rotate(-6deg)}.brand-mark:before{content:"";clip-path:polygon(0 0,100% 50%,0 100%);background:currentColor;block-size:44%;inline-size:38%;margin-inline-start:2px}.brand-mark--small{border-radius:9px;block-size:30px;inline-size:30px}.brand-mark--small:before{margin-inline-start:1px}.brand-copy{flex-direction:column;line-height:1.15;display:flex}.brand-name{font-family:var(--font-game);letter-spacing:.02em;text-transform:uppercase;text-shadow:0 3px 0 var(--ink);font-size:1.15rem;font-weight:400}.brand-tagline{color:var(--text-muted);font-size:.68rem;font-weight:500}.main-nav{align-items:center;gap:2px;display:flex}.nav-link{align-items:center;gap:var(--space-2);min-block-size:var(--tap-min);padding-inline:var(--space-3);color:var(--text-muted);transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);border-radius:999px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.nav-link:hover{color:var(--text);background:var(--surface-2)}.header-actions{align-items:center;gap:var(--space-2);flex:none;margin-inline-start:auto;display:flex}.select--compact{border-radius:999px;max-inline-size:9rem;font-size:.85rem}.icon-btn{inline-size:var(--tap-min);block-size:var(--tap-min);border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--info);color:var(--info-text);cursor:pointer;box-shadow:inset 0 -4px 0 color-mix(in oklab, var(--ink) 22%, transparent), 0 4px 0 var(--ink);transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), filter var(--dur-fast) var(--ease-out);flex:none;place-items:center;display:inline-grid}.icon-btn:hover{filter:brightness(1.08)}.icon-btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(4px)}.lang-switch{border-radius:var(--radius-md);background:var(--ink);gap:3px;padding:3px;display:inline-flex}.lang-opt{min-block-size:38px;min-inline-size:40px;color:var(--text-muted);font:inherit;font-family:var(--font-game);letter-spacing:.04em;cursor:pointer;transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);background:0 0;border:0;border-radius:11px;padding-inline:8px;font-size:.8rem}.lang-opt:hover{background:var(--surface-2);color:var(--text)}.lang-opt[aria-pressed=true]{background:var(--accent);color:var(--accent-text)}.account-btn{min-inline-size:var(--tap-min);min-block-size:var(--tap-min);border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text);font:inherit;font-family:var(--font-display);cursor:pointer;box-shadow:0 4px 0 var(--ink);transition:transform var(--dur-fast) var(--ease-out);justify-content:center;align-items:center;gap:8px;padding-inline:6px 14px;font-size:1rem;font-weight:800;display:inline-flex}.account-btn--signin{background:var(--accent);color:var(--accent-text);padding-inline:12px 16px}.account-btn:hover{filter:brightness(1.08)}.account-label{text-overflow:ellipsis;white-space:nowrap;max-inline-size:9rem;overflow:hidden}.avatar{border:2px solid var(--ink);background:var(--accent);block-size:30px;inline-size:30px;color:var(--accent-text);font-family:var(--font-display);border-radius:10px;flex:none;place-items:center;font-size:.85rem;font-weight:800;display:grid}.avatar--lg{block-size:64px;inline-size:64px;font-size:1.5rem}.app-main{flex-direction:column;flex:1;min-block-size:0;display:flex}.home{padding-block-end:var(--space-2)}.section{margin-block-start:clamp(var(--space-6), 6vw, var(--space-7));scroll-margin-block-start:92px}.section-head{justify-content:space-between;align-items:flex-end;gap:var(--space-4);margin-block-end:var(--space-5);display:flex}.section-heading{max-inline-size:62ch}.section-head h2{letter-spacing:-.025em;font-size:clamp(1.4rem,2.6vw,2rem);font-weight:800}.section-sub{color:var(--text-muted);margin-block-start:var(--space-1);font-size:.95rem}.count-pill{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);white-space:nowrap;border-radius:999px;flex:none;padding:6px 12px;font-size:.78rem;font-weight:700}.eyebrow{color:var(--accent);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:6px;margin:0;font-size:.72rem;font-weight:800;display:inline-flex}.tag-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tag{background:var(--surface-2);color:var(--text-muted);border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:.72rem;font-weight:600;line-height:1.5;display:inline-flex}.tag--meta{border:1px solid var(--border);background:0 0}.btn--lg{min-block-size:52px;padding-inline:var(--space-5);border-radius:var(--radius-md);font-size:1rem}.site-footer{border-block-start:1px solid var(--border);background:color-mix(in oklab, var(--surface) 62%, transparent);margin-block-start:clamp(var(--space-6), 6vw, var(--space-7))}.app[data-page=play] .site-footer{display:none}.footer-inner{justify-content:space-between;align-items:center;gap:var(--space-4);padding-block:var(--space-6);flex-wrap:wrap;display:flex}.footer-brand{align-items:center;gap:var(--space-3);display:flex}.footer-brand-copy{flex-direction:column;line-height:1.3;display:flex}.footer-name{font-family:var(--font-display);font-size:.95rem;font-weight:800}.footer-tagline{color:var(--text-muted);font-size:.8rem}.footer-meta{align-items:center;gap:var(--space-2) var(--space-5);color:var(--text-muted);flex-wrap:wrap;font-size:.8rem;display:flex}.footer-link{color:var(--accent);font-weight:600;text-decoration:none}.footer-link:hover{text-decoration:underline}.play{gap:var(--space-3);min-block-size:0;inline-size:min(100%,1440px);padding:var(--space-3) var(--space-4) max(var(--space-3), env(safe-area-inset-bottom));flex-direction:column;flex:1;margin-inline:auto;display:flex}.stage-card{flex-direction:column;flex:1;align-self:center;min-block-size:0;inline-size:100%;display:flex}.stage-card:fullscreen{padding:var(--space-4);background:var(--bg);border:0;border-radius:0}.game-host{flex:1;min-block-size:0}.game-shell{gap:var(--space-2);flex-direction:column;block-size:100%;display:flex}.game-status{text-align:center;min-block-size:1.5em;color:var(--text-muted);font-weight:600}.game-stage{flex:1;place-items:center;min-block-size:0;min-inline-size:0;display:grid;overflow:hidden}.game-stage canvas{touch-action:none;display:block}.game-iframe{border-radius:var(--radius-md);background:var(--surface);border:0;block-size:100%;inline-size:100%}.game-error{justify-items:center;gap:var(--space-3);padding:var(--space-6);display:grid}.modal{inline-size:min(92vw,460px);max-inline-size:none;color:var(--text);background:0 0;border:0;margin:auto;padding:0}.modal::backdrop{background:color-mix(in oklab, var(--ink) 70%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-card{max-block-size:88dvh;padding:var(--space-5);border:4px solid var(--ink);border-radius:var(--radius-xl);background:var(--surface);box-shadow:inset 0 4px 0 var(--surface-2), 0 10px 0 var(--ink);animation:modal-in var(--dur-slow) cubic-bezier(.2, 1.4, .4, 1);flex-direction:column;display:flex;position:relative;overflow:auto}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-head{justify-content:space-between;align-items:center;gap:var(--space-3);margin-block-end:var(--space-4);display:flex}.modal-icon{border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--accent);block-size:48px;inline-size:48px;color:var(--accent-text);box-shadow:0 4px 0 var(--ink);place-items:center;display:grid}.modal-title{text-shadow:0 3px 0 var(--ink);font-size:clamp(1.6rem,4vw,2.2rem);font-weight:800}.modal-text{margin-block:var(--space-2) var(--space-4);color:var(--text-muted);line-height:1.6}.auth-cta{justify-content:center;inline-size:100%}.modal:has(.modal-card--auth){padding-block-start:48px;overflow:visible}.modal-card--auth{text-align:center;align-items:stretch;margin-block-start:40px;overflow:visible}.modal-card--auth .modal-text{margin-block:var(--space-1) var(--space-4)}.brand-mark--hero{block-size:84px;inline-size:84px;margin-block:-70px var(--space-3);border-width:4px;border-radius:24px;align-self:center}.brand-mark--hero:before{block-size:40%;inline-size:34%}.auth-close{position:absolute;inset-block-start:-14px;inset-inline-end:-14px}.auth-close .icon-btn{background:var(--negative);border-radius:50%}.auth-email{inline-size:100%}.auth-google-mark{display:block}.modal-card--auth .auth-form{text-align:start;margin-block-end:var(--space-2)}.auth-note{color:var(--text-muted);align-items:flex-start;gap:6px;margin-block-start:var(--space-3);font-size:.78rem;line-height:1.5;display:flex}.auth-note .icon{color:var(--positive);margin-block-start:2px}.modal-divider{align-items:center;gap:var(--space-3);margin-block:var(--space-4) var(--space-3);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:800;display:flex}.modal-divider:before,.modal-divider:after{content:"";background:var(--border);border-radius:3px;flex:1;block-size:3px}.auth-google{--btn-bg:var(--info-text);--btn-fg:var(--ink);inline-size:100%;justify-content:center;margin-block-end:var(--space-3)}.auth-form{gap:var(--space-2);flex-direction:column;display:flex}.auth-field{flex-direction:column;gap:6px;display:flex}.auth-form [hidden]{display:none}.auth-error{color:var(--negative);font-size:.85rem;line-height:1.5}.auth-submit{justify-content:center;margin-block-start:var(--space-2)}.auth-switch{white-space:normal;justify-content:center}.soon-note{padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-md);background:color-mix(in oklab, var(--surface-2) 55%, transparent)}.soon-note p{color:var(--text-muted);margin-block-start:4px;font-size:.85rem;line-height:1.55}.profile-hero{align-items:center;gap:var(--space-4);padding-block:var(--space-1) var(--space-4);display:flex}.profile-identity{min-inline-size:0}.profile-name{overflow-wrap:anywhere;margin-block-end:6px;font-size:1.25rem;font-weight:800}.profile-form{gap:var(--space-2);padding-block:var(--space-4);border-block:1px solid var(--border);flex-direction:column;display:flex}.field-label{font-size:.82rem;font-weight:700}.text-input{min-block-size:50px;inline-size:100%;padding-inline:var(--space-3);border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font:inherit;font-size:1rem}.text-input:focus{outline:2px solid var(--accent);outline-offset:1px}.field-hint{color:var(--text-muted);font-size:.76rem}.profile-save-row{align-items:center;gap:var(--space-3);margin-block-start:var(--space-1);display:flex}.saved-note{color:var(--positive);align-items:center;gap:4px;font-size:.8rem;font-weight:700;display:inline-flex}.profile-local-note{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in oklab, var(--warning) 12%, var(--surface));color:var(--text-muted);align-items:flex-start;gap:6px;margin-block-start:var(--space-3);font-size:.78rem;line-height:1.5;display:flex}.profile-local-note .icon{color:var(--warning);margin-block-start:2px}.profile-stats{gap:var(--space-3);margin-block:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.profile-stat{min-inline-size:0;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.profile-stat dt{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;font-size:.68rem;font-weight:700}.profile-stat dd{overflow-wrap:anywhere;margin:4px 0 0;font-size:.8rem;font-weight:600}.profile-actions{justify-content:flex-end;margin-block-start:var(--space-4);display:flex}.page{inline-size:min(100%,1000px);padding:var(--space-6) var(--space-4) var(--space-7);margin-inline:auto}.page h1{font-size:clamp(1.6rem,4vw,2.4rem)}.lead{margin-block:var(--space-2) var(--space-5);color:var(--text-muted)}.gallery h2{margin-block:var(--space-5) var(--space-3);font-size:1.1rem}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.swatch-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.swatch{gap:var(--space-1);font-size:.8rem;display:grid}.swatch-color{border:1px solid var(--border);border-radius:var(--radius-sm);block-size:48px}@media (max-width:980px){.main-nav{display:none}.hero{gap:var(--space-4);padding:var(--space-6);grid-template-columns:minmax(0,1fr)}.hero-visual{order:-1;justify-self:center;min-block-size:0;inline-size:min(100%,520px)}.hero-copy{max-inline-size:60ch}}@media (max-width:760px){.soon-grid,.perks{grid-template-columns:minmax(0,1fr)}.play-head{grid-template-columns:auto minmax(0,1fr)}.play-heading{text-align:end}.play-tools{grid-column:1/-1;justify-content:flex-end}.account-label{display:none}.account-btn,.account-btn--signin{padding-inline:7px}}@media (max-width:640px){.header-inner{gap:var(--space-2);min-block-size:56px}.brand{gap:6px}.brand-mark{border-radius:10px;block-size:32px;inline-size:32px}.brand-name{font-size:.95rem}.brand-tagline{display:none}.select--compact{max-inline-size:7rem;padding-inline:var(--space-2)}.modal-card{padding:var(--space-4)}.modal-card--profile .soon-note{display:none}.hero{padding:var(--space-4);border-radius:var(--radius-lg)}.hero h1{font-size:clamp(2rem,10vw,2.7rem)}.hero-desc{font-size:.95rem}.hero-actions{gap:var(--space-2)}.hero-actions .btn{flex:1}.float-badge--instant{display:none}.section-head{align-items:flex-start}.catalogue-toolbar{align-items:stretch;gap:var(--space-2);flex-direction:column}.filter-row{scrollbar-width:none;flex-wrap:nowrap;padding-block-end:4px;overflow-x:auto}.filter-row::-webkit-scrollbar{display:none}.filter-chip{padding-inline:var(--space-3);flex:none;font-size:.82rem}.search-field{inline-size:100%}.game-grid,.game-grid[data-count="2"]{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr))}.game-grid[data-count="1"],.game-grid[data-sparse]{grid-template-columns:minmax(0,1fr)}.game-card{padding:var(--space-1);gap:var(--space-1)}.game-card-body{padding:0 var(--space-1) var(--space-1);gap:6px}.game-card h3{font-size:.98rem}.game-card .tag{padding:2px 7px;font-size:.66rem}.game-card-play{block-size:36px;inline-size:36px;inset-block-end:var(--space-2);inset-inline-end:var(--space-2)}.soon-grid{gap:var(--space-2)}.perks{gap:var(--space-3)}.footer-inner{flex-direction:column;align-items:flex-start}.footer-meta{align-items:flex-start;gap:var(--space-1);flex-direction:column}.play{padding-inline:var(--space-2)}.stage-card{padding:var(--space-2)}}@media (max-width:420px){.container{padding-inline:var(--space-3)}.select--compact{max-inline-size:6.5rem}.hero-actions{flex-direction:column;align-items:stretch}.game-card .tag-row .tag:nth-child(n+2){display:none}.profile-stats{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.mode-switch{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.mode-switch-btn{min-block-size:38px;padding-inline:var(--space-3);color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;font-size:.85rem;font-weight:600;display:inline-flex}.mode-switch-btn[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 3px color-mix(in oklab, var(--text) 25%, transparent)}.mode-switch-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.td-shell{gap:var(--space-3);grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);display:grid}.td-hud{justify-content:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.td-chip{min-block-size:40px;padding-inline:var(--space-3);border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text);font-family:var(--font-display);font-variant-numeric:tabular-nums;box-shadow:0 4px 0 var(--ink);align-items:center;font-size:1rem;font-weight:800;display:inline-flex}.td-chip[data-tone=negative]{color:var(--negative)}.td-chip[data-tone=warning]{color:var(--warning)}.td-chip[data-tone=wave]{background:var(--accent);color:var(--accent-text)}.td-chip[hidden],.td-btn[hidden],.td-panel [hidden]{display:none}.td-panel{gap:var(--space-3);flex-direction:column;display:flex}.td-actions{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.td-btn{padding-inline:var(--space-2);text-align:center;font-size:.95rem}.td-map-btn,.td-map-opt{align-items:center;gap:var(--space-3);border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--surface-2);min-block-size:56px;color:var(--text);font:inherit;font-family:var(--font-display);text-align:start;cursor:pointer;box-shadow:0 4px 0 var(--ink);padding:6px 12px 6px 6px;font-weight:800;display:flex}.td-map-btn[disabled]{cursor:default;box-shadow:none}.td-map-btn:not([disabled]):after{content:"";border-inline-end:3px solid var(--accent);border-block-end:3px solid var(--accent);block-size:10px;inline-size:10px;margin-inline-start:auto;transform:rotate(45deg)}.td-map-thumb,.td-map-opt img{border:2px solid var(--ink);object-fit:cover;block-size:48px;inline-size:36px;image-rendering:pixelated;border-radius:8px}.td-map-list{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.td-map-opt{text-align:center;flex-direction:column;gap:4px;padding:6px;font-size:.9rem}.td-map-opt img{aspect-ratio:3/4;block-size:auto;inline-size:100%}.td-map-opt[aria-pressed=true]{border-color:var(--accent)}.td-art{flex:none;display:block;position:relative}.td-art-base,.td-art-weapon{image-rendering:pixelated;background-repeat:no-repeat;position:absolute}.td-art-base{inset:0}.td-art-weapon{inset-inline-start:50%;translate:-50%}.td-build{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.td-card{border:3px solid var(--ink);border-radius:var(--radius-md);background:var(--surface-2);min-block-size:124px;color:var(--text);font:inherit;cursor:pointer;box-shadow:inset 0 3px 0 var(--surface), 0 4px 0 var(--ink);transition:transform var(--dur-fast) var(--ease-out);flex-direction:column;align-items:center;gap:2px;padding:6px 4px 8px;display:flex}.td-card:hover:not([disabled]){border-color:var(--accent);transform:translateY(-3px)}.td-card[disabled]{opacity:.5;cursor:not-allowed}.td-card-name{font-family:var(--font-display);font-size:.9rem;font-weight:800}.td-card-cost{color:var(--warning);font-family:var(--font-game);font-size:.85rem}.td-tower{gap:var(--space-2);padding:var(--space-3);border:4px solid var(--ink);border-radius:var(--radius-lg);background:var(--surface-2);box-shadow:0 6px 0 var(--ink);flex-direction:column;display:flex}.td-tower-title{font-family:var(--font-display);font-size:1.15rem;font-weight:800}.td-levels{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.td-level{border:3px solid var(--ink);background:var(--surface);border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;font-size:.78rem;font-weight:700;display:flex}.td-level[data-state=current]{border-color:var(--accent)}.td-level[data-state=locked]{opacity:.45}.td-stats{align-items:center;gap:6px var(--space-2);grid-template-columns:auto minmax(0,1fr);margin:0;font-size:.82rem;font-weight:700;display:grid}.td-stats dt{color:var(--text-muted)}.td-stats dd{background:var(--ink);border-radius:6px;block-size:12px;margin:0}.td-bar{background:var(--accent);block-size:100%;transition:inline-size var(--dur-base) var(--ease-out);border-radius:6px;display:block}.td-bar[data-stat=damage]{background:var(--negative)}.td-bar[data-stat=range]{background:var(--info)}.td-bar[data-stat=rate]{background:var(--positive)}.td-tower-actions{gap:var(--space-2);grid-template-columns:2fr 1fr;display:grid}@media (min-width:900px){.game-shell.td-shell{grid-template:auto auto minmax(0,1fr)/minmax(0,1fr) minmax(280px,340px)}.td-hud{grid-area:1/2;justify-content:flex-start}.game-shell.td-shell>.td-stage{grid-area:1/1/span 3}.game-shell.td-shell>.game-status{text-align:start;grid-area:2/2;min-block-size:1.5em}.td-panel{grid-area:3/2;align-self:start}}.play-head{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.play-title{text-shadow:0 3px 0 var(--ink);font-size:clamp(1.4rem,2.4vw,1.9rem);font-weight:800}.seg{border-radius:var(--radius-md);background:var(--ink);gap:4px;padding:4px;display:inline-flex}.seg-btn{min-block-size:40px;color:var(--text-muted);font:inherit;font-family:var(--font-display);cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:6px;padding-inline:12px 14px;font-size:1rem;font-weight:800;display:inline-flex}.seg-btn:hover{color:var(--text)}.seg-btn[aria-pressed=true]{background:var(--accent);color:var(--accent-text);box-shadow:inset 0 -3px 0 color-mix(in oklab, var(--ink) 20%, transparent)}.play-tools{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-inline-start:auto;display:flex}.icon-btn--positive{background:var(--positive);color:var(--ink)}.icon-btn--player{background:var(--player-a);color:var(--ink)}.play-menu{display:contents}.play-menu-btn{display:none}@media (max-width:720px){.app[data-page=play] .app-header{display:none}.play{padding-inline:var(--space-2)}.stage-card{padding:0}.play-head{gap:var(--space-2);flex-wrap:nowrap;position:relative}.play-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-inline-size:0;font-size:1.25rem;overflow:hidden}.play-head .play-menu-btn{display:inline-grid}.play-head[data-menu=open] .play-menu-btn{background:var(--accent);color:var(--accent-text)}.play-menu{z-index:20;align-items:stretch;gap:var(--space-3);padding:var(--space-3);border:3px solid var(--ink);border-radius:var(--radius-lg);background:var(--surface);box-shadow:0 var(--depth) 0 var(--ink);flex-direction:column;display:none;position:absolute;inset-block-start:calc(100% + var(--space-2));inset-inline:0}.play-head[data-menu=open] .play-menu,.play-menu .seg{display:flex}.play-menu .seg-btn{min-block-size:var(--tap-min);flex:1;justify-content:center}.play-menu .play-tools{justify-content:flex-start;gap:var(--space-2);flex-wrap:wrap;margin-inline-start:0}.play-menu .play-tools .btn{flex:auto}.game-shell:has(>.game-player--top){grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:start;display:grid}.game-shell:has(>.game-player--top)>*{grid-column:1/-1}.game-shell>.game-player--top{grid-area:1/1}.game-shell>.game-player--bottom{grid-area:1/2}.game-shell>.game-player{gap:var(--space-2);min-block-size:44px;padding:4px var(--space-2)}.game-player .player-avatar{block-size:28px;inline-size:28px}.game-player .player-name{-webkit-line-clamp:1;line-clamp:1;font-size:.85rem}.game-player .player-mark{block-size:26px;min-inline-size:30px}}.tool-group{gap:var(--space-1);display:inline-flex}.btn--danger-text{color:var(--negative)}.room-bar{align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid color-mix(in oklab, var(--accent) 28%, var(--border));border-radius:var(--radius-md);background:color-mix(in oklab, var(--accent) 6%, var(--surface));flex-wrap:wrap;display:flex}.room-bar-label{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:6px;font-size:.72rem;font-weight:800;display:inline-flex}.room-code{overflow-wrap:anywhere;border-radius:var(--radius-sm);background:var(--surface-2);font-family:var(--font-body);letter-spacing:.08em;padding:3px 8px;font-size:.85rem;font-weight:800}.room-invite{padding-inline:var(--space-3);font-size:.82rem}.room-copied{color:var(--positive);align-items:center;gap:4px;font-size:.8rem;font-weight:700;display:inline-flex}.room-link{min-block-size:var(--tap-min);padding-inline:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font:inherit;flex:100%;font-size:.8rem}@media (max-width:640px){.room-bar{gap:var(--space-1) var(--space-2);padding:var(--space-2)}.room-invite{padding-inline:var(--space-2)}.room-invite-label{display:none}}.play-head[data-view=lobby] .play-tools{grid-column:3}@media (max-width:720px){.play-head{grid-template-columns:auto minmax(0,1fr)}.play-tools{grid-column:1/-1}}.game-shell{position:relative}.game-stage{place-items:start center}@media (min-width:1000px){.stage-card{inline-size:min(100%,1140px)}.game-shell{column-gap:var(--space-4);row-gap:var(--space-2);grid-template:".status.""top stage bottom"minmax(0,1fr)".reactions."/220px minmax(0,1fr) 220px;display:grid}.game-shell>.game-status{grid-area:status}.game-shell>.game-stage-wrap,.game-shell>.game-stage{grid-area:stage}.game-shell>.game-reactions{grid-area:reactions}.game-player--top{grid-area:top;align-self:start}.game-player--bottom{grid-area:bottom;align-self:end}}.game-player{align-items:center;gap:var(--space-3);min-block-size:52px;padding:var(--space-2) var(--space-3);border:2px solid var(--border);border-radius:var(--radius-md);background:var(--surface);transition:border-color var(--dur-base) var(--ease-out);display:flex;position:relative}.game-player[data-active=true]{border-color:var(--accent)}.player-avatar{border-radius:var(--radius-sm);background:var(--surface-2);block-size:36px;inline-size:36px;color:var(--text);flex:none;place-items:center;font-weight:800;display:grid}.player-name{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;flex:1;min-inline-size:0;font-size:.95rem;line-height:1.25;display:-webkit-box;overflow:hidden}.player-mark{border-radius:var(--radius-sm);border:2px solid;place-items:center;block-size:30px;min-inline-size:36px;font-size:.9rem;font-weight:800;display:grid}.game-player[data-seat="1"] .player-mark,.game-player[data-seat="1"] .player-avatar{color:var(--mark-a)}.game-player[data-seat="2"] .player-mark,.game-player[data-seat="2"] .player-avatar{color:var(--mark-b)}.player-bubble{z-index:3;border-radius:var(--radius-md) var(--radius-md) var(--radius-md) 4px;background:var(--text);color:var(--bg);animation:bubble-in var(--dur-slow) var(--ease-out) both;padding:4px 12px;font-size:.85rem;font-weight:800;position:absolute;inset-block-start:-16px;inset-inline-end:var(--space-3)}.game-stage-wrap{flex-direction:column;flex:1;min-block-size:0;min-inline-size:0;display:flex;position:relative}.game-stage-wrap>.game-stage{flex:1}.game-countdown{z-index:4;border-radius:var(--radius-md);background:color-mix(in oklab, var(--bg) 62%, transparent);color:var(--accent);animation:count-pop .7s var(--ease-out) both;place-items:center;font-size:clamp(4rem,18vw,8rem);font-weight:800;line-height:1;display:grid;position:absolute;inset:0}.game-countdown[hidden],.game-result[hidden],.game-reactions[hidden],.player-bubble[hidden],.game-result-chip[hidden]{display:none}.game-reactions{justify-content:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.reaction-btn{min-block-size:var(--tap-min);padding-inline:var(--space-3);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;font-size:.85rem;font-weight:600}.reaction-btn:active{transform:scale(.96)}.game-result{inset-inline:var(--space-3);z-index:6;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:color-mix(in oklab, var(--surface) 94%, transparent);box-shadow:0 24px 60px -24px color-mix(in oklab, var(--text) 70%, transparent);text-align:center;animation:result-in var(--dur-slow) var(--ease-out) both;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);justify-items:center;display:grid;position:absolute;inset-block-end:var(--space-3);overflow:hidden}.game-result[data-kind=win] .game-result-title{color:var(--accent)}.game-result-title{margin:0;font-size:clamp(1.8rem,6vw,2.6rem);font-weight:800;line-height:1.1}.game-result-sub{color:var(--text-muted);margin:0}.game-result-actions{justify-content:center;gap:var(--space-2);flex-wrap:wrap;margin-block-start:var(--space-2);display:flex;position:relative}.game-result-chip{z-index:6;position:absolute;inset-block-end:var(--space-3);inset-inline-end:var(--space-3)}.game-confetti{pointer-events:none;position:absolute;inset:0}.confetti-piece{inline-size:calc(6px + (var(--i) * 7) % 6px);block-size:calc(8px + (var(--i) * 5) % 8px);background:var(--mark-a);opacity:0;animation:confetti-fall calc(1.8s + (var(--i) % 4) * .35s) ease-in calc((var(--i) % 5) * .18s) infinite;border-radius:2px;position:absolute;inset-block-start:-12px;inset-inline-start:calc(var(--i) * 6.4%)}.confetti-piece:nth-child(3n+1){background:var(--mark-b)}.confetti-piece:nth-child(3n+2){background:var(--accent);border-radius:50%}.search-state{align-content:center;justify-items:center;gap:var(--space-3);min-block-size:360px;padding:var(--space-5);text-align:center;display:grid}.search-tip{max-inline-size:36ch;padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-muted);margin:0;font-size:.9rem}.radar{place-items:center;block-size:180px;inline-size:180px;display:grid;position:relative}.radar span{border:3px solid var(--accent);opacity:0;border-radius:50%;animation:2.4s ease-out infinite radar-ping;position:absolute;inset:0}.radar span:nth-child(2){animation-delay:.8s}.radar span:nth-child(3){animation-delay:1.6s}.radar .radar-core{border-radius:var(--radius-lg);background:var(--accent);block-size:72px;inline-size:72px;color:var(--accent-text);opacity:1;border:0;place-items:center;animation:none;display:grid;position:relative;inset:auto}.lobby{align-items:start;gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(280px,380px);display:grid}.lobby[hidden]{display:none}@media (max-width:900px){.lobby{grid-template-columns:minmax(0,1fr)}}.lobby-main,.lobby-side{gap:var(--space-4);min-inline-size:0;display:grid}@media (min-width:720px){.lobby-main{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start}}.lobby-hero{padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--surface);place-items:center;display:grid}.lobby-hero .cover{inline-size:100%}.lobby-panel{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--surface);display:grid}.lobby-panel h2,.info-card h3{margin:0;font-size:1.1rem;font-weight:800}.mode-list{gap:var(--space-2);display:grid}.mode-card{gap:var(--space-2);padding:var(--space-3);border:2px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--dur-fast) var(--ease-out);display:grid}.mode-card[data-selected=true]{border-color:var(--accent);background:color-mix(in oklab, var(--accent) 8%, var(--surface))}.mode-card[data-disabled=true]{opacity:.75;border-style:dashed}.mode-card-main{align-items:center;gap:var(--space-3);min-block-size:var(--tap-min);color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;padding:0;display:flex}.mode-card-main:disabled{cursor:default}.mode-card-icon{border-radius:var(--radius-md);background:var(--surface-2);block-size:48px;inline-size:48px;color:var(--accent);flex:none;place-items:center;display:grid}.mode-card[data-selected=true] .mode-card-icon{background:var(--accent);color:var(--accent-text)}.mode-card-copy{gap:2px;min-inline-size:0;display:grid}.mode-card-copy strong{align-items:center;gap:var(--space-2);flex-wrap:wrap;font-size:1.02rem;display:flex}.mode-card-copy>span{color:var(--text-muted);font-size:.88rem}.segmented{border-radius:var(--radius-md);background:var(--ink);gap:4px;padding:4px;display:flex}.segmented-btn{min-block-size:var(--tap-min);color:var(--text-muted);font:inherit;font-family:var(--font-display);cursor:pointer;background:0 0;border:0;border-radius:12px;flex:1;font-weight:800}.segmented-btn[aria-pressed=true]{background:var(--accent);color:var(--accent-text);box-shadow:inset 0 -3px 0 color-mix(in oklab, var(--ink) 20%, transparent)}.lobby-start{min-block-size:56px;inline-size:100%}.info-card{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);display:grid}.info-card h3{align-items:center;gap:var(--space-2);display:flex}.info-card h3 .icon{color:var(--accent)}.steps{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.steps li{align-items:flex-start;gap:var(--space-3);color:var(--text-muted);font-size:.92rem;display:flex}.step-num{background:color-mix(in oklab, var(--accent) 16%, var(--surface));block-size:28px;inline-size:28px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-size:.8rem;font-weight:800;display:grid}.controls-list,.facts-list{gap:var(--space-2) var(--space-3);margin:0;font-size:.9rem;display:grid}.controls-list{grid-template-columns:auto minmax(0,1fr);align-items:center}.controls-list dt{padding:2px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);white-space:nowrap;justify-self:start;font-weight:700}.controls-list dd{color:var(--text-muted);margin:0}.facts-list{grid-template-columns:1fr auto}.facts-list dt{color:var(--text-muted)}.facts-list dd{text-align:end;margin:0;font-weight:700}.modal-card--audio{gap:var(--space-3)}.range-input{inline-size:100%;min-block-size:var(--tap-min);accent-color:var(--accent)}.switch-row{justify-content:space-between;align-items:center;gap:var(--space-3);min-block-size:var(--tap-min);font-weight:600;display:flex}.switch{appearance:none;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;block-size:28px;inline-size:48px;transition:background var(--dur-fast) var(--ease-out);border-radius:999px;flex:none;position:relative}.switch:after{content:"";background:var(--text-muted);block-size:20px;inline-size:20px;transition:transform var(--dur-fast) var(--ease-out);border-radius:50%;position:absolute;inset-block-start:3px;inset-inline-start:3px}.switch:checked{border-color:var(--accent);background:var(--accent)}.switch:checked:after{background:var(--accent-text);transform:translate(20px)}[dir=rtl] .switch:checked:after{transform:translate(-20px)}.switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@keyframes bubble-in{0%{opacity:0;transform:translateY(10px)scale(.9)}to{opacity:1;transform:none}}@keyframes count-pop{0%{opacity:0;transform:scale(1.5)}35%{opacity:1}to{opacity:1;transform:scale(1)}}@keyframes result-in{0%{opacity:0;transform:translateY(24px)scale(.96)}to{opacity:1;transform:none}}@keyframes confetti-fall{0%{opacity:0;transform:translateY(0)rotate(0)}12%{opacity:1}to{opacity:0;transform:translateY(260px)rotate(420deg)}}@keyframes radar-ping{0%{opacity:.7;transform:scale(.45)}to{opacity:0;transform:scale(1.5)}}@media (prefers-reduced-motion:reduce){.game-countdown,.game-result,.player-bubble,.confetti-piece,.radar span{animation-duration:.001ms;animation-iteration-count:1}}.caro-pieces{justify-content:center}.caro-piece-btn{min-inline-size:var(--tap-min);min-block-size:var(--tap-min);padding-inline:var(--space-2);flex:0 auto;justify-content:center;align-items:center;gap:2px;display:inline-flex}.caro-piece-icon{flex:none;display:block}.player-mark:has(.caro-piece-icon){border-color:#0000}@media (min-width:1000px){.game-shell>.caro-pieces{grid-area:3/3;align-self:start}}.home{align-items:flex-start;gap:var(--space-5);padding-block:var(--space-5) var(--space-7);flex-wrap:wrap;display:flex}.home-content{gap:var(--space-6);flex-direction:column;flex:999 560px;min-inline-size:0;display:flex}.home-side{gap:var(--space-2);flex-direction:column;flex:210px;max-inline-size:230px;display:flex;position:sticky;inset-block-start:88px}.side-btn{align-items:center;gap:var(--space-3);min-block-size:56px;padding-inline:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--text);font:inherit;font-family:var(--font-display);text-align:start;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out);background:0 0;border:3px solid #0000;font-size:1.05rem;font-weight:800;display:flex}.side-btn:hover{background:var(--surface-2)}.side-btn[aria-pressed=true]{border-color:var(--accent);background:var(--surface-2)}.shelf-icon{background:var(--tone,var(--info));block-size:38px;inline-size:38px;color:var(--info-text);box-shadow:inset 0 -3px 0 color-mix(in oklab, var(--ink) 25%, transparent);border-radius:11px;flex:none;place-items:center;display:inline-grid}[data-tone=info]{--tone:var(--info)}[data-tone=positive]{--tone:var(--positive)}[data-tone=negative]{--tone:var(--negative)}[data-tone=warning]{--tone:var(--warning)}[data-tone=player-a]{--tone:var(--player-a)}.shelf-icon[data-tone=warning]{color:var(--ink)}@media (max-width:760px){.home-side{scrollbar-width:none;flex-direction:row;flex-basis:100%;max-inline-size:none;position:static;overflow-x:auto}.side-btn{flex:none;min-block-size:48px}}.tile{color:var(--text);text-decoration:none;display:block}.tile-media{border:4px solid var(--ink);border-radius:var(--radius-lg);box-shadow:0 6px 0 var(--ink);transition:transform var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);display:block;position:relative;overflow:hidden}a.tile:hover .tile-media,a.tile:focus-visible .tile-media{border-color:var(--accent);transform:translateY(-4px)rotate(-1deg)scale(1.02)}a.tile:focus-visible{outline:none}.tile-badge{background:var(--ink);color:var(--info-text);border-radius:999px;align-items:center;gap:5px;padding:3px 10px 3px 6px;font-size:.75rem;font-weight:800;display:inline-flex;position:absolute;inset-block-start:10px;inset-inline-start:10px}.tile-play{border:3px solid var(--ink);background:var(--accent);block-size:64px;inline-size:64px;color:var(--accent-text);box-shadow:0 5px 0 var(--ink);opacity:0;transition:opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;margin:-32px 0 0 -32px;display:grid;position:absolute;inset-block-start:50%;inset-inline-start:50%;transform:scale(.6)}a.tile:hover .tile-play,a.tile:focus-visible .tile-play{opacity:1;transform:scale(1)}.tile[data-recent=true] .tile-media:after{content:"";border:3px solid var(--ink);background:var(--accent);border-radius:50%;block-size:14px;inline-size:14px;position:absolute;inset-block-start:10px;inset-inline-end:10px}.tile-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.shelf{gap:var(--space-3);flex-direction:column;display:flex}.shelf-title{align-items:center;gap:var(--space-3);font-size:1.6rem;font-weight:800;display:flex}.hero-grid{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.tile--hero{grid-area:span 2/span 2}.tile--hero .tile-media{border-radius:var(--radius-xl);block-size:100%}.tile--hero .cover{block-size:100%}.hero-hot{background:var(--ink);color:var(--accent);font-family:var(--font-display);border-radius:999px;align-items:center;gap:6px;padding:6px 14px 6px 8px;font-weight:800;display:inline-flex;position:absolute;inset-block-start:20px;inset-inline-start:20px}.hero-bar{align-items:center;gap:var(--space-4);border:3px solid var(--ink);border-radius:var(--radius-lg);background:var(--surface);box-shadow:0 6px 0 var(--ink);padding:12px 12px 12px 22px;display:flex;position:absolute;inset-block-end:20px;inset-inline-start:20px}.hero-name{font-family:var(--font-display);font-size:clamp(1.6rem,3vw,2.4rem);font-weight:800;line-height:1}.hero-play{pointer-events:none}@media (max-width:760px){.hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tile--hero{grid-row:auto}.hero-bar{justify-content:space-between;padding:8px 8px 8px 16px;inset-block-end:10px;inset-inline:10px}}.tile--soon{align-content:center;place-items:center;gap:var(--space-2);aspect-ratio:16/10;border:4px dashed var(--border);border-radius:var(--radius-lg);background:var(--surface);display:grid;position:relative}.soon-art{background:var(--tone);block-size:84px;inline-size:84px;color:var(--info-text);opacity:.6;border-radius:22px;place-items:center;display:grid}.tile--soon[data-tone=warning] .soon-art{color:var(--ink)}.soon-name{font-family:var(--font-display);font-size:1.2rem;font-weight:800}.cover{--cover-accent:var(--cover-accent-light);aspect-ratio:16/10;background:var(--cover-accent);display:block;position:relative;overflow:hidden;container-type:inline-size}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .cover{--cover-accent:color-mix(in oklab, var(--cover-accent-dark) 78%, var(--bg))}}:root[data-theme=dark] .cover{--cover-accent:color-mix(in oklab, var(--cover-accent-dark) 78%, var(--bg))}.cover-sprite{block-size:auto;filter:drop-shadow(0 .7cqw 0 color-mix(in oklab, var(--ink) 35%, transparent));-webkit-user-select:none;user-select:none;display:block;position:absolute}.cover-title{color:var(--info-text);font-family:var(--font-display);text-transform:uppercase;text-shadow:.05em 0 0 var(--ink), -.05em 0 0 var(--ink), 0 .05em 0 var(--ink), 0 -.05em 0 var(--ink), .04em .04em 0 var(--ink), -.04em -.04em 0 var(--ink), .04em -.04em 0 var(--ink), -.04em .04em 0 var(--ink), 0 .13em 0 var(--ink);font-size:11cqw;font-weight:800;line-height:1;position:absolute;inset-block-end:4%;inset-inline-end:5%}.cover-title[data-length=long]{font-size:6.5cqw}.cover-generic{color:var(--info-text);place-items:center;display:grid;position:absolute;inset:0}.cover[data-cover=caro]{background-image:linear-gradient(color-mix(in oklab, var(--info-text) 25%, transparent) 2px, transparent 2px), linear-gradient(90deg, color-mix(in oklab, var(--info-text) 25%, transparent) 2px, transparent 2px);background-size:10% 16%}.caro-win{background:var(--accent);opacity:.85;transform-origin:0;border-radius:999px;block-size:8%;inline-size:56%;position:absolute;inset-block-start:13%;inset-inline-start:9%;transform:rotate(33deg)}.caro-r,.caro-b{inline-size:13%}.caro-r0{inset-block-start:6%;inset-inline-start:6%}.caro-r1{inset-block-start:23%;inset-inline-start:17%}.caro-r2{inset-block-start:40%;inset-inline-start:28%}.caro-r3{inset-block-start:57%;inset-inline-start:39%}.caro-r4{inset-block-start:74%;inset-inline-start:50%}.caro-b0{inset-block-start:6%;inset-inline-start:30%}.caro-b1{inset-block-start:24%;inset-inline-start:42%}.caro-b2{inset-block-start:42%;inset-inline-start:54%}.caro-b3{inset-block-start:58%;inset-inline-start:8%}.caro-b4{inset-block-start:18%;inset-inline-start:66%}.caro-star{inline-size:17%;inset-block-start:8%;inset-inline-end:6%;transform:rotate(14deg)}.chess-board{aspect-ratio:1;border:1cqw solid var(--ink);background:repeating-conic-gradient(var(--positive) 0 25%, var(--surface) 0 50%) 0 0 / 25% 25%;inline-size:62%;box-shadow:0 2cqw 0 color-mix(in oklab, var(--ink) 40%, transparent);border-radius:4%;position:absolute;inset-block-start:24%;inset-inline-end:-8%;transform:rotate(-14deg)}.chess-n{inline-size:40%;inset-block-start:6%;inset-inline-start:0}.chess-k{inline-size:30%;inset-block-start:0;inset-inline-start:50%;transform:rotate(-14deg)}.chess-p{inline-size:18%;inset-block-start:40%;inset-inline-start:34%}.xq-river{background:color-mix(in oklab, var(--ink) 20%, transparent);block-size:18%;position:absolute;inset-block-start:40%;inset-inline:0}.xq-piece{aspect-ratio:1;place-items:center;display:grid;position:absolute}.xq-piece img{inline-size:100%;filter:drop-shadow(0 .7cqw 0 color-mix(in oklab, var(--ink) 40%, transparent));position:absolute;inset:0}.xq-piece span{font-family:KaiTi,STKaiti,Noto Serif SC,Songti SC,serif;font-weight:700;line-height:1;position:relative}.xq-red span{color:var(--stone-a)}.xq-black span{color:var(--ink)}.xq-a{inline-size:27%;inset-block-start:20%;inset-inline-start:10%}.xq-a span{font-size:14cqw}.xq-b{inline-size:22%;inset-block-start:2%;inset-inline-start:42%;transform:rotate(-12deg)}.xq-b span{font-size:11cqw}.xq-c{inline-size:22%;inset-block-start:30%;inset-inline-start:66%;transform:rotate(10deg)}.xq-c span{font-size:11cqw}.td-scene{object-fit:cover;block-size:100%;inline-size:100%;image-rendering:pixelated;filter:none;inset:0}@media (prefers-reduced-motion:reduce){.tile-media,.tile-play{transition:none}a.tile:hover .tile-media{transform:none}}
