/* =============================================================================
   BTEC CAMPUS — DESIGN SYSTEM · LAYER 2: SHELL & COMPONENTS
   Consumes only the semantic tokens from sims-tokens.css.
   ============================================================================= */

/* ══════════════════════════ 1. APP SHELL ══════════════════════════ */
.app{
  --app-footer-h:88px;
  display:flex;min-height:100vh;width:100%;overflow-x:clip;
}

/* ========================================================================== */
/* Attendance, assessments and student finance                               */
/* ========================================================================== */
.attendance-state{display:inline-flex;align-items:center;gap:6px;width:max-content;padding:5px 9px;border:1.5px solid var(--line);border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;background:var(--surface)}
.attendance-state--attended{color:var(--success);border-color:var(--success)}
.attendance-state--absent{color:var(--danger);border-color:var(--danger)}
.attendance-state--not-yet{color:#9a6500;border-color:#ffb700;background:color-mix(in srgb,#ffb700 12%,var(--surface))}
.attendance-state--not-recorded{color:var(--muted)}
.schedule-block .attendance-state{margin-top:auto;font-size:8.5px;padding:3px 6px}
.attendance-session-grid,.assessment-grid,.attendance-report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:24px}
.assessment-gradebook{margin-bottom:20px}.assessment-gradebook__scroll{max-height:304px;overflow:auto}.assessment-gradebook td strong,.assessment-gradebook td .d{display:block}.assessment-gradebook td .d{margin-top:3px}.assessment-final-score{font-size:1.05rem}
.attendance-session-card,.assessment-card{margin:0;min-width:0;overflow:hidden}
.attendance-session-card.is-open{box-shadow:0 0 0 2px var(--success),var(--shadow-card)}
.attendance-session-card.is-locked{opacity:.82}
.attendance-session-meta{display:grid;gap:10px;margin-bottom:16px}.attendance-session-meta span{display:flex;align-items:center;gap:9px}.attendance-session-meta i{color:var(--brand)}
.attendance-register-scroll{max-height:54vh;overflow:auto}.attendance-choice{display:flex;gap:10px;flex-wrap:wrap}.attendance-choice label{cursor:pointer}.attendance-choice input{position:absolute;opacity:0;pointer-events:none}.attendance-choice input:not(:checked)+span{opacity:.42;filter:saturate(.35)}.attendance-choice input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}
.attendance-report-card{margin-bottom:20px}.attendance-report-scroll{max-height:420px;overflow:auto}.attendance-progress{width:100px;height:8px;background:var(--surface-muted);border:1px solid var(--line);border-radius:99px;overflow:hidden;display:inline-block;margin-right:8px}.attendance-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--success),#ffb700,var(--danger));border-radius:inherit}.attendance-progress--large{display:block;width:100%;height:14px;margin:14px 0}.attendance-rate{display:flex;align-items:end;gap:8px}.attendance-rate strong{font-family:var(--font-display);font-size:42px;line-height:1}.attendance-rate span{font-weight:800;color:var(--muted)}.attendance-stats{display:flex;gap:20px;flex-wrap:wrap;margin-top:16px}.attendance-stats span{display:grid;color:var(--muted)}.attendance-stats strong{font-size:20px;color:var(--ink)}
.student-attendance__head{margin-bottom:14px;}
.student-attendance__workspace{margin:0;overflow:hidden;}
.student-attendance__toolbar{
  display:flex;align-items:end;justify-content:space-between;gap:20px;
  padding:14px 18px;background:var(--surface-2);border-bottom:var(--bw-2) solid var(--rule-hard);
}
.student-attendance__filters{
  flex:1;display:grid;grid-template-columns:minmax(320px,1.8fr) minmax(180px,.7fr);
  gap:12px;max-width:880px;
}
.student-attendance__filters .form-label{margin-bottom:5px;}
.student-attendance__course-menu{position:relative;z-index:20;}
.student-attendance__course-toggle{
  width:100%;height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:6px 13px;text-align:left;color:var(--ink);background:var(--field-bg);
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);box-shadow:var(--sh-hard-xs);
}
.student-attendance__course-toggle>span{
  min-width:0;display:flex;align-items:baseline;gap:7px;overflow:hidden;white-space:nowrap;
}
.student-attendance__course-toggle strong,
.student-attendance__course-toggle small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.student-attendance__course-toggle strong{flex:0 0 auto;font-size:.9rem;letter-spacing:.01em;}
.student-attendance__course-toggle small{min-width:0;color:var(--ink);font-size:.9rem;font-weight:var(--fw-bold);}
.student-attendance__course-separator{flex:0 0 auto;color:var(--ink-subtle);font-weight:var(--fw-bold);}
.student-attendance__course-toggle i{flex:0 0 auto;transition:transform var(--dur-fast) var(--ease-out);}
.student-attendance__course-menu.is-open .student-attendance__course-toggle i{transform:rotate(180deg);}
.student-attendance__course-options{
  position:absolute;top:calc(100% + 6px);right:0;left:0;z-index:1080;
  max-height:250px;padding:5px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;
  background:var(--surface);border:var(--bw-2) solid var(--rule-hard);
  border-radius:var(--r-md);box-shadow:var(--sh-hard-lg);
}
.student-attendance__course-option{
  width:100%;min-height:48px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;gap:10px;padding:8px 10px;text-align:left;color:var(--ink);
  background:transparent;border:0;border-radius:var(--r-sm);
}
.student-attendance__course-option:hover,
.student-attendance__course-option.is-selected{background:var(--surface-selected);}
.student-attendance__course-option strong{font-size:var(--t-xs);color:var(--brand-text);}
.student-attendance__course-option span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--t-xs);font-weight:var(--fw-bold);}
.student-attendance__course-option small{color:var(--ink-subtle);font-size:var(--t-label);}
.student-attendance__legend{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap;}
.student-attendance__panels{min-height:0;}
.student-attendance__panel{min-height:0;display:flex;flex-direction:column;}
.student-attendance__panel[hidden]{display:none;}
.student-attendance__overview{
  flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(420px,.8fr);
  grid-template-areas:"course limit" "kpis limit";gap:12px 18px;
  padding:14px 18px;border-bottom:var(--bw-1) solid var(--hairline);background:var(--surface);
}
.student-attendance__course-intro{
  grid-area:course;display:flex;align-items:center;justify-content:space-between;gap:18px;min-width:0;
}
.student-attendance__course-intro h2{margin:3px 0 0;font-size:clamp(1.2rem,1.55vw,1.6rem);}
.student-attendance__course-pills{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;}
.student-attendance__kpis{grid-area:kpis;display:grid;grid-template-columns:1.35fr repeat(3,1fr);gap:8px;}
.student-attendance__kpi{
  min-width:0;padding:9px 11px;border:var(--bw-1) solid var(--hairline-strong);
  border-radius:var(--r-sm);background:var(--surface-2);
}
.student-attendance__kpi>span,
.student-attendance__kpi>small{display:block;color:var(--ink-subtle);}
.student-attendance__kpi>span{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.06em;text-transform:uppercase;}
.student-attendance__kpi>strong{display:block;margin:2px 0;font-size:clamp(1.4rem,1.8vw,1.85rem);line-height:1;color:var(--ink);}
.student-attendance__kpi>small{font-size:.64rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.student-attendance__kpi--rate{background:color-mix(in srgb,var(--info) 9%,var(--surface));}
.student-attendance__limit{
  grid-area:limit;align-self:stretch;display:flex;flex-direction:column;justify-content:center;
  padding:14px 16px;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);
  background:color-mix(in srgb,var(--warning) 11%,var(--surface));box-shadow:var(--sh-hard-xs);
}
.student-attendance__limit-copy{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;}
.student-attendance__limit-icon{
  display:grid;place-items:center;width:36px;height:36px;border:var(--bw-2) solid var(--rule-hard);
  border-radius:11px;background:var(--warning);color:var(--ink-on-accent);box-shadow:var(--sh-hard-xs);
}
.student-attendance__limit-copy strong,
.student-attendance__limit-copy span{display:block;}
.student-attendance__limit-copy span{font-size:var(--t-label);color:var(--ink-muted);}
.student-attendance__limit-copy b{font-size:1.35rem;color:var(--ink);font-variant-numeric:tabular-nums;}
.student-attendance__limit-track{
  height:12px;margin:12px 0 7px;overflow:hidden;border:var(--bw-2) solid var(--rule-hard);
  border-radius:999px;background:var(--surface);
}
.student-attendance__limit-track span{display:block;height:100%;background:linear-gradient(90deg,var(--success),var(--warning),var(--danger));}
.student-attendance__limit>small{font-size:.65rem;color:var(--ink-subtle);}
.student-attendance__sessions{min-height:0;display:flex;flex-direction:column;}
.student-attendance__sessions-head{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:10px 18px;border-bottom:var(--bw-1) solid var(--hairline);background:var(--surface-2);
}
.student-attendance__sessions-head h3{display:flex;align-items:center;gap:7px;margin:0;font-size:1rem;}
.student-attendance__session-label{color:var(--ink-subtle);font-weight:var(--fw-black);}
.student-attendance__session-scroll{min-height:0;overflow-y:scroll;scrollbar-gutter:stable;overscroll-behavior:contain;}
.student-attendance__session-scroll .tbl thead tr{height:34px;}
.student-attendance__session-scroll .tbl tbody tr{height:41px;}
.student-attendance__session-scroll .tbl tbody td{padding-block:4px;}
.student-attendance__session-scroll .student-attendance__lessons{width:86px;text-align:center;}
.student-attendance__session-scroll .d{display:block;margin-top:2px;font-size:var(--t-label);color:var(--ink-subtle);}
.student-attendance__empty{min-height:420px;display:grid;place-items:center;}

@media (min-width:992px){
  body.student-attendance-shell{height:100vh;height:100dvh;overflow:hidden;}
  .student-attendance-shell .app,
  .student-attendance-shell .app-main{height:100vh;height:100dvh;min-height:0;overflow:hidden;}
  .student-attendance-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-block:clamp(9px,1.3vh,14px);
  }
  .student-attendance-shell .student-attendance__head{flex:0 0 auto;margin-bottom:3px;}
  .student-attendance-shell .student-attendance__head .crumbs{margin-bottom:2px;font-size:.66rem;}
  .student-attendance-shell .student-attendance__head .page-title{font-size:1.8rem;}
  .student-attendance-shell .student-attendance__workspace{
    flex:1;min-height:0;display:flex;flex-direction:column;
  }
  .student-attendance-shell .student-attendance__toolbar{flex:0 0 auto;padding:6px 14px;}
  .student-attendance-shell .student-attendance__filters .form-label{margin-bottom:2px;font-size:.6rem;}
  .student-attendance-shell .student-attendance__course-toggle,
  .student-attendance-shell .student-attendance__filters .form-select{height:38px;min-height:38px;}
  .student-attendance-shell .student-attendance__panels{flex:1;display:flex;flex-direction:column;}
  .student-attendance-shell .student-attendance__panel{flex:1;}
  .student-attendance-shell .student-attendance__overview{flex:1 1 auto;align-content:center;padding:7px 14px;gap:6px 14px;}
  .student-attendance-shell .student-attendance__course-intro h2{margin-top:1px;font-size:1.1rem;}
  .student-attendance-shell .student-attendance__course-intro .eyebrow{font-size:.58rem;}
  .student-attendance-shell .student-attendance__kpis{gap:6px;}
  .student-attendance-shell .student-attendance__kpi{padding:5px 8px;}
  .student-attendance-shell .student-attendance__kpi>strong{font-size:1.2rem;}
  .student-attendance-shell .student-attendance__kpi>small{display:none;}
  .student-attendance-shell .student-attendance__limit{padding:8px 11px;}
  .student-attendance-shell .student-attendance__limit-icon{width:30px;height:30px;}
  .student-attendance-shell .student-attendance__limit-track{height:9px;margin:7px 0 4px;}
  .student-attendance-shell .student-attendance__sessions-head{padding:7px 14px;}
  .student-attendance-shell .student-attendance__sessions{flex:0 0 auto;}
  .student-attendance-shell .student-attendance__session-scroll{height:231px;flex:0 0 231px;}
}

/* Assessment composer: compact setup plus an internally scrolling question workspace. */
.assessment-editor__head .page-head-row{align-items:flex-end;}
.assessment-editor{display:flex;flex-direction:column;gap:12px;min-height:0;}
.assessment-editor__validation:empty{display:none;}
.assessment-editor__settings{flex:0 0 auto;overflow:hidden;}
.assessment-editor__settings-head{min-height:58px;padding:10px 16px;}
.assessment-editor__settings-head .card-title{margin-top:2px;}
.assessment-editor__settings-tools{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;}
.assessment-editor__settings-tools>.btn{min-height:42px;}
.assessment-editor__question-count{display:inline-grid;place-items:center;min-width:24px;height:24px;margin-left:4px;padding:0 6px;border:1px solid currentColor;border-radius:999px;font-size:var(--t-label);}
.assessment-editor__score{display:flex;align-items:center;gap:12px;padding:7px 12px;border:var(--bw-1) solid var(--line);border-radius:var(--r-pill);background:var(--surface);}
.assessment-editor__score span{color:var(--ink-subtle);font-size:var(--t-label);font-weight:800;text-transform:uppercase;letter-spacing:.06em;}
.assessment-editor__score strong{font-size:1rem;}
.assessment-editor__settings-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:9px 12px;padding:12px 16px 14px;}
.assessment-editor__settings-grid .field{min-width:0;}
.assessment-editor__settings-grid .form-label{margin-bottom:4px;font-size:var(--t-label);}
.assessment-editor__settings-grid :is(.form-control,.form-select){min-height:40px;padding-block:8px;}
.assessment-editor__settings-grid textarea.form-control{min-height:40px;resize:none;}
.assessment-editor__settings-grid .field--course{grid-column:span 3;}
.assessment-editor__settings-grid .field--title{grid-column:span 5;}
.assessment-editor__settings-grid .field--status{grid-column:span 2;}
.assessment-editor__settings-grid .field--points{grid-column:span 2;}
.assessment-editor__settings-grid .field--open,.assessment-editor__settings-grid .field--close{grid-column:span 3;}
.assessment-editor__settings-grid .field--duration,.assessment-editor__settings-grid .field--weight{grid-column:span 2;}
.assessment-editor__settings-grid .field--instructions{grid-column:span 2;}
.input-suffix{position:relative;}
.input-suffix .form-control{padding-right:44px;}
.input-suffix>span{position:absolute;right:13px;top:50%;translate:0 -50%;color:var(--ink-subtle);font-size:var(--t-xs);font-weight:800;pointer-events:none;}

.quiz-composer{display:flex;flex-direction:column;flex:1 1 auto;min-height:300px;overflow:hidden;}
.quiz-composer__header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:0 0 auto;min-height:62px;padding:10px 14px 10px 18px;border-bottom:var(--bw-1) solid var(--line);background:var(--surface-muted);}
.quiz-composer__header .card-title{margin-top:2px;}
.quiz-composer__header-actions{display:flex;align-items:center;gap:12px;}
.quiz-composer__count{color:var(--ink-subtle);font-size:var(--t-xs);}
.quiz-composer__count strong{color:var(--ink);font-size:1rem;}
.quiz-composer__workspace{display:grid;grid-template-columns:124px minmax(0,1fr);flex:1;min-height:0;}
.quiz-composer__rail{display:flex;flex-direction:column;gap:10px;min-height:0;padding:14px 12px;border-right:var(--bw-1) solid var(--line);background:var(--surface-muted);}
.quiz-composer__nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;align-content:start;overflow-y:auto;scrollbar-width:thin;}
.quiz-composer__nav button{display:flex;align-items:center;justify-content:space-between;min-height:38px;padding:5px 8px;border:var(--bw-1) solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink-subtle);font-weight:900;}
.quiz-composer__nav button span{display:grid;place-items:center;width:22px;height:22px;border-radius:8px;background:var(--surface-muted);}
.quiz-composer__nav button.is-active{border-color:var(--ink);background:var(--orange);color:#071126;box-shadow:2px 2px 0 var(--ink);}
.quiz-composer__legend{display:grid;gap:5px;margin-top:auto;color:var(--ink-subtle);font-size:.61rem;font-weight:800;line-height:1.2;}
.quiz-composer__legend span{display:flex;align-items:center;gap:6px;}
.quiz-composer__canvas{position:relative;display:grid;grid-auto-rows:max-content;align-content:start;gap:12px;min-height:0;padding:14px;overflow-y:auto;scrollbar-gutter:stable;background:var(--surface);}
.quiz-composer__empty{display:grid;place-items:center;align-content:center;gap:7px;min-height:250px;text-align:center;color:var(--ink-subtle);}
.quiz-composer__empty[hidden]{display:none;}
.quiz-composer__empty>i{font-size:2rem;color:var(--cyan-ink);}
.quiz-composer__empty strong{color:var(--ink);font-size:1.05rem;}

.question-editor{display:block;padding:0;border:var(--bw-1) solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--surface);box-shadow:none;scroll-margin-top:4px;}
.question-editor.is-active{border-color:var(--ink);box-shadow:3px 3px 0 var(--ink);}
.question-editor__head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:54px;padding:8px 11px;border-bottom:var(--bw-1) solid var(--hairline);background:var(--surface-muted);}
.question-editor__identity{display:flex;align-items:center;gap:10px;min-width:0;}
.question-editor__identity>div{display:grid;min-width:0;}
.question-editor__identity strong{max-width:60ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.84rem;}
.question-editor__number{display:grid;place-items:center;flex:0 0 34px;height:34px;border:2px solid var(--ink);border-radius:11px;background:var(--volt);color:#071126;font-weight:950;box-shadow:2px 2px 0 var(--ink);}
.question-editor__body{display:grid;grid-template-columns:minmax(0,1fr) 190px 90px;gap:11px 12px;padding:12px;}
.question-editor__body .form-label{margin-bottom:4px;font-size:var(--t-label);}
.question-editor__body :is(.form-control,.form-select){min-height:40px;padding-block:8px;}
.question-editor__prompt textarea{resize:vertical;min-height:62px;}
.question-editor__answer{grid-column:1/-1;}
.question-editor__answer[hidden]{display:none;}
.question-editor__answer>small,.question-editor__answer-head small{display:block;color:var(--ink-subtle);font-size:var(--t-label);}
.question-editor__answer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;}
.quiz-choice-editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.quiz-choice-editor__row{display:grid;grid-template-columns:36px minmax(0,1fr) 38px;gap:7px;align-items:center;}
.quiz-choice-editor__correct{display:grid;place-items:center;width:34px;height:34px;border:2px solid var(--line);border-radius:50%;background:var(--surface);color:transparent;}
.quiz-choice-editor__correct.is-correct{border-color:var(--ink);background:var(--green);color:#071126;box-shadow:2px 2px 0 var(--ink);}
.quiz-choice-editor__row .btn-icon{width:36px;height:36px;}
.quiz-binary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-width:520px;}
.quiz-binary button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:42px;border:var(--bw-1) solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink-subtle);font-weight:900;}
.quiz-binary button.is-selected{border-color:var(--ink);background:var(--green-soft);color:var(--ink);box-shadow:2px 2px 0 var(--ink);}
.assessment-editor__actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 0 auto;padding:1px 3px;}
.assessment-editor__save-state{display:flex;align-items:center;gap:9px;margin-right:auto;color:var(--ink-subtle);}
.assessment-editor__save-state>i{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:var(--cyan-soft);color:var(--cyan-ink);}
.assessment-editor__save-state span{display:grid;}
.assessment-editor__save-state strong{color:var(--ink);font-size:var(--t-xs);}
.assessment-editor__save-state small{font-size:var(--t-label);}
.assessment-editor--setup{flex:1;}
.assessment-editor--setup .assessment-editor__settings{width:100%;}
.question-bank__form{flex:1;}
.question-bank__head .page-head-row{align-items:flex-end;}
.question-bank__head .btn{flex:0 0 auto;}
.question-bank__actions{padding-top:2px;}

@media (min-width:992px){
  .faculty-assessment-editor-shell .page{padding-bottom:12px;}
  .faculty-assessment-editor-shell form.assessment-editor{overflow:hidden;padding-right:0;}
  .faculty-assessment-editor-shell .assessment-editor__head{margin-bottom:10px;}
}
@media (max-width:1199.98px){
  .assessment-editor__settings-grid{grid-template-columns:repeat(6,minmax(0,1fr));}
  .assessment-editor__settings-grid .field--course,.assessment-editor__settings-grid .field--open,.assessment-editor__settings-grid .field--close{grid-column:span 2;}
  .assessment-editor__settings-grid .field--title{grid-column:span 3;}
  .assessment-editor__settings-grid .field--status,.assessment-editor__settings-grid .field--points{grid-column:span 1;}
  .assessment-editor__settings-grid .field--duration,.assessment-editor__settings-grid .field--weight,.assessment-editor__settings-grid .field--instructions{grid-column:span 2;}
}
@media (max-width:991.98px){
  .assessment-editor{overflow:visible;}
  .assessment-editor__settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .assessment-editor__settings-grid .field{grid-column:span 1;}
  .assessment-editor__settings-grid .field--title,.assessment-editor__settings-grid .field--instructions{grid-column:1/-1;}
  .quiz-composer__workspace{grid-template-columns:1fr;}
  .quiz-composer__rail{display:none;}
  .quiz-composer__canvas{max-height:none;overflow:visible;}
}
@media (max-width:700px){
  .assessment-editor__settings-grid,.question-editor__body,.quiz-choice-editor{grid-template-columns:1fr;}
  .assessment-editor__settings-grid .field,.question-editor__answer{grid-column:1;}
  .quiz-composer__header,.assessment-editor__actions{align-items:stretch;flex-direction:column;}
  .quiz-composer__header-actions{justify-content:space-between;}
  .assessment-editor__settings-head{align-items:stretch;flex-direction:column;}
  .assessment-editor__settings-tools{align-items:stretch;justify-content:flex-start;flex-direction:column;}
  .assessment-editor__save-state{margin-right:0;}
  .faculty-register-table .attendance-choice{grid-template-columns:1fr;}
}

@media (max-width:1199.98px){
  .student-attendance__toolbar{align-items:stretch;flex-direction:column;gap:10px;}
  .student-attendance__filters{width:100%;max-width:none;}
  .student-attendance__legend{justify-content:flex-start;}
  .student-attendance__overview{grid-template-columns:1fr;grid-template-areas:"course" "kpis" "limit";}
}

