/* ==========================================================================
   Be University Wise: Design.md look (v130, 7 November 2026; first applied v129)
   Jason's design system, applied to every Be University Wise page: the app,
   its contact page and all the guide pages under /university-wise/.
   APPEARANCE ONLY: no wording, links, data or behaviour are changed.

   Loaded LAST on those pages (after bw-polish.css), so it overrides the shared
   family sheets (bw-nav.css, bw-family*.css, bw-polish.css, contact.css) for
   this app only. Other apps are not affected.

   Rules followed (Design.md):
   - dark theme: canvas #090D16, panels #111827, hover/active #1F2937
   - one accent, always amber #F59E0B (main actions, focus, selected items,
     labels, highlights, ad boxes); dark #090D16 text on amber fills
   - status colours only: green #10B981 (safe / yes), amber (aspirational /
     needs a look), red #F87171 (error / no)
   - text #F9FAFB / #9CA3AF / #6B7280; hairline borders rgba(255,255,255,.08), 1px max
   - Newsreader headings (the same heading font as the other Be Wise apps),
     Space Grotesk (body and UI), JetBrains Mono (figures)
   - 8px grid; inputs 38px; buttons 8px 16px (inline 6px 12px)
   - radii: containers 8px, buttons/inputs 6px, badges 4px or full
   - no gradients, no drop-shadow elevation, no glows, no decorative backdrops
   ========================================================================== */

:root{
  color-scheme:dark;

  /* ---- Design.md tokens ---- */
  --uw-canvas:#090D16;
  --uw-panel:#111827;
  --uw-hover:#1F2937;
  --uw-accent:#F59E0B;     /* amber, the one accent */
  --uw-green:#10B981;      /* status only: safe / yes */
  --uw-red:#F87171;        /* status only: error / no */
  --uw-line:rgba(255,255,255,0.08);
  --uw-line-input:rgba(255,255,255,0.16);   /* edge of inputs and choice buttons, so form controls stay visible */
  --uw-text:#F9FAFB;
  --uw-text-2:#9CA3AF;
  --uw-text-3:#6B7280;
  --uw-on-accent:#090D16;
  --uw-accent-tint:rgba(245,158,11,0.13);
  --uw-green-tint:rgba(16,185,129,0.13);
  --uw-red-tint:rgba(248,113,113,0.12);
  --uw-accent-hover:color-mix(in srgb, var(--uw-accent) 86%, var(--uw-text));
  --uw-accent-active:color-mix(in srgb, var(--uw-accent) 82%, var(--uw-canvas));

  --uw-display:"Newsreader", Georgia, "Times New Roman", serif;
  --uw-body:"Space Grotesk", "Instrument Sans", ui-sans-serif, sans-serif;
  --uw-mono:"JetBrains Mono", "Fira Code", ui-monospace, monospace;

  /* ---- the app's older tokens, re-pointed so every existing rule follows ---- */
  --ink:var(--uw-text); --ink-soft:var(--uw-text-2); --paper:var(--uw-canvas); --raised:var(--uw-panel);
  --brass:var(--uw-accent); --brass-dark:var(--uw-accent); --brass-bg:var(--uw-accent-tint);
  --slate:var(--uw-text-2); --rule:var(--uw-line); --rule-strong:var(--uw-line-input);
  --sage:var(--uw-green); --sage-bg:var(--uw-green-tint); --focus:var(--uw-accent);
  --serif:var(--uw-display); --sans:var(--uw-body); --radius:6px;

  --bw-ink:var(--uw-panel); --bw-harbour:var(--uw-hover); --bw-coral:var(--uw-accent); --bw-coral-strong:var(--uw-accent);
  --bw-mist:var(--uw-canvas); --bw-rule:var(--uw-line); --bw-rule-strong:var(--uw-line-input); --bw-steel:var(--uw-text-2);
  --bw-accent:var(--uw-accent); --bw-tint:var(--uw-panel); --bw-good:var(--uw-green); --bw-good-bg:var(--uw-green-tint);

  /* contact page tokens */
  --brand:var(--uw-panel); --brand-2:var(--uw-panel); --white:var(--uw-panel); --line:var(--uw-line-input);
  --gold:var(--uw-accent); --gold-dark:var(--uw-accent); --error:var(--uw-red); --ok:var(--uw-green);
  --font-display:var(--uw-display); --font:var(--uw-body);
}

/* ==========================================================================
   Base
   ========================================================================== */
html body{ background:var(--uw-canvas); color:var(--uw-text); font-family:var(--uw-body); font-weight:400; line-height:1.6; }
html body ::selection{ background:var(--uw-accent-tint); color:var(--uw-text); }
html body h1, html body h2, html body h3, html body h4{
  font-family:var(--uw-display); color:var(--uw-text); letter-spacing:-0.01em; line-height:1.15;
}
html body h1{ font-weight:500; letter-spacing:-0.02em; }
html body h2{ font-weight:500; }
html body h3, html body h4{ font-weight:600; line-height:1.25; }
html body strong, html body b{ font-weight:600; color:var(--uw-text); }
html body a{ color:var(--uw-text); text-decoration-color:var(--uw-accent); text-decoration-thickness:1px; text-underline-offset:3px; }
html body a:hover{ color:var(--uw-accent); text-decoration-color:var(--uw-accent); }
html body :focus-visible{ outline:2px solid var(--uw-accent) !important; outline-offset:2px; }
html body main li::marker{ color:var(--uw-text-3); }
html body hr{ border:0; border-top:1px solid var(--uw-line); }
html body .muted, html body .hint, html body .tiny, html body .nd, html body .checked,
html body .src, html body .crumbs, html body .regcap, html body .cmpkey{ color:var(--uw-text-2); }
html body .src a, html body .crumbs a, html body .tiny a{ color:var(--uw-text-2); text-decoration-color:var(--uw-line-input); }
html body .src a:hover, html body .crumbs a:hover, html body .tiny a:hover{ color:var(--uw-accent); }
html body .lede{ color:var(--uw-text-2); }
html body img{ color:var(--uw-text-2); }

