:root{--bg:#0c0c18;--text:#d4c8a0;--text-muted:#8a7e60;--tile-light:#c8b98a;--tile-dark:#5c4033;--accent-gold:#d4a843;--accent-teal:#2d8a6e;--btn-bg:#2a2a40;--btn-border:#b4a0644d;--danger:#dc2626;--success:#22c55e;--board-size:min(100vw - 32px, 520px);color:var(--text);background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font:16px/1.45 system-ui,Segoe UI,Roboto,sans-serif}*,:before,:after{box-sizing:border-box}body{margin:0}#root{flex-direction:column;align-items:center;min-height:100svh;display:flex}h1,h2{color:var(--text);margin:0;font-weight:500}p{margin:0}@property --eval-c1{syntax:"<color>";inherits:false;initial-value:#2a2520}@property --eval-c2{syntax:"<color>";inherits:false;initial-value:#1a1612}@property --flash-opacity{syntax:"<number>";inherits:false;initial-value:0}:root,[data-theme=wood]{--bg:#0e0a06;--bg-deep:#0e0a06;--bg-mid:#1a1612;--bg-elevated:#2a2520;--bg-elevated-hover:#3a3530;--bg-panel:#1f1a14;--bg-panel-deep:#15110b;--bg-card:#1a1612;--bg-card-alt:#1f1a14;--bg-overlay-dark:#0e0a06;--bg-popup:#2a2520;--bg-deeper:#15110b;--bg-danger-tint:#2a1612;--tile-light:#c8b98a;--tile-dark:#5c4033;--tile-light-alt:#e8d8b8;--tile-dark-alt:#8a6a44;--tile-promo-light:#f0f0e8;--tile-promo-dark:#1a1a1a;--tile-promo-light-text:#d4c8a0;--tile-promo-dark-text:#1a1a1a;--piece-white:#f0e8d0;--piece-black:#1a1008;--piece-text-on-bright:#1a1612;--piece-white-flat:#fff;--piece-black-flat:#111;--piece-white-shadow:0 0 2px #0009;--piece-black-shadow:0 0 2px #c8b98ae6, 0 0 8px #c8b98a99;--accent-primary:#d4a843;--accent-secondary:#c9a062;--accent-gold:#d4a843;--accent-gold-bright:gold;--accent-gold-orange:#ff8c00;--accent-gold-light:#f2d37a;--accent-amber-mid:#e8a64a;--accent-amber-bright:#ffc857;--accent-amber-warm:#f2a23a;--accent-peach:#fa6;--text-on-bright-gold:#2a1a00;--accent-teal:#2d8a6e;--accent-teal-bright:#14b8a6;--accent-info:#6ec0ff;--accent-orange:#ea580c;--accent-danger:#dc2626;--danger:#dc2626;--danger-bright:#ee5050;--danger-coral:#ee5253;--danger-coral-light:#ff6b6b;--danger-mid:#c84a4a;--danger-dark:#b54040;--danger-light:#e87070;--danger-very-light:#f88;--danger-pale:#fca5a5;--danger-short:#e88;--accent-success:#22c55e;--success:#22c55e;--success-light:#7dd87d;--success-mint:#6ed27a;--text:#d4c8a0;--text-primary:#d4c8a0;--text-secondary:#d4c8a0b3;--text-muted:#8a7e60;--text-muted-warm:#c8b8a0;--text-white:#fff;--text-on-light:#111;--text-grey-mid:#555;--text-grey-light:#888;--text-grey-lighter:#aaa;--btn-bg:#2a2a40;--btn-border:#b4a0644d;--border-subtle:#f5e6c81a;--border-strong:#f5e6c84d;--glow-accent:0 0 12px #d4a84366;--glow-danger:0 0 12px #dc262666;--glow-success:0 0 12px #22c55e66;--shadow-elevated:0 8px 24px #00000080;--seam-color:#d4af3726;--sacrifice-color:168, 85, 247;--font-display:"Cinzel", "Times New Roman", serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Consolas", monospace;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:40px;--space-6:64px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=wood-light]{--bg:#f6f1e8;--bg-deep:#f6f1e8;--bg-mid:#ede5d5;--bg-elevated:#fff;--bg-elevated-hover:#f0e8d5;--bg-panel:#f8f3e8;--bg-panel-deep:#f0e8d5;--bg-card:#fff;--bg-card-alt:#f8f3e8;--bg-overlay-dark:#ede5d5;--bg-popup:#fff;--bg-deeper:#ede5d5;--bg-danger-tint:#f5e0dc;--tile-light:#f0e0c0;--tile-dark:#b8865d;--tile-light-alt:#e8d5a8;--tile-dark-alt:#a07748;--tile-promo-light:#fff;--tile-promo-dark:#2a1810;--tile-promo-light-text:#2a1810;--tile-promo-dark-text:#f6f1e8;--piece-white:#fdfbf5;--piece-black:#2a1810;--piece-text-on-bright:#2a1810;--piece-white-flat:#fdfbf5;--piece-black-flat:#2a1810;--piece-white-shadow:0 0 1px #2a181080, 0 1px 1px #2a181040;--piece-black-shadow:0 0 1px #fff6;--accent-primary:#8b6f3a;--accent-secondary:#b85450;--accent-gold:#8b6f3a;--accent-gold-bright:#b8902a;--accent-gold-orange:#c47a2a;--accent-gold-light:#a88040;--accent-amber-mid:#b8902a;--accent-amber-bright:#c4a040;--accent-amber-warm:#b88030;--accent-peach:#c98a5a;--text-on-bright-gold:#2a1810;--accent-teal:#2d8a6e;--accent-teal-bright:#2d8a6e;--accent-info:#4080b0;--accent-orange:#c47a2a;--accent-danger:#b85450;--danger:#b85450;--danger-bright:#c4625e;--danger-coral:#b85450;--danger-coral-light:#d07a76;--danger-mid:#a8483f;--danger-dark:#8a3a32;--danger-light:#b85450;--danger-very-light:#d07a76;--danger-pale:#e8b5b0;--danger-short:#b85450;--accent-success:#5a8a4f;--success:#5a8a4f;--success-light:#6a9a5f;--success-mint:#5a8a4f;--text:#2a1810;--text-primary:#2a1810;--text-secondary:#2a1810b3;--text-muted:#2a181080;--text-muted-warm:#2a181099;--text-white:#fdfbf5;--text-on-light:#2a1810;--text-grey-mid:#2a181066;--text-grey-light:#2a181073;--text-grey-lighter:#2a181066;--btn-bg:#fff;--btn-border:#2a181026;--border-subtle:#2a181014;--border-strong:#2a181033;--glow-accent:0 0 8px #8b6f3a40;--glow-danger:0 0 8px #b8545040;--glow-success:0 0 8px #5a8a4f40;--shadow-elevated:0 4px 18px #2a18101f;--seam-color:#2a18101a;--sacrifice-color:124, 58, 237;--font-display:"Cinzel", "Times New Roman", serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Consolas", monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=cyberpunk]{--bg:#050608;--bg-deep:#050608;--bg-mid:#0c0e14;--bg-elevated:#14171f;--bg-elevated-hover:#1c2030;--bg-panel:#14171f;--bg-panel-deep:#0c0e14;--bg-card:#0c0e14;--bg-card-alt:#14171f;--bg-overlay-dark:#050608;--bg-popup:#14171f;--bg-deeper:#050608;--bg-danger-tint:#1a0e16;--tile-light:#1d2335;--tile-dark:#0e1220;--tile-light-alt:#2a3458;--tile-dark-alt:#161c2e;--tile-promo-light:#2a3458;--tile-promo-dark:#0e1220;--tile-promo-light-text:#d8e8f5;--tile-promo-dark-text:#d8e8f5;--piece-white:#b8d8e5;--piece-black:#d4a5c0;--piece-text-on-bright:#0a1020;--piece-white-flat:#b8d8e5;--piece-black-flat:#d4a5c0;--piece-white-shadow:0 0 2px #0a102099;--piece-black-shadow:0 0 2px #0a1020b3;--accent-primary:#5dc8d6;--accent-secondary:#d65d8c;--accent-gold:#5dc8d6;--accent-gold-bright:#7ad8e3;--accent-gold-orange:#d6995d;--accent-gold-light:#7ad8e3;--accent-amber-mid:#d6b25d;--accent-amber-bright:#d6c45d;--accent-amber-warm:#d6995d;--accent-peach:#d68a8a;--text-on-bright-gold:#0a1020;--accent-teal:#5dd6a8;--accent-teal-bright:#5dc8d6;--accent-info:#5dc8d6;--accent-orange:#d6995d;--accent-danger:#d65d8c;--danger:#d65d8c;--danger-bright:#d65d8c;--danger-coral:#d65d8c;--danger-coral-light:#e08aac;--danger-mid:#b8487a;--danger-dark:#9a3a66;--danger-light:#d65d8c;--danger-very-light:#e08aac;--danger-pale:#e8b5c8;--danger-short:#d65d8c;--accent-success:#5dd6a8;--success:#5dd6a8;--success-light:#7adcb3;--success-mint:#5dd6a8;--text:#d8e8f5;--text-primary:#d8e8f5;--text-secondary:#d8e8f5a6;--text-muted:#d8e8f566;--text-muted-warm:#d8e8f58c;--text-white:#d8e8f5;--text-on-light:#0a1020;--text-grey-mid:#d8e8f559;--text-grey-light:#d8e8f573;--text-grey-lighter:#d8e8f58c;--btn-bg:#1d2640;--btn-border:#5dc8d62e;--border-subtle:#5dc8d61f;--border-strong:#5dc8d659;--glow-accent:0 0 8px #5dc8d666;--glow-danger:0 0 8px #d65d8c59;--glow-success:0 0 8px #5dd6a859;--shadow-elevated:0 8px 24px #0000008c, 0 0 0 1px #5dc8d61a;--seam-color:#5dc8d638;--sacrifice-color:200, 100, 255;--font-display:"JetBrains Mono", "Consolas", monospace;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Consolas", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=fantasy]{--bg:#0a0805;--bg-deep:#0a0805;--bg-mid:#1a1408;--bg-elevated:#2a2010;--bg-elevated-hover:#3a2c18;--bg-panel:#221a0c;--bg-panel-deep:#150f06;--bg-card:#1a1408;--bg-card-alt:#221a0c;--bg-overlay-dark:#0a0805;--bg-popup:#2a2010;--bg-deeper:#0a0805;--bg-danger-tint:#2a1410;--tile-light:#4a3520;--tile-dark:#1a1208;--tile-light-alt:#5a4530;--tile-dark-alt:#221810;--tile-promo-light:#5a4530;--tile-promo-dark:#1a1208;--tile-promo-light-text:#e8d5a0;--tile-promo-dark-text:#e8d5a0;--piece-white:#d4af37;--piece-black:#2a1f10;--piece-text-on-bright:#0a0805;--piece-white-flat:#d4af37;--piece-black-flat:#2a1f10;--piece-white-shadow:0 0 4px #000c, 0 0 8px #d4af3780;--piece-black-shadow:0 0 3px #e8d5a099, 0 0 6px #e8d5a04d;--accent-primary:#c9a062;--accent-secondary:gold;--accent-gold:#c9a062;--accent-gold-bright:#e8c878;--accent-gold-orange:#b8862a;--accent-gold-light:#d4b070;--accent-amber-mid:#c9821f;--accent-amber-bright:#d4a040;--accent-amber-warm:#c9821f;--accent-peach:#c98a5a;--text-on-bright-gold:#0a0805;--accent-teal:#6b8e23;--accent-teal-bright:#7ba037;--accent-info:#b8862a;--accent-orange:#c9821f;--accent-danger:#8b3a3a;--danger:#8b3a3a;--danger-bright:#a04848;--danger-coral:#8b3a3a;--danger-coral-light:#a85a5a;--danger-mid:#7a2f2f;--danger-dark:#5e2424;--danger-light:#a85a5a;--danger-very-light:#c98080;--danger-pale:#d8a8a8;--danger-short:#a85a5a;--accent-success:#6b8e23;--success:#6b8e23;--success-light:#8aa840;--success-mint:#7ba037;--text:#e8d5a0;--text-primary:#e8d5a0;--text-secondary:#e8d5a0b3;--text-muted:#e8d5a066;--text-muted-warm:#e8d5a099;--text-white:#f5e8c0;--text-on-light:#0a0805;--text-grey-mid:#e8d5a059;--text-grey-light:#e8d5a073;--text-grey-lighter:#e8d5a08c;--btn-bg:#2a2010;--btn-border:#c9a06238;--border-subtle:#c9a06226;--border-strong:#c9a06273;--glow-accent:0 0 16px #c9a06280, 0 0 4px #c9a062cc;--glow-danger:0 0 16px #8b3a3a80;--glow-success:0 0 12px #6b8e2366;--shadow-elevated:0 8px 24px #000000b3, 0 0 1px #c9a06266;--seam-color:#c9a06233;--sacrifice-color:218, 165, 32;--font-display:"Cinzel Decorative", "Cinzel", "Times New Roman", serif;--font-body:"Cormorant Garamond", "Inter", serif;--font-mono:"JetBrains Mono", "Consolas", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.app-shell{width:100%;min-height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background:linear-gradient(135deg, var(--eval-c1) 0%, var(--eval-c2) 100%);flex-direction:column;align-items:center;transition:--eval-c1 .6s,--eval-c2 .6s;animation:.28s ease-out view-enter;display:flex;position:relative;overflow-x:clip}@keyframes view-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.app-shell:after{content:"";background:var(--flash-color,white);opacity:var(--flash-opacity,0);pointer-events:none;transition:--flash-opacity var(--flash-duration,.4s) ease-out;mix-blend-mode:screen;z-index:9000;position:fixed;inset:0}.bg-wave-grid{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0}.app-root{z-index:1;width:100%;max-width:1100px;padding:var(--space-3) var(--space-3) var(--space-4);align-items:stretch;gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex;position:relative}.header-action-btn{border-radius:var(--radius-md);border:1px solid var(--btn-border);background:var(--btn-bg);width:30px;height:30px;color:var(--text);cursor:pointer;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .15s,border-color .15s,box-shadow .2s,transform .15s;display:inline-flex}.header-action-btn:hover:not(:disabled){background:var(--bg-elevated-hover);border-color:var(--accent-primary);box-shadow:var(--glow-accent);transform:translateY(-1px)}.header-action-btn:active:not(:disabled){transform:translateY(0)}.header-action-btn:disabled{opacity:.4;cursor:not-allowed}.game-mode-cards{gap:var(--space-3);grid-template-columns:1fr 1fr;width:100%;display:grid}.mode-card{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-mid);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);cursor:pointer;text-align:left;color:var(--text);font-family:inherit;transition:background .2s,border-color .2s,box-shadow .2s,transform .15s;display:flex;position:relative;overflow:hidden}.mode-card:hover:not(:disabled){border-color:var(--accent-primary);box-shadow:var(--glow-accent);transform:translateY(-2px)}.mode-card.is-active{border-color:var(--accent-primary);background:linear-gradient(135deg, var(--bg-elevated) 0%, var(--bg-mid) 100%);box-shadow:var(--glow-accent)}.mode-card:disabled{opacity:.55;cursor:not-allowed}.mode-card-icon{color:var(--accent-primary);filter:drop-shadow(0 0 6px var(--accent-primary));flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:inline-flex}.mode-card-content{flex-direction:column;gap:2px;min-width:0;display:flex}.mode-card-title{color:var(--text-primary);font-size:18px;font-weight:700;line-height:1.2}.mode-card-subtitle{color:var(--text-secondary);font-size:12px;line-height:1.3}.sidebar-opponent .opponent-tabs-vertical{gap:var(--space-2);flex-direction:column;display:flex}.opp-tab{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-mid);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;text-align:left;font-family:inherit;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .2s;display:flex}.opp-tab:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-elevated-hover)}.opp-tab.is-active{border-color:var(--accent-primary);background:var(--bg-elevated);box-shadow:var(--glow-accent)}.opp-tab:disabled{opacity:.5;cursor:not-allowed}.opp-tab .beta-tag-small{background:linear-gradient(135deg, var(--danger-coral-light), var(--danger-coral));color:var(--text-white);border-radius:var(--radius-sm);letter-spacing:.05em;margin-left:auto;padding:1px 6px;font-size:9px;font-weight:700}.app-body{gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(260px,320px);align-items:start;display:grid}.board-area{align-items:center;gap:var(--space-4);min-width:0;max-width:var(--board-size);flex-direction:column;width:100%;margin:0 auto;display:flex}.right-sidebar{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.sidebar-panel{background:var(--bg-card);border:1px solid var(--btn-border);border-radius:var(--radius-md);padding:var(--space-3);gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.sidebar-panel-title{margin:0 0 var(--space-1);text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);font-size:11px;font-weight:700}.sidebar-moves .move-log-text{padding:var(--space-2);max-height:280px;font-size:12px;font-family:var(--font-mono,ui-monospace, monospace);color:var(--text);border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-all;background:#0000002e;margin:0;line-height:1.6;overflow-y:auto}.sidebar-moves .move-log-empty{color:var(--text-secondary);padding:var(--space-2);font-size:12px}.sidebar-moves .copy-btn{align-self:flex-start;margin-top:0}.sidebar-analysis .analysis-eval{font-variant-numeric:tabular-nums;font-family:var(--font-mono,ui-monospace, monospace);color:var(--text);font-size:22px;font-weight:700}.sidebar-analysis .analysis-eval.positive{color:var(--success-light)}.sidebar-analysis .analysis-eval.negative{color:var(--danger-light)}.sidebar-analysis .analysis-last{color:var(--text-muted);font-size:12px}.panel-action-btn{width:100%;margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-elevated);border:1px solid var(--accent-primary);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;gap:var(--space-2);font-size:13px;font-weight:600;transition:background .15s,color .15s,box-shadow .2s,transform .15s;display:inline-flex}.panel-action-btn:hover:not(:disabled){background:var(--accent-primary);color:var(--piece-text-on-bright);box-shadow:var(--glow-accent);transform:translateY(-1px)}.panel-action-btn:active:not(:disabled){transform:translateY(0)}.panel-action-btn:disabled{opacity:.45;cursor:not-allowed}.app-status-bar{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);color:var(--text-secondary);background:var(--bg-card);border:1px solid var(--btn-border);border-radius:var(--radius-md);flex-wrap:wrap;font-size:13px;display:flex}.app-status-bar .status-turn{color:var(--text);font-weight:600}.app-status-bar .status-turn-mine{color:var(--accent-primary)}.app-status-bar .status-last-move{font-family:var(--font-mono,ui-monospace, monospace)}.user-menu{position:relative}.user-menu-trigger{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);border:1px solid var(--btn-border);background:var(--btn-bg);height:30px;color:var(--text);cursor:pointer;font-size:13px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.user-menu-trigger:hover{background:var(--bg-elevated-hover);border-color:var(--accent-primary)}.user-menu-trigger-caret{opacity:.7;align-items:center;margin-left:2px;display:inline-flex}.user-menu-anon{color:var(--text-muted)}.user-menu-panel{top:calc(100% + var(--space-1));z-index:80;background:var(--bg-card);border:1px solid var(--btn-border);border-radius:var(--radius-md);min-width:200px;box-shadow:var(--shadow-elevated);padding:var(--space-1);flex-direction:column;gap:1px;display:flex;position:absolute;right:0}.user-menu-item{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2);color:var(--text);text-align:left;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;font-family:inherit;font-size:13px;transition:background .15s;display:flex}.user-menu-item:hover:not(:disabled){background:var(--bg-elevated-hover)}.user-menu-item:disabled{opacity:.45;cursor:default}.user-menu-item-icon{flex-shrink:0;justify-content:center;align-items:center;width:18px;display:inline-flex}.user-menu-divider{background:var(--btn-border);height:1px;margin:var(--space-1) 0}.board-with-coords.is-afk-nudge{border-radius:var(--radius-md);animation:3s ease-in-out infinite afk-breathe}@keyframes afk-breathe{0%,to{box-shadow:0 0 #ffc85000}50%{box-shadow:0 0 0 3px #ffc85059,0 0 28px #ffc85040}}@media (width<=880px){.app-root{padding:var(--space-2) var(--space-2) var(--space-3);gap:var(--space-2)}.app-body,.game-mode-cards{gap:var(--space-2);grid-template-columns:1fr}.mode-card{padding:var(--space-2) var(--space-3)}.mode-card-icon svg{width:24px;height:24px}.mode-card-title{font-size:16px}.right-sidebar{order:2;width:100%}.board-area{order:1}.sidebar-moves{max-height:240px}.sidebar-moves .move-log-text{max-height:160px}}@media (width<=640px){.app-header h1{font-size:24px}.board-area{max-width:100%;overflow:hidden}.eval-bar{display:none}.app-status-bar{gap:var(--space-2);padding:var(--space-1) var(--space-2);font-size:12px}.app-status-bar .status-last-move{font-size:11px}}.app-header{justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;width:100%;min-width:0;display:flex}.app-header h1{letter-spacing:.04em;color:var(--text-primary);margin:0;font-size:32px;font-weight:700;line-height:1}.app-brand{flex-direction:row;flex-shrink:0;align-items:baseline;gap:16px;min-width:0;display:flex}.app-tagline{color:#ffffff8c;letter-spacing:.02em;white-space:nowrap;margin:0;font-size:13px;font-weight:400}@media (width<=640px){.app-tagline{display:none}}.header-controls{align-items:center;gap:var(--space-1);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;display:flex}@media (width<=900px){.app-tagline{display:none}}@media (width<=600px){.header-action-btn,.theme-toggle{width:28px;height:28px}.user-menu-trigger{height:28px;padding:0 var(--space-2);font-size:12px}.header-controls{gap:2px}}.header-help-btn{border:1px solid var(--btn-border);background:var(--btn-bg);width:30px;height:30px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:14px;transition:background .15s,color .15s;display:flex}.header-help-btn:hover{background:var(--bg-elevated-hover);color:var(--text)}@keyframes blunder-pulse{0%,to{box-shadow:inset 0 0 0 3px #dc2828e6}50%{box-shadow:inset 0 0 0 6px #dc282866}}@keyframes brilliant-pulse{0%,to{box-shadow:inset 0 0 #ffd70000}30%{box-shadow:inset 0 0 120px 30px #ffd70059}}.tile.classified-blunder:before{animation:.6s ease-in-out 4 blunder-pulse}.tile.classified-brilliant:before{animation:.6s ease-in-out 4 brilliant-pulse}@keyframes sacrifice-burst{0%{box-shadow:inset 0 0 0 0 rgba(var(--sacrifice-color), 0), 0 0 0 0 rgba(var(--sacrifice-color), 0)}18%{box-shadow:inset 0 0 0 4px rgba(var(--sacrifice-color), 1), 0 0 24px 6px rgba(var(--sacrifice-color), .7)}60%{box-shadow:inset 0 0 0 3px rgba(var(--sacrifice-color), .55), 0 0 28px 10px rgba(var(--sacrifice-color), .32)}to{box-shadow:inset 0 0 0 0 rgba(var(--sacrifice-color), 0), 0 0 0 0 rgba(var(--sacrifice-color), 0)}}@keyframes sacrifice-sparkle{0%{opacity:0;transform:translate(-50%,-50%)scale(.2)}20%{opacity:1}to{transform:translate(calc(-50% + var(--sparkle-dx,32px)), calc(-50% + var(--sparkle-dy,-32px))) scale(1);opacity:0}}.tile.is-sacrifice:before{z-index:2;animation:2.5s ease-out sacrifice-burst}@keyframes capture-burst{0%{box-shadow:inset 0 0 0 0 var(--accent-danger), 0 0 0 0 var(--accent-danger);transform:scale(1)}28%{box-shadow:inset 0 0 0 3px var(--accent-danger), 0 0 24px 6px var(--accent-danger);transform:scale(1.08)}72%{box-shadow:inset 0 0 0 2px var(--accent-danger), 0 0 18px 8px var(--accent-danger);transform:scale(1)}to{transform:scale(1);box-shadow:inset 0 0 #0000,0 0 #0000}}@keyframes capture-particle-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.2)}20%{opacity:1}to{transform:translate(calc(-50% + var(--cap-dx,32px)), calc(-50% + var(--cap-dy,-32px))) scale(.4);opacity:0}}.tile.is-capture:before{z-index:2;animation:.6s ease-out capture-burst}.tile.is-capture:after{content:"";background:var(--accent-danger);width:6px;height:6px;box-shadow:0 0 8px var(--accent-danger);pointer-events:none;--cap-dx:26px;--cap-dy:-22px;z-index:3;border-radius:50%;animation:.55s ease-out capture-particle-pop;position:absolute;top:50%;left:50%}.tile.is-sacrifice:after{content:"✦";color:rgba(var(--sacrifice-color), .95);text-shadow:0 0 6px rgba(var(--sacrifice-color), .8);pointer-events:none;--sparkle-dx:36px;--sparkle-dy:-36px;z-index:3;font-size:18px;font-weight:700;animation:1.8s ease-out sacrifice-sparkle;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.board{width:var(--board-size);height:var(--board-size);border-radius:8px;position:relative;overflow:visible}[data-3d=on] .board-with-coords{perspective:1400px;perspective-origin:50% 110%}[data-3d=on] .board{transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1);transform:rotateX(6deg)}@media (pointer:coarse){[data-3d=on] .board-with-coords{perspective:none}[data-3d=on] .board{transform-style:flat;transform:none}[data-3d=on] .tile{transform-style:flat}[data-3d=on] .board.is-rotated{animation:none}}.board:after{content:"";pointer-events:none;background-image:linear-gradient(90deg, transparent calc(25% - .5px), var(--seam-color) calc(25% - .5px), var(--seam-color) calc(25% + .5px), transparent calc(25% + .5px), transparent calc(50% - .5px), var(--seam-color) calc(50% - .5px), var(--seam-color) calc(50% + .5px), transparent calc(50% + .5px), transparent calc(75% - .5px), var(--seam-color) calc(75% - .5px), var(--seam-color) calc(75% + .5px), transparent calc(75% + .5px)), linear-gradient(0deg, transparent calc(25% - .5px), var(--seam-color) calc(25% - .5px), var(--seam-color) calc(25% + .5px), transparent calc(25% + .5px), transparent calc(50% - .5px), var(--seam-color) calc(50% - .5px), var(--seam-color) calc(50% + .5px), transparent calc(50% + .5px), transparent calc(75% - .5px), var(--seam-color) calc(75% - .5px), var(--seam-color) calc(75% + .5px), transparent calc(75% + .5px));border-radius:inherit;z-index:1;transition:background-image .25s;position:absolute;inset:0}@keyframes block-pulse{0%,to{box-shadow:inset 0 0 0 1px var(--seam-color);opacity:1}50%{box-shadow:inset 0 0 0 1.5px var(--accent-primary), var(--glow-accent);opacity:1}}.board.is-rotated:after{animation:.8s ease-in-out block-pulse}@keyframes board-rotate-wobble{0%{transform:rotateX(6deg)scale(1)}20%{transform:rotateX(11deg)scale(.965)rotate(1.6deg)}45%{transform:rotateX(11deg)scale(.965)rotate(-1.6deg)}70%{transform:rotateX(8deg)scale(.985)rotate(.7deg)}to{transform:rotateX(6deg)scale(1)rotate(0)}}[data-3d=on] .board.is-rotated{animation:.65s ease-out board-rotate-wobble}@keyframes board-swing-2d{0%{transform:scale(1)rotate(0)}18%{transform:scale(.97)rotate(-2.2deg)}44%{transform:scale(.985)rotate(1.8deg)}72%{transform:scale(.996)rotate(-.7deg)}to{transform:scale(1)rotate(0)}}.board.is-rotated{animation:board-swing-2d var(--rotate-ms,.56s) cubic-bezier(.22, 1, .36, 1)}@keyframes board-swing-beat{0%{transform:scale(1)rotate(0)}26%{transform:scale(.94)rotate(-4.2deg)}56%{transform:scale(1.012)rotate(3.2deg)}82%{transform:scale(.995)rotate(-1.1deg)}to{transform:scale(1)rotate(0)}}.board.is-rotated.is-rotated-beat{animation-name:board-swing-beat;animation-timing-function:cubic-bezier(.34,1.56,.64,1)}@media (prefers-reduced-motion:reduce){.board.is-rotated{animation:none}}.tile{cursor:pointer;transform-origin:50%;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;padding:0;transition:transform .6s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:0;left:0}[data-3d=on] .tile{transform-style:preserve-3d}.tile.light:before,.tile.dark:before{content:"";background:var(--tile-light);border-radius:3px;position:absolute;inset:0}.tile.dark:before{background:var(--tile-dark)}.tile.selected:before{outline:3px solid var(--accent-gold);outline-offset:-3px}.tile.target:before{box-shadow:inset 0 0 0 4px var(--accent-teal)}.tile.last-from:before{background:#648cdc73}.tile.last-to:before{background:#648cdc8c;box-shadow:inset 0 0 0 2px #8cb4ff99}@keyframes hint-pulse{0%,to{box-shadow:inset 0 0 0 2px #14b8a680}50%{box-shadow:inset 0 0 0 3px #14b8a6f2,0 0 12px #14b8a680}}.tile.hint-from:before,.tile.hint-to:before{background:#14b8a638;animation:1.4s ease-in-out infinite hint-pulse}.tile.hint-to:before{background:#14b8a661}@keyframes king-check-pulse{0%,to{box-shadow:inset 0 0 0 4px var(--danger), 0 0 16px #dc262699}50%{box-shadow:inset 0 0 0 5px var(--danger), 0 0 28px #dc2626e6}}.tile.checked-king:before{animation:.9s ease-in-out infinite king-check-pulse}.tile.checking-piece:before{box-shadow:inset 0 0 0 4px var(--success), 0 0 16px #22c55e80}.tile.mated-king:before{box-shadow:inset 0 0 0 4px var(--danger), 0 0 24px #dc2626cc}.tile.mating-piece:before{box-shadow:inset 0 0 0 4px var(--danger), 0 0 16px #dc262699}@keyframes checkmate-flash{0%{opacity:0}18%{opacity:.55}to{opacity:0}}body.checkmate-flash:after{content:"";pointer-events:none;z-index:9999;background:radial-gradient(circle,#ffc85080 0%,#dc28282e 60%,#0000 100%);animation:1.4s ease-out forwards checkmate-flash;position:fixed;inset:0}@keyframes blunder-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.app-shell.is-blunder-flash .app-root{animation:.35s ease-out blunder-shake}@keyframes blunder-vignette{0%{box-shadow:inset 0 0 #dc282800}25%{box-shadow:inset 0 0 100px 20px #dc282866}to{box-shadow:inset 0 0 #dc282800}}.screen-flash-effect{pointer-events:none;z-index:9998;position:fixed;inset:0}.screen-flash-effect.screen-flash-blunder{animation:.8s ease-out blunder-vignette}.screen-flash-effect.screen-flash-brilliant{animation:1.2s ease-out brilliant-pulse}.brilliant-sparkles{pointer-events:none;z-index:9999;position:fixed;inset:0}.brilliant-sparkle{color:#ffd700f2;filter:drop-shadow(0 0 6px #ffd700d9);transform-origin:50%;animation:1.4s ease-out forwards sparkle-float;display:inline-flex;position:absolute}@keyframes sparkle-float{0%{opacity:0;transform:scale(0)rotate(0)}20%{transform:scale(1) rotate(var(--sparkle-rot,45deg));opacity:1}to{transform:translateY(-80px) scale(.7) rotate(calc(var(--sparkle-rot,45deg) + 180deg));opacity:0}}.tile.threatened:before{background:rgba(220, 38, 38, calc(.08 * var(--threat-n,1)))}.tile.threatening-piece:before{box-shadow:inset 0 0 0 3px #dc2626e6,0 0 12px #dc262680}.support-overlay{pointer-events:none;position:absolute;top:0;left:0}.support-arrow{stroke:var(--support-stroke,var(--accent-teal-bright));stroke-width:1.8px;fill:none;opacity:.85}.support-arrow-hover{stroke:var(--support-hover-stroke,var(--accent-orange))}.tile-annotation{pointer-events:none;z-index:1;border-radius:3px;position:absolute;inset:0}.tile-annotation-green{background:#22c55e73}.tile-annotation-red{background:#dc262680}.tile-annotation-yellow{background:#eab30880}.tile-annotation-blue{background:#3b82f673}.annotation-overlay{pointer-events:none;z-index:10;position:absolute;inset:0}.annotation-arrow{stroke-width:9px;stroke-linecap:round;fill:none;opacity:.78}.annotation-color-green{stroke:#22c55e;fill:#22c55e}.annotation-color-red{stroke:#dc2626;fill:#dc2626}.annotation-color-yellow{stroke:#eab308;fill:#eab308}.annotation-color-blue{stroke:#3b82f6;fill:#3b82f6}.piece{font-size:calc(var(--board-size) / 9);filter:drop-shadow(0 1px 3px #000000b3);pointer-events:none;line-height:1;transition:transform .6s cubic-bezier(.4,0,.2,1);position:relative}.piece-slide-wrap{pointer-events:none;justify-content:center;align-items:center;transition:transform .22s cubic-bezier(.4,0,.2,1),filter .18s;display:inline-flex}@keyframes piece-slide-in{0%{transform:translate(var(--slide-dx,0), var(--slide-dy,0))}to{transform:translate(0)}}.piece-slide-wrap.is-sliding-in{animation:.26s cubic-bezier(.22,1,.36,1) piece-slide-in}@media (hover:hover){[data-3d=on] .tile:hover .piece-slide-wrap:not(.is-sliding-in){filter:drop-shadow(0 4px 6px #00000080);transform:translateZ(6px)}}[data-3d=on] .tile.selected .piece-slide-wrap:not(.is-sliding-in){filter:drop-shadow(0 8px 10px #0009);transform:translateZ(12px)}.piece-white{color:var(--piece-white);text-shadow:var(--piece-white-shadow)}.piece-black{color:var(--piece-black);text-shadow:var(--piece-black-shadow)}.board.previewing{outline:2px dashed var(--text-muted);outline-offset:4px;border-radius:8px}.board.previewing .tile,.board.previewing .piece{transition:transform .3s cubic-bezier(.4,0,.2,1)}.game-over-banner{text-align:center;width:100%;color:var(--accent-gold);padding:8px 0;font-size:18px;font-weight:700}.board-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;width:100%;display:flex}.action-buttons-group{background:var(--bg-elevated);border:1px solid var(--btn-border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);align-items:stretch;display:inline-flex;overflow:hidden}.action-buttons-group .action-btn{width:38px;height:38px;color:var(--text);background:0 0;border:none;border-radius:0;transition:background-color .15s,color .15s}.action-buttons-group .action-btn:hover:not(:disabled){background:var(--bg-elevated-hover);transform:none}.action-buttons-group .action-btn:active:not(:disabled){transform:none}.action-buttons-group .action-btn.active{background:var(--bg-mid);color:var(--accent-primary);box-shadow:inset 0 -2px 0 var(--accent-primary)}.action-buttons-group .action-btn.resign-btn{padding:0}.action-group-divider{background:var(--border-strong);flex-shrink:0;width:1px;margin:8px 4px}.action-group{align-items:center;gap:6px;display:flex}.action-group-reset-lock{gap:0}.action-group-reset-lock .action-btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.action-group-reset-lock .action-btn:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.action-group-support-threat{gap:0}.action-group-support-threat .action-btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.action-group-support-threat .action-btn:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.material-score-wrap{align-items:center;display:flex;position:relative}.material-score{font-variant-numeric:tabular-nums;text-align:center;cursor:default;min-width:4em;font-size:18px;font-weight:700}.material-score.positive{color:var(--success-light)}.material-score.negative{color:var(--danger-short)}.material-score.zero{color:var(--text-muted)}.material-score-popup{z-index:20;background:var(--bg-popup);border:1px solid var(--btn-border);font-variant-numeric:tabular-nums;border-radius:8px;min-width:200px;padding:10px 12px;font-size:12px;position:absolute;top:100%;left:50%;transform:translate(-50%)translateY(6px);box-shadow:0 4px 12px #0006}.material-captured-section{margin-bottom:8px}.material-captured-section:last-child{margin-bottom:0}.material-captured-label{color:var(--text);margin-bottom:4px;font-weight:700}.material-captured-list{color:var(--text-muted)}.material-captured-total{color:var(--text);font-weight:700}.action-btn{border:2px solid var(--btn-border);background:var(--btn-bg);width:40px;height:40px;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;font-size:18px;transition:background .15s ease-out,transform .15s ease-out;display:flex}.action-btn:hover{background:var(--bg-elevated-hover);transform:translateY(-1px)}.action-btn:active{transform:translateY(0)}.action-btn:disabled{opacity:.35;cursor:default;transform:none}.action-btn.preview-btn{border-style:dashed}.action-btn.active{color:var(--danger-very-light);background:#dc26264d;border-color:#dc262699}.rotate-btn-icon{width:88px;height:44px;padding:0 var(--space-2);gap:var(--space-1);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--accent-secondary,var(--accent-primary));cursor:pointer;justify-content:center;align-items:center;transition:background .15s,border-color .15s,box-shadow .2s,transform .15s;display:inline-flex;position:relative}.rotate-label-text{letter-spacing:.05em;color:var(--accent-secondary,var(--accent-primary));font-variant-numeric:tabular-nums;pointer-events:none;font-size:12px;font-weight:700}.rotate-btn-icon:hover:not(:disabled){box-shadow:var(--glow-accent);transform:translateY(-1px)}.rotate-btn-icon:active:not(:disabled) svg{transition:transform .2s cubic-bezier(.4,0,.2,1);transform:rotate(90deg)}.rotate-btn-icon:disabled{opacity:.4;cursor:not-allowed}.rotate-btn{border:2px solid var(--btn-border);background:var(--btn-bg);height:40px;color:var(--text);cursor:pointer;border-radius:8px;padding:0 18px;font-size:14px;font-weight:600;transition:background .15s ease-out,transform .15s ease-out}.rotate-btn:hover{background:var(--bg-elevated-hover);transform:translateY(-1px)}.rotate-btn:active{transform:translateY(0)}.rotate-btn:disabled{opacity:.35;cursor:default;transform:none}.position-label-wrap{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;width:100%;display:flex}.position-label{color:var(--text-muted);letter-spacing:2px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1em}.position-label-wrap .position-label{font-size:16px}.position-edit-btn{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--text-secondary);cursor:pointer;border-radius:4px;padding:2px 6px;font-size:11px}.position-edit-btn:hover{color:var(--text)}.position-replay-btn{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--text-secondary);cursor:pointer;border-radius:4px;padding:2px 8px;font-size:11px}.position-replay-btn:hover{color:var(--text)}.help-dialog.replay-dialog{width:90vw;max-width:720px}.replay-textarea{box-sizing:border-box;border:1px solid var(--btn-border);width:100%;min-height:280px;color:var(--text);resize:vertical;background:#00000040;border-radius:8px;padding:12px 14px;font-family:ui-monospace,monospace;font-size:12px;line-height:1.45}.replay-error{color:var(--danger-pale);margin-top:8px;font-size:12px}.replay-actions{gap:8px;margin-top:12px;display:flex}.position-input-wrap{align-items:center;gap:6px;display:inline-flex}.position-input{letter-spacing:1px;border:1px solid var(--btn-border);background:var(--bg);width:100px;color:var(--text);border-radius:6px;padding:4px 8px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px}.position-input-error{color:var(--danger);font-size:11px}.move-log-details{border:1px solid var(--btn-border);background:var(--btn-bg);border-radius:8px;width:100%;overflow:hidden}.move-log-details summary{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;padding:8px 14px;font-size:13px;font-weight:600;list-style:none}.move-log-details summary::-webkit-details-marker{display:none}.move-log-details summary:before{content:"▶";margin-right:8px;font-size:10px;transition:transform .2s;display:inline-block}.move-log-details[open] summary:before{transform:rotate(90deg)}.move-log-content{padding:0 14px 10px}.move-log-text{max-height:200px;color:var(--text);white-space:pre-wrap;word-break:break-all;background:#00000040;border-radius:4px;margin:0;padding:8px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;overflow-y:auto}.copy-btn{border:1px solid var(--btn-border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;margin-top:6px;padding:4px 12px;font-size:12px;transition:color .15s}.copy-btn:hover{color:var(--text)}.memory-details{border:1px solid var(--btn-border);background:var(--btn-bg);border-radius:8px;width:100%;overflow:hidden}.memory-details summary{color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;padding:8px 14px;font-size:13px;font-weight:600;list-style:none}.memory-details summary::-webkit-details-marker{display:none}.memory-details summary:before{content:"▶";margin-right:8px;font-size:10px;transition:transform .2s;display:inline-block}.memory-details[open] summary:before{transform:rotate(90deg)}.memory-content{padding:0 14px 14px}.memory-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.memory-sort-select{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--text);border-radius:4px;padding:4px 8px;font-size:12px}.memory-sort-dir{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--text-muted);cursor:pointer;border-radius:4px;padding:4px 8px;font-size:12px}.memory-filter-input{border:1px solid var(--btn-border);min-width:100px;color:var(--text);background:#00000040;border-radius:4px;flex:1;padding:4px 8px;font-size:12px}.memory-filter-clear,.memory-refresh-btn{border:1px solid var(--btn-border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;padding:4px 10px;font-size:12px}.memory-filter-clear:hover,.memory-refresh-btn:hover{color:var(--text)}.memory-list{flex-direction:column;gap:8px;max-height:60vh;display:flex;overflow-y:auto}.memory-game-row{cursor:default}.memory-empty{text-align:center;color:var(--text-muted);padding:24px;font-size:13px}.memory-game-card{border:1px solid var(--btn-border);background:#0003;border-radius:6px;overflow:hidden}.memory-game-card summary{cursor:pointer;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex}.memory-game-summary-left{flex-wrap:wrap;flex:0 auto;align-items:center;gap:8px;min-width:0;display:flex}.memory-game-sparkline-inline{flex:1 0;min-width:60px;max-width:180px;height:20px;margin-left:auto}.memory-game-sparkline-inline svg{width:100%;height:100%;display:block}.memory-game-card summary::-webkit-details-marker{display:none}.memory-game-card summary:before{content:"▶";margin-right:6px;font-size:9px;transition:transform .2s;display:inline-block}.memory-game-card[open] summary:before{transform:rotate(90deg)}.memory-game-date{color:var(--text-muted)}.memory-game-result{border-radius:4px;padding:2px 6px;font-weight:600}.memory-game-result-win{color:var(--success-light);background:#7dd87d26}.memory-game-result-loss{color:var(--danger-short);background:#ee888826}.memory-game-result-draw{color:var(--text-muted)}.memory-game-result-incomplete{color:var(--accent-gold-light);background:#f2d37a26}.memory-game-config{font-family:ui-monospace,monospace}.memory-game-moves{color:var(--text-muted)}.memory-game-content{padding:0 12px 12px}.memory-game-expanded-grid{grid-template-columns:auto 1fr;align-items:start;gap:16px;display:grid}.memory-game-stats-column{flex-direction:column;gap:8px;min-width:0;display:flex}.memory-game-summary{color:var(--text-muted);font-size:12px}.memory-game-piece-histogram{color:var(--text-muted);margin-top:6px;font-size:11px}.memory-piece-hist-row{gap:6px;margin-top:2px;display:flex}.memory-piece-hist-row:first-child{margin-top:0}.memory-piece-hist-label{flex-shrink:0;min-width:42px;font-weight:600}.memory-piece-hist-bars{white-space:nowrap}.memory-game-moves-ab{margin-top:4px;font-size:11px}.memory-heatmap-wrap{flex-shrink:0}.memory-sparkline-wrap{flex:1;min-width:0}.memory-heatmap-label,.memory-sparkline-label{color:var(--text-muted);margin-bottom:4px;font-size:11px}.memory-heatmaps-row{align-items:flex-start;gap:8px;display:flex}.memory-heatmap-block{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.memory-heatmap-sublabel{color:var(--text-muted);font-size:10px;font-weight:600}.memory-heatmap{aspect-ratio:1;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);width:100%;max-width:160px;display:grid}.memory-heatmap-cell{aspect-ratio:1;justify-content:center;align-items:center;width:100%;display:flex;position:relative}.memory-heatmap-letter{color:#fffffff2;text-shadow:0 0 1px #000c,0 1px 2px #0009;pointer-events:none;font-size:9px;font-weight:700}.memory-heatmap-cell.light{background:rgba(100, 140, 220, calc(.15 + .5 * var(--heat,0)))}.memory-heatmap-cell.dark{background:rgba(60, 100, 180, calc(.2 + .5 * var(--heat,0)))}.memory-heatmap-cell-b.light{background:rgba(200, 140, 60, calc(.2 + .5 * var(--heat,0)))}.memory-heatmap-cell-b.dark{background:rgba(180, 120, 40, calc(.25 + .5 * var(--heat,0)))}.memory-sparkline{width:100%;height:40px;min-height:32px}.memory-moves-details{border-top:1px solid var(--btn-border);margin-top:8px;padding-top:8px}.memory-moves-details summary{cursor:pointer;padding:4px 0;font-size:12px}.memory-moves-details summary::-webkit-details-marker{display:none}.memory-moves-details summary:before{content:"▶";margin-right:6px;font-size:9px;transition:transform .2s;display:inline-block}.memory-moves-details[open] summary:before{transform:rotate(90deg)}.memory-moves-content{margin-top:6px}.memory-moves-text{max-height:150px;color:var(--text);white-space:pre-wrap;word-break:break-all;background:#00000040;border-radius:4px;margin:0;padding:8px;font-family:ui-monospace,monospace;font-size:11px;line-height:1.5;overflow-y:auto}.help-backdrop{z-index:100;background:#000000b3;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.help-dialog{background:var(--bg-card);border:1px solid var(--btn-border);width:100%;max-width:480px;max-height:80vh;color:var(--text);border-radius:12px;padding:24px;overflow-y:auto}.help-dialog h2{margin-bottom:12px;font-size:22px}.help-dialog p{margin-bottom:10px;font-size:14px;line-height:1.6}.help-dialog a{color:var(--accent-gold)}.help-dialog ul{margin:0 0 12px;padding-left:20px;font-size:14px;line-height:1.7}.help-close-btn{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--text);cursor:pointer;border-radius:6px;margin-top:8px;padding:8px 20px;font-size:14px;font-weight:600;transition:background .15s}.help-close-btn:hover{background:var(--bg-elevated-hover)}.help-dialog-actions{gap:var(--space-3);align-items:center;display:flex}.help-tour-btn{border:1px solid var(--accent-primary);color:var(--accent-primary);cursor:pointer;background:0 0;border-radius:6px;margin-top:8px;padding:8px 20px;font-size:14px;font-weight:600;transition:background .15s}.help-tour-btn:hover{background:var(--bg-elevated-hover)}.twitch-panel{background:var(--bg-panel);border:1px solid var(--btn-border);border-radius:var(--radius-md);width:300px;box-shadow:var(--shadow-elevated,0 12px 40px #00000080);z-index:900;flex-direction:column;display:flex;position:fixed;top:64px;bottom:12px;right:12px;overflow:hidden}.twitch-panel.is-docked-right{border-top:none;border-bottom:none;border-right:none;border-radius:0;width:340px;inset:0 0 0 auto}.twitch-header-actions{gap:2px;display:inline-flex}.twitch-panel-header{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--btn-border);background:var(--bg-panel-deep);justify-content:space-between;align-items:center;display:flex}.twitch-panel-title{color:#a970ff;align-items:center;gap:8px;font-size:14px;font-weight:700;display:inline-flex}.twitch-channel-name{color:var(--text-secondary);font-size:13px;font-weight:500}.twitch-close-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;display:inline-flex}.twitch-close-btn:hover{color:var(--text)}.twitch-connect-row{gap:var(--space-2);padding:var(--space-3);display:flex}.twitch-channel-input{border:1px solid var(--btn-border);background:var(--bg-card);min-width:0;color:var(--text);border-radius:6px;flex:1;padding:8px 10px;font-size:14px}.twitch-connect-btn{color:#fff;cursor:pointer;background:#a970ff;border:none;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:700}.twitch-connect-btn:disabled{opacity:.5;cursor:default}.twitch-status{padding:var(--space-2) var(--space-3);color:var(--text-muted);font-size:13px}.twitch-status-error{color:var(--danger-pale)}.twitch-predict-bar{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--btn-border);flex-direction:column;gap:4px;display:flex}.twitch-predict-hint{color:var(--text-muted);font-size:11px}.twitch-predict-counts{gap:var(--space-2);display:flex}.predict-chip{font-variant-numeric:tabular-nums;border-radius:var(--radius-full,999px);border:1px solid var(--btn-border);background:var(--bg-card);color:var(--text);padding:2px 10px;font-size:13px}.twitch-winners{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--btn-border);background:#d4a84314;font-size:13px;line-height:1.6}.twitch-winners-title{color:var(--accent-primary);margin-right:6px;font-weight:700}.twitch-winner-nick{margin-right:8px;font-weight:700}.twitch-winners-more,.twitch-winners-none{color:var(--text-muted)}.twitch-feed{padding:var(--space-2) var(--space-3);flex-direction:column;flex:1;gap:6px;display:flex;overflow-y:auto}.twitch-feed-empty{color:var(--text-muted);text-align:center;margin-top:var(--space-4);font-size:13px}.twitch-msg{word-break:break-word;font-size:13px;line-height:1.45}.twitch-msg-nick{color:var(--accent-info);margin-right:6px;font-weight:700}.twitch-msg-nick:after{content:":";color:var(--text-muted)}.twitch-msg-text{color:var(--text)}.twitch-emote{vertical-align:middle;height:24px;margin:-4px 1px}.twitch-drag-handle{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.twitch-drag-handle:active{cursor:grabbing}.twitch-mode-row{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--btn-border);gap:6px;display:flex}.twitch-mode-pill{border:1px solid var(--btn-border);background:var(--bg-card);color:var(--text-muted);border-radius:var(--radius-full,999px);cursor:pointer;flex:1;padding:5px 0;font-size:12px;font-weight:600}.twitch-mode-pill.is-active{color:#fff;background:#a970ff;border-color:#a970ff}.twitch-round{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--btn-border);background:#a970ff12}.twitch-round-title{color:var(--text);margin-bottom:6px;font-size:12px;font-weight:700}.twitch-round-option{border-radius:6px;align-items:center;gap:8px;padding:3px 6px;font-size:13px;display:flex}.twitch-round-option.is-winner{box-shadow:inset 0 0 0 1px var(--accent-primary);background:#d4a8432e}.twitch-round-cmd{color:#a970ff;min-width:22px;font-weight:700}.twitch-round-san{font-family:var(--font-mono,ui-monospace, monospace);color:var(--text);flex:1}.twitch-round-count{font-variant-numeric:tabular-nums;color:var(--text-secondary)}.twitch-leaderboard{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--btn-border);background:#d4a84314}.twitch-leaderboard-title{color:var(--accent-primary);margin-bottom:4px;font-size:13px;font-weight:700}.twitch-leaderboard-row{align-items:center;gap:8px;font-size:13px;line-height:1.6;display:flex}.twitch-lb-rank{color:var(--text-muted);min-width:20px}.twitch-lb-points{font-variant-numeric:tabular-nums;color:var(--text);margin-left:auto;font-weight:700}@media (width<=720px){.twitch-panel{width:auto;height:42vh;top:auto;left:12px;right:12px}}.perimeter-eq{inset:calc(-1 * var(--eq-reach,44px));pointer-events:none;z-index:0;--eq-reach:76px;--eq-base:3px;position:absolute}.eq-side{filter:drop-shadow(0 0 4px #96a0af38);gap:2px;display:flex;position:absolute}.eq-top,.eq-bottom{-webkit-mask-image:linear-gradient(90deg,#0000,#000 16% 84%,#0000);mask-image:linear-gradient(90deg,#0000,#000 16% 84%,#0000)}.eq-left,.eq-right{-webkit-mask-image:linear-gradient(#0000,#000 16% 84%,#0000);mask-image:linear-gradient(#0000,#000 16% 84%,#0000)}.eq-top,.eq-bottom{left:var(--eq-reach);right:var(--eq-reach);height:var(--eq-reach)}.eq-top{align-items:flex-end;top:0}.eq-bottom{align-items:flex-start;bottom:0}.eq-left,.eq-right{top:var(--eq-reach);bottom:var(--eq-reach);width:var(--eq-reach);flex-direction:column}.eq-left{align-items:flex-end;left:0}.eq-right{align-items:flex-start;right:0}.eq-top .eq-bar,.eq-bottom .eq-bar{flex:1 1 0;min-width:0}.eq-left .eq-bar,.eq-right .eq-bar{flex:1 1 0;min-height:0}.eq-bar{opacity:calc(.5 + var(--amplitude,0) * .5);border-radius:1px;display:block}.perimeter-eq{--eq-c0:#d2dbe9b8;--eq-c1:#bec9da57;--eq-c2:#bec9da00}.eq-top .eq-bar{background:linear-gradient(to top, var(--eq-c0) 0%, var(--eq-c1) 55%, var(--eq-c2) 100%)}.eq-bottom .eq-bar{background:linear-gradient(to bottom, var(--eq-c0) 0%, var(--eq-c1) 55%, var(--eq-c2) 100%)}.eq-left .eq-bar{background:linear-gradient(to left, var(--eq-c0) 0%, var(--eq-c1) 55%, var(--eq-c2) 100%)}.eq-right .eq-bar{background:linear-gradient(to right, var(--eq-c0) 0%, var(--eq-c1) 55%, var(--eq-c2) 100%)}.eq-bar{will-change:transform}.eq-top .eq-bar,.eq-bottom .eq-bar{height:var(--eq-reach);transform:scaleY(calc(.03 + var(--amplitude,0) * .97))}.eq-top .eq-bar{transform-origin:bottom}.eq-bottom .eq-bar{transform-origin:top}.eq-left .eq-bar,.eq-right .eq-bar{width:var(--eq-reach);transform:scaleX(calc(.03 + var(--amplitude,0) * .97))}.eq-left .eq-bar{transform-origin:100%}.eq-right .eq-bar{transform-origin:0}.eq-bar.is-peak{--eq-c0:#e2e9f3b8;opacity:.92}.board-with-coords.has-viz{box-shadow:0 0 calc(10px + var(--bass-amplitude,0) * 44px) #96a0af33, 0 0 calc(var(--bass-amplitude,0) * 96px) #96a0af1f;border-radius:var(--radius-md,8px);transition:box-shadow 80ms ease-out}.board-with-coords>.board{z-index:1;background:var(--tile-dark);border-radius:var(--radius-md,8px)}@media (width<=900px){.perimeter-eq{--eq-reach:42px}}@media (width<=560px){.perimeter-eq{--eq-reach:14px;--eq-base:2px}}.board-with-coords.beat-tick{animation:.24s cubic-bezier(.2,.9,.3,1) beat-tick-pulse}@keyframes beat-tick-pulse{0%{filter:brightness();transform:scale(1)}26%{filter:brightness(1.2);transform:scale(1.04)}to{filter:brightness();transform:scale(1)}}@media (prefers-reduced-motion:reduce){.board-with-coords.beat-tick{animation:none}}.tile.beat-snap-to:after,.tile.beat-snap-from:after{content:"";pointer-events:none;z-index:3;border-radius:14%;position:absolute;inset:8%}.tile.beat-snap-to:after{border:2px solid color-mix(in srgb, var(--accent-primary) 55%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent-primary) 30%, transparent) inset, 0 0 10px color-mix(in srgb, var(--accent-primary) 45%, transparent);background:conic-gradient(color-mix(in srgb, var(--accent-primary) 38%, transparent) var(--snap-fill,0%), transparent 0);animation:snap-fill var(--snap-ms,.3s) linear forwards}.tile.beat-snap-from:after{border:2px dashed color-mix(in srgb, var(--accent-primary) 45%, transparent);animation:snap-origin var(--snap-ms,.3s) ease-out forwards}@property --snap-fill{syntax:"<percentage>";inherits:false;initial-value:0%}@keyframes snap-fill{0%{--snap-fill:0%;opacity:.85;transform:scale(.9)}85%{--snap-fill:100%;opacity:1;transform:scale(1)}to{--snap-fill:100%;opacity:0;box-shadow:0 0 18px var(--accent-primary);transform:scale(1.12)}}@keyframes snap-origin{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(.85)}}@media (prefers-reduced-motion:reduce){.tile.beat-snap-to:after,.tile.beat-snap-from:after{animation:none}}.music-dock{background:linear-gradient(180deg, color-mix(in srgb, var(--bg-elevated) 60%, var(--bg-panel)) 0%, var(--bg-panel) 90px), var(--bg-panel);border:1px solid color-mix(in srgb, var(--accent-primary) 14%, var(--btn-border));border-radius:var(--radius-lg,14px);z-index:890;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);scrollbar-width:thin;flex-direction:column;width:330px;max-height:calc(100vh - 24px);display:flex;position:fixed;bottom:12px;left:12px;overflow:hidden auto;box-shadow:inset 0 1px #ffffff0a,0 18px 50px #0000008c}.music-dock::-webkit-scrollbar{width:8px}.music-dock::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--accent-primary) 30%, transparent);border-radius:999px}.music-dock-header{padding:10px var(--space-3);border-bottom:1px solid color-mix(in srgb, var(--accent-primary) 10%, var(--btn-border));background:linear-gradient(#1db95414,#0000);justify-content:space-between;align-items:center;display:flex}.music-dock-title{letter-spacing:.01em;color:#1db954;align-items:center;gap:8px;font-size:14px;font-weight:700;display:inline-flex}.music-dock-row{gap:var(--space-2);padding:var(--space-2) var(--space-3);display:flex}.music-dock-input{border:1px solid var(--btn-border);background:var(--bg-card);min-width:0;color:var(--text);border-radius:6px;flex:1;padding:8px 10px;font-size:13px}.music-dock-load-btn{color:#fff;cursor:pointer;background:#1db954;border:none;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:700}.music-dock-load-btn:disabled{opacity:.5;cursor:default}.music-dock-embed{border:0;width:100%;display:block}.music-dock-beat{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-top:1px solid var(--btn-border);display:flex}.music-dock-tap-btn{border:2px solid var(--accent-primary);color:var(--accent-primary);border-radius:var(--radius-full,999px);cursor:pointer;background:0 0;padding:8px 18px;font-size:14px;font-weight:800}.music-dock-tap-btn:active{background:var(--accent-primary);color:var(--text-on-bright-gold)}.music-dock-bpm{color:var(--text-secondary);font-variant-numeric:tabular-nums;flex:1;font-size:12px}.music-dock-beat-btn{border:1px solid var(--btn-border);background:var(--bg-card);color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:600;transition:border-color .15s,background .15s,color .15s,box-shadow .15s;display:inline-flex}.music-dock-beat-btn:hover:not(:disabled){border-color:color-mix(in srgb, #1db954 60%, var(--btn-border));background:var(--bg-elevated)}.music-dock-beat-btn.is-active{color:#fff;background:#1db95438;border-color:#1db954;box-shadow:0 0 10px #1db9544d}.music-dock-beat-btn:disabled{opacity:.45;cursor:default}.music-dock-hint{color:var(--text-muted);font-size:11px}.music-dock-eq-sens{padding:0 var(--space-3);flex-direction:column;gap:6px;margin-top:8px;display:flex}.music-dock-eq-sens-label{color:var(--text-muted);align-items:center;gap:8px;font-size:13px;display:flex}.music-dock-eq-sens-val{font-variant-numeric:tabular-nums;color:var(--accent-primary);margin-left:auto;font-weight:600}.music-dock-eq-sens-range{cursor:pointer;width:100%;height:4px;accent-color:var(--accent-primary)}.music-dock-grid-btn{border-radius:var(--radius-sm,6px);border:1px solid var(--border-subtle,#ffffff1f);background:var(--bg-elevated,#ffffff0a);color:var(--text-muted);cursor:pointer;align-items:center;gap:8px;margin-top:2px;padding:7px 10px;font-size:13px;transition:background .12s,color .12s,border-color .12s;display:flex}.music-dock-grid-btn:hover{color:var(--text-primary)}.music-dock-grid-btn.is-active{color:var(--accent-primary);border-color:color-mix(in srgb, var(--accent-primary) 55%, transparent);background:color-mix(in srgb, var(--accent-primary) 14%, transparent)}.music-dock-embed-host{width:100%}.music-dock-embed-host iframe{border:0;width:100%;display:block}.music-dock-hint-row{padding:0 var(--space-3) var(--space-2)}.music-dock-presets{padding:var(--space-2) var(--space-3);border-top:1px solid var(--btn-border);flex-wrap:wrap;gap:6px;display:flex}.music-dock-preset{border:1px solid var(--btn-border);background:var(--bg-card);color:var(--text-secondary);border-radius:var(--radius-full,999px);cursor:pointer;padding:4px 12px;font-size:12px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.music-dock-preset:hover{color:var(--text);border-color:#1db954}.music-dock-preset.is-active{color:#fff;background:#1db954;border-color:#1db954}.music-dock-playlists{border-top:1px solid var(--btn-border)}.music-dock-pl-toggle{width:100%;color:var(--text);padding:var(--space-2) var(--space-3);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.music-dock-pl-caret{color:var(--text-muted);margin-left:auto}.music-dock-pl-body{gap:var(--space-2);padding:0 var(--space-3) var(--space-3);flex-direction:column;max-height:320px;display:flex;overflow-y:auto}.music-dock-pl-card{border:1px solid var(--btn-border);border-radius:var(--radius-md);background:var(--bg-card);padding:6px 8px}.music-dock-pl-card.is-playing{border-color:#1db954;box-shadow:0 0 8px #1db95440}.music-dock-pl-head{align-items:center;gap:8px;display:flex}.music-dock-pl-play{color:#fff;cursor:pointer;background:#1db954;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex}.music-dock-pl-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.music-dock-pl-meta{color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.music-dock-pl-del{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px;display:inline-flex}.music-dock-pl-del:hover{color:var(--danger-pale)}.music-dock-pl-nowplaying{border-top:1px dashed var(--btn-border);align-items:center;gap:8px;margin-top:6px;padding-top:6px;display:flex}.music-dock-pl-track{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.music-dock-pl-next{border:1px solid var(--btn-border);background:var(--bg-elevated);color:var(--text);cursor:pointer;border-radius:6px;flex-shrink:0;margin-left:auto;padding:4px 8px;display:inline-flex}.music-dock-pl-builder{flex-direction:column;gap:6px;display:flex}.music-dock-pl-textarea{resize:vertical;border:1px solid var(--btn-border);background:var(--bg-card);width:100%;color:var(--text);box-sizing:border-box;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:12px}.music-dock-pl-analyze-btn{justify-content:center;align-items:center;gap:6px;display:inline-flex}.music-dock-pl-analyzing{color:var(--accent-primary);padding:var(--space-2) 0;font-variant-numeric:tabular-nums;font-size:13px}.music-dock-pl-name-btn{text-align:left;cursor:pointer;background:0 0;border:none;padding:0}.music-dock-pl-tracks{border-top:1px dashed var(--btn-border);flex-direction:column;gap:4px;margin:6px 0 0;padding:6px 0 0;list-style:none;display:flex}.music-dock-pl-trackrow{align-items:center;gap:8px;display:flex}.music-dock-pl-trackrow.is-current .music-dock-pl-tracktitle{color:#1db954;font-weight:600}.music-dock-pl-trackplay{border:1px solid var(--btn-border);background:var(--bg-elevated);width:22px;height:22px;color:var(--text-secondary);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;display:inline-flex}.music-dock-pl-trackplay:hover{color:#1db954;border-color:#1db954}.music-dock-pl-tracktitle{min-width:0;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;overflow:hidden}.music-dock-bpm-input{border:1px solid var(--btn-border);background:var(--bg-card);width:58px;color:var(--text);font-variant-numeric:tabular-nums;text-align:right;-moz-appearance:textfield;border-radius:5px;flex-shrink:0;padding:3px 6px;font-size:12px}.music-dock-bpm-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.music-dock-bpm-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.music-dock-bpm-input:placeholder-shown{border-color:var(--accent-warning,var(--accent-primary))}.music-dock-pl-builder-actions{gap:6px;display:flex}.music-dock-pl-builder-actions .music-dock-pl-analyze-btn{flex:1}.music-dock-pl-newbtn{justify-content:center;width:100%}.music-dock-pl-empty{padding:var(--space-2) 0}.music-dock-header-actions{gap:2px;display:inline-flex}.music-dock-livedot{background:#1db954;border-radius:50%;width:7px;height:7px;margin-left:4px;animation:1s ease-in-out infinite music-livedot-pulse;box-shadow:0 0 6px #1db954}@keyframes music-livedot-pulse{0%,to{opacity:.5}50%{opacity:1}}.music-dock.is-minimized{width:230px}.music-dock.is-docked-left{border-top:none;border-bottom:none;border-left:none;border-radius:0;width:340px;max-height:100vh;inset:0 auto 0 0}.twitch-close-btn.is-on{color:#1db954}.music-dock-mini{padding:var(--space-2) var(--space-3);align-items:center;gap:8px;display:flex}.music-dock-mini-status{min-width:0;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;overflow:hidden}.music-dock-syncline{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);display:flex}.music-dock-syncline .music-dock-bpm{flex:1}.music-dock-manual-toggle{text-align:left;width:100%;color:var(--text-muted);padding:4px var(--space-3) var(--space-2);cursor:pointer;background:0 0;border:none;font-size:12px;font-weight:600}.music-dock-manual-toggle:hover{color:var(--text)}.music-dock-manual{padding-bottom:var(--space-2)}.music-dock-file{padding:var(--space-2) var(--space-3) 0;display:block}.music-dock-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.music-dock-file-btn{border:1px dashed var(--btn-border);border-radius:var(--radius-md);background:var(--bg-card);width:100%;color:var(--text-secondary);cursor:pointer;box-sizing:border-box;justify-content:center;align-items:center;gap:6px;padding:8px 0;font-size:13px;font-weight:600;display:flex}.music-dock-file-btn:hover{border-color:var(--accent-primary);color:var(--text)}.music-dock-file-now{padding:6px var(--space-3) 0;align-items:center;gap:8px;display:flex}.music-dock-file-name{min-width:0;color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;overflow:hidden}.music-dock-file-status{color:var(--accent-primary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px}.music-dock-source-row{gap:var(--space-2);padding:var(--space-2) var(--space-3) 0;display:flex}.music-dock-source-row .music-dock-beat-btn{flex:1;justify-content:center}.music-dock-live{border-top:1px dashed var(--btn-border)}.music-dock-live-bpm{color:var(--text);font-variant-numeric:tabular-nums;flex:1;align-items:center;gap:8px;font-size:13px;font-weight:700;display:inline-flex}.music-dock-live-conf{border-radius:var(--radius-full,999px);padding:1px 7px;font-size:11px;font-weight:600}.music-dock-live-conf.conf-high{color:#1db954;background:#1db95433}.music-dock-live-conf.conf-mid{color:var(--accent-primary);background:#d4a8432e}.music-dock-live-conf.conf-low{background:var(--bg-elevated);color:var(--text-muted)}@media (width<=720px){.music-dock{width:auto;left:8px;right:8px}}.beat-combo{border-radius:var(--radius-full,999px);background:var(--bg-popup);border:2px solid var(--accent-primary);box-shadow:0 0 24px #d4a84359, var(--shadow-elevated,0 12px 40px #00000080);z-index:1100;pointer-events:none;letter-spacing:.06em;align-items:center;gap:10px;padding:8px 20px;font-weight:800;animation:.28s cubic-bezier(.2,1.4,.4,1) beat-combo-pop;display:flex;position:fixed;top:18%;left:50%;transform:translate(-50%)}@keyframes beat-combo-pop{0%{opacity:0;transform:translate(-50%)scale(.6)}to{opacity:1;transform:translate(-50%)scale(1)}}.beat-combo-label{color:var(--text);font-size:15px}.beat-combo-streak{color:var(--accent-primary);font-size:17px}.beat-combo-perfect .beat-combo-label{color:var(--accent-gold-bright)}.beat-combo-off{border-color:var(--btn-border);box-shadow:none;opacity:.75}.beat-combo-off .beat-combo-label{color:var(--text-muted)}.beat-tier-great{border-color:var(--accent-teal-bright);box-shadow:0 0 24px #14b8a666}.beat-tier-great .beat-combo-streak{color:var(--accent-teal-bright)}.beat-tier-awesome{border-color:#8b5cf6;box-shadow:0 0 28px #8b5cf680}.beat-tier-awesome .beat-combo-streak{color:#8b5cf6}.beat-tier-master{border-color:var(--accent-gold-bright);animation:.28s cubic-bezier(.2,1.4,.4,1) beat-combo-pop,1.2s ease-in-out .28s infinite combo-master-glow;box-shadow:0 0 16px #ffd70099,0 0 40px #ff8c0066}.beat-tier-master .beat-combo-streak{color:var(--accent-gold-bright)}@keyframes combo-master-glow{0%,to{box-shadow:0 0 16px #ffd70099,0 0 40px #ff8c0066}50%{box-shadow:0 0 24px #ffd700e6,0 0 56px #ff8c0099}}.beat-combo-achievement{color:var(--accent-gold-bright);font-size:14px}.view-loading{justify-content:center;align-items:center;min-height:60vh;display:flex}.music-style-dot{border-radius:50%;width:6px;height:6px;position:absolute;bottom:5px;right:5px}.music-style-dot[data-style=warm]{background:var(--accent-gold-bright)}.music-style-dot[data-style=dark]{background:#8b5cf6}.music-style-dot[data-style=adaptive]{background:var(--accent-teal-bright)}.game-clocks{justify-content:center;gap:var(--space-3);margin:var(--space-2) 0;display:flex}.clock-chip{border-radius:var(--radius-full,999px);border:1px solid var(--btn-border);background:var(--bg-card);color:var(--text-secondary);font-variant-numeric:tabular-nums;align-items:center;gap:6px;padding:4px 12px;font-size:13px;transition:color .2s,border-color .2s,box-shadow .2s;display:inline-flex}.clock-chip-dot{opacity:.5;background:currentColor;border-radius:50%;width:8px;height:8px}.clock-chip-white .clock-chip-dot{background:var(--piece-white-flat);opacity:.9}.clock-chip-black .clock-chip-dot{background:var(--piece-black-flat);opacity:.9;box-shadow:0 0 0 1px var(--text-muted)}.clock-chip.is-running{color:var(--text);border-color:var(--accent-primary);box-shadow:0 0 8px #d4a84340}.clock-chip.is-low{color:var(--danger-pale);border-color:var(--accent-danger)}.clock-chip.is-low.is-running{animation:1s ease-in-out infinite afk-breathe;box-shadow:0 0 10px #dc262673}.friend-lobby-timecontrol{padding:var(--space-2) var(--space-3);margin:var(--space-2) 0;border:1px solid var(--btn-border);border-radius:var(--radius-md);cursor:pointer;background:var(--bg-card);flex-direction:column;gap:2px;display:flex}.friend-lobby-timecontrol.is-selected{border-color:var(--accent-primary);box-shadow:0 0 8px #d4a84333}.friend-lobby-timecontrol input{opacity:0;position:absolute}.tour-root{z-index:1200;position:fixed;inset:0}.tour-backdrop{background:#000000a6;position:absolute;inset:0}.tour-spotlight{border-radius:var(--radius-md);box-shadow:0 0 0 9999px #000000a6, 0 0 0 2px var(--accent-primary), 0 0 24px #d4a84366;pointer-events:none;transition:top .3s,left .3s,width .3s,height .3s;position:absolute}.tour-card{background:var(--bg-popup);border:1px solid var(--btn-border);border-radius:var(--radius-lg,12px);width:340px;max-width:calc(100vw - 24px);padding:var(--space-4);box-shadow:var(--shadow-elevated,0 12px 40px #00000080);animation:.25s ease-out tour-card-in;position:absolute}@keyframes tour-card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tour-card[style*="translate(-50%"]{animation:none}.tour-card-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.tour-card-icon{color:var(--accent-primary);display:inline-flex}.tour-card-title{color:var(--text);margin:0;font-size:16px}.tour-card-body{margin:0 0 var(--space-4);color:var(--text-secondary);font-size:14px;line-height:1.6}.tour-card-footer{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.tour-skip-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:6px 8px;font-size:13px}.tour-skip-btn:hover{color:var(--text)}.tour-dots{gap:6px;display:inline-flex}.tour-dot{background:var(--bg-elevated-hover);border-radius:50%;width:7px;height:7px}.tour-dot.is-active{background:var(--accent-primary)}.tour-nav{gap:var(--space-2);display:inline-flex}.tour-back-btn{border:1px solid var(--btn-border);color:var(--text);cursor:pointer;background:0 0;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:600}.tour-next-btn{background:var(--accent-primary);color:var(--text-on-bright-gold);cursor:pointer;border:none;border-radius:6px;padding:6px 16px;font-size:13px;font-weight:700}.tour-next-btn:hover{filter:brightness(1.1)}.promotion-backdrop{z-index:200;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.promotion-dialog{background:var(--bg-card);border:1px solid var(--btn-border);text-align:center;border-radius:12px;padding:16px 20px}.promotion-title{color:var(--text);margin-bottom:12px;font-size:14px;font-weight:600}.promotion-options{gap:8px;display:flex}.promotion-option{border:1px solid var(--btn-border);background:var(--btn-bg);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:56px;height:56px;font-size:32px;transition:background .15s,border-color .15s;display:flex}.promotion-option:hover{background:var(--bg-elevated-hover);border-color:var(--accent-gold)}.mode-toggle{vertical-align:middle;gap:4px;margin-left:16px;display:inline-flex}.mode-btn{background:var(--btn-bg);color:var(--text);border:1px solid var(--btn-border);cursor:pointer;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s}.mode-btn:hover{background:var(--bg-elevated-hover)}.mode-btn-active{background:var(--accent-gold);color:var(--bg-card);border-color:var(--accent-gold)}.roulette-panel{width:100%;max-width:var(--board-size);background:var(--bg-card);border:1px solid var(--btn-border);box-sizing:border-box;border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:0 auto;padding:10px 14px;display:flex}.roulette-display{align-items:center;gap:8px;min-height:44px;display:flex}.roulette-face{background:var(--tile-light);border:1px solid var(--btn-border);border-radius:6px;justify-content:center;align-items:center;width:48px;height:48px;display:inline-flex}.roulette-face .piece{pointer-events:none;font-size:36px;line-height:1}.roulette-face-rolling{background:var(--btn-bg);color:var(--accent-gold);font-size:28px;font-weight:700;animation:.4s infinite alternate roulette-roll}.roulette-face.slot-used{opacity:.35;filter:grayscale()}.roulette-actions{color:var(--text);opacity:.85;align-items:center;gap:6px;font-size:12px;display:inline-flex}.roulette-actions-label{letter-spacing:.5px;font-weight:600}.roulette-action-dot{border:1px solid var(--btn-border);border-radius:50%;width:12px;height:12px;display:inline-block}.roulette-action-dot.active{background:var(--accent-gold);border-color:var(--accent-gold);box-shadow:0 0 6px #c8b98a99}.roulette-action-dot.spent{opacity:.5;background:0 0}@keyframes roulette-roll{0%{transform:translateY(0)}to{transform:translateY(-4px)}}.roulette-label{color:var(--text);opacity:.75;font-size:13px}.roulette-spin-btn{background:var(--accent-gold);color:var(--bg-card);cursor:pointer;border:none;border-radius:6px;padding:8px 18px;font-size:13px;font-weight:600;transition:opacity .15s}.roulette-spin-btn:disabled{opacity:.4;cursor:not-allowed}.spin-roulette-btn-compact{height:40px;padding:0 var(--space-3);border-radius:var(--radius-md);background:linear-gradient(135deg, var(--accent-primary), var(--accent-danger));color:var(--piece-text-on-bright);letter-spacing:.02em;cursor:pointer;box-shadow:var(--glow-accent);align-items:center;gap:var(--space-1);border:none;flex-shrink:0;font-size:14px;font-weight:700;animation:1.8s ease-in-out infinite spin-pulse;display:inline-flex}.spin-roulette-btn-compact:hover:not(:disabled){filter:brightness(1.08)}.spin-roulette-btn-compact:active:not(:disabled){transform:translateY(1px)}.spin-roulette-btn-compact:disabled{opacity:.45;cursor:not-allowed;animation:none}@keyframes spin-pulse{0%,to{box-shadow:var(--glow-accent);transform:scale(1)}50%{box-shadow:var(--glow-accent), 0 0 18px rgba(var(--sacrifice-color,168, 85, 247), 0);transform:scale(1.04)}}.game-review{width:min(1100px,100% - 32px);color:var(--text);flex-direction:column;gap:16px;margin:0 auto;padding:24px 16px;display:flex}.game-review-header{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;display:grid}.game-review-header h2{text-align:center;margin:0;font-size:24px}.beta-tag-inline{margin-left:var(--space-2);background:linear-gradient(135deg, var(--danger-coral-light), var(--danger-coral));color:var(--text-white);border-radius:var(--radius-sm);letter-spacing:.05em;vertical-align:middle;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.game-review-back{background:var(--btn-bg);color:var(--text);border:1px solid var(--btn-border);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:14px}.game-review-back:hover{background:var(--bg-elevated-hover)}.game-review-share{color:var(--accent-gold);border:1px solid var(--accent-gold);cursor:pointer;letter-spacing:.2px;white-space:nowrap;background:0 0;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600}.game-review-share:hover{background:#ffc85014}.game-review-header-spacer{width:88px}.game-review-loading{color:var(--text-muted);align-items:center;gap:12px;padding:24px;display:flex}.spinner{border:2px solid #fff3;border-top-color:var(--accent-gold);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.game-review-stats{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.review-stat{text-align:center;background:#00000040;border:1px solid #ffffff0f;border-radius:6px;padding:10px 6px}.review-stat-value{color:var(--text);font-size:20px;font-weight:600}.review-stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:2px;font-size:11px}.review-stat-brilliant .review-stat-value{color:var(--accent-amber-bright)}.review-stat-best .review-stat-value{color:var(--success-light)}.review-stat-mistake .review-stat-value{color:var(--accent-amber-warm)}.review-stat-blunder .review-stat-value{color:var(--danger-bright)}.game-review-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.review-row{border-left:3px solid #0000;border-radius:4px;grid-template-columns:56px minmax(80px,auto) 24px minmax(0,1fr) auto;align-items:baseline;gap:4px 8px;padding:6px 10px;font-size:14px;display:grid}.review-num{color:var(--text-muted);font-variant-numeric:tabular-nums}.review-san{font-family:ui-monospace,monospace}.review-marker{text-align:center;font-weight:700}.review-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.review-cpl{color:var(--text-muted);font-variant-numeric:tabular-nums;justify-self:end;font-size:12px}.review-better{color:var(--accent-amber-bright);white-space:normal;word-break:break-word;grid-column:1/-1;padding-left:64px;font-size:12px;font-style:italic;line-height:1.4}.review-row-blunder{border-left-color:var(--danger-bright);background:#ee50501a}.review-row-blunder .review-marker,.review-row-blunder .review-label{color:var(--danger-bright)}.review-row-mistake{border-left-color:var(--accent-amber-warm);background:#f2a23a14}.review-row-mistake .review-marker,.review-row-mistake .review-label{color:var(--accent-amber-warm)}.review-row-brilliant{border-left-color:var(--accent-amber-bright);background:#ffc8571f}.review-row-brilliant .review-marker,.review-row-brilliant .review-label{color:var(--accent-amber-bright)}.review-row-best{border-left-color:var(--success-light);background:#7dd87d14}.review-row-best .review-marker,.review-row-best .review-label{color:var(--success-light)}.review-row-checkmate{border-left-color:var(--text-white);background:#ffffff14}.game-review-meta-line{color:var(--text-muted);text-align:center;margin:-4px 0 0;font-size:13px}.game-review-layout{grid-template-columns:minmax(0,1fr) minmax(280px,380px);align-items:start;gap:24px;display:grid}@media (width<=880px){.game-review-layout{grid-template-columns:1fr}}.game-review-board-pane{flex-direction:column;align-items:center;gap:10px;display:flex}.review-board-grid{aspect-ratio:1;border:1px solid var(--btn-border);background:var(--bg-card);border-radius:6px;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);width:100%;max-width:360px;display:grid;overflow:hidden}.review-board-cell{justify-content:center;align-items:center;font-size:24px;display:flex;position:relative}.review-board-cell.light{background:var(--tile-light-alt)}.review-board-cell.dark{background:var(--tile-dark-alt)}.review-board-cell.last-from{box-shadow:inset 0 0 0 3px #ffdc7873}.review-board-cell.last-to{box-shadow:inset 0 0 0 3px #ffdc78b3}.review-board-piece{-webkit-user-select:none;user-select:none;pointer-events:none;line-height:1}.review-board-piece-white{color:var(--text-white);text-shadow:0 1px #0006,0 0 2px #0009}.review-board-piece-black{color:var(--text-on-light);text-shadow:0 1px #fff3}.game-review-controls{align-items:center;gap:6px;display:inline-flex}.game-review-nav{width:32px;height:32px;color:var(--text);border:1px solid var(--btn-border);cursor:pointer;background:0 0;border-radius:6px;font-size:16px;font-weight:700}.game-review-nav:hover:not(:disabled){background:#ffffff0d}.game-review-nav:disabled{opacity:.4;cursor:not-allowed}.game-review-pos{text-align:center;min-width:60px;color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:13px}.game-review-side{flex-direction:column;gap:14px;min-width:0;display:flex}.game-review-side .game-review-list{max-height:480px;overflow-y:auto}.review-row{cursor:pointer}.review-row.is-current{border-left-color:var(--accent-gold);background:#ffc8502e}.summary-share-row{justify-content:center;align-items:center;gap:10px;margin:10px 0 4px;display:flex}.summary-share-btn{color:var(--accent-gold);border:1px solid var(--accent-gold);cursor:pointer;letter-spacing:.2px;background:0 0;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600}.summary-share-btn:hover{background:#ffc85014}.summary-share-feedback{color:var(--accent-gold);font-size:12px;font-weight:600}.review-trigger-btn{background:var(--btn-bg);color:var(--accent-gold);border:1px solid var(--btn-border);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:13px}.review-trigger-btn:hover{background:var(--bg-elevated-hover)}.board-with-eval{width:var(--board-size);justify-content:center;display:flex;position:relative}.eval-bar{background:var(--bg-deeper);border:1px solid #ffffff14;border-radius:4px;width:12px;position:absolute;top:0;bottom:0;left:-20px;overflow:visible}.eval-bar-white{background:var(--tile-promo-light);border-radius:3px;transition:height .4s,opacity .2s;position:absolute;bottom:0;left:0;right:0}.eval-bar.is-pending .eval-bar-white{opacity:.7}@keyframes eval-mate-pulse{0%,to{box-shadow:0 0 8px #ffc85066}50%{box-shadow:0 0 14px #ffc850cc}}.eval-bar.is-mate{animation:1.2s ease-in-out infinite eval-mate-pulse}.eval-bar-text{font-variant-numeric:tabular-nums;letter-spacing:-.3px;pointer-events:none;white-space:nowrap;border-radius:var(--radius-full,999px);background:var(--bg-popup);color:var(--text);z-index:1;border:1px solid #ffffff1f;padding:1px 4px;font-size:9px;font-weight:700;position:absolute;left:50%;transform:translate(-50%)}.eval-bar-text-top{top:4px}.eval-bar-text-bottom{bottom:4px}.header-username{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:140px;margin-right:4px;font-size:13px;overflow:hidden}.header-username-btn{color:var(--text-muted);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:6px;max-width:160px;padding:4px 8px;font-size:13px;transition:background .15s,color .15s,border-color .15s;overflow:hidden}.header-username-btn:hover{background:var(--btn-bg);border-color:var(--btn-border);color:var(--text)}.modal-backdrop{z-index:300;background:#000000b3;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-dialog{background:var(--bg-card);border:1px solid var(--btn-border);width:100%;max-width:380px;color:var(--text);border-radius:12px;padding:22px 22px 18px;box-shadow:0 12px 40px #00000080}.modal-title{margin:0 0 4px;font-size:20px}.modal-subtitle{color:var(--text-muted);margin:0 0 16px;font-size:13px}.namepicker-tagline{color:var(--text);margin:4px 0 18px;font-size:14px;line-height:1.55}.namepicker-tagline strong{color:var(--accent-gold)}.modal-input{box-sizing:border-box;background:var(--bg-overlay-dark);border:1px solid var(--btn-border);width:100%;color:var(--text);border-radius:8px;outline:none;padding:10px 12px;font-size:16px;transition:border-color .15s}.modal-input:focus{border-color:var(--accent-gold)}.modal-input:disabled{opacity:.6}.modal-status{min-height:16px;margin-top:8px;font-size:12px}.modal-status-ok{color:var(--success-mint)}.modal-status-warn{color:var(--accent-amber-mid)}.modal-status-neutral{color:var(--text-secondary)}.modal-error{color:var(--danger-light);margin-top:8px;font-size:12px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.modal-btn{cursor:pointer;border:1px solid var(--btn-border);border-radius:6px;padding:8px 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,color .15s}.modal-btn:disabled{opacity:.5;cursor:not-allowed}.modal-btn-secondary{background:var(--btn-bg);color:var(--text)}.modal-btn-secondary:hover:not(:disabled){background:var(--bg-elevated-hover)}.modal-btn-primary{background:var(--accent-gold);color:var(--bg-card);border-color:var(--accent-gold)}.modal-btn-primary:hover:not(:disabled){filter:brightness(1.08)}.modal-btn-danger{background:var(--danger-dark);color:var(--text-white);border-color:var(--danger-dark)}.modal-btn-danger:hover:not(:disabled){background:var(--danger-mid);border-color:var(--danger-mid)}.resign-btn{color:var(--text-muted-warm)}.resign-btn:hover:not(:disabled){color:var(--danger-light)}.resign-btn:disabled{opacity:.4}.summary-dialog{max-width:420px}.summary-table{border-top:1px solid var(--btn-border);margin-top:6px;padding-top:10px}.summary-extras{border-top:1px solid var(--btn-border);margin-top:10px;padding-top:10px}.summary-row{color:var(--text);justify-content:space-between;align-items:center;padding:4px 0;font-size:14px;display:flex}.summary-num{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.summary-total{border-top:1px dashed var(--btn-border);margin-top:6px;padding-top:8px;font-size:16px;font-weight:700}.summary-total .summary-num{color:var(--accent-gold);font-size:16px}.summary-badge{background:var(--accent-gold);color:var(--bg-card);letter-spacing:.5px;border-radius:4px;margin-left:6px;padding:2px 6px;font-size:11px;font-weight:700;display:inline-block}.summary-uncounted{border:1px dashed var(--btn-border);background:var(--bg-overlay-dark);color:var(--text-muted);border-radius:8px;margin-top:10px;padding:12px;font-size:13px}.summary-uncounted strong{color:var(--text);margin-bottom:4px;display:block}.summary-uncounted p{margin:0}.header-leaderboard-btn{color:var(--text-muted);background:var(--btn-bg);border:1px solid var(--btn-border);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:13px;transition:background .15s,color .15s,border-color .15s}.header-leaderboard-btn:hover{background:var(--bg-elevated-hover);color:var(--text);border-color:var(--accent-gold)}.watch-banner{max-width:var(--board-size);background:var(--bg-panel-deep);border:1px solid var(--accent-gold);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:8px auto;padding:8px 14px;display:flex}.watch-banner-label{color:var(--text);font-size:13px}.watch-banner-label strong{color:var(--accent-gold)}.watch-banner-controls{flex-wrap:wrap;gap:6px;display:flex}.watch-btn{background:var(--btn-bg);color:var(--text);border:1px solid var(--btn-border);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s}.watch-btn:hover:not(:disabled){background:var(--bg-elevated-hover)}.watch-btn:disabled{opacity:.4;cursor:not-allowed}.watch-btn-active{background:var(--accent-gold);color:var(--bg-card);border-color:var(--accent-gold)}.watch-btn-stop{border-color:var(--danger-dark);color:var(--danger-light)}.watch-btn-stop:hover:not(:disabled){background:var(--bg-danger-tint)}.leaderboard{width:100%;max-width:1100px;padding:var(--space-4);color:var(--text);gap:var(--space-1);flex-direction:column;margin:0 auto;display:flex}.leaderboard-header{grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:12px;display:grid}.leaderboard-spacer{display:block}.leaderboard-back{background:var(--btn-bg);color:var(--text);border:1px solid var(--btn-border);cursor:pointer;border-radius:6px;justify-self:start;padding:6px 12px;font-size:13px}.leaderboard-back:hover{background:var(--bg-elevated-hover)}.leaderboard-title{text-align:center;justify-self:center;margin:0;font-size:22px}.leaderboard-row{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);grid-template-columns:48px 1fr 80px 96px 132px 56px;font-size:15px;display:grid}.leaderboard-row-head{color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--btn-border);border-radius:0;padding-bottom:6px;font-size:11px}.leaderboard-row.is-me{background:var(--bg-panel);border:1px solid var(--accent-gold);font-weight:600}.leaderboard-row:not(.leaderboard-row-head):hover{background:var(--bg-card-alt)}.lb-rank{font-variant-numeric:tabular-nums;color:var(--text-muted);font-weight:600}.is-me .lb-rank{color:var(--accent-gold)}.lb-name{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:var(--space-2);min-width:0;font-size:16px;font-weight:600;display:inline-flex;overflow:hidden}.lb-me-badge{color:var(--accent-gold);align-items:center;line-height:1;display:inline-flex}.lb-points{font-variant-numeric:tabular-nums;color:var(--accent-gold);text-align:right;font-weight:700}.lb-survived{font-variant-numeric:tabular-nums;color:var(--text-muted);text-align:right}.lb-outcome{font-size:12px}.lb-outcome-glyph{vertical-align:middle;align-items:center;margin-right:4px;display:inline-flex}.lb-outcome-win .lb-outcome-label{color:var(--success-mint)}.lb-outcome-draw .lb-outcome-label,.lb-outcome-loss .lb-outcome-label{color:var(--text-muted)}.lb-action{text-align:right}.leaderboard-replay-btn{border-radius:var(--radius-md);border:1px solid var(--btn-border);background:var(--btn-bg);width:44px;height:44px;color:var(--text);cursor:pointer;justify-content:center;align-items:center;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.leaderboard-replay-btn:hover:not(:disabled){background:var(--accent-gold);color:var(--bg-card);border-color:var(--accent-gold)}.leaderboard-replay-btn:disabled{opacity:.3;cursor:not-allowed}.leaderboard-empty{text-align:center;color:var(--text-muted);padding:32px 16px}.leaderboard-error{color:var(--danger-light)}.leaderboard-more{justify-content:center;margin-top:12px;display:flex}.header-feedback-btn{color:var(--text-muted);background:var(--btn-bg);border:1px solid var(--btn-border);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:13px;transition:background .15s,color .15s,border-color .15s}.header-feedback-btn:hover:not(:disabled){background:var(--bg-elevated-hover);color:var(--text);border-color:var(--accent-gold)}.header-feedback-btn:disabled{opacity:.4;cursor:not-allowed}.feedback-prompt{border-top:1px solid var(--btn-border);margin-top:16px;padding-top:14px}.feedback-title{color:var(--text);margin-bottom:10px;font-size:14px;font-weight:600}.feedback-modal-dialog{max-width:440px;max-height:90vh;overflow-y:auto}.feedback-field{margin-top:12px}.feedback-label{color:var(--text-muted);letter-spacing:.3px;text-transform:uppercase;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.feedback-smileys{gap:8px;display:flex}.feedback-smiley{background:var(--btn-bg);border:1px solid var(--btn-border);cursor:pointer;border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 4px;transition:background .15s,border-color .15s,transform .1s;display:flex}.feedback-smiley:hover:not(:disabled){background:var(--bg-elevated-hover);transform:translateY(-1px)}.feedback-smiley:disabled{opacity:.5;cursor:not-allowed}.feedback-smiley.is-selected{background:var(--bg-panel);border-color:var(--accent-gold)}.feedback-smiley-glyph{color:var(--text);justify-content:center;align-items:center;line-height:1;display:inline-flex}.feedback-smiley.is-selected .feedback-smiley-glyph{color:var(--accent-primary)}.feedback-smiley-label{color:var(--text-muted);font-size:11px}.feedback-smiley.is-selected .feedback-smiley-label{color:var(--accent-gold)}.feedback-comment-wrap{opacity:0;max-height:0;margin-top:0;transition:max-height .25s,opacity .2s,margin-top .2s;overflow:hidden}.feedback-comment-wrap.is-open{opacity:1;max-height:40vh;margin-top:10px}.feedback-textarea{box-sizing:border-box;background:var(--bg-overlay-dark);border:1px solid var(--btn-border);width:100%;color:var(--text);resize:vertical;border-radius:6px;outline:none;padding:8px 10px;font-family:inherit;font-size:14px;transition:border-color .15s}.feedback-textarea:focus{border-color:var(--accent-gold)}.feedback-textarea:disabled{opacity:.6}.feedback-actions{justify-content:flex-end;align-items:center;gap:14px;margin-top:12px;display:flex}.feedback-skip-link{color:var(--text-muted);opacity:.6;cursor:pointer;background:0 0;border:none;padding:4px 2px;font-size:13px;text-decoration:underline;transition:opacity .15s}.feedback-skip-link:hover:not(:disabled){opacity:1}.feedback-skip-link:disabled{opacity:.3;cursor:not-allowed}.summary-actions{justify-content:flex-end;gap:12px;margin-top:24px}.summary-action-btn{min-width:110px}.summary-row-quality>span:first-child{flex-wrap:wrap;align-items:baseline;gap:6px;display:inline-flex}.summary-quality-detail{opacity:.6;letter-spacing:.02em;font-size:11px;font-weight:400}.board-with-coords{width:var(--board-size);height:var(--board-size);margin:0 auto;position:relative}.board-with-coords>.board{position:absolute;inset:0}.board-coords-overlay{pointer-events:none;z-index:4;transition:opacity .2s;position:absolute;inset:0}.board-coord{letter-spacing:.04em;-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums;color:var(--text-muted,var(--tile-dark));opacity:.75;text-shadow:0 0 2px var(--bg-elevated), 0 0 3px var(--bg-elevated);font-size:10px;font-weight:700;line-height:1;transition:color .28s,opacity .2s;position:absolute}.board-coords-overlay[data-topology=B] .board-coord{color:var(--accent-primary);opacity:.95}.board-coords-overlay.previewing .board-coord{opacity:0}@keyframes roulette-match-pulse{0%,to{box-shadow:inset 0 0 0 2px #d4af37b3}50%{box-shadow:inset 0 0 0 3px #d4af37,0 0 16px #d4af378c}}.tile.is-roulette-match:before{animation:1.2s ease-in-out infinite roulette-match-pulse}.tile.is-roulette-match .piece{filter:drop-shadow(0 0 6px #d4af37d9)}@keyframes rotate-hint-pulse{0%,to{box-shadow:0 0 0 0 var(--accent-secondary,var(--accent-primary))}50%{box-shadow:0 0 0 6px transparent, 0 0 24px var(--accent-secondary,var(--accent-primary))}}.rotate-btn-icon.is-hint-pulsing{border-color:var(--accent-secondary,var(--accent-primary));animation:1.5s ease-in-out infinite rotate-hint-pulse}.rotate-hint-tooltip{background:var(--accent-secondary,var(--accent-primary));color:var(--bg-deep);border-radius:var(--radius-md);white-space:nowrap;align-items:center;gap:var(--space-2);box-shadow:var(--glow-accent);z-index:50;pointer-events:auto;padding:6px 12px;font-size:12px;font-weight:700;animation:1.5s ease-in-out infinite rotate-hint-bounce;display:inline-flex;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)}.rotate-hint-tooltip:after{content:"";border:6px solid #0000;border-top-color:var(--accent-secondary,var(--accent-primary));position:absolute;top:100%;left:50%;transform:translate(-50%)}.rotate-hint-dismiss{color:var(--bg-deep);cursor:pointer;padding:0 0 0 var(--space-1);background:0 0;border:none;font-size:18px;font-weight:700;line-height:1}@keyframes rotate-hint-bounce{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(-4px)}}@media (prefers-reduced-motion:reduce){.rotate-btn-icon.is-hint-pulsing,.rotate-hint-tooltip{animation:none}}.local-turn-banner{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-elevated);border:1px solid var(--accent-primary);border-radius:var(--radius-md);color:var(--text-primary);box-shadow:var(--glow-accent);max-width:var(--board-size);width:max-content;margin:0 auto;font-size:13px;font-weight:600;display:inline-flex}.local-turn-chip{border-radius:var(--radius-full);border:1px solid var(--btn-border);flex-shrink:0;width:14px;height:14px}.local-turn-chip-white{background:var(--piece-white)}.local-turn-chip-black{background:var(--piece-black)}.local-turn-color{color:var(--accent-primary);letter-spacing:.04em}.local-turn-suffix{color:var(--text-muted);font-weight:500}.local-actions{justify-content:center;align-items:center;gap:var(--space-2);margin:var(--space-2) auto;max-width:var(--board-size);width:max-content;transition:opacity .2s;display:inline-flex}.local-actions-top{transform-origin:50%;transform:rotate(180deg)}.local-actions[aria-hidden=true]{opacity:.45}.local-actions[aria-hidden=false]{opacity:1}@media (prefers-reduced-motion:reduce){.local-actions{transition:none}}.app-shell[data-opponent-mode=local][data-game-active="1"] .board-actions{display:none}.opp-tab.is-locked{opacity:.45;cursor:not-allowed}.opp-tab.is-locked:hover{box-shadow:none;transform:none}.board.is-rotated{animation:1.2s ease-in-out 2 rotation-pulse;box-shadow:0 0 0 2px #ffc8508c,0 0 24px #ffc8504d}@keyframes rotation-pulse{0%,to{box-shadow:0 0 0 2px #ffc8508c,0 0 24px #ffc8504d}50%{box-shadow:0 0 0 3px #ffc850d9,0 0 32px #ffc8508c}}.tile.last-older:before{opacity:.55}.milestone-dialog{text-align:center;max-width:420px}.milestone-celebration{color:var(--accent-primary);filter:drop-shadow(0 0 8px var(--accent-primary));justify-content:center;align-items:center;margin-bottom:6px;line-height:1;animation:3s ease-in-out infinite milestone-bounce;display:flex}.milestone-celebration svg{width:56px;height:56px}@keyframes milestone-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.milestone-title{color:var(--accent-gold);margin-bottom:12px}.milestone-message{color:var(--text);margin:0 0 10px;font-size:14px;line-height:1.55}.milestone-message-muted{color:var(--text-muted);font-size:13px}.milestone-score{color:var(--text);margin:14px 0 4px;font-size:14px}.milestone-score strong{color:var(--accent-gold)}.auto-shell-root{background:var(--bg-deep)}.auto-shell{flex-direction:column;align-items:center;gap:20px;min-height:100vh;padding:24px 16px;display:flex}.auto-panel{background:var(--bg-card);border:1px solid var(--btn-border);width:100%;max-width:480px;color:var(--text);border-radius:10px;padding:14px 18px}.auto-panel-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.auto-badge{align-items:center;gap:var(--space-1);letter-spacing:.5px;color:var(--accent-gold);font-size:13px;font-weight:700;display:inline-flex}.auto-stop-btn{color:var(--danger-light);border:1px solid var(--danger-dark);cursor:pointer;background:0 0;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600}.auto-stop-btn:hover{background:var(--bg-danger-tint)}.auto-panel-stats{grid-template-columns:1fr 1fr;gap:8px 18px;display:grid}.auto-stat{flex-direction:column;font-size:13px;display:flex}.auto-stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;font-size:11px}.auto-stat-value{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.auto-stat-cap{color:var(--text-muted);font-weight:400}.auto-stopped{border-top:1px solid var(--btn-border);text-align:center;color:var(--accent-gold);margin-top:12px;padding:10px;font-size:14px}.auto-board-wrap{justify-content:center;display:flex}.opponent-mode-switcher{background:#0000002e;border-radius:999px;gap:4px;padding:3px;display:inline-flex}.opponent-mode-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:4px;padding:5px 12px;font-size:12px;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.opponent-mode-btn:hover:not(:disabled){color:var(--text)}.opponent-mode-btn:disabled{opacity:.5;cursor:not-allowed}.opponent-mode-btn.is-active{background:var(--accent-gold);color:var(--piece-text-on-bright)}.beta-tag{background:linear-gradient(135deg, var(--danger-coral-light), var(--danger-coral));color:var(--text-white);letter-spacing:.5px;vertical-align:middle;border-radius:3px;margin-left:4px;padding:1px 5px;font-size:9px;font-weight:700;display:inline-block}.mp-banner{text-align:center;letter-spacing:.2px;border-radius:8px;justify-content:center;align-items:center;gap:8px;width:100%;padding:8px 14px;font-size:13px;font-weight:600;display:flex}.mp-banner-info{color:var(--accent-info);background:#50a0ff14;border:1px solid #50a0ff4d}.mp-banner-active{border:1px solid var(--accent-gold);color:var(--accent-gold);background:#ffc85014}.mp-banner-wait{border:1px solid var(--btn-border);color:var(--text-muted);background:#ffffff0a}.mp-banner-warn{color:var(--accent-peach);background:#ff8c3c1a;border:1px solid #ff8c3c66}.mp-banner-error{color:var(--danger-light);background:#e870701a;border:1px solid #e8707066}.mp-spinner{border:2px solid #fff3;border-top-color:var(--text);border-radius:50%;width:11px;height:11px;animation:.9s linear infinite friend-lobby-spin;display:inline-block}.mp-board{border:1px solid var(--btn-border);background:var(--bg-card);border-radius:6px;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);display:grid;overflow:hidden}.mp-tile{cursor:pointer;border:none;outline:none;justify-content:center;align-items:center;margin:0;padding:0;font-size:28px;transition:background .1s;display:flex;position:relative}.mp-tile:disabled{cursor:default}.mp-tile.light{background:var(--tile-light-alt)}.mp-tile.dark{background:var(--tile-dark-alt)}.mp-tile.selected{outline:3px solid var(--accent-gold);outline-offset:-3px;z-index:2}.mp-tile.target:after{content:"";pointer-events:none;background:#50c8a08c;border-radius:50%;position:absolute;inset:35%}.mp-tile.last-from{box-shadow:inset 0 0 0 3px #ffdc7873}.mp-tile.last-to{box-shadow:inset 0 0 0 3px #ffdc78b3}.mp-piece{-webkit-user-select:none;user-select:none;pointer-events:none;font-size:36px;line-height:1}.mp-piece-white{color:var(--text-white);text-shadow:0 1px #0006,0 0 2px #0009}.mp-piece-black{color:var(--text-on-light);text-shadow:0 1px #fff3}.mp-controls{align-items:center;gap:8px;margin-top:4px;display:flex}.mp-btn{cursor:pointer;border:1px solid var(--btn-border);border-radius:8px;padding:7px 14px;font-size:13px;font-weight:600}.mp-btn:disabled{opacity:.5;cursor:not-allowed}.mp-btn-secondary{color:var(--text);background:0 0}.mp-btn-secondary:hover:not(:disabled){background:#ffffff0d}.mp-btn-danger{background:var(--danger-dark);color:var(--text-white);border-color:var(--danger-dark)}.mp-btn-danger:hover:not(:disabled){filter:brightness(1.1)}.mp-btn-primary{background:var(--accent-gold);color:var(--piece-text-on-bright);border-color:var(--accent-gold);font-weight:700}.mp-btn-primary:hover:not(:disabled){filter:brightness(1.08)}.mp-resign-confirm{color:var(--text-muted);font-size:13px}.mp-completion-backdrop{z-index:100;background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mp-completion-dialog{background:var(--bg-card);border:1px solid var(--accent-gold);text-align:center;width:calc(100% - 32px);max-width:420px;color:var(--text);border-radius:12px;padding:24px 22px}.mp-completion-title{margin:0 0 6px;font-size:18px;font-weight:700}.mp-completion-headline{color:var(--accent-gold);margin:0 0 4px;font-size:16px;font-weight:600}.mp-completion-subline{color:var(--text-muted);margin:0 0 16px;font-size:13px}.mp-completion-actions{justify-content:center;gap:10px;margin-bottom:10px;display:flex}.mp-completion-footnote{color:var(--text-muted);letter-spacing:.2px;margin:0;font-size:11px}.friend-lobby{width:100%;max-width:520px;color:var(--text);flex-direction:column;gap:16px;margin:0 auto;padding:24px 16px 64px;display:flex}.friend-lobby-header{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.friend-lobby-back{color:var(--text);border:1px solid var(--btn-border);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px;font-size:13px}.friend-lobby-back:hover:not(:disabled){background:#ffffff0d}.friend-lobby-title{text-align:center;margin:0;font-size:18px;font-weight:700}.friend-lobby-spacer{width:60px}.friend-lobby-warning{color:var(--accent-gold);text-align:center;background:#ffb45014;border:1px solid #ffb4504d;border-radius:8px;padding:10px 14px;font-size:13px}.friend-lobby-card{background:var(--bg-card);border:1px solid var(--btn-border);border-radius:10px;padding:16px 18px}.friend-lobby-card h3{letter-spacing:.3px;margin:0 0 6px;font-size:14px;font-weight:700}.friend-lobby-hint{color:var(--text-muted);margin:0 0 12px;font-size:12px;line-height:1.4}.friend-lobby-mode-row{grid-template-columns:1fr 1fr;gap:8px;margin:0 0 14px;display:grid}.friend-lobby-mode{border:1px solid var(--btn-border);cursor:pointer;background:#00000038;border-radius:8px;flex-direction:column;gap:4px;padding:10px 12px;display:flex;position:relative}.friend-lobby-mode input[type=radio]{opacity:0;pointer-events:none;position:absolute}.friend-lobby-mode.is-selected{border-color:var(--accent-gold);background:#ffc85014}.friend-lobby-mode-title{letter-spacing:.2px;font-size:13px;font-weight:700}.friend-lobby-mode-sub{color:var(--text-muted);font-size:11px;line-height:1.3}.friend-lobby-primary-btn{background:var(--accent-gold);width:100%;color:var(--piece-text-on-bright);cursor:pointer;letter-spacing:.3px;border:none;border-radius:8px;padding:10px 14px;font-size:14px;font-weight:700}.friend-lobby-primary-btn:hover:not(:disabled){filter:brightness(1.08)}.friend-lobby-primary-btn:disabled{opacity:.5;cursor:not-allowed}.friend-lobby-secondary-btn{color:var(--text);border:1px solid var(--btn-border);cursor:pointer;background:0 0;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600}.friend-lobby-secondary-btn:hover:not(:disabled){background:#ffffff0d}.friend-lobby-secondary-btn:disabled{opacity:.5;cursor:not-allowed}.friend-lobby-join-row{align-items:stretch;gap:8px;display:flex}.friend-lobby-code-input{letter-spacing:.2em;text-align:center;color:var(--text);border:1px solid var(--btn-border);text-transform:uppercase;background:#00000040;border-radius:8px;flex:1;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:18px;font-weight:700}.friend-lobby-code-input:disabled{opacity:.5}.friend-lobby-hosted .friend-lobby-code-display{align-items:center;gap:10px;margin-top:4px;margin-bottom:12px;display:flex}.friend-lobby-code-text{letter-spacing:.25em;text-align:center;border:1px dashed var(--accent-gold);color:var(--accent-gold);background:#0000004d;border-radius:8px;flex:1;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:24px;font-weight:800}.friend-lobby-status{color:var(--text-muted);justify-content:center;align-items:center;gap:8px;margin:8px 0 0;font-size:13px;display:flex}.friend-lobby-status-ready{color:var(--accent-gold);font-weight:600}.friend-lobby-spinner{border:2px solid #fff3;border-top-color:var(--accent-gold);border-radius:50%;width:12px;height:12px;animation:.9s linear infinite friend-lobby-spin;display:inline-block}@keyframes friend-lobby-spin{to{transform:rotate(360deg)}}.friend-lobby-error{color:var(--danger-light);text-align:center;background:#e870701a;border:1px solid #e870704d;border-radius:8px;padding:10px 14px;font-size:13px}@keyframes enpassant-pulse{0%,to{box-shadow:inset 0 0 0 3px #50dc64b3}50%{box-shadow:inset 0 0 0 6px #50dc64}}.tile.target-enpassant:before{animation:.8s ease-in-out infinite enpassant-pulse}@keyframes enpassant-explode{0%{opacity:1;transform:scale(1)}50%{opacity:.6;filter:brightness(1.5);transform:scale(2.5)}to{opacity:0;transform:scale(0)}}.tile.enpassant-explosion:after{content:"💥";pointer-events:none;justify-content:center;align-items:center;font-size:28px;animation:.7s ease-out forwards enpassant-explode;display:flex;position:absolute;inset:0}.victor-badge{background:linear-gradient(135deg, var(--accent-gold-bright) 0%, var(--accent-gold-orange) 50%, var(--accent-gold-bright) 100%);color:var(--text-on-bright-gold);letter-spacing:.6px;text-transform:uppercase;text-shadow:0 1px #fff6;white-space:nowrap;vertical-align:middle;background-size:200% 100%;border-radius:14px;align-items:center;gap:4px;margin-left:8px;padding:3px 10px;font-size:10px;font-weight:800;animation:3s ease-in-out infinite victor-shimmer,2s ease-in-out infinite victor-pulse;display:inline-flex;box-shadow:0 0 16px #ffc85080,inset 0 1px #fff6}.victor-badge svg{flex-shrink:0;width:12px;height:12px}.lb-me-badge svg{width:14px;height:14px}.victor-badge.my-victor{animation-duration:1.5s,1.2s;transform:scale(1.05)}@keyframes victor-shimmer{0%,to{background-position:0 0}50%{background-position:100% 0}}@keyframes victor-pulse{0%,to{box-shadow:0 0 16px #ffc85080,inset 0 1px #fff6}50%{box-shadow:0 0 24px #ffc850e6,inset 0 1px #fff9}}.summary-duration{color:var(--text-muted);letter-spacing:.2px;margin-top:-4px;font-size:12px}.leaderboard-tabs{background:#0000002e;border-radius:999px;justify-content:center;gap:6px;width:fit-content;margin:4px auto 14px;padding:4px;display:flex}.leaderboard-tab{letter-spacing:.2px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 16px;font-size:13px;font-weight:600;transition:background .15s,color .15s}.leaderboard-tab:hover{color:var(--text)}.leaderboard-tab.is-active{background:var(--accent-gold);color:var(--piece-text-on-bright)}.stats-page{background:var(--bg-deep);width:100%;max-width:560px;min-height:100vh;color:var(--text);margin:0 auto;padding:32px 20px 64px;font-family:inherit}.stats-page h1{letter-spacing:.3px;margin:0 0 24px;font-size:22px;font-weight:700}.stats-page h2{text-transform:uppercase;letter-spacing:.6px;color:var(--accent-gold);margin:0 0 10px;font-size:13px;font-weight:700}.stats-section-meta{color:var(--text-muted);text-transform:none;letter-spacing:.2px;margin-left:4px;font-size:12px;font-weight:500}.stats-hero{background:var(--bg-card);border:1px solid var(--btn-border);text-align:center;border-radius:10px;margin-bottom:22px;padding:24px 18px}.stat-big{font-variant-numeric:tabular-nums;color:var(--text);font-size:42px;font-weight:700;line-height:1.1}.stat-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-top:6px;font-size:12px}.stats-section{background:var(--bg-card);border:1px solid var(--btn-border);border-radius:10px;margin-bottom:16px;padding:14px 18px}.stat-row{border-bottom:1px solid #ffffff0a;grid-template-columns:1fr auto auto;align-items:baseline;gap:10px;padding:6px 0;font-size:13px;display:grid}.stat-row:last-child{border-bottom:0}.stat-row-label{color:var(--text-muted)}.stat-row-value{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.stat-pct{color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;min-width:48px;font-size:12px}.stats-footnote{text-align:center;color:var(--text-muted);letter-spacing:.2px;margin-top:18px;font-size:11px}.stats-loading,.stats-error{text-align:center;color:var(--text-muted);padding:40px 20px;font-size:14px}.stats-error{color:var(--danger-light)}.feedback-error{margin-top:8px}.feedback-thanks{text-align:center;color:var(--accent-gold);padding:16px 8px;font-size:16px;font-weight:600;animation:.4s both feedback-thanks-fade}.feedback-thanks-large{padding:32px 8px;font-size:20px}@keyframes feedback-thanks-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.theme-toggle{border:1px solid var(--btn-border);background:var(--btn-bg);width:30px;height:30px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .15s,border-color .15s,box-shadow .2s,color .15s;display:flex}.theme-toggle:hover{background:var(--bg-elevated-hover);border-color:var(--accent-primary);color:var(--text);box-shadow:var(--glow-accent)}.theme-toggle:active{transform:translateY(.5px)}[data-theme=wood-light] .app-shell{background:var(--bg)}[data-theme=cyberpunk] .app-shell:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle at 18% 22%,#5dc8d60a,#0000 55%),radial-gradient(circle at 82% 78%,#d65d8c08,#0000 55%);position:fixed;inset:0}[data-theme=cyberpunk] .app-root{z-index:1;position:relative}[data-theme=cyberpunk] .board{box-shadow:var(--shadow-elevated), inset 0 0 0 1px var(--border-subtle)}[data-theme=cyberpunk] .tile.last-from:before{background:#5dc8d629}[data-theme=cyberpunk] .tile.last-to:before{background:#5dc8d638;box-shadow:inset 0 0 0 1px #5dc8d673}[data-theme=cyberpunk] .action-btn:hover,[data-theme=cyberpunk] .rotate-btn:hover,[data-theme=cyberpunk] .mode-btn:hover,[data-theme=cyberpunk] .opponent-mode-btn:hover{box-shadow:var(--glow-accent)}[data-theme=cyberpunk] .app-header h1{text-shadow:0 0 12px #5dc8d68c}@media (prefers-reduced-motion:reduce){.app-shell{animation:none}.tile,.piece{transition:none}[data-3d=on] .board,.board{transition:none!important;transform:none!important}[data-3d=on] .board.is-rotated,.board.is-rotated{animation:none!important}.piece-slide-wrap{transition:none!important}[data-3d=on] .tile:hover .piece-slide-wrap,[data-3d=on] .tile.selected .piece-slide-wrap{filter:none!important;transform:none!important}.piece-slide-wrap.is-sliding-in,.tile.is-sacrifice:before,.tile.is-sacrifice:after,.tile.checked-king:before,.tile.classified-blunder:before,.tile.classified-brilliant:before,.board.is-rotated:after,.spin-roulette-btn-compact,.board-with-coords.is-afk-nudge,.milestone-celebration,.victor-badge,body.checkmate-flash:after,.app-shell.is-blunder-flash .app-root,.screen-flash-effect.screen-flash-blunder,.screen-flash-effect.screen-flash-brilliant,.brilliant-sparkle{animation:none}.brilliant-sparkles{display:none}}[data-theme=fantasy] .app-shell:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle at 30% 0,#c9a06214,#0000 60%),radial-gradient(circle at 70% 100%,#8b3a3a0f,#0000 60%),radial-gradient(circle,#140f0866,#0000 70%);position:fixed;inset:0}[data-theme=fantasy] .app-root{z-index:1;position:relative}[data-theme=fantasy] .app-header h1{color:var(--accent-primary);text-shadow:0 1px #000c,0 0 8px #c9a06266}[data-theme=fantasy] .board-with-coords{border:1px solid var(--accent-primary);border-radius:var(--radius-md);box-shadow:0 0 24px #c9a0622e,inset 0 0 40px #0a0805b3,0 12px 28px #0000008c}[data-theme=fantasy] .board-with-coords:before,[data-theme=fantasy] .board-with-coords:after{content:"";border:2px solid var(--accent-primary);pointer-events:none;z-index:5;width:22px;height:22px;position:absolute}[data-theme=fantasy] .board-with-coords:before{border-bottom:none;border-right:none;top:-1px;left:-1px}[data-theme=fantasy] .board-with-coords:after{border-top:none;border-left:none;bottom:-1px;right:-1px}[data-theme=fantasy] .piece-white{filter:drop-shadow(0 2px 4px #000000b3)drop-shadow(0 0 6px #d4af378c)}[data-theme=fantasy] .piece-black{filter:drop-shadow(0 2px 4px #000000b3)drop-shadow(0 0 4px #e8d5a073)}[data-theme=fantasy] .tile.last-from:before{background:#c9a0622e}[data-theme=fantasy] .tile.last-to:before{background:#c9a06252;box-shadow:inset 0 0 0 1px #c9a0628c}[data-theme=fantasy] .mode-card.is-active{background:linear-gradient(135deg, var(--bg-elevated) 0%, #c9a0621f 100%);border-color:var(--accent-primary);box-shadow:var(--glow-accent)}[data-theme=fantasy] .action-btn:hover:not(:disabled),[data-theme=fantasy] .header-action-btn:hover:not(:disabled),[data-theme=fantasy] .mode-card:hover:not(:disabled){box-shadow:var(--glow-accent), inset 0 1px 0 #ffffff14}[data-theme=fantasy] .board.is-rotated{box-shadow:0 0 0 2px #c9a06280,0 0 30px #c9a0624d,inset 0 0 50px #0a080599}[data-theme=fantasy] .sidebar-moves{background:linear-gradient(180deg, var(--bg-mid) 0%, var(--bg-deep) 100%)}[data-theme=fantasy] .sidebar-moves .move-log-text{color:var(--text-secondary)}.toast-container{bottom:var(--space-4);right:var(--space-4);gap:var(--space-2);z-index:10000;pointer-events:none;max-width:calc(100vw - var(--space-4) * 2);flex-direction:column-reverse;display:flex;position:fixed}.toast{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);color:var(--text-primary);pointer-events:auto;min-width:220px;max-width:360px;font-size:13px;font-weight:500;animation:.28s cubic-bezier(.4,0,.2,1) toast-slide-in;display:flex}.toast-success{border-color:var(--accent-success);box-shadow:0 0 12px #4ade8040, var(--shadow-elevated)}.toast-success svg{color:var(--accent-success)}.toast-error{border-color:var(--accent-danger);box-shadow:0 0 12px #c0392b40, var(--shadow-elevated)}.toast-error svg{color:var(--accent-danger)}.toast-info{border-color:var(--accent-primary)}.toast-info svg{color:var(--accent-primary)}@keyframes toast-slide-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (width<=640px){.toast-container{bottom:var(--space-2);right:var(--space-2);left:var(--space-2)}.toast{min-width:0;max-width:100%}}.skeleton{background:linear-gradient(90deg, var(--bg-mid) 0%, var(--bg-elevated) 50%, var(--bg-mid) 100%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s ease-in-out infinite skeleton-shimmer;display:inline-block}.skeleton.is-rounded{border-radius:var(--radius-full)}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.empty-state{text-align:center;padding:var(--space-5);align-items:center;gap:var(--space-2);color:var(--text-secondary);flex-direction:column;display:flex}.empty-state-icon{color:var(--text-muted);opacity:.55;margin-bottom:var(--space-2);display:inline-flex}.empty-state-title{color:var(--text-primary);margin:0;font-size:18px;font-weight:600}.empty-state-description{max-width:340px;color:var(--text-secondary);margin:0;font-size:14px;line-height:1.5}.empty-state-action{margin-top:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--accent-primary);color:var(--piece-text-on-bright);border-radius:var(--radius-md);cursor:pointer;border:none;font-size:13px;font-weight:600;transition:filter .15s,transform .15s}.empty-state-action:hover{filter:brightness(1.08);transform:translateY(-1px)}.empty-state-action:active{transform:translateY(0)}.tooltip-trigger{display:inline-flex;position:relative}.tooltip{background:var(--bg-deep);color:var(--text-primary);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);white-space:nowrap;box-shadow:var(--shadow-elevated);pointer-events:none;z-index:9999;padding:4px 10px;font-size:12px;font-weight:500;animation:.15s ease-out tooltip-fade-in;position:absolute}@keyframes tooltip-fade-in{0%{opacity:0;transform:translate(var(--tip-tx,-50%), var(--tip-ty,2px))}to{opacity:1;transform:translate(var(--tip-tx,-50%), var(--tip-ty,0))}}.tooltip-top{--tip-tx:-50%;--tip-ty:0;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.tooltip-bottom{--tip-tx:-50%;--tip-ty:0;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.tooltip-left{--tip-tx:0;--tip-ty:-50%;top:50%;right:calc(100% + 6px);transform:translateY(-50%)}.tooltip-right{--tip-tx:0;--tip-ty:-50%;top:50%;left:calc(100% + 6px);transform:translateY(-50%)}@media (prefers-reduced-motion:reduce){.toast{animation:none}.skeleton{background:var(--bg-mid);animation:none}.tooltip{animation:none}}.tile,button,.user-menu-trigger{touch-action:manipulation}.tile:active,button:active:not(:disabled){transition:transform 80ms ease-out;transform:scale(.97)}@media (hover:none){.header-action-btn:hover,.mode-card:hover,.opp-tab:hover,.action-buttons-group .action-btn:hover,.rotate-btn-icon:hover,.panel-action-btn:hover,.review-trigger-btn:hover,.user-menu-trigger:hover{box-shadow:none;background:var(--btn-bg);transform:none}[data-3d=on] .tile:hover .piece-slide-wrap{filter:none;transform:none}}@media (width<=960px){.app-body{gap:var(--space-3);grid-template-columns:1fr}.game-mode-cards{gap:var(--space-2);grid-template-columns:1fr}.mode-card{padding:var(--space-3);gap:var(--space-2)}.mode-card-icon svg{width:28px;height:28px}.mode-card-title{font-size:16px}.mode-card-subtitle{font-size:11px}.right-sidebar{gap:var(--space-2);width:100%}.sidebar-panel{max-height:320px;overflow-y:auto}.sidebar-moves .move-log-text{max-height:200px}}@media (width<=768px){[data-3d=on] .board{transform:none}[data-3d=on] .board.is-rotated{animation:none}[data-3d=on] .tile:hover .piece-slide-wrap,[data-3d=on] .tile.selected .piece-slide-wrap{filter:none;transform:none}}@media (width<=600px){.app-root{padding:var(--space-2);gap:var(--space-2)}.app-header{gap:var(--space-2);padding:0}.app-header h1{letter-spacing:.02em;font-size:22px}.app-tagline{display:none}.header-controls{gap:2px}.header-action-btn{width:40px;min-width:40px;height:40px}.theme-toggle{width:40px;height:40px}.user-menu-trigger{height:40px;padding:0 var(--space-2);font-size:13px}.action-buttons-group .action-btn{width:42px;height:42px}.rotate-btn-icon{width:88px;height:44px}.tile{min-width:36px;min-height:36px}.toast-container{bottom:var(--space-2);right:var(--space-2);left:var(--space-2)}.toast{min-width:0;max-width:100%;font-size:13px}.modal-backdrop,.help-backdrop,.promotion-backdrop{padding:var(--space-2)}.modal-dialog,.help-dialog,.promotion-dialog,.feedback-modal-dialog,.milestone-dialog{width:100%;max-width:100%;max-height:calc(100dvh - var(--space-4));padding:var(--space-3);overflow-y:auto}.modal-input,.replay-textarea,.position-input,textarea,input[type=text]{font-size:16px}}.showcase-view{background:var(--bg-deep);width:100vw;height:100vh;color:var(--text-primary);flex-direction:column;font-family:Cinzel,Cormorant Garamond,serif;display:flex;position:fixed;inset:0;overflow:hidden}.showcase-autoplay{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-5);flex-direction:column;flex:1;animation:.4s showcase-fade-in;display:flex}.showcase-header{text-align:center;align-items:center;gap:var(--space-1);flex-direction:column;display:flex}.showcase-title{letter-spacing:.06em;color:var(--text-primary);margin:0;font-family:Cinzel Decorative,Cinzel,serif;font-size:clamp(40px,6vh,72px);font-weight:900}.showcase-tagline{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.3em;font-family:Inter,sans-serif;font-size:clamp(12px,1.6vh,18px);font-weight:700}.showcase-board-wrap{justify-content:center;align-items:center;display:flex;position:relative}.showcase-board{aspect-ratio:1;border-radius:var(--radius-md);width:min(70vh,70vw);box-shadow:0 0 0 4px var(--border-strong), 0 24px 48px #00000080;flex-direction:column;display:flex;overflow:hidden}.showcase-board-row{flex:1;display:flex}.showcase-tile{flex:1;justify-content:center;align-items:center;transition:background .2s;display:flex;position:relative}.showcase-tile.light{background:var(--tile-light)}.showcase-tile.dark{background:var(--tile-dark)}.showcase-tile.last-from:after,.showcase-tile.last-to:after{content:"";background:var(--accent-primary);opacity:.22;pointer-events:none;position:absolute;inset:0}.showcase-piece{-webkit-user-select:none;user-select:none;font-size:min(9vh,9vw);line-height:1}.showcase-piece-white{color:var(--piece-white);text-shadow:var(--piece-white-shadow)}.showcase-piece-black{color:var(--piece-black);text-shadow:var(--piece-black-shadow)}.showcase-banner{background:var(--bg-elevated);border:2px solid var(--accent-primary);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-5);color:var(--accent-primary);letter-spacing:.05em;box-shadow:var(--glow-accent);font-family:Inter,sans-serif;font-size:clamp(18px,3vh,28px);font-weight:700;animation:.5s cubic-bezier(.2,.8,.4,1) showcase-banner-pop;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes showcase-banner-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.85)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.showcase-stats{gap:var(--space-5);font-family:Inter,sans-serif;display:flex}.showcase-stat{flex-direction:column;align-items:center;gap:4px;min-width:80px;display:flex}.showcase-stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:600}.showcase-stat-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:clamp(20px,3vh,32px);font-weight:700}.showcase-leaderboard{justify-content:center;align-items:center;gap:var(--space-5);padding:var(--space-5);flex-direction:column;flex:1;animation:.5s cubic-bezier(.2,.8,.4,1) showcase-leaderboard-enter;display:flex}.showcase-leaderboard-header{text-align:center}.showcase-leaderboard-title{letter-spacing:.04em;align-items:center;gap:var(--space-3);margin:0;font-family:Cinzel Decorative,Cinzel,serif;font-size:clamp(36px,6vh,64px);font-weight:900;display:inline-flex}.highlight-badge{color:var(--accent-secondary,var(--accent-primary));filter:drop-shadow(0 0 8px var(--accent-primary));animation:3s linear infinite highlight-badge-spin}.highlight-name{color:var(--accent-primary);text-shadow:0 0 24px var(--accent-primary);animation:1.5s ease-in-out infinite highlight-pulse}.highlight-suffix{color:var(--text-primary);font-family:Inter,sans-serif;font-size:.85em;font-weight:500}@keyframes highlight-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes highlight-badge-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.showcase-leaderboard-list{gap:var(--space-2);flex-direction:column;width:min(720px,88vw);display:flex}.showcase-leaderboard-loading{color:var(--text-muted);text-align:center;padding:var(--space-4);font-family:Inter,sans-serif}.leaderboard-row-large{padding:var(--space-3) var(--space-4);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--radius-md);grid-template-columns:80px 1fr 160px;align-items:center;font-family:Inter,sans-serif;font-size:clamp(16px,2.2vh,24px);font-weight:600;display:grid}.leaderboard-row-large .rank{color:var(--accent-primary);font-variant-numeric:tabular-nums;font-weight:700}.leaderboard-row-large .name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.leaderboard-row-large .score{color:var(--text-secondary,var(--text-primary));text-align:right;font-variant-numeric:tabular-nums}.leaderboard-row-large.is-new-user{border-color:var(--accent-primary);background:linear-gradient(135deg, var(--bg-elevated) 0%, color-mix(in srgb, var(--accent-primary) 22%, var(--bg-elevated)) 100%);box-shadow:0 0 32px color-mix(in srgb, var(--accent-primary) 50%, transparent);animation:1.5s ease-in-out infinite new-user-glow}.leaderboard-row-large.is-ghost .score{color:var(--accent-primary);font-style:italic;font-weight:700}@keyframes new-user-glow{0%,to{box-shadow:0 0 32px color-mix(in srgb, var(--accent-primary) 40%, transparent)}50%{box-shadow:0 0 56px color-mix(in srgb, var(--accent-primary) 75%, transparent)}}.showcase-countdown{margin-top:var(--space-3);color:var(--text-muted);letter-spacing:.05em;font-family:Inter,sans-serif;font-size:14px;animation:10s linear forwards countdown-fade}@keyframes countdown-fade{0%{opacity:.4}90%{opacity:.4}to{opacity:0}}@keyframes showcase-fade-in{0%{opacity:0}to{opacity:1}}@keyframes showcase-leaderboard-enter{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.showcase-autoplay,.showcase-leaderboard,.showcase-banner,.highlight-name,.highlight-badge,.leaderboard-row-large.is-new-user{animation:none}}