@media (max-width:767.98px){
  .student-attendance__filters{grid-template-columns:1fr;}
  .student-attendance__course-intro{align-items:flex-start;flex-direction:column;}
  .student-attendance__course-pills{justify-content:flex-start;}
  .student-attendance__kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
  .student-attendance__limit-copy{grid-template-columns:auto minmax(0,1fr);}
  .student-attendance__limit-copy b{grid-column:2;}
  .student-attendance__session-scroll{max-height:520px;}
}
.assessment-card{display:flex;flex-direction:column}.assessment-card .card-body{flex:1}.assessment-card--open{box-shadow:0 0 0 2px var(--success),var(--shadow-card)}.assessment-time{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.assessment-time>span{display:grid;grid-template-columns:auto 1fr;column-gap:8px;padding:12px;background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--r-sm)}.assessment-time i{grid-row:1/3;color:var(--brand);font-size:18px}.assessment-time strong{font-size:12px}.assessment-time small{color:var(--muted)}.assessment-score{display:flex;justify-content:space-between;align-items:center;margin-top:14px;padding:12px 14px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--volt) 18%,var(--surface));border:1px solid color-mix(in srgb,var(--volt) 55%,var(--line))}.assessment-score strong{font-size:20px}.assessment-card__actions{display:flex;gap:8px;flex-wrap:wrap}.assessment-upload{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;width:100%}
.student-assessment__workspace{
  min-height:560px;display:flex;flex-direction:column;overflow:hidden;
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);
  background:var(--surface);box-shadow:var(--sh-hard-sm);
}
.student-assessment__toolbar{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:11px 14px 11px 18px;border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);
}
.student-assessment__toolbar>div:first-child strong{display:block;margin-top:2px;font-size:var(--t-sm);}
.student-assessment__tabs{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:7px;}
.student-assessment__tab{
  min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:6px 9px 6px 12px;color:var(--ink);background:var(--surface);
  border:var(--bw-2) solid var(--hairline-strong);border-radius:var(--r-md);
}
.student-assessment__tab>span{display:flex;align-items:center;gap:8px;font-weight:var(--fw-black);}
.student-assessment__tab i{color:var(--brand-text);}
.student-assessment__tab b{min-width:28px;padding:3px 7px;border-radius:999px;background:var(--surface-3);font-size:var(--t-label);}
.student-assessment__tab:hover,.student-assessment__tab.is-active{
  border-color:var(--rule-hard);background:var(--brand);color:var(--ink-on-accent);box-shadow:var(--sh-hard-xs);
}
.student-assessment__tab.is-active i{color:inherit;}
.student-assessment__body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(310px,.82fr) minmax(0,1.5fr);}
.student-assessment__rail{min-width:0;min-height:0;display:flex;flex-direction:column;border-right:var(--bw-2) solid var(--rule-hard);background:var(--surface);}
.student-assessment__list-head{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px 14px;background:var(--table-head);color:var(--table-head-ink);
  font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.06em;text-transform:uppercase;
}
.student-assessment__list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;}
.student-assessment__item{
  width:100%;min-height:72px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;gap:11px;padding:10px 12px;text-align:left;color:var(--ink);background:var(--surface);
  border:0;border-bottom:var(--bw-1) solid var(--hairline);
}
.student-assessment__item:hover{background:var(--surface-2);}
.student-assessment__item.is-active{background:var(--surface-selected);box-shadow:inset 5px 0 0 var(--brand);}
.student-assessment__item-course{
  min-width:58px;padding:5px 7px;border:var(--bw-1) solid var(--rule-hard);border-radius:8px;
  background:var(--surface-3);font-size:var(--t-label);font-weight:var(--fw-black);text-align:center;
}
.student-assessment__item-copy{min-width:0;display:grid;gap:3px;}
.student-assessment__item-copy strong,.student-assessment__item-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.student-assessment__item-copy strong{font-size:var(--t-xs);}.student-assessment__item-copy small{color:var(--ink-subtle);font-size:var(--t-label);}
.student-assessment__item .pill{font-size:.58rem;}
.student-assessment__list-empty{height:100%;min-height:210px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;padding:24px;color:var(--ink-subtle);text-align:center;}
.student-assessment__list-empty[hidden]{display:none;}.student-assessment__list-empty i{font-size:2rem;color:var(--brand-text);}
.student-assessment__details{min-width:0;min-height:0;position:relative;background:var(--surface);}
.student-assessment__detail{height:100%;min-height:0;display:flex;flex-direction:column;overflow:auto;}
.student-assessment__detail[hidden]{display:none;}
.student-assessment__detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 14px;border-bottom:var(--bw-1) solid var(--hairline);}
.student-assessment__detail-head h2{margin:3px 0 0;font-size:clamp(1.35rem,2vw,1.9rem);line-height:1.08;}
.student-assessment__timeline{display:grid;grid-template-columns:1fr auto 1fr 1fr 1fr;align-items:center;gap:10px;padding:13px 20px;background:var(--surface-2);border-bottom:var(--bw-1) solid var(--hairline);}
.student-assessment__timeline>span{min-width:0;display:grid;gap:3px;}.student-assessment__timeline small{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.06em;color:var(--ink-subtle);}.student-assessment__timeline strong{font-size:var(--t-xs);white-space:nowrap;}
.student-assessment__timeline>i{color:var(--brand-text);}
.student-assessment__instructions{flex:1;min-height:100px;padding:18px 20px;}.student-assessment__instructions p{max-width:72ch;margin:8px 0 0;color:var(--ink-muted);line-height:1.6;}
.student-assessment__result{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 20px 14px;padding:12px 15px;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);background:color-mix(in srgb,var(--volt) 16%,var(--surface));}.student-assessment__result strong{font-size:1.25rem;}
.student-assessment__actions{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:13px 20px;border-top:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);}
.student-assessment__actions>.btn{min-width:150px;}.student-assessment__actions .assessment-upload{max-width:680px;}
.assessment-upload__file{
  position:relative;min-width:0;height:44px;display:grid;grid-template-columns:auto minmax(0,1fr);
  align-items:stretch;overflow:hidden;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);
  background:var(--surface);box-shadow:var(--sh-hard-xs);cursor:pointer;
}
.assessment-upload__file:focus-within{box-shadow:var(--sh-hard-sm),var(--focus-ring);}
.assessment-upload__file input[type="file"]{
  position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none;
}
.assessment-upload__choose,.assessment-upload__name{
  min-width:0;display:flex;align-items:center;font-family:var(--font-ui);font-size:var(--t-sm);
  font-weight:var(--fw-medium);line-height:1;
}
.assessment-upload__choose{padding:0 14px;border-right:var(--bw-1) solid var(--rule-hard);white-space:nowrap;}
.assessment-upload__name{padding:0 12px;overflow:hidden;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;}
.assessment-upload__file:has(input:disabled){opacity:.55;cursor:not-allowed;background:var(--surface-3);}
@media (min-width:992px){
  body.student-assessment-shell{height:100vh;height:100dvh;overflow:hidden;}
  .student-assessment-shell .app,.student-assessment-shell .app-main{height:100vh;height:100dvh;min-height:0;overflow:hidden;}
  .student-assessment-shell .page{min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-block:clamp(9px,1.3vh,14px);}
  .student-assessment-shell .student-assessment__head{flex:0 0 auto;margin-bottom:10px;}
  .student-assessment-shell .student-assessment__head .crumbs{margin-bottom:4px;}
  .student-assessment-shell .student-assessment__head .page-title{font-size:clamp(1.8rem,2.5vw,2.4rem);}
  .student-assessment-shell .student-assessment__workspace{flex:1;min-height:0;}
}
.assessment-editor-card{max-width:1100px}.question-builder{display:grid;gap:14px}.question-editor{display:flex;gap:14px;align-items:flex-start;padding:16px;border:1.5px solid var(--line);border-radius:var(--r-md);background:var(--surface-muted)}.question-editor__number{display:grid;place-items:center;flex:0 0 34px;height:34px;border:2px solid var(--ink);border-radius:12px;background:var(--volt);color:#071126;font-weight:950;box-shadow:3px 3px 0 var(--ink)}
.quiz-head{display:flex;justify-content:space-between;align-items:end;gap:20px}.quiz-timer{position:sticky;top:12px;z-index:5;display:grid;min-width:180px;padding:12px 18px;border:2px solid var(--ink);border-radius:var(--r-md);background:var(--volt);color:#071126;box-shadow:4px 4px 0 var(--ink)}.quiz-timer span{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.quiz-timer strong{font-family:var(--font-display);font-size:32px}.quiz-question-list{display:grid;gap:18px;max-width:980px}.quiz-options{display:grid;gap:10px}.quiz-options label{cursor:pointer}.quiz-options input{position:absolute;opacity:0}.quiz-options span{display:block;padding:13px 16px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-weight:750}.quiz-options input:checked+span{border-color:var(--ink);background:var(--volt);color:#071126;box-shadow:3px 3px 0 var(--ink)}.quiz-submit-bar{position:sticky;bottom:0;z-index:6;display:flex;align-items:center;justify-content:space-between;gap:20px;margin:24px -24px -24px;padding:14px 24px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(12px)}
.submission-table-scroll{max-height:64vh;overflow:auto}.grade-inline{display:grid;grid-template-columns:150px minmax(180px,1fr) auto;gap:8px;min-width:450px}
.student-dashboard__record-summary{display:flex;align-items:center;white-space:nowrap;line-height:1.35;}
.student-finance__workspace{
  min-height:560px;display:flex;flex-direction:column;overflow:hidden;
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);
  background:var(--surface);box-shadow:var(--sh-hard-sm);
}
.student-finance__summary{
  flex:0 0 auto;display:grid;grid-template-columns:minmax(220px,1fr) minmax(190px,.8fr) minmax(150px,.55fr) minmax(330px,1.35fr);
  align-items:stretch;border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);
}
.student-finance__summary>div,.student-finance__deposit{min-width:0;padding:14px 16px;border-right:var(--bw-1) solid var(--hairline);}
.student-finance__balance{display:flex;align-items:center;gap:12px;background:var(--table-head);color:var(--table-head-ink);}
.student-finance__summary-icon{display:grid;place-items:center;width:42px;height:42px;border:var(--bw-2) solid currentColor;border-radius:12px;background:var(--volt);color:var(--ink-on-accent);box-shadow:var(--sh-hard-xs);font-size:1.15rem;}
.student-finance__balance>div{min-width:0;display:grid;gap:2px;}.student-finance__balance .eyebrow{color:color-mix(in srgb,var(--table-head-ink) 72%,transparent);}.student-finance__balance strong{font-size:clamp(1.25rem,1.7vw,1.75rem);}
.student-finance__summary-stat{display:flex;justify-content:center;flex-direction:column;gap:5px;}.student-finance__summary-stat span{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.05em;color:var(--ink-subtle);text-transform:uppercase;}.student-finance__summary-stat strong{font-size:clamp(1.05rem,1.4vw,1.35rem);}
.student-finance__deposit{display:grid;grid-template-columns:minmax(145px,1fr) auto;align-items:center;gap:9px;border-right:0;}
.student-finance__deposit-field{min-width:0;height:50px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;column-gap:7px;padding:6px 10px;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);background:var(--field-bg);box-shadow:var(--sh-hard-xs);}
.student-finance__deposit-field>span{grid-column:1/3;font-size:.58rem;font-weight:var(--fw-black);letter-spacing:.06em;color:var(--ink-subtle);}.student-finance__deposit-field input{min-width:0;width:100%;padding:0;border:0;outline:0;background:transparent;color:var(--ink);font-size:.95rem;font-weight:var(--fw-black);font-variant-numeric:tabular-nums;}.student-finance__deposit-field small{align-self:center;color:var(--ink-subtle);font-size:var(--t-label);font-weight:var(--fw-black);}
.student-finance__body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.75fr);}
.student-finance__fees,.student-finance__activity{min-width:0;min-height:0;display:flex;flex-direction:column;}
.student-finance__fees{border-right:var(--bw-2) solid var(--rule-hard);}
.student-finance__pane-head{flex:0 0 auto;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 15px;border-bottom:var(--bw-1) solid var(--hairline);background:var(--surface);}
.student-finance__pane-head h2{margin:2px 0 0;font-size:1.1rem;}.student-finance__deadline{display:grid;gap:2px;text-align:right;}.student-finance__deadline span{font-size:.58rem;font-weight:var(--fw-black);letter-spacing:.08em;color:var(--ink-subtle);}.student-finance__deadline strong{font-size:var(--t-xs);}
.student-finance__fees-scroll{flex:1;min-height:0;overflow-y:scroll;scrollbar-gutter:stable;overscroll-behavior:contain;}.student-finance__fees-scroll .tbl{min-width:0;}.student-finance__fees-scroll .tbl td{padding-block:10px;}.student-finance__fees-scroll td:first-child{width:40%;}.student-finance__fees-scroll .d{display:block;margin-top:3px;font-size:var(--t-label);color:var(--ink-subtle);}.student-finance__fee-action{text-align:right;}.student-finance__fee-action form{display:inline-flex;}.student-finance__confirmed{display:inline-flex;align-items:center;gap:6px;color:var(--success);font-size:var(--t-label);font-weight:var(--fw-black);}
.student-finance__fees-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;border-top:var(--bw-1) solid var(--hairline);background:var(--surface-2);color:var(--ink-subtle);font-size:var(--t-label);}.student-finance__fees-foot span{display:flex;align-items:center;gap:7px;}
.student-finance__activity-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;}.student-finance__activity-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"icon copy amount" "icon date amount";align-items:center;column-gap:10px;padding:11px 13px;border-bottom:var(--bw-1) solid var(--hairline);}.student-finance__activity-icon{grid-area:icon;display:grid;place-items:center;width:34px;height:34px;border:var(--bw-1) solid var(--rule-hard);border-radius:10px;background:color-mix(in srgb,var(--warning) 14%,var(--surface));color:var(--brand-text);}.student-finance__activity-icon.is-deposit{background:color-mix(in srgb,var(--success) 13%,var(--surface));color:var(--success);}.student-finance__activity-copy{grid-area:copy;min-width:0;display:grid;}.student-finance__activity-copy strong,.student-finance__activity-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.student-finance__activity-copy strong{font-size:var(--t-xs);text-transform:capitalize;}.student-finance__activity-copy small,.student-finance__activity-date small{font-size:var(--t-label);color:var(--ink-subtle);}.student-finance__activity-date{grid-area:date;display:flex;gap:6px;font-size:var(--t-label);color:var(--ink-muted);}.student-finance__activity-row>.finance-money{grid-area:amount;font-size:var(--t-xs);}.student-finance__activity-empty{height:100%;min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:var(--ink-subtle);}.student-finance__activity-empty i{font-size:2rem;color:var(--brand-text);}
@media (min-width:992px){
  body.student-finance-shell{height:100vh;height:100dvh;overflow:hidden;}
  .student-finance-shell .app,.student-finance-shell .app-main{height:100vh;height:100dvh;min-height:0;overflow:hidden;}
  .student-finance-shell .page{min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-block:clamp(9px,1.3vh,14px);}
  .student-finance-shell .student-finance__head{flex:0 0 auto;margin-bottom:10px;}.student-finance-shell .student-finance__head .crumbs{margin-bottom:4px;}.student-finance-shell .student-finance__head .page-title{font-size:clamp(1.8rem,2.5vw,2.4rem);}
  .student-finance-shell .student-finance__workspace{flex:1;min-height:0;}
}
.finance-overview,.finance-admin-kpis{margin-bottom:20px}.finance-money{font-variant-numeric:tabular-nums;white-space:nowrap}.kpi__value.finance-money{font-size:clamp(18px,1.8vw,32px)}.wallet-deposit{display:grid;grid-template-columns:minmax(220px,1fr) auto;align-items:end;gap:12px}.tuition-charge-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line)}.tuition-charge{display:grid;gap:12px;align-content:start;padding:20px;background:var(--surface)}.tuition-charge h3{font-size:15px;margin:3px 0 0}.tuition-charge>.finance-money{font-size:22px}.tuition-paid{display:flex;align-items:center;gap:7px;color:var(--success);font-weight:850}.finance-admin-scroll{max-height:58vh;overflow:auto}.finance-admin-scroll td strong,.finance-admin-scroll td .d{display:block}.finance-admin-scroll td .d{margin-top:3px}
.finance-admin-head{align-items:end;gap:18px}.finance-filter{display:grid;grid-template-columns:minmax(240px,1fr) 180px auto;gap:10px;align-items:center;flex:1;max-width:760px}.pager-row{display:flex;align-items:center;justify-content:space-between}.disabled{pointer-events:none;opacity:.45}
.wallet-qr-modal{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:20px;}
.wallet-qr-modal[hidden]{display:none;}
.wallet-qr-modal__backdrop{position:absolute;inset:0;background:rgba(2,8,22,.78);backdrop-filter:blur(6px);}
.wallet-qr-modal__dialog{position:relative;width:min(430px,100%);overflow:hidden;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);background:var(--surface);box-shadow:10px 10px 0 rgba(0,0,0,.35);}
.wallet-qr-modal__head{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:var(--bw-1) solid var(--hairline);background:var(--surface-2);}
.wallet-qr-modal__head h2{margin:2px 0 0;font-size:1.2rem;}.wallet-qr-modal__bank{display:grid;place-items:center;width:42px;height:42px;border:var(--bw-2) solid var(--rule-hard);border-radius:12px;background:#008c50;color:#fff;box-shadow:var(--sh-hard-xs);}
.wallet-qr-modal__body{display:flex;align-items:center;flex-direction:column;gap:5px;padding:16px 20px 12px;text-align:center;}
.wallet-qr-modal__body img{width:230px;height:230px;object-fit:contain;border:var(--bw-1) solid var(--hairline);border-radius:10px;background:#fff;}
.wallet-qr-modal__body>strong{margin-top:3px;font-size:1.05rem;}.wallet-qr-modal__body>span{color:var(--ink-muted);font-size:var(--t-xs);}
.wallet-qr-modal__amount{margin-top:8px;padding:8px 16px;border-radius:999px;background:color-mix(in srgb,#008c50 12%,var(--surface));color:#008c50;font-size:1.15rem;font-weight:var(--fw-black);font-variant-numeric:tabular-nums;}
.wallet-qr-modal__foot{padding:12px 18px 16px;border-top:var(--bw-1) solid var(--hairline);background:var(--surface-2);text-align:center;}
.wallet-qr-modal__foot p{margin:0 0 9px;font-size:var(--t-xs);color:var(--ink-muted);}.wallet-qr-modal__progress{height:9px;margin-bottom:11px;overflow:hidden;border:var(--bw-1) solid var(--rule-hard);border-radius:999px;background:var(--surface);}
.wallet-qr-modal__progress span{display:block;width:100%;height:100%;background:#008c50;transform-origin:left;animation:wallet-qr-countdown 10s linear forwards;}
body.wallet-qr-open{overflow:hidden;}@keyframes wallet-qr-countdown{to{transform:scaleX(0);}}

@media(max-width:1100px){.attendance-session-grid,.assessment-grid,.attendance-report-grid,.tuition-charge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.assessment-time{grid-template-columns:1fr}.grade-inline{grid-template-columns:1fr;min-width:260px}}
@media(max-width:700px){.attendance-session-grid,.assessment-grid,.attendance-report-grid,.tuition-charge-grid{grid-template-columns:1fr}.quiz-head{align-items:stretch;flex-direction:column}.quiz-timer{width:100%;position:static}.assessment-upload,.wallet-deposit{grid-template-columns:1fr}.question-editor{flex-wrap:wrap}.attendance-choice{flex-direction:column}.quiz-submit-bar{align-items:stretch;flex-direction:column}.assessment-time{grid-template-columns:1fr}}
@media(max-width:767.98px){.student-assessment__picker{align-items:stretch;flex-direction:column}.student-assessment__tabs{grid-template-columns:1fr;width:100%}}
@media(max-width:900px){.finance-admin-head{align-items:stretch;flex-direction:column}.finance-filter{grid-template-columns:1fr;max-width:none;width:100%}}

/* ── Sidebar ── */
.app-sidebar{
  width:var(--sidebar-w);min-width:var(--sidebar-w);
  background:var(--sidebar-bg);color:var(--sidebar-ink);
  display:flex;flex-direction:column;z-index:1045;
  position:sticky;top:0;align-self:flex-start;
  height:100vh;height:100dvh;max-height:100dvh;
  border-right:var(--bw-2) solid var(--rule-hard);
  transition:margin-left var(--dur-panel) var(--ease-emph);
}
.sidebar-head{
  height:var(--topbar-h);min-height:var(--topbar-h);
  display:flex;align-items:center;padding:0 var(--sp-5);
  border-bottom:var(--bw-1) solid rgba(255,255,255,.08);
}
.sidebar-brand{display:flex;align-items:center;gap:10px;}
.sidebar-brand:hover{text-decoration:none;}
.sidebar-brand img{height:40px;width:auto;display:block;}
.sidebar-brand .brand-sub{
  font-family:var(--font-ui);font-size:var(--t-xs);font-weight:var(--fw-black);
  letter-spacing:.1em;text-transform:uppercase;color:var(--sidebar-ink-muted);
  padding-left:10px;margin-left:2px;border-left:var(--bw-2) solid rgba(255,255,255,.16);
}
.sidebar-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:var(--sp-4) var(--sp-3);}
.sidebar-nav{list-style:none;margin:0;padding:0;}
.sidebar-heading{
  padding:var(--sp-4) var(--sp-3) var(--sp-2);font-size:var(--t-label);
  font-weight:var(--fw-black);letter-spacing:.1em;text-transform:uppercase;
  color:var(--sidebar-ink-muted);
}
.sidebar-link{
  display:flex;align-items:center;gap:12px;position:relative;
  padding:10px 12px;margin-bottom:3px;border-radius:var(--r-md);
  font-size:var(--t-sm);font-weight:var(--fw-semibold);letter-spacing:-.01em;
  color:var(--sidebar-ink);text-decoration:none;
  transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast);
}
.sidebar-link i{font-size:1.0625rem;opacity:.72;transition:opacity var(--dur-fast);}
.sidebar-link:hover{background:var(--sidebar-hover);color:#fff;text-decoration:none;}
.sidebar-link:hover i{opacity:1;}
.sidebar-item.active .sidebar-link{
  background:var(--brand);color:var(--ink-on-accent);font-weight:var(--fw-black);
}
.sidebar-item.active .sidebar-link i{opacity:1;}
.sidebar-badge{
  margin-left:auto;font-size:var(--t-label);font-weight:var(--fw-black);
  font-variant-numeric:tabular-nums;padding:2px 7px;border-radius:var(--r-pill);
  background:rgba(255,255,255,.12);color:#fff;
}
.sidebar-item.active .sidebar-badge{background:rgba(11,20,43,.18);color:var(--navy-900);}
.sidebar-foot{
  min-height:var(--app-footer-h);padding:var(--sp-4) var(--sp-5);
  display:flex;align-items:center;background:var(--sidebar-bg-2);
  border-top:var(--bw-1) solid rgba(255,255,255,.08);
}
.sidebar-account{display:flex;align-items:center;gap:14px;min-width:0;}
.sidebar-account__avatar{
  width:40px;height:40px;flex:0 0 40px;font-size:var(--t-xs);
}
.sidebar-account__copy{min-width:0;line-height:1.2;}
.sidebar-account__label{
  display:block;color:var(--sidebar-ink-muted);font-size:.75rem;
  font-weight:var(--fw-black);letter-spacing:.09em;text-transform:uppercase;
}
.sidebar-account__role{
  display:block;margin-top:3px;color:#fff;font-size:.9375rem;
  font-weight:var(--fw-black);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* ── Main column ── */
.app-main{flex:1;min-width:0;display:flex;flex-direction:column;}

/* ── Topbar: frosted chrome ── */
.app-topbar{
  height:var(--topbar-h);min-height:var(--topbar-h);
  display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);
  padding:0 var(--sp-5);position:sticky;top:0;z-index:1030;
  background:color-mix(in oklab,var(--canvas) 78%,transparent);
  border-bottom:var(--bw-2) solid var(--rule-hard);
}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .app-topbar{-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);}
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .app-topbar{background:var(--canvas);}
}
.topbar-left,.topbar-right{display:flex;align-items:center;gap:var(--sp-2);}

.icon-btn{
  width:var(--control-h);height:var(--control-h);flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:var(--r-md);border:var(--bw-2) solid transparent;
  background:transparent;color:var(--ink-muted);cursor:pointer;
  transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast);
}
.icon-btn i{font-size:1.125rem;}
.icon-btn:hover{background:var(--surface-3);color:var(--ink);border-color:var(--hairline-strong);}

/* term / context pill */
.context-pill{
  display:inline-flex;align-items:center;gap:8px;height:var(--control-h-sm);
  padding:0 14px;border-radius:var(--r-pill);
  background:var(--surface);border:var(--bw-2) solid var(--rule-hard);
  box-shadow:var(--sh-hard-xs);
  font-size:var(--t-xs);font-weight:var(--fw-bold);color:var(--ink);white-space:nowrap;
}
.context-pill i{color:var(--brand-text);}
@media (max-width:399.98px){
  .context-pill{
    width:var(--control-h-sm);padding:0;justify-content:center;
  }
  .context-pill-label{display:none;}
}

/* user chip */
.user-chip{
  display:flex;align-items:center;gap:10px;padding:4px 6px 4px 4px;
  background:transparent;border:var(--bw-2) solid transparent;border-radius:var(--r-pill);
  cursor:pointer;transition:background var(--dur-fast),border-color var(--dur-fast);
}
.user-chip:hover{background:var(--surface-3);border-color:var(--hairline-strong);}
.user-chip[aria-expanded="true"]{
  background:var(--surface);border-color:var(--rule-hard);box-shadow:var(--sh-hard-xs);
}
.user-chip .meta{line-height:1;text-align:left;}
.user-chip .nm{font-size:var(--t-xs);font-weight:var(--fw-bold);color:var(--ink);display:block;}
.user-chip__chevron{
  color:var(--ink-subtle);font-size:.6875rem;
  transition:transform var(--dur-fast) var(--ease-out),color var(--dur-fast);
}
.user-chip[aria-expanded="true"] .user-chip__chevron{transform:rotate(180deg);color:var(--ink);}

/* ── Announcement ticker ── */
.app-ticker{
  height:var(--ticker-h);overflow:hidden;background:var(--volt);
  color:var(--navy-900);border-bottom:var(--bw-2) solid var(--rule-hard);
  /* fade the ends so a mid-word scroll position reads as intentional */
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 56px,#000 calc(100% - 56px),transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 56px,#000 calc(100% - 56px),transparent 100%);
}
.ticker-track{
  display:inline-flex;gap:2.5rem;width:max-content;white-space:nowrap;
  font-family:var(--font-ui);font-size:var(--t-label);font-weight:var(--fw-black);
  letter-spacing:.12em;text-transform:uppercase;line-height:var(--ticker-h);
  animation:marquee var(--marquee-dur,38s) linear infinite;
}
.ticker-track span{display:inline-flex;align-items:center;gap:.5rem;}
@keyframes marquee{to{transform:translateX(-50%);}}
.app-ticker:hover .ticker-track,.app-ticker:focus-within .ticker-track{animation-play-state:paused;}
@media (prefers-reduced-motion:reduce){.ticker-track{animation:none;}}

/* ── Page canvas ── */
.page{padding:var(--sp-6);flex:1;max-width:1560px;width:100%;}
.app-footer{
  min-height:var(--app-footer-h);padding:var(--sp-5) var(--sp-6);
  border-top:var(--bw-1) solid var(--hairline);
  display:flex;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;
  font-size:var(--t-xs);color:var(--ink-subtle);
}
.footer-powered{
  width:156px;min-height:46px;display:flex;flex-direction:column;
  justify-content:center;align-items:flex-start;line-height:1;
}
.footer-powered__label{
  color:#35d889;font-size:.72rem;font-weight:var(--fw-black);
  letter-spacing:.075em;text-transform:uppercase;
}
.footer-powered__name{
  display:block;margin-top:3px;font-family:var(--font-display);
  font-size:1.78rem;font-weight:var(--fw-black);letter-spacing:.025em;
  text-transform:uppercase;color:transparent;
  background:linear-gradient(105deg,#ff3020 0%,#ff5a00 30%,#ff9800 58%,#ffd21f 82%,#fff0a0 100%);
  -webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 2px 3px rgba(255,90,0,.22));
}

/* ── Off-canvas below lg ── */
.sidebar-backdrop{
  position:fixed;inset:0;background:rgba(11,20,43,.5);z-index:1040;
  opacity:0;pointer-events:none;transition:opacity var(--dur);
}
@supports (backdrop-filter:blur(1px)){.sidebar-backdrop{backdrop-filter:blur(3px);}}
@media (max-width:991.98px){
  .app-sidebar{
    position:fixed;top:0;bottom:0;left:0;height:100vh;height:100dvh;max-height:100dvh;
    margin-left:calc(var(--sidebar-w) * -1);
  }
  .app-sidebar.open{margin-left:0;box-shadow:var(--sh-3);}
  .sidebar-backdrop.open{opacity:1;pointer-events:auto;}
  .page{padding:var(--sp-4);}
  .app-topbar{padding:0 var(--sp-3);}
  .user-chip .meta{display:none;}
}

/* Keep the paged admin register inside the desktop shell. Twenty records are
   still rendered per page; only the table viewport scrolls. */
@media (min-width:992px){
  body.admin-students-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-students-shell .app{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-students-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-students-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(14px,2.1vh,24px);
  }
  .admin-students-shell .admin-students__head{
    flex:0 0 auto;margin-bottom:clamp(12px,1.8vh,20px);
  }
  .admin-students-shell .admin-students__head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .admin-students-shell .admin-students__card{
    flex:1;min-height:0;margin-bottom:0;
    display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-students-shell .admin-students__toolbar,
  .admin-students-shell .admin-students__filters,
  .admin-students-shell .admin-students__footer{flex:0 0 auto;}
  .admin-students-shell .admin-students__results{
    flex:1;min-height:0;display:flex;flex-direction:column;
  }
  .admin-students-shell .admin-students__table{
    flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;
  }
}

/* Academic records and account administration stay inside one desktop
   viewport; their dense result regions own the vertical scrolling. */
@media (min-width:992px){
  body.admin-academic-records-shell,
  body.admin-users-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-academic-records-shell .app,
  .admin-users-shell .app{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-academic-records-shell .app-main,
  .admin-users-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-academic-records-shell .page,
  .admin-users-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(14px,2.1vh,24px);
  }
  .admin-academic-records-shell .admin-academic__head,
  .admin-users-shell .admin-users__head{
    flex:0 0 auto;margin-bottom:clamp(12px,1.8vh,20px);
  }
  .admin-academic-records-shell .admin-academic__head .page-title,
  .admin-users-shell .admin-users__head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .admin-academic-records-shell .admin-academic__workspace{
    flex:1;min-height:0;align-items:stretch;
  }
  .admin-academic-records-shell .admin-academic__students,
  .admin-academic-records-shell .admin-academic__records{
    min-height:0;height:100%;
  }
  .admin-academic-records-shell .admin-academic__student-card{
    min-height:0;overflow:hidden;
  }
  .admin-academic-records-shell .admin-academic__student-toolbar{flex:0 0 auto;}
  .admin-academic-records-shell .admin-academic__student-list{
    flex:1;min-height:0;max-height:none;overflow-y:auto;scrollbar-gutter:stable;
  }
  .admin-academic-records-shell .admin-academic__records{
    display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-academic-records-shell .admin-academic__summary{flex:0 0 auto;}
  .admin-academic-records-shell .admin-academic__records-card{
    flex:1;min-height:0;overflow:hidden;
  }
  .admin-academic-records-shell .admin-academic__record-list{
    flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;
  }
  .admin-users-shell .admin-users__card{
    flex:1;min-height:0;margin-bottom:0;
    display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-users-shell .admin-users__toolbar,
  .admin-users-shell .admin-users__filters,
  .admin-users-shell .admin-users__footer{flex:0 0 auto;}
  .admin-users-shell .admin-users__results{
    flex:1;min-height:0;display:flex;flex-direction:column;
  }
  .admin-users-shell .admin-users__table{
    flex:1;min-height:0;max-height:none;overflow:auto;scrollbar-gutter:stable;
  }
}

/* Faculty records use a fixed desktop workspace: controls and pagination stay
   visible while the authorised result set scrolls inside the card. */
@media (min-width:992px){
  body.faculty-records-shell{height:100vh;height:100dvh;overflow:hidden;}
  .faculty-records-shell .app,
  .faculty-records-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .faculty-records-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(14px,2.1vh,24px);
  }
  .faculty-records-shell .faculty-records__head{
    flex:0 0 auto;margin-bottom:clamp(12px,1.8vh,20px);
  }
  .faculty-records-shell .faculty-records__head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .faculty-records-shell .faculty-records__card{
    flex:1;min-height:0;margin-bottom:0;
    display:flex;flex-direction:column;overflow:hidden;
  }
  .faculty-records-shell .faculty-records__toolbar,
  .faculty-records-shell .faculty-records__footer{flex:0 0 auto;}
  .faculty-records-shell .faculty-records__toolbar{
    padding-block:clamp(10px,1.4vh,16px);
  }
  .faculty-records-shell .faculty-records__table{
    flex:1;min-height:0;display:flex;flex-direction:column;
    overflow:auto;scrollbar-gutter:stable;
  }
  .faculty-records-shell .faculty-records__table > .tbl{flex:0 0 auto;}
  .faculty-records-shell .faculty-records__table > .empty{
    flex:1;min-height:220px;
  }
  .faculty-records-shell .faculty-records__table .tbl tbody td{
    padding-block:9px;
  }
}
@media (min-width:1200px){
  .faculty-records-shell .faculty-records__toolbar{
    display:grid;
    grid-template-columns:minmax(240px,2fr) minmax(180px,1.25fr)
                          minmax(118px,.7fr) minmax(132px,.8fr) auto auto;
    gap:10px;
  }
  .faculty-records-shell .faculty-records__toolbar > *{
    min-width:0;width:100%;
  }
}

/* Student grades use one semester selector and one internally scrolling result
   table so the complete self-service workspace stays inside the desktop shell. */
.student-grades__view-tabs{
  flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:9px 12px;
  background:var(--surface-2);border-bottom:var(--bw-2) solid var(--rule-hard);
}
.student-grades__view-tab{
  min-height:40px;display:inline-flex;align-items:center;gap:8px;padding:7px 12px;
  color:var(--ink-muted);background:transparent;border:var(--bw-1) solid transparent;
  border-radius:var(--r-sm);font-weight:var(--fw-black);
}
.student-grades__view-tab:hover:not(:disabled){color:var(--ink);background:var(--surface);}
.student-grades__view-tab.is-active{
  color:var(--ink-on-accent);background:var(--brand);border-color:var(--rule-hard);box-shadow:var(--sh-hard-xs);
}
.student-grades__view-tab:disabled{opacity:.42;cursor:not-allowed;}
.student-grades__view-tab .pill{margin-left:3px;}
.student-grades__view-panel{min-height:0;display:flex;flex:1;flex-direction:column;}
.student-grades__view-panel[hidden]{display:none;}
.student-grades__projection-head{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;
  min-height:48px;padding:8px 16px;border-bottom:var(--bw-1) solid var(--hairline);
  background:var(--surface);
}
.student-grades__projection-head strong{display:block;font-size:var(--t-sm);}
.student-grades__projection-scroll{min-height:0;flex:1;overflow:auto;scrollbar-gutter:stable;}
.student-grades__projection-scroll td strong,.student-grades__projection-scroll td .d{display:block;}
.student-grades__projection-scroll td .d{width:max-content;margin-top:4px;}
@media (min-width:992px){
  body.student-grades-shell{height:100vh;height:100dvh;overflow:hidden;}
  .student-grades-shell .app,
  .student-grades-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .student-grades-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(12px,1.8vh,20px);
  }
  .student-grades-shell .student-grades__head{
    flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);
  }
  .student-grades-shell .student-grades__head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .student-grades-shell .student-grades__overview{
    flex:0 0 clamp(88px,11vh,100px);
    min-height:88px;margin-bottom:clamp(14px,1.6vh,18px);
    grid-template-rows:minmax(0,1fr);
  }
  .student-grades-shell .student-grades__overview > .b5{grid-column:span 5;}
  .student-grades-shell .student-grades__overview > .b4{grid-column:span 4;}
  .student-grades-shell .student-grades__overview > .b3{grid-column:span 3;}
  .student-grades-shell .student-grades__gpa-card,
  .student-grades-shell .student-grades__kpi{
    min-height:0;overflow:hidden;
  }
  .student-grades-shell .student-grades__gpa-card .card-body{
    height:100%;padding:7px 12px;
  }
  .student-grades-shell .student-grades__ring-wrap{
    width:64px;height:64px;flex:0 0 64px;
  }
  .student-grades-shell .student-grades__ring{width:64px;height:64px;}
  .student-grades-shell .student-grades__ring-wrap .ring-mid .v{font-size:1.2rem;}
  .student-grades-shell .student-grades__gpa-message{
    font-family:var(--font-display);font-size:clamp(1rem,1.5vw,1.25rem);
    font-weight:var(--fw-black);letter-spacing:-.024em;
  }
  .student-grades-shell .student-grades__kpi{padding:7px 12px;}
  .student-grades-shell .student-grades__kpi .kpi__icon{width:28px;height:28px;}
  .student-grades-shell .student-grades__kpi .kpi__value{
    margin-top:1px;font-size:clamp(1.35rem,2.2vw,1.75rem);
  }
  .student-grades-shell .student-grades__kpi .kpi__foot{margin-top:0;line-height:1.1;}
  .student-grades-shell .student-grades__kpi .kpi__note{font-size:.7rem;}
  .student-grades-shell .student-grades__mastery{
    margin-top:6px;max-height:42px;overflow:hidden;
  }
  .student-grades-shell .student-grades__workspace,
  .student-grades-shell .student-grades__empty-card{
    flex:1;min-height:0;margin-bottom:0;overflow:hidden;
  }
  .student-grades-shell .student-grades__workspace{
    display:flex;flex-direction:column;
  }
  .student-grades-shell .student-grades__semester-toolbar{
    flex:0 0 auto;min-height:58px;display:flex;align-items:center;
    padding:7px 16px;flex-wrap:nowrap;gap:24px;
  }
  .student-grades-shell .student-grades__semester-picker{
    display:flex;align-items:center;gap:14px;min-width:0;
  }
  .student-grades-shell .student-grades__semester-picker label{
    display:flex;align-items:center;gap:8px;white-space:nowrap;
    font-size:var(--t-xs);font-weight:var(--fw-black);color:var(--ink);
  }
  .student-grades-shell .student-grades__semester-picker .form-select{
    width:220px;min-width:170px;height:42px;
  }
  .student-grades-shell .student-grades__semester-summaries{
    margin-left:auto;min-width:0;padding-left:8px;
  }
  .student-grades-shell .student-grades__semester-summaries>.inline{gap:8px;flex-wrap:nowrap;}
  .student-grades-shell .student-grades__tables{
    flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;
  }
  .student-grades-shell .student-grades__tables > section{min-width:720px;}
  .student-grades-shell .student-grades__tables .tbl tbody td{padding-block:10px;}
  .student-grades-shell .student-grades__projection-panel{min-width:0;}
}
@media (min-width:992px) and (max-height:699.98px){
  .student-grades-shell .student-grades__overview{
    flex-basis:84px;min-height:84px;
  }
  .student-grades-shell .student-grades__ring-wrap,
  .student-grades-shell .student-grades__ring{
    width:62px;height:62px;
  }
  .student-grades-shell .student-grades__ring-wrap{flex-basis:62px;}
  .student-grades-shell .student-grades__semester-toolbar{min-height:54px;padding-block:5px;}
}
@media (max-width:767.98px){
  .student-grades__view-tabs{align-items:stretch;flex-direction:column;}
  .student-grades__view-tab{justify-content:center;}
  .student-grades__projection-head{align-items:flex-start;flex-direction:column;}
  .student-grades__semester-toolbar{align-items:stretch;}
  .student-grades__semester-picker{
    width:100%;display:grid;grid-template-columns:1fr;
  }
  .student-grades__semester-summaries{width:100%;}
}

/* Student course enrolments use a dense LMS-style data list instead of
   dashboard cards, keeping the complete workspace inside the desktop shell. */
.student-courses__workspace{
  min-height:420px;display:flex;flex-direction:column;overflow:hidden;
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);
  background:var(--surface);box-shadow:var(--sh-hard-sm);
}
.student-courses__toolbar{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:20px;
  min-height:68px;padding:11px 16px;border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);
}
.student-courses__toolbar h2{margin:3px 0 0;font-size:1.25rem;line-height:1.05;}
.student-courses__toolbar .eyebrow{font-size:.72rem;}
.student-courses__summary{display:flex;align-items:center;gap:18px;color:var(--ink-muted);font-size:var(--t-xs);}
.student-courses__summary span{display:flex;align-items:baseline;gap:5px;white-space:nowrap;}
.student-courses__summary strong{font-size:1.2rem;color:var(--ink);}
.student-courses__scroll{flex:1;min-height:0;overflow-y:scroll;scrollbar-gutter:stable;overscroll-behavior:contain;}
.student-courses__scroll .tbl{table-layout:fixed;}
.student-courses__scroll .tbl th{font-size:.75rem;letter-spacing:.075em;}
.student-courses__scroll .tbl th:nth-child(1),.student-courses__scroll .tbl td:nth-child(1){width:46%;text-align:left;}
.student-courses__scroll .tbl th:nth-child(2),.student-courses__scroll .tbl td:nth-child(2){width:14%;text-align:center;}
.student-courses__scroll .tbl th:nth-child(3),.student-courses__scroll .tbl td:nth-child(3){width:22%;text-align:center;}
.student-courses__scroll .tbl th:nth-child(4),.student-courses__scroll .tbl td:nth-child(4){width:18%;text-align:center;}
.student-courses__scroll .tbl tbody tr{height:clamp(54px,6.2vh,68px);}
.student-courses__scroll .tbl tbody td{padding-block:7px;font-size:.9rem;}
.student-courses__course{display:flex;align-items:center;gap:13px;min-width:0;}
.student-courses__course .tag{flex:0 0 auto;}
.student-courses__course strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;}
.student-courses__scroll .d{display:inline;margin:0 0 0 4px;color:var(--ink-subtle);font-size:.72rem;}
.student-courses__foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 15px;border-top:var(--bw-1) solid var(--hairline);background:var(--surface-2);color:var(--ink-subtle);font-size:var(--t-label);}
.student-courses__foot span{display:flex;align-items:center;gap:7px;}
.student-courses__empty{min-height:420px;display:grid;place-items:center;}
@media (min-width:992px){
  body.student-courses-shell{height:100vh;height:100dvh;overflow:hidden;}
  .student-courses-shell .app,.student-courses-shell .app-main{height:100vh;height:100dvh;min-height:0;overflow:hidden;}
  .student-courses-shell .page{min-height:0;overflow:hidden;display:flex;flex-direction:column;}
  .student-courses-shell .student-courses__head{flex:0 0 auto;}
  .student-courses-shell .student-courses__workspace,.student-courses-shell .student-courses__empty{flex:1;min-height:0;margin:0;}
}
@media (max-width:767.98px){
  .student-courses__toolbar,.student-courses__foot{align-items:flex-start;flex-direction:column;}
  .student-courses__summary{width:100%;justify-content:space-between;}
  .student-courses__scroll .tbl{min-width:700px;}
}