/* figures: monospaced, tabular */
html body .num, html body table.data td.n, html body .register td.fig, html body td.n, html body td.fig, html body .register .score, html body .register .pos,
html body table.data .pos, html body .stat .v, html body .bv, html body .bk .v, html body .scen .big,
html body .ct .ct-pts, html body .ct .ct-dates .ct-n, html body .tl .d,
html body .wrow output, html body .wrow > span:last-child{
  font-family:var(--uw-mono); font-variant-numeric:tabular-nums lining-nums; letter-spacing:0;
}

/* no decorative layers (Design.md: no artificial backdrops, glows or lifts) */
html body .bwp-compass{ display:none !important; }
html body .bwp-card, html body .bwp-card:hover{ background-image:none !important; box-shadow:none !important; transform:none !important; }

/* ==========================================================================
   Top strip, disclaimer bar, "Be Wise Apps" button, 3-bar menu
   ========================================================================== */
html body .dis-bar{ background:var(--uw-canvas); color:var(--uw-text-2); border-bottom:1px solid var(--uw-line); border-top:0; font-family:var(--uw-body); }
html body .dis-bar a{ color:var(--uw-text); text-decoration-color:var(--uw-accent); }
html body .dis-bar button{ background:transparent; border:1px solid var(--uw-line-input); color:var(--uw-text); border-radius:6px; padding:4px 12px; font-family:var(--uw-body); font-weight:500; }
html body .dis-bar button:hover{ background:var(--uw-hover); }
html body .bw-strip{ background:var(--uw-canvas) !important; border-bottom:1px solid var(--uw-line); box-shadow:none !important; font-family:var(--uw-body); }

/* "Be Wise Apps" button: still a clear, filled button (house rule), in the amber accent */
html body a.bw-appsbtn.bw-appsbtn.bw-appsbtn{
  background:var(--uw-accent) !important; color:var(--uw-on-accent) !important;
  border:1px solid var(--uw-accent) !important; border-radius:6px !important;
  box-shadow:none !important; font-family:var(--uw-body) !important; font-weight:600 !important;
  padding:6px 16px 6px 6px !important; min-height:38px;
}
html body a.bw-appsbtn.bw-appsbtn.bw-appsbtn img{ box-shadow:none !important; }
html body a.bw-appsbtn.bw-appsbtn.bw-appsbtn:hover{ background:var(--uw-accent-hover) !important; border-color:var(--uw-accent-hover) !important; box-shadow:none !important; transform:none !important; }
html body a.bw-appsbtn.bw-appsbtn.bw-appsbtn:active{ background:var(--uw-accent-active) !important; transform:none !important; }
html body a.bw-appsbtn.bw-appsbtn.bw-appsbtn:focus-visible{ outline:2px solid var(--uw-text) !important; outline-offset:2px; background:var(--uw-accent) !important; }
html body a.bw-appsbtn.bw-appsbtn.bw-on-light:not(.hero *){ border-color:var(--uw-accent) !important; }

/* "Install app" button and its help panel */
html body .bw-installbtn, html body button.bw-installbtn.bw-appsbtn{
  background:transparent !important; color:var(--uw-text) !important; border:1px solid var(--uw-line-input) !important;
  border-radius:6px !important; box-shadow:none !important; font-family:var(--uw-body) !important; font-weight:500 !important; min-height:38px;
}
html body .bw-installbtn:hover{ background:var(--uw-hover) !important; }
html body .bw-install-panel{ background:var(--uw-panel) !important; color:var(--uw-text) !important; border:1px solid var(--uw-line) !important; border-radius:8px !important; box-shadow:none !important; font-family:var(--uw-body) !important; }
html body .bw-install-panel h2{ color:var(--uw-text) !important; font-family:var(--uw-display) !important; }
html body .bw-install-panel .bw-ip-close{ background:var(--uw-accent) !important; color:var(--uw-on-accent) !important; border-radius:6px !important; }

html body .bw-burger, html body header.site .bw-burger, html body .masthead .bw-burger.bw-on-light, html body header.site .bw-burger.bw-on-light{
  color:var(--uw-text); border:1px solid var(--uw-line-input); border-radius:6px; background:transparent; width:40px; height:40px;
}
html body .bw-burger:hover, html body .bw-burger[aria-expanded="true"],
html body header.site .bw-burger.bw-on-light:hover, html body header.site .bw-burger.bw-on-light[aria-expanded="true"],
html body .masthead .bw-burger.bw-on-light:hover, html body .masthead .bw-burger.bw-on-light[aria-expanded="true"]{
  background:var(--uw-hover); border-color:var(--uw-line-input);
}
html body .bw-menu{
  background:var(--uw-panel); color:var(--uw-text); border:1px solid var(--uw-line-input); border-radius:8px;
  box-shadow:none; font-family:var(--uw-body); padding:8px;
}
html body .bw-menu a, html body .bw-menu button{ color:var(--uw-text) !important; border-radius:6px; padding:10px 16px; }
html body .bw-menu a:hover, html body .bw-menu button:hover, html body .bw-menu a:focus-visible, html body .bw-menu button:focus-visible{ background:var(--uw-hover); }
html body .bw-menu .bw-sep{ background:var(--uw-line); }
html body .bw-menu .bw-contact{ box-shadow:inset 2px 0 0 var(--uw-accent); font-weight:600; }

