:root{--brand-navy:#1f2f4a;--brand-navy-dark:#16223a;--brand-accent:#a4471f;--brand-accent-soft:#c5714a;--sand:#e8d9c3;--page-bg:#eef0ec;--card-bg:#fff;--border:#c9cec5;--text:#1a1a1a;--muted:#55605c;--title-strip-bg:#dde6da;--status-eligible-bg:#eaf7ea;--status-eligible-border:#9fd39f;--status-enrolled-bg:#eaf1fb;--status-enrolled-border:#a9c3ec;--status-passed-bg:#f2f2f2;--status-passed-border:#ccc;--status-failed-bg:#fdecea;--status-failed-border:#f3b8b3;--status-blocked-bg:#fff6e0;--status-blocked-border:#e8cf8a;--status-eligible-text:#1a5c1a;--status-enrolled-text:var(--brand-navy);--status-passed-text:#333;--status-failed-text:#7a1f1f;--status-blocked-text:#6b3d00}*{box-sizing:border-box}body{color:var(--text);background-color:var(--page-bg);background-image:radial-gradient(circle at 1px 1px,#1f2f4a0d 1px,#0000 0);background-size:20px 20px;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.6}a{color:var(--brand-accent)}main{max-width:48rem;margin:0 auto;padding:1.5rem 1.25rem}nav:not(.portal-toolbar) a{margin-inline-end:1rem}.session-line{align-items:center;gap:.75rem;display:flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portal-header{border-bottom:1px solid var(--border);background:#fff}.portal-header__inner{grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;max-width:72rem;margin:0 auto;padding:.75rem 1.25rem;display:grid}.portal-brand{align-items:center;gap:.75rem;display:flex}.portal-crest{flex:none}.portal-wordmark{flex-direction:column;margin:0;line-height:1.15;display:flex}.portal-wordmark__line{color:var(--brand-navy);font-size:1.05rem;font-weight:700}.portal-wordmark__tag{letter-spacing:.08em;text-transform:uppercase;color:var(--brand-accent);font-size:.7rem;font-weight:600}.portal-system-name{text-align:center;color:var(--brand-navy);margin:0;font-size:1.1rem;font-weight:700}.portal-status{text-align:right;color:var(--muted);margin:0;font-size:.85rem}.portal-toolbar{background:var(--brand-navy)}.portal-toolbar__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;max-width:72rem;margin:0 auto;padding:.5rem 1.25rem;display:flex}.portal-toolbar__links{flex-wrap:wrap;gap:.25rem 1.25rem;margin:0;padding:0;list-style:none;display:flex}.portal-toolbar__links a{color:#fff;border-bottom:2px solid #0000;padding:.35rem .1rem;font-size:.92rem;text-decoration:none;display:inline-block}.portal-toolbar__links a:hover{border-bottom-color:var(--brand-accent-soft)}.portal-toolbar__links a[aria-current=page]{border-bottom-color:var(--brand-accent);font-weight:600}.portal-toolbar__links a:focus-visible,.portal-toolbar__tools a:focus-visible,.portal-toolbar__tools button:focus-visible{outline-offset:2px;outline:2px solid #fff}.portal-toolbar__tools{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.portal-search{max-width:100%}.portal-search input{width:12rem;max-width:100%;font:inherit;color:#dfe6ee;background:#2b3c5c;border:1px solid #56637c;border-radius:3px;padding:.35rem .6rem}.portal-search input::placeholder{color:#b7c1d3}.portal-search input:disabled{opacity:.75;cursor:not-allowed}.portal-logout button{color:#fff;font:inherit;cursor:pointer;background:0 0;border:1px solid #56637c;border-radius:3px;padding:.35rem .75rem}.portal-logout button:hover{border-color:var(--brand-accent-soft)}.portal-band{background:repeating-linear-gradient(-45deg, var(--brand-navy) 0px, var(--brand-navy) 14px, var(--brand-accent) 14px, var(--brand-accent) 20px, var(--sand) 20px, var(--sand) 26px);height:10px}.portal-title-strip{background:var(--title-strip-bg);border-bottom:1px solid var(--border)}.portal-title-strip h1{max-width:72rem;color:var(--brand-navy);margin:0 auto;padding:.85rem 1.25rem;font-size:1.4rem}.portal-main{max-width:72rem;margin:0 auto;padding:1.5rem 1.25rem 3rem}.portal-footer{border-top:1px solid var(--border);text-align:center;padding:1rem 1.25rem 2rem}.portal-footer p{max-width:40rem;color:var(--muted);margin:0 auto;font-size:.8rem}.tile-section{margin-block-end:2rem}.tile-section h2{color:var(--brand-navy);letter-spacing:.02em;margin-block:0 .75rem;font-size:1rem;font-weight:700}.tile-section h2:before{content:"⌄" / "";margin-inline-end:.4em}.tile-section--testing{border:1px dashed var(--brand-accent);background:#a4471f0d;border-radius:6px;padding:1rem}.testing-note{color:var(--muted);margin:0 0 .75rem;font-size:.85rem;font-style:italic}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:1rem;display:grid}@media (width<=420px){.tile-grid{grid-template-columns:1fr}}.tile{background:var(--card-bg);border:1px solid var(--border);text-align:center;color:var(--text);border-radius:6px;flex-direction:column;align-items:center;gap:.5rem;padding:1.25rem 1rem 1rem;text-decoration:none;display:flex;position:relative;overflow:hidden}a.tile{cursor:pointer;transition:box-shadow .1s}a.tile:hover{border-color:var(--brand-navy);box-shadow:0 2px 8px #1f2f4a26}a.tile:focus-visible{outline:3px solid var(--brand-accent);outline-offset:2px}.tile-icon{width:72px;height:72px}.tile__title{color:var(--brand-navy);margin:0;font-size:.95rem;font-weight:700}.tile__status{color:var(--muted);margin:0;font-size:.8rem}.tile--construction{color:#7a7a76;background:#f2f2f0}.tile--construction .tile__title{color:#6b6b67}.tile--construction .tile-icon{filter:grayscale();opacity:.55}.tile__ribbon{text-align:center;letter-spacing:.03em;text-transform:uppercase;color:#1a1a1a;background:#f4c93b repeating-linear-gradient(45deg,#f4c93b 0 10px,#1a1a1a 10px 20px);border:1px solid #1a1a1a;width:8rem;padding:.15rem 0;font-size:.65rem;font-weight:700;position:absolute;top:.6rem;right:-1.9rem;transform:rotate(45deg)}.signin-card,.auth-card{background:var(--card-bg);border:1px solid var(--border);border-radius:6px;max-width:32rem;margin:0 auto;padding:1.5rem}.signin-card h2{color:var(--brand-navy);margin-block-start:0}.stacked-form{flex-direction:column;align-items:stretch;gap:.4rem;margin-block:1rem 0;display:flex}.stacked-form label{font-size:.9rem;font-weight:600}.button-row{flex-wrap:wrap;gap:.75rem;margin-block-start:1rem;display:flex}.button-row form{margin:0}form{flex-wrap:wrap;align-items:center;gap:.5rem;margin-block:1.5rem;display:flex}form.inline-form{margin:0;display:inline-flex}input{min-width:12rem;font:inherit;border:1px solid var(--border);border-radius:3px;flex:1;padding:.45rem .6rem}button{font:inherit;border:1px solid var(--border);cursor:pointer;background:#f4f4f2;border-radius:3px;padding:.45rem 1.1rem}button:hover{border-color:var(--brand-navy)}.button{border:1px solid var(--border);color:var(--text);background:#f4f4f2;border-radius:3px;padding:.5rem 1.2rem;font-weight:600;text-decoration:none;display:inline-block}.button-primary,button.button-primary,.stacked-form button{background:var(--brand-navy);border-color:var(--brand-navy);color:#fff}.button-primary:hover,button.button-primary:hover,.stacked-form button:hover{background:var(--brand-navy-dark)}.notice{border:1px solid;border-radius:4px;padding:.6rem .9rem}.notice-error{color:#7a1f1f;background:#fdecea;border-color:#f3b8b3}.notice-info{color:var(--brand-navy);background:#eef1f8;border-color:#c3cfe6}.code{font-weight:600}.terms{color:var(--muted);font-size:.9em}table{border-collapse:collapse;width:100%;margin-block:1rem}th,td{border:1px solid var(--border);text-align:center;padding:.3rem .5rem}th[scope=row]{text-align:left}.pill{white-space:nowrap;border-radius:999px;padding:.2rem .65rem;font-size:.8rem;font-weight:700;display:inline-block}.pill-eligible{background:var(--status-eligible-bg);color:var(--status-eligible-text)}.pill-enrolled{background:var(--status-enrolled-bg);color:var(--status-enrolled-text)}.pill-passed{background:var(--status-passed-bg);color:var(--status-passed-text)}.pill-failed{background:var(--status-failed-bg);color:var(--status-failed-text)}.pill-blocked{background:var(--status-blocked-bg);color:var(--status-blocked-text)}.programme-banner{background:var(--brand-accent);color:#fff;border-radius:3px;margin:0 0 1rem;padding:.4rem .9rem;font-size:.9rem;font-weight:700;display:inline-block}.programme-banner--compact{margin-bottom:.85rem;padding:.2rem .6rem;font-size:.75rem}.lede{max-width:60ch;color:var(--muted)}.status-empty{color:var(--muted);margin:0;padding:.75rem 1rem;font-style:italic}.class-search-form{background:var(--card-bg);border:1px solid var(--border);border-radius:4px;align-items:end;gap:.6rem 1rem;margin-block:0 1.25rem;padding:.85rem 1rem}.class-search-form .field{flex-direction:column;gap:.2rem;min-width:9rem;display:flex}.class-search-form .field--grow{flex:14rem}.class-search-form .field--checkbox{flex-direction:row;align-items:center;gap:.4rem;min-width:0}.class-search-form label{color:var(--muted);font-size:.82rem;font-weight:600}.class-search-form .field--checkbox label{color:var(--text);font-weight:400}.class-search-form select,.class-search-form input[type=text]{border:1px solid var(--border);min-width:0;font:inherit;border-radius:3px;padding:.4rem .55rem}.class-search-form input[type=checkbox]{flex:none;width:1rem;min-width:0;height:1rem}.button-secondary{border:1px solid var(--brand-navy);color:var(--brand-navy);background:0 0;border-radius:3px;padding:.3rem .7rem;font-size:.85rem;font-weight:600}.button-secondary:hover{background:var(--brand-navy);color:#fff}.enrolled-compact{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.enrolled-compact li{background:var(--card-bg);border:1px solid var(--border);border-radius:3px;padding:.35rem .6rem}.summary-line{color:var(--muted);margin:0 0 .6rem;font-size:.92rem}.results-table{table-layout:fixed;border-collapse:collapse;background:var(--card-bg);width:100%;font-size:.9rem}.results-table caption{text-align:left}.results-table th,.results-table td{border:none;border-block-end:1px solid var(--border);text-align:left;vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;padding:.4rem .6rem;overflow:hidden}.results-table thead th{background:var(--title-strip-bg);color:var(--brand-navy);border-block-end:1px solid var(--border);font-size:.8rem}.results-table th:first-child,.results-table td:first-child{white-space:nowrap;text-overflow:clip;width:7.5rem;overflow:visible}.results-table th:nth-child(2),.results-table td:nth-child(2){white-space:normal;text-overflow:clip;width:auto;overflow:visible}.results-table th:nth-child(3),.results-table td:nth-child(3){white-space:normal;text-overflow:clip;width:9rem;overflow:visible}.results-table th:nth-child(4),.results-table td:nth-child(4){white-space:normal;width:16rem;overflow:visible}.results-table th:nth-child(5),.results-table td:nth-child(5){text-align:right;width:5rem}.results-row__code{box-shadow:inset 3px 0 0 var(--row-stripe,transparent)}.results-row--eligible .results-row__code{--row-stripe:var(--status-eligible-border)}.results-row--enrolled .results-row__code{--row-stripe:var(--status-enrolled-border)}.results-row--blocked .results-row__code{--row-stripe:var(--status-blocked-border)}.results-row--passed .results-row__code{--row-stripe:var(--status-passed-border)}.results-row--failed .results-row__code{--row-stripe:var(--status-failed-border)}.results-row--muted,.results-row--muted .results-row__title,.results-row--muted .results-row__terms{color:var(--muted)}.status-dot{background:var(--dot-colour,var(--muted));border-radius:50%;flex:none;width:.55em;height:.55em;margin-inline-end:.4em;display:inline-block}.status-dot--eligible{--dot-colour:var(--status-eligible-text)}.status-dot--enrolled{--dot-colour:var(--status-enrolled-text)}.status-dot--blocked{--dot-colour:var(--status-blocked-text)}.status-dot--passed{--dot-colour:var(--status-passed-text)}.status-dot--failed{--dot-colour:var(--status-failed-text)}.results-row__elig{color:var(--elig-colour,var(--text));align-items:baseline;gap:.35em;min-width:0;display:flex}.results-row--eligible .results-row__elig{--elig-colour:var(--status-eligible-text)}.results-row--enrolled .results-row__elig{--elig-colour:var(--status-enrolled-text)}.results-row--blocked .results-row__elig{--elig-colour:var(--status-blocked-text)}.results-row--passed .results-row__elig{--elig-colour:var(--status-passed-text)}.results-row--failed .results-row__elig{--elig-colour:var(--status-failed-text)}.elig-text{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:.88em;overflow:hidden}.elig-details{white-space:nowrap;flex:none;margin-inline-start:.4em;display:inline}.elig-details summary{cursor:pointer;color:var(--brand-accent);font-size:.85em;text-decoration:underline;display:inline}.elig-details p{color:var(--text);white-space:normal;margin:.3rem 0 0;font-size:.9em;display:block}.results-row__action form{justify-content:flex-end;margin:0}.records-note{color:var(--muted);font-size:.9rem}.records-table{background:var(--card-bg)}.records-table th,.records-table td{text-align:left}.records-table th[scope=col]{background:var(--title-strip-bg);color:var(--brand-navy)}.records-table tbody tr:nth-child(2n){background:var(--page-bg)}.godmode-callout{max-width:60ch}.godmode-filter{background:var(--card-bg);border:1px solid var(--border);border-radius:4px;margin-block:.75rem .25rem;padding:.6rem .8rem}.godmode-filter label{font-size:.9rem;font-weight:600}.table-scroll{overflow-x:auto}.godmode-table{min-width:32rem}.godmode-table thead th{background:var(--title-strip-bg);color:var(--brand-navy);position:sticky;top:0}.godmode-table tbody tr:nth-child(2n){background:var(--page-bg)}.godmode-table th[scope=row]{white-space:nowrap}.readme-content{max-width:42rem;margin:0 auto}.readme-content img{max-width:100%}@media (width<=640px){.portal-header__inner{text-align:center;grid-template-columns:1fr;justify-items:center;gap:.35rem}.portal-status{text-align:center}}@media (width<=600px){.results-table,.results-table tbody{width:100%;display:block}.results-table thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.results-table tr.results-row{border-block-end:1px solid var(--border);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"code course course""terms elig action";gap:.15rem .5rem;width:100%;padding:.45rem .6rem;display:grid;overflow:hidden}.results-table th,.results-table td{white-space:normal;text-overflow:clip;border:none;width:auto;padding:0;overflow:visible}.results-table th:first-child,.results-table td:first-child,.results-table th:nth-child(2),.results-table td:nth-child(2),.results-table th:nth-child(3),.results-table td:nth-child(3),.results-table th:nth-child(4),.results-table td:nth-child(4),.results-table th:nth-child(5),.results-table td:nth-child(5){width:auto}.results-row__code{grid-area:code;min-width:0}.results-row__title{grid-area:course;min-width:0;font-weight:600}.results-row__terms{color:var(--muted);grid-area:terms;min-width:0;font-size:.82rem}.results-row__elig{grid-area:elig;min-width:0}.results-row__action{text-align:right;grid-area:action;min-width:0}.class-search-form{flex-direction:column;align-items:stretch}.class-search-form .field,.class-search-form .field--grow{min-width:0}.class-search-form .field--grow{flex:0 auto}}