/* ══════════════════════════ WEEKLY SCHEDULE ══════════════════════════ */
.schedule-toolbar{
  min-height:64px;margin-bottom:var(--sp-4);padding:10px 14px;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;
}
.schedule-toolbar__nav{display:flex;align-items:center;gap:8px;}
.schedule-toolbar__range{text-align:center;line-height:1.15;}
.schedule-toolbar__range .eyebrow{display:block;margin-bottom:4px;}
.schedule-toolbar__range strong{font-size:var(--t-sm);color:var(--ink);}
.schedule-toolbar__legend{
  display:flex;justify-content:flex-end;align-items:center;gap:12px;flex-wrap:wrap;
  color:var(--ink-subtle);font-size:var(--t-label);font-weight:var(--fw-bold);
}
.schedule-toolbar__legend span{display:inline-flex;align-items:center;gap:5px;}
.schedule-legend-dot{
  width:9px;height:9px;display:inline-block;border-radius:3px;
  border:var(--bw-1) solid var(--rule-hard);
}
.schedule-legend-dot--lecture{background:var(--brand);}
.schedule-legend-dot--workshop{background:var(--info);}
.schedule-legend-dot--lab{background:var(--warning);}

.schedule-layout{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,310px);
  gap:var(--sp-4);min-height:0;
}
.schedule-week-card{position:relative;min-width:0;margin:0;overflow:hidden;}
.schedule-grid__header{
  display:grid;grid-template-columns:64px repeat(5,minmax(110px,1fr));
  min-width:614px;background:var(--surface-2);
  border-bottom:var(--bw-2) solid var(--rule-hard);
}
.schedule-grid__corner{
  display:grid;place-items:center;color:var(--ink-subtle);
  font-size:.64rem;font-weight:var(--fw-black);letter-spacing:.06em;
  border-right:var(--bw-1) solid var(--hairline);
}
.schedule-day-heading{
  min-height:58px;display:flex;align-items:center;justify-content:center;gap:8px;
  border-right:var(--bw-1) solid var(--hairline);color:var(--ink-subtle);
}
.schedule-day-heading:last-child{border-right:0;}
.schedule-day-heading span{
  font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.08em;
}
.schedule-day-heading strong{
  width:32px;height:32px;display:grid;place-items:center;border-radius:50%;
  font-size:var(--t-xs);color:var(--ink);
}
.schedule-day-heading.is-today strong{background:var(--brand);color:var(--ink-on-accent);}

.schedule-grid__scroll{
  min-height:0;overflow:auto;scrollbar-gutter:stable;overscroll-behavior:contain;
}
.schedule-grid__canvas{
  min-width:614px;height:calc(var(--schedule-grid-minutes) * 1px);
  display:grid;grid-template-columns:64px repeat(5,minmax(110px,1fr));
}
.schedule-time-axis{
  position:relative;background:var(--surface-2);
  border-right:var(--bw-1) solid var(--hairline);
}
.schedule-time-axis span{
  position:absolute;top:calc(var(--schedule-time-offset) * 1px);right:10px;
  transform:translateY(-50%);color:var(--ink-subtle);
  font-size:.65rem;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;
}
.schedule-day-lane{
  position:relative;min-height:100%;
  border-right:var(--bw-1) solid var(--hairline);
  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent 59px,
      var(--hairline) 59px,
      var(--hairline) 60px
    ),
    var(--surface);
}
.schedule-day-lane:last-child{border-right:0;}
.schedule-day-lane.is-today{
  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent 59px,
      var(--hairline) 59px,
      var(--hairline) 60px
    ),
    var(--surface-selected);
}
.schedule-event{
  position:absolute;z-index:2;
  top:calc(var(--schedule-event-start) * 1px);
  right:6px;left:6px;
  height:calc((var(--schedule-event-duration) * 1px) - 8px);
  min-height:52px;padding:7px 8px;overflow:hidden;
  border:var(--bw-2) solid var(--schedule-event-accent);
  border-radius:var(--r-md);background:var(--schedule-event-bg);
  color:var(--ink);box-shadow:var(--sh-hard-xs);
}
.schedule-event--tone-1{--schedule-event-accent:var(--brand);--schedule-event-bg:var(--brand-subtle);}
.schedule-event--tone-2{--schedule-event-accent:var(--info);--schedule-event-bg:var(--info-subtle);}
.schedule-event--tone-3{--schedule-event-accent:var(--warning);--schedule-event-bg:var(--warning-subtle);}
.schedule-event--tone-4{--schedule-event-accent:var(--success);--schedule-event-bg:var(--success-subtle);}
.schedule-event__top{
  display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:4px;
}
.schedule-event__top .tag{padding:1px 5px;font-size:.58rem;}
.schedule-event__type{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--ink-subtle);font-size:.58rem;font-weight:var(--fw-black);
  text-transform:uppercase;letter-spacing:.04em;
}
.schedule-event > strong{
  display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  font-size:.7rem;line-height:1.15;
}
.schedule-event__meta{
  display:block;margin-top:4px;color:var(--ink-subtle);
  font-size:.6rem;font-weight:var(--fw-bold);white-space:nowrap;
}
.schedule-grid__empty{
  position:absolute;inset:60px 0 0 64px;z-index:4;
  display:grid;place-content:center;justify-items:center;gap:10px;
  padding:24px;text-align:center;
  background:
    linear-gradient(to right,var(--hairline) 1px,transparent 1px) 0 0/32px 32px,
    linear-gradient(to bottom,var(--hairline) 1px,transparent 1px) 0 0/32px 32px,
    var(--surface-2);
}
.schedule-grid__empty .empty__title{font-size:var(--t-h4);}
.schedule-grid__empty .empty__body{margin:0;}

.schedule-side{min-height:0;display:flex;flex-direction:column;gap:var(--sp-4);}
.schedule-side .card{margin:0;overflow:hidden;}
.schedule-focus-card{flex:0 0 auto;}
.schedule-focus-card .card-header{padding:12px 14px;}
.schedule-focus-card .card-body{padding:14px;}
.schedule-focus-card h3{
  margin:10px 0 12px;font-size:var(--t-h4);line-height:1.15;letter-spacing:-.02em;
}
.schedule-focus-card__facts{display:grid;gap:8px;}
.schedule-focus-card__facts span{
  display:flex;align-items:center;gap:8px;color:var(--ink-subtle);
  font-size:var(--t-xs);font-weight:var(--fw-semibold);
}
.schedule-focus-card__facts i{width:16px;color:var(--brand-text);}
.schedule-agenda-card{flex:1;min-height:0;display:flex;flex-direction:column;}
.schedule-agenda-card .card-header{flex:0 0 auto;padding:12px 14px;}
.schedule-agenda-list{
  flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;
  padding:6px 12px 12px;
}
.schedule-agenda-item{
  display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;
  padding:10px 0;border-bottom:var(--bw-1) solid var(--hairline);
}
.schedule-agenda-item:last-child{border-bottom:0;}
.schedule-agenda-item time{
  width:38px;height:42px;display:grid;place-content:center;text-align:center;
  border:var(--bw-1) solid var(--hairline-strong);border-radius:var(--r-sm);
  background:var(--surface-2);line-height:1;
}
.schedule-agenda-item time strong{
  color:var(--brand-text);font-size:.58rem;letter-spacing:.06em;
}
.schedule-agenda-item time span{margin-top:3px;font-size:var(--t-xs);font-weight:var(--fw-black);}
.schedule-agenda-item > div{min-width:0;align-self:center;}
.schedule-agenda-item > div strong{
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:var(--t-xs);
}
.schedule-agenda-item > div span{
  display:block;margin-top:3px;color:var(--ink-subtle);font-size:var(--t-label);
}
.schedule-mobile-agenda{display:none;}

@media (min-width:992px){
  body.schedule-shell{height:100vh;height:100dvh;overflow:hidden;}
  .schedule-shell .app,
  .schedule-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .schedule-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(12px,1.8vh,20px);
  }
  .schedule-shell .schedule-page__head{
    flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);
  }
  .schedule-shell .schedule-page__head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .schedule-shell .schedule-toolbar{flex:0 0 auto;}
  .schedule-shell .schedule-layout{flex:1;}
  .schedule-shell .schedule-week-card{
    display:flex;flex-direction:column;min-height:0;
  }
  .schedule-shell .schedule-grid__header{flex:0 0 auto;}
  .schedule-shell .schedule-grid__scroll{flex:1;}
}
@media (max-width:1199.98px){
  .schedule-layout{grid-template-columns:minmax(0,1fr);}
  .schedule-side{display:none;}
  .schedule-toolbar__legend{display:none;}
  .schedule-toolbar{grid-template-columns:1fr auto 1fr;}
}
@media (max-width:767.98px){
  .schedule-toolbar{
    grid-template-columns:1fr auto;margin-bottom:var(--sp-3);
  }
  .schedule-toolbar__range{grid-column:1/-1;grid-row:1;text-align:left;}
  .schedule-toolbar__nav{grid-column:2;grid-row:1;}
  .schedule-toolbar__legend{display:none;}
  .schedule-page__session-count{display:none;}
  .schedule-layout{display:block;}
  .schedule-week-card,
  .schedule-side{display:none;}
  .schedule-mobile-agenda{display:grid;gap:var(--sp-3);}
  .schedule-mobile-day{margin:0;}
  .schedule-mobile-day .card-header{padding:12px 14px;}
  .schedule-mobile-session{
    display:grid;grid-template-columns:56px minmax(0,1fr);align-items:center;
  }
  .schedule-mobile-session__time{font-weight:var(--fw-black);color:var(--brand-text);}
  .schedule-mobile-session strong{display:block;font-size:var(--t-xs);}
  .schedule-mobile-session small{
    display:block;margin-top:3px;color:var(--ink-subtle);font-size:var(--t-label);
  }
}

