:root{color:#1d2520;background:#edf0ec;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--panel: #f7f8f5;--ink-muted: #667069;--border: #cfd6cd;--accent: #226f54;--accent-strong: #174f3d;--light-square: #e6ddcb;--dark-square: #769656}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,textarea{font:inherit}button{border:1px solid var(--border);background:#fff;color:#1d2520;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{color:#9aa49d;cursor:not-allowed}.app-shell{min-height:100vh;padding:24px}.main-workspace{display:grid;grid-template-columns:minmax(360px,1fr) minmax(320px,420px);gap:24px;align-items:start;max-width:1280px;margin:0 auto}.board-column,.panel-column{min-width:0}.board-column{display:grid;gap:16px}.workspace-panel{min-width:0;border:1px solid var(--border);border-radius:16px;background:#ffffffb3;padding:14px;box-shadow:0 14px 34px #1e272014}.panel-tab-content .workspace-panel{border:none;border-radius:0;background:transparent;box-shadow:none;padding:0}.workspace-panel-heading{display:flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--accent-strong);font-size:.82rem;font-weight:900;letter-spacing:.08em}.workspace-panel-heading:before{content:"";display:block;width:8px;height:8px;border-radius:999px;background:var(--accent)}.workspace-panel-heading span{text-transform:uppercase}.workspace-panel-body{display:grid;gap:14px;min-width:0}.history-import-panel,.current-game-input-panel{background:#ffffffeb}.top-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}.top-actions{display:flex;flex:0 0 auto;align-items:center;gap:10px}.eyebrow{margin:0 0 4px;color:var(--accent);font-size:.78rem;font-weight:700;letter-spacing:0;text-transform:uppercase}h1,h2{margin:0;letter-spacing:0}h1{font-size:clamp(2rem,5vw,4.25rem);line-height:.95}h2{font-size:1rem}.status-pill{flex:0 0 auto;border:1px solid var(--border);border-radius:999px;background:#fff;padding:8px 12px;color:var(--accent-strong);font-size:.9rem;font-weight:700}.orientation-button{min-height:38px;border-radius:999px;padding:0 14px;font-size:.9rem;font-weight:800}.orientation-button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:#fff}.board-wrap{width:min(100%,720px)}.board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,minmax(0,1fr));aspect-ratio:1 / 1;width:100%;border:10px solid #2a372e;box-shadow:0 18px 42px #1e272033}.square{container-type:size;position:relative;display:grid;place-items:center;aspect-ratio:1 / 1;border:0;border-radius:0;overflow:hidden;min-width:0;min-height:0;padding:0}.square.light{background:var(--light-square)}.square.dark{background:var(--dark-square)}.square:hover{border:0;filter:brightness(1.05)}.square.last-move:before,.square.selected:before,.square.legal-target:after{position:absolute;content:"";pointer-events:none}.square.last-move:before{inset:0;background:#f7c75861}.square.selected:before{inset:7%;border:3px solid rgba(32,97,76,.78);background:transparent}.square.legal-target:after{width:30%;aspect-ratio:1 / 1;border-radius:999px;background:#1d25203d}.piece{position:relative;z-index:1;display:block;line-height:1;font-family:Times New Roman,serif;font-size:min(72cqw,4.8rem);text-shadow:0 2px 2px rgba(0,0,0,.18)}.coordinate{position:absolute;z-index:2;color:#17231bad;font-size:clamp(.56rem,1.4vw,.78rem);font-weight:700}.coordinate.file{right:6px;bottom:4px}.coordinate.rank{left:6px;top:4px}.replay-controls{display:grid;grid-template-columns:48px 48px minmax(120px,1fr) 48px 48px;gap:8px;width:min(100%,720px);margin-top:18px}.replay-controls button,.mode-switch button,.move-list button{min-height:42px;border-radius:8px;font-weight:700}.move-counter{display:grid;place-items:center;min-width:0;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:0 12px;color:var(--ink-muted);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.variation-panel{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:12px;align-items:center;width:min(100%,720px);margin-top:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:12px}.captured-panel{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:min(100%,720px);margin-top:12px}.captured-side{border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:10px}.captured-side>span{display:block;color:var(--accent-strong);font-size:.76rem;font-weight:900;margin-bottom:4px}.captured-side div{display:flex;flex-wrap:wrap;align-items:center;min-height:28px;gap:2px}.captured-side div span{font-family:Times New Roman,serif;font-size:1.45rem;line-height:1}.captured-side em{color:var(--ink-muted);font-style:normal;font-size:.9rem}.promotion-backdrop{position:fixed;inset:0;z-index:10;display:grid;place-items:center;background:#1d252061;padding:20px}.promotion-dialog{width:min(100%,420px);border:1px solid var(--border);border-radius:8px;background:#fff;padding:18px;box-shadow:0 24px 70px #1e272047}.promotion-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}.promotion-options button{display:grid;place-items:center;min-height:86px;border-radius:8px;font-weight:800}.promotion-options span{font-family:Times New Roman,serif;font-size:2.5rem;line-height:1}.promotion-cancel{width:100%;min-height:42px;border-radius:8px;margin-top:10px;font-weight:800}.variation-panel p{margin:4px 0 0;color:var(--ink-muted);line-height:1.4;overflow-wrap:anywhere}.variation-label{color:var(--accent-strong);font-size:.82rem;font-weight:900}.variation-panel button{min-height:40px;border-radius:8px;padding:0 12px;font-weight:800}.guess-panel,.mistake-book-panel,.global-analysis-panel,.saved-variations{display:grid;gap:10px;width:100%;margin-top:8px;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:12px}.guess-header,.mistake-book-header,.global-analysis-header,.saved-variations-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.guess-header span,.mistake-book-header span,.global-analysis-header span,.saved-variations-header span{color:var(--accent-strong);font-size:.82rem;font-weight:900}.saved-variations-header strong{border:1px solid rgba(34,111,84,.28);border-radius:999px;background:#fff;padding:3px 8px;color:var(--accent-strong);font-size:.78rem}.guess-stats,.mistake-card-list,.global-analysis-list,.saved-variation-list,.training-loop-summary,.tag-stats,.candidate-stats,.candidate-session-list{display:grid;gap:8px}.guess-stats,.candidate-stats{grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}.candidate-session-list{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.training-loop-summary{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.tag-stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.tag-stats span{border:1px solid var(--border);border-radius:999px;background:#fff8e8;padding:6px 10px;color:var(--ink-muted);font-size:.76rem;font-weight:800}.guess-stats div,.training-loop-summary div,.candidate-training-box,.candidate-stats div,.candidate-result,.candidate-session-list span,.guess-result,.swing-summary{border:1px solid var(--border);border-radius:8px;background:#fff;padding:10px}.guess-stats span,.training-loop-summary span,.candidate-stats span,.swing-summary span{display:block;color:var(--ink-muted);font-size:.76rem;font-weight:800}.guess-stats strong,.training-loop-summary strong,.candidate-stats strong{display:block;margin-top:4px;color:var(--accent-strong);font-size:1.35rem}.guess-header p,.mistake-book-header p,.mistake-empty,.mistake-card p,.mistake-card small,.global-analysis-header p,.global-analysis-header small,.analysis-preset-help,.analysis-key-summary,.candidate-training-header p,.candidate-result p,.guess-hint,.guess-result p,.swing-summary p{margin:4px 0 0;color:var(--ink-muted);font-size:.78rem;line-height:1.45}.pgn-reply-message{border-left:3px solid var(--accent);padding-left:8px;color:var(--accent-strong)!important;font-weight:800}.guess-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.candidate-training-box{display:grid;gap:10px}.candidate-training-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px}.candidate-training-header span{color:var(--accent-strong);font-size:.82rem;font-weight:900}.candidate-training-box textarea{width:100%;resize:vertical;border:1px solid var(--border);border-radius:8px;padding:10px;background:#fbfcfa;color:#1d2520}.candidate-training-box textarea:disabled{color:#8a948d}.candidate-result.valid{border-color:#226f5466;background:#f0f8f3}.candidate-result.invalid{border-color:#d6911d73;background:#fff8e8}.candidate-result ul{margin:8px 0 0;padding-left:20px;color:var(--ink-muted)}.candidate-multipv-comparison{display:grid;gap:8px;margin-top:12px;border-top:1px solid rgba(34,111,84,.18);padding-top:10px}.candidate-multipv-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.candidate-multipv-header span,.candidate-multipv-row span{color:var(--accent-strong);font-weight:900}.candidate-multipv-header strong,.candidate-multipv-row strong{border-radius:999px;background:#226f541f;padding:3px 8px;color:var(--accent-strong);font-size:.72rem}.candidate-multipv-grid{display:grid;gap:8px}.candidate-multipv-row{border:1px solid rgba(34,111,84,.2);border-radius:8px;background:#ffffffb8;padding:8px}.candidate-multipv-row.selected{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.candidate-multipv-row div{display:flex;align-items:center;justify-content:space-between;gap:8px}.candidate-multipv-row small{display:block;margin-top:4px;color:var(--ink-muted);line-height:1.45}.candidate-session-list span{color:var(--ink-muted);font-size:.78rem;font-weight:800}.guess-header button,.guess-actions button,.candidate-training-header button,.mistake-book-header button,.mistake-card-actions button,.global-analysis-header button,.analysis-depth-controls button,.analysis-filter-controls button{min-height:40px;border-radius:8px;padding:0 12px;font-weight:800}.global-analysis-actions,.analysis-control-row,.analysis-depth-controls,.analysis-filter-controls{display:flex;flex-wrap:wrap;gap:8px}.global-analysis-actions{justify-content:flex-end}.analysis-control-row{align-items:center;justify-content:space-between}.analysis-depth-controls button.active,.analysis-filter-controls button.active{border-color:#226f5473;background:var(--accent);color:#fff}.analysis-cancel-button:not(:disabled){border-color:#a9444261;color:#a94442}.analysis-cancel-button:not(:disabled):hover{background:#fff1ef}.analysis-preset-help{margin:0;color:var(--ink-muted);font-size:.78rem;line-height:1.45}.analysis-key-summary{color:var(--ink-muted);font-size:.78rem;line-height:1.45}.analysis-multipv{color:var(--ink-muted);font-size:.76rem;line-height:1.4}.guess-result.correct{border-color:#226f5466;background:#ecf7f1}.guess-result.wrong{border-color:#a9444257;background:#fff1ef}.mistake-card{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:8px;background:#fff;padding:10px}.mistake-card strong{color:var(--ink)}.mistake-card.due{border-color:#d6911d;box-shadow:inset 4px 0 #d6911d}.mistake-card-actions{display:flex;gap:8px;flex-shrink:0}.analysis-row{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;min-height:42px;border-radius:8px;padding:8px 10px;text-align:left}.analysis-row.swing{border-color:#d6911d;box-shadow:inset 4px 0 #d6911d}.analysis-label{min-width:90px;flex:1 1 100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analysis-quality{flex:0 0 auto;min-width:48px}.analysis-loss{flex:2 1 140px;min-width:0;overflow-wrap:anywhere;line-height:1.35}.analysis-best{flex:1 1 80px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analysis-quality,.analysis-row strong{font-weight:900}.quality-好棋 .analysis-quality{color:#226f54}.quality-疑问手 .analysis-quality{color:#a56b00}.quality-失误 .analysis-quality,.quality-败着 .analysis-quality{color:#a94442}.analysis-row{font-size:.88rem}.saved-variation-list{display:grid;gap:8px}.saved-variation-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--border);border-radius:8px;background:#fff;padding:10px}.saved-variation-item p{margin:0;color:#3e4942;line-height:1.4;overflow-wrap:anywhere}.saved-variation-item button{min-height:36px;border-radius:8px;padding:0 10px;font-weight:800}.evaluation-side-panel{display:grid;gap:10px;width:100%;margin-top:8px;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:12px}.section-heading{display:flex;flex-direction:column;gap:4px}.section-heading span{color:var(--accent-strong);font-size:.82rem;font-weight:900}.section-heading small{color:var(--ink-muted);font-size:.78rem;line-height:1.45}.segmented-control{display:flex;flex-wrap:wrap;gap:6px}.segmented-control button{flex:1 1 60px;min-height:36px;border-radius:8px;padding:0 10px;font-size:.88rem;font-weight:800}.segmented-control button.active{border-color:var(--accent);background:var(--accent);color:#fff}.evaluation-side-switch{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.evaluation-side-switch span{color:var(--accent-strong);font-size:.82rem;font-weight:900}.evaluation-side-switch button{min-height:32px;border-radius:8px;padding:0 10px;font-size:.88rem;font-weight:800}.evaluation-side-switch button.active{border-color:var(--accent);background:var(--accent);color:#fff}.analysis-player-summaries{display:flex;flex-wrap:wrap;gap:6px;color:var(--ink-muted);font-size:.78rem}.engine-panel{display:grid;gap:12px;width:100%;margin-top:8px;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:12px}.engine-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.engine-header span,.engine-grid span,.engine-pv span,.engine-explanation span{display:block;color:var(--accent-strong);font-size:.82rem;font-weight:900}.engine-header p,.engine-pv p,.engine-explanation p{margin:4px 0 0;color:var(--ink-muted);font-size:.78rem;line-height:1.45}.engine-actions{display:flex;flex-wrap:wrap;gap:8px}.engine-actions button{min-height:40px;border-radius:8px;padding:0 12px;font-weight:800}.eval-bar{display:grid;gap:6px}.eval-bar-track{position:relative;display:flex;height:22px;border-radius:11px;border:1px solid var(--border);overflow:hidden}.eval-bar-track:before{content:"";flex:1;background:#1d2520}.eval-bar-track:after{content:"";flex:1;background:#fff}.eval-bar-indicator{position:absolute;top:0;bottom:0;width:3px;background:var(--accent);border-radius:2px;transform:translate(-50%);transition:left .3s ease;z-index:2}.eval-bar-mate{position:absolute;inset:0;z-index:3;display:grid;place-items:center;font-size:.82rem;font-weight:800}.eval-bar-mate.white{background:#ffffffeb;color:#1d2520}.eval-bar-mate.black{background:#1d2520eb;color:#fff}.eval-bar-labels{display:flex;justify-content:space-between;font-size:.76rem;color:var(--ink-muted);font-weight:700}.engine-perspective{display:flex;flex-wrap:wrap;gap:8px}.engine-perspective button{flex:1 1 80px}.engine-perspective button{min-height:36px;border-radius:8px;font-size:.88rem;font-weight:800}.engine-perspective button.active{border-color:var(--accent);background:var(--accent);color:#fff}.engine-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px}.engine-grid div{min-width:0;border:1px solid var(--border);border-radius:8px;background:#fff;padding:10px}.engine-grid strong{display:block;min-width:0;margin-top:4px;color:#1d2520;font-size:1.05rem;overflow-wrap:anywhere;line-height:1.3}.engine-pv p{overflow-wrap:anywhere}.engine-explanation,.engine-log{border-top:1px solid var(--border);padding-top:10px}.engine-log summary{color:var(--accent-strong);cursor:pointer;font-size:.82rem;font-weight:900}.engine-log ul{display:grid;gap:4px;margin:8px 0 0;padding:0;list-style:none}.engine-log li,.engine-log p{margin:0;color:var(--ink-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;line-height:1.45;overflow-wrap:anywhere}.opening-panel,.middlegame-plan-panel,.endgame-training-panel,.review-report-panel,.review-history-panel,.strength-profile-panel{display:grid;gap:6px;width:100%;margin-top:8px;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:12px}.opening-header,.middlegame-plan-header,.endgame-training-header,.review-report-header,.review-history-header,.strength-profile-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.opening-header span,.middlegame-plan-header span,.endgame-training-header span,.review-report-header span,.review-history-header span,.strength-profile-header span{color:var(--accent-strong);font-size:.82rem;font-weight:900}.opening-header strong,.middlegame-plan-header strong,.endgame-training-header strong,.review-history-header strong,.strength-profile-header strong,.review-training-advice strong{border:1px solid rgba(34,111,84,.28);border-radius:999px;background:#fff;padding:4px 8px;color:var(--accent-strong);font-size:.78rem}.opening-panel h2{font-size:1.08rem}.opening-panel p,.middlegame-plan-panel p,.endgame-training-panel p,.review-report-panel p,.review-history-panel p,.strength-profile-panel p{margin:0;color:var(--ink-muted);font-size:.88rem;line-height:1.45}.opening-panel p strong{color:#1d2520}.opening-improvement-summary,.opening-review-card,.opening-stat-list span{border:1px solid rgba(34,111,84,.14);border-radius:8px;background:#226f540f;padding:10px}.opening-improvement-summary span{display:block;color:var(--accent-strong);font-size:.82rem;font-weight:900;margin-bottom:4px}.opening-stat-list,.opening-card-list{display:grid;gap:8px}.opening-stat-list{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.opening-stat-list span{color:#244239;font-size:.84rem;font-weight:800}.opening-review-card{display:grid;gap:4px}.opening-review-card strong{color:#1d2520}.opening-review-card small,.middlegame-plan-card small,.endgame-training-card small{color:var(--ink-muted);line-height:1.45}.middlegame-theme-list,.middlegame-card-list,.endgame-theme-list,.endgame-card-list{display:grid;gap:8px}.middlegame-theme-list,.endgame-theme-list{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.middlegame-theme-list span,.middlegame-plan-card,.endgame-theme-list span,.endgame-training-card{border:1px solid rgba(34,111,84,.14);border-radius:8px;background:#226f540f;padding:10px}.middlegame-theme-list span,.endgame-theme-list span{color:#244239;font-size:.84rem;font-weight:800}.middlegame-plan-card,.endgame-training-card{display:grid;gap:4px;width:100%;text-align:left}.middlegame-plan-card span,.endgame-training-card span{color:#1d2520;font-weight:900}.middlegame-plan-card strong,.endgame-training-card strong{color:var(--accent-strong);font-size:.78rem}.middlegame-empty,.endgame-empty{border:1px dashed rgba(34,111,84,.28);border-radius:8px;padding:10px}.strength-radar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.strength-radar-axis,.strength-profile-grid>div,.strength-priorities{display:grid;gap:4px;border:1px solid rgba(34,111,84,.14);border-radius:8px;background:#ffffffb8;padding:9px}.strength-radar-axis div,.strength-profile-grid{display:flex;gap:8px}.strength-radar-axis div{justify-content:space-between}.strength-radar-axis span,.strength-profile-grid strong,.strength-priorities strong{color:#1d2520;font-weight:900}.strength-radar-axis progress{width:100%;accent-color:var(--accent-strong)}.strength-radar-axis small,.strength-profile-grid span,.strength-priorities span{color:var(--ink-muted);font-size:.82rem;line-height:1.45}.strength-profile-grid{flex-wrap:wrap}.strength-profile-grid>div{flex:1 1 220px}.review-report-actions,.natural-language-coach-actions{display:flex;flex-wrap:wrap;gap:8px}.review-report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.review-report-grid article,.review-training-advice,.natural-language-coach-panel,.natural-language-coach-grid article{display:grid;gap:6px;border:1px solid rgba(34,111,84,.14);border-radius:8px;background:#226f540f;padding:10px}.review-report-grid article span,.natural-language-coach-grid article span,.natural-language-position strong{color:#1d2520;font-weight:900}.review-training-advice strong{justify-self:start}.natural-language-coach-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.natural-language-coach-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.natural-language-position{display:grid;gap:4px;border-top:1px solid rgba(34,111,84,.14);padding-top:8px}.natural-language-position:first-of-type{border-top:0;padding-top:0}.strength-history-summary,.review-history-stats,.review-history-item,.review-history-empty{border:1px solid rgba(34,111,84,.14);border-radius:8px;background:#226f540f;padding:10px}.review-history-filters,.review-history-actions{display:flex;flex-wrap:wrap;gap:8px}.review-history-filters input,.review-history-filters select{min-width:160px}.review-history-stats,.review-history-list,.review-history-item{display:grid;gap:8px}.review-history-stats span,.review-history-item span,.review-history-item small{color:var(--ink-muted);font-size:.82rem;line-height:1.45}.review-history-item{grid-template-columns:minmax(0,1fr) auto;align-items:start}.review-history-item.favorite{border-color:#d6961e73;background:#fff4ccb8}.review-history-item strong,.review-history-stats strong{color:#1d2520}.review-history-actions{justify-content:flex-end}.notes-panel{display:grid;gap:12px;width:min(100%,720px);margin-top:12px}.pgn-comment,.note-input{border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:12px}.pgn-comment span,.note-input span{display:block;color:var(--accent-strong);font-size:.82rem;font-weight:900;margin-bottom:6px}.pgn-comment p{margin:0;color:#3e4942;line-height:1.5}.note-input{display:flex;flex-direction:column}.note-input textarea{min-height:92px;resize:vertical}.fen-display{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;width:min(100%,720px);margin-top:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:12px}.fen-display span{color:var(--accent-strong);font-weight:800}.fen-display code{min-width:0;overflow-wrap:anywhere;color:#3e4942;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86rem}.panel-column{display:flex;flex-direction:column;gap:0;min-height:calc(100vh - 48px);border:1px solid var(--border);border-radius:16px;background:#ffffffb3;box-shadow:0 14px 34px #1e272014;overflow:hidden}.panel-tabs-nav{display:flex;gap:4px;padding:8px 10px;background:#edf0eceb;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none;flex-shrink:0}.panel-tabs-nav::-webkit-scrollbar{display:none}.panel-tab-button{flex-shrink:0;padding:7px 12px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--ink-muted);font-size:.84rem;font-weight:800;white-space:nowrap;transition:all .15s ease;cursor:pointer}.panel-tab-button:hover{background:#fff9;color:#1d2520}.panel-tab-button.active{border-color:var(--accent);background:#fff;color:var(--accent-strong);box-shadow:0 2px 8px #226f541a}.panel-tab-content{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px}.panel-tab-content>*{animation:tabFadeIn .15s ease-out}@keyframes tabFadeIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.file-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.file-tools button,.file-import{display:grid;place-items:center;min-height:42px;border:1px solid var(--border);border-radius:8px;background:#fff;color:#1d2520;font-weight:800;cursor:pointer}.file-tools button:hover:not(:disabled),.file-import:hover{border-color:var(--accent)}.file-import input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.bulk-pgn-library{border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px}.panel-header.compact{margin-bottom:10px}.panel-header.compact p{margin:4px 0 0;color:var(--ink-muted);font-size:.86rem}.bulk-pgn-list{display:grid;gap:8px;max-height:260px;overflow:auto}.bulk-pgn-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px}.bulk-pgn-filters label{display:grid;gap:4px;color:var(--ink-muted);font-size:.78rem;font-weight:700}.bulk-pgn-filters input,.bulk-pgn-filters select{width:100%;border:1px solid var(--border);border-radius:8px;background:#fff;padding:7px 8px;color:#1d2520}.bulk-pgn-checkbox{align-items:center;grid-template-columns:auto 1fr}.bulk-pgn-checkbox input{width:auto}.bulk-pgn-insights{display:grid;gap:6px;margin-bottom:10px;border-radius:10px;background:#edf7f1;padding:10px;color:var(--accent-strong);font-size:.86rem}.bulk-pgn-insights span{color:var(--ink-muted)}.bulk-pgn-insights ul{margin:0;padding-left:18px;color:#2d4638}.bulk-pgn-card{display:grid;gap:6px;width:100%;border:1px solid var(--border);border-radius:8px;background:#fff;padding:10px;text-align:left}.bulk-pgn-card-main{display:grid;gap:3px;width:100%;border:0;background:transparent;padding:0;text-align:left}.bulk-pgn-important-toggle{justify-self:start;padding:5px 8px;font-size:.78rem}.bulk-pgn-card.active{border-color:var(--accent);background:#edf7f1}.bulk-pgn-card span,.bulk-pgn-card small,.bulk-pgn-empty,.bulk-pgn-errors{color:var(--ink-muted)}.bulk-pgn-empty{margin:0;font-size:.86rem}.bulk-pgn-errors{margin-top:10px;font-size:.86rem;line-height:1.5}.bulk-pgn-errors ul{margin:8px 0 0;padding-left:18px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mode-switch button.active,.move-list button.active{border-color:var(--accent);background:var(--accent);color:#fff}.input-block{display:flex;flex:0 0 auto;flex-direction:column;gap:8px;color:var(--ink-muted);font-size:.92rem;font-weight:700}textarea{width:100%;min-height:230px;resize:vertical;border:1px solid var(--border);border-radius:8px;background:#fff;padding:12px;color:#1d2520;line-height:1.5;outline:none}textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #226f5424}.error-box{border:1px solid #c95858;border-radius:8px;background:#fff3f0;padding:12px;color:#8a2d2d;line-height:1.5}.move-list{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;gap:10px}.moves-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-height:0;overflow:auto;padding-right:4px}.moves-grid.single{grid-template-columns:1fr}.move-list>button,.moves-grid button{text-align:left;padding:0 12px}.move-button-content{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.move-button-content>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.move-badges{display:inline-flex;flex:0 0 auto;gap:4px}.move-badges span{display:grid;place-items:center;width:18px;height:18px;border-radius:999px;background:#226f5421;color:var(--accent-strong);font-size:.7rem;font-weight:900}.move-list button.active .move-badges span{background:#ffffff38;color:#fff}.move-list-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.move-list-header h2{margin:0}.move-expand-all-btn{font-size:.76rem;padding:4px 10px;flex-shrink:0}.move-right-badges{display:inline-flex;flex:0 0 auto;align-items:center;gap:4px}.move-quality-badge{display:grid;place-items:center;padding:2px 6px;border-radius:4px;font-size:.68rem;font-weight:800;line-height:1}.quality-badge-好棋{background:#226f541f;color:#226f54}.quality-badge-疑问手{background:#a66b001f;color:#a56b00}.quality-badge-失误{background:#a944421f;color:#a94442}.quality-badge-败着{background:#a944422e;color:#a94442}.board-move-bar-wrapper{display:flex;flex-direction:column;gap:6px;width:min(100%,720px);min-width:0;overflow:hidden}.board-move-bar{display:flex;align-items:center;gap:4px;width:100%;min-width:0;overflow-x:auto;padding:4px 6px;border:1px solid var(--border);border-radius:10px;background:#fff9;font-size:.82rem;scrollbar-width:thin}.board-move-bar::-webkit-scrollbar{height:4px}.board-move-bar::-webkit-scrollbar-thumb{background:#226f5440;border-radius:2px}.board-move-bar>button{flex-shrink:0;padding:3px 6px;font-size:.82rem;border-radius:6px}.board-move-pair{display:flex;align-items:center;gap:2px;flex-shrink:0}.move-pair-number{display:grid;place-items:center;padding:0 2px;color:var(--ink-muted);font-size:.7rem;font-weight:700;-webkit-user-select:none;user-select:none}.board-move-pair button{padding:3px 6px;font-size:.82rem;border-radius:6px;min-width:28px;text-align:center}.board-move-pair button.active,.board-move-bar>button.active{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.board-move-variation{display:flex;align-items:center;gap:2px;flex-shrink:0;border-left:2px solid var(--accent-strong);margin-left:4px;padding-left:4px}.board-move-variation button{padding:3px 6px;font-size:.78rem;border-radius:6px;border-color:#226f546b;background:#eef7f1}.board-move-variation button.variation-active{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.board-move-pair button.quality-好棋{border-bottom:2px solid #226f54}.board-move-pair button.quality-疑问手{border-bottom:2px solid #a56b00}.board-move-pair button.quality-失误,.board-move-pair button.quality-败着{border-bottom:2px solid #a94442}.board-move-detail{border:1px solid var(--border);border-radius:8px;background:#226f540a;padding:8px 10px;font-size:.82rem;display:flex;flex-direction:column;gap:6px;width:100%;min-width:0}.board-move-detail-header{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px}.board-move-detail-toggle{font-size:.72rem;padding:2px 8px;margin-left:auto;flex-shrink:0}.board-move-detail-body{display:flex;flex-direction:column;gap:4px}.move-list button.active .move-quality-badge{background:#ffffff38;color:#fff}.move-expand-toggle{font-size:.72rem;padding:2px 8px;margin-left:auto;flex-shrink:0}.move-analysis-detail{grid-column:1 / -1;padding:10px 12px;border-radius:8px;background:#226f540a;border:1px solid var(--border);font-size:.82rem;display:flex;flex-direction:column;gap:6px}.move-analysis-header{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px}.move-swing-badge{display:grid;place-items:center;padding:2px 6px;border-radius:4px;background:#d6911d1f;color:#a56b00;font-size:.68rem;font-weight:800}.move-analysis-loss{color:var(--ink-muted);font-size:.78rem}.move-analysis-best{font-weight:700}.move-analysis-multipv{display:flex;flex-wrap:wrap;gap:4px 10px;color:var(--ink-muted);font-size:.76rem}.variation-moves{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--border);margin-top:6px;padding-top:14px}.variation-moves h2{color:var(--accent-strong)}.move-list button.variation-entry{border-color:#226f546b;background:#eef7f1}.move-list button.variation-active{border-color:var(--accent-strong);background:var(--accent-strong)}.toast{position:fixed;right:20px;bottom:20px;z-index:20;max-width:min(420px,calc(100vw - 40px));border:1px solid var(--border);border-radius:8px;background:#fff;padding:12px 14px;color:#1d2520;font-weight:800;box-shadow:0 18px 46px #1e272033}.toast.success{border-color:#226f546b}.toast.error{border-color:#c95858;color:#8a2d2d}@media(max-width:980px){.app-shell{padding:16px}.main-workspace{grid-template-columns:1fr}.panel-column{min-height:auto;border-radius:12px}.panel-tab-content{padding:12px}.board-wrap,.replay-controls,.variation-panel,.saved-variations,.captured-panel,.engine-panel,.opening-panel,.notes-panel,.fen-display,.board-move-bar-wrapper{width:100%}}@media(max-width:560px){.top-bar{align-items:flex-start;flex-direction:column}.top-actions{width:100%;justify-content:space-between}.board{border-width:6px}.replay-controls{grid-template-columns:repeat(4,1fr)}.variation-panel,.saved-variation-item,.engine-header,.engine-grid{grid-template-columns:1fr}.engine-actions{display:grid;grid-template-columns:1fr 1fr}.captured-panel{grid-template-columns:1fr}.promotion-options{grid-template-columns:repeat(2,1fr)}.move-counter{grid-column:1 / -1;min-height:42px;order:-1}.moves-grid,.file-tools{grid-template-columns:1fr}.panel-tab-button{padding:6px 10px;font-size:.78rem}}
