:root{--bg:#f7f7f2;--paper:#fff;--ink:#29352c;--muted:#848b80;--line:#e6e8df;--orange:#dd693f;--orange-light:#fcf0e8;--green:#438461;--red:#c34b4b;--radius:18px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{border:0;background:none;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #edb69e;outline-offset:4px}button:disabled{opacity:.4;cursor:not-allowed}[hidden]{display:none!important}.header{border-bottom:1px solid var(--line);background:#f7f7f2e8}.header-inner{max-width:1160px;margin:auto;height:96px;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.brand{display:flex;align-items:center;gap:12px;font-weight:750;font-size:19px;letter-spacing:1px}.brand-icon{width:42px;height:42px;background:var(--orange);border-radius:12px;color:#fff;font-size:36px;line-height:42px;text-align:center}.brand small{display:block;font-size:9px;letter-spacing:2px;color:var(--muted);margin-top:4px;font-weight:500}nav{display:flex;align-self:stretch;gap:32px}.nav-button{position:relative;font-size:14px;color:var(--muted);padding:0 2px}.nav-button.active{color:var(--ink);font-weight:650}.nav-button.active:after{content:"";height:3px;width:26px;border-radius:3px;background:var(--orange);position:absolute;bottom:0;left:calc(50% - 13px)}.count{font-size:10px;background:#e9ece3;display:inline-block;min-width:18px;padding:2px 5px;border-radius:5px;margin-left:4px}.local-badge{display:flex;align-items:center;gap:7px;color:#7b8577;font-size:11px;border:1px solid var(--line);padding:8px 11px;border-radius:30px}.local-badge>span{width:6px;height:6px;border-radius:100%;background:#839d71}main{max-width:1160px;margin:auto;padding:0 24px}.intro{display:flex;align-items:center;justify-content:space-between;margin:49px 0 32px}.eyebrow{color:var(--orange);font-size:11px;font-weight:650;letter-spacing:2px;margin:0 0 12px}h1{font-size:42px;letter-spacing:-1.8px;line-height:1.3;margin:0 0 14px;font-weight:700}h1 span{color:var(--orange)}.subtitle{font-size:13px;color:var(--muted);margin:0;line-height:1.7}.intro-art{width:165px;display:flex;align-items:center;gap:10px;transform:rotate(-9deg);color:var(--orange)}.intro-art>span{font-size:85px;line-height:1}.intro-art>i{font-family:Georgia,serif;font-size:16px;max-width:48px;line-height:1.1}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:23px}.metric{padding:21px 24px;background:var(--paper);border:1px solid var(--line);border-radius:14px}.metric p{font-size:12px;color:#6e786a;margin:0 0 13px;display:flex;align-items:center;gap:7px}.metric-icon{color:var(--orange);font-size:17px;line-height:1}.metric>div{display:flex;align-items:baseline;gap:8px}.metric strong{font-size:34px;font-weight:550;font-variant-numeric:tabular-nums;letter-spacing:-1px;line-height:1.2}.metric div>span{font-size:11px;color:var(--muted)}.metric small{display:block;font-size:10px;color:#93998e;margin-top:9px}.practice-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:0 6px 18px #263e2103}.toolbar{padding:19px 27px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:15px}.segmented{background:#f2f3ee;border-radius:8px;padding:4px;display:flex;gap:3px}.segmented button{padding:7px 21px;font-size:12px;color:var(--muted);border-radius:6px}.segmented button.selected{background:white;color:var(--ink);box-shadow:0 1px 4px #19271410;font-weight:650}.time-select{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted)}.time-select>span{margin-right:9px}.time-select button{border-radius:6px;padding:6px 10px}.time-select .selected{color:var(--orange);background:var(--orange-light);font-weight:600}.lesson-header{padding:23px 30px 8px;display:flex;justify-content:space-between;align-items:center}.lesson-label{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:600}.leaf{color:var(--green);font-size:23px}.tag{font-size:9px;font-weight:400;background:#f2f4ec;color:#839274;padding:4px 8px;border-radius:4px}.text-button{font-size:11px;color:var(--muted);padding:7px}.text-button:hover{color:var(--orange)}.passage{margin:11px 30px 22px;padding:10px 0 6px;height:164px;overflow:auto;font-family:"SFMono-Regular",Consolas,"PingFang SC",monospace;font-size:23px;line-height:2;letter-spacing:2px;color:#a4aaa0;white-space:pre-wrap;overflow-wrap:anywhere;scrollbar-width:thin;scrollbar-color:#dce2d5 transparent}.passage span{position:relative}.passage .right{color:var(--green)}.passage .wrong{color:var(--red);background:#fff0ee;border-radius:3px}.passage .cursor{color:#3a4435;background:#edf1e5;border-radius:2px}.passage .cursor:before{position:absolute;content:"";width:2px;background:var(--orange);height:27px;left:-2px;top:2px;animation:blink 1.2s infinite}.input-label{display:flex;align-items:center;gap:7px;margin:0 30px 10px;font-size:11px;color:#7c8574}.status-dot{height:6px;width:6px;border-radius:100%;background:#bcc5b0}.status-dot.running{background:var(--orange)}.input-tip{margin-left:auto;color:#a0a596;font-size:10px}#typing-input{display:block;margin:0 30px;width:calc(100% - 60px);height:92px;resize:vertical;max-height:200px;min-height:80px;border:1px solid var(--line);border-radius:10px;background:#fafbf7;color:var(--ink);font-size:16px;line-height:1.8;padding:15px 17px;outline:none}#typing-input:focus{border-color:#cfb5a1;box-shadow:0 0 0 3px #f5ede6}#typing-input::placeholder{color:#afb4a7;font-size:13px}#typing-input:disabled{opacity:.75}.practice-bottom{display:flex;align-items:center;justify-content:space-between;padding:16px 30px 18px;gap:10px}.practice-bottom p{font-size:10px;color:#969d8e;margin:0}.practice-bottom p span{padding:0 7px}kbd{font-size:9px;border:1px solid #dfe4d7;border-radius:4px;padding:3px 5px;background:white}.practice-bottom>div{display:flex;align-items:center;gap:12px}.restart{font-size:11px;border:1px solid var(--line);border-radius:7px;padding:9px 14px;display:flex;gap:8px;align-items:center}.restart:hover{background:#f4f5ef}.restart span{font-size:16px;color:var(--orange)}.timer-track{height:3px;background:#f5f2eb}#timer-bar{height:100%;width:100%;background:#df7954;transition:width .15s linear}.below-practice{display:flex;align-items:center;justify-content:space-between;padding:23px 2px 29px;gap:16px}.daily{display:flex;align-items:center;gap:12px}.daily-icon{color:#b69859;font-size:28px;width:43px;height:43px;border-radius:50%;background:#f0edde;display:grid;place-items:center}.daily strong{font-size:12px;font-weight:550}.daily p{font-size:10px;color:var(--muted);margin:5px 0 0}.save-note{font-size:10px;color:#929a88}.tips-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.tips-grid article{padding:21px 23px;border:1px solid var(--line);border-radius:12px;background:#f1f3eb}.tip-number{font-family:Georgia,serif;font-style:italic;color:#a4b291;font-size:19px}.tips-grid h3{margin:10px 0 8px;font-size:12px;font-weight:600}.tips-grid p{margin:0;color:var(--muted);font-size:11px;line-height:1.9}footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:42px;padding:24px 0;color:#979f8e;font-size:10px}footer>span{font-weight:600;color:#7c8870}footer p{margin:0}footer button{font-size:10px;color:var(--muted)}.primary{background:var(--orange);color:#fff;border-radius:8px;padding:12px 21px;font-size:12px;font-weight:550}.primary:hover{background:#c85b34}.secondary{border:1px solid #dfe4d8;background:#fff;padding:10px 16px;font-size:11px;border-radius:8px}.secondary:hover{background:#f1f4eb}.history-card{background:white;border:1px solid var(--line);border-radius:16px;padding:25px;margin-bottom:20px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.section-heading h2{margin:0 0 7px;font-size:16px}.section-heading p{font-size:10px;color:var(--muted);margin:0}.section-heading select{background:#f7f9f3;border:1px solid var(--line);border-radius:7px;padding:8px 11px;color:#66725b;font-size:11px}.chart{margin-top:22px;min-height:175px}.chart svg{width:100%;height:190px;display:block;overflow:visible}.chart-empty{display:flex;align-items:center;justify-content:center;min-height:175px;color:var(--muted);font-size:12px;background:#fafbf7;border-radius:10px}.table-scroll{overflow:auto;margin-top:23px}table{border-collapse:collapse;width:100%;text-align:left;font-size:12px;white-space:nowrap}th{color:#8a9380;background:#f8faf4;font-size:10px;font-weight:500;padding:12px}td{padding:16px 12px;border-bottom:1px solid #f0f1eb;color:#617054}td strong{color:var(--ink);font-size:13px}td small{display:block;margin-top:5px;color:var(--muted);font-size:10px}.delete-record{color:#a1a997;font-size:11px;padding:6px}.delete-record:hover,.danger{color:var(--red)}.empty-state{text-align:center;padding:35px 10px}.empty-state>span{font-size:46px;color:#b9c6a6}.empty-state h3{font-size:15px;font-weight:550}.empty-state p{font-size:12px;color:var(--muted);margin-bottom:22px}.data-actions{display:flex;justify-content:space-between;gap:12px;align-items:center}.data-actions>div{display:flex;gap:8px;flex-wrap:wrap}.storage-note{font-size:11px;color:var(--muted);line-height:1.9;margin:18px 0}.records-card #load-more{display:block;margin:20px auto 0}dialog{border:1px solid var(--line);border-radius:20px;padding:35px;max-width:530px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 20px 80px #24351c22}dialog::backdrop{background:#25332455;backdrop-filter:blur(4px)}dialog h2{font-size:24px;margin:0 0 17px}.dialog-close{position:absolute;right:15px;top:10px;font-size:25px;color:var(--muted);padding:4px 10px}.result-dialog{text-align:center;padding:35px 30px}.result-flower{display:block;font-size:63px;line-height:1.2;color:var(--orange);margin-bottom:20px}.result-dialog .eyebrow{font-size:10px}.result-dialog>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.7}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);background:#f6f8f1;border-radius:10px;padding:23px 8px;margin:22px 0}.result-stats>div{display:flex;flex-direction:column;gap:9px}.result-stats strong{font-size:28px;font-weight:550;color:var(--ink)}.result-stats span{font-size:10px;color:var(--muted)}.dialog-actions{display:flex;gap:10px;justify-content:center;margin-top:24px}#custom-dialog label{display:block;font-size:12px;color:var(--muted);margin:18px 0 10px}#custom-text{width:100%;height:170px;padding:13px;resize:vertical;border:1px solid var(--line);border-radius:8px;font-size:14px;line-height:1.8;outline-color:var(--orange)}.small-note{color:var(--muted);font-size:11px;line-height:1.9}.error{font-size:12px;color:var(--red);min-height:17px}.help-list{padding-left:20px;font-size:12px;line-height:1.9;color:#69765e}.help-list li{padding-bottom:12px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:10;background:#34432d;color:white;padding:14px 22px;border-radius:10px;font-size:12px;max-width:90vw;text-align:center;box-shadow:0 5px 20px #0002}.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}@keyframes blink{50%{opacity:.15}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(min-width:1400px){.intro{margin-top:60px}.passage{height:181px}}@media(max-width:800px){.header-inner{height:80px}.local-badge{display:none}nav{gap:24px}.metrics{gap:10px}.metric{padding:17px 15px}.metric strong{font-size:30px}.metric small{font-size:9px}.metric>div{gap:5px}.metric div>span{font-size:9px}.intro-art{width:130px}.passage{font-size:21px}.tips-grid{gap:12px}.tips-grid article{padding:17px}.history-metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){main{padding:0 16px}.header-inner{padding:0 16px;height:75px}.brand{font-size:16px;gap:8px}.brand-icon{width:34px;height:34px;font-size:29px;line-height:34px;border-radius:9px}.brand small{font-size:7px;letter-spacing:1.5px}nav{gap:16px}.nav-button{font-size:12px}.count{font-size:9px;padding:2px 3px}.intro{margin:31px 0 25px}.intro-art{width:64px}.intro-art>span{font-size:60px}.intro-art>i{display:none}h1{font-size:32px;letter-spacing:-1px}.eyebrow{font-size:9px;letter-spacing:1px}.subtitle{font-size:11px}.metrics{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:17px}.metric{padding:16px 18px}.metric strong{font-size:29px}.metric p{font-size:11px;margin-bottom:9px}.metric small{font-size:9px}.metric div>span{font-size:10px}.toolbar{padding:13px 15px;flex-wrap:wrap;gap:11px}.segmented button{padding:7px 16px}.time-select{gap:8px;flex:1;justify-content:flex-end}.time-select>span{display:none}.time-select button{padding:6px 9px}.lesson-header{padding:17px 18px 6px}.lesson-label{gap:6px}.passage{margin:10px 18px 20px;font-size:20px;line-height:2;height:168px;letter-spacing:1px}.input-label{margin:0 18px 10px;font-size:10px}.input-tip{font-size:9px}#typing-input{margin:0 18px;width:calc(100% - 36px);height:100px;padding:12px;font-size:16px}.practice-bottom{padding:15px 18px;flex-wrap:wrap;gap:15px}.practice-bottom>div{margin-left:auto}.practice-bottom p{font-size:9px}.below-practice{padding:18px 0 23px;flex-wrap:wrap;gap:14px}.daily strong{font-size:11px}.save-note{margin-left:55px;font-size:9px}.tips-grid{grid-template-columns:1fr}.tips-grid article{padding:17px 18px;display:grid;grid-template-columns:30px 1fr;gap:4px 12px}.tips-grid h3{margin:3px 0 6px}.tips-grid p{grid-column:2}.tip-number{grid-row:span 2}.history-intro{align-items:flex-start;gap:10px}.history-intro h1{font-size:28px}.history-intro .primary{padding:10px;font-size:10px;white-space:nowrap;margin-top:30px}.history-card{padding:18px}.section-heading select{font-size:10px;padding:7px}.section-heading h2{font-size:14px}.section-heading p{font-size:9px;line-height:1.5}.data-actions{align-items:flex-start}.data-actions .secondary{font-size:10px;padding:9px 10px}.data-actions>.text-button{white-space:nowrap}.storage-note{font-size:10px}footer{margin-top:28px;padding:20px 0}footer p{font-size:9px}dialog{padding:30px 22px}}

/* Chinese curriculum practice v2 */
.header-inner{max-width:1200px;gap:20px}main{max-width:1200px}nav{gap:25px}.account{font-size:11px;padding:9px 12px;border-radius:24px;border:1px solid var(--line);background:#ecefe5;max-width:155px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.growth{display:flex;align-items:center;gap:13px}.growth>span{font-size:70px;color:var(--orange);transform:rotate(-10deg)}.growth strong,.growth small{display:block}.growth strong{font-size:18px;font-weight:550}.growth small{font-size:10px;color:var(--muted);margin-top:6px}.mode-switch{display:flex;gap:9px;margin-bottom:17px}.mode-switch button{background:white;border:1px solid var(--line);padding:12px 23px;font-size:12px;border-radius:8px;color:var(--muted)}.mode-switch .selected{background:var(--ink);color:white;border-color:var(--ink)}#daily-toolbar,#level-toolbar{display:flex;gap:13px;align-items:center;font-size:11px}select{border:1px solid var(--line);border-radius:7px;padding:8px 10px;background:#f8faf4;color:#68775e;font-size:11px}.untimed{font-size:10px;color:var(--muted);white-space:nowrap}.level-badge{padding:6px 9px;border-radius:5px;background:var(--orange-light);color:var(--orange)}.lesson-head{margin:24px 30px 13px;display:flex;align-items:center;justify-content:space-between}.lesson-head .eyebrow{font-size:9px;color:#7f916e;margin-bottom:8px}.lesson-head h2{margin:0;font-size:19px;font-weight:600}.lesson-head>span{font-size:11px;color:var(--muted)}.legend{display:flex;gap:16px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:10px}.practice-card>.legend{margin:0 30px 13px}.legend .green-dot:before,.legend .red-dot:before,.legend .blue-dot:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px}.green-dot:before{background:#237c4d}.red-dot:before{background:#c43a43}.blue-dot:before{background:#3478c0}#source-note{margin-left:auto;font-size:9px}.passage{height:auto;min-height:90px;max-height:220px;margin:0 30px 23px;font-size:25px;line-height:1.95}.passage .right{color:#237c4d;background:#e6f4e9;border-radius:3px}.passage .wrong{color:#c43a43;background:#ffe2e5;text-decoration:underline wavy;text-underline-offset:5px}.passage .cursor{color:#3478c0;background:#e3efff;border-bottom:2px solid #3478c0}.passage .cursor:before{display:none}.input-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 30px 10px;font-size:11px;color:#798771}.input-head>span{font-size:9px;color:var(--muted)}.typing-wrap{position:relative;margin:0 30px;border:1px solid var(--line);border-radius:10px;background:#fafcf7;overflow:hidden}.typing-wrap:focus-within{border-color:#a6b99b;box-shadow:0 0 0 3px #eff3e9}.typing-wrap #typing-input,.typing-wrap pre{font-family:inherit;font-size:18px;line-height:1.8;letter-spacing:.5px;white-space:pre-wrap;overflow-wrap:anywhere;padding:15px 17px;border:0;border-radius:0;margin:0;width:100%;height:140px;box-sizing:border-box}.typing-wrap pre{position:absolute;inset:0;pointer-events:none;overflow:hidden}.typing-wrap #typing-input{display:block;resize:none;background:transparent;color:transparent;caret-color:var(--ink);outline:none;position:relative;z-index:1;box-shadow:none;min-height:140px}.typing-wrap #typing-input::placeholder{color:#a8b19f;font-size:13px}.typing-wrap .right{color:#237c4d}.typing-wrap .wrong{color:#c43a43;background:#ffdfe3;text-decoration:underline wavy;text-underline-offset:3px}.typing-wrap .pending{color:#3478c0;background:#e3efff}.input-actions{display:flex;justify-content:space-between;align-items:center;gap:13px;margin:17px 30px 22px}.input-actions p{font-size:10px;color:var(--muted);margin:0;line-height:1.8}.input-actions>div{display:flex;align-items:center;gap:8px}.live-metrics{display:grid;grid-template-columns:repeat(5,1fr);background:#f6f8f1;border-top:1px solid var(--line);padding:22px 30px;gap:16px}.live-metrics>div>span{display:block;font-size:10px;color:var(--muted);margin-bottom:9px}.live-metrics strong{font-size:27px;font-weight:550;font-variant-numeric:tabular-nums}.live-metrics small{font-size:10px;color:var(--muted);margin-left:5px}.progress-track{height:4px;background:#edf1e6}#progress-bar{height:100%;width:0;background:#438461;transition:width .2s}.save-line{display:flex;justify-content:space-between;gap:10px;padding:12px 30px;font-size:9px;color:#859276}.recent-block{margin:25px 0}.recent-list{margin-top:15px}.recent-row{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line);font-size:11px;gap:15px}.recent-row small{display:block;color:var(--muted);font-size:9px;margin-top:5px}.recent-row strong{font-size:13px}.empty-inline{font-size:12px;color:var(--muted);text-align:center;padding:26px;background:#f0f3e9;border-radius:10px}.muted{font-size:11px;color:var(--muted);line-height:1.9}.progress-summary{text-align:center;border:1px solid var(--line);border-radius:12px;padding:19px 23px;background:white;white-space:nowrap}.progress-summary strong{font-size:25px;font-weight:550}.progress-summary span{display:block;font-size:10px;color:var(--muted);margin-top:6px}.map-controls{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:20px 0}.grade-section{margin:28px 0}.grade-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.grade-heading h2{font-size:16px;margin:0}.grade-heading p{font-size:10px;color:var(--muted);margin:7px 0 0}.grade-heading>span{font-size:10px;color:var(--muted)}.grade-levels{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.level-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;border:1px solid var(--line);border-radius:11px;background:white;padding:17px;text-align:left;min-height:115px;gap:10px}.level-tile .number{font-size:10px;color:var(--muted)}.level-tile strong{font-size:13px;font-weight:550}.level-tile small{font-size:9px;color:var(--muted)}.level-tile.passed{border-color:#a6c9a7;background:#f0f8ed}.level-tile.available{border-color:#d8ab92;background:#fcf4ee}.level-tile.locked{background:#f0f2ec;color:#a1a897}.tile-status{position:absolute;top:14px;right:14px;font-size:11px;color:var(--green)}.summary-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin:25px 0}.summary-card{background:white;border:1px solid var(--line);border-radius:12px;padding:20px}.summary-card span{font-size:11px;color:var(--muted)}.summary-card strong{display:block;font-size:28px;font-weight:550;margin-top:12px}.summary-card small{display:block;font-size:10px;color:var(--muted);margin-top:8px}.panel{background:white;border:1px solid var(--line);border-radius:15px;padding:25px;margin-bottom:20px}.section-heading h2{font-size:15px}.pagination{display:flex;align-items:center;justify-content:center;gap:15px;font-size:10px;color:var(--muted);margin-top:21px}.admin-filters{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.admin-filters input{max-width:190px;border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:11px;background:#fafbf7}.status-pill{display:inline-block;background:#edf2e6;padding:5px 7px;border-radius:5px;font-size:9px}.status-pill.passed,.status-pill.completed{color:var(--green);background:#e6f4e5}.status-pill.stopped{color:#9b7968;background:#f6eeea}dialog .close{position:absolute;right:12px;top:8px;font-size:27px;color:var(--muted);padding:3px 8px}dialog label{display:block;font-size:12px;color:#798671;margin:18px 0 9px}dialog input,dialog textarea{display:block;width:100%;margin-top:8px;border:1px solid var(--line);border-radius:8px;background:#fafbf7;padding:12px;font-size:14px;outline-color:#cbb6a1}dialog textarea{resize:vertical;line-height:1.8}dialog .error{min-height:17px;line-height:1.6}.result{text-align:center}.flower{display:block;font-size:58px;color:var(--orange);margin-bottom:19px}#created-user-credentials{padding:17px;border-radius:9px;background:#f1f5e9;font-size:14px;white-space:pre-wrap}dialog ol{font-size:12px;line-height:1.9;color:#718263;padding-left:18px}dialog li{margin-bottom:11px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:90vw;background:#33462b;color:white;border-radius:10px;padding:14px 21px;font-size:12px;z-index:20;text-align:center;box-shadow:0 5px 20px #0002}
@media(forced-colors:active){.typing-wrap #typing-input{color:CanvasText}.typing-wrap pre{display:none}}@media(max-width:900px){.grade-levels{grid-template-columns:repeat(4,1fr)}.growth{display:none}nav{gap:17px}.live-metrics strong{font-size:24px}}@media(max-width:650px){.header-inner{min-height:105px;height:auto;padding:0 16px;flex-wrap:wrap;gap:0}.brand{font-size:16px;margin:14px 0 9px}.account{margin:14px 0 9px;font-size:10px}nav{order:3;width:100%;height:38px;gap:24px}.nav-button{font-size:11px}.toolbar{padding:16px 18px;flex-wrap:wrap;gap:13px}.untimed{margin-left:auto;font-size:9px}#daily-toolbar,#level-toolbar{gap:9px;flex-wrap:wrap;font-size:10px}.lesson-head{margin:21px 18px 13px}.lesson-head h2{font-size:17px}.practice-card>.legend{margin:0 18px 10px;gap:12px;font-size:9px}#source-note{width:100%;margin:0;line-height:1.6}.passage{margin:0 18px 20px;font-size:22px;line-height:2;letter-spacing:1px}.input-head{margin:0 18px 10px;align-items:flex-start;flex-direction:column;gap:6px;font-size:10px}.typing-wrap{margin:0 18px}.typing-wrap #typing-input,.typing-wrap pre{font-size:17px;padding:13px}.input-actions{margin:15px 18px 18px;flex-wrap:wrap}.input-actions p{font-size:9px}.input-actions>div{margin-left:auto}.input-actions .secondary{font-size:10px;padding:8px 12px}.live-metrics{grid-template-columns:repeat(3,1fr);padding:18px;gap:20px 12px}.live-metrics strong{font-size:25px}.live-metrics>div>span{font-size:9px}.save-line{font-size:8px;padding:12px 18px;line-height:1.8}.grade-levels{grid-template-columns:repeat(2,1fr);gap:10px}.progress-summary{padding:14px 12px}.progress-summary strong{font-size:20px}.map-controls{flex-direction:column;align-items:flex-start}.summary-metrics{grid-template-columns:repeat(2,1fr);gap:10px}.summary-card{padding:17px}.panel{padding:18px}.admin-filters input,.admin-filters select{flex:1;min-width:125px;font-size:10px}.intro>.primary,.intro>.secondary{font-size:10px;padding:10px 12px}.recent-row{font-size:10px;padding:13px 7px}}

/* Separate reference and input panels; the page is the only scroll surface. */
html,body,.table-scroll,dialog,#custom-text{scrollbar-width:none}
html::-webkit-scrollbar,body::-webkit-scrollbar,.table-scroll::-webkit-scrollbar,dialog::-webkit-scrollbar,#custom-text::-webkit-scrollbar{display:none}
.header-inner{height:72px}
#practice-view>.intro{margin:24px 0 18px}
#practice-view>.intro .eyebrow{display:none}
#practice-view h1{font-size:28px;letter-spacing:-.8px;margin-bottom:7px}
#practice-view .growth>span{display:none}
#practice-view .growth strong{font-size:23px}
#practice-view .mode-switch{margin-bottom:15px}
.toolbar{padding:14px 24px}
.practice-options{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.pinyin-toggle{border:1px solid #d8dfcf;background:#f2f6eb;border-radius:20px;padding:7px 11px;font-size:11px;color:#5f7651;white-space:nowrap}
.pinyin-toggle[aria-pressed=false]{background:#fafbf7;color:var(--muted)}
.lesson-head{margin:19px 24px 11px}
.practice-card>.legend{margin:0 24px 16px}
.practice-workspace{margin:0 24px;max-height:none;overflow:visible;display:block}
.reference-zone,.input-zone{min-width:0}
.zone-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 10px;font-size:11px;color:#6e7f62}
.zone-heading small{font-size:9px;color:var(--muted)}
.reference-zone{border:1px solid #e1e6d9;border-radius:12px;background:#f6f8f1;padding:15px 18px}
.reference-zone .zone-heading{margin-bottom:8px}
.input-zone{margin-top:24px}
.practice-workspace .passage,.practice-workspace .typing-wrap #typing-input,.practice-workspace .typing-wrap pre{font-family:inherit;font-size:22px;letter-spacing:5px;font-kerning:none;white-space:pre-wrap;word-break:break-all;line-break:anywhere;overflow-wrap:anywhere;text-align:left}
.practice-workspace .passage{margin:0;padding:14px 0 0;line-height:2.35;min-height:0;max-height:none;height:auto;overflow:visible;width:100%}
.passage .glyph{display:inline-block;line-height:1.25;vertical-align:baseline}
.passage ruby{display:inline-block;position:relative;line-height:1.25;ruby-align:center}
.passage rb{display:inline;letter-spacing:inherit}
.passage rt{display:block;position:absolute;bottom:calc(100% + 2px);left:calc(50% - 2.5px);transform:translateX(-50%);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:10.5px;line-height:1.15;letter-spacing:0;color:#859278;font-weight:400;white-space:nowrap;pointer-events:none}
.passage rt.long-reading{font-size:9.5px}
.passage .wrong rt{color:#c43a43}.passage .cursor rt{color:#3478c0}
.passage.pinyin-hidden rt{visibility:hidden}
.practice-workspace .typing-wrap{position:relative;inset:auto;margin:0;border:1px solid var(--line);border-radius:12px;min-height:150px;background:#fff;overflow:hidden}
.practice-workspace .typing-wrap #typing-input,.practice-workspace .typing-wrap pre{padding:15px 18px;line-height:1.9}
.practice-workspace .typing-wrap #typing-input{height:auto;min-height:150px;max-height:none;overflow:hidden;resize:none;caret-color:transparent}
.practice-workspace .typing-wrap pre{height:100%;overflow:hidden}
.input-caret{display:inline-block;width:0;height:1em;border-left:2px solid var(--ink);margin-left:-2px;vertical-align:-.1em;letter-spacing:0;animation:blink 1.2s infinite}
.typing-wrap:has(#typing-input:disabled) .input-caret{display:none}
.input-actions{margin:15px 24px 18px}
@media(max-width:650px){
.header-inner{min-height:99px;height:auto}
#practice-view>.intro{margin:21px 0 15px}
#practice-view h1{font-size:25px}
.toolbar{padding:13px 16px;gap:12px}
.practice-options{width:100%;justify-content:space-between;gap:10px}
.lesson-head{margin:17px 16px 12px}.practice-card>.legend{margin:0 16px 17px}
.practice-workspace{margin:0 14px}
.reference-zone{padding:14px 11px}
.input-zone{margin-top:22px}
.zone-heading{font-size:10px;gap:8px;align-items:flex-start}.zone-heading small{font-size:8px;line-height:1.6;text-align:right}
.practice-workspace .passage,.practice-workspace .typing-wrap #typing-input,.practice-workspace .typing-wrap pre{font-size:20px;letter-spacing:5px}
.practice-workspace .typing-wrap #typing-input,.practice-workspace .typing-wrap pre{padding:14px 11px}
.input-actions{margin:14px 16px 18px}
.practice-workspace .typing-wrap #typing-input::placeholder{font-size:12px;letter-spacing:0}
}

/* Readable contrast and persistent sizing; preserve the two separate panels. */
.passage .glyph{color:#56634f}
.passage .glyph.right{color:#28673d}.passage .glyph.wrong{color:#a62832}.passage .glyph.cursor{color:#245d91}
.passage rt{font-size:13px;color:#55664b}
.passage rt.long-reading{font-size:12px}
.passage .wrong rt{color:#a62832}.passage .cursor rt{color:#245d91}
.practice-workspace .passage,.practice-workspace .typing-wrap #typing-input,.practice-workspace .typing-wrap pre{font-size:24px;letter-spacing:8px}
.practice-workspace .passage{line-height:2.45}
.font-control{display:flex;align-items:center;gap:6px;font-size:11px;color:#53634b}
.font-control select{padding:5px 8px;min-width:0}
.time-warning{color:#a62832!important;font-weight:700}




.status-pill.timed_out{background:#fbe8e7;color:#a62832}
.admin-actions{display:flex;gap:8px;flex-wrap:wrap}.admin-actions .text-button{white-space:nowrap}
:root[data-text-size=large] .practice-workspace .passage,:root[data-text-size=large] .practice-workspace .typing-wrap #typing-input,:root[data-text-size=large] .practice-workspace .typing-wrap pre{font-size:28px;letter-spacing:9px}
:root[data-text-size=large] .passage rt{font-size:14px}
#conflict-dialog textarea{font-size:14px;letter-spacing:0}
@media(max-width:650px){.practice-options{gap:9px}.practice-workspace .passage,.practice-workspace .typing-wrap #typing-input,.practice-workspace .typing-wrap pre{font-size:22px;letter-spacing:8px}.zone-heading small{font-size:10px}.untimed{font-size:11px;width:100%;margin:0}.grade-levels{grid-template-columns:repeat(2,minmax(0,1fr))}.level-tile strong{overflow-wrap:anywhere}}
.level-tile.locked:disabled{opacity:1;color:#5d6954;background:#f0f2ec}
.level-tile .number,.level-tile small{color:#5d6954}
.level-tile small{font-size:11px;line-height:1.6}

/* Pinyin is opt-in for each page visit; small type applies to both panels. */
.practice-workspace .passage.pinyin-hidden{line-height:1.9;padding-top:0}
:root[data-text-size=small] .practice-workspace .passage,:root[data-text-size=small] .practice-workspace .typing-wrap #typing-input,:root[data-text-size=small] .practice-workspace .typing-wrap pre{font-size:20px;letter-spacing:6px}
:root[data-text-size=small] .passage rt{font-size:11.5px}
:root[data-text-size=small] .passage rt.long-reading{font-size:10.5px}
@media(max-width:650px){:root[data-text-size=small] .practice-workspace .passage,:root[data-text-size=small] .practice-workspace .typing-wrap #typing-input,:root[data-text-size=small] .practice-workspace .typing-wrap pre{font-size:18px;letter-spacing:6px}}

/* Shared column tracks keep every recent record aligned, including longer titles. */
.recent-row{display:grid;grid-template-columns:minmax(0,1fr) 120px 100px 100px;column-gap:20px;align-items:center}
.recent-title{min-width:0;overflow-wrap:anywhere;line-height:1.7}
.recent-speed,.recent-accuracy,.recent-status{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:650px){.recent-row{grid-template-columns:minmax(0,1fr) 65px 55px 64px;column-gap:8px}}