/* The full course catalogue remains loaded for instant filtering, while its
   table scrolls inside the single-viewport admin shell. */
@media (min-width:992px){
  body.admin-courses-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-courses-shell .app{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-courses-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-courses-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(14px,2.1vh,24px);
  }
  .admin-courses-shell .admin-courses__head{
    flex:0 0 auto;margin-bottom:clamp(12px,1.8vh,20px);
  }
  .admin-courses-shell .admin-courses__head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .admin-courses-shell .admin-courses__card{
    flex:1;min-height:0;margin-bottom:0;
    display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-courses-shell .admin-courses__toolbar{flex:0 0 auto;}
  .admin-courses-shell .admin-courses__table{
    flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;
  }
}

/* Assigning a course has two independently dense panes. On wide admin
   screens, each pane owns its scroll instead of extending the document. */
@media (min-width:1200px){
  body.admin-assign-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-assign-shell .app{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-assign-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-assign-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(14px,2.1vh,24px);
  }
  .admin-assign-shell .admin-assign__head{
    flex:0 0 auto;margin-bottom:clamp(12px,1.8vh,20px);
  }
  .admin-assign-shell .admin-assign__head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .admin-assign-shell .admin-assign__workspace{
    flex:1;min-height:0;align-items:stretch;
  }
  .admin-assign-shell .admin-assign__students,
  .admin-assign-shell .admin-assign__details{
    min-height:0;height:100%;
  }
  .admin-assign-shell .admin-assign__student-card{min-height:0;overflow:hidden;}
  .admin-assign-shell .admin-assign__student-card > .card-header,
  .admin-assign-shell .admin-assign__course-card > .card-header{
    height:58px;min-height:58px;padding-block:0;
  }
  .admin-assign-shell .admin-assign__student-list{
    flex:1;min-height:0;max-height:none !important;
    overflow-y:auto;scrollbar-gutter:stable;
  }
  .admin-assign-shell .admin-assign__details{
    display:flex;flex-direction:column;overflow:visible;
  }
  .admin-assign-shell .admin-assign__details > .admin-assign__course-card{flex:0 0 auto;}
  .admin-assign-shell .admin-assign__course-card.flex-grow-1{min-height:100%;}
  .admin-assign-shell .admin-assign__course-card{overflow:visible;position:relative;z-index:3;}
  .admin-assign-shell .admin-assign__course-card:not(.flex-grow-1){
    margin-bottom:12px;
  }
  .admin-assign-shell .admin-assign__course-card:not(.flex-grow-1) .card-body{
    padding:16px 20px 8px;
  }
  .admin-assign-shell .admin-assign__details > .admin-assign__enrolled-card{
    flex:1 1 0;min-height:0;display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-assign-shell .admin-assign__enrolled-list{
    flex:1 1 auto;min-height:0;max-height:none !important;overflow-y:auto;
    overscroll-behavior-y:contain;scrollbar-gutter:stable;
  }
  .admin-assign-shell .admin-assign__enrolled-list .tbl thead th{
    padding:8px 12px;
  }
  .admin-assign-shell .admin-assign__enrolled-list .tbl tbody td{
    padding:8px 12px;
  }
}

.assign-eligibility-banner{
  margin:12px 0 0;padding:10px 14px;min-height:0;display:flex;align-items:center;
  gap:10px;border-radius:var(--r-lg);
}
.assign-eligibility-banner > i{flex:0 0 auto;font-size:1rem;}
.assign-eligibility-banner p{
  margin:0;min-width:0;font-size:var(--t-xs);line-height:1.35;white-space:nowrap;
}
.assign-eligibility-banner strong{font-weight:var(--fw-black);}

.admin-assign__student-toolbar{
  position:relative;z-index:4;flex-wrap:nowrap;border-radius:0;
}
.admin-assign__student-toolbar .form-control{height:48px;}
.admin-assign__student-toolbar .btn{width:48px;height:48px;}
.live-search-results{
  transition:opacity var(--dur-fast) var(--ease-out);
}
.live-search-results.is-loading{
  opacity:.58;pointer-events:none;
}

.admin-assign__course-form{margin:0;}
.admin-assign__course-controls{
  display:flex;align-items:center;gap:12px;
}
.course-combobox{position:relative;z-index:20;flex:1 1 auto;min-width:0;}
.admin-assign__submit{
  flex:0 0 auto;min-width:176px;height:48px;padding-inline:20px;
}
.course-combobox__control{
  min-height:48px;display:flex;align-items:center;gap:10px;padding:0 8px 0 14px;
  background:var(--field-bg);border:var(--bw-2) solid var(--rule-hard);
  border-radius:var(--r-md);box-shadow:var(--sh-hard-xs);
  transition:border-color var(--dur-fast),box-shadow var(--dur-fast);
}
.course-combobox__control:focus-within{
  border-color:var(--orange);box-shadow:0 0 0 3px var(--focus-ring),var(--sh-hard-xs);
}
.course-combobox__control > i{flex:0 0 auto;color:var(--ink-subtle);}
.course-combobox__input{
  min-width:0;height:44px;padding:0;border:0 !important;background:transparent !important;
  color:var(--ink) !important;box-shadow:none !important;
}
.course-combobox__toggle{
  width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;padding:0;
  border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink-subtle);
}
.course-combobox__toggle:hover{background:var(--surface-3);color:var(--ink);}
.course-combobox__toggle i{transition:transform var(--dur-fast) var(--ease-out);}
.course-combobox.is-open .course-combobox__toggle i{transform:rotate(180deg);}
.course-combobox__options{
  position:absolute;top:calc(100% + 6px);right:0;left:0;z-index:1060;
  padding:6px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;
  background:var(--surface);border:var(--bw-2) solid var(--rule-hard);
  border-radius:var(--r-md);box-shadow:var(--sh-hard-lg);
}
.course-combobox__option{
  width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;
  gap:12px;padding:10px 12px;border:0;border-radius:var(--r-sm);
  background:transparent;color:var(--ink);text-align:left;
}
.course-combobox__option:hover,
.course-combobox__option.is-active{background:var(--surface-3);}
.course-combobox__option[aria-selected="true"]{
  background:var(--surface-selected);box-shadow:inset 3px 0 0 var(--orange);
}
.course-combobox__option-main{display:flex;min-width:0;align-items:baseline;gap:8px;}
.course-combobox__option-main strong{flex:0 0 auto;color:var(--ink);}
.course-combobox__option-main span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.course-combobox__option-meta{
  display:flex;align-items:center;gap:8px;color:var(--ink-subtle);
  font-size:var(--t-label);white-space:nowrap;
}
.course-combobox__option-meta em{
  padding:3px 7px;border-radius:var(--r-pill);background:var(--warning-subtle);
  color:var(--warning-text);font-style:normal;font-weight:var(--fw-bold);
}
.course-combobox__empty{
  padding:18px 12px;color:var(--ink-subtle);font-size:var(--t-sm);text-align:center;
}

@media (max-width:1199.98px){
  .assign-eligibility-banner p{white-space:normal;}
  .course-combobox__options{max-height:320px;}
}
@media (max-width:767.98px){
  .admin-assign__course-controls{align-items:stretch;flex-direction:column;}
  .admin-assign__submit{width:100%;}
}

/* Student detail cards use matched headers and four-row table viewports. */
@media (min-width:768px){
  .student-details__personal-card > .card-header,
  .student-details__academic-card > .card-header{
    height:68px;min-height:68px;padding-block:0;
  }
}
.student-details__table-scroll.scroll-y{
  max-height:304px;overflow-y:auto;scrollbar-gutter:stable;
}
.student-details__table-scroll.student-details__table-scroll--enrolments.scroll-y{
  max-height:326px;
}
.student-details__table-scroll .tbl tbody tr,
.student-details__table-scroll .tbl tbody td{
  height:66px;
}

/* The registry dashboard is a desktop control surface: the shell stays inside
   one viewport while the dense registration table owns its own scroll area. */
@media (min-width:992px){
  body.admin-dashboard-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-dashboard-shell .app{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-dashboard-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-dashboard-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(14px,2.1vh,24px);
  }
  .admin-dashboard-shell .admin-dashboard__head{
    flex:0 0 auto;margin-bottom:clamp(12px,1.8vh,20px);
  }
  .admin-dashboard-shell .admin-dashboard__head .page-head-row{
    display:grid;grid-template-columns:minmax(0,1fr) auto;
    align-items:end;gap:var(--sp-4);
  }
  .admin-dashboard-shell .admin-dashboard__head .page-head-row > :first-child{min-width:0;}
  .admin-dashboard-shell .admin-dashboard__head .page-title{
    font-size:clamp(2rem,2.75vw,2.75rem);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .admin-dashboard-shell .admin-dashboard__head .page-actions{
    flex-wrap:nowrap;align-items:center;
  }
  .admin-dashboard-shell .admin-dashboard__metrics{
    flex:0 0 auto;margin-bottom:clamp(12px,1.8vh,20px) !important;
  }
  .admin-dashboard-shell .admin-dashboard__metrics .kpi{
    padding:clamp(14px,1.8vh,18px);
  }
  .admin-dashboard-shell .admin-dashboard__metrics .kpi__icon{
    width:34px;height:34px;font-size:1rem;
  }
  .admin-dashboard-shell .admin-dashboard__metrics .kpi__value{
    margin-top:clamp(8px,1.2vh,12px);
  }
  .admin-dashboard-shell .admin-dashboard__metrics .kpi__foot{
    margin-top:clamp(8px,1.2vh,12px);
  }
  .admin-dashboard-shell .admin-dashboard__lower{
    flex:1;min-height:0;align-items:stretch;
  }
  .admin-dashboard-shell .admin-dashboard__lower > *{
    min-height:0;display:flex;
  }
  .admin-dashboard-shell .admin-dashboard__card{
    flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-dashboard-shell .admin-dashboard__table{
    flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;
  }
  .admin-dashboard-shell .admin-dashboard__table > .tbl{min-height:100%;}
  .admin-dashboard-shell .admin-dashboard__actions{
    flex:1;min-height:0;
  }
  .admin-dashboard-shell .admin-dashboard__actions .row-item{
    flex:1;min-height:0;padding-block:clamp(10px,1.65vh,16px);
  }
}
@media (max-width:991.98px){
  .admin-dashboard-shell .admin-dashboard__lower > *{grid-column:1/-1;}
}

.student-dashboard__courses-scroll{
  max-height:359px;
  overflow-y:scroll;scrollbar-gutter:stable;overscroll-behavior:contain;
}

/* The student dashboard follows the same one-viewport shell as the registry
   dashboard. Its course table fills the remaining page and owns scrolling. */
@media (min-width:992px){
  body.student-dashboard-shell{height:100vh;height:100dvh;overflow:hidden;}
  .student-dashboard-shell .app,
  .student-dashboard-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .student-dashboard-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(8px,1.2vh,14px);
  }
  .student-dashboard-shell .student-dashboard__head{
    flex:0 0 auto;margin-bottom:clamp(6px,1vh,10px);
  }
  .student-dashboard-shell .student-dashboard__head .page-head-row{
    display:grid;grid-template-columns:minmax(0,1fr) auto;
    align-items:end;gap:var(--sp-4);
  }
  .student-dashboard-shell .student-dashboard__head .page-title{
    font-size:clamp(1.75rem,2.4vw,2.25rem);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .student-dashboard-shell .student-dashboard__head .eyebrow{
    font-size:.625rem;line-height:1;
  }
  .student-dashboard-shell .student-dashboard__head .page-sub{
    margin-top:1px;font-size:.7rem;line-height:1.2;
  }
  .student-dashboard-shell .student-dashboard__metrics{
    flex:0 0 auto;margin-bottom:clamp(6px,1vh,10px) !important;
  }
  .student-dashboard-shell .student-dashboard__metrics .card,
  .student-dashboard-shell .student-dashboard__metrics .kpi{
    min-height:0;height:clamp(104px,15vh,132px) !important;
  }
  .student-dashboard-shell .student-dashboard__metrics .card-body{
    padding:clamp(8px,1.2vh,12px);
    gap:clamp(10px,1.3vw,16px) !important;
    flex-wrap:nowrap !important;
  }
  .student-dashboard-shell .student-dashboard__metrics .ring-wrap{
    width:clamp(78px,6.6vw,94px) !important;
    height:clamp(78px,6.6vw,94px) !important;
  }
  .student-dashboard-shell .student-dashboard__metrics .ring{
    width:clamp(78px,6.6vw,94px) !important;
  }
  .student-dashboard-shell .student-dashboard__metrics .ring-mid .v{
    font-size:clamp(1.2rem,1.7vw,1.65rem);
  }
  .student-dashboard-shell .student-dashboard__metrics .ring-mid .l{
    font-size:.55rem;
  }
  .student-dashboard-shell .student-dashboard__metrics .card-body p{
    margin-bottom:4px !important;font-size:clamp(.95rem,1.4vw,1.2rem) !important;
  }
  .student-dashboard-shell .student-dashboard__metrics .stack-sm{
    gap:2px;
  }
  .student-dashboard-shell .student-dashboard__metrics .kpi{
    padding:clamp(9px,1.25vh,13px);
  }
  .student-dashboard-shell .student-dashboard__metrics .kpi__icon{
    width:30px;height:30px;font-size:.875rem;
  }
  .student-dashboard-shell .student-dashboard__metrics .kpi__value{
    font-size:clamp(2rem,3vw,2.75rem);
  }
  .student-dashboard-shell .student-dashboard__metrics .kpi__value,
  .student-dashboard-shell .student-dashboard__metrics .kpi__foot{
    margin-top:clamp(4px,.7vh,7px);
  }
  .student-dashboard-shell .student-dashboard__courses-card{
    flex:1 1 0;min-height:0;display:flex;flex-direction:column;overflow:hidden;
  }
  .student-dashboard-shell .student-dashboard__courses-card > .card-header{
    flex:0 0 auto;padding-block:7px;
  }
  .student-dashboard-shell .student-dashboard__courses-scroll{
    flex:1 1 0;min-height:0;max-height:none;
  }
  .student-dashboard-shell .student-dashboard__courses-scroll .tbl{
    height:100%;
  }
  .student-dashboard-shell .student-dashboard__courses-scroll .tbl thead th{
    padding-block:8px;
  }
  .student-dashboard-shell .student-dashboard__courses-scroll .tbl tbody tr{
    height:45px;
  }
  .student-dashboard-shell .student-dashboard__courses-scroll .tbl tbody td{
    padding-block:2px;
  }
  .student-dashboard-shell .student-dashboard__courses-scroll .tag{
    margin-top:2px !important;padding:1px 6px;font-size:.58rem;
  }
}

/* ══════════════════════════ 2. PAGE HEADER ══════════════════════════ */
.page-head{margin-bottom:var(--sp-6);}
.crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
        font-size:var(--t-xs);color:var(--ink-subtle);margin-bottom:8px;}
.crumbs a{color:var(--ink-subtle);font-weight:var(--fw-semibold);}
.crumbs a:hover{color:var(--brand-text);}
.crumbs .sep{opacity:.5;}
.crumbs .current{color:var(--ink);font-weight:var(--fw-bold);}
.page-head-row{display:flex;justify-content:space-between;align-items:flex-end;
               gap:var(--sp-4);flex-wrap:wrap;}
.page-title{margin:0;font-size:var(--t-d1);line-height:1.02;letter-spacing:-.038em;}
.page-sub{font-size:var(--t-sm);color:var(--ink-muted);margin-top:6px;display:block;}
.page-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;}

/* highlighter marker on a word in a heading */
.mark-hl{
  position:relative;z-index:0;isolation:isolate;white-space:nowrap;
  padding:.02em .16em .08em;
  color:var(--navy-900);
}
.mark-hl::before{
  content:"";position:absolute;z-index:-1;
  left:-.04em;right:-.04em;top:.03em;bottom:.01em;
  background:var(--volt);transform:rotate(-1deg) skewX(-6deg);
  border-radius:6px 16px 8px 18px;
}
.auth__title .mark-hl{
  display:inline-block;
  margin-top:.12em;
}

/* ══════════════════════════ 3. SURFACES ══════════════════════════ */
.card{
  background:var(--surface);border:var(--bw-2) solid var(--rule-hard);
  border-radius:var(--r-lg);box-shadow:var(--sh-hard-xs);
  margin-bottom:var(--sp-5);
}
.card.soft{border-width:var(--bw-1);border-color:var(--hairline-strong);box-shadow:var(--sh-1);}
.card.flat{box-shadow:none;}
.card-header{
  padding:var(--sp-4) var(--sp-5);display:flex;justify-content:space-between;
  align-items:center;gap:var(--sp-3);flex-wrap:wrap;
  border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);
  border-radius:calc(var(--r-lg) - 2px) calc(var(--r-lg) - 2px) 0 0;
}
.card.soft > .card-header{border-bottom-width:var(--bw-1);border-color:var(--hairline);}
.card-title{font-family:var(--font-display);font-size:var(--t-h4);font-weight:var(--fw-black);
            letter-spacing:-.018em;margin:0;color:var(--ink);}
.card-body{padding:var(--sp-5);}
.card-footer{padding:var(--sp-4) var(--sp-5);background:var(--surface-2);
             border-top:var(--bw-1) solid var(--hairline);
             border-radius:0 0 calc(var(--r-lg) - 2px) calc(var(--r-lg) - 2px);}

/* interactive lift */
.lift{transition:transform var(--dur) var(--ease-spring),box-shadow var(--dur) var(--ease-out);}
.lift:hover{transform:translate(-2px,-2px);box-shadow:var(--sh-hard);}

/* ══════════════════════════ 4. BENTO GRID ══════════════════════════ */
.bento{display:grid;gap:var(--sp-4);grid-template-columns:repeat(12,minmax(0,1fr));}
.bento > *{min-width:0;margin-bottom:0;}
.b3{grid-column:span 3;} .b4{grid-column:span 4;} .b5{grid-column:span 5;}
.b6{grid-column:span 6;} .b7{grid-column:span 7;} .b8{grid-column:span 8;}
.b12{grid-column:span 12;}
.workspace-grid{align-items:stretch;}
.workspace-column{display:flex;flex-direction:column;min-width:0;}
.workspace-column > .card:last-child{margin-bottom:0;}
.workspace-card{
  display:flex;flex-direction:column;min-height:0;overflow:hidden;
}
.workspace-empty{
  flex:1;min-height:0;align-content:center;
}
.workspace-table-scroll{
  flex:1;min-height:0;display:flex;flex-direction:column;
  overflow:auto;scrollbar-gutter:stable;
}
.workspace-table-scroll > .tbl{flex:0 0 auto;}
.workspace-table-scroll > .workspace-empty{flex:1;}
@media (max-width:1199.98px){
  .b3{grid-column:span 6;} .b4{grid-column:span 6;} .b5{grid-column:span 12;}
  .b7{grid-column:span 12;} .b8{grid-column:span 12;}
  .workspace-grid > .workspace-column{grid-column:1/-1;}
}
@media (max-width:767.98px){.bento > *{grid-column:1/-1 !important;}}
@media (max-width:1199.98px){
  .workspace-empty{min-height:280px;}
}

/* ══════════════════════════ 5. KPI TILE ══════════════════════════ */
.kpi{
  position:relative;overflow:hidden;height:100%;
  padding:var(--sp-5);background:var(--surface);
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-xl);
  box-shadow:var(--sh-hard-xs);
  transition:transform var(--dur) var(--ease-spring),box-shadow var(--dur) var(--ease-out);
}
.kpi:hover{transform:translate(-2px,-2px);box-shadow:var(--sh-hard);}
.kpi::after{                                     /* clipped colour blob */
  content:"";position:absolute;right:-26%;top:-42%;width:66%;aspect-ratio:1;
  background:radial-gradient(circle,var(--kpi-accent,var(--brand)) 0%,transparent 68%);
  filter:blur(34px);opacity:.30;pointer-events:none;
}
.kpi__top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);
          position:relative;z-index:1;}
.kpi__label{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.09em;
            text-transform:uppercase;color:var(--ink-subtle);}
.kpi__icon{
  width:38px;height:38px;flex-shrink:0;border-radius:var(--r-sm);
  display:grid;place-items:center;font-size:1.0625rem;
  background:var(--kpi-accent,var(--brand));color:var(--navy-900);
  border:var(--bw-2) solid var(--rule-hard);box-shadow:var(--sh-hard-xs);
}
.kpi__value{
  font-family:var(--font-display);font-size:var(--t-kpi);font-weight:var(--fw-black);
  line-height:1;letter-spacing:-.035em;color:var(--ink);
  font-variant-numeric:tabular-nums;margin-top:var(--sp-3);position:relative;z-index:1;
}
.kpi__value small{font-size:.5em;font-weight:var(--fw-bold);color:var(--ink-subtle);letter-spacing:-.01em;}
.kpi__foot{margin-top:var(--sp-3);display:flex;align-items:center;gap:8px;flex-wrap:wrap;
           position:relative;z-index:1;}
.kpi__note{font-size:var(--t-xs);color:var(--ink-subtle);}

.delta{
  display:inline-flex;align-items:center;gap:4px;padding:2px 8px;
  border-radius:var(--r-pill);font-size:var(--t-label);font-weight:var(--fw-black);
  font-variant-numeric:tabular-nums;border:var(--bw-1) solid currentColor;
}
.delta.up{color:var(--success-text);background:var(--success-subtle);}
.delta.down{color:var(--danger-text);background:var(--danger-subtle);}
.delta.flat{color:var(--ink-subtle);background:var(--surface-3);}

/* ══════════════════════════ 6. BUTTONS (lip press physics) ══════════════════════════ */
.btn{
  --btn-bg:var(--surface);--btn-fg:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:var(--control-h);padding:0 18px;
  font-family:var(--font-ui);font-size:var(--t-sm);font-weight:var(--fw-black);
  letter-spacing:-.005em;white-space:nowrap;text-decoration:none;
  background:var(--btn-bg);color:var(--btn-fg);
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-pill);
  box-shadow:var(--sh-hard-xs);cursor:pointer;
  transition:transform var(--dur-instant) var(--ease-out),
             box-shadow var(--dur-instant) var(--ease-out),
             background var(--dur-fast) linear;
}
.btn:hover{transform:translate(-2px,-2px);box-shadow:var(--sh-hard-sm);text-decoration:none;color:var(--btn-fg);}
.btn:active{transform:translate(1px,1px);box-shadow:none;}
.btn:focus-visible{outline:none;box-shadow:var(--sh-hard-xs),var(--focus-ring);}
.btn[disabled],.btn.disabled{
  background:var(--surface-3);color:var(--ink-subtle);border-color:var(--hairline-strong);
  box-shadow:none;transform:none;cursor:not-allowed;opacity:1;
}
.btn-primary{--btn-bg:var(--brand);--btn-fg:var(--ink-on-accent);}
.btn-primary:hover{--btn-bg:var(--brand-hover);}
.btn-volt{--btn-bg:var(--volt);--btn-fg:var(--navy-900);}
.btn-success{--btn-bg:var(--success);--btn-fg:var(--navy-900);}
.btn-danger{--btn-bg:var(--danger);--btn-fg:#fff;}
.btn-light,.btn-secondary{--btn-bg:var(--surface);--btn-fg:var(--ink);}
.btn-ghost{--btn-bg:transparent;--btn-fg:var(--ink);border-color:transparent;box-shadow:none;}
.btn-ghost:hover{--btn-bg:var(--surface-3);transform:none;box-shadow:none;}
.btn-sm{height:var(--control-h-sm);padding:0 13px;font-size:var(--t-xs);}
.btn-lg{height:var(--control-h-lg);padding:0 26px;font-size:var(--t-body);}
.btn-icon{width:var(--control-h);padding:0;}
.btn-sm.btn-icon{width:var(--control-h-sm);}
.btn-block{width:100%;}

/* ══════════════════════════ 7. PILLS / BADGES / CHIPS ══════════════════════════ */
.pill{
  display:inline-flex;align-items:center;gap:6px;padding:2px 9px;
  border-radius:var(--r-pill);font-size:var(--t-label);font-weight:var(--fw-black);
  letter-spacing:.02em;white-space:nowrap;border:var(--bw-1) solid currentColor;
  background:var(--pill-bg,var(--surface-3));color:var(--pill-fg,var(--ink-muted));
}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;}
.pill.no-dot::before{display:none;}
.pill-success{--pill-bg:var(--success-subtle);--pill-fg:var(--success-text);}
.pill-warning{--pill-bg:var(--warning-subtle);--pill-fg:var(--warning-text);}
.pill-danger{--pill-bg:var(--danger-subtle);--pill-fg:var(--danger-text);}
.pill-info{--pill-bg:var(--info-subtle);--pill-fg:var(--info-text);}
.pill-brand{--pill-bg:var(--brand-subtle);--pill-fg:var(--brand-text);}
.pill-neutral{--pill-bg:var(--surface-3);--pill-fg:var(--ink-muted);}
.pill-sticker{
  --pill-bg:var(--volt);--pill-fg:var(--navy-900);
  border:var(--bw-2) solid var(--rule-hard);box-shadow:var(--sh-hard-xs);
  transform:rotate(-1.5deg);padding:3px 10px;
}

