@import"https://fonts.googleapis.com/css2?family=Nunito:wght@600;700;800;900&family=Noto+Sans+SC:wght@500;600;700;800;900&display=swap";:root{font-family:Nunito,Noto Sans SC,system-ui,sans-serif;color:#263248;background:#fff8ed;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}.route-message{min-height:100vh;display:grid;place-content:center;gap:12px;text-align:center;background:#fff8ee;color:#29415f;font-size:24px}.route-message--error strong{color:#b53b2b}.lesson-progress{width:min(620px,88vw);margin:8px auto 18px;color:#52677e;font-weight:700}.lesson-progress>div{display:flex;gap:8px;margin-top:8px}.lesson-progress i{height:7px;flex:1;border-radius:99px;background:#e5e9ef}.lesson-progress i.done{background:#ff8758}.lesson-summary{margin-top:22px;padding:20px;border-radius:22px;background:#fff8ee;display:grid;gap:12px}.lesson-summary>div{display:flex;flex-wrap:wrap;gap:8px}.lesson-summary button{border:1px solid #e6d9cb;border-radius:999px;padding:9px 14px;background:#fff;color:#44566b;cursor:pointer}.lesson-summary button.active{color:#fff;border-color:#ff7849;background:#ff7849}.audio-fallback-note{margin:-6px auto 14px;color:#806f5c;font-size:14px}button{font:inherit}button:focus-visible{outline:4px solid rgba(47,126,247,.3);outline-offset:3px}.app-shell{min-height:100vh;position:relative;overflow:hidden;padding:clamp(20px,2.4vw,42px) clamp(22px,4vw,76px) 54px;background:radial-gradient(circle at 10% 5%,rgba(255,217,139,.38),transparent 24%),linear-gradient(145deg,#fffaf1,#fffdf9 53%,#f2f8ff)}.app-shell:before{content:"";position:absolute;inset:0;opacity:.28;pointer-events:none;background-image:radial-gradient(#d7bea0 .8px,transparent .8px);background-size:22px 22px;-webkit-mask-image:linear-gradient(to bottom,black,transparent 60%);mask-image:linear-gradient(to bottom,black,transparent 60%)}.ambient{position:absolute;border-radius:999px;filter:blur(1px);pointer-events:none}.ambient--one{width:260px;height:260px;right:-80px;top:190px;background:#61b7ff1f}.ambient--two{width:180px;height:180px;left:-70px;top:540px;background:#ffa3661c}header,.hero,.results{position:relative;z-index:1;max-width:1700px;margin-inline:auto}header{display:flex;align-items:center;justify-content:space-between}.unit-mark{display:flex;align-items:center;gap:14px}.unit-mark span{border-radius:999px;padding:8px 13px;color:#fff;background:#ff8a4c;font-weight:900;letter-spacing:.12em;box-shadow:0 7px 18px #e064272e}.unit-mark strong{color:#54647b;font-size:1.08rem}.challenge-title{display:flex;align-items:center;gap:16px;text-align:right}.challenge-title div{display:grid}.challenge-title span{color:#6e7c91;font-size:.88rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.challenge-title strong{color:#263248;font-size:1.16rem}.icon-button{display:grid;place-items:center;width:46px;height:46px;border:1px solid #e3e7ed;border-radius:14px;color:#53627a;background:#ffffffd1;cursor:pointer}.hero{min-height:calc(100vh - 112px);display:flex;align-items:center;flex-direction:column;justify-content:center;padding:48px 0 62px;text-align:center}.mode-banner{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px;min-height:40px;padding:9px 16px;border-radius:999px;font-size:.9rem}.mode-banner--mock{color:#925c0b;border:1px solid #f0d59c;background:#fff6d9}.mode-banner--aliyun{color:#166640;border:1px solid #b7e0cb;background:#e8f8f0}.mode-banner small{font-size:.82rem;opacity:.82}.mode-dot,.recording-dot{width:9px;height:9px;border-radius:50%;background:currentColor}.eyebrow{margin:clamp(34px,5vh,62px) 0 15px;color:#ff8246;font-size:.88rem;font-weight:900;letter-spacing:.16em}h1{max-width:1500px;margin:0;color:#253249;font-size:clamp(2.5rem,5.1vw,6.2rem);font-weight:900;letter-spacing:-.045em;line-height:1.12}h1 span{position:relative;color:#f26f39}h1 span:after{content:"";position:absolute;left:4%;right:3%;bottom:-7px;height:7px;border-radius:100%;background:#ffd26f;transform:rotate(-1deg)}.sentence-tip{margin:28px 0 34px;color:#718096;font-size:clamp(1rem,1.35vw,1.35rem);font-weight:700}.actions{display:flex;flex-wrap:wrap;justify-content:center;gap:14px}.button{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:0 25px;border:0;border-radius:18px;font-size:1.06rem;font-weight:900;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}.button:hover:not(:disabled){transform:translateY(-3px)}.button:disabled{cursor:not-allowed;opacity:.62}.button--listen{color:#2f6bb8;border:1px solid #c7ddfa;background:#edf6ff}.button--start{min-width:190px;color:#fff;background:linear-gradient(135deg,#ff9051,#f16636);box-shadow:0 13px 30px #df612f47}.button--stop{color:#fff;background:linear-gradient(135deg,#ef5a61,#cc3944);box-shadow:0 13px 30px #ce39443b}.button--student{color:#38684f;border:1px solid #c1dfcf;background:#effaf4}.ready-prompt{position:fixed;inset:0;z-index:20;display:grid;place-content:center;text-align:center;color:#fff;background:#273a4ead;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}.ready-prompt strong{font-size:clamp(4rem,10vw,8rem);font-weight:900;animation:ready-pop .72s cubic-bezier(.18,.88,.32,1.2) both}.ready-prompt p{margin:8px 0 0;font-size:1.35rem;font-weight:800}@keyframes ready-pop{0%{transform:scale(.72);opacity:0}65%{transform:scale(1.06);opacity:1}to{transform:scale(1);opacity:1}}.recording-panel,.processing,.error-card{width:min(690px,92vw);margin-top:26px;border:1px solid rgba(222,226,234,.9);border-radius:22px;background:#ffffffdb;box-shadow:0 18px 48px #434c5d1c}.recording-panel{padding:17px 23px 20px}.recording-label{display:flex;align-items:center;gap:9px;color:#dc4951;font-weight:900}.recording-label strong{margin-left:auto;color:#657186;font-variant-numeric:tabular-nums}.recording-dot{animation:pulse 1.1s ease infinite}.recording-panel:before{content:"🎙";float:right;font-size:1.45rem;animation:mic-breathe 1.2s ease-in-out infinite}.recording-hint{margin:4px 0 0 27px;color:#78859a;font-size:.82rem;font-weight:700}@keyframes pulse{50%{transform:scale(1.65);opacity:.45}}@keyframes mic-breathe{50%{transform:scale(1.08);opacity:.7}}.waveform{height:66px;display:flex;align-items:center;justify-content:center;gap:5px;margin-top:8px}.waveform i{width:6px;min-height:8px;border-radius:999px;background:linear-gradient(to top,#ff8751,#ffd06b);transition:height 90ms ease}.processing{position:relative;overflow:hidden;display:flex;align-items:center;gap:15px;padding:19px 23px;color:#336eaa;text-align:left}.processing div{display:grid}.processing span{margin-top:3px;color:#78869b;font-size:.9rem}.processing i{position:absolute;left:0;bottom:0;width:44%;height:4px;border-radius:999px;background:#4da1ef;animation:scan 1.4s ease-in-out infinite alternate}@keyframes scan{to{left:56%}}.error-card{padding:20px 24px;color:#8b3541}.error-card p{margin:5px 0 14px;color:#6f5660}.error-card div{display:flex;justify-content:center;gap:10px}.error-card button,.result-footer button{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border:1px solid #ead5d8;border-radius:12px;color:inherit;background:#fff;font-weight:800;cursor:pointer}.results{padding-top:25px;scroll-margin-top:15px}.student-results{display:grid;gap:22px}.star-result{position:relative;overflow:hidden;display:grid;place-items:center;min-height:285px;padding:30px;border:1px solid #eadfce;border-radius:30px;background:linear-gradient(145deg,#fffdf7,#fff6e5);box-shadow:0 18px 52px #4b463917;text-align:center}.stars{display:flex;gap:15px;font-size:clamp(4.2rem,8vw,7rem);line-height:1}.stars span{color:#dfe2e6;filter:drop-shadow(0 5px 8px rgba(99,87,57,.08))}.stars span.is-lit{color:#ffc845;animation:star-light .42s ease-out both}.stars span:nth-child(2){animation-delay:.12s}.stars span:nth-child(3){animation-delay:.24s}@keyframes star-light{0%{opacity:.2;transform:scale(.55) rotate(-10deg)}70%{transform:scale(1.14) rotate(3deg)}to{opacity:1;transform:scale(1) rotate(0)}}.star-result h2{margin:10px 0 0;color:#2f4660;font-size:clamp(2rem,3.4vw,3.2rem)}.star-result p{margin:4px 0;color:#55708b;font-size:1.25rem;font-weight:800}.star-result small{color:#7d6843;font-size:1rem;font-weight:800}.confetti{position:absolute;inset:0;pointer-events:none}.confetti i{position:absolute;top:-20px;left:calc(8% + var(--confetti-x, 0%));width:9px;height:17px;border-radius:3px;background:#ff8b61;animation:confetti-fall 1.25s ease-out both}.confetti i:nth-child(2n){background:#58bfa8}.confetti i:nth-child(3n){background:#6f9fe8}.confetti i:nth-child(4n){background:#ffc845}.confetti i:nth-child(1){left:9%}.confetti i:nth-child(2){left:18%;animation-delay:.1s}.confetti i:nth-child(3){left:28%;animation-delay:40ms}.confetti i:nth-child(4){left:39%;animation-delay:.16s}.confetti i:nth-child(5){left:49%;animation-delay:70ms}.confetti i:nth-child(6){left:59%;animation-delay:.2s}.confetti i:nth-child(7){left:69%;animation-delay:.12s}.confetti i:nth-child(8){left:78%;animation-delay:20ms}.confetti i:nth-child(9){left:87%;animation-delay:.18s}.confetti i:nth-child(10){left:94%;animation-delay:80ms}@keyframes confetti-fall{to{transform:translateY(290px) rotate(220deg);opacity:0}}.student-result-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.student-result-actions button{display:inline-flex;align-items:center;gap:7px;padding:12px 18px;border:1px solid #dce3e8;border-radius:14px;color:#526075;background:#fff;font-weight:900;cursor:pointer}.student-result-actions .footer-primary{color:#fff;border-color:#f0753d;background:#f0753d}.student-safety-note{margin:0;color:#7a8799;font-size:.84rem;font-weight:700;text-align:center}.result-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:30px}.result-heading span,.section-title span{color:#ef7942;font-size:.8rem;font-weight:900;letter-spacing:.14em}.result-heading h2{margin:8px 0 0;font-size:clamp(1.45rem,2vw,2.25rem);line-height:1.3}.overall-pill{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:12px 16px 12px 20px;border:1px solid #e5e7ea;border-radius:18px;color:#677387;background:#fff;font-weight:800}.overall-pill>span{display:grid;gap:2px}.overall-pill small{color:#a07324;font-size:.68rem;font-weight:900}.overall-pill strong{display:grid;place-items:center;min-width:54px;height:54px;border-radius:14px;color:#fff;background:#576a86;font-size:1.6rem}.score-grid{display:grid;grid-template-columns:1.28fr repeat(4,1fr);gap:16px;padding:23px;border:1px solid #e6e8eb;border-radius:28px;background:#ffffffd6;box-shadow:0 18px 52px #40495714}.score-ring{min-width:0;display:grid;place-items:center;padding:17px 10px 13px;border-radius:20px;background:#f9fafb}.score-ring--primary{background:linear-gradient(145deg,#fff1e5,#fff9f3);box-shadow:inset 0 0 0 2px #f4804638}.score-ring__inner{display:grid;place-items:center;align-content:center;width:clamp(92px,8vw,124px);height:clamp(92px,8vw,124px);border-radius:50%;background:radial-gradient(closest-side,#fff 80%,transparent 81% 99%),conic-gradient(#f47e48 var(--score-angle),#e8ebef 0)}.score-ring:not(.score-ring--primary) .score-ring__inner{background:radial-gradient(closest-side,#fff 80%,transparent 81% 99%),conic-gradient(#4c91d8 var(--score-angle),#e8ebef 0)}.score-ring__inner strong{font-size:clamp(1.6rem,2.5vw,2.65rem);line-height:1}.score-ring__inner span{color:#8993a3;font-size:.72rem;font-weight:800}.score-ring p{min-height:1.5em;margin:11px 0 0;color:#5d6b80;font-size:clamp(.78rem,1vw,1rem);font-weight:900;text-align:center}.score-ring--primary p{color:#d35f2a}.result-body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(350px,.75fr);gap:22px;margin-top:22px}.word-section,.word-detail{border:1px solid #e6e8eb;border-radius:28px;background:#ffffffe3;box-shadow:0 18px 52px #40495712}.word-section{padding:28px}.section-title{display:flex;align-items:end;justify-content:space-between;gap:20px}.section-title h2{margin:4px 0 0;font-size:1.5rem}.section-title p{color:#8a94a3;font-size:.88rem;font-weight:700}.word-grid{display:grid;grid-template-columns:repeat(7,minmax(82px,1fr));gap:10px;margin-top:24px}.word-card{position:relative;min-width:0;min-height:138px;display:grid;place-items:center;align-content:center;gap:5px;padding:23px 7px 12px;border:2px solid transparent;border-radius:18px;color:#37445a;background:#f7f9fa;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.word-card:hover{transform:translateY(-3px)}.word-card.is-active{border-color:#f28a54;box-shadow:0 9px 22px #db6f3b26}.word-card--great{background:#eff9f3}.word-card--okay{background:#fff8e7}.word-card--practice{background:#fff5e7}.word-card--missing{background:#fff0ed}.word-card--repeat{background:#f6efff}.focus-flag{position:absolute;top:-10px;padding:4px 8px;border-radius:999px;color:#fff;background:#f0753d;font-size:.64rem;font-weight:900;white-space:nowrap}.word-card__word{overflow:hidden;max-width:100%;font-size:clamp(1rem,1.35vw,1.3rem);font-weight:900;text-overflow:ellipsis}.word-card__score{display:flex;align-items:center;gap:5px;font-size:.9rem;font-weight:900}.word-card__score b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;color:#fff;background:#61a87d;font-size:.72rem}.word-card--okay .word-card__score b{background:#e3a234}.word-card--practice .word-card__score b{background:#e49a33}.word-card--missing .word-card__score b{background:#df5d57}.word-card--repeat .word-card__score b{background:#9067c4}.word-card__label{color:#7d8999;font-size:.72rem;font-weight:800}.reading-facts{display:flex;gap:10px;margin-top:18px}.reading-facts span,.issue-tags span{padding:7px 11px;border-radius:999px;color:#657287;background:#f1f4f6;font-size:.78rem;font-weight:800}.word-detail{padding:27px}.word-detail__head{display:flex;align-items:center;justify-content:space-between}.word-detail__head span{color:#ec7540;font-size:.75rem;font-weight:900}.word-detail__head h3{margin:2px 0 0;font-size:2.2rem}.word-detail__head>strong{color:#e06b35;font-size:1.3rem}.issue-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}.issue-tags span.is-alert{color:#a94b34;background:#ffe8e2}.phones{display:grid;grid-template-columns:repeat(auto-fit,minmax(95px,1fr));gap:8px;margin-top:20px}.phone{display:grid;place-items:center;padding:14px 7px;border-radius:16px;text-align:center}.phone--high{background:#eaf8ef}.phone--mid{background:#fff5db}.phone--low{background:#ffe9e5}.phone--empty{background:#f1f3f5}.phone__symbol{font-size:1.18rem;font-weight:900}.phone strong{margin:4px 0;font-size:1.35rem}.phone small{color:#7d8796}.phone em{margin-top:7px;color:#626e80;font-size:.64rem;font-style:normal;font-weight:800;line-height:1.35}.no-phones{padding:17px;border-radius:14px;color:#7d8897;background:#f5f6f7;text-align:center}.coach-note{margin-top:18px;padding:16px;border-radius:17px;background:#fff7e7}.coach-note span{color:#cb6d27;font-size:.76rem;font-weight:900}.coach-note p{margin:6px 0 0;color:#65513d;font-size:.92rem;font-weight:700;line-height:1.65}.coach-note strong{color:#b96125;font-size:1.05rem}.coach-note small{display:block;margin-top:7px;color:#7b6b58;font-weight:700}.teacher-details{border:1px solid #dde3e8;border-radius:20px;color:#546276;background:#ffffffe6}.teacher-details>summary{padding:16px 20px;cursor:pointer;font-weight:900}.teacher-details>summary span{margin-left:8px;color:#8590a0;font-weight:700}.teacher-details[open]{padding:0 20px 20px}.teacher-score-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:8px;padding-top:8px}.teacher-score-grid span{display:grid;gap:4px;padding:11px;border-radius:12px;background:#f4f6f8;font-size:.72rem}.teacher-score-grid strong{color:#32465f;font-size:1.05rem}.teacher-details>p{overflow-wrap:anywhere;margin:10px 0;font-size:.82rem}.teacher-words{display:grid;gap:7px;margin-top:14px}.teacher-words>div{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:9px 11px;border-radius:11px;background:#f7f8fa;font-size:.78rem}.teacher-words small{color:#697589}.raw-result pre{max-height:320px;overflow:auto;padding:12px;border-radius:10px;background:#202733;color:#eef3f8;font-size:.7rem;white-space:pre-wrap}.lesson-summary h3{margin:0;color:#e16f38;font-size:1.45rem}.lesson-summary p{margin:0;color:#52677e;font-weight:900}.result-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:26px 3px 10px}.result-footer p{color:#7a8799;font-size:.84rem;font-weight:700}.result-footer div{display:flex;gap:10px}.result-footer .footer-note{display:block}.teacher-debug{margin-top:.55rem;color:#657186;font-size:.78rem}.teacher-debug summary{cursor:pointer;font-weight:800}.teacher-debug span{display:block;margin-top:.25rem;overflow-wrap:anywhere}.result-footer button{color:#526075;border-color:#dde2e7}.result-footer .footer-primary{color:#fff;border-color:#f0753d;background:#f0753d}@media(max-width:1100px){.hero{min-height:auto;padding-block:70px 95px}.score-grid{grid-template-columns:repeat(3,1fr)}.score-ring--primary{grid-column:span 1}.result-body{grid-template-columns:1fr}.word-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:680px){.app-shell{padding:18px 15px 38px}.unit-mark strong,.challenge-title div{display:none}.hero{padding:52px 0 70px}.mode-banner small,.actions{width:100%}.button{flex:1 1 44%;padding-inline:13px}.score-grid{grid-template-columns:repeat(2,1fr);padding:13px}.score-ring--primary{grid-column:span 2}.result-heading,.section-title,.result-footer{align-items:flex-start;flex-direction:column}.word-section,.word-detail{padding:19px}.word-grid{grid-template-columns:repeat(2,1fr)}.result-footer div{width:100%}.result-footer button{flex:1;justify-content:center}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
