/* ==========================================================================
   Panoptic Education Consultants — design system
   Navy for trust, royal blue for action, teal for accents, ivory for warmth.
   ========================================================================== */

:root {
  --navy: #10233F;
  --navy-2: #1A3357;
  --blue: #2457C5;
  --blue-d: #1C46A3;
  --teal: #13B8A6;
  --teal-ink: #0B7A6E;      /* teal for text on light backgrounds (AA) */
  --teal-soft: #E3F6F3;
  --ivory: #F8F7F2;
  --ivory-2: #F0EEE6;
  --white: #FFFFFF;
  --ink: #172033;
  --muted: #667085;
  --muted-d: #4A5468;
  --line: #E3E1D8;
  --line-cool: #D9DEE8;
  --danger: #B42318;
  --danger-soft: #FEF3F2;
  --ok: #067647;
  --ok-soft: #ECFDF3;

  --font-head: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;

  --r-xl: 32px;   /* hero & feature imagery */
  --r-lg: 20px;   /* cards & panels */
  --r-md: 12px;   /* inputs, small tiles */
  --r-pill: 999px;

  --shadow-1: 0 1px 2px rgba(16, 35, 63, .06), 0 2px 8px rgba(16, 35, 63, .05);
  --shadow-2: 0 12px 32px -12px rgba(16, 35, 63, .28);
  --ease: cubic-bezier(.2, .7, .2, 1);
  --wrap: 1320px;   /* page container max-width, used by every .wrap */
  --gutter: clamp(16px, 4vw, 40px);
}

/* ---------- Fonts (self-hosted, Latin subset, SIL OFL) ---------- */
@font-face { font-family: "Manrope"; src: url("../fonts/manrope-var-latin.woff") format("woff"); font-weight: 200 800; font-style: normal; font-display: swap; }
@font-face { font-family: "Inter"; src: url("../fonts/inter-var-latin.woff") format("woff"); font-weight: 100 900; font-style: normal; font-display: swap; }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 96px; }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .22s; }

body {
  margin: 0;
  font: 400 1.0625rem/1.65 var(--font-body);
  color: var(--ink);
  background: var(--ivory);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--blue); text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { color: var(--blue-d); }