.tag{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--r-xs);
     font-size:var(--t-label);font-weight:var(--fw-bold);font-family:var(--font-mono);
     background:var(--surface-3);color:var(--ink-muted);border:var(--bw-1) solid var(--hairline-strong);}

.chip{
  display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 6px 0 12px;
  border-radius:var(--r-pill);background:var(--brand-subtle);color:var(--brand-text);
  border:var(--bw-1) solid var(--brand-border);
  font-size:var(--t-xs);font-weight:var(--fw-bold);
}
.chip .x{display:inline-flex;align-items:center;justify-content:center;
         width:18px;height:18px;border-radius:50%;background:rgba(11,20,43,.10);
         color:inherit;font-size:11px;}
.chip .x:hover{background:var(--brand);color:var(--navy-900);}

/* grade pill: letter grade -> colour band */
.grade{
  display:inline-grid;place-items:center;min-width:38px;height:30px;padding:0 8px;
  border-radius:var(--r-sm);font-family:var(--font-display);font-size:var(--t-sm);
  font-weight:var(--fw-black);letter-spacing:-.01em;
  border:var(--bw-2) solid var(--rule-hard);box-shadow:var(--sh-hard-xs);
  background:var(--surface-3);color:var(--ink);
}
.grade-a{background:var(--volt);color:var(--navy-900);}
.grade-b{background:var(--success);color:var(--navy-900);}
.grade-c{background:var(--warning);color:var(--navy-900);}
.grade-d{background:var(--orange-300);color:var(--navy-900);}
.grade-f{background:var(--danger);color:#fff;}
.grade-none{background:var(--surface-3);color:var(--ink-subtle);box-shadow:none;
            border-style:dashed;border-width:var(--bw-1);border-color:var(--hairline-strong);}

/* ══════════════════════════ 8. AVATARS (sticker) ══════════════════════════ */
.av{
  --av-bg:var(--orange-200);
  width:38px;height:38px;flex-shrink:0;display:grid;place-items:center;
  border-radius:var(--r-md);overflow:hidden;
  font-family:var(--font-display);font-size:var(--t-sm);font-weight:var(--fw-black);
  letter-spacing:-.02em;color:var(--navy-900);background:var(--av-bg);
  border:var(--bw-2) solid var(--rule-hard);box-shadow:var(--sh-hard-xs);
  transform:rotate(-3deg);transition:transform var(--dur) var(--ease-spring);
}
.av:nth-of-type(2n){transform:rotate(2.5deg);}
.av:hover{transform:rotate(0) scale(1.07);}
.av-sm{width:30px;height:30px;border-radius:var(--r-sm);font-size:var(--t-label);}
.av-lg{width:64px;height:64px;border-radius:var(--r-lg);font-size:1.5rem;box-shadow:var(--sh-hard-sm);}
.av-xl{width:88px;height:88px;border-radius:var(--r-xl);font-size:2rem;box-shadow:var(--sh-hard-sm);}
.av-c1{--av-bg:var(--orange-200);} .av-c2{--av-bg:var(--violet-300);}
.av-c3{--av-bg:var(--cyan-300);}   .av-c4{--av-bg:var(--volt-400);}
.av-c5{--av-bg:var(--pink-500);}   .av-c6{--av-bg:var(--amber-200);}

/* identity cell */
.who{display:flex;align-items:center;gap:12px;min-width:0;}
.who .nm{font-weight:var(--fw-bold);color:var(--ink);display:block;letter-spacing:-.01em;}
.who a.nm:hover{color:var(--brand-text);}
.who .sub{font-size:var(--t-label);color:var(--ink-subtle);display:block;
          font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ══════════════════════════ 9. TABLES ══════════════════════════ */
.tbl-wrap{overflow-x:auto;overscroll-behavior-x:contain;border-radius:0 0 calc(var(--r-lg) - 2px) calc(var(--r-lg) - 2px);}
.tbl{width:100%;border-collapse:separate;border-spacing:0;margin:0;font-size:var(--t-xs);}
.tbl thead th{
  position:sticky;top:0;z-index:2;
  background:var(--navy-900);color:#FFFDF7;
  font-family:var(--font-ui);font-size:var(--t-label);font-weight:var(--fw-black);
  letter-spacing:.09em;text-transform:uppercase;text-align:left;white-space:nowrap;
  padding:11px 14px;box-shadow:inset 0 -2px 0 var(--brand);
}
[data-bs-theme="dark"] .tbl thead th{background:#000;color:#F5F7FB;}
.tbl tbody td{
  padding:12px 14px;border-top:var(--bw-1) solid var(--hairline);
  color:var(--ink);vertical-align:middle;font-variant-numeric:tabular-nums;
}
.tbl tbody tr{transition:background var(--dur-fast) linear;}
.tbl tbody tr:hover{background:var(--surface-selected);}
.tbl tbody tr td:first-child{box-shadow:inset 3px 0 0 transparent;transition:box-shadow var(--dur-fast);}
.tbl tbody tr:hover td:first-child{box-shadow:inset 3px 0 0 var(--brand);}
.tbl tbody tr.is-selected{background:var(--surface-selected);}
.tbl-compact tbody td{padding:7px 14px;}
.tbl-compact thead th{padding:8px 14px;}

/* ══════════════════════════ 10. FORMS ══════════════════════════ */
.form-label{display:block;font-size:var(--t-xs);font-weight:var(--fw-black);
            letter-spacing:-.005em;color:var(--ink);margin-bottom:7px;}
.form-label.req::after{content:" *";color:var(--danger-text);}

.form-control,.form-select{
  width:100%;height:var(--control-h);padding:0 14px;
  font-family:var(--font-ui);font-size:var(--t-sm);font-weight:var(--fw-medium);
  color:var(--ink);background:var(--surface);
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);
  box-shadow:var(--sh-hard-xs);
  transition:box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
textarea.form-control{height:auto;padding:12px 14px;}
.form-control::placeholder{color:var(--ink-subtle);font-weight:var(--fw-regular);}
/* Edge supplies a native reveal icon after typing; this UI already has one. */
input[type="password"]::-ms-reveal,
input[type="password"]::-ms-clear{display:none;}
.form-control:focus,.form-select:focus{
  outline:none;border-color:var(--rule-hard);
  transform:translate(-1px,-1px);box-shadow:var(--sh-hard-sm),var(--focus-ring);
}
.form-control[readonly]{background:var(--surface-3);color:var(--ink-muted);box-shadow:none;}
.form-control.input-validation-error,.form-select.input-validation-error{
  border-color:var(--danger);box-shadow:2px 2px 0 0 var(--danger);
}
.help{font-size:var(--t-label);color:var(--ink-subtle);margin-top:6px;display:block;}
.err,.field-validation-error{font-size:var(--t-label);color:var(--danger-text);
     font-weight:var(--fw-bold);margin-top:6px;display:block;}

.form-check-input{
  width:18px;height:18px;margin-top:.18em;
  border:var(--bw-2) solid var(--rule-hard);border-radius:5px;
  background-color:var(--surface);cursor:pointer;
}
.form-check-input:checked{background-color:var(--brand);border-color:var(--rule-hard);}
.form-check-input:focus{box-shadow:var(--focus-ring);border-color:var(--rule-hard);}
.form-check-input[type="radio"]{border-radius:50%;}
.form-check-label{font-size:var(--t-sm);font-weight:var(--fw-semibold);color:var(--ink);cursor:pointer;}

/* selectable option card */
.opt{
  display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;
  background:var(--surface);border:var(--bw-2) solid var(--hairline-strong);
  border-radius:var(--r-md);transition:all var(--dur-fast) var(--ease-out);
}
.opt:hover{border-color:var(--rule-hard);}
.opt:has(input:checked){background:var(--brand-subtle);border-color:var(--rule-hard);box-shadow:var(--sh-hard-xs);}
.opt input{margin:0;}

/* search box */
.search{position:relative;min-width:220px;}
.search > i{position:absolute;left:14px;top:50%;transform:translateY(-50%);
            color:var(--ink-subtle);pointer-events:none;font-size:1rem;}
.search .form-control{padding-left:40px;}

/* toolbar */
.toolbar{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;
         padding:var(--sp-4) var(--sp-5);border-bottom:var(--bw-2) solid var(--rule-hard);
         background:var(--surface-2);border-radius:calc(var(--r-lg) - 2px) calc(var(--r-lg) - 2px) 0 0;}
.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;
         padding:var(--sp-3) var(--sp-5);border-bottom:var(--bw-1) solid var(--hairline);}

/* ══════════════════════════ 11. TABS ══════════════════════════ */
.tabs{display:flex;gap:6px;padding:5px;background:var(--surface-3);
      border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-pill);
      width:max-content;max-width:100%;overflow-x:auto;}
.tabs button,.tabs a{
  display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 16px;
  border:none;background:transparent;border-radius:var(--r-pill);
  font-family:var(--font-ui);font-size:var(--t-xs);font-weight:var(--fw-bold);
  color:var(--ink-muted);white-space:nowrap;cursor:pointer;text-decoration:none;
  transition:background var(--dur-fast),color var(--dur-fast);
}
.tabs button:hover,.tabs a:hover{color:var(--ink);text-decoration:none;}
.tabs .active{background:var(--brand);color:var(--ink-on-accent);font-weight:var(--fw-black);}
.tabs .cnt{font-size:var(--t-label);font-variant-numeric:tabular-nums;
           padding:1px 6px;border-radius:var(--r-pill);background:rgba(11,20,43,.12);}

/* ══════════════════════════ 12. PROGRESS / RINGS ══════════════════════════ */
.bar{display:block;width:100%;height:10px;border-radius:var(--r-pill);background:var(--surface-3);
     border:var(--bw-1) solid var(--hairline-strong);overflow:hidden;}
.bar > span{display:block;height:100%;border-radius:inherit;background:var(--brand);
            transition:width var(--dur-celebrate) var(--ease-out);}
.bar-chunky{height:16px;border:var(--bw-2) solid var(--rule-hard);box-shadow:var(--sh-hard-xs);}
.bar-chunky > span{background:linear-gradient(90deg,var(--brand),var(--volt));position:relative;}
.bar-chunky > span::after{
  content:"";position:absolute;inset:0;opacity:.26;
  background:repeating-linear-gradient(115deg,#fff 0 8px,transparent 8px 16px);
  animation:stripe .9s linear infinite;
}
@keyframes stripe{to{transform:translateX(16px);}}
@media (prefers-reduced-motion:reduce){.bar-chunky > span::after{animation:none;}}

.programme-stat{display:grid;gap:8px;min-width:0;}
.programme-stat__meta{
  display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0;
}
.programme-stat__name{
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:var(--t-xs);font-weight:var(--fw-black);color:var(--ink);
}
.programme-stat__value{
  flex-shrink:0;white-space:nowrap;font-size:var(--t-label);
  color:var(--ink-subtle);font-variant-numeric:tabular-nums;
}

.ring{
  --p:0;
  width:120px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--ring-color,var(--brand)) calc(var(--p) * 1%),
                            var(--ring-track,rgba(255,255,255,.14)) 0);
  -webkit-mask:radial-gradient(farthest-side,transparent 68%,#000 69%);
          mask:radial-gradient(farthest-side,transparent 68%,#000 69%);
}
.ring-wrap{position:relative;display:grid;place-items:center;}
.ring-wrap .ring{position:absolute;inset:0;margin:auto;}
.ring-mid{text-align:center;line-height:1;}
.ring-mid .v{font-family:var(--font-display);font-size:1.75rem;font-weight:var(--fw-black);
             letter-spacing:-.04em;font-variant-numeric:tabular-nums;display:block;}
.ring-mid .l{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.09em;
             text-transform:uppercase;opacity:.7;display:block;margin-top:4px;}

/* mastery grid — a transcript as a heatmap */
.mastery{display:flex;flex-wrap:wrap;gap:5px;}
.mastery i{
  width:18px;height:18px;border-radius:5px;display:block;
  border:var(--bw-1) solid var(--rule-hard);background:var(--surface-3);
  transition:transform var(--dur-fast) var(--ease-spring);
}
.mastery i:hover{transform:scale(1.25);}
.mastery i.g-a{background:var(--volt);} .mastery i.g-b{background:var(--success);}
.mastery i.g-c{background:var(--warning);} .mastery i.g-d{background:var(--orange-300);}
.mastery i.g-f{background:var(--danger);}
.mastery i.g-none{background:var(--surface-3);border-style:dashed;}

/* ══════════════════════════ 13. ALERTS / BANNERS ══════════════════════════ */
.alert{
  display:flex;gap:12px;align-items:flex-start;padding:var(--sp-4);
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);
  box-shadow:var(--sh-hard-xs);margin-bottom:var(--sp-4);
  font-size:var(--t-sm);background:var(--surface);color:var(--ink);
}
.alert > i:first-child{font-size:1.25rem;line-height:1;margin-top:1px;flex-shrink:0;}
.alert .ttl{font-family:var(--font-display);font-weight:var(--fw-black);
            letter-spacing:-.015em;margin:0 0 3px;font-size:var(--t-h4);}
.alert-success{background:var(--success-subtle);color:var(--success-text);}
.alert-danger{background:var(--danger-subtle);color:var(--danger-text);}
.alert-warning{background:var(--warning-subtle);color:var(--warning-text);}
.alert-info{background:var(--info-subtle);color:var(--info-text);}
.alert .btn-close{margin-left:auto;flex-shrink:0;}
.alert ul{margin:0;padding-left:1.1rem;}

/* ══════════════════════════ 14. EMPTY STATE ══════════════════════════ */
.empty{
  display:grid;place-items:center;gap:var(--sp-3);text-align:center;
  padding:var(--sp-12) var(--sp-6);
  background:
    linear-gradient(to right,var(--hairline) 1px,transparent 1px) 0 0/32px 32px,
    linear-gradient(to bottom,var(--hairline) 1px,transparent 1px) 0 0/32px 32px,
    var(--surface-2);
}
.empty__art{
  width:66px;height:66px;border-radius:var(--r-lg);display:grid;place-items:center;
  font-size:1.75rem;background:var(--volt);color:var(--navy-900);
  border:var(--bw-2) solid var(--rule-hard);box-shadow:var(--sh-hard-sm);
  transform:rotate(-4deg);
}
.empty__title{font-family:var(--font-display);font-size:var(--t-h3);font-weight:var(--fw-black);
              letter-spacing:-.025em;margin:0;}
.empty__body{max-width:40ch;color:var(--ink-muted);font-size:var(--t-sm);margin:0;}
.empty-sm{padding:var(--sp-8) var(--sp-4);}
.empty-sm .empty__art{width:48px;height:48px;font-size:1.25rem;}

/* ══════════════════════════ 15. LISTS ══════════════════════════ */
.rows{display:flex;flex-direction:column;}
.row-item{
  display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);
  border-bottom:var(--bw-1) solid var(--hairline);text-decoration:none;color:inherit;
  transition:background var(--dur-fast) linear;position:relative;
}
.row-item:last-child{border-bottom:none;}
.row-item:hover{background:var(--surface-selected);text-decoration:none;color:inherit;}
a.row-item::after{
  content:"\F285";font-family:bootstrap-icons;margin-left:auto;
  color:var(--ink-subtle);font-size:.875rem;flex-shrink:0;
}
.row-item .lead-icon{
  width:40px;height:40px;flex-shrink:0;border-radius:var(--r-md);display:grid;place-items:center;
  font-size:1.125rem;background:var(--surface-3);color:var(--ink);
  border:var(--bw-2) solid var(--rule-hard);box-shadow:var(--sh-hard-xs);
}
.row-item .t{font-weight:var(--fw-bold);color:var(--ink);display:block;letter-spacing:-.01em;}
.row-item .d{font-size:var(--t-label);color:var(--ink-subtle);display:block;}
.accent-bar{width:4px;align-self:stretch;border-radius:var(--r-pill);background:var(--brand);flex-shrink:0;}

/* key/value list */
.kv{display:flex;flex-direction:column;}
.kv > div{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);
          padding:13px var(--sp-5);border-bottom:var(--bw-1) solid var(--hairline);font-size:var(--t-sm);}
.kv > div:last-child{border-bottom:none;}
.kv dt,.kv .k{color:var(--ink-subtle);font-weight:var(--fw-semibold);margin:0;}
.kv dd,.kv .v{margin:0;font-weight:var(--fw-bold);color:var(--ink);text-align:right;}

/* ══════════════════════════ 16. DROPDOWN / MODAL ══════════════════════════ */
.dropdown-menu{
  background:var(--surface);border:var(--bw-2) solid var(--rule-hard);
  border-radius:var(--r-lg);box-shadow:var(--sh-hard-sm);padding:7px;
  font-size:var(--t-xs);min-width:210px;
}
.dropdown-item{border-radius:var(--r-sm);padding:9px 11px;font-weight:var(--fw-semibold);color:var(--ink);
               display:flex;align-items:center;gap:9px;}
.dropdown-item:hover,.dropdown-item:focus{background:var(--surface-3);color:var(--ink);}
.dropdown-item.text-danger:hover{background:var(--danger-subtle);color:var(--danger-text);}
.dropdown-header{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.09em;
                 text-transform:uppercase;color:var(--ink-subtle);padding:8px 11px 4px;}
.dropdown-divider{border-color:var(--hairline);margin:5px 0;}
.account-menu{
  width:min(240px,calc(100vw - 24px));padding:9px;
  border-radius:var(--r-xl);
}
.account-menu__logout{margin:0;}
.account-menu__signout{
  width:100%;padding:12px;gap:11px;border-radius:var(--r-md);
}
.account-menu__action-icon{
  width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;
  border-radius:var(--r-sm);background:var(--danger-subtle);
  border:var(--bw-1) solid color-mix(in srgb,var(--danger) 28%,transparent);
}
.account-menu__action-copy{min-width:0;line-height:1.15;text-align:left;}
.account-menu__action-copy > span{
  display:block;color:var(--danger-text);font-weight:var(--fw-black);
}
.account-menu__action-copy small{
  display:block;margin-top:3px;color:var(--ink-subtle);
  font-size:var(--t-label);font-weight:var(--fw-semibold);
}
.account-menu__action-arrow{
  margin-left:auto;color:var(--ink-subtle);font-size:.8125rem;
}
.account-menu__signout:hover .account-menu__action-arrow{color:var(--danger-text);}

.modal-content{background:var(--surface);border:var(--bw-2) solid var(--rule-hard);
               border-radius:var(--r-2xl);box-shadow:var(--sh-hard-lg);}
.modal-header{padding:var(--sp-5) var(--sp-6);border-bottom:var(--bw-2) solid var(--rule-hard);}
.modal-title{font-family:var(--font-display);font-weight:var(--fw-black);letter-spacing:-.028em;}
.modal-body{padding:var(--sp-6);}
.modal-footer{padding:var(--sp-4) var(--sp-6);background:var(--surface-2);
              border-top:var(--bw-1) solid var(--hairline);gap:var(--sp-3);}
.modal-backdrop{background:rgba(11,20,43,.45);}
@supports (backdrop-filter:blur(1px)){.modal-backdrop{backdrop-filter:blur(8px);}}

/* ══════════════════════════ 17. PAGINATION ══════════════════════════ */
.pager{display:flex;gap:5px;align-items:center;list-style:none;margin:0;padding:0;}
.pager a,.pager span{
  display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 9px;
  border-radius:var(--r-sm);font-size:var(--t-xs);font-weight:var(--fw-bold);
  font-variant-numeric:tabular-nums;color:var(--ink-muted);text-decoration:none;
  border:var(--bw-2) solid transparent;transition:all var(--dur-fast) var(--ease-out);
}
.pager a:hover{background:var(--surface-3);color:var(--ink);border-color:var(--hairline-strong);text-decoration:none;}
.pager .active > span{background:var(--brand);color:var(--ink-on-accent);
                      border-color:var(--rule-hard);box-shadow:var(--sh-hard-xs);}
.pager .disabled > span{opacity:.4;}

/* ══════════════════════════ 18. AUTH SPLIT ══════════════════════════ */
.auth{display:grid;grid-template-columns:1.1fr .9fr;min-height:100vh;}
.auth__stage{
  position:relative;overflow:hidden;display:grid;align-content:center;
  padding:clamp(28px,5vw,72px);color:#FFFDF7;
  background:linear-gradient(160deg,var(--navy-950) 0%,var(--navy-800) 55%,#2A1F52 100%);
}
.auth__stage::before{
  content:"";position:absolute;inset:-18%;filter:blur(64px);opacity:.5;pointer-events:none;
  background:
    radial-gradient(38% 42% at 16% 24%,var(--orange-500) 0,transparent 62%),
    radial-gradient(34% 38% at 80% 14%,var(--violet-500) 0,transparent 64%),
    radial-gradient(42% 46% at 58% 86%,var(--cyan-500) 0,transparent 66%);
  animation:drift 14s var(--ease-emph) infinite alternate;
}
@keyframes drift{to{transform:translate3d(3%,-2%,0) scale(1.07) rotate(5deg);}}
@media (prefers-reduced-motion:reduce){.auth__stage::before{animation:none;}}
.auth__stage::after{
  content:"";position:absolute;inset:0;opacity:.05;mix-blend-mode:overlay;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.auth__inner{position:relative;z-index:1;max-width:540px;}
.auth__title{
  font-family:var(--font-display);font-size:var(--t-hero);font-weight:var(--fw-black);
  line-height:.94;letter-spacing:-.045em;margin:var(--sp-5) 0 var(--sp-4);color:#FFFDF7;
}
.auth__title .thin{font-weight:300;}
.auth__title .out{-webkit-text-stroke:2px #FFFDF7;color:transparent;}
.auth__lead{font-size:1.0625rem;line-height:1.6;color:rgba(255,253,247,.78);max-width:46ch;}
.auth__proof{display:flex;gap:var(--sp-8);margin-top:var(--sp-10);flex-wrap:wrap;}
.auth__proof .n{font-family:var(--font-display);font-size:1.75rem;font-weight:var(--fw-black);
                letter-spacing:-.035em;font-variant-numeric:tabular-nums;display:block;}
.auth__proof .l{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.09em;
                text-transform:uppercase;color:rgba(255,253,247,.62);display:block;margin-top:4px;}
.auth__stage,.auth__panel,.auth__panel-inner{min-width:0;}
.auth__panel{display:grid;align-content:center;padding:clamp(28px,5vw,64px);background:var(--canvas);}
.auth__panel-inner{width:100%;max-width:400px;margin:0 auto;}
@media (max-width:991.98px){
  .auth{grid-template-columns:1fr;}
  .auth__stage{padding:var(--sp-8) var(--sp-5);}
  .auth__title{font-size:clamp(2rem,7vw,2.75rem);}
  .auth__proof{gap:var(--sp-5);}
}
@media (max-width:359.98px){
  .auth__panel{padding:var(--sp-5) var(--sp-4);}
}

/* ══════════════════════════ 19. UTILITIES ══════════════════════════ */
.stack-sm{display:flex;flex-direction:column;gap:var(--sp-2);}
.stack{display:flex;flex-direction:column;gap:var(--sp-4);}
.inline{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;}
.inline-3{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;}
.muted{color:var(--ink-subtle);}
.dim{color:var(--ink-muted);}
.fs-label{font-size:var(--t-label);}
.fs-xs{font-size:var(--t-xs);}
.fs-sm{font-size:var(--t-sm);}
.fw-black{font-weight:var(--fw-black);}
.scroll-y{
  max-height:440px;overflow-y:auto;overscroll-behavior-y:auto;
  scrollbar-gutter:stable;
}
.account-table-scroll{
  max-height:min(62vh,620px);overflow:auto;scrollbar-gutter:stable;
}
.grid-paper{
  background:
    linear-gradient(to right,var(--hairline) 1px,transparent 1px) 0 0/32px 32px,
    linear-gradient(to bottom,var(--hairline) 1px,transparent 1px) 0 0/32px 32px;
}
.hstrip{display:flex;gap:var(--sp-3);overflow-x:auto;padding-bottom:var(--sp-2);
        scroll-snap-type:x mandatory;}
.hstrip > *{scroll-snap-align:start;flex-shrink:0;}

/* Compact create screens: keep the original visual language while using the
   available admin canvas instead of reserving a third column for guidance. */
.admin-register-student__layout,
.admin-course-create__workspace{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4);
}
.admin-register-student__secondary{
  min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4);
}
.admin-register-student__actions,
.admin-course-create__actions{margin-top:var(--sp-4);}
.admin-register-student__auto-note,
.admin-course-create__note{margin-bottom:var(--sp-3);}
.register-course-combobox{z-index:50;}
.register-course-combobox__option{min-height:36px;padding:6px 10px;}

.admin-role-permissions__tabs{margin-bottom:var(--sp-4);}
.admin-role-permissions__panel:not(.is-active){display:none;}
.admin-role-permissions__panel.is-active{display:flex;flex-direction:column;}
.admin-role-permissions__form{
  flex:1;min-height:0;display:flex;flex-direction:column;
}
.admin-role-permissions__body{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  align-content:start;gap:var(--sp-3);
}
.admin-role-permissions__group{
  min-width:0;margin:0;padding:var(--sp-3);
  border:var(--bw-1) solid var(--hairline-strong);border-radius:var(--r-lg);
}
.admin-role-permissions__group legend{
  float:none;width:auto;margin:0 0 var(--sp-2);padding:0;
}
.admin-role-permissions__options{display:grid;gap:8px;}
.admin-role-permissions__options .opt{min-height:58px;}
.admin-role-permissions__footer{
  display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);
  flex-wrap:wrap;
}

