:root{--bg: #242321;--panel: #262522;--panel-raised: #302e2b;--field: #1d1c1a;--field-border: #3b3935;--hairline: rgba(255, 255, 255, .07);--text: #ebe8e1;--text-strong: #ffffff;--muted: #9d988d;--faint: #6f6a61;--green: #81b64c;--green-hover: #95c95e;--green-shade: #537a32;--clock-active-bg: #f2f0ea;--clock-active-text: #22211f;--danger: #e57373;color:var(--text);background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;overflow-anchor:none;background:linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(180deg,rgba(255,255,255,.03) 1px,transparent 1px),var(--bg);background-size:44px 44px}button,select,textarea,input{font:inherit}button{border:0}h1,h2{margin:0}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-shell{--rail-w: 64px;min-height:100vh;padding:20px 20px 20px calc(var(--rail-w) + 20px);overflow-anchor:none}.app-rail{position:fixed;inset:0 auto 0 0;z-index:20;width:var(--rail-w);display:flex;flex-direction:column;align-items:center;padding-top:14px;background:#1d1c1a;border-right:1px solid rgba(255,255,255,.04)}.brand{display:grid;justify-items:center;gap:3px;padding:6px 6px 7px;border-radius:8px;background:transparent;color:var(--text);cursor:pointer}.brand:hover{background:#ffffff0f}.brand-mark{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:var(--green);box-shadow:inset 0 -3px 0 var(--green-shade)}.brand-mark .piece-svg{width:28px;height:28px}.brand-name{color:var(--text-strong);font-size:11px;font-weight:800;letter-spacing:.02em}.game-layout{--bar-h: 44px;--bar-gap: 6px;--panel-w: 340px;--board-size: max(300px, min(720px, calc(100vh - 132px) , calc(100vw - 464px) ));--board-size: max(300px, min(720px, calc(100dvh - 132px) , calc(100vw - 464px) ));--stack-h: calc(var(--board-size) + 2 * var(--bar-h) + 2 * var(--bar-gap));display:grid;grid-template-columns:var(--board-size) var(--panel-w);gap:20px;justify-content:center;align-items:start;min-width:0}.play-area{display:grid;grid-template-rows:var(--bar-h) var(--board-size) var(--bar-h);gap:var(--bar-gap);width:var(--board-size);min-width:var(--board-size);position:sticky;top:20px}.player-bar{width:var(--board-size);height:var(--bar-h);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 2px;min-width:0}.player-identity{display:flex;align-items:center;gap:10px;min-width:0}.player-avatar{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:4px;font-size:28px;line-height:1}.player-avatar .piece-svg{width:30px;height:30px}.player-avatar.white{background:#e9e6dd;color:#3a3833}.player-avatar.black{background:#b9b4a9;color:#e9e6dd}.player-text{display:grid;gap:1px;min-width:0}.player-name{display:flex;align-items:center;gap:6px;color:var(--text-strong);font-size:14px;font-weight:700;white-space:nowrap}.player-detail{color:var(--muted);font-weight:500}.captures{height:16px;display:flex;gap:1px;align-items:center;overflow:hidden;color:var(--muted);font-size:15px;line-height:1}.captures:empty{display:none}.captured-piece{flex:none;width:17px;height:17px;margin-right:-5px}.material-advantage{margin-left:2px;color:var(--muted);font-size:12px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.captured-piece+.material-advantage{margin-left:9px}.captured-piece.black{filter:drop-shadow(0 0 1px rgba(255,255,255,.75))}.thinking-dots{display:inline-flex;gap:3px}.thinking-dots i{width:4px;height:4px;border-radius:50%;background:var(--green);animation:thinking 1s infinite ease-in-out}.thinking-dots i:nth-child(2){animation-delay:.15s}.thinking-dots i:nth-child(3){animation-delay:.3s}@keyframes thinking{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.clock{flex:none;min-width:108px;height:38px;display:grid;place-items:center end;padding:0 12px;border-radius:4px;background:#34322e;color:#a5a094;font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;transition:background .15s ease,color .15s ease}.clock.running{background:var(--clock-active-bg);color:var(--clock-active-text);box-shadow:0 0 0 1px #ffffff40,0 4px 14px #00000059}.board-frame{width:var(--board-size);height:var(--board-size);min-width:var(--board-size);min-height:var(--board-size);aspect-ratio:1;contain:layout paint size;border-radius:6px;overflow:hidden;overscroll-behavior:contain;touch-action:manipulation;box-shadow:0 22px 60px #00000059}.board{position:relative;width:var(--board-size);height:var(--board-size);min-width:var(--board-size);min-height:var(--board-size);display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));contain:strict;overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.square{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;z-index:1;display:grid;place-items:center;width:100%;height:100%;min-width:0;min-height:0;padding:0;border-radius:0;line-height:1;overflow:hidden;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.square:focus{outline:none}.square:focus-visible{outline:2px solid rgba(245,245,245,.9);outline-offset:-2px}.square.light{background:#eeeed2}.square.dark{background:#769656}.square.last-move.light{background:#f6f669}.square.last-move.dark{background:#baca44}.square.selected:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffee4f7a}.square.can-move:after{content:"";position:absolute;width:28%;aspect-ratio:1;border-radius:50%;background:#14141438}.square.can-capture:after{content:"";position:absolute;top:8%;right:8%;bottom:8%;left:8%;border:clamp(4px,.8vw,8px) solid rgba(20,20,20,.22);border-radius:50%}.square.review-square:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.square.review-square.best:before,.square.review-square.excellent:before,.square.review-square.good:before,.square.review-square.great:before,.square.review-square.brilliant:before{background:#7ab84e57}.square.review-square.inaccuracy:before{background:#efa04857}.square.review-square.mistake:before{background:#eb753a5c}.square.review-square.blunder:before{background:#ec48486b}.square.review-square.mate:before{background:#82b85066}.board-arrow{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;width:100%;height:100%;pointer-events:none;overflow:visible}.board-arrow .arrow-shaft{stroke-width:2.55;stroke-linecap:round;opacity:.62;filter:drop-shadow(0 2px 2px rgba(0,0,0,.25))}.board-arrow .arrow-head{opacity:.68;filter:drop-shadow(0 2px 2px rgba(0,0,0,.25))}.board-arrow.best-suggestion .arrow-shaft,.board-arrow.best-suggestion .arrow-head{stroke:#7dc456;fill:#7dc456}.board-arrow.best .arrow-shaft,.board-arrow.best .arrow-head,.board-arrow.excellent .arrow-shaft,.board-arrow.excellent .arrow-head,.board-arrow.good .arrow-shaft,.board-arrow.good .arrow-head,.board-arrow.great .arrow-shaft,.board-arrow.great .arrow-head,.board-arrow.brilliant .arrow-shaft,.board-arrow.brilliant .arrow-head,.board-arrow.mate .arrow-shaft,.board-arrow.mate .arrow-head{stroke:#f0b33a;fill:#f0b33a}.board-arrow.inaccuracy .arrow-shaft,.board-arrow.inaccuracy .arrow-head{stroke:#f59e42;fill:#f59e42}.board-arrow.mistake .arrow-shaft,.board-arrow.mistake .arrow-head{stroke:#ef7d42;fill:#ef7d42}.board-arrow.blunder .arrow-shaft,.board-arrow.blunder .arrow-head{stroke:#ef4444;fill:#ef4444}.piece{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:grid;place-items:center;width:100%;height:100%;font-size:calc(var(--board-size) * .107);line-height:1;-webkit-user-select:none;user-select:none;cursor:default;filter:drop-shadow(0 3px 2px rgba(0,0,0,.32))}.piece .piece-svg{width:92%;height:92%;pointer-events:none}.promotion-option .piece-svg{width:82%;height:82%}.piece.movable{cursor:grab;touch-action:none}.piece.movable:active{cursor:grabbing}.piece.dragging{opacity:.35}.piece.drag-ghost{inset:auto;z-index:8;width:12.5%;height:12.5%;transform:translate(-50%,-50%) scale(1.1);pointer-events:none}.promotion-picker{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9;display:grid;place-content:center;gap:12px;background:#11100fb8}.promotion-options{display:grid;grid-template-columns:repeat(4,minmax(48px,1fr));gap:8px}.promotion-option{width:calc(var(--board-size) / 6);min-width:48px;aspect-ratio:1;display:grid;place-items:center;border-radius:8px;background:#eeeed2;font-size:calc(var(--board-size) / 9);line-height:1;cursor:pointer}.promotion-option.white{color:#fffdf6;background:#769656}.promotion-option.black{color:#2f2e2b}.promotion-option:focus-visible,.promotion-cancel:focus-visible{outline:2px solid #f5f5f5;outline-offset:2px}.promotion-cancel{justify-self:center;min-height:44px;padding:0 18px;border-radius:6px;background:#302f2c;color:#e8e6df;cursor:pointer}.review-badge{position:absolute;z-index:6;top:8%;right:8%;min-width:28px;height:28px;display:grid;place-items:center;border-radius:50%;color:#fff;font-size:12px;font-weight:1000;box-shadow:0 3px 8px #00000059}.review-badge.best,.review-badge.excellent,.review-badge.good,.review-badge.great,.review-badge.brilliant,.review-badge.mate{background:#7dc456}.review-badge.inaccuracy{background:#f59e42}.review-badge.mistake{background:#ef7d42}.review-badge.blunder{background:#ef4444}.piece.white{color:#fffdf6}.piece.black{color:#2f2e2b}.rank-label,.file-label{position:absolute;z-index:2;font-size:clamp(10px,1.4vw,14px);font-weight:800;pointer-events:none}.rank-label{top:5px;left:6px}.file-label{right:6px;bottom:4px}.square.light .rank-label,.square.light .file-label{color:#769656}.square.dark .rank-label,.square.dark .file-label{color:#eeeed2}.side-panel{height:var(--stack-h);min-width:0;display:flex;flex-direction:column;overflow:hidden;border-radius:8px;background:var(--panel);box-shadow:0 18px 50px #0000004d}.panel-status{flex:none;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 16px 12px}.status-text{display:grid;gap:4px;min-width:0}.status-kicker{color:var(--green);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.panel-status h1{color:var(--text-strong);font-size:19px;font-weight:750;line-height:1.2;overflow-wrap:anywhere}.status-meta{flex:none;display:grid;justify-items:end;gap:6px;padding-top:2px}.turn-dot{width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 2px #ffffff2e}.turn-dot.white{background:#f2f0ea}.turn-dot.black{background:#121110}.result-chip{padding:3px 8px;border-radius:4px;background:var(--panel-raised);color:var(--text-strong);font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}.notice{flex:none;display:flex;gap:8px;align-items:center;margin:0 16px 10px;padding:8px 10px;border-left:3px solid var(--muted);border-radius:4px;background:#ffffff0a;color:var(--text);font-size:13px;line-height:1.4}.notice.error{border-left-color:var(--danger);color:#ffd6d6}.notice.warning{display:grid;border-left-color:#d9b44a;color:#efe2b0}.notice.info{border-left-color:var(--green)}.spinner{flex:none;width:12px;height:12px;border:2px solid rgba(255,255,255,.2);border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.setup{flex:none;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.setup-toggle{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 16px;background:transparent;color:var(--text);text-align:left;cursor:pointer}.setup-toggle:hover{background:#ffffff08}.setup-label{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.setup-summary{overflow:hidden;color:var(--text);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.chevron{color:var(--muted);transition:transform .15s ease}.setup.open .chevron{transform:rotate(180deg)}.setup-body{display:grid;gap:10px;padding:2px 16px 14px}.setup-note{margin:0;color:var(--muted);font-size:12px;line-height:1.4}.segmented button:disabled,select:disabled{opacity:.45;cursor:not-allowed}.field{display:grid;gap:5px;min-width:0}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-label{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.segmented{display:grid;grid-auto-columns:1fr;grid-auto-flow:column;gap:2px;padding:3px;border-radius:6px;background:var(--field)}.segmented button{height:30px;border-radius:4px;background:transparent;color:var(--muted);font-size:13px;font-weight:700;cursor:pointer}.segmented button:hover{color:var(--text)}.segmented button.active{background:#45423d;color:var(--text-strong)}select{width:100%;height:36px;padding:0 32px 0 10px;border:1px solid var(--field-border);border-radius:6px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239d988d' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center,var(--field);color:var(--text);font-size:14px;cursor:pointer}select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--green);outline-offset:1px}.moves-section{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.section-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px 6px}.section-head h2{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.section-head span{color:var(--faint);font-size:12px}.section-head.compact{padding:4px 0 0}.moves{flex:1 1 auto;min-height:0;margin:0;padding:0 8px 8px;overflow:auto;list-style:none;font-variant-numeric:tabular-nums}.moves.empty{padding:8px 16px 16px;color:var(--faint);font-size:13px}.move-row{display:grid;grid-template-columns:40px minmax(0,1fr) minmax(0,1fr);align-items:center;min-height:30px;padding:0 8px;border-radius:4px}.move-row:nth-child(odd){background:#ffffff06}.move-number{color:var(--faint);font-size:13px}.move-san{justify-self:start;padding:3px 7px;border-radius:4px;color:var(--text);font-size:14px;font-weight:650}.move-san.current{background:#4a4741;color:var(--text-strong)}.panel-actions{flex:none;display:grid;gap:6px;padding:12px 16px 14px;border-top:1px solid var(--hairline)}.primary-action{height:50px;border-radius:8px;background:var(--green);box-shadow:inset 0 -4px 0 var(--green-shade);color:#fff;font-size:18px;font-weight:800;text-shadow:0 1px 0 rgba(0,0,0,.2);cursor:pointer;transition:background .12s ease}.primary-action:hover{background:var(--green-hover)}.primary-action:disabled{opacity:.6;cursor:wait}.quiet-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.quiet-action{min-height:36px;padding:0 10px;border-radius:6px;background:transparent;color:var(--muted);font-size:13px;font-weight:700;cursor:pointer}.quiet-action:hover,.quiet-action.active{background:#ffffff0f;color:var(--text)}.quiet-action:disabled,.secondary-action:disabled{opacity:.45;cursor:not-allowed}.secondary-action{min-height:36px;padding:0 14px;border-radius:6px;background:#45423d;color:var(--text-strong);font-size:13px;font-weight:700;cursor:pointer}.secondary-action:hover{background:#524e48}.import-drawer{flex:none;display:grid;gap:8px;padding:0 16px 12px;border-top:1px solid var(--hairline)}.import-drawer .section-head{padding:10px 0 0}.import-drawer textarea{width:100%;min-height:92px;resize:vertical;padding:10px;border:1px solid var(--field-border);border-radius:6px;background:var(--field);color:var(--text);font-size:14px;line-height:1.35}.import-drawer textarea::placeholder{color:var(--faint)}.drawer-actions{display:flex;justify-content:flex-end;gap:6px}.file-picker{position:relative;display:inline-grid;place-items:center;min-height:28px;padding:0 10px;border-radius:6px;color:var(--muted);font-size:12px;font-weight:700;cursor:pointer}.file-picker:hover{background:#ffffff0f;color:var(--text)}.file-picker input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.review-panel{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;border-top:1px solid var(--hairline)}.review-head{flex:none;display:flex;align-items:center;gap:8px;padding:10px 12px 8px 16px}.review-head h2{color:var(--text-strong);font-size:15px}.review-status{color:var(--faint);font-size:12px}.review-head .quiet-action{margin-left:auto}.review-scroll{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px;padding:0 16px 12px;overflow:auto}.review-scroll>*{flex:none}.review-scroll .moves{max-height:180px;padding:0}.review-hint{margin:0;color:var(--muted);font-size:13px;line-height:1.45}.review-hint strong{color:var(--text)}.accuracy-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.accuracy-table th,.accuracy-table td{padding:4px 0}.accuracy-table thead th{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.accuracy-table tbody th{color:var(--muted);font-weight:600;text-align:left}.accuracy-table td{width:72px;color:var(--text);text-align:center}.accuracy-row th,.accuracy-row td{padding-bottom:8px}.accuracy-row strong{display:inline-block;min-width:56px;padding:4px 6px;border-radius:4px;background:var(--panel-raised);color:var(--text-strong);font-size:18px}.tone-dot{display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:50%;background:#7dc456}.tone-dot.inaccuracy{background:#f59e42}.tone-dot.mistake{background:#ef7d42}.tone-dot.blunder{background:#ef4444}.tone-dot.excellent,.tone-dot.good{background:#96bc4b}.report-details summary{color:var(--muted);font-size:12px;font-weight:700;cursor:pointer}.report-lines{margin-top:8px;max-height:140px;overflow:auto;padding:8px 10px;border-radius:6px;background:var(--field);color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.45}.review-nav{flex:none;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 16px 14px;border-top:1px solid var(--hairline)}.review-nav button{height:48px;border-radius:8px;background:#45423d;box-shadow:inset 0 -3px #00000040;color:var(--text-strong);font-size:16px;font-weight:800;cursor:pointer}.review-nav button:hover:not(:disabled){background:#524e48}.review-nav button:disabled{opacity:.4;cursor:not-allowed}.coach-card{display:grid;gap:10px;margin:10px;padding:14px;border-radius:6px;background:#f4f1e7;color:#242321;box-shadow:0 12px 28px #0003}.coach-card p{margin:0;color:#34322d;font-size:14px;line-height:1.35;font-weight:650}.coach-card p.game-end-note{padding:8px 10px;border-radius:5px;background:#24232114;color:#242321;font-weight:800}.coach-title{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center}.coach-title strong{color:#242321;font-size:16px;line-height:1.2}.coach-title em{min-width:58px;padding:6px 8px;border-radius:4px;background:#242321;color:#f7f4ec;font-style:normal;font-weight:900;text-align:center}.classification-pill{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#7dc456;color:#fff;font-weight:1000;font-size:12px}.classification-pill.inaccuracy{background:#f59e42}.classification-pill.mistake{background:#ef7d42}.classification-pill.blunder{background:#ef4444}.coach-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.coach-actions div,.continuation{display:grid;gap:2px;padding:9px;border-radius:5px;background:#24232114}.coach-actions span{color:#646058;font-size:11px;font-weight:900;text-transform:uppercase}.coach-actions strong,.continuation{color:#242321;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:13px}.eval-graph{display:block;width:calc(100% - 20px);height:76px;margin:0 10px 10px;border-radius:5px;overflow:hidden;background:#f5f5f5}.eval-white{fill:#f4f4ef}.eval-black{fill:#2d2c29}.eval-midline{stroke:#3c3c3c3d;stroke-width:1}.eval-line{fill:none;stroke:#81a84f;stroke-width:2.2;vector-effect:non-scaling-stroke}.eval-cursor{stroke:#ef4444;stroke-width:2;vector-effect:non-scaling-stroke}.review-scroll .coach-card{margin:0}.review-scroll .eval-graph{width:100%;height:64px;margin:0}@media (max-width: 920px){.app-shell{padding:8px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.game-layout{--board-size: calc(100vw - 16px) ;grid-template-columns:1fr;justify-content:stretch;gap:12px}.play-area{position:static;justify-self:center}.board-frame{border-radius:4px;box-shadow:0 10px 32px #00000052}.side-panel{height:auto;overflow:visible}.moves-section .moves{max-height:240px}.review-scroll{overflow:visible}.piece{font-size:clamp(30px,10.4vw,52px)}.rank-label,.file-label{font-size:11px}select,.import-drawer textarea{font-size:16px}select{height:44px}.segmented button,.quiet-action,.secondary-action,.setup-toggle,.file-picker{min-height:44px}}@media (max-width: 430px){.app-shell{padding-left:6px;padding-right:6px}.game-layout{--board-size: calc(100vw - 12px) }.piece{font-size:clamp(28px,10vw,46px)}.clock{min-width:92px;font-size:20px}.review-badge{min-width:22px;height:22px;font-size:10px}}@media (max-width: 920px) and (orientation: landscape) and (max-height: 520px){.app-shell{padding:6px max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left))}.game-layout{--bar-h: 34px;--bar-gap: 4px;--board-size: calc(100vh - 88px) ;--board-size: calc(100dvh - 88px) ;grid-template-columns:var(--board-size) minmax(0,1fr);gap:12px}.play-area{position:sticky;top:6px}.side-panel{height:calc(100vh - 12px);height:calc(100dvh - 12px);overflow:auto}.player-avatar{width:26px;height:26px;font-size:18px}.player-name{font-size:13px}.captures{height:12px;font-size:11px}.clock{min-width:76px;height:30px;padding:0 8px;font-size:17px}.piece{font-size:calc(var(--board-size) * .105)}.moves-section{flex:none}.moves-section .moves{max-height:none;min-height:150px}.panel-status{padding:10px 14px 8px}.panel-status h1{font-size:16px}.primary-action{height:44px;font-size:16px}}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:16px;background:#0000008c}.dialog{width:min(380px,100%);display:grid;gap:10px;padding:20px;border-radius:10px;background:var(--panel);box-shadow:0 24px 70px #00000080}.dialog h2{color:var(--text-strong);font-size:18px}.dialog p{margin:0;color:var(--muted);font-size:14px;line-height:1.45}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.dialog-button{min-height:44px;border-radius:8px;font-size:14px;font-weight:800;cursor:pointer}.dialog-button.quiet{grid-column:1 / -1;order:3;min-height:36px;background:transparent;color:var(--muted);font-weight:700}.dialog-button.quiet:hover{color:var(--text)}.dialog-button.secondary{background:#45423d;color:var(--text-strong)}.dialog-button.primary{background:var(--green);box-shadow:inset 0 -3px 0 var(--green-shade);color:#fff}@media (max-width: 920px){.app-shell{padding-left:8px}.app-rail{position:static;width:auto;flex-direction:row;padding:0 0 8px;background:transparent;border:0}.brand{grid-auto-flow:column;align-items:center;gap:8px;padding:4px 10px 4px 4px}.brand-mark{width:30px;height:30px}.brand-mark .piece-svg{width:24px;height:24px}.brand-name{font-size:16px}}@media (max-width: 430px){.app-shell{padding-left:6px}}@media (max-width: 920px) and (orientation: landscape) and (max-height: 520px){.app-shell{--rail-w: 48px;padding-left:calc(var(--rail-w) + max(8px,env(safe-area-inset-left)))}.app-rail{position:fixed;width:var(--rail-w);flex-direction:column;padding:8px 0 0 env(safe-area-inset-left);background:#1d1c1a}.brand{grid-auto-flow:row;padding:4px}.brand-name{font-size:10px}}