/* ==========================================================================
   Headers
   ========================================================================== */
/* guide pages */
html body header.site{ background:var(--uw-panel); border-bottom:1px solid var(--uw-line); }
html body .brand, html body .brand span{ color:var(--uw-text); font-family:var(--uw-display); font-weight:600; letter-spacing:-0.02em; }
html body .brand:hover, html body .brand:hover span{ color:var(--uw-text); }
html body .snav{ font-family:var(--uw-body); font-weight:500; }
html body .snav a{ color:var(--uw-text-2); border-radius:6px; padding:6px 12px; }
html body .snav a:hover{ color:var(--uw-text); background:var(--uw-hover); text-decoration:none; }

/* the app */
html body .masthead{ background:var(--uw-panel); border-bottom:1px solid var(--uw-line); }
html body .wordmark, html body .wordmark .name{ color:var(--uw-text); font-family:var(--uw-display); font-weight:600; letter-spacing:-0.02em; }
html body .wordmark .juris{ color:var(--uw-text-2); border:1px solid var(--uw-line-input); border-radius:4px; font-family:var(--uw-mono); font-weight:400; }
html body nav.primary button, html body nav.primary a.navlink{ color:var(--uw-text-2); font-family:var(--uw-body); font-weight:500; border-radius:6px; }
html body nav.primary button:hover, html body nav.primary a.navlink:hover{ background:var(--uw-hover); color:var(--uw-text); }
html body nav.primary button.on{ color:var(--uw-text); background:transparent; box-shadow:inset 0 -2px 0 var(--uw-accent); }
@media(max-width:900px){
  html body nav.primary{ background:var(--uw-panel); border-bottom:1px solid var(--uw-line); }
  html body nav.primary button.on{ box-shadow:inset 2px 0 0 var(--uw-accent); }
}

/* ==========================================================================
   Advertising boxes: must stand out (house rule), done with an amber
   highlight and a 1px edge rather than a shadow
   ========================================================================== */
html body :is(.bw-spot, .bw-spot-banner, .chat-spot, .dealer-spot, .adslot, .avail-slot:has(> .cbtn), .advertise-cta){
  background:var(--uw-accent-tint) !important; border:1px solid var(--uw-accent) !important; border-left-width:1px !important;
  border-radius:8px !important; box-shadow:none !important; color:var(--uw-text) !important; font-family:var(--uw-body);
}
html body :is(.bw-spot, .bw-spot-banner, .chat-spot, .dealer-spot, .adslot, .avail-slot:has(> .cbtn), .advertise-cta) a{ color:var(--uw-text) !important; text-decoration-color:var(--uw-accent) !important; }
html body :is(.bw-spot, .bw-spot-banner, .chat-spot, .dealer-spot, .adslot, .avail-slot:has(> .cbtn), .advertise-cta) a:hover{ color:var(--uw-accent) !important; }
html body :is(.bw-spot, .bw-spot-banner) > strong:first-child{
  background:var(--uw-accent) !important; color:var(--uw-on-accent) !important; border-radius:4px !important;
  font-family:var(--uw-body) !important; font-weight:600 !important;
}
html body :is(.bw-spot, .bw-spot-banner, .dealer-spot, .adslot, .avail-slot:has(> .cbtn), .advertise-cta) strong:not(:first-child){ color:var(--uw-text) !important; }

/* ==========================================================================
   Buttons
   ========================================================================== */
html body .btn{
  background:var(--uw-accent); color:var(--uw-on-accent); border:1px solid var(--uw-accent); border-radius:6px;
  padding:8px 16px; min-height:38px; font-family:var(--uw-body); font-weight:600; font-size:.95rem; box-shadow:none;
  transition:background-color .12s ease, border-color .12s ease;
}
html body .btn:hover{ background:var(--uw-accent-hover); border-color:var(--uw-accent-hover); color:var(--uw-on-accent); }
html body .btn:active{ background:var(--uw-accent-active); border-color:var(--uw-accent-active); }
html body .btn:disabled, html body .btn[disabled], html body .btn[aria-disabled="true"]{
  background:var(--uw-hover); border-color:var(--uw-line); color:var(--uw-text-3); opacity:1; cursor:not-allowed;
}
html body .btn[aria-busy="true"]{ cursor:progress; opacity:.75; }
html body .btn.ghost, html body .hero .btn.ghost{ background:transparent; color:var(--uw-text); border-color:var(--uw-line-input); }
html body .btn.ghost:hover, html body .hero .btn.ghost:hover{ background:var(--uw-hover); color:var(--uw-text); border-color:var(--uw-line-input); }
html body .btn.ghost:active{ background:var(--uw-hover); }
html body .btn.small{ padding:6px 12px; min-height:32px; font-size:.85rem; }
html body .hero .btn:not(.ghost){ background:var(--uw-accent); border-color:var(--uw-accent); color:var(--uw-on-accent); }
html body .hero .btn:not(.ghost):hover{ background:var(--uw-accent-hover); }

/* small inline action buttons: monospaced, as in a data table */
html body .xbtn, html body .ptclear{
  font-family:var(--uw-mono); font-size:.72rem; color:var(--uw-text); background:transparent;
  border:1px solid var(--uw-line-input); border-radius:6px; padding:4px 8px; text-decoration:none; line-height:1.35;
}
html body .register .xbtn{ display:inline-block; width:100%; margin:0 0 4px; text-align:left; }
html body .xbtn:hover, html body .ptclear:hover{ background:var(--uw-hover); }
html body .xbtn[aria-expanded="true"]{ border-color:var(--uw-accent); color:var(--uw-accent); }
html body .more button, html body .cq-more, html body .sugg button, html body .qrow .x{
  background:transparent; color:var(--uw-text); border:1px solid var(--uw-line-input); border-radius:6px;
  font-family:var(--uw-body); font-weight:500;
}
html body .more button, html body .cq-more{ padding:8px 16px; }
html body .sugg button{ padding:6px 12px; }
html body .more button:hover, html body .cq-more:hover, html body .sugg button:hover, html body .qrow .x:hover{ background:var(--uw-hover); border-color:var(--uw-line-input); }
html body .qrow .x{ height:38px; }