h1, h2, h3, h4 { font-family: var(--font-head); color: var(--navy); line-height: 1.12; letter-spacing: -.025em; margin: 0 0 .5em; text-wrap: balance; }
h1 { font-size: clamp(2.5rem, 5.6vw, 4.5rem); font-weight: 800; letter-spacing: -.04em; line-height: 1.02; }
h2 { font-size: clamp(1.85rem, 3.4vw, 2.75rem); font-weight: 800; letter-spacing: -.035em; }
h3 { font-size: 1.25rem; font-weight: 700; letter-spacing: -.015em; }
p { margin: 0 0 1em; text-wrap: pretty; }
ul, ol { padding-left: 1.2em; }
address { font-style: normal; }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--teal); outline-offset: 3px; border-radius: 6px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: absolute; left: 16px; top: -60px; background: var(--navy); color: #fff; padding: 10px 16px; border-radius: var(--r-md); z-index: 200; transition: top .2s; }
.skip-link:focus { top: 12px; color: #fff; }

.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: clamp(64px, 9vw, 120px); }
.section-tight { padding-block: clamp(48px, 6vw, 80px); }
.bg-white { background: var(--white); }
.bg-navy { background: var(--navy); color: #C9D3E3; }
.bg-navy h2, .bg-navy h3 { color: #fff; }
.lede { font-size: clamp(1.1rem, 1.6vw, 1.25rem); color: var(--muted-d); max-width: 60ch; }
.muted { color: var(--muted); }
.sec-head { max-width: 720px; margin-bottom: clamp(32px, 4vw, 56px); }
.sec-head p { color: var(--muted-d); font-size: 1.125rem; margin: 0; }
.sec-head-row { display: flex; align-items: end; justify-content: space-between; gap: 24px; flex-wrap: wrap; max-width: none; }
.sec-head-row > div { max-width: 640px; }

/* ---------- Icons ---------- */
.icon { width: 1.25em; height: 1.25em; flex: none; }

/* ---------- Buttons ---------- */
.btn {
  --bg: var(--white); --fg: var(--navy); --bd: var(--line-cool);
  display: inline-flex; align-items: center; justify-content: center; gap: .55em;
  min-height: 48px; padding: .75em 1.4em;
  font: 700 1rem/1.2 var(--font-head); letter-spacing: -.005em;
  color: var(--fg); background: var(--bg); border: 1.5px solid var(--bd); border-radius: var(--r-pill);
  text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease);
}
.btn:hover { color: var(--fg); transform: translateY(-2px); box-shadow: var(--shadow-2); }
.btn:active { transform: translateY(0); box-shadow: none; }
.btn .btn-arrow { transition: transform .25s var(--ease); }
.btn:hover .btn-arrow { transform: translateX(4px); }
.btn-primary { --bg: var(--blue); --fg: #fff; --bd: var(--blue); }
.btn-primary:hover { --bg: var(--blue-d); --bd: var(--blue-d); }
.btn-teal { --bg: var(--teal); --fg: var(--navy); --bd: var(--teal); }
.btn-teal:hover { --bg: #11A595; --bd: #11A595; }
.btn-ghost { --bg: transparent; --fg: var(--navy); --bd: var(--line-cool); }
.btn-ghost:hover { --bd: var(--navy); --bg: var(--white); }
.btn-light { --bg: transparent; --fg: #fff; --bd: rgba(255,255,255,.35); }
.btn-light:hover { --bd: #fff; --fg: #fff; }
.btn-sm { min-height: 42px; padding: .55em 1.1em; font-size: .9375rem; }
.btn-lg { min-height: 54px; padding: .85em 1.7em; font-size: 1.0625rem; }
.btn[disabled], .btn.is-loading { pointer-events: none; opacity: .85; }
.btn.is-loading .btn-arrow { display: none; }
.btn.is-loading::after { content: ""; width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spin .7s linear infinite; }
.btn.is-success { --bg: var(--ok); --bd: var(--ok); --fg: #fff; }
@keyframes spin { to { transform: rotate(360deg); } }

.text-link { display: inline-flex; align-items: center; gap: .4em; font: 700 1rem var(--font-head); color: var(--blue); text-decoration: none; }
.text-link .icon { transition: transform .25s var(--ease); }
.text-link:hover .icon { transform: translateX(4px); }

/* ---------- Top bar & header ---------- */
.topbar { background: var(--navy); color: #B8C4D8; font-size: .875rem; }
.topbar-inner { display: flex; justify-content: space-between; align-items: center; min-height: 38px; gap: 16px; }
.topbar a { color: #DCE4F0; text-decoration: none; }
.topbar a:hover { color: #fff; }
.topbar-info { display: flex; gap: 24px; list-style: none; margin: 0; padding: 0; }
.topbar-info li, .topbar-info a, .topbar-phone { display: inline-flex; align-items: center; gap: 8px; }
.topbar .icon { width: 15px; height: 15px; color: var(--teal); }
.topbar-phone { font-weight: 600; }

.site-header {
  position: sticky; top: 0; z-index: 90;
  background: rgba(248, 247, 242, .82);
  -webkit-backdrop-filter: saturate(160%) blur(14px); backdrop-filter: saturate(160%) blur(14px);
  border-bottom: 1px solid transparent;
  transition: background-color .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.site-header.is-scrolled { background: rgba(255, 255, 255, .94); border-color: var(--line); box-shadow: 0 6px 24px -18px rgba(16,35,63,.5); }
.header-inner { display: flex; align-items: center; gap: 16px; min-height: 78px; transition: min-height .3s var(--ease); }
.site-header.is-scrolled .header-inner { min-height: 66px; }
.brand img { height: 48px; width: auto; }
.main-nav { margin-left: auto; }
.nav-list { display: flex; align-items: center; gap: 2px; list-style: none; margin: 0; padding: 0; }
.nav-link {
  position: relative; display: inline-flex; align-items: center; gap: 4px;
  padding: 10px 10px; border: 0; background: none; cursor: pointer; white-space: nowrap;
  font: 600 .9375rem var(--font-head); color: var(--ink); text-decoration: none; letter-spacing: -.005em;
}
.nav-link::after {
  content: ""; position: absolute; left: 10px; right: 10px; bottom: 5px; height: 2px; border-radius: 2px;
  background: var(--teal); transform: scaleX(0); transform-origin: left; transition: transform .28s var(--ease);
}
.nav-link:hover, .nav-link.is-active { color: var(--navy); }
.nav-link:hover::after, .nav-link.is-active::after, .nav-trigger[aria-expanded="true"]::after { transform: scaleX(1); }
.nav-link .chev { width: 15px; height: 15px; transition: transform .25s var(--ease); }
.nav-trigger[aria-expanded="true"] .chev { transform: rotate(180deg); }
.header-ctas { display: flex; gap: 8px; }
.has-menu { position: relative; }

.mega, .dropdown {
  position: absolute; top: calc(100% + 10px);
  background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: 0 24px 60px -20px rgba(16,35,63,.35);
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity .2s var(--ease), transform .2s var(--ease), visibility 0s linear .2s;
}
.mega.is-open, .dropdown.is-open { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.mega { left: 50%; width: min(880px, 92vw); margin-left: max(-440px, -46vw); }
.mega-inner { display: grid; grid-template-columns: 1.6fr 1fr 1.1fr .9fr; gap: 8px 24px; padding: 24px 28px 20px; }
.mega-col:first-child ul { columns: 2; column-gap: 16px; }
.mega-head { font: 700 .8125rem var(--font-head); color: var(--muted); margin: 0 0 8px; letter-spacing: .01em; }
.mega ul, .dropdown ul { list-style: none; margin: 0; padding: 0; }
.mega li { break-inside: avoid; }
.mega a, .dropdown a {
  display: flex; align-items: center; gap: 10px; padding: 6px 8px; margin-inline: -8px; border-radius: 8px;
  color: var(--ink); text-decoration: none; font-size: .9375rem; transition: background-color .15s;
}
.mega a:hover, .dropdown a:hover { background: var(--ivory); color: var(--navy); }
.mega a img { width: 20px; height: 14px; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); object-fit: cover; }
.mega-all { grid-column: 1 / -1; margin: 10px 0 0 !important; padding: 14px 8px 4px !important; border-top: 1px solid var(--line); border-radius: 0 !important; font: 700 .9375rem var(--font-head) !important; color: var(--blue) !important; background: none !important; }
.mega-all .icon { width: 18px; }
.dropdown { left: -12px; width: 270px; padding: 12px; }
.dropdown li.sep { border-top: 1px solid var(--line); margin-top: 8px; padding-top: 8px; }

.menu-toggle, .menu-close { display: none; width: 46px; height: 46px; border: 1px solid var(--line-cool); background: var(--white); border-radius: 50%; align-items: center; justify-content: center; cursor: pointer; color: var(--navy); }
.mobile-nav { position: fixed; inset: 0; z-index: 150; }
.mobile-backdrop { position: absolute; inset: 0; background: rgba(16,35,63,.5); opacity: 0; transition: opacity .25s; }
.mobile-panel {
  position: absolute; top: 0; right: 0; bottom: 0; width: min(420px, 100%);
  background: var(--white); overflow-y: auto; padding: 16px 20px 32px;
  transform: translateX(100%); transition: transform .32s var(--ease);
}
.mobile-nav.is-open .mobile-backdrop { opacity: 1; }
.mobile-nav.is-open .mobile-panel { transform: none; }
.mobile-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.mobile-top img { height: 40px; width: auto; }
.m-list { list-style: none; margin: 0; padding: 0; }
.m-list > li { border-bottom: 1px solid var(--line); }
.m-list > li > a, .m-trigger { display: flex; width: 100%; justify-content: space-between; align-items: center; padding: 15px 2px; font: 700 1.0625rem var(--font-head); color: var(--navy); text-decoration: none; background: none; border: 0; cursor: pointer; text-align: left; }
.m-trigger .chev { transition: transform .25s; }
.m-trigger[aria-expanded="true"] .chev { transform: rotate(180deg); }
.m-sub { list-style: none; margin: 0 0 14px; padding: 0; }
.m-sub a { display: flex; align-items: center; gap: 10px; padding: 8px 2px; color: var(--ink); text-decoration: none; font-size: .9375rem; }
.m-sub-grid { display: grid; grid-template-columns: 1fr 1fr; column-gap: 12px; }
.m-sub-grid .m-all { grid-column: 1 / -1; }
.m-sub-grid .m-all a { font-weight: 600; color: var(--blue); }
.m-ctas { display: grid; gap: 10px; margin-top: 24px; }
.m-phone { display: flex; justify-content: center; align-items: center; gap: 8px; padding: 10px; font-weight: 600; text-decoration: none; color: var(--navy); }

/* ---------- Hero ---------- */
.hero { position: relative; padding: clamp(40px, 6vw, 80px) 0 clamp(48px, 7vw, 96px); overflow: hidden; }
.hero-grid { display: grid; grid-template-columns: 1.05fr 1fr; align-items: center; gap: clamp(32px, 5vw, 72px); }
.hero h1 { margin-bottom: 24px; }
.hero h1 .line { display: block; }
.hero .lede { margin-bottom: 32px; }
.hero-ctas { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 28px; }
.trustline { display: flex; flex-wrap: wrap; gap: 6px 20px; list-style: none; padding: 0; margin: 0; font: 600 .9375rem var(--font-head); color: var(--navy); }
.trustline li { display: inline-flex; align-items: center; gap: 8px; }
.trustline li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--teal); }

.hero-visual { position: relative; aspect-ratio: 1 / 1.02; max-width: 560px; justify-self: end; width: 100%; }
.hero-photo {
  position: absolute; inset: 6% 6% 0 14%;
  border-radius: 240px 240px var(--r-xl) var(--r-xl);
  background: linear-gradient(160deg, #DCE7FA, #CDEFEA);
  overflow: hidden;
}
.hero-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.hero-routes { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.route { fill: none; stroke: var(--blue); stroke-width: 1.6; stroke-dasharray: 4 6; opacity: .55; }
.route-draw { fill: none; stroke: var(--navy); stroke-width: 1.6; stroke-linecap: round; }
.pin-origin { fill: var(--teal); }
.pin-ring { fill: none; stroke: var(--teal); stroke-width: 1.5; }
.hero-tag {
  position: absolute; display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px 8px 8px; background: var(--white); border-radius: var(--r-pill);
  box-shadow: var(--shadow-2); font: 700 .875rem var(--font-head); color: var(--navy); white-space: nowrap;
}
.hero-tag img { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1px rgba(0,0,0,.06); }
.hero-tag small { display: block; font: 500 .75rem var(--font-body); color: var(--muted); }
.hero-origin { position: absolute; left: 0; bottom: 0; background: var(--navy); color: #fff; border-radius: var(--r-md); padding: 12px 16px; box-shadow: var(--shadow-2); font: 600 .8125rem/1.35 var(--font-body); }
.hero-origin strong { display: block; font: 800 1.0625rem var(--font-head); letter-spacing: -.01em; }

/* Page-load sequence (only when JS has marked the page ready) */
.js .hero [data-load] { opacity: 0; transform: translateY(18px); }
.js .hero.is-loaded [data-load] { opacity: 1; transform: none; transition: opacity .7s var(--ease), transform .7s var(--ease); transition-delay: calc(var(--d, 0) * 1ms); }
.js .hero .hero-photo { opacity: 0; transform: scale(.96); }
.js .hero.is-loaded .hero-photo { opacity: 1; transform: none; transition: opacity .9s var(--ease) .1s, transform 1.1s var(--ease) .1s; }
.js .hero .hero-tag, .js .hero .hero-origin { opacity: 0; transform: translateY(8px); }
.js .hero.is-loaded .hero-tag, .js .hero.is-loaded .hero-origin { opacity: 1; transform: none; transition: opacity .5s var(--ease), transform .5s var(--ease); transition-delay: calc(var(--d, 0) * 1ms); }
.js .hero .route-draw { stroke-dasharray: var(--len); stroke-dashoffset: var(--len); }
.js .hero.is-loaded .route-draw { stroke-dashoffset: 0; transition: stroke-dashoffset 1.3s var(--ease); transition-delay: calc(var(--d, 0) * 1ms); }

/* ---------- Trust strip ---------- */
.trust { background: var(--white); border-block: 1px solid var(--line); }
.trust ul { display: grid; grid-template-columns: repeat(5, 1fr); list-style: none; margin: 0; padding: 0; }
.trust li { display: flex; align-items: center; gap: 12px; padding: 22px 18px; font: 700 .9375rem/1.3 var(--font-head); color: var(--navy); }
.trust li + li { border-left: 1px solid var(--line); }
.trust .icon { width: 26px; height: 26px; color: var(--teal-ink); }

/* ---------- Stats (only rendered when verified figures exist) ---------- */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 24px; }
.stat strong { display: block; font: 800 clamp(2.25rem, 4vw, 3rem)/1 var(--font-head); color: var(--navy); letter-spacing: -.04em; }
.stat span { color: var(--muted-d); }

/* ---------- Editorial split ---------- */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 6vw, 88px); align-items: center; }
.split-media { position: relative; }
.split-media .frame { border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 4 / 5; background: var(--ivory-2); }
.split-media .frame img { width: 100%; height: 100%; object-fit: cover; }
.split-media .frame-sm { position: absolute; right: -6%; bottom: -8%; width: 46%; aspect-ratio: 1; border: 6px solid var(--ivory); border-radius: var(--r-lg); overflow: hidden; }
.split-media .frame-sm img { width: 100%; height: 100%; object-fit: cover; }
.ticks { list-style: none; padding: 0; margin: 24px 0 32px; display: grid; gap: 14px; }
.ticks li { display: grid; grid-template-columns: 28px 1fr; gap: 10px; }
.ticks li .icon { width: 22px; height: 22px; color: var(--teal-ink); margin-top: 2px; }
.ticks strong { display: block; font-family: var(--font-head); color: var(--navy); }

/* ---------- Destination cards ---------- */
.dest-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 20px; }
.dest-card {
  position: relative; display: flex; flex-direction: column; grid-column: span 4;
  background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden;
  text-decoration: none; color: var(--ink);
  transition: border-color .3s var(--ease), box-shadow .3s var(--ease), transform .3s var(--ease);
}
.dest-card:hover { border-color: var(--line-cool); box-shadow: var(--shadow-2); transform: translateY(-3px); color: var(--ink); }
.dest-card.is-feature { grid-column: span 6; }
.dest-media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: linear-gradient(135deg, var(--navy), var(--blue)); }
.dest-card.is-feature .dest-media { aspect-ratio: 16 / 9; }
.dest-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.dest-card:hover .dest-media img { transform: scale(1.05); }
.dest-code {
  position: absolute; right: 16px; bottom: -.14em; font: 800 clamp(4rem, 8vw, 6rem)/1 var(--font-head);
  color: rgba(255,255,255,.92); letter-spacing: -.05em; text-shadow: 0 2px 30px rgba(16,35,63,.35); pointer-events: none;
}
.dest-media.no-img .dest-code { color: rgba(255,255,255,.18); right: auto; left: 20px; bottom: -.1em; font-size: 9rem; }
.dest-body { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.dest-title { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.dest-title img { width: 26px; height: 18px; border-radius: 3px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); object-fit: cover; }
.dest-title h3 { margin: 0; font-size: 1.3rem; }
.dest-body p { color: var(--muted-d); font-size: .975rem; margin-bottom: 14px; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 0 0 18px; }
.chips li { font-size: .8125rem; font-weight: 500; padding: 4px 10px; border-radius: var(--r-pill); background: var(--ivory); color: var(--muted-d); border: 1px solid var(--line); }
.dest-more { margin-top: auto; display: inline-flex; align-items: center; gap: 6px; font: 700 .9375rem var(--font-head); color: var(--blue); }
.dest-more .icon { width: 18px; transition: transform .25s var(--ease); }
.dest-card:hover .dest-more .icon { transform: translateX(4px); }
.dest-card.compact .dest-media { aspect-ratio: 16 / 9; }
.dest-card.compact .dest-code { font-size: 3.5rem; }

/* ---------- Region filter ---------- */
.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px; }
.filter-btn { padding: 9px 16px; border-radius: var(--r-pill); border: 1.5px solid var(--line-cool); background: var(--white); font: 600 .9375rem var(--font-head); color: var(--navy); cursor: pointer; transition: all .2s; }
.filter-btn:hover { border-color: var(--navy); }
.filter-btn[aria-pressed="true"] { background: var(--navy); border-color: var(--navy); color: #fff; }
.dest-card.is-hidden { display: none; }

/* ---------- Services ---------- */
.svc-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.svc { padding: 28px 24px 30px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--white); transition: background-color .25s; }
.svc:hover { background: #FCFBF8; }
.svc-icon { width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center; background: var(--teal-soft); color: var(--teal-ink); margin-bottom: 18px; }
.svc-icon .icon { width: 24px; height: 24px; }
.svc h3 { font-size: 1.125rem; margin-bottom: 8px; }
.svc p { color: var(--muted-d); font-size: .9688rem; margin: 0 0 14px; }
.svc .text-link { font-size: .9375rem; }

.svc-rows { display: grid; gap: 0; }
.svc-row { display: grid; grid-template-columns: 1fr 1.2fr; gap: clamp(24px, 5vw, 72px); padding: clamp(40px, 5vw, 64px) 0; border-top: 1px solid var(--line); align-items: start; scroll-margin-top: 110px; }
.svc-row:first-child { border-top: 0; padding-top: 0; }
.svc-row h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); display: flex; gap: 14px; align-items: center; }
.svc-row .svc-icon { margin: 0; }
.svc-row .media { border-radius: var(--r-lg); overflow: hidden; aspect-ratio: 16/10; margin-top: 20px; background: var(--ivory-2); }
.svc-row .media img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Timeline ---------- */
.timeline { --cols: 6; position: relative; display: grid; grid-template-columns: repeat(var(--cols), 1fr); gap: 20px; list-style: none; margin: 0 0 40px; padding: 0; counter-reset: step; }
.timeline::before { content: ""; position: absolute; left: 22px; width: calc((var(--cols) - 1) * ((100% - (var(--cols) - 1) * 20px) / var(--cols) + 20px)); top: 22px; height: 2px; background: var(--line-cool); }
.timeline::after { content: ""; position: absolute; left: 22px; top: 22px; height: 2px; width: calc((var(--cols) - 1) * ((100% - (var(--cols) - 1) * 20px) / var(--cols) + 20px)); background: var(--teal); transform-origin: left; transform: scaleX(1); }
.js .timeline::after { transform: scaleX(0); transition: transform 1.6s var(--ease) .2s; }
.js .timeline.is-in::after { transform: scaleX(1); }
.timeline li { position: relative; counter-increment: step; }
.timeline li::before {
  content: counter(step); display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%;
  background: var(--white); border: 2px solid var(--navy); color: var(--navy); font: 800 1rem var(--font-head);
  position: relative; z-index: 1; margin-bottom: 18px;
}
.timeline h3 { font-size: 1.0625rem; margin-bottom: 6px; }
.timeline p { font-size: .9375rem; color: var(--muted-d); margin: 0; }

/* ---------- Courses ---------- */
.course-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.course { padding: 22px; border-radius: var(--r-lg); background: var(--ivory); border: 1px solid var(--line); }
.course h3 { font-size: 1.0625rem; margin-bottom: 6px; }
.course p { font-size: .9375rem; color: var(--muted-d); margin-bottom: 12px; }
.course ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 4px 12px; }
.course a { font-size: .875rem; font-weight: 600; text-decoration: none; display: inline-flex; gap: 6px; align-items: center; }
.course a img { width: 16px; height: 11px; border-radius: 2px; }
.course a:hover { text-decoration: underline; }

/* ---------- Scholarships band ---------- */
.schol { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 6vw, 80px); align-items: start; }
.schol .lede { color: #C9D3E3; }
.schol-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.schol-list li { display: grid; grid-template-columns: 52px 1fr; gap: 16px; padding: 22px 0; border-top: 1px solid rgba(255,255,255,.12); }
.schol-list li:last-child { border-bottom: 1px solid rgba(255,255,255,.12); }
.schol-list .svc-icon { background: rgba(19,184,166,.14); color: var(--teal); margin: 0; }
.schol-list h3 { font-size: 1.0625rem; margin-bottom: 4px; }
.schol-list p { margin: 0; font-size: .9688rem; }
.note { font-size: .875rem; color: #9FB0CB; margin-top: 20px; }

/* ---------- Testimonials ---------- */
.quotes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.quote { display: flex; flex-direction: column; margin: 0; padding: 30px 28px; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); }
.quote::before { content: "“"; font: 800 4rem/0.6 var(--font-head); color: var(--teal); height: 30px; }
.quote blockquote { margin: 0 0 24px; font-size: 1.0313rem; line-height: 1.6; color: var(--ink); }
.quote figcaption { margin-top: auto; display: flex; align-items: center; gap: 12px; padding-top: 18px; border-top: 1px solid var(--line); }
.avatar { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--navy); color: #fff; font: 800 .9375rem var(--font-head); flex: none; }
.quote cite { font-style: normal; font: 700 1rem var(--font-head); color: var(--navy); display: block; }
.quote small { color: var(--muted); font-size: .875rem; }

/* ---------- FAQ ---------- */
.faq-wrap { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(32px, 6vw, 80px); align-items: start; }
.faq { border-top: 1px solid var(--line-cool); }
.faq-item { border-bottom: 1px solid var(--line-cool); }
.faq-q { margin: 0; font-size: 1.0625rem; }
.faq-q button {
  display: flex; width: 100%; justify-content: space-between; align-items: center; gap: 20px; text-align: left;
  padding: 22px 2px; background: none; border: 0; cursor: pointer; font: 700 1.0625rem/1.4 var(--font-head); color: var(--navy);
}
.faq-q button:hover { color: var(--blue); }
.faq-chev { width: 22px; height: 22px; flex: none; transition: transform .3s var(--ease); color: var(--muted); }
.faq-q button[aria-expanded="true"] .faq-chev { transform: rotate(180deg); color: var(--teal-ink); }
.faq-a { overflow: hidden; }
.faq-a-inner { padding: 0 40px 24px 2px; color: var(--muted-d); }

/* ---------- CTA banner ---------- */
.cta-band {
  position: relative; overflow: hidden; border-radius: var(--r-xl); padding: clamp(40px, 6vw, 72px);
  background: radial-gradient(120% 140% at 100% 0%, #2457C5 0%, #183E8C 38%, #10233F 78%); color: #D5DEEC;
}
.cta-band::after { content: ""; position: absolute; right: -80px; bottom: -120px; width: 380px; height: 380px; border-radius: 50%; border: 1.5px dashed rgba(19,184,166,.45); }
.cta-band h2 { color: #fff; max-width: 18ch; }
.cta-band p { max-width: 56ch; font-size: 1.125rem; }
.cta-band .actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; position: relative; z-index: 1; }

/* ---------- Consultation form (every page) ---------- */
.consult { padding-block: clamp(64px, 8vw, 104px); background: var(--white); border-top: 1px solid var(--line); scroll-margin-top: 70px; }
.consult-inner { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(32px, 6vw, 80px); align-items: start; }
.consult-copy h2 { font-size: clamp(2rem, 3.6vw, 2.9rem); }
.consult-copy > p { color: var(--muted-d); font-size: 1.0938rem; max-width: 46ch; }
.consult-points { list-style: none; padding: 0; margin: 24px 0; display: grid; gap: 10px; }
.consult-points li { display: flex; gap: 10px; align-items: center; font-weight: 500; }
.consult-points .icon { color: var(--teal-ink); width: 20px; height: 20px; }
.consult-alt { font-size: .9688rem; color: var(--muted-d); }
.consult-alt a { font-weight: 700; }
.consult-form { background: var(--ivory); border: 1px solid var(--line); border-radius: var(--r-lg); padding: clamp(22px, 3.5vw, 36px); }
.consult-form.is-flash { animation: flash 1.2s var(--ease); }
@keyframes flash { 0% { box-shadow: 0 0 0 0 rgba(19,184,166,.55); } 100% { box-shadow: 0 0 0 18px rgba(19,184,166,0); } }

.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 18px; align-items: end; }
.span-2 { grid-column: 1 / -1; }
.field { margin-bottom: 14px; }
.field label { display: block; font: 600 .9063rem var(--font-head); color: var(--navy); margin-bottom: 6px; letter-spacing: -.005em; }
.req { color: var(--danger); }
.optional { font-weight: 500; color: var(--muted); }
.field input[type="text"], .field input[type="email"], .field input[type="tel"], .field input[type="number"], .field input[type="url"], .field select, .field textarea {
  display: block; width: 100%; min-height: 50px; padding: 12px 14px;
  background: var(--white); border: 1.5px solid var(--line-cool); border-radius: var(--r-md);
  font-size: 1rem; color: var(--ink); transition: border-color .2s, box-shadow .2s; appearance: none; -webkit-appearance: none;
}
.field textarea { min-height: 120px; resize: vertical; }
.field input::placeholder, .field textarea::placeholder { color: #98A2B3; }
.field input:hover, .field select:hover, .field textarea:hover { border-color: #B5BFCF; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 4px rgba(36,87,197,.14); }
.select-wrap { position: relative; }
.select-wrap select { padding-right: 42px; cursor: pointer; }
.select-chev { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--muted); pointer-events: none; }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: var(--danger); background: var(--danger-soft); }
.field-err { margin: 6px 0 0; font-size: .875rem; color: var(--danger); min-height: 0; }
.field-err:empty { display: none; }
.field.is-valid input, .field.is-valid select { border-color: #9AD8CF; }
.check { display: flex !important; gap: 12px; align-items: flex-start; font: 400 .9063rem/1.5 var(--font-body) !important; color: var(--muted-d) !important; cursor: pointer; }
.check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--blue); flex: none; }
.hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 8px; }
.form-status { margin: 0; font-size: .9688rem; flex: 1 1 220px; }
.form-status:empty { display: none; }
.form-status.is-error { color: var(--danger); }
.form-success { display: flex; gap: 16px; align-items: flex-start; padding: 22px; border-radius: var(--r-lg); background: var(--ok-soft); border: 1px solid #ABEFC6; color: #054F31; }
.form-success .icon { width: 28px; height: 28px; color: var(--ok); flex: none; }
.form-success h3 { color: #054F31; margin-bottom: 4px; font-size: 1.125rem; }
.form-success p { margin: 0; }
.form-success .btn { margin-top: 14px; }

/* ---------- Page hero (inner pages) ---------- */
.page-hero { padding: clamp(32px, 5vw, 56px) 0 clamp(40px, 6vw, 72px); }
.page-hero h1 { font-size: clamp(2.3rem, 5vw, 3.9rem); max-width: 20ch; }
.page-hero .lede { margin-bottom: 0; }
.crumbs ol { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 0 0 24px; font-size: .875rem; color: var(--muted); }
.crumbs li + li::before { content: "/"; margin-right: 6px; color: #B5BFCF; }
.crumbs a { color: var(--muted-d); text-decoration: none; }
.crumbs a:hover { color: var(--blue); text-decoration: underline; }

/* Destination detail */
.dest-hero { position: relative; color: #fff; background: var(--navy); overflow: hidden; }
.dest-hero-bg { position: absolute; inset: 0; }
.dest-hero-bg img { width: 100%; height: 100%; object-fit: cover; opacity: .5; }
.dest-hero-bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(16,35,63,.96) 0%, rgba(16,35,63,.78) 45%, rgba(16,35,63,.25) 100%); }
.dest-hero .wrap { position: relative; padding-block: clamp(40px, 6vw, 72px) clamp(56px, 8vw, 104px); }
.dest-hero .crumbs ol, .dest-hero .crumbs a { color: #B8C4D8; }
.dest-hero h1 { color: #fff; max-width: 16ch; }
.dest-hero .lede { color: #D5DEEC; }
.dest-hero .flag-big { width: 52px; height: 36px; border-radius: 5px; object-fit: cover; margin-bottom: 20px; box-shadow: 0 0 0 1px rgba(255,255,255,.25); }
.dest-hero .hero-ctas { margin: 28px 0 0; }
.dest-hero-code { position: absolute; right: var(--gutter); bottom: -.16em; font: 800 clamp(8rem, 20vw, 16rem)/1 var(--font-head); color: rgba(255,255,255,.08); letter-spacing: -.06em; pointer-events: none; }

.dest-layout { display: grid; grid-template-columns: 240px 1fr; gap: clamp(32px, 5vw, 64px); align-items: start; }
.toc { position: sticky; top: 100px; font-size: .9375rem; }
.toc p { font: 700 .875rem var(--font-head); color: var(--muted); margin-bottom: 10px; }
.toc ol { list-style: none; padding: 0; margin: 0; border-left: 2px solid var(--line); }
.toc a { display: block; padding: 6px 0 6px 14px; margin-left: -2px; border-left: 2px solid transparent; color: var(--muted-d); text-decoration: none; transition: color .2s, border-color .2s; }
.toc a:hover { color: var(--navy); }
.toc a.is-current { color: var(--navy); border-color: var(--teal); font-weight: 600; }
.prose { max-width: 72ch; }
.prose h2 { font-size: clamp(1.5rem, 2.4vw, 1.9rem); margin-top: 0; }
.prose h3 { margin-top: 1.4em; }
.prose p, .prose li { color: #2F3A50; }
.prose ul, .prose ol { margin: 0 0 1.2em; }
.prose li { margin-bottom: .4em; }
.dsec { padding-bottom: 48px; margin-bottom: 48px; border-bottom: 1px solid var(--line); scroll-margin-top: 100px; }
.dsec:last-child { border-bottom: 0; }
.facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; margin: 0 0 40px; }
.facts div { background: var(--white); padding: 18px 20px; }
.facts dt { font-size: .8125rem; color: var(--muted); margin-bottom: 4px; }
.facts dd { margin: 0; font: 700 1rem/1.35 var(--font-head); color: var(--navy); }
.panel { background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 24px; }
.pill-note { display: flex; gap: 12px; padding: 16px 18px; border-radius: var(--r-md); background: var(--teal-soft); color: #0A4D46; font-size: .9375rem; margin: 20px 0 0; }
.pill-note .icon { color: var(--teal-ink); margin-top: 2px; }
.reviewed { font-size: .875rem; color: var(--muted); }
.link-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.link-list a { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; }
.link-list .icon { width: 16px; height: 16px; }
.schol-cards { display: grid; gap: 12px; }
.schol-cards .panel h3 { font-size: 1.0625rem; margin-bottom: 4px; }
.schol-cards .panel p { margin: 0; color: var(--muted-d); }
.related { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }

/* Blog */
.blog-feature { display: grid; grid-template-columns: 1.2fr 1fr; gap: 0; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-xl); overflow: hidden; margin-bottom: 40px; text-decoration: none; color: var(--ink); }
.blog-feature .media { min-height: 320px; background: linear-gradient(135deg, var(--navy), var(--blue)); }
.blog-feature .media img { width: 100%; height: 100%; object-fit: cover; }
.blog-feature .body { padding: clamp(28px, 4vw, 48px); align-self: center; }
.blog-feature h2 { font-size: clamp(1.6rem, 2.8vw, 2.2rem); }
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.post-card { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; text-decoration: none; color: var(--ink); transition: box-shadow .3s, transform .3s; }
.post-card:hover { box-shadow: var(--shadow-2); transform: translateY(-3px); color: var(--ink); }
.post-card .media { aspect-ratio: 16/9; overflow: hidden; background: linear-gradient(135deg, var(--navy-2), var(--blue)); display: grid; place-items: center; }
.post-card .media img { width: 100%; height: 100%; object-fit: cover; }
.post-card .media .ph { font: 800 1.25rem var(--font-head); color: rgba(255,255,255,.85); padding: 20px; text-align: center; }
.post-card .body { padding: 20px 22px 24px; display: flex; flex-direction: column; flex: 1; }
.post-card h3 { font-size: 1.1875rem; margin-bottom: 8px; }
.post-card p { color: var(--muted-d); font-size: .9688rem; }
.post-meta { display: flex; flex-wrap: wrap; gap: 8px 14px; font-size: .8438rem; color: var(--muted); margin-bottom: 10px; }
.post-meta .cat { font-weight: 600; color: var(--teal-ink); }
.blog-tools { display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; align-items: center; margin-bottom: 28px; }
.search-box { position: relative; flex: 0 1 320px; }
.search-box input { width: 100%; min-height: 46px; padding: 10px 14px 10px 42px; border: 1.5px solid var(--line-cool); border-radius: var(--r-pill); background: var(--white); }
.search-box input:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 4px rgba(36,87,197,.14); }
.search-box .icon { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--muted); width: 18px; }
.empty-state { padding: 40px; text-align: center; border: 1.5px dashed var(--line-cool); border-radius: var(--r-lg); color: var(--muted-d); }
.article { max-width: 760px; margin-inline: auto; }
.article .prose { font-size: 1.0938rem; }
.article-hero { border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 16/8; margin: 32px 0 40px; background: var(--ivory-2); }
.article-hero img { width: 100%; height: 100%; object-fit: cover; }
.inline-cta { display: flex; flex-wrap: wrap; gap: 16px 24px; align-items: center; justify-content: space-between; padding: 28px; border-radius: var(--r-lg); background: var(--navy); color: #C9D3E3; margin: 40px 0; }
.inline-cta h2 { color: #fff; font-size: 1.375rem; margin: 0 0 4px; }
.inline-cta p { margin: 0; }

/* Resource page */
.format-list { list-style: none; padding: 0; margin: 0 0 32px; display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.format-list li { display: grid; grid-template-columns: 200px 1fr; gap: 20px; padding: 18px 22px; background: var(--white); }
.format-list strong { font-family: var(--font-head); color: var(--navy); }
.res-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.res-card { display: block; padding: 22px; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); text-decoration: none; color: var(--ink); transition: border-color .2s, box-shadow .2s; }
.res-card:hover { border-color: var(--line-cool); box-shadow: var(--shadow-1); color: var(--ink); }
.res-card h3 { margin-bottom: 6px; font-size: 1.125rem; }
.res-card p { margin: 0; color: var(--muted-d); font-size: .9375rem; }

/* Apply */
.apply-shell { max-width: 820px; margin-inline: auto; }
.steps-nav { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; list-style: none; padding: 0; margin: 0 0 28px; }
.steps-nav li { font: 600 .875rem var(--font-head); color: var(--muted); }
.steps-nav li::before { content: ""; display: block; height: 4px; border-radius: 4px; background: var(--line-cool); margin-bottom: 10px; transition: background-color .35s var(--ease); }
.steps-nav li.is-done::before, .steps-nav li.is-current::before { background: var(--teal); }
.steps-nav li.is-current { color: var(--navy); }
.apply-card { background: var(--white); border: 1px solid var(--line); border-radius: var(--r-xl); padding: clamp(24px, 4vw, 44px); }
.step-panel[hidden] { display: none; }
.step-panel h2 { font-size: 1.5rem; }
.step-actions { display: flex; justify-content: space-between; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
.js .step-panel.is-entering { animation: stepIn .35s var(--ease); }
@keyframes stepIn { from { opacity: 0; transform: translateX(14px); } to { opacity: 1; transform: none; } }

/* Contact */
.contact-cards { display: grid; gap: 16px; }
.contact-cards .panel h3 { font-size: 1.0625rem; margin-bottom: 8px; }
.contact-cards .panel p, .contact-cards address span { display: block; color: var(--muted-d); }
.contact-row { display: flex; gap: 12px; align-items: center; margin-top: 8px; }
.contact-row .icon { color: var(--teal-ink); }
.map { border: 0; width: 100%; height: 320px; border-radius: var(--r-lg); background: var(--ivory-2); }

/* About */
.values { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--line); }
.values > div { padding: 28px 28px 8px 0; }
.values > div + div { padding-left: 28px; border-left: 1px solid var(--line); }
.notice { padding: 18px 20px; border-radius: var(--r-md); border: 1px dashed #D0A548; background: #FFFAEB; color: #7A4F01; font-size: .9375rem; }

/* 404 */
.nf { text-align: center; padding-block: 100px; }
.nf h1 { font-size: clamp(3rem, 8vw, 6rem); }

/* ---------- Footer ---------- */
.site-footer { background: var(--navy); color: #AEBBD0; font-size: .9375rem; padding-top: clamp(56px, 7vw, 88px); }
.footer-grid { display: grid; grid-template-columns: 1.5fr 1fr 1.1fr .9fr 1.4fr; gap: 32px; padding-bottom: 48px; }
.f-logo { height: 46px; width: auto; background: #fff; padding: 6px 10px; border-radius: 10px; margin-bottom: 18px; }
.f-head { font: 700 1rem var(--font-head); color: #fff; margin-bottom: 14px; letter-spacing: 0; }
.f-links { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.site-footer a { color: #D5DEEC; text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.social { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 20px 0 0; }
.social a { display: inline-block; padding: 7px 14px; border: 1px solid rgba(255,255,255,.2); border-radius: var(--r-pill); font-size: .875rem; }
.social a:hover { border-color: var(--teal); text-decoration: none; }
.f-offices address { margin-bottom: 16px; }
.f-offices address strong { display: block; color: #fff; font-family: var(--font-head); margin-bottom: 4px; }
.f-offices address span { display: block; }
.f-contact { display: grid; gap: 4px; }
.f-contact a { font-weight: 600; }
.footer-base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding-block: 22px; border-top: 1px solid rgba(255,255,255,.12); font-size: .875rem; }
.footer-base p { margin: 0; }
.footer-base ul { display: flex; gap: 20px; list-style: none; margin: 0; padding: 0; }

.wa-float {
  position: fixed; right: 18px; bottom: 18px; z-index: 80;
  display: inline-flex; align-items: center; gap: 8px; padding: 12px 18px 12px 14px;
  background: #1F9D55; color: #fff; border-radius: var(--r-pill); text-decoration: none;
  font: 700 .9375rem var(--font-head); box-shadow: 0 10px 30px -10px rgba(16,35,63,.5);
  transition: transform .2s var(--ease), background-color .2s;
}
.wa-float:hover { color: #fff; background: #198447; transform: translateY(-2px); }
.wa-float .icon { width: 22px; height: 22px; }

/* ---------- Scroll reveal ---------- */
.js [data-reveal] { opacity: 0; transform: translateY(22px); }
.js [data-reveal].is-in { opacity: 1; transform: none; transition: opacity .75s var(--ease), transform .75s var(--ease); transition-delay: calc(var(--i, 0) * 70ms); }
.js [data-reveal="mask"] { opacity: 1; transform: none; }
.js [data-reveal="mask"] > img { clip-path: inset(100% 0 0 0); transform: scale(1.08); }
.js [data-reveal="mask"].is-in > img { clip-path: inset(0); transform: none; transition: clip-path 1.1s var(--ease), transform 1.4s var(--ease); }

/* Safety net: if scripts fail to load, show everything. */
.reveal-all [data-reveal="mask"] > img { clip-path: none !important; transform: none !important; }
.reveal-all [data-reveal], .reveal-all .hero [data-load], .reveal-all .hero .hero-photo, .reveal-all .hero .hero-tag, .reveal-all .hero .hero-origin { opacity: 1 !important; transform: none !important; clip-path: none !important; }
.reveal-all .hero .route-draw { stroke-dashoffset: 0 !important; }
.reveal-all .timeline::after { transform: scaleX(1) !important; }

/* ---------- Responsive ---------- */
@media (max-width: 1340px) {
  .header-ctas .btn-ghost { display: none; }
}
@media (max-width: 1280px) {
  .main-nav, .header-ctas { display: none; }
  .menu-toggle, .menu-close { display: inline-flex; }
  .menu-toggle { margin-left: auto; }
  .footer-grid { grid-template-columns: 1fr 1fr 1fr; }
  .f-brand { grid-column: 1 / -1; }
  .f-offices { grid-column: span 3; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 24px; }
}
@media (max-width: 1024px) {
  .svc-grid, .course-grid { grid-template-columns: repeat(2, 1fr); }
  .trust ul { grid-template-columns: repeat(3, 1fr); }
  .trust li:nth-child(4) { border-left: 0; }
  .trust li:nth-child(n+4) { border-top: 1px solid var(--line); }
  .timeline { grid-template-columns: repeat(3, 1fr); row-gap: 36px; }
  .timeline::before, .timeline::after { display: none; }
  .dest-card, .dest-card.is-feature { grid-column: span 6; }
  .quotes, .blog-grid, .res-grid, .related { grid-template-columns: repeat(2, 1fr); }
  .dest-layout { grid-template-columns: 1fr; }
  .toc { display: none; }
}
@media (max-width: 860px) {
  .topbar-info li:first-child { display: none; }
  .hero-grid, .split, .schol, .faq-wrap, .consult-inner, .svc-row, .blog-feature { grid-template-columns: 1fr; }
  .hero-visual { justify-self: center; max-width: 480px; }
  .split-media { max-width: 520px; }
  .split-media .frame-sm { right: -2%; }
  .facts { grid-template-columns: 1fr 1fr; }
  .values { grid-template-columns: 1fr; }
  .values > div + div { padding-left: 0; border-left: 0; border-top: 1px solid var(--line); }
  .f-offices { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  body { font-size: 1rem; }
  .topbar-info { display: none; }
  .topbar-inner { justify-content: center; }
  .brand img { height: 40px; }
  .header-inner { min-height: 66px; }
  .hero-ctas .btn { flex: 1 1 100%; }
  .trust ul { grid-template-columns: 1fr 1fr; }
  .trust li { padding: 16px 12px; font-size: .875rem; }
  .trust li:nth-child(odd) { border-left: 0; }
  .trust li:nth-child(4) { border-left: 1px solid var(--line); }
  .trust li:nth-child(n+3) { border-top: 1px solid var(--line); }
  .trust li:last-child { grid-column: 1 / -1; border-left: 0; }
  .svc-grid, .course-grid, .quotes, .blog-grid, .res-grid, .related { grid-template-columns: 1fr; }
  .dest-card, .dest-card.is-feature { grid-column: 1 / -1; }
  .timeline { grid-template-columns: 1fr; row-gap: 0; }
  .timeline li { display: grid; grid-template-columns: 44px 1fr; column-gap: 16px; padding-bottom: 24px; }
  .timeline li::before { grid-row: span 2; margin: 0; }
  .timeline li:not(:last-child)::after { content: ""; position: absolute; left: 21px; top: 46px; bottom: 0; width: 2px; background: var(--line-cool); }
  .form-grid { grid-template-columns: 1fr; }
  .form-foot .btn { width: 100%; }
  .facts { grid-template-columns: 1fr; }
  .format-list li { grid-template-columns: 1fr; gap: 4px; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .f-offices { grid-column: 1 / -1; grid-template-columns: 1fr; }
  .wa-float span { display: none; }
  .wa-float { padding: 14px; }
  .hero-tag { font-size: .8125rem; padding: 6px 12px 6px 6px; }
  .hero-tag img { width: 22px; height: 22px; }
  .hero-tag small { display: none; }
  .steps-nav li { font-size: .75rem; }
  .step-actions .btn { flex: 1; }
  .cta-band .actions .btn { flex: 1 1 100%; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .js [data-reveal="mask"] > img { clip-path: none !important; transform: none !important; }
  .js [data-reveal], .js .hero [data-load], .js .hero .hero-photo, .js .hero .hero-tag, .js .hero .hero-origin { opacity: 1 !important; transform: none !important; clip-path: none !important; }
  .js .hero .route-draw { stroke-dashoffset: 0 !important; }
  .js .timeline::after { transform: scaleX(1) !important; }
  @view-transition { navigation: none; }
}

@media print {
  .topbar, .site-header, .consult, .site-footer, .wa-float, .mobile-nav { display: none !important; }
}

/* Cards used outside the 12-column destination grid */
.related .dest-card, .related .dest-card.is-feature { grid-column: auto; }
[data-region].is-hidden { display: none !important; }

/* ==========================================================================
   Destination carousel (homepage)
   ========================================================================== */
.dslider-section {
  --ds-bg: #EEF1F6;
  padding-block: clamp(64px, 8vw, 104px);
  background-color: var(--ds-bg);
  background-image: radial-gradient(rgba(16, 35, 63, .09) 1px, transparent 1.2px);
  background-size: 22px 22px;
  overflow: hidden;
}
.dslider-head { display: grid; grid-template-columns: 1.1fr 1fr auto; align-items: end; gap: 24px 40px; margin-bottom: clamp(28px, 4vw, 44px); }
.dslider-badge {
  display: inline-block; padding: 7px 14px; margin-bottom: 18px;
  border: 1px solid #BFE7E1; border-radius: 6px; background: var(--white);
  font: 800 .8125rem var(--font-head); letter-spacing: .1em; text-transform: uppercase; color: var(--teal-ink);
}
.dslider-title h2 { margin: 0 0 12px; font-size: clamp(2.1rem, 4.2vw, 3.25rem); line-height: 1.04; }
.dslider-title h2 span { display: block; }
.dslider-title h2 .tone { color: #8C9BB3; }
.dslider-sub { margin: 0; color: var(--muted-d); }
.dslider-desc { margin: 0; max-width: 46ch; color: var(--muted-d); font-size: 1.0625rem; }
.dslider-arrows { display: flex; gap: 12px; }
.dslider-arrow {
  width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center; cursor: pointer;
  background: transparent; border: 1.5px solid #C7D0DD; color: var(--navy);
  transition: background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), transform .2s var(--ease);
}
.dslider-arrow .icon { width: 22px; height: 22px; }
.dslider-arrow:hover { background: var(--navy); border-color: var(--navy); color: #fff; }
.dslider-arrow:active { transform: scale(.94); }
.dslider-arrow[disabled] { opacity: .4; pointer-events: none; }

.dslider { --per: 4; --gap: 20px; position: relative; }
.dslider-viewport { overflow: hidden; padding: 8px 0 28px; margin: -8px 0 -28px; touch-action: pan-y; cursor: grab; user-select: none; -webkit-user-select: none; }
.dslider-viewport.is-dragging { cursor: grabbing; }
.dslider-track {
  display: flex; gap: var(--gap); list-style: none; margin: 0; padding: 0;
  will-change: transform; transition: transform .7s cubic-bezier(.22, .8, .24, 1);
}
.dslider-viewport.is-dragging .dslider-track { transition: none; }
.dslide { flex: 0 0 calc((100% - var(--gap) * (var(--per) - 1)) / var(--per)); min-width: 0; display: flex; transition: opacity .4s var(--ease); }

.dcard {
  display: flex; flex-direction: column; width: 100%;
  background: var(--white); border-radius: 20px; padding: 10px;
  box-shadow: 0 1px 2px rgba(16,35,63,.05), 0 8px 24px -16px rgba(16,35,63,.25);
  transition: box-shadow .3s var(--ease), transform .3s var(--ease);
}
.dcard:hover { box-shadow: 0 2px 4px rgba(16,35,63,.06), 0 22px 44px -20px rgba(16,35,63,.4); transform: translateY(-4px); }
.dcard-media {
  position: relative; display: block; aspect-ratio: 16 / 10.5; border-radius: 14px; overflow: hidden;
  background: linear-gradient(135deg, var(--navy), var(--blue));
}
.dcard-media img:not(.dcard-flag) { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); -webkit-user-drag: none; }
.dcard:hover .dcard-media img:not(.dcard-flag) { transform: scale(1.06); }
.dcard-ph { position: absolute; inset: auto 16px -10px auto; font: 800 6rem/1 var(--font-head); color: rgba(255,255,255,.14); letter-spacing: -.05em; }
.dcard-num {
  position: absolute; top: 14px; left: 14px; width: 56px; height: 56px; display: grid; place-items: center;
  border-radius: 10px; border: 1px solid rgba(255,255,255,.45);
  background: linear-gradient(160deg, rgba(255,255,255,.42), rgba(255,255,255,.12));
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  font: 800 1.375rem var(--font-head); color: #fff; text-shadow: 0 1px 6px rgba(16,35,63,.35);
}
.dcard-flag { position: absolute; right: 14px; bottom: 14px; width: 34px; height: 24px; object-fit: cover; border-radius: 4px; box-shadow: 0 0 0 2px #fff, 0 4px 10px rgba(16,35,63,.3); }
.dcard-body { display: flex; flex-direction: column; flex: 1; padding: 18px 6px 6px; }
.dcard-tag {
  align-self: flex-start; padding: 5px 10px; margin-bottom: 14px;
  border: 1px solid #CDD5E1; border-radius: 4px;
  font: 600 .75rem var(--font-head); letter-spacing: .06em; text-transform: uppercase; color: var(--muted-d);
}
.dcard-title { font-size: 1.25rem; margin: 0 0 12px; letter-spacing: -.02em; }
.dcard-title a { color: var(--navy); text-decoration: none; }
.dcard-title a:hover { color: var(--blue); }
.dcard-desc {
  color: var(--muted-d); font-size: .9688rem; line-height: 1.6; margin: 0 0 20px;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.dcard-foot { margin-top: auto; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 4px; }
.dcard-link { display: inline-flex; align-items: center; gap: 3px; font: 700 .8438rem var(--font-head); color: var(--blue); text-decoration: none; white-space: nowrap; }
.dcard-link .icon { width: 15px; height: 15px; transition: transform .25s var(--ease); }
.dcard-link:hover .icon { transform: translateX(4px); }
.dcard-cta {
  display: inline-flex; align-items: center; gap: 5px; padding: 4px 4px 4px 10px; border-radius: 999px;
  background: var(--blue); color: #fff; text-decoration: none; white-space: nowrap;
  font: 700 .7813rem var(--font-head); transition: background-color .25s var(--ease), transform .2s var(--ease);
}
.dcard-cta:hover { background: var(--blue-d); color: #fff; }
.dcard-cta-ic { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--navy); transition: transform .3s var(--ease); }
.dcard-cta-ic svg { width: 14px; height: 14px; }
.dcard-cta:hover .dcard-cta-ic { transform: rotate(45deg); }

.dslider-controls { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 36px; flex-wrap: wrap; }
.dslider-dots { display: flex; align-items: center; gap: 4px; }
.dslider-dot { width: 26px; height: 26px; padding: 0; border: 0; background: none; cursor: pointer; display: grid; place-items: center; }
.dslider-dot::before { content: ""; width: 9px; height: 9px; border-radius: 999px; background: #B9C3D2; transition: width .35s var(--ease), background-color .35s var(--ease); }
.dslider-dot:hover::before { background: #8C9BB3; }
.dslider-dot[aria-current="true"]::before { width: 26px; background: var(--teal); }
.dslider-pause { width: 34px; height: 34px; border-radius: 50%; border: 1.5px solid #C7D0DD; background: var(--white); color: var(--navy); cursor: pointer; display: grid; place-items: center; }
.dslider-pause svg { width: 14px; height: 14px; }
.dslider-pause .i-play, .dslider-pause[aria-pressed="true"] .i-pause { display: none; }
.dslider-pause[aria-pressed="true"] .i-play { display: block; }
.dslider-all { margin-left: 8px; }

@media (max-width: 1280px) { .dslider { --per: 3; } }
@media (max-width: 1024px) {
  .dslider-head { grid-template-columns: 1fr auto; }
  .dslider-desc { grid-column: 1 / -1; grid-row: 2; }
}
@media (max-width: 960px) { .dslider { --per: 2; --gap: 18px; } }
@media (max-width: 680px) { .dslider { --per: 1; } }
@media (max-width: 600px) {
  .dslider { --per: 1; --gap: 14px; }
  .dslider-head { grid-template-columns: 1fr; }
  .dslider-arrows { display: none; }
  .dcard-num { width: 46px; height: 46px; font-size: 1.125rem; }
  .dcard-cta { padding-left: 12px; font-size: .8125rem; }
  .dslider-all { margin: 6px 0 0; flex-basis: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .dslider-track, .dcard, .dcard-media img { transition: none !important; }
}
.dslider-dots.is-counter { gap: 12px; }
.dslider-count { font: 700 .875rem var(--font-head); color: var(--navy); font-variant-numeric: tabular-nums; min-width: 52px; }
.dslider-bar { display: block; width: 120px; height: 3px; border-radius: 3px; background: #CDD5E1; overflow: hidden; }
.dslider-bar span { display: block; height: 100%; background: var(--teal); transform-origin: left; transition: transform .5s var(--ease); }

/* ==========================================================================
   Top bar, header and hero slider (v2 — based on supplied sample)
   ========================================================================== */
.topbar { background: var(--blue); color: #E6EDFB; font-size: .875rem; }
.topbar-inner { min-height: 40px; }
.topbar-info { gap: 28px; }
.topbar a { color: #fff; }
.topbar a:hover { color: #fff; text-decoration: underline; }
.topbar .icon { color: #CFE0FF; width: 16px; height: 16px; }
.topbar-hours { margin: 0; display: inline-flex; align-items: center; gap: 8px; }
.tb-loc span { letter-spacing: .01em; }

.site-header { background: var(--white); -webkit-backdrop-filter: none; backdrop-filter: none; border-bottom: 1px solid var(--line); }
.site-header.is-scrolled { background: var(--white); }
.header-inner { min-height: 76px; }
.main-nav { margin-inline: auto; }
.nav-link { font-size: .9688rem; color: #2A3550; }
.nav-link:hover, .nav-link.is-active { color: var(--blue); }
.nav-link::after { background: var(--blue); bottom: 2px; height: 2.5px; }
.header-ctas { align-items: center; gap: 22px; }
.header-call { display: flex; flex-direction: column; line-height: 1.2; text-decoration: none; }
.header-call small { font-size: .75rem; color: var(--muted); }
.header-call strong { font: 800 1rem var(--font-head); color: var(--navy); letter-spacing: -.01em; white-space: nowrap; }
.header-call:hover strong { color: var(--blue); }

/* Pill button with a round arrow badge */
.pill-btn {
  --pb-bg: var(--blue); --pb-fg: #fff; --pb-ic-bg: var(--navy); --pb-ic-fg: #fff; --pb-bd: var(--blue);
  display: inline-flex; align-items: center; gap: 12px; min-height: 46px; padding: 5px 5px 5px 20px;
  border-radius: 999px; border: 1.5px solid var(--pb-bd); background: var(--pb-bg); color: var(--pb-fg);
  font: 700 .9375rem var(--font-head); text-decoration: none; white-space: nowrap;
  transition: background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), transform .2s var(--ease), box-shadow .25s var(--ease);
}
.pill-btn:hover { --pb-bg: var(--blue-d); --pb-bd: var(--blue-d); color: var(--pb-fg); transform: translateY(-2px); box-shadow: 0 12px 28px -12px rgba(36,87,197,.6); }
.pill-btn:active { transform: none; box-shadow: none; }
.pill-ic { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--pb-ic-bg); color: var(--pb-ic-fg); transition: transform .35s var(--ease); flex: none; }
.pill-ic .icon { width: 16px; height: 16px; stroke-width: 2.2; }
.pill-btn:hover .pill-ic { transform: rotate(45deg); }
.pill-lg { min-height: 58px; padding: 6px 6px 6px 28px; font-size: 1.0625rem; gap: 16px; }
.pill-lg .pill-ic { width: 44px; height: 44px; }
.pill-outline { --pb-bg: transparent; --pb-bd: rgba(255,255,255,.75); --pb-ic-bg: #fff; --pb-ic-fg: var(--navy); }
.pill-outline:hover { --pb-bg: rgba(255,255,255,.1); --pb-bd: #fff; box-shadow: none; }

/* Hero slider */
.hero-slider {
  position: relative; overflow: hidden; background: var(--navy); color: #fff;
  min-height: clamp(620px, calc(100svh - 116px), 880px); display: flex; flex-direction: column;
}
.hs-slides { position: absolute; inset: 0; }
.hs-slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity 1s var(--ease), visibility 0s linear 1s; }
.hs-slide.is-active { opacity: 1; visibility: visible; transition: opacity 1s var(--ease), visibility 0s; z-index: 1; }
.hs-media { position: absolute; inset: 0; }
.hs-media img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); transition: transform 8s linear; }
.hs-slide.is-active .hs-media img { transform: scale(1); }
.hs-media::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(90deg, rgba(9,22,44,.94) 0%, rgba(9,22,44,.82) 30%, rgba(9,22,44,.45) 62%, rgba(9,22,44,.2) 100%),
    linear-gradient(0deg, rgba(9,22,44,.85) 0%, rgba(9,22,44,0) 34%);
}
.hs-content { position: relative; z-index: 2; height: 100%; display: flex; flex-direction: column; justify-content: center; padding-top: 40px; padding-bottom: 170px; }
.hs-eyebrow { display: inline-flex; align-items: center; gap: 12px; margin: 0 0 18px; font: 800 .875rem var(--font-head); letter-spacing: .14em; text-transform: uppercase; color: #5FE3D3; }
.hs-eyebrow::before { content: ""; width: 30px; height: 2px; background: var(--teal); }
.hs-title { margin: 0 0 22px; max-width: 15ch; font-size: clamp(2.6rem, 5.6vw, 4.75rem); line-height: 1.02; letter-spacing: -.04em; color: #fff; }
.hs-title span { display: block; color: #3FD5C3; }
.hs-text { margin: 0 0 34px; max-width: 54ch; font-size: clamp(1.0625rem, 1.5vw, 1.25rem); line-height: 1.6; color: #D2DBEA; }
.hs-ctas { display: flex; flex-wrap: wrap; gap: 16px; }

/* text entrance on each slide change */
.js .hs-slide [data-hs] { opacity: 0; transform: translateY(26px); }
.js .hs-slide.is-active [data-hs] { opacity: 1; transform: none; transition: opacity .8s var(--ease), transform .8s var(--ease); }
.js .hs-slide.is-active [data-hs="0"] { transition-delay: .25s; }
.js .hs-slide.is-active [data-hs="1"] { transition-delay: .4s; }
.js .hs-slide.is-active [data-hs="2"] { transition-delay: .55s; }
.js .hs-slide.is-active [data-hs="3"] { transition-delay: .7s; }
.reveal-all .hs-slide.is-active [data-hs] { opacity: 1 !important; transform: none !important; }

.hs-bottom { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; padding-bottom: 34px; }
.hs-facts { display: flex; gap: clamp(28px, 4vw, 56px); list-style: none; margin: 0; padding: 22px 0 0; border-top: 1px solid rgba(255,255,255,.22); }
.hs-facts strong { display: block; font: 800 clamp(1.6rem, 2.4vw, 2rem)/1.1 var(--font-head); letter-spacing: -.03em; color: #fff; }
.hs-facts span { display: block; margin-top: 4px; font-size: .9375rem; color: #B9C6DB; }
.hs-controls { display: flex; align-items: center; gap: 12px; }
.hs-count { margin: 0 10px 0 0; font: 700 1.125rem var(--font-head); color: #fff; font-variant-numeric: tabular-nums; }
.hs-count b { color: #3FD5C3; }
.hs-bars { display: flex; gap: 8px; margin-right: 10px; }
.hs-bar { width: 48px; height: 22px; padding: 0; border: 0; background: none; cursor: pointer; display: flex; align-items: center; }
.hs-bar::before { content: ""; position: absolute; }
.hs-bar span { position: relative; display: block; width: 100%; height: 3px; border-radius: 3px; background: rgba(255,255,255,.3); overflow: hidden; }
.hs-bar span::after { content: ""; position: absolute; inset: 0; background: var(--teal); transform: scaleX(0); transform-origin: left; }
.hs-bar[aria-current="true"] span::after { transform: scaleX(1); }
.hero-slider.is-playing .hs-bar[aria-current="true"] span::after { animation: hsFill var(--hs-dur, 6.5s) linear forwards; }
.hero-slider.is-held .hs-bar[aria-current="true"] span::after { animation-play-state: paused; }
@keyframes hsFill { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.hs-btn { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; cursor: pointer; border: 1.5px solid rgba(255,255,255,.45); background: transparent; color: #fff; transition: background-color .25s, color .25s, border-color .25s; }
.hs-btn:hover { background: #fff; color: var(--navy); border-color: #fff; }
.hs-btn .icon { width: 18px; height: 18px; stroke-width: 2; }
.hs-btn .i-play, .hs-btn[aria-pressed="true"] .i-pause { display: none; }
.hs-btn[aria-pressed="true"] .i-play { display: grid; }
.hs-btn .i-pause, .hs-btn .i-play { place-items: center; }
.hs-btn .i-play .icon { fill: currentColor; }

/* Floating contact buttons */
.float-stack { position: fixed; right: 18px; bottom: 22px; z-index: 80; display: grid; gap: 12px; }
.float-btn { width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center; color: #fff; border: 3px solid #fff; box-shadow: 0 10px 26px -8px rgba(16,35,63,.55); transition: transform .2s var(--ease); }
.float-btn:hover { color: #fff; transform: translateY(-2px) scale(1.04); }
.float-btn .icon { width: 24px; height: 24px; }
.float-call { background: var(--blue); }
.float-wa { background: #1FA855; }

@media (max-width: 1360px) { .header-call { display: none; } }
@media (max-width: 1280px) {
  .header-ctas { display: flex; margin-left: auto; }
  .menu-toggle { margin-left: 0; }
}
@media (max-width: 1024px) {
  .topbar-info .tb-loc { display: none; }
  .hs-bottom { flex-direction: column; align-items: flex-start; gap: 22px; }
  .hs-content { padding-bottom: 230px; }
}
@media (max-width: 860px) {
  .topbar-info li:first-child { display: inline-flex; }
  .topbar-info .tb-mail { display: none; }
}
@media (max-width: 640px) {
  .topbar-info { display: flex; }
  .topbar-inner { justify-content: space-between; }
  .header-ctas .pill-btn { display: none; }
  .hero-slider { min-height: 0; }
  .hs-slides { position: relative; inset: auto; display: grid; }
  .hs-slide { position: relative; inset: auto; grid-area: 1 / 1; }
  .hs-content { padding-top: 64px; padding-bottom: 48px; min-height: 560px; }
  .hs-media::after { background: linear-gradient(180deg, rgba(9,22,44,.72) 0%, rgba(9,22,44,.86) 55%, rgba(9,22,44,.95) 100%); }
  .hs-ctas { flex-direction: column; align-items: stretch; }
  .hs-ctas .pill-btn { justify-content: space-between; }
  .hs-bottom { position: relative; background: #0B1C36; padding-top: 24px; padding-bottom: 28px; }
  .hs-facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; width: 100%; border-top: 0; padding-top: 0; }
  .hs-facts strong { font-size: 1.375rem; }
  .hs-facts span { font-size: .8125rem; line-height: 1.35; }
  .hs-controls { width: 100%; }
  .hs-bars { flex: 1; }
  .hs-bar { width: auto; flex: 1; }
  .float-stack { right: 14px; bottom: 16px; }
  .float-btn { width: 50px; height: 50px; }
}
@media (max-width: 420px) {
  .topbar-hours { display: none; }
  .topbar-inner { justify-content: center; }
  .hs-count { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .hs-media img { transform: none !important; }
}
.hs-bar[aria-current="true"] span { background: rgba(255,255,255,.55); }
.hero-slider:not(.is-playing) .hs-bar[aria-current="true"] span::after { transform: scaleX(1); animation: none; }
.footer-base ul { flex-wrap: wrap; gap: 8px 20px; }

/* ---------- Header: logo + dropdown placement (v3) ----------
   Nav items stretch to the full header height so every dropdown can hang
   exactly 8px below the header's bottom edge. The mega menu is positioned
   against the header container, so it never extends past the page content. */
.brand img { height: 56px; width: auto; }
.header-inner { position: relative; align-items: stretch; }
.brand, .header-ctas, .menu-toggle { align-self: center; }
.main-nav { align-self: stretch; }
@media (min-width: 1281px) { .main-nav { display: flex; } }
.nav-list { height: 100%; align-items: stretch; }
.nav-list > li { display: flex; align-items: center; }
.has-menu.has-mega { position: static; }
.mega, .dropdown { top: calc(100% + 9px); } /* 1px header border + 8px gap */
.mega { left: var(--gutter); right: var(--gutter); width: auto; margin-left: 0; }
.mega::before, .dropdown::before { content: ""; position: absolute; left: 0; right: 0; top: -10px; height: 10px; } /* hover bridge across the gap */
.mega-inner { grid-template-columns: 1.7fr 1fr 1.1fr .8fr; gap: 8px 32px; padding: 26px 32px 20px; }
.mobile-top img { height: 42px; width: auto; }
.f-logo { height: 64px; width: auto; padding: 8px 12px; }
@media (max-width: 640px) { .brand img { height: 44px; } }
.brand { flex: none; display: block; }
.brand picture, .brand img { display: block; max-width: none; }
.nav-link { padding-inline: 9px; }
.nav-link::after { left: 9px; right: 9px; }
.header-call { display: none; }
.consult-inner > *, .split > *, .faq-wrap > *, .schol > * { min-width: 0; }
.consult-copy h2 { overflow-wrap: anywhere; }

/* ---------- Nav hover: sliding background fill (v4) ----------
   The fill sweeps in from the left on hover and out to the right on leave.
   The current page and an open dropdown keep the fill. */
.nav-link { z-index: 0; border-radius: 8px; padding-block: 9px; transition: color .3s var(--ease); }
.nav-link::after { display: none; }
.nav-link::before {
  content: ""; position: absolute; inset: 0; z-index: -1; border-radius: 8px;
  background: var(--blue);
  transform: scaleX(0); transform-origin: right center;
  transition: transform .38s cubic-bezier(.65, 0, .35, 1);
}
.nav-link:hover, .nav-link:focus-visible, .nav-link.is-active, .nav-trigger[aria-expanded="true"] { color: #fff; }
.nav-link:hover::before, .nav-link:focus-visible::before, .nav-link.is-active::before, .nav-trigger[aria-expanded="true"]::before {
  transform: scaleX(1); transform-origin: left center;
}
.nav-link:focus-visible { outline-offset: 2px; }
/* Dropdowns: coloured top edge, matching the active fill */
.mega, .dropdown { border-top: 3px solid var(--blue); border-top-left-radius: 6px; border-top-right-radius: 6px; }

/* ---------- Mobile layout (v4, based on supplied sample) ---------- */
.mobile-cta-bar { display: none; }
@media (max-width: 1280px) {
  .menu-toggle { border-radius: 10px; width: 46px; height: 46px; border-color: #CDD5E1; }
  .menu-toggle .icon { width: 24px; height: 24px; }
}
@media (max-width: 768px) {
  /* Sticky bottom bar: Call + Free Counselling */
  .mobile-cta-bar {
    display: grid; grid-template-columns: 1fr 1fr; position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
    padding-bottom: env(safe-area-inset-bottom); background: var(--navy);
    box-shadow: 0 -6px 20px -8px rgba(16,35,63,.45);
  }
  .mobile-cta-bar a {
    display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 58px;
    font: 800 1.0625rem var(--font-head); color: #fff; text-decoration: none;
  }
  .mobile-cta-bar .icon { width: 22px; height: 22px; }
  .mcb-call { background: var(--navy); }
  .mcb-call:hover { background: var(--navy-2); color: #fff; }
  .mcb-cta { background: var(--blue); }
  .mcb-cta:hover { background: var(--blue-d); color: #fff; }
  body { padding-bottom: calc(58px + env(safe-area-inset-bottom)); }
  .float-stack { bottom: calc(58px + 16px + env(safe-area-inset-bottom)); right: 14px; }
}
@media (max-width: 640px) {
  .topbar { display: none; }
  .header-inner { min-height: 68px; gap: 10px; }
  .brand img { height: 38px; }
  .header-ctas { gap: 10px; }
  .header-ctas .header-apply { display: inline-flex; min-height: 42px; padding: 4px 4px 4px 14px; gap: 8px; font-size: .875rem; }
  .header-ctas .header-apply .pill-ic { width: 32px; height: 32px; }
  .menu-toggle { width: 44px; height: 44px; }
  /* Hero: stacked, full-width buttons */
  .hs-content { padding-top: 48px; }
  .hs-eyebrow { font-size: .8125rem; letter-spacing: .12em; }
  .hs-title { font-size: clamp(2.25rem, 10vw, 2.75rem); }
  .hs-ctas .pill-btn { width: 100%; justify-content: space-between; }
}
@media (max-width: 360px) {
  .brand img { height: 32px; }
  .header-ctas .header-apply span:first-child { font-size: .8125rem; }
}
@media (max-width: 330px) { .header-ctas .header-apply { display: none; } }

/* ---------- Hero right-side visual (v4, based on supplied sample) ----------
   Frosted glass panel that blurs the slide photo behind it, soft colour glows,
   a dot grid, the student cut-out rising out of the panel, and frosted cards. */
.hs-visual-wrap { display: none; }
@media (min-width: 1100px) {
  .hs-content > * { max-width: 58%; }
  .hs-visual-wrap {
    display: flex; justify-content: flex-end; align-items: center;
    position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin-inline: auto; z-index: 2;
    padding-top: 36px; padding-bottom: 150px; pointer-events: none;
  }
  .hs-visual { position: relative; height: 100%; max-height: 560px; aspect-ratio: 46 / 54; margin-right: 10px; }
  .hs-glass {
    position: absolute; left: 13%; right: 0; top: 20%; bottom: 0; border-radius: 40px; overflow: hidden;
    background: linear-gradient(155deg, rgba(63, 213, 195, .42) 0%, rgba(36, 87, 197, .28) 70%, rgba(36, 87, 197, .18) 100%);
    -webkit-backdrop-filter: blur(18px) saturate(150%); backdrop-filter: blur(18px) saturate(150%);
    border: 1px solid rgba(255, 255, 255, .38);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 30px 60px -30px rgba(0, 0, 0, .55);
  }
  .hs-dots {
    position: absolute; top: 22px; right: 22px; width: 92px; height: 74px;
    background-image: radial-gradient(rgba(255, 255, 255, .8) 1.6px, transparent 1.8px);
    background-size: 18px 18px;
  }
  .hs-blob { position: absolute; border-radius: 50%; filter: blur(46px); opacity: .6; }
  .hs-blob-1 { width: 42%; aspect-ratio: 1; left: 0; top: 12%; background: #13B8A6; }
  .hs-blob-2 { width: 50%; aspect-ratio: 1; right: -8%; bottom: 6%; background: #2457C5; }
  .hs-person {
    position: absolute; left: 13%; right: 0; bottom: 0; width: 87%; height: 100%;
    object-fit: contain; object-position: center bottom;
    filter: drop-shadow(0 24px 30px rgba(0, 0, 0, .35));
    border-bottom-left-radius: 40px; border-bottom-right-radius: 40px;
  }
  .hs-card, .hs-chip {
    position: absolute; pointer-events: auto;
    background: rgba(255, 255, 255, .8); color: var(--navy);
    -webkit-backdrop-filter: blur(14px) saturate(160%); backdrop-filter: blur(14px) saturate(160%);
    border: 1px solid rgba(255, 255, 255, .75); box-shadow: 0 18px 40px -18px rgba(9, 22, 44, .55);
  }
  .hs-card { left: -6%; bottom: 20%; display: flex; align-items: center; gap: 14px; padding: 14px 24px 14px 16px; border-radius: 18px; }
  .hs-flags { display: flex; }
  .hs-flags img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2.5px solid #fff; box-shadow: 0 2px 6px rgba(16, 35, 63, .2); }
  .hs-flags img + img { margin-left: -12px; }
  .hs-card-text { display: flex; flex-direction: column; line-height: 1.25; }
  .hs-card-text strong { font: 800 1.375rem var(--font-head); letter-spacing: -.02em; }
  .hs-card-text small { font-size: .875rem; color: var(--muted-d); }
  .hs-chip { top: 9%; right: -3%; display: inline-flex; align-items: center; gap: 10px; padding: 9px 16px 9px 9px; border-radius: 999px; font: 700 .875rem var(--font-head); white-space: nowrap; }
  .hs-chip-ic { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--teal); color: #fff; }
  .hs-chip-ic .icon { width: 16px; height: 16px; stroke-width: 2.4; }

  /* entrance, once on page load */
  .js .hs-visual > * { opacity: 0; transform: translateY(24px); }
  .js .hero-slider.is-ready .hs-visual > * { opacity: 1; transform: none; transition: opacity .9s var(--ease), transform .9s var(--ease); }
  .js .hero-slider.is-ready .hs-glass { transition-delay: .15s; }
  .js .hero-slider.is-ready .hs-person { transition-delay: .35s; }
  .js .hero-slider.is-ready .hs-card { transition-delay: .75s; }
  .js .hero-slider.is-ready .hs-chip { transition-delay: .95s; }
  .reveal-all .hs-visual > * { opacity: 1 !important; transform: none !important; }
}
@media (min-width: 1100px) and (max-width: 1280px) {
  .hs-visual { max-height: 480px; }
  .hs-card { left: -10%; padding: 12px 18px 12px 12px; }
  .hs-flags img { width: 34px; height: 34px; }
  .hs-chip { right: 0; }
}
@media (prefers-reduced-motion: reduce) { .js .hs-visual > * { opacity: 1 !important; transform: none !important; } }
@media (min-width: 1100px) {
  .hs-content > * { max-width: 54%; }
  .hs-text { max-width: min(54%, 48ch); }
  .hs-card { left: -2%; }
}
@media (min-width: 1100px) and (max-width: 1280px) {
  .hs-content > * { max-width: 52%; }
  .hs-title { font-size: clamp(2.6rem, 5vw, 4rem); }
  .hs-card { left: -4%; }
}
/* Text turns white as the fill passes under it, and back to dark at once on leave */
.nav-link { transition: color .12s linear; }
.nav-link:hover, .nav-link:focus-visible, .nav-trigger[aria-expanded="true"] { transition: color .18s linear .16s; }

/* ---------- v5: top bar gradient, flush dropdowns, hero student image ---------- */
.topbar { background: linear-gradient(90deg, #7b2a7e 0%, #10015f 100%); color: #F1E9F8; }
.topbar .icon { color: #E5C9F0; }

/* Dropdowns sit directly on the header's bottom edge — no gap */
.mega, .dropdown { top: calc(100% + 1px); }
.mega::before, .dropdown::before { display: none; }

@media (min-width: 1100px) {
  .hs-visual { aspect-ratio: 525 / 640; max-height: 580px; }
  .hs-visual picture { position: absolute; inset: 0; display: block; }
  .hs-person {
    left: 0; right: 0; top: 0; bottom: 0; width: 100%; height: 100%;
    object-fit: contain; object-position: center bottom; border-radius: 0;
    filter: drop-shadow(0 26px 34px rgba(0, 0, 0, .38));
  }
  /* frosted backplate offset behind the image's green shape */
  .hs-glass { left: 7%; right: -6%; top: 11%; bottom: -4%; border-radius: 44px;
    background: linear-gradient(155deg, rgba(255,255,255,.22), rgba(123,42,126,.18) 60%, rgba(16,1,95,.22)); }
  .hs-dots { position: absolute; top: 16%; right: -3%; width: 20%; height: 13%; z-index: 1; }
  .hs-card { left: -14%; bottom: 13%; z-index: 2; }
  .hs-chip { top: 4%; right: -8%; z-index: 2; }
  .hs-blob-1 { left: -8%; top: 22%; }
  .js .hero-slider.is-ready .hs-visual picture { transition-delay: .35s; }
}
@media (min-width: 1100px) and (max-width: 1280px) {
  .hs-visual { max-height: 500px; }
  .hs-card { left: -16%; }
  .hs-chip { right: -2%; }
}
@media (min-width: 1100px) {
  .hs-card { left: -7%; }
  .hs-chip { right: 0; }
  .hs-glass { right: 0; }
  .hs-dots { right: 2%; }
  .hs-visual { margin-right: 0; }
}
@media (min-width: 1100px) and (max-width: 1365px) {
  .hs-content > * { max-width: 50%; }
  .hs-text { max-width: min(50%, 46ch); }
  .hs-visual { max-height: 500px; }
  .hs-card { left: -6%; padding: 12px 18px 12px 12px; }
  .hs-card-text strong { font-size: 1.2rem; }
}

/* ==========================================================================
   Mobile menu (v6) — drops down from the header, based on supplied sample
   ========================================================================== */
.mnav, .mnav-backdrop { display: none; }
.burger { position: relative; display: block; width: 22px; height: 16px; }
.burger span { position: absolute; left: 0; width: 100%; height: 2px; border-radius: 2px; background: currentColor; transition: transform .35s var(--ease), opacity .2s, top .35s var(--ease); }
.burger span:nth-child(1) { top: 0; }
.burger span:nth-child(2) { top: 7px; }
.burger span:nth-child(3) { top: 14px; }
.menu-toggle.is-open .burger span:nth-child(1) { top: 7px; transform: rotate(45deg); }
.menu-toggle.is-open .burger span:nth-child(2) { opacity: 0; transform: scaleX(.2); }
.menu-toggle.is-open .burger span:nth-child(3) { top: 7px; transform: rotate(-45deg); }

@media (max-width: 1280px) {
  .mnav { display: block; position: absolute; left: 0; right: 0; top: 100%; z-index: 95; }
  .mnav[hidden] { display: none; }
  .mnav-panel {
    background: var(--white); border-top: 1px solid var(--line);
    box-shadow: 0 28px 40px -24px rgba(16, 35, 63, .45);
    max-height: calc(100dvh - var(--mnav-top, 110px)); overflow-y: auto; overscroll-behavior: contain;
    padding: 4px var(--gutter) 24px;
    clip-path: inset(0 0 100% 0); transition: clip-path .5s cubic-bezier(.65, 0, .35, 1);
  }
  .mnav.is-open .mnav-panel { clip-path: inset(0 0 -60px 0); }
  .mnav-list, .mnav-foot { list-style: none; margin: 0 auto; padding: 0; max-width: calc(var(--wrap) - 2 * var(--gutter)); }
  .mnav-item { border-bottom: 1px solid var(--line); opacity: 0; transform: translateY(-10px); transition: opacity .25s, transform .3s var(--ease); }
  .mnav.is-open .mnav-item { opacity: 1; transform: none; transition: opacity .4s var(--ease), transform .45s var(--ease); transition-delay: calc(var(--i, 0) * 45ms + 140ms); }
  .mnav-link {
    display: block; padding: 16px 2px; text-decoration: none;
    font: 700 1.0625rem var(--font-head); color: #3A4560; letter-spacing: -.01em;
    transition: color .2s, padding-left .3s var(--ease);
  }
  .mnav-link:hover { color: var(--blue); padding-left: 8px; }
  .mnav-link.is-active { color: var(--blue); }
  .mnav-row { display: flex; align-items: stretch; }
  .mnav-row .mnav-link { flex: 1; }
  .mnav-toggle {
    flex: none; width: 54px; margin: 10px 0; border: 0; border-left: 1px solid var(--line);
    background: none; color: var(--muted); cursor: pointer; display: grid; place-items: center; transition: color .2s;
  }
  .mnav-toggle .icon { width: 20px; height: 20px; transition: transform .35s var(--ease); }
  .mnav-toggle[aria-expanded="true"] { color: var(--blue); }
  .mnav-toggle[aria-expanded="true"] .icon { transform: rotate(180deg); }
  .mnav-sub { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .42s var(--ease); }
  .mnav-sub.is-open { grid-template-rows: 1fr; }
  .mnav-sub-inner { overflow: hidden; min-height: 0; }
  .mnav-sub-inner > * { opacity: 0; transition: opacity .25s; }
  .mnav-sub.is-open .mnav-sub-inner > * { opacity: 1; transition: opacity .35s .12s; }
  .mnav-sub-grid, .mnav-sub-list { list-style: none; margin: 0; padding: 0 0 12px; }
  .mnav-sub-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0 14px; }
  .mnav-sub-grid a, .mnav-sub-list a { display: flex; align-items: center; gap: 10px; padding: 9px 4px; color: var(--ink); text-decoration: none; font-size: .9688rem; border-radius: 6px; transition: background-color .2s, color .2s; }
  .mnav-sub-grid a:hover, .mnav-sub-list a:hover { background: var(--ivory); color: var(--blue); }
  .mnav-sub-grid img { width: 20px; height: 14px; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); object-fit: cover; }
  .mnav-all { display: inline-flex; align-items: center; gap: 6px; margin: 2px 4px 16px; font: 700 .9375rem var(--font-head); color: var(--blue); text-decoration: none; }
  .mnav-all .icon { width: 16px; height: 16px; }
  .mnav-foot { display: flex; flex-direction: column; gap: 12px; padding-top: 22px; opacity: 0; transition: opacity .3s; }
  .mnav.is-open .mnav-foot { opacity: 1; transition: opacity .4s .45s; }
  .mnav-foot .pill-btn { justify-content: space-between; }
  .mnav-phone { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 8px; font: 700 1rem var(--font-head); color: var(--navy); text-decoration: none; }
  .mnav-phone .icon { width: 18px; height: 18px; color: var(--blue); }
  .mnav-backdrop { display: block; position: fixed; inset: 0; z-index: 85; background: rgba(9, 22, 44, .5); opacity: 0; transition: opacity .4s var(--ease); }
  .mnav-backdrop[hidden] { display: none; }
  .mnav-backdrop.is-visible { opacity: 1; }
  html.menu-open { overflow: hidden; }
  html.menu-open .mobile-cta-bar, html.menu-open .float-stack { opacity: 0; pointer-events: none; transition: opacity .25s; }
  .menu-toggle { color: var(--navy); transition: border-color .2s, background-color .2s; }
  .menu-toggle.is-open { border-color: var(--navy); }
}
@media (min-width: 1281px) { .mnav, .mnav-backdrop { display: none !important; } }
@media (prefers-reduced-motion: reduce) {
  .mnav-panel, .mnav-item, .mnav-sub, .mnav-foot, .burger span { transition: none !important; }
}

/* ---------- v6: square top corners on desktop dropdowns ---------- */
.mega, .dropdown { border-top-left-radius: 0; border-top-right-radius: 0; }

/* ==========================================================================
   v6: Button animations
   - Pill buttons: a darker fill grows out of the round icon and sweeps across;
     the arrow flies out to the top-right and a new one flies in from the
     bottom-left; the icon badge scales up slightly; press gives a small squeeze.
   - Other buttons: fill sweeps in from the left, arrow nudges, press squeeze.
   ========================================================================== */
.pill-btn { position: relative; overflow: hidden; isolation: isolate; transition: color .35s var(--ease), border-color .35s var(--ease), transform .25s var(--ease), box-shadow .35s var(--ease); }
.pill-btn::before {
  content: ""; position: absolute; z-index: -1; top: 50%; right: 22px; width: 24px; height: 24px; border-radius: 50%;
  background: var(--pb-sweep, var(--navy)); transform: translate(50%, -50%) scale(0);
  transition: transform .55s cubic-bezier(.65, 0, .35, 1);
}
.pill-lg::before { right: 28px; }
.pill-btn:hover::before, .pill-btn:focus-visible::before { transform: translate(50%, -50%) scale(var(--pb-scale, 40)); }
.pill-btn:hover { --pb-bg: var(--blue); }
.pill-btn .pill-ic { position: relative; overflow: hidden; transition: transform .4s cubic-bezier(.34, 1.56, .64, 1), background-color .35s, color .35s; }
.pill-btn:hover .pill-ic { transform: scale(1.08); background: var(--pb-ic-hover-bg, var(--blue)); color: var(--pb-ic-hover-fg, #fff); }
.pill-btn .pill-ic .icon { transition: transform .45s cubic-bezier(.65, 0, .35, 1); }
.pill-btn:hover .pill-ic .icon { animation: arrowFly .55s cubic-bezier(.65, 0, .35, 1); }
@keyframes arrowFly {
  0%   { transform: translate(0, 0); }
  45%  { transform: translate(140%, -140%); }
  46%  { transform: translate(-140%, 140%); }
  100% { transform: translate(0, 0); }
}
.pill-btn:active { transform: scale(.97); box-shadow: none; }
.pill-outline { --pb-sweep: #fff; --pb-ic-hover-bg: var(--navy); --pb-ic-hover-fg: #fff; }
.pill-outline:hover { --pb-bg: transparent; color: var(--navy); border-color: #fff; }
.pill-btn > span:first-child { position: relative; transition: transform .35s var(--ease); }
.pill-btn:hover > span:first-child { transform: translateX(3px); }

/* Card CTA pills (destination carousel) */
.dcard-cta { position: relative; overflow: hidden; isolation: isolate; }
.dcard-cta::before { content: ""; position: absolute; z-index: -1; top: 50%; right: 17px; width: 20px; height: 20px; border-radius: 50%; background: var(--navy); transform: translate(50%, -50%) scale(0); transition: transform .5s cubic-bezier(.65, 0, .35, 1); }
.dcard-cta:hover::before { transform: translate(50%, -50%) scale(16); }
.dcard-cta:hover .dcard-cta-ic { transform: none; background: var(--blue); }
.dcard-cta-ic svg { transition: transform .45s; }
.dcard-cta:hover .dcard-cta-ic svg { animation: arrowFly .55s cubic-bezier(.65, 0, .35, 1); }
.dcard-cta:active { transform: scale(.96); }

/* Standard .btn variants: left-to-right fill sweep */
.btn { position: relative; overflow: hidden; isolation: isolate; }
.btn::before {
  content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit;
  background: var(--btn-sweep, var(--navy)); transform: scaleX(0); transform-origin: right center;
  transition: transform .45s cubic-bezier(.65, 0, .35, 1);
}
.btn:hover::before, .btn:focus-visible::before { transform: scaleX(1); transform-origin: left center; }
.btn-primary { --btn-sweep: var(--navy); }
.btn-primary:hover { --bg: var(--blue); --bd: var(--navy); }
.btn-ghost { --btn-sweep: var(--navy); }
.btn-ghost:hover { --fg: #fff; --bd: var(--navy); --bg: transparent; color: #fff; }
.btn-teal { --btn-sweep: #fff; }
.btn-teal:hover { --bg: var(--teal); --bd: #fff; }
.btn-light { --btn-sweep: #fff; }
.btn-light:hover { --fg: var(--navy); --bd: #fff; color: var(--navy); }
.btn:active { transform: scale(.97); box-shadow: none; }
.btn.is-loading::before, .btn.is-success::before { display: none; }

/* Hero slider control buttons and carousel arrows */
.hs-btn, .dslider-arrow { position: relative; overflow: hidden; isolation: isolate; transition: color .3s, border-color .3s, transform .2s; }
.hs-btn::before, .dslider-arrow::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: 50%; background: var(--hb-fill, #fff); transform: scale(0); transition: transform .4s cubic-bezier(.34, 1.56, .64, 1); }
.dslider-arrow { --hb-fill: var(--navy); }
.hs-btn:hover, .dslider-arrow:hover { background: transparent; }
.hs-btn:hover::before, .dslider-arrow:hover::before { transform: scale(1); }
.hs-btn:active, .dslider-arrow:active { transform: scale(.92); }
[data-hs-next]:hover .icon, [data-slider-next]:hover .icon { animation: nudgeR .5s var(--ease); }
[data-hs-prev]:hover .icon, [data-slider-prev]:hover .icon { animation: nudgeL .5s var(--ease); }
@keyframes nudgeR { 40% { transform: translateX(4px); } }
@keyframes nudgeL { 40% { transform: translateX(-4px); } }

@media (prefers-reduced-motion: reduce) {
  .pill-btn::before, .btn::before, .dcard-cta::before, .hs-btn::before, .dslider-arrow::before { transition: none !important; }
  .pill-btn:hover .pill-ic .icon, .dcard-cta:hover .dcard-cta-ic svg, [data-hs-next]:hover .icon, [data-slider-next]:hover .icon, [data-hs-prev]:hover .icon, [data-slider-prev]:hover .icon { animation: none !important; }
}

/* ==========================================================================
   v6: Floating call / WhatsApp buttons
   - Pop in one after the other on page load
   - Soft pulse ring every few seconds (WhatsApp first, call offset)
   - Hover: lift, label slides out to the left, icon rings/wiggles
   ========================================================================== */
.float-btn { position: relative; overflow: visible; transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s; }
.float-btn .icon { position: relative; z-index: 1; }
.float-btn::before, .float-btn::after {
  content: ""; position: absolute; inset: -3px; border-radius: 50%; border: 2px solid var(--pulse);
  opacity: 0; pointer-events: none; animation: floatPulse 3.2s cubic-bezier(.2, .6, .35, 1) infinite;
}
.float-btn::after { animation-delay: .5s; }
.float-call { --pulse: rgba(36, 87, 197, .7); }
.float-wa { --pulse: rgba(31, 168, 85, .75); }
.float-call::before, .float-call::after { animation-delay: 1.6s; }
.float-call::after { animation-delay: 2.1s; }
@keyframes floatPulse {
  0%   { transform: scale(1); opacity: .9; }
  55%  { transform: scale(1.55); opacity: 0; }
  100% { transform: scale(1.55); opacity: 0; }
}
.float-btn:hover { transform: translateY(-3px) scale(1.06); box-shadow: 0 16px 30px -10px rgba(16, 35, 63, .6); }
.float-btn:hover::before, .float-btn:hover::after { animation-play-state: paused; opacity: 0; }
.float-call:hover .icon { animation: phoneRing .7s ease-in-out; }
.float-wa:hover .icon { animation: waBounce .6s cubic-bezier(.34, 1.56, .64, 1); }
@keyframes phoneRing { 0%, 100% { transform: rotate(0); } 15%, 45%, 75% { transform: rotate(-16deg); } 30%, 60%, 90% { transform: rotate(16deg); } }
@keyframes waBounce { 0% { transform: scale(1); } 40% { transform: scale(1.22); } 70% { transform: scale(.94); } 100% { transform: scale(1); } }
.float-label {
  position: absolute; right: calc(100% + 12px); top: 50%; white-space: nowrap;
  padding: 7px 12px; border-radius: 8px; background: var(--navy); color: #fff; font: 700 .8125rem var(--font-head);
  box-shadow: 0 8px 20px -8px rgba(16, 35, 63, .5);
  opacity: 0; transform: translate(10px, -50%); pointer-events: none;
  transition: opacity .25s, transform .35s var(--ease);
}
.float-label::after { content: ""; position: absolute; right: -5px; top: 50%; width: 10px; height: 10px; background: inherit; transform: translateY(-50%) rotate(45deg); border-radius: 2px; }
.float-btn:hover .float-label, .float-btn:focus-visible .float-label { opacity: 1; transform: translate(0, -50%); }
/* entrance */
.js .float-btn { animation: floatIn .6s cubic-bezier(.34, 1.56, .64, 1) backwards; }
.js .float-call { animation-delay: .9s; }
.js .float-wa { animation-delay: 1.05s; }
@keyframes floatIn { from { opacity: 0; transform: translateY(18px) scale(.6); } to { opacity: 1; transform: none; } }
@media (hover: none) { .float-label { display: none; } }
@media (prefers-reduced-motion: reduce) {
  .float-btn, .float-btn::before, .float-btn::after, .float-btn .icon { animation: none !important; }
  .float-btn::before, .float-btn::after { display: none; }
}

/* ==========================================================================
   v6: Hero slider — pagination dots, drag, direction-aware transitions
   ========================================================================== */
@media (pointer: fine) { .hs-slides { cursor: grab; } .hero-slider.is-dragging .hs-slides { cursor: grabbing; } }
.hero-slider.is-dragging { user-select: none; -webkit-user-select: none; }
.hs-media img { -webkit-user-drag: none; }

/* dots: active dot stretches into a pill that fills over the slide's time */
.hs-bars { align-items: center; gap: 10px; }
.hs-bar { width: auto; height: 24px; padding: 0 2px; }
.hs-bar span { width: 10px; height: 10px; border-radius: 999px; background: rgba(255,255,255,.35); transition: width .45s cubic-bezier(.65,0,.35,1), background-color .3s; }
.hs-bar:hover span { background: rgba(255,255,255,.7); }
.hs-bar[aria-current="true"] span { width: 44px; background: rgba(255,255,255,.3); }
.hs-bar span::after { border-radius: inherit; background: var(--teal); }

/* slide-in direction follows the way you're moving */
.js .hero-slider[data-dir="next"] .hs-slide:not(.is-active) [data-hs] { transform: translate3d(48px, 0, 0); }
.js .hero-slider[data-dir="prev"] .hs-slide:not(.is-active) [data-hs] { transform: translate3d(-48px, 0, 0); }
.js .hero-slider .hs-slide:not(.is-active) [data-hs] { transition: opacity .35s, transform .35s; }
.hs-slide { transition: opacity 1.1s cubic-bezier(.22,.8,.24,1), visibility 0s linear 1.1s; }
.hs-slide.is-active { transition: opacity 1.1s cubic-bezier(.22,.8,.24,1), visibility 0s; }

@media (max-width: 640px) {
  .hs-bars { gap: 8px; }
  .hs-bar { flex: none; }
  .hs-bar[aria-current="true"] span { width: 36px; }
  .hs-controls { justify-content: space-between; }
}
/* safety: screen-reader-only text must stay hidden inside any animated element */
.sr-only { position: absolute !important; }

/* ==========================================================================
   v7: Journey — winding road (desktop) / vertical road (mobile)
   ========================================================================== */
.journey-section {
  background-color: #EEF1F6;
  background-image: radial-gradient(rgba(16, 35, 63, .09) 1px, transparent 1.2px);
  background-size: 22px 22px;
}
.journey { position: relative; container-type: inline-size; }
.jr-steps { list-style: none; margin: 0; padding: 0; }
.jr-icon {
  display: grid; place-items: center; border-radius: 50%; color: #fff;
  background: var(--c);
  background: radial-gradient(circle at 32% 28%, color-mix(in srgb, var(--c) 40%, #fff) 0%, var(--c) 50%, color-mix(in srgb, var(--c) 75%, #000) 100%);
  box-shadow: inset 0 -5px 10px rgba(0, 0, 0, .18), inset 0 4px 8px rgba(255, 255, 255, .35), 0 16px 24px -12px color-mix(in srgb, var(--c) 70%, #000);
}
.jr-icon .icon { width: 44%; height: 44%; stroke-width: 1.9; }
.jr-icon::after {
  content: ""; position: absolute; left: 14%; right: 14%; bottom: -26%; height: 14%; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(16, 35, 63, .28), transparent); z-index: -1;
}
.jr-num { display: block; font-family: var(--font-head); font-weight: 800; color: var(--navy); letter-spacing: -.03em; line-height: 1; }
.jr-label h3 { color: var(--navy); margin: 0 0 .3em; }
.jr-label p { margin: 0; color: var(--muted-d); }

@media (min-width: 900px) {
  .journey { aspect-ratio: 1200 / 600; margin: 64px 0 40px; }
  .jr-road { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
  .jr-shadow { fill: none; stroke: rgba(16, 35, 63, .12); stroke-width: 30; stroke-linecap: round; transform: translateY(10px); filter: blur(6px); }
  .jr-seg { fill: none; stroke-width: 30; stroke-linecap: round; }
  .jr-dash { fill: none; stroke: #fff; stroke-width: 3; stroke-dasharray: 14 12; stroke-linecap: round; }
  .jr-pin { stroke: #B6C0CF; stroke-width: 3; }
  .jr-dot { fill: #fff; stroke-width: 5; }
  .jr-trav-bg { fill: #fff; filter: drop-shadow(0 3px 6px rgba(16, 35, 63, .35)); }
  .jr-trav-plane { fill: var(--blue); stroke: var(--navy); stroke-width: 1; stroke-linejoin: round; }
  .jr-steps { position: absolute; inset: 0; pointer-events: none; }
  .jr-step { position: absolute; top: 0; bottom: 0; left: var(--x); width: 26%; transform: translateX(-50%); }
  .jr-icon {
    position: absolute; left: 50%; top: var(--iy); width: 5.6cqi; aspect-ratio: 1; min-width: 46px;
    translate: -50% -50%; pointer-events: auto; cursor: default;
    transition: scale .35s cubic-bezier(.34, 1.56, .64, 1), box-shadow .35s;
  }
  .jr-label { position: absolute; left: 0; right: 0; text-align: center; padding: 0 5%; pointer-events: auto; }
  .is-down .jr-label { top: var(--ly); }
  .is-up .jr-label { bottom: var(--lb); }
  .jr-num { font-size: clamp(1.4rem, 2.6cqi, 2.1rem); margin-bottom: .3em; }
  .jr-label h3 { font-size: clamp(.95rem, 1.45cqi, 1.125rem); }
  .jr-label p { font-size: clamp(.84rem, 1.2cqi, .96rem); line-height: 1.5; }
  .jr-step:hover .jr-icon { scale: 1.14; box-shadow: inset 0 -5px 10px rgba(0,0,0,.18), inset 0 4px 8px rgba(255,255,255,.35), 0 0 0 8px color-mix(in srgb, var(--c) 22%, transparent), 0 20px 30px -12px color-mix(in srgb, var(--c) 70%, #000); }
}
@media (min-width: 900px) and (max-width: 1100px) { .journey { margin-top: 96px; margin-bottom: 64px; } }

/* --- Desktop animation sequence (runs once when the road scrolls into view) --- */
@media (min-width: 900px) {
  .js .journey .jr-seg { stroke-dasharray: 1 2; stroke-dashoffset: 1; opacity: 0; }
  .js .journey.is-in .jr-seg { stroke-dashoffset: 0; opacity: 1; transition: stroke-dashoffset .6s cubic-bezier(.65, 0, .35, 1) calc(var(--i) * .38s), opacity 0s calc(var(--i) * .38s); }
  .js .journey .jr-shadow { opacity: 0; }
  .js .journey.is-in .jr-shadow { opacity: 1; transition: opacity 1s .3s; }
  .js .journey .jr-pin { stroke-dasharray: 1 1; stroke-dashoffset: 1; }
  .js .journey.is-in .jr-pin { stroke-dashoffset: 0; transition: stroke-dashoffset .35s ease-out calc(var(--i) * .38s + .4s); }
  .js .journey .jr-dot { transform-box: fill-box; transform-origin: center; transform: scale(0); }
  .js .journey.is-in .jr-dot { transform: scale(1); transition: transform .45s cubic-bezier(.34, 1.56, .64, 1) calc(var(--i) * .38s + .7s); }
  .js .journey .jr-icon { scale: 0; opacity: 0; }
  .js .journey.is-in .jr-icon { scale: 1; opacity: 1; transition: scale .6s cubic-bezier(.34, 1.7, .64, 1) calc(var(--i) * .38s + .45s), opacity .2s calc(var(--i) * .38s + .45s), box-shadow .35s; }
  .js .journey.is-in .jr-step:hover .jr-icon { scale: 1.14; transition-delay: 0s; }
  .js .journey .jr-label { opacity: 0; translate: 0 14px; }
  .js .journey .is-up .jr-label { translate: 0 -14px; }
  .js .journey.is-in .jr-label { opacity: 1; translate: 0 0; transition: opacity .6s var(--ease) calc(var(--i) * .38s + .75s), translate .6s var(--ease) calc(var(--i) * .38s + .75s); }
  .js .journey .jr-dash { opacity: 0; }
  .js .journey.is-in .jr-dash { opacity: 1; transition: opacity .6s calc(var(--n) * .38s + .3s); animation: jrMarch 1.5s linear infinite; }
  .js .journey .jr-traveller { opacity: 0; }
  .js .journey.is-travelling .jr-traveller { opacity: 1; transition: opacity .5s; }
  /* gentle floating once settled */
  .js .journey.is-settled .jr-icon { animation: jrBob 3.4s ease-in-out infinite alternate; animation-delay: calc(var(--i) * -.55s); }
}
@keyframes jrMarch { to { stroke-dashoffset: -26; } }
@keyframes jrBob { from { transform: translateY(-4px); } to { transform: translateY(4px); } }

/* --- Mobile: vertical road --- */
@media (max-width: 899px) {
  .jr-road { display: none; }
  .journey { margin-top: 28px; }
  .jr-steps { position: relative; padding: 4px 0 4px 86px; }
  .jr-steps::before {
    content: ""; position: absolute; left: 22px; top: 0; bottom: 0; width: 30px; border-radius: 30px;
    background: linear-gradient(180deg, #F2A31B 0%, #13B8A6 22%, #2457C5 42%, #7B2A7E 62%, #E2387A 80%, #1C9AD6 100%);
    box-shadow: 0 10px 18px -10px rgba(16, 35, 63, .35);
  }
  .jr-steps::after {
    content: ""; position: absolute; left: 35.5px; top: 14px; bottom: 14px; width: 3px;
    background: repeating-linear-gradient(180deg, #fff 0 14px, transparent 14px 26px);
  }
  .jr-step { position: relative; padding: 4px 0 32px; min-height: 60px; }
  .jr-step:last-child { padding-bottom: 6px; }
  .jr-icon { position: absolute; left: -77px; top: 0; width: 56px; height: 56px; z-index: 1; border: 3px solid #fff; }
  .jr-icon::after { display: none; }
  .jr-num { display: inline-block; font-size: 1.5rem; margin-bottom: 4px; }
  .jr-label h3 { font-size: 1.0625rem; }
  .jr-label p { font-size: .9375rem; line-height: 1.55; }
  .js .journey .jr-steps::before { transform: scaleY(0); transform-origin: top; }
  .js .journey.is-in .jr-steps::before { transform: scaleY(1); transition: transform 1.4s cubic-bezier(.65, 0, .35, 1); }
  .js .journey .jr-steps::after { opacity: 0; }
  .js .journey.is-in .jr-steps::after { opacity: 1; transition: opacity .6s 1.2s; animation: jrMarchV 1.4s linear infinite; }
  .js .journey .jr-step { opacity: 0; translate: 16px 0; }
  .js .journey.is-in .jr-step { opacity: 1; translate: 0 0; transition: opacity .55s var(--ease) calc(var(--i) * .2s + .2s), translate .55s var(--ease) calc(var(--i) * .2s + .2s); }
  .js .journey .jr-icon { scale: .4; }
  .js .journey.is-in .jr-icon { scale: 1; transition: scale .55s cubic-bezier(.34, 1.7, .64, 1) calc(var(--i) * .2s + .3s); }
}
@keyframes jrMarchV { from { background-position: 0 0; } to { background-position: 0 26px; } }

@media (prefers-reduced-motion: reduce) {
  .js .journey .jr-seg, .js .journey .jr-pin { stroke-dasharray: none !important; stroke-dashoffset: 0 !important; opacity: 1 !important; }
  .js .journey .jr-dot, .js .journey .jr-icon, .js .journey .jr-label, .js .journey .jr-step, .js .journey .jr-dash, .js .journey .jr-shadow,
  .js .journey .jr-steps::before, .js .journey .jr-steps::after { opacity: 1 !important; transform: none !important; scale: 1 !important; translate: none !important; animation: none !important; }
  .jr-traveller { display: none; }
}
.reveal-all .journey .jr-seg, .reveal-all .journey .jr-pin { stroke-dasharray: none !important; opacity: 1 !important; }
.reveal-all .journey .jr-dot, .reveal-all .journey .jr-icon, .reveal-all .journey .jr-label, .reveal-all .journey .jr-step, .reveal-all .journey .jr-dash, .reveal-all .journey .jr-shadow { opacity: 1 !important; transform: none !important; scale: 1 !important; translate: none !important; }
@media (min-width: 900px) {
  .jr-seg { stroke-linecap: butt; }
  .jr-cap { transform-box: fill-box; transform-origin: center; }
  .js .journey .jr-cap { transform: scale(0); }
  .js .journey.is-in .jr-cap { transform: scale(1); transition: transform .3s ease-out calc(var(--i) * .38s); }
  .js .journey.is-in .jr-cap-end { transition-delay: calc(var(--i) * .38s + .55s); }
}
.reveal-all .journey .jr-cap { transform: none !important; }
@media (prefers-reduced-motion: reduce) { .js .journey .jr-cap { transform: none !important; } }
@media (min-width: 900px) { .js .journey.is-in .jr-shadow { transition: opacity 1.2s calc(var(--n) * .38s); } }
@media (max-width: 899px) {
  .jr-steps::before, .jr-steps::after { z-index: 0; }
  .jr-step { z-index: 1; }
}

/* ---------- v8: mobile logo fills the free header space (up to full size) ---------- */
@media (max-width: 1280px) {
  .brand { flex: 1 1 auto; min-width: 0; max-width: 226px; }
  .brand picture { width: 100%; }
  .brand img { width: 100%; height: auto; max-height: 56px; }
  .header-ctas { margin-left: auto; flex: none; }
}
@media (max-width: 419px) {
  .header-ctas .header-apply { display: none; }
  .header-inner { min-height: 72px; }
}
.mnav-foot .mnav-apply { display: none; }
@media (max-width: 419px) { .mnav-foot .mnav-apply { display: inline-flex; } }
/* light pill variant (used in the mobile menu) */
.pill-ghost { --pb-bg: #fff; --pb-fg: var(--navy); --pb-bd: #CDD5E1; --pb-ic-bg: var(--blue); --pb-sweep: var(--navy); --pb-ic-hover-bg: var(--blue); }
.pill-ghost:hover { --pb-bg: #fff; --pb-bd: var(--navy); color: #fff; }

/* ---------- v8: tap animations for touch screens (mirror the hover effects) ---------- */
.pill-btn.is-tapped::before { transform: translate(50%, -50%) scale(var(--pb-scale, 40)); }
.pill-btn.is-tapped { color: #fff; }
.pill-outline.is-tapped { color: var(--navy); }
.pill-btn.is-tapped .pill-ic { transform: scale(1.08); background: var(--pb-ic-hover-bg, var(--blue)); color: var(--pb-ic-hover-fg, #fff); }
.pill-btn.is-tapped .pill-ic .icon { animation: arrowFly .55s cubic-bezier(.65, 0, .35, 1); }
.pill-btn.is-tapped > span:first-child { transform: translateX(3px); }
.btn.is-tapped::before { transform: scaleX(1); transform-origin: left center; }
.btn-ghost.is-tapped, .btn-primary.is-tapped { color: #fff; }
.btn-light.is-tapped { color: var(--navy); }
.dcard-cta.is-tapped::before { transform: translate(50%, -50%) scale(16); }
.dcard-cta.is-tapped .dcard-cta-ic { background: var(--blue); }
.dcard-cta.is-tapped .dcard-cta-ic svg { animation: arrowFly .55s cubic-bezier(.65, 0, .35, 1); }
.hs-btn.is-tapped::before, .dslider-arrow.is-tapped::before { transform: scale(1); }
.hs-btn.is-tapped { color: var(--navy); }
.dslider-arrow.is-tapped { color: #fff; }
/* bottom bar: ripple from the tap point */
.mobile-cta-bar a { position: relative; overflow: hidden; }
.tap-ripple { position: absolute; width: 20px; height: 20px; margin: -10px 0 0 -10px; border-radius: 50%; background: rgba(255, 255, 255, .45); pointer-events: none; transform: scale(0); animation: tapRipple .6s ease-out forwards; }
@keyframes tapRipple { to { transform: scale(22); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .tap-ripple { display: none; } .pill-btn.is-tapped .pill-ic .icon, .dcard-cta.is-tapped .dcard-cta-ic svg { animation: none; } }
/* no grey/blue tap rectangle on phones — buttons show their own tap animation */
a, button, .pill-btn, .btn, .dcard-cta, .mnav-link, .mnav-toggle, .menu-toggle, .float-btn, .mobile-cta-bar a { -webkit-tap-highlight-color: transparent; }

/* ==========================================================================
   v9: content from the free-counselling landing page
   ========================================================================== */
/* Intake band */
.intake-band { background: linear-gradient(90deg, #7b2a7e 0%, #10015f 100%); color: #EADCF3; }
.intake-inner { display: flex; align-items: center; justify-content: space-between; gap: 16px 28px; flex-wrap: wrap; padding-block: 16px; }
.intake-text { margin: 0; display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; font-size: .9688rem; }
.intake-text strong { font: 800 1.125rem var(--font-head); color: #fff; letter-spacing: -.01em; }
.intake-live { align-self: center; width: 10px; height: 10px; border-radius: 50%; background: #3FD5C3; box-shadow: 0 0 0 0 rgba(63,213,195,.7); animation: livePulse 2s infinite; }
@keyframes livePulse { 70% { box-shadow: 0 0 0 10px rgba(63,213,195,0); } 100% { box-shadow: 0 0 0 0 rgba(63,213,195,0); } }
.pill-light { --pb-bg: #fff; --pb-fg: var(--navy); --pb-bd: #fff; --pb-ic-bg: var(--blue); --pb-sweep: #3FD5C3; --pb-ic-hover-bg: var(--navy); min-height: 44px; }
.pill-light:hover { --pb-bg: #fff; --pb-bd: #3FD5C3; color: var(--navy); }
.pill-light.is-tapped { color: var(--navy); }
.pill-teal { --pb-bg: var(--teal); --pb-fg: var(--navy); --pb-bd: var(--teal); --pb-ic-bg: var(--navy); --pb-sweep: #fff; --pb-ic-hover-bg: var(--blue); }
.pill-teal:hover { --pb-bg: var(--teal); --pb-bd: #fff; color: var(--navy); }
.pill-teal.is-tapped { color: var(--navy); }
@media (prefers-reduced-motion: reduce) { .intake-live { animation: none; } }

/* Trust strip: six items */
.trust ul { grid-template-columns: repeat(6, 1fr); }
.trust li { padding: 20px 14px; font-size: .9063rem; }
@media (max-width: 1200px) { .trust ul { grid-template-columns: repeat(3, 1fr); } .trust li:nth-child(4) { border-left: 0; } .trust li:nth-child(n+4) { border-top: 1px solid var(--line); } }
@media (max-width: 640px) {
  .trust ul { grid-template-columns: 1fr 1fr; }
  .trust li:nth-child(odd) { border-left: 0; } .trust li:nth-child(even) { border-left: 1px solid var(--line); }
  .trust li:nth-child(n+3) { border-top: 1px solid var(--line); }
  .trust li:last-child { grid-column: auto; }
  .intake-inner .pill-btn { width: 100%; justify-content: space-between; }
}

/* Courses: extras panel */
.course-extras { display: grid; grid-template-columns: 1.1fr 1.2fr 1fr; gap: 24px 40px; margin-top: 28px; padding: 26px 28px; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); }
.course-extras h3 { font-size: 1rem; margin-bottom: 12px; }
.course-extras .chips { margin: 0; }
.test-links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.test-links a { display: inline-block; padding: 5px 12px; border-radius: 999px; border: 1px solid #C9D5F2; background: #F2F6FD; color: var(--blue); font-size: .8438rem; font-weight: 600; text-decoration: none; transition: background-color .2s, color .2s, border-color .2s; }
.test-links a:hover { background: var(--blue); border-color: var(--blue); color: #fff; }
@media (max-width: 1024px) { .course-extras { grid-template-columns: 1fr; } }

/* Visa band */
.visa-band { background: var(--white); border-bottom: 1px solid var(--line); }
.visa-inner { display: grid; grid-template-columns: 1.3fr 1.2fr auto; align-items: center; gap: 24px 40px; }
.visa-copy h2 { font-size: clamp(1.4rem, 2.4vw, 1.875rem); margin-bottom: 8px; }
.visa-copy p { margin: 0; color: var(--muted-d); }
.visa-points { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; }
.visa-points li { display: flex; align-items: center; gap: 10px; font: 600 .9375rem var(--font-head); color: var(--navy); }
.visa-points .icon { width: 34px; height: 34px; padding: 7px; border-radius: 10px; background: var(--teal-soft); color: var(--teal-ink); flex: none; }
@media (max-width: 1100px) { .visa-inner { grid-template-columns: 1fr; } .visa-inner > .pill-btn { justify-self: start; } }
@media (max-width: 480px) { .visa-points { grid-template-columns: 1fr; } .visa-inner > .pill-btn { width: 100%; justify-content: space-between; } }

/* Consultation reassurance list: icons */
.consult-points .icon { width: 20px; height: 20px; color: var(--teal-ink); }
/* journey labels: never wider than the gap to the next label on the same row */
@media (min-width: 900px) { .jr-step { width: min(26%, calc(180% / var(--n) - 1.5%)); } }
.intake-text { flex: 1 1 560px; }

/* ==========================================================================
   v10: Contact bubble (bottom right) — replaces separate call/WhatsApp buttons
   ========================================================================== */
.float-stack { display: none !important; }
.contact-fab { position: fixed; right: 20px; bottom: 22px; z-index: 92; display: flex; flex-direction: column; align-items: flex-end; gap: 14px; }
.fab-toggle {
  position: relative; width: 60px; height: 60px; border-radius: 50%; border: 3px solid #fff; cursor: pointer;
  background: linear-gradient(135deg, var(--blue), #10015f); color: #fff; display: grid; place-items: center;
  box-shadow: 0 14px 30px -10px rgba(16, 1, 95, .65); transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s;
  -webkit-tap-highlight-color: transparent;
}
.fab-toggle:hover { transform: translateY(-2px) scale(1.05); }
.fab-toggle:active { transform: scale(.94); }
.fab-icon { position: absolute; display: grid; place-items: center; transition: transform .4s cubic-bezier(.34, 1.56, .64, 1), opacity .25s; }
.fab-icon .icon { width: 26px; height: 26px; stroke-width: 1.9; }
.fab-icon-x { opacity: 0; transform: rotate(-90deg) scale(.4); }
.fab-toggle[aria-expanded="true"] .fab-icon-chat { opacity: 0; transform: rotate(90deg) scale(.4); }
.fab-toggle[aria-expanded="true"] .fab-icon-x { opacity: 1; transform: none; }
.fab-ring { position: absolute; inset: -4px; border-radius: 50%; border: 2px solid rgba(36, 87, 197, .6); animation: fabPulse 3s cubic-bezier(.2, .6, .35, 1) infinite; pointer-events: none; }
.fab-toggle[aria-expanded="true"] .fab-ring { display: none; }
@keyframes fabPulse { 0% { transform: scale(1); opacity: .9; } 60%, 100% { transform: scale(1.5); opacity: 0; } }
.js .fab-toggle { animation: fabIn .6s cubic-bezier(.34, 1.56, .64, 1) .9s backwards; }
@keyframes fabIn { from { opacity: 0; transform: translateY(18px) scale(.5); } }

.fab-panel {
  width: min(340px, calc(100vw - 32px)); background: #fff; border-radius: 18px; padding: 20px 18px 18px;
  border-top: 4px solid transparent; border-image: linear-gradient(90deg, #7b2a7e, #2457C5) 1; border-image-slice: 1;
  box-shadow: 0 28px 60px -20px rgba(16, 35, 63, .5), 0 0 0 1px rgba(16, 35, 63, .06);
  transform-origin: bottom right; transform: translateY(14px) scale(.92); opacity: 0;
  transition: transform .35s cubic-bezier(.34, 1.3, .64, 1), opacity .25s;
}
.fab-panel { border-image: none; border-top: 4px solid var(--blue); background-clip: padding-box; }
.contact-fab.is-open .fab-panel { transform: none; opacity: 1; }
.fab-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 8px; }
.fab-head h2 { margin: 0; font-size: 1.25rem; letter-spacing: -.02em; }
.fab-close { width: 34px; height: 34px; border-radius: 50%; border: 0; background: none; color: var(--muted-d); cursor: pointer; display: grid; place-items: center; transition: background-color .2s, color .2s, transform .3s; }
.fab-close:hover { background: var(--ivory); color: var(--navy); transform: rotate(90deg); }
.fab-close .icon { width: 20px; height: 20px; }
.fab-intro { margin: 0 0 14px; font-size: .9375rem; line-height: 1.5; color: var(--muted-d); }
.fab-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.fab-item {
  display: flex; align-items: center; gap: 14px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line-cool);
  text-decoration: none; color: var(--navy); background: #fff;
  transition: border-color .2s, background-color .2s, transform .25s var(--ease), box-shadow .25s;
}
.fab-item:hover { border-color: var(--blue); background: #F5F8FE; transform: translateX(-3px); box-shadow: 0 8px 18px -12px rgba(36, 87, 197, .6); color: var(--navy); }
.fab-item strong { display: block; font: 700 1rem var(--font-head); letter-spacing: -.01em; }
.fab-item small { display: block; font-size: .8438rem; color: var(--muted-d); overflow-wrap: anywhere; }
.fab-ic { flex: none; width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; background: #EAF0FC; color: var(--blue); transition: background-color .2s, color .2s; }
.fab-ic .icon { width: 20px; height: 20px; }
.fab-ic-wa { background: #E6F6EC; color: #1FA855; }
.fab-item:hover .fab-ic { background: var(--blue); color: #fff; }
.fab-item:hover .fab-ic-wa { background: #1FA855; }
/* items cascade in */
.fab-list li { opacity: 0; transform: translateY(8px); transition: opacity .25s, transform .3s var(--ease); }
.contact-fab.is-open .fab-list li { opacity: 1; transform: none; transition: opacity .35s var(--ease), transform .4s var(--ease); }
.contact-fab.is-open .fab-list li:nth-child(1) { transition-delay: .08s; }
.contact-fab.is-open .fab-list li:nth-child(2) { transition-delay: .14s; }
.contact-fab.is-open .fab-list li:nth-child(3) { transition-delay: .2s; }
.contact-fab.is-open .fab-list li:nth-child(4) { transition-delay: .26s; }

@media (max-width: 768px) {
  .contact-fab { right: 14px; bottom: calc(58px + 14px + env(safe-area-inset-bottom)); }
  .fab-toggle { width: 56px; height: 56px; }
}
html.menu-open .contact-fab { opacity: 0; pointer-events: none; transition: opacity .25s; }
@media (prefers-reduced-motion: reduce) {
  .fab-ring { animation: none; display: none; }
  .js .fab-toggle { animation: none; }
  .fab-panel, .fab-list li, .fab-icon { transition: none !important; }
}
.fab-panel { max-height: calc(100dvh - 22px - 60px - 14px - 16px); overflow-y: auto; overscroll-behavior: contain; }
@media (max-width: 768px) { .fab-panel { max-height: calc(100dvh - 72px - env(safe-area-inset-bottom) - 56px - 14px - 12px); } }
@media (max-height: 680px) { .fab-intro { margin-bottom: 10px; font-size: .875rem; } .fab-item { padding: 9px 12px; } .fab-list { gap: 8px; } }

/* ---------- v11: footer social icons ---------- */
.social-handle { margin: 22px 0 10px; font-size: .9063rem; color: #AEBBD0; }
.social-handle strong { color: #fff; font-family: var(--font-head); }
.social { gap: 10px; margin-top: 0; }
.social .social-ic {
  width: 42px; height: 42px; padding: 0; border-radius: 50%; display: grid; place-items: center;
  border: 1px solid rgba(255,255,255,.2); color: #fff; position: relative; overflow: hidden; isolation: isolate;
  transition: border-color .3s, transform .3s cubic-bezier(.34, 1.56, .64, 1);
}
.social .social-ic::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: 50%; background: var(--sbrand); transform: scale(0); transition: transform .35s cubic-bezier(.34, 1.56, .64, 1); }
.social .social-ic:hover, .social .social-ic:focus-visible { border-color: transparent; transform: translateY(-3px); text-decoration: none; }
.social .social-ic:hover::before, .social .social-ic:focus-visible::before { transform: scale(1); }
.social .social-ic .icon { width: 19px; height: 19px; }
.social-facebook  { --sbrand: #1877F2; }
.social-instagram { --sbrand: radial-gradient(circle at 30% 107%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285AEB 90%); }
.social-linkedin  { --sbrand: #0A66C2; }
.social-youtube   { --sbrand: #FF0000; }
.social-light { margin: 10px 0 0; }
.social-light .social-ic { color: var(--navy); border-color: var(--line-cool); }
.social-light .social-ic:hover, .social-light .social-ic:focus-visible { color: #fff; }

/* ---------- v11: About — Our story (based on supplied sample) ---------- */
/* v17: matches the supplied About layout. One large photo, the stat card set into its
   bottom-left corner with a rounded cut-out (wrap paints the section colour around the card). */
.story { --story-bg: var(--ivory); }
.story.bg-white { --story-bg: #fff; }
.story-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.04fr); gap: clamp(36px, 5.2vw, 72px); align-items: center; }
.story-media { position: relative; }
.story-photo { border-radius: 22px; overflow: hidden; aspect-ratio: 1 / 1.02; background: var(--ivory-2); }
.story-photo img { width: 100%; height: 100%; object-fit: cover; }
.story-stat-wrap {
  --cut: 24px;
  position: absolute; left: 0; bottom: 0; z-index: 2; width: 44%;
  padding: 16px 16px 0 0; background: var(--story-bg); border-top-right-radius: 34px;
}
/* concave corners where the photo meets the cut-out */
.story-stat-wrap::before, .story-stat-wrap::after {
  content: ""; position: absolute; width: var(--cut); height: var(--cut); pointer-events: none;
  background: radial-gradient(circle at 100% 0, transparent calc(var(--cut) - .5px), var(--story-bg) var(--cut));
}
.story-stat-wrap::before { left: 0; bottom: 100%; }
.story-stat-wrap::after { left: 100%; bottom: 0; }
.story-stat {
  position: relative; overflow: hidden;
  padding: clamp(24px, 2.6vw, 34px) clamp(20px, 2vw, 26px) clamp(22px, 2.4vw, 30px);
  border-radius: 22px; background: linear-gradient(180deg, #fff, #F3F5FA);
  border: 1px solid #E2E7F0;
  box-shadow: 0 22px 44px -24px rgba(16, 35, 63, .35);
}
.story-stat::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 6px; background: linear-gradient(90deg, #7b2a7e, var(--blue) 70%, #8EA9E8); }
.story-kicker { margin: 0 0 clamp(14px, 2.4vw, 30px); font: 700 1rem var(--font-head); color: #7b2a7e; }
.story-num { margin: 0 0 12px; font: 800 clamp(2.75rem, 5.2vw, 4.25rem)/1 var(--font-head); color: var(--navy); letter-spacing: -.05em; }
.story-label { margin: 0; color: var(--muted-d); font-size: .9688rem; line-height: 1.5; }

.story-eyebrow { display: inline-flex; align-items: center; gap: 10px; margin: 0 0 12px; font: 800 .875rem var(--font-head); letter-spacing: .14em; text-transform: uppercase; color: #7b2a7e; }
.story-eyebrow::before { content: ""; width: 28px; height: 3px; border-radius: 2px; background: #7b2a7e; }
.story-copy h2 { font-size: clamp(2rem, 3.4vw, 2.5rem); line-height: 1.12; margin: 0 0 14px; }
.story-copy > p:not(.story-eyebrow):not(.story-rating) { color: #3A4560; font-size: 1rem; line-height: 1.75; margin: 0 0 16px; }
.story-badges { list-style: none; padding: 0; margin: 22px 0 0; display: flex; flex-wrap: wrap; gap: 12px 30px; }
.story-badges li { display: inline-flex; align-items: center; gap: 10px; font: 700 1rem var(--font-head); color: #3A4560; }
.story-badges .icon { width: 22px; height: 22px; color: #7b2a7e; flex: none; }
.story-rating { display: inline-flex; align-items: center; gap: 8px; margin: 18px 0 0; padding: 9px 18px; border: 1px solid var(--line-cool); border-radius: 999px; font: 700 1rem var(--font-head); color: #3A4560; background: #fff; }
.story-rating .star { color: #F2A31B; font-size: 1.375rem; line-height: 1; }
.story-cta { margin: 26px 0 0; }
.pill-dark { --pb-bg: var(--navy); --pb-bd: var(--navy); --pb-ic-bg: var(--teal); --pb-ic-fg: var(--navy); --pb-sweep: var(--blue); --pb-ic-hover-bg: #fff; --pb-ic-hover-fg: var(--navy); }
.pill-dark:hover { --pb-bg: var(--navy); --pb-bd: var(--blue); }
@media (max-width: 900px) {
  .story-grid { grid-template-columns: 1fr; }
  .story-media { max-width: 620px; }
}
@media (max-width: 560px) {
  .story-stat-wrap { width: 62%; padding: 12px 12px 0 0; border-top-right-radius: 28px; --cut: 20px; }
  .story-stat { padding: 20px 18px 18px; border-radius: 18px; }
  .story-kicker { margin-bottom: 10px; font-size: .9375rem; }
  .story-num { font-size: 2.5rem; margin-bottom: 8px; }
  .story-label { font-size: .875rem; }
}

/* ---------- v11: Resources — left navigation ---------- */
.res-layout { display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: clamp(28px, 4vw, 56px); align-items: start; }
.res-nav { position: sticky; top: 100px; display: grid; gap: 16px; }
.res-nav-inner { padding: 20px 16px 16px; background: #fff; border: 1px solid var(--line); border-radius: 18px; box-shadow: 0 10px 30px -24px rgba(16, 35, 63, .4); }
.res-nav-title { margin: 0 0 10px 10px; font: 800 1.125rem var(--font-head); color: var(--navy); }
.res-nav-group { margin: 16px 0 6px 10px; font: 700 .75rem var(--font-head); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.res-nav-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.res-nav-link {
  position: relative; display: block; padding: 9px 12px 9px 14px; border-radius: 10px; overflow: hidden; isolation: isolate;
  font: 600 .9688rem var(--font-head); color: #3A4560; text-decoration: none; transition: color .25s, padding-left .3s var(--ease);
}
.res-nav-link::before { content: ""; position: absolute; inset: 0; z-index: -1; background: #EEF3FD; transform: scaleX(0); transform-origin: left; transition: transform .35s cubic-bezier(.65, 0, .35, 1); }
.res-nav-link::after { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; border-radius: 3px; background: var(--blue); transform: scaleY(0); transition: transform .3s var(--ease); }
.res-nav-link:hover { color: var(--blue); padding-left: 18px; }
.res-nav-link:hover::before { transform: scaleX(1); }
.res-nav-link.is-active { color: #fff; background: var(--blue); padding-left: 18px; }
.res-nav-link.is-active::after { transform: scaleY(1); background: #fff; }
.res-nav-link.is-active::before { display: none; }
.res-nav-cta { padding: 20px; border-radius: 18px; background: linear-gradient(150deg, #7b2a7e, #10015f); color: #E5D8F0; }
.res-nav-cta p { margin: 0 0 14px; font-size: .9375rem; line-height: 1.5; }
.res-nav-cta strong { display: block; color: #fff; font-family: var(--font-head); font-size: 1rem; margin-bottom: 4px; }
.res-nav-cta .pill-btn { --pb-bg: #fff; --pb-fg: var(--navy); --pb-bd: #fff; --pb-ic-bg: var(--blue); --pb-sweep: var(--teal); min-height: 42px; width: 100%; justify-content: space-between; }
.res-nav-cta .pill-btn:hover { color: var(--navy); }
.res-main { min-width: 0; }
.res-main .prose { max-width: 820px; }
.res-main .blog-grid, .res-main .res-grid { grid-template-columns: repeat(2, 1fr); }
.res-main .blog-feature { grid-template-columns: 1fr 1fr; }
.res-main .faq { max-width: 860px; }

@media (max-width: 1024px) {
  .res-layout { grid-template-columns: minmax(0, 1fr); gap: 22px; }
  .res-nav { position: sticky; top: 0; z-index: 20; margin: 0 calc(-1 * var(--gutter)); padding: 10px var(--gutter); background: rgba(255,255,255,.96); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); }
  .res-nav-inner { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding: 2px; background: none; border: 0; box-shadow: none; border-radius: 0; -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent); mask-image: linear-gradient(90deg, #000 88%, transparent); }
  .res-nav-inner::-webkit-scrollbar { display: none; }
  .res-nav-title, .res-nav-group, .res-nav-cta { display: none; }
  .res-nav-list { display: flex; gap: 6px; flex: none; }
  .res-nav-link { white-space: nowrap; padding: 8px 14px; border: 1px solid var(--line-cool); border-radius: 999px; font-size: .875rem; }
  .res-nav-link:hover, .res-nav-link.is-active { padding-left: 14px; }
  .res-nav-link::after { display: none; }
}
@media (max-width: 768px) { .res-nav { top: 0; } }
@media (max-width: 640px) {
  .res-main .blog-grid, .res-main .res-grid { grid-template-columns: 1fr; }
  .res-main .blog-feature { grid-template-columns: 1fr; }
}
@media (max-width: 1024px) { .res-nav { position: relative; top: auto; z-index: 1; } }

/* ---------- v12: Contact page — icons centred on their text ---------- */
.contact-head { color: var(--navy); font-size: 1.125rem; margin-bottom: 14px; }
.contact-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.contact-item { display: flex; align-items: center; gap: 14px; }
.contact-ic {
  flex: none; width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center;
  background: #EAF0FC; color: var(--blue); transition: background-color .25s, color .25s, transform .3s cubic-bezier(.34, 1.56, .64, 1);
}
.contact-ic .icon { width: 20px; height: 20px; }
.contact-ic-wa { background: #E6F6EC; color: #1FA855; }
.contact-item:hover .contact-ic { background: var(--blue); color: #fff; transform: scale(1.06); }
.contact-item:hover .contact-ic-wa { background: #1FA855; }
.contact-txt { display: flex; flex-direction: column; justify-content: center; min-width: 0; font-style: normal; line-height: 1.45; }
.contact-cards .contact-txt span, .contact-cards .contact-txt strong { display: block; }
.contact-txt small { font-size: .8125rem; color: var(--muted); line-height: 1.3; }
.contact-txt a { font: 600 1rem var(--font-body); color: var(--navy); text-decoration: none; overflow-wrap: anywhere; }
.contact-txt a:hover { color: var(--blue); text-decoration: underline; }
.contact-txt > span:not(:first-child) { color: var(--muted-d); }
address.contact-txt strong { color: var(--navy); font-family: var(--font-head); margin-bottom: 2px; }
address.contact-txt span { color: var(--muted-d); }
.contact-cards .social-light { margin-top: 0; }
.contact-txt > span:not(:first-child):not(.sr-only) { color: var(--navy); font-weight: 600; }

/* ---------- v13: footer bullets and icons ---------- */
.f-head { position: relative; padding-bottom: 12px; margin-bottom: 18px; }
.f-head::after { content: ""; position: absolute; left: 0; bottom: 0; width: 34px; height: 3px; border-radius: 3px; background: linear-gradient(90deg, var(--teal), var(--blue)); }
.f-links { gap: 9px; }
.f-links a { position: relative; display: inline-flex; align-items: center; gap: 10px; transition: color .25s, transform .3s var(--ease); }
.f-links a::before {
  content: ""; flex: none; width: 7px; height: 7px; margin-left: 1px;
  border-top: 2px solid var(--teal); border-right: 2px solid var(--teal); transform: rotate(45deg);
  transition: transform .3s var(--ease), border-color .25s;
}
.site-footer .f-links a:hover { color: #fff; text-decoration: none; transform: translateX(4px); }
.site-footer .f-links a:hover::before { border-color: #fff; }
.f-contact-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.f-contact-list li { display: flex; align-items: center; gap: 12px; }
.f-ic {
  flex: none; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center;
  background: rgba(19, 184, 166, .14); color: var(--teal); transition: background-color .25s, color .25s;
}
.f-ic .icon { width: 18px; height: 18px; }
.f-contact-list li:hover .f-ic { background: var(--teal); color: var(--navy); }
.f-contact-list address { font-style: normal; color: #AEBBD0; line-height: 1.55; }
.f-contact-list a { font-weight: 600; overflow-wrap: anywhere; }
.f-contact-list span:not(.f-ic) { color: #D5DEEC; }
.f-offices { display: block !important; }
.f-offices address, .f-offices .f-contact { margin: 0; }

/* ==========================================================================
   v14: Popular study areas — colour-coded cards, spotlight, tilt, ticker
   ========================================================================== */
.courses-section { position: relative; overflow: hidden; }
.cs-blob { position: absolute; border-radius: 50%; filter: blur(70px); opacity: .35; pointer-events: none; }
.cs-blob-1 { width: 420px; height: 420px; left: -140px; top: 120px; background: #C9D8FA; animation: blobDrift 18s ease-in-out infinite alternate; }
.cs-blob-2 { width: 380px; height: 380px; right: -120px; bottom: 80px; background: #E6D3F0; animation: blobDrift 22s ease-in-out infinite alternate-reverse; }
@keyframes blobDrift { to { transform: translate(60px, -40px) scale(1.12); } }
.courses-section .wrap { position: relative; }

.course-grid { gap: 20px; perspective: 1200px; }
.course {
  --mx: 50%; --my: 50%; --rx: 0deg; --ry: 0deg;
  position: relative; overflow: hidden; isolation: isolate; display: flex; flex-direction: column;
  padding: 24px 22px 22px; border-radius: 22px; background: #fff;
  border: 1px solid color-mix(in srgb, var(--cc) 18%, #E3E1D8);
  box-shadow: 0 1px 2px rgba(16,35,63,.05), 0 14px 30px -24px color-mix(in srgb, var(--cc) 70%, #10233F);
  transform: rotateX(var(--rx)) rotateY(var(--ry)) translateY(0); transform-style: preserve-3d;
  transition: transform .45s cubic-bezier(.22,.8,.24,1), box-shadow .45s, border-color .3s;
}
.course::before { /* colour wash rising from the bottom */
  content: ""; position: absolute; inset: 0; z-index: -2;
  background: linear-gradient(180deg, transparent 30%, color-mix(in srgb, var(--cc) 12%, #fff) 100%);
  transform: translateY(101%); transition: transform .55s cubic-bezier(.65,0,.35,1);
}
.course::after { /* top accent bar */
  content: ""; position: absolute; left: 22px; right: 22px; top: 0; height: 4px; border-radius: 0 0 4px 4px; background: var(--cc);
  transform: scaleX(.18); transform-origin: left; transition: transform .5s cubic-bezier(.65,0,.35,1);
}
.course-glow { /* spotlight that follows the cursor */
  position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity .35s;
  background: radial-gradient(260px circle at var(--mx) var(--my), color-mix(in srgb, var(--cc) 20%, transparent), transparent 70%);
}
.course-mark { position: absolute; right: -18px; bottom: -22px; z-index: -1; color: var(--cc); opacity: .07; transition: transform .7s cubic-bezier(.34,1.56,.64,1), opacity .4s; }
.course-mark .icon { width: 128px; height: 128px; stroke-width: 1.2; }
.course-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.course-ic {
  width: 52px; height: 52px; border-radius: 16px; display: grid; place-items: center; color: #fff;
  background: radial-gradient(circle at 30% 25%, color-mix(in srgb, var(--cc) 55%, #fff), var(--cc) 55%, color-mix(in srgb, var(--cc) 80%, #000));
  box-shadow: inset 0 -4px 8px rgba(0,0,0,.15), 0 10px 18px -8px color-mix(in srgb, var(--cc) 80%, #000);
  transition: transform .6s cubic-bezier(.34,1.56,.64,1), border-radius .5s;
}
.course-ic .icon { width: 26px; height: 26px; stroke-width: 1.8; }
.course-no { font: 800 1.75rem/1 var(--font-head); letter-spacing: -.04em; color: transparent; -webkit-text-stroke: 1.2px color-mix(in srgb, var(--cc) 45%, #C7D0DD); transition: color .4s, -webkit-text-stroke-color .4s; }
.course h3 { font-size: 1.125rem; margin-bottom: 8px; transition: color .3s; }
.course > p:not(.course-label) { font-size: .9375rem; color: var(--muted-d); margin-bottom: 18px; }
.course-label { margin: auto 0 8px; font: 700 .7188rem var(--font-head); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.course-flags { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.course-flags a {
  display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 4px; border-radius: 999px;
  background: color-mix(in srgb, var(--cc) 8%, #fff); border: 1px solid color-mix(in srgb, var(--cc) 22%, #fff);
  font: 600 .8125rem var(--font-head); color: var(--navy); text-decoration: none;
  transition: background-color .25s, color .25s, transform .25s var(--ease), border-color .25s;
}
.course-flags img { width: 18px; height: 18px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1.5px #fff; }
.course-flags a:hover { background: var(--cc); border-color: var(--cc); color: #fff; transform: translateY(-2px); }

@media (hover: hover) {
  .course:hover { transform: rotateX(var(--rx)) rotateY(var(--ry)) translateY(-8px); border-color: color-mix(in srgb, var(--cc) 45%, #fff); box-shadow: 0 2px 4px rgba(16,35,63,.05), 0 30px 50px -28px color-mix(in srgb, var(--cc) 85%, #10233F); }
  .course:hover::before { transform: none; }
  .course:hover::after { transform: scaleX(1); }
  .course:hover .course-glow { opacity: 1; }
  .course:hover .course-mark { transform: rotate(-14deg) scale(1.18); opacity: .13; }
  .course:hover .course-ic { transform: rotate(-8deg) scale(1.1); border-radius: 50%; }
  .course:hover .course-ic .icon { animation: icWiggle .7s ease; }
  .course:hover .course-no { color: color-mix(in srgb, var(--cc) 20%, transparent); -webkit-text-stroke-color: var(--cc); }
  .course:hover h3 { color: color-mix(in srgb, var(--cc) 75%, #10233F); }
}
@keyframes icWiggle { 0%,100% { transform: rotate(0); } 25% { transform: rotate(-12deg); } 50% { transform: rotate(10deg); } 75% { transform: rotate(-5deg); } }

/* entrance: cards flip up in sequence */
.js .course[data-reveal] { opacity: 0; transform: translateY(40px) rotateX(16deg); }
.js .course[data-reveal].is-in { opacity: 1; transform: rotateX(var(--rx)) rotateY(var(--ry)); transition: opacity .7s var(--ease), transform .8s cubic-bezier(.22,.8,.24,1), box-shadow .45s, border-color .3s; transition-delay: calc(var(--i, 0) * 80ms); }
.js .course[data-reveal].is-in.is-ready { transition-delay: 0s; transition: transform .45s cubic-bezier(.22,.8,.24,1), box-shadow .45s, border-color .3s; }
.js .course[data-reveal].is-in .course-ic { animation: icPop .7s cubic-bezier(.34,1.7,.64,1) backwards; animation-delay: calc(var(--i, 0) * 80ms + .25s); }
@keyframes icPop { from { transform: scale(0) rotate(-40deg); } }

/* ---- extras ---- */
.course-extras { display: grid; grid-template-columns: 1.15fr 1.15fr 1fr; gap: 18px; margin-top: 26px; padding: 0; background: none; border: 0; }
.course-extras > div { padding: 24px; border-radius: 22px; background: #fff; border: 1px solid var(--line); min-width: 0; }
.cx-head { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.cx-head h3 { margin: 0; font-size: 1.0625rem; }
.cx-ic { width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; background: linear-gradient(135deg, #7b2a7e, var(--blue)); color: #fff; flex: none; }
.cx-ic .icon { width: 20px; height: 20px; }

/* ticker */
.ticker { display: grid; gap: 10px; -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.ticker-row { overflow: hidden; }
.ticker-track { list-style: none; margin: 0; padding: 0; display: flex; gap: 8px; width: max-content; animation: tick 28s linear infinite; }
.ticker-row.is-rev .ticker-track { animation-direction: reverse; animation-duration: 32s; }
.ticker:hover .ticker-track { animation-play-state: paused; }
.ticker-track li { flex: none; padding: 7px 14px; border-radius: 999px; background: var(--ivory); border: 1px solid var(--line); font: 600 .875rem var(--font-head); color: var(--navy); white-space: nowrap; transition: background-color .25s, color .25s, border-color .25s; }
.ticker-track li:hover { background: var(--navy); border-color: var(--navy); color: #fff; }
@keyframes tick { to { transform: translateX(calc(-50% - 4px)); } }

/* tests */
.cx-tests .test-links a { display: inline-flex; align-items: center; gap: 6px; position: relative; overflow: hidden; isolation: isolate; }
.cx-tests .test-links a .icon { width: 13px; height: 13px; stroke-width: 2.2; transition: transform .35s var(--ease); }
.cx-tests .test-links a::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--blue); transform: translateY(101%); transition: transform .35s cubic-bezier(.65,0,.35,1); }
.cx-tests .test-links a:hover { background: #F2F6FD; color: #fff; border-color: var(--blue); }
.cx-tests .test-links a:hover::before { transform: none; }
.cx-tests .test-links a:hover .icon { transform: translate(2px, -2px); }

/* sectors */
.sector-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.sector-list li { display: flex; align-items: center; gap: 12px; padding: 8px 12px 8px 8px; border-radius: 14px; font: 600 .9375rem var(--font-head); color: var(--navy); transition: background-color .25s, transform .3s var(--ease); }
.sector-ic { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: color-mix(in srgb, var(--sc) 14%, #fff); color: var(--sc); transition: background-color .25s, color .25s, transform .4s cubic-bezier(.34,1.56,.64,1); }
.sector-ic .icon { width: 18px; height: 18px; }
.sector-list li:hover { background: color-mix(in srgb, var(--sc) 8%, #fff); transform: translateX(4px); }
.sector-list li:hover .sector-ic { background: var(--sc); color: #fff; transform: rotate(-10deg) scale(1.08); }

@media (max-width: 1100px) { .course-extras { grid-template-columns: 1fr 1fr; } .cx-sectors { grid-column: 1 / -1; } .sector-list { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); } }
@media (max-width: 700px) { .course-extras { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) {
  .ticker-track, .cs-blob { animation: none !important; }
  .ticker-track { flex-wrap: wrap; width: auto; }
  .ticker-track li[aria-hidden] { display: none; }
  .ticker { -webkit-mask-image: none; mask-image: none; }
  .js .course[data-reveal] { opacity: 1; transform: none; }
  .course, .course * { transition: none !important; animation: none !important; }
}
/* extras layout: full-width ticker on top, tests + sectors below */
.course-extras { grid-template-columns: 1.15fr 1fr; }
.cx-demand { grid-column: 1 / -1; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 24px; }
.cx-demand .cx-head { margin: 0; }
.cx-demand .cx-head h3 { max-width: 9ch; line-height: 1.2; }
.sector-list { grid-template-columns: 1fr 1fr; }
@media (max-width: 1100px) { .course-extras { grid-template-columns: 1fr 1fr; } .cx-sectors { grid-column: auto; } .sector-list { grid-template-columns: 1fr 1fr; } }
@media (max-width: 760px) {
  .course-extras { grid-template-columns: 1fr; }
  .cx-demand { grid-template-columns: 1fr; gap: 14px; }
  .cx-demand .cx-head h3 { max-width: none; }
}
@media (max-width: 380px) { .sector-list { grid-template-columns: 1fr; } }
.cx-tests .test-links { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.cx-tests .test-links a { width: 100%; justify-content: space-between; padding: 11px 14px; border-radius: 12px; font-size: .9063rem; white-space: nowrap; }
.cx-tests .test-links a > :first-child { overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 1100px) { .cx-tests .test-links { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .cx-tests .test-links { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 360px) { .cx-tests .test-links a { padding: 10px 10px; font-size: .8438rem; gap: 4px; } .cx-tests .test-links a .icon { width: 11px; height: 11px; } }
@media (max-width: 340px) { .cx-tests .test-links { grid-template-columns: 1fr; } }

/* ==========================================================================
   v15: Apply page — illustrated panel (left) + form (right)
   ========================================================================== */
.apply-layout { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.15fr); gap: clamp(28px, 4vw, 56px); align-items: start; }
.apply-visual { position: sticky; top: 100px; display: grid; gap: 18px; }
.av-card {
  position: relative; overflow: hidden; isolation: isolate; border-radius: 28px; min-height: 480px;
  background: linear-gradient(150deg, #7b2a7e 0%, #3a1580 45%, #10015f 100%);
  padding: 32px 30px 0; display: flex; flex-direction: column;
}
.av-dots { position: absolute; top: 22px; right: 22px; width: 96px; height: 72px; z-index: -1; background-image: radial-gradient(rgba(255,255,255,.55) 1.5px, transparent 1.7px); background-size: 16px 16px; }
.av-blob { position: absolute; border-radius: 50%; filter: blur(50px); z-index: -1; }
.av-blob-1 { width: 260px; height: 260px; left: -60px; bottom: -40px; background: rgba(19,184,166,.55); animation: blobDrift 14s ease-in-out infinite alternate; }
.av-blob-2 { width: 220px; height: 220px; right: -50px; top: 30%; background: rgba(36,87,197,.6); animation: blobDrift 17s ease-in-out infinite alternate-reverse; }
.av-copy { position: relative; z-index: 2; max-width: 22ch; }
.av-eyebrow { display: inline-block; margin: 0 0 12px; padding: 6px 12px; border-radius: 999px; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.25); color: #fff; font: 700 .8125rem var(--font-head); letter-spacing: .04em; }
.av-title { margin: 0; color: #fff; font-size: clamp(1.5rem, 2.4vw, 2rem); line-height: 1.15; letter-spacing: -.03em; }
.av-person { display: block; margin-top: auto; align-self: flex-end; width: 74%; max-width: 360px; margin-right: -4%; }
.av-person img { width: 100%; height: auto; display: block; filter: drop-shadow(0 20px 26px rgba(0,0,0,.35)); }
.av-chip {
  position: absolute; z-index: 3; display: inline-flex; align-items: center; gap: 10px; padding: 9px 16px 9px 9px; border-radius: 999px;
  background: rgba(255,255,255,.88); color: var(--navy); font: 700 .875rem var(--font-head); white-space: nowrap;
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); box-shadow: 0 14px 30px -14px rgba(9,22,44,.6);
}
.av-chip-ic { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--teal); color: #fff; }
.av-chip-ic .icon { width: 15px; height: 15px; stroke-width: 2.2; }
.av-chip-1 { left: 24px; bottom: 34%; animation: chipFloat 5s ease-in-out infinite; }
.av-chip-2 { left: 34px; bottom: 16%; animation: chipFloat 5s ease-in-out infinite 1.4s; }
.av-chip-2 .av-chip-ic { background: var(--blue); }
@keyframes chipFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }

.av-next { padding: 22px 24px; border-radius: 22px; background: #fff; border: 1px solid var(--line); }
.av-next h3 { font-size: 1.0625rem; margin: 0 0 14px; }
.av-next ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; position: relative; }
.av-next ol::before { content: ""; position: absolute; left: 15px; top: 16px; bottom: 16px; width: 2px; background: repeating-linear-gradient(180deg, var(--line-cool) 0 5px, transparent 5px 10px); }
.av-next li { position: relative; display: flex; align-items: center; gap: 14px; }
.av-num { flex: none; position: relative; z-index: 1; width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg, #7b2a7e, var(--blue)); color: #fff; font: 800 .875rem var(--font-head); box-shadow: 0 0 0 4px #fff; }
.av-next strong { display: block; font: 700 .9688rem var(--font-head); color: var(--navy); }
.av-next li div { font-size: .875rem; color: var(--muted-d); line-height: 1.45; }

.apply-main { min-width: 0; }
.apply-main .steps-nav { margin-top: 4px; }

/* entrance */
.js .av-card > * { opacity: 0; transform: translateY(18px); }
.js .apply-visual.is-in .av-card > *, .reveal-all .av-card > * { opacity: 1; transform: none; transition: opacity .8s var(--ease), transform .8s var(--ease); }
.js .apply-visual.is-in .av-person { transition-delay: .2s; }
.js .apply-visual.is-in .av-chip { transition-delay: .5s; }
.js .apply-visual.is-in .av-chip-2 { transition-delay: .7s; }

@media (max-width: 1024px) {
  .apply-layout { grid-template-columns: 1fr; }
  .apply-visual { position: relative; top: auto; grid-template-columns: 1fr 1fr; align-items: stretch; }
  .av-card { min-height: 380px; }
}
@media (max-width: 700px) {
  .apply-visual { grid-template-columns: 1fr; order: 2; }
  .apply-main { order: 1; }
  .av-card { min-height: 360px; padding: 26px 22px 0; }
  .av-person { width: 62%; }
  .av-chip { font-size: .8125rem; }
  .av-chip-1 { left: 16px; } .av-chip-2 { left: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .av-chip, .av-blob { animation: none !important; }
  .js .av-card > * { opacity: 1; transform: none; }
}

/* ==========================================================================
   v16: Site-wide animation system
   ========================================================================== */
/* reveal variants (default "up" is defined earlier) */
.js [data-reveal="zoom"] { opacity: 0; transform: translateY(26px) scale(.96); }
.js [data-reveal="left"] { opacity: 0; transform: translateX(-26px); }
.js [data-reveal="zoom"].is-in, .js [data-reveal="left"].is-in { opacity: 1; transform: none; transition: opacity .7s var(--ease), transform .8s cubic-bezier(.22,.8,.24,1); transition-delay: calc(var(--i, 0) * 80ms); }
.js [data-reveal="up"] { opacity: 0; transform: translateY(22px); }
.js [data-reveal="up"].is-in { opacity: 1; transform: none; transition: opacity .75s var(--ease), transform .75s var(--ease); transition-delay: calc(var(--i, 0) * 70ms); }
/* once revealed, hover transitions respond instantly */
.js [data-reveal].is-in:hover { transition-delay: 0s; }

/* ---- page arrival (inner pages) ---- */
.page-hero { position: relative; overflow: hidden; isolation: isolate; }
.page-hero::before, .page-hero::after {
  content: ""; position: absolute; z-index: -1; border-radius: 50%; filter: blur(60px); pointer-events: none; opacity: .5;
}
.page-hero::before { width: 380px; height: 380px; right: -80px; top: -140px; background: #D9C6EC; animation: heroBlob 16s ease-in-out infinite alternate; }
.page-hero::after { width: 320px; height: 320px; right: 22%; bottom: -200px; background: #C6D8F8; animation: heroBlob 20s ease-in-out infinite alternate-reverse; }
@keyframes heroBlob { to { transform: translate(-70px, 40px) scale(1.15); } }
.js .page-hero .crumbs, .js .page-hero .lede, .js .page-hero .hero-ctas, .js .page-hero .svc-icon,
.js .dest-hero .crumbs, .js .dest-hero .lede, .js .dest-hero .hero-ctas, .js .dest-hero .flag-big { opacity: 0; transform: translateY(16px); }
.page-ready .page-hero .crumbs, .page-ready .page-hero .lede, .page-ready .page-hero .hero-ctas, .page-ready .page-hero .svc-icon,
.page-ready .dest-hero .crumbs, .page-ready .dest-hero .lede, .page-ready .dest-hero .hero-ctas, .page-ready .dest-hero .flag-big {
  opacity: 1; transform: none; transition: opacity .7s var(--ease), transform .7s var(--ease);
}
.page-ready .page-hero .svc-icon, .page-ready .dest-hero .flag-big { transition-delay: .1s; }
.page-ready .page-hero .lede, .page-ready .dest-hero .lede { transition-delay: calc(.25s + var(--hw, 4) * 55ms); }
.page-ready .page-hero .hero-ctas, .page-ready .dest-hero .hero-ctas { transition-delay: calc(.4s + var(--hw, 4) * 55ms); }
/* headline: each word rises out of a mask */
h1.is-split .w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
h1.is-split .w > span { display: inline-block; transform: translateY(105%); }
.page-ready h1.is-split .w > span { transform: none; transition: transform .8s cubic-bezier(.22,.8,.24,1); transition-delay: calc(.12s + var(--w) * 55ms); }
/* destination hero: slow zoom on the photo, country code slides in */
.dest-hero-bg img { transform: scale(1.12); }
.page-ready .dest-hero-bg img { transform: scale(1); transition: transform 6s cubic-bezier(.22,.8,.24,1); }
.js .dest-hero-code { opacity: 0; transform: translateX(60px); }
.page-ready .dest-hero-code { opacity: 1; transform: none; transition: opacity 1.2s var(--ease) .3s, transform 1.4s cubic-bezier(.22,.8,.24,1) .3s; }
.js .dest-hero .flag-big { transform: scale(.4) rotate(-12deg); }
.page-ready .dest-hero .flag-big { transform: none; transition: transform .7s cubic-bezier(.34,1.7,.64,1) .1s, opacity .4s .1s; }

/* ---- reading progress + back to top ---- */
.read-progress { position: fixed; left: 0; top: 0; z-index: 200; width: 100%; height: 3px; transform-origin: left; transform: scaleX(0); background: linear-gradient(90deg, #7b2a7e, var(--blue), var(--teal)); pointer-events: none; }
.to-top {
  position: fixed; left: 20px; bottom: 22px; z-index: 85; width: 48px; height: 48px; border-radius: 50%; border: 0; cursor: pointer;
  background: #fff; color: var(--navy); display: grid; place-items: center; box-shadow: 0 10px 26px -10px rgba(16,35,63,.45);
  opacity: 0; transform: translateY(16px) scale(.8); pointer-events: none;
  transition: opacity .3s, transform .4s cubic-bezier(.34,1.56,.64,1), background-color .25s, color .25s;
}
.to-top.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.to-top:hover { background: var(--navy); color: #fff; }
.to-top:hover .icon { animation: topBounce .6s ease; }
@keyframes topBounce { 40% { transform: translateY(-4px); } }
.to-top .icon { width: 18px; height: 18px; position: relative; }
.to-top-ring { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.to-top-ring circle { fill: none; stroke: var(--teal); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset .15s linear; }
@media (max-width: 768px) { .to-top { left: 14px; bottom: calc(58px + 14px + env(safe-area-inset-bottom)); width: 44px; height: 44px; } }
html.menu-open .to-top { opacity: 0; pointer-events: none; }

/* ---- card hover lifts on inner pages ---- */
.res-card, .quote, .panel, .schol-cards .panel { transition: transform .4s cubic-bezier(.22,.8,.24,1), box-shadow .4s, border-color .3s; }
@media (hover: hover) {
  .res-card:hover, .quote:hover, .schol-cards .panel:hover { transform: translateY(-6px); border-color: #C9D5F2; box-shadow: 0 24px 40px -26px rgba(36,87,197,.55); }
  .res-card h3 { transition: color .25s; }
  .res-card:hover h3 { color: var(--blue); }
  .quote:hover::before { animation: quoteBob .6s ease; }
  .post-card .media img, .blog-feature .media img { transition: transform .8s cubic-bezier(.22,.8,.24,1); }
  .post-card:hover .media img, .blog-feature:hover .media img { transform: scale(1.06); }
  .faq-q button { transition: color .25s, padding-left .3s var(--ease); }
  .faq-q button:hover { padding-left: 8px; }
}
@keyframes quoteBob { 40% { transform: translateY(-6px) rotate(-6deg); } }
.faq-item { transition: background-color .3s; }
.faq-item:has(button[aria-expanded="true"]) { background: linear-gradient(90deg, rgba(36,87,197,.05), transparent 70%); }
.faq-q button[aria-expanded="true"] { color: var(--blue); }

/* ---- smooth page-to-page transitions (supporting browsers) ---- */
@keyframes vtOut { to { opacity: 0; transform: translateY(-12px); } }
@keyframes vtIn  { from { opacity: 0; transform: translateY(14px); } }
::view-transition-old(root) { animation: vtOut .22s cubic-bezier(.4,0,1,1) both; }
::view-transition-new(root) { animation: vtIn .38s cubic-bezier(0,0,.2,1) both; }

/* safety net + reduced motion */
.reveal-all [data-reveal], .reveal-all .page-hero *, .reveal-all .dest-hero * { opacity: 1 !important; transform: none !important; }
.reveal-all h1.is-split .w > span { transform: none !important; }
@media (prefers-reduced-motion: reduce) {
  .page-hero::before, .page-hero::after { animation: none; }
  .js .page-hero *, .js .dest-hero *, h1.is-split .w > span, .dest-hero-bg img { opacity: 1 !important; transform: none !important; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
  .to-top-ring circle { transition: none; }
}

/* ==========================================================================
   v18: Counter strip + "Can't decide" CTA banner
   ========================================================================== */
.counters { padding: clamp(44px, 6vw, 72px) 0; background:
  radial-gradient(60% 120% at 15% 0%, rgba(123, 42, 126, .07), transparent 70%),
  radial-gradient(60% 120% at 85% 100%, rgba(36, 87, 197, .08), transparent 70%), #F4F6FB; }
.counter-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(16px, 2.2vw, 28px); }
.counter-card {
  position: relative; overflow: hidden; text-align: center; background: #fff; border-radius: 20px;
  padding: clamp(24px, 2.6vw, 30px) 18px clamp(22px, 2.4vw, 28px);
  box-shadow: 0 18px 40px -24px rgba(36, 87, 197, .38), 0 1px 0 rgba(16, 35, 63, .04);
  transition: transform .45s cubic-bezier(.22, .8, .24, 1), box-shadow .45s;
}
.counter-card::after { /* shine sweep on hover */
  content: ""; position: absolute; inset: 0; pointer-events: none; transform: translateX(-120%);
  background: linear-gradient(105deg, transparent 35%, rgba(255, 255, 255, .7) 50%, transparent 65%);
}
.counter-ic {
  display: inline-grid; place-items: center; width: 58px; height: 58px; border-radius: 15px; margin-bottom: 14px; color: #fff;
  background: linear-gradient(145deg, #2457C5, #10015f); box-shadow: 0 12px 22px -10px rgba(36, 87, 197, .7);
}
.counter-ic .icon { width: 28px; height: 28px; stroke-width: 1.9; }
.counter-num {
  margin: 0 0 6px; font: 800 clamp(2.4rem, 3.6vw, 3.1rem)/1.05 var(--font-head); letter-spacing: -.03em;
  background: linear-gradient(90deg, #7b2a7e, #2457C5); -webkit-background-clip: text; background-clip: text; color: transparent;
  font-variant-numeric: tabular-nums;
}
.counter-suf { display: inline-block; margin-left: .08em; }
.counter-label { margin: 0; font: 700 1rem var(--font-head); color: var(--muted-d); }
@media (hover: hover) {
  .counter-card:hover { transform: translateY(-8px); box-shadow: 0 30px 50px -26px rgba(36, 87, 197, .5); }
  .counter-card:hover::after { transform: translateX(120%); transition: transform .9s ease; }
  .counter-card:hover .counter-ic { animation: icWiggle .7s ease; }
}
@keyframes icWiggle { 30% { transform: rotate(-10deg) scale(1.08); } 60% { transform: rotate(6deg) scale(1.04); } }
/* entrance: icon pops, suffix lands after the count finishes */
.js .counter-card .counter-ic { transform: scale(.3) rotate(-25deg); opacity: 0; }
.js .counter-card.is-in .counter-ic { transform: none; opacity: 1; transition: transform .7s cubic-bezier(.34, 1.7, .64, 1) calc(.15s + var(--i, 0) * 90ms), opacity .3s calc(.15s + var(--i, 0) * 90ms); }
.js .counter-card .counter-suf { transform: translateY(-.5em) scale(.4); opacity: 0; }
.js .counter-card.is-in .counter-suf { transform: none; opacity: 1; transition: transform .5s cubic-bezier(.34, 1.7, .64, 1) 1.35s, opacity .3s 1.35s; }
@media (max-width: 900px) { .counter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 380px) { .counter-label { font-size: .875rem; } .counter-card { padding-inline: 10px; } }

.reveal-all .counter-card * { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: reduce) {
  .js .counter-card * { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* ==========================================================================
   v19: Flat icons (no gloss, bevel or drop shadows)
   ========================================================================== */
.counter-ic { background: var(--blue); box-shadow: none; border-radius: 14px; }
.counter-card:nth-child(2) .counter-ic { background: var(--teal-ink); }
.counter-card:nth-child(3) .counter-ic { background: #7b2a7e; }
.counter-card:nth-child(4) .counter-ic { background: #E8762B; }
.counter-ic .icon { stroke-width: 1.8; }

.jr-icon { background: var(--c); box-shadow: none; }
.jr-icon::after { display: none; }
.jr-shadow { display: none; }
@media (min-width: 900px) {
  .jr-icon { transition: scale .35s cubic-bezier(.34, 1.56, .64, 1), box-shadow .35s; }
  .jr-step:hover .jr-icon { box-shadow: 0 0 0 8px color-mix(in srgb, var(--c) 20%, transparent); }
  .jr-trav-bg { filter: none; stroke: var(--navy); stroke-width: 2; }
}

.course-ic { background: var(--cc); box-shadow: none; border-radius: 14px; }
@media (hover: hover) {
  .course:hover .course-ic { box-shadow: 0 0 0 6px color-mix(in srgb, var(--cc) 18%, transparent); }
}

/* ==========================================================================
   v19: Left navigation hover (Resources + Legal) and legal page layout
   ========================================================================== */
.res-nav-inner { position: relative; }
.res-nav-inner > * { position: relative; z-index: 1; }
.res-nav-inner > .nav-glide {
  position: absolute; left: 0; top: 0; z-index: 0; width: 0; height: 0; border-radius: 10px; pointer-events: none;
  background: linear-gradient(90deg, #E6EDFC, #F1F5FE); opacity: 0;
  transition: transform .42s cubic-bezier(.65, 0, .35, 1), width .42s cubic-bezier(.65, 0, .35, 1), height .42s cubic-bezier(.65, 0, .35, 1), opacity .25s;
}
.res-nav-inner > .nav-glide.is-on { opacity: 1; }
.has-glide .res-nav-link::before { display: none; }
.res-nav-link { display: flex; align-items: center; gap: 10px; background: transparent; transition: color .25s, padding-left .35s cubic-bezier(.22, .8, .24, 1), background-color .25s; }
.res-nav-link > span:not(.legal-ic) { flex: 1 1 auto; min-width: 0; }
.res-nav-link .nav-arrow { flex: none; width: 15px; height: 15px; opacity: 0; transform: translateX(-10px); transition: opacity .25s, transform .35s cubic-bezier(.22, .8, .24, 1); }
.res-nav-link:hover .nav-arrow, .res-nav-link.is-active .nav-arrow { opacity: 1; transform: none; }
.res-nav-link:hover::after { transform: scaleY(.55); }
.res-nav-link.is-active:hover::after { transform: scaleY(1); }
.res-nav-link.is-active { box-shadow: 0 10px 20px -12px rgba(36, 87, 197, .8); }

/* legal: icon tiles (flat) */
.legal-ic { flex: none; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; background: #EEF3FD; color: var(--blue); transition: background-color .3s, color .3s, transform .45s cubic-bezier(.34, 1.56, .64, 1); }
.legal-ic .icon { width: 17px; height: 17px; }
.legal-link { padding-top: 7px; padding-bottom: 7px; padding-left: 8px; }
.legal-link:hover { padding-left: 12px; }
.legal-link:hover .legal-ic { background: var(--blue); color: #fff; transform: rotate(-8deg) scale(1.06); }
.legal-link.is-active { padding-left: 12px; }
.legal-link.is-active .legal-ic { background: rgba(255, 255, 255, .18); color: #fff; }

/* legal: "On this page" with a progress rail */
.legal-toc { gap: 0; margin-left: 10px; }
.toc-link { padding: 7px 10px 7px 16px; border-radius: 0 10px 10px 0; font-size: .875rem; font-weight: 500; color: var(--muted-d); box-shadow: inset 2px 0 0 var(--line-cool); }
.toc-link::after { top: 4px; bottom: 4px; width: 2px; border-radius: 2px; }
.toc-link:hover { padding-left: 20px; }
.toc-link.is-current { color: var(--blue); font-weight: 700; }
.toc-link.is-current::after { transform: scaleY(1); }
.legal-nav .res-nav-inner { max-height: calc(100vh - 130px); overflow-y: auto; scrollbar-width: thin; scrollbar-color: #CBD5E6 transparent; }
@media (max-height: 1060px) { .legal-nav .res-nav-cta { display: none; } }
@media (min-width: 1025px) { .res-nav-link:not(.toc-link)::after { left: 4px; } }
.legal-prose { max-width: 800px; }
.legal-prose h2 { scroll-margin-top: 110px; }
@media (max-width: 1024px) {
  .legal-toc, .legal-toc-title { display: none !important; }
  .legal-nav .res-nav-inner { max-height: none; overflow-y: visible; overflow-x: auto; }
  .legal-link { padding: 6px 14px 6px 6px; }
  .legal-link:hover, .legal-link.is-active { padding-left: 6px; }
  .legal-ic { width: 26px; height: 26px; border-radius: 50%; }
  .legal-ic .icon { width: 14px; height: 14px; }
  .res-nav-link .nav-arrow { display: none; }
  .res-nav-link.is-active { box-shadow: none; }
}
@media (prefers-reduced-motion: reduce) {
  .res-nav-inner > .nav-glide, .res-nav-link, .res-nav-link .nav-arrow, .legal-ic { transition: none; }
}

/* ==========================================================================
   v20: Phone field (+91 fixed) and form result modal
   ========================================================================== */
.phone-wrap { position: relative; display: flex; align-items: stretch; }
.phone-cc {
  flex: none; display: inline-flex; align-items: center; gap: 7px; padding: 0 12px; border: 1px solid var(--line-cool); border-right: 0;
  border-radius: var(--r-md) 0 0 var(--r-md); background: #F3F5FA; font: 700 .9375rem var(--font-body); color: var(--navy); user-select: none;
}
.phone-cc img { width: 20px; height: 14px; border-radius: 2px; box-shadow: 0 0 0 1px rgba(16, 35, 63, .08); }
.phone-wrap input { flex: 1 1 auto; min-width: 0; border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; letter-spacing: .04em; }
.field.has-error .phone-cc { border-color: var(--danger); background: var(--danger-soft); }
.field.is-valid .phone-cc { border-color: var(--ok); }

/* modal */
html.modal-open { overflow: hidden; }
.pec-modal { padding: 0; border: 0; background: transparent; max-width: min(520px, calc(100vw - 28px)); width: 100%; max-height: calc(100dvh - 28px); overflow: visible; color: var(--ink); }
.pec-modal::backdrop { background: rgba(10, 18, 36, .55); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); animation: pmFade .25s ease both; }
.pec-modal[open] .pm-card { animation: pmIn .45s cubic-bezier(.22, 1.2, .36, 1) both; }
.pec-modal.is-closing .pm-card { animation: pmOut .22s ease both; }
.pec-modal.is-closing::backdrop { animation: pmFade .22s ease reverse both; }
@keyframes pmFade { from { opacity: 0; } }
@keyframes pmIn { from { opacity: 0; transform: translateY(24px) scale(.94); } }
@keyframes pmOut { to { opacity: 0; transform: translateY(12px) scale(.97); } }
.pm-card {
  position: relative; max-height: calc(100dvh - 28px); overflow: auto; padding: 34px clamp(20px, 5vw, 36px) 26px; text-align: center;
  background: #fff; border-radius: 22px; box-shadow: 0 40px 80px -30px rgba(10, 18, 36, .55);
}
.pm-card::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 6px; border-radius: 22px 22px 0 0; background: var(--pm-c, var(--blue)); }
.is-success { --pm-c: #12A150; --pm-soft: #E7F7EE; }
.is-error { --pm-c: #D92D20; --pm-soft: #FEF0EF; }
.is-warn { --pm-c: #E8862B; --pm-soft: #FFF4E8; }
.pm-close { position: absolute; right: 12px; top: 14px; width: 38px; height: 38px; border: 0; border-radius: 50%; background: transparent; color: var(--muted-d); cursor: pointer; display: grid; place-items: center; transition: background-color .2s, transform .3s; }
.pm-close:hover { background: #F1F3F8; transform: rotate(90deg); }
.pm-close svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.pm-icon { width: 84px; height: 84px; margin: 0 auto 16px; border-radius: 50%; background: var(--pm-soft); display: grid; place-items: center; animation: pmPop .55s cubic-bezier(.34, 1.7, .64, 1) .12s both; }
@keyframes pmPop { from { transform: scale(.3); opacity: 0; } }
.pm-icon svg { width: 56px; height: 56px; fill: none; stroke: var(--pm-c); stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; }
.pm-ring { stroke-dasharray: 151; stroke-dashoffset: 151; animation: pmDraw .6s ease .25s forwards; opacity: .35; }
.pm-tick { stroke-dasharray: 36; stroke-dashoffset: 36; animation: pmDraw .45s ease .6s forwards; }
.pm-cross { stroke-dasharray: 46; stroke-dashoffset: 46; animation: pmDraw .4s ease .55s forwards; }
@keyframes pmDraw { to { stroke-dashoffset: 0; } }
.pm-title { font-size: clamp(1.35rem, 3.4vw, 1.6rem); margin: 0 0 8px; color: var(--navy); }
.pm-msg { margin: 0 auto 6px; max-width: 42ch; color: var(--muted-d); line-height: 1.6; }
.pm-extra { margin: 14px 0 0; text-align: left; }
.pm-extra:empty { display: none; }
.pm-ref { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: center; margin: 4px auto 10px; padding: 12px 14px; border: 1px dashed #B9C6E3; border-radius: 14px; background: #F6F8FD; }
.pm-ref span { font-size: .8125rem; color: var(--muted); text-transform: uppercase; letter-spacing: .08em; font-weight: 700; }
.pm-ref strong { font: 800 1.125rem var(--font-head); color: var(--navy); letter-spacing: .02em; }
.pm-copy { border: 1px solid var(--line-cool); background: #fff; border-radius: 999px; padding: 4px 12px; font: 600 .8125rem var(--font-body); color: var(--blue); cursor: pointer; }
.pm-copy:hover { background: var(--blue); color: #fff; border-color: var(--blue); }
.pm-note { text-align: center; font-size: .875rem; color: var(--muted-d); margin: 0 0 12px; }
.pm-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.pm-steps li { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 12px; background: #F7F8FB; font-size: .9375rem; color: #3A4560; opacity: 0; animation: pmRise .45s ease forwards; }
.pm-steps li:nth-child(1) { animation-delay: .7s; } .pm-steps li:nth-child(2) { animation-delay: .82s; } .pm-steps li:nth-child(3) { animation-delay: .94s; }
@keyframes pmRise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.pm-steps span { flex: none; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--pm-c); color: #fff; font: 800 .8125rem var(--font-head); }
.pm-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.pm-list li { display: grid; gap: 2px; padding: 10px 14px; border-left: 3px solid var(--pm-c); border-radius: 0 10px 10px 0; background: var(--pm-soft); font-size: .9063rem; }
.pm-list strong { color: var(--navy); font-family: var(--font-head); }
.pm-list span { color: #5B3A36; }
.is-warn .pm-list span { color: #6A4A1E; }
.pm-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 22px; }
.pm-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 22px; border-radius: 999px; border: 1px solid var(--line-cool); background: #fff;
  font: 700 .9688rem var(--font-head); color: var(--navy); text-decoration: none; cursor: pointer; transition: transform .25s cubic-bezier(.34, 1.56, .64, 1), background-color .2s, color .2s, box-shadow .25s; }
.pm-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 20px -12px rgba(16, 35, 63, .5); }
.pm-primary { background: var(--pm-c); border-color: var(--pm-c); color: #fff; }
.pm-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--pm-c) 40%, transparent); outline-offset: 2px; }
@media (max-width: 480px) { .pm-actions { flex-direction: column; } .pm-btn { width: 100%; } }
@media (prefers-reduced-motion: reduce) {
  .pec-modal[open] .pm-card, .pec-modal.is-closing .pm-card, .pm-icon, .pm-steps li, .pec-modal::backdrop { animation: none; opacity: 1; }
  .pm-ring, .pm-tick, .pm-cross { animation: none; stroke-dashoffset: 0; }
}

/* ==========================================================================
   v21: Blog module (listing, sidebar, article)
   ========================================================================== */
.blog-search-hero { position: relative; display: flex; align-items: center; gap: 8px; max-width: 620px; margin-top: 26px; padding: 6px 6px 6px 18px; background: #fff; border: 1px solid var(--line-cool); border-radius: 999px; box-shadow: 0 14px 30px -22px rgba(16,35,63,.45); transition: box-shadow .3s, border-color .3s; }
.blog-search-hero:focus-within { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(36,87,197,.14), 0 14px 30px -22px rgba(16,35,63,.45); }
.blog-search-hero > .icon { width: 20px; height: 20px; color: var(--muted); flex: none; }
.blog-search-hero input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; font: 500 1rem var(--font-body); color: var(--ink); padding: 10px 0; }
.blog-search-hero .pill-btn { min-height: 44px; flex: none; }
@media (max-width: 520px) { .blog-search-hero .pill-btn span:first-child { display: none; } .blog-search-hero .pill-btn { padding: 0 4px; } }

.blog-cats { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 30px; }
.blog-chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; border-radius: 999px; border: 1px solid var(--line-cool); background: #fff; color: var(--navy); font: 600 .9375rem var(--font-head); text-decoration: none; transition: background-color .25s, color .25s, border-color .25s, transform .3s cubic-bezier(.34,1.56,.64,1); }
.blog-chip span { min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: #EEF3FD; color: var(--blue); font-size: .75rem; display: inline-grid; place-items: center; }
.blog-chip:hover { border-color: var(--blue); color: var(--blue); transform: translateY(-2px); }
.blog-chip.is-active { background: var(--navy); border-color: var(--navy); color: #fff; }
.blog-chip.is-active span { background: rgba(255,255,255,.18); color: #fff; }

.blog-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(28px, 4vw, 56px); align-items: start; }
.blog-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.blog-feature { position: relative; }
.blog-feature .media { position: relative; }
.feat-badge { position: absolute; left: 16px; top: 16px; padding: 6px 12px; border-radius: 999px; background: #fff; color: var(--navy); font: 800 .75rem var(--font-head); letter-spacing: .08em; text-transform: uppercase; }
.post-card .post-title { font-size: 1.1875rem; line-height: 1.35; margin: 0 0 8px; transition: color .25s; }
.post-card:hover .post-title { color: var(--blue); }
.post-more { margin-top: auto; padding-top: 12px; display: inline-flex; align-items: center; gap: 6px; font: 700 .9063rem var(--font-head); color: var(--blue); }
.post-more .icon { width: 16px; height: 16px; transition: transform .3s; }
.post-card:hover .post-more .icon { transform: translateX(4px); }
.blog-empty { text-align: center; padding: 56px 20px; border: 1px dashed var(--line-cool); border-radius: var(--r-lg); background: #fff; }
.blog-empty > .icon { width: 40px; height: 40px; color: var(--muted); }
.blog-empty h2 { font-size: 1.375rem; margin: 10px 0 6px; }

.pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 40px; }
.pager ol { list-style: none; margin: 0; padding: 0; display: flex; gap: 6px; }
.pager ol a, .pager ol span { display: grid; place-items: center; min-width: 42px; height: 42px; padding: 0 10px; border-radius: 12px; border: 1px solid var(--line-cool); background: #fff; color: var(--navy); font: 700 .9375rem var(--font-head); text-decoration: none; transition: background-color .2s, color .2s, border-color .2s; }
.pager ol a:hover { border-color: var(--blue); color: var(--blue); }
.pager ol .is-current { background: var(--blue); border-color: var(--blue); color: #fff; }
.pager ol .gap { display: grid; place-items: center; min-width: 24px; color: var(--muted); }
.pager-btn { display: inline-flex; align-items: center; gap: 8px; height: 42px; padding: 0 16px; border-radius: 999px; border: 1px solid var(--line-cool); background: #fff; color: var(--navy); font: 700 .9375rem var(--font-head); text-decoration: none; }
.pager-btn .icon { width: 16px; height: 16px; }
.pager-btn:hover { border-color: var(--blue); color: var(--blue); }
.pager-btn.is-off { opacity: .4; }
@media (max-width: 560px) { .pager-btn span { display: none; } .pager-btn { padding: 0 12px; } }

.blog-side { display: grid; gap: 20px; position: sticky; top: 100px; }
.side-card { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 20px; }
.side-title { margin: 0 0 12px; font: 800 1.0625rem var(--font-head); color: var(--navy); }
.side-cats { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.side-cats a { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; border-radius: 10px; color: #3A4560; text-decoration: none; font-weight: 600; transition: background-color .25s, color .25s, padding-left .3s var(--ease); }
.side-cats a em { font-style: normal; min-width: 24px; padding: 2px 8px; border-radius: 999px; background: #F1F3F8; font-size: .75rem; text-align: center; color: var(--muted-d); }
.side-cats a:hover, .side-cats a.is-active { background: #EEF3FD; color: var(--blue); padding-left: 16px; }
.side-pop { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.side-pop a { display: flex; gap: 12px; align-items: center; text-decoration: none; color: var(--ink); }
.pop-img { position: relative; flex: none; width: 64px; height: 64px; border-radius: 12px; overflow: hidden; background: linear-gradient(135deg, var(--navy-2), var(--blue)); }
.pop-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.pop-img b { position: absolute; left: 4px; top: 4px; width: 22px; height: 22px; border-radius: 50%; background: #fff; color: var(--navy); font: 800 .75rem/22px var(--font-head); text-align: center; }
.side-pop a:hover img { transform: scale(1.08); }
.pop-text strong { display: block; font: 700 .9375rem/1.35 var(--font-head); transition: color .2s; }
.side-pop a:hover strong { color: var(--blue); }
.pop-text small { color: var(--muted); font-size: .8125rem; }
.side-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.side-tags a { padding: 6px 12px; border-radius: 999px; background: #F3F5FA; color: #3A4560; font-size: .8438rem; font-weight: 600; text-decoration: none; transition: background-color .2s, color .2s; }
.side-tags a:hover, .side-tags a.is-active { background: var(--blue); color: #fff; }
.side-cta { background: linear-gradient(150deg, #7b2a7e, #10015f); border: 0; color: #E5D8F0; }
.side-cta .side-title { color: #fff; }
.side-cta p { font-size: .9375rem; margin: 0 0 14px; }
.side-cta .pill-btn { --pb-bg: #fff; --pb-fg: var(--navy); --pb-bd: #fff; --pb-ic-bg: var(--blue); --pb-sweep: var(--teal); width: 100%; justify-content: space-between; min-height: 44px; }
.side-toc { padding-bottom: 14px; }
.toc-list { list-style: none; margin: 0; padding: 0; display: grid; }
.toc-list a { display: block; padding: 6px 10px 6px 14px; box-shadow: inset 2px 0 0 var(--line-cool); color: var(--muted-d); font-size: .875rem; text-decoration: none; transition: color .2s, box-shadow .2s, padding-left .3s var(--ease); }
.toc-list .lvl-3 a { padding-left: 26px; font-size: .8438rem; }
.toc-list a:hover { color: var(--blue); padding-left: 18px; }
.toc-list a.is-current { color: var(--blue); font-weight: 700; box-shadow: inset 3px 0 0 var(--blue); }
@media (max-width: 1024px) {
  .blog-layout { grid-template-columns: minmax(0, 1fr); }
  .blog-side { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .side-toc { display: none; }
}
@media (max-width: 680px) { .blog-grid-2 { grid-template-columns: 1fr; } .blog-side { grid-template-columns: 1fr; } }

/* article */
.preview-bar { background: #FFF4E8; border-bottom: 1px solid #F5C79A; color: #6A4A1E; font-size: .9375rem; padding: 10px 0; }
.preview-bar a { font-weight: 700; margin-left: 6px; }
.post-head { padding: clamp(28px, 4vw, 48px) 0 clamp(20px, 3vw, 32px); background: linear-gradient(180deg, #F2F4FA, transparent); }
.post-head-inner { max-width: 860px; }
.post-cat { display: inline-block; margin: 18px 0 14px; padding: 6px 14px; border-radius: 999px; background: #EEF3FD; color: var(--blue); font: 700 .8438rem var(--font-head); text-decoration: none; letter-spacing: .02em; }
.post-cat:hover { background: var(--blue); color: #fff; }
.post-head h1 { font-size: clamp(2rem, 4.4vw, 3.2rem); line-height: 1.12; margin: 0 0 14px; }
.post-byline { display: flex; align-items: center; gap: 12px; margin-top: 20px; }
.by-avatar { flex: none; width: 44px; height: 44px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: linear-gradient(135deg, #7b2a7e, var(--blue)); color: #fff; font: 800 1.125rem var(--font-head); }
.by-avatar img { width: 100%; height: 100%; object-fit: cover; }
.by-avatar.lg { width: 64px; height: 64px; font-size: 1.5rem; }
.by-text { display: grid; line-height: 1.35; }
.by-text strong { color: var(--navy); font-family: var(--font-head); }
.by-text > span { color: var(--muted); font-size: .875rem; }
.post-hero { margin: 0 0 36px; border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 1320 / 560; background: var(--ivory-2); }
.post-hero img { width: 100%; height: 100%; object-fit: cover; }
.post-layout { padding-bottom: clamp(40px, 6vw, 72px); }
.post-body { max-width: none; font-size: 1.0938rem; }
.post-body h2, .post-body h3 { scroll-margin-top: 110px; }
.post-body img { max-width: 100%; height: auto; border-radius: 14px; }
.post-body figure { margin: 26px 0; }
.post-body figcaption { font-size: .875rem; color: var(--muted); margin-top: 8px; text-align: center; }
.post-body blockquote { margin: 26px 0; padding: 18px 22px; border-left: 4px solid var(--blue); background: #F4F7FD; border-radius: 0 14px 14px 0; font-size: 1.125rem; color: var(--navy); }
.post-body table { width: 100%; border-collapse: collapse; margin: 24px 0; font-size: .9688rem; display: block; overflow-x: auto; }
.post-body th, .post-body td { border: 1px solid var(--line-cool); padding: 10px 12px; text-align: left; }
.post-body th { background: #F3F5FA; color: var(--navy); }
.post-body iframe { width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; border-radius: 14px; }
.post-body pre { background: #10233F; color: #E6ECF8; padding: 16px 18px; border-radius: 12px; overflow-x: auto; font-size: .9rem; }
.share-row { display: flex; align-items: center; gap: 8px; margin-bottom: 26px; }
.share-row > span { font: 700 .8438rem var(--font-head); color: var(--muted); text-transform: uppercase; letter-spacing: .08em; margin-right: 4px; }
.share-btn { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; border: 1px solid var(--line-cool); background: #fff; color: var(--navy); cursor: pointer; transition: transform .3s cubic-bezier(.34,1.56,.64,1), background-color .2s, color .2s, border-color .2s; }
.share-btn .icon { width: 18px; height: 18px; }
.share-btn:hover { transform: translateY(-3px); color: #fff; }
.s-wa:hover { background: #25D366; border-color: #25D366; } .s-fb:hover { background: #1877F2; border-color: #1877F2; }
.s-in:hover { background: #0A66C2; border-color: #0A66C2; } .s-x:hover { background: #111; border-color: #111; }
.s-copy:hover, .s-copy.is-done { background: var(--blue); border-color: var(--blue); color: #fff; }
.post-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 34px 0 10px; }
.post-tags span { font-weight: 700; color: var(--navy); margin-right: 4px; }
.post-tags a { padding: 6px 12px; border-radius: 999px; background: #F3F5FA; color: #3A4560; font-size: .875rem; font-weight: 600; text-decoration: none; }
.post-tags a:hover { background: var(--blue); color: #fff; }
.author-box { display: flex; gap: 18px; align-items: flex-start; margin: 30px 0; padding: 22px; border: 1px solid var(--line); border-radius: 18px; background: #fff; }
.ab-label { margin: 0; font-size: .75rem; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); font-weight: 700; }
.ab-name { margin: 2px 0 6px; font: 800 1.125rem var(--font-head); color: var(--navy); }
.ab-bio { margin: 0; color: var(--muted-d); font-size: .9375rem; }
.post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.post-nav a { display: grid; gap: 6px; padding: 18px 20px; border: 1px solid var(--line); border-radius: 16px; background: #fff; text-decoration: none; color: var(--ink); transition: border-color .25s, transform .3s, box-shadow .3s; }
.post-nav a:hover { border-color: var(--blue); transform: translateY(-3px); box-shadow: 0 16px 30px -24px rgba(36,87,197,.6); }
.post-nav span { display: inline-flex; align-items: center; gap: 6px; font-size: .8125rem; color: var(--muted); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.post-nav .icon { width: 14px; height: 14px; }
.post-nav strong { font-family: var(--font-head); color: var(--navy); line-height: 1.35; }
.pn-next { text-align: right; } .pn-next span { justify-content: flex-end; }
@media (max-width: 600px) { .post-nav { grid-template-columns: 1fr; } .pn-next { text-align: left; } .pn-next span { justify-content: flex-start; } .author-box { flex-direction: column; } }
.pm-list .pm-more { border-left-color: transparent; background: transparent; padding: 2px 14px; color: var(--muted-d); font-size: .875rem; }
@media (max-width: 760px) { .blog-feature { grid-template-columns: minmax(0, 1fr); } .blog-feature .media { min-height: 200px; aspect-ratio: 16 / 9; } }

/* ==========================================================================
   v22: Blog article — left navigation (all articles by category)
   ========================================================================== */
@media (min-width: 1200px) { .post-layout { grid-template-columns: 250px minmax(0, 1fr) 290px; gap: clamp(24px, 2.6vw, 40px); } }
@media (min-width: 1025px) and (max-width: 1199.98px) {
  .post-layout { grid-template-columns: 240px minmax(0, 1fr); }
  .post-layout > .blog-side { grid-column: 1 / -1; position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .post-layout > .blog-side .side-toc { display: none; }
}
.blog-lnav { position: sticky; top: 100px; align-self: start; }
.lnav-card { background: #fff; border: 1px solid var(--line); border-radius: 18px; overflow: hidden; }
.lnav-head { list-style: none; display: flex; align-items: center; gap: 10px; padding: 16px 18px; font: 800 1rem var(--font-head); color: var(--navy); cursor: pointer; border-bottom: 1px solid var(--line); }
.lnav-head::-webkit-details-marker, .lnav-group summary::-webkit-details-marker { display: none; }
.lnav-head > span { display: inline-flex; align-items: center; gap: 10px; flex: 1; }
.lnav-head > span .icon { width: 20px; height: 20px; color: var(--blue); }
.lnav-head em, .lnav-group summary em { font-style: normal; min-width: 24px; padding: 2px 8px; border-radius: 999px; background: #EEF3FD; color: var(--blue); font: 700 .75rem var(--font-body); text-align: center; }
.lnav-chev, .lnav-caret { width: 16px; height: 16px; transition: transform .3s var(--ease); flex: none; }
.lnav-card[open] > .lnav-head .lnav-chev, .lnav-group[open] > summary .lnav-caret { transform: rotate(180deg); }
.lnav-body { max-height: calc(100vh - 190px); overflow-y: auto; padding: 12px 10px 14px; scrollbar-width: thin; scrollbar-color: #CBD5E6 transparent; }
.lnav-search { position: relative; display: block; margin: 0 4px 10px; }
.lnav-search .icon { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--muted); }
.lnav-search input { width: 100%; height: 38px; padding: 0 12px 0 34px; border: 1px solid var(--line-cool); border-radius: 10px; font: 500 .875rem var(--font-body); background: #F7F8FB; transition: border-color .2s, background-color .2s; }
.lnav-search input:focus { outline: 0; border-color: var(--blue); background: #fff; }
.lnav-group { margin: 2px 0; }
.lnav-group summary { list-style: none; display: flex; align-items: center; gap: 8px; padding: 9px 10px; border-radius: 10px; cursor: pointer; font: 700 .9063rem var(--font-head); color: var(--navy); transition: background-color .2s, color .2s; }
.lnav-group summary span { flex: 1; }
.lnav-group summary:hover { background: #F3F6FC; color: var(--blue); }
.lnav-group ul { list-style: none; margin: 2px 0 8px 12px; padding: 0 0 0 0; border-left: 2px solid var(--line-cool); }
.lnav-group li a { position: relative; display: grid; gap: 1px; padding: 7px 10px 7px 14px; margin-left: -2px; border-left: 2px solid transparent; border-radius: 0 10px 10px 0; text-decoration: none; color: #3A4560; font-size: .875rem; line-height: 1.35; transition: color .2s, background-color .2s, border-color .2s, padding-left .3s var(--ease); }
.lnav-group li a small { color: var(--muted); font-size: .75rem; }
.lnav-group li a:hover { color: var(--blue); background: #F3F6FC; padding-left: 18px; border-left-color: #9DB4EA; }
.lnav-group li a.is-current { color: var(--blue); font-weight: 700; background: #EEF3FD; border-left-color: var(--blue); }
.lnav-empty { margin: 8px 10px; color: var(--muted); font-size: .875rem; }
.lnav-all { display: inline-flex; align-items: center; gap: 6px; margin: 10px 10px 0; font: 700 .875rem var(--font-head); color: var(--blue); text-decoration: none; }
.lnav-all .icon { width: 15px; height: 15px; transition: transform .3s; }
.lnav-all:hover .icon { transform: translateX(-4px); }
@media (min-width: 1025px) { .lnav-head { cursor: default; pointer-events: none; } .lnav-chev { display: none; } }
@media (max-width: 1024px) { .blog-lnav { position: static; } .lnav-body { max-height: 60vh; } }

/* ==========================================================================
   v23: Pop-up window (offers, announcements, admissions, webinars, scholarships)
   ========================================================================== */
.promo { padding: 0; border: 0; background: transparent; width: min(880px, calc(100vw - 28px)); max-width: none; max-height: calc(100dvh - 28px); overflow: visible; color: var(--ink); }
.promo::backdrop { background: rgba(10, 18, 36, .6); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); animation: pmFade .3s ease both; }
.promo.is-closing::backdrop { animation: pmFade .24s ease reverse both; }
.promo-card { position: relative; display: grid; grid-template-columns: 44% minmax(0, 1fr); max-height: calc(100dvh - 28px); overflow: hidden; background: #fff; border-radius: 24px; box-shadow: 0 50px 100px -40px rgba(10, 18, 36, .7); }
.promo[open] .promo-card { animation: promoIn .55s cubic-bezier(.22, 1.2, .36, 1) both; }
.promo.is-closing .promo-card { animation: pmOut .24s ease both; }
@keyframes promoIn { from { opacity: 0; transform: translateY(30px) scale(.92); } }
.promo.no-img .promo-card { grid-template-columns: 34% minmax(0, 1fr); }
.promo-media { position: relative; overflow: hidden; min-height: 100%; background: linear-gradient(150deg, var(--pc), #10015f); }
.promo-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.promo[open] .promo-media img { animation: promoZoom 7s ease-out both; }
@keyframes promoZoom { from { transform: scale(1.12); } }
.promo-art { position: absolute; inset: 0; display: grid; place-items: center; color: rgba(255, 255, 255, .9); }
.promo-art .icon { width: 38%; height: auto; stroke-width: 1.1; animation: promoFloat 5s ease-in-out infinite alternate; }
@keyframes promoFloat { to { transform: translateY(-10px) rotate(-4deg); } }
.promo-media::after { content: ""; position: absolute; inset: auto 0 0 0; height: 40%; background: linear-gradient(transparent, rgba(10, 18, 36, .35)); pointer-events: none; }
.promo-badge { position: absolute; left: 16px; top: 16px; z-index: 1; display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border-radius: 999px; background: #fff; color: var(--pc); font: 800 .78rem var(--font-head); letter-spacing: .06em; text-transform: uppercase; box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .5); }
.promo-badge .icon { width: 15px; height: 15px; }
.promo[open] .promo-badge { animation: pmPop .55s cubic-bezier(.34, 1.7, .64, 1) .25s both; }
.promo-body { position: relative; padding: clamp(28px, 4vw, 44px) clamp(22px, 3.6vw, 40px) clamp(22px, 3vw, 32px); overflow-y: auto; }
.promo-body::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 5px; background: linear-gradient(90deg, var(--pc), #10015f); }
.promo[open] .promo-body > * { animation: pmRise .5s ease both; }
.promo[open] .promo-body > :nth-child(2) { animation-delay: .08s; } .promo[open] .promo-body > :nth-child(3) { animation-delay: .16s; } .promo[open] .promo-body > :nth-child(4) { animation-delay: .24s; }
.promo-body h2 { font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.15; margin: 0 40px 10px 0; color: var(--navy); }
.promo-when { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0 0 12px; font: 700 .9063rem var(--font-head); color: var(--pc); }
.promo-when span { display: inline-flex; align-items: center; gap: 6px; }
.promo-when .icon { width: 16px; height: 16px; }
.promo-desc { color: var(--muted-d); line-height: 1.65; margin: 0 0 18px; }
.promo-x { position: absolute; right: 12px; top: 12px; z-index: 3; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .92); color: var(--navy); display: grid; place-items: center; cursor: pointer; box-shadow: 0 6px 16px -8px rgba(0, 0, 0, .4); transition: transform .3s, background-color .2s; }
.promo-x:hover { transform: rotate(90deg); background: #fff; }
.promo-x .icon { width: 20px; height: 20px; }
.promo-form { display: grid; gap: 12px; }
.promo-form .field { margin: 0; }
.promo-form label { font-size: .8438rem; }
.promo-form input[type=text], .promo-form input[type=email], .promo-form input[type=tel] { min-height: 46px; }
.promo-form .field-err:empty { display: none; }
.promo-submit, .promo-cta { --pb-bg: var(--pc); --pb-bd: var(--pc); --pb-ic-bg: #fff; --pb-ic-fg: var(--pc); --pb-sweep: #10015f; width: 100%; justify-content: space-between; min-height: 52px; margin-top: 4px; }
.promo-cta { width: auto; }
.promo-fine { margin: 2px 0 0; font-size: .78rem; color: var(--muted); text-align: center; }
.promo-fine.is-error { color: var(--danger); font-weight: 600; }
.promo-done { text-align: center; padding: 10px 0; animation: pmRise .45s ease both; }
.promo-done h3 { margin: 10px 0 6px; font-size: 1.4rem; }
.promo-done p { color: var(--muted-d); }
.promo-ref { font-weight: 700; color: var(--navy) !important; }
.promo-tick svg { width: 64px; height: 64px; fill: none; stroke: #12A150; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.promo-tick circle { stroke-dasharray: 151; stroke-dashoffset: 151; animation: pmDraw .6s ease forwards; opacity: .35; }
.promo-tick path { stroke-dasharray: 36; stroke-dashoffset: 36; animation: pmDraw .45s ease .35s forwards; }
@media (max-width: 720px) {
  .promo-card, .promo.no-img .promo-card { grid-template-columns: 1fr; overflow-y: auto; }
  .promo-media { min-height: 0; height: 170px; }
  .promo.no-img .promo-media { height: 120px; }
  .promo-body { overflow: visible; }
  .promo-body h2 { margin-right: 0; }
}
@media (prefers-reduced-motion: reduce) { .promo[open] .promo-card, .promo[open] .promo-body > *, .promo[open] .promo-media img, .promo-art .icon, .promo[open] .promo-badge { animation: none; } }

/* ==========================================================================
   v24: Careers
   ========================================================================== */
.why-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.why-card { padding: 26px; background: #fff; border: 1px solid var(--line); border-radius: 20px; transition: transform .4s cubic-bezier(.22, .8, .24, 1), box-shadow .4s; }
.why-card:hover { transform: translateY(-5px); box-shadow: 0 24px 40px -28px rgba(36, 87, 197, .55); }
.why-card h2 { font-size: 1.15rem; margin: 14px 0 6px; }
.why-card p { margin: 0; color: var(--muted-d); }
.why-ic { display: inline-grid; place-items: center; width: 50px; height: 50px; border-radius: 14px; background: var(--blue); color: #fff; }
.why-card:nth-child(2) .why-ic { background: var(--teal-ink); } .why-card:nth-child(3) .why-ic { background: #7b2a7e; }
.why-ic .icon { width: 24px; height: 24px; }
.sec-head-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.sec-head-row h2 { margin: 0; }
.job-list { display: grid; gap: 14px; }
.job-card { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px; align-items: center; padding: 22px 26px; background: #fff; border: 1px solid var(--line); border-radius: 20px; color: var(--ink); text-decoration: none; overflow: hidden; transition: transform .4s cubic-bezier(.22, .8, .24, 1), box-shadow .4s, border-color .3s; }
.job-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: linear-gradient(#7b2a7e, var(--blue)); transform: scaleY(0); transform-origin: top; transition: transform .45s var(--ease); }
.job-card:hover { transform: translateY(-3px); border-color: #C9D5F2; box-shadow: 0 24px 40px -28px rgba(36, 87, 197, .6); color: var(--ink); }
.job-card:hover::before { transform: scaleY(1); }
.job-card h3 { font-size: 1.25rem; margin: 4px 0 6px; transition: color .25s; }
.job-card:hover h3 { color: var(--blue); }
.job-card p { margin: 0 0 10px; color: var(--muted-d); }
.job-dept { display: inline-block; padding: 4px 12px; border-radius: 999px; background: #EEF3FD; color: var(--blue); font: 700 .78rem var(--font-head); letter-spacing: .03em; }
.job-meta { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; color: var(--muted-d); font-size: .9063rem; }
.job-meta li { display: inline-flex; align-items: center; gap: 6px; }
.job-meta .icon { width: 16px; height: 16px; color: var(--blue); }
.job-meta.lg { margin-top: 16px; font-size: 1rem; }
.job-side { display: grid; justify-items: end; gap: 12px; }
.job-close { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: #F2F4F8; color: var(--muted-d); font: 700 .8125rem var(--font-head); white-space: nowrap; }
.job-close .icon { width: 15px; height: 15px; }
.job-close.is-soon { background: #FFF1DE; color: #9A5A06; }
.job-meta .job-close { padding: 4px 12px; }
.job-go { display: inline-flex; align-items: center; gap: 8px; font: 800 .9375rem var(--font-head); color: var(--blue); }
.job-go .icon { width: 18px; height: 18px; transition: transform .3s; }
.job-card:hover .job-go .icon { transform: translateX(5px); }
.job-hero .job-dept { margin: 16px 0 10px; }
.job-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(28px, 4vw, 56px); align-items: start; }
.job-desc { max-width: none; }
.job-desc h2 { font-size: 1.4rem; margin-top: 1.6em; } .job-desc h2:first-child { margin-top: 0; }
.job-facts { position: sticky; top: 100px; display: grid; gap: 16px; }
.job-facts dl { margin: 0; display: grid; }
.job-facts dl > div { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.job-facts dl > div:last-child { border-bottom: 0; }
.job-facts dt { display: inline-flex; align-items: center; gap: 8px; color: var(--muted-d); font-weight: 500; }
.job-facts dt .icon { width: 16px; height: 16px; color: var(--blue); }
.job-facts dd { margin: 0; font-weight: 700; color: var(--navy); text-align: right; }
.career-apply { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(28px, 5vw, 72px); align-items: start; }
.career-apply-copy h2 { font-size: clamp(1.8rem, 3.2vw, 2.4rem); }
.career-form { background: var(--ivory); border: 1px solid var(--line); border-radius: var(--r-lg); padding: clamp(22px, 3.5vw, 36px); }
.career-form textarea { width: 100%; }
.label-like { display: block; font-weight: 600; font-size: .9375rem; color: var(--navy); margin-bottom: 8px; }
.cv-drop { position: relative; display: flex; align-items: center; gap: 14px; padding: 18px; border: 2px dashed #C3CDE0; border-radius: 16px; background: #fff; cursor: pointer; transition: border-color .25s, background-color .25s, transform .25s; }
.cv-drop:hover, .cv-drop.is-drag { border-color: var(--blue); background: #F3F6FD; }
.cv-drop.is-drag { transform: scale(1.01); }
.cv-drop input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.cv-ic { flex: none; width: 48px; height: 48px; border-radius: 12px; display: grid; place-items: center; background: #EEF3FD; color: var(--blue); transition: background-color .25s, color .25s; }
.cv-ic .icon { width: 24px; height: 24px; }
.cv-text { flex: 1; min-width: 0; display: grid; gap: 2px; }
.cv-text strong { font-family: var(--font-head); color: var(--navy); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-text small { color: var(--muted); }
.cv-change { flex: none; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--line-cool); font: 700 .8438rem var(--font-head); color: var(--blue); background: #fff; }
.cv-drop.has-file { border-style: solid; border-color: #12A150; background: #F1FBF5; }
.cv-drop.has-file .cv-ic { background: #12A150; color: #fff; }
.cv-drop.has-file .cv-change::before { content: "Change"; } .cv-drop.has-file .cv-change { font-size: 0; } .cv-drop.has-file .cv-change::before { font-size: .8438rem; }
.field.has-error .cv-drop { border-color: var(--danger); background: var(--danger-soft); }
input[type=url] { width: 100%; }
@media (max-width: 1024px) { .job-layout, .career-apply { grid-template-columns: minmax(0, 1fr); } .job-facts { position: static; } }
@media (max-width: 760px) { .why-grid { grid-template-columns: 1fr; } .job-card { grid-template-columns: 1fr; padding: 20px; } .job-side { justify-items: start; grid-auto-flow: column; justify-content: space-between; align-items: center; } }
@media (max-width: 420px) { .cv-change { display: none; } }
.field label.cv-drop { display: flex; margin: 0; font-weight: 400; }

/* ==========================================================================
   v25: Testimonials slider (reuses the [data-slider] carousel)
   ========================================================================== */
.tslider-tools { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.tslider { --per: 3; --gap: 20px; }
.tslider .dslide { display: flex; }
.tslider .quote { flex: 1; width: 100%; position: relative; overflow: hidden; transition: transform .45s cubic-bezier(.22, .8, .24, 1), box-shadow .45s, border-color .3s, opacity .4s; }
.tslider .quote::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, #7b2a7e, var(--blue), var(--teal)); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease); }
.tslider .dslide:not(.is-out) .quote::after { transform: scaleX(1); }
.tslider .dslide.is-out .quote { opacity: .45; }
@media (hover: hover) { .tslider .quote:hover { transform: translateY(-6px); border-color: #C9D5F2; box-shadow: 0 26px 44px -28px rgba(36, 87, 197, .6); } }
.tslider .dslider-controls { margin-top: 30px; }
.tslider .dslider-viewport { padding: 10px 0 34px; margin: -10px 0 -34px; }
.avatar-img { object-fit: cover; padding: 0; background: var(--ivory-2); width: 56px; height: 56px; border: 2px solid #fff; box-shadow: 0 0 0 1px var(--line); }
@media (max-width: 1024px) { .tslider { --per: 2; } }
@media (max-width: 700px) {
  .tslider { --per: 1; --gap: 14px; }
  .tslider .dslide.is-out .quote { opacity: .6; }
  .tslider-section .sec-head-row { align-items: flex-start; }
  .tslider .quote { padding: 26px 22px; }
  .avatar-img { width: 48px; height: 48px; }
}
@media (max-width: 600px) { .tslider-tools .dslider-arrows { display: none; } }

/* ==========================================================================
   v26: Top bar social icons (replace opening hours)
   ========================================================================== */
.topbar-social { display: flex; align-items: center; gap: 6px; list-style: none; margin: 0; padding: 0; }
.topbar-social { gap: 8px; }
.topbar .tbs { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 8px; color: #fff; background: transparent; transition: background-color .2s, color .2s; }
.topbar .tbs .icon { width: 20px; height: 20px; color: currentColor; }
/* same hover colour for every network */
.topbar .tbs:hover, .topbar .tbs:focus-visible { background: #fff; color: #10015f; text-decoration: none; }
@media (max-width: 420px) { .topbar-inner { justify-content: space-between; } .topbar-social { gap: 4px; } .topbar .tbs { width: 30px; height: 30px; } }
@media (max-width: 330px) { .topbar-social { display: none; } .topbar-inner { justify-content: center; } }

/* ---------- v27 Destination pages: sticky facts bar with flag + universities carousel ---------- */
.prose > .facts {
  position: sticky; top: 76px; z-index: 20;
  grid-template-columns: 1.5fr 1fr 1fr auto;
  transition: box-shadow .3s var(--ease), border-radius .3s var(--ease);
}
.prose > .facts.is-stuck { box-shadow: 0 -14px 0 0 var(--ivory), 0 14px 30px -20px rgba(16,35,63,.45); }
.prose > .facts dd { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.facts .facts-flag { display: flex; flex-direction: column; justify-content: center; padding-right: 24px; }
.facts .facts-flag dd { display: flex; align-items: center; gap: 10px; white-space: nowrap; }
.facts .facts-flag img { width: 42px; height: 30px; object-fit: cover; border-radius: 5px; box-shadow: 0 0 0 1px rgba(16,35,63,.12), 0 4px 10px -6px rgba(16,35,63,.4); flex: none; }
.dsec { scroll-margin-top: 136px; }
@media (max-width: 860px) {
  .prose > .facts { grid-template-columns: 1fr 1fr; top: 72px; }
  .prose > .facts div { padding: 12px 14px; }
  .prose > .facts dt { font-size: .75rem; margin-bottom: 2px; }
  .prose > .facts dd { font-size: .875rem; -webkit-line-clamp: 1; }
  .facts .facts-flag img { width: 30px; height: 21px; }
  .dsec { scroll-margin-top: 148px; }
}
@media (max-width: 640px) {
  .prose > .facts { grid-template-columns: 1fr 1fr; top: 70px; margin-bottom: 32px; }
  .prose > .facts div { padding: 10px 12px; }
}

.unis-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.unis-head h2 { margin-bottom: 6px; }
.unis-head p { margin: 0; color: var(--muted-d); }
.unis-head .dslider-arrows { flex: none; }
.unis-head .dslider-arrow { width: 46px; height: 46px; }
.uslider { --per: 3; --gap: 16px; }
.uslider .dslide { display: flex; }
.uni-card {
  flex: 1; display: flex; flex-direction: column; gap: 10px; min-height: 196px;
  padding: 20px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--white);
  transition: border-color .25s var(--ease), box-shadow .25s var(--ease), transform .25s var(--ease);
}
.uni-card:hover { border-color: #C9D3E2; box-shadow: 0 18px 36px -24px rgba(16,35,63,.5); transform: translateY(-2px); }
.uni-top { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 4px; }
.uni-mono {
  display: grid; place-items: center; width: 50px; height: 50px; border-radius: 14px;
  background: linear-gradient(135deg, var(--navy), #2457C5); color: #fff;
  font: 700 1rem var(--font-head); letter-spacing: .02em;
}
.uni-flag { width: 24px; height: 17px; object-fit: cover; border-radius: 3px; box-shadow: 0 0 0 1px rgba(16,35,63,.12); }
.uni-card h3 { margin: 0; font-size: 1.0625rem; line-height: 1.3; color: var(--navy); }
.uni-city { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--muted-d); font-size: .875rem; }
.uni-city .icon { width: 15px; height: 15px; color: var(--teal); flex: none; }
.uni-link { margin-top: auto; display: inline-flex; align-items: center; gap: 6px; font-weight: 600; font-size: .875rem; color: var(--blue, #2457C5); text-decoration: none; }
.uni-link .icon { width: 15px; height: 15px; transition: transform .2s var(--ease); }
.uni-link:hover { text-decoration: underline; }
.uni-link:hover .icon { transform: translate(2px, -2px); }
.uslider .dslider-controls { margin-top: 22px; }
.uslider .dslide.is-out { opacity: .45; }
.unis-note { display: flex; gap: 10px; align-items: flex-start; margin: 20px 0 0; font-size: .875rem; color: var(--muted-d); }
.unis-note .icon { width: 18px; height: 18px; flex: none; color: var(--teal); margin-top: 2px; }
@media (max-width: 1280px) { .uslider { --per: 3; } }
@media (max-width: 960px) { .uslider { --per: 2; } }
@media (max-width: 680px) { .uslider { --per: 2; --gap: 12px; } }
@media (max-width: 520px) {
  .uslider { --per: 1; }
  .unis-head .dslider-arrows { display: none; }
}
.dest-layout > .prose { min-width: 0; }

/* ---------- v28 Application timeline infographic (destination pages) ---------- */
.atl { margin: 24px 0 8px; }
/* Gantt strip */
.atl-gantt { background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 20px 22px 16px; margin-bottom: 36px; }
.atl-gantt-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 14px; font: 700 .8125rem var(--font-head); color: var(--muted); letter-spacing: .01em; }
.atl-legend { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; }
.atl-legend i { width: 18px; height: 8px; border-radius: 4px; background: linear-gradient(90deg, var(--navy), var(--blue)); }
.atl-row, .atl-axis { display: grid; grid-template-columns: 172px 1fr; align-items: center; gap: 14px; }
.atl-row + .atl-row { margin-top: 8px; }
.atl-lbl { display: flex; align-items: center; gap: 8px; font: 600 .8125rem/1.2 var(--font-head); color: var(--navy); }
.atl-lbl b { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; flex: none; background: #EEF2F8; color: var(--navy); font-size: .6875rem; }
.atl-track {
  position: relative; height: 32px; border-radius: 8px;
  background:
    repeating-linear-gradient(90deg, transparent 0, transparent calc(100% / 12 - 1px), #E7ECF3 calc(100% / 12 - 1px), #E7ECF3 calc(100% / 12)),
    #F6F8FB;
}
.atl-track::after { content: ""; position: absolute; right: 0; top: -4px; bottom: -4px; width: 2px; border-radius: 2px; background: var(--teal); }
.atl-bar {
  position: absolute; top: 4px; bottom: 4px; border-radius: 6px; display: flex; align-items: center; padding-left: 7px; overflow: hidden;
  background: linear-gradient(90deg, var(--navy), var(--blue)); color: #fff;
  box-shadow: 0 6px 14px -8px rgba(36,87,197,.8);
  transform: scaleX(0); transform-origin: left center;
  transition: transform .9s cubic-bezier(.22, .8, .24, 1) calc(var(--i) * .14s + .1s);
}
.atl-row:nth-child(3) .atl-bar { background: linear-gradient(90deg, #2457C5, #2F7FD6); }
.atl-row:nth-child(4) .atl-bar { background: linear-gradient(90deg, #1F7FB8, #17A3A3); }
.atl-row:nth-child(5) .atl-bar { background: linear-gradient(90deg, #13A39A, var(--teal)); }
.atl-bar .icon { width: 15px; height: 15px; flex: none; opacity: 0; transition: opacity .4s ease calc(var(--i) * .14s + .7s); }
.atl.is-in .atl-bar { transform: scaleX(1); }
.atl.is-in .atl-bar .icon { opacity: 1; }
.atl-axis { margin-top: 8px; }
.atl-ticks { position: relative; height: 22px; font: 600 .6875rem var(--font-head); color: var(--muted); }
.atl-ticks > span { position: absolute; top: 4px; transform: translateX(-50%); font-variant-numeric: tabular-nums; }
.atl-ticks > span:first-child { transform: none; }
.atl-ticks > span:nth-child(even) { visibility: hidden; }
.atl-start {
  position: absolute; right: 0; top: 0; transform: translateX(40%); display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 999px; background: var(--teal); color: #fff; font-style: normal; font-size: .6875rem;
  opacity: 0; transition: opacity .5s ease 1s, transform .5s var(--ease) 1s;
}
.atl-start .icon { width: 12px; height: 12px; }
.atl.is-in .atl-start { opacity: 1; transform: translateX(30%); }

/* Step timeline */
.atl-steps { --p: 0; position: relative; list-style: none; margin: 0; padding: 0; }
.atl-steps::before, .atl-steps::after { content: ""; position: absolute; left: 23px; top: 24px; bottom: 30px; width: 2px; border-radius: 2px; }
.atl-steps::before { background: var(--line); }
.atl-steps::after { background: linear-gradient(var(--blue), var(--teal)); transform: scaleY(var(--p)); transform-origin: top; transition: transform .25s linear; }
.atl-step { position: relative; display: grid; grid-template-columns: 48px 1fr; gap: 18px; padding-bottom: 20px; }
.atl-step:last-child { padding-bottom: 0; }
.atl-dot {
  position: relative; z-index: 1; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%;
  background: var(--white); border: 2px solid var(--line); color: var(--muted);
  transition: background-color .45s var(--ease), border-color .45s var(--ease), color .45s var(--ease), transform .45s var(--ease), box-shadow .45s var(--ease);
}
.atl-dot .icon { width: 21px; height: 21px; }
.atl-dot b {
  position: absolute; right: -4px; top: -4px; display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%;
  background: var(--white); border: 1.5px solid var(--line); color: var(--navy); font: 700 .625rem var(--font-head);
  transition: background-color .45s, border-color .45s, color .45s;
}
.atl-step.is-on .atl-dot { background: var(--navy); border-color: var(--navy); color: #fff; transform: scale(1.06); box-shadow: 0 0 0 6px rgba(36,87,197,.12); }
.atl-step.is-on .atl-dot b { background: var(--teal); border-color: var(--teal); color: #fff; }
.atl-goal.is-on .atl-dot { background: var(--teal); border-color: var(--teal); box-shadow: 0 0 0 6px rgba(23,163,163,.15); }
.atl-card {
  padding: 14px 18px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--white);
  opacity: 0; transform: translateX(18px);
  transition: opacity .6s var(--ease), transform .6s var(--ease), border-color .3s, box-shadow .3s;
}
.atl-step.is-seen .atl-card { opacity: 1; transform: none; }
.atl-step.is-on .atl-card { border-color: #C9D3E2; box-shadow: 0 14px 30px -24px rgba(16,35,63,.55); }
.atl-when { display: inline-block; margin-bottom: 4px; padding: 2px 10px; border-radius: 999px; background: #EEF2F8; color: var(--blue); font: 700 .75rem var(--font-head); }
.atl-card h3 { margin: 0 0 2px; font-size: 1.0625rem; color: var(--navy); }
.atl-card p { margin: 0; color: var(--muted-d); font-size: .9375rem; }
.atl-goal .atl-card { background: linear-gradient(135deg, #F2FBFA, #fff); }
.atl-goal .atl-when { background: rgba(23,163,163,.14); color: #0F7C78; }

@media (max-width: 640px) {
  .atl-gantt { padding: 16px 14px 12px; }
  .atl-row, .atl-axis { grid-template-columns: 92px 1fr; gap: 10px; }
  .atl-lbl { font-size: .6875rem; gap: 6px; }
  .atl-lbl b { width: 18px; height: 18px; }
  .atl-track { height: 28px; }
  .atl-bar .icon { display: none; }
  .atl-ticks > span:nth-child(11) { visibility: hidden; }
  .atl-legend { display: none; }
  .atl-steps::before, .atl-steps::after { left: 19px; top: 20px; }
  .atl-step { grid-template-columns: 40px 1fr; gap: 14px; }
  .atl-dot { width: 40px; height: 40px; }
  .atl-dot .icon { width: 18px; height: 18px; }
  .atl-card { padding: 12px 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .atl-bar, .atl-bar .icon, .atl-start, .atl-card, .atl-dot, .atl-steps::after { transition: none !important; }
}

/* ---------- v29 Destination pages: counselling button under the left navigation ---------- */
.toc-cta { margin-top: 22px; padding: 16px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--white); }
.toc .toc-cta p { margin: 0 0 10px; font: 700 .875rem/1.3 var(--font-head); color: var(--navy); }
.toc .toc-cta .pill-btn {
  display: flex; width: 100%; justify-content: space-between; gap: 8px; margin: 0;
  padding: 5px 5px 5px 16px; border: 1.5px solid var(--pb-bd); color: var(--pb-fg);
  font-size: .875rem; white-space: normal; line-height: 1.2; text-align: left;
}
.toc .toc-cta .pill-btn:hover { color: var(--pb-fg); }
.toc .toc-cta .pill-ic { width: 32px; height: 32px; }
[tabindex="-1"]:focus:not(:focus-visible) { outline: none; }

/* ---------- v30 CTA banner: text left, buttons right ---------- */
@media (min-width: 961px) {
  .cta-band { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: clamp(32px, 5vw, 72px); align-items: center; }
  .cta-band > :not(.actions) { grid-column: 1; }
  .cta-band > h2 { margin-bottom: 14px; }
  .cta-band > p { margin-bottom: 0; }
  .cta-band .actions { grid-column: 2; grid-row: 1 / span 2; margin-top: 0; justify-content: flex-end; flex-wrap: nowrap; }
}
.field-other[hidden] { display: none; }

/* ---------- v31 Contact page: two cards side by side, regular-weight details, full-width map ---------- */
.contact-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: stretch; }
.contact-cols .panel { height: 100%; }
.contact-cols .contact-txt a,
.contact-cols .contact-txt > span:not(:first-child):not(.sr-only),
.contact-cols address.contact-txt strong,
.contact-cols address.contact-txt span { font-weight: 400; }
.contact-cols address.contact-txt strong { font-family: var(--font-body); }
.contact-cols .contact-txt a, .contact-cols .contact-txt > span:not(:first-child):not(.sr-only), .contact-cols address.contact-txt span, .contact-cols address.contact-txt strong { color: var(--ink); }
.contact-map { line-height: 0; background: var(--ivory-2); }
.map.map-full { display: block; width: 100%; height: clamp(360px, 45vw, 520px); border-radius: 0; }
@media (max-width: 860px) { .contact-cols { grid-template-columns: 1fr; gap: 16px; } }

/* ---------- v32 Service pages: infographics + animations ---------- */
/* How it works: icon step flow */
.svc-flow { --n: 4; position: relative; display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: 20px; list-style: none; margin: 8px 0 40px; padding: 0; }
.svc-flow-line { position: absolute; left: calc(100% / var(--n) / 2); right: calc(100% / var(--n) / 2); top: 44px; height: 3px; border-radius: 3px; background: var(--line-cool); pointer-events: none; }
.svc-flow-fill { position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--teal)); transform: scaleX(0); transform-origin: left; }
.svc-flow-dot { position: absolute; top: 50%; left: 0; width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%; background: #fff; border: 3px solid var(--teal); box-shadow: 0 0 0 6px rgba(19,184,166,.18); opacity: 0; }
.svc-step {
  position: relative; z-index: 1; padding: 22px 20px 22px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--white);
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.svc-step:hover { transform: translateY(-4px); border-color: #C9D3E2; box-shadow: 0 22px 40px -28px rgba(16,35,63,.55); }
.svc-step-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.svc-step-ic {
  display: grid; place-items: center; width: 46px; height: 46px; border-radius: 14px; color: #fff;
  background: linear-gradient(135deg, var(--navy), var(--blue)); box-shadow: 0 10px 22px -12px rgba(36,87,197,.9);
  transition: transform .45s cubic-bezier(.34, 1.56, .64, 1);
}
.svc-step:nth-child(4) .svc-step-ic { background: linear-gradient(135deg, #1F6FC4, #17A3A3); }
.svc-step:nth-child(5) .svc-step-ic { background: linear-gradient(135deg, #12958E, var(--teal)); }
.svc-step-ic .icon { width: 22px; height: 22px; }
.svc-step:hover .svc-step-ic { transform: rotate(-8deg) scale(1.08); }
.svc-step-num { font: 800 1.75rem/1 var(--font-head); color: #E4E9F1; letter-spacing: -.02em; transition: color .35s var(--ease); }
.svc-step:hover .svc-step-num { color: #C7D3E6; }
.svc-step h3 { font-size: 1.0625rem; margin: 0 0 6px; color: var(--navy); }
.svc-step p { margin: 0; font-size: .9375rem; color: var(--muted-d); }
/* animation (data-reveal adds .is-in) */
.js .svc-flow[data-reveal] { opacity: 1; transform: none; }
.js .svc-flow .svc-step { opacity: 0; transform: translateY(26px); }
.js .svc-flow.is-in .svc-step { opacity: 1; transform: none; transition: opacity .6s var(--ease) calc(var(--i) * .22s + .1s), transform .7s cubic-bezier(.22, .8, .24, 1) calc(var(--i) * .22s + .1s), box-shadow .35s, border-color .35s; }
.js .svc-flow.is-in .svc-step:hover { transform: translateY(-4px); transition-delay: 0s; }
.js .svc-flow .svc-step-ic { transform: scale(.4) rotate(-20deg); }
.js .svc-flow.is-in .svc-step-ic { transform: none; transition: transform .6s cubic-bezier(.34, 1.56, .64, 1) calc(var(--i) * .22s + .35s); }
.js .svc-flow.is-in .svc-step:hover .svc-step-ic { transform: rotate(-8deg) scale(1.08); transition-delay: 0s; }
.svc-flow .svc-flow-fill { transform: scaleX(1); }
.js .svc-flow .svc-flow-fill { transform: scaleX(0); }
.js .svc-flow.is-in .svc-flow-fill { transform: scaleX(1); transition: transform 1.4s cubic-bezier(.65, 0, .35, 1) .25s; }
.js .svc-flow.is-in .svc-flow-dot { animation: svcDot 4.5s cubic-bezier(.65, 0, .35, 1) 1.7s infinite; }
@keyframes svcDot { 0% { left: 0; opacity: 0; } 8% { opacity: 1; } 85% { opacity: 1; } 100% { left: 100%; opacity: 0; } }

/* At a glance strip */
.svc-glance { grid-column: 1 / -1; margin-top: clamp(32px, 4vw, 56px); padding: 22px; border-radius: var(--r-xl); background: linear-gradient(135deg, #F3F6FB, #EEF8F6); border: 1px solid var(--line-cool); }
.svc-glance-title { margin: 0 0 14px 4px; font: 700 .8125rem var(--font-head); text-transform: uppercase; letter-spacing: .08em; color: var(--muted); }
.svc-glance ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.svc-glance li { position: relative; display: flex; align-items: center; gap: 14px; padding: 16px; border-radius: var(--r-lg); background: var(--white); box-shadow: 0 10px 24px -22px rgba(16,35,63,.6); overflow: hidden; }
.svc-glance-ic { position: relative; z-index: 1; margin-left: 2px; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--teal-soft); color: var(--teal-ink); flex: none; }
.svc-glance-ic .icon { width: 20px; height: 20px; }
.svc-glance-ring { position: absolute; left: 10px; top: 50%; width: 56px; height: 56px; margin-top: -28px; transform: rotate(-90deg); pointer-events: none; }
.svc-glance-ring circle { fill: none; stroke: var(--teal); stroke-width: 2; stroke-linecap: round; stroke-dasharray: 120; stroke-dashoffset: 0; }
.js .svc-glance-ring circle { stroke-dashoffset: 120; }
.js .svc-glance li.is-in .svc-glance-ring circle { stroke-dashoffset: 0; transition: stroke-dashoffset 1.2s cubic-bezier(.65, 0, .35, 1) calc(var(--i) * .15s + .3s); }
.svc-glance strong { display: block; font: 800 1.625rem/1.05 var(--font-head); color: var(--navy); font-variant-numeric: tabular-nums; }
.svc-glance .svc-glance-lbl { display: block; font-size: .8125rem; line-height: 1.35; color: var(--muted-d); margin-top: 2px; }

/* ticks lists: staggered slide-in */
.js [data-ticks] li { opacity: 0; transform: translateX(-14px); }
.js [data-ticks].is-in li, .js .is-in [data-ticks] li { opacity: 1; transform: none; transition: opacity .5s var(--ease), transform .55s var(--ease); }
.js [data-ticks] li:nth-child(2) { transition-delay: .12s; }
.js [data-ticks] li:nth-child(3) { transition-delay: .24s; }
.js [data-ticks] li:nth-child(4) { transition-delay: .36s; }
.js [data-ticks] li:nth-child(5) { transition-delay: .48s; }

@media (max-width: 1024px) {
  .svc-glance ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .svc-flow { grid-template-columns: 1fr; gap: 14px; }
  .svc-flow-line { left: 42px; right: auto; top: 30px; bottom: 30px; width: 3px; height: auto; }
  .svc-flow-fill { transform-origin: top; }
  .js .svc-flow .svc-flow-fill { transform: scaleY(0); }
  .js .svc-flow.is-in .svc-flow-fill { transform: scaleY(1); }
  .svc-flow-dot { left: 50%; top: 0; margin: -6px 0 0 -6px; }
  .js .svc-flow.is-in .svc-flow-dot { animation-name: svcDotV; }
  .svc-step { padding: 18px 18px 18px 84px; }
  .svc-step-top { position: absolute; left: 18px; top: 18px; margin: 0; flex-direction: column; gap: 6px; }
  .svc-step-num { font-size: 1rem; }
}
@keyframes svcDotV { 0% { top: 0; opacity: 0; } 8% { opacity: 1; } 85% { opacity: 1; } 100% { top: 100%; opacity: 0; } }
@media (max-width: 520px) {
  .svc-glance { padding: 16px; }
  .svc-glance ul { grid-template-columns: 1fr; gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .svc-flow-dot { display: none; }
  .js .svc-flow .svc-step, .js .svc-flow .svc-step-ic, .js [data-ticks] li { opacity: 1 !important; transform: none !important; }
  .js .svc-flow .svc-flow-fill { transform: none !important; }
  .js .svc-glance-ring circle { stroke-dashoffset: 0; }
}
/* step nodes sit on the connector line */
.svc-flow { gap: 24px; }
.svc-flow-line { left: 32px; right: calc((100% - (var(--n) - 1) * 24px) / var(--n) - 32px); top: 31px; }
.svc-step { padding: 0 8px 0 0; border: 0; background: none; }
.svc-step:hover { transform: none; box-shadow: none; }
.js .svc-flow.is-in .svc-step:hover { transform: none; }
.svc-step-top { position: relative; display: block; width: 64px; height: 64px; margin-bottom: 18px; }
.svc-step-ic { width: 64px; height: 64px; border-radius: 50%; box-shadow: 0 0 0 6px var(--ivory), 0 14px 26px -14px rgba(36,87,197,.9); }
.svc-step-ic .icon { width: 26px; height: 26px; }
.svc-step-num {
  position: absolute; right: -6px; top: -4px; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%;
  background: var(--teal); color: var(--navy); font: 800 .6875rem/1 var(--font-head); letter-spacing: 0; box-shadow: 0 0 0 3px var(--ivory);
}
.svc-step:hover .svc-step-num { color: var(--navy); }
.svc-step h3 { font-size: 1.125rem; }
@media (max-width: 760px) {
  .svc-flow { gap: 26px; }
  .svc-flow-line { left: 30px; right: auto; top: 32px; bottom: 32px; width: 3px; height: auto; }
  .svc-step { display: grid; grid-template-columns: 60px 1fr; column-gap: 16px; padding: 0; }
  .svc-step-top { position: relative; left: auto; top: auto; grid-row: span 2; width: 60px; height: 60px; margin: 0; flex-direction: row; }
  .svc-step-ic { width: 60px; height: 60px; }
  .svc-step h3 { margin-top: 6px; }
  .svc-step-num { font-size: .6875rem; }
}

/* ---------- v33 Home: destination flag wall (3 rows, infinite) ---------- */
.flagwall-section { background-color: #EEF1F6; background-image: radial-gradient(rgba(16,35,63,.09) 1px, transparent 1.2px); background-size: 22px 22px; overflow: hidden; }
.flagwall {
  display: grid; gap: 16px; padding: 6px 0 10px;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);
}
.fw-row { overflow: hidden; touch-action: pan-y; cursor: grab; user-select: none; -webkit-user-select: none; padding: 6px 0 12px; }
.fw-row.is-dragging { cursor: grabbing; }
.fw-track { display: flex; gap: 16px; width: max-content; list-style: none; margin: 0; padding: 0; will-change: transform; }
.fw-track li { flex: none; }
.fw-tile {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
  width: 200px; height: 112px; padding: 12px; border-radius: 16px; background: var(--white);
  border: 1px solid rgba(16,35,63,.06); box-shadow: 0 10px 26px -20px rgba(16,35,63,.45);
  color: var(--navy); text-decoration: none; text-align: center;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.fw-tile img { width: 64px; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 6px; box-shadow: 0 0 0 1px rgba(16,35,63,.1), 0 6px 14px -8px rgba(16,35,63,.5); transition: transform .4s var(--ease); pointer-events: none; }
.fw-tile span { font: 600 .875rem/1.2 var(--font-head); white-space: nowrap; }
.fw-tile:hover, .fw-tile:focus-visible { transform: translateY(-4px); border-color: rgba(36,87,197,.35); box-shadow: 0 20px 34px -22px rgba(36,87,197,.7); color: var(--blue); }
.fw-tile:hover img { transform: scale(1.08); }
.fw-row.is-dragging .fw-tile { transform: none; }
@media (max-width: 760px) {
  .flagwall { gap: 10px; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%); }
  .fw-track { gap: 10px; }
  .fw-tile { width: 140px; height: 88px; gap: 7px; border-radius: 12px; }
  .fw-tile img { width: 46px; }
  .fw-tile span { font-size: .75rem; }
}

/* ---------- v34 "Other services" cards with large icons ---------- */
.res-card-svc { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 18px; align-items: start; }
.rc-ic {
  display: grid; place-items: center; width: 64px; height: 64px; border-radius: 18px;
  background: var(--teal-soft); color: var(--teal-ink);
  transition: background-color .35s var(--ease), color .35s var(--ease), transform .45s cubic-bezier(.34, 1.56, .64, 1);
}
.rc-ic .icon { width: 32px; height: 32px; }
.res-card-svc:hover .rc-ic { background: linear-gradient(135deg, var(--navy), var(--blue)); color: #fff; transform: rotate(-6deg) scale(1.06); }
.res-card-svc .rc-body h3 { margin-top: 2px; }
.res-card-svc:hover h3 { color: var(--blue); }
@media (max-width: 520px) {
  .res-card-svc { grid-template-columns: 52px minmax(0, 1fr); gap: 14px; }
  .rc-ic { width: 52px; height: 52px; border-radius: 15px; }
  .rc-ic .icon { width: 26px; height: 26px; }
}

/* ---------- Flag wall: centred heading, link below, white background ---------- */
.flagwall-section { background: var(--white); }
.flagwall-head { text-align: center; max-width: 720px; margin: 0 auto clamp(28px, 4vw, 44px); }
.flagwall-head h2 { margin-bottom: 10px; }
.flagwall-head p { margin: 0 0 14px; color: var(--muted-d); }
.flagwall-head .text-link { justify-content: center; }
.flagwall-section .fw-tile { background: var(--white); border-color: var(--line); box-shadow: 0 10px 26px -20px rgba(16,35,63,.35); }

/* ---------- v35 Universities page ---------- */
.unis-stats { display: flex; flex-wrap: wrap; gap: 14px; list-style: none; margin: 26px 0 0; padding: 0; }
.unis-stats li { display: flex; align-items: baseline; gap: 10px; padding: 12px 18px; border-radius: 14px; background: var(--white); border: 1px solid var(--line); }
.unis-stats strong { font: 800 1.75rem/1 var(--font-head); color: var(--navy); font-variant-numeric: tabular-nums; }
.unis-stats li > span { color: var(--muted-d); font-size: .9375rem; }

.unis-bar { position: sticky; top: 66px; z-index: 40; background: rgba(255,255,255,.92); -webkit-backdrop-filter: saturate(160%) blur(12px); backdrop-filter: saturate(160%) blur(12px); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.unis-bar-inner { display: flex; align-items: center; gap: 16px; padding-block: 12px; }
.unis-search { position: relative; flex: 0 0 300px; }
.unis-search .icon { position: absolute; left: 14px; top: 50%; width: 18px; height: 18px; margin-top: -9px; color: var(--muted); pointer-events: none; }
.unis-search input { width: 100%; height: 44px; padding: 0 14px 0 40px; border: 1.5px solid var(--line-cool); border-radius: 999px; background: var(--white); font: inherit; font-size: .9375rem; color: var(--ink); transition: border-color .2s, box-shadow .2s; }
.unis-search input:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 4px rgba(36,87,197,.12); }
.unis-jump { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; flex: 1; min-width: 0; padding: 2px; scroll-behavior: auto;
  -webkit-mask-image: linear-gradient(90deg, #000 0, #000 92%, transparent); mask-image: linear-gradient(90deg, #000 0, #000 92%, transparent); }
.unis-jump::-webkit-scrollbar { display: none; }
.unis-jump a { flex: none; display: inline-flex; align-items: center; gap: 7px; height: 36px; padding: 0 14px 0 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--white); color: var(--navy); font: 600 .8125rem var(--font-head); text-decoration: none; white-space: nowrap; transition: background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), transform .25s var(--ease); }
.unis-jump a img { width: 20px; height: 15px; object-fit: cover; border-radius: 3px; box-shadow: 0 0 0 1px rgba(16,35,63,.12); }
.unis-jump a:hover { border-color: var(--blue); color: var(--blue); transform: translateY(-1px); }
.unis-jump a.is-current { background: var(--navy); border-color: var(--navy); color: #fff; }
.unis-jump a[hidden] { display: none; }

.unis-page { padding-top: clamp(32px, 4vw, 48px); }
.unis-country { scroll-margin-top: 150px; margin-bottom: clamp(44px, 5vw, 64px); }
.unis-country[hidden] { display: none; }
.unis-country-head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 16px; margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.unis-flag { width: 48px; height: 36px; object-fit: cover; border-radius: 7px; box-shadow: 0 0 0 1px rgba(16,35,63,.12), 0 8px 16px -10px rgba(16,35,63,.5); }
.unis-country-head h2 { margin: 0; font-size: clamp(1.375rem, 2.2vw, 1.75rem); }
.unis-country-head p { margin: 2px 0 0; color: var(--muted); font-size: .875rem; }
.unis-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 16px; }
.unis-grid li[hidden] { display: none; }

.uni-tile {
  position: relative; isolation: isolate; overflow: hidden; height: 100%;
  display: flex; align-items: flex-start; gap: 16px; padding: 18px;
  border: 1px solid var(--line); border-radius: 18px; background: var(--white); color: var(--navy); text-decoration: none;
  transition: transform .5s cubic-bezier(.22, .8, .24, 1), box-shadow .5s cubic-bezier(.22, .8, .24, 1), border-color .4s, background-color .4s;
}
.uni-tile::before { /* gradient border that fades in */
  content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; padding: 1.5px;
  background: linear-gradient(135deg, var(--blue), var(--teal));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  opacity: 0; transition: opacity .45s var(--ease);
}
.uni-tile::after { /* soft shine sweep */
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background: linear-gradient(110deg, transparent 35%, rgba(255,255,255,.55) 50%, transparent 65%);
  transform: translateX(-120%); transition: transform 0s;
}
a.uni-tile:hover, a.uni-tile:focus-visible { transform: translateY(-6px); border-color: transparent; background: #FBFCFF; box-shadow: 0 26px 44px -28px rgba(36,87,197,.55); color: var(--navy); text-decoration: none; }
a.uni-tile:hover::before, a.uni-tile:focus-visible::before { opacity: 1; }
a.uni-tile:hover::after { transform: translateX(120%); transition: transform .9s cubic-bezier(.22, .8, .24, 1); }
.uni-logo {
  position: relative; flex: none; width: 64px; height: 64px; border-radius: 16px; overflow: hidden;
  display: grid; place-items: center; background: linear-gradient(135deg, var(--navy), var(--blue));
  box-shadow: 0 10px 20px -14px rgba(16,35,63,.6);
  transition: transform .55s cubic-bezier(.34, 1.56, .64, 1), box-shadow .45s var(--ease);
}
.uni-ini { font: 800 1rem var(--font-head); color: #fff; letter-spacing: .02em; }
.uni-logo img { position: absolute; inset: 0; width: 100%; height: 100%; padding: 12px; object-fit: contain; background: var(--white); opacity: 0; transition: opacity .4s var(--ease); }
.uni-logo.is-loaded { box-shadow: 0 0 0 1px var(--line), 0 10px 20px -16px rgba(16,35,63,.5); }
.uni-logo.is-loaded img { opacity: 1; }
a.uni-tile:hover .uni-logo { transform: scale(1.08) rotate(-4deg); box-shadow: 0 0 0 1px rgba(36,87,197,.25), 0 16px 26px -14px rgba(36,87,197,.6); }
.uni-info { display: flex; flex-direction: column; gap: 6px; min-width: 0; flex: 1; }
.uni-name { font: 700 1rem/1.3 var(--font-head); color: var(--navy); transition: color .3s; }
a.uni-tile:hover .uni-name { color: var(--blue); }
.uni-place { display: flex; align-items: center; gap: 5px; font-size: .8125rem; color: var(--muted-d); }
.uni-place .icon { width: 14px; height: 14px; color: var(--teal-ink); flex: none; }
.uni-web { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 6px; padding-top: 10px; border-top: 1px dashed var(--line); }
.uni-host { font-size: .8125rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color .3s; }
.uni-go { flex: none; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--teal-soft); color: var(--teal-ink); transition: background-color .35s var(--ease), color .35s var(--ease), transform .45s cubic-bezier(.34, 1.56, .64, 1); }
.uni-go .icon { width: 15px; height: 15px; }
a.uni-tile:hover .uni-host { color: var(--blue); }
a.uni-tile:hover .uni-go { background: var(--blue); color: #fff; transform: translate(2px, -2px) scale(1.08); }

.unis-empty { padding: 28px; text-align: center; border: 1px dashed var(--line-cool); border-radius: var(--r-lg); color: var(--muted-d); }
.unis-note { display: flex; gap: 12px; align-items: flex-start; padding: 18px 20px; border-radius: var(--r-lg); background: var(--ivory); border: 1px solid var(--line); }
.unis-note .icon { width: 20px; height: 20px; flex: none; color: var(--teal-ink); margin-top: 2px; }
.unis-note p { margin: 0; font-size: .9375rem; color: var(--muted-d); }

@media (max-width: 860px) {
  .unis-bar { top: 66px; }
  .unis-bar-inner { flex-direction: column; align-items: stretch; gap: 10px; padding-block: 10px; }
  .unis-search { flex: none; }
  .unis-country { scroll-margin-top: 200px; }
  .unis-country-head { grid-template-columns: auto 1fr; }
  .unis-country-head .text-link { grid-column: 1 / -1; font-size: .9375rem; }
}
@media (max-width: 520px) {
  .unis-grid { grid-template-columns: 1fr; gap: 12px; }
  .uni-tile { padding: 14px; gap: 14px; }
  .uni-logo { width: 56px; height: 56px; border-radius: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .uni-tile, .uni-tile::after, .uni-logo, .uni-go { transition: none !important; }
}
/* chip bar: drag / swipe, fading edges that follow the scroll position */
.unis-jump { cursor: grab; user-select: none; -webkit-user-select: none; touch-action: pan-x pan-y; overscroll-behavior-x: contain;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%); }
.unis-jump.at-start { -webkit-mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 40px), transparent 100%); mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 40px), transparent 100%); }
.unis-jump.at-end { -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 100%); mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 100%); }
.unis-jump.at-start.at-end { -webkit-mask-image: none; mask-image: none; }
.unis-jump.is-dragging { cursor: grabbing; scroll-behavior: auto; }
.unis-jump.is-dragging a { pointer-events: none; }
.unis-jump a img { -webkit-user-drag: none; }

/* ---------- v36 Landing pages (/lp/…): lean header, form-first hero ---------- */
.lp-header .header-inner { justify-content: space-between; }
.lp-header .brand img { height: 48px; width: auto; }
.lp-header-actions { display: flex; align-items: center; gap: 14px; }
.lp-call { display: inline-flex; align-items: center; gap: 8px; font: 700 .9375rem var(--font-head); color: var(--navy); text-decoration: none; }
.lp-call .icon { width: 18px; height: 18px; color: var(--teal-ink); }
.lp-call:hover { color: var(--blue); }
.consult.consult-hero {
  border-top: 0; padding-block: clamp(40px, 6vw, 80px) clamp(56px, 7vw, 96px);
  background:
    radial-gradient(60% 70% at 100% 0%, rgba(36,87,197,.12), transparent 70%),
    radial-gradient(50% 60% at 0% 100%, rgba(19,184,166,.12), transparent 70%),
    var(--ivory);
}
.consult-hero .consult-inner { grid-template-columns: 1fr 1.05fr; align-items: center; }
.consult-hero .consult-copy h1 { font-size: clamp(2.1rem, 4.2vw, 3.4rem); line-height: 1.06; margin: 0 0 18px; }
.consult-eyebrow { display: inline-flex; align-items: center; gap: 8px; margin: 0 0 16px; padding: 6px 14px; border-radius: 999px; background: var(--white); border: 1px solid var(--line); font: 700 .8125rem var(--font-head); color: var(--teal-ink); letter-spacing: .02em; }
.consult-eyebrow::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--teal); box-shadow: 0 0 0 4px rgba(19,184,166,.18); }
.consult-hero .consult-points li { font-size: 1.0313rem; }
.consult-hero .consult-form { background: var(--white); box-shadow: 0 30px 60px -36px rgba(16,35,63,.45); border-color: rgba(16,35,63,.08); }
.lp-facts-sec { padding-block: 28px; border-bottom: 1px solid var(--line); }
.lp-facts { margin: 0; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; }
.lp-center { text-align: center; margin-inline: auto; max-width: 680px; }
.lp-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.lp-card { padding: 24px 22px; border-radius: var(--r-lg); background: var(--white); border: 1px solid var(--line); transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .3s; }
.lp-card:hover { transform: translateY(-4px); border-color: var(--line-cool); box-shadow: 0 22px 40px -28px rgba(16,35,63,.5); }
.lp-card-ic { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 16px; margin-bottom: 16px; background: linear-gradient(135deg, var(--navy), var(--blue)); color: #fff; }
.lp-card-ic .icon { width: 24px; height: 24px; }
.lp-card h3 { font-size: 1.0938rem; margin: 0 0 6px; }
.lp-card p { margin: 0; color: var(--muted-d); font-size: .9375rem; }
.prose-wide .dsec { border: 0; padding: 0; margin: 0; }
.lp-footer { padding: 26px 0 90px; }
.lp-footer-inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; align-items: center; font-size: .875rem; }
.lp-footer-inner p { margin: 0; }
.lp-footer-inner ul { display: flex; gap: 18px; list-style: none; margin: 0; padding: 0; }
.lp-footer a { color: inherit; }
@media (max-width: 1024px) { .lp-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 860px) { .consult-hero .consult-inner { grid-template-columns: 1fr; } .lp-facts { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) {
  .lp-call span { display: none; }
  .lp-call { width: 42px; height: 42px; justify-content: center; border-radius: 50%; border: 1px solid var(--line); }
  .lp-header .pill-btn { min-height: 42px; padding-left: 14px; font-size: .875rem; }
  .lp-header .brand img { height: 38px; }
  .lp-cards { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .lp-header .lp-call { display: none; }          /* the bottom bar already has Call */
  .lp-header .brand { min-width: 0; }
  .consult-eyebrow { font-size: .75rem; }
}

/* ---------- v37 Hero slide background video ---------- */
.hs-media picture { position: absolute; inset: 0; display: block; }
.hs-video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none;
  opacity: 0; transition: opacity .9s ease; transform: scale(1.04);
}
.hs-video.is-ready { opacity: 1; }
.hs-slide.is-active .hs-video { transform: scale(1); transition: opacity .9s ease, transform 12s linear; }
@media (prefers-reduced-motion: reduce) { .hs-video { display: none; } }

/* ---------- v38 Landing pages on small phones ---------- */
.lp-header .header-inner { gap: 10px; }
.lp-header .brand { flex: 0 1 auto; min-width: 0; display: block; }
.lp-header .brand img { display: block; width: auto; max-width: 100%; height: 48px; object-fit: contain; object-position: left center; }
.lp-header-actions { flex: none; }
@media (max-width: 640px) {
  .lp-header .brand img { height: 36px; }
  .lp-header .pill-btn { min-height: 40px; padding: 4px 4px 4px 14px; gap: 8px; font-size: .8125rem; }
  .lp-header .pill-ic { width: 30px; height: 30px; }
  .lp-page .contact-fab { display: none; }            /* the bottom bar already has Call + the main button */
}
@media (max-width: 350px) {
  .lp-header .brand img { height: 32px; }
  .lp-header .lp-cta-txt { display: none; }           /* icon-only button on very narrow phones */
  .lp-header .pill-btn { padding: 4px; }
}

/* ---------- v39 Landing pages: in-page navigation (pages that set $page['lp_nav']) ---------- */
.lp-nav { flex: 1; display: flex; align-items: center; justify-content: center; min-width: 0; }
.lp-nav ul { display: flex; align-items: center; gap: 2px; list-style: none; margin: 0; padding: 0; }
.lp-nav a[data-lp-link] {
  position: relative; display: block; padding: 10px 11px; border-radius: 10px; font: 600 .9063rem var(--font-head); color: var(--ink); text-decoration: none; white-space: nowrap;
  transition: color .25s var(--ease), background-color .25s var(--ease);
}
.lp-nav a[data-lp-link]::after { content: ""; position: absolute; left: 11px; right: 11px; bottom: 4px; height: 2px; border-radius: 2px; background: linear-gradient(90deg, #2457C5, #6C3BF4, #13B8A6); transform: scaleX(0); transform-origin: left; transition: transform .3s var(--ease); }
.lp-nav a[data-lp-link]:hover { color: var(--navy); }
.lp-nav a[data-lp-link]:hover::after, .lp-nav a[data-lp-link].is-current::after { transform: scaleX(1); }
.lp-nav a[data-lp-link].is-current { color: var(--blue); }
.lp-nav-cta { display: none; }
.lp-burger { display: none; position: relative; width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); cursor: pointer; flex: none; }
.lp-burger span { position: absolute; left: 12px; right: 12px; height: 2px; border-radius: 2px; background: var(--navy); transition: transform .3s var(--ease), opacity .2s, top .3s var(--ease); }
.lp-burger span:nth-child(1) { top: 14px; } .lp-burger span:nth-child(2) { top: 21px; } .lp-burger span:nth-child(3) { top: 28px; }
.lp-burger[aria-expanded="true"] span:nth-child(1) { top: 21px; transform: rotate(45deg); }
.lp-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.lp-burger[aria-expanded="true"] span:nth-child(3) { top: 21px; transform: rotate(-45deg); }
.lp-page [id] { scroll-margin-top: 84px; }
@media (max-width: 1360px) { .lp-header:has(.lp-nav) .lp-call { display: none; } }
@media (max-width: 1100px) {
  .lp-header .header-inner { position: relative; }
  .lp-burger { display: block; }
  .lp-header-actions { margin-left: auto; display: flex; flex-direction: row-reverse; gap: 10px; }
  .lp-nav {
    position: absolute; left: 0; right: 0; top: calc(100% + 1px); z-index: 60; display: block;
    padding: 14px var(--gutter, 16px) 18px; background: var(--white); border-bottom: 1px solid var(--line); box-shadow: 0 24px 40px -24px rgba(16,35,63,.45);
    opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity .25s var(--ease), transform .3s var(--ease), visibility 0s .3s;
  }
  .lp-nav.is-open { opacity: 1; visibility: visible; transform: none; transition: opacity .25s var(--ease), transform .3s var(--ease); }
  .lp-nav ul { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
  .lp-nav a[data-lp-link] { padding: 12px 14px; background: #F5F7FB; text-align: center; }
  .lp-nav a[data-lp-link]::after { display: none; }
  .lp-nav a[data-lp-link].is-current { background: #E8EFFC; }
  .lp-nav-cta { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 12px; min-height: 48px; border-radius: 999px; background: linear-gradient(110deg, #2457C5, #6C3BF4 50%, #13B8A6); color: #fff; font: 700 1rem var(--font-head); text-decoration: none; }
  .lp-nav-cta .icon { width: 18px; height: 18px; }
  .lp-nav-cta:hover { color: #fff; text-decoration: none; }
}
@media (max-width: 640px) {
  .lp-nav ul { grid-template-columns: 1fr 1fr; }
  .lp-nav { max-height: calc(100dvh - 70px); overflow-y: auto; }
  .lp-burger { width: 40px; height: 40px; }
  .lp-burger span { left: 11px; right: 11px; }
  .lp-burger span:nth-child(1) { top: 12px; } .lp-burger span:nth-child(2) { top: 19px; } .lp-burger span:nth-child(3) { top: 26px; }
  .lp-burger[aria-expanded="true"] span:nth-child(1), .lp-burger[aria-expanded="true"] span:nth-child(3) { top: 19px; }
  .lp-page [id] { scroll-margin-top: 74px; }
}
@media (max-width: 350px) { .lp-header .pill-btn { display: none; } }   /* the menu has the Register button */
