@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&display=swap";:root{--bg: #e8efe9;--bg-deep: #d7e4db;--ink: #12201b;--muted: #3d4f48;--line: #c9d7ce;--card: #f7fbf8;--sidebar: #10201b;--sidebar-text: #e8f2ec;--sidebar-muted: #9bb0a6;--primary: #1f4e46;--primary-ink: #ffffff;--accent: #c46b2c;--danger: #8f2d2d;--warn: #8a5a12;--ok: #1d6b45;--shadow: 0 10px 30px rgba(16, 32, 27, .06);--radius: 10px;--font: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;color:var(--ink);background:radial-gradient(circle at 12% 8%,rgba(31,78,70,.12),transparent 34%),radial-gradient(circle at 88% 0%,rgba(196,107,44,.1),transparent 28%),linear-gradient(180deg,var(--bg),var(--bg-deep));font-family:var(--font);font-size:15px;line-height:1.45}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.92em;background:#10201b0f;padding:.1em .35em;border-radius:6px}.demo-banner{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:8px 16px;background:#12352f;color:#e8f2ec;font-size:13px}.demo-banner span{color:#b7cfc5}.demo-offset{min-height:calc(100vh - 38px)}.boot{min-height:100vh;display:grid;place-items:center}.boot-card{padding:18px 22px;border-radius:12px;background:var(--card);border:1px solid var(--line)}.app-shell{display:grid;grid-template-columns:248px 1fr;height:100vh;overflow:hidden}.sidebar{background:linear-gradient(180deg,rgba(31,78,70,.28),transparent 40%),var(--sidebar);color:var(--sidebar-text);padding:24px 16px;display:flex;flex-direction:column;gap:24px;border-right:1px solid rgba(255,255,255,.04);height:100%;overflow-y:auto;min-height:0}.brand{display:flex;gap:12px;align-items:center}.brand img,.mark{width:40px;height:40px;border-radius:10px;object-fit:cover;background:var(--primary);color:var(--primary-ink);display:grid;place-items:center;font-weight:600;font-size:16px}.brand strong{display:block;font-size:15px;letter-spacing:0;font-weight:600}.brand span{color:var(--sidebar-muted);font-size:12px}nav{display:flex;flex-direction:column;gap:4px}nav a{text-decoration:none;padding:9px 11px;border-radius:10px;color:var(--sidebar-text);transition:background .15s ease,transform .15s ease}nav a:hover{background:#ffffff12;transform:translate(1px)}nav a.active{background:#ffffff1a;box-shadow:inset 3px 0 0 var(--accent)}.sidebar footer{margin-top:auto;color:var(--sidebar-muted);font-size:13px;display:grid;gap:6px}.sidebar .muted-line{color:var(--sidebar-muted);font-size:12px;word-break:break-all}.sidebar button.linkish{background:none;border:0;color:var(--sidebar-text);padding:0;cursor:pointer;text-align:left}.main{padding:30px 34px 56px;height:100%;overflow-y:auto;min-height:0}.course-picker{width:100%;min-height:180px;padding:8px}.course-multi{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:6px}.course-multi table{margin:0}.course-multi .check-col{width:36px;text-align:center}.pathway-builder{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch}.pathway-pane{border:1px solid var(--line);border-radius:8px;min-height:280px;display:flex;flex-direction:column;background:#ffffff59}.pathway-pane-head{display:flex;flex-direction:column;gap:8px;padding:12px 12px 8px;border-bottom:1px solid var(--line)}.pathway-pane-head h3{margin:0;font-size:15px}.pathway-list{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1;max-height:360px}.pathway-list.ordered{list-style:none}.pathway-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 6px;border-bottom:1px solid rgba(0,0,0,.06)}.pathway-list li:last-child{border-bottom:0}.pathway-actions{display:flex;gap:4px;flex-wrap:wrap}.pathway-pos{margin-right:4px}.student-picker{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;background:#fff}.student-picker li{border-bottom:1px solid var(--line)}.student-picker li:last-child{border-bottom:0}.student-picker .muted{color:var(--muted)}.student-pick{width:100%;text-align:left;background:#fff;border:0;border-radius:0;padding:10px 12px;display:flex;flex-direction:column;gap:2px;box-shadow:none;color:var(--ink);justify-content:flex-start;align-items:flex-start;filter:none;transform:none}.student-pick strong{color:var(--ink);font-weight:600}.student-pick:hover,.student-pick:focus-visible{background:#eef5f1;filter:none;transform:none;color:var(--ink)}.page-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:20px}.page-head h1{margin:0;font-size:24px;letter-spacing:0;font-weight:600}.page-head p{margin:8px 0 0;color:var(--muted);max-width:62ch}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.counters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}.counter,.card,.panel{background:color-mix(in srgb,var(--card) 92%,white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.counter{padding:12px 14px}a.counter-link{display:block;text-decoration:none;color:inherit;transition:border-color .12s ease,transform .12s ease,box-shadow .12s ease;cursor:pointer}a.counter-link:hover,a.counter-link:focus-visible{border-color:var(--primary);transform:translateY(-1px);box-shadow:0 8px 20px #10201b1a;outline:none}.counter span{display:block;color:var(--muted);font-size:12px;font-weight:500;margin-bottom:6px;letter-spacing:.02em;text-transform:uppercase}.counter strong{font-size:22px;letter-spacing:0;font-weight:600;font-variant-numeric:tabular-nums}.card{padding:18px}.panel{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.toolbar-panel{display:grid}.table-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--line)}.search-field{margin:0;min-width:min(280px,100%)}.search-field input{width:100%}.filter-field{margin:0;min-width:140px;font-size:13px;color:var(--ink);font-weight:500}.filter-field select{margin-top:4px}.sort-th{background:transparent;border:0;color:inherit;padding:0;margin:0;font:inherit;font-weight:600;box-shadow:none;border-radius:0;justify-content:flex-start;transform:none;filter:none;cursor:pointer}.sort-th:hover,.sort-th:focus-visible{transform:none;filter:none;color:var(--primary)}.sort-th.is-active{color:var(--primary)}.sort-indicator{font-weight:700}.radio-fieldset{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0;display:grid;gap:8px}.radio-fieldset legend{padding:0 6px;font-size:13px;font-weight:600;color:var(--ink)}.radio-row{display:flex!important;align-items:center;gap:8px;font-weight:500;color:var(--ink);grid-template-columns:none}.radio-row input{width:auto;margin:0}.pathway-courses-cell{max-width:42ch;line-height:1.35}.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}.pagination{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:12px 14px;border-top:1px solid var(--line)}.pagination button:disabled{opacity:.45;cursor:not-allowed}tr:last-child td{border-bottom:0}.num{font-variant-numeric:tabular-nums}button,.button{border:1px solid transparent;background:var(--primary);color:var(--primary-ink);border-radius:10px;padding:9px 13px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:transform .12s ease,filter .12s ease}button:hover,.button:hover{filter:brightness(1.05);transform:translateY(-1px)}button.secondary,.button.secondary{background:transparent;color:var(--ink);border-color:var(--line)}button.danger{background:transparent;color:var(--danger);border-color:#e4c1c1}button:disabled{opacity:.55;cursor:not-allowed;transform:none}label{display:grid;gap:6px;font-size:13px;color:var(--ink);font-weight:500}label>span,.label-hint{color:var(--muted);font-weight:400}input,select,textarea{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 11px;width:100%}textarea{min-height:140px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stack{display:grid;gap:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 9px;font-size:12px;border:1px solid var(--line);background:#eef5f0}.badge.wait{color:var(--warn);background:#fbf3e4;border-color:#edd7ae}.badge.ok{color:var(--ok);background:#e8f5ee;border-color:#bfe3cd}.badge.bad{color:var(--danger);background:#fdecec;border-color:#f0c7c7}.badge.idle{color:var(--muted)}.notice,.error{border-radius:12px;padding:11px 13px;margin-bottom:14px}.notice{background:#f4f8f1;border:1px solid #d5e3cf}.error{background:#fdecec;border:1px solid #f0c7c7;color:var(--danger)}.waiting-line{box-shadow:inset 3px 0 0 var(--accent);background:#fff8f1}.step-row-complete{box-shadow:inset 3px 0 0 var(--ok);background:#e8f5ee}.step-row-ready{box-shadow:inset 3px 0 0 var(--warn);background:#fbf3e4}.step-row-waiting{box-shadow:inset 3px 0 0 var(--danger);background:#fdecec}.step-row-progress{box-shadow:inset 3px 0 0 var(--primary);background:#f3faf7}.muted{color:var(--muted)}.asof{color:var(--muted);font-size:13px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#10201b7a;display:grid;place-items:center;padding:20px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:min(560px,100%);background:var(--card);border-radius:16px;padding:20px;border:1px solid var(--line);box-shadow:var(--shadow);animation:rise .18s ease-out}.modal h2{margin:0 0 8px;font-size:18px;font-weight:600;color:var(--ink)}.modal p{color:var(--ink)}.enrol-meta{margin:0 0 12px;display:grid;gap:10px}.enrol-meta dt{margin:0;font-size:12px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.enrol-meta dd{margin:2px 0 0;color:var(--ink);font-weight:600;font-size:15px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:28px}.login-stage{width:min(980px,100%);display:grid;grid-template-columns:1.1fr .9fr;gap:24px;align-items:stretch}.login-hero{padding:28px 8px;display:grid;align-content:center;gap:12px}.login-hero .eyebrow{margin:0;text-transform:uppercase;letter-spacing:.08em;font-size:12px;color:var(--muted)}.login-hero h1{margin:0;font-size:clamp(28px,4vw,36px);font-weight:600;letter-spacing:0;line-height:1.15}.login-hero p{margin:0;color:var(--muted);max-width:38ch;font-size:17px}.login{width:100%}.charts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.charts h2{margin:0 0 12px;font-size:15px;font-weight:600}.bars{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;align-items:end;height:148px}.bars div{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:4px}.bars i{display:block;width:100%;background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 80%,white),var(--primary));border-radius:5px 5px 0 0;min-height:2px}.bars span{font-size:10px;color:var(--muted)}.tabs{display:flex;gap:6px;margin-bottom:12px}.section{margin-top:22px}.section h2{font-size:16px;margin:0 0 8px;font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 1100px){.app-shell{grid-template-columns:1fr;height:auto;min-height:100vh;overflow:visible}.counters,.charts,.form-grid,.login-stage,.pathway-builder{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:2;height:auto;max-height:none;overflow:visible}nav{flex-direction:row;flex-wrap:wrap}.main{padding:22px 18px 40px;height:auto;overflow:visible}}.search-field label,label.search-field{font-size:13px;color:var(--ink);font-weight:500}.search-field input{margin-top:4px}.search-field>span:not(.sr-only){color:var(--ink);font-weight:500}.checkbox-left{display:flex;justify-content:flex-start;align-items:center;gap:8px;text-align:left}.checkbox-left input[type=checkbox],.row input[type=checkbox]{width:auto;margin:0;flex:none}.assign-row{align-items:end}.assign-row>label{min-width:0}.assign-row .student-picker{grid-column:1 / -1}.modal.modal-wide{width:min(860px,100%);max-height:90vh;overflow-y:auto}.secret-box{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:#fff}.secret-box code{font-size:15px;letter-spacing:.04em;-webkit-user-select:all;user-select:all;padding:2px 6px;background:#f4f8f1;border-radius:6px}.empty-state{padding:28px 18px;text-align:center;color:var(--muted)}.empty-state strong{display:block;color:var(--ink);margin-bottom:4px}.progress-bar-cell{min-width:90px}.bulk-box{display:grid;gap:10px}.bulk-box textarea{min-height:120px;font-family:ui-monospace,Consolas,monospace;font-size:12px}th .sort-th{text-transform:uppercase;font-size:11px;letter-spacing:.04em}