@media (min-width:992px){
  body.admin-register-student-shell,
  body.admin-course-create-shell,
  body.admin-role-permissions-shell{
    height:100vh;height:100dvh;overflow:hidden;
  }
  .admin-register-student-shell .app,
  .admin-course-create-shell .app,
  .admin-role-permissions-shell .app,
  .admin-register-student-shell .app-main,
  .admin-course-create-shell .app-main,
  .admin-role-permissions-shell .app-main{
    height:100vh;height:100dvh;min-height:0;overflow:hidden;
  }
  .admin-register-student-shell .page,
  .admin-course-create-shell .page,
  .admin-role-permissions-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(12px,1.8vh,20px);
  }
  .admin-register-student__head,
  .admin-course-create__head,
  .admin-role-permissions__head{
    flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);
  }
  .admin-register-student__head .page-title,
  .admin-course-create__head .page-title,
  .admin-role-permissions__head .page-title{
    font-size:clamp(2rem,3vw,2.65rem);
  }

  .admin-course-create__form{
    flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;
  }
  .admin-register-student__form{
    flex:0 0 auto;display:flex;flex-direction:column;gap:16px;
  }
  .admin-register-student__layout{
    flex:0 0 auto;grid-template-columns:1fr;
    grid-template-rows:max-content max-content;gap:16px;
  }
  .admin-register-student__secondary{
    min-height:0;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:16px;
  }
  .admin-course-create__workspace{flex:1;min-height:0;gap:12px;}
  .admin-register-student__identity,
  .admin-register-student__credentials,
  .admin-register-student__record,
  .admin-course-create__details,
  .admin-course-create__access{
    min-height:0;overflow:visible;
  }
  .admin-register-student__identity > .card-header,
  .admin-register-student__credentials > .card-header,
  .admin-register-student__record > .card-header,
  .admin-course-create__details > .card-header,
  .admin-course-create__access > .card-header{
    height:42px;min-height:42px;padding-block:0;
  }
  .admin-register-student__identity > .card-body,
  .admin-register-student__credentials > .card-body,
  .admin-register-student__record > .card-body,
  .admin-course-create__details > .card-body,
  .admin-course-create__access > .card-body{
    padding:10px 14px;
  }
  .admin-register-student__auto-note,
  .admin-course-create__note{
    margin-bottom:10px;padding:9px 12px;
  }
  .admin-register-student__actions,
  .admin-course-create__actions{
    flex:0 0 auto;margin:0;
  }
  .admin-register-student__actions .btn,
  .admin-course-create__actions .btn{height:46px;min-height:46px;}

  .admin-register-student-shell .page{overflow:visible;}
  .admin-register-student__head{
    margin-bottom:8px;
  }
  .admin-register-student__head .crumbs{margin-bottom:3px;}
  .admin-register-student__head .page-title{
    font-size:clamp(1.75rem,2.5vw,2.25rem);line-height:1;
  }
  .admin-register-student__head .page-sub{
    font-size:var(--t-xs);line-height:1.25;
  }
  .admin-register-student__identity .form-label,
  .admin-register-student__credentials .form-label,
  .admin-register-student__record .form-label{
    margin-bottom:5px;font-size:var(--t-xs);line-height:1.2;
  }
  .admin-register-student__identity > .card-header,
  .admin-register-student__credentials > .card-header,
  .admin-register-student__record > .card-header{
    height:50px;min-height:50px;
  }
  .admin-register-student__identity > .card-body,
  .admin-register-student__credentials > .card-body{
    display:block;padding:16px 18px;
  }
  .admin-register-student__record > .card-body{
    display:flex;flex-direction:column;justify-content:center;
    padding:16px 18px;
  }
  .admin-register-student__identity .form-control,
  .admin-register-student__identity .form-select,
  .admin-register-student__credentials .form-control,
  .admin-register-student__record .form-control,
  .admin-register-student__record .form-select{
    height:44px;min-height:44px;
  }
  .admin-register-student__identity .help,
  .admin-register-student__record .help{
    display:block;margin-top:5px;font-size:var(--t-label);line-height:1.25;
  }
  .admin-register-student__auto-note{
    min-height:36px;margin-bottom:12px;padding:8px 12px;
    font-size:var(--t-label);line-height:1.25;
  }
  .admin-register-student__actions .btn{
    height:46px;min-height:46px;padding-block:0;
  }
  .admin-register-student__record .course-combobox__control{min-height:44px;height:44px;}
  .admin-register-student__record .course-combobox__input{height:40px;}

  .admin-role-permissions__tabs{flex:0 0 auto;margin-bottom:12px;}
  .admin-role-permissions__workspace{flex:1;min-height:0;}
  .admin-role-permissions__panel.is-active{
    height:100%;min-height:0;overflow:hidden;
  }
  .admin-role-permissions__panel > .card-header{
    flex:0 0 auto;min-height:58px;padding-block:8px;
  }
  .admin-role-permissions__body{
    flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;
    padding:12px 16px;
  }
  .admin-role-permissions__footer{
    flex:0 0 auto;padding-block:10px;
  }
}

@media (max-width:991.98px){
  .admin-register-student__layout,
  .admin-course-create__workspace,
  .admin-role-permissions__body{grid-template-columns:1fr;}
  .admin-register-student__secondary{margin-top:0;}
}
@media (min-width:992px) and (max-height:739.98px){
  .admin-register-student__auto-note{display:none;}
  .admin-register-student__identity .help,
  .admin-register-student__record .help{display:none;}
  .admin-register-student__form,
  .admin-register-student__layout{gap:12px;}
}

/* ═══════════════════════ 7-DAY / 3-SHIFT TIMETABLE ═══════════════════════ */
.schedule-matrix-card{
  min-height:0;display:flex;flex:1;overflow:hidden;margin:0;
}
.schedule-matrix-scroll{
  width:100%;min-height:0;overflow:auto;overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.schedule-matrix{
  min-width:900px;min-height:100%;display:grid;
  grid-template-columns:96px repeat(7,minmax(114px,1fr));
  grid-template-rows:56px repeat(3,minmax(118px,1fr));
  background:var(--surface);
}
.schedule-matrix__corner,.schedule-matrix__day,
.schedule-matrix__shift,.schedule-matrix__cell{
  border-right:var(--bw-1) solid var(--hairline);
  border-bottom:var(--bw-1) solid var(--hairline);
}
.schedule-matrix__corner{
  display:grid;place-content:center;text-align:center;
  background:var(--surface-2);color:var(--ink-subtle);
}
.schedule-matrix__corner span{font-size:.62rem;font-weight:var(--fw-black);letter-spacing:.1em;}
.schedule-matrix__corner small{margin-top:2px;font-size:.58rem;}
.schedule-matrix__day{
  min-width:0;display:flex;align-items:center;justify-content:center;gap:8px;
  background:var(--surface-2);color:var(--ink-subtle);
}
.schedule-matrix__day span{font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.08em;}
.schedule-matrix__day strong{
  width:30px;height:30px;display:grid;place-items:center;
  border-radius:50%;color:var(--ink);font-size:var(--t-xs);
}
.schedule-matrix__day.is-today strong{background:var(--brand);color:var(--ink-on-accent);}
.schedule-matrix__shift{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;padding:8px;text-align:center;background:var(--surface-2);
  box-shadow:inset 4px 0 0 var(--shift-accent);
}
.schedule-matrix__shift--morning{--shift-accent:var(--warning);}
.schedule-matrix__shift--afternoon{--shift-accent:var(--info);}
.schedule-matrix__shift--evening{--shift-accent:var(--violet-500);}
.schedule-matrix__shift > span{
  font-size:.64rem;font-weight:var(--fw-black);text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-subtle);
}
.schedule-matrix__shift strong{font-size:.72rem;color:var(--ink);}
.schedule-matrix__shift small{font-size:.58rem;color:var(--ink-subtle);}
.schedule-matrix__cell{
  position:relative;min-width:0;padding:4px;
  background:
    linear-gradient(to right,var(--hairline) 1px,transparent 1px) 0 0/28px 28px,
    linear-gradient(to bottom,var(--hairline) 1px,transparent 1px) 0 0/28px 28px,
    var(--surface);
}
.schedule-matrix__cell.is-today{
  background:
    linear-gradient(to right,var(--hairline) 1px,transparent 1px) 0 0/28px 28px,
    linear-gradient(to bottom,var(--hairline) 1px,transparent 1px) 0 0/28px 28px,
    var(--surface-selected);
}
.schedule-matrix__free{display:block;width:100%;height:100%;min-height:94px;}
.schedule-block{
  min-height:100%;display:flex;flex-direction:column;padding:8px 5px;
  border:var(--bw-2) solid var(--schedule-event-accent);
  border-radius:var(--r-md);background:var(--schedule-event-bg);
  color:var(--ink);box-shadow:var(--sh-hard-xs);overflow:hidden;
}
.schedule-block + .schedule-block{margin-top:7px;}
.schedule-block--tone-1{--schedule-event-accent:var(--brand);--schedule-event-bg:var(--brand-subtle);}
.schedule-block--tone-2{--schedule-event-accent:var(--info);--schedule-event-bg:var(--info-subtle);}
.schedule-block--tone-3{--schedule-event-accent:var(--warning);--schedule-event-bg:var(--warning-subtle);}
.schedule-block--tone-4{--schedule-event-accent:var(--success);--schedule-event-bg:var(--success-subtle);}
.schedule-block__top{
  display:flex;align-items:center;justify-content:space-between;gap:5px;
  margin-bottom:7px;color:var(--ink-subtle);
  font-size:.63rem;font-weight:var(--fw-black);text-transform:uppercase;
}
.schedule-block__top .tag{padding:2px 5px;font-size:.62rem;}
.schedule-block > strong{
  display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;
  margin-bottom:auto;font-size:.84rem;line-height:1.16;letter-spacing:-.015em;
  overflow-wrap:normal;word-break:normal;
}
.schedule-block__room,.schedule-block__lecturer{
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  margin-top:6px;color:var(--ink-subtle);
  font-size:.68rem;font-weight:var(--fw-bold);
}
.schedule-block__room i,.schedule-block__lecturer i{margin-right:3px;color:var(--brand-text);}
.schedule-summary{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;
  flex:0 0 auto;margin-top:10px;
}
.schedule-summary > span{
  display:flex;align-items:center;gap:8px;min-width:0;
  color:var(--ink-subtle);font-size:var(--t-label);
}
.schedule-summary i{color:var(--brand-text);}
.schedule-summary strong{color:var(--ink);}
.schedule-legend-dot--morning{background:var(--warning);}
.schedule-legend-dot--afternoon{background:var(--info);}
.schedule-legend-dot--evening{background:var(--violet-500);}

/* Schedule administration */
.schedule-owner-picker{margin-bottom:var(--sp-4);padding:14px;}
.schedule-owner-search{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;}
.schedule-owner-search .search-box{position:relative;}
.schedule-owner-search .search-box i{
  position:absolute;left:15px;top:50%;z-index:2;transform:translateY(-50%);color:var(--ink-subtle);
}
.schedule-owner-search .form-control{padding-left:42px;}
.schedule-owner-rail{
  display:flex;gap:8px;margin-top:12px;padding:2px 2px 8px;
  overflow-x:auto;overscroll-behavior-x:contain;
}
.schedule-owner-chip{
  min-width:190px;display:flex;align-items:center;gap:9px;padding:8px 10px;
  color:var(--ink);background:var(--surface-2);
  border:var(--bw-2) solid var(--hairline-strong);border-radius:var(--r-md);
}
.schedule-owner-chip:hover,.schedule-owner-chip.is-active{
  color:var(--ink);background:var(--surface-selected);border-color:var(--rule-hard);
  box-shadow:var(--sh-hard-xs);
}
.schedule-owner-chip > span:last-child{min-width:0;}
.schedule-owner-chip strong,.schedule-owner-chip small{
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.schedule-owner-chip strong{font-size:var(--t-xs);}
.schedule-owner-chip small{margin-top:2px;color:var(--ink-subtle);font-size:var(--t-label);}
.schedule-faculty-picker{
  display:grid;grid-template-columns:minmax(220px,420px) auto;align-items:end;gap:10px;
}
.schedule-faculty-picker .field{min-width:0;}
.schedule-manager-empty{min-height:330px;display:grid;place-content:center;text-align:center;}
.schedule-manager-toolbar{
  min-height:64px;display:flex;align-items:center;justify-content:space-between;
  gap:16px;margin-bottom:var(--sp-3);padding:10px 14px;
  background:var(--surface-2);border:var(--bw-2) solid var(--rule-hard);
  border-radius:var(--r-lg);box-shadow:var(--sh-hard-xs);
}
.schedule-manager-owner{display:flex;align-items:center;gap:10px;min-width:0;}
.schedule-manager-owner > span:last-child{min-width:0;}
.schedule-manager-owner strong,.schedule-manager-owner small{
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.schedule-manager-owner small{margin-top:2px;color:var(--ink-subtle);font-size:var(--t-label);}
.schedule-manager-toolbar .schedule-toolbar__nav{margin-left:auto;}
.schedule-manager-range{margin-left:8px;font-size:var(--t-xs);}
.schedule-shared-note{display:flex;align-items:center;gap:10px;margin-bottom:var(--sp-3);}
.schedule-shared-note > i{flex:0 0 auto;font-size:1.1rem;}
.schedule-matrix-card--admin{min-height:430px;max-height:620px;}
.schedule-block--editable{min-height:118px;}
.schedule-block__actions{display:flex;align-items:center;gap:5px;margin-top:8px;}
.schedule-block__actions form{margin:0;}
.admin-schedule__head-actions{display:flex;align-items:center;gap:10px;}
.admin-schedule-ownerbar{position:relative;z-index:30;margin-bottom:10px;padding:9px 12px;overflow:visible;}
.admin-schedule-ownerbar__form{
  display:grid;grid-template-columns:minmax(300px,1.15fr) minmax(280px,.85fr) auto;
  align-items:end;gap:12px;
}
.schedule-owner-combobox{position:relative;min-width:0;}
.schedule-owner-combobox .form-label{margin-bottom:4px;}
.schedule-owner-combobox__control{
  min-height:44px;display:flex;align-items:center;gap:9px;padding:0 7px 0 13px;
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);
  background:var(--field-bg);box-shadow:var(--sh-hard-xs);
}
.schedule-owner-combobox__control:focus-within{
  border-color:var(--orange);box-shadow:0 0 0 3px var(--focus-ring),var(--sh-hard-xs);
}
.schedule-owner-combobox__control>i{flex:0 0 auto;color:var(--ink-subtle);}
.schedule-owner-combobox__input{
  min-width:0;height:40px;padding:0;border:0!important;background:transparent!important;
  color:var(--ink)!important;box-shadow:none!important;
}
.schedule-owner-combobox__toggle{
  width:32px;height:32px;flex:0 0 32px;display:grid;place-items:center;padding:0;
  border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink-subtle);
}
.schedule-owner-combobox__toggle:hover{background:var(--surface-3);color:var(--ink);}
.schedule-owner-combobox__toggle i{transition:transform var(--dur-fast) var(--ease-out);}
.schedule-owner-combobox.is-open .schedule-owner-combobox__toggle i{transform:rotate(180deg);}
.schedule-owner-combobox__options{
  position:absolute;top:calc(100% + 6px);right:0;left:0;z-index:1080;
  max-height:274px;padding:6px;overflow-y:auto;overscroll-behavior:contain;
  scrollbar-gutter:stable;border:var(--bw-2) solid var(--rule-hard);
  border-radius:var(--r-md);background:var(--surface);box-shadow:var(--sh-hard-lg);
}
.schedule-owner-combobox__option{
  width:100%;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;
  gap:10px;min-height:50px;padding:6px 8px;border:0;border-radius:var(--r-sm);
  background:transparent;color:var(--ink);text-align:left;
}
.schedule-owner-combobox__option:hover,
.schedule-owner-combobox__option.is-active{background:var(--surface-3);}
.schedule-owner-combobox__option[aria-selected="true"]{
  background:var(--surface-selected);box-shadow:inset 3px 0 0 var(--orange);
}
.schedule-owner-combobox__copy{display:block;min-width:0;}
.schedule-owner-combobox__copy strong,
.schedule-owner-combobox__copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.schedule-owner-combobox__copy strong{font-size:var(--t-xs);}
.schedule-owner-combobox__copy small{margin-top:2px;color:var(--ink-subtle);font-size:var(--t-label);}
.schedule-owner-combobox__empty{padding:16px 10px;color:var(--ink-subtle);font-size:var(--t-xs);text-align:center;}
.admin-schedule-ownerbar__current{
  min-width:0;height:44px;display:flex;align-items:center;gap:9px;padding:4px 10px;
  border:var(--bw-1) solid var(--hairline-strong);border-radius:var(--r-md);background:var(--surface-2);
}
.admin-schedule-ownerbar__current>span:last-child{display:block;min-width:0;}
.admin-schedule-ownerbar__current small,
.admin-schedule-ownerbar__current strong,
.admin-schedule-ownerbar__current>span:last-child>span{
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.admin-schedule-ownerbar__current small{font-size:.58rem;font-weight:var(--fw-black);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-subtle);}
.admin-schedule-ownerbar__current strong{font-size:var(--t-xs);line-height:1.05;}
.admin-schedule-ownerbar__current>span:last-child>span{margin-top:1px;color:var(--ink-subtle);font-size:.62rem;}
.admin-schedule-ownerbar__open{height:44px;min-width:144px;white-space:nowrap;}
.admin-schedule-toolbar{flex:0 0 auto;margin-bottom:10px;}
.schedule-block--admin{position:relative;min-height:100%;padding:7px;}
.schedule-block__admin-top{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:6px;}
.schedule-block__admin-top>.tag{padding:2px 5px;font-size:.6rem;}
.schedule-block__admin-actions{display:flex;align-items:center;gap:4px;}
.schedule-block__admin-actions form{margin:0;}
.schedule-block__admin-actions :is(a,button){
  width:25px;height:25px;display:grid;place-items:center;padding:0;
  border:var(--bw-1) solid var(--rule-hard);border-radius:8px;
  background:var(--surface);color:var(--ink);font-size:.62rem;box-shadow:var(--sh-hard-xs);
}
.schedule-block__admin-actions a:hover{background:var(--surface-3);color:var(--ink);}
.schedule-block__admin-actions button{border-color:var(--danger);background:var(--danger);color:var(--ink-on-accent);}
.schedule-block--admin>strong{
  display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  margin-bottom:auto;font-size:clamp(.78rem,.82vw,.9rem);line-height:1.08;
}
.schedule-block__admin-meta{
  display:flex;align-items:center;justify-content:space-between;gap:5px;margin-top:5px;
  color:var(--ink-subtle);font-size:.61rem;font-weight:var(--fw-bold);text-transform:uppercase;
}
.schedule-block__admin-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.schedule-block__admin-meta i{margin-right:3px;color:var(--brand-text);}
.btn-xs{min-height:27px;padding:4px 8px;font-size:.68rem;border-radius:var(--r-sm);}
.schedule-editor{max-width:1180px;}
.schedule-editor > .card{margin-bottom:var(--sp-4);}
.schedule-editor__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
.schedule-editor__course{grid-column:span 2;}
.schedule-editor__actions{display:flex;gap:10px;}

@media (min-width:992px){
  .schedule-shell .schedule-matrix-card{flex:1;}
  .student-schedule-shell .schedule-page__head{margin-bottom:10px;}
  .student-schedule-shell .schedule-toolbar{min-height:58px;margin-bottom:10px;padding-block:7px;}
  .student-schedule-shell .schedule-summary{display:none;}
  .student-schedule-shell .schedule-matrix-scroll{
    height:100%;overflow-x:auto;overflow-y:hidden;scrollbar-gutter:auto;
  }
  .student-schedule-shell .schedule-matrix{
    height:100%;min-height:0;grid-template-rows:50px repeat(3,minmax(0,1fr));
  }
  .student-schedule-shell .schedule-matrix__free{min-height:0;}
  .student-schedule-shell .schedule-block{padding:8px 7px;}
  .student-schedule-shell .schedule-block__top{margin-bottom:6px;font-size:.64rem;}
  .student-schedule-shell .schedule-block__top .tag{padding:2px 5px;font-size:.62rem;}
  .student-schedule-shell .schedule-block>strong{
    margin-bottom:0;-webkit-line-clamp:3;font-size:clamp(.84rem,.92vw,.98rem);line-height:1.14;
  }
  .student-schedule-shell .schedule-block__room{
    margin-top:5px;font-size:.7rem;
  }
  .student-schedule-shell .schedule-block__lecturer{display:none;}
  .student-schedule-shell .schedule-block .attendance-state{
    margin-top:5px;padding:3px 6px;font-size:.56rem;line-height:1;
  }
}
@media (max-width:991.98px){
  .schedule-summary{display:none;}
}
@media (max-width:767.98px){
  .schedule-matrix-card{display:none;}
  .schedule-owner-search,.schedule-faculty-picker{grid-template-columns:1fr;}
  .schedule-manager-toolbar{align-items:flex-start;flex-direction:column;}
  .schedule-manager-toolbar .schedule-toolbar__nav{width:100%;margin-left:0;}
  .schedule-manager-range{margin-left:auto;}
  .schedule-editor__grid{grid-template-columns:1fr 1fr;}
  .schedule-editor__course{grid-column:1/-1;}
}
@media (max-width:575.98px){
  .schedule-editor__grid{grid-template-columns:1fr;}
  .schedule-editor__course{grid-column:auto;}
}

/* All Student page headers follow the Class schedule title baseline. */
@media (min-width:992px){
  :is(body.student-attendance-shell,body.student-assessment-shell,body.student-finance-shell,
      body.student-grades-shell,body.student-courses-shell,body.student-schedule-shell) .page{
    padding-block:clamp(12px,1.8vh,20px);
  }
  :is(body.student-attendance-shell,body.student-assessment-shell,body.student-finance-shell,
      body.student-grades-shell,body.student-courses-shell,body.student-schedule-shell) .page>.page-head{
    flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);
  }
  :is(body.student-attendance-shell,body.student-assessment-shell,body.student-finance-shell,
      body.student-grades-shell,body.student-courses-shell,body.student-schedule-shell) .page>.page-head .crumbs{
    margin-bottom:8px;font-size:var(--t-xs);
  }
  :is(body.student-attendance-shell,body.student-assessment-shell,body.student-finance-shell,
      body.student-grades-shell,body.student-courses-shell,body.student-schedule-shell) .page>.page-head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);line-height:1.02;
  }
}
@media (min-width:992px) and (max-height:760px){
  .student-attendance-shell .student-attendance__session-scroll{height:184px;flex-basis:184px;}
  .student-attendance-shell .student-attendance__session-scroll .d{display:none;}
  .student-attendance-shell .student-attendance__session-scroll .tbl tbody tr{height:36px;}
  .student-schedule-shell .schedule-block{padding:5px;}
  .student-schedule-shell .schedule-block__top{margin-bottom:2px;font-size:.54rem;}
  .student-schedule-shell .schedule-block__top .tag{padding:1px 4px;font-size:.52rem;}
  .student-schedule-shell .schedule-block>strong{-webkit-line-clamp:2;font-size:.8rem;line-height:1.05;}
  .student-schedule-shell .schedule-block__room{margin-top:2px;font-size:.58rem;}
  .student-schedule-shell .schedule-block .attendance-state{margin-top:2px;padding:2px 4px;font-size:.44rem;}
}
@media (min-width:992px) and (min-height:900px){
  .student-attendance-shell .student-attendance__session-scroll{height:360px;flex-basis:360px;}
  .student-attendance-shell .student-attendance__session-scroll .tbl tbody tr{height:80px;}
}

