:root{font-family:Inter,Segoe UI,sans-serif;color:#172e42;background:#f3f6fa;font-size:16px;--ink:#102d45;--accent:#007d70;--line:#dce4ec}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);padding:10px 15px;font-weight:600}button:hover{background:#edf5f6}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #0c9f8d;outline-offset:3px}.primary{background:var(--ink);color:white;border-color:var(--ink)}.primary:hover{background:#24526e}header{height:84px;display:flex;align-items:center;gap:35px;padding:0 5%;background:white;border-bottom:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;font-size:22px;font-weight:750;text-decoration:none;color:var(--ink)}.brand-icon{background:var(--ink);color:#67e5ce;padding:8px 13px;border-radius:12px;font-family:monospace;font-size:27px}.brand small{display:block;font-size:12px;letter-spacing:2px;margin-top:3px;color:#687d90}nav{margin-left:auto;display:flex;gap:8px}nav button{border:0;color:#677b8d}nav button.active{background:#e3f3ef;color:#006f62}.badge{font-size:12px;letter-spacing:1px;border:1px solid #bdd3dc;border-radius:5px;padding:7px 9px}.notice{padding:10px 5%;background:#fff8df;color:#6b541a;font-size:14px;border-bottom:1px solid #efdfab}main{max-width:1440px;padding:30px 5%;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:20px}h1{font-size:28px;margin:4px 0 8px;letter-spacing:-.7px}h2{font-size:21px;margin:0 0 15px}h3{font-size:16px;margin:0 0 12px}.muted{color:#60768a;font-size:14px;line-height:1.6}.eyebrow{font-size:12px;font-weight:750;letter-spacing:1.6px;color:var(--accent)}.workspace{display:grid;grid-template-columns:270px minmax(0,1fr);gap:24px}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:23px;box-shadow:0 3px 12px #12334c04}.sidebar{align-self:start}.field{display:block;font-size:14px;font-weight:600;margin:0 0 17px}.field input,.field select{display:block;width:100%;margin-top:7px;padding:11px;border:1px solid #cdd9e2;border-radius:7px;background:white}select{max-width:100%}.divider{border-top:1px solid var(--line);margin:20px 0}.qnav{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.qnav button{padding:10px 4px;font-size:14px}.qnav .current{background:var(--ink);color:white}.qnav .answered:not(.current){background:#dff4ed;border-color:#abddcf;color:#096453}.progress{height:6px;background:#e6edf2;border-radius:4px;margin:14px 0 8px;overflow:hidden}.progress span{display:block;height:100%;background:var(--accent);transition:width .2s}.legend{font-size:12px;margin-top:12px;color:#637b8e}.question-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:20px}.question-number{font-size:14px;font-weight:650;color:var(--accent)}.marks{background:#f0f4f8;border-radius:6px;font-size:14px;padding:6px 10px}.prompt{line-height:1.8;white-space:pre-wrap;margin-bottom:22px}.answer-label{display:flex;justify-content:space-between;align-items:center;margin:20px 0 10px;font-size:14px;font-weight:600}.answer{width:100%;min-height:220px;resize:vertical;padding:17px;border:1px solid #cdd9e2;border-radius:9px;line-height:1.7}.code-wrap{display:flex;background:#102538;border-radius:9px;overflow:hidden;border:1px solid #23465d}.code-gutter{padding:17px 10px;color:#637f93;line-height:1.7;font-family:monospace;min-width:38px;white-space:pre}.code{background:transparent;color:#d4f2ef;border:0;border-radius:0;font-family:Consolas,monospace;tab-size:4;min-height:270px;white-space:pre;overflow:auto}.code:focus{outline:0}.code-wrap:focus-within{outline:3px solid #0c9f8d}.footer-actions{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:18px;margin-top:24px;gap:10px}.actions{display:flex;gap:10px;flex-wrap:wrap}.saved{font-size:13px;color:#60768a}.flow-palette{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.flow-palette button{font-size:13px;padding:9px 12px}.flow-palette button small{display:block;font-size:11px;color:#6c8190}.flow-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0}.flow-toolbar button,.flow-toolbar select{font-size:13px;padding:8px}.flow-toolbar .selected{background:#dff4ed;border-color:#007d70}.canvas-scroll{overflow:auto;border:1px solid #cbd9e3;border-radius:9px}.canvas{position:relative;width:100%;min-width:700px;height:560px;background-color:#fafdff;background-image:radial-gradient(#cbd9e3 1px,transparent 1px);background-size:20px 20px;overflow:hidden}.canvas svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.flow-node{position:absolute;width:145px;height:70px;display:flex;align-items:center;justify-content:center;text-align:center;padding:14px;cursor:grab;touch-action:none;background:white;border:2px solid #345772;color:#163549;user-select:none;font-size:14px;z-index:2}.flow-node.terminal{border-radius:45px;background:#e0f5ef;border-color:#147d6c}.flow-node.io{clip-path:polygon(15% 0,100% 0,85% 100%,0 100%);background:#e4efff;border:0}.flow-node.decision{width:110px;height:110px;transform:rotate(45deg);border-radius:5px;background:#fff5d6}.flow-node.decision span{transform:rotate(-45deg);max-width:90px}.flow-node.selected{outline:3px solid #07a58f;outline-offset:4px}.node-edit{display:grid;grid-template-columns:1fr auto;gap:8px;margin:12px 0}.node-edit input{width:100%;padding:10px;border:1px solid #cdd9e2;border-radius:7px}.symbol-row{display:flex;gap:25px;flex-wrap:wrap;margin:20px 0}.symbol-item{display:flex;flex-direction:column;align-items:center;gap:15px}.symbol{width:72px;height:38px;border:2px solid #345772;background:#f5f9fc}.symbol.terminal{border-radius:30px}.symbol.decision{width:35px;height:35px;transform:rotate(45deg);margin:2px 18px}.symbol.io{transform:skew(-18deg)}.symbol.line{height:2px;margin:18px 0;position:relative}.symbol.line:after{content:'';position:absolute;right:-2px;top:-6px;border-left:10px solid #345772;border-top:5px solid transparent;border-bottom:5px solid transparent}.summary{padding:15px;background:#e5f4f0;border-radius:8px;margin-bottom:20px}.review-item{padding:20px 0;border-bottom:1px solid var(--line)}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.6;background:#f3f6f9;padding:14px;border-radius:7px}.grading{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grading input{width:85px;padding:9px;border:1px solid var(--line);border-radius:6px}.grading textarea{flex:1;min-width:200px;padding:9px;border:1px solid var(--line);border-radius:6px;min-height:50px}.empty{padding:35px;text-align:center;background:#f7fafc;border:1px dashed #b9cbd9;border-radius:9px}.stat{font-size:38px;font-weight:750;letter-spacing:-1px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:14px;text-align:left;border-bottom:1px solid var(--line)}th{color:#60768a;font-size:12px;text-transform:uppercase}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);padding:13px 22px;background:#102d45;color:white;border-radius:9px;box-shadow:0 5px 30px #0003;display:none;z-index:20;max-width:90vw}dialog{border:1px solid var(--line);border-radius:15px;padding:28px;max-width:480px}dialog::backdrop{background:#102d4580}.loading{padding:50px;text-align:center}@media(max-width:850px){header{padding:0 20px;gap:12px}.brand{font-size:18px}.brand small{font-size:10px}.badge{display:none}main{padding:22px 18px}.workspace{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:14px}.sidebar .divider{display:none}.sidebar .field{margin:0}.sidebar .nav-group{grid-column:1/-1}.qnav{grid-template-columns:repeat(8,1fr)}.heading{align-items:start;flex-direction:column}.panel{padding:18px}.footer-actions{flex-wrap:wrap}.notice{padding:10px 20px}.canvas{height:560px}}
:where(.sidebar)>*{min-width:0}.workspace>*{min-width:0}.field input,.field select{min-width:0}.canvas-scroll{max-width:100%}
.entry-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:25px;max-width:1060px}.entry-grid .panel{padding:30px}.entry-grid h2{font-size:24px}.exam-rules{background:#edf5f8;padding:18px;border-radius:9px;margin:20px 0;font-size:14px;line-height:1.7}.exam-rules ul{padding-left:20px;margin-bottom:0}.entry-grid button.primary{min-width:145px}.exam-timer{margin-left:auto;align-items:center;gap:16px;background:#e1f3ed;padding:10px 17px;border-radius:10px;color:#006657}.exam-timer:not([hidden]){display:flex}.exam-timer span{font-size:12px;font-weight:700;letter-spacing:1px}.exam-timer strong{font-size:27px;font-variant-numeric:tabular-nums}.exam-timer.timer-warning{background:#fff0e5;color:#a04100}.exam-running header{position:sticky;top:0;z-index:10;box-shadow:0 2px 12px #102d4510}.exam-running header nav,.exam-running header>.badge{display:none}.exam-running .brand{cursor:default}.exam-running .sidebar{display:block}.receipt{max-width:740px;margin:20px auto}.receipt h1{margin:15px 0}.student-identity h3{overflow-wrap:anywhere}.student-identity strong{font-size:14px}.entry-grid .field{margin-bottom:20px}@media(max-width:850px){.entry-grid{grid-template-columns:minmax(0,1fr)}.entry-grid .panel{padding:22px}.exam-timer{gap:9px;padding:9px 12px}.exam-timer span{font-size:10px;max-width:60px}.exam-timer strong{font-size:23px}.exam-running .brand small{display:none}}

.entry-page header nav{display:none}.entry-card{max-width:600px;margin:12px auto;padding:32px}.entry-card h1{font-size:30px;margin:12px 0}.entry-card h2{font-size:22px;margin:24px 0 18px}.entry-card .field{margin-bottom:20px}.entry-card form>.primary{width:100%;min-height:46px}.role-switch{display:flex;gap:6px;padding:5px;background:#edf3f6;border-radius:12px;margin:24px 0}.role-switch button{flex:1;min-height:44px;background:transparent;border-color:transparent;font-size:16px}.role-switch button[aria-pressed="true"]{background:#0b7368;color:white;box-shadow:0 2px 5px #102d4515}.role-switch button:focus-visible{outline:3px solid #158bcd;outline-offset:2px}@media(max-width:600px){.entry-card{padding:22px;margin:0 auto}.entry-card h1{font-size:26px}}

.marked-answer{display:grid;grid-template-columns:minmax(0,1fr) 108px;gap:24px;align-items:start;margin-top:20px}.answer-content{min-width:0}.mark-column{display:flex;flex-direction:column;align-items:flex-end;gap:8px;border-left:1px solid var(--line);padding-left:16px;text-align:right}.mark-column label{display:flex;flex-direction:column;gap:9px;align-items:flex-end;font-weight:600}.mark-column input{text-align:right;max-width:100%;font-size:18px}.mark-column .muted{font-size:14px}.answer-content>.answer-label{margin-top:0}@media(max-width:600px){.marked-answer{grid-template-columns:minmax(0,1fr) 78px;gap:12px}.mark-column{padding-left:10px}.mark-column input{width:66px;padding:8px 4px}.answer-content pre{padding:10px}}

.ink-tools{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.ink-tools button{padding:7px 10px;min-height:38px}.ink-tools button[aria-pressed="true"]{background:#fff0f0;color:#a71828;border-color:#c62030}.ink-tools span{width:100%;font-size:13px}.ink-scroll{overflow:auto;max-width:100%;border:1px solid #dae1e6;border-radius:6px;margin:10px 0}.ink-sheet{position:relative;background:white;color:#142c40;isolation:isolate}.ink-sheet>.ink-overlay{position:absolute;inset:0;z-index:5;pointer-events:none;max-width:none}.ink-editing>.ink-overlay{pointer-events:auto;touch-action:none;cursor:crosshair}.ink-overlay [data-ink-index]{pointer-events:none}.ink-editing .ink-overlay [data-ink-index]{pointer-events:visiblePainted}.ink-print{overflow:visible;border:0;break-inside:avoid}.ink-print .ink-sheet{break-inside:avoid}.ink-sheet .canvas{max-width:none}@media print{.ink-sheet{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.bank-workspace{display:grid;grid-template-columns:270px minmax(0,1fr);gap:24px}.bank-list{align-self:start}.bank-list button{display:block;width:100%;text-align:left;margin-bottom:12px;padding:14px}.bank-list button span{display:block;font-size:13px;color:#60768a;margin-top:6px}.bank-fields{display:flex;flex-wrap:wrap;gap:16px}.bank-fields .field{flex:1;min-width:120px}.bank-question{border:1px solid var(--line);border-radius:9px;padding:18px;margin:24px 0}.bank-question legend{font-weight:bold;padding:0 8px}.bank-question textarea{width:100%;min-height:130px;font:14px/1.6 monospace;padding:12px;border:1px solid var(--line);border-radius:7px}.bank-question .actions{margin-top:16px}.bank-editor{min-width:0}.bank-editor .field{margin-bottom:18px}#bank-preview-area{border-top:2px solid var(--line);margin-top:24px;padding-top:24px}@media(max-width:850px){.bank-workspace{grid-template-columns:1fr}.bank-list{max-height:260px;overflow:auto}}

.bank-page header nav{display:none}

button.danger{color:#a52032;border-color:#dca5ac;background:#fff7f8}

.active-test-card{border:1px solid var(--line);background:#edf5f4;padding:15px;border-radius:9px;margin:8px 0 10px}.active-test-card strong,.active-test-card span{display:block}.active-test-card span{font-size:14px;color:#52706e;margin-top:7px}
.review-filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin:18px 0}.settings-panel{max-width:780px}.logo-preview{display:flex;align-items:center;justify-content:center;min-height:140px;border:1px solid #c9d5df;border-radius:8px;background:#fff;padding:20px;margin:16px 0}.logo-preview img{max-width:260px;max-height:140px;object-fit:contain}.grading [data-mark-source]{font-size:14px;line-height:1.4}.grading input[readonly]{background:#edf3f8;font-weight:700}@media(max-width:700px){.review-filters{grid-template-columns:1fr}}

.bank-list button.bank-test-active{border:2px solid #007d70;background:#e8f8f2}.bank-list button .bank-active-badge,.bank-active-badge{display:inline-block;background:#007d70;color:white;border-radius:5px;padding:5px 9px;font-size:12px;font-weight:750;letter-spacing:.5px;margin:0 0 8px}.flow-palette-icon{display:block;width:42px;height:24px;margin:2px auto 9px;border:2px solid #007d70;background:#e8f8f2}.flow-palette-icon.terminal{border-radius:16px}.flow-palette-icon.io{transform:skew(-18deg)}.flow-palette-icon.decision{width:24px;height:24px;transform:rotate(45deg);margin-bottom:12px}.word-format{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;font:14px/1.6 Consolas,monospace}#word-preview .summary li{margin:6px 0}

.settings-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}.settings-tabs button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:white}.settings-panel[hidden]{display:none!important}

.dashboard-active{display:flex;align-items:center;justify-content:space-between;gap:24px}.dashboard-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0}.dashboard-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.dashboard-stat{margin:0;display:flex;flex-direction:column;gap:10px}.dashboard-stat strong{font-size:36px;color:var(--ink)}.dashboard-stat small{color:#60768a;line-height:1.5}.dashboard-results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:24px 0}.dashboard-results span,.dashboard-results strong{display:block}.dashboard-results strong{font-size:32px;margin-top:8px;color:var(--accent)}.dashboard-recent{margin-top:24px}@media(max-width:900px){.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.dashboard-filters,.dashboard-stats{grid-template-columns:1fr}.dashboard-active{align-items:flex-start;flex-direction:column}.dashboard-results strong{font-size:24px}}

.dashboard-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:24px}.dashboard-chart-grid .panel{margin:0;min-width:0}.dashboard-donut{display:flex;align-items:center;gap:24px}.dashboard-donut svg{width:200px;max-width:45%;flex-shrink:0}.dashboard-donut text,.dashboard-trend text{fill:var(--ink);font:14px Segoe UI,sans-serif}.dashboard-donut .donut-total{font-size:32px;font-weight:750}.dashboard-legend{list-style:none;margin:0;padding:0;flex:1}.dashboard-legend li{display:flex;align-items:center;gap:8px;margin:16px 0;font-size:14px}.dashboard-legend li>span{width:12px;height:12px;border-radius:3px;flex-shrink:0}.dashboard-legend strong{margin-left:auto}.dashboard-bars{margin:24px 0}.dashboard-bar-row{display:grid;grid-template-columns:145px minmax(0,1fr) 34px;gap:12px;align-items:center;margin:16px 0;font-size:14px}.dashboard-bar-track{height:20px;background:#e9eff4;border-radius:5px;overflow:hidden}.dashboard-bar-track>div{height:100%;border-radius:5px}.dashboard-bar-row strong{text-align:right}.dashboard-trend{width:100%;display:block;margin-top:16px}@media(max-width:900px){.dashboard-chart-grid{grid-template-columns:1fr}}@media(max-width:480px){.dashboard-bar-row{grid-template-columns:115px minmax(0,1fr) 28px;gap:8px}.dashboard-donut{gap:12px}.dashboard-legend li{font-size:12px}}

.dashboard-class-submissions{margin-top:24px}.dashboard-class-submissions .dashboard-bars{max-width:850px}.class-submission-status{display:inline-block;padding:5px 9px;border-radius:5px;font-size:13px;font-weight:600}.class-submission-status.has-submissions{background:#e2f5ed;color:#006451}.class-submission-status.no-submissions{background:#edf0f4;color:#596d7c}

.dashboard-tools{display:flex;justify-content:flex-end;margin:-8px 0 20px}.page-tools{margin:0 0 20px;flex-wrap:wrap}

.student-avatar{width:112px;height:112px;border-radius:12px;object-fit:cover;margin:12px 0}.student-avatar.small{width:48px;height:48px;margin:0}.student-profile-card,.student-list-identity{display:flex;align-items:center;gap:16px}.student-registration{max-width:850px;margin:auto}.student-course-choice{border:1px solid var(--line);border-radius:8px;padding:15px;margin:12px 0}.student-course-choice input[type=checkbox]{width:18px;height:18px;margin-right:8px}.student-course-choice .field{margin-top:14px}.students-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}#students-import-preview,#students-import-results{margin-top:24px}@media(max-width:700px){.students-filters{grid-template-columns:1fr}}

.student-camera-dialog{border:1px solid var(--line);border-radius:14px;padding:24px;width:min(560px,94vw)}.student-camera-dialog::backdrop{background:rgba(10,28,44,.65)}.student-camera-dialog video{width:100%;max-height:60vh;background:#102d45;border-radius:8px;object-fit:contain}

.student-camera-frame{position:relative;width:min(100%,360px);aspect-ratio:3/4;margin:0 auto;overflow:hidden;border-radius:12px;background:#102d45}.student-camera-frame video{width:100%;height:100%;max-height:none;border-radius:0;object-fit:cover}.student-camera-guide{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:rgba(255,255,255,.85);stroke-width:2;pointer-events:none;filter:drop-shadow(0 1px 3px #102d45)}.student-camera-guide ellipse,.student-camera-guide path{stroke-dasharray:7 5}.student-camera-guide .camera-eye-line{stroke:rgba(255,255,255,.45);stroke-width:1}.student-camera-hint{position:absolute;bottom:12px;left:12px;right:12px;text-align:center;color:white;background:rgba(16,45,69,.7);padding:7px;border-radius:6px;font-size:12px}.student-avatar:not(.small){height:144px;width:108px}

.student-camera-frame{width:min(100%,360px,38vh)}.student-camera-dialog{max-height:92vh;overflow:auto}

.student-rules{margin:18px 0}.student-rules summary{cursor:pointer;font-weight:600}.student-registration h2:not(:first-child){margin-top:28px}

#students-export-options[hidden]{display:none}

.marking-submission-status{display:flex;flex-wrap:wrap;gap:12px 24px;padding:14px 16px;margin:4px 0 20px;background:#edf5f8;border-radius:8px;font-size:14px}.marking-submission-status strong{font-size:20px;margin-right:5px}.marking-submission-status small{flex-basis:100%}.marking-student-heading{display:flex;align-items:center;gap:16px}.marking-student-heading h2{margin:0 0 6px}.marking-student-photo{width:72px;height:96px;flex-shrink:0}.marking-student-photo[hidden]{display:none}#marking-review{scroll-margin-top:24px}

.instructor-answer-dialog{width:min(960px,94vw);max-height:88vh;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:24px;color:var(--ink)}.instructor-answer-dialog::backdrop{background:#102d4580}.instructor-answer-dialog textarea{width:100%;min-height:280px}.instructor-flow-symbols{margin:20px 0}.instructor-flow-symbols input{flex:1;min-width:180px}

.dashboard-ai-usage .dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-ai-usage .dashboard-stat small{display:block;margin-top:6px}@media(max-width:600px){.dashboard-ai-usage .dashboard-stats{grid-template-columns:1fr}}

.dashboard-ai-usage .ai-cost-myr{font-size:1.45rem;margin-top:12px;color:#007d70}

.marking-name-total{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.marking-name-total h2{margin:0}.review-score-badge{display:inline-block;background:#e5f4ef;color:#075d51;border:1px solid #b9ddd1;border-radius:8px;padding:8px 12px;font-weight:700;white-space:nowrap}

.student-home-card{max-width:1100px}.student-assessment-history{max-width:1100px;margin:24px auto}.student-result-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:20px 0}.student-result-stats>div{padding:18px;background:#edf5f8;border-radius:9px}.student-result-stats span{display:block;font-size:14px;color:#60768a}.student-result-stats strong{display:block;font-size:30px;margin-top:8px}@media(max-width:600px){.student-result-stats{grid-template-columns:1fr}.student-assessment-history .question-head{align-items:start;gap:12px;flex-wrap:wrap}}

.student-preview-banner{display:flex;justify-content:space-between;align-items:center;gap:16px;position:sticky;top:8px;z-index:20;margin-bottom:20px;border-color:#7b8cc4}.student-preview-banner button{flex-shrink:0}@media(max-width:600px){.student-preview-banner{align-items:flex-start;flex-direction:column}}

.registration-qr{margin-top:26px;padding-top:22px;border-top:1px solid var(--line,#dce2ec);text-align:center}.registration-qr h2{margin:0 0 14px}.registration-qr-code{width:210px;max-width:100%;margin:0 auto;background:#fff;border-radius:10px;padding:8px}.registration-qr-code svg{display:block;width:100%;height:auto}.registration-qr p{margin:12px 0 8px}#student-register-link{display:block;margin:0 auto}

.scheme-image-editor{margin:16px 0;padding:16px;border:1px solid var(--line,#dce2ec);border-radius:12px}.scheme-image-editor>.button{display:inline-block;cursor:pointer}.scheme-image-item{margin-top:16px;border-top:1px solid #dce2ec;padding-top:12px}.scheme-image-item img,.scheme-image-view img{display:block;max-width:100%;max-height:440px;object-fit:contain;background:#fff}.scheme-image-view{margin:14px 0}.scheme-image-view figcaption{margin-top:6px;color:#5d6880}

.drawing-toolbar{flex-wrap:wrap;margin:12px 0}.drawing-toolbar label{display:flex;gap:7px;align-items:center}.drawing-toolbar select{width:auto}.drawing-pad{width:100%;aspect-ratio:10/7;border:1px solid #b9c6d8;border-radius:8px;background:#fff;touch-action:none;user-select:none;cursor:crosshair;overflow:hidden}.drawing-pad .drawing-image{width:100%;height:100%;display:block}.drawing-pad.drawing-grid{background-image:linear-gradient(#dbe4f0 1px,transparent 1px),linear-gradient(90deg,#dbe4f0 1px,transparent 1px);background-size:2% 2.857142857%}.drawing-grid .drawing-image>rect{fill:transparent}.drawing-image{display:block;background:white}.drawing-grid .drawing-image{background:transparent}.instructor-answer-dialog .drawing-pad{min-width:0}@media print{.drawing-image{max-width:100%;height:auto}}

.circuit-palette{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.circuit-pad [data-circuit-node]{cursor:move}.circuit-pad [data-circuit-terminal]{cursor:crosshair}.circuit-pad{user-select:none}.circuit-palette button{font-size:14px;padding:8px 12px}[data-method-settings]{border:1px solid #cbd5e1;padding:14px;border-radius:8px;margin:14px 0}[data-method-settings] label{display:flex;align-items:center;gap:6px}[data-method-settings] input[type=checkbox]{width:auto}[data-image-preview] .drawing-image{max-width:100%;height:auto}

.circuit-palette button{display:flex;align-items:center;gap:6px}[data-method-workspace] label.button{display:inline-flex;align-items:center;cursor:pointer;border:1px solid #cbd5e1;border-radius:8px;padding:10px 14px;background:white;font-weight:600}.circuit-pad:focus-visible{outline:3px solid #2563eb;outline-offset:2px}

#exam-fullscreen-gate{position:fixed;inset:0;z-index:10000;background:#102d45ed;display:flex;align-items:center;justify-content:center;padding:24px}#exam-fullscreen-gate>.panel{max-width:520px;width:100%}#exam-fullscreen-gate h2{margin-top:0}.exam-running header .brand{pointer-events:none}.exam-running #student-account-logout,.exam-running #student-account-setting,.exam-running #return-entry{display:none}

.student-account-view header nav,.student-account-view .role-switch{display:none}

/* Consistent circuit controls without stretching buttons to field height. */
.circuit-palette button,.circuit-controls button{width:164px;max-width:100%;height:52px;min-height:52px;flex:0 0 auto;font-size:14px;padding:8px 10px;line-height:1.2;justify-content:center;align-items:center;white-space:normal}.circuit-palette button svg{flex:0 0 34px}.circuit-controls{align-items:flex-end;margin:12px 0;gap:10px}.circuit-controls .field{flex:1 1 180px;min-width:0;margin:0}.circuit-controls select,.circuit-controls input:not([type=checkbox]){max-width:100%}.circuit-controls [data-wire-route]{width:auto}.circuit-controls button{display:inline-flex}

.bank-list button .bank-active-badge{display:table;margin:0 0 8px}.bank-list button strong{display:block}

.arduino-tools{margin:14px 0}.arduino-tools button,.arduino-input button{min-width:110px;height:44px;flex:0 0 auto}.arduino-log{white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto;font:14px/1.5 Consolas,monospace}.arduino-monitor{background:#102d45;color:#d4f8e7;border-radius:8px;padding:16px;height:230px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:15px/1.5 Consolas,monospace}.arduino-input{align-items:flex-end}.arduino-input .field{flex:1 1 160px;margin:0;min-width:0}[data-arduino-settings]{border:1px solid var(--line);padding:16px;margin-bottom:18px;border-radius:8px}[data-arduino-settings] textarea{min-height:120px;width:100%}.arduino-editor .code-wrap{min-width:0}.arduino-editor .code-gutter{white-space:pre;max-height:420px;overflow:hidden}.arduino-editor textarea{min-height:300px;max-height:420px}

.reopen-dialog{max-width:520px;width:calc(100% - 32px);border:1px solid var(--line);border-radius:12px;padding:24px}.reopened-assessments{margin:20px 0}.reopen-history{margin:16px 0;padding:12px;border:1px solid var(--line);border-radius:8px}

.ai-marking-spinner{display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:middle;flex-shrink:0;animation:ai-marking-spin .8s linear infinite}
button[aria-busy="true"]{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.ai-marking-progress{display:flex;align-items:center;gap:10px;padding:12px 14px;margin:12px 0;border:1px solid #bed4e4;border-radius:10px;background:#eef6fb;color:#254d68;font-size:14px}
@keyframes ai-marking-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.ai-marking-spinner{animation:none}}

.exam-ipad textarea,.exam-ipad input:not([type=file]){font-size:16px}

.marking-name-search{margin:0 0 16px}.marking-name-search input{width:100%;max-width:560px}

.flow-node.circle,.flow-palette-icon.circle{width:70px;height:70px;border-radius:50%}
.flow-palette-icon.circle{width:30px;height:30px}
.flow-node.text{border:1px dashed #9caebb;background:transparent;box-shadow:none}
.flow-palette-icon.text{border:1px dashed #9caebb;background:transparent}
.flow-node{touch-action:none}.locked-attempts{margin-top:18px}

.calculation-editor math-field{display:block;width:100%;min-height:64px;padding:10px;border:1px solid #b9cbd9;border-radius:8px;font-size:24px;background:white;--hue:180}
.calculation-editor math-field::part(menu-toggle){display:none}.calculation-symbols{gap:8px;margin:12px 0}.calculation-symbols button{min-width:75px;min-height:40px}
.calculation-quick{align-items:end;margin:12px 0}.calculation-quick .field{flex:1;min-width:220px}.calculation-quick button{margin-bottom:16px}
.calculation-step{padding:16px;border:1px solid #cfdee5;border-radius:10px;margin:14px 0}.calculation-step textarea{width:100%;min-height:62px;font:16px/1.5 inherit;padding:10px}
.calculation-step .field{margin-top:12px}.calculation-final{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:14px;margin-top:18px}
.calculation-working{margin-top:20px;border-top:1px solid #cfdee5;padding-top:14px}.calculation-working summary{font-weight:700;cursor:pointer}
.calculation-math{font-size:22px;min-height:70px;overflow:visible}.calculation-math .katex-display{margin:12px 0;text-align:left}
.calculation-script-item{font:16px/22px Arial;color:#172b3a}.calculation-script-note{white-space:pre-wrap;overflow-wrap:anywhere;font:16px/22px Arial;margin:8px 0}
@media(max-width:600px){.calculation-final{grid-template-columns:1fr}.calculation-quick{flex-direction:column;align-items:stretch}.calculation-symbols button{flex:1;min-width:70px}}

#backup-preview .check{display:flex;align-items:flex-start;gap:10px;margin:16px 0;line-height:1.5}#backup-preview .check input{flex:none;margin-top:5px}#backup-safety{display:block;margin-top:16px}#backup-password{max-width:480px}

.trial-notice{padding:12px 5%;background:#fff1c9;color:#594416;border-bottom:1px solid #e9c868;text-align:center;font-size:14px}

.staff-account-badge{display:inline-flex;align-items:center;font-size:14px;font-weight:650;padding:10px 0;color:var(--accent)}

.staff-registration-card{max-width:850px!important}.staff-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}.staff-edit-dialog{width:min(760px,94vw);max-width:760px;max-height:90vh;overflow:auto;color:var(--ink)}.staff-directory-tools{align-items:center;justify-content:space-between;margin-bottom:16px}.staff-registration-button{display:inline-flex;justify-content:center;align-items:center;padding:11px 18px;border:1px solid var(--line);border-radius:8px;font-weight:650;text-decoration:none;color:var(--ink);background:white;margin-bottom:14px}.staff-delete-area{border-top:1px solid var(--line);margin-top:24px;padding-top:18px}.staff-profile-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.staff-profile-details dt{font-size:14px;color:#60768a}.staff-profile-details dd{margin:6px 0 0;font-weight:600;overflow-wrap:anywhere}@media(max-width:600px){.staff-fields,.staff-profile-details{grid-template-columns:1fr}.staff-edit-dialog{padding:20px}}

.staff-account-badge{flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;max-width:320px;overflow-wrap:anywhere}.staff-account-badge small{font-size:12px;font-weight:400;color:var(--muted)}.staff-account-badge small:empty{display:none}

.login-welcome>span,.login-welcome>strong,.login-welcome>small{display:block}.login-welcome>span{font-size:20px;font-weight:500}.login-welcome>strong{font-size:clamp(32px,6vw,44px);line-height:1.25;margin:5px 0}.login-welcome>small{font-size:clamp(15px,3vw,19px);font-weight:500;line-height:1.5}

.login-welcome{text-align:center}.login-welcome>[data-login-logo][hidden]{display:none}.login-welcome [data-login-logo] .institution-logo{display:block;width:auto;height:auto;max-width:min(220px,80%);max-height:110px;object-fit:contain;margin:0 auto 18px}
.class-code-panel{border-top:1px solid var(--line,#dce3ef);margin-top:1.5rem;padding-top:1rem}.class-code-list{display:grid;gap:.7rem}.class-code-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border:1px solid var(--line,#dce3ef);border-radius:10px;flex-wrap:wrap}.class-code-row code{font-size:1.1rem;letter-spacing:.08em;font-weight:700;user-select:all}.class-code-row .actions{gap:.4rem;flex-wrap:wrap}.class-code-dialog{width:min(34rem,calc(100% - 2rem));max-height:90dvh;overflow:auto}.class-code-dialog h2{margin-top:0}.class-code-qr{display:flex;justify-content:center}.class-code-qr svg{width:min(100%,240px);height:auto}.class-code-large{text-align:center;font-size:2rem;font-weight:800;letter-spacing:.15em;user-select:all}.my-classes,.class-request-panel{margin-top:1.25rem}.class-code-message,.class-request-message{overflow-wrap:anywhere}@media(max-width:600px){.class-code-row{align-items:flex-start}.class-code-row .actions{width:100%}.class-code-row button{flex:1 1 120px}.class-code-dialog{padding:1.1rem}.my-classes .question-head{gap:.75rem;flex-wrap:wrap}}
.notifications-panel{margin-top:1.25rem}.notification-compose{margin:1rem 0;border:1px solid var(--line,#dce3ef);border-radius:10px;padding:1rem}.notification-compose summary{cursor:pointer;font-weight:700}.notification-compose form{margin-top:1rem}.notification-item{padding:1.1rem 0;border-top:1px solid var(--line,#dce3ef)}.notification-item h3{margin:0;font-size:1.1rem;overflow-wrap:anywhere}.notification-meta{color:var(--muted,#52647a);font-size:.9rem;line-height:1.6}.notification-message{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;margin:1rem 0}.notification-status{font-size:.9rem;font-weight:600}.notifications-panel .question-head{gap:.75rem;flex-wrap:wrap}

.student-account-view .student-home-card,.student-account-view #student-my-classes,.student-account-view #student-notifications,.student-account-view #student-assessment-history,.student-account-view #student-attendance{width:100%;max-width:1100px;margin:0 auto 20px;padding:24px;min-width:0}.dashboard-profile-card .student-profile-card{display:flex;align-items:center;gap:24px}.dashboard-avatar{width:88px!important;height:88px!important;min-width:88px;object-fit:cover;border-radius:14px;border:1px solid var(--line)}.avatar-initials{display:inline-flex;align-items:center;justify-content:center;background:#e4f4f0;color:#006f62;font-weight:750;font-size:28px}.dashboard-profile-card h1{margin:4px 0 24px}.dashboard-profile-card .student-profile-card h2{margin:0 0 8px;font-size:22px}.dashboard-profile-card .student-profile-card p{margin:0 0 8px}.dashboard-profile-details{display:flex;gap:10px 28px;flex-wrap:wrap;margin:12px 0 0}.dashboard-profile-details div{min-width:140px;max-width:100%}.dashboard-profile-details dt{font-size:14px;color:#60768a;margin-bottom:4px}.dashboard-profile-details dd{margin:0;font-size:16px;overflow-wrap:anywhere}.dashboard-profile-actions{margin-top:20px;justify-content:flex-end}.staff-dashboard-profile{margin-bottom:24px}#student-assessment-controls{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--line)}#student-assessment-history h2{margin:0 0 20px}#student-assessment-history .active-test-card{margin-top:0}.student-account-view .student-result-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.student-account-view .student-result-stats>div{padding:14px}.student-account-view .student-result-stats strong{font-size:26px}@media(max-width:600px){.student-account-view .student-home-card,.student-account-view #student-my-classes,.student-account-view #student-notifications,.student-account-view #student-assessment-history,.student-account-view #student-attendance{padding:18px;margin-bottom:16px}.dashboard-profile-card .student-profile-card{align-items:flex-start;gap:16px;flex-wrap:wrap}.dashboard-profile-details{gap:12px 20px}.dashboard-profile-details div{min-width:120px}.dashboard-profile-actions{justify-content:flex-start}.student-account-view .student-result-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.student-account-view .student-result-stats>div{padding:10px}.student-account-view .student-result-stats span{font-size:14px;line-height:1.4}.student-account-view .student-result-stats strong{font-size:24px}}

.bank-list [aria-current=true]{border-color:#2563eb}#course-classes[readonly]{background:#f1f5f9}

.staff-dashboard-profile{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:24px}.staff-dashboard-profile .student-profile-card{min-width:0;flex-wrap:nowrap;align-items:center;gap:24px}.staff-dashboard-profile .dashboard-avatar{width:132px!important;height:176px!important;min-width:132px;margin:0;object-fit:cover;flex-shrink:0}.staff-dashboard-profile .avatar-initials{font-size:38px}.staff-profile-info{flex:1;min-width:0}.staff-dashboard-profile .dashboard-profile-details{display:flex;flex-wrap:wrap;gap:12px 28px}.staff-dashboard-profile .dashboard-profile-details div{min-width:0}.staff-dashboard-profile .badge{display:inline-block;margin-top:12px}.staff-dashboard-profile .dashboard-profile-actions{margin:0;align-self:start;justify-content:flex-end}@media(max-width:700px){.staff-dashboard-profile{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px}.staff-dashboard-profile .student-profile-card{gap:18px}.staff-dashboard-profile .dashboard-avatar{width:104px!important;height:138px!important;min-width:104px}.staff-profile-info{flex-basis:auto}.staff-dashboard-profile .dashboard-profile-details{flex-direction:column;gap:10px}.staff-dashboard-profile .student-profile-card h2{font-size:20px}.staff-dashboard-profile .dashboard-profile-actions{justify-content:flex-end}}

#app:has(> #staff-dashboard-profile)> .panel{margin:0 0 20px}#app:has(> #staff-dashboard-profile)>.dashboard-stats{gap:20px;margin-bottom:20px}#app:has(> #staff-dashboard-profile)>.dashboard-chart-grid{gap:20px;margin-top:20px;margin-bottom:20px}@media(max-width:600px){#app:has(> #staff-dashboard-profile)>.panel{margin-bottom:16px}#app:has(> #staff-dashboard-profile)>.dashboard-stats{gap:16px;margin-bottom:16px}#app:has(> #staff-dashboard-profile)>.dashboard-chart-grid{gap:16px;margin-top:16px;margin-bottom:16px}}

.notification-compose .field textarea{display:block;width:100%;max-width:100%;box-sizing:border-box;margin-top:7px;padding:11px;border:1px solid #cdd9e2;border-radius:7px;background:white;font-weight:400;line-height:1.5;resize:vertical}

.dashboard-class-submissions .dashboard-bar-row>span{overflow-wrap:anywhere;line-height:1.5}

.activation-dialog fieldset{border:1px solid var(--line);border-radius:8px;padding:16px}.activation-classes{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.activation-class{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.activation-class:has(input:checked){background:#e3f3ef;border-color:var(--accent)}.activation-class input{width:18px;height:18px;margin:0;accent-color:var(--accent)}.activation-dialog #activation-error{color:#a42424}

.student-preview-dialog{width:min(1480px,96vw);height:94dvh;max-width:96vw;max-height:94dvh;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}.student-preview-dialog[open]{display:flex;flex-direction:column}.student-preview-dialog::backdrop{background:#102d45aa}.student-preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;border-bottom:1px solid var(--line);background:white}.student-preview-toolbar h2{margin:0}.student-preview-toolbar p{margin:4px 0 0}.student-preview-dialog iframe{border:0;flex:1;width:100%;min-height:0}.student-preview-page main{padding:24px 3%;max-width:1440px}.student-preview-page .heading .badge{white-space:nowrap}@media(max-width:600px){.student-preview-toolbar{padding:12px;align-items:flex-start}.student-preview-toolbar h2{font-size:18px}.student-preview-toolbar button{padding:8px;white-space:nowrap}.student-preview-page .heading{align-items:flex-start;flex-wrap:wrap}}

.block-text-editor{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);padding:8px;border:1px solid var(--accent);border-radius:4px;background:white;color:var(--ink);font:inherit;line-height:1.4;text-align:center;resize:none;touch-action:auto;user-select:text;z-index:3}.flow-node.block-empty>span{font-size:13px;color:#60768a}.flow-node.circle .block-text-editor{border-radius:50%}

.block-port{position:absolute;width:26px;height:26px;padding:0;border:0;background:transparent;border-radius:50%;z-index:4;touch-action:none;cursor:crosshair}.block-port::after{content:"";position:absolute;inset:7px;background:#1688d5;border:2px solid white;border-radius:50%;box-shadow:0 0 0 1px #1688d5}.block-port:hover,.block-port:focus-visible{background:#1688d530}.block-port.port-pending::after{background:#007d70;box-shadow:0 0 0 3px #70ddbd}.port-top{top:-14px;left:calc(50% - 13px)}.port-bottom{bottom:-14px;left:calc(50% - 13px)}.port-left{left:-14px;top:calc(50% - 13px)}.port-right{right:-14px;top:calc(50% - 13px)}.canvas svg [data-edge-select]{pointer-events:stroke;cursor:pointer}.canvas svg .edge-selected{stroke:#007d70;stroke-width:4}.flow-node>span{white-space:pre-wrap;overflow-wrap:anywhere}

.circuit-category{margin:12px 0;padding:12px;border:1px solid #dbe3eb;border-radius:8px}.circuit-category h3{margin:0 0 8px;font-size:14px}.circuit-category .circuit-palette{margin:0}[data-method-settings] label.field{display:block}[data-method-settings] select{width:100%;margin-top:6px}

.circuit-category[hidden]{display:none}.circuit-category-picker{max-width:320px;margin:12px 0}.circuit-category-picker select{width:100%}

.calculation-editor section[hidden],.calculation-editor math-field[hidden]{display:none}.calculation-mode{margin:12px 0 18px;gap:10px}.calculation-mode .selected{background:#e5f2fb;border-color:#2563eb;color:#174ea6}.calculation-editor [data-calc-input]{width:100%;min-height:210px;font:18px/1.6 monospace}.calculation-preview{padding:12px;border:1px solid #dbe3eb;border-radius:8px;overflow-x:auto;max-width:100%}.calculation-preview:empty{display:none}.calculation-preview .katex-display{text-align:left}.calculation-mode button{min-height:44px}

.calculation-editor math-field[data-calc-input]{display:block;min-height:210px;font-size:26px;padding:16px;width:100%;overflow-x:auto}.calculation-symbols .calculation-math,.calculation-symbols .katex-display{margin:0;min-height:0;font-size:20px}.calculation-symbols .katex-display{text-align:center}.calculation-symbols button{min-width:64px}.calculation-symbols .muted{display:none}

.bank-workspace{grid-template-columns:minmax(0,1fr)}.assessment-tabs{display:flex;gap:10px;margin:18px 0}.assessment-tabs [aria-selected=true]{background:#e5f2fb;border-color:#2563eb;color:#174ea6;font-weight:700}.assessment-table-scroll{overflow-x:auto}.assessment-table{width:100%;border-collapse:collapse;min-width:780px}.assessment-table th,.assessment-table td{text-align:left;padding:14px 10px;border-bottom:1px solid #dbe3eb;vertical-align:top}.assessment-table th{background:#f4f7fb;font-size:13px}.assessment-table small{color:#60768a}.assessment-filters{align-items:flex-end}.assessment-filters .field{margin-bottom:12px}.assessment-filters .field:first-child{flex:2;min-width:240px}@media(max-width:600px){.assessment-tabs button{flex:1}.assessment-filters .field{min-width:140px}.assessment-filters .field:first-child{min-width:100%}}

.assessment-row-actions{display:flex;flex-wrap:wrap;gap:8px;min-width:180px}.assessment-row-actions button{min-height:40px}.assessment-table td:last-child small{display:block;margin-top:6px}

.assessment-class-options{display:flex;flex-wrap:wrap;gap:8px 12px;min-width:160px;max-width:300px}.assessment-class-options label{display:flex;align-items:center;gap:6px;min-height:32px;cursor:pointer}.assessment-class-options input{width:18px;height:18px;margin:0;accent-color:#00877e}.assessment-table [data-class-save]{display:block;margin-top:6px;color:#58718a}.assessment-table .assessment-save-error{color:#b42318}

.assessment-class-tag{display:inline-flex;flex-direction:column;border:1px solid #d7e4ee;border-radius:8px;padding:5px 9px;margin:0 4px 5px 0;background:#f4f9fc;white-space:nowrap}.assessment-class-tag small{color:#58718a;font-size:11px}.assignment-end-toggle{display:flex;align-items:center;gap:8px;margin:16px 0}.assignment-end-toggle input{width:18px;height:18px;margin:0}.activation-dialog .field{margin-top:16px}.activation-dialog [hidden]{display:none}

.heading.staff-heading{display:flex;flex-direction:row;align-items:center;gap:20px}.staff-heading>div:first-child{flex:0 1 300px;min-width:200px}.instructor-navigation{display:flex;align-items:center;justify-content:flex-end;flex-wrap:nowrap;gap:4px;flex:1 1 auto;min-width:0;box-sizing:border-box;overflow-x:auto;margin:0;padding:4px 0;background:transparent;border:0}.instructor-navigation button{flex:0 0 auto;white-space:nowrap;min-height:42px;padding:10px 12px}.instructor-navigation button:disabled{opacity:1;background:#e5f4f0;border-color:#b6dbd3;color:#147d6c;border-radius:8px}@media(max-width:950px){.heading.staff-heading{flex-direction:column;align-items:stretch;gap:12px}.staff-heading>div:first-child{flex:auto;min-width:0}.instructor-navigation{flex:auto;justify-content:flex-start;width:100%;gap:4px}.instructor-navigation button{padding:9px 12px}}

.classes-table td:last-child,.classes-table th:last-child{text-align:right;width:80px}.classes-table td{vertical-align:middle}.classes-table code{font-size:14px;font-weight:700;white-space:nowrap}.class-editor{margin-top:16px}.classes-list .page-tools{margin-bottom:16px}

.classes-table td:last-child,.classes-table th:last-child{width:160px}.class-row-actions{display:flex;justify-content:flex-end;gap:8px;white-space:nowrap}.class-row-actions .class-delete{color:#b42318;border-color:#efc5c0}.class-row-actions .class-delete:hover{background:#fff1f0}

.semester-records{margin-top:20px}.semester-export-dialog{width:min(680px,calc(100vw - 32px));max-height:90vh;overflow-y:auto}.semester-export-dialog [hidden]{display:none}.semester-export-dialog #semester-progress{white-space:pre-wrap;margin:20px 0}.semester-export-dialog section{border-top:1px solid #dbe3eb;padding-top:14px}.class-status-filter{max-width:250px;margin-top:16px}.semester-records .actions{gap:10px}

.staff-own-photo{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}.staff-own-photo h3{margin-top:0}.staff-own-photo [data-staff-photo-preview]{margin-bottom:12px}.staff-own-password{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.staff-own-password summary{cursor:pointer;font-weight:650}.staff-own-password form{margin-top:16px}

.staff-dashboard-profile .dashboard-profile-actions{flex-direction:column;align-items:stretch;gap:10px}.staff-dashboard-profile .dashboard-profile-actions button{white-space:nowrap}@media(max-width:700px){.staff-dashboard-profile .dashboard-profile-actions{justify-self:end}}

.dashboard-missing-students{margin-top:12px;min-width:240px}.dashboard-missing-students summary{cursor:pointer;color:#007d70;font-weight:650}.dashboard-missing-students ul{list-style:none;padding:0;margin:12px 0}.dashboard-missing-students li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 0;border-bottom:1px solid var(--line)}.dashboard-missing-students li strong{flex-basis:100%}.dashboard-class-submissions h3{margin-top:24px}

.class-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,390px),1fr));gap:18px;margin-top:20px}.class-overview-card{min-width:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.class-overview-heading{display:flex;align-items:center;gap:14px;padding:18px;background:#f4f8fa}.class-overview-icon{display:grid;place-items:center;width:54px;height:54px;flex-shrink:0;border-radius:12px;background:#dcefeb;color:#00695f;font-weight:750}.class-overview-heading h3{margin:0!important}.class-overview-heading p{margin:4px 0 0;font-size:13px;color:#566575}.class-overview-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:16px}.class-overview-stat{text-align:center;padding:12px 5px;border-radius:10px;background:#f3f5f8}.class-overview-stat strong{display:block;font-size:24px;line-height:1.2}.class-overview-stat span{display:block;font-size:12px;margin-top:6px}.class-overview-stat.joined,.class-count-chip.joined{background:#e7f4ef;color:#00695f}.class-overview-stat.outstanding,.class-count-chip.outstanding{background:#fff3df;color:#855300}.class-assessments{padding:0 16px 16px}.class-assessment{border-top:1px solid var(--line);padding-top:16px;margin-top:8px}.class-assessment-heading{display:flex;align-items:center;gap:14px}.class-assessment-heading h4{margin:0;font-size:16px;overflow-wrap:anywhere}.class-assessment-heading p{margin:6px 0;font-size:14px}.class-submission-ring{width:76px;height:76px;flex-shrink:0}.class-submission-ring text{fill:#00695f;font-size:16px;font-weight:750}.class-count-chip{display:inline-block;padding:5px 9px;border-radius:7px;background:#f0f3f7;color:#45566a;font-size:12px}.class-participation-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.class-overview-card .dashboard-missing-students{min-width:0;font-size:13px}.class-overview-card>.muted{padding:0 16px}.class-overview-note{margin-top:18px;font-size:12px}@media(max-width:480px){.class-overview-heading{padding:14px}.class-overview-stats{padding:12px}.class-overview-stat strong{font-size:22px}.class-assessments{padding:0 12px 12px}.class-submission-ring{width:64px;height:64px}}

/* Shared portal icons: local SVG masks, no external icon requests. */
[data-ui-icon="dashboard"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%227%22%20height%3D%227%22%20rx%3D%221%22%2F%3E%3Crect%20x%3D%2214%22%20y%3D%223%22%20width%3D%227%22%20height%3D%227%22%20rx%3D%221%22%2F%3E%3Crect%20x%3D%223%22%20y%3D%2214%22%20width%3D%227%22%20height%3D%227%22%20rx%3D%221%22%2F%3E%3Crect%20x%3D%2214%22%20y%3D%2214%22%20width%3D%227%22%20height%3D%227%22%20rx%3D%221%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="classes"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%204h7l2%202h9v14H3z%22%2F%3E%3Cpath%20d%3D%22M7%2010h10M7%2014h7%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="users"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%228%22%20r%3D%223%22%2F%3E%3Cpath%20d%3D%22M3%2021v-3a6%206%200%200%201%2012%200v3M16%205a3%203%200%200%201%200%206M18%2015a5%205%200%200%201%203%204v2%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="assessment"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%225%22%20y%3D%224%22%20width%3D%2214%22%20height%3D%2217%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M9%204V2h6v2M9%2010h6M9%2014h6M9%2018h3%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="marking"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m3%2017%2012-12%204%204L7%2021H3zM14%206l4%204M16%2019h5%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="settings"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%207h16M4%2017h16%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%227%22%20r%3D%223%22%2F%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2217%22%20r%3D%223%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="logout"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M9%204H3v16h6M8%2012h13m-4-4%204%204-4%204%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="refresh"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%208a8%208%200%201%200%200%208M20%203v5h-5%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="edit"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m4%2016%2012-12%204%204L8%2020H4zM13%207l4%204%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="download"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203v12m-5-5%205%205%205-5M4%2017v4h16v-4%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="upload"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2016V4m-5%205%205-5%205%205M4%2017v4h16v-4%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="plus"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%204v16M4%2012h16%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="check"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22m7%2012%203%203%207-7%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="clock"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M12%207v5l3%202%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="bell"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2017V9a7%207%200%200%201%2014%200v8l2%202H3zM9%2022h6%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="ai"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m12%203%202%206%206%203-6%202-2%207-2-7-7-2%207-3zM20%202v4m-2-2h4%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="chart"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%203v18h18M7%2017v-5M12%2017V7M17%2017V3%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="profile"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228%22%20r%3D%224%22%2F%3E%3Cpath%20d%3D%22M4%2022v-2a8%208%200%200%201%2016%200v2%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="shield"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m12%202%209%204v6c0%205-9%2010-9%2010S3%2017%203%2012V6zM8%2012l3%203%205-6%22%2F%3E%3C%2Fsvg%3E")}
[data-ui-icon="trash"]{--portal-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%206h18M9%206V3h6v3M6%206v15h12V6M10%2010v7M14%2010v7%22%2F%3E%3C%2Fsvg%3E")}

[data-ui-icon]::before{content:"";display:inline-block;width:17px;height:17px;background:currentColor;mask:var(--portal-icon) center/contain no-repeat;-webkit-mask:var(--portal-icon) center/contain no-repeat;vertical-align:-3px;margin-right:7px;flex-shrink:0}h1[data-ui-icon]::before{width:25px;height:25px;vertical-align:-2px;color:#007d70}h2[data-ui-icon]::before{width:20px;height:20px;color:#007d70}.dashboard-stat,.student-result-stats>div,.dashboard-results>div{position:relative}.dashboard-stat[data-ui-icon]::before,.student-result-stats>div[data-ui-icon]::before,.dashboard-results>div[data-ui-icon]::before{position:absolute;right:15px;top:16px;margin:0;color:#007d70;opacity:.65}.dashboard-stat>span{padding-right:26px;display:block}.portal-insights{margin-bottom:20px}.portal-insight-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.portal-insight-card{display:flex;gap:12px;align-items:center;padding:16px;border:1px solid #e2e8f0;border-radius:12px;background:#f7f9fc;min-width:0}.portal-insight-icon{width:42px;height:42px;display:grid;place-items:center;flex-shrink:0;border-radius:12px;background:#e5ebf6;color:#365c98}.portal-insight-icon::before{width:22px;height:22px;margin:0;vertical-align:0}.portal-insight-card strong{display:block;font-size:28px;line-height:1.2;color:#153447}.portal-insight-card div>span{display:block;font-size:12px;color:#526579;margin-top:5px;overflow-wrap:anywhere}.portal-insight-card.green{background:#f0f8f5;border-color:#d6e9e0}.portal-insight-card.green .portal-insight-icon{background:#dcefe6;color:#007d70}.portal-insight-card.amber{background:#fff8ed;border-color:#f1e3cb}.portal-insight-card.amber .portal-insight-icon{background:#f7e9cc;color:#916312}.portal-insight-card.blue{background:#f1f5fc}.portal-insight-distribution{display:flex;align-items:center;gap:14px;padding-top:14px}.portal-insight-distribution svg{width:54px;height:54px;flex-shrink:0}.portal-insight-legend{display:flex;flex-wrap:wrap;gap:10px 22px;font-size:12px;color:#526579}.portal-insight-legend span{display:flex;align-items:center;gap:7px}.portal-insight-legend i{width:8px;height:8px;border-radius:50%;flex-shrink:0}.portal-insight-note{font-size:12px;color:#6a7c8d;margin:8px 0 0}.assessment-table thead th,.table-wrap thead th{background:#f5f8fb}.assessment-table tbody tr:hover,.table-wrap tbody tr:hover{background:#f7fbfa}.student-result-stats>div{border-radius:12px;border:1px solid #dfe8eb;background:#f2f8f6}.student-result-stats>div>span{padding-right:22px}@media(max-width:1000px){.portal-insight-cards{grid-template-columns:repeat(2,minmax(0,1fr))}button[data-ui-icon]::before{width:15px;height:15px;margin-right:5px}}@media(max-width:480px){.portal-insight-card{padding:12px;gap:8px}.portal-insight-icon{width:32px;height:32px;border-radius:9px}.portal-insight-icon::before{width:18px;height:18px}.portal-insight-card strong{font-size:24px}.portal-insight-distribution{align-items:flex-start}.portal-insight-legend{gap:8px 12px}}
@media print{[data-ui-icon]::before,.portal-insights{display:none!important}}

.instructor-navigation{justify-content:flex-start!important}.instructor-navigation button{font-size:13px;padding:9px 10px}.instructor-navigation button[data-ui-icon]::before{width:16px;height:16px;margin-right:5px}

#marking-review>.question-head{align-items:flex-start}.marking-student-heading{align-items:flex-start}.review-student-details{margin:12px 0 0;font-size:13px;max-width:520px}.review-student-details>div{display:grid;grid-template-columns:112px minmax(0,1fr);gap:10px;margin:4px 0}.review-student-details dt{color:#64768a}.review-student-details dd{margin:0;overflow-wrap:anywhere;color:#173548}.ink-color-field{display:flex;align-items:center;gap:7px;font-size:12px;margin:0}.ink-color-field select{width:100px;min-height:32px;padding:5px 8px;margin:0}@media(max-width:480px){.review-student-details>div{grid-template-columns:90px minmax(0,1fr);gap:7px}.review-student-details{font-size:12px}}

.review-request-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-left:6px;border-radius:10px;background:#b44d19;color:#fff;font-size:11px;padding:0 5px}.review-requests-panel{margin:18px 0;padding:16px;border:1px solid #dfebed;border-radius:12px;background:#f8fbfc}.review-request-notice{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}.review-request-notice p{margin:5px 0;font-size:13px}.review-request-notice .badge{margin-left:8px}.review-request-text{white-space:pre-wrap;overflow-wrap:anywhere}.review-request-filter{display:flex;align-items:center;gap:10px;font-size:13px}.review-request-filter select{width:150px}.question-review-requests,.student-review-request{margin-top:16px;padding:14px;border-radius:10px;background:#f0f7f5;border:1px solid #d7e7e2}.question-review-request h4{margin:0 0 8px}.review-request-dialog{max-width:560px;width:calc(100% - 32px)}.review-request-dialog textarea,.question-review-request textarea{width:100%;box-sizing:border-box}@media(max-width:480px){.review-request-notice{align-items:flex-start;flex-wrap:wrap}}
.participation-insights{margin:20px 0;padding:20px 0;border-top:1px solid #e4ebef;border-bottom:1px solid #e4ebef}
.participation-insights>h2{margin-top:0}.participation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,350px),1fr));gap:16px;margin-top:18px}.participation-card{border:1px solid #dce6eb;border-radius:14px;padding:18px;background:#fff;min-width:0}.participation-card-heading{display:flex;align-items:center;gap:14px;margin-bottom:14px}.participation-card-heading h3{font-size:16px;margin:0 0 5px;overflow-wrap:anywhere}.participation-card-heading p{color:#607583;font-size:13px;margin:0;overflow-wrap:anywhere}.participation-ring{width:76px;height:76px;flex:0 0 76px}.participation-ring text{font-size:16px;font-weight:700;fill:#007d70}.participation-chips{display:flex;flex-wrap:wrap;gap:8px}.participation-card h4{margin:18px 0 10px;font-size:14px}.participation-missing{list-style:none;padding:0;margin:0}.participation-missing li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #edf1f4}.participation-missing strong{font-size:13px;overflow-wrap:anywhere}.participation-missing small{display:block;color:#627789;margin-top:3px}.participation-missing .badge{display:inline-flex;flex-shrink:0;color:#496477;background:#f4f7fa;letter-spacing:0}.participation-unregistered{padding:10px;border-radius:8px;background:#fff6e7;color:#88580b;font-size:13px;line-height:1.5}.participation-insights>.muted{font-size:13px;line-height:1.6}
@media(max-width:600px){.participation-insights{padding:16px 0}.participation-card{padding:14px}.participation-missing li{align-items:flex-start;flex-direction:column;gap:5px}.participation-card-heading{gap:10px}}
/* Four compact class cards at desktop browser zoom 100%; stack on smaller screens. */
.participation-grid,.class-overview-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.participation-card{padding:14px}.participation-card-heading{gap:9px;align-items:flex-start}.participation-card-heading h3{font-size:14px}.participation-card-heading p{font-size:12px}.participation-ring{width:54px;height:54px;flex-basis:54px}.participation-chips .class-count-chip{font-size:11px;padding:5px 7px}.participation-missing li{align-items:flex-start;flex-direction:column;gap:5px}.participation-missing strong{font-size:12px}
.class-overview-heading{padding:12px;gap:10px}.class-overview-icon{width:42px;height:42px}.class-overview-stats{padding:12px;gap:5px}.class-overview-stat strong{font-size:21px}.class-overview-stat span{font-size:11px}.class-assessment{padding:12px}.class-assessment-heading{gap:9px}.class-assessment-heading h4{font-size:13px}.class-submission-ring{width:52px;height:52px;flex-shrink:0}.class-overview-heading p{overflow-wrap:anywhere}
@media(max-width:1050px){.participation-grid,.class-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.participation-grid,.class-overview-grid{grid-template-columns:minmax(0,1fr)}}
.review-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.review-summary-card{display:flex;align-items:center;gap:12px;padding:18px 14px;border:1px solid var(--line);border-radius:12px;background:#f8fbfc;min-width:0}.review-summary-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;flex-shrink:0;border-radius:12px;color:var(--review-color);background:#fff}.review-summary-icon svg{width:24px;height:24px}.review-summary-card strong{display:block;font-size:27px;line-height:1.2;color:var(--review-color)}.review-summary-card span:not(.review-summary-icon){display:block;font-size:12px;color:var(--muted);margin-top:4px}.review-dashboard-summary,.review-marking-list{margin-top:18px;scroll-margin-top:20px}.review-marking-list .review-request-filter{margin-bottom:10px}.review-marking-list .question-head{flex-wrap:wrap}
@media(max-width:800px){.review-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.review-summary-card{padding:12px 10px;gap:8px}.review-summary-icon{width:32px;height:32px}.review-dashboard-summary .question-head{flex-wrap:wrap}}
#marking-filter-panel h2,#marking-overview h2,#marking-scripts-panel h2{margin-top:0}#marking-filter-panel+#marking-overview,#marking-participation,#marking-scripts-panel{margin-top:18px}#marking-overview .portal-insight-cards{margin-top:16px}#marking-participation{padding-top:23px;border-top:1px solid var(--line)}
.attendance-panel{margin-top:18px}.attendance-panel h2{margin-top:0}.attendance-panel .portal-insight-cards{margin:16px 0}.attendance-clock-panel{display:flex;justify-content:space-between;gap:20px;padding:20px;border:1px solid #d6e7e4;border-radius:12px;background:#f0f8f5;margin:18px 0}.attendance-code{font:bold 30px monospace;letter-spacing:3px;color:#007d70}.attendance-qr{max-width:260px;margin:auto}.attendance-qr svg{width:100%;height:auto}.attendance-dialog{width:540px;max-width:calc(100% - 32px)}.attendance-dialog .field{margin:14px 0}.attendance-history-dialog{width:900px;max-width:calc(100% - 32px)}.attendance-sheet th,.attendance-sheet td{border:1px solid #dbe4e9;text-align:center;font-size:12px;white-space:nowrap}.attendance-sheet td:nth-child(2){text-align:left;white-space:normal;min-width:200px}.attendance-present{background:#e9f6f0;color:#007d70}.attendance-late{background:#fff4de;color:#a16b10}.attendance-absent{background:#fff0ee;color:#ad3b3b}.attendance-excused{background:#edf0fc;color:#5a63a3}.attendance-panel .question-head{flex-wrap:wrap}.attendance-panel td input{min-width:130px}@media(max-width:650px){.attendance-clock-panel{flex-direction:column}.attendance-code{font-size:24px}.attendance-panel .actions{flex-wrap:wrap}}
.attendance-panel td select,.attendance-panel td input{font:inherit;font-size:13px;min-height:40px;padding:9px 11px;border:1px solid #d6e1e8;border-radius:7px;background:#fff;color:#142c40}.attendance-panel td select{min-width:115px}.attendance-dialog form>.field input{width:100%;box-sizing:border-box}

.script-review-summary{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.script-review-indicator{display:inline-flex;align-items:center;gap:6px;border:1px solid #dce5eb;border-radius:8px;padding:6px 10px;background:#f6f9fc;font-size:12px;color:#405269}.script-review-indicator strong{font-size:16px;color:#2455a0}.script-review-indicator:nth-child(2){background:#fff7e6;border-color:#f1dba8}.script-review-indicator:nth-child(2) strong{color:#986510}.script-review-indicator:nth-child(3){background:#eaf7f1;border-color:#c6e5d7}.script-review-indicator:nth-child(3) strong{color:#08745c}#marking-review [data-review-question]{scroll-margin-top:20px}

.attendance-schedule-dialog{width:min(940px,94vw);max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:24px}.attendance-slot{padding:12px;border:1px solid var(--line);border-radius:9px;margin:12px 0}.attendance-schedule-dialog .bank-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}

dialog.attendance-schedule-dialog{max-width:940px;width:min(940px,94vw)}

.car-sheet-title{text-align:center;font:700 18px Arial,sans-serif;color:#111;margin:22px 0 18px}.car-sheet-info{font:700 12px Arial,sans-serif;color:#111;margin:0 0 18px}.car-sheet-info>div{display:grid;grid-template-columns:145px minmax(0,1fr);gap:8px;margin:6px 0}.car-sheet-info dd{margin:0;overflow-wrap:anywhere}.car-sheet-scroll{max-width:100%;overflow:auto;border:1px solid #222}.car-attendance-sheet{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font:10px Arial,sans-serif;color:#111;min-width:1160px}.car-attendance-sheet .car-no{width:28px}.car-attendance-sheet .car-name{width:220px}.car-attendance-sheet .car-id{width:70px}.car-attendance-sheet .car-session{width:21px}.car-attendance-sheet .car-total,.car-attendance-sheet .car-absence{width:48px}.car-attendance-sheet th,.car-attendance-sheet td{border-right:1px solid #333;border-bottom:1px solid #333;padding:5px 2px;text-align:center;vertical-align:middle;background:#fff;font-size:10px;letter-spacing:0;color:#111}.car-attendance-sheet thead th{font-weight:700;background:#fff;text-transform:none}.car-attendance-sheet .car-stick-no{position:sticky;left:0;z-index:2;background:#fff}.car-attendance-sheet .car-stick-name{position:sticky;left:28px;z-index:2;text-align:left;white-space:normal;overflow-wrap:anywhere;font-size:11px;background:#fff}.car-attendance-sheet thead .car-stick-name{text-align:center}.car-attendance-sheet .car-dates th{height:70px;padding:0}.car-date-button{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);border:0!important;box-shadow:none!important;border-radius:0!important;background:transparent!important;padding:4px 0!important;margin:0;min-width:0!important;min-height:0!important;font:700 9px Arial,sans-serif;color:#111;line-height:1.1;cursor:pointer}.car-date-button:hover{color:#185d99!important;background:#e7f2fd!important}.car-vertical-label{writing-mode:vertical-rl;transform:rotate(180deg)}.car-attendance-sheet .car-no-class{background:#ededed}.car-attendance-sheet .car-awaiting{background:#fafafa}.car-attendance-sheet .car-attendance-cell{font-size:11px;padding:7px 1px}.car-row-total{font-weight:700}.car-signatures{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;font:10px Arial,sans-serif;color:#111;margin:26px 8px 12px}.car-signatures strong{font-size:12px}.car-signature-line{height:50px;border-bottom:1px solid #333;margin:0 0 8px}.car-signatures span{display:block;text-align:center}.car-sheet-scroll:focus-visible{outline:2px solid #2579b9;outline-offset:3px}@media(max-width:600px){.car-sheet-info>div{grid-template-columns:110px minmax(0,1fr)}.car-sheet-info{font-size:11px}.car-signatures{gap:12px;font-size:8px}.car-signatures strong{font-size:10px}}

.car-attendance-sheet .car-session{width:19px}

.car-cell-button{display:block!important;width:100%;height:100%;min-width:0!important;min-height:25px!important;padding:1px!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;font:11px Arial,sans-serif;color:#111!important;cursor:pointer}.car-attendance-sheet .car-attendance-cell{padding:0!important}.car-cell-button:hover,.car-cell-button:focus-visible{background:#d9ecfb!important;outline:2px solid #2e7fb5;outline-offset:-2px}.car-cell-empty{color:#97a8b7;font-size:9px}.car-cell-button:hover .car-cell-empty{color:#24668f}dialog.attendance-cell-dialog{width:min(430px,94vw);max-width:430px;border:1px solid var(--line);border-radius:14px;padding:24px}@media print{.car-cell-empty{visibility:hidden}.car-cell-button{font-size:8px!important}}

dialog.attendance-live-dialog{width:min(1120px,96vw);max-width:1120px;max-height:94vh;overflow:auto;border:1px solid var(--line);border-radius:16px;padding:24px}.attendance-live-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:28px;align-items:start}.attendance-live-code{text-align:center;position:sticky;top:0}.attendance-live-code .attendance-qr svg{width:100%;max-width:280px;height:auto}.attendance-live-code .attendance-code{font-size:30px;letter-spacing:2px}.attendance-live-names{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.attendance-live-student{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid #d9e1e8;border-radius:10px;background:#f5f7fa;min-width:0;transition:background .3s}.attendance-live-student strong{display:block;font-size:13px;line-height:1.4;overflow-wrap:anywhere}.attendance-live-student small{display:block;color:#526576;margin:3px 0}.attendance-live-student span:not(.attendance-live-tick){display:block;font-size:11px}.attendance-live-student.is-clocked{background:#d9f6df;border:2px solid #54af69;color:#075826}.attendance-live-student.is-clocked small{color:#236338}.attendance-live-tick{font-size:20px;line-height:1.4;color:#81909e}.is-clocked .attendance-live-tick{color:#0b8634}[data-live-count]{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:12px 16px;background:#eaf6ed;border:1px solid #bee0c6;border-radius:10px;color:#155c29}[data-live-count] strong{font-size:23px}[data-live-count] span{font-size:13px}[data-live-sync]{font-size:11px;color:var(--muted)}.attendance-clocked-row td:first-child{background:#d9f6df;border-left:4px solid #2c9d4c}@media(max-width:720px){.attendance-live-layout{grid-template-columns:1fr;gap:16px}.attendance-live-code{position:static}.attendance-live-code .attendance-qr svg{max-width:230px}.attendance-live-names{grid-template-columns:1fr}dialog.attendance-live-dialog{padding:16px}}

.attendance-web-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:20px}.attendance-web-heading h2{font-size:23px;margin:5px 0;color:#15334b}.attendance-web-heading p{margin:0;color:#71839b;font-size:13px}.attendance-web-eyebrow{font-size:10px;font-weight:700;letter-spacing:1.8px;color:#078678}.attendance-web-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:16px 20px;background:#f4f8fb;border:1px solid #e5edf4;border-radius:12px;margin-bottom:20px}.attendance-web-meta small{display:block;color:#6d8095;font-size:11px;margin-bottom:5px}.attendance-web-meta strong{display:block;color:#284258;font-size:13px;overflow-wrap:anywhere}.attendance-week-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:5px;background:#f0f5f9;border-radius:11px;margin-bottom:16px;width:fit-content}.attendance-week-tabs button{border:0;background:transparent;padding:9px 13px;border-radius:8px;box-shadow:none;font-size:12px;color:#657c92}.attendance-week-tabs button.selected{background:white;color:#007c70;box-shadow:0 2px 6px #203d5312;font-weight:700}.attendance-web-legend{display:flex;align-items:center;flex-wrap:wrap;gap:14px;font-size:11px;color:#60768b;margin:0 0 14px}.attendance-web-legend span{display:flex;align-items:center;gap:5px}.attendance-web-legend i{display:block;width:7px;height:7px;border-radius:50%;background:#b9c7d4}.attendance-web-legend i.green{background:#35ad7e}.attendance-web-legend i.red{background:#e06d73}.attendance-web-legend i.amber{background:#dca940}.attendance-web-legend small{margin-left:auto;font-size:10px;color:#8595a4}.attendance-web-scroll{border:1px solid #e3ebf2;border-radius:12px;max-width:100%;overflow:auto}.attendance-web-sheet{border-collapse:separate;border-spacing:0;width:100%;font:12px system-ui,sans-serif;min-width:850px}.attendance-web-sheet th,.attendance-web-sheet td{padding:10px 6px;text-align:center;border:0;border-bottom:1px solid #edf1f5;background:white;vertical-align:middle;color:#2b465c}.attendance-web-sheet thead th{background:#f7fafd;text-transform:none;letter-spacing:0}.attendance-web-sheet thead .attendance-web-week{color:#5c7388;font-size:12px;padding:12px 6px;border-bottom:1px solid #e2ebf3;font-weight:600}.attendance-web-sheet .attendance-web-name{width:245px;min-width:245px;text-align:left;position:sticky;left:0;z-index:2;padding-left:16px;box-shadow:3px 0 8px #263f5510}.attendance-web-sheet thead .attendance-web-name{z-index:3;font-size:12px}.attendance-web-date button{border:0!important;box-shadow:none!important;background:transparent!important;padding:0!important;margin:0;min-height:0;font-size:11px;min-width:46px;color:#526d85}.attendance-web-date strong,.attendance-web-date span,.attendance-web-date small{display:block}.attendance-web-date strong{font-size:11px;color:#294d66}.attendance-web-date small{font-size:9px;color:#91a0ae;margin-top:3px}.attendance-web-date button:hover span{text-decoration:underline;color:#008b7b}.attendance-web-student{display:flex;align-items:center;gap:10px}.attendance-avatar{width:30px;height:30px;background:#e9f2fa;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#4c82a9;flex-shrink:0}.attendance-web-student strong{display:block;font-size:11px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.attendance-web-student small{display:block;font-size:10px;color:#94a2b0;margin-top:2px}.attendance-web-cell{width:34px;height:32px;min-width:34px!important;min-height:32px!important;border-radius:8px!important;border:1px solid transparent!important;padding:0!important;margin:auto!important;box-shadow:none!important;display:inline-flex;align-items:center;justify-content:center;background:#f3f7fa!important;color:#718ba1!important;font-size:12px}.attendance-web-cell.present,.attendance-web-cell.late{background:#e3f6ee!important;color:#168660!important}.attendance-web-cell.absent{background:#fff0f0!important;color:#c15d62!important}.attendance-web-cell.excused{background:#fff5dd!important;color:#a87d23!important}.attendance-web-cell.pending{background:#fafcfd!important;border:1px dashed #d7e2ea!important;color:#a6b7c4!important}.attendance-web-cell:hover,.attendance-web-cell:focus-visible{border-color:#238dbe!important;outline:2px solid #238dbe22;transform:translateY(-1px)}.attendance-web-sheet .car-attendance-cell{background:#fff;padding:7px 5px}.attendance-web-sheet .car-row-total{font-size:12px;color:#315b78;white-space:nowrap}.attendance-web-absence{min-width:72px;font-size:11px}.attendance-web-bar{display:block;width:42px;height:3px;border-radius:3px;background:#edf2f6;margin:5px auto 0;overflow:hidden}.attendance-web-bar i{display:block;height:100%;background:#4cb89a;border-radius:3px}.attendance-web-empty,.attendance-no-session{color:#a9b7c3;font-size:10px}.attendance-web-sheet tbody tr:hover>td{background:#f8fbfd}@media(max-width:700px){.attendance-web-meta{grid-template-columns:1fr;gap:12px}.attendance-web-sheet .attendance-web-name{min-width:175px;width:175px}.attendance-web-legend small{margin-left:0}.attendance-web-heading h2{font-size:20px}}

.attendance-web-sheet td:nth-child(2){min-width:0;text-align:center;white-space:nowrap}.attendance-web-sheet .car-attendance-cell{padding:8px 4px!important}.attendance-web-sheet .attendance-web-name{white-space:normal}

.attendance-web-sheet{width:max-content;min-width:0;table-layout:fixed}.attendance-web-sheet .attendance-web-name{width:250px;min-width:250px;max-width:250px}.attendance-web-sheet .attendance-web-date,.attendance-web-sheet .car-attendance-cell{width:48px;min-width:48px;max-width:48px}.attendance-web-sheet .car-row-total{min-width:65px}.attendance-web-sheet .attendance-web-absence{min-width:75px}.attendance-web-date button.attendance-session-qr{display:block;min-width:0!important;font-size:9px!important;background:#e1f3ec!important;color:#008369!important;border-radius:5px!important;padding:4px 6px!important;margin:5px auto 0!important}.attendance-avatar{width:38px;height:42px;border-radius:8px;overflow:hidden}.attendance-avatar img{width:100%;height:100%;object-fit:cover}.attendance-web-sheet .attendance-web-name{white-space:normal}@media(max-width:700px){.attendance-web-sheet .attendance-web-name{width:195px;min-width:195px;max-width:195px}}

.attendance-live-photo{width:36px;height:44px;border-radius:7px;object-fit:cover}

.attendance-web-scroll{width:fit-content;max-width:100%}

.attendance-web-sheet .attendance-web-date,.attendance-web-sheet .car-attendance-cell{box-sizing:border-box;width:44px;min-width:44px;max-width:44px}.attendance-web-sheet .attendance-web-date{vertical-align:top;padding:8px 3px}.attendance-date-main{height:46px;display:flex;align-items:flex-start;justify-content:center}.attendance-date-main>button{min-width:0!important;width:100%;font-size:10px!important}.attendance-date-actions{height:26px;display:flex;align-items:center;justify-content:center}.attendance-date-actions .attendance-session-qr{margin:0!important;white-space:nowrap}.attendance-date-main .attendance-no-session{padding-top:8px}

.attendance-semester-layout{display:grid;grid-template-columns:minmax(0,1fr)280px;gap:20px;align-items:start}.attendance-semester-grid{min-width:0}.attendance-semester-summary{background:#f6f9fc;border:1px solid #e0e9f1;border-radius:14px;padding:18px}.attendance-semester-summary h3{font-size:16px;margin:0 0 16px;color:#234c67}.attendance-semester-summary section{padding:14px 0;border-top:1px solid #e0e8ef}.attendance-semester-summary small{display:block;font-size:10px;line-height:1.6;color:#7c8d9f;margin-top:6px}.attendance-summary-label{font-size:11px;font-weight:600;color:#6b8093;margin-bottom:8px}.attendance-summary-hours{font-size:27px;color:#1b5c78}.attendance-summary-hours small{display:inline;font-size:14px}.attendance-summary-progress{height:6px;background:#e4edf4;border-radius:8px;margin-top:12px;overflow:hidden}.attendance-summary-progress span{display:block;height:100%;background:#299b88;border-radius:8px}.attendance-average{display:flex;align-items:center;gap:12px}.attendance-average>div:last-child>strong{font-size:12px}.attendance-summary-ring{width:82px;height:82px;flex-shrink:0;border-radius:50%;background:conic-gradient(#29ac89 var(--attendance-progress),#e4edf2 0);position:relative;display:flex;align-items:center;justify-content:center}.attendance-summary-ring:before{content:'';position:absolute;inset:8px;border-radius:50%;background:#f6f9fc}.attendance-summary-ring strong{position:relative;font-size:16px;color:#167663}.attendance-semester-summary .question-head{margin:0;gap:8px}.attendance-semester-summary .question-head strong{font-size:13px}.attendance-threshold{display:block;font-size:10px;color:#74889a;margin-top:12px}.attendance-threshold>div{display:flex;gap:6px;align-items:center;margin-top:5px}.attendance-threshold input{min-width:0;width:80px;padding:6px!important;min-height:30px;font-size:12px}.attendance-threshold button{font-size:11px;padding:6px 10px;min-height:30px}.attendance-attention-list{max-height:180px;overflow:auto}.attendance-attention-list>div{display:flex;gap:8px;justify-content:space-between;padding:8px 0;border-bottom:1px solid #e5ecf2;font-size:10px}.attendance-attention-list strong{line-height:1.5}.attendance-attention-list span{color:#bd686d;flex-shrink:0}.attendance-semester-summary>section>button{margin-top:10px;font-size:11px;width:100%}.attendance-semester-summary section p{font-size:11px;line-height:1.6;color:#688298}.attendance-semester-summary [data-threshold-message]{color:#aa4e56}.attendance-reminder-dialog{width:min(640px,94vw);max-width:640px;max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:24px}.attendance-reminder-recipients{max-height:240px;overflow:auto;margin:14px 0;background:#f8fafc;border:1px solid #e3eaf0;border-radius:9px}.attendance-reminder-recipients label{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-bottom:1px solid #e7edf2}.attendance-reminder-recipients input,.attendance-reminder-select-all input{width:16px;min-height:16px;margin:3px 0}.attendance-reminder-recipients strong{font-size:12px}.attendance-reminder-recipients small{display:block;color:#7c8e9e;font-size:10px;line-height:1.6}.attendance-reminder-select-all{display:flex;gap:10px;align-items:center;font-size:12px}@media(max-width:1100px){.attendance-semester-layout{grid-template-columns:1fr}.attendance-semester-summary{max-width:480px}}@media(max-width:600px){.attendance-semester-summary{max-width:none}}

.attendance-web-cell.mc{background:#e5efff!important;color:#2861bd!important}.attendance-web-cell.release_letter{background:#f0e7ff!important;color:#7943b5!important}.attendance-web-legend i.blue{background:#5087df}.attendance-web-legend i.purple{background:#9966ce}.car-attendance-sheet .attendance-mc{background:#e5efff;color:#2861bd}.car-attendance-sheet .attendance-release_letter{background:#f0e7ff;color:#7943b5}.attendance-excuse-item,.student-absence-list article{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid #e8eef3}.attendance-excuse-item strong,.student-absence-list strong{font-size:13px}.attendance-excuse-item p{font-size:12px;color:#718699;margin:5px 0}.student-absence-list small,.attendance-request-history{display:block;font-size:11px;line-height:1.6;color:#768b9e;margin:5px 0}.student-absence-list{margin-top:22px}.attendance-excuse-dialog{width:min(580px,94vw);max-width:580px;max-height:90vh;overflow:auto;padding:24px;border:1px solid var(--line);border-radius:14px}.attendance-excuse-reason{white-space:pre-wrap;line-height:1.6;font-size:13px;padding:14px;background:#f3f7fb;border-radius:8px}@media(max-width:600px){.student-absence-list article{align-items:flex-start;flex-direction:column}}
.student-absence-list .badge{display:inline-flex!important;margin-top:6px}

.attendance-history-status{display:inline-block;padding:5px 9px;border-radius:7px;background:#f2f6fa}.attendance-history-status.mc{background:#e5efff;color:#2861bd}.attendance-history-status.release_letter{background:#f0e7ff;color:#7943b5}

/* Two fixed absence limits per student. */
.attendance-web-sheet .attendance-web-absence{min-width:145px;width:145px;padding:7px!important;text-align:left;vertical-align:middle}
.attendance-absence-heading{min-width:145px}.attendance-absence-heading small{font-size:9px;white-space:normal}
.attendance-absence-indicator{padding:4px 6px;border-radius:6px;background:#edf8f4;color:#17664f;line-height:1.3;margin:3px 0}
.attendance-absence-indicator>span:first-child{display:block;font-size:9px;white-space:nowrap}.attendance-absence-indicator strong{font-size:11px}.attendance-absence-indicator small{font-size:8px}.attendance-absence-indicator>small{display:block}.attendance-absence-indicator.limit-reached{background:#fff0f0;color:#b52e3d}.attendance-absence-indicator.pending{background:#f1f4f8;color:#768599}
.attendance-absence-track{display:block;height:3px;background:#d4e9e1;border-radius:4px;overflow:hidden;margin:3px 0}.attendance-absence-track i{display:block;height:100%;background:#28a77e}.limit-reached .attendance-absence-track{background:#f2ced3}.limit-reached .attendance-absence-track i{background:#d94758}
.attendance-limit-help{font-size:12px;line-height:1.7}.attendance-attention-list>div{flex-wrap:wrap;gap:3px}.attendance-attention-list>div>span{font-size:10px}

.attendance-absence-indicator.warning{background:#fff5df;color:#946515}.warning .attendance-absence-track{background:#efdcb5}.warning .attendance-absence-track i{background:#dba126}

/* Compact roster rows while keeping both absence indicators visible. */
.attendance-web-sheet tbody td{padding-top:4px!important;padding-bottom:4px!important}
.attendance-web-sheet .attendance-web-absence{padding:3px 6px!important}
.attendance-web-sheet .attendance-absence-indicator{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:4px;row-gap:0;padding:3px 5px;margin:2px 0;line-height:1.1}
.attendance-web-sheet .attendance-absence-indicator>span:first-child{font-size:7.5px;align-self:center;white-space:normal}
.attendance-web-sheet .attendance-absence-indicator strong{font-size:10px;white-space:nowrap;align-self:center}
.attendance-web-sheet .attendance-absence-indicator strong small{font-size:8px}
.attendance-web-sheet .attendance-absence-track{grid-column:1/-1;height:2px;margin:2px 0}
.attendance-web-sheet .attendance-absence-indicator>small{grid-column:1/-1;font-size:8px;line-height:1.1}
.attendance-web-student strong{line-height:1.25}.attendance-web-student small{margin-top:1px}

.attendance-web-cell.class_rescheduled{background:#e8edf2!important;color:#65758a!important}.attendance-history-status.class_rescheduled{background:#e8edf2;color:#65758a}.attendance-web-legend i.rescheduled{background:#8f9dac}.car-attendance-cell.attendance-class_rescheduled{background:#e8edf2;color:#65758a}

.exam-session-dialog{width:min(980px,94vw);max-width:980px}.session-counts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:20px 0}.session-counts>div{padding:14px;background:#eef7f5;border:1px solid #d4e8e3;border-radius:12px}.session-counts strong,.session-counts span{display:block}.session-counts strong{font-size:24px;color:#007d70}.exam-session-card{padding:16px;margin:12px 0;border:1px solid #d4e8e3;border-radius:12px;background:#f7fbfa}.exam-session-card h4{margin:0 0 8px}@media(max-width:650px){.session-counts{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Arduino IDE-inspired editor. Textarea retains native typing, selection and exam paste policy. */
.arduino-ide{border:1px solid #b7c9ca;border-radius:10px;overflow:hidden;background:#fff}.arduino-ide-toolbar{background:#00979d;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;flex-wrap:wrap}.arduino-ide .arduino-tools{display:flex;gap:8px;margin:0;flex-wrap:wrap}.arduino-ide-toolbar button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:0;height:38px;padding:7px 11px;border:1px solid #cde9e9;background:#e9f6f6;color:#07545a;border-radius:6px;font-size:13px}.arduino-ide-toolbar button:disabled{opacity:.55}.arduino-ide-toolbar button:hover:enabled{background:#fff}.arduino-ide-toolbar svg{width:20px;height:20px}.arduino-sketch-tab{background:#edf2f2;border-bottom:1px solid #cbd9da;padding:10px 16px;font:600 14px Consolas,monospace;color:#006b70;display:flex;justify-content:space-between;gap:12px}.arduino-sketch-tab span{font:12px Arial;color:#607b7e}.arduino-ide .code-wrap{display:flex;border:0;border-radius:0;background:#fff;align-items:stretch}.arduino-ide .code-gutter{flex:0 0 48px;width:48px;max-height:none;height:360px;overflow:hidden;box-sizing:border-box;padding:14px 10px;text-align:right;background:#f3f6f6;border-right:1px solid #e0e8e8;color:#849899;font:15px/24px Consolas,'Courier New',monospace;white-space:pre}.arduino-code-surface{position:relative;flex:1;min-width:0;height:360px;overflow:hidden}.arduino-ide .arduino-code-surface textarea,.arduino-highlight{box-sizing:border-box;position:absolute;inset:0;width:100%;height:360px;min-height:360px;max-height:none;margin:0;border:0;border-radius:0;padding:14px 16px;font:15px/24px Consolas,'Courier New',monospace;letter-spacing:0;tab-size:2;white-space:pre;overflow:auto;resize:none}.arduino-highlight{color:#263b3f;background:white;pointer-events:none;scrollbar-width:none}.arduino-highlight::-webkit-scrollbar{display:none}.arduino-ide .arduino-code-surface textarea{background:transparent;color:transparent;-webkit-text-fill-color:transparent;caret-color:#172b3a;z-index:1;outline-offset:-2px}.arduino-code-surface textarea::selection{background:rgba(0,151,157,.22);color:transparent}.arduino-highlight .syntax-type{color:#00979d}.arduino-highlight .syntax-keyword{color:#728e00}.arduino-highlight .syntax-function{color:#d35400}.arduino-highlight .syntax-string{color:#005c5f}.arduino-highlight .syntax-number{color:#005c5f}.arduino-highlight .syntax-comment{color:#829092}.arduino-highlight .syntax-directive{color:#728e00}.arduino-board-bar{background:#00979d;color:#fff;padding:7px 12px;font-size:12px;display:flex;justify-content:space-between}.arduino-ide>[data-arduino-status],.arduino-ide>.arduino-run-note,.arduino-ide>details{margin:10px 14px}.arduino-serial-panel{padding:12px 14px;background:#f7fafa;border-top:1px solid #d9e5e6}.arduino-serial-panel h3{margin:0 0 10px;font-size:16px;color:#006b70}.arduino-ide .arduino-monitor{background:#fff;color:#172b3a;border:1px solid #ccdcdc;margin:0 0 12px;height:190px}.question-image-view{margin:14px 0}.question-image-view img{display:block;max-width:100%;height:auto;max-height:600px;object-fit:contain;border:1px solid #e1e8ee;border-radius:6px}.question-image-view figcaption{font-size:13px;color:#607380;margin-top:5px}.question-images-editor{border:1px solid var(--line);padding:14px;border-radius:8px;margin:12px 0}.question-images-editor img{max-width:100%;max-height:240px;object-fit:contain}.question-images-editor .actions{margin-top:8px}@media(max-width:600px){.arduino-ide-toolbar{gap:8px}.arduino-ide-toolbar button{padding:6px 8px;font-size:12px}.arduino-ide .code-gutter{flex-basis:36px;width:36px;padding-left:4px;padding-right:6px}.arduino-ide .arduino-code-surface textarea,.arduino-highlight{padding-left:10px;padding-right:10px}.arduino-sketch-tab span{display:none}}

#marking-participation .class-assessments{display:flex;flex-direction:column;gap:12px;padding-top:8px}#marking-participation .class-assessment{margin:0;min-width:0}#marking-participation .participation-missing-title{font-size:13px;margin:14px 0 8px}

.diagram-workspace{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;margin-top:12px}.diagram-palette{border:1px solid #dbe4eb;border-radius:8px;padding:10px;background:#f5f8fa;align-self:start}.diagram-palette .field{font-size:13px;margin:0 0 10px}.diagram-palette select{width:100%;margin-top:6px}.diagram-palette .flow-palette{display:grid;grid-template-columns:1fr;gap:8px}.diagram-palette .flow-palette button{width:100%;min-width:0;min-height:76px;padding:8px;font-size:12px;display:flex;align-items:center;flex-direction:column;gap:5px}.diagram-palette .flow-palette small{font-size:10px}.diagram-drawing{min-width:0}.diagram-drawing .flow-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:0}.diagram-drawing .flow-toolbar button{font-size:12px;padding:7px 9px}.diagram-drawing .flow-toolbar label{font-size:12px}.diagram-drawing .flow-toolbar select{max-width:130px;padding:5px}.diagram-zoom-tools{display:flex;align-items:center;gap:8px;margin:10px 0;flex-wrap:wrap}.diagram-zoom-tools button{padding:6px 10px;font-size:12px}.diagram-zoom-tools output{min-width:45px;text-align:center;font-size:13px}.diagram-viewport{height:650px;overflow:auto;border:1px solid #ccd9e1;background:#eef2f5;max-width:100%;padding:2px}.diagram-canvas{background-color:white;background-image:radial-gradient(#d5e0e6 1px,transparent 1px);background-size:20px 20px;transform-origin:top left;border:0;border-radius:0;width:800px;min-width:800px;margin:0}.diagram-sheets{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.diagram-sheets button{padding:6px 9px;font-size:12px}.diagram-sheets [aria-selected=true]{background:#007d70;color:#fff;border-color:#007d70}.diagram-sheet-navigation{display:flex;gap:6px;flex-basis:100%;margin-top:2px}.flow-node.ellipse,.flow-palette-icon.ellipse{border-radius:50%}.flow-node.hexagon{clip-path:none;border:0;background:transparent;box-shadow:none}.flow-node.hexagon::before{content:"";position:absolute;inset:0;background:#e8f2f7;clip-path:polygon(18% 0,82% 0,100% 50%,82% 100%,18% 100%,0 50%);border:2px solid #345772}.flow-palette-icon.hexagon{clip-path:polygon(18% 0,82% 0,100% 50%,82% 100%,18% 100%,0 50%)}.flow-node.decision{transform:none;width:110px;height:110px;border:0;background:transparent;box-shadow:none}.flow-node.decision::before{content:"";position:absolute;inset:17px;background:#e8f2f7;border:2px solid #345772;transform:rotate(45deg)}.flow-node.decision>span{transform:none;position:relative;z-index:1}.flow-node.hexagon>span{position:relative;z-index:1}.diagram-canvas .flow-node.selected{outline:2px solid #007d70;outline-offset:4px}.diagram-canvas .flow-node.io{transform:none}.diagram-canvas .flow-node.io>span{transform:none}.diagram-sheet-caption{margin:16px 0 8px}@media(max-width:750px){.diagram-workspace{grid-template-columns:1fr}.diagram-palette .flow-palette{grid-template-columns:repeat(4,minmax(0,1fr))}.diagram-viewport{height:550px}}@media(max-width:450px){.diagram-palette .flow-palette{grid-template-columns:repeat(2,minmax(0,1fr))}}

.flow-node.decision::before,.flow-node.hexagon::before{content:none}.flow-node.io{transform:none;border:0;background:transparent;box-shadow:none}.flow-node.io>span{transform:none;position:relative;z-index:1}.flow-node>.diagram-shape-background{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.flow-node.text>span{position:relative;z-index:1}

.diagram-library-heading{font-size:14px;font-weight:700;margin-bottom:10px}.diagram-canvas{width:794px;min-width:794px}.diagram-canvas .flow-node{padding:5px;line-height:1.25}.canvas svg [data-route-handle]{pointer-events:all;cursor:move;touch-action:none}.diagram-viewport{background:#edf1f4}.diagram-canvas{box-shadow:0 0 0 1px #c9d4dd}

.arduino-capture-toolbar{justify-content:space-between;flex-wrap:wrap;margin-bottom:10px}.arduino-capture-toolbar h3{margin:0}.arduino-capture-note{margin:12px 14px}.arduino-output-capture{margin:14px;border:1px solid #d9e5e6;border-radius:8px;overflow:hidden}.arduino-output-capture figcaption{padding:10px;font-weight:600;background:#edf5f5}.arduino-output-capture img{display:block;max-width:100%;height:auto}

.arduino-output-capture figcaption{display:flex;justify-content:space-between;align-items:center;gap:12px}.arduino-output-capture figcaption button{font-size:13px;padding:5px 10px}

.staff-page-loading{display:flex;align-items:center;gap:14px;min-height:150px}.staff-page-spinner{width:26px;height:26px;border:3px solid #dce9e8;border-top-color:#007d70;border-radius:50%;animation:staff-page-spin .8s linear infinite}@keyframes staff-page-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.staff-page-spinner{animation:none}}

.pdf-cover{min-height:850px;padding:16px 0;break-after:page;page-break-after:always}.pdf-cover .institution-logo{max-width:280px!important;max-height:130px!important;margin:0 auto 24px!important;object-fit:contain}.pdf-cover .pdf-title{text-align:center;font-size:22px}.pdf-review-signature{width:280px;max-width:100%;margin:30px 0 0 auto;padding-top:15px;break-inside:avoid;text-align:center}.pdf-signature-space{height:82px;display:flex;align-items:center;justify-content:center}.pdf-signature-space img{max-width:220px;max-height:75px;object-fit:contain}.pdf-reviewer-name{padding-top:8px;max-width:280px;font-weight:bold}.pdf-review-signature p{font-size:12px}.signature-preview img{max-width:320px;max-height:100px;object-fit:contain}.pdf-answer-pages{break-before:page;page-break-before:always}

.pdf-cover-brand{position:relative;min-height:154px}.pdf-percent-circle{position:absolute;right:2px;top:0;width:116px;height:116px;border:0;color:#c62030;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-7deg);font-family:"Segoe Print","Comic Sans MS",Arial,sans-serif;background:#fff}.pdf-percent-circle strong{font-size:32px;line-height:1.2}.pdf-percent-circle span{font-size:18px;line-height:1.4}

.pdf-hand-circle{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.pdf-percent-circle strong,.pdf-percent-circle span{position:relative;z-index:1}

.staff-own-signature{padding:18px 0;margin:12px 0;border-top:1px solid #dce4ec;border-bottom:1px solid #dce4ec}
.staff-own-signature [hidden]{display:none!important}
.staff-own-stamp{padding:18px 0;margin:12px 0;border-bottom:1px solid #dce4ec}.staff-own-stamp [hidden]{display:none!important}.staff-own-stamp textarea{width:100%;resize:vertical}.stamp-preview{margin:12px 0}.stamp-preview img{display:block;max-width:100%;width:320px;height:auto;object-fit:contain}.stamp-draft-preview{background:#fff;border:1px solid #dbe5f2;border-radius:10px;padding:16px}.staff-own-stamp .actions{flex-wrap:wrap}.pdf-signature-space:has(.pdf-stamp-image){height:auto;min-height:0;width:280px;max-width:100%;flex-direction:column;align-items:center;gap:0;padding-top:6px}.pdf-signature-space:has(.pdf-stamp-image)>img:not(.pdf-stamp-image){max-width:220px;max-height:55px;flex:none}.pdf-signature-space img.pdf-stamp-image{display:block;width:280px;max-width:100%;height:auto;max-height:80px;transform:none;flex:none}
.signature-draw-canvas{display:block;width:100%;max-width:640px;height:auto;aspect-ratio:2/1;box-sizing:border-box;border:1px solid #aabdd6;border-radius:10px;background-color:#fff;background-image:linear-gradient(to bottom,transparent calc(78% - 1px),#dbe5f2 78%,transparent calc(78% + 1px));touch-action:none;user-select:none;cursor:crosshair}
.signature-pad-hint{font-size:13px;margin:12px 0 8px}.signature-draw-actions{margin-top:12px;flex-wrap:wrap}.signature-draw-actions button{min-height:42px}.staff-own-signature [data-signature-pad-status]{font-size:12px;margin-bottom:0}
/* Shared MyXcess brand palette. Keep print/answer ink and status semantics intact. */
@media screen {
 :root{--ink:#10263c;--accent:#215bee;--line:#dde5ef;color:#10263c;background:#f8fafc}
 body{background:#f8fafc;color:#10263c}
 body>header{background:#10263c;border-color:#25425d;box-shadow:0 4px 18px #10263c14}
 body>header .brand{color:#fff}body>header .brand-icon{background:#24435f;color:#75e9c5}body>header .brand small{color:#c2d1e2}body>header>.badge{color:#d3e3ef;border-color:#47617b}
 body>header nav button{background:transparent;color:#d2dfed}body>header nav button:hover{background:#24435f}body>header nav button.active{background:#75e9c5;color:#10263c}
 button:hover{background:#edf3ff}button.primary,.primary{background:#215bee;border-color:#215bee;color:#fff}button.primary:hover,.primary:hover{background:#1748c9;border-color:#1748c9}
 button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-color:#215bee}
 .panel{border-color:#dde5ef;box-shadow:0 4px 18px #16396006}
 .role-switch{background:#edf3ff}.role-switch button[aria-pressed="true"]{background:#215bee;color:#fff}
 .instructor-navigation button:disabled{background:#e8efff;border-color:#c3d3fb;color:#215bee}
 .settings-tabs button[aria-pressed="true"]{background:#215bee;border-color:#215bee;color:#fff}
 .active-test-card,.summary{background:#eef4ff}.active-test-card span{color:#617388}
 .portal-insight-icon{background:#e8efff;color:#215bee}
 h1[data-ui-icon]::before,h2[data-ui-icon]::before,.dashboard-stat[data-ui-icon]::before,.student-result-stats>div[data-ui-icon]::before,.dashboard-results>div[data-ui-icon]::before{color:#215bee}
 .portal-insight-card.blue{background:#eef4ff;border-color:#d7e3fb}.portal-insight-card.green{background:#effbf6}.portal-insight-card.green .portal-insight-icon{background:#d5f5e9;color:#14775a}
 .student-result-stats>div{background:#eef4ff;border-color:#d7e3fb}.table-wrap thead th{background:#eff4fb}.table-wrap tbody tr:hover{background:#f2f6ff}
 #toast{background:#10263c}.exam-timer:not(.timer-warning){background:#d9f8ed;color:#145a46}
}
.staff-edit-dialog [data-result-start-area][hidden],.staff-edit-dialog [data-result-end-area][hidden]{display:none}
/* Live lecturer controls and numbered student lists */
.live-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:20px 0}.live-control-card{margin:0;min-width:0}.live-control-card .portal-insight-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.live-control-card .portal-insight-card{flex-direction:column;align-items:flex-start;padding:12px;gap:8px}.live-control-card .portal-insight-card div>span{overflow-wrap:normal}.live-control-card .portal-insight-icon{width:30px;height:30px}.live-control-card .portal-insight-icon::before{width:18px;height:18px}.live-session-tile{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-top:1px solid var(--line,#dce5ed)}.live-session-tile>div{min-width:0}.live-session-tile small{display:block;color:var(--muted,#596b7c);margin-top:4px}.live-session-tile>div:last-child{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.live-countdown{font-variant-numeric:tabular-nums;font-family:ui-monospace,monospace;white-space:nowrap}.exam-control-panel{max-width:1500px;margin-inline:auto}.exam-control-panel>.field{max-width:650px}.exam-control-overview{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px;background:#f0f7fb;border:1px solid #dce8ef;border-radius:16px;margin:20px 0}.exam-control-clock{display:grid;gap:6px;text-align:right}.exam-control-clock>strong{font-size:clamp(2rem,5vw,3.6rem);line-height:1.1;color:#123c55}.exam-control-clock>span,.exam-control-clock>small{color:#536a7b}.exam-lock-panel{background:#fff7eb;border:1px solid #efd4a5;border-radius:14px;padding:18px;margin:20px 0}.exam-lock-panel h3{margin-top:0}.exam-student-locked{background:#fff3dd}.session-counts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:20px 0}.session-counts>div{display:grid;gap:5px;padding:14px;border:1px solid #dae5ec;background:#f8fafc;border-radius:12px}.session-counts strong{font-size:1.7rem;color:#123c55}.session-counts span{font-size:.85rem}.student-list-number{font-variant-numeric:tabular-nums;color:#677c8e;text-align:center;flex:0 0 auto;min-width:1.5em;font-size:.85rem}.attendance-web-student>.student-list-number{margin-right:2px}.attendance-live-student{gap:9px}.attendance-live-student.is-late{background:#fff3d9;border-color:#e5ad42}.attendance-live-code [data-live-window]{display:grid;gap:7px;padding:16px;border-radius:12px;background:#eef8f5;margin:16px 0}.attendance-live-code [data-live-window][data-phase=late]{background:#fff3dd}.attendance-live-code .live-countdown{font-size:2.1rem;color:#123c55}.late-clock-label{color:#945b00}.dashboard-missing-students li>.student-list-number,.participation-missing li>.student-list-number{margin-right:7px}
@media(max-width:900px){.live-control-grid{grid-template-columns:1fr}.session-counts{grid-template-columns:repeat(3,minmax(0,1fr))}.exam-control-overview{align-items:flex-start}.live-control-card .question-head{flex-wrap:wrap}}@media(max-width:560px){.exam-control-overview{flex-direction:column;padding:16px}.exam-control-clock{text-align:left}.live-session-tile{align-items:flex-start;flex-direction:column}.session-counts{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-live-student .student-list-number{min-width:1.2em}}
/* Dashboard categories share one outer card per subject. */
.dashboard-category{margin:20px 0;padding:22px;min-width:0}.dashboard-category-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.dashboard-category-heading h2{margin:0;font-size:20px}.dashboard-filter-panel{padding:16px 22px}.dashboard-filter-panel .dashboard-category-heading{margin-bottom:10px}.dashboard-filter-panel h2{font-size:15px}.dashboard-filter-panel .dashboard-filters{padding:0;margin:0;border:0;background:transparent;box-shadow:none}.dashboard-category .dashboard-stats{margin:0 0 16px;gap:12px}.dashboard-category .dashboard-stat{margin:0;padding:14px;background:#f5f8fc;border-color:#e1e9f1;box-shadow:none}.dashboard-category .dashboard-stat strong{font-size:29px}.dashboard-category .dashboard-stat small{font-size:11px}.dashboard-category :is(.dashboard-active,.dashboard-class-submissions,.dashboard-recent,.review-dashboard-summary,.notifications-panel,.live-control-card,.dashboard-group-results){border:0;box-shadow:none;border-radius:0;margin:0;padding:0;background:transparent}.dashboard-category .dashboard-active{padding:14px 0;border-top:1px solid #e4ebf1;border-bottom:1px solid #e4ebf1;gap:16px}.dashboard-category .dashboard-active h2{font-size:17px;margin:3px 0}.dashboard-category .dashboard-active p{margin:4px 0;font-size:12px}.dashboard-category .dashboard-active .eyebrow{font-size:10px}.dashboard-category .dashboard-group-results{padding:14px 0}.dashboard-category .dashboard-results{gap:10px}.dashboard-category .dashboard-results>div{padding:10px 14px}.dashboard-category .dashboard-results strong{font-size:24px}.dashboard-category-details{border-top:1px solid #e4ebf1;margin-top:10px;padding-top:10px}.dashboard-category-details>summary{font-weight:600;cursor:pointer;color:#355e7b;padding:6px 0;font-size:13px}.dashboard-category-analytics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;padding:16px 0}.dashboard-category-analytics>.panel{margin:0;padding:0;border:0;box-shadow:none;background:transparent;min-width:0}.dashboard-category-analytics>.panel:last-child{grid-column:1/-1}.dashboard-category-analytics h2{font-size:17px}.dashboard-category-details>.panel{margin:14px 0 0;padding:0;border:0;box-shadow:none;background:transparent}.dashboard-category .dashboard-recent .question-head:empty{display:none}.dashboard-category #dashboard-live-control{margin:0;gap:22px}.dashboard-category .live-control-card+.live-control-card{border-left:1px solid #e4ebf1;padding-left:22px}.dashboard-category .live-control-card h2{font-size:17px}.dashboard-category .class-overview-note{font-size:11px;margin-bottom:0}.dashboard-category-communication{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:22px;align-items:start}.dashboard-category-communication>section+section{border-left:1px solid #e4ebf1;padding-left:22px!important}.dashboard-category-communication h2{font-size:17px}.dashboard-category-communication .portal-insight-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dashboard-category-communication .portal-insight-card{padding:10px;gap:8px}.dashboard-category-communication .portal-insight-card strong{font-size:24px}.dashboard-category-communication .portal-insight-icon{width:30px;height:30px}.dashboard-category-communication .portal-insight-icon:before{width:17px;height:17px}@media(max-width:900px){.dashboard-category .live-control-card+.live-control-card{border-left:0;border-top:1px solid #e4ebf1;padding:20px 0 0}.dashboard-category-communication{grid-template-columns:1fr}.dashboard-category-communication>section+section{border-left:0;border-top:1px solid #e4ebf1;padding:20px 0 0!important}}@media(max-width:600px){.dashboard-category{padding:16px}.dashboard-category-heading{flex-wrap:wrap}.dashboard-category-heading h2{font-size:18px}.dashboard-category-analytics{grid-template-columns:1fr}.dashboard-category .dashboard-active{align-items:flex-start;flex-direction:column}.dashboard-category .dashboard-results>div{padding:9px}.dashboard-category .dashboard-results strong{font-size:20px}}
.dashboard-category-communication .review-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dashboard-category-communication .review-summary-card{padding:10px}.dashboard-category .dashboard-results{margin:0}.dashboard-category .dashboard-results>div{min-height:0}
/* Result gradebook */
.result-panel{margin-top:18px}.result-filters{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:14px;align-items:end}.result-filters .field{margin:0}.result-filters .field:last-of-type{grid-column:span 2}.result-filters .actions{grid-column:span 2}.result-chart{display:grid;gap:12px;max-height:420px;overflow:auto;padding:6px 6px 6px 0}.result-chart-row{display:grid;grid-template-columns:minmax(150px,300px) minmax(90px,1fr) 65px;gap:16px;align-items:center;font-size:13px}.result-chart-label strong,.result-chart-label small{display:block}.result-chart-label small{color:var(--muted,#657386);margin-top:3px}.result-chart-track{height:16px;background:#e8eef4;border-radius:20px;overflow:hidden}.result-chart-track span{display:block;height:100%;background:linear-gradient(90deg,#168b85,#5baec4);border-radius:20px}.result-table th{min-width:150px;vertical-align:top}.result-table th:first-child{min-width:45px}.result-table td small,.result-table th small{display:block;margin-top:5px;font-weight:400;font-size:12px;color:#657386}.result-table th:nth-child(2){min-width:220px}.result-table td{vertical-align:middle}.result-pending,.result-missing{font-size:12px;padding:5px 8px;border-radius:7px;display:inline-block}.result-pending{background:#fff2d9;color:#805610}.result-missing{background:#edf1f5;color:#657386}.result-na{color:#a3adb9}.result-pagination{margin-top:16px;justify-content:flex-end}.result-panel .portal-insight-cards{margin-bottom:20px}
@media(max-width:750px){.result-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.result-chart-row{grid-template-columns:minmax(110px,1fr) minmax(70px,1fr) 50px;gap:8px;font-size:11px}.result-pagination{justify-content:center}.result-panel .question-head{flex-wrap:wrap}}
/* Keep every staff destination visible, including Result and Administrator Staff. */
.heading.staff-heading{flex-wrap:wrap;gap:12px}.staff-heading>div:first-child{flex:0 1 180px;min-width:150px}.instructor-navigation{flex:1 1 800px;flex-wrap:wrap;overflow:visible;gap:4px;padding:0}.instructor-navigation button{font-size:12px;padding:8px;min-height:40px}.instructor-navigation button[data-ui-icon]::before{width:14px;height:14px;margin-right:4px}
@media(max-width:1100px){.heading.staff-heading{flex-direction:column;align-items:stretch}.staff-heading>div:first-child{flex:auto;min-width:0}.instructor-navigation{flex:0 1 auto;width:100%}}
@media(max-width:600px){.instructor-navigation button{flex:1 1 auto;min-height:42px;font-size:12px}}
.result-class-filter{max-width:600px}.result-class-filter .field{margin:0}.result-grade-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:18px}.result-grade-card{border:1px solid #e0e8f3;border-radius:12px;background:#f8faff;padding:18px;min-width:0}.result-grade-card h3{margin:0 0 6px;font-size:16px}.result-grade-card>p.muted{margin:0 0 20px;font-size:12px}.result-grade-bars{display:grid;gap:13px}.result-grade-row{display:grid;grid-template-columns:90px minmax(40px,1fr) 28px;gap:12px;align-items:center}.result-grade-row small{display:block;font-size:11px;color:#657386;margin-top:3px}.result-grade-track{height:18px;border-radius:12px;background:#e6edf6;overflow:hidden}.result-grade-track span{display:block;height:100%;border-radius:12px}.result-grade-row>[data-grade-count]{text-align:right}.result-grade-summary{font-size:12px;color:#657386;margin:18px 0 0}
.result-grade-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,430px),1fr))}.result-grade-svg{display:block;width:100%;height:auto;overflow:visible}.result-grade-svg text{font-family:inherit;fill:#29435e}.result-grade-tick{font-size:13px}.result-grade-count{font-size:13px;font-weight:700}.result-grade-x{font-size:14px;font-weight:600}.result-grade-axis-label{font-size:12px;fill:#657386!important}.result-grade-card>p.muted{margin-bottom:12px}.result-grade-summary{margin-top:12px}
.result-grade-combined{min-width:0}.result-grade-legend{display:flex;flex-wrap:wrap;gap:12px 24px;margin-bottom:16px}.result-grade-legend>div{display:flex;align-items:flex-start;gap:8px;min-width:0}.result-grade-legend i{display:block;width:13px;height:13px;flex:0 0 13px;border-radius:3px;margin-top:3px}.result-grade-legend strong{font-size:13px}.result-grade-legend small{display:block;font-size:11px;color:#657386;margin-top:4px}.result-combined-svg{max-height:330px}.result-combined-svg .result-grade-count{font-size:11px}.result-combined-svg .result-grade-x{font-size:12px}@media(max-width:600px){.result-grade-legend{gap:12px}.result-combined-svg{max-height:none}.result-combined-svg .result-grade-x{font-size:11px}.result-combined-svg .result-grade-count{font-size:10px}}
/* Learning library shares the portal's teal palette and compact staff navigation. */
.lesson-toolbar,.lesson-reading,.lesson-editor,.lesson-wim{margin-bottom:20px}.lesson-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}.lesson-stats>div{background:#edf8f6;border:1px solid #cce7e2;padding:15px 18px;border-radius:14px;display:flex;justify-content:space-between;align-items:center}.lesson-stats strong{font-size:1.6rem;color:#087c78}.lesson-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.lesson-card{display:flex;flex-direction:column;margin:0;gap:12px;border-top:4px solid #16a5a0}.lesson-card h2{font-size:1.25rem;line-height:1.4;margin:0}.lesson-card p{margin:0;line-height:1.65}.lesson-card .actions{margin-top:auto;padding-top:10px}.lesson-card-top,.lesson-wim{display:flex;justify-content:space-between;gap:15px;align-items:center}.lesson-book{display:grid;place-items:center;width:52px;height:52px;background:#e1f4f0;border-radius:15px;color:#087c78;font-size:2rem}.lesson-topic{font-size:.78rem;font-weight:750;text-transform:uppercase;letter-spacing:.07em;color:#087c78}.lesson-reading{max-width:1000px;margin:18px auto}.lesson-reading-header{padding:22px 0;border-bottom:1px solid #d7e8e5;margin-bottom:20px}.lesson-reading-header h1{font-size:2rem}.lesson-toc{display:flex;flex-wrap:wrap;gap:8px;padding:16px;background:#edf8f6;border-radius:14px}.lesson-toc strong{flex-basis:100%}.lesson-toc button{font-size:.82rem;padding:7px 10px}.lesson-content{line-height:1.85;overflow-wrap:anywhere}.lesson-content h2,.lesson-content h3,.lesson-content h4{scroll-margin-top:28px;line-height:1.4;margin-top:1.7em}.lesson-content pre{overflow:auto;background:#102a35;color:#e5f7f1;padding:20px;border-radius:14px;line-height:1.65;white-space:pre}.lesson-content code{font-family:Consolas,monospace}.lesson-content p code{background:#e8f4f1;color:#07635f;padding:2px 5px;border-radius:4px}.lesson-content figure{text-align:center;margin:24px 0}.lesson-content img{max-width:100%;height:auto;max-height:650px;object-fit:contain}.lesson-content figcaption{font-size:.8rem;color:#60767c}.lesson-content table{font-size:.9rem}.lesson-attachments{border-top:1px solid #d7e8e5;padding-top:20px;margin:24px 0}.lesson-attachments a{display:block;padding:12px;background:#edf8f6;margin:8px 0;border-radius:9px}.lesson-content-editor{width:100%;font:14px/1.65 Consolas,monospace;min-height:400px;box-sizing:border-box;padding:16px}.lesson-class-select{border:1px solid #ccdeda;border-radius:10px;margin:16px 0;padding:14px}.lesson-class-select label{display:inline-flex;gap:7px;margin-right:20px}.lesson-preview-dialog{width:min(900px,90vw);max-height:85vh;overflow:auto;border:1px solid #c9ded9;border-radius:18px;padding:26px}.lesson-back{margin-bottom:14px}.lesson-editor .field{margin:14px 0}.lesson-editor textarea{width:100%;box-sizing:border-box}.lesson-editor #le-file{max-width:100%}.lesson-toolbar #lesson-search{width:100%}@media(max-width:1050px){.lesson-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.lesson-grid,.lesson-stats{grid-template-columns:1fr}.lesson-wim{align-items:stretch;flex-direction:column}.lesson-reading-header h1{font-size:1.5rem}.lesson-content pre{font-size:12px}}
/* Lesson reader: a persistent topic rail and one focused reading section. */
.lesson-reader-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:8px 0 20px}.lesson-reader-layout{display:grid;grid-template-columns:285px minmax(0,1fr);align-items:start;gap:22px}.lesson-sidebar{position:sticky;top:20px;padding:0!important;overflow:hidden;margin:0!important}.lesson-sidebar-title{display:flex;flex-direction:column;gap:10px;padding:22px;border-bottom:1px solid #e2eceb}.lesson-sidebar-title strong{font-size:1.05rem;line-height:1.5}.lesson-sidebar-title small{color:#6e838b}.lesson-sidebar nav{display:flex;flex-direction:column;gap:4px;padding:12px;max-height:calc(100vh - 300px);overflow-y:auto;scrollbar-width:thin}.lesson-topic-link{display:flex!important;align-items:flex-start;gap:9px;text-align:left;white-space:normal!important;border:0!important;background:transparent!important;border-radius:9px!important;padding:10px 12px!important;font-size:.86rem!important;line-height:1.5;color:#506773!important;box-shadow:none!important}.lesson-topic-link.level-1{font-weight:700;color:#173b47!important;margin-top:5px}.lesson-topic-link.level-2{padding-left:23px!important;font-size:.82rem!important}.lesson-topic-link.level-3{padding-left:34px!important;font-size:.8rem!important;color:#6c8188!important}.lesson-topic-link:hover{background:#f0f6f8!important}.lesson-topic-link.selected{background:#e1f5f0!important;color:#08776e!important;box-shadow:inset 3px 0 #129b8e!important}.lesson-topic-dot{flex:0 0 6px;min-height:6px;margin-top:6px;border-radius:50%;background:#c6d7d9}.level-0 .lesson-topic-dot{background:none;margin-top:0;font-size:16px;line-height:1.4}.selected .lesson-topic-dot{background:#129b8e}.level-0.selected .lesson-topic-dot{background:none}.lesson-sidebar-footer{padding:16px 22px;border-top:1px solid #e2eceb;font-size:.8rem}#lesson-topics-toggle{display:none}.lesson-topic-panel{margin:0!important;padding:32px!important;min-height:580px;min-width:0;scroll-margin-top:20px}.lesson-topic-position{display:flex;justify-content:space-between;gap:12px;color:#6d838b;text-transform:uppercase;font-size:.7rem;letter-spacing:.08em;font-weight:700;margin-bottom:20px}.lesson-topic-panel>h1{font-size:1.7rem;line-height:1.4;margin:0 0 24px}.lesson-topic-panel>h1:focus{outline:none}.lesson-topic-panel .lesson-content{font-size:.95rem;line-height:1.8}.lesson-topic-children{border-top:1px solid #e2eceb;margin-top:24px;padding-top:20px}.lesson-topic-children h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:#71858c;margin:0 0 12px}.lesson-topic-children button{display:flex;justify-content:space-between;align-items:center;text-align:left;white-space:normal;width:100%;margin:6px 0;background:#f4f9f9;border:1px solid #e3edec;border-radius:10px;padding:13px 15px;color:#173b47}.lesson-topic-pagination{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #e2eceb;padding-top:22px;margin-top:32px}.lesson-reader-finish{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:18px}.lesson-reader-finish button{font-size:.8rem}.lesson-topic-pagination button{white-space:normal}.lesson-sidebar [hidden]{display:none!important}@media(max-width:1000px){.lesson-reader-layout{grid-template-columns:245px minmax(0,1fr);gap:16px}.lesson-topic-panel{padding:24px!important}}@media(max-width:800px){.lesson-reader-layout{grid-template-columns:minmax(0,1fr)}.lesson-sidebar{position:static}.lesson-sidebar-title{padding:16px}.lesson-sidebar nav{max-height:45vh}.lesson-reader-top{align-items:flex-start;flex-direction:column;gap:10px}#lesson-topics-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;border-radius:0;padding:15px 18px;text-align:left;background:#e7f4f1;color:#126e67;font-weight:700}.lesson-topic-panel{min-height:0;padding:22px!important}.lesson-topic-panel>h1{font-size:1.4rem}.lesson-topic-position{flex-wrap:wrap}.lesson-topic-pagination{gap:8px}.lesson-topic-pagination button{font-size:.82rem}}
dialog.reopen-dialog [data-attempt-reset-time][hidden]{display:none!important}
.practical-rubric-editor{margin:20px 0;padding:20px;border:1px solid var(--line);border-radius:14px;background:var(--panel,#fff)}
.practical-rubric-editor h3,.rubric-criterion h4{margin:0 0 8px}.practical-rubric-editor .muted{font-size:.9rem}
.rubric-toolbar{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.rubric-toolbar .field{flex:1 1 250px;margin:0}.rubric-toolbar button{flex:0 1 auto;margin:0;min-height:42px}
.rubric-criterion{margin-top:16px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--bg,#f8fafc)}
.rubric-criterion-fields{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:14px}.rubric-levels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.rubric-levels .field{margin:0}.rubric-levels small{font-weight:normal;color:var(--muted,#64748b)}.rubric-levels textarea{width:100%;box-sizing:border-box;min-height:100px;resize:vertical;font-family:inherit;font-size:.9rem}
.practical-rubric-editor [data-rubric-warning]{color:#b45309}.practical-rubric-editor [data-rubric-warning]:empty{display:none}
@media(max-width:650px){.practical-rubric-editor{padding:12px}.rubric-criterion-fields,.rubric-levels{grid-template-columns:1fr}.rubric-criterion{padding:12px}.rubric-toolbar button{flex:1 1 140px}}
.rubric-import-dialog{width:min(950px,calc(100% - 32px));max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:16px;padding:24px;color:var(--ink,#172b3a);background:var(--panel,#fff);box-sizing:border-box}.rubric-import-dialog::backdrop{background:#10283a80}
.rubric-import-dialog [hidden]{display:none!important}.rubric-import-dialog .question-head{gap:14px}.rubric-import-dialog .question-head h2{margin:0}.rubric-import-items{display:grid;gap:12px;margin-top:14px}.rubric-import-items article{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--bg,#f8fafc)}
.rubric-import-select{display:flex;align-items:center;gap:10px;margin:12px 0;font-weight:600}.rubric-import-select input{width:auto;min-width:18px;min-height:18px;flex:0 0 auto}.rubric-import-items details summary{cursor:pointer;margin:10px 0}.rubric-import-dialog [data-ri-error]{color:#b45309}.rubric-import-dialog [data-ri-total]{font-weight:700}
.rubric-import-mapping{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media(max-width:650px){.rubric-import-mapping{grid-template-columns:1fr}}
@media(max-width:650px){.rubric-import-dialog{padding:14px}.rubric-import-items article{padding:10px}}

.rubric-ai-spinner{display:inline-block;width:16px;height:16px;border:2px solid #cbd5e1;border-top-color:#0d9488;border-radius:50%;animation:rubric-ai-spin .8s linear infinite;margin-right:8px;vertical-align:middle}@keyframes rubric-ai-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.rubric-ai-spinner{animation:none}}
.marked-answer.practical-rubric-layout{grid-template-columns:minmax(0,1.35fr) minmax(340px,1fr);gap:24px;align-items:start}.rubric-mark-panel{position:sticky;top:16px;min-width:0;max-height:82vh;overflow:auto;background:#f4f8fb;border:1px solid var(--line);border-radius:16px;padding:18px}.rubric-mark-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.rubric-mark-head h4{margin:5px 0;font-size:20px}.rubric-mark-head>strong{white-space:nowrap;background:#dff4ef;color:#126750;border-radius:10px;padding:10px}.rubric-mark-cards{display:grid;gap:14px}.rubric-mark-card{min-width:0;background:white;border:1px solid var(--line);border-radius:12px;padding:14px}.rubric-mark-card h5{font-size:15px;line-height:1.5;margin:0;overflow-wrap:anywhere}.rubric-mark-card .question-head{align-items:start;gap:10px}.rubric-mark-card .question-head>span{white-space:nowrap;font-size:12px;color:#526777}.rubric-mark-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:12px}.rubric-mark-options button{display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 3px;min-width:0;border:1px solid #bdcbd7;border-radius:9px;background:#fff;color:#244254}.rubric-mark-options button span{font-size:12px}.rubric-mark-options button strong{font-size:17px}.rubric-mark-options button[aria-pressed=true]{background:#dff4ef;border-color:#0b846e;color:#075d4d;box-shadow:inset 0 0 0 1px #0b846e}.rubric-selected-description{font-size:13px;line-height:1.55;color:#405967;min-height:32px}.rubric-mark-card details{font-size:13px;margin:10px 0}.rubric-mark-comment{margin-top:12px;font-size:13px}.rubric-mark-comment textarea{width:100%;resize:vertical}.rubric-mark-total{position:sticky;bottom:-18px;background:#f4f8fb;border-top:1px solid var(--line);padding:14px 0 2px;margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:10px}.rubric-mark-total label{display:flex;align-items:center;gap:10px;font-weight:700}.rubric-mark-total input{width:94px;text-align:right;font-weight:700}.rubric-mark-total>span{font-size:12px;color:#526777}.practical-rubric-layout .ink-scroll{max-width:100%;overflow:auto}.rubric-report{margin:16px 0;break-inside:avoid}@media(max-width:950px){.marked-answer.practical-rubric-layout{grid-template-columns:minmax(0,1fr)}.rubric-mark-panel{position:static;max-height:none}.rubric-mark-total{position:static}.rubric-mark-panel .eyebrow{font-size:11px}}@media print{.rubric-mark-panel{position:static;max-height:none;overflow:visible}}
.marking-preview-page{background:#f3f7fa;display:block;padding:0}.marking-preview-page #app{max-width:none;padding:20px}.preview-marking-heading{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:white;padding:18px;border:1px solid var(--line);border-radius:14px;margin-bottom:20px}.preview-marking-heading>div:first-child{flex:1 1 360px}.preview-marking-heading h2{margin:8px 0}.preview-marking-heading p{margin:6px 0;font-size:13px;color:#526777}.preview-marking-heading .field{min-width:200px}.preview-marking-heading .actions{flex-basis:100%}.preview-marking-heading>#preview-marking-total{padding:12px;background:#dff4ef;border-radius:10px;color:#126750;font-size:20px}.preview-marking-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,1fr);gap:20px;align-items:start}.preview-marking-answer{min-width:0}.preview-marking-layout>[data-preview-rubric-slot]{position:sticky;top:12px;min-width:0}.preview-marking-layout .rubric-mark-panel{position:static}.preview-marking-answer .flow-tools{flex-wrap:wrap}.preview-marking-answer .flow-wrap{max-width:100%;overflow:auto}.preview-marking-answer .answer{min-height:320px}@media(max-width:950px){.preview-marking-layout{grid-template-columns:minmax(0,1fr)}.preview-marking-layout>[data-preview-rubric-slot]{position:static}.marking-preview-page #app{padding:12px}}
@media(max-width:600px){.marking-preview-dialog .student-preview-toolbar{flex-direction:column;align-items:stretch;gap:8px}.marking-preview-dialog .student-preview-toolbar p{font-size:12px;line-height:1.4}.marking-preview-dialog .student-preview-toolbar button{align-self:flex-end;white-space:normal}}
.rubric-mark-panel{max-height:none;overflow:visible;padding:14px}.rubric-mark-instruction{font-size:12px;line-height:1.45;margin:8px 0 12px}.rubric-table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:9px;background:white}.rubric-mark-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:auto}.rubric-mark-table th,.rubric-mark-table td{padding:8px 5px;border-bottom:1px solid var(--line);vertical-align:middle}.rubric-mark-table thead th{background:#eaf0f5;color:#405967;font-size:11px;white-space:nowrap;text-align:center}.rubric-mark-table thead th:first-child{text-align:left}.rubric-mark-table tbody th{font-weight:500;text-align:left;min-width:125px;width:100%}.rubric-criterion-title{display:block;line-height:1.4;overflow-wrap:anywhere}.rubric-mark-table td{text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}.rubric-mark-table td.is-selected{background:#dff4ef;color:#075d4d;font-weight:800}.rubric-mark-table select{width:100%;min-width:98px;min-height:34px;padding:6px 20px 6px 6px;border:1px solid #b8c8d4;border-radius:6px;font-size:12px;background-color:white}.rubric-mark-table tbody tr:last-child>*{border-bottom:0}.rubric-row-details{margin-top:3px;font-weight:400;font-size:11px}.rubric-row-details summary{cursor:pointer;color:#347784}.rubric-row-details>div{min-width:150px;white-space:normal}.rubric-row-details p{font-size:12px;line-height:1.45}.rubric-mark-total{position:static;margin-top:10px;padding:10px 0 0}.rubric-mark-total input{width:78px}.rubric-mark-total label{font-size:13px}.rubric-mark-panel [data-rubric-progress]{font-size:12px;margin:6px 0}.rubric-mark-table .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}

.rubric-mark-table tbody th{font-size:11px;text-transform:none;letter-spacing:normal}.rubric-mark-table th,.rubric-mark-table td{padding:5px}.rubric-criterion-title{line-height:1.3}.rubric-row-details{margin-top:2px}.rubric-row-details summary{font-size:10px;line-height:1.3}.rubric-mark-table select{min-height:32px}.rubric-mark-panel .eyebrow{font-size:10px}.rubric-mark-head h4{font-size:18px;margin:4px 0}

.rubric-ai-reason{padding:8px;background:#e7f0ff;color:#254a75;border-radius:6px;text-transform:none}.rubric-mark-table select:disabled{opacity:.65;cursor:wait}

.rubric-ai-summary{font-size:11px;color:#254a75;margin:6px 0 10px}.rubric-ai-summary summary{cursor:pointer;font-weight:700}.rubric-ai-summary p{line-height:1.5}

.rubric-view-tabs{display:flex;gap:8px;margin:14px 0;flex-wrap:wrap}.rubric-view-tabs button{padding:10px 16px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#405967;font-size:13px}.rubric-view-tabs button[aria-selected=true]{background:#e0f2ee;color:#08664f;border-color:#11836a;font-weight:700}.rubric-question-page{padding:18px;background:#fff;border:1px solid var(--line);border-radius:12px}.rubric-question-page .prompt{white-space:pre-wrap}.rubric-question-page pre{white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%}.rubric-question-page img{max-width:100%;height:auto}.rubric-reference-scheme{border-top:1px solid var(--line);margin-top:20px;padding-top:12px}.rubric-review-pages>[hidden],.review-item>[role=tabpanel][hidden]{display:none!important}.preview-marking-answer>.question-head{margin-bottom:12px}.rubric-ai-summary>summary{color:#2459a0}

.preview-answer-mode{margin-bottom:12px}.preview-answer-mode button[aria-pressed=true]{background:#e0f2ee;border-color:#11836a;color:#08664f}.preview-marking-answer [hidden]{display:none!important}.rubric-marked-preview{min-width:0}.rubric-marked-preview .ink-tools button{font-size:12px;padding:6px 8px}.rubric-marked-preview .ink-scroll{max-width:100%}

/* Mark directly on the simulator code; Verify/Run and Serial Monitor remain interactive. */
.arduino-marking-ide .code-wrap[hidden]{display:none!important}.arduino-marking-code{max-height:520px;overflow:auto;background:#fff;scrollbar-gutter:stable}.arduino-marking-code .ink-scroll{margin:0;border:0;overflow:visible}.arduino-marking-code .ink-sheet{border:0;border-radius:0;background:#fff;box-shadow:none}.arduino-marking-code .ink-sheet>div{color:#263b3f}.arduino-marking-code .syntax-type{color:#00979d}.arduino-marking-code .syntax-keyword,.arduino-marking-code .syntax-directive{color:#728e00}.arduino-marking-code .syntax-function{color:#d35400}.arduino-marking-code .syntax-string,.arduino-marking-code .syntax-number{color:#005c5f}.arduino-marking-code .syntax-comment{color:#829092}.arduino-marking-ide [data-arduino-capture][hidden],.arduino-marking-ide .arduino-capture-note[hidden]{display:none!important}

.ink-criterion-field{display:flex;gap:6px;align-items:center;flex:1 1 100%;min-width:0;max-width:100%;font-weight:600}.ink-criterion-field select{min-width:0;max-width:100%;width:0;flex:1}.rubric-criterion-focus{display:block;text-align:left;padding:3px 0;border:0;background:transparent;color:inherit;border-radius:3px;font:inherit;font-weight:600;cursor:pointer}.rubric-criterion-focus[aria-pressed=true]{color:#007d70}.rubric-criterion-active>th,.rubric-criterion-active>td{background-color:#e3f4ef!important}.rubric-criterion-active>th{box-shadow:inset 3px 0 #008d79}[data-criterion-ink-count]{display:block;color:#597080;font-size:10px;font-weight:400;margin-top:2px}.ink-overlay .ink-criterion-dim{opacity:.15;pointer-events:none!important}.ink-overlay .ink-criterion-focused{opacity:1;filter:drop-shadow(0 0 2px rgba(198,32,48,.25))}

/* Compact rubric authoring: one description row per level. */
.practical-rubric-editor .rubric-criterion{padding:10px 12px;margin-top:10px;border-radius:8px}.rubric-criterion>.question-head{margin-bottom:6px;gap:8px;align-items:center}.rubric-criterion>.question-head h4{margin:0;font-size:13px}.rubric-criterion>.question-head .actions{gap:4px}.rubric-criterion>.question-head button{padding:4px 8px;min-height:28px;font-size:11px}.rubric-criterion-fields{grid-template-columns:minmax(0,1fr) 120px;gap:8px;margin-bottom:8px}.rubric-criterion-fields .field{margin:0;font-size:12px;gap:3px}.rubric-criterion-fields input{min-height:34px;padding:6px 8px;font-size:13px}.rubric-levels{grid-template-columns:1fr;gap:5px}.rubric-levels .rubric-level-row{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:8px;min-width:0;margin:0}.rubric-levels .rubric-level-custom{grid-template-columns:62px minmax(0,1fr) 76px}.rubric-level-row>span{grid-column:1;grid-row:1;font-size:12px}.rubric-level-row small{display:block;font-size:10px}.rubric-level-custom small{display:none}.rubric-levels .rubric-level-row textarea{grid-column:2;grid-row:1;width:100%;height:36px;min-height:36px;margin:0;padding:7px 8px;line-height:20px;font-size:12px;resize:vertical}.rubric-levels .rubric-level-row textarea:focus{height:76px}.rubric-level-row input[data-rubric-level-mark]{grid-column:3;grid-row:1;width:100%;min-width:0;height:36px;min-height:36px;padding:6px 8px;margin:0;font-size:12px;text-align:right}@media(max-width:650px){.practical-rubric-editor .rubric-criterion{padding:9px}.rubric-criterion-fields{grid-template-columns:minmax(0,1fr) 100px}.rubric-levels .rubric-level-row{grid-template-columns:68px minmax(0,1fr);gap:5px}.rubric-levels .rubric-level-custom{grid-template-columns:48px minmax(0,1fr) 60px}.rubric-criterion>.question-head{flex-wrap:wrap}.rubric-criterion>.question-head .actions{margin-left:auto}.rubric-level-row>span{font-size:11px}}
/* Flowchart scheme authoring and instructor reference */
.flow-scheme-tools{padding:14px;margin:10px 0 18px;border:1px solid #b8ded8;border-radius:12px;background:#f5fbfa}.flow-scheme-tools .field{min-width:200px;flex:1}.flow-scheme-dialog{width:min(1120px,94vw);max-width:94vw;max-height:92vh;overflow:auto;border:1px solid #cbdedc;border-radius:18px;padding:24px}.flow-scheme-dialog::backdrop{background:#142b3c99}.flow-scheme-dialog h2{margin-top:0}.flow-scheme-review{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:20px}.flow-scheme-canvas{max-height:65vh;overflow:auto;background:white;border:1px solid #d5e3e5;border-radius:12px;padding:8px}.flow-scheme-svg{display:block;width:100%;min-width:360px;height:auto}.flow-scheme-reference{margin:10px 0}.flow-scheme-node-row{display:grid;grid-template-columns:35px 95px minmax(0,1fr) 32px;gap:6px;align-items:center;margin:6px 0}.flow-scheme-node-row select,.flow-scheme-node-row textarea,.flow-scheme-edge-row input,.flow-scheme-edge-row select{width:100%;min-width:0;padding:6px;font-size:12px}.flow-scheme-node-row button,.flow-scheme-edge-row button{padding:4px}.flow-scheme-edge-row{display:grid;grid-template-columns:65px 16px 65px minmax(0,1fr) 32px;gap:6px;align-items:center;margin:6px 0}.flow-scheme-dialog [data-flow-error]{color:#b42318}.flow-scheme-dialog>.actions{position:sticky;bottom:-24px;background:white;padding:14px 0;margin:12px 0 0}.flow-scheme-dialog [data-flow-notes]{width:100%}@media(max-width:760px){.flow-scheme-review{grid-template-columns:1fr}.flow-scheme-dialog{padding:16px}.flow-scheme-canvas{max-height:42vh}.flow-scheme-node-row{grid-template-columns:30px 80px minmax(0,1fr) 28px}}
/* Results release visibility and class reminders */
.results-release-panel{margin:16px 0}.results-release-panel .question-head{align-items:flex-start;gap:12px}.results-release-panel h2{margin:0 0 4px}.results-release-panel .question-head p{margin:0}.release-indicators{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.release-indicator{display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:15px;border-radius:12px;border:1px solid #d8e4e7;text-align:left}.release-indicator strong{font-size:30px;line-height:1.1}.release-indicator small{font-weight:400;font-size:11px}.release-indicator-held{background:#fff3f3;color:#a72537;border-color:#f0c8ce}.release-indicator-scheduled{background:#fff8e8;color:#94620b;border-color:#edd8a8}.release-indicator-released{background:#eaf9f2;color:#12694d;border-color:#b9dfce}.release-indicator[aria-expanded=true]{outline:2px solid currentColor;outline-offset:2px}.release-reminder{border-left:3px solid #c74654;padding:8px 12px;background:#fff8f8;border-radius:4px;font-size:14px}.release-result-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 0;border-top:1px solid #e0e9ed}.release-result-row p{margin:4px 0;font-size:13px}.release-result-row small{font-size:12px;color:#61778c}.release-result-row .actions{flex-shrink:0}.release-status{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 8px;font-size:11px;line-height:1.3;font-weight:650;white-space:nowrap}.release-status-held{color:#a72537;background:#fff0f1}.release-status-scheduled{color:#8e5b06;background:#fff5d9}.release-status-released{color:#12694d;background:#ddf4e9}.release-status-waiting{color:#5b7085;background:#edf2f6}.assessment-release-status{margin-top:9px;display:grid;gap:8px;min-width:200px}.assessment-release-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 0;border-top:1px solid #e2e9ef}.assessment-release-row>strong{font-size:12px}.assessment-release-row>small{flex-basis:100%;font-size:11px;color:#61778c}.assessment-release-row>button{padding:5px 8px;font-size:11px}.release-empty-note{font-size:12px;margin-bottom:0}.dashboard-category>.results-release-panel{box-shadow:none;border:1px solid #dbe7eb}@media(max-width:620px){.release-indicators{gap:7px}.release-indicator{padding:10px 8px}.release-indicator>span{font-size:11px}.release-indicator strong{font-size:25px}.release-indicator small{font-size:10px}.release-result-row{align-items:flex-start;flex-direction:column}.release-result-row .actions{width:100%;flex-wrap:wrap}.results-release-panel .question-head{flex-wrap:wrap}}
.release-all-dialog{width:min(680px,94vw);max-width:94vw;max-height:90vh;overflow:auto;border:1px solid #d4e1e7;border-radius:16px;padding:24px}.release-all-dialog::backdrop{background:#18384d99}.release-all-list{max-height:38vh;overflow:auto;border:1px solid #dce7ed;border-radius:10px;margin:16px 0}.release-all-list>div{padding:11px 14px;border-bottom:1px solid #e4ebef}.release-all-list>div:last-child{border:0}.release-all-list span,.release-all-list small{display:block;font-size:12px;color:#60768a;margin-top:4px}.release-all-dialog [data-bulk-message]{white-space:pre-wrap}.results-release-panel .question-head>.actions{flex-wrap:wrap}

/* Compact summary of the active Results Release filters. */
.results-release-panel .release-filter-scope{display:flex;flex-wrap:wrap;gap:3px 18px;font-size:13px;line-height:1.5;margin:3px 0}.release-filter-scope>div{min-width:0;overflow-wrap:anywhere}

/* Smaller Results Release status cards. */
.results-release-panel .release-indicators{gap:10px}.results-release-panel .release-indicator{padding:10px 12px;gap:3px;border-radius:10px}.results-release-panel .release-indicator>span{font-size:13px}.results-release-panel .release-indicator strong{font-size:25px}.results-release-panel .release-indicator small{font-size:10px}@media(max-width:620px){.results-release-panel .release-indicators{gap:7px}.results-release-panel .release-indicator{padding:8px;gap:3px}.results-release-panel .release-indicator>span{font-size:11px}.results-release-panel .release-indicator strong{font-size:22px}}

/* Compact staff Dashboard: scoped to its profile root so other pages retain their sizes. */
#app:has(> #staff-dashboard-profile) > .heading{margin-bottom:16px;gap:16px}
#app:has(> #staff-dashboard-profile) > .heading h1{font-size:26px}
#app:has(> #staff-dashboard-profile) > .heading .muted{font-size:12px;line-height:1.5;margin:4px 0}
#app:has(> #staff-dashboard-profile) > #staff-dashboard-profile{padding:18px;gap:18px;margin-bottom:14px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .student-profile-card{gap:18px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .dashboard-avatar{width:104px!important;height:138px!important;min-width:104px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .student-profile-card h2{font-size:20px;margin-bottom:6px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .student-profile-card p{font-size:13px;margin-bottom:6px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .dashboard-profile-details{gap:8px 22px;margin-top:8px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .dashboard-profile-details dt{font-size:12px;margin-bottom:3px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .dashboard-profile-details dd{font-size:14px}
#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .badge{margin-top:8px;padding:5px 7px;font-size:11px}
#app:has(> #staff-dashboard-profile) .dashboard-profile-actions{gap:8px}
#app:has(> #staff-dashboard-profile) > .dashboard-category{padding:16px;margin:14px 0}
#app:has(> #staff-dashboard-profile) .dashboard-category-heading{margin-bottom:12px;gap:10px}
#app:has(> #staff-dashboard-profile) .dashboard-category-heading h2{font-size:18px}
#app:has(> #staff-dashboard-profile) > .dashboard-filter-panel{padding:12px 16px}
#app:has(> #staff-dashboard-profile) .dashboard-filter-panel .dashboard-category-heading{margin-bottom:8px}
#app:has(> #staff-dashboard-profile) .dashboard-filter-panel h2{font-size:14px}
#app:has(> #staff-dashboard-profile) .dashboard-filters{gap:12px}
#app:has(> #staff-dashboard-profile) .dashboard-filters .field{margin-bottom:0;font-size:13px}
#app:has(> #staff-dashboard-profile) .dashboard-filters select{padding:8px 10px;margin-top:5px;min-height:38px;font-size:13px}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-stats{gap:10px;margin-bottom:12px}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-stat{padding:10px 12px;gap:5px}
#app:has(> #staff-dashboard-profile) .dashboard-stat>span{font-size:13px}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-stat strong{font-size:25px;line-height:1.15}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-stat small{font-size:11px;line-height:1.4}
#app:has(> #staff-dashboard-profile) .dashboard-category button, #app:has(> #staff-dashboard-profile) .dashboard-profile-actions button{padding:8px 11px;min-height:36px;font-size:13px}
#app:has(> #staff-dashboard-profile) .results-release-panel{padding:14px;margin:12px 0}
#app:has(> #staff-dashboard-profile) .results-release-panel h2{font-size:18px}
#app:has(> #staff-dashboard-profile) .results-release-panel .question-head{padding-bottom:10px;margin-bottom:12px}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-active{padding:10px 0;gap:12px}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-results>div{padding:8px 10px}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-results strong{font-size:22px;margin-top:4px}
#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-results span{font-size:12px}
#app:has(> #staff-dashboard-profile) .dashboard-category #dashboard-live-control{gap:16px}
#app:has(> #staff-dashboard-profile) .dashboard-category .live-control-card+.live-control-card{padding-left:16px}
#app:has(> #staff-dashboard-profile) .dashboard-category .live-control-card h2, #app:has(> #staff-dashboard-profile) .dashboard-category-communication h2{font-size:16px}
#app:has(> #staff-dashboard-profile) .live-control-card .portal-insight-cards{gap:8px;margin-bottom:10px}
#app:has(> #staff-dashboard-profile) .live-control-card .portal-insight-card{padding:9px;gap:5px}
#app:has(> #staff-dashboard-profile) .live-control-card .portal-insight-card strong{font-size:22px}
#app:has(> #staff-dashboard-profile) .live-control-card .portal-insight-icon{width:26px;height:26px}
#app:has(> #staff-dashboard-profile) .live-session-tile{padding:9px 0;gap:8px;font-size:13px}
#app:has(> #staff-dashboard-profile) .class-overview-grid{gap:12px;margin-top:12px}
#app:has(> #staff-dashboard-profile) .class-overview-heading{padding:10px;gap:8px}
#app:has(> #staff-dashboard-profile) .class-overview-icon{width:34px;height:34px;font-size:13px;border-radius:9px}
#app:has(> #staff-dashboard-profile) .class-overview-heading h3{font-size:15px}
#app:has(> #staff-dashboard-profile) .class-overview-heading p{font-size:11px;line-height:1.4}
#app:has(> #staff-dashboard-profile) .class-overview-stats{padding:9px;gap:5px}
#app:has(> #staff-dashboard-profile) .class-overview-stat{padding:8px 4px}
#app:has(> #staff-dashboard-profile) .class-overview-stat strong{font-size:20px}
#app:has(> #staff-dashboard-profile) .class-overview-stat span{font-size:10px;margin-top:4px}
#app:has(> #staff-dashboard-profile) .class-assessments{padding:0 9px 9px}
#app:has(> #staff-dashboard-profile) .class-assessment{padding:9px 0;margin-top:6px}
#app:has(> #staff-dashboard-profile) .class-assessment-heading{gap:8px}
#app:has(> #staff-dashboard-profile) .class-submission-ring{width:44px;height:44px}
#app:has(> #staff-dashboard-profile) .class-assessment-heading h4{font-size:13px;line-height:1.4}
#app:has(> #staff-dashboard-profile) .class-assessment-heading p{font-size:12px;margin:4px 0}
#app:has(> #staff-dashboard-profile) .class-count-chip{padding:4px 6px;font-size:10px}
#app:has(> #staff-dashboard-profile) .dashboard-missing-students{font-size:12px}
#app:has(> #staff-dashboard-profile) .dashboard-category-communication{gap:16px}
#app:has(> #staff-dashboard-profile) .dashboard-category-communication>section+section{padding-left:16px!important}
#app:has(> #staff-dashboard-profile) .review-summary-grid{margin:10px 0;gap:8px}
#app:has(> #staff-dashboard-profile) .dashboard-category-communication .review-summary-card{padding:8px;gap:8px}
#app:has(> #staff-dashboard-profile) .review-summary-icon{width:30px;height:30px;border-radius:9px}
#app:has(> #staff-dashboard-profile) .review-summary-icon svg{width:20px;height:20px}
#app:has(> #staff-dashboard-profile) .review-summary-card strong{font-size:22px}
#app:has(> #staff-dashboard-profile) .review-summary-card span:not(.review-summary-icon){font-size:11px;margin-top:3px}
#app:has(> #staff-dashboard-profile) .dashboard-category-communication .portal-insight-card strong{font-size:22px}
#app:has(> #staff-dashboard-profile) .notification-compose{padding:10px;margin:10px 0;font-size:13px}
#app:has(> #staff-dashboard-profile) .notification-item{padding:12px 0}
#app:has(> #staff-dashboard-profile) .notification-item h3{font-size:15px}
#app:has(> #staff-dashboard-profile) .notification-meta{font-size:12px}
#app:has(> #staff-dashboard-profile) .notification-message{font-size:13px;line-height:1.6;margin:10px 0}
#app:has(> #staff-dashboard-profile) .dashboard-category-details{margin-top:8px;padding-top:8px}
#app:has(> #staff-dashboard-profile) .dashboard-category-details>summary{padding:5px 0;font-size:12px}
#app:has(> #staff-dashboard-profile) .dashboard-category-analytics{gap:16px;padding:12px 0}
#app:has(> #staff-dashboard-profile) .dashboard-category-analytics h2{font-size:16px}
#app:has(> #staff-dashboard-profile) .dashboard-donut svg{width:160px}
#app:has(> #staff-dashboard-profile) .dashboard-legend li{margin:10px 0;font-size:13px}
#app:has(> #staff-dashboard-profile) .dashboard-bars{margin:14px 0}
#app:has(> #staff-dashboard-profile) .dashboard-bar-row{margin:10px 0;font-size:12px}
#app:has(> #staff-dashboard-profile) .dashboard-recent td, #app:has(> #staff-dashboard-profile) .dashboard-recent th{padding:10px;font-size:12px}
@media(max-width:900px){#app:has(> #staff-dashboard-profile) .dashboard-category .live-control-card+.live-control-card{padding:14px 0 0}#app:has(> #staff-dashboard-profile) .dashboard-category-communication>section+section{padding:14px 0 0!important}}
@media(max-width:600px){#app:has(> #staff-dashboard-profile)>.dashboard-category{padding:14px;margin:12px 0}#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .dashboard-avatar{width:90px!important;height:120px!important;min-width:90px}#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .student-profile-card{gap:12px}#app:has(> #staff-dashboard-profile) .staff-dashboard-profile .student-profile-card h2{font-size:18px}#app:has(> #staff-dashboard-profile) .dashboard-category button,#app:has(> #staff-dashboard-profile) .dashboard-profile-actions button{min-height:40px}#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-stat{padding:10px;min-width:0}#app:has(> #staff-dashboard-profile) .dashboard-category .dashboard-stat strong{font-size:23px}#app:has(> #staff-dashboard-profile) .dashboard-category-analytics{grid-template-columns:1fr}}

@media(max-width:600px){#app:has(> #staff-dashboard-profile) .dashboard-profile-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;justify-self:stretch}#app:has(> #staff-dashboard-profile) .dashboard-profile-actions button{white-space:normal;min-width:0;font-size:12px;padding:8px}}

/* Consistent compact spacing for Classes, Student, Assessment and Marking staff pages. */
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) > .heading{margin-bottom:16px;gap:16px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) > .heading h1{font-size:26px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) > .heading .muted{font-size:12px;line-height:1.5;margin:4px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) > .panel{padding:16px;margin-bottom:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) > .panel>h2, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) > .panel>.question-head h2{font-size:18px;margin-bottom:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .question-head{gap:12px;padding-bottom:12px;margin-bottom:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .page-tools{gap:8px;margin-bottom:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .actions{gap:8px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .page-tools button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-tabs button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-row-actions button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .class-row-actions button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #students-filter-form>button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #students-first, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #students-next, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-scripts-panel td button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #student-edit-form>.actions button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #course-form>button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-edit], #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-preview], #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-reset], #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-delete], #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-approve]{padding:8px 11px;min-height:36px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .field{font-size:13px;margin-bottom:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .field input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]), #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .field select{padding:8px 10px;min-height:38px;margin-top:5px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .bank-fields, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .students-filters, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-filters{gap:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-filters{margin:12px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-filters .field{margin-bottom:10px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-filters .field:first-child{min-width:210px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-tabs{margin:12px 0;gap:8px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-row-actions{gap:6px;min-width:150px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .class-row-actions{gap:6px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-table td, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-table th, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-scripts-panel td, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-scripts-panel th{padding:10px;line-height:1.5;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-table th, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-scripts-panel th{font-size:11px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .classes-table code{font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-release-status{margin-top:7px;gap:5px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-release-row{padding:5px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-release-row button{min-height:30px;padding:5px 8px;font-size:11px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-class-tag{padding:4px 7px;font-size:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .class-status-filter{max-width:280px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .bank-question{padding:14px;margin:18px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .class-editor{margin-top:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-insights{margin:14px 0;padding:14px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-insights>h2{font-size:18px;margin-bottom:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-grid{gap:10px;margin-top:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-card{padding:11px;border-radius:10px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-card-heading{gap:8px;margin-bottom:10px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-card-heading h3{font-size:13px;margin-bottom:4px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-card-heading p{font-size:11px;line-height:1.4}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-ring{width:46px;height:46px;flex-basis:46px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-chips{gap:5px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-chips .class-count-chip{font-size:10px;padding:4px 6px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-card h4{margin:12px 0 8px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-missing li{padding:8px 0;gap:4px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-missing strong{font-size:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insights{margin-bottom:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insight-cards{gap:10px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insight-card{padding:10px 12px;gap:8px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insight-card strong{font-size:25px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insight-card div>span{font-size:11px;margin-top:3px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insight-icon{width:30px;height:30px;border-radius:9px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insight-icon::before{width:18px;height:18px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-summary-grid{gap:10px;margin:12px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-summary-card{padding:10px;gap:8px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-summary-card strong{font-size:25px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-summary-icon{width:30px;height:30px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-summary-icon svg{width:20px;height:20px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .marking-submission-status{padding:10px 12px;margin:4px 0 14px;gap:8px 18px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-filter-panel+#marking-overview, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-participation, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-scripts-panel{margin-top:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-participation{padding-top:16px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-overview .portal-insight-cards{margin-top:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-request-notice{padding:10px 0;gap:10px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .student-list-identity{gap:9px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .student-avatar.small{width:40px;height:40px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .bank-active-badge, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-table .badge{font-size:11px;padding:4px 7px}
#app:has(#students-filter-form)> .panel> .table-wrap td{padding:10px;font-size:13px;line-height:1.5}#app:has(#students-filter-form)> .panel> .table-wrap th{padding:10px;font-size:11px}
@media(max-width:600px){#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled)>.panel{padding:14px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-filters .field:first-child{min-width:100%}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .portal-insight-cards{grid-template-columns:repeat(2,minmax(0,1fr))}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .page-tools button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-tabs button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .assessment-row-actions button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .class-row-actions button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-scripts-panel td button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-edit],#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-preview],#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-reset],#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) [data-student-delete]{min-height:40px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-card{padding:11px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .participation-card-heading p{font-size:12px}}

#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .question-head>button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .question-head>.actions button{padding:8px 11px;min-height:36px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-filters .field{margin-bottom:0}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .marking-name-search{margin-bottom:10px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #marking-filter-panel>p.muted{font-size:13px;margin:8px 0;line-height:1.5}
@media(max-width:600px){#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .question-head>button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .question-head>.actions button{min-height:40px}}

@media(max-width:600px){#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-filters,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .students-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .review-filters .field,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .students-filters .field{min-width:0}}

/* Attendance, Result and Settings share the compact staff-page scale. Attendance grid and QR remain unchanged. */
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-tabs{gap:8px;margin-bottom:16px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-tabs button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-panel>.actions button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-heading button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-tools button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-pages button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-pagination button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel form>button, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel .actions button{padding:8px 11px;min-height:36px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-panel, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-panel{margin-top:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-panel .portal-insight-cards{margin:10px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-panel .question-head h2{font-size:18px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-heading{gap:12px;margin-bottom:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-heading h2{font-size:20px;margin:3px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-heading p{font-size:12px;margin:4px 0;line-height:1.5}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-tools{gap:8px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-pages{gap:8px;margin:12px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-clock-panel{padding:14px;gap:14px;margin:14px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-excuse-item{padding:10px 0;gap:10px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-semester-summary{padding:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-semester-summary h3{font-size:16px;margin-bottom:10px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-summary-hours{font-size:24px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-summary-ring{width:76px;height:76px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-summary-ring strong{font-size:19px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-panel .table-wrap>table:not(.attendance-web-sheet) td, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-panel .table-wrap>table:not(.attendance-web-sheet) th{padding:10px;font-size:13px;line-height:1.5}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-class-filter{max-width:600px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-panel .portal-insight-cards{margin-bottom:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-grade-legend{gap:8px 18px;margin-bottom:12px;font-size:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-grade-card{padding:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-grade-card h3{font-size:15px;margin-bottom:8px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-table td, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-table th{padding:10px;font-size:13px;line-height:1.5}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-table th{min-width:130px;font-size:11px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-table td small, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-table th small{font-size:11px;margin-top:3px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-table th:nth-child(2){min-width:190px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-table th:first-child{min-width:40px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-pagination{margin-top:12px;gap:8px;font-size:13px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel{margin-top:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel h2, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary h2{font-size:18px;margin-bottom:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel p{font-size:13px;line-height:1.6}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel .field{margin-bottom:12px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel td, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel th, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary td, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary th{padding:10px;font-size:13px;line-height:1.5}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel th, #app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary th{font-size:11px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary>.panel{padding:16px;margin-bottom:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stats{gap:12px;margin-bottom:14px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stat{padding:12px;gap:6px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stat strong{font-size:25px;overflow-wrap:anywhere}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stat .ai-cost-myr{font-size:21px}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stat small{font-size:11px;line-height:1.5}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .logo-preview{min-height:110px;padding:14px;margin:12px 0}
#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .logo-preview img{max-height:100px}
@media(max-width:600px){#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-tabs button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-panel>.actions button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-heading button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-tools button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-pages button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-pagination button,#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .settings-panel form>button{min-height:40px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary>.panel{padding:14px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-web-heading h2{font-size:18px}}

#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .question-head{padding-bottom:10px;margin-bottom:12px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .question-head p{font-size:13px;margin:4px 0}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stat{gap:5px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stat small{margin-top:0}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) #ai-usage-summary .dashboard-stat .ai-cost-myr{margin-top:6px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-excuse-item button{padding:8px 11px;min-height:36px;font-size:13px}

@media(max-width:600px){#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-grade-combined{overflow-x:auto;padding-bottom:6px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .result-combined-svg{min-width:620px}#app:has(> .heading :is(#manage-courses,#manage-students,#manage-editor,#manage-answers,#manage-attendance,#manage-results,#manage-settings):disabled) .attendance-excuse-item button{min-height:40px}}

/* Unified pending work and Result release controls. */
.needs-attention-panel .question-head{padding-bottom:10px;margin-bottom:12px;align-items:flex-start;gap:12px}.needs-attention-panel h2{font-size:18px;margin:0 0 4px}.needs-attention-panel .release-filter-scope{display:flex;flex-wrap:wrap;gap:3px 18px;font-size:13px;line-height:1.5}.attention-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.attention-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px!important;border-radius:10px;background:#f5f8fc;text-align:left}.attention-card>span{font-size:13px}.attention-card strong{font-size:25px;line-height:1.2;color:#153447}.attention-card small{font-size:11px;font-weight:400;color:#60768a}.attention-card.attention-pending{background:#fff7e8;border-color:#edd7a8}.attention-card.attention-pending strong{color:#986510}.dashboard-category-communication:has(>section:only-child){grid-template-columns:1fr}.dashboard-category-communication>section:only-child{width:100%}#result-results-release{scroll-margin-top:20px}#result-results-release .release-result-row:first-child{margin-top:12px}.attention-card:focus-visible{outline:3px solid #2674cf;outline-offset:2px}@media(max-width:600px){.needs-attention-panel .question-head{flex-wrap:wrap}.attention-cards{gap:7px}.attention-card{padding:10px 8px!important}.attention-card>span{font-size:12px}.attention-card strong{font-size:23px}.needs-attention-panel .release-filter-scope{font-size:12px;gap:3px 12px}}

/* A single Assessment workspace, with compact type filters and a creation chooser. */
.assessment-tabs{flex-wrap:wrap;gap:6px}.assessment-create-dialog{width:min(620px,calc(100vw - 32px));max-height:90dvh;overflow:auto}.assessment-kind-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.assessment-kind-grid button{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:6px;padding:16px;white-space:normal}.assessment-kind-grid small{font-weight:400;color:#60768a;line-height:1.4}@media(max-width:460px){.assessment-kind-grid{grid-template-columns:1fr}.assessment-tabs button{flex:1 1 40%;white-space:normal}}

.pdf-submission-viewer{display:block;width:100%;height:680px;min-height:450px;border:1px solid #dbe3eb;border-radius:10px;background:#f4f7fb}.pdf-file-current{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;overflow-wrap:anywhere}.pdf-file-current strong{flex:1;min-width:0}.pdf-file-current small{color:#60768a}.pdf-upload-editor input[type=file]{max-width:100%}@media(max-width:700px){.pdf-submission-viewer{height:500px}}

.pdf-document-view{border:1px solid #cddde3;border-radius:10px;overflow:hidden}.pdf-document-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px;background:#f1f7f8}.pdf-document-toolbar button,.pdf-document-toolbar select{padding:5px 8px;font-size:12px}.pdf-document-pages{overflow:auto;max-height:740px;background:#e4eaee;padding:12px}.pdf-document-pages canvas{display:block;background:white;box-shadow:0 2px 8px #20384522}.pdf-document-pages [data-pdf-error]:empty{display:none}

.new-session-dialog{width:min(680px,calc(100vw - 32px));max-height:90vh;overflow:auto}.new-session-assessments{max-height:260px;overflow:auto;border:1px solid #d8e4e9;border-radius:10px;margin:8px 0}.new-session-assessment{display:flex;gap:10px;align-items:center;padding:9px 12px;border-bottom:1px solid #e4edf0}.new-session-assessment:last-child{border-bottom:0}.new-session-assessment small{display:block;color:#63798a}.new-session-assessment input,.new-session-select-all input{width:auto;margin:0}.new-session-select-all{display:flex;align-items:center;gap:8px}.new-session-dialog .bank-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.new-session-dialog .bank-fields>.field{width:auto;min-width:0}@media(max-width:540px){.new-session-dialog .bank-fields{grid-template-columns:1fr}}

/* Compact, on-demand storage reporting. */
.storage-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.storage-heading h2,.storage-heading p{margin:0 0 6px}.storage-filter{max-width:340px;margin:12px 0}.storage-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 10px}.storage-card{display:flex;gap:12px;align-items:center;padding:14px;border:1px solid #dae5eb;border-radius:12px;background:#f5f9fc}.storage-card strong{display:block;font-size:22px;color:#12354a}.storage-card small{display:block;color:#516779}.storage-icon{font-size:26px;color:#087f8c}.storage-distribution{display:flex;gap:2px;height:10px;overflow:hidden;border-radius:8px;background:#edf1f5;margin:0 0 14px}.storage-segment{min-width:0;flex-basis:0}.storage-segment.pdf{background:#d66b85}.storage-segment.image{background:#3496b1}.storage-segment.other{background:#8f7abd}.storage-segment.data{background:#e5ae46}.storage-table td{white-space:nowrap}.storage-table td:first-child{white-space:normal;min-width:160px}.storage-note{font-size:12px;margin:14px 0 0;max-width:1000px}#storage-status{font-size:12px;color:#52677c;margin:8px 0}@media(max-width:700px){.storage-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.storage-heading{align-items:flex-start}.storage-card{padding:10px}.storage-card strong{font-size:19px}}

.storage-card.pdf .storage-icon{color:#c45672}.storage-card.image .storage-icon{color:#23829b}.storage-card.other .storage-icon{color:#8066ad}.storage-card.data .storage-icon{color:#b58021}

.storage-overall{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.storage-total-card,.storage-capacity-card{border:1px solid #d5e5e9;border-radius:14px;padding:18px;background:#f4fafb}.storage-total-card{background:linear-gradient(120deg,#e9f8f5,#f4f8ff)}.storage-overall-label{font-size:11px;font-weight:700;color:#526c7f;letter-spacing:.04em;text-transform:uppercase}.storage-total-card h3{font-size:14px;margin:8px 0 4px}.storage-total-card>[data-storage-total]{display:block;font-size:32px;line-height:1.2;color:#126b70}.storage-total-parts{display:flex;gap:18px;flex-wrap:wrap;margin:14px 0 8px;font-size:12px}.storage-total-parts span{display:flex;align-items:center;gap:5px}.storage-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#3396b1}.storage-dot.database{background:#d9a347}.storage-overall small{color:#587083;font-size:11px}.storage-capacity-body{display:flex;align-items:center;gap:20px;margin:10px 0}.storage-capacity-ring{width:88px;height:88px;border-radius:50%;background:conic-gradient(#d9a347 0 var(--storage-used),#c8ece2 var(--storage-used) 100%);display:grid;place-items:center;flex-shrink:0}.storage-capacity-ring>span{width:68px;height:68px;border-radius:50%;background:#f4fafb;display:flex;flex-direction:column;align-items:center;justify-content:center}.storage-capacity-ring strong{font-size:17px;color:#126b70}.storage-capacity-values{display:flex;gap:24px;flex-wrap:wrap}.storage-capacity-values small,.storage-capacity-values strong{display:block}.storage-capacity-values strong{font-size:23px;color:#173b50}.storage-capacity-values>div:last-child strong{color:#137e66}@media(max-width:760px){.storage-overall{grid-template-columns:1fr}.storage-total-card,.storage-capacity-card{padding:14px}}@media(max-width:380px){.storage-capacity-body{gap:10px}.storage-capacity-values{gap:10px}.storage-capacity-values strong{font-size:19px}}

.storage-auto-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:#16745d;background:#e9f7f1;border:1px solid #d0e9df;border-radius:20px;padding:3px 8px}.storage-auto-badge:before{content:"";width:6px;height:6px;background:#28a77b;border-radius:50%}

/* Shared infographic cards: the soft gradient treatment used by Storage Usage. */
:root{--info-mint:linear-gradient(120deg,#e9f8f5,#f4f8ff);--info-blue:linear-gradient(120deg,#eaf2ff,#f7faff);--info-green:linear-gradient(120deg,#e5f6ee,#f4fbf8);--info-amber:linear-gradient(120deg,#fff2d9,#fffbf2);--info-rose:linear-gradient(120deg,#ffebee,#fff7f8);--info-purple:linear-gradient(120deg,#f0eafb,#faf7ff);--info-border:#d5e5e9;--info-shadow:0 3px 12px rgba(24,67,85,.045)}
@media screen{
 :is(#app,dialog) :is(.portal-insight-card,.dashboard-stat,.student-result-stats>div,.dashboard-results>div,.review-summary-card,.session-counts>div,.attention-card,.release-indicator,.class-overview-stat,.storage-card,.lesson-stats>div){background:var(--info-mint);border:1px solid var(--info-border);border-radius:12px;box-shadow:var(--info-shadow)}
 :is(#app,dialog) :is(.portal-insight-card.blue,.storage-card.image),:is(#app,dialog) .dashboard-stats>.dashboard-stat:nth-child(4n+2),:is(#app,dialog) .review-summary-card:first-child,:is(#app,dialog) .session-counts>div:nth-child(6n+2){background:var(--info-blue);border-color:#d4e2f5}
 :is(#app,dialog) :is(.portal-insight-card.green,.class-overview-stat.joined,.release-indicator-released),:is(#app,dialog) .dashboard-stats>.dashboard-stat:nth-child(4n),:is(#app,dialog) .review-summary-card:nth-child(3){background:var(--info-green);border-color:#cce7db}
 :is(#app,dialog) :is(.portal-insight-card.amber,.portal-insight-card.orange,.class-overview-stat.outstanding,.attention-card.attention-pending,.release-indicator-scheduled,.storage-card.data),:is(#app,dialog) .dashboard-stats>.dashboard-stat:nth-child(4n+3),:is(#app,dialog) .review-summary-card:nth-child(2){background:var(--info-amber);border-color:#ecdab5}
 :is(#app,dialog) :is(.portal-insight-card.red,.portal-insight-card.rose,.release-indicator-held,.storage-card.pdf){background:var(--info-rose);border-color:#edcfd6}
 :is(#app,dialog) :is(.portal-insight-card.purple,.storage-card.other),:is(#app,dialog) .review-summary-card:nth-child(4),:is(#app,dialog) .session-counts>div:nth-child(6n+4){background:var(--info-purple);border-color:#ded5ee}
 :is(#app,dialog) :is(.class-overview-card,.participation-card,.attendance-semester-summary,.exam-control-overview,.active-test-card,.dashboard-active,#result-graph){background:linear-gradient(120deg,#f0faf7,#f5f8ff);border:1px solid var(--info-border);border-radius:14px;box-shadow:var(--info-shadow)}
 :is(#app,dialog) .dashboard-active,#app:has(#staff-dashboard-profile) .dashboard-category .dashboard-active{padding:12px}
 :is(#app,dialog) .marking-submission-status{background:var(--info-mint);border:1px solid var(--info-border);border-radius:12px;box-shadow:var(--info-shadow)}
 :is(#app,dialog) .class-overview-heading{background:linear-gradient(120deg,#e9f8f5,#f0f5fd)}
 :is(#app,dialog) .class-assessment{background:rgba(255,255,255,.74)}
 :is(#app,dialog) :is(.portal-insight-icon,.review-summary-icon){box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}
 :is(#app,dialog) :is(.attention-card,.release-indicator):focus-visible{outline:3px solid #2674cf;outline-offset:3px}
}

/* Student home uses the same gradient card family as staff dashboards. */
@media screen{
 .student-account-view #app>:is(.dashboard-profile-card,#student-my-classes,#student-attendance,#student-notifications,#student-assessment-history){border:1px solid var(--info-border);border-radius:14px;box-shadow:var(--info-shadow);background:var(--info-mint)}
 .student-account-view #app>#student-my-classes{background:linear-gradient(120deg,#edf8f5,#f7faff)}
 .student-account-view #app>#student-attendance{background:linear-gradient(120deg,#edf5ff,#f4fbf8)}
 .student-account-view #app>#student-notifications{background:linear-gradient(120deg,#f3eefb,#f8fbff);border-color:#e0d9ee}
 .student-account-view #app>#student-assessment-history{background:linear-gradient(120deg,#eef6ff,#f7fbfa)}
 .student-account-view #app .student-result-stats>div:nth-child(2){background:var(--info-green);border-color:#cce7db}
 .student-account-view #app .student-result-stats>div:nth-child(3){background:var(--info-amber);border-color:#ecdab5}
 .student-account-view #app :is(#student-my-classes,#student-attendance,#student-notifications,#student-assessment-history) :is(table,.table-wrap,[data-notice-list]>article){background:rgba(255,255,255,.8)}
}

/* Responsive student home: contain long profile data and keep controls touch-friendly. */
@media screen{
 .student-account-view #app>.dashboard-profile-card .student-profile-card>div:last-child{min-width:0;flex:1 1 220px}
 .student-account-view #app>.dashboard-profile-card :is(h2,p,dd){overflow-wrap:anywhere}
 .student-account-view #app>:is(#student-my-classes,#student-attendance,#student-notifications,#student-assessment-history) .question-head{flex-wrap:wrap;gap:12px;align-items:center}
 .student-account-view #app>:is(#student-my-classes,#student-attendance,#student-notifications,#student-assessment-history) .question-head :is(h2,h3){margin:0;min-width:0}
 .student-account-view #app :is(.student-result-stats,.portal-insight-cards)>div{min-width:0}
}
@media screen and (max-width:900px){
 .student-account-view #app>:is(.dashboard-profile-card,#student-my-classes,#student-attendance,#student-notifications,#student-assessment-history){padding:18px;margin-bottom:16px}
 .student-account-view #app>.dashboard-profile-card .student-profile-card{gap:16px}
 .student-account-view #app>.dashboard-profile-card .dashboard-profile-details{gap:12px 20px}
 .student-account-view #student-attendance .portal-insight-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .student-account-view #app>section button{min-height:44px;max-width:100%;white-space:normal}
}
@media screen and (max-width:600px){
 .student-account-view main{padding:16px 12px}
 .student-account-view #app>:is(.dashboard-profile-card,#student-my-classes,#student-attendance,#student-notifications,#student-assessment-history){padding:16px;margin-bottom:14px}
 .student-account-view #app>.dashboard-profile-card h1{margin-bottom:18px}
 .student-account-view #app>.dashboard-profile-card .student-profile-card h2{font-size:20px;line-height:1.35}
 .student-account-view #app>.dashboard-profile-card .dashboard-profile-details{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
 .student-account-view #app>.dashboard-profile-card .dashboard-profile-details div{min-width:0}
 .student-account-view #app .dashboard-profile-actions{margin-top:16px;gap:8px}
 .student-account-view #app .dashboard-profile-actions button{flex:1 1 120px}
 .student-account-view #app .student-result-stats{gap:8px;margin:14px 0}
 .student-account-view #app .student-result-stats>div{padding:10px 8px}
 .student-account-view #app .student-result-stats span{font-size:12px;line-height:1.4;overflow-wrap:anywhere}
 .student-account-view #app .student-result-stats strong{font-size:23px}
 .student-account-view #app :is(.student-classes-table,.student-history-table){display:block;min-width:0;width:100%;background:transparent}
 .student-account-view #app :is(.student-classes-table,.student-history-table) thead{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%)}
 .student-account-view #app :is(.student-classes-table,.student-history-table) tbody{display:grid;gap:12px}
 .student-account-view #app :is(.student-classes-table,.student-history-table) tr{display:block;border:1px solid var(--info-border);border-radius:10px;background:rgba(255,255,255,.85);padding:10px 12px}
 .student-account-view #app :is(.student-classes-table,.student-history-table) td{display:block;min-width:0;width:auto;border:0;padding:6px 0;font-size:13px;line-height:1.5;overflow-wrap:anywhere;white-space:normal}
 .student-account-view #app :is(.student-classes-table,.student-history-table) td[data-label]::before{content:attr(data-label);display:block;color:#60768a;font-size:11px;font-weight:600;margin-bottom:2px}
 .student-account-view #app .student-history-action:empty{display:none}
 .student-account-view #app .student-history-action button{width:100%}
 .student-account-view #app :is(#student-my-classes,#student-assessment-history) .table-wrap{background:transparent;border:0}
}

@media screen and (min-width:601px) and (max-width:900px){
 .student-account-view #app .student-history-table{display:block;min-width:0;width:100%;background:transparent}
 .student-account-view #app .student-history-table thead{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%)}
 .student-account-view #app .student-history-table tbody{display:grid;gap:12px}
 .student-account-view #app .student-history-table tr{display:block;border:1px solid var(--info-border);border-radius:10px;background:rgba(255,255,255,.85);padding:10px 12px}
 .student-account-view #app .student-history-table td{display:block;min-width:0;width:auto;border:0;padding:6px 0;font-size:13px;line-height:1.5;overflow-wrap:anywhere;white-space:normal}
 .student-account-view #app .student-history-table td[data-label]::before{content:attr(data-label);display:block;color:#60768a;font-size:11px;font-weight:600;margin-bottom:2px}
 .student-account-view #app .student-history-action:empty{display:none}
 .student-account-view #app .student-history-action button{width:100%}
}
@media screen and (max-width:900px){
 .student-account-view #app .student-history-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px}
 .student-account-view #app .student-history-table td:is(:nth-child(1),:nth-child(2),:nth-child(4),.student-history-action){grid-column:1/-1}
}
@media screen and (max-width:600px){
 .student-account-view #app .student-classes-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px}
 .student-account-view #app .student-classes-table td:nth-child(-n+2){grid-column:1/-1}
}
/* Administration home: four compact panels, isolated from lecturer layouts. */
.admin-home-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 16px}
.admin-home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.admin-home-panel{min-width:0;padding:18px;background:var(--info-mint);border-color:var(--info-border);box-shadow:var(--info-shadow)}
.admin-home-panel .question-head{margin-bottom:14px;padding-bottom:12px;gap:10px;flex-wrap:wrap}.admin-home-panel h2{margin:0;font-size:18px}
.admin-home-panel .portal-insight-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 12px}
.admin-home-panel .portal-insight-card{min-width:0;padding:12px;gap:10px}.admin-home-panel .portal-insight-card strong{font-size:28px}.admin-home-panel .portal-insight-card div{min-width:0}.admin-home-panel .portal-insight-card div>span{font-size:12px}
.admin-panel-note,.admin-attention-status{font-size:12px;color:#60768a;line-height:1.5;margin:12px 0}
.admin-pending-card{display:flex;align-items:center;width:100%;gap:14px;text-align:left;background:var(--info-green);border-color:#cce7db;padding:16px;border-radius:12px}.admin-pending-card.has-pending{background:var(--info-amber);border-color:#ecdab5}.admin-pending-card>span:nth-child(2){flex:1;min-width:0}.admin-pending-card strong{display:block;font-size:32px;line-height:1.2}.admin-pending-card>span:nth-child(2)>span{display:block;font-size:13px;margin-top:5px}.admin-action-label{font-size:12px;white-space:nowrap}
.admin-database-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-database-summary strong{display:block;font-size:26px;margin-top:5px;color:#126b70}.admin-storage-track{height:8px;background:#dcece9;border-radius:8px;overflow:hidden;margin:12px 0}.admin-storage-track>span{display:block;height:100%;background:linear-gradient(90deg,#168d7d,#5faec1)}
.admin-action-grid{display:grid;gap:10px}.admin-action{display:flex;align-items:center;gap:12px;text-align:left;width:100%;background:rgba(255,255,255,.8);padding:12px}.admin-action>span:nth-child(2){flex:1;min-width:0}.admin-action strong,.admin-action small{display:block}.admin-action strong{font-size:14px}.admin-action small{font-size:12px;color:#60768a;margin-top:4px;font-weight:400}.admin-home-panel button{min-height:44px}.admin-updated{font-size:12px;margin:14px 0}
@media(max-width:900px){.admin-home-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){.admin-home-grid{gap:14px}.admin-home-panel{padding:14px}.admin-home-panel .portal-insight-card{padding:10px;gap:8px}.admin-home-panel .portal-insight-card strong{font-size:24px}.admin-home-panel .portal-insight-icon{width:30px;height:30px;flex-shrink:0}.admin-home-panel .portal-insight-icon:before{width:17px;height:17px}.admin-home-panel .badge{font-size:10px;padding:5px 7px}.admin-pending-card{gap:10px;padding:12px}.admin-pending-card strong{font-size:28px}.admin-action-label{white-space:normal}.admin-database-summary strong{font-size:23px}}


body:has(.admin-home-grid)>header nav{display:none}

.admin-home-panel .portal-insight-card strong{overflow-wrap:anywhere}

.students-filters.admin-students-filters{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.admin-students-filters .field{min-width:0}.admin-students-filters select{width:100%}@media(max-width:1000px){.students-filters.admin-students-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.students-filters.admin-students-filters{grid-template-columns:minmax(0,1fr)}}

/* Login panels share the dashboard infographic gradient family. */
@media screen{
 .entry-page #app>.entry-card:has(#student-login,#login-password){background:var(--info-mint);border:1px solid var(--info-border);border-radius:16px;box-shadow:var(--info-shadow)}
 .entry-page .entry-card:has(#student-login,#login-password) .role-switch{background:rgba(255,255,255,.72);border:1px solid var(--info-border);padding:5px}
 .entry-page .entry-card:has(#student-login,#login-password) .role-switch button[aria-pressed="true"]{background:linear-gradient(120deg,#147c76,#2064bc);color:#fff;box-shadow:0 2px 6px rgba(24,67,85,.12)}
 .entry-page .entry-card:has(#student-login,#login-password) .field input{background:rgba(255,255,255,.95);border-color:#cbdde4}
 .entry-page .entry-card:has(#student-login,#login-password) .registration-qr{background:var(--info-blue);border:1px solid var(--info-border);border-radius:14px;padding:20px;margin-top:24px;box-shadow:var(--info-shadow)}
 .entry-page .entry-card:has(#student-login,#login-password) .registration-qr-code{border:1px solid #e1e9ef;background:white}
}
@media screen and (max-width:600px){.entry-page .entry-card:has(#student-login,#login-password) .registration-qr{padding:16px;margin-top:20px}}

/* Registration follows the same mint/blue gradients as account login. */
@media screen{
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card){background:var(--info-mint);border:1px solid var(--info-border);border-radius:16px;box-shadow:var(--info-shadow);min-width:0}
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card) :is(.bank-fields,.staff-fields){background:var(--info-blue);border:1px solid var(--info-border);border-radius:12px;padding:16px;gap:14px;margin:16px 0;min-width:0}
 #app>.student-registration #registration-form>.bank-fields:has(#registration-password),#app>.staff-registration-card #staff-registration-form>.staff-fields:nth-of-type(2){background:var(--info-purple);border-color:#ded5ee}
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card) :is(.bank-fields,.staff-fields)>.field{margin:0;min-width:0}
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card) .field :is(input,select){background:rgba(255,255,255,.95);border-color:#cbdde4;min-width:0;width:100%}
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card) .actions{gap:10px;flex-wrap:wrap}
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card) button{min-height:44px;max-width:100%;white-space:normal}
}
@media screen and (max-width:600px){
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card){padding:18px}
 #app>:is(.student-registration:has(#registration-form),.staff-registration-card) :is(.bank-fields,.staff-fields){grid-template-columns:minmax(0,1fr);padding:12px;gap:14px}
}

/* Shared edit surfaces: profiles, records, classes, assessments and configuration. */
@media screen{
 :is(#app .panel:has(#student-edit-form,#student-settings-profile,#course-form,#bank-form,#logo-form,#password-form,#ai-model-form),dialog.staff-edit-dialog,dialog.attendance-dialog,dialog.attendance-schedule-dialog,dialog.attendance-cell-dialog,.notification-compose){background:var(--info-mint);border-color:var(--info-border);border-radius:14px;box-shadow:var(--info-shadow)}
 :is(#student-edit-form,#student-settings-profile,#student-settings-password,#course-form,#bank-form,#logo-form,#password-form,#ai-model-form,#staff-edit-form,#staff-profile-form,#staff-own-password-form,dialog.attendance-dialog,dialog.attendance-schedule-dialog,dialog.attendance-cell-dialog,.notification-compose) .field :is(input,select,textarea):not(.code):not([type="color"]):not([type="checkbox"]):not([type="radio"]):not([readonly]):not(:disabled){background:rgba(255,255,255,.95);border-color:#cbdde4}
 #bank-form>.bank-question{background:var(--info-blue);border-color:var(--info-border);border-radius:12px;box-shadow:var(--info-shadow)}
 #bank-form .practical-rubric-editor{background:var(--info-purple);border-color:#ded5ee;border-radius:12px}
 #bank-form .rubric-criterion{background:rgba(255,255,255,.86);border-color:var(--info-border)}
 :is(dialog.staff-edit-dialog,.panel:has(#student-edit-form,#student-settings-profile)) :is(.staff-own-photo,[data-staff-signature]){background:var(--info-blue);border:1px solid var(--info-border);border-radius:12px}
 .notification-compose{padding:14px;border:1px solid var(--info-border)}
 .notification-compose>summary{color:var(--ink)}
}

/* Reusable rubric library */
.rl-tabs{display:flex;gap:8px;margin:12px 0 16px}.rl-tabs button{padding:9px 16px}.rl-panel{padding:20px;background:linear-gradient(135deg,#f0fdfa 0%,#f6f8ff 62%,#fff 100%);border:1px solid #dce9ee}.rl-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:16px 0}.rl-filters .field,.rl-template .field{margin:0}.rl-list-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:15px 0;border-bottom:1px solid #dbe5ef}.rl-list-row .muted{margin:4px 0;font-size:13px}.rl-list-row .actions{flex-shrink:0;gap:6px}.rl-list-row button,.rl-question button{padding:7px 11px;font-size:13px}.rl-empty{padding:32px 12px;text-align:center;color:#607181}.rl-template{display:flex;gap:10px;align-items:end;margin:16px 0}.rl-template .field{flex:1;max-width:420px}.rl-criterion{background:#fff;border:1px solid #d9e4ed;border-radius:12px;padding:13px;margin:10px 0}.rl-criterion-head{display:grid;grid-template-columns:110px minmax(170px,1fr) 95px auto;gap:10px;align-items:end;margin-bottom:8px}.rl-criterion-head .field{margin:0}.rl-criterion-head .actions{gap:4px;margin:0}.rl-criterion-head button{padding:6px 10px}.rl-level{display:grid;grid-template-columns:65px 78px 1fr;align-items:center;gap:10px;margin:6px 0}.rl-level span{font-size:12px;font-weight:600;color:#51687c}.rl-level input,.rl-level textarea,.rl-criterion-head input{min-height:36px;padding:7px 10px;width:100%;box-sizing:border-box}.rl-level textarea{resize:vertical;min-height:36px;font-size:13px}.rl-footer{position:sticky;bottom:0;z-index:2;padding:12px 0;background:#f6faff;border-top:1px solid #d9e4ed}.rl-question{padding:14px;border-radius:12px;background:linear-gradient(110deg,#eefaf5,#eef3ff);border:1px solid #d8e7ed;margin:14px 0}.rl-question .badge{margin-left:10px}.rl-question p{margin:7px 0 10px}.rl-dialog{width:min(1100px,94vw);max-width:94vw;max-height:88vh;border:1px solid #d8e6ec;border-radius:16px;padding:22px;box-shadow:0 20px 80px #123d4f33;box-sizing:border-box;background:linear-gradient(135deg,#f3fcfa,#fff 55%,#f3f6ff)}.rl-dialog::backdrop{background:#12283a80}.rl-dialog h2{font-size:20px;margin:0}.rl-preview-table{overflow:auto;margin:12px 0}.rl-preview-table table{width:100%;border-collapse:collapse;min-width:660px;font-size:12px}.rl-preview-table td,.rl-preview-table th{padding:10px;text-align:left;border:1px solid #dce5ee;vertical-align:top}.rl-preview-table thead{background:#e9f5f6}.rl-preview-table tbody th{width:20%;background:#f5f8fb}.rl-choice{display:flex;justify-content:space-between;text-align:left;width:100%;gap:16px;padding:12px;margin:6px 0;background:#fff}.rl-choice span{font-size:12px;color:#527084}.rl-dialog [data-rl-choices]{max-height:220px;overflow:auto}.rl-dialog [role=alert],#rl-error{color:#b42335}
@media(max-width:720px){.rl-panel{padding:14px}.rl-list-row{align-items:flex-start;flex-direction:column;gap:9px}.rl-list-row .actions{flex-wrap:wrap}.rl-criterion-head{grid-template-columns:90px 1fr 80px}.rl-criterion-head .actions{grid-column:1/-1;justify-content:flex-end}.rl-level{grid-template-columns:54px 64px 1fr;gap:6px}.rl-level textarea{font-size:12px}.rl-template{align-items:stretch;flex-direction:column}.rl-choice{flex-direction:column;gap:4px}.rl-dialog{padding:14px}.rl-filters{grid-template-columns:1fr 1fr}.rl-tabs button{padding:8px 12px}}
@media(max-width:440px){.rl-filters{grid-template-columns:1fr}.rl-criterion-head{grid-template-columns:1fr 75px}.rl-criterion-head .rl-title{grid-column:1/-1;grid-row:2}.rl-level{grid-template-columns:48px 60px 1fr}}
.rl-criterion-choices{display:grid;gap:7px;margin:14px 0;max-height:45vh;overflow:auto}.rl-criterion-choices>label{display:grid;grid-template-columns:22px 1fr auto;gap:9px;align-items:start;padding:10px;background:#fff;border:1px solid #dbe8ed;border-radius:9px}.rl-criterion-choices input{width:18px;height:18px;margin-top:4px}.rl-criterion-choices small{display:block;color:#587280;margin-top:3px}.rl-criterion-choices details{max-width:360px;font-size:12px}.rl-criterion-choices summary{cursor:pointer}
.rl-edit-copy{margin:10px 0}.rl-edit-copy>summary{cursor:pointer;font-weight:600;padding:8px}.rl-template{flex-wrap:wrap}@media(max-width:650px){.rl-criterion-head{grid-template-columns:90px 1fr}.rl-level{grid-template-columns:50px 66px 1fr}.rl-list-row{align-items:start;flex-direction:column}.rl-list-row .actions{flex-wrap:wrap}}

.assignment-audience{padding:16px;margin:16px 0;border:1px solid #b9dce1;border-radius:14px;background:linear-gradient(130deg,#eefaf7,#edf3ff)}
.assignment-audience .field{margin:0 0 10px}.assignment-audience select,.assignment-audience input{max-width:100%;box-sizing:border-box}
.audience-summary,.audience-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.audience-summary span{background:#fff;border:1px solid #d0e5eb;padding:8px 12px;border-radius:10px}
.audience-class{margin-top:16px}.audience-class h3{margin:0}.audience-count{margin:8px 0;font-size:13px}.audience-group-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-top:10px}
.audience-group{min-width:0;padding:12px;background:#ffffffed;border:1px solid #c9dce8;border-radius:12px}.audience-group>.actions{display:flex;gap:8px;align-items:end}.audience-group>.actions .field{flex:1;min-width:0}.audience-group>.actions button{margin-bottom:10px}
.audience-students{max-height:190px;overflow:auto;margin:8px 0;display:flex;flex-direction:column;gap:5px}.audience-students label{display:flex;align-items:center;gap:8px;padding:7px;background:#f4f8fc;border-radius:7px;font-size:13px}.audience-students input[type=checkbox]{width:17px;min-width:17px;flex:none;margin:0}.audience-students small{display:block;color:#52677c}.audience-message{color:#8c2915;font-size:13px;margin:8px 0 0}.group-assignment-summary{padding:12px;border:1px solid #c4dce6;border-radius:12px;background:linear-gradient(120deg,#edf9f5,#edf3ff);margin-bottom:12px}.assessment-type-filter{max-width:320px}
@media(max-width:620px){.audience-group-grid{grid-template-columns:1fr}.assignment-audience{padding:10px}.activation-dialog{padding:16px}.audience-class .question-head{flex-wrap:wrap;gap:8px}.audience-group>.actions{flex-wrap:wrap}}
.audience-chosen{padding-left:24px;margin:10px 0;min-height:24px}.audience-chosen li{padding:5px 2px;font-size:13px}.audience-chosen li>span{display:inline-block;width:calc(100% - 40px);vertical-align:middle}.audience-chosen small{display:block;color:#52677c}.audience-chosen button{padding:3px 8px;margin-left:6px}.audience-picker{margin-top:10px;border-top:1px solid #d1e3eb;padding-top:10px}.audience-picker h4{margin:0}.audience-picker>.primary{width:100%}
.group-rubric-table{font-size:12px;min-width:560px;width:100%}.group-rubric-table th,.group-rubric-table td{vertical-align:top;padding:8px;border-bottom:1px solid #dbe5ef}.group-rubric-table th:first-child{width:32%}.group-rubric-table small{display:block}.group-rubric-table select,.group-rubric-table input{min-width:96px;width:100%;padding:6px}.group-rubric-table button{font-size:11px;padding:6px;margin-top:5px}.group-assignment-summary{padding:12px;border:1px solid #d7e5ee;border-radius:12px;background:linear-gradient(120deg,#effaf7,#f1f4ff);margin:12px 0}.group-assignment-summary h3{margin:0 0 6px}.own-rubric-result table{width:100%}

/* Rubric Library: criteria left, compact levels right, live 100-point check. */
.rl-criteria .rl-criterion{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(380px,1.6fr);gap:18px;align-items:start}
.rl-criteria .rl-criterion-head{grid-template-columns:minmax(90px,1fr) 100px;gap:9px;margin:0;align-items:end}
.rl-criterion-head .rl-title{grid-column:1/-1;grid-row:2}.rl-criterion-head .actions{grid-column:1/-1;justify-content:flex-end}
.rl-criterion-levels{min-width:0}.rl-criteria .rl-level,.rl-level-heading{display:grid;grid-template-columns:52px minmax(0,1fr) 78px;gap:8px;align-items:center}
.rl-level-heading{font-size:11px;font-weight:700;color:#577082}.rl-level-heading span:last-child{text-align:right}
.rl-criteria .rl-level{margin:5px 0}.rl-level input{text-align:right}.rl-level textarea{line-height:1.4}
.rl-total-summary{display:grid;grid-template-columns:auto minmax(100px,1fr) auto;align-items:center;gap:16px;padding:12px 16px;margin:14px 0;border:1px solid #d5e4f0;border-radius:12px;background:linear-gradient(110deg,#eaf8f4,#eef2ff);font-size:13px}
.rl-total-summary>div{display:grid;gap:3px}.rl-total-summary strong{font-size:19px;color:#173c50}.rl-total-summary small{font-size:12px}.rl-total-summary progress{width:100%;height:10px;accent-color:#168b91}.rl-total-summary [role=status]{font-weight:600;color:#576a80}
.rl-total-summary[data-total-state=complete] [role=status]{color:#087557}.rl-total-summary[data-total-state=over] [role=status]{color:#b54708}.rl-total-summary[data-total-state=over] progress{accent-color:#d68a19}
@media(max-width:850px){.rl-criteria .rl-criterion{grid-template-columns:1fr;gap:12px}.rl-criteria .rl-criterion-head{grid-template-columns:100px minmax(0,1fr) 95px auto}.rl-criterion-head .rl-title{grid-column:auto;grid-row:auto}.rl-criterion-head .actions{grid-column:auto}.rl-total-summary{grid-template-columns:1fr auto}.rl-total-summary progress{grid-column:1/-1;grid-row:2}}
@media(max-width:520px){.rl-criteria .rl-criterion-head{grid-template-columns:1fr 85px}.rl-criterion-head .rl-title{grid-column:1/-1;grid-row:2}.rl-criterion-head .actions{grid-column:1/-1}.rl-criteria .rl-level,.rl-level-heading{grid-template-columns:43px minmax(0,1fr) 67px;gap:5px}.rl-total-summary{gap:8px;padding:10px}.rl-total-summary strong{font-size:16px}}

.rl-level-config{display:flex;gap:14px;align-items:center;margin:12px 0}.rl-level-config .field{min-width:160px;margin:0}.rl-level-config .muted{font-size:12px}@media(max-width:600px){.rl-level-config{align-items:stretch;flex-direction:column;gap:7px}}


/* Shared institution app shortcuts. */
/* Dashboard app shortcuts, directly below the profile. */
.dashboard-apps-panel{padding:16px;margin:16px 0;overflow-anchor:none}
.student-account-view #dashboard-apps{width:100%;max-width:1100px;box-sizing:border-box;margin:0 auto 20px}
.dashboard-apps-panel h2{margin:0}
.dashboard-apps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.dashboard-app-link{display:flex;align-items:center;gap:12px;min-width:0;padding:12px;border:1px solid #dce5ed;border-radius:12px;background:#fff;color:#173348;text-decoration:none;transition:transform .15s,box-shadow .15s}
.dashboard-app-link:hover{transform:translateY(-2px);box-shadow:0 5px 16px #153c4812;border-color:#7ebeb8}
.dashboard-app-link:focus-visible{outline:3px solid #269e94;outline-offset:3px}
.dashboard-app-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:11px;flex-shrink:0;overflow:hidden;background:linear-gradient(135deg,#d9f5ec,#c3e9ed);color:#11766e}
.dashboard-app-icon svg{width:28px;height:28px}
.dashboard-app-icon.has-app-logo{background:#fff}
.dashboard-app-icon img{display:block;width:100%;height:100%;object-fit:contain}
.app-icon-blocks,.app-icon-code{background:linear-gradient(135deg,#eae3ff,#dce7ff);color:#6750b9}
.dashboard-app-copy{display:grid;gap:4px;min-width:0}
.dashboard-app-copy strong{font-size:15px;overflow-wrap:anywhere}
.dashboard-app-description{font-size:13px;line-height:1.45;color:#526a7c;overflow-wrap:anywhere}
.dashboard-app-open{margin-left:auto;color:#6c8294;flex-shrink:0}
.apps-editor-list{display:grid;gap:12px;margin:16px 0}
.apps-editor-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(220px,2fr) 120px auto auto;align-items:end;gap:10px;padding:12px;border:1px solid #dce5ed;border-radius:12px;background:#fafcfe}
.apps-editor-row .field{margin:0}
.apps-editor-row .apps-description-field{grid-column:1/-1;grid-row:2}
.apps-enabled{display:flex;align-items:center;gap:6px;min-height:40px}.apps-enabled input{width:auto}
.dashboard-apps-panel .question-head>.muted{font-size:12px}
.apps-editor-row input,.apps-editor-row select{width:100%;box-sizing:border-box}
@media(max-width:800px){.apps-editor-row{grid-template-columns:1fr 1fr}.apps-editor-row .field:nth-child(2){grid-column:1/-1;grid-row:2}.apps-editor-row .apps-description-field{grid-row:3}.apps-editor-row button{justify-self:end}}
@media(min-width:601px) and (max-width:1024px){.dashboard-app-link{padding:10px;gap:8px}.dashboard-app-icon{width:40px;height:40px;border-radius:9px}.dashboard-app-copy strong{font-size:14px}.dashboard-app-description{font-size:12px;line-height:1.4}}
@media(max-width:600px){.dashboard-apps-panel{padding:14px}.student-account-view #dashboard-apps{margin-bottom:14px}.dashboard-apps-panel .question-head{align-items:start;gap:6px;flex-direction:column}.dashboard-app-link{padding:10px;gap:10px}.dashboard-app-icon{width:40px;height:40px;border-radius:9px}.dashboard-apps-grid{grid-template-columns:1fr;gap:10px}}
@media(prefers-reduced-motion:reduce){.dashboard-app-link{transition:none}.dashboard-app-link:hover{transform:none}}

/* Keep the reviewer signature and text stamp together on the A4 cover. */
.pdf-cover .pdf-info-table th,.pdf-cover .pdf-info-table td{padding:8px 10px}.pdf-cover .pdf-review-signature{margin-top:18px;padding-top:8px}

.pdf-signature-space>img+img.pdf-stamp-image{margin-top:-6px}

/* One cover layout for single, group, bulk and semester script exports. */
.pdf-cover{font:12px Arial;color:#111}.pdf-cover .pdf-title{margin:12px 0}
.pdf-cover .pdf-report-head{display:grid;grid-template-columns:minmax(0,1fr) 140px;gap:16px;align-items:start;margin:20px 0 26px;break-inside:avoid}.pdf-cover .pdf-info-table{width:100%;border-collapse:collapse;table-layout:fixed}.pdf-cover .pdf-info-table th,.pdf-cover .pdf-info-table td{border:1.5px solid #344654;padding:10px 12px;text-align:left;vertical-align:top;line-height:1.4;overflow-wrap:anywhere}.pdf-cover .pdf-info-table th{width:112px;font-size:14px;font-weight:700;color:#172b3a;text-transform:none;background:#eef2f5}.pdf-cover .pdf-info-table td{font-size:16px;font-weight:700;color:#111}.pdf-cover .pdf-score-box{border:2px solid #172b3a;text-align:center;padding:16px 9px;break-inside:avoid}.pdf-cover .pdf-score-label{font-size:14px;font-weight:700;letter-spacing:.5px}.pdf-cover .pdf-score-value{font-size:42px;line-height:1.15;font-weight:800;margin:15px 0 7px;overflow-wrap:anywhere}.pdf-cover .pdf-score-max{font-size:20px;font-weight:700}.pdf-cover .pdf-score-status{border-top:1px solid #344654;margin-top:15px;padding-top:12px;font-size:12px;font-weight:700;line-height:1.4}
.pdf-cover .pdf-info-table th,.pdf-cover .pdf-info-table td{padding:8px 10px}
.pdf-cover .pdf-score-value{font-size:36px;white-space:nowrap;overflow-wrap:normal;font-variant-numeric:tabular-nums}
/* Legacy score-choice styling retained for readonly embedded content. */
.rubric-mark-table .rubric-score-choice,.group-rubric-table .rubric-score-choice{display:flex;align-items:center;justify-content:center;gap:5px;position:relative;cursor:pointer;min-height:40px;margin:0;padding:6px;border:1px solid #dbe5ed;border-radius:8px;background:#fff;color:#243e53;font-weight:500;white-space:nowrap}
.rubric-score-choice>span:last-child{display:flex;flex-direction:column;gap:1px;line-height:1.2}
.rubric-score-choice small{font-size:10px;color:#536c7e}
.rubric-score-choice strong{font-size:12px}
.rubric-mark-table .rubric-score-choice input,.group-rubric-table .rubric-score-choice input{position:absolute;opacity:0;width:1px;min-width:0;height:1px;padding:0;margin:0}
.rubric-tick-box{width:14px;height:14px;border:1.5px solid #869fb0;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 14px}
.rubric-score-choice:has(input:checked){background:#e7f6ef;border-color:#27826a;color:#135940}
.rubric-score-choice input:checked+.rubric-tick-box{background:#19775e;border-color:#19775e;color:#fff}
.rubric-score-choice input:checked+.rubric-tick-box:after{content:'✓';font-size:12px;font-weight:800}
.rubric-score-choice:has(input:focus-visible){outline:3px solid #297fcb;outline-offset:2px}
.rubric-score-choice:has(input:disabled){opacity:.55;cursor:wait}
.rubric-mark-table td:has(.rubric-score-choice){padding:4px}
.group-rubric-options{display:grid;grid-template-columns:repeat(2,minmax(54px,1fr));gap:4px;min-width:116px}
.group-rubric-table [data-group-apply]{font-size:11px;white-space:normal;min-height:36px;margin-top:5px}
.rubric-presets{margin:8px 0 12px;border:1px solid #dbe5ed;border-radius:10px;background:#f8fafc;font-size:12px}
.rubric-presets>summary{cursor:pointer;padding:9px 10px;font-weight:700}
.rubric-presets>summary span{color:#647a8e;font-size:11px;font-weight:500;margin-left:8px}
.rubric-presets-body{padding:0 10px 10px}
.rubric-presets-body>p{margin:7px 0;font-size:12px}
.preset-slots{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}
.assessment-presets{margin:10px 0 16px;min-width:0}
.assessment-presets .rubric-presets{margin:0;background:#f2f8fc}
.assessment-presets .preset-slots small{font-size:12px}
.assessment-preset-slot{margin:8px 0 12px;min-width:0}
.assessment-preset-slot .assessment-presets{margin:0}
.assessment-preset-open{display:block;width:100%;padding:9px 10px;border:1px solid #dbe5ed;border-radius:10px;background:#f2f8fc;color:#184d71;text-align:left;font-size:12px;font-weight:700}
.assessment-preset-open span{display:block;margin-top:4px;color:#647a8e;font-size:11px;font-weight:500}
.assessment-preset-open[hidden]{display:none}
.assessment-preset-slot .preset-slots{grid-template-columns:repeat(3,minmax(0,1fr))}
.preset-slots button{display:flex;flex-direction:column;gap:3px;padding:7px 3px;border-radius:8px;min-width:0;min-height:48px;color:#184d71;background:#fff;border:1px solid #cbdde9}
.preset-slots small{font-size:10px;color:#536c7e;white-space:nowrap}
.preset-slots .is-applied{border-color:#19866c;background:#e7f6ef}
.preset-actions,.preset-save-options,.preset-overwrite,.preset-members{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px}
.rubric-presets button{font-size:12px}
.preset-actions button,.preset-save-options button,.preset-overwrite button,.preset-members button{padding:6px 9px;min-height:34px}
.preset-members button{white-space:normal;text-align:left}
.preset-members [aria-pressed="true"]{background:#e5f3ff;border-color:#2480bd}
.preset-save-options[hidden],.preset-overwrite[hidden]{display:none}
.preset-overwrite{padding:8px;background:#fff4d9;border-radius:8px}
.preset-overwrite span{flex-basis:100%}
.rubric-presets [data-preset-status]:empty{display:none}
.rubric-presets [data-preset-status]:not(:empty){min-height:3em;line-height:1.5}
@media(max-width:600px){.preset-slots{grid-template-columns:repeat(3,minmax(0,1fr))}.rubric-presets>summary span{display:block;margin:4px 0 0}.rubric-mark-table .rubric-score-choice,.group-rubric-table .rubric-score-choice{min-height:44px}.preset-actions button,.preset-save-options button,.preset-overwrite button,.preset-members button{min-height:40px}}
/* Printed marking-scheme annex: CAR Practical Test structure, populated from the script. */
.pdf-rubric-page{display:block!important;break-before:page;page-break-before:always;border:0!important;margin:0!important;padding:0!important;background:white!important;color:#111!important;font:10px/1.25 Arial!important}
.pdf-rubric-page-content{width:100%;background:white;color:#111;font:10px/1.25 Arial}
.pdf-rubric-page .pdf-rubric-heading{display:flex;align-items:center;gap:18px;border:1px solid #333;padding:8px;margin:0;background:white;color:#111}
.pdf-rubric-heading .institution-logo{width:115px!important;max-height:48px!important;object-fit:contain;margin:0!important}
.pdf-rubric-page h2{font:700 15px/1.2 Arial!important;margin:0 0 4px!important;color:#111!important}
.pdf-rubric-page table{width:100%!important;border-collapse:collapse!important;table-layout:fixed!important;margin:0!important;min-width:0!important;background:white!important;color:#111!important;font:10px/1.25 Arial!important}
.pdf-rubric-page th,.pdf-rubric-page td{border:1px solid #555!important;padding:3px 5px!important;vertical-align:middle!important;white-space:normal!important;overflow-wrap:anywhere!important;color:#111!important;font:inherit!important;letter-spacing:normal!important;text-transform:none!important;background:white!important}
.pdf-rubric-page th{font-weight:700!important}.pdf-rubric-page .pdf-rubric-meta th{width:100px;text-align:left}.pdf-rubric-page .pdf-rubric-meta th,.pdf-rubric-page .pdf-rubric-meta td{padding:3px 5px!important}
.pdf-rubric-page .pdf-rubric-section{font-weight:700;background:#dedede!important;border:1px solid #555;padding:5px;margin-top:8px;break-after:avoid}
.pdf-rubric-page .pdf-rubric-grid thead th{background:#eeeeee!important;text-align:center!important}
.pdf-rubric-page .pdf-rubric-grid .pdf-rubric-criterion-head th{background:#f0f0f0!important;text-align:left!important}
.pdf-rubric-page .pdf-rubric-grid .pdf-rubric-criterion-head .pdf-rubric-code{text-align:center!important}
.pdf-rubric-page .pdf-rubric-grid .pdf-rubric-award{font-size:14px!important;font-weight:700!important;text-align:center!important}
.pdf-rubric-award small{display:block;font-size:9px;font-weight:400;margin-top:4px}
.pdf-rubric-page .pdf-rubric-grid .pdf-rubric-level{text-align:center!important;white-space:nowrap!important}
.pdf-rubric-page .pdf-rubric-selected td{background:#eef4ec!important}.pdf-rubric-check{font-weight:700;color:#b01826;font-size:13px}
.pdf-rubric-page .pdf-rubric-critical th,.pdf-rubric-page .pdf-rubric-critical td{text-align:center!important;font-size:9px!important}
.pdf-rubric-page .pdf-rubric-note{font:9px/1.3 Arial;margin:5px 0;color:#444}
.pdf-rubric-page .pdf-rubric-comment td{font-size:9px!important}
.pdf-rubric-page .pdf-rubric-result td:not(:first-child),.pdf-rubric-page .pdf-rubric-result th:not(:first-child){width:100px;text-align:center!important}
.pdf-rubric-page .pdf-rubric-grand-total th{background:#e5e5e5!important;font-size:12px!important}
.pdf-rubric-page .pdf-review-signature{margin:6px 0 0 auto;padding:0;width:220px}.pdf-rubric-page .pdf-signature-space{height:auto;min-height:40px}.pdf-rubric-page .pdf-signature-space img{max-height:48px;max-width:195px}
.pdf-rubric-page .pdf-rubric-criterion{break-inside:avoid;page-break-inside:avoid}
@media print{.pdf-rubric-page,.pdf-rubric-page *{-webkit-print-color-adjust:exact;print-color-adjust:exact}.pdf-rubric-page{width:100%}}
/* Preserve the original PT-P1 print artwork. Only criterion awards are overlaid. */
@page pt-p1{size:A4;margin:0}
.pdf-rubric-page.pt-p1-page{page:pt-p1;width:210mm!important;break-inside:avoid;page-break-inside:avoid}
.pdf-rubric-page-content.pt-p1-sheet{position:relative;width:210mm!important;height:271.7647mm!important;margin:0;padding:0;overflow:hidden}
.pt-p1-sheet>img,.pt-p1-sheet>svg{display:block;position:absolute;inset:0;width:100%!important;height:100%!important;max-width:none!important;margin:0!important;padding:0;border:0}
.pt-p1-verification{position:absolute;left:35.620915%;top:68.308081%;width:25.163399%;height:4.79798%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.343137mm;overflow:hidden}
.pt-p1-verification>img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;margin:0!important;padding:0;border:0;flex:none}
.pt-p1-verification-pair>.pt-p1-signature{max-height:44.736842%}.pt-p1-verification-pair>.pt-p1-stamp{max-height:52.631579%}
.pdf-practical-answer-pages>section{break-before:page;page-break-before:always;border:0!important;margin-top:0!important;padding-top:0!important}

.project-choice-settings{display:flex;gap:20px;align-items:center;padding:14px;border:1px solid #b8d5de;border-radius:12px;background:#eff8fa;margin:12px 0}.project-choice-settings .field{min-width:210px;margin:0}.project-choice-settings p{margin:0;font-size:13px}.project-choice-dialog{width:min(900px,94vw);max-width:94vw;max-height:90dvh;padding:24px;border:1px solid #b8d5de;border-radius:16px;overflow:auto}.project-choice-options{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin:18px 0}.project-choice-option{display:block;padding:16px;border:2px solid #dbe4eb;border-radius:12px;cursor:pointer;overflow-wrap:anywhere}.project-choice-option:has(input:checked){border-color:#127d91;background:#effafb}.project-choice-option input{width:18px;height:18px;vertical-align:middle;accent-color:#127d91}.project-choice-option .prompt{font-size:14px;max-height:35vh;overflow:auto}.project-choice-option img{max-width:100%;height:auto}.project-choice-option>span{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.project-choice-option small{margin-left:auto;float:none;white-space:nowrap}.project-choice-dialog::backdrop{background:#10283899}@media(max-width:600px){.project-choice-settings{display:block}.project-choice-settings p{margin-top:10px}.project-choice-options{grid-template-columns:1fr}.project-choice-dialog{padding:16px}.project-choice-dialog .footer-actions{flex-wrap:wrap}}

/* One selected project, two answer parts, one shared rubric. */
.project-flowchart-answer,.project-flowchart-marked{margin-top:20px;padding-top:16px;border-top:1px solid var(--border,#d8e3ec);min-width:0}.project-flowchart-answer h3{margin:0 0 6px}.project-flowchart-answer>p{margin:0 0 12px}.project-flowchart-option{display:flex;align-items:center;gap:8px;font-weight:600}.project-flowchart-option input{width:18px;height:18px;flex:none}.project-flowchart-answer .diagram-workspace{min-width:0}

/* Compact level dropdowns keep all four members visible beside each criterion. */
.rubric-mark-table{table-layout:fixed}.rubric-mark-table th:first-child{width:65%}.rubric-mark-table tbody th{min-width:0;width:auto}.rubric-mark-table .rubric-level-cell{width:35%}.rubric-mark-table select.rubric-level-select{min-width:0;max-width:100%;font-variant-numeric:tabular-nums}.rubric-level-select.has-selection{border-color:#32997e;background-color:#f0faf6}
.group-rubric-table{table-layout:fixed;min-width:0;border-collapse:collapse}.group-rubric-table .group-criterion-column{width:30%}.group-rubric-table th:first-child{width:auto}.group-rubric-table th,.group-rubric-table td{padding:7px 4px;overflow-wrap:anywhere}.group-rubric-table thead th{background:#edf4f8}.group-rubric-table select,.group-rubric-table input{min-width:0;max-width:100%;box-sizing:border-box;font-size:11px;padding:6px 2px;min-height:34px}.group-rubric-table .group-member-heading{width:100%;min-width:0;min-height:38px;margin:0 0 3px;padding:6px 3px;white-space:normal;overflow-wrap:anywhere;line-height:1.3}.group-member-heading[aria-pressed=true]{background:#dceeff;border-color:#2480bd;color:#124f7b}.group-rubric-table .group-member-selected{background:#f0f7ff}.group-rubric-table tfoot td{font-weight:700;font-variant-numeric:tabular-nums}.group-level-details,.group-apply-all{font-size:11px;font-weight:400;margin-top:4px}.group-level-details summary,.group-apply-all summary{cursor:pointer;color:#347784}.group-apply-all select{margin-top:6px}.group-rubric-table [data-group-apply]{width:100%;padding:5px 2px}.preset-members[hidden],.preset-target[hidden]{display:none}.preset-target{font-size:12px;margin:8px 0}.preset-target strong{color:#155f8f}
@media(max-width:600px){.group-rubric-table .group-criterion-column{width:28%}.group-rubric-table th,.group-rubric-table td{padding:6px 2px}.group-rubric-table select{min-height:40px;font-size:10px}.group-rubric-table .group-member-heading{font-size:10px}.group-rubric-table th>small{font-size:9px}.rubric-mark-table th:first-child{width:60%}}

/* Give group members a wider rubric pane while keeping answer annotations alongside. */
@media(min-width:951px){.marked-answer.practical-rubric-layout:has(>.group-rubric-panel){grid-template-columns:minmax(0,.85fr) minmax(0,1.5fr);gap:18px}}
.group-rubric-table{min-width:530px}.group-rubric-table .rubric-level-select{min-height:40px}.group-rubric-table .group-member-heading{min-height:44px}

/* Online report sections */
.report-sections{display:grid;gap:14px;min-width:0}.report-section{padding:14px;border:1px solid #d9e4ec;border-radius:12px;background:#fff;min-width:0}.report-section .field{display:grid;gap:8px}.report-section small{font-weight:400;color:#567080}.report-section textarea{font-weight:400;width:100%;min-height:130px;resize:vertical;box-sizing:border-box;line-height:1.6}.report-section textarea.code{min-height:230px}.report-output-image{margin:12px 0;padding:10px;border:1px solid #d9e4ec;border-radius:10px;break-inside:avoid}.report-output-image img{display:block;max-width:100%;max-height:480px;object-fit:contain;margin:auto}.report-output-image figcaption{margin-top:8px}.report-section input[type=file]{max-width:100%}@media(max-width:600px){.report-section{padding:10px}.report-sections{gap:10px}}
