:root{font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:#20334b;background:#f1f5fa;font-synthesis:none}*{box-sizing:border-box}body{margin:0}header{background:#152d4a;color:#fff;padding:22px max(24px,calc((100vw - 1140px)/2));display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-weight:750;letter-spacing:.06em}.brand span{display:block;font-size:.8rem;font-weight:400;letter-spacing:0;color:#b9cee4;margin-top:5px}.badge{font-size:.72rem;background:#294663;padding:8px 10px;border-radius:6px}main{max-width:1140px;margin:34px auto;padding:0 22px;min-height:70vh}h1{font-size:1.9rem;margin:8px 0 10px}h2{font-size:1.2rem}p{line-height:1.6;color:#52657b}.card{background:#fff;border:1px solid #dce5ee;border-radius:12px;padding:25px;margin-bottom:20px;box-shadow:0 4px 16px #12345605}.login{max-width:500px;margin:60px auto}label{display:block;font-weight:650;margin:16px 0 8px}input,select{font:inherit;padding:12px;border:1px solid #9eafc0;border-radius:6px;width:100%;background:#fff;color:#20334b}button{font:inherit;cursor:pointer;background:#175caa;color:#fff;border:1px solid #175caa;border-radius:6px;padding:11px 18px;font-weight:600}form button{width:100%;margin-top:24px}button:disabled{opacity:.6;cursor:wait}input:focus-visible,select:focus-visible,button:focus-visible{outline:3px solid #e8a52c;outline-offset:3px}.secondary{background:#fff;color:#175caa}.hint{font-size:.86rem}.error{background:#fff1f1;border:1px solid #d89b9b;color:#8f2020;padding:16px;border-radius:7px;margin-bottom:18px}.welcome{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.eyebrow{font-size:.75rem;font-weight:750;letter-spacing:.08em;color:#175caa}.context{display:flex;gap:36px;align-items:center}.context>div{min-width:300px}.context label{margin-top:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.stats span{font-size:.88rem;color:#52657b}.stats h2{font-size:1.3rem;margin-bottom:0}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th,td{padding:14px;border-bottom:1px solid #e3eaf2;white-space:nowrap}th{font-size:.83rem;background:#eef4fa}li{line-height:1.9}footer{text-align:center;font-size:.8rem;color:#61758b;padding:25px}@media(max-width:700px){header{padding:18px;align-items:flex-start}.badge{max-width:130px}.stats{grid-template-columns:1fr;gap:0}.welcome,.context{display:block}.context>div{min-width:0}.welcome button{margin:10px 0}.login{margin:25px auto}h1{font-size:1.5rem}}.portal-skip{position:absolute;left:-10000px;top:8px;background:#fff;color:#152d4a;padding:12px;z-index:50}.portal-skip:focus{left:12px}.portal-nav{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 22px;padding:10px;background:#e3ebf5;border-radius:10px}.portal-nav button{background:#fff;color:#175caa;border-color:#c1cfde;flex:1;min-width:135px}.portal-nav button[aria-current=page]{background:#175caa;color:#fff;border-color:#175caa}.portal-heading{margin:0 0 22px}.portal-heading h2{font-size:1.55rem;margin-bottom:6px}.portal-heading p{margin-top:0}.portal-heading h2:focus{outline:3px solid #e8a52c;outline-offset:5px}.portal-launchers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.portal-launchers .card{display:flex;flex-direction:column}.portal-launchers p{flex:1}.portal-workspace{min-width:0}@media(max-width:760px){.portal-launchers{grid-template-columns:1fr}.portal-nav button{min-width:115px}.portal-heading h2{font-size:1.3rem}}.account-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.account-pilot{font-size:.72rem;background:#e8eff9;color:#214c7d;border-radius:6px;padding:7px 10px}.accounts details{padding:14px 0;border-top:1px solid #dfe7f0}.accounts summary{font-weight:650;cursor:pointer;color:#175caa}.account-form{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;padding:18px;background:#f6f9fe;border:1px solid #dce5f0;border-radius:8px;margin:16px 0}.account-form h3{grid-column:1/-1}.account-form button{margin-top:18px;align-self:end}.account-actions{display:flex;gap:8px;flex-wrap:wrap}.account-actions button{font-size:.8rem;padding:8px}.accounts td{vertical-align:top}.accounts td select{font-size:.8rem;min-width:140px}.account-success{background:#eaf7ef;border:1px solid #9bcdb1;color:#155b34;padding:12px;border-radius:7px}.account-secret{background:#fff8e5;border:1px solid #d4b14d;border-radius:8px;padding:15px}.account-secret code{display:block;overflow-wrap:anywhere;font-size:1.05rem;margin:12px 0}.accounts li button{margin-left:10px;padding:5px 10px;font-size:.8rem}@media(max-width:700px){.account-form{grid-template-columns:1fr}.account-heading{display:block}}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;background:#0f1e3273}.confirm-box{width:min(480px,100%);background:#fff;border-radius:10px;padding:22px 24px;box-shadow:0 12px 40px #00000040}.confirm-box h2{margin:0 0 8px;font-size:1.15rem}.confirm-box p{margin:0 0 18px;line-height:1.5}.confirm-actions{display:flex;gap:12px;flex-wrap:wrap}.academic-heading{display:flex;justify-content:space-between;gap:15px;align-items:center}.academic-label{font-size:.72rem;padding:7px 10px;border-radius:6px;background:#e5f0ff;color:#175caa;white-space:nowrap}.academic-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.academic-tabs button{background:#f3f7fc;color:#284867;border-color:#cad8e8;font-size:.82rem;padding:8px 11px}.academic-tabs button.active{background:#175caa;color:#fff;border-color:#175caa}.academic-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px;margin-bottom:25px;padding:0 18px 18px;background:#f6f9fd;border:1px solid #e3eaf2;border-radius:8px}.academic-form button{align-self:end;margin-top:18px;width:auto}.academic-form label{font-size:.86rem}.academic-form select,.academic-form input{min-width:0;width:100%;font-size:.9rem}.academic-success{background:#eaf7ef;border:1px solid #9bcdb1;border-radius:7px;padding:12px;color:#155b34}.academic h3{margin-top:25px}@media(max-width:700px){.academic-form{grid-template-columns:1fr}.academic-heading{align-items:flex-start}}.assessment-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.marks-state{display:inline-block;background:#e5eefb;color:#174d87;border-radius:6px;padding:6px 10px;font-size:.82rem;font-weight:750}.marks-table td{vertical-align:top}.marks-table td input,.marks-table td select{display:block;min-width:115px;max-width:170px;font-size:.82rem;margin-bottom:8px;padding:8px}.marks-table td input:disabled{background:#f0f3f7}.marks-actions{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.scheme-form,.reviewer-box{border:1px solid #dce5ee;background:#f7faff;border-radius:8px;padding:18px;margin-top:18px}.component-row{display:grid;grid-template-columns:1fr 2fr 1fr auto;gap:12px;align-items:end}.component-row label{font-size:.8rem}.component-row button{margin-bottom:1px}.reviewer-box form button{margin-top:18px}.assessments details{padding:12px 0;border-bottom:1px solid #e4eaf2}.assessments summary{cursor:pointer;font-weight:600}.marks-success{background:#eaf7ef;border:1px solid #9bcdb1;color:#155b34;padding:12px;border-radius:7px}@media(max-width:700px){.assessment-heading{display:block}.component-row{grid-template-columns:1fr 1fr}.marks-table td{min-width:145px}}.assessment-import-panel{background:#f5f9ff;border:1px solid #cbdcf0;border-radius:9px;padding:18px!important;margin:18px 0}.assessment-import-panel summary{color:#175caa}.import-actions{display:flex;gap:12px;flex-wrap:wrap;margin:15px 0}.assessment-import-panel>button{margin:14px 0}.import-confirm{display:flex;gap:10px;align-items:flex-start;font-size:.9rem}.import-confirm input{width:18px;min-width:18px;margin-top:3px}.import-success{background:#eaf7ef;border:1px solid #9bcdb1;color:#155b34;padding:12px;border-radius:7px}.assessment-import-panel table td{white-space:normal}.exam-warning{padding:14px;border:1px solid #c99534;background:#fff7e7;color:#70480c;border-radius:8px}.exam-actions{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.exam-cover{background:#fff;color:#20334b;border:2px solid #9eafc0;padding:24px;margin:20px auto;max-width:850px}.exam-cover h3{text-align:center}.exam-watermark{text-align:center;color:#913d18;font-weight:700;letter-spacing:.04em}.exam-part{padding:18px 0;border-bottom:1px solid #ccd6e2}.exam-part h4{margin:0 0 16px}.exam-fields{display:grid;grid-template-columns:minmax(140px,1fr) 2fr;gap:10px 20px}.exam-fields dt{font-weight:650}.exam-fields dd{margin:0;overflow-wrap:anywhere}.exam-tear{border-top:2px dashed #9b4c12;padding-top:8px;color:#9b4c12;font-size:.85rem}.exam-code-reservation{padding:14px;border:1px dashed #9eafc0;background:#f5f8fc}.exam-part caption{text-align:left;padding:8px 0;color:#52657b}@media(max-width:600px){.exam-fields{grid-template-columns:1fr}.exam-fields dd{margin-bottom:8px}.exam-cover{padding:16px}}@media print{.examination-preview .exam-cover{display:none!important}.examination-preview:after{content:"Synthetic booklet preview: operational printing is not implemented.";display:block}}.cover-options{display:flex;gap:20px;flex-wrap:wrap}.cover-options label{display:flex;gap:10px;align-items:center}.cover-review-scroll{overflow:auto;background:#eef1f6;padding:12px;margin-top:16px}.cover-review-image{display:block;width:100%;min-width:720px;max-width:1000px;height:auto;margin:auto;background:#fff}.reg-format-result{white-space:pre-wrap;overflow-wrap:anywhere;padding:12px;background:#f4f7fb;font-size:.85rem}@media print{.examination-preview{display:none!important}body:after{content:"Synthetic preview only. Operational booklet printing is not implemented.";display:block}}.student-entry-steps{display:grid;gap:12px;padding-left:1.4em}.student-entry-steps li{line-height:1.6}.student-entry-steps button,.student-entry-steps input{margin-left:8px}.student-entry-ok{padding:10px 12px;background:#e8f4ec;border-left:4px solid #2e7d4f;font-weight:600}.student-entry-replacing{padding:10px 12px;background:#fff6e0;border-left:4px solid #b7791f}.student-entry-replacing button{margin-left:8px}.student-status{display:inline-block;padding:2px 8px;border-radius:10px;background:#eef1f6;font-size:.85rem;white-space:nowrap}.student-status.ready_for_coe{background:#e8f4ec;color:#1e5c38}.student-status.returned{background:#fdecec;color:#8a1f1f}.student-review{margin:16px 0;padding:16px;border:1px solid #d5dbe5;border-radius:8px;background:#fafbfd}.student-rows{max-height:360px}.student-rows th,.student-rows td{white-space:nowrap;font-size:.85rem}.student-decision textarea{display:block;width:100%;margin:6px 0 10px}.student-status-cell{min-width:260px;white-space:normal}.student-status-cell div{margin:4px 0;font-size:.9rem}.sv-institution{margin:4px 0 10px}.sv-hint{color:#5b6b82;font-size:.88rem}.error-text{color:#8a1f1f}.sv-howto{margin:8px 0 14px;padding:10px 14px;border:1px solid #d5dbe5;border-radius:8px;background:#fafbfd}.sv-howto summary{cursor:pointer;font-weight:600}.sv-howto ol{margin:8px 0 0;padding-left:1.4em;line-height:1.6}.sv-programmes{list-style:none;margin:8px 0;padding:0;display:grid;gap:12px}.sv-programme{display:grid;gap:10px;padding:14px;border:1px solid #d5dbe5;border-radius:8px;background:#fff}.sv-programme.sv-selected{border-color:#1f5fae;box-shadow:0 0 0 2px #d8e6f8}.sv-programme-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;flex-wrap:wrap}.sv-count{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sv-count label{font-weight:600}.sv-count input{width:5.5em}.sv-next{font-size:.9rem;margin-bottom:6px}.sv-buttons{display:flex;flex-wrap:wrap;gap:6px}.student-status.draft,.student-status.final{background:#fff6e0;color:#7a4f0e}.student-status.none{background:#f2f2f2;color:#555}.sv-photo{display:inline-flex;align-items:center;justify-content:center;width:42px;height:54px;background:#f2f4f8;font-size:.7rem;color:#5b6b82}.sv-photo img{width:42px;height:54px;object-fit:cover}.sv-changed td{background:#fff9e8}.sv-changes td,.sv-changes th{white-space:normal}.sv-declaration{display:flex;gap:10px;align-items:flex-start;margin:6px 0 12px;padding:10px 12px;background:#fff6e0;border-left:4px solid #b7791f;font-weight:600;line-height:1.5}.sv-declaration input{flex:none;width:auto;margin-top:4px;transform:scale(1.2)}.sv-declaration span{flex:1}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sv-programme.sv-late{border-left:5px solid #b7791f}.sv-late-tag{display:inline-block;margin-right:8px;padding:1px 6px;border-radius:4px;background:#fff6e0;color:#7a4f0e;font-size:.75rem;font-weight:700;letter-spacing:.02em}.student-status.accepted{background:#dcefe3;color:#14532d;font-weight:600}.acc-stages{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.acc-stages button{font-size:.85rem}.acc-area{margin:16px 0 6px;color:#1f4e79;border-bottom:1px solid #d5dbe5;padding-bottom:4px}.acc-inst{margin-bottom:10px}.student-status.not_started{background:#f2f2f2;color:#666}.student-status.counted{background:#eef1f6;color:#273449}.student-status.submitted,.student-status.hod_approved{background:#e7f1fb;color:#1f4e79}.corr-changes{margin:0;padding-left:1.1em}.corr-form td:last-child input,.corr-form td:last-child select{width:100%;min-width:180px}.entry-state.applied{background:#e8f4ec;color:#1e5c38}.nowrap{white-space:nowrap}.cia-mark{width:3.2em;text-align:center}.cia-upload{display:inline-flex;gap:.5em;align-items:center}.sv-declare{display:flex;gap:.5em;align-items:flex-start;margin:.75em 0}.sv-declare input{width:auto;flex:none;margin-top:.2em}.er-lines{margin:0;padding-left:1rem;font-size:.85rem}.er-lines li{margin:.1rem 0}.fd-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}.fd-tile{border:1px solid #dce5ee;border-radius:10px;padding:12px 14px;background:#fafbfd}.fd-tile span{display:block;font-size:.8rem;font-weight:700;letter-spacing:.04em;color:#52657b;text-transform:uppercase}.fd-tile strong{display:block;font-size:1.45rem;color:#20334b;margin:4px 0}.fd-tile small{color:#52657b}.fd-headline{display:flex;align-items:center;gap:14px;margin:6px 0 4px}.fd-headline>span{font-weight:650;color:#20334b;white-space:nowrap}.fd-meter{display:flex;align-items:center;gap:8px;min-width:120px;flex:1}.fd-track{flex:1;border-radius:7px;overflow:hidden;min-width:80px}.fd-meter-big{font-size:1.25rem;font-weight:750;color:#20334b;min-width:4.5em}.fd-meter-small{font-size:.85rem;color:#20334b;min-width:3.5em}.fd-cell{min-width:160px}.fd-sub td{background:#fafbfd;font-size:.92rem}@media(max-width:700px){.fd-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.fd-headline{display:block}}.ht-images{align-items:flex-start;gap:28px;margin-top:12px}.ht-images>div{display:flex;flex-direction:column;gap:6px}.ht-preview{max-height:70px;max-width:220px;border:1px solid #dce5ee;background:#fff;padding:4px;object-fit:contain}.ht-verify{display:flex;gap:18px;align-items:flex-start;margin:12px 0}.ht-verify-photo{width:105px;height:135px;object-fit:cover;border:1px solid #20334b;display:flex;align-items:center;justify-content:center;font-size:.8rem;color:#52657b;text-align:center}.att-sessions{list-style:none;margin:8px 0;padding:0;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.att-session{width:100%;display:grid;gap:4px;text-align:left;padding:12px 14px;border:1px solid #d5dbe5;border-radius:8px;background:#fff;color:#1d2733;font-weight:400}.att-session strong{font-size:1.05rem}.att-session.att-due{border-left:5px solid #b7791f}.att-session.att-done{border-left:5px solid #2f7d4f;background:#f5fbf7}.att-back{justify-self:start}.att-status{margin:0}.att-find{width:min(100%,22em)!important}.att-course{margin:12px 0 4px;font-size:1rem}.att-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.att-list li{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid #e1e6ee;border-radius:8px;background:#fff}.att-list li.att-absent{background:#fdf0ef;border-color:#e3b4ae}.att-list li.att-void{background:#f6f7f9}.att-who{flex:1 1 14em;overflow-wrap:anywhere}.att-list button{min-height:44px;min-width:9em}.att-tag{font-weight:600}.att-spare{flex-basis:100%;display:grid;gap:8px}.att-spare input{width:100%;max-width:17em;font-size:1.05rem;letter-spacing:.04em}.att-submit{margin-top:12px;align-items:center}.att-submit button{min-height:48px}.att-only{display:flex;gap:6px;align-items:center}.rp-checks{display:flex;flex-wrap:wrap;gap:6px 18px;margin:6px 0 10px}.rp-checks label{display:inline-flex;gap:4px;align-items:center}.rp-wide{min-width:min(28em,100%)}.entry-countdown{margin:0 0 14px;padding:10px 14px;border-radius:8px;border-left:5px solid;font-size:1rem;line-height:1.5}.entry-countdown strong{font-variant-numeric:tabular-nums}.entry-countdown.green{background:#e8f4ec;border-color:#2e7d4f;color:#1e5c38}.entry-countdown.amber{background:#fff6e0;border-color:#b7791f;color:#7a4f0e}.entry-countdown.red{background:#fdecec;border-color:#b42318;color:#8a1f1f}.entry-countdown.closed{background:#eef1f6;border-color:#5b6b82;color:#273449}.entry-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:12px 0}.entry-form label{display:flex;flex-direction:column;gap:4px;font-weight:600}.entry-form label.wide{grid-column:1/-1}.entry-form textarea{width:100%}.entry-state{display:inline-block;padding:2px 8px;border-radius:10px;background:#eef1f6;font-size:.85rem;white-space:nowrap}.entry-state.open,.entry-state.approved{background:#e8f4ec;color:#1e5c38}.entry-state.proposed,.entry-state.upcoming{background:#fff6e0;color:#7a4f0e}.entry-state.rejected,.entry-state.withdrawn{background:#fdecec;color:#8a1f1f}.entry-decision{margin:12px 0;padding:14px;border:1px solid #d5dbe5;border-radius:8px;background:#fafbfd}.entry-decision textarea{display:block;width:100%;margin:6px 0 10px}.late-names{white-space:pre-line;max-width:260px;margin-top:4px}
