@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-sans: "Inter Variable", Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-md: .9375rem;--text-lg: 1.0625rem;--text-xl: 1.375rem;--text-2xl: clamp(1.75rem, 1.2rem + 2.2vw, 2.75rem);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 999px;--topbar-h: 56px;--strip-h: 44px;--side-strip-w: 184px;--side-w: 372px;--tap: 40px;--ease: cubic-bezier(.22, .61, .36, 1);--dur-fast: .12s;--dur: .2s;--z-sheet: 30;--z-topbar: 40;--z-modal: 50;--z-toast: 60;--bg: #f3f4f6;--surface-1: #ffffff;--surface-2: #f4f5f7;--surface-3: #e9ebef;--surface-hover: #eef0f3;--border: #e1e4e9;--border-strong: #cdd2d9;--text: #15181c;--text-2: #3c434d;--muted: #69717d;--faint: #9aa1ab;--accent: #2f8a4c;--accent-hover: #287a42;--accent-soft: rgba(47, 138, 76, .12);--accent-text: #ffffff;--danger: #c93b30;--danger-soft: rgba(201, 59, 48, .1);--warn: #b7791f;--warn-soft: rgba(183, 121, 31, .12);--focus: #2f6fdb;--clock-bg: var(--surface-2);--clock-text: var(--muted);--clock-active-bg: #1b1f24;--clock-active-text: #ffffff;--piece-white-bg: #ffffff;--piece-black-bg: #23272d;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 1px rgba(16, 24, 40, .04);--shadow-md: 0 4px 12px rgba(16, 24, 40, .08), 0 1px 3px rgba(16, 24, 40, .06);--shadow-lg: 0 20px 48px rgba(16, 24, 40, .18), 0 4px 12px rgba(16, 24, 40, .08);--shadow-board: 0 10px 30px rgba(16, 24, 40, .16), 0 2px 6px rgba(16, 24, 40, .08);--backdrop: rgba(15, 18, 22, .45);--ec-dest: rgba(10, 20, 10, .3);--ec-capture: rgba(10, 20, 10, .3);--ec-ep: #d68a10;--ec-twohop: #2f7fd8;--ec-bounce: #8b5bc7;--rv-best: #2f9e57;--rv-excellent: #55a96b;--rv-good: #7d9a84;--rv-inaccuracy: #d9a11f;--rv-mistake: #e07a2c;--rv-blunder: #d23b32;--rv-forced: #858c96;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #111316;--surface-1: #191c20;--surface-2: #20242a;--surface-3: #2a2f36;--surface-hover: #252a31;--border: #2b3037;--border-strong: #3a414a;--text: #eceef1;--text-2: #c9ced5;--muted: #979fab;--faint: #6c7480;--accent: #4caf6a;--accent-hover: #5bbd78;--accent-soft: rgba(76, 175, 106, .16);--accent-text: #0c1a10;--danger: #ef6b5f;--danger-soft: rgba(239, 107, 95, .14);--warn: #e0a54a;--warn-soft: rgba(224, 165, 74, .14);--focus: #6aa0ff;--clock-active-bg: #eef0f3;--clock-active-text: #111316;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 16px rgba(0, 0, 0, .35);--shadow-lg: 0 24px 56px rgba(0, 0, 0, .55);--shadow-board: 0 12px 36px rgba(0, 0, 0, .5);--backdrop: rgba(0, 0, 0, .6);color-scheme:dark}}:root[data-theme=dark]{--bg: #111316;--surface-1: #191c20;--surface-2: #20242a;--surface-3: #2a2f36;--surface-hover: #252a31;--border: #2b3037;--border-strong: #3a414a;--text: #eceef1;--text-2: #c9ced5;--muted: #979fab;--faint: #6c7480;--accent: #4caf6a;--accent-hover: #5bbd78;--accent-soft: rgba(76, 175, 106, .16);--accent-text: #0c1a10;--danger: #ef6b5f;--danger-soft: rgba(239, 107, 95, .14);--warn: #e0a54a;--warn-soft: rgba(224, 165, 74, .14);--focus: #6aa0ff;--clock-active-bg: #eef0f3;--clock-active-text: #111316;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 16px rgba(0, 0, 0, .35);--shadow-lg: 0 24px 56px rgba(0, 0, 0, .55);--shadow-board: 0 12px 36px rgba(0, 0, 0, .5);--backdrop: rgba(0, 0, 0, .6);color-scheme:dark}:root .ecb-root,:root[data-board=green] .ecb-root{--ecb-light: #ebecd0;--ecb-dark: #779556}:root[data-board=brown] .ecb-root{--ecb-light: #f0d9b5;--ecb-dark: #b58863}:root[data-board=blue] .ecb-root{--ecb-light: #dee3e6;--ecb-dark: #8ca2ad}:root[data-board=slate] .ecb-root{--ecb-light: #d7dbe2;--ecb-dark: #6e7a8e}:root .ecb-root{--ecb-dest: transparent;--ecb-dest-solid: rgba(10, 20, 10, .24);--ecb-capture: transparent;--ecb-capture-solid: rgba(10, 20, 10, .26);--ecb-ep: rgba(214, 138, 16, .5);--ecb-ep-solid: var(--ec-ep);--ecb-twohop: var(--ec-twohop);--ecb-bounce: rgba(139, 91, 199, .45);--ecb-bounce-solid: var(--ec-bounce);--ecb-last: rgba(255, 214, 51, .42);--ecb-select: rgba(255, 214, 51, .95);--ecb-coord-font: 650 calc(var(--ecb-cell) * .22) / 1 var(--font-sans)}:root[data-coords=off] .ecb-coord{display:none}:root[data-anim=off] .ecb-piece{transition:none}.ecb-badge-best{--ecb-badge-bg: var(--rv-best)}.ecb-badge-excellent{--ecb-badge-bg: var(--rv-excellent)}.ecb-badge-good{--ecb-badge-bg: var(--rv-good)}.ecb-badge-inaccuracy{--ecb-badge-bg: var(--rv-inaccuracy)}.ecb-badge-mistake{--ecb-badge-bg: var(--rv-mistake)}.ecb-badge-blunder{--ecb-badge-bg: var(--rv-blunder)}.ecb-badge-forced{--ecb-badge-bg: var(--rv-forced)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-md);line-height:1.5;font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-weight:650;letter-spacing:-.01em;line-height:1.25}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,kbd,samp{font-family:var(--font-mono);font-size:.9em}kbd{display:inline-block;min-width:1.6em;padding:1px 6px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;background:var(--surface-2);font-size:var(--text-xs);text-align:center;line-height:1.5}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}::selection{background:var(--accent-soft)}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--sp-2);top:-48px;z-index:calc(var(--z-topbar) + 1);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);background:var(--surface-1);box-shadow:var(--shadow-md)}.skip-link:focus{top:var(--sp-2)}.muted{color:var(--muted)}.small{font-size:var(--text-sm)}.center{text-align:center}.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.eyebrow{font-size:var(--text-xs);font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.fine-print{font-size:var(--text-xs);color:var(--muted);line-height:1.5}.empty-state{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-4) 0;color:var(--muted);font-size:var(--text-sm)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.icon{flex:none;display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:36px;padding:0 var(--sp-4);border:1px solid transparent;border-radius:var(--radius-sm);font-weight:600;font-size:var(--text-sm);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5}.btn-sm{height:32px;padding:0 var(--sp-3);font-size:var(--text-sm)}.btn-lg{height:46px;padding:0 var(--sp-5);font-size:var(--text-md);border-radius:var(--radius-md)}.btn-block{display:flex;width:100%}.btn-primary{background:var(--accent);color:var(--accent-text);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface-1);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover)}.btn-ghost{background:transparent;color:var(--text-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.06)}.is-pulsing{animation:pulse 1.6s var(--ease) infinite}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--accent-soft)}50%{box-shadow:0 0 0 8px transparent}}.iconbtn{display:inline-grid;place-items:center;flex:none;width:var(--tap);height:var(--tap);padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-2);transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.iconbtn:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.iconbtn:disabled{opacity:.35}.iconbtn.is-active{background:var(--accent-soft);color:var(--accent)}.iconbtn-sm{width:32px;height:32px}.segmented{display:inline-flex;padding:3px;gap:2px;border-radius:var(--radius-sm);background:var(--surface-3)}.seg{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;height:32px;padding:0 var(--sp-3);border:0;border-radius:5px;background:transparent;color:var(--muted);font-size:var(--text-sm);font-weight:600;transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.seg:hover{color:var(--text)}.seg.is-on{background:var(--surface-1);color:var(--text);box-shadow:var(--shadow-sm)}.segmented-sm .seg{height:28px;min-width:32px;padding:0 var(--sp-2);font-size:var(--text-xs)}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);min-height:44px;cursor:pointer}.switch-text{display:flex;flex-direction:column}.switch-text .hint{font-size:var(--text-xs);color:var(--muted)}.switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:none;position:relative;width:38px;height:22px;margin:0;border-radius:var(--radius-full);background:var(--border-strong);cursor:pointer;transition:background-color var(--dur) var(--ease)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000004d;transition:transform var(--dur) var(--ease)}.switch:checked{background:var(--accent)}.switch:checked:after{transform:translate(16px)}input[type=text],input:not([type]),textarea,select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-1);color:var(--text);padding:0 var(--sp-3);height:36px;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}textarea{height:auto;padding:var(--sp-2) var(--sp-3);resize:vertical;font-family:var(--font-mono);font-size:var(--text-sm)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 22%,transparent)}input:disabled{opacity:.6}input[type=range]{width:100%;accent-color:var(--accent)}.chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface-2);color:var(--text-2);font-size:var(--text-xs);font-weight:600;white-space:nowrap}button.chip{cursor:pointer}.chip.is-action{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.chip.is-action:hover{filter:brightness(.97)}.chip.is-premove{background:color-mix(in srgb,#d6446c 14%,transparent);border-color:transparent;color:#c23a61}.chip.is-warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}.chip.is-bad{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.notice{padding:var(--sp-3);border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--text-sm)}.notice.is-bad{background:var(--danger-soft);color:var(--danger)}.banner{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);font-size:var(--text-sm);border-bottom:1px solid var(--border)}.banner.is-bad{background:var(--danger-soft);color:var(--danger)}.banner>span{flex:1}.banner-link{border:0;background:none;padding:0 var(--sp-1);color:inherit;font-weight:650;text-decoration:underline;text-underline-offset:2px}.spinner{display:inline-block;flex:none;width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tabs{display:flex;justify-content:space-around;gap:0;padding:0 var(--sp-1);border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{position:relative;display:inline-flex;align-items:center;gap:6px;height:44px;padding:0 10px;border:0;background:none;color:var(--muted);font-size:var(--text-sm);font-weight:600;white-space:nowrap;transition:color var(--dur-fast) var(--ease)}.tab .icon{display:none}.tab:hover,.tab.is-on{color:var(--text)}.tab.is-on:after{content:"";position:absolute;left:var(--sp-2);right:var(--sp-2);bottom:-1px;height:2px;border-radius:2px;background:var(--accent)}.tab-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-full);background:var(--danger);color:#fff;font-size:11px;font-weight:700}.card{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);box-shadow:var(--shadow-sm)}.card-head{display:flex;align-items:flex-start;gap:var(--sp-3)}.card-head>div{flex:1;min-width:0}.card-head h2{font-size:var(--text-lg)}.card-sub{margin-top:2px;font-size:var(--text-sm);color:var(--muted)}.card-icon{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent)}.card-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.card-actions>.btn{flex:1 1 180px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:grid;place-items:center;padding:var(--sp-4);background:var(--backdrop);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade var(--dur) var(--ease)}.modal{width:min(100%,400px);max-height:calc(100dvh - 2 * var(--sp-4));overflow:auto;padding:var(--sp-5) var(--sp-6) var(--sp-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);box-shadow:var(--shadow-lg);animation:rise var(--dur) var(--ease)}.modal-md{width:min(100%,520px)}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4)}.modal-head.is-bare{justify-content:flex-end;margin:calc(-1 * var(--sp-2)) calc(-1 * var(--sp-3)) 0 0}.modal-title{font-size:var(--text-lg)}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(12px) scale(.98)}}.toaster{position:fixed;left:50%;bottom:var(--sp-6);z-index:var(--z-toast);display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);transform:translate(-50%);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--sp-2);padding:10px var(--sp-4);border-radius:var(--radius-full);background:var(--clock-active-bg);color:var(--clock-active-text);font-size:var(--text-sm);font-weight:600;box-shadow:var(--shadow-lg);animation:rise var(--dur) var(--ease)}.toast-ok .icon{color:var(--accent)}.toast-bad .icon{color:var(--danger)}.piece-icon{display:inline-block;flex:none;vertical-align:middle}.piece-icon svg{display:block;width:100%;height:100%}.app{display:flex;flex-direction:column;min-height:100dvh}.app.is-game{height:100dvh;overflow:hidden}.app-main{flex:1;min-height:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:var(--z-topbar);display:flex;align-items:center;gap:var(--sp-2);height:var(--topbar-h);padding:0 var(--sp-4);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface-1) 88%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px)}.brand{display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 var(--sp-2);margin-right:var(--sp-3);border:0;border-radius:var(--radius-sm);background:none;font-weight:750;font-size:var(--text-lg);letter-spacing:-.02em}.brand-light{font-weight:450;color:var(--muted)}.logo-frame{fill:var(--accent)}.logo-sq{fill:color-mix(in srgb,var(--accent-text) 85%,transparent)}.topnav{display:flex;gap:2px}.topnav-link{display:inline-flex;align-items:center;height:36px;padding:0 var(--sp-3);border-radius:var(--radius-sm);color:var(--muted);font-weight:600;font-size:var(--text-sm)}.topnav-link:hover{color:var(--text);background:var(--surface-hover);text-decoration:none}.topnav-link.is-on{color:var(--text);background:var(--surface-3)}.topbar-spacer{flex:1}.namefield{display:inline-flex;align-items:center;gap:var(--sp-2);height:36px;padding:0 var(--sp-1) 0 4px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface-2);cursor:text}.namefield:focus-within{border-color:var(--focus)}.namefield-avatar{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--accent-text);font-size:var(--text-xs);font-weight:700}.namefield input{height:28px;width:auto;min-width:4ch;max-width:16ch;padding:0 var(--sp-2) 0 0;border:0;background:transparent;font-weight:600;font-size:var(--text-sm)}.namefield input:focus{box-shadow:none}.game{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,max-content) var(--side-w);justify-content:center;gap:var(--sp-5);padding:var(--sp-4);width:100%}.game-main{display:flex;flex-direction:column;min-width:0;min-height:0}.gamebar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3);font-size:var(--text-sm)}.gamebar.is-main{display:none}.gamebar.is-side{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);background:var(--surface-2)}.gamebar.is-side .gamebar-note{flex-basis:100%;padding-left:var(--sp-2);font-size:var(--text-xs)}.gamebar-back{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 var(--sp-3) 0 var(--sp-2);border:0;border-radius:var(--radius-sm);background:none;color:var(--muted);font-weight:600}.gamebar-back:hover{background:var(--surface-hover);color:var(--text)}.gamebar-title{font-weight:650}.gamebar-note{color:var(--muted)}.gamebar-offer{display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:600}.stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.stage.is-manual{overflow:auto;align-items:flex-start}.stage-inner{display:flex;gap:var(--sp-2)}.board-col{display:flex;flex-direction:column;gap:6px;width:calc(var(--ecb-square) * 8)}.strip{display:flex;align-items:center;gap:var(--sp-1);height:var(--strip-h);min-width:0}.strip>.player{flex:1}.board-col.is-side-strips{display:grid;grid-template-columns:var(--side-strip-w) auto;grid-template-rows:auto minmax(0,1fr) auto;gap:0 12px;width:auto}.board-col.is-side-strips>.strip{grid-column:1;height:auto;align-items:flex-start}.board-col.is-side-strips>.strip:first-child{grid-row:1}.board-col.is-side-strips>.strip:last-child{grid-row:3;align-items:flex-end}.board-col.is-side-strips>.board-frame{grid-column:2;grid-row:1 / 4}.is-side-strips .player{flex-wrap:wrap;row-gap:var(--sp-2);height:auto}.is-side-strips .clock{flex:1 0 100%;font-size:1.75rem;text-align:center}.is-side-strips>.strip:last-child .clock{order:-1}.is-side-strips .player-name{flex-wrap:wrap;white-space:normal;overflow-wrap:anywhere}.board-col.is-side-strips>.strip{position:relative}.is-side-strips .strip:has(.focus-exit) .player-id{padding-right:32px}.is-side-strips .focus-exit{position:absolute;top:0;right:0}.board-frame{position:relative;width:calc(var(--ecb-square) * 8);height:calc(var(--ecb-square) * 16)}.board-host{line-height:0;border-radius:var(--radius-sm);overflow:hidden;box-shadow:var(--shadow-board)}.board-resizer{position:absolute;right:-10px;bottom:-10px;width:24px;height:24px;padding:0;border:0;background:none;cursor:nwse-resize;opacity:0;touch-action:none;transition:opacity var(--dur) var(--ease)}.board-frame:hover .board-resizer,.board-resizer:focus-visible{opacity:.8}.board-resizer:after{content:"";position:absolute;right:6px;bottom:6px;width:12px;height:12px;background:linear-gradient(135deg,transparent 46%,var(--muted) 46%,var(--muted) 58%,transparent 58%),linear-gradient(135deg,transparent 72%,var(--muted) 72%,var(--muted) 84%,transparent 84%)}:root[data-focus] .topbar,:root[data-focus] .app>.banner{display:none}.game.is-focus{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:var(--bg)}.game.is-focus .game-main{padding:4px}.game.is-focus .game-side,.game.is-focus .sheet-backdrop,.game.is-focus .mobile-bar,.game.is-focus .mobile-status,.game.is-focus .gamebar,.game.is-focus .board-resizer{display:none}.game.is-focus .offer.is-main,.game.is-focus .notice.is-main{display:flex;margin:0 0 4px}.game.is-focus .offer.is-main .offer-text{flex:1;flex-basis:auto}.focus-exit{flex:none;opacity:.7}.focus-exit:hover,.focus-exit:focus-visible{opacity:1}.player{display:flex;align-items:center;gap:var(--sp-2);height:100%;min-width:0}.player-avatar{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:var(--radius-sm);font-weight:700;font-size:var(--text-sm);box-shadow:inset 0 0 0 1px var(--border-strong)}.player-avatar.is-w{background:var(--piece-white-bg);color:#23272d}.player-avatar.is-b{background:var(--piece-black-bg);color:#f2f3f5}.player-id{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.2}.player-name{display:flex;align-items:center;gap:6px;font-weight:650;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-you{padding:1px 6px;border-radius:var(--radius-full);background:var(--accent-soft);color:var(--accent);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.presence{width:8px;height:8px;border-radius:50%;background:var(--faint)}.presence.is-on{background:var(--accent)}.player-captured{display:flex;align-items:center;min-height:16px;gap:0;color:var(--muted);font-size:var(--text-xs)}.player-captured .piece-icon{margin-right:-5px}.player.is-to-move .player-avatar{box-shadow:0 0 0 2px var(--accent)}.thinking{margin-left:var(--sp-2);font-style:italic}.dots:after{content:"…";animation:dots 1.2s steps(4,end) infinite;display:inline-block;width:1em;overflow:hidden;vertical-align:bottom}@keyframes dots{0%{width:0}to{width:1em}}.clock{flex:none;min-width:92px;padding:6px var(--sp-3);border-radius:var(--radius-sm);background:var(--clock-bg);color:var(--clock-text);font-size:1.25rem;font-weight:650;font-variant-numeric:tabular-nums;text-align:right;letter-spacing:-.01em;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.clock.is-running{background:var(--clock-active-bg);color:var(--clock-active-text)}.clock.is-low{color:var(--danger)}.clock.is-low.is-running{background:var(--danger);color:#fff;animation:pulse-bad 1s ease-in-out infinite}.clock.is-flagged{background:var(--danger-soft);color:var(--danger)}.clock.is-none{font-size:var(--text-lg);color:var(--faint)}@keyframes pulse-bad{50%{filter:brightness(1.15)}}.evalbar-v{position:relative;flex:none;width:18px;height:calc(var(--ecb-square) * 16);margin-top:calc(var(--strip-h) + 6px);border-radius:var(--radius-sm);overflow:hidden;background:#2a2d33;box-shadow:var(--shadow-sm)}.evalbar-v-white{position:absolute;left:0;right:0;bottom:0;background:#f2f2ee;transition:height .4s var(--ease)}.evalbar-v.is-flipped .evalbar-v-white{bottom:auto;top:0}.evalbar-v-text{position:absolute;left:0;right:0;font-size:9px;font-weight:750;text-align:center;font-variant-numeric:tabular-nums}.evalbar-v-text.is-white{bottom:4px;color:#2a2d33}.evalbar-v-text.is-black{top:4px;color:#f2f2ee}.evalbar-v.is-flipped .evalbar-v-text.is-white{bottom:auto;top:4px}.evalbar-v.is-flipped .evalbar-v-text.is-black{top:auto;bottom:4px}.promo-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;border-radius:var(--radius-sm);background:#0a0c0e59;animation:fade var(--dur-fast) var(--ease)}.promo{position:absolute;display:flex;flex-direction:column;width:var(--ecb-square);border-radius:var(--radius-sm);background:var(--surface-1);box-shadow:var(--shadow-lg);overflow:hidden}.promo.is-up{flex-direction:column-reverse}.promo-choice{display:grid;place-items:center;width:var(--ecb-square);height:var(--ecb-square);padding:0;border:0;background:none}.promo-choice:hover,.promo-choice:focus-visible{background:var(--accent-soft)}.promo-choice .piece-icon{width:86%!important;height:86%!important}.promo-cancel{display:grid;place-items:center;height:calc(var(--ecb-square) * .6);border:0;background:var(--surface-2);color:var(--muted)}.promo-cancel:hover{color:var(--danger)}.game-side{display:flex;flex-direction:column;min-height:0;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);box-shadow:var(--shadow-sm);overflow:hidden}.sheet-head,.sheet-backdrop,.mobile-bar,.mobile-status{display:none}.side-status{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}.game-side>.notice{margin:var(--sp-3) var(--sp-4) 0}.status{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);min-height:28px}.status-text{font-weight:650}.status.is-over .status-text{color:var(--text)}.status.is-over>.icon{color:var(--accent)}.status-spacer{flex:1}.status-move{color:var(--muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.turn-dot{flex:none;width:12px;height:12px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--border-strong)}.turn-dot.is-w{background:var(--piece-white-bg)}.turn-dot.is-b{background:var(--piece-black-bg)}.offer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:var(--sp-3) var(--sp-4) 0;padding:var(--sp-3);border-radius:var(--radius-md);background:var(--accent-soft);color:var(--text);animation:rise var(--dur) var(--ease)}.offer>.icon{color:var(--accent)}.offer-text{flex:1 1 calc(100% - 32px);font-size:var(--text-sm)}.offer>.btn-primary{margin-left:auto}.offer.is-main,.notice.is-main{display:none}.panel{flex:1;min-height:0;overflow:auto;padding:var(--sp-3) var(--sp-4)}.movenav{display:flex;align-items:center;justify-content:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);border-top:1px solid var(--border)}.movenav-pos{min-width:72px;text-align:center;color:var(--muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.actionbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--border);background:var(--surface-2)}.actionbar-spacer{flex:1}.actionbar.is-confirm{background:var(--danger-soft)}.actionbar-question{flex:1;font-weight:650;font-size:var(--text-sm);padding-left:var(--sp-2)}.legend{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);margin:0;padding:var(--sp-2) var(--sp-4);border-top:1px solid var(--border);list-style:none;color:var(--muted);font-size:var(--text-xs)}.legend li{display:inline-flex;align-items:center;gap:6px}.swatch{display:inline-block;width:10px;height:10px;border-radius:50%}.swatch.dest{background:var(--muted)}.swatch.capture{background:transparent;box-shadow:inset 0 0 0 2px var(--muted)}.swatch.ep{background:var(--ec-ep)}.swatch.twohop{background:var(--ec-twohop)}.swatch.bounce{background:var(--ec-bounce);border-radius:2px}.movelist{display:flex;flex-direction:column;gap:var(--sp-3)}.movelist-rows{margin:0;padding:0;list-style:none;font-family:var(--font-mono);font-size:var(--text-sm);border-radius:var(--radius-sm);overflow:hidden}.movelist-row{display:grid;grid-template-columns:42px 1fr 1fr;align-items:stretch}.movelist-row:nth-child(odd){background:var(--surface-2)}.movenum{display:flex;align-items:center;padding-left:var(--sp-3);color:var(--faint);font-variant-numeric:tabular-nums}.move{padding:5px var(--sp-2);border:0;border-radius:4px;background:none;text-align:left;font:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.move:hover:not(.is-empty){background:var(--surface-hover)}.move.is-current{background:var(--accent-soft);color:var(--accent);font-weight:700}.move.is-future{color:var(--faint)}.movelist-actions{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.movestrip{display:flex;align-items:center;gap:2px;margin:0;padding:0 var(--sp-2);list-style:none;overflow-x:auto;scrollbar-width:none;font-family:var(--font-mono);font-size:var(--text-sm)}.movestrip::-webkit-scrollbar{display:none}.movestrip li{display:flex;align-items:center;flex:none}.movestrip.is-empty{color:var(--muted);font-family:inherit}.movestrip-num{padding:0 2px 0 6px;color:var(--faint)}.movestrip-move{height:30px;padding:0 6px;border:0;border-radius:4px;background:none;font:inherit}.movestrip-move.is-current{background:var(--accent-soft);color:var(--accent);font-weight:700}.movestrip-move.is-future{color:var(--faint)}.analysis{display:flex;flex-direction:column;gap:var(--sp-3)}.analysis-head{display:flex;align-items:center;gap:var(--sp-3)}.analysis-score{min-width:64px;padding:4px 10px;border-radius:var(--radius-sm);background:var(--surface-3);font-size:var(--text-lg);font-weight:750;font-variant-numeric:tabular-nums;text-align:center}.analysis-score.is-empty{color:var(--faint)}.analysis-readout{flex:1;color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.analysis-readout strong{color:var(--text)}.analysis-toggle .switch-row{min-height:0;gap:var(--sp-2);font-size:var(--text-sm);font-weight:600}.lines{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}.line{display:flex;align-items:flex-start;gap:var(--sp-2);padding:6px;border-radius:var(--radius-sm);background:var(--surface-2)}.line.is-skeleton{height:38px;background:linear-gradient(90deg,var(--surface-2),var(--surface-3),var(--surface-2));background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.line-score{flex:none;min-width:52px;padding:3px 6px;border-radius:4px;font-size:var(--text-xs);font-weight:750;text-align:center;font-variant-numeric:tabular-nums}.line-score.is-white{background:#f2f2ee;color:#1b1e22;box-shadow:inset 0 0 0 1px var(--border)}.line-score.is-black{background:#2a2d33;color:#f2f2ee}.line-moves{display:flex;flex-wrap:wrap;gap:0 2px;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.9}.pvmove{padding:0 4px;border:0;border-radius:3px;background:none;font:inherit;color:var(--text-2)}.pvmove:hover{background:var(--accent-soft);color:var(--accent)}.analysis-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.analysis-foot-label{font-size:var(--text-xs);color:var(--muted);font-weight:600}.review{display:flex;flex-direction:column;gap:var(--sp-4)}.review-start{display:flex;flex-direction:column;gap:var(--sp-3);font-size:var(--text-sm);color:var(--text-2)}.review-start-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2)}.review-progress{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--text-sm)}.review-progress>span{flex:1;font-variant-numeric:tabular-nums}.review-bar{flex-basis:100%;order:3;height:6px;border-radius:var(--radius-full);background:var(--surface-3);overflow:hidden}.review-bar>div{height:100%;border-radius:inherit;background:var(--accent);transition:width .3s var(--ease)}.review-mark{display:inline-grid;place-items:center;flex:none;min-width:22px;height:22px;padding:0 5px;border-radius:var(--radius-full);color:#fff;font-size:11px;font-weight:800;letter-spacing:-.02em;line-height:1}.review-mark.is-large{min-width:32px;height:32px;font-size:14px}.review-mark.is-best,.ecb-badge-best{background:var(--rv-best)}.review-mark.is-excellent{background:var(--rv-excellent)}.review-mark.is-good{background:var(--rv-good)}.review-mark.is-inaccuracy{background:var(--rv-inaccuracy)}.review-mark.is-mistake{background:var(--rv-mistake)}.review-mark.is-blunder{background:var(--rv-blunder)}.review-mark.is-forced{background:var(--rv-forced)}.review-summary{display:flex;flex-direction:column;gap:var(--sp-3)}.review-players{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.review-player{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:var(--sp-2);align-items:center;padding:var(--sp-3);border-radius:var(--radius-md);background:var(--surface-2)}.review-player .player-avatar{grid-row:span 2;width:30px;height:30px}.review-player-name{font-size:var(--text-xs);color:var(--muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-accuracy{font-size:var(--text-xl);font-weight:750;font-variant-numeric:tabular-nums;line-height:1.1}.review-accuracy-label{display:none}.review-counts{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.review-counts th{font-weight:600;text-align:left;padding:3px var(--sp-2)}.review-counts th .review-mark{margin-right:var(--sp-2);min-width:20px;height:20px;font-size:10px}.review-counts td{padding:3px var(--sp-2)}.review-count{width:44px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.review-counts tr:nth-child(odd){background:var(--surface-2)}.review-counts tr td:first-child,.review-counts tr th{border-radius:0}.evalgraph{position:relative;border-radius:var(--radius-sm);overflow:visible;cursor:crosshair;touch-action:none}.evalgraph svg{display:block;border-radius:var(--radius-sm)}.evalgraph-black{fill:#2a2d33}.evalgraph-white{fill:#eeeeea}.evalgraph-mid{stroke:#8a8f98;stroke-width:1;stroke-dasharray:3 3;opacity:.8}.evalgraph-line{fill:none;stroke:#8a8f98;stroke-width:1.5;stroke-linejoin:round}.evalgraph-current{stroke:var(--accent);stroke-width:2}.evalgraph-cross{stroke:var(--focus);stroke-width:1;opacity:.8}.evalgraph-dot{stroke:var(--surface-1);stroke-width:2}.evalgraph-dot.is-inaccuracy{fill:var(--rv-inaccuracy)}.evalgraph-dot.is-mistake{fill:var(--rv-mistake)}.evalgraph-dot.is-blunder{fill:var(--rv-blunder)}.evalgraph-tip{position:absolute;bottom:calc(100% + 6px);display:flex;flex-direction:column;align-items:center;gap:1px;min-width:120px;padding:6px 10px;border-radius:var(--radius-sm);background:var(--clock-active-bg);color:var(--clock-active-text);font-size:var(--text-xs);white-space:nowrap;transform:translate(-50%);pointer-events:none;box-shadow:var(--shadow-md);z-index:2}.evalgraph-tip strong{font-size:var(--text-sm);font-variant-numeric:tabular-nums}.evalgraph-tip span:not(.evalgraph-tip-kind){font-family:var(--font-mono);opacity:.85}.evalgraph-tip-kind{font-weight:700}.evalgraph-tip-kind.is-inaccuracy{color:var(--rv-inaccuracy)}.evalgraph-tip-kind.is-mistake{color:var(--rv-mistake)}.evalgraph-tip-kind.is-blunder{color:var(--rv-blunder)}.review-card{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--text-sm)}.review-card.is-empty{display:block;color:var(--muted);border-left-width:1px}.review-card.is-best{border-left-color:var(--rv-best)}.review-card.is-excellent{border-left-color:var(--rv-excellent)}.review-card.is-good{border-left-color:var(--rv-good)}.review-card.is-inaccuracy{border-left-color:var(--rv-inaccuracy)}.review-card.is-mistake{border-left-color:var(--rv-mistake)}.review-card.is-blunder{border-left-color:var(--rv-blunder)}.review-card-text{flex:1;min-width:0}.review-card-text strong{font-family:var(--font-mono);font-weight:700}.review-better{color:var(--muted);margin-top:2px}.review-moments ol{margin:var(--sp-2) 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}.moment{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"mark move kind" "mark who kind";column-gap:var(--sp-2);align-items:center;width:100%;padding:6px var(--sp-2);border:0;border-radius:var(--radius-sm);background:none;text-align:left}.moment:hover{background:var(--surface-hover)}.moment.is-current{background:var(--accent-soft)}.moment .review-mark{grid-area:mark}.moment-move{grid-area:move;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600}.moment-who{grid-area:who;font-size:var(--text-xs);color:var(--muted)}.moment-kind{grid-area:kind;font-size:var(--text-xs);font-weight:700}.moment-kind.is-mistake{color:var(--rv-mistake)}.moment-kind.is-blunder{color:var(--rv-blunder)}.move-note{margin-left:3px;font-weight:800;font-family:var(--font-sans)}.move-note.is-inaccuracy{color:var(--rv-inaccuracy)}.move-note.is-mistake{color:var(--rv-mistake)}.move-note.is-blunder{color:var(--rv-blunder)}.end-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.inspector{display:flex;flex-direction:column;gap:var(--sp-3)}.inspector-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.sqname{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:700}.occupant{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm)}.attackers h4{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.attackers .count{display:inline-grid;place-items:center;min-width:20px;height:18px;padding:0 6px;border-radius:var(--radius-full);background:var(--surface-3);color:var(--text);font-size:11px}.attackers ul{margin:0;padding:0;list-style:none}.attackers li{display:flex;align-items:center;gap:var(--sp-2);padding:5px var(--sp-2);border-radius:var(--radius-sm);font-size:var(--text-sm)}.attackers li:hover{background:var(--surface-hover)}.attackers .from{font-family:var(--font-mono);font-weight:650;min-width:34px}.chat{display:flex;flex-direction:column;gap:var(--sp-2);height:100%;min-height:220px}.chat-lines{flex:1;overflow:auto;display:flex;flex-direction:column;gap:6px}.chat-line{align-self:flex-start;max-width:88%;padding:6px 10px;border-radius:12px 12px 12px 4px;background:var(--surface-2);font-size:var(--text-sm);overflow-wrap:anywhere}.chat-line.mine{align-self:flex-end;border-radius:12px 12px 4px;background:var(--accent-soft)}.chat-who{display:block;font-size:var(--text-xs);font-weight:700;color:var(--muted)}.chat-form{display:flex;gap:var(--sp-2)}.chat-form input{flex:1;min-width:0}.setup{display:flex;flex-direction:column;gap:var(--sp-3)}.setup .field{display:flex;flex-direction:column;gap:var(--sp-1)}.setup .field .label{font-size:var(--text-xs);font-weight:650;color:var(--muted)}.setup textarea{width:100%}.presets{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.preset{display:flex;flex-direction:column;width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-1);text-align:left;font-size:var(--text-sm)}.preset:hover{background:var(--surface-hover);border-color:var(--border-strong)}.end{text-align:center}.end-hero{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2)}.end-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--surface-3);color:var(--muted)}.end.is-won .end-icon{background:var(--accent-soft);color:var(--accent)}.end.is-lost .end-icon{background:var(--danger-soft);color:var(--danger)}.end-headline{font-size:var(--text-xl)}.end-detail{color:var(--muted);font-size:var(--text-sm)}.end-score{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--sp-3);margin:var(--sp-5) 0;padding:var(--sp-3);border-radius:var(--radius-md);background:var(--surface-2);font-size:var(--text-sm);font-weight:600}.end-player{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.end-player span:not(.player-avatar){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.end-player.is-right{justify-content:flex-end}.end-player .player-avatar{width:20px;height:20px;border-radius:4px}.end-result{font-size:var(--text-xl);font-variant-numeric:tabular-nums}.end-actions{display:flex;flex-direction:column;gap:var(--sp-2)}.end-row{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--sp-1)}.settings{display:flex;flex-direction:column;gap:var(--sp-5)}.settings-group{display:flex;flex-direction:column}.settings-group .eyebrow{margin-bottom:var(--sp-2)}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:44px}.settings-row.is-stacked{flex-direction:column;align-items:stretch;gap:var(--sp-2);padding:var(--sp-2) 0}.board-swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}.board-swatch{display:flex;flex-direction:column;align-items:center;gap:6px;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-1);font-size:var(--text-xs);font-weight:600}.board-swatch.is-on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.board-swatch-tiles{display:grid;grid-template-columns:1fr 1fr;width:44px;height:44px;border-radius:6px;overflow:hidden}.shortcuts{display:flex;flex-direction:column;gap:6px;margin:0;font-size:var(--text-sm)}.shortcuts div{display:grid;grid-template-columns:150px 1fr;gap:var(--sp-3);align-items:center}.shortcuts dt{color:var(--text-2);font-weight:600}.shortcuts dd{margin:0;color:var(--muted)}.home{width:100%;max-width:1120px;margin:0 auto;padding:var(--sp-8) var(--sp-4) var(--sp-10)}.home-hero{max-width:720px;margin-bottom:var(--sp-8)}.home-hero h1{font-size:var(--text-2xl);font-weight:750;letter-spacing:-.03em;line-height:1.1}.home-hero p{margin-top:var(--sp-3);color:var(--muted);font-size:var(--text-lg);line-height:1.55}.home-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);grid-template-areas:"play computer" "lobby local";gap:var(--sp-5);align-items:stretch}.card-play{grid-area:play}.card-lobby{grid-area:lobby}.card-computer{grid-area:computer}.card-local{grid-area:local}.time-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:var(--sp-2)}.time-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:84px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);transition:border-color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.time-tile:hover{border-color:var(--border-strong);background:var(--surface-hover)}.time-tile:active{transform:scale(.98)}.time-tile.is-on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.time-tile-main{font-size:var(--text-xl);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.time-tile-kind{font-size:var(--text-xs);color:var(--muted);font-weight:600}.time-tile.is-on .time-tile-kind{color:var(--accent)}.custom-time{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);background:var(--surface-2)}.slider{display:flex;flex-direction:column;gap:var(--sp-1)}.slider-label{display:flex;justify-content:space-between;font-size:var(--text-sm);color:var(--muted)}.slider-label strong{color:var(--text);font-variant-numeric:tabular-nums}.field-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-3)}.field-label{font-size:var(--text-sm);font-weight:600;color:var(--text-2)}.color-dot{display:inline-block;flex:none;width:12px;height:12px;margin-right:6px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--border-strong);vertical-align:-1px}.color-dot.is-w{background:var(--piece-white-bg)}.color-dot.is-b{background:var(--piece-black-bg)}.color-dot.is-random{background:linear-gradient(90deg,var(--piece-white-bg) 50%,var(--piece-black-bg) 50%)}.waiting-card{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);border:1px dashed var(--accent);border-radius:var(--radius-md);background:var(--accent-soft)}.waiting-card>.spinner{margin-top:3px}.waiting-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:var(--text-sm)}.waiting-text>span{color:var(--muted)}.link-field{display:flex;gap:var(--sp-2);margin-top:var(--sp-2)}.link-field input{flex:1;min-width:0;height:32px;font-family:var(--font-mono);font-size:var(--text-xs)}.live-dot{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.live-dot:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse-dot 1.6s ease-in-out infinite}@keyframes pulse-dot{50%{opacity:.35}}.seeks{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.seeks th{padding:0 var(--sp-2) var(--sp-2);text-align:left;font-size:var(--text-xs);font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.seeks td{padding:var(--sp-2);border-top:1px solid var(--border)}.seeks tr.is-mine td{background:var(--accent-soft)}.seek-name{display:flex;align-items:center;gap:var(--sp-2);font-weight:600}.seek-avatar{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-3);font-size:var(--text-xs);font-weight:700}.seek-time{font-variant-numeric:tabular-nums;font-weight:600}.seek-action{text-align:right}.level-picker{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.level{height:44px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--text-lg);font-weight:700;font-variant-numeric:tabular-nums}.level:hover{border-color:var(--border-strong)}.level.is-on{border-color:var(--accent);background:var(--accent);color:var(--accent-text)}.level-name{font-size:var(--text-sm);color:var(--muted)}.level-name strong{color:var(--text)}.choice-list{display:flex;flex-direction:column;gap:var(--sp-2)}.choice-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-1);text-align:left;transition:border-color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.choice-item:hover{border-color:var(--border-strong);background:var(--surface-hover)}.choice-item>.icon:first-child{color:var(--accent)}.choice-item>.icon:last-child{color:var(--faint)}.choice-item>span{flex:1;display:flex;flex-direction:column}.choice-item>span>span{font-size:var(--text-sm);color:var(--muted)}.invite{flex:1;display:grid;place-items:center;padding:var(--sp-8) var(--sp-4)}.invite-card{width:min(100%,420px);align-items:center;text-align:center;padding:var(--sp-8) var(--sp-6)}.invite-avatar{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--accent);color:var(--accent-text);font-size:var(--text-xl);font-weight:750}.invite-title{font-size:var(--text-xl)}.invite-sub{color:var(--muted);font-size:var(--text-sm)}.invite-facts{display:grid;grid-template-columns:repeat(3,1fr);width:100%;margin:0;border-radius:var(--radius-md);background:var(--surface-2)}.invite-facts div{padding:var(--sp-3) var(--sp-2)}.invite-facts div+div{border-left:1px solid var(--border)}.invite-facts dt{font-size:var(--text-xs);color:var(--muted);font-weight:600}.invite-facts dd{margin:2px 0 0;font-weight:700;font-variant-numeric:tabular-nums}.invite-actions{display:flex;flex-direction:column;gap:var(--sp-2);width:100%}@media (max-width: 1180px){:root{--side-w: 332px}}@media (max-width: 1023px){:root{--side-w: 300px}.home-grid{grid-template-columns:1fr;grid-template-areas:"play" "computer" "lobby" "local"}}@media (max-width: 759px),(max-height: 520px) and (orientation: landscape){:root{--topbar-h: 52px;--strip-h: 36px}.topbar{padding:0 var(--sp-2);gap:2px}.brand{margin-right:0;padding:0 6px}.brand-name{display:none}.topnav-link{padding:0 10px}.namefield{display:none}.player-avatar{width:28px;height:28px}.game{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:0;padding:0}.game-main{padding:var(--sp-1) var(--sp-2) 0}.gamebar.is-main{display:flex;justify-content:center}.gamebar.is-main:not(:has(.chip,.btn,.gamebar-offer)){display:none}.gamebar.is-main .gamebar-back,.gamebar.is-main .gamebar-title,.gamebar.is-main .gamebar-note{display:none}.stage-inner{gap:6px;width:100%;justify-content:center}.board-col:not(.is-side-strips){flex:0 1 100%;width:auto}.board-col:not(.is-side-strips)>.board-frame{align-self:center}.board-resizer{display:none}.evalbar-v{width:12px}.clock{min-width:76px;font-size:var(--text-lg);padding:4px 10px}.mobile-status{display:flex;align-items:center;gap:var(--sp-2);min-height:36px;padding:0 0 2px}.mobile-status .status{flex:none;flex-wrap:nowrap;padding-left:var(--sp-1);font-size:var(--text-sm);min-height:0}.mobile-status .status-move,.mobile-status .status-spacer{display:none}.mobile-status .movestrip{flex:1;min-width:0}.mobile-bar{display:flex;align-items:center;gap:2px;padding:4px var(--sp-2) calc(4px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface-1)}.mobile-bar-spacer{flex:1}.mobile-bar-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:0 1 56px;gap:1px;min-width:44px;height:48px;padding:0 var(--sp-1);border:0;border-radius:var(--radius-sm);background:none;color:var(--text-2);font-size:11px;font-weight:600}.mobile-bar-btn:active{background:var(--surface-hover)}.mobile-bar-btn .tab-badge{position:absolute;top:2px;right:8px;min-width:16px;height:16px;font-size:10px}.game-side{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-sheet);max-height:min(78dvh,640px);border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:0;box-shadow:var(--shadow-lg);transform:translateY(105%);visibility:hidden;transition:transform .26s var(--ease),visibility 0s linear .26s;padding-bottom:env(safe-area-inset-bottom)}.game.is-sheet-open .game-side{transform:none;visibility:visible;transition:transform .26s var(--ease)}.sheet-head{display:flex;align-items:center;justify-content:flex-end;position:relative;height:36px;padding:0 var(--sp-2)}.sheet-grip{position:absolute;left:50%;top:8px;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:var(--border-strong)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-sheet) - 1);background:var(--backdrop);opacity:0;pointer-events:none;transition:opacity .26s var(--ease)}.game.is-sheet-open .sheet-backdrop{display:block;opacity:1;pointer-events:auto}.side-status{display:none}.offer.is-main,.notice.is-main{display:flex;margin:0 0 var(--sp-1)}.offer.is-main .offer-text{flex-basis:auto;flex:1}.offer.is-main>.btn-primary{margin-left:0}.offer.is-side,.notice.is-side{display:none}.panel{min-height:200px}.home{padding:var(--sp-5) var(--sp-3) var(--sp-8)}.home-hero{margin-bottom:var(--sp-5)}.home-hero p{font-size:var(--text-md)}.card{padding:var(--sp-4)}.time-grid{grid-template-columns:repeat(3,1fr)}.time-tile{height:72px}.time-tile-main{font-size:var(--text-lg);white-space:nowrap}.custom-time{grid-template-columns:1fr}.shortcuts div{grid-template-columns:1fr;gap:0}}@media (max-height: 520px) and (orientation: landscape){.app.is-game .topbar{display:none}.game{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr)}.game-main{padding:var(--sp-1) var(--sp-2) 0 max(var(--sp-2),env(safe-area-inset-left))}.mobile-bar{flex-direction:column;overflow-y:auto;padding:4px calc(4px + env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) 4px;border-top:0;border-left:1px solid var(--border)}.mobile-bar-btn{flex:none;height:44px}.game-side{top:0;left:auto;width:min(400px,75vw);max-height:none;border-radius:var(--radius-lg) 0 0 var(--radius-lg);border-bottom:1px solid var(--border);border-right:0;transform:translate(105%);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) 0}.sheet-grip{display:none}.panel{min-height:0}}@media (max-width: 360px){.topnav-link{padding:0 6px;font-size:var(--text-xs)}}.banner.is-resume{max-width:720px;margin-bottom:var(--sp-6);border:1px solid transparent;border-radius:var(--radius-md);background:var(--accent-soft);color:var(--text)}
