:root{--sky:#70c9ee;--blue:#268de8;--blue-dark:#185ca8;--coral:#ff6f7d;--yellow:#ffd94b;--mint:#44cbb7;--ink:#26354a;--muted:#718096;--line:#dbe8f4;--paper:#fff;--bg:#eef8fd;--shadow:0 18px 50px rgba(48,105,146,.14);font-family:"Nunito","Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 15% 8%,#fff 0 7%,transparent 30%),linear-gradient(145deg,#effaff,#eaf5fd 55%,#fff6ef);font-size:16px}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(38,141,232,.25);outline-offset:2px}[hidden]{display:none!important}.muted{color:var(--muted)}.eyebrow{display:block;color:var(--blue);font-size:.75rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.toast{position:fixed;z-index:100;top:22px;left:50%;transform:translate(-50%,-150%);padding:13px 22px;border-radius:999px;background:#203a59;color:#fff;box-shadow:var(--shadow);transition:.25s}.toast.show{transform:translate(-50%,0)}.site-footer{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 18px;min-height:64px;padding:18px 20px;border-top:1px solid rgba(116,151,180,.22);background:rgba(255,255,255,.82);color:var(--muted);font-size:.86rem;text-align:center}.site-footer a{color:var(--blue-dark);text-decoration:none}.site-footer a:hover,.site-footer a:focus-visible{text-decoration:underline}@media(max-width:680px){.site-footer{flex-direction:column;gap:8px}}
.login-view{min-height:100vh;display:grid;grid-template-columns:minmax(360px,560px) 1fr;align-items:center;gap:6vw;padding:6vw;overflow:hidden}.login-card{position:relative;z-index:2;background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.9);border-radius:36px;padding:42px;box-shadow:var(--shadow);backdrop-filter:blur(14px)}.login-logo{display:block;width:min(410px,100%);height:auto;margin:0 auto 8px}.login-kicker{text-align:center;color:var(--blue);font-weight:800}.login-card h1{margin:28px 0 4px;font-size:2.2rem}.stack-form{display:grid;gap:16px;margin-top:24px}.stack-form label,.assignment-layout label{display:grid;gap:7px;font-weight:800}.stack-form input,.stack-form select,.assignment-layout input,.assignment-layout select,.date-label input,.inline-label select{width:100%;border:1px solid var(--line);border-radius:14px;padding:13px 15px;background:#fff;color:var(--ink)}.primary-button,.secondary-button,.text-button,.icon-button{border:0;border-radius:14px;font-weight:900;transition:.2s}.primary-button{padding:13px 20px;background:linear-gradient(135deg,var(--blue),#45aef1);color:#fff;box-shadow:0 8px 18px rgba(38,141,232,.24)}.primary-button:hover{transform:translateY(-1px)}.primary-button:disabled{opacity:.45;box-shadow:none;cursor:not-allowed}.secondary-button{padding:12px 18px;background:#fff;color:var(--blue-dark);border:1px solid var(--line)}.text-button{background:transparent;color:var(--blue);padding:8px}.icon-button{width:42px;height:42px;background:#edf5fb;color:var(--ink);font-size:1.7rem}.compact{padding:10px 16px}.form-error{color:#c63f4d;background:#fff0f2;border-radius:12px;padding:10px}.demo-tip{display:grid;gap:4px;margin-top:24px;padding:14px 16px;border-radius:16px;background:#f0f8ff;color:#567}.privacy-link{text-align:center;margin-bottom:0}.privacy-link a{color:var(--blue)}.login-art{position:relative;height:600px;border-radius:48% 52% 44% 56%/52% 45% 55% 48%;background:linear-gradient(145deg,#7ed8f4,#5cb5ec);box-shadow:var(--shadow)}.login-art:before,.login-art:after{content:"";position:absolute;border-radius:50%;background:#fff3}.login-art:before{width:220px;height:220px;right:12%;top:12%}.login-art:after{width:300px;height:300px;left:5%;bottom:5%}.login-art span{position:absolute;z-index:1;display:grid;place-items:center;width:120px;height:120px;border-radius:32px;background:#fff;color:var(--blue);font-size:2.1rem;font-weight:1000;box-shadow:var(--shadow);transform:rotate(-8deg)}.login-art span:nth-child(1){left:18%;top:18%}.login-art span:nth-child(2){right:12%;top:40%;transform:rotate(9deg)}.login-art span:nth-child(3){left:32%;bottom:11%;transform:rotate(4deg)}
.app-shell{min-height:100vh}.topbar{position:sticky;z-index:20;top:0;display:flex;align-items:center;gap:28px;min-height:84px;padding:12px clamp(18px,4vw,64px);background:rgba(255,255,255,.92);box-shadow:0 6px 25px rgba(50,96,129,.08);backdrop-filter:blur(14px)}.brand-button{border:0;background:transparent;padding:0}.brand-button img{display:block;width:220px;max-height:58px;object-fit:contain}.main-nav{display:flex;gap:7px;margin:auto}.main-nav button,.segmented button{border:0;border-radius:999px;padding:10px 16px;background:transparent;color:var(--muted);font-weight:900}.main-nav button.active,.segmented button.active{background:#e4f3ff;color:var(--blue)}.user-menu{display:flex;align-items:center;gap:10px}.user-menu small{display:block;color:var(--muted)}.avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:linear-gradient(145deg,var(--coral),#ff9a73);color:#fff;font-weight:1000}.page{width:min(1440px,calc(100% - 32px));margin:0 auto;padding:32px 0 70px}.hero-card{display:flex;justify-content:space-between;align-items:center;gap:24px;border-radius:30px;padding:34px clamp(24px,4vw,54px);background:linear-gradient(120deg,#fff,#e7f7ff);border:1px solid #fff;box-shadow:var(--shadow)}.hero-card h1{max-width:760px;margin:8px 0;font-size:clamp(1.8rem,3vw,3.1rem);line-height:1.18}.hero-card p{color:var(--muted);font-size:1.08rem}.progress-ring{--angle:0deg;width:132px;height:132px;display:grid;place-content:center;text-align:center;border-radius:50%;background:radial-gradient(circle,#fff 57%,transparent 59%),conic-gradient(var(--mint) var(--angle),#dceef7 0)}.progress-ring strong{font-size:1.7rem}.progress-ring span{font-size:.78rem;color:var(--muted)}.task-toolbar,.section-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:30px 0 18px}.section-heading h1{margin:4px 0;font-size:2.2rem}.section-heading p{margin:0;color:var(--muted)}.date-label{display:flex!important;align-items:center;gap:10px!important}.date-label input{width:auto}.makeup-badge{display:inline-block;margin-left:10px;padding:6px 10px;border-radius:999px;background:#fff2cf;color:#9a6d00;font-weight:900}.segmented{display:flex;padding:4px;border-radius:999px;background:#fff;border:1px solid var(--line)}.task-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.task-card{overflow:hidden;border-radius:24px;background:#fff;border:1px solid #e5eef6;box-shadow:0 12px 30px rgba(49,100,138,.09);transition:.2s}.task-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.task-cover{position:relative;height:190px;overflow:hidden;background:#dceffc}.task-cover img{width:100%;height:100%;object-fit:cover}.task-badge,.card-type{display:inline-flex;width:max-content;padding:7px 11px;border-radius:999px;background:#e3f3ff;color:var(--blue-dark);font-size:.78rem;font-weight:1000}.task-cover .card-type{position:absolute;left:14px;top:14px;color:#fff;background:var(--blue)}.task-card.reading .card-type{background:var(--coral)}.done-mark{position:absolute;right:14px;top:14px;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#35c98e;color:#fff;font-weight:1000}.task-body{padding:18px}.task-source{color:var(--blue);font-size:.78rem;font-weight:900;letter-spacing:.08em}.task-body h3{min-height:2.5em;margin:7px 0;font-size:1.17rem}.task-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:.88rem}.task-progress{height:8px;margin:16px 0 10px;border-radius:99px;background:#edf3f7;overflow:hidden}.task-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--mint),#80dfc8)}.task-footer{display:flex;justify-content:space-between;align-items:center}.task-footer small{color:var(--muted)}.empty-card{padding:60px;text-align:center;border-radius:28px;background:#fff}.empty-card>span{font-size:3rem}.history-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.history-card{display:flex;justify-content:space-between;align-items:center;padding:20px;border-radius:18px;background:#fff;border:1px solid var(--line)}.history-card button{border:0;background:transparent;color:var(--blue);font-weight:900}.history-card.complete{border-color:#bee9d7}.history-card strong{display:block}.history-card small{color:var(--muted)}
.teacher-page{max-width:1320px}.overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.overview-card,.panel{background:#fff;border:1px solid var(--line);border-radius:22px;padding:22px;box-shadow:0 9px 24px rgba(50,96,129,.07)}.overview-card h3{margin:0 0 14px}.overview-card .big-number{font-size:2rem;font-weight:1000;color:var(--blue)}.overview-card p{display:flex;justify-content:space-between;margin:7px 0;color:var(--muted)}.inline-label{display:flex;align-items:center;gap:10px}.inline-label select{width:auto}.data-table{margin-top:16px}.table-row{display:grid;grid-template-columns:1fr 1.1fr 1.1fr .7fr;gap:12px;align-items:center;padding:13px;border-bottom:1px solid #edf2f6}.table-row.header{color:var(--muted);font-size:.8rem;font-weight:900}.status-pill{display:inline-block;width:max-content;padding:5px 9px;border-radius:999px;background:#eafaf4;color:#17875e;font-size:.78rem;font-weight:900}.assignment-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px}.assignment-layout .wide{grid-column:1/-1}.assignment-layout h2{margin-top:0;font-size:1.08rem}.check-row,.check-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.check-row label,.check-grid label{display:flex;grid-auto-flow:column;align-items:center;justify-content:start;gap:8px;padding:11px 13px;border-radius:12px;background:#f2f8fc}.lesson-picker,.library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.lesson-choice{position:relative;overflow:hidden;border:2px solid transparent;border-radius:18px;background:#f5f9fc}.lesson-choice:has(input:checked){border-color:var(--blue);background:#eaf6ff}.lesson-choice input{position:absolute;right:12px;top:12px;width:20px;height:20px}.lesson-choice img,.library-card img{width:100%;height:145px;object-fit:cover}.lesson-choice div,.library-card div{padding:14px}.lesson-choice strong,.library-card strong{display:block}.lesson-choice small,.library-card small{color:var(--muted)}.form-actions{display:flex;justify-content:space-between;align-items:center}.library-card{overflow:hidden;border-radius:20px;background:#fff;border:1px solid var(--line)}
.task-dialog{width:min(1240px,96vw);max-height:94vh;padding:0;border:0;border-radius:28px;box-shadow:0 28px 90px rgba(24,67,99,.32);overflow:auto}.task-dialog::backdrop,.form-dialog::backdrop{background:rgba(22,47,70,.55);backdrop-filter:blur(5px)}.dialog-header{display:flex;justify-content:space-between;gap:20px;align-items:start;padding:24px 28px 18px;border-bottom:1px solid var(--line)}.dialog-header h2{margin:7px 0 2px;font-size:1.6rem}.dialog-header p{margin:0;color:var(--muted)}.segment-steps{display:flex;justify-content:center;gap:8px;padding:15px 20px;background:#f6fbfe;overflow:auto}.segment-steps button{min-width:45px;height:45px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--muted);font-weight:900}.segment-steps button.active{background:var(--blue);color:#fff;border-color:var(--blue)}.segment-steps button.done{background:#dff8ee;color:#13845a;border-color:#a9e5ce}.learning-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:22px;padding:24px 28px}.reading-pane{min-height:470px;padding:28px;border-radius:24px;background:#f8fbff;border:1px solid var(--line)}.reading-label{display:flex;justify-content:space-between;color:var(--blue);font-weight:900}.segment-image{float:left;width:170px;max-height:190px;margin:14px 22px 12px 0;border-radius:22px;object-fit:cover}.reading-text{margin:14px 0 0;font-family:Georgia,"Times New Roman",serif;font-size:clamp(1.3rem,2vw,1.75rem);line-height:1.85;color:#1d2938}.tool-pane{display:grid;align-content:start;gap:14px}.audio-card,.record-card,.translation-panel{padding:18px;border-radius:20px;background:#fff;border:1px solid var(--line)}.card-title{display:flex;gap:10px;align-items:center;margin-bottom:12px}.card-title>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:#e6f5ff}.card-title small{display:block;color:var(--muted)}audio{width:100%}.speed-buttons{display:flex;gap:7px;margin-top:12px}.speed-buttons button{flex:1;border:1px solid var(--line);border-radius:10px;background:#f8fbfd;padding:7px;font-weight:800}.speed-buttons button.active{background:var(--blue);color:#fff}.translation-panel p{line-height:1.7;margin-bottom:0}.record-controls{display:flex;align-items:center;justify-content:space-between;margin:13px 0}.record-button{border:0;border-radius:999px;padding:12px 17px;background:#fff0f2;color:#c84454;font-weight:900}.record-button.recording{background:#d73f4f;color:#fff;animation:pulse 1.3s infinite}.record-card .primary-button{width:100%;margin-top:12px}.score-panel{margin-top:14px;padding:16px;border-radius:16px;background:#f2f9ff}.score-number{font-size:2.2rem;font-weight:1000;color:var(--blue)}.score-panel p{margin:7px 0}.error-word{display:inline-block;margin:3px;padding:4px 7px;border-radius:8px;background:#ffe7e9;color:#b93647;font-weight:800}.dialog-footer{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 28px;background:#fff;border-top:1px solid var(--line)}.dialog-footer p{margin:0;text-align:center;color:var(--muted)}.form-dialog{width:min(520px,94vw);border:0;border-radius:24px;padding:0;box-shadow:var(--shadow)}.form-dialog form>p,.form-dialog .stack-form{margin-left:26px;margin-right:26px}.form-dialog .stack-form{margin-bottom:26px}@keyframes pulse{50%{transform:scale(1.03)}}
@media(max-width:1050px){.task-grid,.lesson-picker,.library-grid{grid-template-columns:repeat(2,1fr)}.overview-grid{grid-template-columns:repeat(2,1fr)}.main-nav{order:3;width:100%;justify-content:center}.topbar{flex-wrap:wrap}.learning-grid{grid-template-columns:1fr}.login-view{grid-template-columns:1fr}.login-art{display:none}.history-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){body{font-size:15px}.topbar{padding:10px 14px;gap:10px}.brand-button img{width:150px}.user-menu>div:nth-child(2){display:none}.main-nav{overflow:auto;justify-content:start}.page{width:min(100% - 20px,1440px);padding-top:18px}.hero-card{padding:24px;align-items:start}.progress-ring{width:96px;height:96px}.task-toolbar,.section-heading{align-items:start;flex-direction:column}.task-grid,.lesson-picker,.library-grid,.overview-grid,.history-grid{grid-template-columns:1fr}.task-toolbar>.segmented{width:100%}.segmented button{flex:1}.task-cover{height:170px}.assignment-layout{grid-template-columns:1fr}.assignment-layout .wide{grid-column:auto}.form-actions{align-items:stretch;flex-direction:column}.learning-grid{padding:14px}.reading-pane{padding:20px;min-height:0}.segment-image{float:none;width:100%;height:180px;max-height:none;margin:14px 0}.reading-text{font-size:1.28rem}.dialog-header,.dialog-footer{padding:16px}.dialog-footer{display:grid;grid-template-columns:auto 1fr auto}.dialog-footer p{font-size:.76rem}.table-row{grid-template-columns:1fr 1fr}.table-row>*:nth-child(3),.table-row>*:nth-child(4){font-size:.8rem}}

.coin-badge{display:inline-block;margin-left:5px;padding:3px 7px;border-radius:999px;background:#fff5c7;color:#8b6500;font-size:.72rem}.mini-stat,.wallet{min-width:140px;padding:16px 22px;border-radius:20px;background:#fff3bd;text-align:center}.mini-stat strong,.wallet strong{display:block;font-size:1.8rem;color:#8b6500}.mini-stat span,.wallet span{color:#866f27;font-size:.8rem;font-weight:800}.word-game{max-width:760px;margin:10px auto}.word-card,.word-complete{padding:clamp(24px,5vw,48px);border-radius:30px;background:#fff;box-shadow:var(--shadow);text-align:center}.word-progress{height:9px;margin-bottom:18px;border-radius:99px;background:#edf2f5;overflow:hidden}.word-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--mint),var(--yellow))}.game-question{color:var(--muted);font-weight:800}.focus-word,.word-card>h2{margin:12px 0 4px;font-size:clamp(2.2rem,6vw,4rem);color:var(--blue-dark)}.phonetic{color:var(--muted)}.answer-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0}.answer-grid button{padding:16px;border:2px solid var(--line);border-radius:16px;background:#f9fcfe;color:var(--ink);font-weight:900}.answer-grid button:hover{border-color:var(--blue);background:#edf8ff}.spelling-input{display:block;width:min(420px,100%);margin:24px auto 14px;padding:16px;border:2px solid var(--line);border-radius:16px;text-align:center;font-size:1.4rem}.example-box{margin-top:25px;padding:16px;border-radius:18px;background:#f2f9ff;text-align:left}.example-box p{font-family:Georgia,serif;font-size:1.15rem}.example-box small{color:var(--muted)}.word-feedback{display:flex;justify-content:space-between;gap:10px;margin-top:16px;padding:14px;border-radius:14px}.word-feedback.correct{background:#e4f9f0;color:#137752}.word-feedback.wrong{background:#fff0f1;color:#a63242}.word-complete>span{font-size:4rem}.word-complete .secondary-button{margin-top:15px}.speaking-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.speaking-card{position:relative;padding:24px;border-radius:24px;background:#fff;border:1px solid var(--line);box-shadow:0 10px 28px rgba(49,100,138,.08)}.speaking-card>span{color:var(--blue);font-weight:900}.speaking-card p{min-height:5em;line-height:1.6}.speaking-card>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.speaking-card small{color:var(--muted)}.latest-score{position:absolute;right:18px;top:18px;padding:6px 10px;border-radius:99px;background:#e7f9f1;color:#16825c}.speaking-dialog{width:min(720px,94vw)}.speaking-prompt{margin:22px 26px;padding:20px;border-radius:18px;background:#f0f8ff}.speaking-prompt p{font-family:Georgia,serif;font-size:1.3rem;line-height:1.6}.speaking-prompt small{color:var(--muted)}.speaking-dialog>.record-card,.speaking-result{margin:0 26px 26px}.speaking-result{display:flex;gap:20px;padding:20px;border-radius:18px;background:#eef9f5}.speaking-result p{line-height:1.55}.score-orb{flex:none;width:100px;height:100px;display:grid;place-content:center;border-radius:50%;background:linear-gradient(145deg,var(--mint),#72dfb9);color:#fff;font-size:2.3rem;font-weight:1000}.score-orb small{font-size:.8rem}.farm-hero{display:flex;justify-content:space-between;align-items:center;padding:32px;border-radius:28px;background:linear-gradient(125deg,#e8fbff,#fff7c9);box-shadow:var(--shadow)}.farm-hero h1{margin:5px 0;font-size:2.4rem}.farm-hero p{color:var(--muted)}.farm-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:20px;margin-top:22px}.farm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.farm-friend,.shop-item{border:1px solid var(--line);border-radius:18px;background:#fbfdff}.farm-friend{padding:18px;text-align:center}.friend-icon{display:block;font-size:4rem}.care-meter{display:grid;gap:5px;margin:12px 0;color:var(--muted);font-size:.8rem}.care-meter progress{width:100%;accent-color:var(--mint)}.shop-grid{display:grid;gap:10px}.shop-item{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:10px;padding:12px}.shop-item>span{font-size:2.3rem}.shop-item h3,.shop-item p{margin:2px 0}.shop-item p,.shop-item small{color:var(--muted);font-size:.8rem}.farm-empty{grid-column:1/-1;padding:50px;text-align:center}.farm-empty span{font-size:4rem}
@media(max-width:1050px){.speaking-grid{grid-template-columns:repeat(2,1fr)}.farm-layout{grid-template-columns:1fr}}
@media(max-width:680px){.speaking-grid,.farm-grid,.answer-grid{grid-template-columns:1fr}.farm-hero,.speaking-result{align-items:flex-start;flex-direction:column}.mini-stat{align-self:stretch}.shop-item{grid-template-columns:44px 1fr}.shop-item button{grid-column:1/-1}.coin-badge{display:none}}
.completeness-result{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px}.completeness-result .score-number{font-size:2.5rem;color:var(--blue-dark);font-weight:1000}.completeness-result .status-pill{padding:7px 12px;border-radius:999px;font-weight:900}.completeness-result .status-pill.complete{background:#e4f9f0;color:#137752}.completeness-result .status-pill.incomplete{background:#fff0f1;color:#a63242}.completeness-result .status-pill.uncertain,.completeness-result .status-pill.unavailable{background:#fff4d8;color:#7b5900}
.task-card.locked{opacity:.65;filter:saturate(.5);cursor:not-allowed}.word-cover{display:grid;place-items:center;background:linear-gradient(145deg,#6954dc,#5ea9ef)}.word-cover>span:first-child{font-size:4rem;font-weight:1000;color:#fff;letter-spacing:-5px}.vocabulary-task .task-progress{background:#ece7ff}.countdown-wrap{display:flex;justify-content:center;align-items:baseline;gap:5px;color:#d94f59}.countdown-wrap strong{font-size:3.2rem}.countdown-track{height:10px;margin:0 auto 18px;border-radius:99px;background:#ffe7e9;overflow:hidden}.countdown-track span{display:block;width:100%;height:100%;background:linear-gradient(90deg,#ffcf57,#ef5964);transition:width .05s linear}.word-audio-button{width:110px;height:110px;margin:12px auto;border:0;border-radius:50%;background:linear-gradient(145deg,#61a4f5,#6f64dd);color:#fff;font-size:3.2rem;box-shadow:0 15px 30px rgba(81,115,202,.25)}.audio-word-placeholder{color:var(--muted);font-weight:900}.farm-actions{display:flex;align-items:center;gap:12px}.farm-panel{padding:18px}.farm-stage{position:relative;min-height:650px;border-radius:24px;overflow:hidden;background:url('/assets/farm-background-v2.png') center/cover no-repeat;box-shadow:inset 0 0 0 2px rgba(255,255,255,.65)}.farm-entity{position:absolute;left:var(--farm-x);top:var(--farm-y);transform:translate(-50%,-50%);display:grid;justify-items:center;z-index:2;min-width:125px}.farm-character{display:block;font-size:clamp(4rem,6vw,6.5rem);filter:drop-shadow(0 8px 5px rgba(0,0,0,.25));transform-origin:center bottom}.farm-entity strong{padding:3px 9px;border-radius:99px;background:rgba(255,255,255,.9)}.farm-speech{max-width:175px;margin-bottom:5px;padding:7px 10px;border-radius:13px;background:rgba(255,255,255,.94);font-size:.78rem;font-weight:900;text-align:center;box-shadow:0 4px 12px rgba(0,0,0,.12)}.farm-speech.urgent{background:#fff0b9;color:#a0392e;animation:urgentPulse 1s infinite}.farm-care-buttons{display:flex;gap:5px;margin-top:5px}.farm-care-buttons button{padding:5px 8px;border:0;border-radius:10px;background:#fff;color:#31587f;font-weight:900}.farm-entity.activity-walk.pet{animation:farmWalk 8s ease-in-out infinite alternate}.farm-entity.activity-sleep .farm-character{animation:sleepBob 2s ease-in-out infinite}.farm-entity.activity-read .farm-character{animation:studyBob 1.2s ease-in-out infinite alternate}.farm-entity.activity-weak .farm-character{transform:rotate(78deg);filter:grayscale(.55) drop-shadow(0 8px 5px rgba(0,0,0,.2))}.farm-entity.plant.activity-weak .farm-character{transform:rotate(12deg) scaleY(.72);filter:sepia(.8) saturate(.5)}.stage-empty{position:absolute;inset:0;display:grid;place-content:center;color:#173b5e;text-shadow:0 1px #fff}.shop-category-title{margin:20px 0 8px;padding:8px 12px;border-radius:12px;background:#eef7ff;color:#31587f}.confirm-dialog{width:min(520px,92vw)}.confirm-copy{padding:24px;font-size:1.15rem;line-height:1.7}.confirm-actions{display:flex;justify-content:flex-end;gap:12px;padding:0 24px 24px}@keyframes farmWalk{from{translate:-22px 0}to{translate:22px 0}}@keyframes sleepBob{50%{transform:scale(.96) rotate(-3deg)}}@keyframes studyBob{to{transform:translateY(-7px) rotate(2deg)}}@keyframes urgentPulse{50%{transform:scale(1.06)}}
@media(max-width:900px){.farm-layout{grid-template-columns:1fr}.farm-stage{min-height:520px}.farm-actions{align-items:stretch;flex-direction:column}.farm-entity{min-width:100px}.farm-character{font-size:4.5rem}}
.date-range{display:grid;grid-template-columns:1fr 1fr;gap:12px}.overview-card.clickable{cursor:pointer;transition:transform .2s,box-shadow .2s}.overview-card.clickable:hover{transform:translateY(-4px);box-shadow:0 18px 45px rgba(40,92,145,.18)}.class-detail-dialog{width:min(1180px,96vw);max-height:90vh;padding:0;border:0;border-radius:28px;overflow:auto;box-shadow:0 28px 90px rgba(24,67,99,.32)}.class-detail-dialog::backdrop{background:rgba(22,47,70,.55);backdrop-filter:blur(5px)}.class-detail-table{padding:22px}.student-detail-row{display:grid;grid-template-columns:1.1fr .8fr 1fr 1fr .7fr 1.7fr;align-items:center;gap:10px;padding:14px;border-bottom:1px solid var(--line)}.student-detail-row.header{position:sticky;top:0;z-index:2;border-radius:14px;background:#edf7ff;color:#31587f;font-weight:900}.student-detail-row span:last-child{font-size:.84rem;line-height:1.5}@media(max-width:760px){.date-range{grid-template-columns:1fr}.student-detail-row{grid-template-columns:1fr 1fr}.student-detail-row.header{display:none}.student-detail-row strong{grid-column:1/-1;font-size:1.1rem}}
.reward-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.reward-row label{display:flex;grid-auto-flow:column;align-items:center;justify-content:start;gap:7px;padding:10px;border-radius:13px;background:#fff9dd}.reward-row input{width:76px!important;padding:8px!important}@media(max-width:680px){.reward-row{grid-template-columns:1fr}}
.coin-celebration{position:fixed;z-index:300;inset:0;pointer-events:none;overflow:hidden;background:radial-gradient(circle at 50% 38%,rgba(255,248,184,.3),transparent 30%)}.coin-celebration>strong{position:absolute;left:50%;top:34%;transform:translate(-50%,-50%);padding:18px 30px;border-radius:999px;background:#fff7c8;color:#8a6500;font-size:clamp(1.3rem,3vw,2.3rem);box-shadow:0 18px 55px rgba(90,70,0,.25);animation:coinMessage 2s ease both}.coin-celebration span{position:absolute;left:var(--coin-x);top:-70px;font-size:2rem;animation:coinFall 1.75s var(--coin-delay) cubic-bezier(.2,.7,.4,1) forwards}@keyframes coinFall{to{transform:translateY(105vh) rotate(720deg)}}@keyframes coinMessage{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}20%,75%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-70%) scale(1.05)}}
.vocab-heading-actions{display:flex;align-items:center;gap:12px}.paused-card{border:2px dashed #bdd9f4}.farm-inventory-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px}.farm-inventory-panel h2,.farm-inventory-panel p{margin:4px 0}.farm-inventory{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.inventory-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;min-width:145px;padding:10px 13px;border:2px solid var(--line);border-radius:15px;background:#f9fcff;color:var(--ink)}.inventory-item>span{font-size:1.8rem}.inventory-item small{color:var(--muted)}.inventory-item.selected{border-color:var(--blue);background:#e7f4ff;box-shadow:0 0 0 4px rgba(38,141,232,.12)}.selected-supply-hint{margin:-5px 0 12px;padding:9px 12px;border-radius:12px;background:#fff8d8;color:#785b00;font-weight:900}.class-card-heading{display:flex;justify-content:space-between;align-items:start;gap:8px}.class-card-heading h3{margin:0}.task-type-picks{display:flex;gap:8px;margin-top:11px}.task-type-picks label{display:flex;align-items:center;gap:5px;padding:7px 9px;border-radius:10px;background:#fff}.task-type-picks input{position:static;width:18px;height:18px}.library-section-title{margin:28px 0 14px}.vocabulary-library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.topic-card{display:grid;gap:7px;padding:18px;border-radius:18px;background:#fff;border:1px solid var(--line);box-shadow:0 8px 22px rgba(50,96,129,.06)}.topic-card>span{color:var(--blue);font-weight:900}.topic-card>small{color:var(--muted)}
@media(max-width:680px){.vocab-heading-actions,.farm-inventory-panel{align-items:stretch;flex-direction:column}.farm-inventory{justify-content:stretch}.inventory-item{width:100%}.vocabulary-library-grid{grid-template-columns:1fr}.task-type-picks{flex-wrap:wrap}}
.vocab-overall-progress{width:min(390px,100%);padding:16px 20px;border-radius:20px;background:linear-gradient(135deg,#eef4ff,#fff4c7);box-shadow:0 10px 24px rgba(71,91,158,.1)}.vocab-overall-progress>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:18px}.vocab-overall-progress span,.vocab-overall-progress small{color:#536179;font-size:.82rem;font-weight:900}.vocab-overall-progress strong{font-size:1.55rem;color:#584bb5}.overall-progress-track{height:11px;margin:8px 0 6px;border-radius:99px;background:rgba(255,255,255,.9);overflow:hidden}.overall-progress-track>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#7064df,#5cc9cf,#f6c94c);transition:width .35s ease}@media(max-width:680px){.vocab-overall-progress{align-self:stretch}}

/* Vocabulary Planet: playful planet and game-card presentation */
.vocab-book-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,420px));justify-content:center;gap:clamp(22px,5vw,64px);margin:38px auto 30px}.vocab-book-card{position:relative;display:grid;place-items:center;gap:12px;min-height:360px;padding:26px;border:0;border-radius:38px;background:linear-gradient(160deg,#fff 0%,#f6f9ff 55%,#eef6ff 100%);box-shadow:0 22px 54px rgba(58,82,136,.16);color:var(--ink);overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}.vocab-book-card:hover{transform:translateY(-8px) rotate(-.5deg);box-shadow:0 30px 64px rgba(58,82,136,.22)}.vocab-book-card.pet:hover{transform:translateY(-8px) rotate(.5deg)}.vocab-book-card>strong{font-size:clamp(1.45rem,3vw,2rem);font-weight:1000}.cartoon-planet{position:relative;display:grid;place-items:center;width:190px;height:190px;margin:10px;border-radius:50%;background:radial-gradient(circle at 32% 28%,#aeeaff 0 12%,#58a8f2 34%,#5369d9 72%,#424bb1 100%);box-shadow:inset -17px -20px 0 rgba(33,36,118,.17),0 22px 36px rgba(69,84,192,.28);isolation:isolate}.pet .cartoon-planet{background:radial-gradient(circle at 34% 28%,#ffd5f0 0 12%,#ef8fc8 36%,#9c68d8 72%,#7349bb 100%);box-shadow:inset -17px -20px 0 rgba(90,42,129,.17),0 22px 36px rgba(138,83,190,.28)}.cartoon-planet em{position:relative;z-index:4;color:#fff;font-style:normal;font-size:2.15rem;font-weight:1000;letter-spacing:.08em;text-shadow:0 3px 0 rgba(31,43,113,.22)}.planet-ring{position:absolute;z-index:-1;width:250px;height:68px;border:18px solid #ffd75e;border-left-color:#ff9f55;border-right-color:#ff9f55;border-radius:50%;transform:rotate(-14deg);box-shadow:0 8px 16px rgba(149,89,37,.15)}.pet .planet-ring{border-color:#78e0c2;border-left-color:#39b9b5;border-right-color:#39b9b5}.planet-crater{position:absolute;border-radius:50%;background:rgba(255,255,255,.22);box-shadow:inset 3px 4px 0 rgba(255,255,255,.12)}.planet-crater.one{width:28px;height:20px;left:35px;bottom:46px}.planet-crater.two{width:18px;height:28px;right:34px;top:45px}.planet-star{position:absolute;z-index:5;color:#ffd75e;font-size:1.5rem;font-style:normal;animation:planetTwinkle 2s ease-in-out infinite}.planet-star.one{right:-42px;top:4px}.planet-star.two{left:-48px;bottom:14px;color:#7be2ca;animation-delay:.7s}@keyframes planetTwinkle{50%{transform:scale(1.35) rotate(12deg);opacity:.6}}.planet-progress{width:min(250px,86%);height:13px;border:3px solid #fff;border-radius:99px;background:#e7edf6;box-shadow:inset 0 1px 4px rgba(43,64,103,.12);overflow:hidden}.planet-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#5ec6b1,#f6d04f)}.vocab-book-card>b{color:#536179}.vocab-mode-panel{margin-top:28px;padding:clamp(22px,4vw,42px)!important}.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;margin-top:24px}.mode-card{display:grid;grid-template-columns:112px 1fr;grid-template-rows:auto auto auto;column-gap:22px;align-items:center;min-height:230px;padding:26px;border:0;border-radius:30px;background:linear-gradient(145deg,#f1f8ff,#fff);color:var(--ink);text-align:left;box-shadow:0 14px 36px rgba(61,96,141,.12);transition:transform .2s ease,box-shadow .2s ease}.mode-card:hover{transform:translateY(-5px);box-shadow:0 22px 44px rgba(61,96,141,.18)}.mode-card.hard{background:linear-gradient(145deg,#fff0ed,#fff)}.mode-card.battle{background:linear-gradient(145deg,#fff7dc,#fff)}.mode-game-icon{grid-row:1/4;position:relative;display:grid;place-items:center;width:108px;height:108px;border-radius:30px;background:linear-gradient(145deg,#68b8ff,#5d63dc);font-size:2.7rem;transform:rotate(-3deg);box-shadow:0 14px 25px rgba(75,93,201,.25)}.hard-icon{background:linear-gradient(145deg,#ff9777,#e0527c);transform:rotate(-2deg);box-shadow:0 14px 25px rgba(205,76,106,.24)}.battle-icon{background:linear-gradient(145deg,#ffcc61,#ff8a6f);transform:rotate(3deg);box-shadow:0 14px 25px rgba(220,116,66,.24)}.mode-game-icon i{position:absolute;right:-8px;bottom:-7px;padding:6px 9px;border:3px solid #fff;border-radius:10px;background:#fff;color:#4b5fc8;font-size:.72rem;font-style:normal;font-weight:1000;box-shadow:0 5px 12px rgba(51,62,112,.18)}.mode-card>strong{font-size:1.35rem}.mode-card>p{margin:6px 0;color:#5d6b7c;line-height:1.65}.mode-card>small{color:#5269bb;font-weight:900}.battle-card{position:relative}.battle-prompt{max-width:680px;margin:24px auto!important;font-size:clamp(1.25rem,2.3vw,1.75rem)!important;line-height:1.5;font-weight:900}.previous-question-button{display:block;margin:0 0 14px;padding:9px 14px;border:1px solid #c9d9eb;border-radius:12px;background:#f6faff;color:#48648d;font-weight:900}.previous-question-panel{margin:0 0 18px;padding:14px 17px;border-radius:16px;background:#f0f6fd;text-align:left;color:#536179}.previous-question-panel p{margin:7px 0 0;line-height:1.55}.review-button{padding:13px 18px;border:0;border-radius:14px;background:linear-gradient(135deg,#ffbd59,#ff8b68);color:#fff;font-weight:1000;box-shadow:0 10px 20px rgba(226,119,72,.2)}.completion-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:22px}.word-feedback span{line-height:1.55}.library-folders{display:grid;gap:20px}.library-folder{padding:20px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(145deg,#fff,#f7fbff)}.library-folder-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.library-folder-heading h3{margin:0;font-size:1.2rem}.library-folder-heading span{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:#e9f4ff;font-size:1.7rem}.library-folder-heading small{margin-left:auto;color:var(--muted);font-weight:800}.library-folder .library-grid{margin-top:0}.library-empty-folder{padding:32px;border:2px dashed #d7e4ef;border-radius:18px;color:var(--muted);text-align:center}.library-empty-folder span{display:block;margin-bottom:8px;font-size:2.2rem}
@media(max-width:760px){.vocab-book-grid,.mode-grid{grid-template-columns:1fr}.vocab-book-card{min-height:320px}.cartoon-planet{width:160px;height:160px}.planet-ring{width:210px}.mode-card{grid-template-columns:80px 1fr;min-height:190px;padding:20px}.mode-game-icon{width:78px;height:78px;border-radius:22px;font-size:2rem}.completion-actions{flex-direction:column}.completion-actions button{width:100%}}
.battle-card .battle-prompt{font-size:clamp(1.1rem,2vw,1.5rem)!important;line-height:1.55}
.answer-grid.untimed button{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:12px;text-align:left}.answer-letter{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e8f2ff;color:#3567bd;font-weight:1000}.answer-grid.untimed button:hover .answer-letter{background:#5e8fe6;color:#fff}
.library-card{padding:0;color:var(--ink);text-align:left;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.library-card:hover,.library-card:focus-visible{transform:translateY(-4px);box-shadow:0 16px 32px rgba(50,96,129,.16);outline:3px solid rgba(75,145,235,.2)}
.assignment-folders{display:grid;gap:20px}.assignment-folder{padding:18px;border:1px solid var(--line);border-radius:22px;background:#f8fbff}.assignment-folder-heading{display:flex;align-items:center;gap:12px;margin-bottom:14px}.assignment-folder-heading>span{font-size:1.8rem}.assignment-folder-heading div{display:grid;gap:3px}.assignment-folder-heading small{color:var(--muted)}
.notebook-actions{display:flex;justify-content:center;gap:12px;margin-top:22px}.notebook-card{max-width:920px!important}.notebook-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;text-align:left}.notebook-answer,.notebook-explanation{display:grid;grid-template-columns:130px 1fr;gap:12px;margin:14px 0;padding:16px 18px;border-radius:16px;text-align:left}.notebook-answer.wrong{background:#fff1f1;color:#963b3b}.notebook-answer.correct{background:#eafaf3;color:#157355}.notebook-explanation{display:block;background:#f2f7fd}.notebook-explanation p{margin:8px 0 0;line-height:1.65}.notebook-nav{display:flex;justify-content:space-between;margin-top:22px}.word-notebook-list{display:grid;gap:10px;margin-top:20px}.word-notebook-list>div{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:14px 18px;border-radius:14px;background:#f4f8fd;text-align:left}.word-notebook-list strong{color:#355bb0}.review-next-button{display:block;margin:14px auto 0}.word-feedback button{color:#fff}
.student-progress-card{margin-bottom:14px;border:1px solid var(--line);border-radius:18px;background:#fff;overflow:hidden}.student-progress-card summary{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:12px;align-items:center;padding:17px 20px;cursor:pointer;background:#f6faff}.student-task-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:16px}.student-task-status{display:grid;grid-template-columns:1fr auto;gap:8px;padding:14px;border-left:5px solid #b8c7d8;border-radius:14px;background:#f8fafc}.student-task-status.complete{border-left-color:#55bb91;background:#eefaf5}.student-task-status.needs_improvement{border-left-color:#f1a342;background:#fff7e8}.student-task-status.incomplete{border-left-color:#e06b6b;background:#fff1f1}.student-task-status strong{display:block;margin-top:4px}.student-task-status small,.student-task-status p{color:var(--muted)}.student-task-status p{grid-column:1/-1;margin:0}.task-status-label{font-weight:900}
.vocab-checkin-summary{margin:16px 16px 0;padding:16px;border:1px solid #d8e5f7;border-radius:16px;background:#f7faff}.vocab-checkin-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:12px}.vocab-checkin-heading div{display:flex;flex-direction:column;gap:3px}.vocab-checkin-heading small{color:#5577af;font-weight:900}.vocab-checkin-heading strong{font-size:1.08rem}.vocab-checkin-heading>span{color:var(--muted);font-weight:800}.vocab-checkin-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.vocab-checkin-mode{padding:12px;border-left:4px solid #e19a48;border-radius:12px;background:#fff8e9}.vocab-checkin-mode.complete{border-left-color:#50b989;background:#eefaf5}.vocab-checkin-mode>div{display:flex;justify-content:space-between;gap:8px}.vocab-checkin-mode>div span{color:var(--muted);font-size:.84rem;font-weight:800}.vocab-checkin-mode p,.vocab-no-checkin{margin:6px 0 0;color:var(--muted);font-size:.9rem}.vocab-no-checkin{padding:4px 0}
@media(max-width:680px){.notebook-actions,.notebook-heading{align-items:stretch;flex-direction:column}.notebook-answer{grid-template-columns:1fr}.student-progress-card summary{grid-template-columns:1fr 1fr}.student-task-list,.vocab-checkin-modes{grid-template-columns:1fr}.vocab-checkin-heading{align-items:flex-start;flex-direction:column}}
.reading-text{white-space:pre-line}
.dialogue-line{display:block;margin:0 0 .72em;white-space:normal}.dialogue-line:last-child{margin-bottom:0}.dialogue-intro{padding-bottom:.15em;color:#65758a;font-size:.82em}.speaker-name{color:#3567bd;font-family:Inter,"Microsoft YaHei",sans-serif;font-size:.78em;font-weight:1000;letter-spacing:.01em}
.translation-panel .dialogue-line{margin-bottom:.8em}.translation-panel .speaker-name{color:#3567bd;font-size:1em}
.segment-image.book-page-image{float:none;display:block;width:min(100%,760px);height:auto;max-height:none;margin:20px auto 24px;border-radius:14px;object-fit:contain;background:#fff;box-shadow:0 10px 28px rgba(39,75,109,.14)}
@media(max-width:680px){.segment-image.book-page-image{width:100%;height:auto;max-height:none;object-fit:contain;margin:16px auto 20px;border-radius:10px}}
