:root{--ink:#172033;--muted:#647086;--line:#dce3ec;--bg:#f3f6fa;--panel:#fff;--brand:#2459a9;--brand2:#17427f;--danger:#a72c2c;--ok:#197548;font-family:system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);line-height:1.55}a{color:var(--brand);text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:64px;background:#132847;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100vw - 1180px)/2));gap:20px;position:sticky;top:0;z-index:5}.brand{color:#fff;font-weight:750}.topbar nav{display:flex;align-items:center;gap:20px}.topbar nav a,.link-button{color:#dce8f8}.topbar form{margin:0}.link-button{border:0;background:transparent;padding:0;cursor:pointer}.container{max-width:1180px;margin:0 auto;padding:32px 20px 60px}.page-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:20px}.page-head h1{margin:2px 0;font-size:clamp(1.7rem,4vw,2.3rem)}.eyebrow{margin:0;color:var(--brand);font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:0 4px 20px rgba(25,45,75,.045);margin-bottom:20px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}.stat{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;color:var(--ink)}.stat:hover{border-color:#9cb7dd}.stat span{font-size:.9rem;color:var(--muted)}.stat strong{font-size:1.75rem;color:var(--brand)}.section-head,.actions{display:flex;justify-content:space-between;align-items:center;gap:10px}.section-head h2,.card h2{margin-top:0}.button,button{display:inline-block;border:1px solid #aebccc;background:#fff;color:var(--ink);border-radius:8px;padding:9px 14px;cursor:pointer}.primary{background:var(--brand);border-color:var(--brand);color:#fff}.primary:hover{background:var(--brand2)}.danger{background:#fff1f1;border-color:#e4a2a2;color:var(--danger)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:720px}th{text-align:left;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}th,td{padding:12px 10px;border-bottom:1px solid #edf0f4;vertical-align:top}td small,td a small{display:block;color:var(--muted);margin-top:3px}.badge{display:inline-block;padding:3px 8px;border-radius:999px;background:#e8f0fb;color:#214f8f;font-size:.82rem;white-space:nowrap}.empty{text-align:center;color:var(--muted);padding:30px}.filters{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:end}.filters label,.form-grid label,.stack label,.danger-zone label{display:grid;gap:5px;color:#4e5c70;font-size:.86rem}.filter-actions{display:flex;gap:8px}input,select,textarea{width:100%;border:1px solid #b8c3d0;border-radius:7px;background:#fff;padding:9px;color:var(--ink)}textarea{min-height:86px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.full{grid-column:1/-1}.form-grid h2{border-bottom:1px solid var(--line);padding-bottom:8px;margin:8px 0 0}.muted,small{color:var(--muted)}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.detail-grid .card{margin:0}.facts{display:grid;grid-template-columns:110px 1fr;gap:10px;margin:0}.facts dt{color:var(--muted)}.facts dd{margin:0}.todo{background:#fff5dd;border-left:4px solid #e2a419;padding:10px 12px}.timeline{list-style:none;padding:0;margin:0}.timeline li{display:grid;grid-template-columns:150px 1fr;gap:20px;padding:16px 0;border-bottom:1px solid var(--line)}.timeline-date{font-weight:700;color:var(--brand)}.timeline p{margin:6px 0}.danger-zone{border-color:#f0caca}.login-shell{min-height:100vh;display:grid;place-items:center}.login-card{width:min(420px,100%)}.login-card h1{margin-top:5px}.stack{display:grid;gap:16px}.flash{padding:12px 15px;border-radius:9px;margin-bottom:16px}.flash.error{background:#fff0f0;color:#872727}.flash.success{background:#eaf8f0;color:#17693c}.count{font-size:1rem;color:var(--muted);font-weight:500}.error-list{border-color:#e7a3a3;background:#fffafa}.prose{max-width:760px}.prose p{line-height:1.75}.mobile-priority{display:none}.priority-item{color:var(--ink);padding:14px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:4px 12px}.priority-item>span{display:grid;gap:3px}.priority-item>span:nth-child(2){justify-items:end}.priority-item p{grid-column:1/-1;margin:4px 0 0;color:var(--muted)}
@media(max-width:760px){.topbar{height:auto;align-items:flex-start;padding:14px 16px;position:static}.topbar,.page-head{flex-direction:column}.topbar nav{width:100%;gap:14px;overflow-x:auto}.container{padding:22px 14px 50px}.page-head{align-items:stretch}.page-head .actions{display:grid;grid-template-columns:1fr 1fr}.page-head .button{text-align:center}.stats{grid-template-columns:repeat(2,1fr)}.stat{padding:14px;align-items:flex-start}.stat strong{font-size:1.45rem}.filters,.form-grid,.detail-grid{grid-template-columns:1fr}.full{grid-column:auto}.filter-actions>*{flex:1;text-align:center}.timeline li{grid-template-columns:1fr;gap:4px}.card{padding:16px}.facts{grid-template-columns:95px 1fr}.desktop-priority{display:none}.mobile-priority{display:block}}
@media(max-width:390px){.stats{grid-template-columns:1fr}.topbar nav{font-size:.88rem}}

/* Keep long values and native controls inside the teacher workspace columns. */
.assistant-workspace{overflow-wrap:anywhere}
.assistant-workspace .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.assistant-workspace .form-grid>label{min-width:0}
.assistant-workspace input,.assistant-workspace select,.assistant-workspace textarea{min-width:0;max-width:100%}
.assistant-workspace button,.assistant-workspace select,.assistant-workspace input:not([type="checkbox"]){min-height:44px}
.assistant-workspace .actions{flex-wrap:wrap}
.assistant-workspace .confirm-choice{display:flex;align-items:flex-start;gap:10px;min-height:44px;margin:16px 0;cursor:pointer}
.assistant-workspace .confirm-choice input{width:20px;height:20px;flex:0 0 20px;margin:3px 0}
.assistant-workspace #confirmation-title{scroll-margin-top:84px}
.assistant-workspace #confirmation-title:focus{outline:2px solid var(--brand);outline-offset:4px}
@media(max-width:760px){.assistant-workspace .form-grid{grid-template-columns:minmax(0,1fr)}.assistant-workspace #confirmation-title{scroll-margin-top:20px}}
