:root{--paper:#f4f1e9;--ink:#292c29;--muted:#77796f;--line:#d9d5ca;--red:#ad3c2d;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;--brush:"Kaiti SC","STKaiti","Songti SC","STSong",serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.5 var(--sans);-webkit-font-smoothing:antialiased}button,input{font:inherit}button{border:0;cursor:pointer;touch-action:manipulation;color:inherit;background:none}button:focus-visible,input:focus-visible{outline:2px solid var(--red);outline-offset:4px}button:disabled{opacity:.35;cursor:default}button:hover{color:var(--red)}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}button>svg{pointer-events:none}[hidden]{display:none!important}.symbols,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-shell{height:100dvh;min-height:600px;display:flex;flex-direction:column;padding:0 30px 20px;max-width:2100px;margin:auto}.topbar{height:80px;min-height:80px;display:flex;align-items:center;gap:34px}.brand{display:flex;gap:10px;align-items:center;padding:0;font:600 24px/1 var(--brush);letter-spacing:2px;white-space:nowrap}.brand-icon{width:30px;height:30px;color:var(--red)}.level-picker{display:flex;align-items:center;gap:14px;padding:7px 0}.level-picker>span{font-size:12px;color:var(--muted)}.level-picker>strong{font-size:14px;font-weight:500}.level-picker>svg{width:13px;height:13px}.header-tools{margin-left:auto;display:flex;gap:12px;align-items:center}.tool-button{display:flex;gap:6px;align-items:center;padding:8px 5px;font-size:13px;color:#5c625b}.tool-button>svg{width:17px;height:17px}.icon-button{width:36px;height:36px;display:grid;place-items:center;flex-shrink:0}.icon-button>svg{width:18px;height:18px}.speed-control{display:flex;gap:11px;align-items:center;margin-right:17px;font-size:13px;white-space:nowrap}.speed-control>span{color:var(--muted)}.speed-control output{font-size:13px;font-variant-numeric:tabular-nums;min-width:33px}.speed-control input{appearance:none;width:95px;height:26px;background:transparent;cursor:pointer;margin:0;accent-color:var(--red)}.speed-control input::-webkit-slider-runnable-track{height:2px;background:#c6c4b8}.speed-control input::-webkit-slider-thumb{appearance:none;margin-top:-7.5px;background:var(--red);width:11px;height:17px;border-radius:1px;transform:rotate(15deg)}
.arena{user-select:none;flex:1;min-height:480px;position:relative;isolation:isolate;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);touch-action:none;background:#f7f4ec}.arena canvas#game-canvas{position:absolute;width:100%;height:100%;inset:0;z-index:1}.arena-hud{position:absolute;top:23px;left:25px;right:22px;z-index:4;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.hud-score{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-width:140px}.hud-score>span{flex-basis:100%;font-size:12px;color:var(--muted);margin-bottom:-8px}.hud-score>strong{font:400 43px/1.3 Georgia,"Songti SC",serif;font-variant-numeric:tabular-nums;letter-spacing:-1px}.hud-score>em{font-style:normal;font-size:17px;color:var(--red)}.hud-center{position:absolute;top:4px;left:50%;transform:translateX(-50%);text-align:center}.timer{display:flex;align-items:baseline;gap:5px;justify-content:center}.timer>strong{font:400 31px/1.3 Georgia,serif;font-variant-numeric:tabular-nums}.timer>span{font-size:11px;color:var(--muted)}.timer.urgent{color:var(--red)}.hand-status{display:block;margin-top:10px;color:#777b6d;font-size:12px;white-space:nowrap}.hand-status.two:before{content:"";display:inline-block;width:4px;height:4px;background:var(--red);box-shadow:7px 0 #597371;margin-right:15px;vertical-align:3px}.hud-right{display:flex;align-items:center;gap:22px;pointer-events:auto}.combo-display{display:flex;gap:8px;align-items:baseline;color:var(--red)}.combo-display>strong{font:400 32px Georgia,serif}.combo-display>span{font-size:12px}
.welcome{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:0 20px clamp(70px,14vh,140px);pointer-events:none}.welcome-actions{display:flex;gap:14px;pointer-events:auto}.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:49px;padding:0 28px;border-radius:2px;font-size:15px;font-weight:500;white-space:nowrap;transition:background .12s,color .12s,transform .12s}.button.primary{background:var(--ink);color:var(--paper);border:1px solid var(--ink)}.button.primary:hover{background:var(--red);border-color:var(--red)}.button.secondary{border:1px solid #b7b7aa;background:transparent;color:var(--ink)}.button.secondary:hover{border-color:var(--red);color:var(--red)}.button:active{transform:translateY(1px)}.button svg{width:18px;height:18px}.home-rule{font-size:14px;color:#686d62;margin:23px 0 0;text-align:center}.home-meta{display:flex;align-items:center;gap:9px;font-size:12px;color:#828476;margin-top:12px;flex-wrap:wrap;justify-content:center;pointer-events:auto}.home-meta strong{font-weight:500;color:#686d62}.home-meta .text-button{padding:0;font-size:12px;min-height:24px}.dot{color:#b2b3a5}.text-button{display:inline-flex;align-items:center;gap:8px;font-size:13px;padding:8px 0;color:#666f61;min-height:36px}.text-button svg{width:16px;height:16px}.text-button:hover{color:var(--red)}
.center-screen{position:absolute;inset:100px 25px 70px;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;text-align:center}.center-screen h2{font:500 36px/1.4 var(--brush);margin:0}.center-screen p{font-size:15px;color:#74776c;line-height:1.7;max-width:420px;margin:0 0 10px}.spinner{width:34px;height:34px;border:1px solid var(--line);border-top:2px solid var(--red);border-radius:50%;animation:spin .9s linear infinite}.ready-hands{display:flex;gap:26px}.ready-hands>svg{width:77px;height:77px;color:var(--red);stroke-width:1.4}.ready-hands>svg+svg{color:#597371;transform:scaleX(-1)}#ready-status{font-size:13px;color:var(--muted)}.countdown-screen>strong{font:400 150px/1 var(--brush);color:var(--red)}.opaque-screen{inset:0;background:#f4f1e9f5;padding:40px;z-index:8}.arena-footer{position:absolute;bottom:16px;left:25px;right:25px;z-index:4;display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#838678;pointer-events:none}.guide-toggle{display:flex;gap:8px;align-items:center;font-size:12px;pointer-events:auto;padding:5px 0;color:#7a806f}.guide-toggle i{width:18px;height:8px;border-bottom:2px solid var(--red);transform:rotate(-25deg)}.guide-toggle[aria-pressed=false] i{border-color:#aaa}.arena[data-state=playing]{cursor:crosshair}.arena.camera-playing{cursor:default}.arena[data-state=result]>.arena-hud,.arena[data-state=result]>.arena-footer{display:none}.camera-monitor{position:absolute;bottom:52px;right:24px;width:148px;border:1px solid #d9d5ca;z-index:5;background:var(--paper)}.monitor-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:7px;font-size:11px;color:#747a6a}.monitor-toggle>svg{width:13px;height:13px}.camera-preview{position:relative;width:100%;height:106px;background:#e9e6dc}.camera-preview video,.camera-preview canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.camera-preview video{transform:scaleX(-1)}.camera-preview canvas{z-index:1}.camera-monitor.collapsed .camera-preview{display:none}.camera-monitor.collapsed .monitor-toggle>svg:last-child{transform:rotate(180deg)}.notice{position:absolute;bottom:53px;left:50%;transform:translateX(-50%);z-index:20;max-width:min(640px,calc(100% - 40px));width:max-content;border-left:3px solid var(--red);padding:13px 18px;background:#eee6d8;color:#843e30;font-size:14px;line-height:1.6}
.result-screen{position:absolute;inset:0;z-index:9;display:flex;flex-direction:column;background:#f7f4ec;padding:25px 40px 24px;overflow:auto}.result-heading{display:flex;justify-content:space-between;color:var(--muted);font-size:13px}.score-focus{text-align:center;margin:auto 0 25px;padding-top:17px}.score-label{font-size:14px;letter-spacing:2px;color:#777d6d}.score-focus>strong{display:block;font:400 clamp(80px,9vw,142px)/1.2 Georgia,"Songti SC",serif;color:var(--red);letter-spacing:-4px;margin:8px 0}.result-rank-line{display:flex;align-items:center;justify-content:center;gap:18px}.result-rank-line>h2{font:500 30px/1.3 var(--brush);letter-spacing:4px;margin:0}.record-stamp{font-size:12px;border:1px solid var(--red);padding:3px 6px;color:var(--red);transform:rotate(-5deg)}.record-note{display:flex;gap:8px;justify-content:center;margin-top:13px;font-size:13px;color:#8b8c7d}.performance-stats{display:grid;grid-template-columns:repeat(4,1fr);width:min(840px,90%);margin:0 auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0}.performance-stats>div{display:flex;flex-direction:column;gap:7px;align-items:center}.performance-stats>div+div{border-left:1px solid var(--line)}.performance-stats strong{font:400 40px/1.1 Georgia,serif}.performance-stats span{font-size:13px;color:#707968}.result-detail{display:flex;gap:30px;justify-content:center;font-size:12px;color:#878b7a;margin:16px 0 25px}.result-detail b{font-weight:400;color:#67705f}.result-footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:20px}.result-footer>div{display:flex;align-items:center;gap:12px}.result-footer .button{font-size:14px;min-height:46px;padding:0 25px}#result-word-count{font-size:12px;color:var(--muted)}
dialog{border:1px solid var(--line);border-radius:3px;background:var(--paper);color:var(--ink);width:calc(100% - 64px);max-width:1100px;max-height:90dvh;padding:28px 30px;box-shadow:0 20px 90px #262b2926}dialog::backdrop{background:#484b4447;backdrop-filter:blur(4px)}.dialog-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.dialog-header h2{font:500 30px/1.3 var(--brush);letter-spacing:2px;margin:0}.book-dialog{height:min(720px,90dvh);overflow:hidden}.book-controls{display:flex;align-items:center;gap:20px;padding-bottom:19px;border-bottom:1px solid var(--line)}#book-search{width:230px;min-width:120px;background:transparent;border:0;border-bottom:1px solid #aaa99c;padding:8px 0;color:var(--ink);font-size:14px;border-radius:0}#book-search::placeholder{color:#8a8e7f}.dictionary-filters{display:flex;gap:16px;align-items:center}.dictionary-filters button{padding:6px 0;font-size:13px;color:#8a8e7f;border-bottom:1px solid transparent}.dictionary-filters button.active{border-color:var(--red);color:var(--red)}#book-count{margin-left:auto;font-size:12px;color:var(--muted);white-space:nowrap}.book-body{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:30px;height:calc(100% - 122px);padding-top:23px;min-height:0}.character-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(49px,1fr));gap:7px;overflow:auto;align-content:start;overscroll-behavior:contain;min-height:0;padding:2px 9px 10px 2px}.book-char{font:500 29px/1.1 var(--brush);padding:9px 0;border:1px solid transparent;min-height:49px}.book-char.active{border-color:var(--red);color:var(--red)}.book-char.has-split:after{content:"";display:block;width:9px;border-bottom:1px solid #aaa;margin:5px auto -6px}.book-char:hover{background:#e9e5d9}.book-empty{grid-column:1/-1;color:var(--muted);font-size:14px}.book-detail{border-left:1px solid var(--line);padding-left:28px;overflow:auto}.learn-card{display:flex;flex-direction:column;gap:24px;padding-top:12px}.learn-top{display:flex;align-items:center;justify-content:center;gap:13px}.character-button{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:42px;padding:4px;border:0;background:none}.character-button .glyph{font:500 44px/1.2 var(--brush)}.character-button .pinyin{font-size:12px;color:#777f6b;max-width:170px;white-space:normal}.character-button.parent .glyph{font-size:79px}.character-button.parent .pinyin{font-size:15px}.split-parts{display:flex;gap:3px;align-items:center}.split-parts i{font-style:normal;color:#a8aa9b;font-size:12px}.split-arrow{color:#a9ad9c}.character-button.speaking,.listen-button.speaking{color:var(--red)}.learn-bottom{padding-top:18px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px}.word-meaning{font-size:14px;color:#6d7763}.example-label{font-size:12px;color:#8c927e;margin-top:6px}.example-label>span{color:#6b765e;margin-left:5px}.listen-button{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--red);padding:8px 0;white-space:nowrap}.listen-button svg{width:16px;height:16px}.chain-followup{display:flex;align-items:center;justify-content:center;gap:7px;border-top:1px solid var(--line);padding-top:19px;font-size:13px;color:#a0a48e}.chain-followup .character-button{min-width:0}.chain-followup .glyph{font-size:29px}.chain-followup .pinyin{font-size:11px}.learn-type{font-size:13px;text-align:center;color:#868d78;margin:0}.reading-note{font-size:12px;color:#868d78;line-height:1.8;margin-top:18px}.level-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}.level-card{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:23px 20px;border-top:1px solid var(--line);text-align:left;min-height:185px}.level-card.active{background:#e9e6da;border-color:var(--red)}.level-card-number{font-size:12px;color:var(--muted)}.level-card-glyphs{font:500 34px/1.4 var(--brush);letter-spacing:8px}.level-card strong{font-size:16px;font-weight:500}.level-card small{font-size:12px;color:var(--muted)}.help-dialog{max-width:580px}.help-dialog ol{padding-left:24px;margin:20px 0;color:#606a59;line-height:1.8}.help-dialog li{padding:9px 0 9px 5px}.help-dialog p{font-size:13px;color:#8a8e7f;border-top:1px solid var(--line);padding-top:20px}.app-shell:fullscreen{max-width:none;background:var(--paper)}
@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:1100px){.topbar{gap:20px}.header-tools{gap:9px}.tool-button>span{display:none}.speed-control{margin-right:8px}.welcome{padding-bottom:12vh}.book-body{grid-template-columns:minmax(0,1fr) 310px;gap:20px}.book-detail{padding-left:20px}.result-screen{padding:25px}.performance-stats{width:95%}}
@media(max-height:750px) and (min-width:601px){.app-shell{padding-bottom:14px}.topbar{height:68px;min-height:68px}.welcome{padding-bottom:55px}.score-focus{padding-top:8px;margin-bottom:18px}.score-focus>strong{font-size:96px}.performance-stats{padding:18px 0}.result-detail{margin-bottom:18px}.result-rank-line>h2{font-size:26px}}
@media(max-width:700px){.app-shell{padding:0 15px 12px;min-height:600px}.topbar{height:96px;min-height:96px;gap:15px;flex-wrap:wrap;align-content:center;row-gap:8px}.brand{font-size:22px}.brand-icon{width:24px;height:24px}.level-picker{gap:8px}.level-picker>strong{font-size:13px}.level-picker>span{font-size:11px}.header-tools{display:contents}.speed-control{order:2;margin-left:5px;margin-right:auto;gap:9px}.speed-control input{width:106px}.tool-button{order:2;padding:4px}.header-tools>.icon-button{order:2;width:28px;height:28px}.language-toggle>span{display:none}.arena{min-height:470px}.arena-hud{top:18px;left:12px;right:10px}.hud-score>strong{font-size:33px}.hud-score{min-width:85px}.hud-score>span{font-size:11px}.timer>strong{font-size:26px}.hud-right{gap:7px}.combo-display{gap:4px}.combo-display>strong{font-size:26px}.combo-display>span{font-size:11px}.hand-status{font-size:11px}.welcome{padding:0 13px 18vh}.welcome-actions{gap:10px}.welcome-actions .button{padding:0 18px;font-size:14px;min-height:45px}.home-rule{font-size:12px;margin-top:20px;max-width:300px}.home-meta{font-size:11px;gap:6px;margin-top:9px}.home-meta .text-button{font-size:11px}.arena-footer{font-size:11px;left:13px;right:13px;bottom:12px}.arena-footer>span{max-width:74%}.guide-toggle{font-size:11px}.camera-monitor{width:116px;right:12px;bottom:46px}.camera-preview{height:84px}.monitor-toggle{font-size:9px}.center-screen{inset:90px 16px 65px}.center-screen h2{font-size:29px}.center-screen p{font-size:13px}.opaque-screen{inset:0;padding:30px}.notice{font-size:12px;bottom:46px;padding:11px 14px}.result-screen{padding:22px 17px}.result-heading{font-size:12px}.score-focus{padding-top:15px;margin-bottom:22px}.score-focus>strong{font-size:82px;letter-spacing:-3px}.score-label{font-size:13px}.result-rank-line>h2{font-size:27px}.performance-stats{width:100%;padding:19px 0}.performance-stats strong{font-size:29px}.performance-stats span{font-size:11px}.result-detail{gap:23px;font-size:11px;margin:15px 0 25px}.result-footer{flex-wrap:wrap;gap:12px}.result-footer>.text-button{margin:auto}.result-footer>div{width:100%;gap:10px}.result-footer .button{flex:1;padding:0 13px;min-height:43px;font-size:13px}dialog{width:calc(100% - 24px);padding:20px;max-height:94dvh}.dialog-header{margin-bottom:18px}.dialog-header h2{font-size:27px}.book-dialog{height:92dvh}.book-controls{flex-wrap:wrap;gap:12px;padding-bottom:13px}#book-search{width:100%;font-size:13px}.dictionary-filters{gap:20px}.book-body{display:flex;flex-direction:column-reverse;gap:14px;height:calc(100% - 164px);padding-top:13px}.book-detail{flex-shrink:0;border-left:0;padding-left:0;max-height:245px;border-bottom:1px solid var(--line);padding-bottom:15px}.learn-card{gap:12px;padding-top:0}.learn-top{gap:20px}.character-button.parent .glyph{font-size:60px}.character-button .glyph{font-size:37px}.learn-bottom{padding-top:10px}.reading-note{display:none}.chain-followup{display:none}.character-grid{flex:1;min-height:0;grid-template-columns:repeat(auto-fill,minmax(43px,1fr));gap:5px}.book-char{font-size:26px;min-height:44px;padding:7px 0}.level-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.level-card{padding:18px 12px;min-height:165px}.level-card-glyphs{font-size:29px}.level-card strong{font-size:14px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;scroll-behavior:auto!important}}

/* 剑指准备页与手数设置沿用纸色、墨线、朱印。 */
.setup-screen{position:absolute;inset:28px 40px;z-index:5;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,1fr);gap:52px;align-items:center;background:#f7f4ec;overflow:auto}.pose-instructions{max-width:570px;width:100%;justify-self:center;text-align:center}.pose-instructions h2{font:500 44px/1.3 var(--brush);margin:0 0 12px}.pose-intro{font-size:17px;color:#62685d;margin:0}.gesture-layout{display:flex;gap:58px;justify-content:center;align-items:center;margin:25px auto 14px}.pose-hand{margin:0;position:relative}.pose-hand img{display:block;width:210px;height:290px;opacity:.6;transition:opacity .12s}.pose-hand.left img{transform:scaleX(-1)}.pose-hand figcaption{font-size:16px;color:#6b7265;margin-top:10px}.pose-hand.detected img{opacity:1}.pose-hand.detected figcaption{color:var(--red)}.pose-hand.detected figcaption:after{content:' ✓';font-family:var(--sans)}.pose-separator{height:120px;border-left:1px dashed var(--line)}.gesture-layout[data-hands="1"] .left,.gesture-layout[data-hands="1"] .pose-separator{display:none}.distance-guide{display:flex;justify-content:center;align-items:center;gap:20px;padding-top:3px}.distance-guide svg{width:180px;height:44px;color:#73796b;stroke-width:1.3}.distance-guide strong{font-size:15px;font-weight:500;white-space:nowrap}.pose-notes{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#767c6d;line-height:1.6;margin-top:13px}.pose-live{width:100%;max-width:420px;justify-self:center}.preview-title{font-size:12px;color:var(--muted);margin-bottom:10px}.pose-live .camera-monitor{position:static;width:100%;border:1px solid var(--line);background:#ece9e1}.pose-live .camera-preview{height:290px}.pose-live .monitor-toggle{display:none}.pose-live #ready-status{font:500 32px/1.3 var(--brush);margin-top:22px;color:var(--ink)}.pose-live #pose-feedback{font-size:17px;min-height:40px;margin:10px 0 18px;color:#6e7467}.pose-live .button{width:100%}.setup-actions{display:flex;justify-content:flex-end;margin-top:9px}.focus-meter{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:4;display:flex;gap:12px;align-items:baseline;font-size:12px;color:#777d70;pointer-events:none;white-space:nowrap}.focus-meter strong{font-weight:500;font-variant-numeric:tabular-nums}.focus-meter>i{position:absolute;bottom:-7px;left:0;right:0;height:1px;background:#d5d7cc}.focus-meter>i>b{display:block;height:100%;background:currentColor;transform-origin:left}.focus-meter.active{color:#9a7028;font-size:15px}.arena.blade-powered{background:#f7f1e2;border-color:#ac8c49;box-shadow:inset 0 0 0 4px #a17a2410}.result-detail{flex-wrap:wrap}
@media(max-height:750px) and (min-width:701px){.setup-screen{inset:20px 25px;gap:35px}.gesture-layout{margin:12px 0 6px;gap:40px}.pose-hand img{width:170px;height:235px}.pose-notes{margin-top:7px}.pose-live .camera-preview{height:230px}.pose-live #ready-status{margin-top:13px}.pose-instructions h2{font-size:36px}.pose-live #pose-feedback{margin-bottom:10px}}
@media(max-width:900px){.setup-screen{gap:24px;left:23px;right:23px}.gesture-layout{gap:25px}.pose-hand img{width:170px;height:235px}.pose-separator{height:100px}.pose-notes{font-size:14px}.pose-live .camera-preview{height:230px}}
@media(max-width:700px){.topbar{column-gap:10px}.speed-control input{width:78px}.speed-control{gap:7px}.setup-screen{inset:75px 12px 18px;display:flex;flex-direction:column;gap:18px;align-items:center;justify-content:flex-start;padding:6px 5px 15px}.pose-instructions h2{font-size:28px}.pose-intro{font-size:12px}.gesture-layout{margin:14px 0 6px;gap:35px}.pose-hand img{width:83px;height:114px}.pose-hand figcaption{font-size:11px;margin-top:5px}.pose-separator{height:65px}.distance-guide{gap:12px}.distance-guide svg{width:135px;height:33px}.distance-guide strong{font-size:13px}.pose-notes{font-size:11px;gap:3px;margin-top:8px}.pose-live{max-width:300px;display:grid;grid-template-columns:105px minmax(0,1fr);gap:8px 14px;align-items:center}.pose-live .preview-title{display:none}.pose-live #ready-preview-slot{grid-row:1/3}.pose-live .camera-preview{height:86px}.pose-live #ready-status{margin:0;font-size:21px;align-self:end}.pose-live #pose-feedback{margin:0;min-height:0;font-size:12px;align-self:start}.pose-live>.button,.setup-actions{grid-column:1/-1}.pose-live>.button{margin-top:5px;min-height:44px}.setup-actions{margin:0}.focus-meter{bottom:30px;font-size:11px;gap:7px}.focus-meter.active{font-size:12px}.arena[data-state="playing"] .arena-footer>span{max-width:26%;font-size:10px}.result-detail{gap:12px 22px}}
.arena[data-state="ready"] .arena-hud,.arena[data-state="ready"] .arena-footer{display:none}.arena[data-state="ready"] #game-canvas{visibility:hidden}.pose-notes{font-size:13px;color:#636c5f}
@media(max-width:700px){.pose-notes{font-size:12px}.setup-screen{top:36px}}

/* 剑指、竹影、学习范围：颜色分工保持墨 / 金 / 朱。 */
:root{--gold:#a17a24}.brand-icon{stroke-width:1.65;stroke-linejoin:round;stroke-linecap:round;transform:rotate(18deg)}
.camera-preview video{opacity:0;pointer-events:none}.camera-preview{background:#f2f0e7}.camera-preview canvas{background:transparent}
.gesture-layout{perspective:800px;gap:80px}.pose-hand.left img{transform:rotate(-32deg) scaleX(-1)}.pose-hand.right img{transform:rotate(32deg)}.pose-hand img{transform-origin:50% 75%}.pose-separator{opacity:.55}
.ready-meter{font-size:15px;min-height:44px;padding:13px 0 0;color:var(--ink);position:relative}.ready-meter>i{display:block;height:3px;background:#dddccf;margin-top:14px;overflow:hidden}.ready-meter b{display:block;width:100%;height:100%;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .08s linear}.pose-live #pose-feedback{min-height:26px;margin-bottom:9px}
.combo-display>strong{font:400 62px/.95 Georgia,serif;color:var(--red);display:inline-block;transform-origin:50% 70%;min-width:1ch}.combo-display{align-items:baseline;gap:9px}.combo-display>span{font-size:13px}
.bamboo{position:absolute;pointer-events:none;width:205px;height:460px;color:#6c7864;opacity:.13;z-index:0;transform-origin:50% 100%;overflow:visible}.bamboo-left{left:-40px;bottom:-3px;animation:bamboo-sway 8s ease-in-out infinite alternate}.bamboo-right{right:-32px;top:-125px;transform:rotate(180deg);opacity:.09;animation:bamboo-sway-right 10s ease-in-out infinite alternate}.bamboo-stem,.bamboo-joints{fill:none;stroke:currentColor;stroke-width:2.5}.bamboo-joints{stroke-width:3.5}.bamboo-leaves{fill:currentColor}.wind-line{position:absolute;bottom:22%;left:-12%;width:25%;height:40px;border-top:1px solid #70806920;border-radius:50%;pointer-events:none;animation:wind-pass 11s linear infinite;z-index:0}.arena>canvas{position:absolute;z-index:1}.arena.blade-powered .bamboo{opacity:.17}.setup-screen{background:transparent}.bamboo-defs{position:absolute}
@keyframes bamboo-sway{from{transform:rotate(-1.5deg)}to{transform:rotate(1.5deg)}}@keyframes bamboo-sway-right{from{transform:rotate(178deg)}to{transform:rotate(182deg)}}@keyframes wind-pass{0%{transform:translateX(0) scaleX(.7);opacity:0}15%{opacity:.8}75%{opacity:0}100%{transform:translateX(580%) scaleX(1.4);opacity:0}}
.book-dialog{display:flex;flex-direction:column;height:min(810px,92dvh)}.book-dialog:not([open]){display:none}.book-dialog .dialog-header{margin-bottom:20px}.book-preferences{display:flex;align-items:center;justify-content:space-between;gap:20px}.pool-picker{display:flex;align-items:center;gap:17px}.pool-picker>span,.book-sort>span{font-size:13px;color:#6d7566}.pool-options{display:flex;border-bottom:1px solid #b9b9a9}.pool-options button{min-width:55px;padding:8px 15px;color:#79816f;font-size:14px}.pool-options button[aria-pressed=true]{color:var(--red);border-bottom:2px solid var(--red);margin-bottom:-1px}.pool-options button:disabled{opacity:.45}.book-sort{display:flex;gap:12px;align-items:center}.book-sort select{font:inherit;font-size:13px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid #b9b9a9;border-radius:0;padding:8px 22px 8px 2px;max-width:190px}.range-note{font-size:12px;color:#7a816f;margin:11px 0 19px}.book-controls{flex-shrink:0;padding-bottom:14px}.book-body{flex:1;height:auto;min-height:0;grid-template-columns:minmax(0,1fr) 365px;padding-top:18px}.book-detail{padding-left:26px;overscroll-behavior:contain}.learn-card{gap:17px;padding-top:0;padding-bottom:16px}.learn-bottom{padding-top:14px}.word-meaning{color:#414a3f;font-size:15px;line-height:1.7}.lesson-label{font-size:12px;color:#858c7a}.lesson-sentence p,.lesson-mnemonic p{font-size:14px;line-height:1.8;margin:5px 0 0;color:#4c5746}.lesson-sentence mark{background:#ad3c2d0d;color:var(--red);padding:0 1px}.lesson-sentence .sentence-translation{font-size:13px;color:#757d6b}.lesson-mnemonic{border-left:2px solid #b4bda6;padding-left:13px}.practice-note{display:flex;flex-direction:column;align-items:flex-start;gap:6px;border-top:1px solid var(--line);padding-top:11px;font-size:12px;color:#7a826f}.local-records-note{font-size:13px;color:#78816c;margin:-8px 0 24px}.level-card{gap:9px;min-height:190px}.focus-meter{color:#986957}
@media(max-width:1100px){.book-body{grid-template-columns:minmax(0,1fr) 330px}}
@media(max-width:700px){.combo-display>strong{font-size:43px}.combo-display{gap:5px}.bamboo{width:135px;height:300px;opacity:.10}.bamboo-left{left:-42px}.bamboo-right{right:-25px;top:-80px}.gesture-layout{gap:55px}.ready-meter{grid-column:1/-1;width:100%;font-size:14px;min-height:40px;padding-top:4px}.ready-meter>i{margin-top:9px}.book-dialog{padding:17px;height:94dvh}.book-dialog .dialog-header{margin-bottom:12px}.book-preferences{flex-wrap:wrap;gap:12px}.pool-picker{gap:11px}.pool-options button{min-width:48px;padding:7px 12px}.book-sort{width:100%;justify-content:space-between}.book-sort select{max-width:190px}.range-note{margin:9px 0 12px;font-size:11px;line-height:1.6}.book-controls{gap:8px}.dictionary-filters{gap:17px;white-space:nowrap}.book-body{display:flex;flex-direction:column-reverse;gap:11px;height:auto;min-height:0;padding-top:12px}.book-detail{padding-left:0;max-height:45%;min-height:150px;overflow:auto;flex-shrink:0}.learn-card{gap:12px}.learn-top{gap:18px}.learn-bottom{padding-top:10px}.lesson-sentence p,.lesson-mnemonic p{font-size:13px}.word-meaning{font-size:14px}.practice-note{font-size:11px}.character-grid{flex:1;min-height:80px;grid-template-columns:repeat(auto-fill,minmax(43px,1fr))}.focus-meter{bottom:29px;font-size:10px}}
@media(prefers-reduced-motion:reduce){.bamboo,.wind-line{animation:none}.ready-meter b{transition:none}.wind-line{display:none}}

/* 大招保留纸色；字潮与刀光承担强度。 */
.arena.ultimate-time{background:#f3eddb;border-color:#ad8046;box-shadow:inset 0 0 0 5px #a17a2414}.ultimate-time .bamboo{opacity:.08;animation-play-state:paused}.ultimate-time .wind-line{display:none}.ultimate-time .focus-meter{color:#9a3526;font-size:21px;letter-spacing:1px}.ultimate-time .focus-meter>i{height:3px;bottom:-10px}.ultimate-time .combo-display>strong{color:#9d7520}
.ultimate-announcement{position:absolute;z-index:3;left:50%;top:23%;pointer-events:none;white-space:nowrap;font:500 70px/1.2 var(--brush);color:var(--red);letter-spacing:12px;transform:translateX(-50%);text-shadow:0 2px 12px var(--paper);animation:ultimate-enter 1.05s ease-out both}
@keyframes ultimate-enter{0%{opacity:0;transform:translateX(-50%) scale(1.35)}18%,60%{opacity:1;transform:translateX(-50%) scale(1)}100%{opacity:0;transform:translateX(-50%) scale(.98)}}
.book-catalog{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;min-height:0;min-width:0;overflow:hidden}.letter-index{display:grid;grid-template-columns:repeat(2,22px);grid-template-rows:repeat(13,minmax(20px,1fr));gap:2px;max-height:420px;align-self:stretch;padding:0 0 6px}.letter-index button{font:500 12px/1 var(--sans);color:#6c7464;padding:3px 0;min-height:20px;border-bottom:1px solid transparent}.letter-index button:hover:not(:disabled){color:var(--red);background:#ad3c2d08}.letter-index button[aria-current=location]{color:var(--red);border-color:var(--red)}.letter-index button:disabled{color:#bfc0b2;opacity:.65;cursor:default}.letter-heading{grid-column:1/-1;font:500 16px/1.2 var(--sans);color:var(--red);border-bottom:1px solid var(--line);padding:13px 0 8px;margin:4px 0 1px}.letter-heading:first-child{padding-top:3px;margin-top:0}
@media(max-width:700px){.ultimate-time .focus-meter{font-size:15px}.ultimate-announcement{font-size:43px;letter-spacing:6px;top:24%}.book-catalog{flex:1;grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:8px;min-height:145px}.letter-index{grid-template-columns:repeat(13,minmax(0,1fr));grid-template-rows:repeat(2,24px);max-height:none;gap:1px;padding:0}.letter-index button{font-size:11px;min-height:24px}.book-catalog .character-grid{min-height:0}.letter-heading{padding-top:7px}}
@media(prefers-reduced-motion:reduce){.ultimate-announcement{display:none}}

/* 主手状态与镜头预览共用底部信息区，不压在斩击区上。 */
.tracking-status{position:absolute;bottom:55px;left:25px;z-index:4;display:flex;align-items:center;gap:12px;font-size:12px;color:#77796f;pointer-events:none}.tracking-status strong{font-weight:500;color:var(--red)}.tracking-status[data-status=recovering] strong{color:var(--gold)}.tracking-status[data-status=idle] strong{color:#77796f}.camera-monitor{width:175px}.camera-preview{height:122px}.monitor-toggle{font-size:12px;gap:6px}.marker-legend{display:flex;flex-wrap:wrap;gap:7px 14px;font-size:12px;margin-top:12px;color:#69705f}.marker-legend span:before{content:'';display:inline-block;width:13px;border-top:2px solid var(--red);margin-right:6px;vertical-align:3px}.marker-legend span+span:before{border-color:var(--gold);border-top-style:dashed}
@media(max-width:700px){
  .gesture-layout{gap:clamp(12px,4vw,18px)}.pose-hand img{width:clamp(68px,21.3vw,83px);height:auto}
  .pose-live .marker-legend{grid-column:1/-1;margin-top:2px;font-size:11px}.pose-live #ready-status{font-size:17px}.pose-live .camera-preview{height:96px}.pose-live{grid-template-columns:122px minmax(0,1fr)}
  .arena[data-input=camera]:is([data-state=playing],[data-state=countdown],[data-state=paused]) #game-canvas{height:calc(100% - 118px)}
  .arena[data-input=camera]>.camera-monitor{width:112px;right:12px;bottom:9px}.arena[data-input=camera]>.camera-monitor .camera-preview{height:74px}.arena[data-input=camera]>.camera-monitor .monitor-toggle{font-size:10px;padding:6px 4px}.arena[data-input=camera]>.camera-monitor .monitor-toggle>svg:first-child{display:none}
  .tracking-status{left:13px;bottom:76px;max-width:calc(100% - 150px);flex-direction:column;align-items:flex-start;gap:1px;font-size:12px;line-height:1.5}
  .arena[data-input=camera] .focus-meter{left:13px;bottom:43px;transform:none;font-size:12px;letter-spacing:0;max-width:calc(100% - 150px);gap:5px}.arena[data-input=camera].ultimate-time .focus-meter{font-size:14px}
  .arena[data-input=camera] .arena-footer{bottom:10px;right:140px}.arena[data-input=camera][data-state=playing] .arena-footer>span{max-width:100%;font-size:11px}.arena[data-input=camera] .arena-footer .guide-toggle{display:none}
  .arena[data-input=mouse][data-state=playing] .arena-footer>span{display:none}.arena[data-input=mouse] .focus-meter{bottom:25px;font-size:12px}.arena[data-input=mouse].ultimate-time .focus-meter{font-size:15px}
}
@media(max-width:360px){.topbar{column-gap:6px}.level-picker>span,.speed-control>span{display:none}}

/* 首页先交代学中文；摄像头状态与隐私跟随入口。 */

.home-rule{font-size:18px;margin:0 0 22px;color:#515a4e;max-width:none}.camera-privacy{font-size:13px;font-weight:500;color:#5e6959;margin:14px 0 0}.camera-availability{font-size:12px;color:#80664c;max-width:380px;text-align:center;margin:8px 0 0}.welcome .home-meta{margin-top:17px}.button.primary:disabled{background:#deded4;color:#808579;border-color:#d1d2c7;opacity:1;transform:none}.button.primary:disabled svg{opacity:.4}.arena[data-state=idle] .arena-footer>span{visibility:hidden}
.recovery-meter{width:min(280px,100%);color:var(--gold);font-size:14px;display:flex;align-items:center;justify-content:center;gap:12px;position:relative;padding-bottom:18px}.recovery-meter>svg{width:36px;height:36px;stroke-dasharray:3 2}.recovery-meter>i{position:absolute;bottom:0;left:0;right:0;height:3px;background:#dcd8c9}.recovery-meter b{display:block;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:left}.reacquiring.opaque-screen{background:#f4f1e9e8}
@media(max-width:700px){.home-rule{font-size:16px;margin:0 0 18px;max-width:290px}.camera-privacy{font-size:12px;margin-top:13px}.camera-availability{font-size:12px;max-width:270px}.welcome{padding-bottom:12vh}.welcome .home-meta{margin-top:14px}}
@media(max-width:700px){.topbar{height:108px;min-height:108px;row-gap:10px}.brand{font-size:21px;letter-spacing:1.5px}.header-tools{display:flex;width:100%;order:2;margin:0;gap:4px;flex-wrap:nowrap}.header-tools .speed-control{order:0;margin:0;gap:5px;flex:1;justify-content:center}.speed-control>span{display:none}.speed-control input{width:60px}.header-tools>.tool-button,.header-tools>.icon-button{order:0;width:24px;height:32px;padding:3px;flex-shrink:0}.header-tools>.tool-button>svg{width:17px;height:17px}}
@media(max-width:360px){.speed-control input{width:52px}.level-picker>strong{max-width:78px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

/* 单手就位与找回：示意图、实时特征和读条共用视觉尺度。 */
.pose-hand.mirrored img{transform:rotate(-28deg) scaleX(-1)}
.ready-meter{font-size:18px;padding-top:12px}.ready-meter>i{height:5px}.pose-notes{font-size:15px}
.reacquiring.opaque-screen{gap:16px;overflow:auto;padding:28px}
.reacquiring h2{font-size:44px}.reacquiring #pause-detail{font-size:17px;max-width:580px;margin:0}
.recovery-layout{display:grid;grid-template-columns:190px minmax(0,380px);align-items:center;gap:48px;width:min(620px,100%)}
.recovery-pose{margin:0}.recovery-pose img{width:170px;height:235px;transform:rotate(28deg)}.recovery-pose figcaption{font-size:16px;color:#69705f;margin-top:12px}
#recovery-preview-slot .camera-monitor{position:static;width:100%}#recovery-preview-slot .monitor-toggle{display:none}#recovery-preview-slot .camera-preview{height:270px}
.reacquiring #recovery-feedback{font-size:18px;color:var(--ink);margin:0;min-height:27px;max-width:620px}
.recovery-meter{width:min(430px,100%);font-size:19px;padding-bottom:23px}.recovery-meter>i{height:5px}
/* 记字本复用字谱，复习动作留在字详情顶部。 */
.notebook-entry{white-space:nowrap}.notebook-entry b{font-size:11px;font-weight:500;color:var(--red);font-variant-numeric:tabular-nums}
.book-view-switch{display:flex;gap:28px;align-items:center}.book-view-switch button{font:500 28px/1.4 var(--brush);padding:0 0 8px;color:#7b8074;border-bottom:2px solid transparent;white-space:nowrap}.book-view-switch button[aria-pressed=true]{color:var(--ink);border-color:var(--red)}.book-view-switch b{font:400 13px var(--sans);margin-left:10px;color:var(--muted)}
.book-dialog[data-view=notebook] .book-preferences{justify-content:flex-end}.book-dialog[data-view=notebook] .character-grid{grid-template-columns:repeat(auto-fill,minmax(62px,1fr))}.book-dialog[data-view=notebook] .book-char{font-size:34px;min-height:60px}
.review-action{position:sticky;top:0;background:var(--paper);z-index:2;padding-bottom:10px}.review-toggle{display:flex;justify-content:center;align-items:center;gap:10px;width:100%;min-height:52px;border:1px solid var(--red);border-radius:2px;background:var(--red);color:var(--paper);font-size:17px;font-weight:500;padding:10px 16px}.review-toggle:hover{background:#963323;color:var(--paper)}.review-toggle[aria-pressed=true]{color:#586e58;border-color:#87957c;background:var(--paper)}.review-toggle[aria-pressed=true]:hover{border-color:var(--red);color:var(--red)}.review-toggle svg{width:21px;height:21px}.practice-note:empty{display:none}
.book-save-status{font-size:14px;color:var(--red);margin:12px 0 0}.book-body.empty{display:block}.book-catalog.empty{display:block;height:100%}.book-empty{padding:45px 15px;text-align:center;grid-column:1/-1}.book-empty strong{font:500 27px var(--brush);color:var(--ink)}.book-empty p{font-size:15px;margin:14px 0 25px}
@media(max-width:1100px){.header-tools>.notebook-entry>span{display:inline}}
@media(max-width:700px){
 .header-tools>.notebook-entry{width:auto;padding:3px 6px;gap:5px;font-size:12px}.header-tools>.notebook-entry>svg{display:none}.speed-control input{width:52px}
 .setup-screen{inset:18px 13px;gap:18px;padding:0 4px 15px}.pose-instructions{display:grid;grid-template-columns:120px minmax(0,1fr);gap:9px 14px;align-items:center}.pose-instructions h2{grid-column:1/-1;font-size:32px;margin:0}.pose-intro{grid-column:1/-1;font-size:14px;margin-bottom:8px}.gesture-layout{grid-row:3/5;grid-column:1;margin:0}.pose-hand img{width:120px;height:165px}.pose-hand figcaption{font-size:13px;margin-top:7px}.distance-guide{grid-column:2;flex-direction:column;gap:0;align-self:end}.distance-guide svg{width:130px;height:31px}.distance-guide strong{font-size:16px}.pose-notes{grid-column:2;font-size:12px;line-height:1.5;gap:4px;margin:0;align-self:start}.pose-notes [data-i18n=guideDistance]{display:none}
 .pose-live{max-width:420px;grid-template-columns:minmax(135px,1fr) minmax(0,1fr);gap:8px 16px}.pose-live .camera-preview{height:160px}.pose-live #ready-status{font-size:24px}.pose-live #pose-feedback{font-size:14px;line-height:1.5}.pose-live .marker-legend{display:none}.ready-meter{font-size:16px;min-height:44px}.ready-meter>i{margin-top:12px}.setup-actions{justify-content:center;margin-top:4px}
 .reacquiring.opaque-screen{padding:24px 16px;gap:15px}.reacquiring h2{font-size:33px}.reacquiring #pause-detail{font-size:14px}.recovery-layout{grid-template-columns:100px minmax(0,1fr);gap:18px;max-width:380px}.recovery-pose img{width:100px;height:138px}.recovery-pose figcaption{font-size:13px;margin-top:10px}#recovery-preview-slot .camera-preview{height:170px}.reacquiring #recovery-feedback{font-size:16px}.recovery-meter{font-size:16px;width:100%;max-width:340px}
 .book-view-switch{gap:22px}.book-view-switch button{font-size:24px;padding-bottom:6px}.book-view-switch b{font-size:12px;margin-left:6px}.review-toggle{min-height:50px;font-size:16px}.review-action{padding-bottom:6px}.book-detail{max-height:48%;min-height:165px}.book-dialog[data-view=notebook] .book-char{font-size:30px;min-height:54px}.book-empty{padding:24px 6px}.book-empty strong{font-size:24px}.book-empty p{font-size:14px}.book-body.empty .book-catalog{min-height:0}
}
@media(max-width:360px){.header-tools .speed-control{gap:3px}.speed-control input{width:44px}.header-tools>.notebook-entry{padding:3px}.setup-screen{left:8px;right:8px}.pose-instructions{grid-template-columns:110px minmax(0,1fr);gap:8px 10px}.pose-hand img{width:110px;height:152px}.distance-guide svg{width:116px}.pose-live{grid-template-columns:135px minmax(0,1fr);gap:8px 10px}.pose-live #ready-status{font-size:21px}.pose-live .camera-preview{height:150px}.reacquiring h2{font-size:29px}.recovery-layout{gap:12px}.book-view-switch{gap:15px}.book-view-switch button{font-size:22px}}