/* ==========================================================================
   Forms
   ========================================================================== */
html body :is(select, textarea, input[type=text], input[type=number], input[type=search], input[type=email], input[type=tel], input[type=date], .cf-input, .cf-select, .cf-textarea){
  background:var(--uw-canvas); color:var(--uw-text); border:1px solid var(--uw-line-input); border-radius:6px;
  min-height:38px; padding:8px 12px; font-family:var(--uw-body); box-shadow:none;
}
html body :is(select, input[type=text], input[type=number], input[type=search], input[type=email], input[type=tel], input[type=date], .cf-input, .cf-select){ height:38px; min-height:38px; line-height:1.3; }
html body input[type=search]{ -webkit-appearance:none; appearance:none; }
html body :is(select, textarea, input[type=text], input[type=number], input[type=search], input[type=email], input[type=tel], input[type=date]):hover{ border-color:var(--uw-text-3); }
html body :is(select, textarea, input, .cf-input, .cf-select, .cf-textarea):focus{
  outline:2px solid var(--uw-accent) !important; outline-offset:1px; border-color:var(--uw-accent) !important; box-shadow:none !important;
}
html body :is(select, textarea, input):disabled{ color:var(--uw-text-3); background:var(--uw-hover); cursor:not-allowed; }
html body ::placeholder{ color:var(--uw-text-3); opacity:1; }
html body select option{ background:var(--uw-panel); color:var(--uw-text); }
html body input[type=checkbox], html body input[type=radio], html body input[type=range]{ accent-color:var(--uw-accent) !important; }
html body .wrow input[type=range]{ min-height:0; padding:0; border:0; background:transparent; }

/* labels above inputs: 13px, 500, secondary text */
html body label.f, html body .ct label:not(.ct-check), html body .cf-field > label, html body .cf-field > legend, html body legend{
  font-family:var(--uw-body); font-size:13px; font-weight:500; color:var(--uw-text-2); letter-spacing:0;
}
html body .cf-field > label .cf-hint, html body label.f .hint{ font-size:12px; color:var(--uw-text-3); }

/* choice chips (course finder) */
html body .opt span{ background:var(--uw-canvas); color:var(--uw-text); border:1px solid var(--uw-line-input); border-radius:6px; padding:8px 16px; font-family:var(--uw-body); font-weight:500; }
html body .opt span:hover{ background:var(--uw-hover); }
html body .opt input:checked + span{ background:var(--uw-accent-tint); border-color:var(--uw-accent); color:var(--uw-text); }
html body .opt input:disabled + span{ color:var(--uw-text-3); cursor:not-allowed; }
html body .opt input:focus-visible + span{ outline:2px solid var(--uw-accent); outline-offset:2px; }

/* ==========================================================================
   Panels, notes, call-outs
   ========================================================================== */
html body .panel, html body .weights, html body .uw-find, html body .ptcheck, html body .unisearch, html body .faq-toc{
  background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; box-shadow:none;
}
html body .panel .panel{ background:var(--uw-canvas); }
html body .weights summary, html body details.panel > summary{ color:var(--uw-text); font-weight:500; }
html body details > summary::marker{ color:var(--uw-accent); }
html body .note{ background:var(--uw-accent-tint); border:1px solid rgba(245,158,11,0.35); border-left-width:1px; border-radius:8px; color:var(--uw-text); }
html body .warn{ background:var(--uw-red-tint); border:1px solid rgba(248,113,113,0.35); border-radius:8px; color:var(--uw-text); }
html body .cta{ background:var(--uw-panel); color:var(--uw-text-2); border:1px solid var(--uw-line); border-radius:8px; }
html body .cta p{ color:var(--uw-text-2); }
html body .cta h2, html body .cta h3, html body .cta strong{ color:var(--uw-text); }
html body .cta a:not(.btn){ color:var(--uw-text); text-decoration-color:var(--uw-accent); }
html body .ptcheck{ border-left-width:1px; }
html body .ptres.asp{ background:var(--uw-accent-tint); }
html body .ptres.rea, html body .ptres.chk{ background:var(--uw-hover); }
html body .ptres.saf{ background:var(--uw-green-tint); }

/* "Loading" and empty states */
html body #dataLoading{ background:var(--uw-panel); border-color:var(--uw-line); color:var(--uw-text-2); }
html body .ct .ct-empty, html body .rlist:empty::after{ color:var(--uw-text-2); }

/* ==========================================================================
   App home screen
   ========================================================================== */
html body .hero{ color:var(--uw-text); }
html body .hero::before{ background:var(--uw-panel) !important; border-bottom:1px solid var(--uw-line); }
html body .hero h1{ color:var(--uw-text); font-weight:500; letter-spacing:-0.02em; line-height:1.1; }
html body .hero .lede, html body .hero p{ color:var(--uw-text-2); }
html body .hero a:not(.btn):not(.bw-appsbtn){ color:var(--uw-text); text-decoration-color:var(--uw-accent); }
html body .hero .uw-kicker{ color:var(--uw-accent); font-family:var(--uw-body); font-weight:500; letter-spacing:.08em; }
html body .hero .uw-kicker::before, html body .kicker::before, html body .eyebrow::before{ background:var(--uw-accent) !important; }
html body .hero .uw-sources span{ color:var(--uw-text-2); }
html body .hero .uw-sources b{ color:var(--uw-text); background:var(--uw-canvas); border:1px solid var(--uw-line-input); border-radius:4px; padding:4px 8px; font-weight:500; font-family:var(--uw-body); }
html body #v-home .hero .uw-hero-photo img{ border-radius:8px; border:1px solid var(--uw-line); }
html body #v-home .hero .uw-hero-photo figcaption{ color:var(--uw-text-2); }
html body #v-home .hero .uw-hero-photo figcaption a{ color:var(--uw-text-2); }

