@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-sans:"Inter","Inter Fallback"}:root{--bg:#F7F8FA;--ink:#101114;--muted:#6B7280;--secondary:#F0F1F4;--hair:#E7E8EC;--brand:#5B5BD6;--brand-hover:#4F4FC7;--brand-soft:#EEEEFB;--green:#2F9E6E;--green-soft:#E4F4EC;--red:#E5484D;--red-soft:#FCE9E9;--amber-soft:#FBF0DD;--r-md:10px;--r-lg:12px;--r-xl:17px;--r-3xl:26px;--shadow-card:0 1px 2px rgba(16,17,20,.04),0 4px 16px rgba(16,17,20,.04);--shadow-hover:0 4px 12px rgba(16,17,20,.06),0 16px 40px rgba(16,17,20,.08);--shadow-frame:0 24px 80px rgba(16,17,20,.12)}*{box-sizing:border-box}body{font:14px/1.5 var(--font-sans),Inter,system-ui,-apple-system,sans-serif;color:var(--ink);background:#fff;margin:0;min-height:100vh}main{max-width:420px;margin:0 auto;padding:48px 16px}body:has(.topbar) main{max-width:none;margin:0;padding:0}h1{font-size:20px;font-weight:500;margin:0 0 4px}p.sub{color:var(--muted);margin:0 0 20px}label{display:block;font-size:13px;font-weight:500;margin:12px 0 4px;color:var(--ink)}input,select{width:100%;padding:10px 12px;border:1px solid var(--hair);border-radius:var(--r-md);font:inherit;background:#fff}input:focus,select:focus{outline:2px solid var(--brand);outline-offset:-1px;border-color:transparent}button{padding:9px 22px;border:0;border-radius:var(--r-md);background:var(--brand);color:#fff;font:inherit;font-weight:500;cursor:pointer}button:hover{background:var(--brand-hover)}button.secondary{background:#fff;color:var(--brand);border:1px solid rgba(16,17,20,.22)}button.secondary:hover{background:var(--brand-soft)}button.text{background:none;color:var(--brand);padding:8px 10px}button.text:hover{background:var(--brand-soft)}button.danger-text{background:none;color:var(--muted);padding:6px 10px;font-size:18px;line-height:1}button.danger-text:hover{background:var(--red-soft);color:#C13A3F}form>button{width:100%;margin-top:16px}.card{background:#fff;border:1px solid var(--hair);border-radius:var(--r-xl);padding:24px;margin-bottom:16px;box-shadow:var(--shadow-card)}.error{background:var(--red-soft);border:1px solid #f5c4c6;color:#C13A3F;border-radius:var(--r-md)}.error,.ok{padding:10px 12px;margin-top:12px;font-size:13px}.ok{background:var(--green-soft);border:1px solid #bfe4d0;color:#1E7A50;border-radius:var(--r-md)}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted);font-size:13px}body:has(.topbar){background:var(--bg)}.topbar{gap:16px;height:64px;padding:0 24px;border-bottom:1px solid var(--hair);background:#fff}.topbar,.topbar .brand{display:flex;align-items:center}.topbar .brand{font-size:21px;color:var(--muted);gap:10px}.topbar .brand b{color:var(--ink);font-weight:700;letter-spacing:-.02em}.topbar nav{display:flex;gap:4px;margin-left:16px}.topbar nav a{color:var(--muted);padding:8px 14px;border-radius:var(--r-md);font-weight:500}.topbar nav a:hover{background:rgba(16,17,20,.05);color:var(--ink);text-decoration:none}.topbar .spacer{flex:1 1}.container{max-width:1040px;margin:0 auto;padding:24px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:24px;gap:24px}.class-card{border:1px solid var(--hair);border-radius:var(--r-xl);overflow:hidden;background:#fff;box-shadow:var(--shadow-card);transition:box-shadow .15s;display:block;color:inherit}.class-card:hover{box-shadow:var(--shadow-hover);text-decoration:none}.class-banner{height:100px;padding:16px;color:#fff;display:flex;flex-direction:column;justify-content:flex-start}.class-banner .name{font-size:22px;font-weight:500;line-height:1.2}.class-banner .meta{font-size:13px;opacity:.95}.class-card .body{padding:16px;min-height:64px;color:var(--muted);font-size:13px}.hero{border:1px solid var(--hair);border-radius:var(--r-xl);overflow:hidden;margin-bottom:24px}.hero .class-banner{height:130px;justify-content:flex-end}.section-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--hair);padding:8px 0;margin:28px 0 4px}.section-head h2{font-size:26px;font-weight:600;color:var(--ink);margin:0;letter-spacing:-.021em}.row{display:flex;align-items:center;gap:16px;padding:10px 4px;border-bottom:1px solid rgba(16,17,20,.06)}.avatar{width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;color:#fff;font-weight:500;font-size:15px}.row .who{flex:1 1}.row .who .nm{font-weight:500}.row .who .em{color:var(--muted);font-size:12.5px}.chip{font-size:11px;font-weight:500;padding:2px 8px;border-radius:var(--r-md);background:var(--secondary);color:var(--muted)}.chip.invited{background:var(--amber-soft);color:#A16207}.chip.pending{background:var(--brand-soft);color:var(--brand-hover)}dialog{border:0;border-radius:var(--r-xl);box-shadow:var(--shadow-frame);padding:24px;width:380px}dialog::-webkit-backdrop{background:rgba(16,17,20,.4)}dialog::backdrop{background:rgba(16,17,20,.4)}table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:10px 6px;border-bottom:1px solid rgba(16,17,20,.06);text-align:left}th{color:var(--muted);font-size:12px;font-weight:500}.talk-headline{border-left:4px solid var(--brand)}.talk-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:12px;gap:12px;margin-bottom:18px}.stat-card{background:var(--brand-soft);border-radius:var(--r-lg);padding:12px 14px}.stat-value{font-size:22px;font-weight:600;color:var(--ink)}.stat-label{color:var(--muted);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.talk-timeline{display:flex;height:26px;border-radius:6px;overflow:hidden;border:1px solid var(--hair);background:var(--secondary)}.talk-block.teacher{background:var(--brand)}.talk-block.student{background:var(--green)}.talk-block.silence{background:var(--hair)}.talk-legend{display:flex;gap:16px;align-items:center;margin-top:6px}.talk-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.talk-dot.teacher{background:var(--brand)}.talk-dot.student{background:var(--green)}.talk-dot.silence{background:var(--hair)}.phase-band{display:grid;place-items:center;background:var(--brand-soft);color:var(--brand-hover);font-size:11px;font-weight:500;border-right:1px solid #fff;overflow:hidden;white-space:nowrap}details>summary{cursor:pointer;font-weight:500;padding:6px 0}.stage-row{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:14px}.stage-row.done{color:var(--green)}.stage-row.now{color:var(--brand);font-weight:500}.stage-row.todo{color:#9AA0AC}.stage-mark{width:18px;text-align:center}.chip.ok{background:var(--green-soft);color:#1E7A50}body:has(.auth-card){background:var(--bg)}body:has(.auth-card) main{max-width:480px;padding-top:8vh}.auth-card{background:#fff;border:1px solid var(--hair);border-radius:var(--r-3xl);padding:44px 40px 36px;color:var(--ink);box-shadow:var(--shadow-frame)}.auth-head{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:22px}.auth-sub{color:var(--muted);font-size:14px;margin:-4px 0 0;text-align:center}.auth-title{font-size:26px;font-weight:700;color:var(--ink);margin:0;text-align:center;letter-spacing:-.021em}.auth-error{background:var(--red);color:#fff;border-radius:var(--r-md);padding:10px 14px;font-size:13.5px;font-weight:500;margin-bottom:18px}.auth-provider{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 18px;margin-bottom:10px;background:#fff;color:var(--ink);font-weight:600;font-size:14.5px;border:1px solid rgba(16,17,20,.22);border-radius:999px}.auth-provider:hover{background:#fff;border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}.auth-divider{border:0;border-top:1px solid var(--hair);margin:22px 0}.auth-card label{color:var(--ink);font-weight:600;font-size:13.5px}.auth-card input,.auth-card select{border-color:rgba(16,17,20,.18);border-radius:var(--r-md);padding:12px 14px}.auth-card input:focus,.auth-card select:focus{outline-color:var(--brand)}.auth-card form>button,.auth-primary{width:100%;padding:13px 22px;border-radius:999px;background:var(--brand);color:#fff;font-weight:700;font-size:15px}.auth-card form>button:hover,.auth-primary:hover{background:var(--brand-hover)}.auth-links{text-align:center;margin:20px 0 0;font-size:14px}.auth-links a{color:var(--ink);font-weight:600;text-decoration:underline}.auth-foot{text-align:center;margin-top:22px;padding-top:20px;border-top:1px solid var(--hair);color:var(--muted);font-size:14px}.auth-foot a{color:var(--ink);font-weight:600;text-decoration:underline}.auth-card .muted{color:var(--muted)}