/* ==========================================================
   AH & Co. — stylesheet
   Apple "Liquid Glass" material system layered on Bootstrap 5.
   Bootstrap supplies grid/utilities/components; every visual
   surface, blur, spring, and morph lives here.
========================================================== */

:root{
  /* ---- brand surfaces (light) ---- */
  --bg:#F2F3F5;
  --bg-image: radial-gradient(1200px 700px at 12% -10%, rgba(10,113,227,.14), transparent 60%),
              radial-gradient(1000px 700px at 110% 10%, rgba(50,173,230,.12), transparent 55%);
  --glass-surface: rgba(255,255,255,0.52);
  --glass-surface-strong: rgba(255,255,255,0.68);
  --glass-surface-soft: rgba(255,255,255,0.30);
  --glass-tint: rgba(0,113,227,0.10);
  --ink:#0D0D10;
  --muted:#5B5E67;
  --accent:#0071E3;
  --accent-2:#409CFF;
  --accent-soft:rgba(0,113,227,0.10);
  --secondary:#1FA2A6;
  --line: rgba(13,13,16,0.10);
  --specular-border: linear-gradient(135deg, rgba(255,255,255,0.55) 0%, rgba(255,255,255,0.08) 50%, rgba(0,0,0,0.06) 100%);
  --glass-shadow: 0 20px 40px -15px rgba(0,0,0,0.07);
  --glass-blur: blur(24px) saturate(200%) contrast(107%);
  --glass-blur-lg: blur(40px) saturate(215%) contrast(110%);
  --glass-blur-xl: blur(54px) saturate(225%) contrast(112%);
  --radius: 18px;
  --radius-lg: 26px;
  --radius-pill: 999px;

  /* ---- spring-derived easings ---- */
  --ease-snap: cubic-bezier(.34, 1.56, .64, 1);      /* mass .8 / stiffness 300 / damping 20 */
  --ease-float: cubic-bezier(.22, 1, .36, 1);          /* mass 1.2 / stiffness 180 / damping 28 */
  --ease-standard: cubic-bezier(.4, 0, .2, 1);
  --transition: 250ms var(--ease-standard);
  --theme-transition: background-color 400ms var(--ease-float), border-color 400ms var(--ease-float),
                       color 400ms var(--ease-float), backdrop-filter 400ms ease, box-shadow 400ms var(--ease-float);

  /* ---- z-index tiers ---- */
  --z-base: 1;
  --z-cards: 20;
  --z-nav: 400;
  --z-float: 500;
  --z-overlay: 1000;
}

[data-theme="dark"]{
  --bg:#08090C;
  --bg-image: radial-gradient(1200px 700px at 12% -10%, rgba(64,156,255,.16), transparent 60%),
              radial-gradient(1000px 700px at 110% 10%, rgba(31,162,166,.14), transparent 55%);
  --glass-surface: rgba(18,18,22,0.46);
  --glass-surface-strong: rgba(24,24,29,0.64);
  --glass-surface-soft: rgba(18,18,22,0.26);
  --glass-tint: rgba(64,156,255,0.12);
  --ink:#F8F8FA;
  --muted:#A2A6B0;
  --accent:#409CFF;
  --accent-2:#7CC1FF;
  --accent-soft:rgba(64,156,255,0.14);
  --secondary:#3FD1CC;
  --line: rgba(248,248,250,0.10);
  --specular-border: linear-gradient(135deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0.03) 50%, rgba(0,0,0,0.25) 100%);
  --glass-shadow: 0 0 0 1px rgba(255,255,255,0.12), 0 20px 50px -10px rgba(0,0,0,0.5);
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; overflow-x:hidden; max-width:100%; }
body{
  background:var(--bg);
  background-image:var(--bg-image);
  background-attachment:fixed;
  color:var(--ink);
  font-family:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Inter", system-ui, sans-serif;
  font-feature-settings:"cv02","cv03","cv04","cv11";
  -webkit-font-smoothing:antialiased;
  line-height:1.6; font-size:16px;
  transition:var(--theme-transition);
  overflow-x:hidden;
  position:relative;
}

/* ---- ambient liquid background: three slow-drifting colour blobs
   behind everything, so the glass above always has something moving
   to refract. Fixed + behind content; paused under reduced motion. ---- */
