:root{color-scheme:light;--ink:#121f1b;--muted:#65736e;--line:#d7e0db;--panel:#ffffff;--page:#f5f8f6;--brand:#0f684d;--brand-strong:#0a4d39;--brand-soft:#e5f3ee;--accent:#b8324b;--amber:#9b6b1b;--amber-soft:#fff6de;--focus:#246b87;--shadow:0 18px 42px rgba(21,41,34,0.08);--shadow-soft:0 8px 24px rgba(21,41,34,0.06)}*{box-sizing:border-box}body{margin:0;background:linear-gradient(180deg,#ecf4f0 0,var(--page) 260px),var(--page);color:var(--ink);font-family:Inter,Segoe UI,Arial,Helvetica,sans-serif;line-height:1.45}button,input,select,textarea{font:inherit}button{border:1px solid var(--brand);border-radius:6px;background:var(--brand);color:#fff;cursor:pointer;min-height:40px;padding:9px 14px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}button:hover{background:var(--brand-strong);border-color:var(--brand-strong);box-shadow:var(--shadow-soft);transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.7;transform:none}.danger{background:#fff}.danger,.danger:hover{border-color:var(--accent);color:var(--accent)}.danger:hover{background:#fff5f7}.secondary-button{align-items:center;background:#fff;border:1px solid var(--brand);border-radius:6px;color:var(--brand);display:inline-flex;font-weight:700;justify-content:center;min-height:40px;padding:9px 14px;text-decoration:none}.secondary-button:focus,.secondary-button:hover{background:var(--brand-soft);color:var(--brand-strong)}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-panel{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:30px}.auth-note,.auth-switch{color:var(--muted);font-size:.92rem;margin:12px 0 0}.auth-switch a{color:var(--brand);font-weight:700}.app-shell{width:100%;margin:0;padding:26px clamp(16px,2vw,38px) 38px}.app-nav{align-items:center;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:flex;gap:18px;justify-content:space-between;padding:12px clamp(16px,2vw,38px);position:-webkit-sticky;position:sticky;top:0;z-index:5}.app-brand{color:var(--brand);display:grid;grid-gap:0;gap:0;font-weight:800;letter-spacing:0;line-height:1;min-width:130px;padding:4px 0;text-decoration:none}.app-brand span{font-size:1.05rem}.app-brand small{color:var(--muted);font-size:.72rem;font-weight:700;margin-top:3px}.app-nav-links{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.app-nav-links a{border:1px solid transparent;border-radius:6px;color:var(--ink);font-weight:650;padding:9px 11px;text-decoration:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.app-nav-links a:focus,.app-nav-links a:hover,.app-nav-links a[aria-current=page]{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}.app-brand:focus,.app-brand:hover{color:var(--ink)}.page-heading{padding-bottom:18px}.page-heading,.topbar{border-bottom:1px solid var(--line);margin-bottom:22px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:22px}.eyebrow{color:var(--brand);font-size:.78rem;font-weight:700;margin:0 0 6px;text-transform:uppercase}.eyebrow,h1{letter-spacing:0}h1{font-size:clamp(2rem,3vw,3.35rem);line-height:1.05;margin-bottom:12px}h2{font-size:1.25rem;line-height:1.2}h3{font-size:1.05rem;line-height:1.25}h1,h2,p{margin-top:0}.grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.grid,.management-grid{display:grid;grid-gap:16px;gap:16px}.management-grid{grid-template-columns:repeat(5,minmax(250px,1fr));overflow-x:auto;padding-bottom:10px;scrollbar-color:var(--brand) transparent}.management-grid .records li{align-items:stretch;flex-direction:column}.management-grid .inline-actions,.management-grid .record-controls{justify-content:stretch}.management-section{width:100%}.management-summary{align-items:center;display:flex;gap:8px;justify-content:space-between;padding:2px 0 8px}.management-summary .muted{font-size:.86rem;font-weight:400}.pending-users{border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:18px}.management-body{display:grid;grid-gap:12px;gap:12px;border-top:1px solid var(--line);padding-top:14px}.management-section:not([open]){align-self:start}.wide-stack{display:grid;grid-gap:16px;gap:16px;margin-top:16px}.quick-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:18px}.quick-grid a{align-items:center;background:var(--brand);border:1px solid var(--brand);border-radius:6px;color:#fff;display:flex;font-weight:750;justify-content:center;min-height:52px;padding:13px;text-align:center;text-decoration:none;transition:background .15s ease,box-shadow .15s ease,transform .15s ease}.quick-grid a:focus,.quick-grid a:hover{background:var(--brand-strong);box-shadow:var(--shadow-soft);transform:translateY(-1px)}.stats{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));list-style:none;margin:0;padding:0}.stats li{background:linear-gradient(180deg,#ffffff,#f8fbf9);border:1px solid var(--line);border-radius:8px;padding:14px}.stats strong{display:block;font-size:1.8rem;line-height:1;margin-bottom:6px}.stats span{color:var(--muted)}.security-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));grid-gap:16px;gap:16px;margin-bottom:16px}.audit,.notice,.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-soft);padding:20px}.panel-heading{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;margin:-2px 0 16px;padding-bottom:12px}.panel-heading h2{margin:0}.notice{background:linear-gradient(90deg,var(--brand-soft),#fff 70%);border-left:5px solid;border-color:#c8e4da;display:grid;grid-gap:5px;gap:5px;margin-bottom:18px}.form{grid-gap:12px;gap:12px;margin-bottom:16px}.form,label{display:grid}label{grid-gap:6px;gap:6px;color:var(--muted);font-size:.92rem;font-weight:650}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);min-height:40px;padding:9px 11px;transition:border-color .15s ease,box-shadow .15s ease}textarea{resize:vertical;min-height:76px}button:focus,input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:2px}input:focus,select:focus,textarea:focus{border-color:var(--focus);box-shadow:0 0 0 3px rgba(36,107,135,.1)}.audit ul,.records{display:grid;grid-gap:8px;gap:8px;list-style:none;margin:0;padding:0}.records li{align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:8px;display:flex;gap:10px;justify-content:space-between;padding:12px}.record-text{min-width:0}.record-text strong{display:block;line-height:1.25;margin-bottom:4px}.records span{color:var(--muted);display:block;font-size:.9rem;overflow-wrap:anywhere}.inline-actions,.record-controls{align-items:flex-start;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.record-controls details,.record-controls form{width:100%}.record-controls summary{border:1px solid var(--line);border-radius:6px;background:#fff;padding:9px 10px}.record-controls button{width:100%}.inline-actions .form{border-left:1px solid var(--line);margin-bottom:0;padding-left:10px;width:min(220px,100%)}details{width:min(320px,100%)}summary{color:var(--brand);cursor:pointer;font-weight:700;min-height:40px;padding:9px 0;list-style-position:inside}.record-controls details .form{border-top:1px solid var(--line);margin:4px 0 0;padding-top:10px}.muted{color:var(--muted)}.ok{color:var(--brand)}.error,.ok{font-weight:700;margin-bottom:0}.error{color:var(--accent)}.audit{margin-top:16px}.module-block{border-top:1px solid var(--line);display:grid;grid-gap:12px;gap:12px;padding-top:14px}.module-block+.module-block{margin-top:18px}.module-details{width:100%}.module-summary{align-items:center;display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:space-between}.module-summary .muted{font-size:.9rem;font-weight:400}.module-details[open] .module-summary{border-bottom:1px solid var(--line);margin-bottom:8px}.module-report-actions{justify-content:flex-end}.module-report-actions,.module-report-heading{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.module-report-heading{justify-content:space-between}.module-report-heading h3{margin:0}.matrix-form{display:grid;grid-gap:12px;gap:12px}.matrix-summary{display:flex;flex-wrap:wrap;gap:10px}.matrix-summary span{background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px 10px}.matrix-scroll{border:1px solid var(--line);border-radius:8px;overflow-x:auto}.matrix{border-collapse:collapse;min-width:760px;width:100%}.matrix td,.matrix th{border:1px solid var(--line);padding:10px;text-align:left;vertical-align:top}.matrix thead th{background:#eef6f2}.matrix tbody tr:nth-child(2n) td,.matrix tbody tr:nth-child(2n) th{background:#fbfdfc}.matrix input{min-width:90px}.tiny-field{font-size:.78rem;margin-top:6px}.matrix small{color:var(--muted);display:block;margin-top:4px}.gradebook-module .form{margin-bottom:0}.gradebook-summary{display:flex;flex-wrap:wrap;gap:8px}.gradebook-summary span{background:#fff;border:1px solid var(--line);border-radius:6px;color:var(--muted);font-weight:650;padding:8px 10px}.gradebook-scroll{background:#fff;border:1px solid var(--line);border-radius:8px;max-height:calc(100vh - 260px);overflow:auto}.gradebook-table{border-collapse:separate;border-spacing:0;min-width:980px;width:100%}.gradebook-table td,.gradebook-table th{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:9px;text-align:left;vertical-align:top}.gradebook-table thead th{background:#e8f4ef;color:var(--ink);position:-webkit-sticky;position:sticky;top:0;z-index:2}.gradebook-table tbody tr:hover td,.gradebook-table tbody tr:hover th{background:#f5faf7}.student-column{background:#fff;box-shadow:1px 0 0 var(--line);left:0;min-width:220px;position:-webkit-sticky;position:sticky;z-index:1}.gradebook-table thead .student-column{background:#dcece5;z-index:3}.instrument-column span,.student-column span{display:block;font-weight:800;line-height:1.2}.final-score-cell small,.grade-cell small,.instrument-column small,.student-column small{color:var(--muted);display:block;font-size:.78rem;line-height:1.25;margin-top:4px}.instrument-column{min-width:140px}.ra-score-cell,.summary-column{min-width:150px}.final-column,.final-score-cell{min-width:110px}.grade-cell{background:#fff;min-width:118px}.grade-cell input{min-height:36px;min-width:0;padding:7px 9px;text-align:right}.ra-score-cell{background:#fff9e8}.ra-score-cell span{display:block;font-size:.86rem;font-weight:700;line-height:1.35}.final-score-cell{background:#eef6f2;text-align:center}.final-score-cell strong{display:block;font-size:1.1rem}.breakdown-list,.validation-list{display:grid;grid-gap:8px;gap:8px;margin:0;padding-left:18px}.breakdown{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px;width:100%}.checkpoint-grid{display:grid;grid-gap:12px;gap:12px}.checkpoint-create{background:var(--brand-soft);border:1px solid #c8e4da;border-radius:8px;padding:14px}.checkpoint-card{padding:14px}.checkpoint-card-header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.checkpoint-card-header>div:first-child{display:grid;grid-gap:2px;gap:2px}.checkpoint-card-header span{color:var(--muted);font-size:.9rem}.checkpoint-card-header form{width:auto}.checkpoint-card-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.checkpoint-results-details{width:100%}.checkpoint-results-details summary{min-height:34px;padding:6px 0}.checkpoint-actions{display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(260px,1fr) minmax(160px,auto);margin:12px 0}.checkpoint-actions .form{margin-bottom:0}.checkbox-list,.checkbox-row{display:grid;grid-gap:8px;gap:8px}.checkbox-row{align-items:center;background:#f8fbf9;border:1px solid var(--line);border-radius:6px;grid-template-columns:auto 1fr;padding:9px 10px}.checkbox-row input{min-height:auto;width:auto}.checkpoint-results{margin-top:12px}@media (max-width:720px){.checkpoint-actions{grid-template-columns:1fr}}.effective-grid{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.effective-grid span{background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px}@media (max-width:720px){.app-shell{padding:16px}.app-nav{align-items:stretch;flex-direction:column}.app-nav-links{justify-content:flex-start}.management-grid{grid-template-columns:repeat(5,minmax(260px,78vw))}.records li,.topbar{align-items:stretch;flex-direction:column}.inline-actions,.record-controls{justify-content:stretch}.inline-actions .form,details{width:100%}}