/* three routes: one framed table of choices, split by hairlines */
html body .routes{ background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; box-shadow:none; overflow:hidden; }
html body .route{ border-color:var(--uw-line); padding:24px; }
html body .route p{ color:var(--uw-text-2); }

/* quick tools and Clearing links: a joined grid split by hairlines (no floating cards) */
html body .tools, html body .clr-grid, html body .stats{
  gap:1px; background:var(--uw-line); border:1px solid var(--uw-line); border-radius:8px; overflow:hidden;
}
html body .tool, html body .clr-grid a, html body .stat{
  background:var(--uw-panel); border:0; border-radius:0; box-shadow:none; padding:16px; color:var(--uw-text);
}
html body .tool:hover, html body .clr-grid a:hover{ background:var(--uw-hover); }
html body .tool:active, html body .clr-grid a:active{ background:var(--uw-hover); box-shadow:inset 0 -2px 0 var(--uw-accent); }
html body .tool strong, html body .clr-grid a strong{ font-family:var(--uw-display); font-weight:600; letter-spacing:-0.01em; color:var(--uw-text); }
html body .tool span, html body .clr-grid a span, html body .stat .l{ color:var(--uw-text-2); }
html body .stat .v{ color:var(--uw-text); font-weight:600; }

html body .uw-find label strong{ color:var(--uw-text); }
html body .clr-banner{ background:var(--uw-panel); border:1px solid var(--uw-accent); border-radius:8px; }
html body .clr-banner p{ color:var(--uw-text-2); }
html body .common-q{ border-top:1px solid var(--uw-line); }
html body .cq{ border-bottom:1px solid var(--uw-line); }
html body .cq summary{ font-family:var(--uw-display); font-weight:600; letter-spacing:-0.01em; color:var(--uw-text); }
html body .cq summary:hover{ color:var(--uw-accent); }
html body .cq p{ color:var(--uw-text-2); }

/* ==========================================================================
   Data tables (rankings register, guide tables, fees)
   ========================================================================== */
html body .register, html body table.data, html body table.plain, html body .fees, html body .bw-md-table{
  background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; border-collapse:separate; border-spacing:0;
  overflow:visible; color:var(--uw-text); font-family:var(--uw-body);
}
html body :is(.register, table.data, table.plain, .fees) thead tr:first-child > :first-child{ border-top-left-radius:8px; }
html body :is(.register, table.data, table.plain, .fees) thead tr:first-child > :last-child{ border-top-right-radius:8px; }
html body .register th, html body table.data th, html body table.plain th, html body .fees th, html body .bw-md-table th{
  background:var(--uw-panel); color:var(--uw-text-2); font-family:var(--uw-body); font-weight:500; font-size:.75rem;
  letter-spacing:.06em; text-transform:uppercase; padding:10px 16px; border:0; border-bottom:1px solid var(--uw-line-input);
}
html body .register thead th, html body table.data thead th{ position:sticky; top:0; z-index:2; }
html body #v-rank .register thead th{ top:65px; }
html body .register th button{ color:var(--uw-text-2); text-decoration:none; border-bottom:1px dotted var(--uw-text-3); font-family:var(--uw-body); font-weight:500; text-transform:uppercase; letter-spacing:.06em; }
html body .register th button:hover{ color:var(--uw-text); }
html body .register th button[aria-sort], html body .register th[aria-sort] button{ color:var(--uw-accent); }
html body .register td, html body table.data td, html body table.plain td, html body .fees td, html body .bw-md-table td{
  padding:10px 16px; border:0; border-bottom:1px solid var(--uw-line); color:var(--uw-text); background:transparent;
}
html body table.plain td + td, html body table.plain th + th, html body table.plain th + td,
html body .fees td + td, html body .fees th + th, html body .fees th + td{ border-left:1px solid var(--uw-line); }
html body table.plain tbody th, html body .fees tbody th{ color:var(--uw-text); text-transform:none; letter-spacing:0; font-size:.88rem; background:var(--uw-panel); }
html body :is(.register, table.data, table.plain, .fees) tbody tr:last-child > *{ border-bottom:0; }
html body :is(.register, table.data) tbody tr:hover td{ background:var(--uw-hover); }
html body .register tr.breakdown:hover td, html body .register .breakdown td{ background:var(--uw-canvas); }
html body .register .pos, html body table.data .pos, html body table.data td.pos{ color:var(--uw-text); font-family:var(--uw-mono); font-weight:600; font-size:1rem; }
html body .register .score{ color:var(--uw-text); font-size:.95rem; }
html body .register .nm{ font-weight:500; color:var(--uw-text); }
html body .register .meta, html body table.data .m, html body .register .nd{ color:var(--uw-text-2); font-family:var(--uw-body); }
html body table.data td a, html body .register td a{ font-weight:500; }
html body table.data td.n, html body .register td.fig{ font-size:.88rem; }