/* reveal on scroll */
@keyframes rise{from{opacity:0;transform:translateY(16px) scale(.99);}to{opacity:1;transform:none;}}
.reveal{animation:rise .5s var(--ease-out) both;}
@supports (animation-timeline:view()){
  .reveal{animation:rise .6s linear both;animation-timeline:view(block 14% 6%);}
}
@media (prefers-reduced-motion:reduce){.reveal{animation:none;opacity:1;transform:none;}}

/* ========================================================================== */
/* Faculty workspaces                                                         */
/* Dense LMS-style list/detail work areas with one owner of vertical scroll.  */
/* ========================================================================== */
.faculty-list-workspace{
  min-height:0;display:flex;flex-direction:column;overflow:hidden;
  border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);
  background:var(--surface);box-shadow:var(--sh-hard-sm);
}
.faculty-list-workspace__toolbar{
  flex:0 0 auto;min-height:68px;display:flex;align-items:center;justify-content:space-between;
  gap:18px;padding:10px 16px;border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);
}
.faculty-list-workspace__toolbar>div:first-child>strong,
.faculty-list-workspace__range strong{display:block;margin-top:3px;font-size:var(--t-sm);}
.faculty-list-workspace__range{text-align:center;}
.faculty-list-workspace__summary{display:flex;align-items:center;gap:22px;color:var(--ink-muted);}
.faculty-list-workspace__summary span{display:flex;align-items:baseline;gap:6px;white-space:nowrap;}
.faculty-list-workspace__summary strong{font-size:1.25rem;color:var(--ink);}
.faculty-list-workspace__scroll{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain;}
.faculty-list-workspace__foot{
  flex:0 0 auto;min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:8px 14px;border-top:var(--bw-1) solid var(--hairline);background:var(--surface-2);
  color:var(--ink-subtle);font-size:var(--t-label);
}
.faculty-list-workspace__foot a{font-weight:var(--fw-black);}
.faculty-table-title{margin-top:6px;color:var(--ink);font-size:var(--t-xs);}
.faculty-table-action{text-align:right;white-space:nowrap;}
.faculty-record-view-only,.faculty-grade-locked{display:inline-flex;align-items:center;gap:7px;color:var(--ink-subtle);font-size:var(--t-label);font-weight:var(--fw-black);white-space:nowrap;}

/* Faculty landing: measured summary, compact class list and task navigation. */
.faculty-dashboard__workspace{min-height:0;display:flex;flex:1;flex-direction:column;gap:12px;}
.faculty-dashboard__summary{
  flex:0 0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  overflow:hidden;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-hard-sm);
}
.faculty-dashboard__summary>span{display:flex;align-items:center;gap:13px;padding:13px 17px;border-right:var(--bw-1) solid var(--hairline);}
.faculty-dashboard__summary>span:last-child{border-right:0;}
.faculty-dashboard__summary>span>i{display:grid;place-items:center;width:39px;height:39px;border:var(--bw-2) solid var(--rule-hard);border-radius:11px;background:var(--brand);color:var(--ink-on-accent);box-shadow:var(--sh-hard-xs);font-size:1.05rem;}
.faculty-dashboard__summary small,.faculty-dashboard__summary strong{display:block;}.faculty-dashboard__summary small{color:var(--ink-subtle);font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.07em;}.faculty-dashboard__summary strong{margin-top:2px;font-size:1.15rem;}
.faculty-dashboard__body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.75fr);gap:12px;}
.faculty-dashboard__classes,.faculty-dashboard__actions{min-height:0;overflow:hidden;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-hard-sm);}
.faculty-dashboard__classes{display:flex;flex-direction:column;}.faculty-dashboard__classes>header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 15px;border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);}.faculty-dashboard__classes h2{margin:2px 0 0;font-size:var(--t-h3);}
.faculty-dashboard__class-list{flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;}.faculty-dashboard__class-row{min-height:60px;display:grid;grid-template-columns:82px minmax(0,1fr) auto;align-items:center;gap:16px;padding:9px 15px;border-bottom:var(--bw-1) solid var(--hairline);}.faculty-dashboard__class-row>strong{font-size:var(--t-sm);}.faculty-dashboard__class-row>.num{color:var(--ink-subtle);font-size:var(--t-xs);}
.faculty-dashboard__actions{display:flex;flex-direction:column;padding:12px;}.faculty-dashboard__actions>.eyebrow{padding:3px 5px 10px;}.faculty-dashboard__actions>a{flex:1;min-height:60px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:9px 8px;border-top:var(--bw-1) solid var(--hairline);color:var(--ink);}.faculty-dashboard__actions>a:hover{background:var(--surface-2);text-decoration:none;}.faculty-dashboard__actions>a>i:first-child{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--surface-selected);color:var(--brand-text);}.faculty-dashboard__actions strong,.faculty-dashboard__actions small{display:block;}.faculty-dashboard__actions strong{font-size:var(--t-xs);}.faculty-dashboard__actions small{margin-top:2px;color:var(--ink-subtle);font-size:var(--t-label);}

/* My classes follows the student's single course-list workspace. */
.faculty-class-list{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;}
.faculty-class-row{min-height:78px;display:grid;grid-template-columns:88px minmax(0,1fr) 90px auto;align-items:center;gap:18px;padding:11px 16px;border-bottom:var(--bw-1) solid var(--hairline);}
.faculty-class-row__code{width:max-content;padding:6px 9px;border:var(--bw-1) solid var(--hairline-strong);border-radius:8px;background:var(--surface-3);font-size:var(--t-label);font-weight:var(--fw-black);}
.faculty-class-row__name{min-width:0;}.faculty-class-row__name strong,.faculty-class-row__name span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.faculty-class-row__name strong{font-size:var(--t-sm);}.faculty-class-row__name span{margin-top:4px;color:var(--ink-subtle);font-size:var(--t-label);}.faculty-class-row__credits{text-align:center;}.faculty-class-row__credits strong,.faculty-class-row__credits span{display:block;}.faculty-class-row__credits strong{font-size:1.2rem;}.faculty-class-row__credits span{color:var(--ink-subtle);font-size:var(--t-label);}.faculty-class-row__actions{display:flex;gap:8px;}

/* Attendance list, register and historical report. */
.faculty-attendance-table td{vertical-align:middle;}.faculty-attendance-table th:nth-child(1){width:12%;}.faculty-attendance-table th:nth-child(2){width:29%;}.faculty-attendance-table th:nth-child(3){width:20%;}.faculty-attendance-table th:nth-child(4){width:14%;}.faculty-attendance-table .d{display:block;margin-top:4px;color:var(--ink-subtle);font-size:var(--t-label);}
.faculty-register-form{flex:1;min-height:0;display:flex;}.faculty-register-workspace{flex:1;}.faculty-register-toolbar__actions{display:flex;align-items:center;gap:9px;}.faculty-register-table{table-layout:fixed;}.faculty-register-table th:nth-child(1){width:38%;}.faculty-register-table th:nth-child(2){width:22%;}.faculty-register-table th:nth-child(3){width:40%;}.faculty-register-table td{height:50px;padding-block:8px;font-size:var(--t-sm);vertical-align:middle;}.faculty-register-table td>strong{font-size:.94rem;}.faculty-register-table td.num{font-size:.84rem;font-weight:800;}.faculty-register-table .attendance-choice{display:grid;grid-template-columns:repeat(2,minmax(112px,1fr));gap:10px;width:min(100%,480px);margin-inline:auto;}.faculty-register-table .attendance-choice label{display:block;min-width:0;}.faculty-register-table .attendance-state{justify-content:center;width:100%;min-height:36px;padding:7px 11px;font-size:.72rem;}.faculty-register-footer{flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:10px 16px;border-top:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);}.faculty-register-footer .btn{min-width:150px;}
.faculty-report-toolbar{flex:0 0 auto;display:grid;grid-template-columns:minmax(310px,1.35fr) minmax(170px,.55fr) minmax(360px,1fr);align-items:end;gap:12px;padding:11px 15px;border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);}.faculty-report-toolbar .form-label{margin-bottom:4px;}.faculty-report-toolbar__note{min-height:46px;display:flex;align-items:center;gap:10px;padding:8px 12px;border:var(--bw-1) solid var(--hairline-strong);border-radius:var(--r-sm);background:var(--surface);}.faculty-report-toolbar__note>i{color:var(--brand-text);}.faculty-report-toolbar__note strong,.faculty-report-toolbar__note span{display:block;}.faculty-report-toolbar__note span{font-size:var(--t-label);color:var(--ink-subtle);}.faculty-report-toolbar__note strong{color:var(--ink);font-size:var(--t-xs);}.faculty-report-panels{flex:1;min-height:0;display:flex;}.faculty-report-panel{flex:1;min-height:0;display:flex;flex-direction:column;}.faculty-report-panel[hidden]{display:none;}.faculty-report-panel__head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 15px;border-bottom:var(--bw-1) solid var(--hairline);}.faculty-report-panel__head h2{margin:2px 0 0;font-size:var(--t-sm);}.faculty-report-scroll{flex:1;min-height:0;max-height:none;overflow-y:auto;scrollbar-gutter:stable;}.faculty-report-table{table-layout:fixed;}.faculty-report-table th:nth-child(1){width:22%;}.faculty-report-table th:nth-child(2){width:15%;}.faculty-report-table th:nth-child(3),.faculty-report-table th:nth-child(4){width:9%;}.faculty-report-table th:nth-child(5){width:13%;}.faculty-report-table th:nth-child(6){width:18%;}.faculty-report-table td{padding-block:9px;}.faculty-report-table .attendance-progress{display:block;width:110px;margin:5px 0 0;}

/* Non-student assessment schedule becomes a compact operational ledger. */
.faculty-assessment-shell .assessment-grid{flex:1;min-height:0;display:flex;flex-direction:column;gap:0;margin:0;overflow-y:auto;scrollbar-gutter:stable;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-hard-sm);}
.faculty-assessment-shell .assessment-card{min-height:116px;display:grid;grid-template-columns:minmax(260px,.9fr) minmax(440px,1.7fr) auto;align-items:stretch;border:0;border-bottom:var(--bw-1) solid var(--hairline);border-radius:0;box-shadow:none;background:var(--surface);}.faculty-assessment-shell .assessment-card:last-child{border-bottom:0;}.faculty-assessment-shell .assessment-card:hover{background:var(--surface-2);}.faculty-assessment-shell .assessment-card .card-header{align-items:center;padding:13px 15px;border:0;border-right:var(--bw-1) solid var(--hairline);background:transparent;}.faculty-assessment-shell .assessment-card .card-title{margin-top:5px;font-size:var(--t-sm);}.faculty-assessment-shell .assessment-card .card-body{display:flex;align-items:center;gap:14px;padding:12px 15px;}.faculty-assessment-shell .assessment-card .card-body>p{flex:1;margin:0;display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:var(--t-xs);}.faculty-assessment-shell .assessment-time{flex:0 0 46%;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0;}.faculty-assessment-shell .assessment-time>span{padding:7px;}.faculty-assessment-shell .assessment-card .card-footer{align-content:center;min-width:220px;padding:12px;border:0;border-left:var(--bw-1) solid var(--hairline);background:transparent;}.faculty-submission-table th:nth-child(1){width:18%;}.faculty-submission-table th:nth-child(2){width:15%;}.faculty-submission-table th:nth-child(3){width:23%;}.faculty-submission-table .d{display:block;margin-top:3px;color:var(--ink-subtle);font-size:var(--t-label);}.faculty-submissions-shell .grade-inline{grid-template-columns:135px minmax(150px,1fr) auto;min-width:400px;}

@media (min-width:992px){
  body.faculty-workspace-shell{height:100vh;height:100dvh;overflow:hidden;}
  .faculty-workspace-shell .app,.faculty-workspace-shell .app-main{height:100vh;height:100dvh;min-height:0;overflow:hidden;}
  .faculty-workspace-shell .page{min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-block:clamp(12px,1.8vh,20px);}
  .faculty-workspace-shell .page>.faculty-page-head,.faculty-workspace-shell .page>.schedule-page__head{flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);}
  .faculty-workspace-shell .page>.faculty-page-head .crumbs,.faculty-workspace-shell .page>.schedule-page__head .crumbs{margin-bottom:8px;font-size:var(--t-xs);}
  .faculty-workspace-shell .page>.faculty-page-head .page-title,.faculty-workspace-shell .page>.schedule-page__head .page-title{font-size:clamp(2rem,3vw,2.75rem);line-height:1.02;}
  .faculty-workspace-shell .page>.faculty-list-workspace{flex:1;}
  .faculty-dashboard-shell .page>.faculty-page-head{margin-bottom:12px;}
  .faculty-classes-shell .faculty-list-workspace{flex:1;}
  .faculty-schedule-shell .schedule-matrix-scroll{height:100%;overflow:hidden;}
  .faculty-schedule-shell .schedule-summary{display:none;}
  .faculty-schedule-shell .schedule-matrix{height:100%;min-height:0;grid-template-rows:50px repeat(3,minmax(0,1fr));}
  .faculty-schedule-shell .schedule-matrix__free{min-height:0;}
  .faculty-schedule-shell .schedule-block{padding:8px 7px;}.faculty-schedule-shell .schedule-block>strong{font-size:.82rem;line-height:1.08;}.faculty-schedule-shell .schedule-block__room{font-size:.65rem;}.faculty-schedule-shell .schedule-block__lecturer{display:none;}
  .faculty-assessment-shell .assessment-grid{flex:1;}
  .faculty-assessment-editor-shell form[data-question-builder]{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding-right:4px;}
  .faculty-assessment-editor-shell .page>.page-head{flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);}
  .faculty-assessment-editor-shell .page>.page-head .crumbs{margin-bottom:8px;font-size:var(--t-xs);}
  .faculty-assessment-editor-shell .page>.page-head .page-title{font-size:clamp(2rem,3vw,2.75rem);line-height:1.02;}
  .faculty-submissions-shell .faculty-list-workspace{flex:1;}
}

.faculty-records__footer{flex-wrap:nowrap!important;min-height:48px;padding-block:7px;}
.faculty-records__footer .pager{flex-wrap:nowrap;white-space:nowrap;}
.faculty-records__footer .pager a,.faculty-records__footer .pager span{display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;}
.faculty-assessment-shell .assessment-time>span{display:block;min-width:0;}
.faculty-assessment-shell .assessment-time i{display:none;}
.faculty-assessment-shell .assessment-time strong,.faculty-assessment-shell .assessment-time small{display:block;}
.faculty-assessment-shell .assessment-time strong{white-space:nowrap;}
.faculty-assessment-shell .assessment-time small{margin-top:3px;}

@media (max-width:1199.98px){
  .faculty-dashboard__body{grid-template-columns:1fr;}.faculty-dashboard__actions{display:grid;grid-template-columns:repeat(2,1fr);}.faculty-dashboard__actions>.eyebrow{grid-column:1/-1;}.faculty-assessment-shell .assessment-card{grid-template-columns:minmax(250px,.8fr) minmax(0,1fr);}.faculty-assessment-shell .assessment-card .card-footer{grid-column:1/-1;border-left:0;border-top:var(--bw-1) solid var(--hairline);}.faculty-report-toolbar{grid-template-columns:1fr 220px;}.faculty-report-toolbar__note{display:none;}
}
@media (max-width:991.98px){
  .faculty-dashboard__summary{grid-template-columns:1fr;}.faculty-dashboard__summary>span{border-right:0;border-bottom:var(--bw-1) solid var(--hairline);}.faculty-dashboard__body{display:block;}.faculty-dashboard__actions{margin-top:14px;}.faculty-class-row{grid-template-columns:75px 1fr auto;}.faculty-class-row__actions{grid-column:1/-1;}.faculty-report-toolbar{grid-template-columns:1fr;}.faculty-assessment-shell .assessment-card{display:block;}.faculty-assessment-shell .assessment-card .card-header,.faculty-assessment-shell .assessment-card .card-footer{border:0;border-bottom:var(--bw-1) solid var(--hairline);}.faculty-register-toolbar{align-items:flex-start;flex-direction:column;}.faculty-register-toolbar__actions{flex-wrap:wrap;}
}

/* Keep desktop table headings and their values on the same visual axis. */
@media (min-width:992px){
  .faculty-records__table .tbl{table-layout:fixed;}
  .faculty-records__table .tbl th:nth-child(1){width:24%;}
  .faculty-records__table .tbl th:nth-child(2){width:26%;}
  .faculty-records__table .tbl th:nth-child(3){width:11%;}
  .faculty-records__table .tbl th:nth-child(4){width:9%;}
  .faculty-records__table .tbl th:nth-child(5){width:15%;}
  .faculty-records__table .tbl th:nth-child(6){width:15%;}
  .faculty-records__table .tbl :is(th,td):nth-child(n+3){text-align:center;}

  .faculty-register-table :is(th,td):nth-child(2),
  .faculty-register-table :is(th,td):nth-child(3){text-align:center;}
  .faculty-register-table .attendance-choice{justify-content:center;}

  .faculty-report-table :is(th,td):nth-child(n+2){text-align:center;}
  .faculty-report-table .attendance-progress{margin:5px auto 0;}

  .student-dashboard__courses-scroll .tbl{table-layout:fixed;}
  .student-dashboard__courses-scroll .tbl th:nth-child(1){width:36%;}
  .student-dashboard__courses-scroll .tbl th:nth-child(2){width:14%;}
  .student-dashboard__courses-scroll .tbl th:nth-child(3){width:28%;}
  .student-dashboard__courses-scroll .tbl th:nth-child(4){width:22%;}
  .student-dashboard__courses-scroll .tbl :is(th,td):nth-child(n+2){text-align:center;}

  .student-attendance__session-scroll .tbl{table-layout:fixed;}
  .student-attendance__session-scroll .tbl th:nth-child(1){width:27%;}
  .student-attendance__session-scroll .tbl th:nth-child(2){width:20%;}
  .student-attendance__session-scroll .tbl th:nth-child(3){width:13%;}
  .student-attendance__session-scroll .tbl th:nth-child(4){width:14%;}
  .student-attendance__session-scroll .tbl th:nth-child(5){width:10%;}
  .student-attendance__session-scroll .tbl th:nth-child(6){width:16%;}
  .student-attendance__session-scroll .tbl :is(th,td):nth-child(n+2){text-align:center;}

  .student-finance__fees-scroll .tbl{table-layout:fixed;}
  .student-finance__fees-scroll .tbl th:nth-child(1){width:44%;}
  .student-finance__fees-scroll .tbl th:nth-child(2){width:18%;}
  .student-finance__fees-scroll .tbl th:nth-child(3){width:18%;}
  .student-finance__fees-scroll .tbl th:nth-child(4){width:20%;}
  .student-finance__fees-scroll .tbl :is(th,td):nth-child(n+2){text-align:center;}
}

/* Admin pages share the same title baseline used by Student and Faculty. */
@media (min-width:992px){
  body.admin-ui-shell .page>.page-head .page-title{
    font-size:clamp(2rem,3vw,2.75rem);line-height:1.02;
  }

  /* Catalogue and class roster columns stay on one measured axis. */
  .admin-courses__catalogue,
  .admin-course-enrollments__table{table-layout:fixed;}
  .admin-courses__catalogue th:nth-child(1){width:10%;}
  .admin-courses__catalogue th:nth-child(2){width:27%;}
  .admin-courses__catalogue th:nth-child(3){width:9%;}
  .admin-courses__catalogue th:nth-child(4){width:20%;}
  .admin-courses__catalogue th:nth-child(5){width:28%;}
  .admin-courses__catalogue th:nth-child(6){width:6%;}
  .admin-courses__catalogue :is(th,td):nth-child(3),
  .admin-courses__catalogue :is(th,td):nth-child(4),
  .admin-courses__catalogue :is(th,td):nth-child(6){text-align:center;}

  body.admin-course-enrollments-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-course-enrollments-shell .app,
  .admin-course-enrollments-shell .app-main{height:100%;min-height:0;overflow:hidden;}
  .admin-course-enrollments-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(12px,1.8vh,20px);
  }
  .admin-course-enrollments__head{flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);}
  .admin-course-enrollments__card{
    flex:1;min-height:0;margin-bottom:0;display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-course-enrollments__card>.card-header{flex:0 0 auto;}
  .admin-course-enrollments__scroll{
    flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain;
  }
  .admin-course-enrollments__table th:nth-child(1){width:48%;}
  .admin-course-enrollments__table th:nth-child(2){width:26%;}
  .admin-course-enrollments__table th:nth-child(3){width:26%;}
  .admin-course-enrollments__table :is(th,td):nth-child(n+2){text-align:center;}

  /* Compact course editor: two useful panels, no instructional side card. */
  body.admin-course-editor-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-course-editor-shell .app,
  .admin-course-editor-shell .app-main{height:100%;min-height:0;overflow:hidden;}
  .admin-course-editor-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(12px,1.8vh,20px);
  }
  .admin-course-editor__head{flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);}
  .admin-course-editor__form{flex:1;min-height:0;display:flex;}
  .admin-course-editor__stack{
    flex:1;min-height:0;display:grid;
    grid-template-columns:minmax(0,7fr) minmax(360px,5fr);
    grid-template-rows:minmax(0,1fr) auto;
    gap:10px 12px;
  }
  .admin-course-editor__stack>.card{min-height:0;margin-bottom:0;overflow:hidden;}
  .admin-course-editor__details{grid-column:1;grid-row:1;}
  .admin-course-editor__programmes{grid-column:2;grid-row:1;}
  .admin-course-editor__stack .card-header{padding-block:10px;}
  .admin-course-editor__stack .card-body{padding:14px 18px;}
  .admin-course-editor__details .row{--bs-gutter-y:12px;}
  .admin-course-editor__programmes{
    flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-course-editor__programmes>.card-body{
    flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;
  }
  .admin-course-editor__programmes .alert{margin-bottom:10px!important;padding-block:9px;}
  .admin-course-editor__programmes .row{--bs-gutter-y:8px;}
  .admin-course-editor__programmes .opt{min-height:58px;padding-block:8px;}
  .admin-course-editor__actions{grid-column:1/-1;grid-row:2;margin-top:0;padding-top:2px;}

  /* Schedule management owns the viewport; only dense timetable content scrolls. */
  body.admin-schedule-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-schedule-shell .app,
  .admin-schedule-shell .app-main{height:100%;min-height:0;overflow:hidden;}
  .admin-schedule-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(9px,1.3vh,14px);
  }
  .admin-schedule__head{flex:0 0 auto;margin-bottom:8px;}
  .admin-schedule__head .crumbs{margin-bottom:4px;}
  .admin-schedule__head .page-sub{margin-top:3px;}
  .admin-schedule-shell .admin-schedule-ownerbar{flex:0 0 auto;}
  .admin-schedule-shell .admin-schedule-toolbar{
    min-height:54px;padding-block:6px;
  }
  .admin-schedule-shell .schedule-matrix-card--admin{
    flex:1;min-height:0;max-height:none;margin-bottom:0;overflow:hidden;
  }
  .admin-schedule-shell .schedule-matrix-scroll{height:100%;overflow:auto;}
  .admin-schedule-shell .schedule-matrix{
    min-width:900px;height:100%;min-height:410px;
    grid-template-columns:96px repeat(7,minmax(114px,1fr));
    grid-template-rows:50px repeat(3,minmax(120px,1fr));
  }
  .admin-schedule-shell .schedule-matrix__corner,
  .admin-schedule-shell .schedule-matrix__day{
    position:sticky;top:0;z-index:4;
  }
  .admin-schedule-shell .schedule-matrix__corner{left:0;z-index:6;}
  .admin-schedule-shell .schedule-matrix__shift{position:sticky;left:0;z-index:3;}
  .admin-schedule-shell .schedule-manager-empty{flex:1;min-height:0;margin-bottom:0;}

  /* Assignment summary and academic records use explicit centered columns. */
  .admin-assign__enrolled-table,
  .admin-academic__records-table{table-layout:fixed;}
  .admin-assign__enrolled-table th:nth-child(1){width:46%;}
  .admin-assign__enrolled-table th:nth-child(2){width:14%;}
  .admin-assign__enrolled-table th:nth-child(3){width:22%;}
  .admin-assign__enrolled-table th:nth-child(4){width:18%;}
  .admin-assign__enrolled-table :is(th,td):nth-child(n+2){text-align:center;}

  .admin-academic__records-table th:nth-child(1){width:34%;}
  .admin-academic__records-table th:nth-child(2){width:16%;}
  .admin-academic__records-table th:nth-child(3){width:12%;}
  .admin-academic__records-table th:nth-child(4){width:10%;}
  .admin-academic__records-table th:nth-child(5){width:20%;}
  .admin-academic__records-table th:nth-child(6){width:8%;}
  .admin-academic__records-table :is(th,td):nth-child(n+2){text-align:center;}

  /* Student editor and tuition administration remain inside one desktop page. */
  body.admin-student-editor-shell,
  body.admin-finance-shell{height:100vh;height:100dvh;overflow:hidden;}
  .admin-student-editor-shell .app,.admin-student-editor-shell .app-main,
  .admin-finance-shell .app,.admin-finance-shell .app-main{height:100%;min-height:0;overflow:hidden;}
  .admin-student-editor-shell .page,
  .admin-finance-shell .page{
    min-height:0;overflow:hidden;display:flex;flex-direction:column;
    padding-block:clamp(12px,1.8vh,20px);
  }
  .admin-student-editor__head,.admin-finance__head{
    flex:0 0 auto;margin-bottom:clamp(10px,1.4vh,16px);
  }
  .admin-student-editor__form{flex:1;min-height:0;display:flex;}
  .admin-student-editor__layout{flex:1;min-height:0;align-items:stretch;}
  .admin-student-editor__main{
    display:flex;min-height:0;flex-direction:column;overflow-y:auto;
    padding-right:4px;scrollbar-gutter:stable;
  }
  .admin-student-editor__main>.card{margin-bottom:10px;}
  .admin-student-editor__main .card-header,
  .admin-student-editor__aside .card-header{padding-block:10px;}
  .admin-student-editor__main .card-body{padding:14px 18px;}
  .admin-student-editor__main .row{--bs-gutter-y:12px;}
  .admin-student-editor__actions{margin-top:auto;}
  .admin-student-editor__aside>.card{height:100%;position:static!important;overflow:hidden;}

  .admin-finance__kpis{flex:0 0 auto;margin-bottom:10px;}
  .admin-finance__kpis .kpi{height:88px;padding:11px 14px;}
  .admin-finance__kpis .kpi__value{margin-top:8px;font-size:clamp(1.25rem,1.8vw,1.75rem);}
  .admin-finance__card{
    flex:1;min-height:0;margin-bottom:0;display:flex;flex-direction:column;overflow:hidden;
  }
  .admin-finance__card>.card-header,.admin-finance__card>.card-footer{flex:0 0 auto;}
  .admin-finance__card>.card-header{padding-block:10px;}
  .admin-finance__scroll{flex:1;min-height:0;max-height:none;overflow-y:auto;scrollbar-gutter:stable;}
  .admin-finance__table{table-layout:fixed;}
  .admin-finance__table th:nth-child(1){width:23%;}
  .admin-finance__table th:nth-child(2){width:25%;}
  .admin-finance__table th:nth-child(3){width:10%;}
  .admin-finance__table th:nth-child(4){width:15%;}
  .admin-finance__table th:nth-child(5){width:16%;}
  .admin-finance__table th:nth-child(6){width:11%;}
  .admin-finance__table :is(th,td):nth-child(n+3){text-align:center;}
  .admin-finance__table td{padding-block:8px;}
}

