:root{--ink:#172033;--muted:#667085;--line:#e4e8ef;--paper:#fff;--bg:#f5f7fb;--blue:#3157d5;--blue2:#eaf0ff;--red:#d92d20;--green:#16855b;--orange:#f59e0b;--shadow:0 12px 34px #1f2d5517}*{box-sizing:border-box}html{font-size:16px}body{background:var(--bg);color:var(--ink);margin:0;font-family:Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;line-height:1.55}button,select,textarea{font:inherit}button{cursor:pointer}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);z-index:10;background:#fff;justify-content:space-between;align-items:center;height:72px;padding:0 max(24px,50vw - 580px);display:flex;position:sticky;top:0}.brand{color:var(--ink);background:0 0;border:0;align-items:center;gap:10px;font-size:1.2rem;display:flex}.brand span{background:var(--blue);color:#fff;border-radius:12px;place-items:center;width:40px;height:40px;font-weight:800;display:grid}.topbar nav{gap:8px;height:100%;display:flex}.topbar nav button{color:var(--muted);background:0 0;border:0;border-bottom:3px solid #0000;padding:0 14px;font-weight:650}.topbar nav button.active{color:var(--blue);border-color:var(--blue)}.page{flex:1;width:min(1160px,100% - 40px);margin:0 auto;padding:46px 0 72px}.welcome{color:#fff;box-shadow:var(--shadow);background:linear-gradient(115deg,#243f9d,#4774ee);border-radius:24px;justify-content:space-between;align-items:center;gap:30px;padding:34px 38px;display:flex}.welcome h1{margin:4px 0 8px;font-size:clamp(1.7rem,4vw,2.65rem);line-height:1.18}.welcome p{color:#e9edff;margin:0}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--blue);margin:0 0 5px;font-size:.78rem;font-weight:800}.welcome .eyebrow{color:#cfd8ff}.level-picker{color:var(--ink);background:#fff;border-radius:16px;min-width:210px;padding:16px}.level-picker label{color:var(--muted);margin-bottom:6px;font-size:.78rem;font-weight:700;display:block}.level-picker select{width:100%;color:var(--ink);background:0 0;border:0;font-size:1.05rem;font-weight:800}.quick-stats{grid-template-columns:repeat(3,1fr);gap:14px;margin:20px 0 44px;display:grid}.quick-stats div{border:1px solid var(--line);background:#fff;border-radius:16px;align-items:baseline;gap:10px;padding:18px 22px;display:flex}.quick-stats strong{font-size:1.65rem}.quick-stats span{color:var(--muted)}.section-heading{justify-content:space-between;align-items:flex-end;margin:36px 0 16px;display:flex}.section-heading h2{margin:0;font-size:1.55rem}.section-heading>span{color:var(--muted);font-size:.9rem}.lesson-grid{grid-template-columns:repeat(5,1fr);gap:12px;display:grid}.lesson-card{border:1px solid var(--line);text-align:left;background:#fff;border-radius:16px;padding:20px;transition:all .18s}.lesson-card:hover{box-shadow:var(--shadow);border-color:#9bb0f5;transform:translateY(-2px)}.lesson-card span,.lesson-card b,.lesson-card small{display:block}.lesson-card span{color:var(--muted);font-size:.83rem}.lesson-card b{margin:9px 0 3px}.lesson-card small{color:var(--blue)}.exam-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.exam-card{color:#fff;text-align:left;background:#3157d5;border:0;border-radius:18px;flex-direction:column;min-height:155px;padding:23px;display:flex}.exam-card small{opacity:.82}.exam-card strong{margin:6px 0 auto;font-size:2.1rem}.exam-card span{font-size:.9rem}.exam-1{background:#6d42c7}.exam-2{background:#c44c70}.exam-3{background:#14816a}.practice-page{max-width:850px}.practice-top{color:var(--muted);justify-content:space-between;align-items:center;display:flex}.text-button{color:var(--blue);background:0 0;border:0;padding:8px 0}.progress{background:#e2e7f2;border-radius:999px;height:8px;margin:14px 0 24px;overflow:hidden}.progress span{border-radius:inherit;background:linear-gradient(90deg,#3157d5,#6e8df2);height:100%;display:block}.question-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:24px;padding:clamp(24px,5vw,48px)}.question-number{color:var(--blue);font-weight:800}.question-card h1{margin:8px 0 26px;font-size:clamp(1.35rem,3vw,1.9rem);line-height:1.5}.choices{gap:12px;display:grid}.choices button{border:2px solid var(--line);text-align:left;color:var(--ink);background:#fff;border-radius:14px;align-items:center;gap:14px;padding:15px 17px;display:flex}.choices button span{background:#f0f3f8;border-radius:9px;flex:0 0 32px;place-items:center;width:32px;height:32px;font-weight:800;display:grid}.choices button:hover:not(:disabled),.choices button.selected{border-color:var(--blue);background:var(--blue2)}.choices button.correct{background:#eafaf4;border-color:#48b58d}.choices button.correct span{background:var(--green);color:#fff}.choices button.wrong{background:#fff0ef;border-color:#f29b93}.choices button.wrong span{background:var(--red);color:#fff}.primary,.outline{border-radius:11px;padding:11px 18px;font-weight:750}.primary{background:var(--blue);color:#fff;border:0}.primary:disabled{opacity:.4;cursor:not-allowed}.wide{width:100%;margin-top:22px;padding:14px}.outline{border:1px solid var(--line);color:var(--ink);background:#fff}.danger{color:var(--red)}.feedback{border-radius:14px;margin-top:20px;padding:18px}.feedback h3,.feedback p{margin:0 0 8px}.feedback.is-correct{color:#116847;background:#eafaf4}.feedback.is-wrong{color:#8b4b07;background:#fff3e7}.feedback .primary{margin-top:8px}.page-title{margin-bottom:25px}.page-title h1{margin:0;font-size:2.25rem}.page-title>p:last-child{color:var(--muted);margin:6px 0}.parent-title{justify-content:space-between;align-items:flex-end;display:flex}.empty{text-align:center;background:#fff;border:1px dashed #cfd6e4;border-radius:20px;padding:60px 25px}.empty>span{color:var(--green);font-size:2rem}.review-list{gap:15px;display:grid}.review-list article,.panel{border:1px solid var(--line);background:#fff;border-radius:18px;padding:24px}.review-list h3{margin:7px 0 14px}.review-list p{margin:4px 0}.review-list article>div{background:#f6f8fb;border-radius:10px;margin-top:12px;padding:12px}.red{color:var(--red)}.green{color:var(--green)}.dashboard-cards{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;display:grid}.dashboard-cards div{border:1px solid var(--line);background:#fff;border-radius:17px;padding:22px}.dashboard-cards span,.dashboard-cards strong{display:block}.dashboard-cards span{color:var(--muted);font-size:.88rem}.dashboard-cards strong{margin-top:8px;font-size:2rem}.panel{margin-top:18px}.panel h2{margin:0 0 16px}.grade-table>div{grid-template-columns:1fr 1fr 1fr 2fr;align-items:center;gap:15px;padding:12px;display:grid}.table-head{color:var(--muted);border-bottom:1px solid var(--line);font-size:.8rem}.table-row{border-bottom:1px solid #f0f2f6}.mini-progress{background:#edf0f5;border-radius:99px;height:8px;overflow:hidden}.mini-progress i{background:var(--blue);height:100%;display:block}.recent-list>div{border-bottom:1px solid #f0f2f6;align-items:center;gap:12px;padding:11px 0;display:flex}.recent-list p{flex:1;margin:0}.recent-list small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:650px;display:block;overflow:hidden}.recent-list time{color:var(--muted);font-size:.82rem}.tick,.cross{border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.tick{color:var(--green);background:#e5f7ef}.cross{color:var(--red);background:#feeceb}.muted{color:var(--muted)}.admin-panel{max-width:800px}.admin-summary{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.admin-summary strong,.admin-summary span{display:block}.admin-summary strong{font-size:2rem}.admin-summary span{color:var(--muted)}.admin-panel label{margin-bottom:7px;font-weight:750;display:block}.admin-panel textarea{border:1px solid var(--line);resize:vertical;border-radius:12px;width:100%;height:260px;padding:14px;font-family:ui-monospace,monospace;font-size:.85rem}.button-row{gap:10px;margin-top:12px;display:flex}.admin-message{background:var(--blue2);color:#2348bc;border-radius:10px;padding:11px}.note{background:#fff8e8;border:1px solid #f6dfac;border-radius:12px;margin-top:22px;padding:16px}.note p{color:#755312;margin:5px 0 0}footer{text-align:center;color:var(--muted);padding:22px;font-size:.8rem}.loading{place-items:center;min-height:100vh;display:grid}@media (max-width:850px){.topbar{align-items:flex-start;gap:10px;height:auto;min-height:68px;padding:12px 18px}.brand b{display:none}.topbar nav{overflow-x:auto}.topbar nav button{white-space:nowrap;padding:10px 8px}.page{width:min(100% - 28px,1160px);padding-top:28px}.welcome{flex-direction:column;align-items:stretch;padding:26px}.lesson-grid,.exam-grid,.dashboard-cards{grid-template-columns:repeat(2,1fr)}.quick-stats{grid-template-columns:1fr}.section-heading{flex-direction:column;align-items:flex-start;gap:6px}.parent-title{flex-direction:column;align-items:flex-start;gap:16px}.recent-list small{max-width:260px}}@media (max-width:520px){.topbar{flex-direction:column}.topbar nav{width:100%}.topbar nav button{font-size:.83rem}.lesson-grid,.exam-grid,.dashboard-cards,.quick-stats{grid-template-columns:1fr 1fr}.quick-stats div:last-child{grid-column:1/-1}.practice-top span{display:none}.question-card{padding:22px 18px}.grade-table>div{grid-template-columns:.7fr 1fr 1fr}.grade-table>div>:last-child{display:none}.button-row{flex-direction:column}}input{font:inherit}.topbar nav{align-items:center}.topbar nav button{height:100%}.account-name{color:var(--ink);padding-left:10px;font-size:.82rem;font-weight:700}.auth-page{background:radial-gradient(circle at top left,#e8efff,transparent 42%),var(--bg);place-items:center;min-height:100vh;padding:32px 18px;display:grid}.auth-card{border:1px solid var(--line);width:min(460px,100%);box-shadow:var(--shadow);background:#fff;border-radius:24px;padding:34px}.auth-logo{align-items:center;gap:10px;margin-bottom:25px;font-size:1.2rem;display:flex}.auth-logo span{background:var(--blue);color:#fff;border-radius:12px;place-items:center;width:42px;height:42px;font-weight:800;display:grid}.auth-card h1{margin:4px 0;font-size:2rem}.auth-intro{color:var(--muted);margin:4px 0 22px}.google-button{border:1px solid var(--line);background:#fff;border-radius:11px;width:100%;padding:12px;font-weight:750}.google-button span{color:#4285f4;margin-right:8px}.divider{color:var(--muted);align-items:center;gap:12px;margin:20px 0;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";background:var(--line);flex:1;height:1px}.auth-form{gap:14px;display:grid}.auth-form label,.auth-form legend{font-size:.86rem;font-weight:750}.auth-form input,.auth-form select{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;margin-top:6px;padding:11px 12px;display:block}.auth-form fieldset{border:0;margin:0;padding:0}.role-options{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:7px;display:grid}.role-options button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px}.role-options button.selected{border-color:var(--blue);background:var(--blue2);color:var(--blue);font-weight:750}.auth-form .wide{margin-top:4px}.auth-message{background:var(--blue2);color:#2348bc;border-radius:10px;padding:11px 13px;font-size:.9rem}.switch-auth{width:100%;color:var(--blue);background:0 0;border:0;margin-top:16px;font-weight:700}.tutor-welcome{grid-template-columns:1fr 1fr;align-items:center;gap:24px;display:grid}.tutor-welcome strong{letter-spacing:.08em;font-size:1.5rem}.tutor-welcome .note{margin:0}@media (max-width:850px){.account-name{display:none}.tutor-welcome{grid-template-columns:1fr}.auth-card{padding:26px 22px}}
