/* Institutional navy, research blue and restrained violet. */
:root {
  --hero-ink:#f1f5fb; --hero-muted:#b6c5e2; --hero-surface:#0b1020;
  --hero-background:linear-gradient(135deg,#0b1020 0%,#101a33 55%,#17142f 100%);
}
:root[data-theme=dark] {
  color-scheme:dark; --bg-canvas:#0b1020; --bg-deep:#080d18;
  --surface-1:#121a2b; --surface-elevated:#182238; --surface-2:#1d2940; --surface-3:#26344e;
  --surface-accent:rgba(91,124,250,.12); --border-subtle:rgba(148,163,184,.18); --border-strong:#52617c;
  --text-strong:#f1f5fb; --text-body:#cbd5e1; --text-muted:#94a3b8;
  --primary:#5b7cfa; --primary-text:#8fa7ff; --primary-strong:#7893ff; --primary-ink:#080d18;
  --secondary:#8b5cf6; --secondary-text:#b69aff; --success:#91c9ad; --warning:#e0c28d; --danger:#ffacaa; --info:#7893ff;
  --rgb-ink:4,8,18; --rgb-paper:18,26,43; --rgb-primary:91,124,250;
  --rgb-secondary:139,92,246; --rgb-success:145,201,173; --rgb-danger:255,172,170; --rgb-info:120,147,255;
  --shadow-focus:0 0 0 3px rgba(120,147,255,.35);
  --shadow-sm:0 4px 20px rgba(0,0,0,.15); --shadow-md:0 24px 70px rgba(0,0,0,.38);
}
body { background:var(--bg-canvas); }
html[data-theme-changing] *,html[data-theme-changing] *::before,html[data-theme-changing] *::after { transition:none!important; }
.site-header,.command-bar { background:var(--surface-1); box-shadow:var(--shadow-sm); }
.command-bar { gap:1rem; }
.command-context { min-width:0; }
.command-context strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.theme-control { position:relative; flex-shrink:0; margin:0; color:var(--text-strong); font-size:.8rem; }
.theme-control summary { display:flex; align-items:center; gap:.4rem; min-height:44px; padding:.4rem .65rem; border:1px solid var(--border-strong); border-radius:var(--radius-md); background:var(--surface-2); cursor:pointer; list-style:none; font-weight:650; }
.theme-control summary::-webkit-details-marker { display:none; }
.theme-control[open] summary { margin-bottom:0; padding-bottom:.4rem; border-bottom-color:var(--border-strong); }
.theme-control summary:hover,.theme-control[open] summary { background:var(--surface-accent); border-color:var(--primary-text); }
.theme-control svg { width:18px; height:18px; flex-shrink:0; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.theme-current { color:var(--text-body); font-weight:400; }
.theme-options { position:absolute; right:0; top:calc(100% + 8px); z-index:80; width:190px; margin:0; padding:.4rem; border:1px solid var(--border-strong); border-radius:var(--radius-md); background:var(--surface-elevated); box-shadow:var(--shadow-md); }
.theme-options legend { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.theme-options label { position:relative; display:flex; align-items:center; gap:.6rem; min-height:44px; margin:0; padding:.5rem .65rem; border-radius:6px; color:var(--text-strong); font-size:.875rem; cursor:pointer; }
.theme-options label:hover { background:var(--surface-2); }
.theme-options label:has(:checked) { background:var(--surface-accent); font-weight:700; }
.theme-options input { width:16px; height:16px; min-height:0; margin:0 0 0 auto; order:1; accent-color:var(--primary-text); }
.theme-options label:focus-within { outline:2px solid var(--primary-strong); outline-offset:-2px; }
.shortcuts-button { gap:.5rem; }
kbd { border:1px solid var(--border-subtle); border-radius:.25rem; padding:.05rem .2rem; font-size:.7rem; color:var(--text-muted); }
.brand-mark { border-radius:12px; background:var(--surface-accent); }
.app-sidebar { background:var(--hero-surface); border-right:1px solid var(--border-subtle); }
[data-theme=dark] .app-sidebar { background:var(--bg-deep); }
.sidebar-nav a[aria-current=page] { box-shadow:inset 0 0 0 1px var(--border-strong); }
.sidebar-nav a { transition:background var(--transition-fast), color var(--transition-fast); }
.page-heading { border-bottom:1px solid var(--border-subtle); padding-bottom:1.8rem; }
.dashboard-heading h1 { font-size:clamp(2.25rem,3.6vw,3.7rem); }
.dashboard-hero { gap:1.2rem; }
.progress-panel { background:var(--surface-accent); box-shadow:inset 0 0 0 1px var(--border-subtle); }
.next-action { background:var(--surface-elevated); box-shadow:var(--shadow-md); }
.current-focus { border-left:4px solid var(--primary); background:var(--surface-elevated); }
.dashboard-summary { background:var(--surface-2); border-radius:var(--radius-md); padding:1.1rem; }
.panel,.form-card,.record-card,.book-card,.pathway-module,.plan-card { box-shadow:var(--shadow-sm); }
.record-card,.pathway-module,.book-card { transition:border-color var(--transition-fast),box-shadow var(--transition-fast); }
.record-card:hover,.pathway-module:hover,.book-card:hover { border-color:var(--border-strong); box-shadow:var(--shadow-md); }
.learning-choice { background:var(--surface-2); border-color:var(--border-strong); }
.learning-choice-grid button { position:relative; padding-top:2.2rem; }
.learning-choice-grid button::before { content:''; position:absolute; top:1rem; left:1.1rem; width:1.2rem; height:3px; border-radius:2px; background:var(--border-strong); }
.learning-choice-grid button[aria-pressed=true]::before { content:''; width:2.6rem; background:var(--primary); }
.module-overview { background:var(--surface-accent); border-radius:var(--radius-lg); }
.module-resources { background:var(--surface-2); padding:1.4rem; border-radius:var(--radius-lg); }
.state-panel { border-style:solid; border-left:3px solid var(--primary); }
.button { transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast); }
.button:active { transform:translateY(1px); }
.button-ghost:hover { background:var(--surface-accent); }
.university-hero { gap:clamp(2rem,5vw,5rem); padding-block:3.5rem; }
.university-hero h1 { font-size:clamp(2.8rem,4.9vw,5rem); }
.academic-object { position:relative; overflow:hidden; border:1px solid var(--border-strong); border-radius:1.2rem; background:var(--hero-background); box-shadow:var(--shadow-md); color:var(--hero-ink); padding:1.8rem; }
.object-caption { color:var(--hero-muted); font-size:.65rem; }
.learning-orbit { display:grid; grid-template-columns:repeat(3,1fr); gap:.75rem; margin:2rem 0 1.3rem; }
.learning-orbit span { border-top:2px solid var(--hero-muted); padding-top:.6rem; font-size:.8rem; color:var(--hero-ink); }
.learning-orbit b { display:block; font:1.8rem var(--font-display); margin-bottom:.5rem; }
.academic-object .editorial-book { margin:1.2rem 0; min-height:0; padding:1.6rem; width:100%; border:1px solid var(--hero-muted); box-shadow:8px 8px 0 rgba(0,0,0,.13); background:transparent; transform:none; }
.academic-object .editorial-book { color:var(--hero-ink); max-width:none; }
.editorial-book strong { font-size:clamp(2rem,3vw,3.5rem); }
.mobile-signout { display:none; }
.module-assistant-action { margin-bottom:1rem; }
.academic-object .object-note p { color:var(--hero-muted); }
.academic-object .object-note { margin-top:1.5rem; }
.principle-band { background:var(--surface-accent); border:1px solid var(--border-subtle); border-radius:var(--radius-md); padding:1.2rem; }
.study-methods { background:var(--surface-1); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); padding:1.5rem; }
.study-methods article { border-top:0; }
.method-number { color:var(--primary-text); }
.evidence-editorial { background:var(--surface-2); border-radius:var(--radius-lg); padding:clamp(1.5rem,4vw,3rem); }
.prior-invitation { border:1px solid var(--border-strong); border-radius:var(--radius-lg); }
.research-band { display:grid; grid-template-columns:1fr 1fr; gap:2rem; padding:2rem 0; border-block:1px solid var(--border-subtle); }
.research-band article { max-width:55ch; }
.workspace-invitation { display:flex; gap:1rem; align-items:center; justify-content:space-between; padding:1rem 1.2rem; margin:1rem 0; background:var(--surface-accent); border:1px solid var(--border-subtle); border-radius:var(--radius-md); }
.workspace-invitation p { margin:0; }
.assistant-mark { display:grid; place-items:center; width:32px; height:32px; flex-shrink:0; border:1px solid currentColor; border-radius:10px; font:1.1rem var(--font-display); }
.assistant-launcher { position:fixed; right:24px; bottom:24px; z-index:65; display:flex; align-items:center; gap:.7rem; padding:.65rem 1rem .65rem .65rem; min-height:52px; background:var(--primary); color:var(--primary-ink); border:1px solid var(--border-strong); border-radius:16px; box-shadow:var(--shadow-md); font-weight:650; }
.assistant-window { position:fixed; inset:auto; margin:0; padding:0; max-width:none; max-height:none; color:var(--text-strong); background:var(--surface-1); border:1px solid var(--border-strong); border-radius:18px; box-shadow:var(--shadow-md); z-index:70; overflow:hidden; }
.assistant-window[open] { display:flex; flex-direction:column; }
.assistant-window::backdrop,.command-palette::backdrop { background:rgba(4,8,18,.66); }
.assistant-header { display:flex; justify-content:space-between; align-items:center; padding:.7rem .6rem; border-bottom:1px solid var(--border-subtle); background:var(--surface-accent); flex-shrink:0; gap:.3rem; }
.assistant-grip { display:flex; gap:.6rem; align-items:center; min-width:0; background:none; border:0; padding:0; color:var(--text-strong); cursor:grab; text-align:left; touch-action:none; }
.assistant-grip:disabled { cursor:default; opacity:1; }
.assistant-grip strong { font-size:.95rem; display:block; }
.assistant-grip small { display:block; font-size:.75rem; color:var(--text-muted); }
.assistant-controls { display:flex; flex-shrink:0; }
.assistant-controls button { width:44px; height:44px; background:transparent; color:var(--text-strong); border:0; border-radius:.4rem; font-size:1.25rem; }
.assistant-controls button:hover { background:var(--surface-3); }
.assistant-subhead { display:flex; align-items:center; justify-content:space-between; gap:.5rem; padding:0 .9rem; font-size:.75rem; color:var(--text-muted); flex-shrink:0; }
.assistant-subhead button { background:none; border:0; color:var(--primary-text); min-height:44px; font-size:.75rem; }
.assistant-history { overflow-y:auto; overscroll-behavior:contain; flex:1; min-height:40px; padding:1rem; }
.assistant-welcome h2 { font:2rem var(--font-display); }
.assistant-welcome p { font-size:.875rem; }
.assistant-welcome .fine-print { font-size:.75rem; }
.assistant-message { padding:.85rem; margin-bottom:1rem; background:var(--surface-2); border-radius:10px; }
.assistant-message.user { margin-left:1.5rem; background:var(--surface-accent); }
.assistant-message strong { font-size:.75rem; color:var(--primary-text); }
.assistant-message p { font-size:.9rem; white-space:pre-wrap; margin:.5rem 0 0; overflow-wrap:anywhere; }
.assistant-actions { display:flex; gap:.35rem; overflow-x:auto; padding:.5rem .8rem; flex-shrink:0; }
.assistant-actions a { flex-shrink:0; display:flex; align-items:center; min-height:44px; padding:.3rem .65rem; border:1px solid var(--border-subtle); border-radius:8px; font-size:.75rem; text-decoration:none; }
.assistant-status { padding:.35rem 1rem; margin:0; font-size:.78rem; color:var(--text-muted); flex-shrink:0; }
.assistant-composer { padding:.6rem 1rem 1.1rem; border-top:1px solid var(--border-subtle); flex-shrink:0; }
.assistant-composer label { font-size:.8rem; }
.assistant-composer textarea { resize:none; margin:.25rem 0 .4rem; min-height:60px; max-height:100px; }
.assistant-composer > div { display:flex; justify-content:space-between; gap:.6rem; align-items:center; }
.assistant-composer > div > span { font-size:.7rem; color:var(--text-muted); }
.assistant-resize { position:absolute; bottom:0; right:0; width:28px; height:28px; padding:0; background:var(--surface-2); color:var(--text-strong); border:0; border-radius:10px 0 0; cursor:nwse-resize; touch-action:none; }
.assistant-window[data-compact=true] .assistant-subhead,.assistant-window[data-compact=true] .assistant-actions,.assistant-window[data-compact=true] .assistant-composer > div > span { display:none; }
.assistant-window[data-compact=true] .assistant-status { max-height:46px; overflow:auto; }
.assistant-window[data-compact=true] .assistant-composer textarea { min-height:44px; height:44px; }
.command-palette { width:min(560px,calc(100vw - 24px)); max-height:85dvh; padding:1.5rem; background:var(--surface-elevated); color:var(--text-strong); border:1px solid var(--border-strong); border-radius:16px; box-shadow:var(--shadow-md); }
.command-palette h2 { font-size:1.25rem; }
.command-palette nav { display:grid; margin-top:1rem; max-height:45dvh; overflow:auto; }
.command-palette nav a,.command-palette nav button { min-height:44px; padding:.5rem; text-align:left; background:none; border:0; border-radius:6px; color:var(--text-strong); text-decoration:none; }
.command-palette nav :is(a,button):hover { background:var(--surface-accent); }
@media(min-width:1100px) { .university-hero { min-height:650px; } }
@media(max-width:1150px) { .command-actions .account-state,.command-actions .account-avatar { display:none; } .public-nav { gap:.6rem; } .public-header .brand small { max-width:210px; } }
@media(max-width:900px) { .command-actions .text-action,.shortcuts-button kbd { display:none; } .theme-control { gap:.3rem; } .research-band { gap:1rem; } }
@media(max-width:767px) {
  .assistant-modal-open { overflow:hidden; }
  .mobile-signout { display:block; }
  .assistant-launcher { right:14px; bottom:calc(14px + env(safe-area-inset-bottom)); padding:.6rem; }
  .assistant-launcher > span:last-child { display:none; }
  .assistant-window { border-radius:14px; }
  .assistant-controls [data-agent-maximize],.assistant-resize { display:none; }
  .assistant-composer { padding-bottom:max(.8rem,env(safe-area-inset-bottom)); }
  .assistant-header { padding:.6rem; }
  .assistant-grip { touch-action:auto; }
  .assistant-composer > div > span { max-width:180px; }
  .app-footer { padding-bottom:6rem; }
  .research-band { grid-template-columns:1fr; }
  .workspace-invitation { align-items:flex-start; flex-direction:column; }
  .command-context span { display:none; }
  .command-actions { gap:.4rem; }
  .command-actions [data-logout] { display:none; }
  .theme-current { display:none; }
  .shortcuts-button { font-size:.8rem; padding:.4rem; }
  .command-bar { padding:.6rem .8rem; gap:.5rem; }
  .command-context strong { max-width:24vw; }
  .public-header { gap:.6rem; padding:1rem var(--mobile-gutter); }

  .public-nav [data-role-workspace]:not([hidden]) { display:inline-flex!important; }
  .university-hero { padding-top:2.2rem; gap:2rem; }
  .academic-object { padding:1.3rem; }
  .study-methods { padding:1.2rem; }
  .module-resources { padding:1rem; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }

/* Public catalogue: server-rendered metadata and native, keyboard-operable filters. */
/* Existing signed-in assistant: governed learning modes and explicit page sharing. */
.assistant-context-bar { padding:.6rem 1rem; background:var(--surface-accent); border-block:1px solid var(--border-subtle); flex-shrink:0; }
.assistant-context-bar label { display:flex; align-items:center; gap:.5rem; min-height:32px; margin:0; font-size:.8rem; }
.assistant-context-bar input { width:18px; height:18px; margin:0; accent-color:var(--primary-text); }
.assistant-context-bar p { font-size:.8rem; line-height:1.4; margin:.2rem 0; max-height:3.4em; overflow:auto; overflow-wrap:anywhere; color:var(--text-strong); }
.assistant-context-bar small { display:block; font-size:.7rem; color:var(--text-body); max-height:2.8em; overflow:auto; }
.assistant-mode { display:grid; grid-template-columns:90px minmax(0,1fr); align-items:center; gap:.5rem; padding:.5rem 1rem; flex-shrink:0; }
.assistant-mode label { font-size:.75rem; margin:0; }.assistant-mode select { width:100%; min-width:0; min-height:44px; font-size:.85rem; margin:0; }
.assistant-prompts { display:flex; gap:.4rem; overflow-x:auto; padding:.4rem .8rem; flex-shrink:0; }
.assistant-prompts button { flex:0 0 auto; min-height:44px; padding:.4rem .7rem; font-size:.75rem; background:var(--surface-accent); color:var(--primary-text); border:1px solid var(--border-subtle); border-radius:12px; }
.assistant-grip { min-width:0; }.assistant-grip strong { font-size:.85rem; }.assistant-controls { flex-shrink:0; }
.assistant-controls button[aria-pressed=true] { background:var(--surface-accent); color:var(--primary-text); }
.assistant-history { scroll-behavior:smooth; }.assistant-window[data-compact=true] .assistant-prompts,.assistant-window[data-compact=true] .assistant-context-bar small { display:none; }
.assistant-window[data-compact=true] .assistant-context-bar { padding:.2rem .8rem; }.assistant-window[data-compact=true] .assistant-mode { padding:.2rem .8rem; }
.assistant-window[data-dense=true] .assistant-prompts,.assistant-window[data-dense=true] .assistant-actions,.assistant-window[data-dense=true] .assistant-context-bar small { display:none; }
.assistant-window[data-dense=true] .assistant-context-bar,.assistant-window[data-dense=true] .assistant-mode { padding:.2rem .8rem; }
.assistant-window[data-dense=true] .assistant-status { max-height:42px; overflow:auto; }
.assistant-window[data-dense=true] .assistant-composer { gap:.25rem; padding:.4rem .8rem .6rem; }
.assistant-window[data-dense=true] .assistant-composer textarea { min-height:44px; height:44px; }
.assistant-launcher[data-available=true] .assistant-mark { background:radial-gradient(circle at 25% 20%,#a3adff,#5554b0 60%,#18254d); color:#fff; border-color:#c9d3ff; box-shadow:0 0 0 4px var(--surface-accent); }
.assistant-launcher:focus-visible,.assistant-launcher:hover { box-shadow:0 0 0 4px var(--surface-accent),var(--shadow-md); }
.assistant-context-bar { border-left:3px solid var(--primary-text); }
@media(prefers-reduced-motion:no-preference) { .assistant-launcher[data-available=true] .assistant-mark { animation:copilot-welcome-ring 2s ease-out 1; } @keyframes copilot-welcome-ring { from { box-shadow:0 0 0 10px transparent; } to { box-shadow:0 0 0 4px var(--surface-accent); } } }
@media(max-width:767px) { .assistant-controls [data-agent-dock] { display:none; }.assistant-header { gap:.2rem; }.assistant-grip { padding:.2rem; } }
.public-header { flex-wrap:wrap; gap:1rem; }
.public-nav { flex-wrap:wrap; justify-content:flex-end; gap:.8rem; }
.catalogue-hero { display:grid; grid-template-columns:1.2fr 1fr; gap:clamp(2rem,5vw,5rem); align-items:center; padding:clamp(2rem,5vw,5rem) 0; }
.catalogue-hero h1 { font-size:var(--type-display); line-height:1.08; margin:.5rem 0 1.5rem; }
.catalogue-hero h1 em { color:var(--primary-text); font-style:normal; }
.catalogue-note { padding:clamp(1.5rem,3vw,2.5rem); background:var(--surface-2); border:1px solid var(--border-subtle); border-top:4px solid var(--secondary); border-radius:var(--radius-lg); }
.catalogue-note h2 { font-family:var(--font-display); }
.catalogue-directory { padding:1rem 0 3rem; scroll-margin-top:2rem; }
.catalogue-filters { display:grid; grid-template-columns:1.4fr 1fr 1.4fr; align-items:end; gap:1rem; padding:1.5rem; background:var(--surface-1); border:1px solid var(--border-strong); border-radius:var(--radius-lg); }
.catalogue-filters > div { min-width:0; }
.catalogue-filters input,.catalogue-filters select { width:100%; min-width:0; }
.catalogue-filter-actions { grid-column:1/-1; display:flex; align-items:center; gap:1rem; flex-wrap:wrap; }
.catalogue-result-count { color:var(--text-body); padding:.5rem 0; }
.catalogue-programme { margin:1.5rem 0; border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:var(--surface-1); overflow:hidden; }
.catalogue-programme > header { padding:clamp(1.25rem,3vw,2rem); }
.catalogue-programme h2 { margin:.4rem 0 .75rem; }
.catalogue-facts { display:flex; gap:1.5rem; flex-wrap:wrap; color:var(--text-body); font-size:.875rem; margin-top:1.25rem; }
.catalogue-facts strong { color:var(--text-strong); }
.catalogue-modules > summary { min-height:48px; padding:1rem 2rem; background:var(--surface-accent); color:var(--primary-text); cursor:pointer; font-weight:700; }
.catalogue-modules > summary:focus-visible { outline:3px solid var(--primary-text); outline-offset:-3px; }
.catalogue-module-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; background:var(--border-subtle); }
.catalogue-module { min-width:0; padding:clamp(1.25rem,3vw,2rem); background:var(--surface-1); overflow-wrap:anywhere; }
.catalogue-module h3 { font-size:1.25rem; }
.catalogue-module dl { font-size:.875rem; margin:1.25rem 0; }
.catalogue-module dl > div { display:grid; grid-template-columns:minmax(100px,1fr) 2fr; gap:.75rem; padding:.5rem 0; border-top:1px solid var(--border-subtle); }
.catalogue-module dt { color:var(--text-body); }
.catalogue-module dd { margin:0; }
.catalogue-empty { padding:2rem; }
@media(max-width:1150px) {
  .public-header { justify-content:space-between; }
  .public-nav { flex:1 1 100%; justify-content:flex-start; }
  .public-nav > a:not(.button) { display:inline-flex; }
}
@media(max-width:700px) {
  .public-header { position:static; }
  .catalogue-hero { grid-template-columns:1fr; }
  .catalogue-filters,.catalogue-module-grid { grid-template-columns:1fr; }
  .public-nav { gap:.5rem 1rem; font-size:.8rem; }
  .public-nav .theme-control { margin-left:auto; order:2; }
  .catalogue-module dl > div { grid-template-columns:1fr; gap:.15rem; }
}