/* tags and the Aspirational / Realistic / Safer labels: status badges with a dot */
html body .tag{ display:inline-flex; align-items:center; background:var(--uw-hover); color:var(--uw-text-2); border:1px solid var(--uw-line); border-radius:4px; padding:0 6px; font-family:var(--uw-body); font-weight:500; }
html body .lbl{
  display:inline-flex; align-items:center; gap:6px; border-radius:999px; padding:2px 10px 2px 8px; border:1px solid transparent;
  font-family:var(--uw-body); font-size:.75rem; font-weight:500; line-height:1.5;
}
html body .lbl::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; flex:none; }
html body .lbl.asp{ color:var(--uw-accent); background:var(--uw-accent-tint); border-color:rgba(245,158,11,0.35); }
html body .lbl.rea{ color:var(--uw-text); background:var(--uw-hover); border-color:var(--uw-line-input); }
html body .lbl.saf{ color:var(--uw-green); background:var(--uw-green-tint); border-color:rgba(16,185,129,0.4); }
html body .lbl.chk, html body .lbl.pend{ color:var(--uw-text-2); background:transparent; border-color:var(--uw-line-input); }

/* score breakdown in the rankings table */
html body .bk h4{ color:var(--uw-text-2); font-family:var(--uw-body); font-weight:500; letter-spacing:0; }
html body .bk .v{ color:var(--uw-text); font-size:1.15rem; }
html body .bk .bar{ background:var(--uw-hover); border-radius:999px; }
html body .bk .bar i{ background:var(--uw-accent); border-radius:999px; }
html body .bk .bar b{ background:var(--uw-text); }

/* score spreads on guide pages */
html body .bars .bar{ color:var(--uw-text-2); }
html body .bt{ background:var(--uw-hover); border-radius:999px; }
html body .bt span{ background:var(--uw-accent); border-radius:999px; }
html body .bv{ color:var(--uw-text); }

/* this university against the average */
html body .cmpbar{ background:var(--uw-hover); }
html body .cmpbar i, html body .cmpkey i{ background:var(--uw-accent); }
html body .cmpbar b, html body .cmpkey b{ background:var(--uw-text-2); }

/* points scenarios */
html body .scen{ background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; overflow:hidden; }
html body .scen div + div{ border-left:1px solid var(--uw-line); }
html body .scen .big{ color:var(--uw-text); font-weight:600; letter-spacing:-0.02em; }
html body .scen .lab{ color:var(--uw-text-2); }
html body .qrow{ border-color:var(--uw-line); }
@media(max-width:720px){ html body .qrow{ background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; } }

/* results list in the course finder */
html body .rlist{ border-top:1px solid var(--uw-line); }
html body .ritem{ border-bottom:1px solid var(--uw-line); }
html body .ritem .facts{ color:var(--uw-text-2); }
html body .ritem .labs{ color:var(--uw-text-2); }

/* key-dates timeline */
html body .tl{ border-left:1px solid var(--uw-line-input); }
html body .tl li:before{ background:var(--uw-canvas); border:1px solid var(--uw-accent); width:11px; height:11px; left:-6px; }
html body .tl .d{ color:var(--uw-text); font-weight:600; font-size:.92rem; }

/* ==========================================================================
   Ask (chat)
   ========================================================================== */
html body .chatlog{ background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; }
html body .msg.me{ background:var(--uw-hover); color:var(--uw-text); border:1px solid var(--uw-line); border-radius:6px; }
html body .msg.bot{ background:transparent; border:0; border-left:1px solid var(--uw-accent); border-radius:0; padding-left:16px; color:var(--uw-text); }
html body .msg .cite{ color:var(--uw-text-2); }
html body .chatin #chatIn{ background:var(--uw-canvas); color:var(--uw-text); border:1px solid var(--uw-accent); border-radius:6px; box-shadow:none; min-height:48px; }
html body .chatin #chatIn:focus{ border-color:var(--uw-accent); }
html body .chatin .btn{ min-height:48px; }
html body .bw-md-table{ border-radius:6px; }

/* ==========================================================================
   Before-you-start gate
   ========================================================================== */
html body .gate{ background:rgba(9,13,22,0.88); }
html body .gate-box{ background:var(--uw-panel); color:var(--uw-text); border:1px solid var(--uw-line-input); border-top:1px solid var(--uw-accent); border-radius:8px; box-shadow:none; }
html body .gate-box h2, html body .gate-box h3{ font-weight:600; color:var(--uw-text); }
html body .gate-box p{ color:var(--uw-text-2); }
html body .gate-box p strong{ color:var(--uw-text); }
html body .gate-check{ color:var(--uw-text); }
html body .gate-box .btn:not(:disabled){ background:var(--uw-accent); border-color:var(--uw-accent); color:var(--uw-on-accent); }
html body .bwp-gate-mark{ color:var(--uw-accent); }

/* ==========================================================================
   Guide pages: FAQs, related guides, photos
   ========================================================================== */
html body .faq-cat{ border-top:1px solid var(--uw-line-input); }
html body .qa-link{ color:var(--uw-accent); }
html body .qa:target{ background:var(--uw-accent-tint); outline:8px solid var(--uw-accent-tint); border-radius:2px; }
html body .related{ border-top:1px solid var(--uw-line-input); }
html body .cityphoto img{ border-radius:8px; border:1px solid var(--uw-line); background:var(--uw-panel); }
html body .cityphoto figcaption, html body .cityphoto figcaption a{ color:var(--uw-text-2); }

/* ==========================================================================
   Clearing tools (checker, call planner, tracker, countdown, checklist)
   ========================================================================== */
