*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d1728;--surface: #13213a;--surface2: #172b48;--accent: #2f6feb;--accent-soft: rgba(47, 111, 235, .16);--green: #1f9d76;--green-soft: rgba(31, 157, 118, .14);--text: #e8eef9;--text-muted: #9baac3;--border: rgba(148, 163, 184, .26);--radius: 10px;--radius-lg: 12px;--panel-top: rgba(20, 31, 53, .94);--panel-bottom: rgba(13, 23, 40, .97);--panel-shadow: 0 10px 26px rgba(3, 10, 24, .35);--focus-ring: 0 0 0 3px rgba(47, 111, 235, .32)}body{font-family:IBM Plex Sans,Manrope,Segoe UI,sans-serif;background:radial-gradient(920px 520px at 6% -20%,rgba(99,140,201,.18),transparent 62%),radial-gradient(860px 520px at 96% 120%,rgba(74,112,161,.14),transparent 64%),linear-gradient(160deg,#0d1728,#111f35 48%,#142540);color:var(--text);min-height:100vh;display:flex;justify-content:center;align-items:center;padding:1.1rem;position:relative;overflow-x:hidden}body:before,body:after{content:"";position:fixed;pointer-events:none;z-index:0}body:before{width:520px;height:520px;top:-220px;right:-180px;border-radius:50%;background:radial-gradient(circle at center,#5e84ba2e,#5e84ba00 70%);filter:blur(3px)}body:after{inset:0;background:radial-gradient(680px 460px at 52% -18%,rgba(255,255,255,.06),transparent 72%);opacity:.26}#root{width:100%;max-width:1500px;margin:0 auto;position:relative;z-index:1}.new-game-panel{background:var(--surface);border-radius:var(--radius);flex-shrink:0}.mode-tabs{display:flex;border-bottom:1px solid var(--border)}.mode-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:.35rem;padding:.6rem .5rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s}.mode-tab:hover{color:var(--text);background:#ffffff08}.mode-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.mode-tab svg{opacity:.7}.mode-tab.active svg{opacity:1}.quick-settings{padding:.6rem .75rem .75rem;display:flex;flex-direction:column;gap:.5rem}.setting-row{display:flex;align-items:center;gap:.5rem}.setting-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;width:38px;flex-shrink:0}.level-select{flex:1;padding:.4rem 1.5rem .4rem .5rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.8rem;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='%23999'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;transition:border-color .15s}.level-select:hover{border-color:var(--accent)}.level-select:focus{outline:none;border-color:var(--accent)}.level-select option{background:var(--surface);color:var(--text);padding:.4rem}.color-picker{display:flex;gap:.4rem;flex:1}.color-btn{width:36px;height:36px;border-radius:50%;border:2px solid var(--border);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.color-btn.white{background:#f0f0f0}.color-btn.black{background:#333}.color-btn:hover{border-color:var(--accent);transform:scale(1.1)}.color-btn.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.color-piece{font-size:1.2rem;line-height:1}.color-btn.white .color-piece{color:#333}.color-btn.black .color-piece{color:#f0f0f0}.advanced-toggle{background:none;border:none;color:var(--text-muted);font-size:.75rem;cursor:pointer;padding:.2rem 0;text-align:left;transition:color .15s}.advanced-toggle:hover{color:var(--text)}.position-input{width:100%;padding:.5rem .6rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:Consolas,Courier New,monospace;font-size:.8rem;resize:vertical}.position-input::placeholder{color:var(--text-muted)}.position-input:focus{outline:none;border-color:var(--accent)}.new-game-btn{display:flex;align-items:center;justify-content:center;gap:.4rem;width:100%;padding:.5rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:opacity .15s}.new-game-btn:hover{opacity:.85}.toolbar{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:.3rem;padding:.4rem;background:var(--surface);border-radius:var(--radius)}.toolbar-group{display:flex;gap:.2rem}.toolbar-divider{width:1px;height:24px;background:var(--border);margin:0 .1rem}.toolbar-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;padding:.35rem .4rem;background:transparent;border:1px solid transparent;color:var(--text-muted);border-radius:6px;flex-shrink:1;min-width:0;cursor:pointer;transition:all .15s;min-width:40px}.toolbar-btn:hover:not(:disabled){background:var(--surface2);color:var(--text);border-color:var(--border)}.toolbar-btn:disabled{opacity:.3;cursor:not-allowed}.toolbar-btn.hint:hover:not(:disabled){background:var(--green-soft);color:var(--green);border-color:var(--green)}.toolbar-btn.danger:hover:not(:disabled){background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.toolbar-label{font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em;display:none}.toolbar-wrapper{display:flex;flex-direction:column;gap:.3rem;flex-shrink:0}.toolbar-help{font-size:.7rem;color:var(--text-muted);text-align:center;line-height:1.4;padding:0 .25rem}:root{--board-size: min(640px, calc(100vh - 180px) , calc(100vw - 420px) );--right-panel-width: 340px}.game-layout{display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:center;align-items:flex-start}.game-left{display:flex;gap:.5rem;align-items:flex-start}.game-right{width:var(--right-panel-width);display:flex;flex-direction:column;gap:.5rem;position:relative;z-index:10;max-height:calc(var(--board-size) + 72px + .52rem);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.game-right>*{flex-shrink:0}.game-moves{width:var(--right-panel-width);display:flex;flex-direction:column;max-height:calc(var(--board-size) + 72px + .52rem);position:relative;z-index:10}.game-moves>.move-history{flex:1 1 auto;max-height:none;min-height:0}.eval-bar{--eval-track-width: 30px;display:flex;flex-direction:column;align-items:center;width:34px;position:relative;padding-top:calc(26px + .26rem)}.eval-bar-spacer{visibility:hidden;pointer-events:none}.eval-bar-track{width:var(--eval-track-width);height:var(--board-size);border-radius:999px;overflow:hidden;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.14);position:relative;background:#101524;box-shadow:inset 0 0 0 1px #0d1324b8,0 10px 24px #00000059}.eval-bar-track:before{content:"";position:absolute;inset:1px;border-radius:inherit;background:linear-gradient(100deg,rgba(255,255,255,.18),transparent 40%);opacity:.45;z-index:3;pointer-events:none}.eval-bar-black{background:linear-gradient(180deg,#2b303b,#10141c);transition:height .35s cubic-bezier(.22,1,.36,1);position:relative;z-index:1}.eval-bar-white{background:linear-gradient(180deg,#f8fbff,#d7dfec);transition:height .35s cubic-bezier(.22,1,.36,1);position:relative;z-index:1}.eval-bar-midline{position:absolute;left:2px;right:2px;top:50%;height:1px;background:#a5b7d773;z-index:2;pointer-events:none}.eval-bar-marker{position:absolute;left:50%;transform:translate(-50%,-50%);height:18px;width:calc(100% - 4px);max-width:calc(100% - 4px);padding:0 2px;border-radius:999px;font-size:.55rem;font-weight:700;line-height:1;text-align:center;display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:clip;font-variant-numeric:tabular-nums;border:1px solid transparent;z-index:4;pointer-events:none;transition:top .35s cubic-bezier(.22,1,.36,1),background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.eval-bar-marker-white{background:#f4faffe6;color:#131b2f;border-color:#ffffffad;box-shadow:0 6px 18px #81a2c757}.eval-bar-marker-black{background:#161c27eb;color:#ecf1ff;border-color:#8fa4c580;box-shadow:0 6px 18px #0000006b}.game-status{padding:.5rem .75rem;background:var(--surface);border-radius:var(--radius);font-size:.85rem;font-weight:500;display:flex;align-items:center;justify-content:center;gap:.5rem;flex-shrink:0}.status-hint-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .5rem;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--accent);font-size:.75rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.status-hint-btn:hover:not(:disabled){background:var(--accent);color:#fff;border-color:var(--accent)}.status-hint-btn:disabled{opacity:.4;cursor:not-allowed}.game-status.game-over{background:var(--accent);color:#fff;font-weight:600}.game-status.in-check{background:#e07000;color:#fff}.game-status.thinking{color:var(--text-muted);font-style:italic;font-weight:400}.hint-banner{padding:.4rem .75rem;background:var(--green-soft);border-left:3px solid var(--green);border-radius:4px;font-size:.85rem;color:var(--green);flex-shrink:0;font-weight:500;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .15s}.hint-banner:hover{background:#4caf5040}.hint-play{font-size:.7rem;opacity:.7;text-transform:uppercase;letter-spacing:.03em}.move-history{background:var(--surface);border-radius:var(--radius);overflow:hidden;max-height:180px;min-height:60px;display:flex;flex-direction:column;flex-shrink:1}.move-history-header{padding:.3rem .5rem;font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:.3rem;flex-wrap:wrap}.move-history-title{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.playback-inline{display:flex;align-items:center;gap:.25rem;margin-left:auto}.playback-inline .playback-buttons{gap:.05rem}.playback-inline .playback-btn{width:22px;height:22px}.playback-inline .playback-btn.play-pause{width:24px;height:24px}.playback-inline .speed-btn{padding:.08rem .25rem;font-size:.6rem}.restore-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .45rem;background:transparent;border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;transition:all .15s}.restore-btn:hover{background:var(--accent);color:#fff}.move-history-list{overflow-y:auto;padding:.4rem;flex:1}.move-history-empty{color:var(--text-muted);font-style:italic;padding:.5rem;font-size:.85rem}.move-row{display:flex;align-items:center;gap:.2rem;padding:.1rem 0}.move-num{width:1.8rem;text-align:right;color:var(--text-muted);font-size:.8rem;flex-shrink:0}.move-san{padding:.15rem .45rem;border-radius:4px;cursor:pointer;font-size:.85rem;min-width:3.2rem;text-align:center;transition:background .1s}.move-san:hover{background:var(--surface2)}.move-san.active{background:var(--accent);color:#fff}.move-quality{font-weight:700;margin-left:2px;vertical-align:super;font-size:.7em}.move-quality.brilliant{color:#1baca6}.move-quality.great{color:#5b8bb4}.move-quality.inaccuracy{color:#e6b422}.move-quality.mistake{color:#e67e22}.move-quality.blunder{color:#e74c3c}.move-san.active .move-quality,.move-san.active .move-quality-dot{color:inherit;background:#ffffffb3!important}.move-quality-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-left:3px;vertical-align:middle}.move-analyzing{display:inline-block;width:6px;height:6px;border:1.5px solid var(--text-muted);border-top-color:transparent;border-radius:50%;margin-left:3px;vertical-align:middle;animation:spin .6s linear infinite}.move-san.active .move-analyzing{border-color:#ffffff80;border-top-color:transparent}@keyframes spin{to{transform:rotate(360deg)}}.top-moves{background:var(--surface);border-radius:var(--radius);container-type:inline-size}.top-moves-header{display:flex;align-items:center;justify-content:space-between;padding:.3rem .6rem;font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}.engine-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .4rem;border:1px solid var(--border);border-radius:var(--radius);background:transparent;color:var(--text-muted);font-size:.7rem;cursor:pointer;text-transform:uppercase;letter-spacing:.03em;transition:background .15s,color .15s,border-color .15s}.engine-toggle:hover{background:var(--surface2)}.engine-toggle.on{color:var(--accent);border-color:var(--accent)}.engine-toggle.off{color:var(--text-muted);opacity:.7}.top-moves-off{padding:.35rem .6rem;color:var(--text-muted);font-size:.78rem;font-style:italic}.top-moves-loading{padding:.35rem .6rem;color:var(--text-muted);font-style:italic;font-size:.78rem}.top-moves-body{display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.top-moves-body::-webkit-scrollbar{width:4px}.top-moves-body::-webkit-scrollbar-track{background:transparent}.top-moves-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.top-move-row{display:flex;align-items:center;gap:.4rem;padding:.25rem .6rem;cursor:pointer;transition:background .1s}.top-move-row:hover{background:var(--surface2)}.top-move-rank{color:var(--text-muted);font-size:.75rem;width:1.2rem}.top-move-san{font-weight:600;font-size:.82rem;min-width:2.6rem}.top-move-score{color:var(--text-muted);font-size:.75rem;margin-left:auto}.top-move-depth{color:var(--text-muted);font-size:.65rem}.game-board-wrapper{display:flex;align-items:stretch}.board-column{display:flex;flex-direction:column;width:var(--board-size);line-height:0}.board-rank-labels{display:flex;flex-direction:column;justify-content:space-around;padding-right:6px}.board-file-labels{display:flex;justify-content:space-around;padding-top:4px;line-height:normal}.board-label{color:#fff;font-size:13px;font-weight:600;text-align:center;-webkit-user-select:none;user-select:none}.move-history-list::-webkit-scrollbar,.import-game-list::-webkit-scrollbar,.game-right::-webkit-scrollbar{width:6px}.move-history-list::-webkit-scrollbar-track,.import-game-list::-webkit-scrollbar-track,.game-right::-webkit-scrollbar-track{background:transparent}.move-history-list::-webkit-scrollbar-thumb,.import-game-list::-webkit-scrollbar-thumb,.game-right::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.import-overlay{position:fixed;inset:0;background:#0009;display:flex;justify-content:center;align-items:center;z-index:100}.import-dialog{background:var(--surface);border-radius:10px;width:440px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}.import-header{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1rem;border-bottom:1px solid var(--border)}.import-header h3{font-size:1rem;font-weight:600}.import-close{background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:.2rem .5rem;border-radius:4px}.import-close:hover{color:var(--text);background:var(--surface2)}.import-tabs{display:flex;border-bottom:1px solid var(--border)}.import-tabs button{flex:1;padding:.6rem 1rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.85rem;cursor:pointer;transition:all .15s}.import-tabs button:hover{color:var(--text)}.import-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.import-body{padding:1rem;overflow-y:auto}.import-textarea{width:100%;padding:.6rem .8rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:Consolas,Courier New,monospace;font-size:.85rem;resize:vertical;margin-bottom:.75rem}.import-textarea::placeholder{color:var(--text-muted)}.import-textarea:focus{outline:none;border-color:var(--accent)}.import-loading,.import-empty{color:var(--text-muted);font-style:italic;text-align:center;padding:1rem 0}.import-game-list{display:flex;flex-direction:column;gap:.4rem;max-height:320px;overflow-y:auto}.import-game-item{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;padding:.6rem .8rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);cursor:pointer;transition:all .15s;width:100%;text-align:left}.import-game-item:hover{border-color:var(--accent)}.game-title{font-weight:600;font-size:.9rem;color:var(--accent)}.game-players{font-size:.8rem;color:var(--text)}.game-meta{font-size:.8rem;color:var(--text-muted)}.import-body .start-button{display:flex;align-items:center;justify-content:center;width:100%;padding:.5rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:opacity .15s}.import-body .start-button:hover{opacity:.85}.import-body .start-button:disabled{opacity:.4;cursor:not-allowed}.save-dialog{background:var(--surface);border-radius:10px;width:380px;box-shadow:0 8px 32px #00000080}.save-body{padding:1rem;display:flex;flex-direction:column;gap:.6rem}.save-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.save-input{width:100%;padding:.5rem .6rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.9rem}.save-input::placeholder{color:var(--text-muted)}.save-input:focus{outline:none;border-color:var(--accent)}.quality-badge{position:absolute;z-index:5;transform:translate(-50%,-50%);min-width:20px;height:20px;border-radius:10px;padding:0 4px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;line-height:1;pointer-events:none;box-shadow:0 1px 4px #0006;font-family:Segoe UI,system-ui,sans-serif}.board-container{position:relative;line-height:0}.promotion-scrim{position:absolute;inset:0;z-index:10;background:#00000059;border-radius:4px}.promotion-picker{position:absolute;z-index:11;width:12.5%;display:flex;flex-direction:column}.promotion-picker.from-top{top:0}.promotion-picker.from-bottom{bottom:0}.promotion-btn{aspect-ratio:1;width:100%;display:flex;align-items:center;justify-content:center;font-size:2.5rem;background:#f0f0f0;border:none;cursor:pointer;transition:background .1s;line-height:1}.promotion-btn:hover{background:#ffe082}.promotion-btn:first-child{border-radius:4px 4px 0 0}.promotion-btn:last-child{border-radius:0 0 4px 4px}.board-area{display:flex;flex-direction:column}.captured-pieces{display:flex;align-items:center;gap:.25rem;height:24px;padding:0 4px}.captured-icons{font-size:1.1rem;letter-spacing:0px;line-height:1;opacity:1}.material-advantage{font-size:.8rem;font-weight:600;opacity:.9}.material-advantage{font-size:.7rem;color:var(--text-muted);font-weight:600;margin-left:2px}.toolbar-btn.resign-confirming{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);animation:resign-pulse .8s ease-in-out infinite alternate}@keyframes resign-pulse{0%{opacity:.7}to{opacity:1}}.settings-panel{position:relative;margin-left:auto;z-index:30}.settings-toggle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text-muted);cursor:pointer;transition:all .15s}.settings-toggle:hover{color:var(--text);border-color:var(--accent)}.settings-dropdown{position:absolute;bottom:calc(100% + 8px);right:0;z-index:1000;padding:.6rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 16px #0006;display:flex;flex-direction:column;gap:.5rem;min-width:200px}.settings-section{display:flex;flex-direction:column;gap:.3rem}.settings-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.theme-swatches{display:flex;gap:.3rem}.theme-swatch{width:32px;height:32px;border-radius:4px;overflow:hidden;border:2px solid var(--border);cursor:pointer;display:flex;flex-direction:column;padding:0;background:none;transition:border-color .15s}.theme-swatch:hover{border-color:var(--accent)}.theme-swatch.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.swatch-half{flex:1;display:block}.repertoire-trainer{background:var(--surface);border-radius:var(--radius);overflow:hidden;flex-shrink:0}.repertoire-header{padding:.4rem .75rem;font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.repertoire-upload{padding:.6rem;display:flex;flex-direction:column;gap:.4rem}.repertoire-textarea{width:100%;padding:.5rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:Consolas,Courier New,monospace;font-size:.8rem;resize:vertical}.repertoire-textarea:focus{outline:none;border-color:var(--accent)}.repertoire-color-row{display:flex;align-items:center;gap:.4rem}.repertoire-opening-row{display:flex;align-items:center;padding:.4rem .75rem}.repertoire-opening-name{font-size:.85rem;font-weight:600;color:var(--text)}.repertoire-progress{margin-left:auto;font-size:.75rem;color:var(--text-muted)}.repertoire-step{padding:.15rem .75rem;font-size:.75rem;color:var(--text-muted)}.repertoire-lesson{margin:.25rem .75rem .5rem;border:1px solid var(--border);border-radius:4px;background:var(--bg-subtle, rgba(0, 0, 0, .02))}.repertoire-lesson-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:.4rem .6rem;background:transparent;border:none;cursor:pointer;color:var(--text);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.repertoire-lesson-toggle:hover{background:#0000000a}.repertoire-lesson-title{color:var(--text-muted)}.repertoire-lesson-body{padding:0 .6rem .55rem}.repertoire-lesson-goal{margin:0 0 .45rem;font-size:.82rem;line-height:1.45;color:var(--text)}.repertoire-lesson-ideas{margin:0;padding-left:1.1rem;font-size:.78rem;line-height:1.45;color:var(--text-muted)}.repertoire-lesson-ideas li{margin-bottom:.25rem}.repertoire-lesson-ideas li:last-child{margin-bottom:0}.repertoire-deviation{padding:.4rem .75rem;background:var(--accent-soft);border-left:3px solid var(--accent);font-size:.85rem;color:var(--accent);display:flex;align-items:center}.repertoire-complete{padding:.4rem .75rem;background:var(--green-soft);border-left:3px solid var(--green);font-size:.85rem;color:var(--green);display:flex;align-items:center}.repertoire-lines{max-height:200px;overflow-y:auto}.repertoire-line{display:flex;align-items:center;gap:.5rem;padding:.35rem .75rem;cursor:pointer;transition:background .1s;font-size:.8rem}.repertoire-line:hover{background:var(--surface2)}.repertoire-line.active{background:var(--surface2);border-left:2px solid var(--accent)}.repertoire-line.completed{opacity:.6}.line-name{font-weight:500}.line-moves{color:var(--text-muted);font-size:.75rem;margin-left:auto}.line-check{color:var(--green);font-weight:700}.repertoire-reset-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.15rem .3rem;border-radius:4px;display:flex;align-items:center}.repertoire-reset-btn:hover{background:var(--surface2);color:var(--text)}.repertoire-select{width:100%;padding:.4rem .5rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.8rem;cursor:pointer}.repertoire-select:focus{outline:none;border-color:var(--accent)}.repertoire-custom-toggle{background:none;border:none;color:var(--text-muted);font-size:.75rem;cursor:pointer;padding:.3rem 0;text-decoration:underline}.repertoire-custom-toggle:hover{color:var(--text)}.repertoire-source-row{display:flex;gap:.3rem}.repertoire-source-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.3rem;padding:.35rem .4rem;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text-muted);font-size:.7rem;cursor:pointer;transition:all .15s}.repertoire-source-btn:hover{color:var(--text);border-color:var(--text-muted)}.repertoire-source-btn.active{color:var(--accent);border-color:var(--accent)}.repertoire-saved-games{max-height:180px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;background:var(--surface2)}.repertoire-saved-loading,.repertoire-saved-empty{padding:.6rem;font-size:.75rem;color:var(--text-muted);text-align:center}.repertoire-saved-item{display:flex;flex-direction:column;gap:.1rem;width:100%;padding:.4rem .6rem;background:none;border:none;border-bottom:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;transition:background .1s}.repertoire-saved-item:last-child{border-bottom:none}.repertoire-saved-item:hover{background:#ffffff0d}.repertoire-saved-title{font-size:.8rem;font-weight:500}.repertoire-saved-meta{font-size:.7rem;color:var(--text-muted)}.review-open-btn{display:flex;align-items:center;justify-content:center;gap:.4rem;width:100%;padding:.5rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:opacity .15s;flex-shrink:0}.review-open-btn:hover{opacity:.85}.review-overlay{position:fixed;inset:0;z-index:2000;background:#0009;display:flex;align-items:center;justify-content:center}.review-modal{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 32px #00000080;width:420px;max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem);overflow-y:auto}.review-modal-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;font-size:.85rem;font-weight:600;border-bottom:1px solid var(--border)}.review-draggable{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.review-draggable:active{cursor:grabbing}.review-close-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text-muted);cursor:pointer;transition:all .15s}.review-close-btn:hover{background:var(--surface2);color:var(--text);border-color:var(--border)}.review-modal-body{padding:.25rem 0}.review-header{padding:.4rem .75rem;font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}.review-start-btn{display:flex;align-items:center;justify-content:center;width:calc(100% - 1rem);margin:.5rem;padding:.5rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:opacity .15s}.review-start-btn:hover{opacity:.85}.review-progress{padding:.5rem .75rem}.review-progress-bar{height:4px;background:var(--border);border-radius:2px;overflow:hidden;margin-bottom:.3rem}.review-progress-fill{height:100%;background:var(--accent);transition:width .3s}.review-progress-text{display:flex;align-items:center;justify-content:space-between;font-size:.75rem;color:var(--text-muted)}.review-cancel-btn{background:none;border:1px solid var(--border);border-radius:4px;color:var(--text-muted);font-size:.7rem;padding:.15rem .4rem;cursor:pointer}.review-cancel-btn:hover{color:var(--text);border-color:var(--text-muted)}.review-accuracy{display:flex;justify-content:space-around;padding:.5rem .75rem}.accuracy-side{display:flex;flex-direction:column;align-items:center;gap:.15rem}.accuracy-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase}.accuracy-value{font-size:1.1rem;font-weight:700}.eval-chart{display:block;width:100%;height:auto;padding:0 .75rem .5rem}.review-blunders{border-top:1px solid var(--border)}.review-subheader{padding:.3rem .75rem;font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.blunder-item{display:flex;align-items:center;gap:.5rem;padding:.3rem .75rem;cursor:pointer;transition:background .1s;font-size:.8rem}.blunder-item:hover{background:var(--surface2)}.blunder-move{font-weight:600;min-width:4rem}.blunder-quality{font-weight:500;text-transform:capitalize}.blunder-loss{color:var(--text-muted);font-size:.75rem;margin-left:auto}.chess-clock{display:flex;flex-direction:column;gap:.3rem;padding-top:22px}.clock-display{padding:.4rem .6rem;background:var(--surface);border-radius:var(--radius);font-family:Consolas,Courier New,monospace;font-size:1.1rem;font-weight:700;text-align:center;color:var(--text-muted);border:1px solid var(--border);min-width:70px;transition:all .15s}.clock-display.active{background:var(--surface2);color:var(--text);border-color:var(--accent)}.clock-display.low{color:#e74c3c}.clock-display.expired{background:var(--accent);color:#fff;border-color:var(--accent)}.variations-section{border-top:1px solid var(--border);padding:.3rem .4rem;margin-top:.3rem}.variations-label{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.2rem}.variation-bracket{color:var(--text-muted);font-size:.8rem;font-weight:300}.variation-move{font-size:.8rem;color:var(--text-muted);cursor:pointer;padding:.05rem .2rem;border-radius:3px;transition:all .1s}.variation-move:hover{background:var(--surface2);color:var(--text)}.move-comment{padding:.15rem .5rem .15rem 2.2rem;font-size:.75rem;color:var(--text-muted);font-style:italic;line-height:1.4}.annotation-editor{padding:.4rem .6rem;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border)}.annotation-textarea{width:100%;padding:.4rem;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:.8rem;resize:vertical;font-family:inherit}.annotation-textarea:focus{outline:none;border-color:var(--accent)}.annotation-actions{display:flex;gap:.3rem;margin-top:.3rem;justify-content:flex-end}.annotation-btn{padding:.2rem .6rem;font-size:.75rem;border-radius:4px;border:1px solid var(--border);cursor:pointer;background:transparent;color:var(--text-muted);transition:all .15s}.annotation-btn.save{background:var(--accent);border-color:var(--accent);color:#fff}.annotation-btn.save:hover{opacity:.85}.annotation-btn.cancel:hover{color:var(--text);border-color:var(--text-muted)}.opening-info{display:flex;align-items:center;gap:.5rem;padding:.35rem .75rem;background:var(--surface);border-radius:var(--radius);flex-shrink:0;font-size:.8rem}.opening-eco{font-weight:700;color:var(--accent);font-size:.75rem;flex-shrink:0}.opening-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opening-stats{flex-shrink:0;width:60px}.win-bar{display:flex;height:6px;border-radius:3px;overflow:hidden}.win-white{background:#f0f0f0}.win-draw{background:#888}.win-black{background:#333}.move-explanation{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden}.explanation-header{display:flex;justify-content:space-between;align-items:center;padding:.4rem .6rem;border-bottom:1px solid var(--border)}.explanation-quality{font-weight:700;font-size:.85rem}.explanation-close{background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:0 .3rem;border-radius:3px}.explanation-close:hover{color:var(--text);background:var(--surface2)}.explanation-body{padding:.5rem .6rem;font-size:.8rem;line-height:1.5}.explanation-body p{margin-bottom:.4rem}.explanation-compare{display:flex;gap:1rem;margin-top:.3rem;font-size:.78rem}.explanation-played{color:var(--text-muted)}.explanation-best{color:var(--green)}.explanation-loss{margin-top:.3rem;font-size:.75rem;color:var(--text-muted)}.explanation-motifs{list-style:none;margin:.45rem 0 .2rem;padding:0;display:flex;flex-direction:column;gap:.3rem;border-left:2px solid var(--ember, #e67e22);padding-left:.55rem}.explanation-motifs li{font-size:.78rem;color:var(--text);line-height:1.4}.playback-controls{display:none}.playback-buttons{display:flex;align-items:center;gap:.15rem}.playback-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s}.playback-btn:hover:not(:disabled){background:var(--surface2);color:var(--text)}.playback-btn:disabled{opacity:.3;cursor:not-allowed}.playback-btn.play-pause{width:32px;height:32px;color:var(--accent)}.playback-btn.play-pause.playing{color:var(--green)}.playback-speed{display:flex;gap:.15rem;margin-left:auto}.speed-btn{padding:.15rem .4rem;font-size:.7rem;border:1px solid var(--border);border-radius:3px;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s}.speed-btn:hover{border-color:var(--accent);color:var(--text)}.speed-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.game-layout{gap:1.2rem}.game-left{gap:.65rem}.game-right{gap:.55rem}.new-game-panel,.toolbar,.game-status,.move-history,.top-moves,.opening-info,.move-explanation,.annotation-editor,.repertoire-trainer,.settings-dropdown,.import-dialog,.save-dialog,.review-modal{background:linear-gradient(180deg,var(--panel-top) 0%,var(--panel-bottom) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--panel-shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.mode-tabs{border-bottom:1px solid rgba(148,163,184,.22);padding:.12rem .18rem 0;gap:.18rem}.mode-tab{border-radius:8px 8px 0 0;font-weight:600;letter-spacing:.015em}.mode-tab:hover{background:#4d6d9924}.mode-tab.active{color:var(--text);background:#2f6feb29;border-bottom:2px solid var(--accent)}.level-select,.position-input,.repertoire-textarea,.repertoire-select,.annotation-textarea,.save-input,.import-textarea{background:#0c1729d1;border:1px solid rgba(148,163,184,.3);border-radius:8px}.level-select:focus,.position-input:focus,.repertoire-textarea:focus,.repertoire-select:focus,.annotation-textarea:focus,.save-input:focus,.import-textarea:focus{box-shadow:var(--focus-ring)}.new-game-btn,.review-open-btn,.review-start-btn,.import-body .start-button{background:linear-gradient(180deg,#3e7ff4,#2f6feb);border:1px solid rgba(255,255,255,.14);box-shadow:0 6px 14px #2f6feb4d;transition:filter .16s ease,box-shadow .16s ease}.new-game-btn:hover,.review-open-btn:hover,.review-start-btn:hover,.import-body .start-button:hover{filter:brightness(1.04);box-shadow:0 8px 16px #2f6feb57}.toolbar{padding:.45rem}.toolbar-divider{background:#94a3b859}.toolbar-btn{border-radius:8px;border:1px solid transparent;color:#c7d5ea}.toolbar-btn:hover:not(:disabled){background:#5478a929;border-color:#94a3b866}.toolbar-btn.hint:hover:not(:disabled){background:#1f9d7626;border-color:#1f9d7661}.toolbar-btn.danger:hover:not(:disabled){background:#da505029;border-color:#da505066}.game-status{border-color:#94a3b852}.game-status.game-over{background:linear-gradient(180deg,#d04d58,#b83f4a)}.game-status.in-check{background:linear-gradient(180deg,#d78a39,#b96d24)}.status-hint-btn,.restore-btn,.engine-toggle,.speed-btn,.annotation-btn,.settings-toggle,.repertoire-source-btn,.repertoire-select,.repertoire-reset-btn{border-radius:8px}.status-hint-btn:hover:not(:disabled),.restore-btn:hover,.engine-toggle.on,.speed-btn.active{box-shadow:0 6px 12px #2f6feb3d}.hint-banner{border-left:none;border:1px solid rgba(31,157,118,.36);border-radius:10px;background:linear-gradient(180deg,#1f9d7633,#122c2e94)}.move-history-header,.top-moves-header,.repertoire-header,.review-header{background:#0b12208c;border-bottom-color:#94a3b838}.move-history-list{padding:.5rem}.move-row{gap:.24rem;padding:.1rem 0}.move-san{border-radius:8px;border:1px solid transparent;background:#ffffff05;font-weight:600}.move-san:hover{background:#5478a929;border-color:#94a3b85c}.move-san.active{background:linear-gradient(180deg,#3f80f4,#2f6feb);box-shadow:0 6px 14px #2f6feb52}.top-move-row{border-radius:6px;margin:.1rem .2rem}.top-move-row:hover{background:#5478a924}.board-area{gap:.26rem}.captured-pieces{height:26px;padding:0 .46rem;border-radius:8px;border:1px solid rgba(148,163,184,.26);background:#0d182b94}.captured-icons{font-size:1.02rem;color:#d7e2f1}.material-advantage{color:#c0cfdf}.board-label{color:#e0eaf7e6;font-size:12px;font-weight:700;letter-spacing:.03em;text-shadow:0 1px 1px rgba(0,0,0,.35)}.promotion-scrim{border-radius:10px}.promotion-btn:first-child{border-radius:10px 10px 0 0}.promotion-btn:last-child{border-radius:0 0 10px 10px}.clock-display{background:linear-gradient(180deg,#132138f2,#0b1525f5);border-color:#94a3b84d;border-radius:10px;box-shadow:inset 0 1px #ffffff0f,0 6px 14px #030a1852}.clock-display.active{border-color:#2f6feb99;box-shadow:0 0 0 1px #2f6feb47,0 8px 16px #2f6feb42}.opening-info{border-color:#94a3b84d}.win-bar{height:6px;border-radius:999px;border:1px solid rgba(148,163,184,.24)}.playback-btn{border:1px solid transparent;border-radius:8px}.playback-btn:hover:not(:disabled){border-color:#94a3b857;background:#5478a924}.speed-btn{border-radius:7px}.settings-toggle{background:linear-gradient(180deg,#14223af2,#0c1626f5)}.settings-toggle:hover{box-shadow:var(--focus-ring)}.eval-bar-track{box-shadow:inset 0 0 0 1px #0d1324b8,0 8px 18px #030a1866}@media(min-width:1100px){:root{--board-size: min(640px, calc(100vh - 180px) , calc((100vw - 200px)*.65) );--right-panel-width: min(340px, calc(100vw - var(--board-size) - 180px))}}@media(max-width:1100px)and (min-width:900px){:root{--board-size: min(520px, calc(100vh - 160px) , calc((100vw - 160px)*.6) );--right-panel-width: 300px}}@media(max-width:900px){:root{--board-size: min(480px, calc(100vh - 140px) , calc(100vw - 80px) )}.game-layout{flex-direction:column;align-items:center;gap:.75rem}.game-right,.game-moves{width:100%;max-width:var(--board-size);max-height:none;overflow-y:visible;padding-top:0}.game-moves>.move-history{max-height:320px}.game-left{width:100%;max-width:var(--board-size);justify-content:center}.eval-bar{padding-top:0}body{padding:.75rem;align-items:flex-start}.mobile-tabs{display:flex;border-bottom:1px solid var(--border);background:var(--surface);border-radius:var(--radius) var(--radius) 0 0}.mobile-tab{flex:1;padding:.5rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.75rem;cursor:pointer;text-align:center;transition:all .15s}.mobile-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.mobile-tab-content{display:none}.mobile-tab-content.active{display:block}.toolbar-btn{min-width:44px;min-height:44px;padding:.4rem}.playback-inline .playback-btn{width:28px;height:28px}.playback-inline .playback-btn.play-pause{width:30px;height:30px}.chess-clock{flex-direction:row;justify-content:space-around;padding-top:0}.settings-panel{position:absolute;top:.5rem;right:.5rem;z-index:20}.settings-dropdown{top:calc(100% + 8px);bottom:auto}.top-moves-header{padding:.25rem .5rem;font-size:.65rem}.top-moves-body{display:flex;flex-direction:row;flex-wrap:wrap;gap:.2rem;padding:.25rem .4rem}.top-move-row{padding:.2rem .45rem;gap:.25rem;border-radius:6px;flex-shrink:0;margin:0;background:#5478a91a;border:1px solid rgba(148,163,184,.2)}.top-move-san{font-size:.78rem;min-width:auto}.top-move-score{font-size:.68rem;margin-left:0}.top-move-depth{font-size:.55rem;opacity:.7}.top-moves-off,.top-moves-loading{padding:.3rem .5rem;font-size:.75rem}.engine-toggle{padding:.1rem .3rem;font-size:.65rem}.engine-toggle svg{width:12px;height:12px}}@media(max-width:600px){:root{--board-size: min( calc(100vw - 32px) , calc(100vh - 200px) )}body{padding:.5rem;align-items:flex-start}.toolbar-label{display:none}.toolbar-btn{min-width:40px}.mode-tab span{display:none}.mode-tab{padding:.5rem .3rem}.new-game-panel .quick-settings{padding:.4rem .5rem}.setting-label{width:32px;font-size:.65rem}.level-select{font-size:.75rem}.move-history{min-height:0}.move-san{font-size:.8rem;min-width:2.8rem;padding:.2rem .35rem}.eval-bar{display:none}.game-left{flex-direction:column}.top-moves-header{padding:.2rem .4rem;font-size:.6rem}.top-moves-body{padding:.2rem .3rem;gap:.15rem}.top-move-row{padding:.15rem .35rem;gap:.2rem}.top-move-san{font-size:.72rem}.top-move-score{font-size:.62rem}.top-move-depth{font-size:.55rem}.top-moves-off,.top-moves-loading{padding:.25rem .4rem;font-size:.7rem}.engine-toggle span{display:none}.engine-toggle{padding:.1rem .25rem}}:root{--ink-0: #0c0a08;--ink-1: #100e0b;--ink-2: #15110d;--ink-3: #1c1813;--ink-4: #241e18;--cream-0: #f4ecd9;--cream-1: #d9cfb9;--taupe: #8e8170;--taupe-dim: #5f574b;--hairline: rgba(244, 236, 217, .08);--hairline-strong: rgba(244, 236, 217, .16);--ember: #d26b2a;--ember-bright: #e8843f;--ember-soft: rgba(210, 107, 42, .14);--ember-glow: rgba(210, 107, 42, .32);--olive: #9ca56b;--olive-soft: rgba(156, 165, 107, .16);--russet: #b84a3f;--russet-soft: rgba(184, 74, 63, .16);--bg: var(--ink-1);--surface: var(--ink-2);--surface2: var(--ink-3);--accent: var(--ember);--accent-soft: var(--ember-soft);--green: var(--olive);--green-soft: var(--olive-soft);--text: var(--cream-0);--text-muted: var(--taupe);--border: var(--hairline);--radius: 4px;--radius-lg: 6px;--panel-top: var(--ink-2);--panel-bottom: var(--ink-2);--panel-shadow: none;--focus-ring: 0 0 0 2px var(--ember-glow);--font-display: "Fraunces", "Iowan Old Style", "Georgia", serif;--font-ui: "Hanken Grotesk", "Söhne", "Helvetica Neue", sans-serif;--font-mono: "JetBrains Mono", "IBM Plex Mono", "Consolas", monospace;--ease-out: cubic-bezier(.32, .72, 0, 1)}body{font-family:var(--font-ui);font-feature-settings:"ss01","ss02","cv11";font-optical-sizing:auto;background:radial-gradient(1200px 700px at 12% -10%,rgba(210,107,42,.08),transparent 60%),radial-gradient(900px 600px at 88% 110%,rgba(156,165,107,.05),transparent 60%),linear-gradient(180deg,var(--ink-1) 0%,var(--ink-0) 100%)}body:before{content:"";position:fixed;inset:0;width:100%;height:100%;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.96  0 0 0 0 0.93  0 0 0 0 0.85  0 0 0 0.45 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");background-size:240px 240px;opacity:.045;mix-blend-mode:screen;z-index:0;pointer-events:none;border-radius:0;filter:none}body:after{display:none}#root{max-width:1500px;animation:editorial-enter .6s var(--ease-out) both}@keyframes editorial-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.new-game-panel,.toolbar,.game-status,.move-history,.top-moves,.opening-info,.repertoire-trainer,.eval-bar,.board-area,.chess-clock{animation:editorial-rise .55s var(--ease-out) both}.new-game-panel{animation-delay:.04s}.opening-info{animation-delay:.08s}.game-status{animation-delay:.12s}.eval-bar{animation-delay:.1s}.board-area{animation-delay:.14s}.chess-clock{animation-delay:.16s}.toolbar{animation-delay:.2s}.top-moves{animation-delay:.22s}.move-history,.repertoire-trainer{animation-delay:.24s}@keyframes editorial-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.new-game-panel,.toolbar,.game-status,.move-history,.top-moves,.opening-info,.move-explanation,.annotation-editor,.repertoire-trainer,.settings-dropdown,.import-dialog,.save-dialog,.review-modal{background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.new-game-panel,.move-history,.top-moves,.repertoire-trainer{box-shadow:inset 0 1px #f4ecd906}.move-history-header,.top-moves-header,.repertoire-header,.review-header,.review-subheader{background:transparent;border-bottom:1px solid var(--hairline);font-family:var(--font-ui);font-weight:600;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);padding:.55rem .85rem}.move-history-title:before,.top-moves-header:before,.repertoire-header:before,.review-header:before{content:"§";font-family:var(--font-display);font-style:italic;font-weight:400;font-size:.95rem;color:var(--ember);margin-right:.5rem;letter-spacing:0;text-transform:none;line-height:0;vertical-align:-1px}.mode-tabs{border-bottom:1px solid var(--hairline);padding:.35rem .25rem 0;gap:0;background:transparent}.mode-tab{min-width:0;font-family:var(--font-ui);font-weight:500;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;color:var(--taupe);border-radius:0;border-bottom:1px solid transparent;background:transparent!important;padding:.5rem .3rem .55rem;gap:.25rem;transition:color .2s var(--ease-out),border-color .2s var(--ease-out)}.mode-tab:hover{color:var(--cream-1);background:transparent!important}.mode-tab.active{color:var(--cream-0);background:transparent!important;border-bottom:1px solid var(--ember)}.mode-tab.active:before{content:"";display:inline-block;width:3px;height:3px;background:var(--ember);border-radius:50%;margin-right:.25rem;vertical-align:middle;transform:translateY(-1px)}.new-game-btn,.review-open-btn,.review-start-btn,.import-body .start-button{background:var(--ember);border:1px solid transparent;border-radius:var(--radius);box-shadow:none;font-family:var(--font-ui);font-weight:600;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;padding:.65rem;color:#1a0f06;transition:background .18s var(--ease-out),transform .18s var(--ease-out),box-shadow .18s var(--ease-out)}.new-game-btn:hover,.review-open-btn:hover,.review-start-btn:hover,.import-body .start-button:hover{background:var(--ember-bright);box-shadow:0 0 0 3px var(--ember-soft);filter:none;transform:translateY(-1px)}.new-game-btn:active,.review-open-btn:active,.review-start-btn:active{transform:translateY(0)}.toolbar{padding:.4rem .5rem;background:var(--ink-2);border:1px solid var(--hairline)}.toolbar-divider{background:var(--hairline-strong);height:20px}.toolbar-btn{border-radius:var(--radius);color:var(--cream-1);border:1px solid transparent;font-family:var(--font-ui);transition:all .15s var(--ease-out)}.toolbar-btn:hover:not(:disabled){background:var(--ink-4);border-color:var(--hairline-strong);color:var(--cream-0)}.toolbar-btn.hint:hover:not(:disabled){background:var(--olive-soft);border-color:#9ca56b66;color:var(--olive)}.toolbar-btn.danger:hover:not(:disabled){background:var(--russet-soft);border-color:#b84a3f73;color:var(--russet)}.toolbar-label{font-size:.55rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase}.game-status{font-family:var(--font-ui);font-weight:500;font-size:.78rem;letter-spacing:.04em;padding:.7rem .9rem;color:var(--cream-1)}.game-status.game-over{background:var(--ink-2);border:1px solid var(--ember);color:var(--ember-bright);font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1rem;letter-spacing:0;text-transform:none}.game-status.in-check{background:var(--ink-2);border:1px solid var(--russet);color:var(--russet);font-style:italic}.game-status.thinking{color:var(--taupe);font-style:italic}.game-status.thinking:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ember);margin-right:.5rem;animation:editorial-pulse 1.4s ease-in-out infinite;vertical-align:middle;transform:translateY(-1px)}@keyframes editorial-pulse{0%,to{opacity:.3;transform:translateY(-1px) scale(.85)}50%{opacity:1;transform:translateY(-1px) scale(1.1)}}.move-history{max-height:220px}.move-history-list{padding:.5rem .6rem .6rem;font-family:var(--font-mono);font-feature-settings:"tnum" 1,"ss01" 1}.move-row{gap:.4rem;padding:.12rem 0;align-items:baseline}.move-num{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:.85rem;color:var(--taupe);width:2rem;letter-spacing:0}.move-num:after{content:".";color:var(--taupe-dim);margin-left:1px}.move-san{font-family:var(--font-mono);font-feature-settings:"tnum" 1,"ss01" 1;font-weight:500;font-size:.78rem;letter-spacing:-.01em;background:transparent;border:1px solid transparent;border-radius:var(--radius);color:var(--cream-0);padding:.18rem .4rem;min-width:3rem;transition:background .12s var(--ease-out)}.move-san:hover{background:var(--ink-4);border-color:transparent}.move-san.active{background:var(--ember);color:#1a0f06;border-color:transparent;box-shadow:none;font-weight:600}.move-history-empty{font-family:var(--font-display);font-style:italic;color:var(--taupe);padding:.7rem .85rem}.move-quality.brilliant{color:var(--olive)}.move-quality.great{color:var(--ember-bright)}.move-quality.inaccuracy{color:#c2954a}.move-quality.mistake{color:#c97840}.move-quality.blunder{color:var(--russet)}.top-move-row{border-radius:0;margin:0;padding:.26rem .75rem;border-bottom:1px solid var(--hairline);background:transparent;min-width:0}.top-move-row:last-child{border-bottom:none}.top-move-row:hover{background:var(--ink-3)}.top-move-san,.top-move-score,.top-move-depth{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@container (max-width: 230px){.top-move-row{padding:.22rem .55rem;gap:.3rem}.top-move-depth{display:none}}@container (max-width: 160px){.top-move-score{font-size:.66rem}}.top-move-rank{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:.85rem;color:var(--taupe);width:1.2rem}.top-move-san{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-weight:600;font-size:.82rem;letter-spacing:-.01em;color:var(--cream-0)}.top-move-score{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:.72rem;color:var(--ember-bright);letter-spacing:0}.top-move-depth{font-family:var(--font-ui);font-size:.6rem;color:var(--taupe-dim);letter-spacing:.08em;text-transform:uppercase}.engine-toggle{font-family:var(--font-ui);font-weight:500;font-size:.6rem;letter-spacing:.12em;border:1px solid var(--hairline-strong);border-radius:999px;padding:.2rem .5rem;color:var(--taupe);background:transparent}.engine-toggle.on{color:var(--ember);border-color:var(--ember);background:var(--ember-soft)}.opening-info{padding:.55rem .85rem;gap:.65rem}.opening-eco{font-family:var(--font-mono);font-weight:700;font-size:.7rem;letter-spacing:.04em;color:var(--ember);padding:.1rem .35rem;background:var(--ember-soft);border-radius:2px}.opening-name{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:.92rem;letter-spacing:-.005em;color:var(--cream-0)}.win-bar{height:4px;border:1px solid var(--hairline-strong);border-radius:999px;background:var(--ink-3)}.win-white{background:var(--cream-1)}.win-draw{background:var(--taupe)}.win-black{background:var(--ink-4)}.eval-bar-track{background:var(--ink-3);border:1px solid var(--hairline-strong);box-shadow:none}.eval-bar-track:before{display:none}.eval-bar-black{background:linear-gradient(180deg,#2a2520,#15110d)}.eval-bar-white{background:linear-gradient(180deg,#f4ecd9,#d9cfb9)}.eval-bar-midline{background:var(--hairline-strong)}.eval-bar-marker{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:.55rem;font-weight:700;letter-spacing:0;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:2px;border-width:1px}.eval-bar-marker-white{background:var(--cream-0);color:var(--ink-1);border-color:var(--hairline-strong);box-shadow:none}.eval-bar-marker-black{background:var(--ink-1);color:var(--cream-0);border-color:var(--hairline-strong);box-shadow:none}.captured-pieces{border:1px solid var(--hairline);background:var(--ink-2);border-radius:var(--radius)}.captured-icons{color:var(--cream-1);font-size:1rem}.material-advantage{font-family:var(--font-mono);font-feature-settings:"tnum" 1;color:var(--ember);font-weight:600}.clock-display{font-family:var(--font-mono);font-feature-settings:"tnum" 1,"zero" 1;font-weight:500;font-size:1.15rem;letter-spacing:.04em;background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius);color:var(--taupe);box-shadow:none;padding:.55rem .7rem}.clock-display.active{background:var(--ink-2);color:var(--cream-0);border-color:var(--ember);box-shadow:0 0 0 1px var(--ember-soft)}.clock-display.low{color:var(--russet);border-color:var(--russet)}.clock-display.expired{background:var(--russet);color:var(--cream-0);border-color:var(--russet)}.board-label{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:12px;color:var(--cream-1);letter-spacing:0;text-shadow:none;opacity:.7}.level-select,.position-input,.repertoire-textarea,.repertoire-select,.annotation-textarea,.save-input,.import-textarea{background:var(--ink-1);border:1px solid var(--hairline-strong);border-radius:var(--radius);color:var(--cream-0);font-family:var(--font-ui);font-size:.8rem}.position-input,.repertoire-textarea,.import-textarea{font-family:var(--font-mono);font-size:.75rem}.level-select:focus,.position-input:focus,.repertoire-textarea:focus,.repertoire-select:focus,.annotation-textarea:focus,.save-input:focus,.import-textarea:focus{border-color:var(--ember);box-shadow:var(--focus-ring)}.setting-label,.save-label,.settings-label{font-family:var(--font-ui);font-weight:600;font-size:.6rem;letter-spacing:.16em;color:var(--taupe)}.color-btn{width:32px;height:32px;border-width:1px;border-color:var(--hairline-strong);border-radius:var(--radius);background:var(--ink-3)}.color-btn.white{background:var(--cream-0)}.color-btn.black{background:var(--ink-0)}.color-btn:hover{border-color:var(--ember);transform:none}.color-btn.active{border-color:var(--ember);box-shadow:0 0 0 2px var(--ember-soft)}.hint-banner{background:var(--olive-soft);border:1px solid rgba(156,165,107,.36);border-radius:var(--radius);color:var(--olive);font-family:var(--font-display);font-style:italic;font-weight:500;font-size:.92rem;padding:.55rem .85rem;letter-spacing:-.005em}.hint-play{font-family:var(--font-ui);font-style:normal;font-size:.6rem;font-weight:600;letter-spacing:.14em}.repertoire-opening-name{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:.92rem;color:var(--cream-0);letter-spacing:-.005em}.repertoire-progress{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:.7rem;color:var(--taupe)}.repertoire-line{font-family:var(--font-ui);border-bottom:1px solid var(--hairline);padding:.45rem .85rem}.repertoire-line:hover{background:var(--ink-3)}.repertoire-line.active{background:var(--ember-soft);border-left:2px solid var(--ember)}.line-name{font-weight:500;font-size:.82rem}.line-moves{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:.7rem;color:var(--taupe)}.line-check{color:var(--olive)}.repertoire-deviation{background:var(--ember-soft);border-left:3px solid var(--ember);color:var(--ember-bright);font-family:var(--font-display);font-style:italic;font-size:.88rem}.repertoire-complete{background:var(--olive-soft);border-left:3px solid var(--olive);color:var(--olive);font-family:var(--font-display);font-style:italic;font-size:.88rem}.restore-btn,.status-hint-btn,.repertoire-source-btn{font-family:var(--font-ui);font-weight:600;font-size:.58rem;letter-spacing:.14em;border-radius:var(--radius);border:1px solid var(--ember);color:var(--ember);background:transparent;padding:.25rem .55rem;text-transform:uppercase}.restore-btn:hover,.status-hint-btn:hover:not(:disabled){background:var(--ember);color:#1a0f06;border-color:var(--ember)}.repertoire-source-btn{border-color:var(--hairline-strong);color:var(--taupe)}.repertoire-source-btn.active{color:var(--ember);border-color:var(--ember);background:var(--ember-soft)}.import-overlay,.review-overlay{background:#0c0a08c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.import-dialog,.save-dialog,.review-modal{background:var(--ink-2);border:1px solid var(--hairline-strong);border-radius:var(--radius-lg);box-shadow:0 24px 60px #0009}.import-header h3{font-family:var(--font-display);font-weight:500;font-size:1.05rem;letter-spacing:-.01em;color:var(--cream-0)}.import-tabs button{font-family:var(--font-ui);font-weight:600;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--taupe)}.import-tabs button.active{color:var(--ember);border-bottom-color:var(--ember)}.import-game-item{background:var(--ink-3);border:1px solid var(--hairline);border-radius:var(--radius);transition:border-color .15s var(--ease-out)}.import-game-item:hover{border-color:var(--ember)}.game-title{font-family:var(--font-display);font-style:italic;font-weight:500;color:var(--ember)}.game-players,.game-meta{font-family:var(--font-ui)}.game-meta{font-size:.72rem;color:var(--taupe)}.settings-toggle{background:var(--ink-2);border:1px solid var(--hairline-strong);border-radius:var(--radius);color:var(--cream-1)}.settings-toggle:hover{border-color:var(--ember);color:var(--ember);box-shadow:none}.theme-swatch{border-radius:var(--radius);border-color:var(--hairline-strong)}.theme-swatch.active{border-color:var(--ember);box-shadow:0 0 0 2px var(--ember-soft)}.playback-btn{border-radius:var(--radius);color:var(--cream-1)}.playback-btn:hover:not(:disabled){background:var(--ink-4);border-color:var(--hairline-strong);color:var(--cream-0)}.playback-btn.play-pause{color:var(--ember)}.playback-btn.play-pause.playing{color:var(--olive)}.speed-btn{font-family:var(--font-ui);font-weight:600;font-size:.58rem;letter-spacing:.12em;border:1px solid var(--hairline-strong);border-radius:var(--radius);color:var(--taupe);text-transform:uppercase}.speed-btn:hover{border-color:var(--ember);color:var(--cream-0)}.speed-btn.active{background:var(--ember);color:#1a0f06;border-color:var(--ember)}.variations-section{border-top:1px dashed var(--hairline-strong);padding:.4rem .55rem}.variations-label{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:.72rem;letter-spacing:0;text-transform:none;color:var(--taupe)}.variation-bracket{font-family:var(--font-display);font-style:italic;color:var(--ember);font-size:1rem;font-weight:400}.variation-move{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:.74rem;color:var(--taupe)}.variation-move:hover{background:var(--ink-4);color:var(--cream-0)}.move-comment{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:.78rem;letter-spacing:-.005em;color:var(--cream-1);line-height:1.5;border-left:2px solid var(--ember);margin:.2rem 0 .2rem 2.2rem;padding:.05rem .5rem}.move-comment:before{content:'"';font-family:var(--font-display);font-size:1.2rem;color:var(--ember);margin-right:.15rem;vertical-align:-.15em;line-height:0}.move-explanation{border:1px solid var(--hairline-strong)}.explanation-quality{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1rem}.explanation-body p{font-family:var(--font-ui);font-size:.84rem;line-height:1.55;color:var(--cream-1)}.explanation-best{color:var(--olive)}.promotion-btn{background:var(--cream-0);font-size:2.2rem;color:var(--ink-1)}.promotion-btn:hover{background:var(--ember);color:#1a0f06}.move-history-list::-webkit-scrollbar-thumb,.import-game-list::-webkit-scrollbar-thumb,.game-right::-webkit-scrollbar-thumb,.top-moves-body::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:0}.move-history-list::-webkit-scrollbar-thumb:hover,.import-game-list::-webkit-scrollbar-thumb:hover,.game-right::-webkit-scrollbar-thumb:hover{background:var(--taupe-dim)}*{scrollbar-color:var(--hairline-strong) transparent}::selection{background:var(--ember);color:var(--ink-0)}.quality-badge{font-family:var(--font-mono);font-weight:700;border-radius:2px;box-shadow:0 2px 6px #00000080;border:1px solid rgba(244,236,217,.2)}.accuracy-label{font-family:var(--font-ui);font-weight:600;font-size:.58rem;letter-spacing:.16em;color:var(--taupe)}.accuracy-value{font-family:var(--font-display);font-weight:500;font-size:1.4rem;color:var(--ember);letter-spacing:-.02em}.blunder-move{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-weight:600;color:var(--cream-0)}.blunder-quality{font-family:var(--font-display);font-style:italic;font-weight:500}.blunder-loss{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:.72rem;color:var(--russet)}.review-progress-fill{background:var(--ember)}@media(prefers-reduced-motion:reduce){#root,.new-game-panel,.toolbar,.game-status,.move-history,.top-moves,.opening-info,.repertoire-trainer,.eval-bar,.board-area,.chess-clock{animation:none}.game-status.thinking:before{animation:none;opacity:.6}}.onboarding-overlay{position:fixed;inset:0;z-index:3000;background:#050a16c7;display:flex;align-items:center;justify-content:center;padding:1.25rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.onboarding-modal{width:min(540px,100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 24px 60px #0000008c;padding:1.5rem 1.5rem 1rem;display:flex;flex-direction:column;gap:1.1rem}.onboarding-header{display:flex;flex-direction:column;gap:.35rem}.onboarding-eyebrow{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}.onboarding-header h2{font-size:1.25rem;font-weight:600;color:var(--text)}.onboarding-sub{font-size:.85rem;color:var(--text-muted);line-height:1.45}.onboarding-options{display:flex;flex-direction:column;gap:.5rem}.onboarding-option{text-align:left;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem .9rem;color:var(--text);cursor:pointer;display:flex;flex-direction:column;gap:.2rem;transition:border-color .15s,transform .05s,background .15s}.onboarding-option:hover{border-color:var(--accent);background:#2f6feb14}.onboarding-option:active{transform:translateY(1px)}.onboarding-option-title{font-weight:600;font-size:.95rem}.onboarding-option-blurb{font-size:.8rem;color:var(--text-muted);line-height:1.4}.onboarding-option-meta{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:.15rem}.onboarding-skip{align-self:flex-end;background:none;border:none;color:var(--text-muted);font-size:.8rem;cursor:pointer;padding:.3rem .5rem}.onboarding-skip:hover{color:var(--text)}.review-walkthrough-btn{width:calc(100% - 1rem);margin:.4rem .5rem .6rem;padding:.5rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.82rem;font-weight:600;cursor:pointer;transition:opacity .15s}.review-walkthrough-btn:hover{opacity:.9}.review-walkthrough{padding:.4rem .7rem .7rem;display:flex;flex-direction:column;gap:.55rem}.walkthrough-pager{display:flex;align-items:center;justify-content:space-between;font-size:.78rem}.walkthrough-nav{background:var(--surface2);color:var(--text);border:1px solid var(--border);padding:.25rem .55rem;border-radius:4px;cursor:pointer;font-size:.75rem}.walkthrough-nav:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.walkthrough-nav:disabled{opacity:.4;cursor:not-allowed}.walkthrough-counter{color:var(--text-muted);font-size:.74rem;letter-spacing:.04em}.walkthrough-summary{background:var(--surface2);border-radius:6px;padding:.55rem .65rem;display:flex;flex-direction:column;gap:.35rem}.walkthrough-headline{display:flex;justify-content:space-between;align-items:center}.walkthrough-move{font-size:.95rem;font-weight:600;font-family:IBM Plex Mono,monospace}.walkthrough-quality{font-size:.75rem;text-transform:uppercase;letter-spacing:.07em;font-weight:600}.walkthrough-compare{display:flex;flex-wrap:wrap;gap:.5rem .9rem;font-size:.8rem}.walkthrough-faint{color:var(--text-muted);margin-right:.2rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.walkthrough-loss{color:#e67e22;font-size:.75rem}.walkthrough-motifs{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.25rem;border-left:2px solid #e67e22;padding-left:.5rem}.walkthrough-motifs li{font-size:.78rem;color:var(--text);line-height:1.4}.walkthrough-actions{display:flex;gap:.4rem}.walkthrough-secondary,.walkthrough-primary{flex:1;padding:.5rem .6rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;transition:opacity .15s,border-color .15s}.walkthrough-secondary{background:var(--surface2);border:1px solid var(--border);color:var(--text)}.walkthrough-secondary:hover{border-color:var(--accent);color:var(--accent)}.walkthrough-primary{background:var(--green);color:#fff;border:1px solid var(--green)}.walkthrough-primary:hover{opacity:.9}
