:root {
    --bg: #f3f6f9;
    --surface: #ffffff;
    --surface-soft: #f7f9fb;
    --ink: #12263a;
    --muted: #6b7b8c;
    --line: #dfe6ec;
    --primary: #196b69;
    --primary-dark: #105755;
    --primary-soft: #e7f4f3;
    --accent: #e7a94b;
    --danger: #b93a44;
    --success: #2d7a56;
    --warning: #9a6717;
    --shadow: 0 10px 35px rgba(18, 38, 58, .08);
    --radius: 18px;
    --sidebar: 260px;
    font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; color: var(--ink); background: var(--bg); font-size: 15px; line-height: 1.55; }
a { color: var(--primary); text-decoration: none; }
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }

/* Auth */
.auth-body { min-height: 100dvh; background: #edf2f5; }
.auth-shell { min-height: 100dvh; display: grid; grid-template-columns: 1fr; }
.auth-card { background: var(--surface); min-height: 100dvh; padding: 28px 20px calc(28px + env(safe-area-inset-bottom)); display: flex; flex-direction: column; justify-content: center; }
.auth-visual { display: none; }
.brand-lockup { display: flex; align-items: center; gap: 12px; margin-bottom: 36px; }
.brand-mark { width: 44px; height: 44px; border-radius: 14px; background: var(--ink); color: #fff; display: grid; place-items: center; font-weight: 800; letter-spacing: -.04em; flex: 0 0 auto; }
.brand-lockup strong, .brand-lockup span { display: block; }
.brand-lockup strong { font-size: 16px; }
.brand-lockup span { color: var(--muted); font-size: 12px; margin-top: 1px; }
.auth-heading { margin-bottom: 26px; }
.auth-heading h1 { font-size: clamp(28px, 8vw, 40px); line-height: 1.08; letter-spacing: -.04em; margin: 7px 0 10px; }
.auth-heading p { color: var(--muted); margin: 0; max-width: 520px; }
.eyebrow { display: inline-block; color: var(--primary); font-weight: 800; letter-spacing: .12em; font-size: 11px; }
.stack-form { display: grid; gap: 17px; }
.field { display: grid; gap: 7px; }
.field > span { font-weight: 700; font-size: 13px; }
.field input { width: 100%; min-height: 50px; border: 1px solid var(--line); border-radius: 13px; padding: 0 14px; background: #fff; color: var(--ink); outline: none; transition: .2s ease; }
.field input:focus { border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-soft); }
.password-wrap { position: relative; }
.password-wrap input { padding-right: 72px; }
.password-toggle { position: absolute; right: 7px; top: 7px; height: 36px; border: 0; border-radius: 9px; padding: 0 11px; background: var(--surface-soft); color: var(--primary); font-weight: 700; cursor: pointer; }
.btn { min-height: 46px; border: 0; border-radius: 12px; padding: 0 18px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-weight: 800; cursor: pointer; transition: .18s ease; }
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--primary); color: #fff; box-shadow: 0 8px 20px rgba(25, 107, 105, .2); }
.btn-primary:hover { background: var(--primary-dark); }
.btn-secondary { background: var(--primary-soft); color: var(--primary-dark); }
.btn-ghost { background: transparent; border: 1px solid var(--line); color: var(--ink); }
.btn-block { width: 100%; }
.btn-small { min-height: 38px; padding-inline: 12px; font-size: 12px; }
.auth-note { margin: 24px 0 0; color: var(--muted); font-size: 12px; }
.alert { border-radius: 13px; padding: 12px 14px; margin: 0 0 18px; font-size: 13px; }
.alert-error { background: #fff0f1; color: #8e2d35; border: 1px solid #f0c8cb; }
.alert-success { background: #edf8f2; color: #266748; border: 1px solid #cae5d7; }
.alert-warning { background: #fff7e9; color: #7e571c; border: 1px solid #edd5aa; }
.alert a { text-decoration: underline; font-weight: 800; }

/* Context */
.context-shell { min-height: 100dvh; padding: 20px; display: grid; place-items: center; }
.context-card { width: min(100%, 620px); background: #fff; border-radius: 24px; padding: 24px 18px; box-shadow: var(--shadow); }
.context-list { display: grid; gap: 10px; }
.context-option { width: 100%; min-height: 76px; border: 1px solid var(--line); border-radius: 16px; background: #fff; display: flex; align-items: center; gap: 13px; padding: 12px; text-align: left; cursor: pointer; }
.context-option:hover { border-color: #a8c9c8; background: #fbfdfd; }
.context-icon { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 13px; background: var(--primary-soft); font-size: 22px; }
.context-copy { flex: 1; min-width: 0; }
.context-copy strong, .context-copy small { display: block; }
.context-copy small { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.context-arrow { font-size: 30px; color: #9eabb7; }
.context-logout { margin-top: 18px; }

/* App layout */
.app-body { min-height: 100dvh; padding-bottom: 74px; }
.app-shell { min-height: 100dvh; }
.sidebar { position: fixed; inset: 0 auto 0 0; width: min(84vw, var(--sidebar)); background: #10283a; color: #fff; z-index: 50; padding: 20px 16px; display: flex; flex-direction: column; transform: translateX(-105%); transition: transform .22s ease; box-shadow: 15px 0 45px rgba(0,0,0,.18); }
.sidebar.open { transform: translateX(0); }
.sidebar .brand-mark { background: #fff; color: var(--ink); }
.sidebar-brand { display: flex; gap: 11px; align-items: center; padding: 2px 4px 22px; }
.sidebar-brand strong, .sidebar-brand span { display: block; }
.sidebar-brand span { color: #a8bac7; font-size: 11px; }
.sidebar-nav { display: grid; gap: 6px; }
.nav-item { min-height: 47px; border-radius: 12px; padding: 0 12px; display: grid; grid-template-columns: 26px 1fr auto; gap: 7px; align-items: center; color: #dbe5eb; }
.nav-item b { font-size: 13px; }
.nav-item em { color: #8296a5; font-size: 9px; font-style: normal; text-transform: uppercase; }
.nav-item.active { background: rgba(255,255,255,.1); color: #fff; }
.nav-item.disabled { opacity: .62; cursor: default; }
.sidebar-user { margin-top: auto; border-top: 1px solid rgba(255,255,255,.12); padding-top: 16px; display: flex; align-items: center; gap: 10px; }
.avatar { width: 38px; height: 38px; border-radius: 12px; background: #fff; color: var(--ink); display: grid; place-items: center; font-weight: 800; }
.sidebar-user-copy { min-width: 0; }
.sidebar-user-copy strong, .sidebar-user-copy span { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar-user-copy strong { font-size: 12px; }
.sidebar-user-copy span { color: #9fb0bc; font-size: 10px; }
.sidebar-backdrop { position: fixed; inset: 0; background: rgba(4, 18, 28, .48); z-index: 45; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
.sidebar-backdrop.show { opacity: 1; pointer-events: auto; }
body.menu-open { overflow: hidden; }
.main-column { min-width: 0; }
.topbar { height: 64px; position: sticky; top: 0; z-index: 30; background: rgba(255,255,255,.92); backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 9px; padding: 0 14px; }
.topbar-context { flex: 1; min-width: 0; }
.topbar-context strong, .topbar-context span { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topbar-context strong { font-size: 13px; }
.topbar-context span { font-size: 10px; color: var(--muted); }
.topbar-actions { display: flex; align-items: center; gap: 6px; }
.icon-button { width: 39px; height: 39px; border: 1px solid var(--line); border-radius: 11px; background: #fff; display: grid; place-items: center; color: var(--ink); cursor: pointer; }
.inline-form { display: inline; margin: 0; }
.content-wrap { width: min(100%, 1280px); margin: 0 auto; padding: 20px 14px 28px; }
.page-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.page-header h1 { margin: 6px 0 5px; font-size: clamp(25px, 7vw, 38px); line-height: 1.08; letter-spacing: -.04em; }
.page-header p { margin: 0; color: var(--muted); }
.dashboard-hero { background: linear-gradient(135deg, #153a4e, #176d68); color: #fff; padding: 20px; border-radius: 20px; box-shadow: var(--shadow); align-items: center; }
.dashboard-hero .eyebrow { color: #9fe1da; }
.dashboard-hero p { color: #d1e2e5; }
.hero-badge { width: 64px; height: 64px; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.1); border-radius: 18px; display: grid; place-items: center; align-content: center; flex: 0 0 auto; }
.hero-badge span { font-size: 22px; font-weight: 900; line-height: 1; }
.hero-badge small { margin-top: 3px; color: #d1e2e5; font-size: 9px; text-transform: uppercase; }
.stat-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; margin-bottom: 26px; }
.stat-card { min-width: 0; background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 14px; display: flex; align-items: center; gap: 11px; box-shadow: 0 5px 18px rgba(18,38,58,.04); }
.stat-icon { width: 42px; height: 42px; border-radius: 13px; background: var(--primary-soft); display: grid; place-items: center; flex: 0 0 auto; font-size: 19px; }
.stat-card span, .stat-card strong { display: block; }
.stat-card span { color: var(--muted); font-size: 10px; line-height: 1.25; }
.stat-card strong { font-size: 23px; letter-spacing: -.04em; margin-top: 2px; }
.section-head { display: flex; justify-content: space-between; align-items: end; gap: 15px; margin: 0 0 12px; }
.section-head h2, .panel-title h2 { margin: 3px 0 0; font-size: 19px; letter-spacing: -.02em; }
.pill { border-radius: 999px; padding: 5px 10px; background: var(--primary-soft); color: var(--primary-dark); font-weight: 800; font-size: 10px; }
.quick-grid { display: grid; grid-template-columns: 1fr; gap: 10px; margin-bottom: 24px; }
.quick-card { position: relative; min-height: 108px; background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 15px 44px 15px 14px; display: flex; gap: 12px; align-items: flex-start; }
.quick-icon { width: 43px; height: 43px; border-radius: 13px; display: grid; place-items: center; background: var(--surface-soft); flex: 0 0 auto; font-size: 19px; }
.quick-card h3 { margin: 1px 0 3px; font-size: 14px; }
.quick-card p { margin: 0; color: var(--muted); font-size: 12px; }
.soon { position: absolute; top: 12px; right: 10px; color: #81909d; font-size: 9px; font-weight: 800; text-transform: uppercase; }
.panel { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 17px; box-shadow: 0 5px 20px rgba(18,38,58,.035); }
.form-panel { max-width: 680px; }
.panel-title { display: flex; justify-content: space-between; align-items: start; gap: 12px; margin-bottom: 15px; }
.status-dot { font-size: 10px; font-weight: 800; color: var(--success); background: #edf8f2; border-radius: 999px; padding: 5px 9px; white-space: nowrap; }
.stage-list { display: grid; }
.stage-row { display: grid; grid-template-columns: 34px 1fr 26px; gap: 10px; align-items: center; padding: 13px 0; border-top: 1px solid var(--line); }
.stage-row > span { width: 31px; height: 31px; border-radius: 9px; background: var(--surface-soft); display: grid; place-items: center; font-weight: 900; font-size: 10px; color: var(--muted); }
.stage-row strong, .stage-row small { display: block; }
.stage-row strong { font-size: 12px; }
.stage-row small { color: var(--muted); margin-top: 2px; font-size: 10px; }
.stage-row > b { color: #9ba8b3; }
.stage-row.done > b { color: var(--success); }
.mobile-nav { position: fixed; inset: auto 0 0; z-index: 35; height: calc(66px + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom); background: rgba(255,255,255,.96); backdrop-filter: blur(14px); border-top: 1px solid var(--line); display: grid; grid-template-columns: repeat(4, 1fr); }
.mobile-nav a, .mobile-nav > span { display: grid; place-items: center; align-content: center; gap: 1px; color: #81909d; }
.mobile-nav .active { color: var(--primary); }
.mobile-nav small { font-size: 9px; font-weight: 800; }
.mobile-nav .disabled { opacity: .45; }
.desktop-hidden { display: grid; }

@media (min-width: 700px) {
    .auth-card { padding: 48px max(7vw, 42px); }
    .context-card { padding: 32px; }
    .stat-grid { grid-template-columns: repeat(4, minmax(0,1fr)); }
    .quick-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .content-wrap { padding: 24px 24px 36px; }
}

@media (min-width: 960px) {
    .auth-shell { grid-template-columns: minmax(430px, 42%) 1fr; }
    .auth-card { min-height: 100dvh; padding-inline: clamp(50px, 7vw, 95px); }
    .auth-visual { display: flex; position: relative; overflow: hidden; background: linear-gradient(145deg, #10283a 0%, #176b68 72%, #2a7c75 100%); color: #fff; padding: 7vw; flex-direction: column; justify-content: flex-end; }
    .auth-visual::before, .auth-visual::after { content: ''; position: absolute; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; }
    .auth-visual::before { width: 520px; height: 520px; right: -120px; top: -160px; }
    .auth-visual::after { width: 330px; height: 330px; right: 60px; top: 20px; }
    .visual-copy { position: relative; z-index: 2; max-width: 620px; }
    .visual-copy .eyebrow { color: #9fe1da; }
    .visual-copy h2 { font-size: clamp(35px, 4.1vw, 62px); line-height: 1.03; letter-spacing: -.05em; margin: 10px 0 18px; }
    .visual-copy p { color: #c6d9df; max-width: 560px; font-size: 16px; }
    .visual-grid { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 32px; }
    .visual-grid span { border: 1px solid rgba(255,255,255,.15); border-radius: 12px; padding: 12px; background: rgba(255,255,255,.06); font-size: 11px; font-weight: 800; text-align: center; }

    .app-body { padding-bottom: 0; }
    .app-shell { display: grid; grid-template-columns: var(--sidebar) minmax(0,1fr); }
    .sidebar { position: sticky; top: 0; width: var(--sidebar); height: 100dvh; transform: none; box-shadow: none; }
    .sidebar-backdrop, .mobile-nav { display: none; }
    .topbar { height: 70px; padding-inline: 24px; }
    .desktop-hidden { display: none; }
    .content-wrap { padding: 28px 30px 45px; }
    .quick-grid { grid-template-columns: repeat(4, minmax(0,1fr)); }
    .quick-card { min-height: 150px; display: block; padding: 16px; }
    .quick-icon { margin-bottom: 18px; }
    .soon { top: 17px; right: 14px; }
    .dashboard-hero { padding: 27px 30px; }
}

@media (max-width: 380px) {
    .stat-card { padding: 11px; gap: 8px; }
    .stat-icon { width: 35px; height: 35px; font-size: 16px; }
    .stat-card strong { font-size: 19px; }
    .hero-badge { display: none; }
}

/* Stage 2 operational UI */
button, input, select, textarea { font: inherit; }
.field input, .field select, .field textarea { width:100%; min-height:48px; border:1px solid var(--line); border-radius:13px; padding:0 13px; background:#fff; color:var(--ink); outline:none; transition:.2s ease; }
.field textarea { padding-block:11px; resize:vertical; }
.field input:focus, .field select:focus, .field textarea:focus { border-color:var(--primary); box-shadow:0 0 0 4px var(--primary-soft); }
.field small { color:var(--muted); font-size:10px; }
.page-head { display:flex; align-items:flex-end; justify-content:space-between; gap:14px; margin:0 0 18px; }
.page-head h1 { margin:4px 0 3px; font-size:clamp(25px,7vw,38px); line-height:1.1; letter-spacing:-.04em; }
.page-head p { margin:0; color:var(--muted); }
.head-actions { display:flex; gap:7px; flex-wrap:wrap; }
.filter-bar { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; margin-bottom:14px; }
.filter-bar input, .filter-bar select { min-width:0; min-height:46px; border:1px solid var(--line); border-radius:12px; padding:0 13px; background:#fff; }
.data-list { display:grid; gap:9px; }
.data-list.compact { gap:7px; }
.data-card { min-width:0; background:#fff; border:1px solid var(--line); border-radius:15px; padding:13px; display:flex; align-items:center; gap:11px; }
.data-main { min-width:0; flex:1; }
.data-main > strong, .data-main > span, .data-main > small { display:block; }
.data-main > strong { font-size:14px; }
.data-main > span { color:var(--muted); font-size:11px; margin-top:1px; }
.data-main > small { color:var(--muted); font-size:10px; margin-top:4px; }
.data-meta { display:flex; align-items:center; justify-content:flex-end; gap:6px; flex-wrap:wrap; }
.badge { display:inline-flex; align-items:center; min-height:26px; padding:0 9px; border-radius:999px; background:#f0f2f4; color:#63717e; font-size:9px; font-weight:900; text-transform:uppercase; white-space:nowrap; }
.badge.ok { background:#edf8f2; color:var(--success); }
.mini-chip { display:inline-flex!important; width:auto!important; padding:3px 7px; border-radius:999px; background:var(--surface-soft); color:#61717f!important; margin:2px 3px 0 0; }
.student-avatar { width:42px; height:42px; flex:0 0 auto; display:grid; place-items:center; border-radius:13px; background:var(--primary-soft); color:var(--primary-dark); font-weight:900; }
.empty-state, .empty-inline { color:var(--muted); text-align:center; padding:28px 16px; border:1px dashed var(--line); border-radius:14px; background:rgba(255,255,255,.55); }
.empty-inline { padding:15px; }
.pager-wrap { margin-top:16px; }
.form-grid { display:grid; grid-template-columns:1fr; gap:15px; }
.form-actions { display:flex; gap:8px; justify-content:flex-end; padding-top:4px; }
.span-2 { grid-column:1/-1; }
.subpanel { border:1px solid var(--line); border-radius:14px; padding:13px; background:var(--surface-soft); }
.section-gap { margin-top:16px; }
.inline-grid { display:grid; grid-template-columns:1fr; gap:10px; }
.align-end { align-self:end; }
.check-line { min-height:44px; display:flex; align-items:center; gap:8px; font-weight:700; font-size:12px; }
.check-line input { width:18px; height:18px; }
.checks { display:flex; flex-wrap:wrap; gap:5px 16px; }
.profile-grid { display:grid; grid-template-columns:1fr; gap:12px; }
.detail-grid { margin:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.detail-grid div { min-width:0; }
.detail-grid dt { color:var(--muted); font-size:10px; }
.detail-grid dd { margin:2px 0 0; font-weight:800; font-size:12px; overflow-wrap:anywhere; }
.muted { color:var(--muted); }
.details-form { border-top:1px solid var(--line); padding-top:12px; }
.details-form summary { cursor:pointer; color:var(--primary); font-weight:900; font-size:12px; margin-bottom:12px; }
.score-list { display:grid; }
.score-list > div { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; border-top:1px solid var(--line); }
.score-list span, .score-list small { display:block; }
.score-list small { color:var(--muted); font-size:9px; }
.score-list strong { font-size:18px; }
.callout { background:var(--primary-soft); border-radius:14px; padding:14px; }
.callout p { margin:4px 0 10px; color:var(--muted); font-size:12px; }
.grade-grid { display:grid; grid-template-columns:1fr; gap:8px; }
.grade-item { display:grid; grid-template-columns:1fr 105px; gap:10px; align-items:center; border:1px solid var(--line); border-radius:13px; padding:9px 10px; }
.grade-item span, .grade-item small { display:block; }
.grade-item span { font-weight:800; font-size:12px; }
.grade-item small { color:var(--muted); font-size:9px; font-weight:500; }
.grade-item input { width:100%; min-height:40px; border:1px solid var(--line); border-radius:10px; padding:0 8px; text-align:right; }
.mobile-nav { grid-template-columns:repeat(auto-fit,minmax(60px,1fr)); }
.alert ul { margin:6px 0 0; padding-left:18px; }

@media (max-width:520px) {
  .page-head { align-items:flex-start; flex-direction:column; }
  .page-head .btn, .head-actions { width:100%; }
  .head-actions .btn { flex:1; }
  .filter-bar:has(select) { grid-template-columns:1fr; }
  .filter-bar:has(select) .btn { width:100%; }
  .data-card { align-items:flex-start; }
  .data-meta { flex-direction:column; align-items:flex-end; }
  .hide-phone { display:none!important; }
  .form-actions .btn { width:100%; }
}
@media (min-width:700px) {
  .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .inline-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .profile-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .grade-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .filter-bar:has(select) { grid-template-columns:minmax(0,1fr) 260px auto; }
}
@media (min-width:1100px) {
  .grade-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
.quick-link { color:var(--ink); }
.grade-item.is-readonly { background:var(--surface-soft); opacity:.75; }
.grade-item.is-readonly input { background:#eef2f5; color:var(--muted); }
.filter-panel { box-shadow:none; }

/* Stage 3 - Assessment Delivery */
.option-editor{display:grid;gap:8px}.option-row{display:grid;grid-template-columns:74px minmax(0,1fr);gap:8px}.option-row input{min-height:46px;border:1px solid var(--line);border-radius:12px;padding:0 12px;background:#fff}.instrument-picker{display:grid;gap:9px}.pick-card{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:15px;padding:13px;background:#fff;cursor:pointer}.pick-card input{width:20px;height:20px;accent-color:var(--primary)}.pick-card span,.pick-card strong,.pick-card small{display:block}.pick-card small{color:var(--muted);margin-top:2px}.assessment-list{display:grid;gap:12px}.assessment-card{background:#fff;border:1px solid var(--line);border-radius:19px;padding:16px;box-shadow:0 10px 30px rgba(18,38,58,.04)}.assessment-card h2{margin:4px 0 0;font-size:18px}.assessment-card>p{color:var(--muted);font-size:12px;line-height:1.6}.assessment-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.assessment-ring{display:grid;place-items:center;min-width:52px;height:52px;border-radius:50%;background:var(--primary-soft);font-weight:900;color:var(--primary);font-size:12px}.assessment-meta{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:10px;font-weight:700;margin:10px 0}.progress-track{height:7px;border-radius:999px;background:#e9eef1;overflow:hidden}.progress-track span{display:block;height:100%;background:var(--primary);border-radius:inherit}.consent-card{margin-bottom:14px}.consent-body{max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft);padding:14px;font-size:12px;line-height:1.7;margin:12px 0}.consent-check{padding:12px 0}.test-shell{max-width:820px;margin:0 auto}.test-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.test-header strong,.test-header span{display:block}.test-timer{font-variant-numeric:tabular-nums;font-size:18px;font-weight:900;padding:9px 12px;border-radius:12px;background:#10283a;color:#fff;min-width:78px;text-align:center}.test-progress{margin-bottom:14px;height:8px}.question-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:0 12px 35px rgba(18,38,58,.05)}.question-text{font-size:18px;line-height:1.55;font-weight:800;margin:14px 0 18px}.question-media{display:block;max-width:100%;max-height:420px;object-fit:contain;margin:0 auto 18px;border-radius:14px}.answer-form{display:grid;gap:9px}.answer-option{display:flex;align-items:center;gap:11px;min-height:58px;border:1px solid var(--line);border-radius:15px;padding:10px 12px;cursor:pointer;background:#fff;transition:.18s ease}.answer-option:has(input:checked){border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 2px rgba(23,107,104,.08)}.answer-option input{width:20px;height:20px;accent-color:var(--primary);flex:0 0 auto}.answer-option span{display:flex;align-items:center;gap:10px;font-size:13px;line-height:1.4}.answer-option b{display:grid;place-items:center;min-width:31px;height:31px;border-radius:10px;background:#edf2f4;color:#39515f}.save-status{margin-top:12px;color:var(--muted);font-size:10px;font-weight:700;text-align:right}.save-status.open{color:#ad6b00}.test-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:13px 0}.question-jump{display:flex;gap:6px;overflow:auto;padding:4px 0 8px;scrollbar-width:thin}.question-jump a{display:grid;place-items:center;flex:0 0 36px;height:36px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--muted);font-size:11px;font-weight:900}.question-jump a.active{background:var(--primary);border-color:var(--primary);color:#fff}.question-jump::-webkit-scrollbar{height:4px}
@media(min-width:700px){.instrument-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.assessment-list{grid-template-columns:repeat(2,minmax(0,1fr))}.question-card{padding:28px}.question-text{font-size:22px}.answer-option{min-height:64px;padding:12px 15px}}
@media(max-width:520px){.test-shell{margin:-4px -4px 0}.question-card{border-radius:17px}.test-actions .btn{min-height:48px}.assessment-card{padding:14px}.consent-body{max-height:300px}}

/* Stage 4 - Psychometric Scoring */
.scoring-columns{display:grid;grid-template-columns:1fr;gap:14px}.norm-grid{display:grid;grid-template-columns:1fr;gap:12px}.norm-import{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px}.norm-import input[type=file]{min-width:0;border:1px solid var(--line);border-radius:11px;padding:8px;background:#fff}.json-preview{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.validation-list{display:grid;gap:7px;margin-top:10px;padding:11px;border-radius:12px;font-size:11px}.validation-error{background:#fff0f0;color:#9c3434}.validation-warning{background:#fff7e8;color:#8d6300}.rule-doc-grid{display:grid;grid-template-columns:1fr;gap:8px}.rule-doc-grid pre{margin:0;padding:12px;border-radius:12px;background:#10283a;color:#d9eef0;font-size:10px;line-height:1.5;overflow:auto}.score-result-grid{display:grid;grid-template-columns:1fr;gap:11px}.score-result-card{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff}.score-result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.score-result-head h3{margin:3px 0 1px;font-size:15px}.score-result-head>strong{font-size:10px;border-radius:999px;padding:5px 9px;background:var(--primary-soft);color:var(--primary-dark)}.score-numbers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:12px 0}.score-numbers>div{background:var(--surface-soft);border-radius:11px;padding:9px;text-align:center}.score-numbers span,.score-numbers b{display:block}.score-numbers span{font-size:9px;color:var(--muted)}.score-numbers b{font-size:16px;margin-top:2px}.interpret-box{margin-top:11px;border-top:1px solid var(--line);padding-top:11px}.interpret-box p{font-size:11px;line-height:1.6;color:var(--muted);margin:5px 0}.interpret-box small{display:block;font-size:10px;line-height:1.5;color:var(--ink)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;overflow-wrap:anywhere}
@media(min-width:800px){.scoring-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.norm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.score-result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rule-doc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.norm-import{grid-template-columns:1fr}.norm-import .btn{width:100%}.score-numbers b{font-size:14px}.score-result-card{padding:13px}}

/* ==============================================================
   Stage 5+6 · Integrated profile & recommendation engine
   ============================================================= */
.profile-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.profile-health{min-height:150px;display:flex;flex-direction:column;justify-content:center}.profile-health>strong{font-size:clamp(1.55rem,4vw,2.45rem);letter-spacing:-.04em;margin:.2rem 0}.profile-health p{margin:.35rem 0 0;color:var(--muted,#64748b);font-size:.9rem}
.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric-card{border:1px solid var(--line,#e2e8f0);border-radius:16px;padding:14px;background:var(--surface,#fff)}.metric-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.metric-head strong{display:block}.metric-head small{display:block;color:var(--muted,#64748b);margin-top:3px}.metric-head b{font-size:1.45rem}.metric-track{height:8px;background:#e9eef4;border-radius:999px;overflow:hidden;margin:.7rem 0}.metric-track i{display:block;height:100%;background:linear-gradient(90deg,#2f6fec,#48a4f5);border-radius:999px}.metric-card p{font-size:.85rem;color:var(--muted,#64748b);margin:.55rem 0 0}
.three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.program-master-list,.university-master-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.program-master-card{min-width:0}
.recommendation-stack{display:grid;gap:12px}.recommendation-card{display:grid;grid-template-columns:auto 1fr;gap:14px;border:1px solid var(--line,#e2e8f0);border-radius:18px;padding:14px;background:var(--surface,#fff)}.rec-rank{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:#edf4ff;font-weight:800;color:#245ec7}.rec-body{min-width:0}.rec-title{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.rec-title strong{font-size:1.05rem}.rec-title span{display:block;color:var(--muted,#64748b);font-size:.86rem;margin-top:2px}.rec-title b{font-size:1.55rem;white-space:nowrap}.score-chips{display:flex;gap:7px;flex-wrap:wrap;margin:.6rem 0}.score-chips span,.mini-chip{font-size:.78rem;padding:5px 8px;border-radius:999px;background:#f1f5f9;color:#475569}.recommendation-card details{border-top:1px solid var(--line,#e2e8f0);padding-top:9px;margin-top:8px}.recommendation-card summary{cursor:pointer;font-weight:700}
.factor-list{display:grid;gap:6px}.factor-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line,#e2e8f0)}.factor-row:last-child{border-bottom:0}.factor-row span{min-width:0}.factor-row small{display:block;color:var(--muted,#64748b);margin-top:2px}.factor-row>b{font-size:.76rem;text-transform:capitalize;white-space:nowrap}.impact-strong_positive,.impact-positive{color:#137a49}.impact-negative,.impact-strong_negative{color:#b42318}.impact-neutral{color:#64748b}
.rank-list{display:grid;gap:4px}.rank-list>div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line,#e2e8f0)}.rank-list span small{display:block;color:var(--muted,#64748b)}.rank-list strong{font-size:1.2rem}.university-list{display:grid;gap:9px}.university-card{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px;border:1px solid var(--line,#e2e8f0);border-radius:14px}.university-card>div:first-child span,.university-card>div:first-child small{display:block;color:var(--muted,#64748b);font-size:.83rem;margin-top:2px}.university-card p{grid-column:1/-1;margin:0;font-size:.82rem;color:#475569}.university-score{text-align:right}.university-score b{display:block;font-size:1.25rem}.university-score .badge{margin-top:5px}
.data-card-link{text-decoration:none;color:inherit;transition:transform .15s ease,border-color .15s ease}.data-card-link:active{transform:scale(.99)}
@media(max-width:900px){.profile-summary-grid,.three-col,.program-master-list,.university-master-list{grid-template-columns:1fr 1fr}.metric-grid{grid-template-columns:1fr}}
@media(max-width:640px){.profile-summary-grid,.three-col,.program-master-list,.university-master-list{grid-template-columns:1fr}.profile-health{min-height:120px}.recommendation-card{grid-template-columns:1fr}.rec-rank{width:auto;height:auto;display:inline-flex;padding:5px 9px;justify-self:start}.rec-title{gap:8px}.university-card{grid-template-columns:1fr}.university-score{text-align:left;display:flex;align-items:center;gap:8px}.university-score b{display:inline}.factor-row{align-items:flex-start}.metric-card{padding:13px}.head-actions form,.head-actions .btn{width:100%}.head-actions{width:100%}}

.full-width{grid-column:1/-1}.university-program-admin{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.university-program-admin form{margin:0}