html body .ct{ background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; box-shadow:none; padding:24px; }
html body .ct .ct-kicker{ color:var(--uw-accent); font-family:var(--uw-body); font-weight:500; letter-spacing:.08em; }
html body .ct .ct-kicker::before{ background:var(--uw-accent) !important; }
html body .ct .ct-q{ font-family:var(--uw-display); font-weight:600; letter-spacing:-0.01em; color:var(--uw-text); }
html body .ct .ct-step, html body .ct .ct-help, html body .ct .ct-small, html body .ct .ct-sum{ color:var(--uw-text-2); }
html body .ct button.ct-opt{ background:var(--uw-canvas); color:var(--uw-text); border:1px solid var(--uw-line-input); border-radius:6px; padding:10px 16px; font-family:var(--uw-body); }
html body .ct button.ct-opt:hover{ background:var(--uw-hover); border-color:var(--uw-accent); box-shadow:none; }
html body .ct button.ct-opt:active{ background:var(--uw-accent-tint); }
html body .ct .ct-res{ border-left:1px solid var(--uw-accent); padding-left:16px; }
html body .ct .ct-res h3{ font-family:var(--uw-display); color:var(--uw-text); }
html body .ct .ct-btn{ background:var(--uw-accent); color:var(--uw-on-accent); border:1px solid var(--uw-accent); border-radius:6px; padding:8px 16px; font-family:var(--uw-body); font-weight:600; }
html body .ct .ct-btn:hover{ background:var(--uw-accent-hover); border-color:var(--uw-accent-hover); color:var(--uw-on-accent); }
html body .ct .ct-btn:disabled{ background:var(--uw-hover); border-color:var(--uw-line); color:var(--uw-text-3); cursor:not-allowed; }
html body .ct .ct-btn.ghost{ background:transparent; color:var(--uw-text); border-color:var(--uw-line-input); }
html body .ct .ct-btn.ghost:hover{ background:var(--uw-hover); color:var(--uw-text); border-color:var(--uw-line-input); }
html body .ct .ct-btn.warn{ background:transparent; color:var(--uw-red); border-color:rgba(248,113,113,0.45); }
html body .ct .ct-btn.warn:hover{ background:var(--uw-red-tint); border-color:var(--uw-red); }
html body .ct .ct-check{ color:var(--uw-text); }
html body .ct .ct-pts{ color:var(--uw-text); font-weight:600; }
html body .ct .ct-sheet{ background:var(--uw-canvas); border:1px solid var(--uw-line); border-radius:8px; }
html body .ct .ct-sheet h3, html body .ct .ct-sheet h4{ font-family:var(--uw-display); color:var(--uw-text); }
html body .ct .ct-say{ background:var(--uw-panel); border:1px solid var(--uw-line); border-left:1px solid var(--uw-accent); border-radius:6px; }
html body .ct .ct-line{ border-bottom-color:var(--uw-text-2); }
html body .ct .ct-notes{ background:var(--uw-canvas); border:1px dashed var(--uw-line-input); border-radius:6px; }
html body .ct .ct-card{ background:var(--uw-canvas); border:1px solid var(--uw-line); border-radius:8px; }
html body .ct .ct-card.offer{ background:var(--uw-accent-tint); border-color:var(--uw-accent); }
html body .ct .ct-card.added{ background:var(--uw-canvas); border-color:var(--uw-accent); }
html body .ct .ct-card label{ color:var(--uw-text-2); }
html body .ct .ct-dates li{ background:var(--uw-canvas); border:1px solid var(--uw-line); border-radius:8px; }
html body .ct .ct-dates .ct-d{ color:var(--uw-text); font-family:var(--uw-display); font-weight:600; letter-spacing:-0.01em; }
html body .ct .ct-dates .ct-n{ color:var(--uw-text); font-weight:600; }
html body .ct .ct-dates .ct-l{ color:var(--uw-text-2); }
html body .ct .ct-status{ border-radius:6px; font-weight:500; display:flex; align-items:center; gap:8px; }
html body .ct .ct-status::before{ content:""; width:8px; height:8px; border-radius:50%; background:currentColor; flex:none; }
html body .ct .ct-status.yes{ background:var(--uw-green-tint); color:var(--uw-green); border:1px solid rgba(16,185,129,0.4); }
html body .ct .ct-status.no{ background:var(--uw-red-tint); color:var(--uw-red); border:1px solid rgba(248,113,113,0.4); }

/* ==========================================================================
   Back / Back to Top, footers
   ========================================================================== */
html body .bw-bottom{ color:var(--uw-text-2); font-family:var(--uw-body); }
html body .bw-bottom button{ font-family:var(--uw-body) !important; }
html body footer.site, html body footer.bw-footer, html body footer.cf-foot{
  background:var(--uw-panel); border-top:1px solid var(--uw-line); color:var(--uw-text-2); font-family:var(--uw-body);
}
html body footer.site p, html body footer.site .fl, html body footer.bw-footer p, html body footer.bw-footer .fl, html body footer.cf-foot p{ color:var(--uw-text-2); }
html body footer.site a, html body footer.site span[style], html body footer.bw-footer a, html body footer.bw-footer span[style], html body footer.cf-foot a{
  color:var(--uw-text) !important; text-decoration-color:var(--uw-accent) !important;
}
html body footer.site a:hover, html body footer.bw-footer a:hover, html body footer.cf-foot a:hover{ color:var(--uw-accent) !important; }

/* ==========================================================================
   Contact page (/university-wise-contact)
   ========================================================================== */
