@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,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{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#e6f3ff;--bg-dots:#ffffffb3;--surface:#fff;--surface-2:#eef4fb;--surface-3:#dfe9f6;--border:#d3e1f1;--border-strong:#b3c6de;--card-shadow:#c9dbef;--text:#1f2a48;--text-muted:#4c5a7a;--text-subtle:#7a87a5;--accent:#ffc233;--accent-hover:#ffb703;--accent-shadow:#e09a00;--accent-soft:#fff1c7;--accent-contrast:#3a2700;--accent-text:#a86c00;--blue:#3b82f6;--blue-shadow:#2160c9;--blue-soft:#dcebff;--green:#22b35e;--green-shadow:#168a45;--green-soft:#d9f7e4;--purple:#8b5cf6;--purple-soft:#ece4ff;--pink:#f05a9b;--pink-soft:#ffe1ee;--success:#16a34a;--success-soft:#d9f7e4;--danger:#ea4b4b;--danger-shadow:#c03030;--danger-soft:#ffe2e2;--warning:#f59e0b;--focus:#2563eb;--board-frame:#2c3a66;--shadow-sm:0 2px 6px #1f2a4814;--shadow-md:0 8px 24px #1f2a481f;--shadow-lg:0 28px 70px #1f2a4840, 0 6px 16px #1f2a481a;--radius-sm:14px;--radius:20px;--radius-lg:28px;--font-sans:"Nunito Variable", ui-rounded, "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;--font-display:"Nunito Variable", ui-rounded, "Segoe UI", system-ui, sans-serif;--font-emoji:"Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji", sans-serif;--font-mono:ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;--header-h:76px;--gutter:16px;--main-pad-y:clamp(10px, 2.4vh, 26px);--gap:clamp(10px, 2vh, 22px)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121a36;--bg-dots:#ffffff0d;--surface:#1c2547;--surface-2:#252f58;--surface-3:#303c6c;--border:#2d3966;--border-strong:#42508a;--card-shadow:#0b1128;--text:#f3f5ff;--text-muted:#bcc5e6;--text-subtle:#8a95bf;--accent:#ffc94a;--accent-hover:#ffd36b;--accent-shadow:#c48a00;--accent-soft:#3d3318;--accent-contrast:#2b1d00;--accent-text:#ffd36b;--blue:#5b9bff;--blue-shadow:#2f6fd6;--blue-soft:#1f3263;--green:#34d077;--green-shadow:#1c9a52;--green-soft:#173d2c;--purple:#a685ff;--purple-soft:#2e2a5e;--pink:#ff7cb5;--pink-soft:#46223f;--success:#34d077;--success-soft:#173d2c;--danger:#ff6464;--danger-shadow:#c23c3c;--danger-soft:#4a1f2a;--warning:#ffc94a;--focus:#7cb4ff;--board-frame:#0b1128;--shadow-sm:0 2px 6px #00000059;--shadow-md:0 8px 24px #0006;--shadow-lg:0 28px 70px #0009, 0 6px 16px #00000059}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background-color:var(--bg);background-image:radial-gradient(var(--bg-dots) 2px, transparent 2.5px);min-height:100dvh;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-size:28px 28px;margin:0;font-size:18px;font-weight:600;line-height:1.5}h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:var(--font-display);font-weight:900;line-height:1.15}a{color:inherit}button,input,select{font:inherit;color:inherit}button,summary{cursor:pointer}:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.emoji{font-family:var(--font-emoji);font-weight:400;line-height:1}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app{flex-direction:column;min-height:100dvh;display:flex}.app-header{z-index:20;height:var(--header-h);padding:0 max(var(--gutter), calc((100vw - 1240px) / 2));background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:saturate(160%)blur(12px);backdrop-filter:saturate(160%)blur(12px);border-bottom:3px solid var(--border);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.brand{font-family:var(--font-display);color:var(--text);align-items:center;gap:12px;font-size:28px;font-weight:900;text-decoration:none;display:inline-flex}.brand-mark{flex:none;width:48px;height:48px;transition:transform .2s}.brand:hover .brand-mark{transform:rotate(-8deg)scale(1.06)}.header-actions{align-items:center;gap:8px;display:flex}.app-main{width:100%;max-width:1240px;min-height:0;padding:var(--main-pad-y) var(--gutter);flex-direction:column;flex:1;margin:0 auto;display:flex}.page{flex-direction:column;flex:1;min-height:0;animation:.52s cubic-bezier(.2,1.35,.4,1) backwards page-in;display:flex}@keyframes page-in{0%{opacity:0;transform:translateY(28px)scale(.94)}60%{opacity:1}}.step{animation:.42s cubic-bezier(.2,1.3,.4,1) backwards step-in}@keyframes step-in{0%{opacity:0;transform:translate(56px)scale(.96)}60%{opacity:1}}.pop-in>*{animation:.46s cubic-bezier(.2,1.6,.4,1) backwards pop-item}.pop-in>:first-child{animation-delay:80ms}.pop-in>:nth-child(2){animation-delay:.14s}.pop-in>:nth-child(3){animation-delay:.2s}.pop-in>:nth-child(4){animation-delay:.26s}.pop-in>:nth-child(5){animation-delay:.32s}.pop-in>:nth-child(6){animation-delay:.38s}.pop-in>:nth-child(7){animation-delay:.44s}.pop-in>:nth-child(8){animation-delay:.5s}@keyframes pop-item{0%{opacity:0;transform:scale(.6)rotate(-4deg)}70%{opacity:1}}.settings-credit{color:var(--text-subtle);padding:4px 28px 0;font-size:14px}.btn{--btn-bg:var(--surface);--btn-fg:var(--text);--btn-border:var(--border-strong);--btn-edge:var(--border-strong);border-radius:var(--radius-sm);border:3px solid var(--btn-border);background:var(--btn-bg);min-height:56px;color:var(--btn-fg);box-shadow:0 5px 0 var(--btn-edge);font-family:var(--font-display);text-align:center;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:10px;margin-bottom:5px;padding:0 22px;font-size:19px;font-weight:800;line-height:1.1;text-decoration:none;transition:background-color .12s,transform 80ms,box-shadow 80ms;display:inline-flex;position:relative}.btn svg{flex:none}.btn:hover:not(:disabled){--btn-bg:var(--surface-2)}.btn:active:not(:disabled){box-shadow:0 1px 0 var(--btn-edge);transform:translateY(4px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{--btn-bg:var(--accent);--btn-fg:var(--accent-contrast);--btn-border:var(--accent-shadow);--btn-edge:var(--accent-shadow)}.btn-primary:hover:not(:disabled){--btn-bg:var(--accent-hover)}.btn-blue{--btn-bg:var(--blue);--btn-fg:#fff;--btn-border:var(--blue-shadow);--btn-edge:var(--blue-shadow)}.btn-blue:hover:not(:disabled){--btn-bg:color-mix(in srgb, var(--blue) 90%, #000)}.btn-green{--btn-bg:var(--green);--btn-fg:#fff;--btn-border:var(--green-shadow);--btn-edge:var(--green-shadow)}.btn-green:hover:not(:disabled){--btn-bg:color-mix(in srgb, var(--green) 90%, #000)}.btn-outline{--btn-bg:var(--surface)}.btn-ghost{--btn-bg:transparent;--btn-border:transparent;--btn-edge:transparent}.btn-ghost:hover:not(:disabled){--btn-bg:var(--surface-2)}.btn-danger{--btn-bg:var(--danger);--btn-fg:#fff;--btn-border:var(--danger-shadow);--btn-edge:var(--danger-shadow)}.btn-danger:hover:not(:disabled){--btn-bg:color-mix(in srgb, var(--danger) 88%, #000)}.btn-lg{border-radius:var(--radius);min-height:clamp(56px,8.5vh,68px);padding:0 28px;font-size:clamp(20px,3.2vh,24px)}.btn-sm{min-height:44px;box-shadow:0 3px 0 var(--btn-edge);margin-bottom:3px;padding:0 16px;font-size:16px}.btn-block{width:100%}.icon-btn{border-radius:var(--radius-sm);width:52px;height:52px;color:var(--text-muted);background:0 0;border:0;place-items:center;padding:0;transition:background-color .12s,color .12s;display:inline-grid}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.card{background:var(--surface);border:3px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 6px 0 var(--card-shadow)}.card-body{padding:28px}.field{gap:12px;display:grid}.field-label{font-family:var(--font-display);color:var(--text);font-size:21px;font-weight:800}.input{border-radius:var(--radius-sm);border:3px solid var(--border-strong);background:var(--surface);width:100%;min-height:62px;padding:0 18px;font-size:21px;font-weight:700;transition:border-color .12s,box-shadow .12s}.input::placeholder{color:var(--text-subtle);font-weight:600}.input:focus{border-color:var(--blue);box-shadow:0 0 0 5px color-mix(in srgb, var(--blue) 25%, transparent);outline:none}.input-code{font-family:var(--font-display);letter-spacing:.3em;text-align:center;text-transform:uppercase;min-height:clamp(64px,10vh,80px);font-size:clamp(26px,4.4vh,34px);font-weight:800}.input-code::placeholder{text-transform:none;letter-spacing:.05em;font-size:19px}.form-error{border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger);padding:12px 16px;font-size:17px;font-weight:700}.segmented{grid-auto-columns:1fr;grid-auto-flow:column;gap:10px;display:grid}.segmented.wrap{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));grid-auto-flow:row}.segmented-option{position:relative}.segmented-option input{opacity:0;pointer-events:none;position:absolute}.segmented-option>span{border-radius:var(--radius-sm);border:3px solid var(--border);background:var(--surface);height:100%;min-height:clamp(52px,7.5vh,62px);box-shadow:0 4px 0 var(--border);font-family:var(--font-display);text-align:center;color:var(--text-muted);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:8px 10px;font-size:19px;font-weight:800;line-height:1.15;transition:background-color .12s,color .12s,border-color .12s,transform 80ms;display:flex}.segmented-option>span:hover{color:var(--text);border-color:var(--border-strong)}.segmented-option input:checked+span{background:var(--accent-soft);border-color:var(--accent-shadow);box-shadow:0 4px 0 var(--accent-shadow);color:var(--text)}.segmented-option input:focus-visible+span{outline:4px solid var(--focus);outline-offset:2px}.segmented-option small{font-family:var(--font-sans);color:var(--text-subtle);font-size:14px;font-weight:700}.choice-piece{width:clamp(34px,6.5vh,52px);height:clamp(34px,6.5vh,52px);display:block}.choice-piece svg{width:100%;height:100%}.choice-emoji{font-size:clamp(26px,5vh,40px);line-height:clamp(34px,6.5vh,52px)}.switch-row{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:60px;font-size:18px;display:flex}.switch{flex:none;width:64px;height:38px;position:relative}.switch input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.switch-track{background:var(--border-strong);pointer-events:none;border-radius:999px;transition:background-color .15s;position:absolute;inset:0}.switch-track:after{content:"";background:#fff;border-radius:50%;width:30px;height:30px;transition:transform .15s;position:absolute;top:4px;left:4px;box-shadow:0 2px 4px #00000040}.switch input:checked+.switch-track{background:var(--green)}.switch input:checked+.switch-track:after{transform:translate(26px)}.switch input:focus-visible+.switch-track{outline:4px solid var(--focus);outline-offset:2px}.dialog{border:4px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);width:min(500px,100vw - 24px);max-height:calc(100dvh - 24px);color:var(--text);box-shadow:var(--shadow-lg);padding:0;overflow:auto}.dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#121a3699}.dialog[open]{animation:.26s cubic-bezier(.2,1.4,.4,1) pop-in}@keyframes pop-in{0%{opacity:0;transform:translateY(16px)scale(.92)}}.dialog-header{justify-content:space-between;align-items:center;gap:12px;padding:24px 24px 0 28px;display:flex}.dialog-title{font-size:28px}.dialog-body{color:var(--text-muted);padding:16px 28px 4px;font-size:19px}.dialog-footer{flex-wrap:wrap;justify-content:flex-end;gap:12px;padding:22px 28px 24px;display:flex}.settings-section{border-bottom:3px dashed var(--border);color:var(--text);gap:12px;padding:18px 0;display:grid}.settings-section:last-child{border-bottom:0}.board-theme-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.board-theme-option input{opacity:0;position:absolute}.board-theme-option{color:var(--text-muted);cursor:pointer;justify-items:center;gap:6px;font-size:15px;font-weight:700;display:grid;position:relative}.board-theme-swatch{aspect-ratio:1;border-radius:var(--radius-sm);border:4px solid #0000;grid-template-columns:1fr 1fr;width:100%;transition:border-color .12s,transform .12s;display:grid;overflow:hidden}.board-theme-option:hover .board-theme-swatch{transform:scale(1.04)}.board-theme-option input:checked~.board-theme-swatch{border-color:var(--accent-shadow)}.board-theme-option input:checked~span:last-child{color:var(--text)}.board-theme-option input:focus-visible~.board-theme-swatch{outline:4px solid var(--focus);outline-offset:2px}.badge{background:var(--surface-2);min-height:32px;color:var(--text-muted);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:16px;font-weight:800;display:inline-flex}.badge-accent{background:var(--accent-soft);color:var(--accent-text)}.badge-green{background:var(--green-soft);color:var(--success)}.status-dot{background:var(--text-subtle);border-radius:50%;flex:none;width:12px;height:12px}.status-dot.online{background:var(--success)}.status-dot.warning{background:var(--warning);animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.spinner{border:4px solid var(--border-strong);border-top-color:var(--blue);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast-region{z-index:50;pointer-events:none;gap:8px;display:grid;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{border-radius:var(--radius);background:var(--text);color:var(--bg);box-shadow:var(--shadow-lg);padding:14px 22px;font-size:18px;font-weight:800;animation:.22s ease-out pop-in}.banner{border-radius:var(--radius);background:var(--accent-soft);color:var(--text);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;font-size:18px;font-weight:700;display:flex}.banner-actions{flex:none;gap:8px;display:flex}.banner-danger{background:var(--danger-soft)}.banner-warning{background:color-mix(in srgb, var(--warning) 22%, var(--surface));border:2px solid var(--warning);flex-wrap:nowrap;justify-content:flex-start}.forfeit-count{background:var(--warning);color:#1f2a48;font-variant-numeric:tabular-nums;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-size:22px;font-weight:900;display:grid}.game{--bar-h:64px;--col-gap:clamp(6px, 1.2vh, 12px);flex:1;grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:28px;min-height:0;display:grid}.game-board-col{gap:var(--col-gap);--board-size:min(100%, calc(100dvh - var(--header-h) - 2 * var(--main-pad-y) - 2 * var(--bar-h) - 2 * var(--col-gap) - 10px));justify-items:center;display:grid}.game-board-col>*{width:var(--board-size);min-width:280px}.board-frame{aspect-ratio:1;border:8px solid var(--board-frame);box-shadow:0 8px 0 color-mix(in srgb, var(--board-frame) 70%, #000), var(--shadow-md);background:var(--board-frame);touch-action:none;border-radius:22px;position:relative;overflow:hidden}.board-frame.is-history:after{content:"";pointer-events:none;box-shadow:inset 0 0 0 5px var(--accent);border-radius:14px;position:absolute;inset:0}.player-bar{height:var(--bar-h);align-items:center;gap:14px;display:flex}.avatar{background:var(--purple-soft);width:56px;height:56px;color:var(--purple);font-family:var(--font-display);border-radius:18px;flex:none;place-items:center;font-size:26px;font-weight:900;display:grid;overflow:hidden}.avatar svg{width:100%;height:100%}.avatar .emoji{font-size:32px}.player-meta{flex:1;gap:2px;min-width:0;display:grid}.player-name{min-width:0;font-family:var(--font-display);flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:21px;font-weight:800;display:flex}.player-name-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.player-sub{min-height:26px;color:var(--text-muted);align-items:center;gap:6px;font-size:16px;display:flex}.captured{align-items:center;height:26px;display:inline-flex}.captured-group{margin-right:6px;display:inline-flex}.captured-piece{width:24px;height:24px;margin-right:-9px}.captured-group .captured-piece:last-child{margin-right:0}.material-diff{background:var(--green-soft);color:var(--success);border-radius:999px;margin-left:4px;padding:0 8px;font-weight:800}.clock{border-radius:var(--radius-sm);background:var(--surface);border:3px solid var(--border);min-width:112px;color:var(--text-muted);font-family:var(--font-display);font-variant-numeric:tabular-nums;text-align:center;flex:none;padding:8px 14px;font-size:30px;font-weight:800;transition:background-color .15s,color .15s}.clock.active{background:var(--blue);border-color:var(--blue-shadow);color:#fff}.clock.low{background:var(--danger);border-color:var(--danger-shadow);color:#fff;animation:1s ease-in-out infinite pulse}.thinking{gap:4px;display:inline-flex}.thinking i{background:currentColor;border-radius:50%;width:7px;height:7px;animation:.9s ease-in-out infinite bounce}.thinking i:nth-child(2){animation-delay:.15s}.thinking i:nth-child(3){animation-delay:.3s}@keyframes bounce{50%{transform:translateY(-5px)}}.game-panel{max-height:calc(100dvh - var(--header-h) - 2 * var(--main-pad-y) - 8px);flex-direction:column;display:flex;overflow:auto}.panel-header{justify-content:space-between;align-items:center;gap:8px;padding:18px 20px 0;display:flex}.panel-title{font-family:var(--font-display);font-size:22px;font-weight:800}.panel-section{padding:16px 18px}.panel-status{gap:10px;padding-top:0;display:grid}.turn-banner{border-radius:var(--radius);font-family:var(--font-display);border:3px solid #0000;align-items:center;gap:14px;padding:16px 18px;font-size:24px;font-weight:800;line-height:1.15;display:flex}.turn-banner .emoji{flex:none;font-size:38px}.turn-banner.mine{background:var(--green-soft);border-color:var(--green);color:var(--text);animation:2.4s ease-in-out infinite wiggle}.turn-banner.wait{background:var(--blue-soft);border-color:color-mix(in srgb, var(--blue) 45%, transparent)}.turn-banner.check{background:var(--danger-soft);border-color:var(--danger);animation:.9s ease-in-out infinite wiggle}.turn-banner.over{background:var(--accent-soft);border-color:var(--accent-shadow)}@keyframes wiggle{0%,80%,to{transform:rotate(0)}85%{transform:rotate(-1.5deg)}90%{transform:rotate(1.5deg)}95%{transform:rotate(-1deg)}}.game-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.game-actions .btn{white-space:normal;min-height:64px;padding:0 10px;font-size:18px}.moves-details{border:3px solid var(--border);border-radius:var(--radius);margin:0 18px 18px;overflow:hidden}.moves-details>summary{min-height:56px;font-family:var(--font-display);color:var(--text-muted);align-items:center;gap:10px;padding:0 16px;font-size:19px;font-weight:800;list-style:none;display:flex}.moves-details>summary::-webkit-details-marker{display:none}.moves-details>summary:hover{color:var(--text);background:var(--surface-2)}.moves-details>summary .chevron{margin-left:auto;transition:transform .15s}.moves-details[open]>summary .chevron{transform:rotate(180deg)}.moves-details[open]>summary{border-bottom:3px solid var(--border)}.move-list{scroll-behavior:smooth;min-height:80px;max-height:260px;padding:8px 10px;overflow-y:auto}.move-list-empty{text-align:center;color:var(--text-subtle);padding:20px 8px;font-size:17px}.move-row{border-radius:10px;grid-template-columns:44px 1fr 1fr;align-items:center;display:grid}.move-row:nth-child(odd){background:color-mix(in srgb, var(--surface-2) 70%, transparent)}.move-no{color:var(--text-subtle);font-variant-numeric:tabular-nums;padding-left:10px;font-size:16px}.move-btn{text-align:left;background:0 0;border:0;border-radius:10px;justify-self:start;min-height:40px;padding:0 10px;font-size:18px;font-weight:800}.move-btn:hover{background:var(--surface-3)}.move-btn.current{background:var(--accent);color:var(--accent-contrast)}.history-nav{border-top:3px solid var(--border);grid-template-columns:repeat(5,1fr);gap:4px;padding:8px 10px;display:grid}.history-nav .icon-btn{width:100%}.promotion-overlay{z-index:10;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#121a3680;place-items:center;display:grid;position:absolute;inset:0}.promotion-picker{border-radius:var(--radius-lg);border:4px solid var(--accent-shadow);background:var(--surface);box-shadow:var(--shadow-lg);text-align:center;gap:14px;padding:20px;animation:.26s cubic-bezier(.2,1.4,.4,1) pop-in;display:grid}.promotion-title{font-family:var(--font-display);font-size:24px;font-weight:800}.promotion-options{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.promotion-option{border:3px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);place-items:center;gap:2px;width:clamp(68px,13vw,96px);padding:8px 6px 6px;font-size:15px;font-weight:800;transition:background-color .12s,border-color .12s,transform .12s;display:grid}.promotion-option:hover,.promotion-option:focus-visible{background:var(--accent-soft);border-color:var(--accent-shadow);transform:translateY(-2px)}.promotion-option svg{aspect-ratio:1;width:100%;height:auto}.result-hero{text-align:center;justify-items:center;gap:8px;padding:36px 28px 4px;display:grid;position:relative;overflow:hidden}.result-icon{background:var(--surface-2);border-radius:50%;place-items:center;width:112px;height:112px;margin-bottom:6px;font-size:64px;animation:.5s cubic-bezier(.2,1.6,.4,1) pop-in;display:grid}.result-icon.win{background:var(--accent-soft);box-shadow:0 0 0 10px color-mix(in srgb, var(--accent) 25%, transparent)}.result-icon.loss{background:var(--blue-soft)}.result-icon.draw{background:var(--purple-soft)}.result-title{font-size:38px}.result-cheer{color:var(--text);font-size:20px;font-weight:700}.result-reason{color:var(--text-muted);font-size:17px}.confetti{pointer-events:none;position:absolute;inset:0}.confetti i{top:-16px;left:var(--x);width:var(--w,10px);background:var(--c);opacity:0;height:16px;animation:confetti-fall var(--d) ease-in var(--delay) 2 both;border-radius:3px;position:absolute}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)rotate(0)}to{opacity:.9;transform:translateY(340px) rotate(var(--r))}}@media (prefers-reduced-motion:reduce){.confetti{display:none}}.result-dialog{border:none;width:min(460px,100vw - 24px);overflow:hidden auto}.result-stage{isolation:isolate;text-align:center;color:#fff;background:linear-gradient(165deg,#3b82f6,#1e4fb8);justify-items:center;gap:4px;padding:32px 24px 26px;display:grid;position:relative;overflow:hidden}.result-dialog.win .result-stage{color:#3b2500;background:radial-gradient(circle at 50% 34%,#fff6c2 0,#ffd23f 36%,#ff9f1c 100%)}.result-dialog.loss .result-stage{background:linear-gradient(165deg,#5a6894,#232b4d)}.result-dialog.draw .result-stage{background:linear-gradient(165deg,#9b7ff2,#5a3dc2)}.result-rays{z-index:-1;background:repeating-conic-gradient(#fff6 0deg 9deg,#0000 9deg 22deg);width:680px;height:680px;margin:-340px 0 0 -340px;animation:22s linear infinite rays-spin;position:absolute;top:88px;left:50%;-webkit-mask-image:radial-gradient(circle,#000 0,#0000 60%);mask-image:radial-gradient(circle,#000 0,#0000 60%)}@keyframes rays-spin{to{transform:rotate(1turn)}}.result-emblem{background:#ffffff29;border-radius:50%;place-items:center;width:112px;height:112px;margin-bottom:10px;font-size:64px;line-height:1;animation:.7s cubic-bezier(.2,1.6,.4,1) both emblem-in;display:grid;box-shadow:inset 0 0 0 3px #ffffff4d}.result-dialog.win .result-emblem{background:#fff9;animation:.7s cubic-bezier(.2,1.6,.4,1) both emblem-in,2.6s ease-in-out .9s infinite trophy-float;box-shadow:0 0 0 10px #ffffff4d,0 12px 40px #ff78008c}@keyframes emblem-in{0%{opacity:0;transform:scale(.3)rotate(-14deg)}}@keyframes trophy-float{50%{transform:translateY(-7px)rotate(-3deg)}}.fallen-king{text-shadow:0 4px #00000040;transform-origin:50% 55%;font-family:Segoe UI Symbol,DejaVu Sans,"Noto Sans Symbols 2",serif;font-size:70px;animation:.9s cubic-bezier(.55,0,.3,1.5) .4s both king-fall;display:inline-block}@keyframes king-fall{0%{transform:translateY(0)rotate(0)}to{transform:translateY(8px)rotate(80deg)}}.result-emblem .half{font-size:62px;font-weight:900}.result-kicker{letter-spacing:.14em;text-transform:uppercase;opacity:.85;font-size:14px;font-weight:900}.result-dialog .result-title{color:inherit;text-shadow:0 3px #0000002e;font-size:clamp(34px,9vw,46px);line-height:1.05;animation:.5s cubic-bezier(.2,1.4,.4,1) .15s both result-title-in}.result-dialog.win .result-title{text-shadow:0 3px #ffffff8c}@keyframes result-title-in{0%{opacity:0;transform:translateY(12px)scale(.9)}}.result-dialog .result-cheer{color:inherit;opacity:.92;font-size:18px}.result-body{text-align:center;justify-items:center;gap:12px;padding:20px 24px 0;display:grid}.result-score{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;width:100%;display:grid}.result-side{min-width:0;color:var(--text-muted);align-items:center;gap:8px;font-weight:800;display:flex}.result-side.right{justify-content:flex-end}.result-side.won{color:var(--text)}.result-side-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.result-side .vs-color-dot.white{background:#fff}.result-side .vs-color-dot.black{background:#1f2a48}.result-score-num{font-variant-numeric:tabular-nums;gap:8px;font-size:30px;font-weight:900;display:flex}.result-dialog .result-reason{font-size:16px}.result-dialog .dialog-footer{gap:10px;padding:20px 24px 22px}.result-dialog .dialog-footer>*{white-space:nowrap;flex:1 1 0;justify-content:center;padding-inline:12px}.result-dialog .dialog-footer>:first-child,.result-dialog .dialog-footer>.btn-ghost{flex-basis:100%}@media (prefers-reduced-motion:reduce){.result-rays,.result-emblem,.result-dialog.win .result-emblem,.result-dialog .result-title{animation:none}.fallen-king{animation:none;transform:translateY(8px)rotate(80deg)}}.page-narrow{max-width:960px;margin:0 auto}.page-top{margin-bottom:var(--gap);flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.page-top .back-link{margin:0}.page-title{font-size:clamp(26px,min(5vw,5.4vh),46px)}.back-link{background:var(--surface);border:3px solid var(--border);width:-moz-fit-content;width:fit-content;min-height:48px;color:var(--text-muted);font-family:var(--font-display);border-radius:999px;align-items:center;gap:8px;padding:0 18px 0 12px;font-size:18px;font-weight:800;text-decoration:none;display:inline-flex}button.back-link{cursor:pointer}.back-link:hover{color:var(--text);border-color:var(--border-strong)}.page-fill{flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.home{justify-content:center;gap:clamp(14px,4vh,40px)}.home-hero{text-align:center;justify-items:center;gap:clamp(6px,1.4vh,14px);display:grid}.home-pieces{color:var(--text);gap:6px;font-size:clamp(30px,7vh,64px);line-height:1;display:flex}.home-pieces span{animation:2.8s ease-in-out infinite hop;display:inline-block}.home-pieces span:nth-child(2){animation-delay:.2s}.home-pieces span:nth-child(3){animation-delay:.4s}.home-pieces span:nth-child(4){animation-delay:.6s}@keyframes hop{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-14px)}}.hero-title{font-size:clamp(32px,min(7vw,8.5vh),72px);font-weight:900}.hero-lead{max-width:560px;color:var(--text-muted);font-size:clamp(18px,2.8vh,24px)}.hero-title em{color:var(--blue);font-style:normal}.mode-grid{grid-template-columns:1fr 1fr;gap:clamp(14px,2.6vh,24px);width:100%;max-width:980px;margin:0 auto;display:grid}.mode-tile{--tile:var(--blue);--tile-soft:var(--blue-soft);--tile-edge:var(--blue-shadow);border:4px solid var(--tile);font:inherit;cursor:pointer;background:var(--surface);box-shadow:0 10px 0 var(--tile-edge);text-align:center;color:var(--text);border-radius:36px;align-content:start;justify-items:center;gap:clamp(6px,1.4vh,12px);padding:clamp(16px,4vh,36px) 24px clamp(16px,3.4vh,30px);text-decoration:none;transition:transform .15s,box-shadow .15s;display:grid}.mode-tile.friend{--tile:var(--green);--tile-soft:var(--green-soft);--tile-edge:var(--green-shadow)}.mode-tile.join{--tile:var(--purple);--tile-soft:var(--purple-soft);--tile-edge:color-mix(in srgb, var(--purple) 75%, #000)}.mode-tile:hover{box-shadow:0 14px 0 var(--tile-edge);transform:translateY(-4px)rotate(-.6deg)}.mode-tile:active{box-shadow:0 4px 0 var(--tile-edge);transform:translateY(6px)}.mode-art{--art:clamp(64px, 17vh, 144px);width:var(--art);height:var(--art);background:var(--tile-soft);font-size:calc(var(--art) * .58);border-radius:50%;place-items:center;display:grid}.mode-title{font-family:var(--font-display);font-size:clamp(22px,min(3.4vw,4.4vh),36px);font-weight:800;line-height:1.1}.mode-desc{color:var(--text-muted);font-size:19px}.mode-go{background:var(--tile);color:#fff;min-height:clamp(44px,7vh,60px);font-family:var(--font-display);border-radius:999px;align-items:center;gap:8px;margin-top:clamp(0px,1vh,8px);padding:0 30px;font-size:clamp(18px,3vh,23px);font-weight:800;display:inline-flex}.setup{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:28px;display:grid}.level-grid{gap:var(--gap);flex:1;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;min-height:0;display:grid}.level-option{position:relative}.level-option input{opacity:0;position:absolute}.level-card{width:100%;height:100%;min-height:0;font:inherit;color:inherit;border:3px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:0 5px 0 var(--border);cursor:pointer;text-align:center;align-content:center;justify-items:center;gap:clamp(4px,1vh,8px);padding:clamp(8px,1.6vh,16px) 6px;transition:border-color .12s,background-color .12s,transform .12s;display:grid}.level-card:hover{border-color:var(--accent-shadow);background:var(--accent-soft);transform:translateY(-3px)rotate(-1deg)}.level-card:active{box-shadow:0 2px 0 var(--accent-shadow);transform:translateY(3px)}.level-card.last{border-color:var(--accent-shadow)}.level-card .avatar{border-radius:50%;width:min(clamp(48px,14vh,116px),18vw);height:min(clamp(48px,14vh,116px),18vw)}.level-name{font-family:var(--font-display);font-size:clamp(16px,2.6vh,22px);font-weight:800;line-height:1.1}.strength{gap:3px;display:inline-flex}.strength i{background:var(--border);border-radius:50%;width:9px;height:9px}.strength i.on{background:var(--strength,var(--accent-shadow))}.strength.lg i{width:14px;height:14px}.ready{flex:1;place-items:center;min-height:0;display:grid}.ready-card{grid-template-columns:1fr 1.15fr;align-items:center;gap:clamp(16px,3vh,36px);width:min(940px,100%);padding:clamp(18px,3.6vh,36px);display:grid}.ready-side{gap:var(--gap);display:grid}.summary-bot{text-align:center;justify-items:center;gap:clamp(4px,1vh,8px);display:grid}.summary-bot .avatar{border-radius:50%;width:clamp(80px,22vh,180px);height:clamp(80px,22vh,180px);animation:2.8s ease-in-out infinite hop}.summary-bot-name{font-family:var(--font-display);font-size:clamp(26px,4.4vh,38px);font-weight:800;line-height:1.1}.summary-bot-level{color:var(--text-muted);font-size:17px}.summary-bot-desc{border-radius:var(--radius);background:var(--surface-2);color:var(--text);text-align:center;margin-top:clamp(4px,1vh,10px);padding:clamp(8px,1.6vh,14px) 16px;font-size:18px}.lobby-step{justify-content:center;gap:var(--gap);flex-direction:column;flex:1;min-height:0;display:flex}.name-card{flex-wrap:wrap;align-items:center;gap:10px 14px;width:100%;max-width:980px;margin:0 auto;padding:clamp(12px,2.2vh,20px) clamp(16px,2.4vw,24px);display:flex}.name-card .field-label{flex:none}.name-card .input{flex:120px;min-width:0;min-height:clamp(50px,7vh,62px)}.name-card .btn{margin-bottom:5px}.lobby-card{gap:var(--gap);width:min(760px,100%);margin:0 auto;padding:clamp(18px,3.4vh,32px);display:grid}.lobby-card-head{gap:6px;display:grid}.lobby-card-title{align-items:center;gap:12px;font-size:30px;display:flex}.lobby-card-title .emoji{font-size:36px}.lobby-card-desc{color:var(--text-muted);font-size:18px}.waiting{text-align:center;justify-items:center;gap:clamp(10px,2.6vh,26px);width:min(600px,100%);margin:auto;padding:clamp(18px,4vh,40px) clamp(16px,3vw,28px);display:grid}.waiting-art{font-size:clamp(40px,9vh,80px);line-height:1;animation:2.4s ease-in-out infinite hop}.room-code{gap:8px;display:flex}.room-code span{aspect-ratio:.82;background:var(--accent-soft);border:3px solid var(--accent-shadow);width:clamp(46px,12vw,68px);font-family:var(--font-display);border-radius:16px;place-items:center;font-size:clamp(28px,7vw,42px);font-weight:800;display:grid}.share-row{flex-wrap:wrap;gap:10px;width:100%;display:flex}.share-row .input{min-width:0;color:var(--text-muted);flex:220px;font-size:16px}.share-row .btn{flex:auto}.waiting-indicator{color:var(--text-muted);align-items:center;gap:12px;font-size:18px;font-weight:700;display:inline-flex}.center-state{text-align:center;justify-items:center;gap:clamp(10px,2.4vh,18px);max-width:520px;margin:auto;display:grid}.center-state p{color:var(--text-muted);font-size:19px}@media (max-height:760px){:root{--header-h:64px}.brand{font-size:24px}.brand-mark{width:40px;height:40px}}@media (max-width:1020px){.game{grid-template-columns:minmax(0,1fr) 300px;gap:18px}}@media (max-width:760px){.game{--bar-h:52px;--panel-h:170px;gap:var(--col-gap);grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr);width:100%;max-width:640px;margin:0 auto}.game-board-col{--board-size:min(100%, calc(100dvh - var(--header-h) - 2 * var(--main-pad-y) - 2 * var(--bar-h) - 3 * var(--col-gap) - var(--panel-h) - 10px))}.game-panel{border-radius:var(--radius);max-height:none;overflow:visible}.game-panel .panel-header{display:none}.game-panel .panel-section{padding:8px 10px}.game-panel .panel-status{padding-top:0}.turn-banner{gap:10px;padding:8px 12px;font-size:19px}.turn-banner .emoji{font-size:26px}.game-actions{grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:column;gap:6px}.game-actions .btn{border-width:2px;flex-direction:column;gap:2px;min-height:60px;padding:4px;font-size:14px}.moves-details{display:none}.mode-grid{grid-template-columns:1fr;max-width:520px}.mode-tile{text-align:left;grid-template-columns:auto 1fr;place-items:center start;gap:2px 16px;padding:clamp(12px,2.4vh,22px) 18px}.mode-art{--art:clamp(64px, 12vh, 96px);grid-row:span 3}.mode-go{min-height:40px;padding:0 18px;font-size:17px}.ready-card{grid-template-columns:1fr}.level-grid{grid-template-columns:repeat(2,1fr)}.level-card{text-align:left;grid-template-columns:auto 1fr;place-items:center start;column-gap:10px;padding:6px 10px}.level-card .avatar{grid-row:span 2;width:clamp(44px,9vh,72px);height:clamp(44px,9vh,72px)}}@media (max-width:560px){:root{--header-h:64px}body{font-size:17px}.brand{font-size:24px}.brand-mark{width:40px;height:40px}.card-body{padding:18px}.share-row .input,.home-pieces{display:none}.avatar{border-radius:14px;width:48px;height:48px}.player-name{font-size:18px}.clock{min-width:92px;padding:6px 10px;font-size:24px}.board-frame{border-width:5px;border-radius:16px}.game-board-col>*{min-width:0}.header-label{display:none}}@media (max-width:760px){.summary-bot .avatar{width:clamp(64px,14vh,140px);height:clamp(64px,14vh,140px)}.summary-bot-level{display:none}}@media (max-height:700px),(max-width:760px) and (max-height:780px){.segmented-option>span{min-height:48px}.home-pieces,.waiting-art,.mode-desc{display:none}.summary-bot-desc,.lobby-card-head .lobby-card-desc,.waiting .lobby-card-desc{font-size:16px}}html{-webkit-tap-highlight-color:transparent}body{overscroll-behavior:none}button,a,summary,label{touch-action:manipulation}.board-frame{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}@media (max-width:560px){.game{width:calc(100% + 2 * var(--gutter) - 12px);max-width:none;margin:0 calc(6px - var(--gutter))}.segmented.wrap{grid-template-columns:repeat(4,1fr);gap:8px}.segmented.wrap .segmented-option:first-child{grid-column:span 2}.segmented.wrap .segmented-option>span{padding:4px 2px;font-size:16px}}@media (max-width:760px) and (max-height:780px){.level-card .avatar{width:clamp(40px,8vh,72px);height:clamp(40px,8vh,72px)}.banner{padding:8px 12px;font-size:16px}.ready-card{gap:10px;padding:14px}.summary-bot .avatar{width:clamp(56px,10vh,120px);height:clamp(56px,10vh,120px)}.summary-bot-name{font-size:26px}.summary-bot-desc{padding:6px 10px;font-size:15px}.field-label{font-size:18px}.lobby-card{padding:14px}}:root{--orange:#ff8a3d;--orange-shadow:#d9661c;--orange-soft:#ffe6d4}:root[data-theme=dark]{--orange:#ff9d5c;--orange-shadow:#c96a2a;--orange-soft:#46301f}.mode-grid.three{grid-template-columns:repeat(3,1fr);max-width:1180px}.mode-tile.online{--tile:var(--orange);--tile-soft:var(--orange-soft);--tile-edge:var(--orange-shadow)}.account-btn .emoji{font-size:20px}.account-name{text-overflow:ellipsis;max-width:160px;overflow:hidden}.account-card{text-align:center;justify-items:center;gap:8px;padding:8px 28px 0;display:grid}.account-card .avatar{border-radius:50%;width:80px;height:80px;font-size:38px}.account-name-lg{font-family:var(--font-display);font-size:28px;font-weight:900}.account-rating{font-size:20px}.account-stats{grid-template-columns:repeat(4,1fr);gap:8px;width:100%;margin:8px 0 0;display:grid}.account-stats div{border-radius:var(--radius-sm);background:var(--surface-2);padding:10px 4px}.account-stats dt{color:var(--text-muted);font-size:13px}.account-stats dd{font-family:var(--font-display);margin:0;font-size:24px;font-weight:900}.welcome-card{width:min(620px,100%)}.welcome-head{text-align:center;gap:6px;display:grid}.username-row{gap:10px;display:flex}.username-row .input{flex:1;min-width:0;font-size:24px}.username-row .btn{margin-bottom:5px}.username-hint{min-height:24px;color:var(--text-muted);font-size:16px}.username-hint.ok{color:var(--success)}.username-hint.bad{color:var(--danger)}.welcome-note{border-radius:var(--radius-sm);background:var(--accent-soft);text-align:center;padding:10px 14px;font-size:16px}.rating-badge{margin-left:auto}.rating-chip{min-height:26px;padding:0 10px;font-size:14px}.vs-line{align-items:center;gap:10px;font-size:22px;display:flex}.searching-art{animation:1.6s ease-in-out infinite search-wiggle}@keyframes search-wiggle{0%,to{transform:translate(0)rotate(0)}25%{transform:translate(10px,-6px)rotate(8deg)}75%{transform:translate(-10px,4px)rotate(-8deg)}}.result-rating{background:var(--accent-soft);border-radius:999px;padding:6px 14px;font-size:18px;font-weight:800}.rating-diff.up{color:var(--success)}.rating-diff.down{color:var(--danger)}@media (max-width:760px){.mode-grid.three{grid-template-columns:1fr}.mode-grid.three .mode-desc{display:none}.mode-grid.three .mode-art{--art:clamp(52px, 9vh, 80px);grid-row:span 2}}@media (max-width:560px){.account-name{display:none}.rating-badge{margin-left:0}.account-stats{grid-template-columns:repeat(2,1fr)}}.badge-danger{background:var(--danger-soft);color:var(--danger)}.turn-mine .board-frame{border-color:var(--green);animation:1.8s ease-in-out infinite turn-glow}.turn-check .board-frame{border-color:var(--danger);animation:.9s ease-in-out infinite check-glow}@keyframes turn-glow{50%{box-shadow:0 0 0 6px color-mix(in srgb, var(--green) 35%, transparent), var(--shadow-md)}}@keyframes check-glow{50%{box-shadow:0 0 0 6px color-mix(in srgb, var(--danger) 40%, transparent), var(--shadow-md)}}.player-name{flex-wrap:nowrap}.player-name-text{flex:0 auto;min-width:0}.player-name .badge{flex:none}.app{overflow-x:clip}.page-title{overflow-wrap:anywhere;min-width:0}.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mode-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.segmented{grid-auto-columns:minmax(0,1fr)}.level-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.level-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}@media (max-width:760px){.mode-grid,.mode-grid.three{grid-template-columns:minmax(0,1fr)}.level-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.app:has(.game){--header-h:0px;--main-pad-y:6px}.app:has(.game) .app-header{display:none}.app:has(.game) .app-main{padding:var(--main-pad-y) 4px calc(10px + env(safe-area-inset-bottom))}.game{--bar-h:44px;--panel-h:70px;flex-direction:column;flex:1;gap:6px;width:100%;max-width:none;margin:0;display:flex}.game-board-col{--board-size:min(100%, calc(100dvh - 2 * var(--main-pad-y) - 10px - env(safe-area-inset-bottom) - 2 * var(--bar-h) - 8px - 6px - var(--panel-h) - 8px));gap:4px}.game-board-col>*{min-width:0}.board-frame{border-width:4px;border-radius:12px}.game-board-col{margin-block:auto}.game-panel{box-shadow:none;background:0 0;border:0;margin-top:0;overflow:visible}.game-panel .panel-header,.game-panel .turn-section,.moves-details{display:none}.game-panel .panel-section{padding:0 4px}.game-panel .panel-status:not(.game-actions){z-index:30;position:fixed;top:8px;left:8px;right:8px}.player-bar{gap:10px;padding:0 4px}.player-bar .avatar{border-radius:12px;width:38px;height:38px;font-size:20px}.player-bar .avatar .emoji{font-size:24px}.player-name{gap:8px;font-size:17px}.player-sub{min-height:18px;font-size:14px}.captured,.captured-piece{height:18px}.captured-piece{width:18px;margin-right:-7px}.turn-pill,.player-name .badge{min-height:24px;padding:0 10px;font-size:13px}.clock{min-width:78px;padding:4px 8px;font-size:22px}}@media (max-width:400px){.back-link{gap:0;padding:0 12px;font-size:0}.page-top{flex-wrap:nowrap;gap:12px}.page-title{flex:1;font-size:24px}.page-top .rating-badge{flex:none}.banner{flex-wrap:nowrap;padding:6px 8px 6px 12px}.banner>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.level-grid{grid-template-columns:minmax(0,1fr);gap:8px}.level-card{grid-template-columns:auto minmax(0,1fr) auto;column-gap:12px;padding:4px 12px}.level-card .avatar{grid-row:auto;width:clamp(30px,5vh,48px);height:clamp(30px,5vh,48px)}.level-card .strength{justify-self:end}.level-name{font-size:18px}:root{--gap:8px}}@media (max-width:400px) and (max-height:600px){.level-grid{gap:6px}.level-card{padding:2px 10px}.level-card .avatar{width:28px;height:28px}.level-name{font-size:16px}}@media (max-height:600px){.hero-lead{display:none}.mode-tile{padding:8px 14px}.mode-go{min-height:36px}}.look-avatar{--size:56px;--ring:0px;width:var(--size);height:var(--size);padding:var(--ring);border-radius:34%;flex:none;display:inline-grid;position:relative}.look-avatar.size-sm{--size:38px}.look-avatar.size-md{--size:56px}.look-avatar.size-lg{--size:76px}.look-avatar.size-xl{--size:104px}.look-avatar-inner{z-index:1;background:var(--purple-soft);width:100%;height:100%;color:var(--purple);font-family:var(--font-display);font-weight:900;font-size:calc(var(--size) * .45);border-radius:30%;place-items:center;display:grid;position:relative;overflow:hidden}.look-avatar-inner .emoji{font-size:calc(var(--size) * .6);line-height:1}.look-avatar.framed{--ring:max(3px, calc(var(--size) * .08));box-shadow:0 3px 10px #1f2a482e}.look-avatar.framed .look-avatar-inner{background:var(--surface)}.frame-wood{background:linear-gradient(135deg,#c48a52,#8a5a2b 55%,#d7a26b)}.frame-silver{background:linear-gradient(135deg,#f3f6fa,#9aa7b8 45%,#e3e9f1 70%,#8793a6)}.frame-ocean{background:linear-gradient(135deg,#38bdf8,#2563eb 50%,#14b8a6)}.frame-forest{background:linear-gradient(135deg,#86efac,#16a34a 55%,#166534)}.frame-gold{background:linear-gradient(135deg,#fff1a8,#f5b301 40%,#fff1a8 60%,#c98a00);box-shadow:0 0 14px #f5b3018c}.frame-candy{background:repeating-conic-gradient(#ff7eb6 0 12deg, #fff 12deg 24deg)}.frame-rainbow,.frame-galaxy,.frame-fire{overflow:hidden}.frame-rainbow:before,.frame-galaxy:before,.frame-fire:before{content:"";z-index:0;animation:4s linear infinite frame-spin;position:absolute;inset:-30%}.frame-rainbow:before{background:conic-gradient(#ff5e5e,#ffc233,#22b35e,#3b82f6,#8b5cf6,#ff5e5e)}.frame-galaxy:before{background:conic-gradient(#1e1b4b,#7c3aed,#ec4899,#1e3a8a,#1e1b4b)}.frame-galaxy{box-shadow:0 0 16px #7c3aed99}.frame-fire{background:linear-gradient(#ffb300,#ff3d00);animation:1.4s ease-in-out infinite alternate fire-glow}.frame-fire:before{background:conic-gradient(from 90deg,#0000,#ffe678cc,#0000 40%);animation-duration:1.6s}.frame-crown{background:linear-gradient(135deg,#fff1a8,#f5b301 45%,#c98a00)}.frame-crown:after{content:"👑";z-index:2;top:calc(var(--size) * -.34);font-family:var(--font-emoji);font-size:calc(var(--size) * .4);filter:drop-shadow(0 2px 2px #00000040);line-height:1;position:absolute;left:50%;transform:translate(-50%)rotate(-8deg)}@keyframes frame-spin{to{transform:rotate(360deg)}}@keyframes fire-glow{0%{box-shadow:0 0 8px #ff780080}to{box-shadow:0 0 20px #ff5000d9}}.styled-name{align-items:center;gap:.2em;min-width:0;max-width:100%;display:inline-flex}.styled-name-text{text-overflow:ellipsis;white-space:nowrap;font-weight:900;overflow:hidden}.name-flair{font-size:.85em}.name-sky .styled-name-text{color:#2f7ef0}.name-mint .styled-name-text{color:#12a36b}.name-sunset .styled-name-text,.name-stars .styled-name-text,.name-sparkle .styled-name-text,.name-golden .styled-name-text,.name-rainbow .styled-name-text{color:#0000;-webkit-background-clip:text;background-clip:text}.name-sunset .styled-name-text{background-image:linear-gradient(90deg,#ff7a18,#ff3d81)}.name-stars .styled-name-text{background-image:linear-gradient(90deg,#e0a100,#ffcf33)}.name-sparkle .styled-name-text{background-image:linear-gradient(90deg,#8b5cf6,#ec4899,#8b5cf6);background-size:200% 100%;animation:3s linear infinite name-shimmer}.name-golden .styled-name-text{background-image:linear-gradient(100deg,#b8860b 20%,#ffe680 40%,#d4a017 60%,#b8860b 80%);background-size:220% 100%;animation:2.6s linear infinite name-shimmer}.name-rainbow .styled-name-text{background-image:linear-gradient(90deg,#ff5e5e,#ffb703,#22b35e,#3b82f6,#8b5cf6,#ff5e5e);background-size:300% 100%;animation:4s linear infinite name-shimmer}@keyframes name-shimmer{to{background-position:-200% 0}}.gold-amount{font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-weight:900;display:inline-flex}.gold-chip{background:var(--accent-soft);color:var(--accent-text)}.gift-chip{background:var(--pink-soft);color:var(--pink);animation:2.4s ease-in-out infinite gift-wiggle;position:relative}.gift-count{background:var(--pink);color:#fff;border-radius:999px;place-items:center;min-width:22px;height:22px;padding:0 6px;font-size:13px;font-weight:900;display:inline-grid}@keyframes gift-wiggle{0%,80%,to{transform:rotate(0)}85%{transform:rotate(-8deg)}90%{transform:rotate(8deg)}95%{transform:rotate(-4deg)}}.account-btn .look-avatar{--size:32px}.account-links{grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-top:6px;display:grid}.home-links{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.vs-line .look-avatar{margin-right:4px}.board-layout{gap:var(--gap);flex-direction:column;flex:1;width:100%;max-width:760px;min-height:0;margin:0 auto;display:flex}.board-prize{flex-wrap:wrap}.board-prize .badge{margin-left:auto}.board-card{flex:1;min-height:0;padding:clamp(12px,2vh,22px);overflow-y:auto}.podium{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:10px;margin:0 0 14px;padding:0;list-style:none;display:grid}.podium-link{min-width:0;color:inherit;text-align:center;justify-items:center;gap:6px;text-decoration:none;display:grid}.podium-link .player-name-text{max-width:100%;font-size:16px}.podium-medal{font-size:30px;line-height:1}.podium-block{width:100%;font-family:var(--font-display);color:#fff;border-radius:16px 16px 6px 6px;place-items:center;font-size:26px;font-weight:900;display:grid}.place-1 .podium-block{background:linear-gradient(#ffd34d,#f5a400);height:74px}.place-2 .podium-block{background:linear-gradient(#d6dee9,#9fadc0);height:54px}.place-3 .podium-block{background:linear-gradient(#f0b27a,#c2773d);height:40px}.podium-spot.mine .podium-block{outline:4px solid var(--blue);outline-offset:2px}.board-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.board-me{border-top:3px dashed var(--border);margin-top:10px;padding-top:10px}.board-row-link{border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;grid-template-columns:34px auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:8px 12px;text-decoration:none;transition:background-color .12s,transform .12s;display:grid}.board-row-link:hover{background:var(--surface-3);transform:translate(2px)}.board-row.mine .board-row-link{background:var(--blue-soft);box-shadow:inset 0 0 0 3px var(--blue)}.board-rank{font-family:var(--font-display);color:var(--text-subtle);text-align:center;font-size:18px;font-weight:900}.board-who{align-items:center;gap:8px;min-width:0;font-size:17px;display:flex}.board-games{color:var(--text-subtle);white-space:nowrap;font-size:14px;font-weight:700}.board-score{font-family:var(--font-display);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:18px;font-weight:900}.board-score.up{color:var(--success)}.board-score.down{color:var(--danger)}.profile-page{overflow-y:auto}.profile-columns{gap:var(--gap);grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;display:grid}.profile-card,.look-editor{gap:16px;padding:clamp(16px,2.6vh,26px);display:grid}.profile-head{align-items:center;gap:18px;min-width:0;display:flex}.profile-id{gap:8px;min-width:0;display:grid}.profile-name{min-width:0;font-size:clamp(24px,3.4vw,32px)}.profile-name .player-name-text{text-overflow:ellipsis;display:block;overflow:hidden}.profile-name .styled-name{display:inline-flex}.profile-tags{flex-wrap:wrap;gap:6px;display:flex}.profile-joined{color:var(--text-subtle);font-size:14px;font-weight:700}.profile-edit-link{margin-top:var(--gap);align-self:center}.section-title{align-items:center;gap:8px;font-size:20px;display:flex}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.badge-tile{border-radius:var(--radius-sm);background:var(--accent-soft);text-align:center;justify-items:center;gap:4px;padding:12px 6px;display:grid}.badge-tile.locked{background:var(--surface-2);opacity:.5;filter:grayscale()}.badge-emoji{font-size:30px;line-height:1.1}.badge-name{font-size:13px;font-weight:800;line-height:1.2}.look-preview{border-radius:var(--radius);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:14px;min-height:84px;padding:10px 14px;font-size:20px;display:flex}.look-options{flex-wrap:wrap;gap:8px;display:flex}.look-option{border-radius:var(--radius-sm);border:3px solid var(--border);background:var(--surface);cursor:pointer;place-items:center;min-width:64px;max-width:100%;min-height:64px;padding:4px 10px;font-weight:800;transition:border-color .12s,transform .12s;display:grid}.look-option:hover{transform:translateY(-2px)}.look-option.selected{border-color:var(--blue);background:var(--blue-soft)}.look-option.none{color:var(--text-subtle)}.shop-gold{height:auto;margin-left:auto;padding:6px 14px;font-size:18px}.shop-grid{min-height:0;margin:var(--gap) 0 0;flex:1;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));align-content:start;gap:12px;padding:4px;list-style:none;display:grid;overflow-y:auto}.shop-item{border-width:3px;justify-items:center;gap:10px;padding:30px 10px 12px;display:grid;position:relative}.shop-preview{place-items:center;max-width:100%;min-height:84px;font-size:18px;display:grid}.shop-item .btn{width:100%}.shop-box-only{white-space:normal;font-size:13px}.rarity-tag{color:#fff;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:900;position:absolute;top:8px;left:8px}.rarity-tag.rarity-common{background:#8a97ad}.rarity-tag.rarity-rare{background:var(--blue)}.rarity-tag.rarity-epic{background:var(--purple)}.rarity-tag.rarity-legendary{background:linear-gradient(90deg,#f59e0b,#ef4444)}.shop-item.rarity-rare{border-color:color-mix(in srgb, var(--blue) 35%, var(--border))}.shop-item.rarity-epic{border-color:color-mix(in srgb, var(--purple) 40%, var(--border))}.shop-item.rarity-legendary{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.gift-grid{margin:var(--gap) 0;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;padding:0;list-style:none;display:grid}.gift-card{text-align:center;border-width:3px;justify-items:center;gap:8px;padding:18px 12px;display:grid}.gift-card.tier-gold{background:linear-gradient(180deg, #fff6d6, var(--surface));border-color:#f5b301}.gift-card.tier-silver{background:linear-gradient(180deg, #f1f4f8, var(--surface));border-color:#a9b6c7}.gift-card.tier-bronze{background:linear-gradient(180deg, #fbe9da, var(--surface));border-color:#d08a4c}.gift-art{filter:drop-shadow(0 6px 8px #1f2a4833);font-size:64px;line-height:1}.gift-art.shaking{animation:.35s ease-in-out infinite gift-shake}@keyframes gift-shake{0%,to{transform:rotate(0)scale(1)}25%{transform:rotate(-12deg)scale(1.06)}75%{transform:rotate(12deg)scale(1.06)}}.gift-from{color:var(--text-muted);font-size:14px;font-weight:700}.gift-history{margin:0 0 var(--gap);flex-wrap:wrap;gap:8px;padding:0;list-style:none;display:flex}.gift-odds{padding:12px 16px}.gift-odds summary{cursor:pointer;font-weight:900}.gift-odds table{border-collapse:collapse;width:100%;margin-top:10px;font-size:14px}.gift-odds th,.gift-odds td{border-top:2px solid var(--border);text-align:left;padding:6px 4px}.reveal-burst{font-size:58px;animation:.5s cubic-bezier(.2,1.6,.4,1) reveal-pop}.reveal-gold{color:var(--accent-text);font-size:30px}.reveal-item{justify-items:center;gap:8px;display:grid}@keyframes reveal-pop{0%{opacity:0;transform:scale(.2)}}.result-rewards{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.reward-gold{height:auto;padding:6px 14px;font-size:18px}@media (max-width:760px){.profile-columns{grid-template-columns:1fr}.board-row-link{grid-template-columns:28px auto minmax(0,1fr) auto;gap:8px}.board-games{display:none}}@media (max-width:400px){.look-avatar.size-xl{--size:84px}.account-links{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.frame-rainbow:before,.frame-galaxy:before,.frame-fire,.frame-fire:before,.gift-chip,.styled-name-text{animation:none!important}}.home{gap:clamp(10px,2.6vh,30px)}.home-links .btn{min-height:44px;padding:0 16px;font-size:16px}.home-pieces{font-size:clamp(28px,5.4vh,56px)}.app:has(.page-fill.contained){height:100dvh}.page-fill.contained{overflow:hidden}.page-fill.contained.scroll-self{overscroll-behavior:contain;overflow-y:auto}.panel-tools{display:none}@media (min-width:761px) and (min-aspect-ratio:6/5){.app:has(.game){height:100dvh}.app:has(.game) .app-main{max-width:none}.game{--panel-w:clamp(300px, 26vw, 440px);--gap-x:clamp(16px, 2vw, 32px);--board-size:min(calc(100dvh - var(--header-h) - 2 * var(--main-pad-y) - 16px), calc(100vw - 2 * var(--gutter) - var(--panel-w) - var(--gap-x)));grid-template-columns:var(--board-size) var(--panel-w);place-content:center;align-items:stretch;column-gap:var(--gap-x);flex:1;grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-areas:"board notice""board top""board panel""board bottom";row-gap:0;min-height:0;display:grid}.game .game-board-col{--board-size:inherit;display:contents}.game-board-col>*{width:auto;min-width:0}.game .board-frame{width:var(--board-size);grid-area:board;align-self:center;min-width:0}.game-notice{grid-area:notice;margin-bottom:12px}.game-top{grid-area:top;margin-bottom:12px}.game-bottom{grid-area:bottom;margin-top:12px}.game-top .player-bar,.game-bottom .player-bar{border-radius:var(--radius);background:var(--surface);border:3px solid var(--border);height:auto;min-height:76px;box-shadow:0 4px 0 var(--card-shadow);padding:10px 14px}.game-panel{grid-area:panel;min-height:0;max-height:none;position:relative;overflow:auto}.panel-tools{justify-content:flex-end;padding:10px 12px 0;display:flex}.fullscreen-btn{min-height:38px;padding:0 12px;font-size:15px}.game-panel .moves-details[open]{flex-direction:column;flex:1;min-height:140px;display:flex}.game-panel .moves-details[open] .move-list{flex:1;max-height:none}}@media (min-width:761px) and (min-aspect-ratio:6/5) and (max-height:760px){.game-top .player-bar,.game-bottom .player-bar{min-height:62px;padding:6px 12px}.game-actions .btn{min-height:52px}.turn-banner{padding:10px 14px;font-size:20px}}:root:fullscreen .app{--header-h:0px}:root:fullscreen .app-header{display:none}@media (min-width:761px) and (min-aspect-ratio:6/5){.game-bottom .turn-pill{display:none}}.name-card.signed-in{font-size:20px}.match-intro{text-align:center;justify-items:center;gap:clamp(14px,3vh,28px);width:min(100%,860px);margin:auto;padding:clamp(20px,4vh,40px) clamp(16px,4vw,40px);display:grid}.match-title{font-size:clamp(26px,4vw,40px)}.vs-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(10px,3vw,36px);width:100%;display:grid}.vs-player{border-radius:var(--radius-lg);background:var(--surface-2);justify-items:center;gap:10px;min-width:0;padding:18px 12px;animation:.5s cubic-bezier(.2,1.3,.4,1) both vs-in-right;display:grid}.vs-player.mine{background:var(--blue-soft);animation-name:vs-in-left}.vs-name{min-width:0;max-width:100%;font-size:clamp(18px,2.4vw,26px)}.vs-name .player-name-text{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.vs-color{color:var(--text-muted);align-items:center;gap:6px;font-weight:800;display:inline-flex}.vs-color-dot{border:2px solid var(--text);border-radius:50%;width:16px;height:16px}.vs-color.w .vs-color-dot{background:#fff}.vs-color.b .vs-color-dot{background:#1f2a48}.vs-badge{aspect-ratio:1;color:#fff;width:clamp(64px,9vw,96px);font-family:var(--font-display);box-shadow:0 6px 0 #c22a63, var(--shadow-md);background:linear-gradient(135deg,#ff7a18,#ff3d81);border-radius:50%;place-items:center;font-size:clamp(24px,3.4vw,38px);font-weight:900;animation:.6s cubic-bezier(.2,1.8,.4,1) .25s both vs-pop;display:grid}.match-countdown{color:var(--text-muted);justify-items:center;gap:4px;font-size:20px;font-weight:800;display:grid}.countdown-number{font-family:var(--font-display);color:var(--accent-text);font-size:clamp(56px,10vh,96px);font-weight:900;line-height:1;animation:1s ease-out both count-pop}@keyframes vs-in-left{0%{opacity:0;transform:translate(-40px)}}@keyframes vs-in-right{0%{opacity:0;transform:translate(40px)}}@keyframes vs-pop{0%{opacity:0;transform:scale(.2)rotate(-20deg)}}@keyframes count-pop{0%{opacity:0;transform:scale(1.8)}25%{opacity:1;transform:scale(1)}to{opacity:.85;transform:scale(.92)}}@media (max-width:560px){.vs-row{grid-template-columns:1fr}.vs-player{grid-auto-flow:column;justify-content:start;padding:10px 12px}}