@media (min-width:1200px){
  .admin-course-editor__programmes .col-md-6{width:50%;}
}

@media (min-width:992px) and (max-height:760px){
  .admin-schedule__head .eyebrow,
  .admin-schedule__head .page-sub{display:none;}
  .admin-schedule__head .crumbs{margin-bottom:2px;}
  .admin-schedule__head .page-title{font-size:clamp(2rem,3vw,2.55rem)!important;}
  .admin-schedule-shell .admin-schedule-ownerbar{margin-bottom:6px;padding-block:6px;}
  .admin-schedule-ownerbar__form{grid-template-columns:minmax(0,1fr) auto;}
  .admin-schedule-ownerbar__current{display:none;}
  .schedule-owner-combobox .form-label{display:none;}
  .admin-schedule-shell .admin-schedule-toolbar{min-height:48px;margin-bottom:6px;padding-block:4px;}
  .admin-schedule-shell .schedule-matrix{min-height:340px;grid-template-rows:46px repeat(3,minmax(96px,1fr));}
  .schedule-block--admin{padding:5px 6px;}
  .schedule-block__admin-top{margin-bottom:3px;}
  .schedule-block--admin>strong{font-size:.77rem;line-height:1.04;}
  .schedule-block__admin-meta{margin-top:3px;font-size:.56rem;}
}

@media (max-width:991.98px){
  .admin-course-editor__stack{
    display:flex;overflow-y:auto;scrollbar-gutter:stable;
  }
  .admin-course-editor__stack>.card{flex:0 0 auto;overflow:visible;}
  .admin-course-editor__programmes>.card-body{overflow:visible;}
  .admin-schedule-ownerbar__form{grid-template-columns:1fr auto;}
  .admin-schedule-ownerbar__current{grid-column:1/-1;grid-row:2;}
}

@media (max-width:767.98px){
  .admin-schedule__head-actions{align-items:stretch;flex-direction:column;}
  .admin-schedule-ownerbar__form{grid-template-columns:1fr;}
  .admin-schedule-ownerbar__current{grid-column:auto;grid-row:auto;}
  .admin-schedule-ownerbar__open{width:100%;}
  .schedule-owner-combobox__options{max-height:240px;}
}

/* Question bank: dense master-detail editor inspired by LMS item banks. */
.faculty-question-bank-shell .page{overflow:visible;}
.question-bank__head{margin-bottom:14px;}
.question-bank__head .page-head-row{align-items:flex-end;}
.question-bank__head .btn{flex:0 0 auto;}
.question-bank-form{display:grid;gap:14px;}
.question-bank-form>.assessment-editor__validation:empty{display:none;}
.question-bank-workspace{overflow:clip;border:var(--bw-2) solid var(--ink);border-radius:var(--r-lg);background:var(--surface);box-shadow:4px 4px 0 color-mix(in srgb,var(--ink) 13%,transparent);}
.question-bank-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:78px;padding:12px 16px 12px 20px;border-bottom:var(--bw-2) solid var(--ink);background:var(--surface-muted);}
.question-bank-toolbar__title h2{margin:2px 0 0;font-family:var(--font-display);font-size:1.2rem;line-height:1.1;}
.question-bank-toolbar__metrics{display:flex;align-items:center;gap:12px;}
.question-bank-toolbar__metrics>span{display:grid;min-width:96px;padding:4px 12px;border-left:var(--bw-1) solid var(--line);}
.question-bank-toolbar__metrics small{color:var(--ink-subtle);font-size:var(--t-label);font-weight:900;text-transform:uppercase;letter-spacing:.06em;}
.question-bank-toolbar__metrics strong{font-size:.96rem;}
.question-bank-layout{display:grid;grid-template-columns:minmax(270px,330px) minmax(0,1fr);align-items:start;min-height:510px;}
.question-bank-index{position:sticky;top:12px;display:flex;flex-direction:column;align-self:start;min-height:510px;max-height:calc(100vh - 28px);border-right:var(--bw-2) solid var(--ink);background:var(--surface-muted);}
.question-bank-index__head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:62px;padding:11px 14px;border-bottom:var(--bw-1) solid var(--line);}
.question-bank-index__head>div{display:grid;gap:2px;}
.question-bank-index__head strong{font-size:.9rem;}
.question-bank-index__active{padding:4px 8px;border:var(--bw-1) solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-subtle);font-size:var(--t-label);font-weight:900;}
.question-bank-search{position:relative;display:block;margin:12px 12px 8px;}
.question-bank-search>i{position:absolute;left:12px;top:50%;translate:0 -50%;color:var(--ink-subtle);pointer-events:none;}
.question-bank-search input{width:100%;height:42px;padding:8px 36px;border:var(--bw-1) solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font:inherit;font-size:.78rem;outline:0;}
.question-bank-search input:focus{border-color:var(--orange);box-shadow:0 0 0 3px color-mix(in srgb,var(--orange) 18%,transparent);}
.question-bank-search input::-webkit-search-cancel-button{cursor:pointer;}
.question-bank-nav{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;scrollbar-width:thin;border-top:var(--bw-1) solid var(--line);}
.question-bank-nav__item{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:66px;padding:8px 10px;border:0;border-bottom:var(--bw-1) solid var(--hairline);border-left:4px solid transparent;background:transparent;color:var(--ink);text-align:left;}
.question-bank-nav__item[hidden]{display:none;}
.question-bank-nav__item:hover{background:color-mix(in srgb,var(--orange) 7%,var(--surface));}
.question-bank-nav__item.is-active{border-left-color:var(--orange);background:var(--surface);}
.question-bank-nav__number{display:grid;place-items:center;width:34px;height:34px;border:var(--bw-1) solid var(--ink);border-radius:11px;background:var(--surface);font-size:.78rem;font-weight:950;}
.question-bank-nav__item.is-active .question-bank-nav__number{background:var(--volt);color:#071126;box-shadow:2px 2px 0 var(--ink);}
.question-bank-nav__copy{display:grid;gap:4px;min-width:0;}
.question-bank-nav__copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;line-height:1.2;}
.question-bank-nav__copy small{display:flex;align-items:center;gap:5px;color:var(--ink-subtle);font-size:.61rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;}
.question-bank-nav__points{min-width:43px;padding:4px 7px;border:var(--bw-1) solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-subtle);font-size:.64rem;font-weight:900;text-align:center;}
.question-bank-nav__empty{display:grid;place-items:center;gap:5px;padding:24px 12px;color:var(--ink-subtle);font-size:.72rem;text-align:center;}
.question-bank-nav__empty[hidden]{display:none;}
.question-bank-index__legend{display:grid;grid-template-columns:1fr;gap:5px;margin-top:auto;padding:11px 14px;border-top:var(--bw-1) solid var(--line);color:var(--ink-subtle);font-size:.63rem;font-weight:800;}
.question-bank-index__legend span{display:flex;align-items:center;gap:7px;}
.question-bank-editor{min-width:0;min-height:510px;padding:0;background:var(--surface);}
.question-sheet[hidden]{display:none!important;}
.question-sheet{min-height:510px;background:var(--surface);}
.question-sheet__head{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:72px;padding:12px 20px;border-bottom:var(--bw-1) solid var(--line);}
.question-sheet__identity{display:flex;align-items:center;gap:12px;min-width:0;}
.question-sheet__identity>div{display:grid;gap:3px;min-width:0;}
.question-sheet__identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.96rem;}
.question-sheet__body{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);gap:18px 20px;padding:22px 24px 26px;}
.question-sheet__body .form-label{margin-bottom:5px;}
.question-sheet__prompt textarea{min-height:104px;resize:vertical;line-height:1.45;}
.question-sheet__settings{display:grid;grid-template-columns:minmax(0,1fr) 94px;align-content:start;gap:12px;}
.question-sheet__answer{grid-column:1/-1;padding-top:18px;border-top:var(--bw-1) solid var(--line);}
.question-sheet__answer[hidden]{display:none;}
.question-sheet__section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:12px;}
.question-sheet__section-head>div{display:grid;gap:3px;}
.question-sheet__section-head .form-label{margin:0;}
.question-sheet__section-head small{color:var(--ink-subtle);font-size:var(--t-label);}
.question-sheet .quiz-choice-editor{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;}
.question-sheet .quiz-choice-editor__row{grid-template-columns:38px minmax(0,1fr) 38px;}
.question-sheet .quiz-binary{max-width:600px;}
.question-bank-empty{display:grid;place-items:center;align-content:center;gap:8px;min-height:510px;padding:40px;color:var(--ink-subtle);text-align:center;}
.question-bank-empty[hidden]{display:none;}
.question-bank-empty>i{font-size:2.4rem;color:var(--cyan-ink);}
.question-bank-empty strong{color:var(--ink);font-size:1.1rem;}
.question-bank-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:2px 3px 4px;}

@media (max-width:991.98px){
  .question-bank-toolbar{align-items:flex-start;flex-direction:column;}
  .question-bank-toolbar__metrics{width:100%;flex-wrap:wrap;}
  .question-bank-toolbar__metrics>span{flex:1;}
  .question-bank-layout{grid-template-columns:1fr;}
  .question-bank-index{position:static;min-height:0;max-height:none;border-right:0;border-bottom:var(--bw-2) solid var(--ink);}
  .question-bank-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:250px;}
  .question-bank-nav__item{border-right:var(--bw-1) solid var(--hairline);}
  .question-bank-index__legend{display:none;}
  .question-sheet__body{grid-template-columns:1fr;}
  .question-sheet__settings{grid-template-columns:minmax(0,1fr) 110px;}
  .question-sheet__answer{grid-column:1;}
}
@media (max-width:700px){
  .question-bank__head .page-head-row,.question-bank-toolbar__metrics,.question-bank-actions{align-items:stretch;flex-direction:column;}
  .question-bank-toolbar__metrics>span{border-left:0;border-top:var(--bw-1) solid var(--line);}
  .question-bank-nav{grid-template-columns:1fr;}
  .question-sheet__body{padding:18px 14px;}
  .question-sheet__settings,.question-sheet .quiz-choice-editor{grid-template-columns:1fr;}
  .question-sheet__section-head{align-items:stretch;flex-direction:column;}
  .question-bank-actions .assessment-editor__save-state{margin-right:0;}
}

/* Simi: draggable, bilingual in-product assistant. */
.simi{position:fixed;right:22px;bottom:22px;z-index:1080;width:92px;height:104px;pointer-events:none;}
.simi__pet{position:absolute;inset:0;display:grid;place-items:end center;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:grab;pointer-events:auto;touch-action:none;filter:drop-shadow(0 10px 12px rgba(7,17,38,.24));transition:transform .2s ease,filter .2s ease;}
.simi__pet:hover,.simi__pet.is-open{transform:translateY(-4px);filter:drop-shadow(0 13px 14px rgba(7,17,38,.32));}
.simi__pet.is-dragging{cursor:grabbing;transform:scale(1.04);}
.simi__pet img{display:block;width:88px;height:99px;object-fit:contain;user-select:none;pointer-events:none;}
.simi__online{position:absolute;right:5px;bottom:7px;width:14px;height:14px;border:3px solid var(--surface);border-radius:50%;background:var(--green);box-shadow:0 0 0 1px var(--ink);}
.simi__pet-hint{position:absolute;right:72px;top:8px;min-width:max-content;padding:6px 10px;border:var(--bw-1) solid var(--ink);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font-size:var(--t-label);font-weight:900;box-shadow:2px 2px 0 var(--ink);opacity:0;translate:7px 0;transition:opacity .18s ease,translate .18s ease;}
.simi__pet:hover .simi__pet-hint{opacity:1;translate:0 0;}
.simi__pet.is-open .simi__pet-hint{display:none;}
.simi__panel{position:fixed;z-index:1081;display:flex;flex-direction:column;width:min(380px,calc(100vw - 24px));height:min(520px,calc(100vh - 24px));overflow:hidden;border:var(--bw-2) solid var(--ink);border-radius:22px;background:var(--surface);color:var(--ink);box-shadow:8px 9px 0 color-mix(in srgb,var(--ink) 18%,transparent),0 18px 42px rgba(7,17,38,.24);pointer-events:auto;}
.simi__panel[hidden]{display:none!important;}
.simi__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:0 0 auto;min-height:68px;padding:9px 10px 9px 12px;border-bottom:var(--bw-2) solid var(--ink);background:linear-gradient(100deg,var(--surface-muted),color-mix(in srgb,var(--cyan-soft) 58%,var(--surface)));}
.simi__identity{display:flex;align-items:center;gap:9px;min-width:0;}
.simi__identity>span:last-child{display:grid;min-width:0;}
.simi__identity strong{font-size:1rem;line-height:1.1;}
.simi__identity small{color:var(--ink-subtle);font-size:var(--t-label);}
.simi__mini{display:grid;place-items:center;width:46px;height:46px;overflow:hidden;border:var(--bw-1) solid var(--ink);border-radius:15px;background:var(--volt-soft);box-shadow:2px 2px 0 var(--ink);}
.simi__mini img{width:45px;height:50px;object-fit:contain;}
.simi__close{display:grid;place-items:center;flex:0 0 36px;height:36px;border:var(--bw-1) solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);}
.simi__messages{display:flex;flex:1 1 auto;flex-direction:column;gap:10px;min-height:0;padding:14px;overflow-y:auto;scrollbar-gutter:stable;background:linear-gradient(var(--surface),var(--surface-muted));}
.simi__message{display:flex;align-items:flex-end;gap:7px;max-width:92%;}
.simi__message p{margin:0;padding:9px 11px;border:var(--bw-1) solid var(--line);border-radius:15px 15px 15px 4px;background:var(--surface);font-size:.79rem;line-height:1.45;white-space:pre-wrap;box-shadow:1px 2px 0 color-mix(in srgb,var(--ink) 15%,transparent);}
.simi__message--user{align-self:flex-end;justify-content:flex-end;}
.simi__message--user p{border-color:var(--ink);border-radius:15px 15px 4px 15px;background:var(--orange);color:#071126;font-weight:700;box-shadow:2px 2px 0 var(--ink);}
.simi__avatar{display:grid;place-items:center;flex:0 0 26px;height:26px;border-radius:9px;background:var(--volt);color:#071126;font-size:.72rem;}
.simi__typing p{display:flex;align-items:center;gap:4px;min-height:35px;}
.simi__typing p i{width:6px;height:6px;border-radius:50%;background:var(--ink-subtle);animation:simiTyping 1s infinite ease-in-out;}
.simi__typing p i:nth-child(2){animation-delay:.13s;}.simi__typing p i:nth-child(3){animation-delay:.26s;}
@keyframes simiTyping{0%,60%,100%{translate:0 0;opacity:.45}30%{translate:0 -4px;opacity:1}}
.simi__starters{display:flex;gap:6px;flex:0 0 auto;padding:8px 11px 0;overflow-x:auto;background:var(--surface);scrollbar-width:none;}
.simi__starters[hidden]{display:none;}
.simi__starters button{min-width:max-content;padding:6px 9px;border:var(--bw-1) solid var(--line);border-radius:var(--r-pill);background:var(--surface-muted);color:var(--ink);font-size:var(--t-label);font-weight:800;}
.simi__starters button:hover{border-color:var(--ink);background:var(--volt-soft);}
.simi__form{display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:end;gap:7px;flex:0 0 auto;margin:8px 10px 5px;padding:5px 5px 5px 11px;border:var(--bw-2) solid var(--ink);border-radius:17px;background:var(--surface);box-shadow:2px 2px 0 var(--ink);}
.simi__form textarea{width:100%;max-height:92px;min-height:34px;padding:7px 0;border:0;outline:0;resize:none;background:transparent;color:var(--ink);font:inherit;font-size:.8rem;line-height:1.35;}
.simi__form button{display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:12px;background:var(--orange);color:#071126;font-weight:950;}
.simi__form button:disabled{opacity:.5;}
.simi__footer{display:flex;align-items:center;justify-content:center;gap:5px;flex:0 0 auto;padding:2px 9px 8px;color:var(--ink-subtle);font-size:.6rem;font-weight:750;}
@media (max-width:575.98px){
  .simi{right:12px;bottom:12px;width:78px;height:90px;}
  .simi__pet img{width:76px;height:86px;}
  .simi__pet-hint{display:none;}
  .simi__panel{width:calc(100vw - 16px);height:min(520px,calc(100vh - 16px));}
}
@media (prefers-reduced-motion:reduce){.simi__pet,.simi__pet-hint{transition:none}.simi__typing p i{animation:none}}

/* Faculty assessment schedule: filterable one-screen operational list. */
.faculty-assessment-workspace{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-hard-sm);}
.faculty-assessment-toolbar{flex:0 0 auto;display:grid;grid-template-columns:minmax(190px,.65fr) minmax(220px,.7fr) minmax(320px,1.25fr) 72px;align-items:end;gap:12px;padding:11px 14px;border-bottom:var(--bw-2) solid var(--rule-hard);background:var(--surface-2);}
.faculty-assessment-toolbar__intro{align-self:center;min-width:0;}.faculty-assessment-toolbar__intro strong{display:block;margin-top:3px;font-size:var(--t-sm);}
.faculty-assessment-filter-field{min-width:0;display:grid;gap:4px;}.faculty-assessment-filter-field>span:first-child{font-size:var(--t-label);font-weight:var(--fw-black);color:var(--ink);}
.faculty-assessment-filter-field .form-select,.faculty-assessment-filter-field .form-control{height:44px;min-height:44px;}
.faculty-assessment-search{position:relative;display:block;}.faculty-assessment-search>i{position:absolute;z-index:1;left:14px;top:50%;translate:0 -50%;color:var(--ink-subtle);}.faculty-assessment-search .form-control{padding-left:40px;}
.faculty-assessment-toolbar__count{height:44px;display:grid;place-items:center;align-content:center;border:var(--bw-2) solid var(--rule-hard);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--sh-hard-xs);}.faculty-assessment-toolbar__count strong{font-size:1.05rem;line-height:1;}.faculty-assessment-toolbar__count span{margin-top:3px;color:var(--ink-subtle);font-size:.58rem;font-weight:var(--fw-black);letter-spacing:.07em;text-transform:uppercase;}
.faculty-assessment-list-head,.faculty-assessment-row{display:grid;grid-template-columns:minmax(260px,1.2fr) minmax(190px,.72fr) minmax(300px,1.15fr) 92px minmax(300px,auto);column-gap:14px;align-items:center;}
.faculty-assessment-list-head{flex:0 0 auto;min-height:40px;padding:0 14px;background:var(--table-head);color:var(--table-head-ink);font-size:var(--t-label);font-weight:var(--fw-black);letter-spacing:.06em;text-transform:uppercase;border-bottom:2px solid var(--brand);}
.faculty-assessment-list{flex:1;min-height:0;position:relative;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;background:var(--surface);}
.faculty-assessment-row{min-height:94px;padding:10px 14px;border-bottom:var(--bw-1) solid var(--hairline);}.faculty-assessment-row:hover{background:var(--surface-2);}.faculty-assessment-row[hidden]{display:none;}
.faculty-assessment-row__activity,.faculty-assessment-row__course,.faculty-assessment-row__status{min-width:0;display:grid;align-content:center;gap:3px;}.faculty-assessment-row__activity>strong,.faculty-assessment-row__course>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--t-sm);}.faculty-assessment-row__activity>small,.faculty-assessment-row__course>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-subtle);font-size:var(--t-label);}
.faculty-assessment-row__type{width:max-content;display:inline-flex;align-items:center;gap:5px;margin-bottom:2px;padding:3px 7px;border:var(--bw-1) solid currentColor;border-radius:999px;color:var(--info-text);font-size:.56rem;font-weight:var(--fw-black);letter-spacing:.06em;}.faculty-assessment-row__type--assignment{color:var(--brand-text);}
.faculty-assessment-row__window{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;}.faculty-assessment-row__window>span{min-width:0;display:grid;gap:3px;}.faculty-assessment-row__window small{font-size:.55rem;font-weight:var(--fw-black);letter-spacing:.06em;color:var(--ink-subtle);}.faculty-assessment-row__window strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--t-xs);}.faculty-assessment-row__window>i{color:var(--brand-text);}.faculty-assessment-row__window>em{grid-column:1/-1;color:var(--ink-subtle);font-size:var(--t-label);font-style:normal;}
.faculty-assessment-row__status{justify-items:start;}.faculty-assessment-row__status>small{font-size:.58rem;font-weight:var(--fw-black);letter-spacing:.05em;color:var(--ink-subtle);}
.faculty-assessment-row__actions{display:flex;justify-content:flex-end;align-items:center;gap:7px;white-space:nowrap;}.faculty-assessment-row__actions form{margin:0;}.faculty-assessment-row__actions .btn{min-height:36px;}
.faculty-assessment-empty{height:100%;min-height:260px;align-content:center;justify-items:center;grid-auto-rows:max-content;padding:24px;}.faculty-assessment-empty[hidden]{display:none;}
.faculty-assessment-foot{flex:0 0 auto;min-height:43px;display:flex;align-items:center;gap:22px;padding:7px 14px;border-top:var(--bw-1) solid var(--hairline);background:var(--surface-2);color:var(--ink-subtle);font-size:var(--t-label);}.faculty-assessment-foot strong{color:var(--ink);}.faculty-assessment-foot>span:last-child{margin-left:auto;}

/* Empty submission inbox owns all remaining panel height. */
.faculty-submissions-shell .submission-table-scroll{max-height:none;display:flex;flex-direction:column;overflow:auto;}
.faculty-submissions-shell .submission-table-scroll>.faculty-submission-table{flex:0 0 auto;}
.faculty-submissions-shell .faculty-submissions__empty{flex:1;min-height:220px;align-content:center;justify-items:center;grid-auto-rows:max-content;padding:24px;}

@media (max-width:1199.98px){
  .faculty-assessment-list-head,.faculty-assessment-row{grid-template-columns:minmax(250px,1fr) minmax(180px,.7fr) minmax(260px,1fr) 86px;}
  .faculty-assessment-list-head>span:last-child{display:none;}.faculty-assessment-row__actions{grid-column:1/-1;justify-content:flex-start;margin-top:8px;}.faculty-assessment-row{min-height:132px;}
}
@media (max-width:991.98px){
  .faculty-assessment-toolbar{grid-template-columns:1fr;}.faculty-assessment-toolbar__intro,.faculty-assessment-toolbar__count{display:none;}.faculty-assessment-list-head{display:none;}.faculty-assessment-row{display:grid;grid-template-columns:1fr;gap:10px;}.faculty-assessment-row__actions{grid-column:auto;}.faculty-assessment-row__window{max-width:520px;}.faculty-assessment-foot{display:none;}
}