.liquid-bg{ position:fixed; inset:0; z-index:-1; overflow:hidden; pointer-events:none; }
.liquid-bg span{
  position:absolute; border-radius:50%; filter:blur(60px); opacity:.55;
  background:radial-gradient(circle at 30% 30%, var(--accent), transparent 70%);
  animation:drift 26s var(--ease-float) infinite alternate;
}
.liquid-bg span:nth-child(1){ width:46vw; height:46vw; top:-14vw; left:-10vw; animation-duration:30s; }
.liquid-bg span:nth-child(2){ width:38vw; height:38vw; top:20vh; right:-14vw; background:radial-gradient(circle at 60% 40%, var(--secondary), transparent 70%); animation-duration:24s; animation-delay:-6s; }
.liquid-bg span:nth-child(3){ width:34vw; height:34vw; bottom:-12vw; left:18vw; background:radial-gradient(circle at 40% 60%, var(--accent-2), transparent 70%); animation-duration:34s; animation-delay:-12s; }
@keyframes drift{
  0%{ transform:translate(0,0) scale(1); }
  50%{ transform:translate(4vw,3vh) scale(1.12); }
  100%{ transform:translate(-3vw,5vh) scale(.96); }
}
@media (prefers-reduced-motion:reduce){ .liquid-bg span{ animation:none; } }
@media (prefers-contrast:more){ .liquid-bg{ display:none; } }

