:root{color:#172033;font-synthesis:none;background:#f4f6f9;font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}.auth-layout{background:#fff;grid-template-columns:minmax(420px,1.15fr) minmax(420px,.85fr);min-height:100vh;display:grid}.brand-panel{color:#fff;background:radial-gradient(circle at 15% 18%,#3d70ec 0,#0000 35%),linear-gradient(145deg,#173fa9,#10285f 72%);flex-direction:column;justify-content:center;padding:clamp(56px,8vw,116px);display:flex}.eyebrow{color:#2b63e7;letter-spacing:.12em;margin:0 0 14px;font-size:12px;font-weight:900}.brand-panel .eyebrow{color:#bcd0ff}.brand-panel h1{letter-spacing:-.04em;max-width:780px;margin:0;font-size:clamp(38px,5.5vw,68px);line-height:1.18}.brand-panel>p:not(.eyebrow){color:#dce6ff;max-width:650px;margin:28px 0;font-size:18px;line-height:1.8}.trust-list{flex-wrap:wrap;gap:10px;display:flex}.trust-list span{color:#eaf0ff;border:1px solid #668ce8;border-radius:999px;padding:9px 13px;font-size:13px}.auth-card{width:min(100%,560px);margin:auto;padding:48px clamp(28px,5vw,64px)}.tabs{border-bottom:1px solid #dde3ed;gap:28px;margin-bottom:38px;display:flex}.tabs button{color:#697386;background:0 0;border:0;border-bottom:3px solid #0000;padding:12px 2px;font-weight:800}.tabs button.active{color:#172033;border-color:#2b63e7}form{gap:18px;display:grid}form h2{margin:6px 0 4px;font-size:30px}form small{color:#7a8497}label{color:#475267;gap:8px;font-size:14px;font-weight:700;display:grid}input,select,textarea{color:#172033;background:#fff;border:1px solid #ced6e4;border-radius:10px;outline:none;width:100%;padding:12px 13px;transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{border-color:#2b63e7;box-shadow:0 0 0 3px #2b63e71b}.two-fields{grid-template-columns:1fr 1fr;gap:14px;display:grid}.primary,.secondary,.danger{border-radius:9px;min-height:42px;padding:10px 16px;font-weight:800}.primary{color:#fff;background:#2b63e7;border:1px solid #2b63e7}.primary:hover{background:#1f51c8}.secondary{color:#26334a;background:#fff;border:1px solid #ced6e4}.danger{color:#b42335;background:#fff4f5;border:1px solid #f0c6cb}button:disabled{cursor:not-allowed;opacity:.55}.alert{border-radius:9px;margin:18px 0 0;padding:12px 14px;line-height:1.55}.alert.error{color:#a52231;background:#fff3f4;border:1px solid #f1c6ca}.alert.success{color:#146b4d;background:#eefaf5;border:1px solid #b8e0cd}.hint,.empty{color:#798398;text-align:center}.app-shell{grid-template-columns:248px 1fr;min-height:100vh;display:grid}aside{color:#fff;background:#14213d;flex-direction:column;min-height:100vh;padding:28px 18px;display:flex;position:sticky;top:0}.logo{align-items:center;gap:12px;padding:0 10px 30px;display:flex}.logo>b{background:#2b63e7;border-radius:11px;place-items:center;width:42px;height:42px;display:grid}.logo span{font-weight:800;display:grid}.logo small{color:#9facc5;margin-top:3px;font-weight:500}nav{gap:7px;margin-bottom:12px;display:grid}nav button{color:#bcc7da;text-align:left;background:0 0;border:0;border-radius:9px;justify-content:space-between;padding:12px 14px;font-weight:700;display:flex}nav button.active,nav button:hover{color:#fff;background:#ffffff14}nav i{color:#fff;text-align:center;background:#2b63e7;border-radius:999px;min-width:24px;padding:2px 6px;font-size:11px;font-style:normal}.account{border-top:1px solid #ffffff1c;gap:5px;margin-top:auto;padding:18px 10px 0;display:grid}.account span{color:#aebbd1;text-overflow:ellipsis;font-size:12px;overflow:hidden}.account button{color:#d8e1f1;text-align:left;background:0 0;border:0;margin-top:12px;padding:0}.workspace{min-width:0;padding:34px clamp(24px,4vw,56px) 64px}.topbar,.section-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.topbar{border-bottom:1px solid #dce2ec;padding-bottom:26px}.topbar p{color:#687489;margin:0}.topbar h1{margin:4px 0 0;font-size:30px}.status-chip{color:#687489;background:#eef1f6;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:900;display:inline-flex}.status-chip.active{color:#107451;background:#e6f7ef}.status-chip.pending{color:#956300;background:#fff4d8}.status-chip.rejected,.status-chip.disabled{color:#a52231;background:#ffebed}.section-heading{margin:32px 0 18px}.section-heading h2,.section-heading h3{margin:0}.section-heading p:not(.eyebrow){color:#687489;margin:7px 0 0}.section-heading.compact{align-items:flex-start;margin:0 0 20px}.panel,.table-card,.context-card,.approval-card{background:#fff;border:1px solid #d8dee8;border-radius:14px;box-shadow:0 10px 30px #20304b08}.panel{padding:22px}.panel h3{margin:0 0 20px}.split-layout{grid-template-columns:minmax(300px,.75fr) minmax(420px,1.25fr);align-items:start;gap:18px;display:grid}.course-layout{grid-template-columns:330px 1fr}.course-grid{grid-template-columns:repeat(2,minmax(240px,1fr));gap:14px;display:grid}.course-card{min-height:190px;color:inherit;text-align:left;background:#fff;border:1px solid #d8dee8;border-radius:14px;flex-direction:column;padding:22px;display:flex}.course-card:hover{border-color:#2b63e7;box-shadow:0 12px 30px #244a9e14}.course-card>span{color:#2b63e7;font-size:12px;font-weight:800}.course-card h3{margin:20px 0 8px;font-size:21px}.course-card p{color:#687489;margin:0;line-height:1.6}.course-card footer{color:#687489;border-top:1px solid #edf0f4;align-items:center;gap:6px;margin-top:auto;padding-top:18px;display:flex}.course-card footer i{color:#2b63e7;margin-left:auto;font-style:normal;font-weight:800}.context-card{border-left:4px solid #2b63e7;justify-content:space-between;align-items:center;margin-bottom:18px;padding:22px 24px;display:flex}.context-card span,.context-card p{color:#687489}.context-card h3{margin:7px 0;font-size:24px}.context-card p{margin:0}.context-card>strong{font-size:18px}.list{gap:9px;display:grid}.list article,.group-row{width:100%;color:inherit;text-align:left;background:#fff;border:1px solid #e0e5ed;border-radius:10px;justify-content:space-between;align-items:center;gap:16px;padding:14px;display:flex}.list article div,.group-row div,td{min-width:0}.list article span,.group-row span,td small{color:#788398;margin-top:5px;font-size:12px;display:block}.group-row:hover,.group-row.selected{background:#f5f8ff;border-color:#2b63e7}.roster-panel{margin-top:18px}.upload-button{color:#fff;cursor:pointer;background:#2b63e7;border-radius:9px;place-items:center;min-height:42px;padding:10px 16px;display:inline-grid}.upload-button input{display:none}.join-code{background:#f3f6fb;border-radius:9px;align-items:center;gap:16px;margin-bottom:18px;padding:13px 15px;display:flex}.join-code span{color:#687489;font-size:13px}.join-code code{overflow-wrap:anywhere;color:#174ebd}.import-result{background:#f1faf6;border:1px solid #cce5d9;border-radius:9px;flex-wrap:wrap;gap:14px;margin-bottom:16px;padding:13px;display:flex}.import-result .bad{color:#b42335}.import-result ul{color:#9b2938;width:100%;margin:0}.table-card{overflow-x:auto}.table-card.inner{box-shadow:none}table{border-collapse:collapse;width:100%}th,td{text-align:left;white-space:nowrap;border-bottom:1px solid #e8ecf2;padding:14px 16px}th{color:#687489;background:#f8f9fb;font-size:12px}td{font-size:14px}.actions{gap:7px;display:flex}.mini{min-height:32px;padding:6px 10px;font-size:12px}.approval-card{text-align:center;max-width:720px;margin:54px auto;padding:42px}.approval-card>span{color:#8a5b00;background:#fff2ce;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:900;display:inline-block}.approval-card h2{margin:20px 0 12px}.approval-card p{color:#687489;line-height:1.7}.approval-card blockquote{color:#68501c;text-align:left;background:#fff9e9;border-left:3px solid #e0ab30;margin:20px 0;padding:14px}.password-panel{max-width:560px;margin-top:34px}.password-panel>h2{margin-bottom:8px}.password-panel>p:not(.eyebrow){color:#687489}.password-panel form{margin-top:26px}code{font-family:Consolas,monospace}@media (width<=980px){.auth-layout{grid-template-columns:1fr}.brand-panel{min-height:360px;padding:48px 28px}.app-shell{grid-template-columns:82px 1fr}aside{padding-inline:10px}.logo span,.account span,.account strong{display:none}.logo{justify-content:center;padding-inline:0}nav button{text-align:center;justify-content:center}.account button{text-align:center;font-size:12px}.split-layout,.course-layout{grid-template-columns:1fr}}@media (width<=680px){.brand-panel{min-height:300px}.brand-panel h1{font-size:34px}.auth-card{padding:34px 20px}.app-shell{display:block}aside{flex-direction:row;align-items:center;gap:8px;min-height:auto;padding:12px;position:static;overflow-x:auto}.logo{padding:0}.logo>b{width:36px;height:36px}aside nav{margin:0;display:flex}nav button{white-space:nowrap}.account{border:0;margin:0 0 0 auto;padding:0}.workspace{padding:24px 14px 48px}.two-fields,.course-grid{grid-template-columns:1fr}.topbar,.section-heading,.context-card,.join-code{flex-direction:column;align-items:flex-start}.table-card{margin-inline:-4px}}
