:root{color-scheme:light;--wine:#492033;--wine-soft:#713c55;--cream:#faf6f2;--ink:#392b35;--muted:#746670;--line:#e7dbe2;--pink:#f4eaf0;--error:#a12535;--success:#176b39}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.55 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
header{background:var(--wine);color:#fff;padding:22px max(18px,calc((100% - 1068px)/2))}
header h1{font-size:clamp(1.4rem,4vw,1.85rem);line-height:1.25;margin:0 0 5px;font-weight:700}
header p{margin:0;color:#f1e3eb}
main{max-width:1100px;margin:auto;padding:20px 16px 56px}
a{color:var(--wine-soft);text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
nav,.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
nav{margin-bottom:20px}
.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:11px 16px;border:1px solid transparent;border-radius:10px;background:var(--wine-soft);color:#fff;text-decoration:none;font:inherit;font-weight:600;line-height:1.4;cursor:pointer;text-align:center}
.btn:hover,button:hover{background:#5c2c43;text-decoration:none}
.btn.secondary,button.secondary{background:#fff;color:var(--wine-soft);border-color:#cbb6c1}
.btn.secondary:hover,button.secondary:hover{background:#fbf4f7}
.btn.small,button.small{padding:9px 12px;font-size:.92rem}
button:disabled{opacity:.55;cursor:wait}
.btn[aria-disabled="true"]{opacity:.55;pointer-events:none}
:focus-visible{outline:3px solid #9f6187;outline-offset:3px}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;margin:18px 0;box-shadow:0 2px 4px #49203303}
.card h2{font-size:1.25rem;line-height:1.3;margin:0 0 8px}
.card h3{font-size:1.07rem;line-height:1.4;margin:0 0 8px}
.card>p:first-of-type{margin-top:0}
.section-heading{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap}
.section-heading p{margin:5px 0 0}
.notice,.status{padding:13px 16px;border-radius:10px;background:var(--pink);overflow-wrap:anywhere}
.notice:empty,.status:empty{display:none}
.notice.error,.status.error{background:#fff0f0;border:1px solid #edc5ce}
.notice.success,.status.success{background:#eef8f1;border:1px solid #c9e0d0}
.error,.err{color:var(--error)}
.success,.ok{color:var(--success)}
.muted,small{color:var(--muted)}
.grid,.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,235px),1fr));gap:16px}
.grid>.card{margin:0}
.field,label{display:block}
.field{margin-bottom:16px}
.field label,label.field{font-weight:600}
input,select,textarea{display:block;width:100%;min-height:46px;padding:11px 12px;border:1px solid #bdaeb6;border-radius:9px;font:inherit;line-height:1.4;background:#fff;color:var(--ink);max-width:100%;margin-top:6px}
input::placeholder,textarea::placeholder{color:#8b7b84}
input:disabled,select:disabled{background:#f1edf0;cursor:not-allowed}
input[type=checkbox],input[type=radio]{width:20px;min-height:20px;display:inline-block;vertical-align:middle;margin:0 8px 0 0;accent-color:var(--wine-soft)}
label small,.field small{display:block;margin-top:5px;font-weight:400;font-size:.85rem;line-height:1.5}
fieldset{padding:0;margin:0;border:0;min-width:0}
legend{font-weight:700;margin-bottom:10px}
.table-wrap{overflow-x:auto;max-width:100%;border:1px solid var(--line);border-radius:10px;margin:16px 0}
table{border-collapse:collapse;width:100%}
th,td{padding:12px 14px;text-align:left;border-bottom:1px solid #eee5ea;vertical-align:top}
th{background:#f7f0f4;color:#573746;font-size:.9rem;font-weight:700}
tbody tr:last-child td{border-bottom:0}
td small{display:block}
caption{text-align:left;padding:10px;font-weight:600}
.badge{display:inline-flex;align-items:center;border-radius:100px;background:var(--pink);color:#67374f;font-weight:600;font-size:.82rem;padding:4px 10px}
.empty-state{padding:22px 16px;text-align:center;border:1px dashed #d5c4cd;border-radius:12px;background:#fcf9fb;color:var(--muted)}
.empty-state p{margin:0 0 10px}
.empty-state p:last-child{margin-bottom:0}
details{border:1px solid var(--line);border-radius:12px;background:#fff;margin:16px 0}
details>summary{cursor:pointer;padding:16px;font-weight:650;min-height:52px}
details[open]>summary{border-bottom:1px solid var(--line)}
.details-body{padding:20px}
.student-list{padding-left:28px;margin-bottom:0}
.student-list li{padding:9px 4px;border-bottom:1px solid #f1e9ee;overflow-wrap:anywhere}
.student-list li:last-child{border-bottom:0}
.student-list small{display:block;font-size:.83rem}
.page-intro{margin:0 0 22px}
.roster-count{font-size:1.05rem;margin:0}
.form-footer{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.form-footer p{margin:0;flex:1;min-width:min(100%,220px)}
.class-select{max-width:620px}
.assignment-list td:last-child{white-space:nowrap}
.login-main{max-width:510px;padding-top:30px}
.login-main h2{margin-bottom:12px}
.login-main .card{padding:26px}
.login-main button[type=submit]{width:100%}
.login-logo{text-align:center}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;top:8px;left:8px;transform:translateY(-150%);z-index:99;background:#fff;padding:10px;border-radius:8px}
.skip-link:focus{transform:none}
@media(max-width:640px){header{padding:18px 16px}main{padding:16px 12px 40px}.card{padding:17px 15px;margin:16px 0}nav{gap:8px}.btn,button{padding:11px 13px}.section-heading{margin-bottom:16px}.form-grid{gap:0}.details-body{padding:16px}.assignment-list{min-width:640px}.login-main .card{padding:22px 18px}.form-footer>button{width:100%}}
@media(prefers-reduced-motion:no-preference){button,.btn{transition:background .15s ease}}
nav{display:flex;gap:12px;align-items:center;flex-wrap:wrap}nav a{color:#71334f;padding:8px}label{display:block;margin:10px 0}label input,label select{display:block;width:100%;margin-top:5px}button{margin:5px 4px 5px 0}.choices{display:flex;flex-wrap:wrap;gap:8px}.choices label{display:flex;align-items:center;gap:8px;background:#faf4f0;padding:10px;border-radius:8px}.choices input{width:auto;margin:0}dialog{border:0;border-radius:18px;max-width:min(94vw,520px);width:100%;padding:25px}dialog::backdrop{background:#24152377}.table-wrap{overflow:auto}td{vertical-align:top}td input{min-width:160px}.record{padding:18px;border-bottom:1px solid #eadfe5}.record h3{margin-top:0}.record-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.record-grid p{margin:0}.status.error{color:#a12535}button:disabled{opacity:.5}.row-result{font-size:.9rem;color:#71334f}.student-row{padding:14px 0;border-bottom:1px solid #e6dbe1}.preview-row{padding:15px;margin:12px 0;border:1px solid #e6dbe1;border-radius:12px}.preview-row input[type=checkbox]{width:auto}.preview-row label.include{display:flex;gap:10px;align-items:center}.preview-row input,.preview-row select{max-width:100%}.export-note{color:#715b6a}#admin[hidden],[hidden]{display:none!important}