/* ---- scroll progress: thin accent thread across the very top ---- */
.scroll-progress{ position:fixed; top:0; left:0; height:3px; width:0%; background:linear-gradient(90deg, var(--accent), var(--secondary)); z-index:calc(var(--z-nav) + 1); transition:width .12s linear; }
h1,h2,h3,h4,.serif{ font-family:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Inter", system-ui, sans-serif; letter-spacing:-0.01em; font-weight:600; }
.mono{ font-family:"SF Mono","JetBrains Mono",monospace; letter-spacing:0.03em; }
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
::selection{ background:var(--accent); color:#fff; }

.container-xl{ max-width:1180px; }

/* ==========================================================
   Liquid Glass base material — every floating surface composes
   this. Layered blur + saturation, gradient specular border,
   ambient shadow, and a pointer/touch-tracked sheen overlay.
========================================================== */
.glass{
  position:relative;
  background:
    linear-gradient(var(--glass-surface), var(--glass-surface)) padding-box,
    var(--specular-border) border-box;
  border:1px solid transparent;
  -webkit-backdrop-filter:var(--glass-blur);
  backdrop-filter:var(--glass-blur);
  border-radius:var(--radius);
  box-shadow:var(--glass-shadow);
  transition:var(--theme-transition), transform .5s var(--ease-float), box-shadow .5s var(--ease-float);
}
.glass-strong{
  background:
    linear-gradient(var(--glass-surface-strong), var(--glass-surface-strong)) padding-box,
    var(--specular-border) border-box;
  -webkit-backdrop-filter:var(--glass-blur-lg);
  backdrop-filter:var(--glass-blur-lg);
}
.glass-overlay{
  -webkit-backdrop-filter:var(--glass-blur-xl);
  backdrop-filter:var(--glass-blur-xl);
}
/* sheen that follows the pointer / touch / gyro tilt */
.glass-sheen{ overflow:hidden; }
.glass-sheen::after{
  content:"";
  position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:radial-gradient(480px circle at var(--mx,50%) var(--my,-20%), rgba(255,255,255,.35), transparent 55%);
  opacity:0; transition:opacity .4s var(--ease-float);
}
[data-theme="dark"] .glass-sheen::after{ background:radial-gradient(480px circle at var(--mx,50%) var(--my,-20%), rgba(255,255,255,.14), transparent 55%); }
.glass-sheen:hover::after, .glass-sheen.sheen-active::after{ opacity:1; }

@media (prefers-contrast:more){
  :root{ --glass-surface:rgba(255,255,255,0.95); --glass-surface-strong:rgba(255,255,255,0.97); --glass-blur:blur(6px); --glass-blur-lg:blur(8px); --glass-blur-xl:blur(10px); }
  [data-theme="dark"]{ --glass-surface:rgba(10,10,12,0.95); --glass-surface-strong:rgba(10,10,12,0.97); }
  .glass-sheen::after{ display:none; }
}

/* -------- Motion: fade/slide/scale reveal -------- */
.reveal{ opacity:0; transform:translateY(22px) scale(.98); transition:opacity .7s var(--ease-float), transform .7s var(--ease-float); }
.reveal.in{ opacity:1; transform:translateY(0) scale(1); }
.reveal-stagger > *{ opacity:0; transform:translateY(16px) scale(.96); transition:opacity .6s var(--ease-float), transform .6s var(--ease-float); }
.reveal-stagger.in > *{ opacity:1; transform:translateY(0) scale(1); }
.reveal-stagger.in > *:nth-child(1){ transition-delay:.00s; }
.reveal-stagger.in > *:nth-child(2){ transition-delay:.03s; }
.reveal-stagger.in > *:nth-child(3){ transition-delay:.06s; }
.reveal-stagger.in > *:nth-child(4){ transition-delay:.09s; }
.reveal-stagger.in > *:nth-child(5){ transition-delay:.12s; }
.reveal-stagger.in > *:nth-child(6){ transition-delay:.15s; }
.reveal-stagger.in > *:nth-child(n+7){ transition-delay:.18s; }

@media (prefers-reduced-motion:reduce){
  .reveal, .reveal-stagger > *{ opacity:1 !important; transform:none !important; transition:opacity .3s linear !important; }
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.15s !important; scroll-behavior:auto !important; }
  .glass-sheen::after{ display:none; }
}

/* -------- Navbar: floating glass capsule -------- */
.navbar-varco{
  position:fixed; top:14px; left:50%; transform:translateX(-50%);
  width:calc(100% - 28px); max-width:1180px;
  padding:.6rem 1.1rem; border-radius:var(--radius-pill);
  z-index:var(--z-nav);
  transition:var(--theme-transition), padding .4s var(--ease-float), width .4s var(--ease-float), box-shadow .4s var(--ease-float);
}
.navbar-varco.scrolled{ padding:.4rem 1rem; box-shadow:0 16px 34px -12px rgba(0,0,0,0.16); }
.brand{ font-weight:700; font-size:1.05rem; color:var(--ink); display:flex; align-items:center; gap:.6rem; }
.brand .mark{
  width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:.68rem; font-weight:700; letter-spacing:.02em;
  background:linear-gradient(145deg, var(--accent), var(--secondary)); color:#fff;
  box-shadow:0 4px 14px -4px var(--accent-soft);
}
.brand em{ color:var(--accent); font-style:normal; }
.navbar-varco .nav-link{ color:var(--ink); opacity:.72; font-weight:500; font-size:.92rem; transition:opacity var(--transition), color var(--transition); position:relative; }
.navbar-varco .nav-link::after{ content:""; position:absolute; left:0; bottom:2px; width:0; height:1.5px; background:var(--accent); transition:width .35s var(--ease-float); }
.navbar-varco .nav-link:hover{ opacity:1; }
.navbar-varco .nav-link:hover::after{ width:100%; }

/* -------- Buttons: liquid sheen + tactile press -------- */
.btn-accent, .btn-outline-varco, .btn-sm-accent, .show-more-btn{
  position:relative; overflow:hidden; isolation:isolate;
  border-radius:var(--radius-pill); padding:.62rem 1.35rem; font-weight:600; font-size:.85rem; border:none;
  transition:transform .22s var(--ease-snap), box-shadow .3s var(--ease-float), background .3s var(--ease-float), color .3s var(--ease-float);
}
.btn-accent{ background:linear-gradient(145deg, var(--accent), var(--accent-2)); color:#fff; box-shadow:0 10px 26px -10px var(--accent-soft); }
.btn-accent:hover{ transform:translateY(-2px); box-shadow:0 16px 34px -10px var(--accent-soft); color:#fff; }
.btn-outline-varco{ border:1.4px solid var(--line); color:var(--ink); background:var(--glass-surface); -webkit-backdrop-filter:var(--glass-blur); backdrop-filter:var(--glass-blur); }
.btn-outline-varco:hover{ background:var(--ink); color:var(--bg); transform:translateY(-2px); }
.btn-accent:active, .btn-outline-varco:active, .btn-sm-accent:active, .show-more-btn:active{ transform:scale(.95); }
/* shimmer sweep on hover */
.btn-accent::before, .btn-outline-varco::before, .btn-sm-accent::before, .show-more-btn::before{
  content:""; position:absolute; top:0; left:-60%; width:35%; height:100%;
  background:linear-gradient(120deg, transparent, rgba(255,255,255,.55), transparent);
  transform:skewX(-18deg); transition:left .7s var(--ease-float); pointer-events:none;
}
.btn-accent:hover::before, .btn-outline-varco:hover::before, .btn-sm-accent:hover::before, .show-more-btn:hover::before{ left:130%; }
/* click ripple */
.ripple{ position:absolute; border-radius:50%; background:rgba(255,255,255,.55); transform:scale(0); pointer-events:none; animation:rippleOut .6s var(--ease-float) forwards; }
[data-theme="dark"] .ripple{ background:rgba(255,255,255,.28); }
@keyframes rippleOut{ to{ transform:scale(1); opacity:0; } }

.theme-btn{
  width:38px; height:38px; border-radius:50%; border:1px solid var(--line);
  background:var(--glass-surface); color:var(--ink); display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition:transform .5s var(--ease-snap), var(--theme-transition);
}
.theme-btn:hover{ transform:rotate(20deg) scale(1.06); }
.theme-btn:active{ transform:scale(.9); }

/* -------- Hero -------- */
.hero{ padding:8.5rem 0 4.5rem; position:relative; overflow:hidden; }
.hero-eyebrow{ font-size:clamp(.7rem,1vw,.76rem); letter-spacing:.14em; text-transform:uppercase; color:var(--secondary); font-weight:600; display:inline-flex; align-items:center; gap:.6rem; margin-bottom:1.4rem; }
.hero-eyebrow::before{ content:""; width:24px; height:1.5px; background:var(--secondary); display:inline-block; }
.hero h1{ font-size:clamp(2.3rem,4.6vw,3.7rem); font-weight:650; line-height:1.06; }
.hero h1 em{ font-style:normal; color:var(--accent); }
.hero .lead{ color:var(--muted); font-size:clamp(1rem,1.3vw,1.12rem); max-width:44ch; margin-top:1.3rem; }
.hero-actions{ margin-top:2.1rem; display:flex; gap:14px; flex-wrap:wrap; }

.hero-visual{ position:relative; height:100%; min-height:280px; display:flex; align-items:center; justify-content:center; }
.hero-visual svg{ width:100%; height:auto; max-width:380px; }
.hero-line{ fill:none; stroke:var(--line); stroke-width:1.4; }
.hero-line.animated{ stroke:var(--accent); stroke-dasharray:6 8; animation:dash 30s linear infinite; }
@keyframes dash{ to{ stroke-dashoffset:-500; } }
.hero-dot{ fill:var(--accent); animation:pulseDot 2.6s var(--ease-float) infinite; }
.hero-dot:nth-child(2){ animation-delay:1.3s; }
@keyframes pulseDot{ 0%,100%{ opacity:1; r:5; } 50%{ opacity:.55; r:7; } }
.hero-visual svg > circle[stroke-dasharray]{ animation:spinRing 40s linear infinite; transform-origin:190px 160px; }
@keyframes spinRing{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce){ .hero-dot, .hero-visual svg > circle[stroke-dasharray]{ animation:none; } }

.stat-row{ display:flex; gap:2.4rem; margin-top:2.6rem; flex-wrap:wrap; }
.stat .num{ font-weight:700; font-size:clamp(1.6rem,2.4vw,2rem); color:var(--ink); }
.stat .lbl{ font-size:.76rem; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; margin-top:2px; }

/* -------- Section headers -------- */
.section{ padding:5rem 0; position:relative; z-index:var(--z-base); }
.section-alt{ position:relative; }
.section-alt::before{ content:""; position:absolute; inset:0; background:var(--glass-surface-soft); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); z-index:-1; }
.eyebrow-sm{ font-size:.72rem; color:var(--accent); font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.section h2{ font-size:clamp(1.6rem,3vw,2.2rem); font-weight:650; margin-top:.5rem; }
.section .lead-sm{ color:var(--muted); max-width:62ch; margin-top:.7rem; font-size:.97rem; }
hr.hairline{ border:0; border-top:1px solid var(--line); margin:0; }

/* -------- Controls -------- */
.form-control-varco, select.form-control-varco{
  background:var(--glass-surface); -webkit-backdrop-filter:var(--glass-blur); backdrop-filter:var(--glass-blur);
  border:1.4px solid var(--line); color:var(--ink);
  border-radius:var(--radius); padding:.68rem .95rem; font-size:.9rem; transition:border-color var(--transition), box-shadow .35s var(--ease-float);
}
.form-control-varco:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 4px var(--accent-soft); }

/* floating search — morphs wider and glows on focus */
.search-glass{ position:relative; transition:transform .45s var(--ease-float); }
.search-glass:focus-within{ transform:scale(1.015); z-index:2; }
.search-glass:focus-within .form-control-varco{
  -webkit-backdrop-filter:var(--glass-blur-lg); backdrop-filter:var(--glass-blur-lg);
  box-shadow:0 0 0 5px var(--accent-soft), 0 18px 40px -18px rgba(0,0,0,.25);
}
.search-dim{ position:fixed; inset:0; background:rgba(0,0,0,0); pointer-events:none; -webkit-backdrop-filter:blur(0px); backdrop-filter:blur(0px); transition:background .5s var(--ease-float), backdrop-filter .5s var(--ease-float); z-index:15; }
.search-dim.active{ background:rgba(0,0,0,.12); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); }
[data-theme="dark"] .search-dim.active{ background:rgba(0,0,0,.35); }

/* -------- University cards: magnetic 3D tilt -------- */
.uni-card{
  padding:1.35rem; height:100%; position:relative; overflow:hidden;
  transform:perspective(1000px) rotateX(var(--rx,0)) rotateY(var(--ry,0)) translateY(var(--ty,0)) translateZ(var(--tz,0));
  transition:transform .5s var(--ease-float), box-shadow .5s var(--ease-float), border-color var(--transition);
  will-change:transform;
}
.uni-card::before{ content:""; position:absolute; top:0; left:0; width:3px; height:100%; background:linear-gradient(var(--accent), var(--secondary)); transform:scaleY(0); transform-origin:top; transition:transform var(--transition); }
.uni-card:hover{ --ty:-4px; --tz:10px; box-shadow:0 24px 46px -18px rgba(0,0,0,.16); }
.uni-card:hover::before{ transform:scaleY(1); }
.uni-card.pressed{ transform:perspective(1000px) scale(.98); }
.uni-card .tag{ font-size:.62rem; color:var(--secondary); text-transform:uppercase; letter-spacing:.07em; font-weight:700; }
.uni-card h3{ font-size:1.03rem; font-weight:600; margin:.5rem 0 .25rem; line-height:1.3; }
.uni-card p.city{ font-size:.82rem; color:var(--muted); margin-bottom:.6rem; }
.field-pill{ font-size:.66rem; background:var(--accent-soft); padding:4px 10px; border-radius:var(--radius-pill); color:var(--ink); display:inline-block; margin:0 4px 4px 0; }
.card-links{ display:flex; gap:14px; margin-top:.8rem; align-items:center; flex-wrap:wrap; }
.card-links a{ font-size:.75rem; font-weight:700; color:var(--accent); display:inline-flex; align-items:center; gap:3px; transition:gap var(--transition); }
.card-links a:hover{ gap:6px; text-decoration:underline; }
.card-links a.qs{ color:var(--secondary); }
.uni-detail-btn{
  font-size:.75rem; font-weight:700; color:#fff; background:linear-gradient(145deg, var(--accent), var(--accent-2));
  border:none; border-radius:var(--radius-pill); padding:6px 14px; cursor:pointer;
  transition:transform .3s var(--ease-snap), box-shadow .3s var(--ease-float);
}
.uni-detail-btn:hover{ transform:translateY(-1px); box-shadow:0 10px 22px -10px var(--accent-soft); }
.uni-detail-btn:active{ transform:scale(.94); }
.compare-check{ display:flex; align-items:center; gap:5px; font-size:.72rem; color:var(--muted); cursor:pointer; margin-top:.6rem; }
.compare-check input{ accent-color:var(--accent); }

/* -------- Compare bar (mobile floating, safe-area aware) -------- */
.compare-bar{
  position:fixed; left:50%; bottom:16px; transform:translate(-50%,160%);
  color:var(--ink); padding:.7rem 1.1rem; border-radius:var(--radius-pill);
  display:flex; align-items:center; gap:14px; z-index:var(--z-float);
  transition:transform .5s var(--ease-snap), var(--theme-transition);
  font-size:.85rem; width:calc(100% - 32px); max-width:380px; justify-content:space-between;
  padding-bottom:calc(.7rem + env(safe-area-inset-bottom, 0px));
  touch-action:pan-x;
}
.compare-bar.show{ transform:translate(-50%,0); }
.compare-bar .btn-sm-accent{ background:linear-gradient(145deg, var(--accent), var(--accent-2)); color:#fff; padding:7px 16px; font-weight:700; font-size:.78rem; flex-shrink:0; }
.compare-bar .clear-cmp{ background:none; border:none; color:var(--muted); text-decoration:underline; font-size:.78rem; flex-shrink:0; }
@media (max-width:420px){
  .compare-bar{ font-size:.78rem; gap:8px; padding:.6rem .9rem; }
  .compare-bar .btn-sm-accent{ padding:6px 12px; }
}

/* -------- Show more / collapse universities -------- */
.show-more-wrap{ margin-top:1.6rem; }
.show-more-btn{ background:var(--glass-surface); border:1.5px solid var(--line); color:var(--ink); -webkit-backdrop-filter:var(--glass-blur); backdrop-filter:var(--glass-blur); }
.show-more-btn:hover{ background:var(--ink); color:var(--bg); }

.cmp-table{ width:100%; font-size:.85rem; }
.cmp-table th,.cmp-table td{ text-align:left; padding:.6rem .5rem; border-bottom:1px solid var(--line); vertical-align:top; }
.cmp-table th{ color:var(--muted); font-weight:700; width:130px; }

/* -------- Timeline -------- */
.timeline{ position:relative; padding-left:28px; }
.timeline::before{ content:""; position:absolute; left:6px; top:6px; bottom:6px; width:1.5px; background:var(--line); }
.tl-item{ position:relative; padding-bottom:2.1rem; }
.tl-item:last-child{ padding-bottom:0; }
.tl-item::before{ content:""; position:absolute; left:-28px; top:2px; width:13px; height:13px; border-radius:50%; background:var(--bg); border:2px solid var(--accent); }
.tl-when{ font-size:.72rem; color:var(--accent); font-weight:700; }
.tl-item h4{ font-size:1rem; font-weight:600; margin:.3rem 0; }
.tl-item p{ font-size:.87rem; color:var(--muted); max-width:60ch; }

.note-card{ margin-top:1.4rem; font-size:.78rem; color:var(--muted); padding:.9rem 1.1rem; border-radius:12px; border-left:3px solid var(--accent); }

/* -------- Scholarships / estimator -------- */
.schol-card{ padding:1.4rem; height:100%; display:flex; flex-direction:column; transform:perspective(1000px) rotateX(var(--rx,0)) rotateY(var(--ry,0)) translateY(var(--ty,0)); transition:transform .5s var(--ease-float), box-shadow .5s var(--ease-float); }
.schol-card:hover{ --ty:-3px; box-shadow:0 22px 44px -18px rgba(0,0,0,.15); }
.schol-card h3{ font-size:1rem; font-weight:600; margin:.5rem 0 .4rem; }
.schol-card p{ font-size:.85rem; color:var(--muted); flex-grow:1; }
.schol-link{ font-size:.75rem; font-weight:700; color:var(--accent); margin-top:.6rem; display:inline-flex; align-items:center; gap:3px; transition:gap var(--transition); align-self:flex-start; }
.schol-link:hover{ gap:6px; text-decoration:underline; }

/* -------- University detail modal -------- */
.ud-sub{ color:var(--muted); font-size:.85rem; margin-bottom:1.2rem; }
.ud-section{ margin-bottom:1.4rem; }
.ud-section h4{ font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:var(--accent); font-weight:700; margin-bottom:.6rem; }
.ud-hint{ font-size:.78rem; color:var(--muted); margin-top:.5rem; }
.ud-links{ display:flex; flex-direction:column; gap:8px; }
.ud-link{ font-size:.88rem; font-weight:600; padding:.55rem .8rem; border-radius:12px; background:var(--glass-surface-soft); border:1px solid var(--line); transition:background .3s var(--ease-float), transform .3s var(--ease-snap); }
.ud-link:hover{ background:var(--accent-soft); transform:translateX(3px); }
.ud-guide{ background:var(--accent-soft); border-radius:14px; padding:1.1rem 1.2rem; }
.ud-point{ font-size:.87rem; color:var(--ink); margin-bottom:.55rem; line-height:1.55; }
.ud-point strong{ color:var(--accent); }
.ud-disclaimer{ font-size:.76rem; color:var(--muted); margin-top:.8rem; margin-bottom:0; border-top:1px solid var(--line); padding-top:.7rem; }

.estimator{ padding:1.6rem; margin-top:1.8rem; }
.estimator h3{ font-size:1.05rem; font-weight:600; }
.estimator-result{ margin-top:1rem; padding:.9rem 1.1rem; border-radius:12px; background:var(--accent-soft); font-size:.85rem; display:none; }
.estimator-result.show{ display:block; animation:fadein .5s var(--ease-float); }
@keyframes fadein{ from{ opacity:0; transform:translateY(8px) scale(.97);} to{ opacity:1; transform:translateY(0) scale(1);} }

/* -------- Rankings -------- */
.rank-row{ display:flex; align-items:baseline; gap:16px; padding:.85rem 0; border-bottom:1px solid var(--line); transition:padding-left .35s var(--ease-snap); }
.rank-row:hover{ padding-left:6px; }
.rank-row .rn{ color:var(--accent); font-weight:700; font-size:.85rem; width:22px; flex-shrink:0; }
.rank-row .rname{ font-weight:600; }
.rank-row .rnote{ color:var(--muted); font-size:.83rem; }

/* -------- Process -------- */
.step-card{ padding:1.4rem; height:100%; transform:perspective(1000px) rotateX(var(--rx,0)) rotateY(var(--ry,0)) translateY(var(--ty,0)); transition:transform .5s var(--ease-float), box-shadow .5s var(--ease-float); }
.step-card:hover{ --ty:-3px; box-shadow:0 22px 44px -18px rgba(0,0,0,.15); }
.step-card .num{ color:var(--accent); font-weight:700; font-size:.8rem; }
.step-card h3{ font-size:.98rem; font-weight:600; margin:.6rem 0 .4rem; }
.step-card p{ font-size:.84rem; color:var(--muted); }

/* -------- Testimonials -------- */
.story-card{ padding:.5rem; height:100%; cursor:pointer; overflow:hidden; transition:transform .3s var(--ease-float, ease), box-shadow .3s var(--ease-float, ease); }
.story-card:hover, .story-card:focus-visible{ transform:translateY(-4px) scale(1.02); box-shadow:0 12px 28px rgba(0,0,0,.18); outline:none; }
.story-card img{ width:100%; height:110px; object-fit:cover; border-radius:10px; display:block; }
@media (min-width:768px){ .story-card img{ height:130px; } }

.story-nav{
  position:absolute; top:50%; transform:translateY(-50%);
  width:44px; height:44px; border-radius:50%; border:none;
  background:rgba(0,0,0,.45); color:#fff; font-size:1.6rem; line-height:1;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition:background .2s ease, transform .2s var(--ease-snap, ease); z-index:5;
}
.story-nav:hover{ background:rgba(0,0,0,.65); }
.story-nav:active{ transform:translateY(-50%) scale(.92); }
.story-nav-prev{ left:8px; }
.story-nav-next{ right:8px; }
@media (min-width:768px){
  .story-nav-prev{ left:-6px; }
  .story-nav-next{ right:-6px; }
}

.testi-card{ padding:1.5rem; height:100%; }
.testi-card .quote{ font-style:italic; font-size:1.02rem; }
.testi-card .who{ margin-top:.9rem; font-size:.68rem; color:var(--muted); text-transform:uppercase; }
.placeholder-flag{ font-size:.64rem; color:var(--accent); margin-top:.5rem; opacity:.8; }

/* -------- FAQ accordion overrides -------- */
.accordion-item{ background:transparent; border:none; border-bottom:1px solid var(--line); }
.accordion-button{ background:transparent; color:var(--ink); font-weight:600; font-size:.98rem; padding:1.1rem 0; box-shadow:none !important; transition:color .3s var(--ease-float); }
.accordion-button:not(.collapsed){ background:transparent; color:var(--accent); }
.accordion-button::after{ filter:none; transition:transform .5s var(--ease-snap); }
.accordion-button:not(.collapsed)::after{ transform:rotate(180deg) scale(1.15); }
.accordion-body{ color:var(--muted); font-size:.9rem; padding:0 0 1.1rem; max-width:65ch; }

/* -------- Contact (translucent glass panel, theme-aware text/inputs
   throughout so nothing depends on a fixed dark background) -------- */
.contact-panel{
  position:relative; overflow:hidden; color:var(--ink);
  background:
    linear-gradient(var(--glass-tint), var(--glass-tint)) padding-box,
    linear-gradient(150deg, var(--glass-surface-strong), var(--glass-surface)) padding-box,
    var(--specular-border) border-box;
  border:1px solid transparent;
  -webkit-backdrop-filter:var(--glass-blur-lg);
  backdrop-filter:var(--glass-blur-lg);
  border-radius:var(--radius-lg); padding:3rem 2.4rem;
  box-shadow:var(--glass-shadow);
}
.contact-panel h2{ color:var(--ink); }
.contact-panel p{ color:var(--muted); max-width:42ch; margin-top:.8rem; }
.contact-method{ display:flex; align-items:center; gap:12px; color:var(--ink); font-weight:600; font-size:.92rem; margin-top:.9rem; transition:transform .3s var(--ease-snap); }
.contact-method:hover{ transform:translateX(4px); color:var(--accent); }
.contact-method .ico{ width:36px; height:36px; border:1.5px solid var(--line); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:.82rem; flex-shrink:0; background:var(--glass-surface-soft); }
.contact-panel .form-control{
  background:var(--glass-surface-soft); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  border:1px solid var(--line); color:var(--ink); border-radius:var(--radius);
  transition:border-color var(--transition), box-shadow .35s var(--ease-float), background .35s var(--ease-float);
}
.contact-panel .form-control::placeholder{ color:var(--muted); opacity:.85; }
.contact-panel .form-control:focus{ background:var(--glass-surface); border-color:var(--accent); box-shadow:0 0 0 4px var(--accent-soft); color:var(--ink); }
.contact-panel .btn-accent{ background:linear-gradient(145deg, var(--accent), var(--accent-2)); color:#fff; width:100%; }
.contact-panel .btn-accent:hover{ filter:brightness(1.1); }

footer{ padding:2.4rem 0 calc(2.4rem + env(safe-area-inset-bottom, 0px)); text-align:center; }
footer p{ font-size:.75rem; color:var(--muted); letter-spacing:.04em; }

/* -------- Floating buttons (respect safe area, ultra-tier z) -------- */
.wa-float{
  position:fixed; bottom:calc(22px + env(safe-area-inset-bottom, 0px)); right:22px; z-index:var(--z-float);
  width:52px; height:52px; border-radius:50%; background:linear-gradient(145deg, var(--secondary), #1a7f82); color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:1.25rem; box-shadow:0 14px 30px -10px rgba(0,0,0,.3);
  transition:transform .35s var(--ease-snap), box-shadow .35s var(--ease-float);
  animation:floatBob 3.4s var(--ease-float) infinite;
}
.wa-float:hover{ transform:scale(1.08); animation-play-state:paused; }
.wa-float:active{ transform:scale(.92); }
@keyframes floatBob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-6px); } }
@media (prefers-reduced-motion:reduce){ .wa-float{ animation:none; } }
.top-float{
  position:fixed; bottom:calc(84px + env(safe-area-inset-bottom, 0px)); right:22px; z-index:var(--z-float);
  width:38px; height:38px; border-radius:50%; color:var(--ink); display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none; transform:translateY(10px); transition:opacity .4s var(--ease-float), transform .4s var(--ease-float);
}
.top-float.show{ opacity:1; pointer-events:auto; transform:translateY(0); }

/* -------- Mobile floating tab bar -------- */
.mobile-tabbar{
  display:none;
  position:fixed; left:50%; bottom:calc(14px + env(safe-area-inset-bottom, 0px)); transform:translate(-50%,0);
  z-index:var(--z-nav); padding:.55rem .7rem; border-radius:var(--radius-pill);
  align-items:center; justify-content:space-between; gap:2px; width:min(94%,420px);
  touch-action:pan-y;
}
.mobile-tabbar a{
  display:flex; flex-direction:column; align-items:center; gap:2px; padding:.35rem .6rem; border-radius:var(--radius-pill);
  color:var(--muted); font-size:.62rem; font-weight:600; transition:color .3s var(--ease-float), background .3s var(--ease-float), transform .3s var(--ease-snap);
}
.mobile-tabbar a .ico{ font-size:1.05rem; line-height:1; }
.mobile-tabbar a:hover, .mobile-tabbar a:active{ color:var(--accent); transform:translateY(-2px); }
.mobile-tabbar a.active{ color:var(--accent); background:var(--accent-soft); }
@media (max-width:767px){
  .mobile-tabbar{ display:flex; }
  body{ padding-bottom:78px; }
  .navbar-varco #navContent .nav-link{ font-size:1.02rem; }
}

/* -------- Modal override (ultra-blur overlay tier) -------- */
.modal-backdrop{ z-index:calc(var(--z-overlay) - 1); }
.modal{ z-index:var(--z-overlay); }
.modal-content{ color:var(--ink); border-radius:var(--radius-lg); border:1px solid transparent; overflow:hidden; }
.modal-header{ border-bottom:1px solid var(--line); }
.btn-close{ filter:var(--bs-btn-close-filter, none); }
[data-theme="dark"] .btn-close{ filter:invert(1); }

/* -------- Scrollbar polish -------- */
::-webkit-scrollbar{ width:10px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:var(--line); border-radius:6px; }

/* -------- Focus visibility (accessibility floor) -------- */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:2px solid var(--accent); outline-offset:2px; border-radius:6px;
}

@media (max-width:767px){
  .hero{ padding:6.5rem 0 3rem; }
  .stat-row{ gap:1.6rem; }
  .contact-panel{ padding:2rem 1.4rem; border-radius:var(--radius); }
  .navbar-varco{ top:10px; width:calc(100% - 20px); }
}