html body header.cf-head{ background:var(--uw-panel) !important; background-image:none !important; border-bottom:1px solid var(--uw-line); }
html body .cf-brand{ color:var(--uw-text); font-family:var(--uw-display); font-weight:600; letter-spacing:-0.02em; }
html body .cf-brand img{ filter:none; }
html body .cf-back{ color:var(--uw-text-2); }
html body .cf-back:hover{ color:var(--uw-text); }
html body .cf-card{ background:var(--uw-panel); border:1px solid var(--uw-line); border-radius:8px; box-shadow:none; color:var(--uw-text); }
html body .cf-card h1{ font-family:var(--uw-display); font-weight:500; letter-spacing:-0.02em; }
html body .cf-intro, html body .cf-hint, html body .cf-privacy{ color:var(--uw-text-2); }
html body .cf-app-icon{ background:var(--uw-hover); color:var(--uw-accent); border:1px solid var(--uw-line); border-radius:8px; }
html body label.cf-option{ background:var(--uw-canvas); border:1px solid var(--uw-line-input); border-radius:6px; color:var(--uw-text); font-size:13px; }
html body label.cf-option span{ font-size:1rem; font-weight:500; }
html body label.cf-option small{ color:var(--uw-text-2); }
html body label.cf-option:hover{ background:var(--uw-hover); }
html body label.cf-option:has(input:checked){ background:var(--uw-accent-tint); border-color:var(--uw-accent); box-shadow:none; }
html body .cf-subject{ background:var(--uw-hover); border:1px dashed var(--uw-line-input); color:var(--uw-text-2); }
html body .cf-invalid{ border-color:var(--uw-red) !important; }
html body .cf-err, html body .cf-status.error{ color:var(--uw-red); }
html body .cf-send{
  background:var(--uw-accent); background-image:none; color:var(--uw-on-accent); border:1px solid var(--uw-accent); border-radius:6px;
  padding:8px 16px; min-height:40px; font-family:var(--uw-body); font-weight:600;
}
html body .cf-send:hover{ background:var(--uw-accent-hover); }
html body .cf-send[disabled]{ background:var(--uw-hover); border-color:var(--uw-line); color:var(--uw-text-3); opacity:1; cursor:progress; }
html body .cf-done h2{ color:var(--uw-accent); font-family:var(--uw-display); font-weight:600; }

/* ==========================================================================
   Cookie banner (drawn by consent.js)
   ========================================================================== */
html body .bwc{ background:var(--uw-panel) !important; border-top:1px solid var(--uw-line-input) !important; box-shadow:none !important; font-family:var(--uw-body) !important; }
html body .bwc .bwc-box, html body .bwc .bwc-box p{ color:var(--uw-text-2) !important; }
html body .bwc .bwc-box strong, html body .bwc .bwc-box a{ color:var(--uw-text) !important; }
html body .bwc .bwc-box a{ text-decoration-color:var(--uw-accent) !important; }
html body .bwc .bwc-row button{ background:transparent !important; color:var(--uw-text) !important; border:1px solid var(--uw-line-input) !important; border-radius:6px !important; font-family:var(--uw-body) !important; font-weight:500 !important; }
html body .bwc .bwc-row button:hover{ background:var(--uw-hover) !important; }
html body .bwc .bwc-row button:focus-visible{ outline:2px solid var(--uw-accent) !important; }

/* ==========================================================================
   Printing: white paper, black ink
   ========================================================================== */
@media print{
  :root{ color-scheme:light; }
  html body{ background:white; color:black; }
  html body h1, html body h2, html body h3, html body h4, html body strong, html body b, html body a{ color:black; }
  html body .panel, html body .register, html body table.data, html body table.plain, html body .fees,
  html body .ct, html body .cta, html body .note{ background:white; color:black; border-color:gray; }
  html body .register td, html body table.data td, html body table.plain td, html body .fees td,
  html body .register th, html body table.data th, html body table.plain th, html body .fees th{ color:black; background:white; }
  html body .muted, html body .src, html body .hint, html body .lede{ color:dimgray; }
  html body header.site, html body footer.site{ background:white; color:black; border:0; }
}

/* v144: hints under form labels use the secondary text colour so they stay readable */
html body :is(.cf-hint, .hint){ color:var(--uw-text-2) !important; }

/* v144 readability fix: the Clearing tools' fields (.ct) kept white boxes from the family guide sheet */
html body .ct :is(input[type=text], input[type=tel], input[type=date], input[type=number], select, textarea){
  background:var(--uw-canvas) !important; color:var(--uw-text) !important; border:1px solid var(--uw-line-input) !important; border-radius:6px !important;
}
html body .ct :is(input, select, textarea):focus{ border-color:var(--uw-accent, #F59E0B) !important; outline:2px solid var(--uw-accent, #F59E0B) !important; outline-offset:1px; }

/* v144: no empty box on the "Ask" screen before the first question; it appears with the first message */
html body #chatLog:empty{ min-height:0 !important; height:0 !important; padding:0 !important; border:0 !important; margin:0 !important; }

/* ==========================================================================
   v152: "Last checked for accuracy" line at the top of each app's footer
   (set by set-checked-date.mjs; Google also reads the date from the page's
   WebPage structured data and the sitemap). A small badge: amber dot,
   secondary text, date in the figures font. Appearance only.
   ========================================================================== */
html body p.bw-checked-line{ display:block !important; margin:0 0 16px !important; padding:0 !important; background:none !important; border:0 !important; }
html body .bw-checked{ display:inline-flex !important; align-items:center; gap:6px; flex-wrap:wrap; padding:6px 10px !important; border:1px solid var(--uw-line-input) !important; border-radius:4px !important; background:var(--uw-panel) !important; color:var(--uw-text-2) !important; font-family:var(--uw-body) !important; font-size:13px !important; font-weight:500 !important; line-height:1.4 !important; max-width:100%; text-align:left; }
html body .bw-checked time{ font-family:var(--uw-mono) !important; color:var(--uw-text) !important; font-weight:600; letter-spacing:-0.02em; white-space:nowrap; }
html body .bw-checked-dot{ width:8px; height:8px; border-radius:50%; background:var(--uw-accent); flex:none; }
@media print{ html body .bw-checked{ background:white !important; color:black !important; border-color:gray !important; } html body .bw-checked time{ color:black !important; } }
