:root{--ink:#202b29;--muted:#61716b;--paper:#fff;--bg:#f4f6f4;--line:#dce4df;--accent:#245c49;--accent-dark:#174333;--soft:#eaf2ee;--bs-primary:#245c49;--bs-primary-rgb:36,92,73;--bs-link-color:#245c49;--bs-link-hover-color:#174333;--bs-body-font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
body{background:var(--bg);color:var(--ink);font-size:16px;line-height:1.6}h1,h2,h3{line-height:1.25;letter-spacing:-.02em}h1{font-size:2rem;font-weight:650}h2{font-size:1.3rem;font-weight:650}h3{font-size:1.1rem}a{color:var(--accent);text-underline-offset:3px}code{color:#34584b}p{margin-bottom:.85rem}.muted{color:var(--muted)}.small{font-size:.87rem}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.74rem;font-weight:700;color:var(--muted);margin-bottom:.6rem}.site-header{background:var(--paper);border-bottom:1px solid var(--line)}.header-inner{max-width:1440px;min-height:72px;display:flex;align-items:center;gap:24px;padding:14px 32px;flex-wrap:wrap}.brand{font-size:1.35rem;text-decoration:none;font-weight:750;color:var(--ink)}.brand span{margin-left:14px;font-size:.8rem;letter-spacing:.04em;color:var(--muted);font-weight:500}.site-header nav{display:flex;gap:22px;margin-left:auto}.site-header nav a{font-size:.92rem}.logout-form{margin-left:auto}.site-header nav~.logout-form{margin-left:0}.admin-label{font-size:.82rem;color:var(--muted)}.demo-banner{background:#fcf3d7;color:#665017;padding:7px 24px;text-align:center;font-size:.82rem}.page-shell{max-width:1400px;padding:32px}.site-footer{max-width:1400px;padding:18px 32px 32px;margin:auto;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;color:var(--muted);font-size:.8rem}.panel{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:24px}.narrow-page{max-width:950px;margin-left:auto;margin-right:auto}.entry-layout{max-width:1060px;margin:54px auto;display:grid;grid-template-columns:1fr 440px;gap:72px;align-items:center}.entry-intro h1{font-size:3.4rem;letter-spacing:-.04em;margin-bottom:20px}.entry-intro p{max-width:450px;color:var(--muted);font-size:1.05rem}.intro-note{border-top:1px solid var(--line);margin-top:32px;padding-top:22px;display:flex;gap:18px;align-items:center}.intro-note strong{font-size:1.8rem;white-space:nowrap}.intro-note span{font-size:.88rem;color:var(--muted)}.entry-panel{padding:32px}.entry-panel h2{margin-bottom:24px}.form-control,.form-select{border-color:#b9c7bf;min-height:44px}.form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .2rem #245c491c}.form-label{display:block;font-size:.94rem;margin-bottom:.5rem}.btn{font-weight:600;min-height:42px}.btn-sm{min-height:32px}.btn-primary{--bs-btn-bg:var(--accent);--bs-btn-border-color:var(--accent);--bs-btn-hover-bg:var(--accent-dark);--bs-btn-hover-border-color:var(--accent-dark);--bs-btn-active-bg:var(--accent-dark);--bs-btn-active-border-color:var(--accent-dark);--bs-btn-disabled-bg:#6c8d80;--bs-btn-disabled-border-color:#6c8d80}.form-check-input:checked{background-color:var(--accent);border-color:var(--accent)}.code-input{font-family:ui-monospace,monospace;letter-spacing:.06em}.section-heading{margin-top:28px}.recovery-box,.consent-box{margin-top:28px;padding:22px;border:1px solid var(--line);border-radius:8px}.recovery-box{background:var(--soft)}.recovery-code{font-size:1.35rem;font-weight:700;word-break:break-word}.legal-text{white-space:pre-wrap;font-size:.92rem;max-height:300px;overflow:auto;padding:16px;background:#f7f8f7;border:1px solid var(--line);border-radius:6px}.legal-text.full{max-height:none}.exam-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px;align-items:start}.sticky-panel{position:sticky;top:18px;padding:20px}.exam-sidebar{position:sticky;top:18px}.timer{font-size:2.8rem;font-weight:750;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.2;margin:8px 0 12px}.timer.warning{color:#995b00}.timer.danger{color:#b4232c}.connection-status{font-size:.84rem;border-top:1px solid var(--line);padding:12px 0;color:var(--muted);min-height:49px}.connection-status.good{color:var(--accent)}.connection-status.bad{color:#a12732}.completion-label{display:flex;justify-content:space-between;font-size:.8rem;gap:12px}progress{width:100%;height:6px;accent-color:var(--accent);border:0;border-radius:5px}progress::-webkit-progress-bar{background:var(--line);border-radius:5px}progress::-webkit-progress-value{background:var(--accent);border-radius:5px}.question-nav{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin:18px 0}.question-nav a{display:flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid var(--line);border-radius:6px;height:32px;font-size:.85rem;background:#fff}.question-nav a.filled{background:var(--soft);border-color:#9abcaa}.exam-heading{margin:2px 0 30px}.exam-heading h1{font-size:1.85rem}.part-heading{font-size:1.12rem;margin:32px 0 16px;color:var(--muted)}.question-card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:26px;margin-bottom:22px;scroll-margin-top:22px}.question-header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.question-header h3,.question-header h2{margin:0;font-size:1.25rem;font-weight:650}.question-header h3 span{color:var(--accent);margin-right:4px}.points-label{white-space:nowrap;background:var(--soft);color:var(--accent);font-size:.8rem;font-weight:700;padding:4px 10px;border-radius:20px}.content-table{font-size:.94rem;vertical-align:middle;margin:18px 0}.table>:not(caption)>*>*{border-color:var(--line);padding:10px 12px}.table thead th{background:#f5f8f5;color:#394d42;font-weight:600}.math-block{padding:12px 0 18px;overflow-x:auto}.math-block math{font-size:1.45rem;margin:0 auto}.content-table math{font-size:1.2rem}.answer-fields{margin-top:22px;padding-top:20px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 22px}.answer-field:has(textarea){grid-column:1/-1}.answer-field .form-label{line-height:1.5;font-size:.91rem}.field-points{font-weight:500;color:var(--muted);font-size:.8rem;white-space:nowrap;margin-left:6px}.answer-input{max-width:100%;font-size:1rem}.answer-input.saved{border-color:#70a286;background:#fbfefc}.answer-input.pending{border-color:#c8a65c}.answer-input.conflict{border-color:#bb4050}.save-state{font-size:.76rem;color:var(--muted);min-height:22px;padding-top:3px}.save-state.good{color:#236341}.save-state.warn{color:#805913}.save-state.bad{color:#b4232c}textarea{resize:vertical;line-height:1.65}.code-versions details{border:1px solid var(--line);border-radius:7px;margin:8px 0;padding:10px 14px}.code-versions summary{font-weight:600}pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9rem;line-height:1.6;background:#f5f7f5;border-radius:6px;padding:16px;margin-top:12px;overflow:auto}pre code{color:#223c2e}.algorithm-steps li{margin-bottom:8px}.end-note{margin:30px 0}.receipt{max-width:700px;margin:48px auto;text-align:center;padding:40px}.receipt-mark{font-size:2.6rem;color:var(--accent);margin-bottom:12px}.receipt h1{font-size:2rem}.login-panel{max-width:450px;margin:48px auto}.page-heading{display:flex;gap:20px;justify-content:space-between;align-items:center;margin-bottom:22px}.status-badge{display:inline-block;padding:3px 9px;border-radius:6px;font-size:.82rem;background:#eff1ef}.status-badge.is-open{background:var(--soft);color:var(--accent)}.score-number{font-size:2.8rem;font-weight:700}.score-number span{font-size:1.1rem;color:var(--muted);font-weight:400}.review-field{border-top:1px solid var(--line);padding-top:16px;margin-top:18px}.student-response{white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f8f6;border-left:3px solid #95ac9c;padding:12px 16px;margin-bottom:8px}.rubric-row{display:grid;grid-template-columns:1fr 115px;gap:18px;align-items:center;margin:12px 0;font-size:.9rem}.history-value{max-width:600px;white-space:pre-wrap;overflow-wrap:anywhere}.results-table{font-size:.9rem}.results-table th{white-space:nowrap}.conflict-entry{border-top:1px solid #e2b3bb;padding:14px 0}.conflict-entry pre{max-height:150px;font-size:.85rem;white-space:pre-wrap}.conflict-entry button{font-size:.85rem;margin:5px 7px 0 0}dialog{border:1px solid var(--line);border-radius:14px;max-width:520px;width:calc(100% - 32px);padding:30px;box-shadow:0 12px 60px #0003}dialog::backdrop{background:#14271f66}.skip-link{position:fixed;top:-100px;left:16px;padding:10px;background:white;z-index:100}.skip-link:focus{top:10px}.disabled-note{opacity:.7}summary{cursor:pointer}a:focus-visible,button:focus-visible{outline:3px solid #96baa9;outline-offset:3px}
@media(min-width:1400px){.exam-layout{grid-template-columns:275px minmax(0,1fr);gap:38px}.question-card{padding:30px}}
@media(max-width:991px){.page-shell{padding:24px}.entry-layout{grid-template-columns:1fr;gap:26px;max-width:580px;margin:20px auto}.entry-intro h1{font-size:2.6rem}.intro-note{margin-top:20px}.exam-layout{grid-template-columns:1fr}.exam-sidebar{position:static}.sticky-panel{position:static;display:grid;grid-template-columns:1fr 1fr;gap:10px 22px}.sticky-panel .eyebrow{grid-column:1/-1}.timer{margin:0}.question-nav{grid-column:1/-1;grid-template-columns:repeat(8,1fr);margin:0}.sticky-panel progress,.sticky-panel .small,.sticky-panel .connection-status,.completion-label{grid-column:1/-1}.exam-heading h1{font-size:1.55rem}.site-header nav{order:4;width:100%;margin-left:0}}
@media(max-width:575px){.page-shell{padding:16px}.header-inner{padding:14px 16px;gap:12px}.brand span{margin-left:8px}.site-header nav{gap:16px;font-size:.85rem}.panel,.question-card{padding:18px;border-radius:9px}.answer-fields{grid-template-columns:1fr}.question-header h3{font-size:1.1rem}.points-label{font-size:.7rem;padding:4px 7px}.timer{font-size:2.2rem}.entry-intro h1{font-size:2.3rem}.intro-note{align-items:flex-start}.page-heading{display:block}.page-heading .btn{margin-top:10px}.rubric-row{grid-template-columns:1fr}.legal-text{max-height:230px}.recovery-code{font-size:1.05rem}.site-footer{padding:16px}.table>:not(caption)>*>*{padding:8px}.question-body{overflow-wrap:break-word}.math-block math{font-size:1.3rem}}
@media print{.site-header,.demo-banner,.site-footer,button,.btn{display:none!important}.page-shell{max-width:none;padding:0}body{background:#fff}.panel{border:0}.narrow-page{max-width:none}#issued-codes code{color:#000}}

/* Administrative question preview: keys never enter student markup. */
.bank-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.bank-actions form{margin:0}.bank-table td{vertical-align:middle}.bank-table th{white-space:nowrap}.bank-table td:nth-child(3){min-width:190px}.bank-table td:last-child{min-width:220px}.bank-upload{max-width:440px}.answer-key-value{white-space:pre-wrap;overflow-wrap:anywhere;font-size:1rem;color:inherit}.solution-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75}.bank-checksum{overflow-wrap:anywhere}#condition,#answer-key,#solution{scroll-margin-top:20px}
