:root{--paper:#f6f4ed;--sheet:#fffef9;--ink:#233d35;--muted:#5d6d64;--green:#22624b;--green-hover:#184e3b;--green-soft:#e4eee2;--line:#dce1d6;--red:#a13d31;--red-soft:#f8e7df;--amber:#805d25;--amber-soft:#f7edda;--font:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--chinese:"PingFang SC","Noto Sans CJK SC","Microsoft YaHei",sans-serif;--shadow:0 8px 28px #233d350a;--radius:16px;--sidebar:238px;color-scheme:light;font-family:var(--font);font-size:16px;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{margin:0;min-width:280px;overflow-x:clip;line-height:1.55}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:var(--green);text-decoration-thickness:1px;text-underline-offset:4px}button:disabled{cursor:default;opacity:.5}button,input,select,textarea{caret-color:var(--green)}::selection{background:#d7e7d4;color:var(--ink)}:focus-visible{outline:3px solid #407b60;outline-offset:4px;transition:none}button:focus-visible{outline-offset:3px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:600;line-height:1.25;text-wrap:balance}h1{font-size:2rem;letter-spacing:-.035em;margin-bottom:12px}h2{font-size:1.375rem;letter-spacing:-.02em;margin-bottom:14px}h3{font-size:1rem;margin-bottom:10px}p{margin-bottom:16px;max-width:72ch}small{font-size:.8rem}svg{flex-shrink:0;vertical-align:middle}button{color:var(--ink)}[hidden]{display:none!important}.muted,.hint{color:var(--muted)}.hint{font-size:.85rem;line-height:1.5}.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}.skip-link{position:fixed;left:12px;top:-100px;background:var(--sheet);padding:12px 18px;z-index:100}.skip-link:focus{top:12px}.boot{max-width:600px;margin:15vh auto;text-align:center;padding:32px}.boot .brand-mark{margin:0 auto 24px}.boot p{margin-inline:auto}
.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;border:1px solid transparent;border-radius:10px;padding:12px 20px;text-decoration:none;font-weight:550;line-height:1.3;background:var(--green);color:#fff;transition:background .17s ease,color .17s ease,border-color .17s ease,transform .17s ease;max-width:100%}.button:hover:not(:disabled){background:var(--green-hover)}.button:active:not(:disabled){transform:translateY(1px)}.button.secondary{background:var(--green-soft);color:var(--green)}.button.secondary:hover:not(:disabled){background:#d7e6d2}.button.subtle{background:transparent;border-color:var(--line);color:var(--ink)}.button.subtle:hover:not(:disabled){background:#eeeee5;border-color:#c2cdbe}.button.danger{background:var(--red);color:white}.button.danger:hover:not(:disabled){background:#863126}.button.small{min-height:42px;padding:10px 14px;font-size:.875rem;gap:8px}.button.wide{width:100%}.text-button{background:none;border:0;padding:12px 0;color:var(--green);text-decoration:underline;text-underline-offset:4px;min-height:44px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:0;border-radius:10px;background:transparent;color:var(--green);text-decoration:none}.icon-button:hover{background:var(--green-soft)}.inline-link{display:inline-flex;gap:8px;align-items:center;font-size:.875rem;font-weight:550;text-decoration:none;min-height:40px}.inline-link:hover{text-decoration:underline}.action-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.notice,.save-warning{padding:16px 20px;border-radius:10px;background:var(--amber-soft);color:var(--amber)}.save-warning{margin:16px 40px 0;border-radius:8px;font-size:.875rem}.form-error{color:var(--red);font-size:.9rem;min-height:0;white-space:pre-wrap}.form-error:empty{display:none}.correct-text{color:var(--green)}.incorrect-text{color:var(--red)}label{display:block;font-size:.9rem;font-weight:550;margin-bottom:8px}input[type=text],input[type=search],input[type=password],input:not([type]),input[inputmode],select,textarea{width:100%;border:1px solid #c5cfc1;border-radius:9px;padding:12px 14px;background:var(--sheet);color:var(--ink);min-height:48px}input::placeholder,textarea::placeholder{color:#6c776e;opacity:1}select{appearance:none;padding-inline-end:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='m3.5 6 4.5 4.5L12.5 6' stroke='%23233d35' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 14px center;background-size:16px 16px;background-repeat:no-repeat}
@media(forced-colors:active){select{appearance:auto;background-image:none;padding-inline-end:32px}}
.teacher-retry{align-self:flex-start;margin:0 20px 12px}textarea{resize:vertical;line-height:1.5}input[type=checkbox],input[type=radio]{accent-color:var(--green);width:19px;height:19px;flex-shrink:0}.check-label{display:flex;align-items:center;gap:10px;font-weight:400;min-height:36px}.hanzi{font-family:var(--chinese);line-height:1.65;word-break:break-word}.pinyin{color:var(--muted);font-size:1rem;letter-spacing:.02em}.big-word{font-size:4.5rem;line-height:1.5;display:block}.large-pinyin{font-size:1.25rem}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);font-size:1.3rem;font-weight:650;letter-spacing:-.025em}.brand small{display:block;font-size:.75rem;color:var(--muted);font-weight:400;letter-spacing:0;margin-top:1px}.brand-mark{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:14px;background:var(--green);color:var(--sheet);font-family:var(--chinese);font-size:29px;line-height:1;flex-shrink:0}.small-mark{width:32px;height:32px;border-radius:10px;font-size:23px}
.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);padding:32px 24px 24px;background:#eeeee5;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:20}.sidebar .brand{margin:0 0 42px 5px}.sidebar nav{display:flex;flex-direction:column;gap:8px}.nav-link{display:flex;align-items:center;gap:13px;min-height:48px;padding:12px 16px;border-radius:10px;font-size:.95rem;color:#526259;text-decoration:none;font-weight:500}.nav-link:hover{background:#e4e7db;color:var(--ink)}.nav-link.active{background:var(--green);color:var(--sheet)}.sidebar-bottom{margin-top:auto;padding-top:40px}.sidebar-thought{font-size:.85rem;color:var(--muted);padding:0 14px 26px;margin:0}.profile-link{display:flex;align-items:center;gap:10px;padding:16px 2px 0;border-top:1px solid #d5dccd;text-decoration:none;color:var(--ink)}.profile-link>span:nth-child(2){flex:1;line-height:1.4;font-size:.9rem}.profile-link small{display:block;color:var(--muted);font-size:.7rem}.profile-avatar{width:37px;height:37px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#dce5d4;color:var(--green);font-weight:600}.app-body{margin-left:var(--sidebar)}.topbar{height:90px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 40px;border-bottom:1px solid var(--line)}.breadcrumbs{font-size:.9rem;color:var(--muted)}.topbar-actions{display:flex;align-items:center;gap:12px}.sync-button{display:flex;align-items:center;gap:8px;border:0;padding:10px 0;color:var(--muted);background:transparent;font-size:.75rem;min-height:42px}.sync-button:hover{color:var(--green)}.mobile-brand,.mobile-profile,.mobile-nav{display:none}#main{padding:38px 40px 64px;max-width:1450px;margin:0 auto;min-height:70vh}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:30px}.page-heading>div{min-width:0}.page-heading p{color:var(--muted);margin:0;font-size:.95rem}.page-heading>.button{flex-shrink:0}.section{margin-top:38px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.section-heading h2{margin:0}.section-heading .muted{font-size:.85rem}
.today-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:26px}.today-feature{display:flex;gap:12px;align-items:center;background:#e6edde;border-radius:var(--radius);padding:34px;min-height:300px}.feature-copy{flex:1;min-width:0}.lesson-meta{display:flex;gap:8px;align-items:center;color:var(--green);font-size:.8rem;margin-bottom:18px}.today-feature h2{font-size:1.8rem;margin-bottom:12px;max-width:18ch}.today-feature p{font-size:.9rem;color:#4b6453;max-width:34ch;margin-bottom:24px}.today-feature .inline-link{display:flex;width:fit-content;margin-top:12px}.feature-character{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#386747;width:110px}.feature-character>span:first-child{font-family:var(--chinese);font-size:90px;line-height:1.3}.feature-character>span:nth-child(2){font-size:1.05rem;margin-top:6px}.feature-character small{margin-top:2px;color:#596f5c}.today-review{padding:6px 0}.today-review>h2{font-size:1.1rem}.review-line{display:flex;gap:12px;margin-top:20px}.review-line>span{color:var(--green);padding-top:3px}.review-line strong{font-size:.95rem;font-weight:550}.review-line p{color:var(--muted);font-size:.8rem;line-height:1.55;margin:3px 0 10px}.today-review>.button{margin-left:34px}.topic-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.topic-tile{display:flex;gap:12px;align-items:center;background:var(--sheet);border:1px solid var(--line);padding:16px;border-radius:12px;text-align:left;min-height:78px}.topic-tile>span:nth-child(2){flex:1;font-size:.9rem;font-weight:500}.topic-tile>svg{color:var(--muted)}.topic-tile:hover{border-color:#91ad8a;background:#fdfef7}.topic-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--green);width:40px;min-height:40px}.teacher-banner{display:flex;align-items:center;gap:22px;padding:28px 30px;margin-top:34px;border-top:1px solid #d7decf;border-bottom:1px solid #d7decf}.teacher-monogram{width:60px;height:60px;flex-shrink:0;border-radius:50%;background:#eadcc2;color:#6c593e;font-family:var(--chinese);font-size:31px;display:flex;align-items:center;justify-content:center}.teacher-banner>div:nth-child(2){flex:1}.teacher-banner h2{font-size:1.15rem;margin-bottom:6px}.teacher-banner p{font-size:.85rem;color:var(--muted);margin-bottom:0;max-width:58ch}.teacher-banner .ai-status{font-size:.75rem;margin-top:8px}.progress-summary{padding-top:4px}.progress-summary>h2{font-size:1.05rem}.progress-summary dl{display:flex;gap:36px;margin:22px 0 18px}.progress-summary dl>div{min-width:115px}.progress-summary dt{font-size:.8rem;color:var(--muted);margin-bottom:5px}.progress-summary dd{margin:0;font-size:1.6rem;font-weight:550;font-variant-numeric:tabular-nums}.progress-summary dd span{color:#82917f;font-size:1rem;font-weight:400}
.segmented{display:inline-flex;border:1px solid #cdd6c6;border-radius:10px;background:#eeeee5;padding:4px;gap:3px;margin-bottom:32px}.segmented a{padding:10px 20px;min-height:42px;text-decoration:none;border-radius:7px;color:var(--muted);font-size:.9rem}.segmented a.selected{background:var(--sheet);color:var(--ink);box-shadow:0 2px 6px #233d3508;font-weight:550}.path-layout{display:grid;grid-template-columns:minmax(0,1fr) 245px;gap:32px}.path-stage{margin-bottom:38px}.stage-heading h2{font-size:1.1rem;margin-bottom:18px}.lesson-row{display:flex;align-items:center;gap:16px;width:100%;padding:18px 0;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;min-height:98px}.lesson-row:hover{background:#eeeee54d}.lesson-number{width:43px;height:43px;border:1px solid #bfcdb7;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#506e4d;font-size:.9rem}.is-complete .lesson-number{background:var(--green-soft);color:var(--green);border-color:transparent}.lesson-title{flex:1;min-width:0}.lesson-title strong{display:block;font-size:1rem;font-weight:550;margin-bottom:6px}.lesson-title>span{display:block;color:var(--muted);font-size:.8rem;line-height:1.5}.lesson-duration{display:flex;align-items:center;gap:14px;font-size:.75rem;color:var(--muted);flex-shrink:0}.path-note{align-self:start;background:#eceee1;padding:26px;border-radius:var(--radius);position:sticky;top:22px}.note-icon{display:block;color:var(--green);margin-bottom:20px}.path-note h2{font-size:1.15rem}.path-note p{font-size:.85rem;color:var(--muted);line-height:1.65}.path-note .inline-link{font-size:.8rem}.topics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}.topic-section{padding:12px 0 20px;border-bottom:1px solid var(--line)}.topic-section .topic-icon{justify-content:flex-start;margin-bottom:18px}.topic-section h2{font-size:1.15rem;margin-bottom:9px}.topic-section p{color:var(--muted);font-size:.85rem;min-height:42px}.topic-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.topic-footer>span{font-size:.75rem;color:var(--muted)}.topic-detail{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:42px}.topic-detail h2{font-size:1.2rem}.spaced-title{margin-top:32px}.word-preview{background:var(--sheet);border-radius:var(--radius);padding:24px;align-self:start}.word-preview-row{display:flex;gap:15px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.word-preview-row>.hanzi{font-size:1.6rem;min-width:54px}.word-preview-row>span:nth-child(2){color:var(--muted);font-size:.85rem}.word-preview-row small{display:block;color:var(--ink);margin-top:3px}
.lesson-content{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:38px}.lesson-main{min-width:0}.lesson-goals{background:var(--green-soft);padding:24px 28px;border-radius:var(--radius);margin-bottom:32px}.lesson-goals h2{font-size:1.1rem}.lesson-goals ul{list-style:none;margin:0;padding:0}.lesson-goals li{display:flex;align-items:flex-start;gap:10px;font-size:.9rem;margin-top:11px}.lesson-goals li svg{margin-top:3px;color:var(--green)}.theory-section{margin:32px 0}.theory-section>p{font-size:1rem;line-height:1.75;white-space:normal}.theory-section h2{font-size:1.3rem}.example-block{position:relative;background:#eeeee5;border-radius:12px;padding:20px 58px 18px 22px;margin:16px 0;text-align:left}.example-block>.hanzi{display:block;font-size:1.5rem}.example-block>.pinyin{display:block;font-size:.9rem;margin-top:4px}.example-block>p{margin:9px 0 0;font-size:.9rem}.example-block>.icon-button{position:absolute;right:10px;top:18px}.script-dialogue{display:flex;flex-direction:column;align-items:flex-start;gap:18px;margin:22px 0}.script-line{padding:19px 22px;background:#eeeee5;border-radius:14px;max-width:90%;min-width:200px}.script-line.you{margin-left:30px;background:#e4eee2;align-self:flex-end}.speaker-name{display:block;color:var(--muted);font-size:.75rem;margin-bottom:8px}.script-line .hanzi{display:block;font-size:1.25rem}.script-line .pinyin{display:block;font-size:.85rem;margin-top:4px}.script-line p{font-size:.85rem;margin:10px 0}.lesson-sidebar{align-self:start;position:sticky;top:24px;padding-left:24px;border-left:1px solid var(--line)}.lesson-sidebar h2{font-size:1.05rem}.lesson-word{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 0;background:transparent;border:0;border-bottom:1px solid var(--line)}.lesson-word:hover{color:var(--green)}.lesson-word>.hanzi{font-size:1.55rem;min-width:46px}.lesson-word>span:nth-child(2){font-size:.8rem;color:var(--muted)}.lesson-word small{display:block;color:var(--ink);margin-top:3px}.lesson-sidebar>.inline-link{margin-top:14px}.lesson-finish{padding-top:28px;border-top:1px solid var(--line)}.lesson-finish>.hint{margin:24px 0 20px}
.practice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 30px}.practice-tile{display:flex;gap:17px;text-align:left;align-items:flex-start;background:transparent;border:0;border-bottom:1px solid var(--line);padding:25px 3px;min-height:130px}.practice-tile:hover{background:#eeeee55e}.practice-icon{color:var(--green);margin-top:2px}.practice-tile>span:nth-child(2){flex:1}.practice-tile strong{font-size:1.05rem;font-weight:550;display:block;margin-bottom:8px}.practice-tile>span:nth-child(2)>span{display:block;font-size:.85rem;color:var(--muted);line-height:1.6;max-width:36ch}.practice-tile small{display:block;color:var(--green);margin-top:9px}.practice-tile>svg{margin-top:6px;color:var(--muted)}.stories-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 26px}.story-tile{display:flex;gap:16px;align-items:center;text-decoration:none;color:var(--ink);padding:16px 0;border-bottom:1px solid var(--line)}.story-tile:hover strong{color:var(--green)}.story-symbol{width:48px;height:60px;border-radius:4px 10px 10px 4px;background:#e8e0ce;color:#6f664d;display:flex;align-items:center;justify-content:center;font-family:var(--chinese);font-size:26px;flex-shrink:0}.story-tile>span:nth-child(2){flex:1;min-width:0}.story-tile strong{display:block;font-size:.95rem;font-weight:550;line-height:1.4}.story-tile small{display:block;color:var(--muted);font-size:.75rem;margin-top:6px}.story-tile>svg{color:var(--muted)}
.exercise-progress{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:-8px;margin-bottom:24px;font-size:.85rem;color:var(--muted)}.exercise-stage{background:var(--sheet);border-radius:var(--radius);padding:32px;min-height:450px;box-shadow:var(--shadow)}.flashcard{max-width:620px;text-align:center;margin:0 auto;padding:8px 0}.word-kind{font-size:.8rem;color:var(--muted);margin-bottom:20px}.flashcard>.big-word{font-size:5rem;margin:4px 0}.flashcard>.pinyin{margin:2px 0 22px}.flashcard-prompt{margin:32px auto 25px;color:var(--muted)}.revealed-answer{margin-top:24px}.revealed-answer h2{font-size:1.6rem;margin-bottom:22px}.association{background:#f2f2e8;padding:18px 22px;border-radius:12px;text-align:left;line-height:1.6;font-size:.9rem;margin:0 auto 20px}.association strong{display:block;margin-bottom:6px;font-size:.8rem;color:var(--muted);font-weight:500}.components{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.components>span{font-family:var(--chinese);font-size:1.5rem;background:#e9eee2;border-radius:8px;padding:5px 13px;color:var(--green)}.rating-buttons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-width:550px;margin:20px auto 0}.rating-buttons .button{padding:12px 6px;font-size:.85rem}.match-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;max-width:720px;margin:10px auto}.match-grid>div{display:flex;flex-direction:column;gap:13px}.match-option{min-height:72px;border:1px solid #c9d2c2;background:var(--sheet);border-radius:11px;display:flex;align-items:center;justify-content:center;gap:8px;padding:13px;font-size:.95rem}.match-option .hanzi{font-size:1.55rem}.match-option:hover{border-color:var(--green);background:#f3f6ed}.match-option.selected{border-color:var(--green);background:var(--green-soft);box-shadow:inset 0 0 0 1px var(--green)}.match-option.matched{border-color:#b1c5a8;background:#e6efdf;color:var(--green);opacity:.72}.exercise-feedback{text-align:center;min-height:45px;margin:25px 0 10px;font-size:.9rem;color:var(--muted)}.exercise-stage>.button{display:flex;margin-inline:auto}.listening-intro,.tone-listen{text-align:center;margin:0 auto 30px}.listen-large{display:flex;width:100px;height:100px;border-radius:50%;align-items:center;justify-content:center;margin:0 auto 18px;border:1px solid #c5d6bd;background:#edf3e7;color:var(--green)}.listen-large:hover{background:#deebd6}.listening-intro p,.tone-listen p{margin:0 auto 8px}.answer-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:680px;margin:0 auto 25px}.answer-option{display:flex;justify-content:space-between;gap:10px;align-items:center;min-height:70px;text-align:left;padding:17px 20px;border:1px solid #c5cfc1;border-radius:11px;background:var(--sheet)}.answer-option:hover:not(:disabled){background:#f3f6ed;border-color:var(--green)}.answer-option.correct,.tone-option.correct{border-color:var(--green);background:var(--green-soft);color:var(--green);opacity:1}.answer-option.incorrect{border-color:#b98679;background:var(--red-soft);color:var(--red);opacity:1}.answer-explanation{max-width:600px;margin:20px auto;text-align:center}.answer-explanation>.hanzi{font-size:2.1rem;display:block}.answer-explanation>.pinyin{display:block}.answer-explanation>p{font-size:.9rem;color:var(--muted);margin:14px auto}.speaking-card{text-align:center;max-width:700px;margin:0 auto}.speaking-card>.muted{margin-inline:auto}.speak-target{font-family:var(--chinese);font-size:2.6rem;line-height:1.8;margin:20px auto 6px;word-break:break-word}.recognized-good{color:var(--green);background:#e4eee2;border-radius:3px}.recognized-missed{color:var(--red);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:7px}.record-control{margin:28px 0 20px}.record-control .button{min-height:58px}.working-state{color:var(--muted);font-size:.9rem;margin:15px auto}.user-recording{display:block;width:min(100%,400px);height:48px;margin:20px auto}.recognition-result{margin:25px auto;text-align:left;padding:20px 24px;background:#f0f2e9;border-radius:12px}.recognition-result>strong{font-size:.8rem;color:var(--muted);font-weight:500}.recognition-result>p:nth-child(2){font-family:var(--chinese);font-size:1.5rem;margin:8px 0 15px}.recognition-result>p:last-child{margin-bottom:0}.speaking-card>.hint{margin:24px auto 0}.tone-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.tone-option{display:flex;flex-direction:column;align-items:center;border:1px solid #c5cfc1;border-radius:12px;padding:15px 10px 18px;background:var(--sheet);text-align:center}.tone-option>strong{font-size:.95rem;margin-top:8px}.tone-option>span{font-size:.75rem;color:var(--muted);margin-top:5px}.tone-graph{width:100%;max-width:140px;height:auto}.tone-axis{fill:none;stroke:#d9dfd2;stroke-width:1;stroke-dasharray:4 4}.tone-line{fill:none;stroke:var(--green);stroke-width:4;stroke-linecap:round}.tone-answer{margin:28px auto 20px;text-align:center;max-width:560px}.tone-answer p{font-size:.9rem;color:var(--muted);margin:10px auto}.tone-guide{border-top:1px solid var(--line);margin-top:30px;padding-top:17px;font-size:.875rem;color:var(--muted)}.tone-guide summary{cursor:pointer;color:var(--green);min-height:35px}.tone-guide p{margin-top:12px}.writing-layout{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:30px}.writing-layout>div:first-child{text-align:center;padding:0 10px}.writing-model .big-word{font-size:6rem}.hidden-model .big-word{visibility:hidden}.writing-layout h2{font-size:1.2rem}.writing-layout p{font-size:.9rem;color:var(--muted)}.writing-layout .components{margin-top:22px}.writing-tool canvas{display:block;width:100%;aspect-ratio:1;background:#fffef9;border:1px solid #bccab3;border-radius:10px;touch-action:none;cursor:crosshair}.writing-tool .action-wrap{margin-top:14px}.writing-tool>.hint{margin-top:17px}.writing-tool>.action-wrap:last-child{display:grid;grid-template-columns:1fr}.writing-tool>.action-wrap:last-child .button{font-size:.85rem}.grammar-card{max-width:750px;margin:0 auto;text-align:center}.grammar-card>p{margin-inline:auto;color:var(--muted)}.sentence-tray{min-height:88px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:9px;padding:20px;background:#f2f3ea;border-radius:12px;margin:28px 0}.sentence-tray button,.token{border:1px solid #c6d1bd;background:var(--sheet);border-radius:8px;padding:10px 14px;font-family:var(--chinese);font-size:1.35rem;min-height:48px}.sentence-tray>.muted{font-family:var(--font);font-size:.85rem}.sentence-tray button:hover,.token:hover{background:var(--green-soft)}.token-bank{display:flex;flex-wrap:wrap;justify-content:center;gap:11px;margin:0 0 32px}.token:disabled{opacity:.2}.grammar-card>.button{min-width:150px}.finish-panel{text-align:center;padding:50px 20px;background:var(--sheet);border-radius:var(--radius)}.finish-check{display:flex;align-items:center;justify-content:center;width:86px;height:86px;background:var(--green-soft);color:var(--green);border-radius:50%;margin:0 auto 26px}.finish-panel p{max-width:48ch;margin:0 auto 28px;color:var(--muted)}.finish-panel .action-wrap{justify-content:center}.empty-state{text-align:center;padding:55px 20px;background:var(--sheet);border-radius:var(--radius)}.empty-state>svg{color:var(--green);margin-bottom:22px}.empty-state p{max-width:48ch;margin:0 auto 24px;color:var(--muted)}.count{font-size:.85rem;font-weight:400;color:var(--muted);margin-left:8px}.error-group{margin-top:32px}.error-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 0;border-bottom:1px solid var(--line)}.error-row .hanzi{font-size:1.6rem;margin-right:12px}.error-row p{font-size:.85rem;margin:8px 0 0}.error-row>.button{flex-shrink:0}
.dictionary-toolbar{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:25px}.search-field{position:relative;display:flex;align-items:center;gap:12px;max-width:450px;flex:1;margin:0}.search-field>svg{position:absolute;left:15px;color:var(--muted)}.search-field input{padding-left:45px}.dictionary-toolbar>.muted{font-size:.85rem}.dictionary-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:30px}.dictionary-list{max-height:750px;overflow-y:auto;scrollbar-color:#bdcbb3 transparent;scrollbar-width:thin}.dictionary-row{display:flex;align-items:center;gap:20px;justify-content:space-between;width:100%;padding:15px 16px;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;text-align:left}.dictionary-row.selected{background:#e4eee2;border-radius:10px;border-color:transparent}.dictionary-row:hover{background:#edf0e5}.dictionary-row>span:first-child{flex:1;min-width:80px}.dictionary-row .hanzi{display:block;font-size:1.5rem}.dictionary-row small{display:block;font-size:.75rem;color:var(--muted);margin-top:4px}.dictionary-row>span:nth-child(2){flex:1;font-size:.9rem}.word-detail{background:var(--sheet);border-radius:var(--radius);align-self:start;overflow:hidden}.word-detail-head{text-align:center;padding:26px 25px 22px;background:#e9eee0}.word-detail-head>.pinyin{margin:0 auto 12px}.word-detail-head h2{font-size:1.4rem}.word-detail-body{padding:28px}.word-detail-body h3{margin-top:22px}.word-detail-body>h3:first-child{margin-top:0}.word-detail-body>p{font-size:.9rem;color:var(--muted)}.word-detail-body>.components{justify-content:flex-start}.word-detail-body label{margin-top:25px}.word-detail-body>.button{margin-top:8px}.empty-word{text-align:center;padding:45px 25px 55px}.empty-word .big-word{color:#78906e;margin-bottom:20px}.empty-word p{color:var(--muted);font-size:.9rem}.empty-search{color:var(--muted);padding:25px}.reader-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:35px}.reader{background:var(--sheet);padding:30px;border-radius:var(--radius)}.reader-controls{display:flex;justify-content:space-between;gap:15px;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--line)}.reader-controls label{margin:0;font-size:.85rem}.reader-paragraph{margin-top:28px;padding-bottom:24px;border-bottom:1px solid var(--line)}.reader-chinese{font-family:var(--chinese);font-size:1.6rem;line-height:2;margin-bottom:14px}.reader-word{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit;border:0;background:transparent;padding:0 1px;border-radius:3px}.reader-word:hover{background:var(--green-soft);color:var(--green)}.reader-paragraph-actions{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}.reader-paragraph-actions details{font-size:.9rem;max-width:100%;padding-top:10px;flex:1;min-width:150px}.reader-paragraph-actions summary{color:var(--green);cursor:pointer;min-height:32px}.reader-paragraph-actions details p{margin:12px 0 0;font-size:.9rem;line-height:1.65;color:var(--muted)}.reader-pinyin{font-size:1rem;line-height:1.7}.reader-note{align-self:start;padding-top:12px;position:sticky;top:25px}.reader-note h2{font-size:1.15rem}.reader-note p{font-size:.9rem;color:var(--muted)}.reading-questions{margin-top:35px}.reading-question{border:0;padding:24px 0;border-bottom:1px solid var(--line);margin:0}.reading-question legend{font-size:1rem;font-weight:550;line-height:1.6}.reading-question>label{display:flex;align-items:center;gap:11px;font-weight:400;font-size:.95rem;min-height:38px}.reading-question>.button{margin-top:10px}.reading-feedback{font-size:.9rem;margin-top:10px;line-height:1.6}
.library-note{display:flex;gap:16px;align-items:flex-start;background:#e9eee1;border-radius:12px;padding:22px 25px;margin-bottom:30px}.library-note>svg{color:var(--green);margin-top:2px}.library-note p{font-size:.9rem;margin:0;color:#4c6250}.book-list{display:flex;flex-direction:column}.book-row{display:grid;grid-template-columns:105px minmax(0,1fr);gap:27px;padding:27px 0;border-bottom:1px solid var(--line)}.book-cover{min-height:136px;max-height:150px;border-radius:3px 9px 9px 3px;background:#dde6d3;border-left:6px solid #a8bd9b;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:12px;text-align:center}.book-row:nth-child(3n+2) .book-cover{background:#e9dec9;border-left-color:#cbb78f}.book-row:nth-child(3n) .book-cover{background:#e4e2dc;border-left-color:#c3c0b3}.book-cover>span{font-family:var(--chinese);font-size:38px;color:#4f6847}.book-cover small{font-size:.6rem;margin-top:12px;color:#5f6d54}.book-row h2{font-size:1.15rem;line-height:1.5;margin-bottom:6px;text-wrap:initial}.book-row p{font-size:.85rem;margin-bottom:13px}.book-unavailable{color:var(--amber)}.source-row{padding:18px 0;border-bottom:1px solid var(--line)}.source-row h3{font-size:.95rem;line-height:1.5}.source-row p{font-size:.85rem;color:var(--muted);margin-bottom:0}.profile-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:30px}.settings-panel{background:var(--sheet);border-radius:var(--radius);padding:30px}.settings-panel h2{font-size:1.2rem;margin-bottom:25px}.settings-panel select{margin-bottom:22px}.settings-panel .check-label{margin-bottom:14px;font-size:.85rem}.settings-panel .button{margin-top:15px}.account-panel{padding:22px 20px}.large-avatar{width:55px;height:55px;font-size:1.25rem;margin-bottom:15px}.account-panel>h2{margin-bottom:5px}.account-panel>.muted{font-size:.85rem}.account-stats{margin:25px 0}.account-stats>div{display:flex;justify-content:space-between;gap:18px;padding:10px 0;border-bottom:1px solid var(--line)}.account-stats dt{font-size:.85rem;color:var(--muted)}.account-stats dd{margin:0;font-size:1rem;font-weight:550}.account-panel>.button{margin-top:10px}.account-panel>.hint{margin-top:18px;font-size:.75rem}.history-list>div{display:flex;gap:13px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.history-list>div>span:first-child{color:var(--green)}.history-list>div>span:nth-child(2){flex:1}.history-list strong{display:block;font-size:.85rem;font-weight:500}.history-list small{display:block;font-size:.75rem;color:var(--muted);margin-top:4px}.history-list time{font-size:.75rem;color:var(--muted)}.empty-inline{padding:22px 0;color:var(--muted);font-size:.9rem}
.teacher-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:26px;align-items:start}.call-panel{padding:24px 0 15px;text-align:center;position:sticky;top:15px}.call-avatar{display:flex;align-items:center;justify-content:center;width:120px;height:120px;border-radius:50%;margin:0 auto 22px;background:#e6ddc8;color:#6c593e;border:6px solid #f1ebdf;font-family:var(--chinese);font-size:58px;transition:box-shadow .2s ease}.call-avatar.listening{box-shadow:0 0 0 5px #8fb080}.call-avatar.thinking{box-shadow:0 0 0 5px #c8b58b}.call-panel h2{font-size:1.4rem;margin-bottom:5px}.call-panel>.muted{font-size:.8rem;margin-bottom:15px}.call-status{font-size:.8rem;min-height:40px;color:var(--green);line-height:1.55;margin:0 auto 18px;max-width:27ch}.call-panel>label{text-align:left;font-size:.8rem;margin-bottom:7px}.call-panel select{font-size:.85rem;margin-bottom:18px}.call-panel>.button{margin-top:10px;font-size:.85rem}.call-panel>.hint{font-size:.75rem;line-height:1.65;text-align:left;margin-top:18px}.chat-panel{background:var(--sheet);border-radius:var(--radius);border:1px solid var(--line);overflow:hidden;min-width:0;display:flex;flex-direction:column;min-height:690px}.chat-header{padding:19px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:.9rem;font-weight:550}.chat-header .hint{font-size:.7rem;font-weight:400}.chat-messages{height:470px;overflow:auto;padding:25px;scrollbar-width:thin;scrollbar-color:#c3d0b9 transparent;display:flex;flex-direction:column;gap:19px}.chat-message{max-width:88%;border-radius:12px;padding:14px 18px;position:relative;background:#eef0e6;align-self:flex-start;min-width:110px}.chat-message.from-you{background:#e2edde;align-self:flex-end}.message-name{font-size:.7rem;display:block;color:var(--muted);margin-bottom:7px}.message-text{font-size:.95rem;line-height:1.8;overflow-wrap:anywhere;white-space:normal}.message-audio{display:flex;justify-content:center;align-items:center;width:30px;height:30px;border:0;background:transparent;color:var(--green);margin-top:7px;border-radius:6px}.message-audio:hover{background:#dde6d1}.chat-working{font-size:.85rem;color:var(--muted);padding:5px}.chat-welcome{text-align:center;padding:22px 10px;max-width:450px;margin:auto}.welcome-chinese{font-size:3rem;color:var(--green);display:block;margin-bottom:18px}.chat-welcome h2{font-size:1.3rem}.chat-welcome p{font-size:.9rem;color:var(--muted)}.conversation-starters{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:25px}.conversation-starters .button{font-size:.75rem;min-height:38px;padding:9px 11px}.chat-composer{margin:0 22px;padding-top:17px;border-top:1px solid var(--line)}.chat-composer textarea{border:1px solid #c4cebe;background:#fffef9;font-size:.9rem;min-height:76px;max-height:180px;resize:vertical}.composer-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}.composer-actions .button{font-size:.8rem;min-height:43px;padding:11px 15px}.chat-footnote{font-size:.68rem;color:var(--muted);padding:14px 22px;margin:0;max-width:initial}.chat-error{margin:0 22px 15px;padding:12px 15px;background:var(--red-soft);border-radius:8px;font-size:.8rem}.transcript{margin:0 22px 15px;padding:12px 15px;background:#f2f3e9;border-radius:8px}.transcript>span{font-size:.7rem;color:var(--muted)}.transcript>p{font-size:.9rem;margin:5px 0 0}
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);max-width:1400px;margin:0 auto;padding:50px 7vw;gap:9vw;align-items:center}.login-intro .brand{margin-bottom:55px}.login-intro h1{font-size:3.2rem;line-height:1.14;letter-spacing:-.04em;margin-bottom:24px}.login-intro>p{max-width:40ch;color:var(--muted);font-size:1rem;line-height:1.75}.login-word{display:flex;align-items:center;gap:18px;margin:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;flex-wrap:wrap}.login-word>.hanzi{font-size:2.5rem;color:var(--green)}.login-word>span:nth-child(2){color:var(--muted);font-size:1rem}.login-word>span:last-child{font-size:.8rem;color:var(--muted);flex-basis:100%;margin-top:-10px}.login-intro>.muted{font-size:.8rem;max-width:43ch}.login-form-panel{background:var(--sheet);padding:40px;border-radius:20px;box-shadow:var(--shadow);max-width:450px}.login-form-panel h2{font-size:1.6rem;margin-bottom:15px}.login-form-panel p{font-size:.9rem;color:var(--muted);line-height:1.65}.login-form-panel #login-form{margin-top:27px}.login-form-panel label{margin-bottom:10px}.login-form-panel input{font-size:1.7rem;letter-spacing:.3em;font-variant-numeric:tabular-nums}.login-form-panel input::placeholder{font-size:1rem;letter-spacing:0}.login-form-panel .form-error{color:var(--red);font-size:.85rem}.login-form-panel .security-note{display:flex;align-items:flex-start;gap:9px;margin-top:24px;font-size:.7rem;margin-bottom:0}.security-note svg{margin-top:2px}.login-form-panel .text-button{font-size:.8rem;margin-top:8px}
#toast{position:fixed;bottom:28px;left:calc(50% + var(--sidebar)/2);transform:translate(-50%,15px);padding:14px 21px;background:var(--ink);color:var(--sheet);font-size:.85rem;line-height:1.5;border-radius:11px;max-width:min(540px,85vw);box-shadow:0 6px 24px #233d351f;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}#toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:1600px){:root{--sidebar:260px}.sidebar{padding-left:30px;padding-right:30px}#main{padding-top:46px}.topbar{padding-inline:50px}.today-feature{padding:42px}.today-feature h2{font-size:2rem}.feature-character{width:135px}.feature-character>span:first-child{font-size:110px}}
@media(max-width:1180px){:root{--sidebar:210px}.sidebar{padding-inline:16px}.sidebar .brand{font-size:1.15rem;gap:9px}.brand-mark{width:41px;height:41px;font-size:27px}.sidebar .brand small{font-size:.65rem}.topbar{padding-inline:28px}#main{padding:32px 28px 55px}.today-layout{gap:22px;grid-template-columns:minmax(0,1.5fr) minmax(220px,1fr)}.today-feature{padding:28px;gap:8px}.today-feature h2{font-size:1.5rem}.feature-character{width:75px}.feature-character>span:first-child{font-size:70px}.feature-character small{font-size:.7rem}.today-feature .button{font-size:.85rem;padding-inline:15px}.path-layout{grid-template-columns:minmax(0,1fr) 215px;gap:25px}.path-note{padding:22px}.lesson-duration{flex-direction:column;gap:7px}.teacher-layout{grid-template-columns:220px minmax(0,1fr);gap:22px}.teacher-banner{padding:25px 0;gap:18px}.teacher-banner>.button{font-size:.8rem;padding-inline:14px}.topic-tile{padding:13px;gap:8px}.topic-tile>.topic-icon{width:28px}.topic-tile>span:nth-child(2){font-size:.8rem}.topic-tile>svg{width:13px}.lesson-content{grid-template-columns:minmax(0,1fr) 205px;gap:25px}.lesson-sidebar{padding-left:19px}.reader-layout{grid-template-columns:minmax(0,1fr) 180px;gap:25px}.reader{padding:25px}.exercise-stage{padding:28px}.tone-options{gap:10px}.tone-option{padding:13px 7px}.tone-option>span{font-size:.65rem}.chat-messages{padding:20px}.dictionary-layout{gap:20px}.word-detail-body{padding:22px}.word-detail-body .example-block{padding-left:16px}.profile-layout{gap:20px}.settings-panel{padding:25px}}
@media(max-width:960px){:root{--sidebar:185px}.sidebar{padding-inline:13px}.sidebar .brand{font-size:1.05rem;gap:8px}.sidebar .brand small{display:none}.nav-link{padding:12px;gap:10px;font-size:.85rem}.nav-link svg{width:20px}.sidebar-thought{padding-inline:10px;font-size:.75rem}.profile-link>svg{display:none}.topbar{height:78px;padding-inline:23px}#main{padding:28px 23px 50px}.page-heading{gap:16px}.page-heading h1{font-size:1.75rem}.page-heading p{font-size:.85rem}.page-heading>.button{font-size:.75rem;padding:10px 12px;min-height:42px}.today-layout{grid-template-columns:minmax(0,1fr)}.today-feature{min-height:265px;padding:28px 30px}.today-feature h2{font-size:1.8rem;max-width:23ch}.feature-character{width:125px}.feature-character>span:first-child{font-size:95px}.today-review{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 20px;padding:5px 0}.today-review>h2{grid-column:1/-1;margin-bottom:0}.today-review>.button{align-self:center;margin:10px 0 0;font-size:.8rem}.review-line{margin-top:20px}.review-line p{margin-bottom:0;max-width:42ch}.path-layout{grid-template-columns:minmax(0,1fr)}.path-note{position:static;max-width:initial}.path-note .note-icon{float:left;margin-right:15px;margin-bottom:10px}.path-note p{max-width:initial}.lesson-duration{flex-direction:row}.topics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px}.teacher-banner{gap:17px;flex-wrap:wrap}.teacher-banner>.button{margin-left:77px}.teacher-banner>div:nth-child(2){flex-basis:calc(100% - 77px)}.progress-summary dl{gap:25px}.progress-summary dt{font-size:.7rem}.progress-summary dd{font-size:1.4rem}.topic-detail{grid-template-columns:minmax(0,1fr)}.word-preview{display:none}.lesson-content{grid-template-columns:minmax(0,1fr)}.lesson-sidebar{position:static;border-left:0;border-top:1px solid var(--line);padding:25px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.lesson-sidebar h2,.lesson-sidebar>.inline-link{grid-column:1/-1}.lesson-word{padding:13px 0}.practice-grid{gap:0 22px}.practice-tile{gap:13px}.practice-tile strong{font-size:.95rem}.practice-tile>span:nth-child(2)>span{font-size:.8rem}.practice-tile>svg{display:none}.stories-list{grid-template-columns:minmax(0,1fr)}.exercise-stage{padding:25px}.match-grid{gap:15px}.match-option{padding:12px;font-size:.8rem}.match-option .hanzi{font-size:1.4rem}.writing-layout{grid-template-columns:minmax(0,1fr)}.writing-layout>div:first-child{display:grid;grid-template-columns:100px minmax(0,1fr);gap:0 20px;text-align:left}.writing-model{grid-row:span 4;align-self:center}.writing-model .big-word{font-size:5rem}.writing-layout>div:first-child .pinyin{margin-top:15px;margin-bottom:5px}.writing-layout>div:first-child p{margin-bottom:10px}.writing-layout>div:first-child .components{grid-column:1/-1;justify-content:flex-start;margin:10px 0}.writing-layout>div:first-child>.hint{grid-column:1/-1}.writing-tool{max-width:420px;width:100%;margin-inline:auto}.writing-tool>.action-wrap:last-child{grid-template-columns:1fr 1fr}.tone-options{grid-template-columns:repeat(2,minmax(0,1fr))}.tone-option{padding:15px 10px}.tone-option>.tone-graph{max-width:130px}.tone-option>span{font-size:.75rem}.dictionary-layout{grid-template-columns:minmax(0,1fr)}.dictionary-list{max-height:380px}.dictionary-toolbar{flex-direction:column;align-items:stretch;gap:12px}.search-field{max-width:initial}.word-detail .empty-word{padding:28px}.dictionary-row{padding:12px 15px}.reader-layout{grid-template-columns:minmax(0,1fr)}.reader-note{position:static;border-top:1px solid var(--line);padding-top:24px}.reader-note p{max-width:initial}.profile-layout{grid-template-columns:minmax(0,1fr)}.account-panel{background:#eceee2;border-radius:var(--radius);padding:25px}.teacher-layout{grid-template-columns:minmax(0,1fr)}.call-panel{position:static;padding:5px 0;display:grid;grid-template-columns:100px minmax(0,1fr) minmax(0,1fr);gap:0 15px;text-align:left}.call-avatar{width:80px;height:80px;grid-row:span 3;font-size:38px;margin:0;align-self:center;border-width:4px}.call-panel h2{grid-column:2/4;align-self:end;font-size:1.2rem;margin-bottom:3px}.call-panel>.muted{grid-column:2/4;font-size:.7rem;margin-bottom:3px}.call-status{grid-column:2/4;min-height:25px;margin:0;max-width:initial;font-size:.75rem}.call-panel>label{grid-column:1/4;margin-top:18px}.call-panel select{grid-column:1/4;margin-bottom:8px;min-height:44px}.call-panel>.button{grid-column:auto;margin-top:7px;padding:10px;font-size:.75rem;gap:6px}.call-panel>.button:nth-of-type(1){grid-column:1/3}.call-panel>.hint{grid-column:1/4;font-size:.7rem;margin:13px 0 0}.call-panel>.hint:last-child{display:none}.chat-panel{min-height:650px}.chat-messages{height:420px}.login-page{gap:6vw;padding:40px 5vw}.login-intro h1{font-size:2.7rem}.login-form-panel{padding:30px}.login-intro .brand{margin-bottom:40px}.login-intro>p{font-size:.9rem}}
@media(max-width:700px){:root{--sidebar:0px}.sidebar{display:none}.app-body{margin:0}.topbar{position:sticky;top:0;height:68px;padding:0 21px;background:var(--paper);z-index:18;border-bottom-color:#dce1d6}.mobile-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:1.1rem;letter-spacing:-.025em}.mobile-profile{display:flex}.breadcrumbs{display:none}.topbar-actions{gap:10px}.sync-button{font-size:.65rem;max-width:150px;text-align:left;line-height:1.3;gap:6px}.sync-button>svg{width:14px}.mobile-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;inset:auto 0 0;z-index:25;border-top:1px solid var(--line);background:var(--sheet);padding:7px 8px max(8px,env(safe-area-inset-bottom));min-height:68px}.mobile-nav a{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;min-height:48px;border-radius:9px;text-decoration:none;color:var(--muted);padding:6px 2px;font-size:.6rem}.mobile-nav a.active{color:var(--green);background:#e9f0e2}.mobile-nav a svg{width:22px;height:22px}#main{padding:29px 21px 100px;min-height:calc(100vh - 136px)}.page-heading{margin-bottom:25px;flex-wrap:wrap;gap:16px}.page-heading h1{font-size:1.7rem;letter-spacing:-.035em;margin-bottom:11px}.page-heading p{font-size:.875rem;line-height:1.65}.page-heading>.button{min-height:40px;padding:9px 12px}.today-feature{padding:27px 24px;min-height:285px}.today-feature h2{font-size:1.6rem}.today-feature p{font-size:.85rem;margin-bottom:23px;max-width:31ch}.lesson-meta{font-size:.7rem;margin-bottom:17px}.feature-character{width:75px;margin-right:-4px}.feature-character>span:first-child{font-size:74px}.feature-character>span:nth-child(2){font-size:.9rem}.feature-character small{font-size:.65rem}.today-feature .button{font-size:.85rem;padding-inline:17px;min-height:46px}.today-feature .inline-link{font-size:.75rem;margin-top:8px}.today-review{gap:0 18px;padding-top:2px}.today-review>h2{font-size:1.05rem}.today-review .review-line{gap:11px}.review-line strong{font-size:.9rem}.review-line p{font-size:.75rem;line-height:1.6}.today-review>.button{font-size:.7rem;min-height:38px;padding:9px 11px;margin-top:15px;max-width:135px}.topic-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.topic-tile{padding:14px 12px;min-height:73px;gap:9px}.topic-tile>.topic-icon{width:29px}.topic-tile .topic-icon svg{width:24px;height:24px}.topic-tile>span:nth-child(2){font-size:.8rem}.topic-tile>svg{display:none}.section{margin-top:31px}.section-heading{margin-bottom:15px;gap:15px}.section-heading h2{font-size:1.15rem}.section-heading>.inline-link{font-size:.75rem;white-space:nowrap}.section-heading>.muted{display:none}.teacher-banner{padding:24px 0;gap:15px;margin-top:30px}.teacher-monogram{width:49px;height:49px;font-size:27px;align-self:flex-start}.teacher-banner h2{font-size:1.1rem}.teacher-banner p{font-size:.8rem;line-height:1.6}.teacher-banner .ai-status{font-size:.65rem;margin-top:8px}.teacher-banner>div:nth-child(2){flex-basis:calc(100% - 64px)}.teacher-banner>.button{margin-left:64px;font-size:.8rem}.progress-summary>h2{font-size:1rem}.progress-summary dl{gap:15px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:19px}.progress-summary dl>div{min-width:0}.progress-summary dt{font-size:.65rem;line-height:1.55}.progress-summary dd{font-size:1.4rem}.progress-summary dd span{font-size:.8rem}.progress-summary>.hint{font-size:.7rem}.save-warning{margin:13px 21px 0;padding:13px 15px;font-size:.75rem}.segmented{display:flex;width:100%;margin-bottom:26px}.segmented a{flex:1;text-align:center;padding:10px 12px;font-size:.85rem}.stage-heading h2{font-size:1rem;max-width:30ch;line-height:1.5}.path-stage{margin-bottom:28px}.lesson-row{gap:13px;padding:15px 0;min-height:100px}.lesson-number{width:37px;height:37px;font-size:.8rem}.lesson-title strong{font-size:.9rem;line-height:1.4}.lesson-title>span{font-size:.72rem;line-height:1.6}.lesson-duration{flex-direction:column;gap:8px;font-size:.65rem;min-width:40px}.path-note{padding:23px}.path-note p{font-size:.8rem}.path-note h2{font-size:1.1rem}.topics-grid{gap:25px 22px}.topic-section .topic-icon{margin-bottom:13px}.topic-section h2{font-size:1rem;line-height:1.4}.topic-section p{font-size:.75rem;min-height:55px}.topic-footer{gap:7px}.topic-footer>span{font-size:.65rem}.topic-footer .button{font-size:.7rem;min-height:37px;padding:8px 11px}.topic-detail{gap:25px}.topic-detail>.action-wrap{gap:8px}.lesson-goals{padding:23px;margin-bottom:28px}.lesson-goals h2{font-size:1.05rem}.lesson-goals li{font-size:.85rem}.theory-section{margin:28px 0}.theory-section h2{font-size:1.2rem}.theory-section>p{font-size:.95rem;line-height:1.75}.example-block{padding:18px 50px 18px 18px}.example-block>.hanzi{font-size:1.4rem}.example-block>.pinyin{font-size:.8rem}.example-block p{font-size:.85rem}.example-block>.icon-button{right:6px;top:14px}.script-line{max-width:93%;padding:17px 18px;min-width:180px}.script-line.you{margin-left:20px}.script-line .hanzi{font-size:1.2rem}.script-line .pinyin{font-size:.75rem}.script-line p{font-size:.8rem}.script-line .button{font-size:.7rem;min-height:36px;padding:8px 11px}.lesson-finish h2{font-size:1.2rem}.lesson-finish .action-wrap{gap:8px}.lesson-finish .action-wrap .button{font-size:.75rem;min-height:38px;padding:9px 12px}.lesson-finish>.hint{font-size:.75rem}.lesson-finish>.button{width:100%;font-size:.85rem}.lesson-sidebar{gap:0 14px}.lesson-word{gap:9px}.lesson-word>.hanzi{font-size:1.45rem;min-width:40px}.lesson-word>span:nth-child(2){font-size:.7rem}.lesson-word small{font-size:.65rem}.practice-grid{gap:0 22px}.practice-tile{padding:22px 0;gap:11px;flex-wrap:wrap;align-content:start;min-height:168px}.practice-icon{flex-basis:100%;margin:0 0 4px}.practice-icon svg{width:25px;height:25px}.practice-tile strong{font-size:.95rem;margin-bottom:8px}.practice-tile>span:nth-child(2)>span{font-size:.75rem;line-height:1.6}.practice-tile small{font-size:.65rem}.story-tile{gap:14px;padding:15px 0}.story-symbol{width:42px;height:54px;font-size:24px}.story-tile strong{font-size:.85rem}.story-tile small{font-size:.7rem}.exercise-progress{font-size:.75rem;margin-bottom:18px}.exercise-progress>.hint{font-size:.65rem}.exercise-stage{padding:24px 17px;min-height:430px}.word-kind{font-size:.7rem;margin-bottom:16px}.flashcard>.big-word{font-size:4.5rem}.flashcard>.large-pinyin{font-size:1.15rem}.flashcard>.button{font-size:.75rem;min-height:40px}.flashcard-prompt{font-size:.9rem;margin:30px auto 25px}.revealed-answer h2{font-size:1.4rem}.association{padding:16px 17px;font-size:.85rem}.association strong{font-size:.75rem}.revealed-answer .example-block>.hanzi{font-size:1.2rem}.revealed-answer>.hint{font-size:.75rem;margin-top:24px}.rating-buttons{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.rating-buttons .button{font-size:.8rem;min-height:44px}.match-grid{gap:12px;margin-top:0}.match-grid>div{gap:11px}.match-option{min-height:76px;border-radius:9px;padding:11px 8px;font-size:.75rem;line-height:1.5;overflow-wrap:anywhere}.match-option .hanzi{font-size:1.45rem}.match-option svg{width:14px}.exercise-feedback{font-size:.8rem;margin-top:20px;min-height:45px}.answer-options{gap:11px}.answer-option{padding:14px 12px;min-height:75px;font-size:.85rem;border-radius:9px}.answer-explanation>p{font-size:.8rem}.answer-explanation>.hanzi{font-size:1.8rem}.listen-large{width:85px;height:85px}.listen-large svg{width:35px}.listening-intro>p,.tone-listen>p{font-size:.9rem}.listening-intro>.hint{font-size:.7rem}.speak-target{font-size:2rem;line-height:1.9;margin-top:20px}.speaking-card>.muted{font-size:.85rem}.speaking-card>.pinyin{font-size:.85rem}.speaking-card>.button{font-size:.75rem}.record-control{margin-top:25px}.record-control>.button{width:100%;font-size:.85rem;min-height:54px}.recognition-result{padding:17px 18px}.recognition-result>p:nth-child(2){font-size:1.25rem}.recognition-result>p{font-size:.85rem}.recognition-result>.hint{font-size:.7rem}.speaking-card>.hint{font-size:.7rem;line-height:1.65}.tone-options{gap:12px}.tone-option>strong{font-size:.9rem}.tone-option>span{font-size:.7rem}.tone-option>.tone-graph{max-width:120px}.tone-answer{margin-top:23px}.tone-answer p{font-size:.85rem}.tone-guide{font-size:.8rem}.writing-layout{gap:20px}.writing-layout>div:first-child{grid-template-columns:80px minmax(0,1fr);gap:0 15px;padding:0}.writing-model .big-word{font-size:4.2rem}.writing-layout>div:first-child .pinyin{font-size:.85rem;margin-top:10px}.writing-layout>div:first-child h2{font-size:1rem}.writing-layout>div:first-child p{font-size:.8rem}.writing-layout>div:first-child>.hint{font-size:.7rem}.writing-tool .action-wrap{gap:8px}.writing-tool .button{font-size:.7rem;padding:10px 12px}.writing-tool>.action-wrap:last-child{grid-template-columns:minmax(0,1fr)}.writing-tool>.hint{font-size:.7rem}.grammar-card h2{font-size:1.2rem;line-height:1.5}.grammar-card>p{font-size:.85rem}.sentence-tray{min-height:95px;padding:14px;gap:8px}.sentence-tray button,.token{font-size:1.2rem;padding:9px 12px}.sentence-tray>.muted{font-size:.75rem}.token-bank{gap:9px;margin-bottom:26px}.finish-panel{padding:40px 20px}.finish-panel h2{font-size:1.3rem}.finish-panel p{font-size:.9rem}.finish-panel .button{font-size:.8rem}.error-row{align-items:flex-start;gap:16px;padding:20px 0;flex-wrap:wrap}.error-row>.button{margin-left:0;font-size:.75rem}.error-row p{font-size:.8rem}.error-row .hint{font-size:.75rem}.error-row .hanzi{font-size:1.5rem}.error-group h2{font-size:1.15rem}.dictionary-row{padding:14px}.dictionary-row>span:first-child{min-width:70px}.dictionary-row .hanzi{font-size:1.4rem}.dictionary-row>span:nth-child(2){font-size:.85rem}.dictionary-row small{font-size:.65rem}.dictionary-list{max-height:350px}.dictionary-toolbar>.muted{font-size:.75rem}.dictionary-toolbar input{font-size:.85rem}.word-detail-head{padding:23px 22px}.word-detail-head .big-word{font-size:4.3rem}.word-detail-head>.pinyin{font-size:1.1rem}.word-detail-head>h2{font-size:1.3rem}.word-detail-body{padding:23px}.word-detail-body h3{font-size:.95rem}.word-detail-body>p{font-size:.85rem}.word-detail-body .example-block{padding-left:17px}.word-detail-body label{font-size:.85rem}.word-detail-body .hint{font-size:.75rem}.word-detail-body>.button{font-size:.85rem}.reader{padding:23px 20px}.reader-controls{gap:10px;padding-bottom:17px;flex-wrap:wrap}.reader-controls label{font-size:.8rem}.reader-controls .button{font-size:.7rem;min-height:37px;padding:9px 11px}.reader-chinese{font-size:1.5rem;line-height:2.1}.reader-paragraph{margin-top:23px;padding-bottom:20px}.reader-pinyin{font-size:.85rem;line-height:1.8}.reader-paragraph-actions{gap:12px}.reader-paragraph-actions .button{font-size:.7rem;padding:9px 11px;min-height:37px}.reader-paragraph-actions details{font-size:.8rem;padding-top:9px}.reader-paragraph-actions details p{font-size:.85rem}.reading-question{padding:20px 0}.reading-question legend{font-size:.9rem}.reading-question>label{font-size:.85rem;gap:10px}.reading-question .button{font-size:.75rem}.reading-feedback{font-size:.8rem}.reader-note{padding:22px 0 0}.reader-note h2{font-size:1.05rem}.reader-note p{font-size:.85rem}.library-note{padding:20px;gap:13px}.library-note p{font-size:.8rem}.library-note>svg{width:21px}.book-row{grid-template-columns:70px minmax(0,1fr);gap:19px;padding:24px 0}.book-cover{min-height:106px;max-height:120px;border-left-width:4px;padding:7px}.book-cover>span{font-size:30px}.book-cover small{font-size:.5rem;line-height:1.6;margin-top:8px;overflow-wrap:anywhere}.book-row h2{font-size:.95rem;line-height:1.55}.book-row p{font-size:.75rem;margin-bottom:11px;line-height:1.65}.book-row .button{font-size:.7rem;min-height:37px;padding:9px 12px}.source-row h3{font-size:.9rem}.source-row p{font-size:.8rem;line-height:1.65}.settings-panel{padding:25px 22px}.settings-panel h2{font-size:1.15rem}.settings-panel label{font-size:.85rem}.settings-panel select{font-size:.85rem}.settings-panel .check-label{font-size:.8rem;line-height:1.65}.settings-panel .button{width:100%;font-size:.85rem}.account-panel{padding:25px 22px}.history-list>div{gap:11px;flex-wrap:wrap}.history-list time{font-size:.65rem}.history-list strong{font-size:.8rem}.history-list small{font-size:.7rem}.call-panel{grid-template-columns:85px minmax(0,1fr) minmax(0,1fr);gap:0 12px}.call-avatar{width:72px;height:72px;font-size:33px}.call-panel h2{font-size:1.2rem}.call-panel>.muted{font-size:.7rem}.call-status{font-size:.7rem}.call-panel>label{font-size:.8rem}.call-panel select{font-size:.85rem}.call-panel>.button{font-size:.75rem}.call-panel>.hint{font-size:.7rem;line-height:1.65}.chat-panel{min-height:620px;border-radius:14px}.chat-header{padding:16px 18px;font-size:.85rem;flex-wrap:wrap;gap:6px}.chat-header .hint{font-size:.65rem}.chat-messages{height:390px;padding:20px 16px;gap:17px}.chat-message{max-width:94%;padding:13px 15px;border-radius:11px}.message-text{font-size:.9rem;line-height:1.8}.message-name{font-size:.65rem}.chat-welcome{padding:15px 2px}.welcome-chinese{font-size:2.5rem}.chat-welcome h2{font-size:1.15rem}.chat-welcome p{font-size:.8rem}.conversation-starters{gap:8px;margin-top:22px}.conversation-starters .button{font-size:.7rem}.chat-composer{margin:0 15px;padding-top:15px}.chat-composer textarea{font-size:.85rem;padding:11px 13px}.composer-actions .button{font-size:.75rem;min-height:42px;padding:10px 13px}.chat-footnote{padding:13px 16px 16px;font-size:.6rem;line-height:1.65}.chat-error{margin-inline:15px;font-size:.75rem;padding:12px}.transcript{margin-inline:15px;padding:12px}.transcript>span{font-size:.65rem}.transcript>p{font-size:.8rem}.login-page{grid-template-columns:minmax(0,1fr);padding:30px 24px 45px;gap:30px;max-width:550px;min-height:100vh}.login-intro .brand{margin-bottom:32px;font-size:1.25rem}.login-intro h1{font-size:2.5rem;margin-bottom:20px}.login-intro>p{font-size:.9rem;max-width:42ch}.login-word{display:none}.login-intro>.muted{display:none}.login-form-panel{padding:28px 25px;max-width:initial;width:100%;box-shadow:none;border:1px solid var(--line);border-radius:16px}.login-form-panel h2{font-size:1.4rem}.login-form-panel p{font-size:.85rem}.login-form-panel #login-form{margin-top:24px}.login-form-panel .button{font-size:.85rem}.login-form-panel .security-note{font-size:.65rem}.login-form-panel input{font-size:1.5rem}#toast{bottom:88px;left:50%;font-size:.8rem;padding:13px 17px;max-width:calc(100% - 36px);width:max-content}.empty-state{padding:35px 22px}.empty-state h2{font-size:1.2rem}.empty-state p{font-size:.85rem}}
@media(max-width:370px){.topbar{padding-inline:15px;gap:7px}.mobile-brand{font-size:.95rem;gap:7px}.small-mark{width:29px;height:29px;font-size:21px}.sync-button{max-width:110px;font-size:.6rem}.mobile-profile{width:33px}.topbar-actions{gap:5px}#main{padding-inline:16px}.page-heading h1{font-size:1.55rem}.today-feature{padding:24px 20px}.feature-character{width:52px}.feature-character>span:first-child{font-size:57px}.feature-character small{font-size:.6rem}.today-feature h2{font-size:1.45rem}.today-feature p{font-size:.8rem}.today-feature .button{font-size:.75rem;padding-inline:13px}.today-review{gap:0 12px}.review-line p{font-size:.7rem}.today-review>.button{font-size:.65rem;padding:8px 9px}.topic-tile{padding:12px 10px;gap:7px}.topic-tile>span:nth-child(2){font-size:.75rem}.teacher-banner>.button{margin-left:0;width:100%}.progress-summary dt{font-size:.6rem}.progress-summary dl{gap:10px}.practice-grid{gap:0 18px}.practice-tile strong{font-size:.85rem}.practice-tile>span:nth-child(2)>span{font-size:.7rem}.exercise-stage{padding:22px 14px}.exercise-progress>.hint{font-size:.6rem}.match-grid{gap:9px}.match-option{font-size:.7rem;padding:10px 7px;min-height:76px}.match-option .hanzi{font-size:1.3rem}.match-option svg{display:none}.topics-grid{gap:22px 17px}.topic-section p{font-size:.7rem}.topic-footer{align-items:flex-start;flex-direction:column;gap:7px}.topic-footer .button{width:100%}.topic-section h2{font-size:.95rem}.reader{padding:21px 16px}.reader-chinese{font-size:1.4rem}.book-row{grid-template-columns:58px minmax(0,1fr);gap:16px}.book-cover{min-height:95px}.book-cover small{display:none}.book-row h2{font-size:.9rem}.teacher-layout{gap:20px}.chat-messages{padding-inline:13px}.chat-composer{margin-inline:12px}.composer-actions .button{font-size:.7rem;padding-inline:11px}.call-panel{grid-template-columns:78px minmax(0,1fr) minmax(0,1fr);gap:0 10px}.call-panel>.button{font-size:.65rem;padding-inline:8px;gap:5px}.call-panel>.button svg{width:17px}.call-avatar{width:66px;height:66px}.login-page{padding-inline:20px}.login-intro h1{font-size:2.2rem}.login-form-panel{padding:25px 21px}.mobile-nav a{font-size:.55rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
.reader-word-popover{position:fixed;inset:auto;margin:0;padding:22px;background:var(--sheet);border:1px solid #bdcdb5;border-radius:14px;color:var(--ink);box-shadow:0 12px 38px #233d3529;z-index:60;max-height:calc(100vh - 100px);overflow:auto;font-family:var(--font)}.reader-word-popover::backdrop{background:transparent}.popover-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.popover-head .hanzi{font-size:1.8rem;margin-right:12px}.popover-head .pinyin{font-size:.9rem}.popover-head>.icon-button{width:30px;height:30px;margin:-4px -5px 0 0}.reader-word-popover h2{font-size:1.15rem;margin-bottom:13px}.reader-word-popover>p{font-size:.85rem;line-height:1.65;color:var(--muted)}.reader-word-popover .button{font-size:.75rem;min-height:38px;padding:9px 11px;gap:7px}
#hanzi-writer-box{max-width:100%;aspect-ratio:1;background:var(--sheet);border:1px solid #bdcbb3;border-radius:11px;touch-action:none;overflow:hidden}#hanzi-writer-box svg{display:block;max-width:100%;height:auto}.writing-tool>.button.wide{margin-top:20px;font-size:.85rem}
.earbuds-card{max-width:760px;margin:0 auto;text-align:center}.earbuds-state{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--green);font-size:.9rem;margin-bottom:25px}.earbuds-word{font-family:var(--chinese);font-size:3.5rem;line-height:1.8;overflow-wrap:anywhere}.earbuds-card>.pinyin{font-size:1.15rem;margin:4px auto 15px}.earbuds-translation{font-size:1.1rem;margin:0 auto 26px;color:var(--muted)}.earbuds-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin:28px 0}.earbuds-settings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;text-align:left;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.earbuds-settings>label{margin:0;font-size:.85rem}.earbuds-settings select{margin-top:9px}.earbuds-settings .check-label{font-size:.85rem;align-self:end}.earbuds-check{margin:27px 0 22px}.earbuds-check>.hint{margin:18px auto 0;max-width:55ch}.earbuds-card>.hint{margin:20px auto 0;max-width:65ch}.earbuds-card>.form-error{margin-inline:auto}
@media(max-width:700px){.earbuds-word{font-size:2.5rem;line-height:1.9}.earbuds-card>.pinyin{font-size:1rem}.earbuds-translation{font-size:.95rem}.earbuds-state{font-size:.8rem}.earbuds-controls{gap:8px}.earbuds-controls>.button{font-size:.75rem;padding:10px 12px}.earbuds-settings{gap:15px}.earbuds-settings>label,.earbuds-settings .check-label{font-size:.75rem}.earbuds-settings select{font-size:.8rem;padding-block:11px;padding-inline-start:11px}.earbuds-card>.hint{font-size:.7rem}.earbuds-check>.button{font-size:.8rem;min-height:46px}}
.word-picture{display:block;width:150px;height:150px;object-fit:contain;border-radius:14px;margin:0 auto 24px;background:#f7f7ee}.word-detail-body>.word-picture{width:130px;height:130px;margin-left:0}
.button,.button.small,.composer-actions .button,.conversation-starters .button,.reader-controls .button,.reader-paragraph-actions .button,.topic-footer .button,.today-review>.button,.book-row .button,.reader-word-popover .button{min-height:44px}.icon-button{width:44px;height:44px;min-width:44px}.message-audio{width:44px;height:44px}.check-label,.reading-question>label{min-height:44px}
.call-avatar,.teacher-monogram{position:relative;overflow:hidden}.call-avatar img,.teacher-monogram img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.library-materials-link{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#e6edde;border-radius:16px;padding:24px;text-decoration:none;margin-bottom:24px}.library-materials-link strong,.library-materials-link>span>span{display:block}.library-materials-link strong{font-size:1.1rem;margin-bottom:6px}.library-materials-link>span>span{font-size:.85rem;color:var(--muted)}.library-materials-link>span:last-child{font-size:1.6rem}.material-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:32px}.eyebrow,.material-language,.dictionary-source{font-size:.7rem;letter-spacing:.025em;color:var(--muted)}.eyebrow{margin-bottom:6px}.materials-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.material-tile{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:22px;background:var(--sheet);border:1px solid var(--line);border-radius:14px;text-decoration:none;min-width:0}.material-tile:hover{border-color:#91ad8a}.material-tile h3{font-size:1rem;line-height:1.5;margin:2px 0}.material-tile p{margin:0}.material-tile .inline-link{margin-top:auto;padding-top:12px}.material-tile-top{display:flex;width:100%;justify-content:space-between;align-items:center;gap:12px;font-size:.7rem}.material-type{color:var(--muted)}.material-ready{border-radius:6px;padding:4px 7px}.material-ready.ready{background:var(--green-soft);color:var(--green)}.material-ready.pending{background:#f3e9d5;color:#805d25}.material-note{max-width:80ch;color:var(--muted);margin-bottom:26px;font-size:.9rem}.material-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:32px}.material-tools{align-self:start;position:sticky;top:20px;min-width:0}.material-tools label{display:block;font-size:.8rem;margin:14px 0 7px}.material-tools select{width:100%}.material-cover{width:100%;max-height:300px;object-fit:contain;margin-bottom:20px}.material-tools .hint{font-size:.75rem;margin-top:14px}.material-reader{background:var(--sheet);border-radius:16px;padding:28px;min-width:0;align-self:start}.material-reader-heading h2{font-size:1.2rem}.material-paragraph{margin:24px 0;scroll-margin-top:24px}.material-paragraph p{white-space:normal;overflow-wrap:anywhere}.material-paragraph.material-chinese p{font-family:var(--chinese);font-size:1.55rem;line-height:2.15;margin-bottom:0}.material-paragraph.material-pinyin p{font-size:1.03rem;line-height:2;color:#5d6d64;white-space:pre-wrap}.material-language{display:block;margin-bottom:6px}.material-page-image{display:block;width:100%;height:auto}.material-reader figure{margin:20px 0}.material-player{padding-top:20px}.material-player audio,.material-player video{display:block;width:100%;max-width:100%;border-radius:10px}.material-player video{max-height:260px;background:#233d35}.material-play-actions{display:flex;gap:6px}.material-play-actions .button{flex:1;padding:10px 8px;font-size:.75rem}.material-time{display:flex;justify-content:space-between;gap:12px;font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:12px}.material-player input[type=range]{width:100%;padding:0;accent-color:var(--green);min-height:40px}.loop-points{display:flex;gap:8px;margin-top:15px}.loop-points .button{font-size:.7rem;flex:1;gap:4px;padding:8px}.material-tools .check-label{display:flex;align-items:center;gap:9px;font-size:.78rem}.material-pending{background:#f3ecd9;padding:24px;border-radius:14px;margin-bottom:24px}.material-pending h2{font-size:1.2rem}.material-pending p{font-size:.9rem;color:#6a603e}.pdf-controls{display:flex;gap:15px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.pdf-controls label{font-size:.8rem}.pdf-controls input{display:inline-block;width:85px;min-height:44px;margin-left:6px}.material-pdf{width:100%;height:75vh;min-height:450px;border:1px solid var(--line);border-radius:8px}.dictionary-entry{font-size:.8rem;line-height:1.65;padding:10px 0;border-bottom:1px solid var(--line)}.dictionary-entry p{margin:0 0 6px}.dictionary-source{margin-top:20px}.reader-word-popover #custom-word-form{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}#custom-word-form h3{font-size:1rem}#custom-word-form label{display:block;font-size:.75rem;margin-top:12px}#custom-word-form input:not([type=checkbox]){width:100%;margin-top:5px;font-size:.85rem}#custom-word-form .check-label{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:.7rem}#custom-word-form .hint{font-size:.72rem;line-height:1.6}.lesson-source-links{margin-top:32px;padding-top:25px;border-top:1px solid var(--line)}.lesson-source-links>div{margin:22px 0}.lesson-source-links h3{font-size:.95rem}.lesson-source-links p{font-size:.85rem;color:var(--muted)}
@media(max-width:1100px){.materials-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.material-layout{grid-template-columns:250px minmax(0,1fr);gap:22px}}
@media(max-width:800px){.material-layout{display:block}.material-tools{position:static;max-width:600px;margin-bottom:28px}.material-reader{padding:22px}.material-player{max-width:100%}.material-cover{max-width:150px;max-height:180px}.material-paragraph.material-chinese p{font-size:1.45rem}.materials-grid{gap:12px}}
@media(max-width:500px){.materials-grid{grid-template-columns:1fr}.material-tile{padding:20px}.material-filters{gap:6px}.material-filters .button{font-size:.72rem;padding:9px 10px}.material-reader{padding:18px}.material-reader-heading .hint{font-size:.75rem}.material-paragraph.material-chinese p{font-size:1.35rem;line-height:2.1}.library-materials-link{padding:21px}.library-materials-link strong{font-size:1rem}.library-materials-link>span>span{font-size:.75rem}.material-pdf{height:70vh;min-height:350px}.dictionary-source{font-size:.7rem}}

.reader-word-popover,.material-tile{overflow-wrap:anywhere}
/* Guided lessons and the reading room share the paper rhythm. */
.course-update{padding:18px 22px;border-left:1px solid var(--green);background:#eef0e6;margin-bottom:26px;border-radius:0 12px 12px 0}.course-update p{font-size:.85rem;margin:5px 0}.flow-top{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;font-size:.8rem;color:var(--muted);margin-bottom:25px}.flow-steps{display:flex;gap:6px;overflow:auto;padding:4px 2px 18px;margin-bottom:20px;scrollbar-width:thin}.flow-steps button{border:0;background:transparent;color:var(--muted);display:flex;gap:8px;align-items:center;min-width:max-content;padding:8px 10px;font-size:.75rem;border-radius:8px}.flow-steps button span{display:grid;place-items:center;width:25px;height:25px;border:1px solid var(--line);border-radius:50%;font-variant-numeric:tabular-nums}.flow-steps button.current{background:var(--green-soft);color:var(--green);font-weight:600}.flow-steps button.current span{background:var(--green);color:#fff;border-color:var(--green)}.flow-steps button.visited span{border-color:#9eb59b;color:var(--green)}.flow-work{max-width:820px;margin-inline:auto;background:var(--sheet);border:1px solid var(--line);padding:36px 42px;border-radius:16px;min-width:0}.flow-stage-heading{margin-bottom:25px;border-bottom:1px solid var(--line);padding-bottom:18px}.flow-stage-heading h2{font-size:1rem;color:var(--muted);margin:0}.flow-goals{display:grid;gap:12px;list-style:none;padding:0;margin:0 0 30px}.flow-goals li{display:flex;gap:10px;align-items:flex-start;font-size:.95rem}.flow-goals svg{color:var(--green);margin-top:3px}.flow-explanation{margin:25px 0 30px}.flow-explanation h3{font-size:1.5rem;line-height:1.4}.flow-explanation>p:not(.hint){font-size:1.1rem;line-height:1.95;white-space:pre-line}.flow-work details{margin:20px 0}.flow-work summary,.flow-reference>summary{cursor:pointer;color:var(--green);padding:8px 0;font-size:.9rem}.flow-example{background:#f2f4eb;border-radius:12px;padding:18px 22px;margin:16px 0}.flow-example>p:first-child{font-family:var(--chinese);font-size:1.65rem;margin-bottom:4px;line-height:1.7}.flow-example .pinyin{margin-bottom:8px}.flow-example>p:not(:first-child){font-size:.9rem}.flow-example .flow-audio{margin-top:3px}.flow-navigation{max-width:820px;margin:24px auto 0;display:flex;justify-content:space-between;gap:16px}.flow-reference{max-width:820px;margin:30px auto;padding:0 4px}.flow-reference>section{padding-top:20px}.flow-word{text-align:center}.flow-hanzi{font-family:var(--chinese);font-size:3.7rem;line-height:1.55;margin:12px 0 4px;overflow-wrap:anywhere}.flow-word .large-pinyin{margin-bottom:22px}.flow-audio{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:10px;max-width:370px}.flow-word>.flow-audio{margin-inline:auto}.flow-word-meaning{text-align:left;max-width:570px;margin:26px auto 0;padding-top:24px;border-top:1px solid var(--line)}.flow-word-meaning h3{font-size:1.4rem}.flow-word-image{width:130px;height:130px;object-fit:contain;float:right;margin:0 0 15px 20px;border-radius:14px}.flow-word-meaning p{line-height:1.8}.flow-feedback{margin:24px 0;padding:20px;background:#f1f4ec;border-radius:12px}.flow-feedback.incorrect-text{background:var(--red-soft)}.flow-feedback .practice-model{color:var(--ink)}.flow-phrase .token-bank{margin:22px 0}.sentence-tray{min-height:80px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:14px;border:1px dashed #a9bca5;border-radius:12px;background:#f8f8f1;font-family:var(--chinese);font-size:1.7rem;margin:20px 0}.sentence-tray button{background:var(--green-soft);border:0;border-radius:8px;padding:10px;font-size:1.4rem}.token-bank{display:flex;gap:10px;flex-wrap:wrap}.token{display:inline-flex;align-items:center;justify-content:center;background:var(--sheet);border:1px solid #bacbb4;border-radius:9px;min-width:44px;min-height:48px;padding:10px 15px;font-size:1.4rem}.flow-transcript{margin-top:22px;background:#f1f3e9;padding:20px;border-radius:12px}.flow-transcript>p{overflow-wrap:anywhere}.flow-transcript .button{margin-top:14px}.voice-stage{font-size:.9rem;padding:13px 16px;background:var(--green-soft);border-radius:10px;line-height:1.6;margin:18px 0}.flow-teacher{display:flex;gap:12px;align-items:center;color:var(--muted);font-size:.8rem}.flow-teacher img{width:46px;height:46px;border-radius:50%}.flow-dialogue-question{border-left:1px solid #a0b59b;padding:15px 22px;margin:20px 0 30px}.flow-dialogue-question>p:first-child{font-family:var(--chinese);font-size:1.8rem;margin:0 0 8px}.flow-dialogue .answer-option{display:flex;flex-direction:column;align-items:flex-start;gap:5px}.flow-dialogue .answer-option>span{font-family:var(--chinese);font-size:1.35rem}.flow-dialogue .answer-option small{font-size:.8rem;font-weight:400}.flow-result ul{list-style:none;padding:0;display:grid;gap:12px}.flow-result li{display:flex;gap:10px;align-items:flex-start}.flow-result dl{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:30px 0}.flow-result dt{font-size:.8rem;color:var(--muted)}.flow-result dd{margin:5px 0;font-size:1.1rem}.flow-result-actions{display:flex;gap:12px;flex-wrap:wrap}.flow-result-actions~.hint{margin-top:16px}ruby{ruby-position:over;line-height:2.3}rt{font-family:var(--font);font-size:.55em;color:var(--muted);font-weight:400;letter-spacing:.01em}.practice-activity{max-width:680px;margin:auto}.practice-activity>p:first-child{font-size:1rem}.practice-pinyin-cue{font-size:2.1rem;letter-spacing:.025em;margin:24px 0}.practice-russian-cue{font-size:1.8rem;margin:24px 0}.practice-help{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:24px;border-top:1px solid var(--line);padding-top:12px}.practice-help .text-button{font-size:.8rem}.practice-status{color:var(--muted);font-size:.85rem;margin-top:18px}.practice-model>p:first-child{font-family:var(--chinese);font-size:1.8rem;margin:10px 0}.practice-activity input+.button{margin:14px 0}.pinyin-keyboard{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.pinyin-keyboard .token{font-size:1.2rem;padding:8px;min-width:39px;min-height:44px}.matching-rate{max-width:230px;font-size:.8rem;margin:20px 0}.matching-rate select{margin-top:7px}.match-option small{display:block;font-weight:400;font-size:.75rem;margin-top:3px}.match-option.selected{background:#e4eddd;border-color:var(--green);box-shadow:0 0 0 1px var(--green)}.practice-activity .listen-large{display:inline-flex;margin:15px 15px 15px 0}.story-speaker{font-size:.75rem;color:var(--muted);font-weight:600;margin:0 0 4px}.teacher-guided .chat-composer{display:block}.teacher-guided .composer-actions{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}.teacher-guided .call-panel>label{margin-top:18px;font-size:.8rem}.teacher-guided .call-panel>button{margin-top:14px}.teacher-lesson-context{font-size:.85rem}.teacher-recognition{border-top:1px solid var(--line);padding:14px 20px;font-size:.85rem}.teacher-recognition summary{cursor:pointer;color:var(--green)}.teacher-recognition p{margin:12px 0 0;overflow-wrap:anywhere}.teacher-autosend{padding:20px;background:var(--amber-soft);margin:0 20px;border-radius:12px;overflow-wrap:anywhere}.teacher-autosend p{font-size:.85rem;margin:8px 0}.teacher-autosend .button{margin:5px 8px 0 0}.teacher-guided .chat-error{margin:0 20px 12px}.teacher-guided .chat-panel{min-width:0}.teacher-guided .chat-messages{min-height:250px;max-height:56vh}.teacher-guided .chat-composer label{font-size:.8rem}.teacher-guided .chat-composer textarea{min-height:90px}.teacher-guided .chat-footnote{font-size:.7rem;padding:0 20px 18px}.book-row{display:grid;grid-template-columns:90px minmax(0,1fr);gap:25px;border-bottom:1px solid var(--line);padding:28px 0}.book-row h3{font-size:1.1rem;line-height:1.55;overflow-wrap:anywhere}.book-row p{font-size:.85rem}.book-cover{height:125px;border-radius:5px 14px 14px 5px;background:#dfe7d5;border-left:6px solid #b1c5a5;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--green);gap:8px}.book-cover>span{font-family:var(--chinese);font-size:2.8rem}.book-cover small{font-size:.65rem;text-align:center;max-width:70px;overflow-wrap:anywhere}.book-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:30px}.book-tools{position:sticky;top:20px;align-self:start;min-width:0}.book-tools select{font-size:.8rem}.book-page-form{margin:20px 0}.book-page-form>div{display:flex;gap:8px}.book-page-form input{width:80px;min-width:0;border:1px solid #bdc9b7;border-radius:8px;padding:8px;background:var(--sheet)}.book-paper{background:var(--sheet);padding:36px 40px;border-radius:16px;min-width:0}.book-page-heading{font-size:.75rem;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:25px}.book-page-heading h2{margin-top:10px;font-size:1.2rem}.book-block{scroll-margin-top:24px;margin:20px 0;overflow-wrap:anywhere}.book-block>p{white-space:normal;line-height:1.9;font-size:1rem}.book-block h2{font-size:1.5rem;line-height:1.5;margin:26px 0 14px}.book-block.book-zh>p{font-family:var(--chinese);font-size:1.65rem;line-height:2}.book-language{font-size:.65rem;color:var(--muted)}.book-pinyin>p{color:var(--muted)}.book-block figure{margin:25px 0;text-align:center}.book-block img{max-width:100%;height:auto;max-height:700px;object-fit:contain}.book-block figcaption{font-size:.75rem;color:var(--muted);margin-top:10px}.book-table-scroll{max-width:100%;overflow:auto}.book-table-scroll table{border-collapse:collapse;min-width:100%;font-size:.95rem}.book-table-scroll td{border:1px solid var(--line);padding:12px;min-width:100px;vertical-align:top}.book-table-scroll tr:first-child{background:#eef2e7}.book-pagination{border-top:1px solid var(--line);padding-top:25px;margin-top:35px;display:flex;gap:12px;align-items:center;justify-content:space-between}.book-pagination>span{font-size:.75rem;color:var(--muted);white-space:nowrap}.book-pagination .button{font-size:.8rem}.book-source-warning{font-size:.75rem;color:var(--muted);background:#f4eedc;border-radius:8px;padding:10px 14px}.book-recognition-notes{font-size:.75rem;color:var(--muted)}.book-recognition-notes summary{cursor:pointer;padding:8px 0}.book-linked-lessons{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}.book-linked-lessons h3{font-size:.85rem}.book-linked-lessons a{display:block}.book-topics .text-button{display:block;text-align:left;font-size:.8rem}.tone-practice{max-width:850px}.tone-practice-list{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:30px;max-height:180px;overflow:auto;padding:4px}.tone-practice-word{text-align:center;background:var(--sheet);padding:30px;border:1px solid var(--line);border-radius:16px}.tone-practice-word p{margin-inline:auto}.tone-practice-word .action-wrap{justify-content:center}.tone-contour-result{margin-top:30px;background:var(--sheet);border-radius:16px;padding:26px}.tone-contour-result h2{font-size:1.2rem}.tone-contour{width:100%;height:auto;margin:10px 0;display:block}.contour-axis{stroke:#cbd4c4;stroke-width:1;fill:none}.contour-reference{stroke:var(--green);stroke-width:3;fill:none;stroke-linecap:round}.contour-recording{stroke:#b86b48;stroke-width:3;fill:none;stroke-linecap:round}.tone-practice>.notice{margin-top:25px;font-size:.85rem}.tone-practice .button.small{font-size:.75rem}
@media(max-width:1050px){.book-layout{grid-template-columns:180px minmax(0,1fr);gap:20px}.book-paper{padding:26px}.flow-work{padding:28px}.flow-top{font-size:.75rem}.flow-top>a:last-child{font-size:.75rem}}
@media(max-width:700px){.flow-work{padding:22px 18px;border-radius:14px}.flow-top{margin-bottom:20px}.flow-top>span{order:3;width:100%}.flow-steps{margin-inline:-6px}.flow-steps button{font-size:.7rem;padding:7px}.flow-explanation h3{font-size:1.25rem}.flow-explanation>p:not(.hint){font-size:1rem}.flow-goals li{font-size:.85rem}.flow-hanzi{font-size:3rem}.flow-example{padding:16px}.flow-example>p:first-child{font-size:1.4rem}.flow-navigation{gap:10px}.flow-navigation .button{font-size:.8rem;padding:12px 14px}.flow-result dl{grid-template-columns:1fr}.flow-word-image{width:100px;height:100px}.flow-transcript{padding:16px}.flow-dialogue-question{padding:14px}.practice-help{gap:4px 12px}.practice-help .text-button{font-size:.75rem}.practice-pinyin-cue{font-size:1.7rem}.practice-russian-cue{font-size:1.5rem}.flow-result-actions{flex-direction:column;align-items:stretch}.book-layout{display:flex;flex-direction:column;gap:20px}.book-tools{position:static;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 20px;width:100%}.book-tools>label{grid-column:1/-1;margin:0}.book-tools>select{grid-column:1/-1}.book-page-form{margin:0}.book-tools>p,.book-linked-lessons{grid-column:1/-1}.book-paper{padding:24px 18px;border-radius:12px}.book-block.book-zh>p{font-size:1.45rem}.book-block>p{font-size:.95rem}.book-row{grid-template-columns:60px minmax(0,1fr);gap:16px}.book-cover{height:95px;border-left-width:4px}.book-cover>span{font-size:2rem}.book-cover small{font-size:.55rem;max-width:45px}.book-row h3{font-size:1rem}.book-pagination{flex-wrap:wrap;gap:10px}.book-pagination>span{order:-1;width:100%;text-align:center}.book-pagination .button{flex:1;font-size:.72rem;padding:12px 9px}.teacher-guided .composer-actions .button{font-size:.8rem;padding:12px}.teacher-guided .chat-messages{max-height:50vh}.teacher-guided .chat-composer{padding:16px}.tone-practice-word{padding:22px 16px}.tone-contour-result{padding:22px 16px}.tone-practice-list{max-height:155px}.course-update{padding:16px}.course-update .inline-link{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){.flow-navigation,.flow-steps,.tone-contour{scroll-behavior:auto}}
.book-vocabulary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 20px}.book-vocabulary-item{min-width:0;text-align:center;align-self:start}.book-vocabulary-item>img{width:100%;height:125px;object-fit:contain;margin-bottom:14px}.book-vocabulary-item p{margin:3px 0;line-height:1.6;font-size:.9rem}.book-vocabulary-item p.vocabulary-hanzi{font-family:var(--chinese);font-size:1.8rem}.book-vocabulary-item p.pinyin{font-size:.85rem}.book-vocabulary-item p.hint{font-size:.7rem}@media(max-width:1050px){.book-vocabulary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:450px){.book-vocabulary{gap:22px 12px}.book-vocabulary-item>img{height:95px}.book-vocabulary-item p.vocabulary-hanzi{font-size:1.5rem}}@media(max-width:340px){.book-vocabulary{grid-template-columns:1fr}.book-vocabulary-item{display:grid;grid-template-columns:95px minmax(0,1fr);gap:14px;text-align:left}.book-vocabulary-item>img{height:105px;margin:0}}
.book-source-audio{margin:0 0 24px;padding-bottom:20px;border-bottom:1px solid var(--line);min-width:0}.book-source-audio h3{font-size:.95rem}.book-source-audio audio{display:block;width:100%;min-width:0;margin:12px 0}.book-source-audio label{font-size:.75rem;margin-top:12px}.book-source-audio .hint{font-size:.7rem;margin:12px 0 0}.book-source-audio select{font-size:.75rem}@media(max-width:700px){.book-source-audio{grid-column:1/-1}.book-source-audio audio{max-width:100%}}

.flow-tone-link{margin:0 0 26px;padding-bottom:18px;border-bottom:1px solid var(--line)}.flow-tone-link .hint{margin:10px 0 0;font-size:.75rem}
