:root{--board-size: min(80vmin, 640px);--square-size: calc(var(--board-size) / 8);--color-light: #f0d9b5;--color-dark: #b58863;--color-highlight: rgba(50, 200, 50, .35);--color-selected: rgba(255, 200, 0, .55);--color-last-from: rgba(255, 255, 0, .3);--color-last-to: rgba(255, 255, 0, .55);--color-in-check: rgba(255, 60, 60, .55);--color-text: #1c1a17;--color-text-muted: #6b5e51;--color-card-bg: #fbf7f0;--color-card-border: #d4c3a4;--color-page-bg: #ece2cc;--color-accent: #4f6e44;--color-accent-hover: #3d5635;--color-surface-soft: rgba(0, 0, 0, .04);--captures-row-h: 3.15rem}body.theme-dark{--color-text: #ebe7e0;--color-text-muted: #968a7c;--color-card-bg: #2a2218;--color-card-border: #4a3f33;--color-page-bg: #181410;--color-accent: #7ba56b;--color-accent-hover: #95c485;--color-surface-soft: rgba(255, 255, 255, .05)}@media(prefers-color-scheme:dark){body.theme-system{--color-text: #ebe7e0;--color-text-muted: #968a7c;--color-card-bg: #2a2218;--color-card-border: #4a3f33;--color-page-bg: #181410;--color-accent: #7ba56b;--color-accent-hover: #95c485;--color-surface-soft: rgba(255, 255, 255, .05)}}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--color-text);background:var(--color-page-bg);overflow-x:hidden}.app-shell{display:grid;grid-template-columns:min-content minmax(280px,380px);gap:2rem;padding:2rem clamp(1rem,4vw,4rem);min-height:100vh;align-items:start;justify-content:center}@media(max-width:1000px){.app-shell{grid-template-columns:1fr;padding:1rem;justify-content:stretch}}.app-shell>*{min-width:0}.app-shell h1{margin:0 0 1rem;font-weight:600;font-size:1.6rem;letter-spacing:.02em}.sidebar-card{background:var(--color-card-bg);border:1px solid var(--color-card-border);border-radius:.75rem;padding:1rem 1.1rem;box-shadow:0 6px 16px #3c28140f;display:flex;flex-direction:column;min-height:0}@media(min-width:1001px){.sidebar-card{margin-top:calc(var(--captures-row-h) - 2.2rem);height:var(--board-size)}}.card-section+.card-section,.card-section+.store-badges{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--color-card-border)}.card-section{flex:0 0 auto}.card-section.moves-section{flex:1 1 0;min-height:0;display:flex;flex-direction:column}.card-section.moves-section .move-list{flex:1 1 0;min-height:0;overflow-y:auto;margin-top:.5rem}.form-row{display:flex;align-items:center;gap:.65rem;margin:.35rem 0}.form-row label{flex:0 0 6.2rem;margin:0;font-size:.78rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.form-row select,.form-row input[type=text]{flex:1 1 0;min-width:0;width:100%;padding:.35rem .5rem;border:1px solid var(--color-card-border);border-radius:.35rem;font-size:.9rem;font-family:inherit;background:var(--color-card-bg);color:var(--color-text)}.form-row select:disabled,.form-row input[type=text]:disabled{opacity:.55;cursor:not-allowed}.new-game-actions{display:flex;gap:.45rem;margin-top:.65rem}.new-game-actions .primary-btn,.new-game-actions .secondary-btn{flex:1 1 0;margin-top:0}.primary-btn,.secondary-btn{width:100%;padding:.5rem .8rem;border-radius:.4rem;font-size:.9rem;font-family:inherit;font-weight:600;cursor:pointer;transition:background-color .15s ease,opacity .15s ease}.primary-btn{border:none;background:var(--color-accent);color:#fff}.primary-btn:hover:not(:disabled){background:var(--color-accent-hover)}.secondary-btn{background:transparent;color:var(--color-text);border:1px solid var(--color-card-border)}.secondary-btn:hover:not(:disabled){background:var(--color-surface-soft)}.primary-btn:disabled,.secondary-btn:disabled{opacity:.5;cursor:not-allowed}.primary-btn:focus-visible,.secondary-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}label.status-toggle{display:inline-flex;align-items:center;gap:.45rem;margin:.4rem 0 .1rem;font-size:.8rem;color:var(--color-text);cursor:pointer;user-select:none;text-transform:none;letter-spacing:normal}.status-toggle input[type=checkbox]{accent-color:var(--color-accent);width:.95rem;height:.95rem;cursor:pointer}.top-right-controls{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:.5rem}@media(min-width:1001px){.top-right-controls{margin-top:0;margin-bottom:0}}.fullscreen-exit-button{display:none}body.fullscreen .fullscreen-exit-button{display:flex;position:fixed;top:.75rem;right:.75rem;z-index:60;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;border-radius:.5rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#ffffffd9;cursor:pointer;transition:background-color .15s ease}body.fullscreen .fullscreen-exit-button:hover{background:#fff3;color:#fff}.theme-picker{display:flex;background:var(--color-card-bg);border:1px solid var(--color-card-border);border-radius:.5rem;padding:.15rem;gap:.1rem;box-sizing:border-box;box-shadow:0 1px 3px #00000014}.theme-segment{display:flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;padding:0;background:transparent;border:0;border-radius:.35rem;cursor:pointer;color:var(--color-text-muted);transition:background-color .12s ease,color .12s ease}.theme-segment:hover{color:var(--color-text)}.theme-segment[aria-checked=true]{background:var(--color-surface-soft);color:var(--color-text)}.theme-segment:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.store-badges{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.4rem;width:100%;flex-wrap:wrap}.store-badge{--badge-h: 30px;display:flex;align-items:center;justify-content:center;height:var(--badge-h);text-decoration:none;transition:transform .12s ease,box-shadow .12s ease;flex:0 0 auto}.store-badge:hover{transform:translateY(-1px)}.store-badge:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:.4rem}.store-badge img{display:block;height:100%;width:auto;max-width:100%}.github-badge{box-sizing:border-box;padding:0 .55rem;gap:.3rem;background:#181717;color:#fff;border:1px solid rgba(255,255,255,.55);border-radius:.35rem;font-size:.75rem;font-weight:600;letter-spacing:.01em;box-shadow:0 1px 2px #00000026;white-space:nowrap}.github-badge svg{width:14px;height:14px}.github-badge:hover{background:#2a2a2a;box-shadow:0 2px 6px #0000002e}.github-badge svg{flex:0 0 auto}.board-column{display:flex;flex-direction:column;align-items:center;gap:.5rem}.board-side{display:flex;align-items:center;justify-content:space-between;width:var(--board-size);gap:.75rem;margin:.15rem 0;min-height:1.8rem}.loading-indicator{margin:.65rem 0 0;font-size:.8rem;color:var(--color-text-muted);text-align:center;line-height:1.35;min-height:1.1em}.captures{flex:1;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:.05rem}.capture-piece{width:1.4rem;height:1.4rem;background-size:contain;background-repeat:no-repeat;background-position:center;flex:0 0 auto;margin-right:-.45rem}.clock{background:var(--color-card-bg);border:1px solid var(--color-card-border);border-radius:.4rem;padding:.4rem .7rem;font-variant-numeric:tabular-nums;font-weight:600;min-width:6.5rem;color:var(--color-text-muted);display:flex;align-items:baseline;justify-content:center;gap:.55rem}.clock-time{font-size:1.2rem}.clock-score{font-size:.9rem;color:var(--color-accent);font-weight:700;letter-spacing:.01em}.clock-score:empty{display:none}.clock.running{color:var(--color-text);background:var(--color-card-bg);box-shadow:0 0 0 2px var(--color-accent) inset}.board{width:var(--board-size);height:var(--board-size);display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border-radius:.5rem;overflow:hidden;box-shadow:0 10px 30px #3c281433;user-select:none;touch-action:none}.square{position:relative;display:flex;align-items:center;justify-content:center}.square.light{background:var(--color-light)}.square.dark{background:var(--color-dark)}.square .coord-label{position:absolute;font-size:.7rem;opacity:.6;pointer-events:none}.square .rank-label{top:.15rem;left:.25rem}.square .file-label{bottom:.1rem;right:.3rem}.square.light .coord-label{color:var(--color-dark)}.square.dark .coord-label{color:var(--color-light)}.square.highlight:after{content:"";position:absolute;inset:25%;background:var(--color-highlight);border-radius:50%;pointer-events:none}.square.highlight:has(.piece):after{inset:8%;background:transparent;border:4px solid var(--color-highlight);border-radius:50%}.square.selected{background-color:var(--color-selected)!important}.square.last-from{background-color:var(--color-last-from)!important}.square.last-to{background-color:var(--color-last-to)!important}.square.in-check{background-color:var(--color-in-check)!important}.piece{width:92%;height:92%;background-size:contain;background-repeat:no-repeat;background-position:center;cursor:grab}.piece.dragging{cursor:grabbing}.sidebar-card h2{margin:0 0 .5rem;font-size:1rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.status{font-size:1rem;font-weight:600;margin:0 0 .25rem}.eval{font-size:.85rem;color:var(--color-text-muted);margin:0;min-height:0}.fen-row{display:flex;align-items:flex-start;gap:.4rem;margin-top:.4rem}.fen-value{flex:1;min-width:0;background:var(--color-surface-soft);border:1px solid var(--color-card-border);border-radius:.3rem;padding:.35rem .5rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.7rem;line-height:1.35;color:var(--color-text);word-break:break-all;outline:none;transition:border-color .12s ease}.fen-value:focus{border-color:var(--color-accent)}.icon-btn{flex:0 0 auto;width:1.9rem;height:1.9rem;padding:0;background:transparent;border:1px solid var(--color-card-border);border-radius:.3rem;color:var(--color-text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background-color .12s ease,color .12s ease,border-color .12s ease}.icon-btn:hover{background:var(--color-surface-soft);color:var(--color-text)}.icon-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.icon-btn .icon-copy{display:block}.icon-btn .icon-check,.icon-btn .icon-load{display:none}.icon-btn.copied{color:var(--color-accent);border-color:var(--color-accent)}.icon-btn.copied .icon-copy{display:none}.icon-btn.copied .icon-check{display:block}.icon-btn.load-mode{color:#fff;background:var(--color-accent);border-color:var(--color-accent)}.icon-btn.load-mode:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);color:#fff}.icon-btn.load-mode .icon-copy{display:none}.icon-btn.load-mode .icon-load{display:block}.move-list{list-style:none;padding:0;margin:.5rem 0 0;display:flex;flex-wrap:wrap;gap:.35rem .5rem;max-height:28rem;overflow-y:auto;font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.9rem}.move-list li{padding:.15rem .4rem;background:var(--color-surface-soft);border-radius:.25rem}.move-list li[data-fullmove]:before{content:attr(data-fullmove) ".";color:var(--color-text-muted);margin-right:.35rem}.footer{margin-top:.85rem;text-align:center;color:var(--color-text-muted);font-size:.68rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.footer a{color:var(--color-accent)}.board-area{position:relative;width:var(--board-size);height:var(--board-size);isolation:isolate}.status-live[hidden],.status-game-over[hidden],.status-actions[hidden]{display:none!important}.status-game-over{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.15rem 0;animation:gameResultFade .25s ease}.status-game-over-icon{display:none}.status-game-over-title{font-size:1.05rem;font-weight:700;margin:0;color:var(--color-text);letter-spacing:.01em}.status-game-over-reason{font-size:.82rem;color:var(--color-text-muted);margin:0}.status-game-over[data-result=white]{border-left:3px solid var(--color-accent);padding-left:.55rem}.status-game-over[data-result=black]{border-left:3px solid #2b2118;padding-left:.55rem}.status-game-over[data-result=draw]{border-left:3px solid var(--color-card-border);padding-left:.55rem}.status-actions{display:flex;gap:.4rem;margin-top:.45rem}.action-btn{flex:1;padding:.45rem .7rem;border-radius:.4rem;font-size:.85rem;font-family:inherit;font-weight:600;cursor:pointer;border:1px solid var(--color-card-border);background:var(--color-card-bg);color:var(--color-text);transition:background-color .12s ease}.action-btn:hover:not(:disabled){background:var(--color-surface-soft)}.action-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn.primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.action-btn.primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.action-btn.secondary{background:transparent}@keyframes gameResultFade{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.hint-overlay,.last-move-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.hint-overlay{z-index:6;color:#288c3cd9}.last-move-overlay{z-index:1}.hint-overlay[hidden],.last-move-overlay[hidden]{display:none}.piece{position:relative;z-index:2}@keyframes mateKingPulse{0%,to{background-color:#ff3c3c8c}50%{background-color:#ff3c3cd9}}body.game-ended .square.in-check{animation:mateKingPulse 1.4s ease-in-out infinite}.replay-panel{width:100%;box-sizing:border-box;background:#00000006;border:1px solid var(--color-card-border);border-radius:.45rem;padding:.55rem .65rem;margin-bottom:.85rem;display:flex;flex-direction:column;gap:.4rem;min-width:0;max-width:100%;overflow:hidden}.replay-row{min-width:0}.replay-panel[hidden]{display:none}.replay-row{display:flex;align-items:center;gap:.4rem}.replay-row-bottom{justify-content:space-between;font-size:.85rem;color:var(--color-text-muted)}.replay-step{flex:0 0 auto;width:2rem;height:2rem;padding:0;border-radius:.35rem;border:1px solid var(--color-card-border);background:var(--color-card-bg);color:var(--color-text);font-size:.9rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit}.replay-step:hover:not(:disabled){background:var(--color-surface-soft)}.replay-step:disabled{opacity:.4;cursor:not-allowed}.replay-slider{flex:1;min-width:0;margin:0 .2rem;accent-color:var(--color-accent)}.replay-counter{font-variant-numeric:tabular-nums;font-weight:600}.replay-move-label{flex:1;text-align:center;font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--color-text)}.replay-panel .secondary{padding:.35rem .8rem;border-radius:.4rem;font-size:.85rem;font-family:inherit;font-weight:600;cursor:pointer;border:1px solid var(--color-card-border);background:transparent;color:var(--color-text)}.replay-panel .secondary:hover{background:var(--color-surface-soft)}.replay-panel .primary{padding:.35rem .8rem;border-radius:.4rem;font-size:.85rem;font-family:inherit;font-weight:600;cursor:pointer;border:1px solid var(--color-accent);background:var(--color-accent);color:#fff}.replay-panel .primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.move-list li.replay-current{background:var(--color-accent);color:#fff;border-radius:.25rem}.move-list li.replay-future{opacity:.35}body.replay-mode .board{pointer-events:none}body.replay-mode .status-actions .action-btn{opacity:.5;pointer-events:none}body.engine-thinking{cursor:progress}body.engine-thinking .board{pointer-events:none}.board-area:after{content:"";position:absolute;top:.5rem;right:.5rem;width:1.2rem;height:1.2rem;border:2.5px solid rgba(255,255,255,.6);border-top-color:var(--color-accent);border-radius:50%;opacity:0;transform:scale(.7);transition:opacity .12s ease,transform .12s ease;pointer-events:none;z-index:5}body.engine-thinking .board-area:after{opacity:1;transform:scale(1);animation:engineThinkSpin .9s linear infinite}@keyframes engineThinkSpin{to{transform:rotate(360deg)}}body.engine-thinking .eval{color:var(--color-accent);font-style:italic}body.fullscreen.engine-thinking .board-area:after{border-color:#ffffff40;border-top-color:#ffffffd9}.fullscreen-toggle{width:2.2rem;height:2.2rem;border-radius:.5rem;background:var(--color-card-bg);border:1px solid var(--color-card-border);color:var(--color-text);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .15s ease,transform .15s ease;box-shadow:0 1px 3px #00000014}.fullscreen-toggle:hover{background:var(--color-card-bg);transform:scale(1.05)}.fullscreen-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}body.fullscreen{background:#2a2218}body.fullscreen .app-shell{grid-template-columns:1fr;padding:0;min-height:100vh;align-items:center;justify-items:center}body.fullscreen .app-shell>*:not(.board-column){display:none}body.fullscreen .clock.untimed{display:none}body.fullscreen .board-column{--board-size: min(var(--fullscreen-board-size, 94vmin), 94vmin);gap:.4rem;height:100vh;width:100vw;max-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;overflow:hidden}body.fullscreen .replay-panel{background:#ffffff14;border-color:#ffffff26;color:#ffffffd9}body.fullscreen .replay-panel .replay-row-bottom{color:#ffffffb3}body.fullscreen .replay-step{background:#ffffff0f;border-color:#ffffff2e;color:#ffffffd9}body.fullscreen .replay-step:hover:not(:disabled){background:#ffffff1f}body.fullscreen .replay-panel .secondary{border-color:#fff3;color:#ffffffd9;background:transparent}body.fullscreen .replay-panel .secondary:hover{background:#ffffff1a}body.fullscreen .board-side{margin:0}body.fullscreen .clock{background:#ffffff14;border-color:#ffffff26;color:#ffffffd9}body.fullscreen .clock.running{background:#ffffff2e;color:#fff}body.fullscreen .clock-score{color:#ffffffe6}
