/* Term workspace: a quiet task surface with persistent navigation. */
:root {
  --bg: #f4f6fa;
  --bg-elevated: #fff;
  --text: #17243b;
  --text-secondary: #526179;
  --text-tertiary: #65728a;
  --separator: #e4e9f1;
  --separator-strong: #cbd4e1;
  --accent: #2563eb;
  --accent-strong: #1d4ed8;
  --accent-text: #1d4ed8;
  --accent-soft: #edf3ff;
  --radius: 9px;
  --radius-lg: 14px;
  --sidebar-w: 14rem;
  --header-h: 5rem;
  --shadow-sm: 0 2px 5px #17243b03;
}
:root[data-theme=light] { color-scheme: light; }
:root[data-theme=dark] {
  color-scheme: dark;
  --bg: #101722; --bg-elevated: #182231; --text: #edf2fa;
  --text-secondary: #b2bfd2; --text-tertiary: #98abc3;
  --separator: #2a374b; --separator-strong: #435570;
  --accent: #5d95ff; --accent-strong: #2563eb; --accent-text: #9bc0ff;
  --accent-soft: #203450;
}
@media(prefers-color-scheme:dark) {
  :root:not([data-theme=light]) {
    --bg: #101722; --bg-elevated: #182231; --text: #edf2fa;
    --text-secondary: #b2bfd2; --text-tertiary: #98abc3;
    --separator: #2a374b; --separator-strong: #435570;
    --accent: #5d95ff; --accent-strong: #2563eb; --accent-text: #9bc0ff;
    --accent-soft: #203450;
  }
}
body { line-height: 1.55; }
.sidebar {
  background: #13233d; color: #f3f6fd; padding: 1.6rem 1rem;
  backdrop-filter: none; border: 0; gap: 1.6rem;
  --text: #f3f6fd; --text-secondary: #becce0; --text-tertiary: #a8bad3;
  --separator: #ffffff13; --accent-text: #b5d0ff; --accent-soft: #ffffff10;
}
.brand { padding: 0 .75rem; gap: .7rem; }
.brand__mark { width: 2rem; height: 2rem; box-shadow: none; }
.brand__name { font-size: 1.4rem; letter-spacing: -.04em; }
.tabs { display: flex; flex-direction: column; margin: 0; width: 100%; padding: 0; gap: .4rem; background: none; }
.tabs::before { display: none; }
.tabs button { display: flex; align-items: center; text-align: left; gap: .85rem; padding: .8rem .85rem; color: #bdcbe0; font-size: .9375rem; min-height: 46px; font-weight: 500; }
.tabs button svg { width: 20px; height: 20px; flex: none; }
.tabs button:hover { background: #ffffff0a; color: white; }
.tabs button[aria-selected=true] { background: #ffffff13; color: #fff; box-shadow: inset 3px 0 #75a4ff; }
.sidebar-context { padding: 0 .3rem; }
.section-label { font-size: .75rem; letter-spacing: .06em; margin-bottom: .6rem; }
.sidebar .tag-row { min-height: 40px; font-size: .875rem; }
.sidebar-subjects { padding: 0 .3rem; }
.sidebar-subjects summary { font-size: .875rem; color: #becce0; cursor: pointer; padding: .5rem; }
.sidebar-subjects .tags { margin-top: .5rem; }
.sidebar__foot { padding-top: 1rem; border-top: 1px solid #ffffff15; }
.sidebar .ask-btn { background: #ffffff09; color: #e4edfa; border: 1px solid #ffffff23; border-radius: 9px; min-height: 44px; font-size: .875rem; }
.sidebar .ask-btn__kbd { color: #b6c7df; }
.sidebar .status { font-size: .75rem; padding: .5rem .75rem; }
.sidebar .sign-out { font-size: .875rem; min-height: 40px; color: #becce0; }
.main { background: var(--bg); }
.topbar { background: var(--bg-elevated); backdrop-filter: none; padding: 0 2rem; gap: .8rem; }
.topbar-heading { flex: 1; min-width: 0; }
.topbar-date { display: block; font-size: .8125rem; color: var(--text-secondary); }
.topbar__title { font-size: 1.3rem; line-height: 1.3; margin: .15rem 0 0; }
.topbar .icon-btn { width: 42px; height: 42px; }
.topbar .setup-link { font-size: .875rem; }
.page { padding: 2rem 2rem 4rem; }
.stack { max-width: 76rem; margin: 0 auto; gap: 1.4rem; }
.stack--wide { max-width: 90rem; }
.card { box-shadow: var(--shadow-sm); padding: 1.35rem; }
.btn { border-radius: 8px; min-height: 42px; font-size: .875rem; padding: .55rem .9rem; }
.btn--primary { background: var(--accent-strong); border-color: var(--accent-strong); color: #fff; }
.btn--primary:hover { background: #1e40af; color: white; }
.btn:disabled { cursor: default; opacity: .55; }
.h-sec { font-size: 1rem; text-transform: none; letter-spacing: -.015em; color: var(--text); font-weight: 600; margin: 0 0 .8rem; }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .85rem; }
.section-heading .h-sec { margin: 0; }
.text-btn { color: var(--accent-text); font-size: .875rem; min-height: 38px; padding: .35rem 0; }
.text-btn:hover { text-decoration: underline; }
.workspace-eyebrow { display: block; font-size: .75rem; font-weight: 650; letter-spacing: .08em; color: var(--text-secondary); margin-bottom: .6rem; }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); gap: 1.6rem; }
.dashboard-grid>section { min-width: 0; }
.dashboard-brief { grid-column: 1 / -1; padding-bottom: .4rem; }
.brief__head { font-size: clamp(1.7rem, 3vw, 2.2rem); line-height: 1.25; letter-spacing: -.04em; }
.brief__sub { margin-top: .35rem; font-size: .9375rem; }
.dashboard-actions { margin: 1.2rem 0; gap: .65rem; }
.brief__row { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; margin-top: 1.5rem; }
.stat { padding: 1rem 1.25rem; border-radius: 12px; }
.stat__n { font-size: 1.75rem; font-weight: 600; letter-spacing: -.04em; }
.stat__l { font-size: .875rem; color: var(--text-secondary); }
.meter { height: 4px; margin-top: .8rem; }
.dashboard-priority { grid-column: 1; }
.dashboard-lessons { grid-column: 2; grid-row: span 2; }
.dashboard-revision { grid-column: 1; }
.dashboard-priority .card, .dashboard-revision .card { padding: .2rem 1.25rem; }
.dashboard-lessons .lessons { display: flex; flex-direction: column; gap: .5rem; }
.dashboard-lessons .lesson { display: grid; grid-template-columns: 2.5rem 1fr; column-gap: .8rem; padding: .8rem 1rem; border-radius: 10px; min-width: 0; border: 1px solid var(--separator); background: var(--bg-elevated); }
.dashboard-lessons .lesson__p { grid-row: span 2; align-self: center; font-size: .875rem; }
.dashboard-lessons .lesson__n { margin: 0; font-size: .9375rem; }
.dashboard-lessons .lesson__m { font-size: .8125rem; }
.dashboard-lessons .lesson--now { background: var(--accent-soft); border-color: var(--accent); }
.dashboard-lessons .lesson--free { background: transparent; }
.row { min-height: 70px; }
.row__title, .row__n { font-size: .9375rem; }
.row__meta, .row__m { font-size: .8125rem; }
.row__t { display: block; font-size: .9375rem; line-height: 1.45; }
.row__m { display: block; margin-top: .25rem; line-height: 1.45; }
.tick { width: 24px; height: 24px; min-width: 24px; min-height: 24px; }
.tick::before { content: ''; position: absolute; width: 44px; height: 44px; left: 50%; top: 50%; transform: translate(-50%,-50%); }
.row__t { overflow: visible; white-space: normal; text-overflow: clip; }
.row__sub { font-size: .75rem; }
.focus-card { border-left: 3px solid var(--accent); background: var(--bg-elevated); }
.focus-card h2 { font-size: 1.1rem; letter-spacing: -.02em; }
.focus-card p { font-size: .875rem; margin: .4rem 0 0; }
.day-close { background: none; box-shadow: none; padding: 1rem 0; border: 0; border-top: 1px solid var(--separator); border-radius: 0; }
.day-close p { color: var(--text-secondary); }
.dashboard-home { display: block; padding: 0; border: 1px solid var(--separator); border-radius: 12px; background: var(--bg-elevated); box-shadow: none; }
.dashboard-home summary { padding: 1.2rem 1.35rem; font-size: .9375rem; font-weight: 600; cursor: pointer; }
.dashboard-home summary span { display: block; padding-left: 1rem; margin-top: .15rem; font-size: .8125rem; color: var(--text-secondary); font-weight: 400; }
.shortcut-content { padding: 0 1.35rem 1.35rem; }
.dashboard-home__copy { display: none; }
.google-search { margin-top: .5rem; box-shadow: none; }
.app-launcher { margin-top: 1rem; }
.agenda__filters { gap: .6rem; }
.agenda__filters input { min-height: 42px; font-size: .9375rem; }
.agenda__count { font-size: .8125rem; }
.uni-heading { position: sticky; top: 0; z-index: 4; background: var(--bg); padding: .5rem 0; margin-bottom: 0; align-items: center; }
.uni-heading h2 { font-size: 1.6rem; letter-spacing: -.03em; }
.uni-heading p { margin: .4rem 0 0; }
.uni-stats { margin: 0; border-radius: 12px; }
.uni-stats strong { font-size: 1.7rem; line-height: 1.4; margin-top: .5rem; }
.uni-stats small { display: none; }
.uni-nav { margin: 0; padding-bottom: .15rem; gap: 1rem; border-bottom: 1px solid var(--separator); }
.uni-nav .btn { border: 0; border-radius: 0; padding: .65rem 0; background: none; box-shadow: none; color: var(--text-secondary); white-space: nowrap; }
.uni-nav .btn[aria-current=page] { color: var(--accent-text); box-shadow: 0 2px var(--accent); }
.uni-content { min-width: 0; }
.uni-grid { gap: 1rem; }
.uni-card { padding: 1.4rem; }
.uni-card h3 { font-size: 1.15rem; margin-top: 1rem; }
.uni-card-top label { font-size: .875rem; min-height: 35px; }
.uni-letter { background: var(--bg); color: var(--text-secondary); border: 1px solid var(--separator); border-radius: 10px; }
.uni-route { margin-bottom: 1rem; font-size: .8125rem; }
.uni-card details { font-size: .875rem; color: var(--text-secondary); margin-bottom: 1.2rem; flex: 1; }
.uni-card details summary { cursor: pointer; min-height: 32px; color: var(--text); }
.uni-card details p { margin: .4rem 0 .5rem; line-height: 1.6; }
.uni-card-bottom .btn, .uni-card-bottom select { font-size: .875rem; }
.uni-editor { max-width: 65rem; padding: 1.5rem; }
.uni-editor h3 { font-size: 1.2rem; }
.uni-search:first-child { flex: 2; }
.uni-search:not(:first-child) { flex: 1; }
.uni-search input, .uni-search select, .uni-field input, .uni-field textarea { border-radius: 8px; min-height: 44px; }
.uni-field select { font: inherit; color: var(--text); background: var(--bg-elevated); border: 1px solid var(--separator-strong); border-radius: 8px; padding: .65rem .75rem; min-height: 44px; width: 100%; }
.uni-task-title textarea { width: 100%; min-height: 65px; resize: vertical; font: inherit; font-size: .9375rem; color: var(--text); background: var(--bg-elevated); border: 1px solid transparent; border-radius: 8px; padding: .5rem .75rem; line-height: 1.5; }
.uni-task-title textarea:hover { border-color: var(--separator-strong); }
.uni-task { align-items: start; }
.uni-task>input, .uni-task>button { margin-top: .5rem; }
.uni-budget-select { max-width: 32rem; margin-bottom: 1.25rem; }
.uni-notice { background: transparent; border: 0; padding: 0; box-shadow: none; }
.uni-notice h3 { font-size: 1rem; }
.uni-budget-total { padding: 1.4rem; }
.uni-task-title input { font-size: .9375rem; }
.uni-task small { font-size: .8125rem; }
.uni-save { gap: .8rem; flex-direction: row; align-items: center; }
.uni-tools { margin-top: .5rem; }
.uni-tools .btn { font-size: .8125rem; }
.university-summary .uni-eyebrow { font-size: .75rem; letter-spacing: .06em; }
.university-summary h2 { font-size: 1.1rem; }
.auth { background: var(--bg); }
.auth__panel { background: var(--bg-elevated); }
.auth__copy h1 { letter-spacing: -.045em; font-size: clamp(2rem, 4vw, 3rem); line-height: 1.15; }
.auth__preview { background: #13233d; }
.auth__orb { display: none; }
.auth__day { transform: none; border-radius: 16px; box-shadow: 0 25px 80px #0002; }
.auth__submit { background: #1d4ed8; border-radius: 9px; }
.fab { display: none; }
.mobile-command { display: none; }
.settings-account { padding: 1rem 0; border-top: 1px solid var(--separator); }
.sheet .btn { min-height: 42px; }
@media(min-width:60.01rem) { .app { grid-template-columns: var(--sidebar-w) minmax(0,1fr); } .sidebar { display: flex; } .topbar__mark { display: none; } }
@media(max-width:75rem) { .page { padding: 1.6rem; } .uni-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media(max-width:60rem) {
  :root { --header-h: 4.5rem; }
  .app { grid-template-columns: 1fr; }
  .sidebar { display: contents; }
  .sidebar>*:not(.tabs) { display: none; }
  .tabs { --text-secondary: #526179; --accent-text: #1d4ed8; --accent-soft: #edf3ff; --separator: #e4e9f1; position: fixed; left: 0; right: 0; bottom: 0; z-index: 50; width: 100%; flex-direction: row; justify-content: space-around; gap: 0; padding: .35rem .4rem calc(.35rem + env(safe-area-inset-bottom,0px)); border-top: 1px solid var(--separator); border-radius: 0; background: var(--bg-elevated); }
  .tabs button { flex: 1; flex-direction: column; justify-content: center; gap: .3rem; padding: .4rem .15rem; min-height: 54px; font-size: .75rem; line-height: 1.25; color: var(--text-secondary); }
  .tabs button[aria-selected=true] { color: var(--accent-text); background: var(--accent-soft); box-shadow: none; }
  .tabs button:hover { background: var(--accent-soft); color: var(--accent-text); }
  .tabs button svg { width: 21px; height: 21px; }
  .topbar { padding: 0 1.25rem; flex-wrap: nowrap; }
  .topbar__mark { display: block; }
  .topbar-heading { margin-left: .2rem; }
  .topbar__title { font-size: 1.15rem; }
  .page { padding-bottom: calc(6.5rem + env(safe-area-inset-bottom,0px)); }
  .fab { display: none; }
  .mobile-command { display: grid; }
  .uni-save { flex-direction: row; }
}
@media(max-width:42rem) {
  .page { padding: 1.2rem 1rem calc(6.5rem + env(safe-area-inset-bottom,0px)); }
  .topbar { padding: 0 .85rem; gap: .4rem; }
  .topbar-date { font-size: .75rem; }
  .topbar .setup-link { padding: .4rem .6rem; min-height: 40px; }
  .topbar .icon-btn { width: 36px; }
  .topbar[data-tab=timetable] { --header-h: 7rem; flex-wrap: wrap; align-content: center; }
  .topbar[data-tab=timetable] #weekNav { order: 5; flex-basis: 100%; justify-content: center; }
  .main:has(.topbar[data-tab=timetable]) { --header-h: 7rem; }
  .dashboard-grid { grid-template-columns: minmax(0,1fr); gap: 1.3rem; }
  .dashboard-brief, .dashboard-priority, .dashboard-lessons, .dashboard-revision { grid-column: 1; grid-row: auto; }
  .dashboard-priority { order: 1; } .dashboard-lessons { order: 2; } .dashboard-revision { order: 3; }
  .brief__head { font-size: 1.65rem; }
  .brief__row { gap: .5rem; }
  .stat { padding: .75rem .6rem; min-width: 0; }
  .stat__n { font-size: 1.4rem; }
  .stat__l { font-size: .75rem; line-height: 1.4; }
  .dashboard-priority .card, .dashboard-revision .card { padding: .15rem .85rem; }
  .focus-card { flex-direction: column; align-items: stretch; }
  .focus-card>div { min-width: 0; }
  .uni-heading { gap: 1rem; }
  .uni-save { justify-content: space-between; width: 100%; }
  .uni-heading p { font-size: .875rem; }
  .uni-stats>div { padding: .8rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
  .uni-stats span { font-size: .8125rem; }
  .uni-stats strong { font-size: 1.35rem; margin: 0; white-space: nowrap; }
  .uni-nav { gap: .25rem 1rem; flex-wrap: wrap; overflow: visible; }
  .uni-nav .btn { font-size: .875rem; }
  .uni-grid, .uni-grid--two { grid-template-columns: 1fr; }
  .uni-tools p { margin: 0; }
  .uni-editor { padding: 1.15rem; }
  .auth__content { max-width: 30rem; }
}
@media(max-width:60rem) { :root[data-theme=dark] .tabs { --text-secondary:#b2bfd2; --accent-text:#9bc0ff; --accent-soft:#203450; --separator:#2a374b; } }
@media(max-width:60rem) and (prefers-color-scheme:dark) { :root:not([data-theme=light]) .tabs { --text-secondary:#b2bfd2; --accent-text:#9bc0ff; --accent-soft:#203450; --separator:#2a374b; } }
@media(prefers-reduced-motion:reduce) { *, *::before, *::after { scroll-behavior: auto !important; } }
@media print { .tabs { display: none !important; } }

/* University research, housing and budgets. */
.uni-logo { width: 144px; height: 52px; padding: 8px; background: #fff; border: 1px solid #e6e9ed; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.uni-logo img { width: 100%; height: 100%; object-fit: contain; }
.uni-logo--lancaster { background: #b5121b; border-color: #b5121b; }
.uni-logo-fallback { font-size: .75rem; color: #13233d; text-align: center; }
.uni-identity { display: flex; gap: 1rem; align-items: center; margin-bottom: 1rem; flex-wrap: wrap; }
.uni-identity h3 { margin: 0; }
.uni-card-top { flex-wrap: wrap; }
.uni-card-meta { display: flex; justify-content: space-between; gap: .5rem; color: var(--text-secondary); font-size: .8rem; margin: .5rem 0 1rem; }
.uni-text-button { border: 0; background: none; padding: 0; color: var(--accent-text); font: inherit; cursor: pointer; }
.uni-research-tools { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1rem; margin-bottom: 1.8rem; }
.uni-resource { display: block; color: var(--text); text-decoration: none; padding: 1.2rem; }
.uni-resource-icon { background: var(--accent-soft); color: var(--accent-text); width: 36px; height: 36px; display: grid; place-items: center; border-radius: 10px; font-size: 1.3rem; }
.uni-resource h3 { font-size: 1rem; margin: .8rem 0 .5rem; }
.uni-resource h3 span { float: right; color: var(--text-tertiary); }
.uni-resource p { font-size: .85rem; line-height: 1.6; color: var(--text-secondary); margin: 0; }
.uni-context { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.uni-context .uni-field { min-width: min(100%,330px); margin: 0; }
.uni-context > span { font-size: .875rem; color: var(--text-secondary); }
.uni-field select { width: 100%; min-width: 0; padding: .7rem; border: 1px solid var(--separator-strong); border-radius: var(--radius-sm); background: var(--bg-elevated); color: var(--text); font: inherit; }
.uni-checklist { margin: 1rem 0; }
.uni-checklist label { display: flex; align-items: center; gap: .8rem; padding: .9rem 0; border-bottom: 1px solid var(--separator); font-size: .9rem; cursor: pointer; }
.uni-checklist input { width: 19px; height: 19px; flex-shrink: 0; accent-color: var(--accent); }
.uni-checklist input:checked + span { color: var(--text-secondary); }
.uni-progress-label { font-size: .8rem; color: var(--text-secondary); margin-top: 1.2rem; }
.uni-progress { display: block; width: 100%; height: 7px; border: 0; appearance: none; border-radius: 10px; margin: .6rem 0 1.4rem; overflow: hidden; background: var(--separator); }
.uni-progress::-webkit-progress-bar { background: var(--separator); }
.uni-progress::-webkit-progress-value { background: var(--accent); border-radius: 10px; transition: width .25s ease; }
.uni-progress::-moz-progress-bar { background: var(--accent); }
.uni-calculator { grid-template-columns: minmax(0,1.15fr) minmax(0,.85fr); align-items: start; }
.uni-cost-summary { padding: 1.6rem; position: sticky; top: 105px; }
.uni-cost-summary > h3 { font-size: clamp(2.2rem,4vw,3.1rem); letter-spacing: -.055em; line-height: 1.1; margin: .75rem 0 .25rem; }
.uni-cost-bar { display: flex; gap: 3px; height: 12px; border-radius: 5px; overflow: hidden; margin: 1.4rem 0; background: var(--separator); }
.uni-cost-bar span { background: #2364dd; transition: width .25s ease; }
.uni-cost-bar .uni-cost-part-1 { background: #13a195; }.uni-cost-bar .uni-cost-part-2 { background: #84a8e8; }.uni-cost-bar .uni-cost-part-3 { background: #9a85cb; }.uni-cost-bar .uni-cost-part-4 { background: #e8ad55; }
.uni-cost-lines { margin: 0 0 1rem; }
.uni-cost-lines > div { display: flex; justify-content: space-between; gap: 1rem; padding: .65rem 0; font-size: .9rem; }
.uni-cost-lines dt { color: var(--text-secondary); }.uni-cost-lines dd { margin: 0; font-variant-numeric: tabular-nums; }
.uni-cost-lines .uni-cost-emphasis { border-top: 1px solid var(--separator); margin-top: .5rem; padding-top: 1rem; font-weight: 650; }
.uni-cost-emphasis dt { color: var(--text); }
.uni-cost-kpis { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; background: var(--accent-soft); padding: 1rem; border-radius: 10px; }
.uni-cost-kpis span { font-size: .8rem; color: var(--text-secondary); display: block; }.uni-cost-kpis strong { font-size: 1.35rem; display: block; margin-top: .4rem; }
.uni-affordability { margin: 1rem 0; padding: 1rem; border-radius: 10px; background: var(--accent-soft); }
.uni-affordability strong { font-size: .95rem; }.uni-affordability p { font-size: .8rem; line-height: 1.6; color: var(--text-secondary); margin: .5rem 0 0; }
.uni-affordability--gap { border: 1px solid var(--separator-strong); background: var(--bg); }
.uni-budget-comparison { padding: 1.5rem; margin-top: 1.5rem; }
.uni-budget-row { display: grid; grid-template-columns: minmax(140px,1fr) minmax(80px,1.2fr) 80px; align-items: center; gap: 1rem; width: 100%; border: 0; border-top: 1px solid var(--separator); background: none; color: var(--text); padding: 1rem 0; text-align: left; font: inherit; font-size: .875rem; cursor: pointer; }
.uni-budget-row strong { text-align: right; font-variant-numeric: tabular-nums; }
.uni-budget-row-bar { background: var(--separator); height: 7px; border-radius: 5px; overflow: hidden; }.uni-budget-row-bar i { display: block; height: 100%; background: var(--accent); border-radius: inherit; }
.uni-text-button:focus-visible,.uni-budget-row:focus-visible,.uni-resource:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; border-radius: 5px; }
@media (prefers-reduced-motion: no-preference) {
 .uni-content { animation: uni-enter .24s ease-out; }
 .uni-grid > .uni-card { animation: uni-enter .3s ease-out both; }
 .uni-grid > .uni-card:nth-child(2) { animation-delay: .025s; }.uni-grid > .uni-card:nth-child(3) { animation-delay: .05s; }
 .uni-resource,.uni-card,.uni-budget-row { transition: transform .18s ease,border-color .18s ease,box-shadow .18s ease; }
 @media (hover: hover) { .uni-card:hover,.uni-resource:hover { transform: translateY(-2px); border-color: var(--accent); box-shadow: 0 8px 24px #13233d09; } }
 @keyframes uni-enter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
}
@media (prefers-reduced-motion: reduce) { .uni-progress::-webkit-progress-value,.uni-cost-bar span { transition: none; } }
@media (max-width: 1200px) { .uni-research-tools { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 750px) {
 .uni-context { align-items: start; flex-direction: column; }.uni-context .uni-field { width: 100%; }
 .uni-calculator { grid-template-columns: 1fr; }.uni-cost-summary { position: static; }
 .uni-budget-row { grid-template-columns: minmax(0,1fr) 75px; }.uni-budget-row-bar { grid-column: 1; grid-row: 2; }.uni-budget-row strong { grid-column: 2; grid-row: 1 / 3; }
 .uni-budget-comparison { padding: 1rem; }.uni-research-tools { gap: .7rem; }.uni-resource { padding: 1rem; }
 .uni-logo { width: 130px; height: 48px; }
}
.uni-logo--lancaster { background: #fff; border-color: #e6e9ed; }
.uni-logo--surrey { background: #003b71; border-color: #003b71; }
.uni-logo--exeter { background: #003c3c; border-color: #003c3c; }

/* A personal university plan, built from the owner's saved choices. */
.uni-plan-intro { padding: 1.8rem; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 2rem; background: linear-gradient(120deg,var(--bg-elevated),var(--accent-soft)); }
.uni-plan-intro h3 { font-size: clamp(1.4rem,2.6vw,2rem); letter-spacing: -.035em; margin: .6rem 0; line-height: 1.2; }
.uni-plan-intro p { color: var(--text-secondary); line-height: 1.65; max-width: 48rem; margin: .7rem 0; }
.uni-plan-count { border-left: 1px solid var(--separator-strong); padding-left: 2rem; align-self: center; }
.uni-plan-count strong { font-size: 3rem; letter-spacing: -.05em; white-space: nowrap; }
.uni-plan-count strong span { font-size: 1.2rem; color: var(--text-secondary); font-weight: 400; }
.uni-plan-count p { font-size: .85rem; margin: .25rem 0 .6rem; }.uni-plan-count small { color: var(--text-secondary); }
.uni-plan-section { margin: 2rem 0 1rem; }.uni-plan-section h3 { margin: 0; }.uni-plan-section p { margin: .5rem 0 0; }
.uni-plan-stage { font-size: .7rem; color: var(--text-secondary); padding: .3rem .5rem; border-radius: 6px; background: var(--bg); }
.uni-plan-fit { color: var(--text-secondary); font-size: .85rem; line-height: 1.65; flex: 1; }
.uni-plan-choices .uni-card { display: flex; flex-direction: column; min-width: 0; }
.uni-plan-choices .uni-card-top { gap: .6rem; }.uni-plan-choices .uni-card h3 { margin-top: 1.2rem; }
.uni-plan-choices .uni-card > .btn { margin-top: 1rem; width: 100%; }
.uni-plan-checks { display: flex; flex-wrap: wrap; gap: .5rem 1rem; font-size: .75rem; color: var(--text-secondary); }
.uni-plan-links { display: flex; justify-content: space-between; gap: .8rem; margin: 1.1rem 0 .2rem; font-size: .85rem; }
.uni-plan-lower { margin-top: 1.5rem; align-items: start; }
.uni-next-action { display: flex; gap: .8rem; align-items: start; padding: 1rem 0; border-top: 1px solid var(--separator); }
.uni-action-number { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; flex-shrink: 0; background: var(--accent-soft); color: var(--accent-text); font-size: .75rem; }
.uni-next-action > div { flex: 1; min-width: 0; }.uni-next-action strong { display: block; font-size: .9rem; font-weight: 550; line-height: 1.5; }.uni-next-action small { display: block; margin-top: .35rem; color: var(--text-secondary); font-size: .75rem; }
.uni-next-action input { width: 19px; height: 19px; accent-color: var(--accent); flex-shrink: 0; margin-top: .2rem; }
.uni-plan-qualification { line-height: 1.65; }.uni-plan-evidence { border-top: 1px solid var(--separator); padding-top: 1.2rem; margin-top: 1.2rem; }.uni-plan-evidence p { color: var(--text-secondary); font-size: .9rem; line-height: 1.65; }
.uni-plan-other { margin-top: 1.5rem; }.uni-admissions { border-left: 3px solid var(--accent); padding: 1rem 1.2rem; background: var(--bg); border-radius: 0 8px 8px 0; margin: 1rem 0; }.uni-admissions p { font-size: .875rem; line-height: 1.65; color: var(--text-secondary); }.uni-admissions small { color: var(--text-secondary); display: block; margin-bottom: .8rem; }
.uni-pin { display: flex; align-items: center; gap: .7rem; padding: .8rem 0 1.4rem; font-size: .9rem; }.uni-pin input { width: 19px; height: 19px; accent-color: var(--accent); }
.uni-research-focus { padding: 1.2rem 1.5rem; margin-bottom: 1.2rem; }.uni-research-focus p { font-size: .9rem; line-height: 1.65; color: var(--text-secondary); }.uni-research-focus small { color: var(--text-secondary); }
@media(max-width:750px) {
 .uni-plan-intro { grid-template-columns: 1fr; padding: 1.2rem; gap: 1rem; }.uni-plan-count { border-left: 0; border-top: 1px solid var(--separator-strong); padding: .8rem 0 0; }.uni-plan-count strong { font-size: 2rem; }.uni-plan-count p { display: inline; margin-left: .7rem; }.uni-plan-count small { display: block; margin-top: .4rem; }
 .uni-plan-section { align-items: start; flex-direction: column; gap: .8rem; }.uni-plan-other .uni-section-head { align-items: start; flex-direction: column; gap: 1rem; }.uni-admissions { padding: .8rem; }.uni-plan-links { font-size: .85rem; }
}

/* Experiences become usable application evidence, rather than a long biography. */
.uni-evidence-bank > .uni-section-head { align-items: center; gap: 1rem; }.uni-evidence-bank h3 { margin: .5rem 0; }
.uni-evidence-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.25rem 0; }
.uni-evidence-card { padding: 1.5rem; min-width: 0; }.uni-evidence-card h3 { font-size: 1.2rem; letter-spacing: -.02em; margin: 1rem 0 .6rem; }
.uni-evidence-card > p,.uni-evidence-outcome p,.uni-evidence-next p { font-size: .9rem; line-height: 1.7; color: var(--text-secondary); }
.uni-evidence-next { background: var(--accent-soft); padding: .9rem 1rem; border-radius: 9px; margin: 1.15rem 0; }.uni-evidence-next p { margin: .5rem 0 0; }
.uni-evidence-outcome { border-left: 3px solid var(--accent); padding-left: .9rem; margin: 1rem 0; }.uni-evidence-outcome strong { font-size: .85rem; }
.uni-evidence-edit { border-top: 1px solid var(--separator); margin-top: 1rem; padding-top: 1rem; }.uni-evidence-edit summary { cursor: pointer; color: var(--accent-text); font-size: .9rem; padding-bottom: .5rem; }.uni-evidence-edit[open] summary { margin-bottom: .8rem; }
.uni-evidence-preview { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }.uni-evidence-preview li { font-size: .75rem; color: var(--accent-text); background: var(--accent-soft); border-radius: 5px; padding: .35rem .5rem; }
.uni-profile-details { margin-top: 2rem; align-items: start; }
@media(max-width:750px) { .uni-evidence-card { padding: 1.15rem; }.uni-evidence-bank > .uni-section-head { flex-direction: column; align-items: start; } }

/* Timetable: a readable week on large screens, a full day in your pocket. */
.tt-toolbar { display:flex; justify-content:space-between; align-items:center; gap:1.25rem; flex-wrap:wrap; }
.tt-week-title h2 { font-size:1.35rem; letter-spacing:-.035em; margin:.35rem 0 .65rem; font-weight:600; }
.tt-eyebrow { color:var(--text-secondary); font-size:.65rem; letter-spacing:.12em; font-weight:650; }
.tt-view-switch { display:flex; border:1px solid var(--separator-strong); border-radius:9px; padding:3px; background:var(--bg); }
.tt-view-switch button { min-height:36px; padding:.4rem 1rem; border:0; border-radius:6px; color:var(--text-secondary); background:transparent; font:inherit; font-size:.8rem; cursor:pointer; }
.tt-view-switch button[aria-pressed=true] { background:var(--bg-elevated); color:var(--accent-text); box-shadow:0 1px 4px #00000012; font-weight:650; }
#tt { display:block; border:1px solid var(--separator-strong); border-radius:14px; background:var(--bg-elevated); overflow-x:auto; }
#tt .week-layout { display:grid; grid-template-columns:4rem repeat(5,minmax(10.25rem,1fr)); min-width:58rem; padding-bottom:1rem; }
#tt .week-heading { height:100px; width:100%; background:transparent; border:0; border-bottom:1px solid var(--separator-strong); padding:12px 10px; text-align:left; display:flex; flex-direction:column; align-items:flex-start; gap:5px; color:var(--text); }
#tt button.week-heading { cursor:pointer; }
#tt .week-heading > span { display:flex; align-items:center; gap:.5rem; width:100%; font-size:.73rem; color:var(--text-secondary); font-weight:550; }
#tt .week-heading i { margin-left:auto; font-style:normal; font-size:.6rem; background:var(--accent-soft); color:var(--accent-text); border-radius:4px; padding:2px 5px; }
#tt .week-heading > strong { font-size:1.6rem; font-weight:550; line-height:1.1; letter-spacing:-.04em; }
#tt .week-heading small { font-size:.65rem; color:var(--text-secondary); margin:0; font-weight:400; }
#tt .week-day--today { background:var(--accent-soft); }
#tt .week-day--today .week-heading > strong { color:var(--accent-text); }
#tt .week-axis .week-heading { justify-content:center; font-size:.65rem; color:var(--text-secondary); text-align:right; padding-right:.5rem; }
#tt .week-axis-track { position:relative; }
#tt .week-axis-track > span { position:absolute; right:.55rem; transform:translateY(-50%); color:var(--text-secondary); font-size:.65rem; font-variant-numeric:tabular-nums; }
#tt .week-track { position:relative; border-left:1px solid var(--separator); background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--half-hour) - 1px),var(--separator) calc(var(--half-hour) - 1px),var(--separator) var(--half-hour)); }
#tt .week-period { left:6px; right:6px; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; gap:5px; padding:8px 9px; border:1px solid var(--separator); border-radius:8px; text-align:left; background:var(--bg-elevated); overflow:hidden; transition:box-shadow .15s ease, border-color .15s ease; }
#tt button.week-period { cursor:pointer; }
#tt button.week-period:hover { box-shadow:0 2px 8px #00000010; border-color:var(--text-secondary); }
#tt .week-period small { font-size:.64rem; color:var(--text-secondary); font-variant-numeric:tabular-nums; }
#tt .week-period strong { font-size:.85rem; font-weight:600; color:var(--text); line-height:1.25; overflow-wrap:anywhere; }
#tt .week-period > span { font-size:.66rem; color:var(--text-secondary); line-height:1.3; }
#tt .week-period--lesson { background:color-mix(in srgb,hsl(var(--hue) 65% 55%) 9%,var(--bg-elevated)); border-left:3px solid hsl(var(--hue) 55% 49%); }
#tt .week-period--free { border-style:dashed; background:color-mix(in srgb,var(--bg-elevated) 65%,transparent); }
#tt .week-period--free strong { font-weight:450; color:var(--text-secondary); }
#tt .week-period--break { border:0; border-radius:0; background:var(--bg); gap:2px; padding:2px 9px; }
#tt .week-period--break strong { font-size:.65rem; font-weight:500; color:var(--text-secondary); }
#tt .week-period--break small { font-size:.58rem; }
#tt .week-period--cancelled { opacity:.65; border-style:dashed; }
#tt .week-period--cancelled strong { text-decoration:line-through; }
#tt .week-off { margin:2rem .8rem; padding:0; text-align:center; color:var(--text-secondary); font-size:.8rem; }
#tt .week-off strong,#tt .week-off span { display:block; line-height:1.6; }.week-off span { margin-top:.5rem; font-size:.7rem; }
#tt[data-view=day] { overflow:visible; }
.tt-day-picker { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); border-bottom:1px solid var(--separator); padding:.6rem; gap:.3rem; }
.tt-day-picker button { display:flex; flex-direction:column; align-items:center; gap:.4rem; padding:.6rem .25rem; min-height:87px; border:1px solid transparent; border-radius:9px; color:var(--text-secondary); background:transparent; font:inherit; cursor:pointer; }
.tt-day-picker button[aria-pressed=true] { background:var(--accent-soft); color:var(--accent-text); border-color:var(--accent); }
.tt-day-picker span { font-size:.75rem; }.tt-day-picker strong { font-size:1.3rem; line-height:1.1; font-weight:600; }.tt-day-picker small { font-size:.6rem; }
.tt-agenda { max-width:56rem; margin:auto; padding:1.5rem 2rem; }
.tt-agenda-heading { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1.4rem; }.tt-agenda-heading h2 { font-size:1.3rem; letter-spacing:-.025em; margin:.35rem 0; }.tt-agenda-heading p { font-size:.8rem; color:var(--text-secondary); margin:.4rem 0; }
.tt-agenda-list { display:flex; flex-direction:column; gap:.55rem; }
.tt-agenda-row { display:grid; grid-template-columns:4rem minmax(0,1fr) 1rem; align-items:center; gap:1rem; padding:1rem; border:1px solid var(--separator); border-radius:10px; text-align:left; font:inherit; color:var(--text); background:var(--bg-elevated); width:100%; }
button.tt-agenda-row { cursor:pointer; }.tt-agenda-row--lesson { border-left:3px solid hsl(var(--hue) 55% 49%); background:color-mix(in srgb,hsl(var(--hue) 65% 55%) 7%,var(--bg-elevated)); }
.tt-agenda-time { font-variant-numeric:tabular-nums; display:flex; flex-direction:column; gap:.35rem; }.tt-agenda-time strong { font-size:.9rem; font-weight:550; }.tt-agenda-time small { font-size:.75rem; color:var(--text-secondary); }
.tt-agenda-content { display:flex; flex-direction:column; gap:.35rem; min-width:0; overflow-wrap:anywhere; }.tt-agenda-content strong { font-size:1rem; font-weight:600; line-height:1.35; }.tt-agenda-content small,.tt-agenda-content > span { font-size:.75rem; color:var(--text-secondary); line-height:1.4; }.tt-agenda-arrow { color:var(--text-secondary); }
.tt-agenda-row--break { padding:.6rem 1rem; border:0; background:var(--bg); }.tt-agenda-row--break > div { display:flex; flex-direction:column; gap:.3rem; }.tt-agenda-row--break > div strong { font-size:.8rem; font-weight:500; }.tt-agenda-row--break > div small { font-size:.7rem; color:var(--text-secondary); }
.tt-agenda-row--free { border-style:dashed; }.tt-agenda-row--free .tt-agenda-content strong { font-weight:450; }.tt-agenda-row--cancelled .tt-agenda-content strong { text-decoration:line-through; }.tt-agenda-off { padding:2rem 0; color:var(--text-secondary); font-size:.9rem; }
@media(max-width:750px) {
 .tt-toolbar { gap:.8rem; }.tt-toolbar > .toolbar { width:100%; flex-wrap:wrap; }.tt-week-title h2 { font-size:1.15rem; }.tt-toolbar .btn { font-size:.75rem; min-height:42px; }.tt-view-switch button { min-height:36px; padding:.4rem .85rem; }
 .tt-agenda { padding:1.2rem .8rem; }.tt-agenda-heading { align-items:flex-start; gap:.5rem; }.tt-agenda-heading h2 { font-size:1.1rem; }.tt-agenda-heading .btn { font-size:.7rem; padding:.5rem .65rem; min-height:42px; white-space:nowrap; }
 .tt-agenda-row { grid-template-columns:3.2rem minmax(0,1fr) .7rem; gap:.7rem; padding:.85rem .7rem; }.tt-agenda-content strong { font-size:.95rem; }.tt-day-picker { padding:.5rem .4rem; gap:.2rem; }
}
@media(prefers-reduced-motion:reduce) { #tt .week-period { transition:none; } }
