:root{--page-bg:#f9f9f7;--surface:#fff;--ink:#0b0b0b;--ink-secondary:#52514e;--ink-muted:#898781;--border:#e1e0d9;--accent:#2a78d6;--accent-dark:#184f95;--good:#0ca30c;--good-bg:#e6f4ea;--critical:#d03b3b;--critical-bg:#fbe9e9;--shadow:0 1px 2px #0b0b0b0a, 0 1px 8px #0b0b0b0d}*{box-sizing:border-box}body{color:var(--ink);background:var(--page-bg);margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.6}main{max-width:46rem;margin:0 auto;padding:2.5rem 1.5rem 4rem}a{color:var(--accent-dark)}.site-header{background:var(--surface);border-bottom:1px solid var(--border)}.site-header .header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;max-width:46rem;margin:0 auto;padding:1rem 1.5rem;display:flex}.brand{letter-spacing:.01em;color:var(--ink);margin:0;font-weight:700}.site-header nav{gap:1.25rem;display:flex}.site-header nav a{color:var(--ink-secondary);font-weight:500;text-decoration:none}.site-header nav a:hover,.site-header nav a:focus-visible{color:var(--accent-dark);text-decoration:underline}h1{margin-block-end:.35rem;font-size:1.75rem}.lede{color:var(--ink-secondary);max-width:38rem;margin-block-start:0}.error{background:var(--critical-bg);color:#8a1f1f;border:1px solid #d03b3b40;border-radius:.5rem;padding:.75rem 1rem;font-weight:500}.panel{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:.75rem;margin-block:1.5rem;padding:1.5rem}.panel h2{margin-block-start:0}.progress-stat{flex-direction:column;gap:.6rem;margin-block-end:1rem;display:flex}.stat-value{font-variant-numeric:tabular-nums;margin:0;font-size:2rem;font-weight:700}.stat-unit{color:var(--ink-secondary);font-size:1rem;font-weight:500}progress.meter{background:var(--border);border:none;border-radius:999px;width:100%;height:.6rem;overflow:hidden}progress.meter::-webkit-progress-bar{background:var(--border);border-radius:999px}progress.meter::-webkit-progress-value{background:var(--accent);border-radius:999px}progress.meter::-moz-progress-bar{background:var(--accent);border-radius:999px}.chip-list{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.chip{background:var(--good-bg);color:#17591f;border-radius:999px;padding:.2rem .75rem;font-size:.9rem;font-weight:500}.muted{color:var(--ink-muted);margin:0}h2{font-size:1.2rem}.search-bar{flex-direction:column;gap:.35rem;max-width:24rem;margin-block:1rem .5rem;display:flex}.search-bar label{color:var(--ink-secondary);font-size:.9rem;font-weight:600}.search-bar input{flex:none;width:100%}#search-status{min-height:1.2rem;font-size:.9rem}.specialisation-grid{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.9rem;margin:.5rem 0 0;padding:0;list-style:none;display:grid}.specialisation-card{border:1px solid var(--border);border-radius:.6rem;flex-direction:column;gap:.4rem;padding:.9rem 1rem;display:flex}.specialisation-card h3{margin:0;font-size:1rem}.specialisation-card.is-chosen{border-color:var(--accent);background:#f3f8fe}.specialisation-pill{color:var(--ink-muted);margin:0;font-size:.8rem}.course-card.in-specialisation{border-left:3px solid var(--accent)}.permission-queue{flex-direction:column;gap:.75rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.permission-queue li{border:1px solid var(--border);border-radius:.6rem;flex-direction:column;gap:.4rem;padding:.75rem 1rem;display:flex}.permission-queue p{margin:0}.permission-reason{color:var(--ink-secondary);font-style:italic}.catalog{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:1.1rem;margin:0;padding:0;list-style:none;display:grid}.course-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:.75rem;flex-direction:column;gap:.5rem;padding:1.1rem 1.25rem;transition:transform .15s,box-shadow .15s;display:flex}.course-card:hover{transform:translateY(-2px);box-shadow:0 2px 4px #0b0b0b0f,0 4px 16px #0b0b0b14}.course-card.is-full{background:#fbfbfa}.course-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.course-card h3{margin:0;font-size:1.05rem}.units-pill{color:var(--ink-muted);white-space:nowrap;flex-shrink:0;font-size:.85rem}.seats{color:var(--good);margin:0;font-size:.9rem;font-weight:500}.seats.seats-full{color:var(--critical)}.prereqs{color:var(--ink-secondary);margin:0;font-size:.9rem}.blocked-note{color:var(--ink-secondary);margin:0;font-size:.85rem}.badge{border-radius:999px;align-items:center;gap:.3rem;width:fit-content;padding:.15rem .65rem;font-size:.85rem;font-weight:600;display:inline-flex}.badge-enrolled{color:var(--accent-dark);background:#e5eefb}.badge-completed{background:var(--good-bg);color:#17591f}form{flex-wrap:wrap;align-items:center;gap:.5rem;margin-block:0;display:flex}input{min-width:12rem;font:inherit;border:1px solid var(--border);border-radius:.4rem;flex:1;padding:.4rem .6rem}button{font:inherit;color:#fff;background:var(--accent);cursor:pointer;border:none;border-radius:.4rem;padding:.45rem 1rem;font-weight:600;transition:background .15s}button:hover:not(:disabled){background:var(--accent-dark)}button:disabled{background:var(--border);color:var(--ink-muted);cursor:not-allowed}.actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.actions form{margin:0}.actions button{color:var(--ink-secondary);border:1px solid var(--border);background:0 0}.actions button:hover:not(:disabled){background:var(--page-bg);color:var(--ink)}main :where(h2,h3){margin-block-start:2rem}main :where(p,li){color:var(--ink-secondary)}main :where(ul,ol){padding-inline-start:1.4rem}
