:root{color:#292923;background:#f5f1e8;font-family:"Noto Serif SC",Songti SC,STSong,Georgia,serif;font-synthesis:none}*{box-sizing:border-box}button{font:inherit;color:inherit;cursor:pointer}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;background:#f5f1e8;-webkit-font-smoothing:antialiased}.app-shell{min-height:100vh;min-height:100dvh;padding-bottom:30px;background:#f5f1e8}.topbar{height:78px;padding:0 clamp(20px,3.2vw,52px);display:grid;grid-template-columns:minmax(190px,1fr) auto minmax(190px,1fr);align-items:center;border-bottom:1px solid #ded7c9}.brand,.top-actions,nav,.context-bar,.game-actions,.coach-footer,.record-footer,.panel-title,.players,.coach-heading,.section-label,.meter-caption,.clock-cells{display:flex;align-items:center}.brand{gap:12px;border:0;padding:0;background:transparent;text-align:left}.brand span{display:grid;width:45px;aspect-ratio:1;place-items:center;color:#eddda6;font-weight:800;font-size:24px;border-radius:12px;background:#1e4840;box-shadow:inset 0 0 0 1px #587268}.brand strong{font-size:22px;letter-spacing:.045em}nav{gap:2px;padding:5px;background:#faf9f5;border:1px solid #e6e0d6;border-radius:28px;box-shadow:0 3px 10px #3429160d}nav button{min-width:74px;border:0;border-radius:21px;padding:11px 15px;background:transparent;font-size:15px}nav .nav-active{color:#fff;background:#174a42;box-shadow:0 2px 5px #1d302522}.top-actions{justify-content:flex-end;gap:10px}.membership{border:1px solid #eadab8;padding:10px 15px;color:#b97429;font-weight:700;background:#fbf2df;border-radius:22px}.round-control,.avatar{border:1px solid #e6e0d6;background:#faf9f5;border-radius:50%;height:43px;padding:0 13px;font-size:13px}.avatar{display:grid;width:43px;place-items:center;padding:0;background:#eee9df}.context-bar{max-width:1450px;margin:0 auto;padding:20px clamp(20px,3.2vw,52px);justify-content:space-between;gap:16px}.context-bar>div{display:flex;align-items:center;gap:12px}.eyebrow{display:block;color:#70695f;font-size:13px;letter-spacing:.08em}.quiet{border:0;border-left:1px solid #ddd4c7;padding-left:12px;color:#716c64;background:transparent}.context-actions{gap:9px!important}.context-actions button,.game-actions button,.record-footer button{border:1px solid #e1dacf;border-radius:10px;padding:11px 16px;background:#fffdfa;box-shadow:0 2px 5px #3328120a}.game-layout{max-width:1450px;padding:0 clamp(20px,3.2vw,52px);margin:0 auto;display:grid;grid-template-columns:275px minmax(500px,1fr) 305px;align-items:start;gap:24px}.surface{border:1px solid #e4ddd1;border-radius:17px;background:#fffcf6;box-shadow:0 9px 22px #47351a0a}.moves-panel{min-height:592px;padding:20px 13px 16px}.panel-title{justify-content:space-between;padding:0 7px 14px}h2,h3,p{margin:0}.panel-title h2,.coach-heading h2,.tool-dock h2{margin-top:5px;font-size:17px}.live-dot{padding:5px 8px;color:#246d4d;font-size:11px;background:#e7f2e9;border-radius:9px}.record-tabs{display:grid;grid-template-columns:1fr 1fr;padding:3px;border-radius:8px;background:#f3f0e9}.record-tabs button{border:0;padding:8px;color:#787168;background:transparent;border-radius:6px}.record-tabs .active{color:#342d24;background:#fffdf8;box-shadow:0 1px 3px #291d130d}.players{justify-content:space-between;padding:14px 10px 8px;color:#8a8176;font-size:12px}.move-table{min-height:370px;max-height:430px;overflow:auto;border-top:1px solid #eee8de}.move-row{display:grid;grid-template-columns:30px 1fr 1fr;min-height:36px;align-items:center;border-bottom:1px solid #eee8de;font-size:14px}.move-row span{color:#958d83;text-align:center}.move-row b{font-weight:500}.move-row.current{background:#fff2cf}.empty-history{padding:28px 14px;color:#847a6d;font-size:14px;line-height:1.7}.record-footer{justify-content:space-between;gap:8px;padding:16px 0 0}.record-footer button{flex:1;padding:10px 8px;font-size:13px}.board-column{min-width:0}.turn-strip{display:flex;justify-content:center;align-items:center;gap:15px;height:34px;color:#8d8478;font-size:12px}.turn-strip span:first-child,.turn-strip span:last-child{padding:3px 7px;border-radius:99px}.turn-on{color:#b73127;background:#f6e4df}.turn-on.dark{color:#fff;background:#36352f}.board-wrap{width:min(100%,780px);margin:0 auto;padding:7px;border-radius:22px;background:#754320;box-shadow:inset 0 0 0 3px #b47d40,0 15px 26px #4b2c181c}.xiangqi-board{position:relative;width:100%;aspect-ratio:1196 / 1315;overflow:hidden;border-radius:16px;background:url(/assets/xiangqi-board.png) center / 100% 100% no-repeat}.square{position:absolute;left:calc(8.62% + var(--c) * 10.32%);top:calc(8.7% + var(--r) * 9.09%);z-index:2;width:10.1%;aspect-ratio:1;padding:0;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent}.square:after{content:"";position:absolute;top:8%;right:8%;bottom:8%;left:8%;border:2px solid transparent;border-radius:50%;transition:border-color .16s ease,box-shadow .16s ease}.square.selected:after{border-color:#f6c141;box-shadow:0 0 0 5px #f8d06955}.square.target:after{top:37%;right:37%;bottom:37%;left:37%;border:0;background:#3081509c}.square.last:after{top:5%;right:5%;bottom:5%;left:5%;border-color:#d8a34288}.square.hinted:after{border-color:#209566;box-shadow:0 0 0 6px #35af7260}.piece{position:absolute;top:3%;right:3%;bottom:3%;left:3%;display:grid;place-items:center;border:2px solid #8d5c2c;border-radius:50%;color:#171411;background:#f4d393;box-shadow:inset 0 0 0 3px #ffe6ad,inset 0 -5px #c48d4b,0 5px 7px #3c20085c}.piece span{display:grid;width:74%;aspect-ratio:1;place-items:center;border:1px solid #8e602f;border-radius:50%;font-size:clamp(20px,3.3vw,43px);font-weight:800;line-height:1}.piece.red{color:#b4251e;border-color:#a84b30}.piece.red span{border-color:#b65c42}.game-actions{justify-content:center;flex-wrap:wrap;gap:10px;padding-top:20px}.game-actions button{min-width:95px}.primary-action{color:#fff!important;border-color:#1b4c43!important;background:#1b4c43!important;box-shadow:0 5px 10px #22423929!important}.coach-panel{overflow:hidden}.coach-panel.collapsed{height:58px}.coach-heading{gap:11px;padding:20px 21px;border-bottom:1px solid #ece5d9}.signal-bars{display:flex;align-items:end;gap:3px;height:22px}.signal-bars i{display:block;width:4px;background:#2b9e64;border-radius:4px}.signal-bars i:nth-child(1){height:8px}.signal-bars i:nth-child(2){height:14px}.signal-bars i:nth-child(3){height:20px}.coach-message{display:grid;grid-template-columns:89px 1fr;gap:12px;padding:19px 20px 22px}.coach-orb{display:grid;width:76px;aspect-ratio:1;place-items:center;color:#e9f7f1;font-weight:800;letter-spacing:.08em;border:4px solid #dde7dc;border-radius:50%;background:#1f453e;box-shadow:inset 0 0 0 9px #315e54,0 6px 15px #25332922}.coach-message p,.lesson-tip p{color:#5f5a52;font-size:14px;line-height:1.65}.coach-message button,.lesson-tip button{width:100%;margin-top:12px;border:1px solid #e4dac7;border-radius:8px;padding:9px;color:#574e40;background:#f7efdc}.coach-markdown{min-height:154px;padding:18px 20px;border-bottom:1px solid #ece5d9;color:#514a41;font-size:14px;line-height:1.62}.coach-markdown h1,.coach-markdown h2,.coach-markdown h3{margin:0 0 8px;color:#2d3730;font-size:15px}.coach-markdown p{margin:0 0 9px}.coach-markdown ul{margin:0;padding-left:18px}.coach-markdown strong{color:#1c4c43}.streaming{display:inline-block;margin-bottom:8px;color:#347b59;font-size:12px}.evaluation,.recommendations,.lesson-tip{padding:18px 20px;border-top:1px solid #ece5d9}.section-label{justify-content:space-between;font-size:15px}.section-label b{font-size:14px}.eval-meter{height:4px;margin:18px 0 11px;border-radius:99px;background:#aaa69f}.eval-meter i{display:block;width:51%;height:100%;border-radius:99px;background:#e8e6df;position:relative}.eval-meter i:after{content:"";position:absolute;right:-4px;top:-4px;width:11px;aspect-ratio:1;border-radius:50%;background:#373830}.meter-caption{justify-content:space-between;color:#7d766d;font-size:12px}.recommendations h3{margin-bottom:10px;font-size:15px}.recommendations button{display:grid;width:100%;grid-template-columns:26px 1fr auto;align-items:center;gap:7px;border:0;border-bottom:1px solid #eee7dc;padding:10px 0;text-align:left;background:transparent}.recommendations button span{display:grid;width:22px;aspect-ratio:1;place-items:center;color:#776f64;font-size:12px;border-radius:5px;background:#f1eee7}.recommendations button b{font-weight:500}.recommendations button em{color:#817b70;font-style:normal;font-size:12px}.lesson-tip{background:#fffdfa}.coach-footer{justify-content:space-between;gap:9px;padding:14px 20px}.coach-footer button{flex:1;border:1px solid #e1dacf;border-radius:9px;padding:10px 6px;background:#f8f3e9;font-size:13px}.tool-dock{max-width:940px;margin:26px auto 0;padding:17px 21px;display:grid;grid-template-columns:1.1fr 1.8fr 1.25fr auto;align-items:center;gap:20px}.timer-preset{display:flex;gap:5px}.timer-preset button{flex:1;border:1px solid #e6dfd2;padding:7px 6px;color:#71695e;font-size:12px;background:#faf8f3}.timer-preset .active{color:#fff;border-color:#1e4e45;background:#1e4e45}.clock-cells{gap:10px}.clock-cells div{min-width:78px;padding:5px 8px;text-align:center;border-left:1px solid #e3ddd2}.clock-cells span{display:block;color:#827a6e;font-size:11px}.clock-cells b{font-family:ui-monospace,SFMono-Regular,monospace;font-size:17px}.workspace-view{width:min(1160px,calc(100% - 48px));margin:14px auto 32px}.workspace-view.narrow{width:min(800px,calc(100% - 48px))}.workspace-view>header{margin:10px 0 23px}.workspace-view h1{margin:5px 0 8px;font-size:clamp(27px,4vw,40px);letter-spacing:-.03em}.workspace-view>header p{max-width:610px;color:#71695e;line-height:1.65}.lesson-layout{display:grid;grid-template-columns:minmax(270px,.8fr) minmax(420px,1.5fr);gap:22px}.lesson-list{padding:8px}.lesson-list button{display:grid;width:100%;grid-template-columns:33px 1fr auto;gap:10px;align-items:center;padding:13px 11px;text-align:left;border:0;border-bottom:1px solid #eee7dc;background:transparent}.lesson-list button:last-child{border-bottom:0}.lesson-list button>span{display:grid;width:28px;aspect-ratio:1;place-items:center;color:#81786c;font:12px ui-monospace,monospace;background:#f3eee4;border-radius:50%}.lesson-list b,.lesson-list small{display:block}.lesson-list b{font-size:15px}.lesson-list small{margin-top:3px;color:#897f73}.lesson-list em{color:#2a8159;font-size:11px;font-style:normal}.lesson-list .selected-lesson{color:#fff;background:#1b4c43;border-radius:11px}.lesson-list .selected-lesson>span{color:#f2dfaf;background:#376b60}.lesson-list .selected-lesson small,.lesson-list .selected-lesson em{color:#d8eee2}.lesson-card,.record-sheet,.review-card,.puzzle-card{padding:clamp(22px,4vw,38px)}.lesson-card h2,.puzzle-card h2{margin:7px 0 15px;font-size:27px}.lesson-card>p,.puzzle-card>p,.review-card{color:#5d564c;line-height:1.75}.lesson-exercise{margin:22px 0;padding:17px;border-left:3px solid #c2914f;border-radius:0 12px 12px 0;background:#fbf4e7}.lesson-exercise p{margin-top:7px}.lesson-card h3{font-size:17px}.quiz-options{display:grid;gap:9px;margin:15px 0}.quiz-options button{padding:12px 14px;text-align:left;border:1px solid #e4ddd2;border-radius:10px;background:#fffdf9}.quiz-options .correct{color:#155b3d;border-color:#5caf7f;background:#ebf7ed}.quiz-options .incorrect{color:#8a352d;border-color:#d48982;background:#fbeceb}.answer-note{margin:13px 0 18px;padding:12px;color:#5d5345;background:#f4efe5;border-radius:10px}.lesson-card .primary-action[disabled]{cursor:not-allowed;opacity:.45}.record-sheet pre{min-height:240px;margin:0;padding:17px;overflow:auto;color:#39342d;line-height:1.8;white-space:pre-wrap;background:#f5f1e8;border-radius:10px}.fen-line{margin:15px 0;color:#837a6e;font:12px ui-monospace,monospace;word-break:break-all}.record-sheet>div,.puzzle-card>div{display:flex;gap:10px;flex-wrap:wrap}.record-sheet button,.puzzle-card button,.review-card button{border:1px solid #e1dacf;border-radius:9px;padding:10px 14px;background:#f8f3e9}.review-card .primary-action{margin-top:16px}.puzzle-card>span{color:#286c51;font-size:13px;font-weight:700}.puzzle-answer{margin:17px 0;padding:15px;color:#245a43;background:#eaf5ed;border-radius:11px}.result-overlay{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#1a1d19a3}.result-card{width:min(390px,100%);padding:30px;text-align:center}.result-card h2{margin:8px 0;font-size:34px}.result-card p{margin:0 0 20px;color:#71695e}.settings-overlay{position:fixed;z-index:40;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:18px;background:#1d241d83}.settings-panel{width:min(460px,100%);max-height:min(720px,90dvh);overflow:auto}.settings-panel>header{display:flex;align-items:center;justify-content:space-between;padding:22px;border-bottom:1px solid #ece5d9}.settings-panel h2{margin:4px 0 0;font-size:20px}.settings-panel>header button{border:1px solid #e1dacf;border-radius:9px;padding:8px 11px;background:#fffdfa}.settings-section{display:grid;gap:14px;padding:20px 22px;border-bottom:1px solid #ece5d9}.settings-section label{display:grid;gap:7px;color:#645c50;font-size:14px}.settings-section select{width:100%;border:1px solid #ded6c8;border-radius:9px;padding:11px;color:#39352e;background:#fffdfa}.settings-section .primary-action[disabled]{cursor:not-allowed;opacity:.45}.ai-status{display:flex;gap:11px;align-items:center;padding:13px;border-radius:11px;background:#f5eee4}.ai-status>span{width:10px;aspect-ratio:1;border-radius:50%;background:#b56355}.ai-status.ready{background:#ebf6ed}.ai-status.ready>span{background:#2e9a61;box-shadow:0 0 0 4px #2e9a6120}.ai-status b,.ai-status small{display:block}.ai-status small{margin-top:3px;color:#776d60;font-size:12px}.setting-toggle{display:flex!important;align-items:center;justify-content:space-between}.setting-toggle button{border:1px solid #e1dacf;border-radius:8px;padding:8px 13px;background:#f8f3e9}.settings-section p{margin:0;color:#776d60;font-size:13px;line-height:1.6}.mobile-nav{display:none}.focus-mode{min-height:100dvh;padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.focus-mode .topbar,.focus-mode .context-bar,.focus-mode .moves-panel,.focus-mode .coach-panel,.focus-mode .tool-dock,.focus-mode .mobile-nav{display:none}.focus-mode .game-layout{display:block;max-width:min(94vw,940px);padding:0}.focus-mode .board-column{padding-top:0}.focus-mode .turn-strip{height:30px}.focus-mode .board-wrap{width:min(76dvh,93vw)}.focus-mode .game-actions{padding-bottom:0}.native-fullscreen{background:#eee8dc}@media(max-width:1220px){.game-layout{grid-template-columns:232px minmax(470px,1fr) 275px;gap:16px;padding-inline:24px}.topbar{padding-inline:24px}.brand strong{font-size:19px}nav button{min-width:61px;padding-inline:10px}.coach-message{grid-template-columns:62px 1fr}.coach-orb{width:55px}.piece span{font-size:clamp(18px,3vw,34px)}}@media(max-width:1080px){.app-shell{padding-bottom:calc(78px + env(safe-area-inset-bottom))}.topbar{grid-template-columns:1fr auto}.topbar nav{display:none}.game-layout{display:flex;flex-direction:column;gap:18px}.moves-panel{display:none}.board-column,.coach-panel{width:100%}.board-column{order:1}.coach-panel{order:2;max-width:760px;margin-inline:auto}.coach-message{grid-template-columns:84px 1fr}.coach-orb{width:70px}.tool-dock{width:min(760px,calc(100% - 48px))}.context-bar{padding-inline:24px}.lesson-layout{grid-template-columns:280px minmax(0,1fr)}.mobile-nav{position:fixed;z-index:25;right:max(10px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom));left:max(10px,env(safe-area-inset-left));display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;padding:6px;border:1px solid #ddd7cb;border-radius:18px;background:#fffcf6ee;box-shadow:0 10px 28px #2b22171f;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.mobile-nav button{min-width:0;padding:7px 2px;color:#756d61;border:0;border-radius:12px;background:transparent;font-size:11px;line-height:1.1}.mobile-nav button span{display:block;margin-bottom:4px;color:#aa9a80;font:9px ui-monospace,monospace}.mobile-nav .mobile-active{color:#fff;background:#1b4c43}.mobile-nav .mobile-active span{color:#e6d8ad}}@media(max-width:860px){.lesson-layout{grid-template-columns:1fr}.lesson-list{display:grid;grid-template-columns:1fr 1fr}.lesson-list button:nth-last-child(1):nth-child(odd){grid-column:span 2}}@media(max-width:720px){.topbar{height:62px;padding-inline:15px}.brand span{width:37px;border-radius:10px;font-size:20px}.brand strong{font-size:18px}.round-control{display:none}.avatar{width:38px;height:38px}.context-bar{padding:13px 15px 9px}.context-bar .quiet{display:none}.context-actions button{padding:8px 9px;font-size:12px}.game-layout{gap:14px;padding:0 10px}.xiangqi-board{border-radius:12px}.board-wrap{padding:5px;border-radius:15px}.turn-strip{height:27px}.piece span{font-size:clamp(19px,7.8vw,31px)}.game-actions{gap:7px;padding:14px 5px 0}.game-actions button{min-width:unset;flex:1 1 28%;padding:10px 5px;font-size:13px}.coach-heading,.coach-markdown{padding:14px 16px}.evaluation,.recommendations,.lesson-tip,.coach-footer{padding-inline:16px}.tool-dock{width:calc(100% - 20px);grid-template-columns:1fr auto;gap:14px;margin:0 10px;padding:15px}.timer-preset{grid-column:1 / -1}.clock-cells{grid-column:1}.tool-dock>.primary-action{grid-column:2}.workspace-view,.workspace-view.narrow{width:calc(100% - 28px);margin-top:4px}.workspace-view h1{font-size:29px}.lesson-list{display:block}.lesson-card,.record-sheet,.review-card,.puzzle-card{padding:22px}.focus-mode .game-layout{max-width:100vw;padding-inline:0}.focus-mode .board-column{min-height:calc(100dvh - max(16px,env(safe-area-inset-top)) - max(16px,env(safe-area-inset-bottom)));display:flex;flex-direction:column;justify-content:center}.focus-mode .board-wrap{width:min(78dvh,100%)}.focus-mode .game-actions{position:fixed;z-index:29;right:max(7px,env(safe-area-inset-right));bottom:max(7px,env(safe-area-inset-bottom));left:max(7px,env(safe-area-inset-left));padding:8px;border:1px solid #ddd5c6;border-radius:14px;background:#f5f1e8ed;box-shadow:0 8px 28px #37281828;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.focus-mode .game-actions button{flex:1 1 29%}.focus-mode .turn-strip{padding-bottom:2px}}@media(max-width:720px)and (orientation:landscape){.focus-mode .board-column{min-height:100dvh}.focus-mode .board-wrap{width:min(78dvh,82vw)}.focus-mode .game-actions{width:min(360px,37vw);right:max(12px,env(safe-area-inset-right));left:auto;bottom:max(12px,env(safe-area-inset-bottom))}.focus-mode .game-actions button{flex:1 1 42%;font-size:11px}}
