:root,[data-theme=dark]{color-scheme:dark;--bg: #121212;--bg2: #181818;--bg3: #1f1f1f;--surface: #181818;--surface2: #232323;--surface3: #2c2c2c;--text: #ffffff;--text2: #b3b3b3;--text3: #cbcbcb;--text-muted: #8a8a8a;--accent: #1ed760;--accent2: #1db954;--accent-ink: #062b14;--accent-soft: rgba(30, 215, 96, .14);--green: #1ed760;--red: #f3727f;--orange: #ffa42b;--blue: #4a9eff;--green-soft: rgba(30, 215, 96, .14);--red-soft: rgba(243, 114, 127, .15);--orange-soft: rgba(255, 164, 43, .15);--blue-soft: rgba(74, 158, 255, .15);--border: #4d4d4d;--border2: #7c7c7c;--hairline: #2f2f2f;--shadow-card: rgba(0,0,0,.3) 0px 8px 8px;--shadow-dialog: 0 12px 32px rgba(0, 0, 0, .55);--sq-light: #f0d9b5;--sq-dark: #b58863;--sq-highlight: rgba(255, 214, 10, .45);--eval-white: #f2f2f2;--eval-black: #1a1a1a}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){color-scheme:light;--bg: #ffffff;--bg2: #f8f8f8;--bg3: #f0f0f0;--surface: #f3f3f3;--surface2: #ebebeb;--surface3: #e0e0e0;--text: #121212;--text2: #5a5a5a;--text3: #3a3a3a;--text-muted: #7a7a7a;--accent: #169c46;--accent2: #128a3d;--accent-ink: #ffffff;--accent-soft: rgba(22, 156, 70, .12);--green: #16a34a;--red: #c62f3d;--orange: #b85c00;--blue: #1f6fd1;--green-soft: rgba(22, 163, 74, .12);--red-soft: rgba(198, 47, 61, .1);--orange-soft: rgba(230, 120, 0, .12);--blue-soft: rgba(31, 111, 209, .1);--border: #d4d4d4;--border2: #9a9a9a;--hairline: #e6e6e6;--shadow-card: rgba(0,0,0,.08) 0px 4px 12px;--shadow-dialog: 0 12px 32px rgba(0, 0, 0, .14)}}[data-theme=light]{color-scheme:light;--bg: #ffffff;--bg2: #f8f8f8;--bg3: #f0f0f0;--surface: #f3f3f3;--surface2: #ebebeb;--surface3: #e0e0e0;--text: #121212;--text2: #5a5a5a;--text3: #3a3a3a;--text-muted: #7a7a7a;--accent: #169c46;--accent2: #128a3d;--accent-ink: #ffffff;--accent-soft: rgba(22, 156, 70, .12);--green: #16a34a;--red: #c62f3d;--orange: #b85c00;--blue: #1f6fd1;--green-soft: rgba(22, 163, 74, .12);--red-soft: rgba(198, 47, 61, .1);--orange-soft: rgba(230, 120, 0, .12);--blue-soft: rgba(31, 111, 209, .1);--border: #d4d4d4;--border2: #9a9a9a;--hairline: #e6e6e6;--shadow-card: rgba(0,0,0,.08) 0px 4px 12px;--shadow-dialog: 0 12px 32px rgba(0, 0, 0, .14)}:root{--font: "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--fs-xs: .6875rem;--fs-sm: .8125rem;--fs-md: .9375rem;--fs-lg: 1.125rem;--fs-xl: 1.5rem;--fs-2xl: 2rem;--fs-3xl: 3.25rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 9999px;--z-sticky: 100;--z-menu: 200;--z-tabbar: 300;--z-overlay: 1000;--ease: cubic-bezier(.2, .7, .2, 1);--dur-fast: .15s;--dur: .25s;--nav-h: 60px;--tabbar-h: 64px}*{-webkit-tap-highlight-color:transparent}@media(max-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,input[type=text],input[type=search],input[type=email],input[type=url],input[type=tel],input[type=number],input[type=password],textarea,select{font-size:16px}::-webkit-scrollbar{width:4px}}@media(max-width:480px){.board-wrapper{max-width:min(100vw - 32px,480px)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{font-family:var(--font);color:var(--text);background:var(--bg);font-size:16px}body{min-height:100vh;background:var(--bg)}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.app{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;padding:32px 40px;max-width:1440px;margin:0 auto;width:100%;box-sizing:border-box}button:disabled{opacity:.4;cursor:not-allowed}.page-header{margin-bottom:32px}.page-header h1{font-size:2rem;font-weight:700;letter-spacing:-.02em;margin-bottom:6px}.page-header p{font-size:.875rem;color:var(--text2)}.openings-tabs{display:flex;gap:4px;margin-bottom:24px;border-bottom:1px solid var(--border)}.openings-tab{padding:10px 24px;font-size:.875rem;font-weight:600;color:var(--text2);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s}.openings-tab:hover{color:var(--text)}.openings-tab.active{color:var(--green);border-bottom-color:var(--green)}.eco-badge{display:inline-block;padding:3px 10px;border-radius:9999px;font-size:.66rem;font-weight:600;text-transform:capitalize;background:var(--surface2);color:var(--accent);letter-spacing:.05em}.eco-badge.large{font-size:1.2rem;padding:8px 20px;border-radius:9999px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-weight:700}.family-tag{display:inline-block;padding:3px 10px;border-radius:9999px;font-size:.66rem;font-weight:600;background:var(--surface2);color:var(--text2)}.opening-filter{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.filter-top-row{display:flex;align-items:center;gap:12px}.family-pill-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.search-input,.family-select{padding:12px 20px;border-radius:500px;border:none;box-shadow:#7c7c7c 0 0 0 1px inset;background:var(--bg3);color:var(--text);font-size:.875rem;outline:none;transition:box-shadow .15s}.search-input{flex:1;min-width:200px}.search-input::placeholder{color:var(--text2)}.search-input:focus,.family-select:focus{box-shadow:var(--text) 0 0 0 1px inset}.family-select{min-width:200px;appearance:none;cursor:pointer}.family-select option{background:var(--bg3);color:var(--text)}.family-pill{padding:8px 16px;border-radius:9999px;border:none;background:var(--surface2);color:var(--text2);font-size:.875rem;font-family:inherit;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.family-pill:hover{background:var(--surface3);color:var(--text)}.family-pill.active{background:var(--accent);color:#fff}.result-count{color:var(--text2);font-size:.8rem;margin-bottom:16px}.opening-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.opening-card{display:block;padding:14px 16px;border-radius:8px;background:var(--surface);border:none;transition:background .15s}.opening-card:hover{background:var(--surface2)}.opening-card-header{display:flex;gap:8px;align-items:center;margin-bottom:6px}.opening-name{font-size:.875rem;font-weight:700;margin-bottom:4px;color:var(--text)}.move-preview{font-size:.75rem;color:var(--text2);font-family:Courier New,monospace;margin-bottom:4px}.move-count{font-size:.72rem;color:var(--text2)}.load-more-btn{display:block;width:100%;margin-top:24px;padding:14px;border-radius:9999px;border:1px solid var(--border2);background:transparent;color:var(--text);font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;transition:border-color .15s}.load-more-btn:hover{border-color:var(--text)}.view-toggle-group{display:flex;gap:4px;align-items:center}.view-toggle{width:36px;height:36px;border-radius:8px;border:none;background:var(--surface2);color:var(--text2);font-size:1rem;cursor:pointer;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{width:100%;display:flex;align-items:center;gap:14px;padding:16px 20px;border-radius:8px;background:var(--surface);border:none;color:var(--text);cursor:pointer;text-align:left;font-family:inherit;transition:background .2s,box-shadow .2s,transform .15s}.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{font-size:.875rem;color:var(--text2);transition:transform .25s ease,color .15s;width:16px;flex-shrink:0}.opening-group-chevron.open{transform:rotate(90deg);color:var(--accent)}.opening-group-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.opening-group-top-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.opening-group-name{font-size:1rem;font-weight:700;letter-spacing:-.01em}.opening-group-sub-row{display:flex;align-items:center;gap:8px}.opening-group-moves{font-size:.75rem;color:var(--text2);font-family:Courier New,monospace;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opening-group-count{padding:5px 14px;border-radius:9999px;font-size:.72rem;font-weight:700;white-space:nowrap;background:var(--surface2);color:var(--text2);letter-spacing:.5px;flex-shrink:0;transition:background .15s,color .15s}.opening-group.is-open .opening-group-count{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.opening-group-body{padding:10px 0 10px 30px;border-left:2px solid var(--surface3);margin-left:27px;margin-top:2px}.learn-view{max-width:1100px;margin:0 auto}.learn-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;flex-wrap:wrap;gap:16px}.opening-title-block{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.opening-title{font-size:1.5rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.learn-body{display:grid;grid-template-columns:1fr minmax(260px,320px);gap:32px}.board-section{display:flex;flex-direction:column;gap:12px;position:relative}.learn-sidebar{background:var(--surface);border-radius:8px;padding:20px}.learn-sidebar h3{color:var(--accent);margin-bottom:14px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1.6px}.move-list{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:24px}.move-number{color:var(--text2);font-size:.8rem;margin-right:2px}.move-token{padding:4px 8px;border-radius:4px;font-size:.82rem;font-family:Courier New,monospace;cursor:pointer;background:var(--surface2);color:var(--text2);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);font-size:.72rem;margin-bottom:8px;text-transform:uppercase;letter-spacing:1.4px;font-weight:700}.pgn-block code{display:block;padding:12px;border-radius:4px;background:var(--bg);font-size:.75rem;color:var(--text2);word-break:break-all;line-height:1.6}.board-controls{display:flex;align-items:center;gap:8px;justify-content:center;background:var(--surface);padding:10px 16px;border-radius:9999px}.board-controls button{width:36px;height:36px;border-radius:50%;border:none;background:var(--surface2);color:var(--text);font-size:1rem;transition:background .15s}.board-controls button:hover:not(:disabled){background:var(--surface3)}.step-label{color:var(--text2);font-size:.8rem;min-width:64px;text-align:center}.training-page{min-height:calc(100vh - 64px)}.color-picker{max-width:640px;margin:48px auto;text-align:center;padding:0 16px}.color-picker h2{font-size:2rem;font-weight:700;color:var(--text);margin-bottom:10px;letter-spacing:-.02em}.color-picker p{color:var(--text2);margin-bottom:40px;font-size:.875rem}.color-options{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.color-btn{display:flex;flex-direction:column;align-items:center;gap:10px;padding:32px 28px;border-radius:12px;background:var(--surface);border:1px solid transparent;color:var(--text);cursor:pointer;min-width:160px;transition:background .15s,transform .15s,box-shadow .15s;text-transform:uppercase;letter-spacing:1px;font-size:.8rem;font-weight:700}.color-btn:hover{background:var(--surface2);transform:translateY(-3px);box-shadow:#0006 0 8px 20px}.color-btn.random-btn{border-color:var(--accent)}.color-btn.random-btn:hover{box-shadow:color-mix(in srgb,var(--accent) 20%,transparent) 0 8px 20px}.color-piece{font-size:3rem;line-height:1}.color-btn small{color:var(--text2);font-weight:400;font-size:.72rem;text-transform:none;letter-spacing:0}.training-view{max-width:800px;margin:0 auto}.training-opening-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 16px;background:var(--surface);border-radius:8px;margin-bottom:14px}.training-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:10px}.training-info{display:flex;gap:8px;align-items:center}.move-indicator{padding:4px 12px;border-radius:9999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;background:#b3b3b31a;color:var(--text2)}.your-turn{padding:4px 12px;border-radius:9999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 25%,transparent)}.computer-turn{padding:4px 12px;border-radius:9999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;background:#b3b3b314;color:var(--text2)}.feedback-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;border-radius:8px;z-index:10}.feedback-pill{padding:12px 32px;border-radius:9999px;font-size:1.1rem;font-weight:700;letter-spacing:.5px;animation:feedbackPop .15s ease-out}.feedback-overlay.correct .feedback-pill{background:#1ed760f2;color:#000;box-shadow:0 4px 24px #1ed76066}.feedback-overlay.wrong .feedback-pill{background:#f3727ff2;color:#fff;box-shadow:0 4px 24px #f3727f59}@keyframes feedbackPop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.score-tracker{display:flex;gap:6px;align-items:center}.score-pill{padding:4px 10px;border-radius:9999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px}.score-pill.correct{background:#1ed76026;color:#1ed760}.score-pill.incorrect{background:#f3727f26;color:#f3727f}.score-pill.total{background:#b3b3b31a;color:var(--text2)}.training-footer{margin-top:14px}.move-history-mini{display:flex;flex-wrap:wrap;gap:2px;font-size:.78rem;color:var(--text2)}.mini-move{display:inline-flex;gap:2px}.mini-move.last{color:var(--text)}.move-number{color:var(--text2);opacity:.6}.training-complete{max-width:480px;margin:48px auto;text-align:center;padding:0 16px}.training-complete h2{font-size:2rem;font-weight:700;color:var(--text);margin-bottom:24px;letter-spacing:-.02em}.opening-reveal{background:var(--surface);border-radius:12px;padding:28px;margin-bottom:24px;box-shadow:#0000004d 0 8px 24px}.opening-reveal h3{font-size:1.2rem;font-weight:700;margin:12px 0 6px}.eco-badge.large{display:inline-block;padding:6px 18px;border-radius:9999px;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent);font-size:.875rem;font-weight:700;letter-spacing:1px;text-transform:uppercase}.complete-actions{display:flex;flex-direction:column;gap:10px;align-items:center;margin-bottom:24px}.complete-actions .btn-primary,.complete-actions .btn-secondary,.complete-actions .btn-ghost{width:280px;text-align:center;justify-content:center}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--text2);margin-bottom:14px;font-size:.875rem;transition:color .15s}.hints-section h4{font-size:.72rem;color:var(--text2);margin-bottom:10px;text-transform:uppercase;letter-spacing:1.4px;font-weight:700}.hints-section ul{list-style:none;display:flex;flex-direction:column;gap:6px}.hints-section li{font-size:.8rem;padding:8px 12px;border-radius:4px;background:var(--surface)}.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{font-size:1.75rem;font-weight:700;color:var(--text);margin-bottom:8px;letter-spacing:-.02em}.engine-loading{color:var(--text2);font-size:.8rem;margin-bottom:16px;padding:10px 16px;background:var(--surface);border-radius:9999px}.engine-error{color:var(--red);font-size:.8rem;margin-bottom:16px;padding:10px 16px;background:#f3727f1a;border-radius:9999px}.start-fen-badge{display:inline-block;margin-bottom:16px;padding:4px 14px;border-radius:9999px;background:var(--surface2);color:var(--text2);font-size:.75rem}.back-link{display:inline-block;color:var(--text2);margin-bottom:16px;font-size:.875rem;background:none;border:none;padding:0;transition:color .15s}.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{font-size:.72rem;color:var(--text2);margin-bottom:14px;text-transform:uppercase;letter-spacing:1.6px;font-weight:700}.skill-slider-container{padding:8px 0 56px;position:relative}.skill-slider-elo{text-align:center;font-size:1.1rem;font-weight:700;color:var(--accent);margin-bottom:20px;letter-spacing:.5px}.skill-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:9999px;background:var(--surface3);outline:none;cursor:pointer;position:relative}.skill-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);border:none;box-shadow:#0006 0 2px 8px;cursor:grab;transition:transform .15s,box-shadow .15s}.skill-slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:#00000080 0 4px 12px}.skill-slider::-webkit-slider-thumb:active{cursor:grabbing}.skill-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--accent);border:none;box-shadow:#0006 0 2px 8px;cursor:grab}.skill-slider::-moz-range-track{height:6px;border-radius:9999px;background:var(--surface3)}.skill-slider-ticks{position:absolute;left:10px;right:10px;top:60px;height:50px}.skill-tick{position:absolute;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;cursor:pointer;padding:0;color:var(--text2);transition:color .15s}.skill-tick:hover{color:var(--text)}.skill-tick.active{color:var(--accent)}.skill-tick-dot{width:8px;height:8px;border-radius:50%;background:var(--surface3);transition:background .15s}.skill-tick.active .skill-tick-dot{background:var(--accent)}.skill-tick:hover .skill-tick-dot{background:var(--text2)}.skill-tick-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;white-space:nowrap}.skill-tick-elo{font-size:.6rem;font-weight:400;opacity:.7}.start-btn{width:100%;padding:14px;font-size:.875rem;margin-top:8px}.engine-game{display:grid;grid-template-columns:1fr minmax(240px,300px);gap:28px;max-width:1100px;margin:0 auto}.engine-board-col{display:flex;flex-direction:column;gap:12px}.engine-status-bar{display:flex;align-items:center;justify-content:space-between;min-height:32px}.thinking-indicator{color:var(--text2);font-size:.82rem;font-style:italic;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.your-turn-label{color:var(--green);font-size:.82rem;font-weight:700}.game-status-msg{font-size:.82rem;font-weight:700;padding:4px 16px;border-radius:9999px;text-transform:uppercase;letter-spacing:1.2px}.game-status-msg.in-check{background:#ffa42b26;color:var(--orange)}.game-status-msg.game-over{background:#f3727f26;color:var(--red)}.engine-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.difficulty-tag,.player-color-tag{font-size:.75rem;color:var(--text2);background:var(--surface);padding:4px 12px;border-radius:9999px}.hint-toggle{padding:6px 14px;border-radius:9999px;border:1px solid var(--border);background:transparent;color:var(--text2);font-size:.75rem;font-weight:700;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.hint-toggle:hover{border-color:var(--accent);color:var(--accent)}.hint-toggle.active{background:#1ed7601f;color:var(--green);border-color:var(--green)}.engine-sidebar{display:flex;flex-direction:column;gap:16px}.engine-sidebar h3{font-size:.72rem;color:var(--text2);text-transform:uppercase;letter-spacing:1.6px;font-weight:700}.move-table{background:var(--surface);border-radius:8px;overflow:hidden}.move-table-header{display:grid;grid-template-columns:32px 1fr 1fr;padding:8px 12px;background:var(--bg);font-size:.72rem;color:var(--text2);text-transform:uppercase;letter-spacing:1.2px;font-weight:700}.move-table-body{max-height:400px;overflow-y:auto}.move-row{display:grid;grid-template-columns:32px 1fr 1fr;padding:5px 12px;border-top:1px solid var(--border);font-size:.82rem;font-family:Courier New,monospace}.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;padding:80px;color:var(--text2)}.not-found h2{margin-bottom:16px;font-size:1.5rem;font-weight:700;color:var(--text)}.board-wrapper{position:relative;max-width:100%}.board-section{max-width:640px}.analyzing-label{position:absolute;left:0;right:0;text-align:center;font-size:.8rem;color:var(--accent);opacity:.75;animation:pulse 1.2s ease-in-out infinite;pointer-events:none}.board-section>div:first-child,.board-wrapper>div:first-child{max-width:100%!important}.loading-dots{display:inline-block;animation:pulse 1.2s ease-in-out infinite}.train-this-btn{padding:10px 28px;font-size:.82rem}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--surface3);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:var(--border)}@media(max-width:900px){.main-content{padding:20px 16px}.learn-body,.engine-game{grid-template-columns:1fr}.learn-sidebar,.engine-sidebar{order:-1}.board-section,.engine-game{max-width:100%}}@media(max-width:640px){.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}}.review-page{max-width:1300px;margin:0 auto;padding:24px 16px 48px}.game-importer{max-width:640px;margin:40px auto 0}.importer-title{font-size:1.75rem;font-weight:700;color:var(--text);margin-bottom:8px}.importer-subtitle{color:var(--text2);font-size:.9rem;margin-bottom:28px}.importer-tabs{display:flex;gap:6px;margin-bottom:24px}.importer-tab{padding:8px 22px;border-radius:9999px;border:none;background:var(--surface2);color:var(--text2);font-size:.85rem;font-weight:700;cursor:pointer;transition:background .15s,color .15s}.importer-tab.active{background:var(--accent);color:#fff}.importer-input-row{display:flex;gap:8px;margin-bottom:12px}.importer-input{flex:1}.importer-error{color:var(--red);font-size:.82rem;margin-top:10px}.game-list{display:flex;flex-direction:column;gap:6px;margin-top:16px;max-height:420px;overflow-y:auto}.game-list-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;width:100%;transition:background .15s,border-color .15s}.game-list-item:hover{background:var(--surface2);border-color:var(--accent)}.game-list-players{font-size:.875rem;font-weight:700}.game-list-meta{display:flex;gap:8px;align-items:center;font-size:.75rem;color:var(--text2)}.game-result-badge{padding:2px 8px;border-radius:4px;background:var(--surface2);font-weight:700;font-size:.75rem}.game-time-class{text-transform:capitalize}.pgn-textarea{width:100%;min-height:200px;padding:12px;border-radius:8px;background:var(--bg3);border:1px solid var(--border);color:var(--text);font-family:Courier New,monospace;font-size:.78rem;resize:vertical;outline:none;box-sizing:border-box}.pgn-textarea:focus{border-color:var(--accent)}.review-ready{max-width:520px;margin:60px auto;text-align:center}.review-ready-header{display:flex;align-items:center;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:12px}.review-ready-header h2{font-size:1.5rem;font-weight:700;color:var(--text)}.review-ready-date{color:var(--text2);font-size:.8rem}.result-badge{padding:3px 10px;border-radius:6px;background:var(--surface2);font-weight:700;font-size:.8rem;color:var(--text)}.review-ready-desc{color:var(--text2);font-size:.9rem;margin-bottom:28px}.review-ready-actions{display:flex;gap:12px;justify-content:center}.analysis-progress-bar{margin-bottom:20px;padding:14px 16px;background:var(--surface);border-radius:10px}.analysis-progress-label{font-size:.82rem;color:var(--text2);display:block;margin-bottom:10px}.progress-bar-outer{height:6px;border-radius:9999px;background:var(--surface2);overflow:hidden}.progress-bar-inner{height:100%;border-radius:9999px;background:var(--accent);transition:width .3s ease}.review-layout{display:grid;grid-template-columns:auto minmax(280px,380px);grid-template-rows:auto 1fr;gap:28px;align-items:start;justify-content:center}.review-board-col{display:flex;flex-direction:column;gap:14px;grid-row:1 / 3;width:min(560px,calc(100vh - 280px));min-width:min(320px,100%)}.review-graph{grid-row:1;grid-column:2}.review-moves{grid-row:2;grid-column:2}.review-game-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;background:var(--surface);border-radius:10px;font-size:.85rem;font-weight:700}.review-player{color:var(--text)}.review-nav{display:flex;gap:8px;justify-content:center;padding:8px;background:var(--surface);border-radius:9999px;align-self:center}.review-nav button{width:38px;height:38px;border-radius:50%;border:none;background:var(--surface2);color:var(--text);font-size:1rem;cursor:pointer;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{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.eval-graph-label{font-size:.7rem;color:var(--text2);text-transform:uppercase;letter-spacing:1.4px;font-weight:700}.eval-graph-score{font-size:.875rem;font-weight:700;color:var(--accent)}.eval-graph-svg{width:100%;height:80px;cursor:crosshair;display:block;border-radius:4px;overflow:hidden}.eval-graph-axis{display:flex;justify-content:space-between;font-size:.65rem;color:var(--text3, var(--text2));margin-top:4px}.review-move-list{background:var(--surface);border-radius:10px;overflow:hidden;flex:1}.review-move-list-header{display:grid;grid-template-columns:32px 1fr 1fr;padding:8px 12px;background:var(--bg);font-size:.7rem;color:var(--text2);text-transform:uppercase;letter-spacing:1.2px;font-weight:700}.review-move-list-body{max-height:440px;overflow-y:auto}.review-move-row{display:grid;grid-template-columns:32px 1fr 1fr;align-items:center}.review-move-row:nth-child(2n){background:var(--bg2, var(--bg))}.review-move-btn{padding:5px 8px;border:none;background:transparent;color:var(--text2);font-family:Courier New,monospace;font-size:.82rem;cursor:pointer;text-align:left;width:100%;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{font-size:.7rem;font-weight:700;margin-left:2px}.classification-summary{display:flex;flex-direction:column;gap:8px;padding:12px 16px;background:var(--surface);border-radius:10px}.class-summary-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.class-summary-player{font-size:.78rem;font-weight:700;color:var(--text2);min-width:70px}.class-summary-badges{display:flex;gap:6px;flex-wrap:wrap}.class-badge{display:inline-flex;align-items:center;gap:2px;padding:2px 8px;border-radius:9999px;font-size:.72rem;font-weight:700}@media(max-width:960px){.review-layout{grid-template-columns:1fr;grid-template-rows:auto;justify-content:stretch}.review-board-col{grid-row:auto;order:2;width:100%;min-width:0}.review-graph{grid-row:auto;grid-column:auto;order:1}.review-moves{grid-row:auto;grid-column:auto;order:3}}.review-board-wrapper{position:relative;width:100%}.classification-badge{position:absolute;bottom:8px;right:8px;display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:6px;background:color-mix(in srgb,var(--badge-color) 20%,#000 80%);border:1px solid var(--badge-color);pointer-events:none}.badge-symbol{font-size:.95rem;font-weight:700;color:var(--badge-color)}.badge-label{font-size:.72rem;font-weight:700;color:var(--badge-color);text-transform:uppercase;letter-spacing:.8px}.review-move-counter{font-size:.75rem;color:var(--text2);margin-left:4px;align-self:center}.review-player-summaries{display:flex;flex-direction:column;gap:8px;padding:12px 14px;background:var(--surface);border-radius:10px}.player-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.player-summary-label{font-size:.78rem;font-weight:700;color:var(--text2);min-width:72px}.player-summary-counts{display:flex;gap:6px;flex-wrap:wrap}.class-pill{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:9999px;font-size:.75rem;font-weight:700;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)}.class-pill-bad{font-size:.82rem;padding:4px 11px}.review-reset-btn{align-self:center}.review-done-actions{margin-top:24px;display:flex;gap:8px;justify-content:center}.accuracy-banner{background:var(--surface);border-radius:10px;padding:10px 16px;margin-bottom:10px;display:flex;flex-direction:column;gap:6px}.accuracy-banner-players{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.85rem;font-weight:600;color:var(--text)}.accuracy-banner-vs{color:var(--text2);font-weight:400;font-size:.78rem}.accuracy-banner-opening{font-size:.8rem}.accuracy-source-note{font-size:.72rem;line-height:1.45;color:var(--text2);margin:0;max-width:70ch}.accuracy-source-note strong{color:var(--text);font-weight:600}.accuracy-opening-link{display:inline-flex;align-items:center;gap:6px;color:var(--text2);text-decoration:none}.accuracy-opening-link:hover{color:var(--text)}.accuracy-pill{display:inline-block;padding:2px 8px;border-radius:9999px;font-size:.75rem;font-weight:700;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)}.move-mate{font-size:.65rem;font-weight:700;margin-left:2px;letter-spacing:.3px}.stats-page{max-width:1100px;margin:0 auto;padding:32px 24px 64px;display:flex;flex-direction:column;gap:24px}.stats-header{display:flex;align-items:center;justify-content:space-between}.stats-header h1{font-size:1.75rem;font-weight:700;letter-spacing:-.02em}.stats-overview{display:flex;align-items:center;gap:32px;background:var(--surface);border-radius:14px;padding:24px 28px}.stats-overview-numbers{display:flex;flex-direction:column;gap:6px}.stats-big-number{font-size:2.5rem;font-weight:700;line-height:1;color:var(--text)}.stats-big-label{font-size:.8rem;color:var(--text2);margin-bottom:4px}.stats-detail-row{display:flex;gap:16px;flex-wrap:wrap;font-size:.82rem}.stats-correct{color:#1ed760;font-weight:600}.stats-incorrect{color:#f3727f;font-weight:600}.stats-unique{font-size:.78rem;color:var(--text2)}.stats-section{background:var(--surface);border-radius:14px;padding:20px 24px}.stats-section h3{font-size:1rem;font-weight:700;margin:0 0 16px;color:var(--text)}.stats-family-row{display:flex;align-items:center;gap:12px;padding:8px 0}.stats-family-row+.stats-family-row{border-top:1px solid var(--border)}.stats-family-label{display:flex;flex-direction:column;gap:2px;min-width:160px}.stats-family-name{font-size:.8rem;color:var(--text);font-weight:400}.stats-family-count{font-size:.7rem;color:var(--text2)}.stats-family-bar-wrap{flex:1;display:flex;align-items:center;gap:10px}.stats-family-bar-track{flex:1;height:8px;border-radius:4px;background:#ffffff14;overflow:hidden}.stats-family-bar-fill{height:100%;border-radius:4px;transition:width .5s ease}.stats-family-pct{font-size:.78rem;font-weight:700;min-width:36px;text-align:right}.stats-family-nodata{font-size:.75rem;color:var(--text2)}.opening-table{background:var(--surface);border-radius:14px;overflow:hidden}.opening-table-title{font-size:1rem;font-weight:700;margin:0;padding:20px 24px 0;color:var(--text)}.opening-table-header{display:grid;grid-template-columns:60px 1fr 80px 60px 80px;padding:8px 24px;font-size:.72rem;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid var(--border);cursor:pointer}.opening-table-header span{cursor:pointer;-webkit-user-select:none;user-select:none}.opening-table-header span:hover{color:var(--text)}.opening-table-row{display:grid;grid-template-columns:60px 1fr 80px 60px 80px;padding:10px 24px;align-items:center;font-size:.82rem;border-bottom:1px solid var(--border)}.opening-table-row:last-child{border-bottom:none}.opening-table-row:hover{background:var(--surface2)}.opening-table-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px;color:var(--text);font-size:.8rem}.opening-table-empty{padding:24px;color:var(--text2);font-size:.82rem}.stats-empty{text-align:center;padding:64px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--text2)}.stats-hero{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:28px}.stats-hero-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.stats-hero-card--green{border-color:#1ed7604d;background:linear-gradient(135deg,rgba(30,215,96,.08) 0%,var(--surface2) 100%)}.stats-hero-value{font-size:2rem;font-weight:800;color:var(--text);letter-spacing:-.02em;line-height:1}.stats-hero-card--green .stats-hero-value{color:var(--green)}.stats-hero-label{font-size:.75rem;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;font-weight:400}.stats-section-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px;margin-bottom:20px}.stats-section-title{font-size:1.1rem;font-weight:700;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border);color:var(--text)}.stats-training-top{display:flex;align-items:center;gap:28px;margin-bottom:24px}.stats-tables-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}.stats-export{display:flex;gap:8px}.stats-export-btn{font-size:.78rem!important;padding:6px 14px!important}.stats-reset-section{display:flex;gap:12px;justify-content:center;padding:24px 0 12px;border-top:1px solid var(--border);margin-top:8px}.rating-chart-container{margin-bottom:20px;background:var(--bg2);border-radius:10px;padding:16px;border:1px solid var(--border)}.rating-chart-empty{text-align:center;padding:28px 16px;color:var(--text2);font-size:.85rem}@media(max-width:768px){.stats-hero{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.stats-section-card{padding:16px}.stats-training-top{flex-direction:column;align-items:stretch}.stats-tables-row{grid-template-columns:1fr}.stats-export{flex-wrap:wrap}}@media(max-width:480px){.stats-hero{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.stats-hero-value{font-size:1.5rem}}.replay-page{max-width:1100px;margin:0 auto;padding:24px 16px 48px}.replay-selector{max-width:620px;margin:0 auto}.replay-game-list{display:flex;flex-direction:column;gap:6px;margin-top:16px;max-height:480px;overflow-y:auto}.replay-game-list-hint{font-size:.82rem;color:var(--text2);margin-bottom:4px}.replay-game-card{display:flex;flex-direction:column;gap:4px;padding:12px 16px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;width:100%;transition:background .15s,border-color .15s}.replay-game-card:hover{background:var(--surface2);border-color:var(--accent)}.replay-game-card-main{display:flex;align-items:center;justify-content:space-between;gap:8px}.replay-game-card-meta{display:flex;gap:10px;font-size:.72rem;color:var(--text2)}.replay-game-players{display:flex;align-items:center;gap:8px;font-size:.875rem;font-weight:700}.replay-game-rating{font-size:.75rem;color:var(--text2);font-weight:400}.replay-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid var(--border);flex-shrink:0}.replay-color-dot.white{background:#f0d9b5}.replay-color-dot.black{background:#3a3a3a}.replay-game-result{font-size:.78rem;font-weight:700;padding:2px 10px;border-radius:9999px}.result-win{background:#1ed7601f;color:var(--green)}.result-loss{background:#f3727f1f;color:var(--red)}.result-draw{background:#ffa42b1f;color:var(--orange)}.result-white,.result-black{background:#ffa42b0f;color:var(--text2)}.replay-config{max-width:620px;margin:0 auto}.replay-config-game-info{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;background:var(--surface);border-radius:8px;border:1px solid var(--border);margin-bottom:24px}.replay-config-players{font-weight:700;font-size:.9rem}.replay-config-date{font-size:.78rem;color:var(--text2)}.replay-config-result{font-size:.78rem;color:var(--text2);font-weight:700}.setup-section-note{font-size:.72rem;color:var(--text2);font-weight:400}.replay-mode-options{display:flex;gap:12px;flex-wrap:wrap}.replay-mode-btn{display:flex;align-items:flex-start;gap:12px;padding:16px 20px;border-radius:12px;border:2px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-align:left;flex:1;min-width:200px;transition:border-color .15s,background .15s}.replay-mode-btn:hover{border-color:var(--accent)}.replay-mode-btn.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.replay-mode-icon{font-size:1.5rem;flex-shrink:0}.replay-mode-text{display:flex;flex-direction:column;gap:4px}.replay-mode-text strong{font-size:.95rem}.replay-mode-text small{font-size:.78rem;color:var(--text2)}.replay-analysis-progress{text-align:center;max-width:500px;margin:0 auto}.replay-analysis-subtitle{color:var(--text2);font-size:.85rem;margin-bottom:24px}.replay-analysis-count{color:var(--text2);font-size:.82rem;margin-top:12px}.replay-progress-bar-wrap{height:8px;background:var(--surface2);border-radius:9999px;overflow:hidden;margin:0 auto}.replay-progress-bar{height:100%;background:var(--accent);border-radius:9999px;transition:width .3s ease}.replay-mistake-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:8px;background:#f3727f1a;border:1px solid rgba(243,114,127,.3)}.mistake-message{display:flex;flex-direction:column;gap:2px}.mistake-message strong{font-size:.88rem;color:var(--red)}.mistake-message span{font-size:.78rem;color:var(--text2)}.mistake-actions{display:flex;gap:8px}.replay-eval-flash{padding:8px 14px;border-radius:6px;font-size:.82rem;font-weight:700;text-align:center}.replay-eval-flash.accepted{background:#1ed7601f;color:var(--green)}.replay-eval-flash.rejected{background:#f3727f1f;color:var(--red)}.replay-status-mistake{color:var(--orange)!important}.replay-status-onbook{color:var(--green)!important}.replay-status-offbook{color:var(--text2)!important}.replay-game-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;background:var(--surface);border-radius:8px;border:1px solid var(--border)}.replay-game-players-label{font-weight:700;font-size:.85rem;flex:1;min-width:0}.replay-game-date{font-size:.72rem;color:var(--text2)}.replay-game-result-badge{font-size:.75rem;font-weight:700;color:var(--text2)}.replay-mode-indicator{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.mode-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:9999px;font-size:.72rem;font-weight:700}.mode-pill.guided{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.mode-pill.unguided{background:#1ed7601f;color:var(--green)}.replay-mistake-progress{font-size:.72rem;color:var(--text2)}.replay-no-mistakes{font-size:.72rem;color:var(--green)}.replay-book-indicator{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:9999px}.replay-book-indicator.on-book{background:#1ed7601f;color:var(--green)}.replay-book-indicator.off-book{background:#c8c8c81f;color:var(--text2)}.replay-summary{background:var(--surface);border-radius:8px;border:1px solid var(--border);padding:12px}.replay-summary h4{font-size:.72rem;color:var(--text2);text-transform:uppercase;letter-spacing:1.4px;font-weight:700;margin-bottom:10px}.replay-summary-row{display:grid;grid-template-columns:1fr 1fr 1fr;font-size:.78rem;padding:4px 0;border-top:1px solid var(--border);color:var(--text2)}.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{color:var(--accent)!important;font-weight:700}.mistake-move{color:var(--orange)!important}.mistake-symbol{font-size:.7rem;margin-left:2px;color:var(--red)}@media(max-width:900px){.replay-game{grid-template-columns:1fr!important}.replay-sidebar{order:-1}}.puzzle-page{max-width:1100px;margin:0 auto;padding:24px 16px 48px}.puzzle-selector{max-width:560px;margin:0 auto;padding-top:8px}.puzzle-selector-title{font-size:1.6rem;font-weight:700;margin-bottom:6px}.puzzle-selector-sub{color:var(--text2);font-size:.9rem;margin-bottom:28px}.puzzle-mode-cards{display:flex;flex-direction:column;gap:12px}.puzzle-mode-card{display:flex;align-items:center;gap:16px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:18px 20px;cursor:pointer;text-align:left;transition:border-color .15s,background .15s;width:100%}.puzzle-mode-card:hover{border-color:var(--green);background:var(--surface3)}.puzzle-mode-card--rated{border-color:var(--green)}.puzzle-mode-icon{font-size:2rem;flex-shrink:0}.puzzle-mode-text{display:flex;flex-direction:column;gap:4px}.puzzle-mode-text strong{font-size:1rem;color:var(--text)}.puzzle-mode-text small{font-size:.8rem;color:var(--text2)}.puzzle-theme-group{margin-bottom:20px}.puzzle-theme-group-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);margin-bottom:10px}.puzzle-theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.puzzle-theme-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 10px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;cursor:pointer;transition:border-color .15s,background .15s}.puzzle-theme-btn:hover{border-color:var(--accent);background:var(--surface3)}.puzzle-theme-icon{font-size:1.4rem}.puzzle-theme-label{font-size:.78rem;color:var(--text);font-weight:400}.puzzle-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:8px}.puzzle-back{flex-shrink:0}.puzzle-topbar-center{flex:1;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px}.puzzle-mode-badge{display:inline-block;padding:3px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:999px;font-size:.8rem;color:var(--text2)}.puzzle-topbar-stats{display:flex;gap:20px;flex-shrink:0}.puzzle-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.puzzle-stat-label{font-size:.7rem;color:var(--text2)}.puzzle-stat-value{font-size:1rem;font-weight:700;color:var(--green)}.puzzle-layout{display:flex;gap:20px;align-items:flex-start}.puzzle-board-col{flex:1 1 auto;display:flex;flex-direction:column;gap:10px;min-width:0;max-width:min(560px,calc(100vw - 32px))}.puzzle-board-wrapper{width:100%;aspect-ratio:1}.puzzle-side{flex:1;min-width:0;padding:4px 0}.puzzle-turn-banner{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;background:#1ed7601a;border:1px solid rgba(30,215,96,.25);border-radius:8px;color:var(--green);font-weight:600;font-size:.9rem;margin-bottom:6px}.puzzle-turn-dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:piece-glow-pulse 1.5s ease-in-out infinite}.puzzle-meta{display:flex;align-items:center;justify-content:center;font-size:.85rem;color:var(--text2)}.puzzle-rating-badge{background:var(--surface2);border:1px solid var(--border);padding:2px 10px;border-radius:999px;font-size:.8rem}.puzzle-feedback{min-height:44px;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:8px;font-weight:600;font-size:.95rem;padding:8px 14px}.puzzle-feedback--empty{background:transparent;min-height:44px}.puzzle-feedback--incorrect{background:#f3727f26;color:var(--red);border:1px solid rgba(243,114,127,.3)}.puzzle-feedback--correct{background:#1ed7601f;color:var(--green);border:1px solid rgba(30,215,96,.25)}.puzzle-feedback--solved{background:#1ed76026;color:var(--green);border:1px solid rgba(30,215,96,.35);font-size:1rem}.puzzle-rating-change{font-size:.9rem;font-weight:700;padding:2px 8px;border-radius:6px}.puzzle-rating-change.pos{color:var(--green)}.puzzle-rating-change.neg{color:var(--red)}.puzzle-actions{display:flex;gap:8px}.puzzle-btn{flex:1;padding:10px 14px;font-size:.875rem}.puzzle-btn--next{flex:2}.puzzle-queue-building{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:60vh;text-align:center;padding:40px 24px}.puzzle-queue-building p{font-size:1rem;font-weight:600;color:var(--text);margin:0}.puzzle-queue-building span{font-size:.82rem;color:var(--text2)}.puzzle-loading{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;background:var(--surface2);border-radius:6px;gap:16px;color:var(--text2);font-size:.9rem}.puzzle-spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes piece-glow-pulse{0%,to{opacity:.7}50%{opacity:1}}.puzzle-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.puzzle-tag{font-size:.72rem;padding:3px 9px;background:var(--surface2);border:1px solid var(--border);border-radius:999px;color:var(--text2)}.puzzle-game-link{font-size:.78rem;color:var(--accent);text-decoration:none}.puzzle-game-link:hover{text-decoration:underline}.stats-puzzle-section{margin-top:32px;padding-top:24px;border-top:1px solid var(--border)}.stats-puzzle-section h3{margin-bottom:16px}.puzzle-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;margin-bottom:16px}.puzzle-stat-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}.puzzle-stat-card-value{font-size:1.5rem;font-weight:700;color:var(--green)}.puzzle-stat-card-label{font-size:.75rem;color:var(--text2)}.puzzle-history-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.puzzle-history-row{display:flex;align-items:center;gap:10px;font-size:.82rem;padding:6px 10px;background:var(--surface2);border-radius:6px}.puzzle-history-result{font-weight:600;min-width:50px}.puzzle-history-result.solved{color:var(--green)}.puzzle-history-result.failed{color:var(--red)}.puzzle-history-meta{color:var(--text2);flex:1}.puzzle-history-change{font-weight:600;min-width:36px;text-align:right}.puzzle-history-change.pos{color:var(--green)}.puzzle-history-change.neg{color:var(--red)}.puzzle-timed-divider{display:flex;align-items:center;gap:10px;margin:6px 0 2px;color:var(--text2);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.puzzle-timed-divider:before,.puzzle-timed-divider:after{content:"";flex:1;height:1px;background:var(--border)}.puzzle-mode-card--timed{border-color:color-mix(in srgb,var(--accent) 40%,var(--border));justify-content:space-between}.puzzle-mode-card--timed:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface2))}.puzzle-timed-badge{font-size:.85rem;font-weight:700;color:var(--accent);flex-shrink:0;padding:3px 8px;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:9999px}.puzzle-timer{font-size:1rem;font-weight:700;color:var(--text2);min-width:36px;text-align:center;transition:color .2s;font-variant-numeric:tabular-nums}.puzzle-timer--warning{color:var(--red)}.puzzle-sprint-done{display:flex;flex-direction:column;align-items:center;gap:20px;padding-top:32px;text-align:center}.puzzle-sprint-done-title{font-size:1.6rem;font-weight:700}.puzzle-sprint-done-sub{font-size:.8rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin-top:-14px}.puzzle-sprint-ring{display:flex;flex-direction:column;align-items:center;justify-content:center;width:120px;height:120px;border-radius:50%;border:4px solid var(--accent);gap:2px}.puzzle-sprint-score{font-size:2rem;font-weight:800;line-height:1}.puzzle-sprint-score-label{font-size:.7rem;color:var(--text2);text-transform:uppercase;letter-spacing:.06em}.puzzle-sprint-stats{display:grid;grid-template-columns:1fr 1fr;gap:14px 28px}.puzzle-sprint-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.puzzle-sprint-stat-num{font-size:1.5rem;font-weight:700;line-height:1}.puzzle-sprint-stat-lbl{font-size:.72rem;color:var(--text2);text-transform:uppercase;letter-spacing:.05em}.puzzle-sprint-grade{font-size:1rem;color:var(--text2)}.puzzle-sprint-actions{display:flex;flex-direction:column;gap:8px;width:100%;max-width:220px}.coord-page{max-width:560px;margin:0 auto;padding:24px 16px 48px;display:flex;flex-direction:column;align-items:center;gap:20px}.coord-idle,.coord-done{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center;padding-top:40px}.coord-title{font-size:2rem;font-weight:700}.coord-sub{color:var(--text2);line-height:1.6;max-width:400px}.coord-start-btn{min-width:160px;font-size:1rem}.coord-header{width:100%;display:flex;justify-content:space-between;align-items:center}.coord-progress{font-size:.85rem;color:var(--text2)}.coord-live-score{font-size:.9rem;display:flex;gap:4px;align-items:center}.coord-live-correct{color:var(--green);font-weight:600}.coord-live-sep{color:var(--text2)}.coord-live-wrong{color:var(--red);font-weight:600}.coord-target{font-size:3.5rem;font-weight:800;letter-spacing:.05em;line-height:1;transition:color .15s;color:var(--text);font-family:Courier New,monospace;min-height:4rem;display:flex;align-items:center;justify-content:center}.coord-target--correct{color:var(--green)}.coord-target--wrong{color:var(--red)}.coord-board-wrap{width:100%;cursor:pointer}.coord-done-title{font-size:1.6rem;font-weight:700}.coord-accuracy-ring{display:flex;flex-direction:column;align-items:center;justify-content:center;width:120px;height:120px;border-radius:50%;border:4px solid var(--accent);gap:2px}.coord-accuracy-pct{font-size:1.8rem;font-weight:800;line-height:1}.coord-accuracy-label{font-size:.7rem;color:var(--text2);text-transform:uppercase;letter-spacing:.06em}.coord-score-summary{display:flex;gap:32px}.coord-score-item{display:flex;flex-direction:column;align-items:center;gap:2px}.coord-score-num{font-size:1.6rem;font-weight:700}.coord-score-item--correct .coord-score-num{color:var(--green)}.coord-score-item--wrong .coord-score-num{color:var(--red)}.coord-score-lbl{font-size:.75rem;color:var(--text2);text-transform:uppercase;letter-spacing:.05em}.coord-grade{font-size:1rem;color:var(--text2)}.coord-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;max-width:400px}.coord-mode-card{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:12px 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;transition:border-color .15s,background .15s}.coord-mode-card:hover{border-color:var(--accent)}.coord-mode-card--active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}.coord-mode-label{font-size:.95rem;font-weight:700;color:var(--text)}.coord-mode-tag{font-size:.72rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.05em}.coord-mode-desc{font-size:.75rem;color:var(--text2);line-height:1.4;margin-top:2px}.coord-timer{font-size:1.1rem;font-weight:700;color:var(--text2);min-width:36px;text-align:center;transition:color .2s}.coord-timer--warning{color:var(--red)}.coord-mode-badge{font-size:.78rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.06em}.training-header-actions{display:flex;gap:8px;align-items:center}.timer-toggle{border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:.78rem;transition:background .15s,color .15s,border-color .15s}.timer-toggle--on{background:#4a9eff26;border-color:var(--accent);color:var(--accent)}.timer-bar-wrap{width:100%;display:flex;align-items:center;gap:8px}.timer-bar{flex:1;height:6px;border-radius:3px;background:var(--surface2);overflow:hidden}.timer-bar-fill{height:100%;border-radius:3px;transition:width 1s linear,background .3s}.timer-label{font-size:.8rem;font-weight:600;color:var(--text2);min-width:24px;text-align:right}.gh-overview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:28px}.gh-stat-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:16px 12px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}.gh-stat-value{font-size:1.6rem;font-weight:800;color:var(--text);line-height:1;letter-spacing:-.02em}.gh-stat-label{font-size:.68rem;color:var(--text2);text-transform:uppercase;letter-spacing:.05em;font-weight:400}.gh-text-win{color:#1ed760}.gh-text-loss{color:#f3727f}.gh-text-draw{color:var(--text2)}.gh-block{margin-bottom:28px}.gh-block h3{font-size:.95rem;font-weight:700;color:var(--text);margin:0 0 12px}.gh-wdl-track{display:flex;height:10px;border-radius:5px;overflow:hidden;gap:2px;margin-bottom:8px;background:var(--surface2)}.gh-wdl-seg{height:100%;transition:width .4s ease}.gh-wdl-win{background:#1ed760}.gh-wdl-draw{background:#777}.gh-wdl-loss{background:#f3727f}.gh-wdl-labels{display:flex;gap:20px;font-size:.78rem;font-weight:600}.gh-label-win{color:#1ed760}.gh-label-draw{color:var(--text2)}.gh-label-loss{color:#f3727f}.gh-chart-hint{font-size:.72rem;color:var(--text2);margin-top:8px}.gh-opening-table{border:1px solid var(--border);border-radius:10px;overflow:hidden}.gh-opening-header,.gh-opening-row{display:grid;grid-template-columns:52px 1fr 56px 56px 68px;align-items:center;padding:8px 16px;gap:8px;font-size:.8rem}.gh-opening-header{background:var(--surface2);font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text2);border-bottom:1px solid var(--border)}.gh-opening-row{border-bottom:1px solid var(--border);color:var(--text)}.gh-opening-row:last-child{border-bottom:none}.gh-opening-row:hover{background:var(--surface2)}.gh-opening-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.gh-eco-link{color:var(--accent);text-decoration:none;font-weight:700;font-size:.72rem}.gh-eco-link:hover{text-decoration:underline}.gh-recent-list{border:1px solid var(--border);border-radius:10px;overflow:hidden}.gh-recent-row{display:grid;grid-template-columns:32px 1fr 1fr 54px;align-items:center;padding:9px 16px;gap:12px;font-size:.8rem;border-bottom:1px solid var(--border)}.gh-recent-row:last-child{border-bottom:none}.gh-recent-row:hover{background:var(--surface2)}.gh-result-pill{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:800;flex-shrink:0}.gh-result-win{background:#1ed76026;color:#1ed760}.gh-result-loss{background:#f3727f26;color:#f3727f}.gh-result-draw{background:#ffffff12;color:var(--text2)}.gh-recent-opponent{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gh-recent-opening{color:var(--text2);font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gh-recent-acc{color:var(--text2);font-size:.75rem;text-align:right}.importer-count-row{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}.importer-count-label{font-size:.75rem;color:var(--text2);font-weight:400}.importer-count-btn{font-size:.72rem;padding:4px 10px;border-radius:6px;border:1px solid var(--border);background:var(--surface2);color:var(--text2);cursor:pointer;transition:background .15s,color .15s,border-color .15s;min-height:unset}.importer-count-btn:hover{background:var(--surface);color:var(--text)}.importer-count-btn.active{background:var(--accent);color:#000;border-color:var(--accent);font-weight:700}@media(max-width:768px){.gh-opening-header,.gh-opening-row{grid-template-columns:44px 1fr 44px 44px 54px;font-size:.72rem;padding:8px 10px}.gh-recent-row{grid-template-columns:28px 1fr 48px;padding:8px 10px}.gh-recent-opening{display:none}}@media(max-width:480px){.gh-stat-value{font-size:1.3rem}.gh-opening-header,.gh-opening-row{grid-template-columns:38px 1fr 38px 54px;font-size:.68rem;padding:6px 8px}.gh-opening-header span:last-child,.gh-opening-row span:last-child{display:none}}.da-root{margin-top:28px;padding-top:24px;border-top:1px solid var(--border)}.da-section-label{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text2);margin:0 0 16px}.da-subsection-label{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text2);margin:24px 0 10px}.da-insights-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:4px}.da-insight-card{background:var(--surface2);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start}.da-insight-card--positive{border-left-color:#1ed760}.da-insight-card--warning{border-left-color:#f3727f}.da-insight-card--neutral{border-left-color:var(--accent)}.da-insight-icon{font-size:.95rem;line-height:1.5;flex-shrink:0;color:var(--text2)}.da-insight-text{font-size:.78rem;color:var(--text2);line-height:1.55;margin:0}.da-charts-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:0}.da-chart-box{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:14px 14px 10px}.da-chart-box--wide{grid-column:1 / -1}.da-chart-title{font-size:.8rem;font-weight:700;color:var(--text);margin:0 0 10px}.da-chart-empty{text-align:center;padding:28px 12px;color:var(--text2);font-size:.8rem}.da-legend-hint{font-size:.68rem;color:var(--text2);margin:6px 0 0;line-height:1.4}.da-scatter-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.da-scatter-legend-item{display:flex;align-items:center;gap:5px;font-size:.72rem;color:var(--text2)}.da-scatter-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.da-scatter-reg{opacity:.8}.da-scatter-line{display:inline-block;width:18px;height:2px;background:var(--accent);opacity:.65;border-radius:1px;flex-shrink:0;border-top:2px dashed var(--accent);background:none}@media(max-width:640px){.da-charts-row{grid-template-columns:1fr}.da-chart-box--wide{grid-column:1}.da-insights-grid{grid-template-columns:1fr}}@media(max-width:480px){.da-insight-text{font-size:.74rem}.da-chart-title{font-size:.75rem}}.bulk-page{max-width:560px;margin:0 auto;padding:32px 16px 64px}.bulk-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px 28px 24px;display:flex;flex-direction:column;gap:20px}.bulk-card-title{font-size:1.25rem;font-weight:700;color:var(--text);margin:0}.bulk-subtitle{font-size:.85rem;color:var(--text2);line-height:1.55;margin:0}.bulk-field{display:flex;flex-direction:column;gap:8px}.bulk-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text2)}.bulk-toggle{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.bulk-toggle-btn{flex:1;padding:8px 0;font-size:.85rem;font-weight:400;color:var(--text2);background:var(--surface2);border:none;cursor:pointer;transition:background .15s,color .15s;min-height:36px}.bulk-toggle-btn+.bulk-toggle-btn{border-left:1px solid var(--border)}.bulk-toggle-btn.active{background:var(--accent);color:#000;font-weight:700}.bulk-start-btn{width:100%;margin-top:4px}.bulk-info-list{margin:0;padding:0 0 0 18px;display:flex;flex-direction:column;gap:5px}.bulk-info-list li{font-size:.78rem;color:var(--text2);line-height:1.45}.bulk-track{height:8px;border-radius:4px;background:var(--surface2);overflow:hidden;margin-top:4px}.bulk-track--move{height:4px;margin-top:3px}.bulk-fill{height:100%;border-radius:4px;background:var(--accent);transition:width .3s ease}.bulk-track--move .bulk-fill{background:var(--accent)}.bulk-progress-block{display:flex;flex-direction:column;gap:6px}.bulk-progress-row{display:flex;justify-content:space-between;align-items:center}.bulk-progress-label{font-size:.82rem;font-weight:600;color:var(--text)}.bulk-progress-label--sm{font-size:.75rem;color:var(--text2);font-weight:400}.bulk-progress-counts{display:flex;gap:10px;font-size:.78rem;font-weight:600}.bulk-count-ok{color:#1ed760}.bulk-count-skip{color:var(--text2)}.bulk-count-err{color:#f3727f}.bulk-current-block{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.bulk-current-name{font-size:.82rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bulk-controls{display:flex;gap:10px}.bulk-tip{font-size:.75rem;color:var(--text2);margin:0;line-height:1.5}.bulk-card--done{align-items:center;text-align:center}.bulk-done-icon{width:52px;height:52px;border-radius:50%;background:#1ed76026;color:#1ed760;font-size:1.5rem;display:flex;align-items:center;justify-content:center}.bulk-done-title{font-size:1.3rem;font-weight:700;margin:0;color:var(--text)}.bulk-done-stats{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.bulk-done-stat{font-size:.82rem;font-weight:600;padding:4px 12px;border-radius:20px}.bulk-done-stat--ok{background:#1ed76026;color:#1ed760}.bulk-done-stat--skip{background:var(--surface2);color:var(--text2)}.bulk-done-stat--err{background:#f3727f1f;color:#f3727f}.bulk-done-hint{font-size:.82rem;color:var(--text2);max-width:380px;line-height:1.55;margin:0}.bulk-done-actions{display:flex;gap:10px}.importer-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.bulk-link{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--text2);text-decoration:none;white-space:nowrap;flex-shrink:0;padding:7px 14px;border:1px solid var(--border2);border-radius:9999px;transition:color .15s,border-color .15s,background .15s}.bulk-link:hover{color:var(--text);border-color:var(--text);background:#8080800f;text-decoration:none}@media(max-width:480px){.bulk-card{padding:20px 16px 18px}.bulk-done-actions{flex-direction:column;width:100%}.bulk-done-actions a,.bulk-done-actions button{width:100%}.importer-header-row{flex-direction:column;gap:4px}}.puzzle-mode-card--survival{border-color:var(--red)}.puzzle-lives{display:flex;gap:4px;align-items:center}.puzzle-life{font-size:1.1rem;transition:filter .2s;color:var(--red)}.puzzle-life--lost{filter:grayscale(1);opacity:.35}.puzzle-theme-acc{display:flex;align-items:center;gap:4px;width:100%;margin-top:4px}.puzzle-theme-acc-bar-track{flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden}.puzzle-theme-acc-bar{height:100%;background:var(--green);border-radius:2px}.puzzle-theme-acc-pct{font-size:.65rem;color:var(--text2);min-width:26px;text-align:right}.puzzle-mode-card--weakness{border-color:var(--orange)}.puzzle-theme-accuracy-list{display:flex;flex-direction:column;gap:6px;margin-top:4px}.puzzle-theme-acc-row{display:flex;align-items:center;gap:10px;padding:4px 0;border-bottom:1px solid var(--border)}.puzzle-theme-acc-row:last-child{border-bottom:none}.puzzle-theme-acc-label{min-width:130px;font-size:.82rem;color:var(--text);font-family:monospace}.puzzle-theme-acc-bar-track{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.puzzle-theme-acc-bar{height:100%;background:var(--green);border-radius:3px}.puzzle-theme-acc-pct{min-width:36px;text-align:right;font-size:.8rem;font-weight:600;color:var(--text)}.puzzle-theme-acc-attempts{font-size:.72rem;color:var(--text2);min-width:32px}.puzzle-autopsy{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-top:8px}.puzzle-autopsy-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);margin-bottom:10px}.autopsy-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--border)}.autopsy-row:last-child{border-bottom:none}.autopsy-san{min-width:52px;font-size:.9rem;font-weight:600;font-family:monospace}.autopsy-best-badge{font-size:.65rem;background:var(--green);color:#000;border-radius:4px;padding:1px 5px;font-weight:700;white-space:nowrap}.autopsy-bar-track{flex:1;height:8px;background:var(--surface3);border-radius:4px;overflow:hidden}.autopsy-bar-fill{height:100%;background:var(--green);border-radius:4px;transition:width .4s}.autopsy-bar-fill--neg{background:var(--red)}.autopsy-score{min-width:44px;text-align:right;font-size:.82rem;font-weight:600;color:var(--text2);font-family:monospace}.puzzle-mode-card--daily{border-color:var(--accent)}.puzzle-mode-card--daily-done{border-color:var(--green);opacity:.8}.puzzle-daily-badge{background:var(--accent);color:#fff;border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:700;white-space:nowrap}.puzzle-feedback--exploring{background:color-mix(in srgb,var(--accent) 12%,transparent);border-left:3px solid var(--accent);color:var(--accent)}.puzzle-explore-toggle{display:flex;align-items:center;gap:6px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:.8rem;color:var(--text2);cursor:pointer;transition:border-color .15s,color .15s}.puzzle-explore-toggle.active{border-color:var(--accent);color:var(--accent)}.how-it-works{background:var(--bg2);border-radius:8px;margin:16px 0 8px;overflow:hidden;box-shadow:var(--shadow-card)}.how-it-works summary{padding:15px 20px;font-size:.75rem;font-weight:700;color:var(--text2);cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:1.4px;transition:color .15s,background .15s}.how-it-works summary:hover{color:var(--text);background:#8080800f}.how-it-works summary::-webkit-details-marker{display:none}.how-it-works summary:before{content:"?";display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:var(--green);color:#000;border-radius:50%;font-size:.68rem;font-weight:800;flex-shrink:0;text-transform:none;letter-spacing:0}.how-it-works[open]>summary{color:var(--text);border-bottom:1px solid var(--border)}.how-it-works-body{padding:16px 20px 18px;font-size:.875rem;color:var(--text2);line-height:1.6}.how-it-works-body p{margin:0 0 10px}.how-it-works-body p:last-child{margin-bottom:0}.how-it-works-body strong{color:var(--text);font-weight:700}.how-it-works-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:8px;margin-top:12px}.how-it-works-card{background:var(--bg3);border-radius:6px;padding:10px 12px}.how-it-works-card-title{font-weight:700;font-size:.875rem;color:var(--text);margin-bottom:4px}.how-it-works-card-desc{font-size:.75rem;color:var(--text2);line-height:1.5}.how-it-works-steps{display:flex;flex-direction:column;gap:8px;margin:8px 0}.how-it-works-step{display:flex;align-items:flex-start;gap:10px}.how-it-works-step-num{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;background:var(--green);color:#000;border-radius:50%;font-size:.68rem;font-weight:800;flex-shrink:0;margin-top:1px}.how-it-works-step-text{flex:1}.masters-panel{background:var(--bg2);border-radius:8px;padding:12px 14px;margin-top:14px;border:1px solid var(--border)}.masters-panel--loading{display:flex;align-items:center;gap:10px;padding:10px 14px;opacity:.7}.masters-panel-spinner{font-size:.8rem;color:var(--text2)}.masters-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.masters-panel-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--text2)}.masters-panel-count{font-size:.75rem;color:var(--text2)}.masters-panel-empty{font-size:.82rem;color:var(--text2);margin:4px 0 0}.masters-wdl-labels{display:flex;gap:14px;font-size:.75rem;font-weight:600;margin-bottom:10px}.masters-wdl-w{color:var(--text)}.masters-wdl-d{color:var(--text2)}.masters-wdl-b{color:#f3727f}.masters-moves-list{margin-bottom:10px}.masters-moves-head{display:grid;grid-template-columns:48px 1fr 60px 44px;gap:4px;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text2);padding:2px 4px 4px;border-bottom:1px solid var(--border);margin-bottom:2px}.masters-move-row{display:grid;grid-template-columns:48px 1fr 60px 44px;gap:4px;align-items:center;padding:5px 4px;border-radius:5px;cursor:pointer;transition:background .1s;font-size:.82rem}.masters-move-row:hover{background:var(--surface2)}.masters-move-san{font-weight:700;color:var(--text)}.masters-move-pct{color:var(--text2);font-size:.78rem}.masters-move-rating{color:var(--text2);font-size:.75rem}.masters-move-wdl{font-size:.75rem;font-weight:600}.mwdl-w{color:var(--text)}.mwdl-d{color:var(--text2)}.mwdl-l{color:#f3727f}.mwdl-sep{color:var(--border2);margin:0 1px}.masters-top-games{margin-top:8px;border-top:1px solid var(--border);padding-top:8px}.masters-top-games-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text2);margin-bottom:5px}.masters-game-link{display:flex;justify-content:space-between;align-items:center;padding:4px;border-radius:4px;font-size:.78rem;color:var(--text);text-decoration:none;transition:background .1s}.masters-game-link:hover{background:var(--surface2);color:var(--accent)}.masters-game-players{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.masters-game-meta{display:flex;gap:8px;flex-shrink:0}.masters-game-year{color:var(--text2)}.masters-game-result{font-weight:600}.opening-card-wrap{position:relative}.rep-toggle-btn{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--border2);background:var(--bg2);color:var(--text2);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;z-index:1;line-height:1}.rep-toggle-btn:hover{border-color:var(--green);color:var(--green);background:var(--surface2)}.rep-toggle-btn.active{background:var(--green);border-color:var(--green);color:#000}.opening-card-wrap.in-repertoire .opening-card{border:1px solid var(--green)}.repertoire-page{max-width:1100px;margin:0 auto;padding:0 20px 40px}.rep-tab-count{background:var(--green);color:#000;border-radius:9999px;font-size:.65rem;font-weight:700;padding:1px 6px;margin-left:5px}.rep-build-bar{display:flex;align-items:center;gap:10px;padding:10px 0 12px;flex-wrap:wrap}.rep-build-count{font-size:.85rem;color:var(--text2);flex:1}.rep-clear-btn{font-size:.8rem}.rep-empty{text-align:center;padding:40px 20px;color:var(--text2);font-size:.9rem}.rep-empty strong{color:var(--text)}.rep-badge-link{display:inline-block;margin-top:6px;font-size:.78rem;color:var(--green);text-decoration:none;border:1px solid var(--green);border-radius:9999px;padding:2px 10px;transition:background .15s}.rep-badge-link:hover{background:#1ed76014}.rep-cov-summary{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:24px}.rep-cov-stat{background:var(--surface2);border-radius:10px;padding:14px 18px;min-width:120px;display:flex;flex-direction:column;gap:4px}.rep-cov-stat-value{font-size:1.6rem;font-weight:700;color:var(--text)}.rep-cov-stat-label{font-size:.75rem;color:var(--text2)}.rep-cov-section-title{font-size:.9rem;font-weight:700;margin:20px 0 10px;color:var(--text)}.rep-cov-section-title--weak{color:#f5a623}.rep-cov-section-title--mastered{color:var(--green)}.rep-cov-families{display:flex;flex-direction:column;gap:8px}.rep-cov-family-row{display:flex;align-items:center;gap:12px;font-size:.82rem}.rep-cov-family-label{width:100px;color:var(--text2)}.rep-cov-family-count{width:60px;font-weight:600;color:var(--text);text-align:right}.rep-cov-family-bar-track{flex:1;height:8px;background:var(--surface2);border-radius:4px;overflow:hidden}.rep-cov-family-bar-fill{height:100%;background:var(--green);border-radius:4px;transition:width .4s}.rep-cov-opening-list{display:flex;flex-direction:column;gap:4px}.rep-cov-opening-row{display:flex;align-items:center;gap:10px;padding:6px 8px;background:var(--surface2);border-radius:6px;font-size:.82rem}.rep-cov-opening-name{flex:1;color:var(--text)}.rep-cov-opening-acc{font-weight:700;min-width:36px;text-align:right}.rep-train-setup{max-width:640px;margin:0 auto;padding-top:16px}.rep-train-title{font-size:1.6rem;font-weight:700;margin:0 0 6px;color:var(--text)}.rep-train-subtitle{font-size:.85rem;color:var(--text2);margin:0 0 28px}.rep-train-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.rep-train-card{background:var(--surface2);border-radius:12px;padding:28px 20px;cursor:pointer;border:1px solid transparent;display:flex;flex-direction:column;align-items:center;text-align:center;transition:background .15s,transform .15s,box-shadow .15s}.rep-train-card:hover{background:var(--surface3);transform:translateY(-2px);box-shadow:0 8px 20px #0000004d}.rep-train-card--accent{border-color:var(--accent)}.rep-train-piece{font-size:2.4rem;line-height:1}.rep-train-card-title{font-size:.95rem;font-weight:700;color:var(--text);margin-top:12px;margin-bottom:3px}.rep-train-card-sub{font-size:.72rem;color:var(--text2)}.train-mode-toggle{display:flex;gap:8px;margin:16px 0 4px;background:var(--surface2);border-radius:10px;padding:4px}.train-mode-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border-radius:7px;border:none;background:transparent;color:var(--text2);font-size:.88rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.train-mode-btn.active{background:var(--bg);color:var(--text);box-shadow:0 1px 4px #00000040}.train-mode-count{background:var(--surface3);color:var(--text2);border-radius:9999px;font-size:.72rem;font-weight:700;padding:1px 7px}.train-mode-count.rep{background:var(--green);color:#000}.train-mode-count.empty{opacity:.5}.color-picker-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:4px}.color-picker-card{background:var(--surface2);border-radius:12px;padding:28px 16px;cursor:pointer;border:1px solid transparent;display:flex;flex-direction:column;align-items:center;text-align:center;transition:background .15s,transform .15s,box-shadow .15s;-webkit-user-select:none;user-select:none}.color-picker-card:hover{background:var(--surface3);transform:translateY(-2px);box-shadow:0 8px 20px #0000004d}.color-picker-card--accent{border-color:var(--accent)}.color-picker-piece{font-size:2.6rem;line-height:1}.color-picker-title{font-size:.95rem;font-weight:700;color:var(--text);margin-top:12px;margin-bottom:3px}.color-picker-sub{font-size:.72rem;color:var(--text2)}.masters-page{max-width:900px;margin:0 auto;padding:0 20px 40px}.masters-section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--text2);margin-bottom:10px}.masters-featured-wrap{margin:16px 0}.masters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.masters-game-card{background:var(--surface2);border-radius:12px;padding:18px 20px;cursor:pointer;border:1px solid transparent;display:flex;flex-direction:column;gap:6px;transition:background .15s,transform .15s,box-shadow .15s,border-color .15s}.masters-game-card:hover{background:var(--surface3);transform:translateY(-2px);box-shadow:0 8px 20px #0000004d}.masters-game-card--featured{border-color:gold;background:var(--surface3)}.masters-game-card--dimmed{opacity:.7}.masters-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.masters-difficulty{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px}.masters-card-year{font-size:.75rem;color:var(--text2)}.masters-card-title{font-size:1.05rem;font-weight:700;color:var(--text);margin:0}.masters-card-players{font-size:.82rem;color:var(--text2);margin:0}.masters-card-desc{font-size:.8rem;color:var(--text2);margin:4px 0 0;line-height:1.5;flex:1}.masters-card-play{font-size:.78rem;font-weight:600;color:var(--green);margin-top:6px}.mc-challenge{max-width:1100px;margin:0 auto;padding:0 20px 40px}.mc-header{display:flex;align-items:center;gap:14px;padding:12px 0 16px;border-bottom:1px solid var(--border);margin-bottom:20px;flex-wrap:wrap}.mc-back-btn{background:none;border:1px solid var(--border2);color:var(--text2);border-radius:6px;padding:6px 12px;font-size:.82rem;cursor:pointer;flex-shrink:0;transition:all .15s}.mc-back-btn:hover{border-color:var(--text);color:var(--text)}.mc-game-info{flex:1;min-width:0}.mc-game-title{font-size:1rem;font-weight:700;color:var(--text);display:block}.mc-game-players{font-size:.78rem;color:var(--text2);display:block}.mc-progress-wrap{display:flex;flex-direction:column;gap:4px;min-width:160px}.mc-progress-bar{height:6px;background:var(--surface2);border-radius:3px;overflow:hidden}.mc-progress-fill{height:100%;background:var(--green);border-radius:3px;transition:width .3s}.mc-progress-label{font-size:.72rem;color:var(--text2);text-align:right}.mc-body{display:flex;gap:20px;align-items:flex-start}.mc-board-col{flex:0 0 auto;display:flex;flex-direction:column;gap:10px}.mc-sidebar{flex:1;min-width:0;background:var(--surface2);border-radius:10px;padding:14px 16px}.mc-sidebar-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--text2);margin-bottom:10px}.mc-sidebar-empty{font-size:.82rem;color:var(--text2)}.mc-turn-badge{font-size:.8rem;font-weight:600;color:var(--text2);padding:6px 10px;background:var(--surface2);border-radius:6px;text-align:center}.mc-turn-badge--yours{color:var(--green);background:#1ed76014;border:1px solid rgba(30,215,96,.25)}.mc-last-score{background:var(--surface2);border-left:3px solid var(--border2);border-radius:6px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.82rem;transition:border-color .2s}.mc-last-score-symbol{font-size:1rem;flex-shrink:0}.mc-last-score-label{font-weight:700;color:var(--text)}.mc-last-score-cp{color:var(--text2);font-size:.78rem}.mc-last-score-master{color:var(--text2);font-size:.78rem;width:100%}.mc-evaluating{font-size:.78rem;color:var(--text2);text-align:center;opacity:.8}.mc-score-table{display:flex;flex-direction:column;gap:2px;max-height:400px;overflow-y:auto}.mc-score-row{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;font-size:.8rem;transition:background .1s}.mc-score-row:hover{background:var(--surface3)}.mc-score-move-num{color:var(--text2);min-width:30px;font-size:.72rem}.mc-score-your{font-weight:700;color:var(--text)}.mc-score-master{color:var(--text2);font-size:.75rem}.mc-score-label{font-weight:600;flex:1}.mc-score-cp{color:var(--text2);font-size:.72rem;margin-left:auto}.mc-review{max-width:700px;margin:0 auto;padding:24px 0}.mc-review-header{margin-bottom:20px}.mc-review-title{font-size:1.5rem;font-weight:700;color:var(--text);margin:0 0 4px}.mc-review-subtitle{font-size:.85rem;color:var(--text2);margin:0}.mc-review-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}.mc-stat-card{background:var(--surface2);border-radius:10px;padding:14px 12px;text-align:center}.mc-stat-card--highlight{border:1px solid var(--green)}.mc-stat-value{font-size:1.4rem;font-weight:700;color:var(--text);display:block}.mc-stat-label{font-size:.72rem;color:var(--text2);margin-top:3px;display:block}.mc-review-moments{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}.mc-moment{padding:8px 12px;border-radius:6px;font-size:.82rem}.mc-moment--best{background:#1ed76014;border-left:3px solid var(--green);color:var(--text)}.mc-moment--worst{background:#f3727f14;border-left:3px solid #f3727f;color:var(--text)}.mc-review-move-table{margin-bottom:24px}.mc-review-move-table h3{font-size:.95rem;font-weight:700;color:var(--text);margin:0 0 10px}.mc-review-actions{display:flex;gap:10px;flex-wrap:wrap}@media(max-width:768px){.mc-body{flex-direction:column}.mc-sidebar{width:100%}.mc-review-stats{grid-template-columns:repeat(2,1fr)}.masters-grid,.rep-train-cards,.color-picker-grid{grid-template-columns:1fr}.rep-cov-summary{flex-direction:column}.weakness-cta{flex-direction:column;align-items:flex-start;gap:8px}.weakness-row{flex-wrap:wrap}}.weakness-cta{display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px 16px;background:color-mix(in srgb,var(--orange, #f59e0b) 8%,var(--surface2));border:1px solid color-mix(in srgb,var(--orange, #f59e0b) 35%,var(--border));border-radius:10px;flex-wrap:wrap}.weakness-cta-icon{font-size:1.5rem;flex-shrink:0}.weakness-cta-body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:160px}.weakness-cta-body strong{font-size:.9rem;color:var(--text)}.weakness-cta-body span{font-size:.8rem;color:var(--text2)}.weakness-cta-btn{flex-shrink:0;font-size:.82rem;padding:7px 16px}.weakness-breakdown{display:flex;flex-direction:column;gap:16px}.weakness-list{display:flex;flex-direction:column;gap:10px}.weakness-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px}.weakness-row-info{display:flex;flex-direction:column;gap:1px;min-width:0}.weakness-theme-label{font-size:.88rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.weakness-theme-meta{font-size:.75rem;color:var(--text2)}.weakness-bar-track{height:6px;background:var(--surface3, rgba(128,128,128,.15));border-radius:999px;min-width:80px;overflow:hidden}.weakness-bar-fill{height:100%;background:var(--orange, #f59e0b);border-radius:999px;transition:width .4s ease;min-width:4px}.weakness-train-btn{font-size:.78rem;padding:4px 10px;white-space:nowrap;color:var(--accent)}.weakness-train-btn:hover{color:var(--text)}.weakness-queue-status{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:color-mix(in srgb,var(--green) 8%,var(--surface2));border:1px solid color-mix(in srgb,var(--green) 30%,var(--border));border-radius:8px;font-size:.85rem;color:var(--text);flex-wrap:wrap}button:focus-visible,a:focus-visible,[tabindex]:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.skip-link:focus{position:fixed;left:8px;top:8px;width:auto;height:auto;padding:8px 14px;background:var(--accent);color:#0a0a0a;border-radius:6px;z-index:9999;font-weight:700}.btn,.btn-primary,.btn-secondary,.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:10px 22px;border:0;border-radius:var(--radius-pill);font-family:inherit;font-size:var(--fs-sm);font-weight:700;letter-spacing:.01em;line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.btn:hover:not(:disabled),.btn-primary:hover:not(:disabled),.btn-secondary:hover:not(:disabled){transform:scale(1.03)}.btn:active:not(:disabled),.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled){transform:scale(.98)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent2)}.btn-secondary{background:transparent;color:var(--text);box-shadow:inset 0 0 0 1px var(--border2)}.btn-secondary:hover:not(:disabled){box-shadow:inset 0 0 0 1px var(--text)}.btn-ghost{background:transparent;color:var(--text2);padding-inline:var(--space-3);font-weight:600}.btn-ghost:hover:not(:disabled){color:var(--text)}.btn-ghost.small{padding:4px 12px;font-size:var(--fs-xs)}.btn-icon{width:40px;height:40px;min-height:0;padding:0;background:var(--surface2);color:var(--text);font-size:1rem;font-weight:400}.btn-icon:hover:not(:disabled){background:var(--surface3)}.btn-sm{padding:6px 14px;font-size:var(--fs-xs)}.btn-sm.btn-icon{width:32px;height:32px;padding:0}.btn-lg{padding:14px 28px;font-size:var(--fs-md)}.btn-block{width:100%}.seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;background:var(--surface2);border-radius:var(--radius-pill)}.seg-btn{border:0;background:transparent;color:var(--text2);font-family:inherit;font-size:var(--fs-xs);font-weight:600;padding:6px 14px;min-height:0;border-radius:var(--radius-pill);cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.seg-btn:hover{color:var(--text)}.seg-btn[aria-pressed=true]{background:var(--text);color:var(--bg)}.card{background:var(--surface);border-radius:var(--radius-lg);padding:var(--space-5)}.card-flush{padding:0;overflow:hidden}a.card,button.card{display:block;color:inherit;text-decoration:none;text-align:left;border:0;font:inherit;cursor:pointer;transition:background var(--dur) var(--ease)}a.card:hover,button.card:hover{background:var(--surface2)}.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700;white-space:nowrap;color:var(--text2);background:var(--surface3)}.chip-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.chip-accent{color:var(--accent);background:var(--accent-soft)}.chip-blue{color:var(--blue);background:var(--blue-soft)}.chip-orange{color:var(--orange);background:var(--orange-soft)}.chip-red{color:var(--red);background:var(--red-soft)}.chip-outline{color:var(--accent);background:transparent;box-shadow:inset 0 0 0 1px var(--accent);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:1px 7px;font-weight:800}.stat{display:flex;flex-direction:column;gap:2px;min-width:0}.stat-value{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}.stat-label{font-size:var(--fs-xs);color:var(--text-muted)}.stat-sm .stat-value{font-size:var(--fs-xl)}.eyebrow{font-size:var(--fs-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}.ui-page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4) var(--space-5);flex-wrap:wrap;margin-bottom:var(--space-6)}.ui-page-header-text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.ui-page-header h1{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.03em;line-height:1.1;text-wrap:balance}.ui-page-header p{color:var(--text2);font-size:var(--fs-sm);max-width:70ch}.ui-page-header-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.field{display:flex;align-items:center;gap:var(--space-2);height:42px;padding:0 var(--space-4);background:var(--surface2);border:1px solid transparent;border-radius:var(--radius-pill);color:var(--text-muted);transition:border-color var(--dur-fast) var(--ease)}.field:focus-within{border-color:var(--text2)}.field input{flex:1;min-width:0;background:transparent;border:0;outline:none;color:var(--text);font-family:inherit;font-size:var(--fs-sm)}.field input::placeholder{color:var(--text-muted)}.field svg{flex-shrink:0}@media(max-width:768px){.btn,.btn-primary,.btn-secondary{padding:12px 20px}.btn-sm{padding:8px 14px}.field input{font-size:16px}.ui-page-header{margin-bottom:var(--space-5)}.ui-page-header h1{font-size:var(--fs-xl)}}@media(prefers-reduced-motion:reduce){.btn,.btn-primary,.btn-secondary,.btn-ghost,.seg-btn,.card{transition:none}.btn:hover,.btn-primary:hover,.btn-secondary:hover{transform:none}}@media(max-width:768px){.puzzle-page{padding:12px 8px 32px}.puzzle-layout{flex-direction:column}.puzzle-board-wrapper{width:100%!important;max-width:100vw}.puzzle-board-col{max-width:100%!important}.puzzle-side{padding:8px 12px}.puzzle-actions{flex-wrap:wrap}.puzzle-btn{flex:1;min-width:90px;min-height:44px}.puzzle-topbar{flex-wrap:nowrap;gap:4px}.puzzle-topbar-stats{gap:12px}.puzzle-mode-cards{gap:10px}.puzzle-mode-card{padding:14px 16px}.puzzle-theme-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}}@media(max-width:600px){.puzzle-side,.puzzle-topbar-stats .puzzle-stat-label{display:none}}@media(max-width:768px){.opening-filter{flex-direction:column;gap:10px;margin-bottom:18px}.filter-top-row{display:flex;align-items:center;gap:10px}.search-input{width:100%;flex:1;min-width:0}.view-toggle-group{flex-shrink:0;margin-left:auto}.family-pill-row{flex-wrap:wrap;gap:6px;justify-content:flex-start}.family-pill{font-size:.8rem;padding:6px 14px}.result-count{font-size:.8rem;margin-bottom:12px}.opening-filter+*{margin-top:0}}@media(max-width:480px){.family-pill{font-size:.75rem;padding:5px 10px}}@media(max-width:768px){.training-page{min-height:calc(100vh - 64px);padding-bottom:24px}.training-page>div>h2,.color-picker h2{font-size:1.65rem;margin-bottom:6px}.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{flex-direction:row;gap:14px;padding:18px 20px;min-height:64px;min-width:unset;width:100%;justify-content:flex-start;text-align:left}.color-piece{font-size:2.2rem;flex-shrink:0}.training-view{max-width:100%;padding:0 12px}.training-opening-name{padding:8px 12px;gap:6px;margin-bottom:10px}.opening-name-label{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.family-tag{font-size:.72rem}.training-header{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:10px}.score-tracker{gap:8px}.training-info{gap:6px;flex-wrap:wrap}.training-header .btn-ghost.small{width:100%;min-height:44px;padding:10px 16px;text-align:center;justify-content:center;font-size:.8rem}.board-wrapper{width:100%;max-width:100%}.feedback-pill{padding:10px 24px;font-size:.95rem}.move-indicator,.your-turn,.computer-turn{font-size:.68rem;padding:4px 10px}.training-footer{margin-top:10px}.move-history-mini{font-size:.72rem;gap:2px;line-height:1.6}.training-complete{max-width:100%;margin:28px auto;padding:0 16px}.training-complete h2{font-size:1.65rem;margin-bottom:18px}.opening-reveal{padding:20px 16px;margin-bottom:18px}.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{width:100%;min-height:44px;padding:12px 20px;font-size:.875rem;box-sizing:border-box}.score-pill{padding:4px 8px;font-size:.68rem}.eco-badge{font-size:.62rem;padding:2px 8px}.eco-badge.large{font-size:.8rem;padding:5px 14px}}@media(max-width:480px){.training-page>div>h2,.color-picker h2{font-size:1.45rem}.color-btn{padding:14px 16px;min-height:58px;gap:12px}.color-piece{font-size:1.9rem}.training-view{padding:0 8px}.training-opening-name{padding:6px 10px;margin-bottom:8px}.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{font-size:.62rem;padding:3px 8px}.training-footer{margin-top:8px}.move-history-mini{font-size:.68rem}.training-complete{margin:16px auto;padding:0 12px}.training-complete h2{font-size:1.4rem;margin-bottom:14px}.opening-reveal{padding:16px 12px;margin-bottom:14px}.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{font-size:.62rem;padding:3px 6px}}.navbar{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--space-5);height:calc(var(--nav-h) + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) var(--space-6) 0;background:var(--bg);border-bottom:1px solid var(--hairline)}.nav-brand{display:inline-flex;align-items:center;gap:var(--space-2);font-size:1.25rem;font-weight:800;letter-spacing:-.04em;color:var(--text);text-decoration:none;flex-shrink:0}.nav-brand-mark{width:22px;height:22px;color:var(--accent)}.nav-groups{display:flex;gap:2px}.nav-group{position:relative}.nav-group-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--text2);font-family:inherit;font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.nav-group-btn:hover,.nav-group-btn[aria-expanded=true]{color:var(--text)}.nav-group-btn.active{color:var(--text);background:var(--surface2)}.nav-caret{opacity:.6;transition:transform var(--dur-fast) var(--ease)}.nav-group-btn[aria-expanded=true] .nav-caret{transform:rotate(180deg)}.nav-menu{position:absolute;top:calc(100% + 8px);left:0;z-index:var(--z-menu);display:none;flex-direction:column;width:280px;padding:6px;background:var(--surface2);border-radius:var(--radius-md);box-shadow:var(--shadow-dialog)}.nav-menu.open{display:flex}.nav-menu a,.sheet a{display:flex;flex-direction:column;gap:1px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--text);text-decoration:none}.nav-menu a:hover,.nav-menu a.active{background:var(--surface3)}.nav-menu-label{font-size:var(--fs-sm);font-weight:600}.nav-menu-desc{font-size:var(--fs-xs);color:var(--text-muted)}.nav-menu a.active .nav-menu-label,.sheet a.active .nav-menu-label{color:var(--accent)}.nav-right{margin-left:auto;display:flex;align-items:center;gap:var(--space-2)}.nav-search .field{height:36px;width:220px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-height:0;flex-shrink:0;border:0;border-radius:50%;background:var(--surface2);color:var(--text2);cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.theme-toggle:hover{background:var(--surface3);color:var(--text)}.tabbar{display:none}.sheet-backdrop{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:flex-end;background:#00000080;animation:sheet-fade var(--dur) var(--ease)}.sheet{width:100%;max-height:80vh;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3) calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + var(--space-3));background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:sheet-up var(--dur) var(--ease)}.sheet-grip{width:36px;height:4px;margin:4px auto var(--space-3);border-radius:var(--radius-pill);background:var(--surface3)}.sheet-title{padding:0 12px var(--space-2)}.sheet a{padding:12px}.sheet a:hover,.sheet a.active{background:var(--surface2)}.sheet .nav-menu-label{font-size:var(--fs-md)}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}@media(max-width:1024px){.navbar{padding-inline:var(--space-5);gap:var(--space-4)}.nav-search .field{width:170px}}@media(max-width:768px){.navbar{padding-inline:var(--space-4)}.nav-groups,.nav-search{display:none}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-tabbar);display:grid;grid-template-columns:repeat(4,1fr);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--bg2);border-top:1px solid var(--hairline)}.tabbar-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:0;border:0;background:transparent;color:var(--text-muted);font-family:inherit;font-size:10px;font-weight:600;cursor:pointer}.tabbar-btn svg{width:22px;height:22px}.tabbar-btn.active,.tabbar-btn[aria-expanded=true]{color:var(--text)}.tabbar-btn.active svg{color:var(--accent)}.app{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}}@media(prefers-reduced-motion:reduce){.sheet,.sheet-backdrop{animation:none}.nav-caret{transition:none}}
