*{-webkit-tap-highlight-color:transparent}@media (width<=768px){html,body{-webkit-text-size-adjust:100%;touch-action:manipulation}.main-content{padding:0}.board-wrapper{width:100%;max-width:min(100vw - 32px,480px);margin:0 auto}button{min-height:44px}.btn-primary,.btn-secondary{padding:12px 20px}.eco-badge{font-size:.7rem}.search-input{font-size:16px}.navbar{padding:0 16px}::-webkit-scrollbar{width:4px}}@media (width<=480px){.board-wrapper{max-width:min(100vw - 32px,480px)}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121212;--bg2:#181818;--bg3:#1f1f1f;--surface:#181818;--surface2:#252525;--surface3:#2a2a2a;--text:#fff;--text2:#b3b3b3;--text3:#cbcbcb;--accent:#4a9eff;--accent2:#3a8ef0;--green:#1ed760;--red:#f3727f;--orange:#ffa42b;--blue:#4a9eff;--border:#4d4d4d;--border2:#7c7c7c;--shadow-card:#0000004d 0px 8px 8px;--shadow-dialog:#00000080 0px 8px 24px}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--bg2:#f8f8f8;--bg3:#f0f0f0;--surface:#f3f3f3;--surface2:#ebebeb;--surface3:#e2e2e2;--text:#121212;--text2:#5a5a5a;--text3:#3a3a3a;--accent:#1db954;--accent2:#169c46;--green:#1db954;--red:#d32f2f;--orange:#e65100;--blue:#1565c0;--border:#d4d4d4;--border2:#9a9a9a;--shadow-card:#00000014 0px 4px 12px;--shadow-dialog:#00000026 0px 8px 24px}}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--bg2:#f8f8f8;--bg3:#f0f0f0;--surface:#f3f3f3;--surface2:#ebebeb;--surface3:#e2e2e2;--text:#121212;--text2:#5a5a5a;--text3:#3a3a3a;--accent:#2563eb;--accent2:#1d4ed8;--green:#16a34a;--red:#d32f2f;--orange:#e65100;--blue:#2563eb;--border:#d4d4d4;--border2:#9a9a9a;--shadow-card:#00000014 0px 4px 12px;--shadow-dialog:#00000026 0px 8px 24px}:root{color:var(--text);background:var(--bg);font-family:Helvetica Neue,helvetica,arial,system-ui,sans-serif;font-size:16px}body{background:var(--bg);min-height:100vh}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.app{flex-direction:column;min-height:100vh;display:flex}.main-content{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:32px 40px}.navbar{background:var(--bg);border-bottom:1px solid var(--border);z-index:100;justify-content:space-between;align-items:center;height:64px;padding:0 32px;display:flex;position:sticky;top:0}.nav-brand{color:var(--accent);letter-spacing:-.01em;font-size:1.3rem;font-weight:700}.nav-links{gap:4px;display:flex}.nav-links a{color:var(--text2);letter-spacing:.01em;border-radius:9999px;padding:8px 16px;font-size:.875rem;font-weight:400;transition:color .15s,background .15s}.nav-links a:hover{color:var(--text);background:var(--surface2)}.nav-links a.active{background:var(--surface2);color:var(--text);font-weight:700}.theme-toggle{background:var(--surface2);width:36px;height:36px;color:var(--text2);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:4px;font-size:1rem;transition:background .15s,color .15s;display:flex}.theme-toggle:hover{background:var(--surface3);color:var(--text)}.btn-primary{text-transform:uppercase;letter-spacing:1.4px;background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:9999px;justify-content:center;align-items:center;padding:12px 32px;font-size:.875rem;font-weight:700;text-decoration:none;transition:background .15s,transform .1s;display:inline-flex}.btn-primary:hover{background:var(--accent2);transform:scale(1.02)}.btn-primary:active{transform:scale(.98)}.btn-secondary{border:1px solid var(--border2);text-transform:uppercase;letter-spacing:1.4px;color:var(--text);background:0 0;border-radius:9999px;padding:10px 24px;font-size:.875rem;font-weight:700;text-decoration:none;transition:border-color .15s,transform .1s}.btn-secondary:hover{border-color:var(--text);transform:scale(1.02)}.btn-ghost{color:var(--text2);background:0 0;border:none;border-radius:9999px;padding:8px 20px;font-size:.875rem;font-weight:400;transition:color .15s}.btn-ghost:hover{color:var(--text)}.btn-ghost.small{padding:4px 12px;font-size:.75rem}button:disabled{opacity:.4;cursor:not-allowed}.page-header{margin-bottom:32px}.page-header h1{letter-spacing:-.02em;margin-bottom:6px;font-size:2rem;font-weight:700}.page-header p{color:var(--text2);font-size:.875rem}.eco-badge{text-transform:capitalize;background:var(--surface2);color:var(--accent);letter-spacing:.05em;border-radius:9999px;padding:3px 10px;font-size:.66rem;font-weight:600;display:inline-block}.eco-badge.large{color:#4a9eff;background:#4a9eff22;border-radius:9999px;padding:8px 20px;font-size:1.2rem;font-weight:700}.family-tag{background:var(--surface2);color:var(--text2);border-radius:9999px;padding:3px 10px;font-size:.66rem;font-weight:600;display:inline-block}.home-page{max-width:760px;margin:0 auto;padding:80px 24px 100px}.hero{text-align:center;margin-bottom:28px}.hero-brand{color:var(--text);letter-spacing:-.05em;margin:0 0 24px;font-size:5.5rem;font-weight:700;line-height:1}.hero-sub{color:var(--text2);max-width:400px;margin:0 auto 40px;font-size:1.05rem;line-height:1.6}.hero-start{justify-content:center;min-width:180px}.hero-stats{color:var(--text2);text-transform:uppercase;letter-spacing:1.2px;justify-content:center;align-items:center;gap:10px;margin-bottom:72px;font-size:.72rem;font-weight:600;display:flex}.hero-stats-dot{color:var(--surface2)}.feature-list{border-top:1px solid var(--surface2)}.feature-row{border-bottom:1px solid var(--surface2);color:var(--text);align-items:center;gap:32px;padding:24px 0;text-decoration:none;transition:padding-left .2s;display:flex}.feature-row:hover{padding-left:12px}.feature-row-body{flex:1;min-width:0}.feature-row-title{letter-spacing:-.01em;color:var(--text);margin-bottom:5px;font-size:.9rem;font-weight:700;transition:color .15s;display:block}.feature-row--accent .feature-row-title{color:var(--accent)}.feature-row-desc{color:var(--text2);margin:0;font-size:.78rem;line-height:1.55;display:block}.feature-row-arrow{color:var(--text2);text-align:right;flex-shrink:0;width:24px;font-size:1rem;transition:transform .2s,color .2s}.feature-row:hover .feature-row-arrow{color:var(--accent);transform:translate(6px)}.opening-filter{flex-direction:column;gap:12px;margin-bottom:24px;display:flex}.filter-top-row{align-items:center;gap:12px;display:flex}.family-pill-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.search-input,.family-select{background:var(--bg3);color:var(--text);border:none;border-radius:500px;outline:none;padding:12px 20px;font-size:.875rem;transition:box-shadow .15s;box-shadow:inset 0 0 0 1px #7c7c7c}.search-input{flex:1;min-width:200px}.search-input::placeholder{color:var(--text2)}.search-input:focus,.family-select:focus{box-shadow:var(--text) 0px 0px 0px 1px inset}.family-select{appearance:none;cursor:pointer;min-width:200px}.family-select option{background:var(--bg3);color:var(--text)}.family-pill{background:var(--surface2);color:var(--text2);cursor:pointer;white-space:nowrap;border:none;border-radius:9999px;padding:8px 16px;font-family:inherit;font-size:.875rem;transition:background .15s,color .15s}.family-pill:hover{background:var(--surface3);color:var(--text)}.family-pill.active{background:var(--accent);color:#fff}.result-count{color:var(--text2);margin-bottom:16px;font-size:.8rem}.opening-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.opening-card{background:var(--surface);border:none;border-radius:8px;padding:14px 16px;transition:background .15s;display:block}.opening-card:hover{background:var(--surface2)}.opening-card-header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.opening-name{color:var(--text);margin-bottom:4px;font-size:.875rem;font-weight:700}.move-preview{color:var(--text2);margin-bottom:4px;font-family:Courier New,monospace;font-size:.75rem}.move-count{color:var(--text2);font-size:.72rem}.load-more-btn{border:1px solid var(--border2);width:100%;color:var(--text);text-transform:uppercase;letter-spacing:1.4px;background:0 0;border-radius:9999px;margin-top:24px;padding:14px;font-size:.875rem;font-weight:700;transition:border-color .15s;display:block}.load-more-btn:hover{border-color:var(--text)}.view-toggle-group{align-items:center;gap:4px;display:flex}.view-toggle{background:var(--surface2);width:36px;height:36px;color:var(--text2);cursor:pointer;border:none;border-radius:8px;font-size:1rem;transition:background .15s,color .15s}.view-toggle:hover{background:var(--surface3);color:var(--text)}.view-toggle.active{background:var(--accent);color:#fff}.opening-group{margin-bottom:6px}.opening-group-header{background:var(--surface);width:100%;color:var(--text);cursor:pointer;text-align:left;border:none;border-radius:8px;align-items:center;gap:14px;padding:16px 20px;font-family:inherit;transition:background .2s,box-shadow .2s,transform .15s;display:flex}.opening-group-header:hover{background:var(--surface2);box-shadow:var(--shadow-card);transform:translateY(-1px)}.opening-group.is-open .opening-group-header{background:var(--surface2);box-shadow:var(--shadow-card)}.opening-group-chevron{color:var(--text2);flex-shrink:0;width:16px;font-size:.875rem;transition:transform .25s,color .15s}.opening-group-chevron.open{color:var(--accent);transform:rotate(90deg)}.opening-group-info{flex-direction:column;flex:1;gap:5px;min-width:0;display:flex}.opening-group-top-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.opening-group-name{letter-spacing:-.01em;font-size:1rem;font-weight:700}.opening-group-sub-row{align-items:center;gap:8px;display:flex}.opening-group-moves{color:var(--text2);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;font-family:Courier New,monospace;font-size:.75rem;overflow:hidden}.opening-group-count{white-space:nowrap;background:var(--surface2);color:var(--text2);letter-spacing:.5px;border-radius:9999px;flex-shrink:0;padding:5px 14px;font-size:.72rem;font-weight:700;transition:background .15s,color .15s}.opening-group.is-open .opening-group-count{color:var(--accent);background:#4a9eff1f}.opening-group-body{border-left:2px solid var(--surface3);margin-top:2px;margin-left:27px;padding:10px 0 10px 30px}.learn-view{max-width:1100px;margin:0 auto}.learn-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.opening-title-block{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.opening-title{color:var(--text);letter-spacing:-.02em;font-size:1.5rem;font-weight:700}.learn-body{grid-template-columns:auto 300px;gap:32px;display:grid}.board-section{flex-direction:column;gap:12px;display:flex;position:relative}.learn-sidebar{background:var(--surface);border-radius:8px;padding:20px}.learn-sidebar h3{color:var(--accent);text-transform:uppercase;letter-spacing:1.6px;margin-bottom:14px;font-size:.75rem;font-weight:700}.move-list{flex-wrap:wrap;gap:4px;margin-bottom:24px;display:flex}.move-number{color:var(--text2);margin-right:2px;font-size:.8rem}.move-token{cursor:pointer;background:var(--surface2);color:var(--text2);border-radius:4px;padding:4px 8px;font-family:Courier New,monospace;font-size:.82rem;transition:background .1s,color .1s}.move-token:hover{background:var(--surface3);color:var(--text)}.move-token.active{background:var(--accent);color:#fff;font-weight:700}.pgn-block h4{color:var(--text2);text-transform:uppercase;letter-spacing:1.4px;margin-bottom:8px;font-size:.72rem;font-weight:700}.pgn-block code{background:var(--bg);color:var(--text2);word-break:break-all;border-radius:4px;padding:12px;font-size:.75rem;line-height:1.6;display:block}.board-controls{background:var(--surface);border-radius:9999px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;display:flex}.board-controls button{background:var(--surface2);width:36px;height:36px;color:var(--text);border:none;border-radius:50%;font-size:1rem;transition:background .15s}.board-controls button:hover:not(:disabled){background:var(--surface3)}.step-label{color:var(--text2);text-align:center;min-width:64px;font-size:.8rem}.training-page{min-height:calc(100vh - 64px)}.color-picker{text-align:center;max-width:640px;margin:48px auto;padding:0 16px}.color-picker h2{color:var(--text);letter-spacing:-.02em;margin-bottom:10px;font-size:2rem;font-weight:700}.color-picker p{color:var(--text2);margin-bottom:40px;font-size:.875rem}.color-options{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.color-btn{background:var(--surface);color:var(--text);cursor:pointer;text-transform:uppercase;letter-spacing:1px;border:1px solid #0000;border-radius:12px;flex-direction:column;align-items:center;gap:10px;min-width:160px;padding:32px 28px;font-size:.8rem;font-weight:700;transition:background .15s,transform .15s,box-shadow .15s;display:flex}.color-btn:hover{background:var(--surface2);transform:translateY(-3px);box-shadow:0 8px 20px #0006}.color-btn.random-btn{border-color:var(--accent)}.color-btn.random-btn:hover{box-shadow:0 8px 20px #4a9eff33}.color-piece{font-size:3rem;line-height:1}.color-btn small{color:var(--text2);text-transform:none;letter-spacing:0;font-size:.72rem;font-weight:400}.training-view{max-width:700px;margin:0 auto}.training-opening-name{background:var(--surface);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;padding:10px 16px;display:flex}.training-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.training-info{align-items:center;gap:8px;display:flex}.move-indicator{text-transform:uppercase;letter-spacing:1px;color:var(--text2);background:#b3b3b31a;border-radius:9999px;padding:4px 12px;font-size:.72rem;font-weight:700}.your-turn{text-transform:uppercase;letter-spacing:1px;color:#4a9eff;background:#4a9eff1f;border:1px solid #4a9eff40;border-radius:9999px;padding:4px 12px;font-size:.72rem;font-weight:700}.computer-turn{text-transform:uppercase;letter-spacing:1px;color:var(--text2);background:#b3b3b314;border-radius:9999px;padding:4px 12px;font-size:.72rem;font-weight:700}.feedback-overlay{pointer-events:none;z-index:10;border-radius:8px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.feedback-pill{letter-spacing:.5px;border-radius:9999px;padding:12px 32px;font-size:1.1rem;font-weight:700;animation:.15s ease-out feedbackPop}.feedback-overlay.correct .feedback-pill{color:#000;background:#1ed760f2;box-shadow:0 4px 24px #1ed76066}.feedback-overlay.wrong .feedback-pill{color:#fff;background:#f3727ff2;box-shadow:0 4px 24px #f3727f59}@keyframes feedbackPop{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.score-tracker{align-items:center;gap:6px;display:flex}.score-pill{text-transform:uppercase;letter-spacing:.8px;border-radius:9999px;padding:4px 10px;font-size:.72rem;font-weight:700}.score-pill.correct{color:#1ed760;background:#1ed76026}.score-pill.incorrect{color:#f3727f;background:#f3727f26}.score-pill.total{color:var(--text2);background:#b3b3b31a}.training-footer{margin-top:14px}.move-history-mini{color:var(--text2);flex-wrap:wrap;gap:2px;font-size:.78rem;display:flex}.mini-move{gap:2px;display:inline-flex}.mini-move.last{color:var(--text)}.move-number{color:var(--text2);opacity:.6}.training-complete{text-align:center;max-width:480px;margin:48px auto;padding:0 16px}.training-complete h2{color:var(--text);letter-spacing:-.02em;margin-bottom:24px;font-size:2rem;font-weight:700}.opening-reveal{background:var(--surface);border-radius:12px;margin-bottom:24px;padding:28px;box-shadow:0 8px 24px #0000004d}.opening-reveal h3{margin:12px 0 6px;font-size:1.2rem;font-weight:700}.eco-badge.large{color:var(--accent);letter-spacing:1px;text-transform:uppercase;background:#4a9eff26;border-radius:9999px;padding:6px 18px;font-size:.875rem;font-weight:700;display:inline-block}.complete-actions{flex-direction:column;align-items:center;gap:10px;margin-bottom:24px;display:flex}.complete-actions .btn-primary,.complete-actions .btn-secondary,.complete-actions .btn-ghost{text-align:center;justify-content:center;width:280px}.endgame-category{margin-bottom:48px}.category-title{color:var(--text2);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:1.6px;margin-bottom:16px;padding-bottom:12px;font-size:.75rem;font-weight:700}.endgame-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.endgame-card{background:var(--surface);border:none;border-radius:8px;padding:16px;transition:background .15s;display:block}.endgame-card:hover{background:var(--surface2)}.endgame-card-header{margin-bottom:10px}.difficulty-badge{color:#000;text-transform:capitalize;border-radius:9999px;padding:3px 10px;font-size:.66rem;font-weight:700;display:inline-block}.endgame-title{color:var(--text);margin-bottom:6px;font-size:.875rem;font-weight:700}.endgame-desc{color:var(--text2);font-size:.78rem;line-height:1.45}.endgame-study{max-width:1000px;margin:0 auto}.endgame-header{margin-bottom:28px}.back-link{color:var(--text2);align-items:center;gap:6px;margin-bottom:14px;font-size:.875rem;transition:color .15s;display:inline-flex}.endgame-header .endgame-title{color:var(--text);letter-spacing:-.02em;margin-bottom:6px;font-size:1.5rem;font-weight:700}.endgame-body{grid-template-columns:auto 280px;gap:32px;display:grid}.endgame-sidebar{flex-direction:column;gap:16px;display:flex}.endgame-message{background:var(--surface);min-height:52px;color:var(--text2);border:none;border-radius:8px;padding:14px 18px;font-size:.875rem}.endgame-message.success{color:var(--green)}.endgame-progress{color:var(--text2);font-size:.8rem}.endgame-actions{flex-direction:column;gap:8px;display:flex}.hints-section h4{color:var(--text2);text-transform:uppercase;letter-spacing:1.4px;margin-bottom:10px;font-size:.72rem;font-weight:700}.hints-section ul{flex-direction:column;gap:6px;list-style:none;display:flex}.hints-section li{background:var(--surface);border-radius:4px;padding:8px 12px;font-size:.8rem}.hidden-hint{color:var(--text2)}.revealed{color:var(--accent);font-weight:700}.engine-page .page-header{margin-bottom:0}.engine-setup{max-width:620px;margin:36px auto}.engine-setup h1{color:var(--text);letter-spacing:-.02em;margin-bottom:8px;font-size:1.75rem;font-weight:700}.engine-loading{color:var(--text2);background:var(--surface);border-radius:9999px;margin-bottom:16px;padding:10px 16px;font-size:.8rem}.engine-error{color:var(--red);background:#f3727f1a;border-radius:9999px;margin-bottom:16px;padding:10px 16px;font-size:.8rem}.start-fen-badge{background:var(--surface2);color:var(--text2);border-radius:9999px;margin-bottom:16px;padding:4px 14px;font-size:.75rem;display:inline-block}.back-link{color:var(--text2);background:0 0;border:none;margin-bottom:16px;padding:0;font-size:.875rem;transition:color .15s;display:inline-block}.back-link:hover{color:var(--text)}.setup-sub{color:var(--text2);margin-bottom:36px;font-size:.875rem}.setup-section{margin-bottom:32px}.setup-section h3{color:var(--text2);text-transform:uppercase;letter-spacing:1.6px;margin-bottom:14px;font-size:.72rem;font-weight:700}.skill-slider-container{padding:8px 0 56px;position:relative}.skill-slider-elo{text-align:center;color:var(--accent);letter-spacing:.5px;margin-bottom:20px;font-size:1.1rem;font-weight:700}.skill-slider{appearance:none;background:var(--surface3);cursor:pointer;border-radius:9999px;outline:none;width:100%;height:6px;position:relative}.skill-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:grab;border:none;border-radius:50%;width:20px;height:20px;transition:transform .15s,box-shadow .15s;box-shadow:0 2px 8px #0006}.skill-slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 4px 12px #00000080}.skill-slider::-webkit-slider-thumb:active{cursor:grabbing}.skill-slider::-moz-range-thumb{background:var(--accent);cursor:grab;border:none;border-radius:50%;width:20px;height:20px;box-shadow:0 2px 8px #0006}.skill-slider::-moz-range-track{background:var(--surface3);border-radius:9999px;height:6px}.skill-slider-ticks{height:50px;position:absolute;top:60px;left:10px;right:10px}.skill-tick{cursor:pointer;color:var(--text2);background:0 0;border:none;flex-direction:column;align-items:center;gap:4px;padding:0;transition:color .15s;display:flex;position:absolute;transform:translate(-50%)}.skill-tick:hover{color:var(--text)}.skill-tick.active{color:var(--accent)}.skill-tick-dot{background:var(--surface3);border-radius:50%;width:8px;height:8px;transition:background .15s}.skill-tick.active .skill-tick-dot{background:var(--accent)}.skill-tick:hover .skill-tick-dot{background:var(--text2)}.skill-tick-label{text-transform:uppercase;letter-spacing:1px;white-space:nowrap;font-size:.66rem;font-weight:700}.skill-tick-elo{opacity:.7;font-size:.6rem;font-weight:400}.start-btn{width:100%;margin-top:8px;padding:14px;font-size:.875rem}.engine-game{grid-template-columns:auto 280px;gap:28px;max-width:1000px;margin:0 auto;display:grid}.engine-board-col{flex-direction:column;gap:12px;display:flex}.engine-status-bar{justify-content:space-between;align-items:center;min-height:32px;display:flex}.thinking-indicator{color:var(--text2);font-size:.82rem;font-style:italic;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.your-turn-label{color:var(--green);font-size:.82rem;font-weight:700}.game-status-msg{text-transform:uppercase;letter-spacing:1.2px;border-radius:9999px;padding:4px 16px;font-size:.82rem;font-weight:700}.game-status-msg.in-check{color:var(--orange);background:#ffa42b26}.game-status-msg.game-over{color:var(--red);background:#f3727f26}.engine-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.difficulty-tag,.player-color-tag{color:var(--text2);background:var(--surface);border-radius:9999px;padding:4px 12px;font-size:.75rem}.hint-toggle{border:1px solid var(--border);color:var(--text2);cursor:pointer;background:0 0;border-radius:9999px;padding:6px 14px;font-size:.75rem;font-weight:700;transition:background .15s,color .15s,border-color .15s}.hint-toggle:hover{border-color:var(--accent);color:var(--accent)}.hint-toggle.active{color:var(--green);border-color:var(--green);background:#1ed7601f}.engine-sidebar{flex-direction:column;gap:16px;display:flex}.engine-sidebar h3{color:var(--text2);text-transform:uppercase;letter-spacing:1.6px;font-size:.72rem;font-weight:700}.move-table{background:var(--surface);border-radius:8px;overflow:hidden}.move-table-header{background:var(--bg);color:var(--text2);text-transform:uppercase;letter-spacing:1.2px;grid-template-columns:32px 1fr 1fr;padding:8px 12px;font-size:.72rem;font-weight:700;display:grid}.move-table-body{max-height:400px;overflow-y:auto}.move-row{border-top:1px solid var(--border);grid-template-columns:32px 1fr 1fr;padding:5px 12px;font-family:Courier New,monospace;font-size:.82rem;display:grid}.move-row:hover{background:var(--surface2)}.move-num{color:var(--text2)}.move-cell{color:var(--text3)}.player-move{color:var(--accent);font-weight:700}.rematch-btn{width:100%;margin-top:8px}.not-found{text-align:center;color:var(--text2);padding:80px}.not-found h2{color:var(--text);margin-bottom:16px;font-size:1.5rem;font-weight:700}.board-wrapper{max-width:100%;position:relative}.board-section{max-width:600px}.analyzing-label{text-align:center;color:var(--accent);opacity:.75;pointer-events:none;font-size:.8rem;animation:1.2s ease-in-out infinite pulse;position:absolute;left:0;right:0}.board-section>div:first-child,.board-wrapper>div:first-child{max-width:100%!important}.loading-dots{animation:1.2s ease-in-out infinite pulse;display:inline-block}.train-this-btn{padding:10px 28px;font-size:.82rem}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--surface3);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:var(--border)}@media (width<=900px){.main-content{padding:20px 16px}.learn-body,.endgame-body,.engine-game{grid-template-columns:1fr}.learn-sidebar,.endgame-sidebar,.engine-sidebar{order:-1}.board-section,.engine-game{max-width:100%}}@media (width<=640px){.navbar{padding:0 16px}.nav-links a{padding:6px 10px;font-size:.78rem}.color-options{flex-direction:column;align-items:center}.skill-slider-ticks{left:5px;right:5px}.skill-tick-label{font-size:.6rem}.training-view{max-width:100%}.training-header{flex-direction:column;align-items:flex-start;gap:8px}}@media (width<=600px){.hero-brand{font-size:3.5rem}.feature-row{gap:16px}}.review-page{max-width:1200px;margin:0 auto;padding:24px 16px 48px}.game-importer{max-width:640px;margin:40px auto 0}.importer-title{color:var(--text);margin-bottom:8px;font-size:1.75rem;font-weight:900}.importer-subtitle{color:var(--text2);margin-bottom:28px;font-size:.9rem}.importer-tabs{gap:6px;margin-bottom:24px;display:flex}.importer-tab{background:var(--surface2);color:var(--text2);cursor:pointer;border:none;border-radius:9999px;padding:8px 22px;font-size:.85rem;font-weight:700;transition:background .15s,color .15s}.importer-tab.active{background:var(--accent);color:#fff}.importer-input-row{gap:8px;margin-bottom:12px;display:flex}.importer-input{flex:1}.importer-error{color:var(--red);margin-top:10px;font-size:.82rem}.game-list{flex-direction:column;gap:6px;max-height:420px;margin-top:16px;display:flex;overflow-y:auto}.game-list-item{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:12px 16px;transition:background .15s,border-color .15s;display:flex}.game-list-item:hover{background:var(--surface2);border-color:var(--accent)}.game-list-players{font-size:.875rem;font-weight:700}.game-list-meta{color:var(--text2);align-items:center;gap:8px;font-size:.75rem;display:flex}.game-result-badge{background:var(--surface2);border-radius:4px;padding:2px 8px;font-size:.75rem;font-weight:700}.game-time-class{text-transform:capitalize}.pgn-textarea{background:var(--bg3);border:1px solid var(--border);width:100%;min-height:200px;color:var(--text);resize:vertical;box-sizing:border-box;border-radius:8px;outline:none;padding:12px;font-family:Courier New,monospace;font-size:.78rem}.pgn-textarea:focus{border-color:var(--accent)}.review-ready{text-align:center;max-width:520px;margin:60px auto}.review-ready-header{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-bottom:12px;display:flex}.review-ready-header h2{color:var(--text);font-size:1.5rem;font-weight:900}.review-ready-date{color:var(--text2);font-size:.8rem}.result-badge{background:var(--surface2);color:var(--text);border-radius:6px;padding:3px 10px;font-size:.8rem;font-weight:700}.review-ready-desc{color:var(--text2);margin-bottom:28px;font-size:.9rem}.review-ready-actions{justify-content:center;gap:12px;display:flex}.analysis-progress-bar{background:var(--surface);border-radius:10px;margin-bottom:20px;padding:14px 16px}.analysis-progress-label{color:var(--text2);margin-bottom:10px;font-size:.82rem;display:block}.progress-bar-outer{background:var(--surface2);border-radius:9999px;height:6px;overflow:hidden}.progress-bar-inner{background:var(--accent);border-radius:9999px;height:100%;transition:width .3s}.review-layout{grid-template-rows:auto 1fr;grid-template-columns:auto 360px;align-items:start;gap:28px;display:grid}.review-board-col{flex-direction:column;grid-row:1/3;gap:14px;display:flex}.review-graph{grid-area:1/2}.review-moves{grid-area:2/2}.review-game-header{background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;font-size:.85rem;font-weight:700;display:flex}.review-player{color:var(--text)}.review-nav{background:var(--surface);border-radius:9999px;justify-content:center;align-self:center;gap:8px;padding:8px;display:flex}.review-nav button{background:var(--surface2);width:38px;height:38px;color:var(--text);cursor:pointer;border:none;border-radius:50%;font-size:1rem;transition:background .15s}.review-nav button:hover{background:var(--surface3,var(--bg3))}.eval-graph-container{background:var(--surface);border-radius:10px;padding:14px 16px 10px}.eval-graph-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.eval-graph-label{color:var(--text2);text-transform:uppercase;letter-spacing:1.4px;font-size:.7rem;font-weight:700}.eval-graph-score{color:var(--accent);font-size:.875rem;font-weight:700}.eval-graph-svg{cursor:crosshair;border-radius:4px;width:100%;height:80px;display:block;overflow:hidden}.eval-graph-axis{color:var(--text3,var(--text2));justify-content:space-between;margin-top:4px;font-size:.65rem;display:flex}.review-move-list{background:var(--surface);border-radius:10px;flex:1;overflow:hidden}.review-move-list-header{background:var(--bg);color:var(--text2);text-transform:uppercase;letter-spacing:1.2px;grid-template-columns:32px 1fr 1fr;padding:8px 12px;font-size:.7rem;font-weight:700;display:grid}.review-move-list-body{max-height:440px;overflow-y:auto}.review-move-row{grid-template-columns:32px 1fr 1fr;align-items:center;display:grid}.review-move-row:nth-child(2n){background:var(--bg2,var(--bg))}.review-move-btn{color:var(--text2);cursor:pointer;text-align:left;background:0 0;border:none;width:100%;padding:5px 8px;font-family:Courier New,monospace;font-size:.82rem;transition:background .1s,color .1s}.review-move-btn:hover{background:var(--surface2);color:var(--text)}.review-move-btn.active{background:var(--accent);color:#fff;font-weight:700}.review-move-btn.empty{cursor:default}.move-classification{margin-left:2px;font-size:.7rem;font-weight:900}.classification-summary{background:var(--surface);border-radius:10px;flex-direction:column;gap:8px;padding:12px 16px;display:flex}.class-summary-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.class-summary-player{color:var(--text2);min-width:70px;font-size:.78rem;font-weight:700}.class-summary-badges{flex-wrap:wrap;gap:6px;display:flex}.class-badge{border-radius:9999px;align-items:center;gap:2px;padding:2px 8px;font-size:.72rem;font-weight:900;display:inline-flex}@media (width<=960px){.review-layout{grid-template-rows:auto;grid-template-columns:1fr}.review-board-col{order:2;grid-row:auto}.review-graph{order:1;grid-area:auto}.review-moves{order:3;grid-area:auto}}.review-board-wrapper{position:relative}.classification-badge{background:color-mix(in srgb, var(--badge-color) 20%, #000 80%);border:1px solid var(--badge-color);pointer-events:none;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;display:flex;position:absolute;bottom:8px;right:8px}.badge-symbol{color:var(--badge-color);font-size:.95rem;font-weight:900}.badge-label{color:var(--badge-color);text-transform:uppercase;letter-spacing:.8px;font-size:.72rem;font-weight:700}.review-move-counter{color:var(--text2);align-self:center;margin-left:4px;font-size:.75rem}.review-player-summaries{background:var(--surface);border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.player-summary{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.player-summary-label{color:var(--text2);min-width:72px;font-size:.78rem;font-weight:700}.player-summary-counts{flex-wrap:wrap;gap:6px;display:flex}.class-pill{color:var(--pill-color);border:1px solid color-mix(in srgb, var(--pill-color) 40%, transparent);background:color-mix(in srgb, var(--pill-color) 12%, transparent);border-radius:9999px;align-items:center;gap:3px;padding:3px 9px;font-size:.75rem;font-weight:700;display:inline-flex}.class-pill-bad{padding:4px 11px;font-size:.82rem}.review-reset-btn{align-self:center}.accuracy-banner{background:var(--surface);border-radius:10px;flex-direction:column;gap:6px;margin-bottom:10px;padding:10px 16px;display:flex}.accuracy-banner-players{color:var(--text);flex-wrap:wrap;align-items:center;gap:10px;font-size:.85rem;font-weight:600;display:flex}.accuracy-banner-vs{color:var(--text2);font-size:.78rem;font-weight:400}.accuracy-banner-opening{font-size:.8rem}.accuracy-opening-link{color:var(--text2);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.accuracy-opening-link:hover{color:var(--text)}.accuracy-pill{color:var(--pill-color);border:1px solid color-mix(in srgb, var(--pill-color) 40%, transparent);background:color-mix(in srgb, var(--pill-color) 12%, transparent);border-radius:9999px;padding:2px 8px;font-size:.75rem;font-weight:700;display:inline-block}.move-mate{letter-spacing:.3px;margin-left:2px;font-size:.65rem;font-weight:700}.stats-page{flex-direction:column;gap:24px;max-width:900px;margin:0 auto;padding:32px 24px 64px;display:flex}.stats-header{justify-content:space-between;align-items:center;display:flex}.stats-header h1{letter-spacing:-.02em;font-size:1.75rem;font-weight:700}.stats-overview{background:var(--surface);border-radius:14px;align-items:center;gap:32px;padding:24px 28px;display:flex}.stats-overview-numbers{flex-direction:column;gap:6px;display:flex}.stats-big-number{color:var(--text);font-size:2.5rem;font-weight:700;line-height:1}.stats-big-label{color:var(--text2);margin-bottom:4px;font-size:.8rem}.stats-detail-row{flex-wrap:wrap;gap:16px;font-size:.82rem;display:flex}.stats-correct{color:#1ed760;font-weight:600}.stats-incorrect{color:#f3727f;font-weight:600}.stats-unique{color:var(--text2);font-size:.78rem}.stats-section{background:var(--surface);border-radius:14px;padding:20px 24px}.stats-section h3{color:var(--text);margin:0 0 16px;font-size:1rem;font-weight:700}.stats-family-row{align-items:center;gap:12px;padding:8px 0;display:flex}.stats-family-row+.stats-family-row{border-top:1px solid var(--border)}.stats-family-label{flex-direction:column;gap:2px;min-width:160px;display:flex}.stats-family-name{color:var(--text);font-size:.8rem;font-weight:500}.stats-family-count{color:var(--text2);font-size:.7rem}.stats-family-bar-wrap{flex:1;align-items:center;gap:10px;display:flex}.stats-family-bar-track{background:#ffffff14;border-radius:4px;flex:1;height:8px;overflow:hidden}.stats-family-bar-fill{border-radius:4px;height:100%;transition:width .5s}.stats-family-pct{text-align:right;min-width:36px;font-size:.78rem;font-weight:700}.stats-family-nodata{color:var(--text2);font-size:.75rem}.opening-table{background:var(--surface);border-radius:14px;overflow:hidden}.opening-table-title{color:var(--text);margin:0;padding:20px 24px 0;font-size:1rem;font-weight:700}.opening-table-header{color:var(--text2);text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid var(--border);cursor:pointer;grid-template-columns:60px 1fr 80px 60px 80px;padding:8px 24px;font-size:.72rem;font-weight:700;display:grid}.opening-table-header span{cursor:pointer;-webkit-user-select:none;user-select:none}.opening-table-header span:hover{color:var(--text)}.opening-table-row{border-bottom:1px solid var(--border);grid-template-columns:60px 1fr 80px 60px 80px;align-items:center;padding:10px 24px;font-size:.82rem;display:grid}.opening-table-row:last-child{border-bottom:none}.opening-table-row:hover{background:var(--surface2)}.opening-table-name{white-space:nowrap;text-overflow:ellipsis;max-width:300px;color:var(--text);font-size:.8rem;overflow:hidden}.opening-table-empty{color:var(--text2);padding:24px;font-size:.82rem}.stats-empty{text-align:center;color:var(--text2);flex-direction:column;align-items:center;gap:16px;padding:64px 24px;display:flex}.replay-page{max-width:1000px;margin:0 auto;padding:24px 16px 48px}.replay-selector{max-width:620px;margin:0 auto}.replay-game-list{flex-direction:column;gap:6px;max-height:480px;margin-top:16px;display:flex;overflow-y:auto}.replay-game-list-hint{color:var(--text2);margin-bottom:4px;font-size:.82rem}.replay-game-card{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;border-radius:8px;flex-direction:column;gap:4px;width:100%;padding:12px 16px;transition:background .15s,border-color .15s;display:flex}.replay-game-card:hover{background:var(--surface2);border-color:var(--accent)}.replay-game-card-main{justify-content:space-between;align-items:center;gap:8px;display:flex}.replay-game-card-meta{color:var(--text2);gap:10px;font-size:.72rem;display:flex}.replay-game-players{align-items:center;gap:8px;font-size:.875rem;font-weight:700;display:flex}.replay-game-rating{color:var(--text2);font-size:.75rem;font-weight:400}.replay-color-dot{border:1px solid var(--border);border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.replay-color-dot.white{background:#f0d9b5}.replay-color-dot.black{background:#3a3a3a}.replay-game-result{border-radius:9999px;padding:2px 10px;font-size:.78rem;font-weight:700}.result-white{color:var(--green);background:#1ed7601f}.result-black{color:var(--red);background:#f3727f1f}.result-draw{color:var(--orange);background:#ffa42b1f}.replay-config{max-width:620px;margin:0 auto}.replay-config-game-info{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:24px;padding:12px 16px;display:flex}.replay-config-players{font-size:.9rem;font-weight:700}.replay-config-date{color:var(--text2);font-size:.78rem}.replay-config-result{color:var(--text2);font-size:.78rem;font-weight:700}.setup-section-note{color:var(--text2);font-size:.72rem;font-weight:400}.replay-mode-options{flex-wrap:wrap;gap:12px;display:flex}.replay-mode-btn{border:2px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-align:left;border-radius:12px;flex:1;align-items:flex-start;gap:12px;min-width:200px;padding:16px 20px;transition:border-color .15s,background .15s;display:flex}.replay-mode-btn:hover{border-color:var(--accent)}.replay-mode-btn.selected{border-color:var(--accent);background:#5096ff14}.replay-mode-icon{flex-shrink:0;font-size:1.5rem}.replay-mode-text{flex-direction:column;gap:4px;display:flex}.replay-mode-text strong{font-size:.95rem}.replay-mode-text small{color:var(--text2);font-size:.78rem}.replay-analysis-progress{text-align:center;max-width:500px;margin:0 auto}.replay-analysis-subtitle{color:var(--text2);margin-bottom:24px;font-size:.85rem}.replay-analysis-count{color:var(--text2);margin-top:12px;font-size:.82rem}.replay-progress-bar-wrap{background:var(--surface2);border-radius:9999px;height:8px;margin:0 auto;overflow:hidden}.replay-progress-bar{background:var(--accent);border-radius:9999px;height:100%;transition:width .3s}.replay-mistake-banner{background:#f3727f1a;border:1px solid #f3727f4d;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.mistake-message{flex-direction:column;gap:2px;display:flex}.mistake-message strong{color:var(--red);font-size:.88rem}.mistake-message span{color:var(--text2);font-size:.78rem}.mistake-actions{gap:8px;display:flex}.replay-eval-flash{text-align:center;border-radius:6px;padding:8px 14px;font-size:.82rem;font-weight:700}.replay-eval-flash.accepted{color:var(--green);background:#1ed7601f}.replay-eval-flash.rejected{color:var(--red);background:#f3727f1f}.replay-status-mistake{color:var(--orange)!important}.replay-status-onbook{color:var(--green)!important}.replay-status-offbook{color:var(--text2)!important}.replay-game-header{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.replay-game-players-label{flex:1;min-width:0;font-size:.85rem;font-weight:700}.replay-game-date{color:var(--text2);font-size:.72rem}.replay-game-result-badge{color:var(--text2);font-size:.75rem;font-weight:700}.replay-mode-indicator{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mode-pill{border-radius:9999px;align-items:center;gap:4px;padding:3px 10px;font-size:.72rem;font-weight:700;display:inline-flex}.mode-pill.guided{color:var(--accent);background:#5096ff1f}.mode-pill.unguided{color:var(--green);background:#1ed7601f}.replay-mistake-progress{color:var(--text2);font-size:.72rem}.replay-no-mistakes{color:var(--green);font-size:.72rem}.replay-book-indicator{border-radius:9999px;padding:2px 8px;font-size:.72rem;font-weight:700}.replay-book-indicator.on-book{color:var(--green);background:#1ed7601f}.replay-book-indicator.off-book{color:var(--text2);background:#c8c8c81f}.replay-summary{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px}.replay-summary h4{color:var(--text2);text-transform:uppercase;letter-spacing:1.4px;margin-bottom:10px;font-size:.72rem;font-weight:700}.replay-summary-row{border-top:1px solid var(--border);color:var(--text2);grid-template-columns:1fr 1fr 1fr;padding:4px 0;font-size:.78rem;display:grid}.replay-summary-row.fixed{color:var(--green)}.replay-summary-row.skipped{color:var(--text3)}.replay-move-list{max-height:300px;overflow-y:auto}.past-deviation{opacity:.45}.active-move{font-weight:700;color:var(--accent)!important}.mistake-move{color:var(--orange)!important}.mistake-symbol{color:var(--red);margin-left:2px;font-size:.7rem}@media (width<=900px){.replay-game{grid-template-columns:1fr!important}.replay-sidebar{order:-1}}@media (width<=768px){.home-page{padding:40px 16px 60px}.hero{margin-bottom:20px}.hero-brand{margin-bottom:16px;font-size:clamp(2.5rem,8vw,4rem)}.hero-sub{max-width:100%;margin-bottom:28px;font-size:1rem;line-height:1.6}.hero-start{width:100%;min-width:unset;box-sizing:border-box;justify-content:center;padding:14px 20px;display:flex}.hero-stats{flex-wrap:wrap;gap:8px;margin-bottom:40px;font-size:.68rem}.feature-list{flex-direction:column;gap:0;display:flex}.feature-row{gap:16px;width:100%;padding:20px 0;transition:none}.feature-row:hover{padding-left:0}.feature-row-title{font-size:.92rem}.feature-row-desc{font-size:.8rem;line-height:1.55}.feature-row-arrow{font-size:.95rem}}@media (width<=480px){.home-page{padding:32px 12px 48px}.hero-brand{margin-bottom:12px;font-size:clamp(2rem,10vw,2.8rem)}.hero-sub{margin-bottom:24px;font-size:.9rem}.hero-start{padding:13px 16px;font-size:.9rem}.hero-stats{letter-spacing:.9px;gap:6px;margin-bottom:32px;font-size:.62rem}.hero-stats-dot{display:none}.feature-row{gap:12px;padding:16px 0}.feature-row-title{font-size:.88rem}.feature-row-desc{font-size:.76rem}}@media (width<=768px){.opening-filter{flex-direction:column;gap:10px;margin-bottom:18px}.filter-top-row{align-items:center;gap:10px;display:flex}.search-input{flex:1;width:100%;min-width:0}.view-toggle-group{flex-shrink:0;margin-left:auto}.family-pill-row{flex-wrap:wrap;justify-content:flex-start;gap:6px}.family-pill{padding:6px 14px;font-size:.8rem}.result-count{margin-bottom:12px;font-size:.8rem}.opening-filter+*{margin-top:0}}@media (width<=480px){.family-pill{padding:5px 10px;font-size:.75rem}}@media (width<=768px){.endgame-page{padding-top:8px}.endgame-page .page-header h1{letter-spacing:-.02em;font-size:1.45rem}.endgame-page .page-header p{font-size:.85rem}.endgame-category{margin-bottom:36px}.category-title{letter-spacing:1.4px;margin-bottom:12px;padding-bottom:10px;font-size:.7rem}.endgame-grid{grid-template-columns:1fr;gap:8px}.endgame-card{min-height:44px;padding:14px 16px;overflow:hidden}.endgame-card-header{margin-bottom:8px}.difficulty-badge{padding:4px 10px;font-size:.65rem}.endgame-title{overflow-wrap:break-word;word-break:break-word;font-size:.85rem}.endgame-desc{overflow-wrap:break-word;word-break:break-word;font-size:.76rem;line-height:1.5}.endgame-study{max-width:100%}.endgame-header{margin-bottom:20px}.back-link{align-items:center;min-height:44px;margin-bottom:10px;padding:4px 0;font-size:.85rem;display:inline-flex}.endgame-header .endgame-title{letter-spacing:-.02em;overflow-wrap:break-word;word-break:break-word;font-size:1.275rem}.endgame-header .endgame-desc{font-size:.82rem;line-height:1.5}.endgame-body{grid-template-columns:1fr;gap:20px}.endgame-body .board-section{order:0;width:100%;max-width:100%}.endgame-sidebar{order:1;gap:12px;width:100%}.endgame-message{border-radius:8px;min-height:48px;padding:12px 16px;font-size:.85rem}.endgame-progress{font-size:.78rem}.endgame-actions{gap:8px}.endgame-actions .btn-secondary,.endgame-actions .btn-ghost{box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-height:44px;font-size:.875rem;display:flex}.hints-section h4{letter-spacing:1.2px;margin-bottom:8px;font-size:.68rem}.hints-section li{align-items:center;min-height:44px;padding:10px 12px;font-size:.78rem;display:flex}}@media (width<=480px){.endgame-page .page-header h1{font-size:1.25rem}.endgame-page .page-header p{font-size:.8rem}.category-title{letter-spacing:1.2px;font-size:.65rem}.endgame-card{padding:12px 14px}.endgame-title{font-size:.82rem}.endgame-desc{font-size:.73rem}.endgame-header .endgame-title{font-size:1.1rem}.endgame-header .endgame-desc{font-size:.78rem}.endgame-message{padding:10px 14px;font-size:.82rem}.endgame-actions .btn-secondary,.endgame-actions .btn-ghost{min-height:44px;font-size:.84rem}}@media (width<=768px){.training-page{min-height:calc(100vh - 64px);padding-bottom:24px}.training-page>div>h2,.color-picker h2{margin-bottom:6px;font-size:1.65rem}.training-page>div>p,.color-picker p{margin-bottom:28px}.color-picker .color-options,.color-options{flex-direction:column;align-items:stretch;gap:12px}.color-btn{min-height:64px;min-width:unset;text-align:left;flex-direction:row;justify-content:flex-start;gap:14px;width:100%;padding:18px 20px}.color-piece{flex-shrink:0;font-size:2.2rem}.training-view{max-width:100%;padding:0 12px}.training-opening-name{gap:6px;margin-bottom:10px;padding:8px 12px}.opening-name-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.85rem;overflow:hidden}.family-tag{font-size:.72rem}.training-header{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:10px}.score-tracker{gap:8px}.training-info{flex-wrap:wrap;gap:6px}.training-header .btn-ghost.small{text-align:center;justify-content:center;width:100%;min-height:44px;padding:10px 16px;font-size:.8rem}.board-wrapper{width:100%;max-width:100%}.feedback-pill{padding:10px 24px;font-size:.95rem}.move-indicator,.your-turn,.computer-turn{padding:4px 10px;font-size:.68rem}.training-footer{margin-top:10px}.move-history-mini{gap:2px;font-size:.72rem;line-height:1.6}.training-complete{max-width:100%;margin:28px auto;padding:0 16px}.training-complete h2{margin-bottom:18px;font-size:1.65rem}.opening-reveal{margin-bottom:18px;padding:20px 16px}.opening-reveal h3{font-size:1.05rem}.complete-actions{gap:10px;margin-bottom:20px}.complete-actions .btn-primary,.complete-actions .btn-secondary,.complete-actions .btn-ghost{box-sizing:border-box;width:100%;min-height:44px;padding:12px 20px;font-size:.875rem}.score-pill{padding:4px 8px;font-size:.68rem}.eco-badge{padding:2px 8px;font-size:.62rem}.eco-badge.large{padding:5px 14px;font-size:.8rem}}@media (width<=480px){.training-page>div>h2,.color-picker h2{font-size:1.45rem}.color-btn{gap:12px;min-height:58px;padding:14px 16px}.color-piece{font-size:1.9rem}.training-view{padding:0 8px}.training-opening-name{margin-bottom:8px;padding:6px 10px}.opening-name-label{font-size:.78rem}.training-header{gap:6px;margin-bottom:8px}.training-header .btn-ghost.small{min-height:40px;padding:8px 14px;font-size:.75rem}.feedback-pill{padding:8px 18px;font-size:.875rem}.move-indicator,.your-turn,.computer-turn{padding:3px 8px;font-size:.62rem}.training-footer{margin-top:8px}.move-history-mini{font-size:.68rem}.training-complete{margin:16px auto;padding:0 12px}.training-complete h2{margin-bottom:14px;font-size:1.4rem}.opening-reveal{margin-bottom:14px;padding:16px 12px}.opening-reveal h3{font-size:.95rem}.complete-actions{gap:8px;margin-bottom:16px}.complete-actions .btn-primary,.complete-actions .btn-secondary,.complete-actions .btn-ghost{min-height:40px;padding:10px 16px;font-size:.8rem}.score-pill{padding:3px 6px;font-size:.62rem}}.nav-hamburger{width:40px;height:40px;color:var(--text);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:8px;font-size:1.4rem;display:none}.nav-mobile-menu{background:var(--bg2);border-bottom:1px solid var(--border);z-index:200;flex-direction:column;gap:4px;width:100%;padding:16px;display:none;position:absolute;top:64px;left:0}.nav-mobile-menu.open{display:flex}.nav-mobile-menu a{color:var(--text2);border-radius:8px;padding:14px 20px;font-size:1rem;font-weight:400;transition:color .15s,background .15s;display:block}.nav-mobile-menu a:hover{color:var(--text);background:var(--surface2)}.nav-mobile-menu a.active{color:var(--accent);background:var(--surface2)}.nav-mobile-menu .theme-toggle{align-self:flex-start;margin-top:4px;margin-left:20px}@media (width<=768px){.nav-links{display:none}.nav-hamburger{display:flex}.opening-grid{grid-template-columns:1fr;gap:8px}.opening-card{box-sizing:border-box;width:100%;min-height:56px;padding:14px 16px}.eco-badge,.family-tag{font-size:.7rem}.move-preview{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.75rem;overflow:hidden}.opening-group-header{flex-wrap:wrap;align-items:flex-start;gap:10px;padding:14px 16px}.opening-group-info{flex:100%;min-width:0}.opening-group-top-row{flex-wrap:wrap;align-items:center;gap:6px}.opening-group-name{flex:100%;font-size:.95rem}.opening-group-moves{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.75rem;overflow:hidden}.opening-group-count{flex-shrink:0;align-self:flex-start}.opening-group-body{margin-left:18px;padding:8px 0 8px 16px}}@media (width<=480px){.opening-card,.opening-group-header{padding:12px}.opening-group-body{margin-left:10px;padding:6px 0 6px 10px}}@media (width<=768px){.learn-view{padding:0 4px}.learn-header{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:16px}.opening-title-block{gap:8px}.opening-title{font-size:1.2rem}.train-this-btn{text-align:center;width:100%;padding:12px 20px;font-size:.9rem}.learn-body{grid-template-columns:unset;flex-direction:column;gap:16px;display:flex}.board-section{gap:10px;width:100%;max-width:100%}.board-controls{gap:6px;padding:8px 12px}.board-controls button{border-radius:50%;width:44px;height:44px;font-size:1.1rem}.step-label{min-width:56px;font-size:.85rem}.learn-sidebar{order:unset;width:100%;max-width:100%;padding:16px}.move-list{-webkit-overflow-scrolling:touch;max-height:200px;margin-bottom:16px;padding-bottom:4px;overflow-y:auto;box-shadow:inset 0 -12px 10px -8px #00000040}.pgn-block code{padding:10px;font-size:.75rem;line-height:1.5}.eco-badge.large{padding:6px 14px;font-size:.95rem}}@media (width<=480px){.learn-view{padding:0}.opening-title{font-size:1.05rem}.eco-badge.large{padding:4px 10px;font-size:.8rem}.family-tag{font-size:.62rem}.learn-sidebar{padding:12px}.board-controls{padding:6px 10px}.board-controls button{width:44px;height:44px;font-size:1.1rem}.move-list{max-height:160px}.pgn-block code{font-size:.7rem}}@media (width<=768px){.engine-setup{max-width:100%;margin:16px auto;padding:16px}.engine-setup h1{font-size:1.4rem}.color-options{flex-direction:column;align-items:stretch;gap:10px}.color-btn{width:100%;min-width:unset;border-radius:12px;flex-direction:row;justify-content:flex-start;gap:14px;padding:16px 20px}.color-btn .color-piece{font-size:2rem;line-height:1}.color-btn span:not(.color-piece){text-align:left;flex-direction:column;align-items:flex-start;gap:2px;display:flex}.skill-slider-ticks{left:0;right:0}.skill-tick .skill-tick-label,.skill-tick .skill-tick-elo{display:none}.skill-tick:first-child .skill-tick-label,.skill-tick:last-child .skill-tick-label,.skill-tick.active .skill-tick-label{font-size:.62rem;display:block}.skill-tick-dot{width:10px;height:10px}.engine-game{flex-direction:column;gap:16px;max-width:100%;margin:0 auto;display:flex}.engine-board-col{width:100%}.engine-status-bar{flex-wrap:wrap;gap:6px;min-height:36px;font-size:.9rem}.thinking-indicator,.your-turn-label{font-size:.875rem}.game-status-msg{padding:4px 12px;font-size:.8rem}.engine-controls{flex-wrap:wrap;gap:8px}.engine-controls .btn-secondary,.engine-controls .btn-primary{text-align:center;flex:auto;min-width:90px}.engine-sidebar{order:1;width:100%;max-width:100%}.move-table-body{-webkit-overflow-scrolling:touch;max-height:220px;overflow-y:auto;box-shadow:inset 0 -12px 10px -8px #00000040}.start-btn{width:100%;margin-top:16px;padding:14px}}@media (width<=480px){.engine-setup{margin:8px auto;padding:12px}.engine-setup h1{font-size:1.2rem}.color-btn{padding:14px 16px}.color-btn .color-piece{font-size:1.75rem}.difficulty-tag,.player-color-tag{padding:4px 10px;font-size:.7rem}.hint-toggle{padding:6px 12px;font-size:.7rem}.game-status-msg{letter-spacing:.8px;font-size:.72rem}.move-table-body{max-height:180px}.move-row{padding:4px 10px;font-size:.78rem}}@media (width<=768px){.replay-page{padding:12px}.replay-page .page-header{margin-bottom:16px}.replay-page .page-header h1{font-size:1.4rem}.replay-game-list{gap:10px}.replay-game-card{padding:14px 16px}.replay-mode-options{flex-direction:column;align-items:stretch;gap:10px}.replay-mode-btn{text-align:left;border-radius:12px;flex-direction:row;justify-content:flex-start;gap:14px;width:100%;padding:16px 20px}.color-options{flex-direction:column;align-items:stretch;gap:10px}.color-btn{width:100%;min-width:unset;border-radius:12px;flex-direction:row;justify-content:flex-start;gap:14px;padding:16px 20px}.replay-game{flex-direction:column;gap:16px;max-width:100%;margin:0 auto;display:flex}.replay-board-col{width:100%}.replay-status-bar{flex-wrap:wrap;gap:6px;min-height:36px;font-size:.9rem}.replay-controls{flex-wrap:wrap;gap:8px}.replay-controls .btn-secondary,.replay-controls .btn-primary{text-align:center;flex:auto;min-width:90px}.replay-mistake-banner{gap:10px;padding:12px 14px}.replay-mistake-banner .mistake-actions{flex-wrap:wrap;gap:8px}.replay-mistake-banner .mistake-actions button{flex:auto;min-width:80px}.replay-analysis-progress{padding:16px}.replay-sidebar{order:1;width:100%;max-width:100%}.replay-move-list{-webkit-overflow-scrolling:touch;max-height:220px;overflow-y:auto;box-shadow:inset 0 -12px 10px -8px #00000040}.start-btn{width:100%;margin-top:16px;padding:14px}}@media (width<=480px){.replay-page .page-header h1{font-size:1.2rem}.replay-mode-btn,.color-btn{padding:14px 16px}.replay-game-card{padding:12px 14px}.replay-controls .btn-secondary,.replay-controls .btn-primary{font-size:.82rem}.replay-move-list{max-height:180px}.replay-move-row{padding:4px 10px;font-size:.78rem}.replay-status-bar{font-size:.82rem}}@media (width<=768px){.review-page{padding:16px 12px 40px}.game-importer{margin-top:20px}.importer-title{font-size:1.45rem}.importer-subtitle{margin-bottom:20px;font-size:.82rem}.importer-tabs{gap:4px;width:100%;margin-bottom:18px}.importer-tab{white-space:nowrap;text-overflow:ellipsis;flex:1;min-height:40px;padding:10px 4px;font-size:.78rem;overflow:hidden}.importer-input-row{flex-direction:column;gap:8px}.importer-input{box-sizing:border-box;flex:none;width:100%}.importer-input-row .btn-primary{box-sizing:border-box;width:100%;min-height:44px;padding:11px 16px;font-size:.875rem}.pgn-textarea{min-height:160px;font-size:.8rem}.pgn-textarea+div .btn-primary,.pgn-textarea~div .btn-primary{box-sizing:border-box;width:100%;min-height:44px;padding:11px 16px;font-size:.875rem}.game-list-item{flex-direction:column;align-items:flex-start;gap:4px;min-height:56px;padding:10px 14px}.game-list-players{white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:100%;font-size:.8rem;overflow:hidden}.game-list-meta{font-size:.7rem}.analysis-progress-bar{margin-bottom:14px;padding:10px 12px}.analysis-progress-label{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.78rem;overflow:hidden}.review-game-header{flex-wrap:wrap;gap:6px;padding:8px 12px;font-size:.78rem}.review-player{white-space:nowrap;text-overflow:ellipsis;max-width:calc(50% - 28px);overflow:hidden}.review-nav{border-radius:14px;flex-wrap:wrap;justify-content:stretch;align-self:stretch;gap:6px 4px;padding:6px 8px}.review-move-counter{text-align:center;width:100%;color:var(--text);text-overflow:ellipsis;white-space:nowrap;order:-1;min-width:0;padding:0 4px 2px;font-size:.78rem;font-weight:600;overflow:hidden}.review-nav button{background:var(--surface2);border-radius:10px;flex:1 0;min-width:0;height:52px;font-size:1.2rem}.review-nav button:first-child,.review-nav button:last-child{opacity:.65;font-size:1rem}.review-player-summaries{gap:10px;padding:10px 12px}.player-summary{align-items:flex-start;gap:6px}.player-summary-label{flex-shrink:0;min-width:60px;font-size:.72rem}.player-summary-counts{gap:4px}.class-pill{padding:3px 8px;font-size:.72rem}.class-pill-bad{padding:3px 9px;font-size:.78rem}.classification-badge{gap:4px;padding:3px 8px;bottom:12px;right:12px}.badge-symbol{font-size:.85rem}.badge-label{letter-spacing:.6px;font-size:.65rem}.review-reset-btn{box-sizing:border-box;letter-spacing:.2px;border-radius:12px;width:100%;min-height:48px;padding:12px 16px;font-size:.875rem;font-weight:600}.review-ready{margin:32px auto;padding:0 4px}.review-ready-header h2{font-size:1.25rem}.review-ready-actions{flex-direction:column;gap:10px}.review-ready-actions .btn-primary,.review-ready-actions .btn-secondary{box-sizing:border-box;width:100%;min-height:44px;padding:11px 16px;font-size:.875rem}}@media (width<=480px){.review-page{padding:12px 10px 32px}.importer-title{font-size:1.25rem}.importer-tab{min-height:38px;padding:9px 2px;font-size:.72rem}.game-list-item{padding:9px 12px}.game-list-players{font-size:.75rem}.analysis-progress-label{font-size:.72rem}.review-game-header{padding:6px 10px;font-size:.72rem}.review-nav{gap:4px 3px;padding:4px 6px}.review-nav button{height:48px;font-size:1.1rem}.review-move-counter{font-size:.72rem}.player-summary-label{font-size:.68rem}.class-pill{padding:2px 7px;font-size:.68rem}.classification-badge{padding:3px 7px;bottom:10px;right:10px}.badge-symbol{font-size:.8rem}.badge-label{font-size:.6rem}.review-ready-header h2{font-size:1.1rem}.pgn-textarea{min-height:140px}}@media (width<=768px){.review-page--active{background:var(--bg);z-index:10;flex-direction:column;padding:8px 10px;display:flex;position:fixed;inset:64px 0 0}.review-page--active .analysis-progress-bar{flex-shrink:0;margin-bottom:6px}.review-page--active .accuracy-banner{flex-flow:row;flex-shrink:0;align-items:center;gap:6px;margin-bottom:4px;padding:5px 10px;overflow:hidden}.review-page--active .accuracy-banner-players{white-space:nowrap;flex-wrap:nowrap;flex:1;gap:4px;min-width:0;font-size:.72rem;overflow:hidden}.review-page--active .accuracy-banner-players>span{text-overflow:ellipsis;flex-shrink:1;min-width:0;overflow:hidden}.review-page--active .accuracy-banner-opening{display:none}.review-page--active .review-layout{flex-direction:column;flex:1;gap:6px;min-height:0;overflow:hidden;grid-template-columns:unset!important;display:flex!important}.review-page--active .review-graph{display:none}.review-page--active .review-board-col{flex-shrink:0;order:1;gap:6px}.review-page--active .review-game-header{padding:6px 10px;font-size:.72rem}.review-page--active .review-nav{border-radius:12px;gap:4px 3px;padding:4px 8px}.review-page--active .review-player-summaries{display:none}.review-page--active .review-moves{flex-direction:column;flex:1 1 0;order:3;min-height:0;display:flex;overflow:hidden}.review-page--active .review-move-list{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.review-page--active .review-move-list-body{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;min-height:0;overflow-y:auto;max-height:none!important}.review-page--active .review-reset-btn{border-radius:12px;flex-shrink:0;align-self:stretch;min-height:48px;margin:8px 8px 4px}}@media (width<=480px){.review-page--active{padding:6px 8px}.review-page--active .review-nav button{height:48px;font-size:1.1rem}}@media (width<=768px){.review-page--active .review-board-col .review-reset-btn{display:none}.stats-page{padding:16px 12px 40px}.stats-header{flex-direction:column;align-items:flex-start;gap:10px}.stats-overview{flex-direction:column;align-items:center}.stats-overview-numbers{text-align:center;width:100%}.stats-big-number{font-size:2rem}.stats-detail-row{flex-flow:wrap;justify-content:center;gap:16px}.stats-section h3{margin-bottom:10px;font-size:1rem}.opening-table{font-size:.8rem}.opening-table-name{white-space:nowrap;text-overflow:ellipsis;max-width:140px;overflow:hidden}.stats-family-row .stats-family-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}}@media (width<=480px){.stats-page{padding:12px 10px 32px}.stats-big-number{font-size:1.6rem}.opening-table{font-size:.72rem}.opening-table-name{max-width:100px}.opening-table .btn-ghost{padding:4px 8px;font-size:.72rem}}
