:root{
  --white:#FFFFFF;
  --coral:#FE6F7F;
  --blush:#F8C1B1;
  --peach:#FB965F;
  --orange:#FF683B;
  --navy:#17233A;
  --navy-soft:#4A5568;
  --grad: linear-gradient(90deg, var(--coral), var(--orange));
  --grad-diag: linear-gradient(135deg, var(--coral), var(--peach) 55%, var(--orange));
  --shadow-card: 0 10px 30px rgba(23,35,58,0.08);
  --shadow-btn: 0 8px 20px rgba(255,104,59,0.35);
  --radius-lg: 28px;
  --radius-md: 18px;
  --radius-pill: 999px;
}
/* ---------- GOOGLE TRANSLATE BANNER ----------
   Visiting a page through translate.google.com/translate?...&u=... (our
   language selector) serves the page from a *.translate.goog domain.
   Google's Website Translator injects its own top toolbar (logo,
   source/target language, a "Translation" quality dropdown) directly
   into that served page as a fixed-position iframe overlaying the top
   of the content. Because our own stylesheet is loaded within that
   same served document, we can hide it -- this has to live in the
   main stylesheet (not a page-specific override) since every page on
   the site is reachable through the language selector.
   Confirmed live in-browser (2026-08-19): the actual element Google's
   current translate service injects is `<iframe id="gt-nvframe">`, NOT
   the classic `.goog-te-banner-frame`/`.skiptranslate` classes from the
   old Website Translator widget docs -- kept those older selectors too
   in case Google serves a different variant, but #gt-nvframe is the one
   that matters for the URL-based translation this site links to. */
#gt-nvframe,
.goog-te-banner-frame.skiptranslate,
.goog-te-banner-frame,
iframe.skiptranslate,
#goog-gt-tt,
.goog-tooltip:not(.goog-te-menu-value):hover{
  display:none !important;
}
html, body{
  top:0 !important;
  margin-top:0 !important;
  position:static !important;
}
.goog-text-highlight{
  background:none !important;
  box-shadow:none !important;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:'Lato', Arial, 'Liberation Sans', sans-serif;
  color:var(--navy);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block;}
a{text-decoration:none;color:inherit;}
ul{list-style:none;margin:0;padding:0;}
.container{
  max-width:1180px;
  margin:0 auto;
  padding:0 24px;
}
h1,h2,h3,h4{
  font-weight:900;
  line-height:1.15;
  margin:0 0 16px;
  letter-spacing:-0.5px;
}
h2{font-size:clamp(28px,4vw,42px);}
h3{font-size:20px;font-weight:700;letter-spacing:0;}
p{line-height:1.7;color:var(--navy-soft);margin:0 0 16px;}
.eyebrow{
  display:inline-block;
  font-weight:700;
  font-size:13px;
  letter-spacing:1px;
  text-transform:uppercase;
  color:var(--navy);
  background:var(--blush);
  padding:6px 16px;
  border-radius:var(--radius-pill);
  margin-bottom:18px;
}
.accent{
  color:var(--orange);
}
.btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-weight:700;
  font-size:16px;
  padding:16px 32px;
  border-radius:var(--radius-pill);
  border:none;
  cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease;
}
.btn-primary{
  background:var(--grad);
  color:#fff;
  box-shadow:var(--shadow-btn);
}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(255,104,59,0.42);}
.btn-outline{
  background:#fff;
  color:var(--navy);
  border:2px solid var(--blush);
}
.btn-outline:hover{border-color:var(--orange);color:var(--orange);}
.btn-sm{padding:12px 22px;font-size:14px;}
section{padding:88px 0;position:relative;}
.section-head{max-width:680px;margin:0 auto 48px;text-align:center;}
.section-head p{max-width:560px;margin-left:auto;margin-right:auto;}
.section-head.left{margin-left:0;text-align:left;}

/* ---------- HEADER ---------- */
header{
  position:sticky;top:0;z-index:100;
  background:rgba(255,255,255,0.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(23,35,58,0.06);
}
.header-inner{
  display:flex;align-items:center;gap:28px;
  padding:16px 24px;
  max-width:1600px;margin:0 auto;
}
.logo{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.logo img{height:38px;width:auto;}

/* Nav sits in the flexible middle column so it reads as balanced under the
   logo/actions rather than pinned hard against either side. */
nav.main-nav{flex:1;min-width:0;display:flex;justify-content:center;}
nav.main-nav ul{display:flex;gap:26px;align-items:center;}
nav.main-nav a{
  display:inline-flex;align-items:center;gap:6px;
  font-weight:700;font-size:15px;color:var(--navy);white-space:nowrap;
}
nav.main-nav a:hover, nav.main-nav a.active{color:var(--orange);}

/* Icons before every nav label / CTA. stroke:currentColor means the icon
   always matches the text colour, including on hover/active, with no extra
   per-icon colour rules needed. */
.nav-icon{width:17px;height:17px;stroke:currentColor;flex-shrink:0;}
.btn-icon{width:17px;height:17px;stroke:currentColor;flex-shrink:0;}

/* Language selector + both CTAs + hamburger are one grouped unit on the
   right, kept visually attached to each other rather than floating apart
   from the main nav. */
.header-actions{display:flex;align-items:center;gap:18px;flex-shrink:0;}
.header-cta{display:flex;align-items:center;gap:12px;}

/* ---------- NAV DROPDOWNS (Locations + English share this system) ---------- */
.nav-dropdown{position:relative;}
.nav-dropdown-toggle{
  display:flex;align-items:center;gap:6px;
  background:none;border:none;cursor:pointer;padding:4px 2px;
  font-weight:700;font-size:15px;color:var(--navy);font-family:inherit;
  white-space:nowrap;
}
.nav-dropdown-toggle .chevron{width:13px;height:13px;stroke:var(--navy-soft);transition:transform .18s ease, stroke .18s ease;flex-shrink:0;}
.nav-dropdown:hover .nav-dropdown-toggle,
.nav-dropdown:focus-within .nav-dropdown-toggle,
.nav-dropdown-toggle[aria-expanded="true"],
.nav-dropdown-toggle.active{color:var(--orange);}
.nav-dropdown:hover .nav-dropdown-toggle .chevron,
.nav-dropdown:focus-within .nav-dropdown-toggle .chevron,
.nav-dropdown-toggle[aria-expanded="true"] .chevron{transform:rotate(180deg);stroke:var(--orange);}

/* The outer box sits flush against the trigger (top:100%) and uses
   padding-top as an invisible hover bridge; the visible card is the
   .nav-dropdown-menu-inner child. Because that padding is part of THIS
   element's own hoverable box, the cursor never leaves a hoverable area
   while crossing it -- which is what was closing the menu before (the old
   rule used `top:calc(100% + 20px)`, a real gap with nothing in it, so
   :hover was lost mid-transit between the trigger and the menu). */
.nav-dropdown-menu{
  position:absolute;top:100%;left:50%;
  transform:translateX(-50%) translateY(-4px);
  padding-top:14px;
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .16s ease, transform .16s ease, visibility .16s;
  z-index:140;
}
.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu,
.nav-dropdown-menu.open{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);
}
.nav-dropdown-menu-inner{
  background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  padding:10px;min-width:340px;
  display:grid;grid-template-columns:1fr 1fr;gap:2px;
}
.nav-dropdown-menu a{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;border-radius:9px;
  font-weight:700;font-size:14px;color:var(--navy);
}
.nav-dropdown-menu a:hover, .nav-dropdown-menu a.active{background:#FFF3EE;color:var(--orange);}
.nav-dropdown-menu a::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--grad);flex-shrink:0;}

/* Mobile: Locations/English become inline accordions inside the slide-in
   menu -- click/tap driven already, untouched by the hover fix above. */
.mobile-nav-dropdown-toggle{
  display:flex;align-items:center;justify-content:space-between;width:100%;
  background:none;border:none;padding:0;cursor:pointer;font-family:inherit;
  font-size:20px;font-weight:700;color:var(--navy);
}
.mobile-nav-label, .lang-toggle-inner{display:flex;align-items:center;gap:12px;}
.mobile-nav-dropdown-toggle .nav-icon,
.mobile-nav-dropdown-toggle .lang-globe-icon{width:20px;height:20px;}
.mobile-nav-dropdown-toggle .chevron{width:18px;height:18px;stroke:var(--navy-soft);transition:transform .2s ease;flex-shrink:0;}
.mobile-nav-dropdown-toggle[aria-expanded="true"] .chevron{transform:rotate(180deg);}
.mobile-nav-submenu{
  max-height:0;overflow:hidden;transition:max-height .25s ease;
  display:flex;flex-direction:column;gap:0;padding-left:4px;
}
.mobile-nav-submenu.open{max-height:1200px;margin-top:18px;}
.mobile-nav-submenu li{margin-bottom:16px;}
.mobile-nav-submenu li:last-child{margin-bottom:0;}
.mobile-nav-submenu a{font-size:16px;font-weight:700;color:var(--navy-soft);}
.mobile-nav-submenu a::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--grad);margin-right:10px;}
.mobile-nav-submenu a.active{color:var(--orange);}
.menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:6px;}
.menu-toggle span{display:block;width:24px;height:3px;background:var(--navy);margin:5px 0;border-radius:2px;}

/* ---------- NAV LANGUAGE SELECTOR (Google Translate links) ---------- */
.lang-globe-icon{width:17px;height:17px;stroke:var(--navy-soft);flex-shrink:0;transition:stroke .15s ease;}
.lang-dropdown:hover .lang-globe-icon,
.lang-dropdown:focus-within .lang-globe-icon,
.lang-toggle[aria-expanded="true"] .lang-globe-icon,
.lang-toggle-mobile[aria-expanded="true"] .lang-globe-icon{stroke:var(--orange);}
.lang-dropdown .nav-dropdown-menu-inner{grid-template-columns:1fr 1fr;min-width:280px;}
.trust-strip{
  background:var(--navy);
  color:#fff;
  font-size:13px;
  font-weight:700;
  letter-spacing:.3px;
}
.trust-strip .container{
  display:flex;justify-content:center;gap:36px;flex-wrap:wrap;
  padding:9px 24px;
}
.trust-strip span{opacity:.92;display:flex;align-items:center;gap:8px;}
.trust-strip span::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--peach);}

/* ---------- HERO ---------- */
.hero{
  padding:64px 0 40px;
  background:
    radial-gradient(circle at 85% 12%, rgba(254,111,127,0.10), transparent 45%),
    radial-gradient(circle at 8% 90%, rgba(255,104,59,0.08), transparent 40%);
}
.hero .container{
  display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center;
}
.hero h1{font-size:clamp(36px,5vw,58px);}
.hero .lead{font-size:18px;max-width:480px;}
.hero-ctas{display:flex;gap:16px;flex-wrap:wrap;margin:28px 0 34px;}
.hero-badges{display:flex;gap:28px;flex-wrap:wrap;}
.hero-badges .badge{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14px;}
.badge .ico-circle{width:34px;height:34px;}
.hero-visual{position:relative;}
.hero-visual .frame{
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:var(--shadow-card);
  position:relative;
}
.hero-visual img{width:100%;height:560px;object-fit:cover;}
.stat-float{
  position:absolute;bottom:24px;left:-28px;
  background:#fff;border-radius:20px;box-shadow:var(--shadow-card);
  padding:16px 22px;display:flex;align-items:center;gap:12px;
}
.stat-float .num{font-size:26px;font-weight:900;color:var(--orange);}
.stat-float .lbl{font-size:12px;font-weight:700;color:var(--navy-soft);line-height:1.3;}

/* icon circle */
.ico-circle{
  width:52px;height:52px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--blush);
  flex-shrink:0;
}
.ico-circle.solid{background:var(--grad);}
.ico-circle svg{width:24px;height:24px;stroke:var(--orange);}
.ico-circle.solid svg{stroke:#fff;}

/* ---------- BARRIERS SECTION ---------- */
.barriers{background:#FFF8F5;}
.barriers-grid{
  display:grid;grid-template-columns:repeat(5,1fr);gap:18px;
}
.barrier-card{
  background:#fff;border-radius:var(--radius-md);padding:26px 20px;
  box-shadow:var(--shadow-card);text-align:center;
}
.barrier-card .ico-circle{margin:0 auto 16px;}
.barrier-card h3{font-size:15px;margin-bottom:6px;font-weight:900;letter-spacing:-0.5px;}
.barrier-card p{font-size:13.5px;margin:0;}
.barriers-note{
  margin-top:32px;text-align:center;font-weight:700;color:var(--navy);
  background:var(--blush);display:block;max-width:620px;margin-left:auto;margin-right:auto;
  padding:16px 24px;border-radius:var(--radius-pill);
}

/* ---------- FUNDING ---------- */
.funding .container{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
.funding-card{
  background:var(--white);border:1px solid rgba(23,35,58,0.08);
  border-radius:var(--radius-lg);padding:34px;box-shadow:var(--shadow-card);
}
.funding-card + .funding-card{margin-top:20px;}
.funding-card .ico-circle{margin-bottom:16px;}
.funding-card h3{font-size:18px;font-weight:900;letter-spacing:-0.5px;}
.caveat{
  background:#FFF8F5;padding:16px 20px;border-radius:14px;
  font-size:14px;color:var(--navy-soft);margin-top:24px;
}

/* ---------- PROCESS ---------- */
.process{background:linear-gradient(180deg,#FFF8F5, #fff);}
.steps{
  display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-bottom:20px;
}
.step-card{
  background:#fff;border-radius:var(--radius-md);padding:28px 22px;
  box-shadow:var(--shadow-card);position:relative;
}
.step-num{
  width:40px;height:40px;border-radius:50%;background:var(--grad);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:900;font-size:16px;
  margin-bottom:16px;
}
.step-card h3{font-size:16px;margin-bottom:6px;font-weight:900;letter-spacing:-0.5px;}
.step-card p{font-size:13.5px;margin:0;}
.steps-row2{grid-template-columns:repeat(3,1fr);}
.process-cta{text-align:center;margin-top:40px;}

/* ---------- SUPPORT / CONTACT CHANNELS ---------- */
.support .container{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
.support-img{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);}
.support-img img{width:100%;height:480px;object-fit:cover;}
.support-features{display:grid;gap:22px;margin:30px 0;}
.support-feature{display:flex;gap:16px;align-items:flex-start;}
.support-feature h4{font-size:16px;margin-bottom:4px;}
.support-feature p{margin:0;font-size:14.5px;}
.channels{display:flex;gap:14px;flex-wrap:wrap;}
.channel-btn{
  display:flex;align-items:center;gap:12px;background:#fff;border:2px solid var(--blush);
  border-radius:var(--radius-pill);padding:12px 22px;font-weight:700;font-size:14px;
}
.channel-btn:hover{border-color:var(--orange);}

/* ---------- FREE SERVICES ---------- */
.free{background:var(--navy);color:#fff;text-align:center;}
.free .eyebrow{background:rgba(255,255,255,0.12);color:var(--peach);}
.free h2{color:#fff;}
.free .section-head p{color:rgba(255,255,255,0.72);}
.free-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:48px;}
.free-card{
  background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);
  border-radius:var(--radius-md);padding:30px 20px;
}
.free-card .ico-circle{margin:0 auto 16px;background:rgba(255,255,255,0.12);}
.free-card .ico-circle svg{stroke:var(--peach);}
.free-card h3{color:#fff;font-size:16px;font-weight:900;letter-spacing:-0.5px;}
.free-card p{color:rgba(255,255,255,0.68);font-size:13.5px;margin:0;}
.free-banner{
  background:var(--grad);border-radius:var(--radius-lg);
  padding:44px 40px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
}
.free-banner h3{color:#fff;font-size:24px;margin:0;text-align:left;}
.free-banner p{color:rgba(255,255,255,0.9);margin:6px 0 0;text-align:left;}
.free-banner .btn{background:#fff;color:var(--orange);box-shadow:0 8px 20px rgba(0,0,0,0.15);}

/* ---------- TRUST BAR ---------- */
.trustbar{text-align:center;}
.trust-items{
  display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:40px;
}
.trust-item{
  background:#fff;border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);
  padding:28px 18px;box-shadow:var(--shadow-card);
}
.trust-item .ico-circle{margin:0 auto 14px;}
.trust-item h3{font-size:15px;margin-bottom:4px;font-weight:900;letter-spacing:-0.5px;}
.trust-item p{font-size:13px;margin:0;}

/* ---------- UNIVERSITIES ---------- */
.partners{background:#FFF8F5;}
.partners-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.partner-card{
  background:#fff;border-radius:var(--radius-md);padding:30px 26px;box-shadow:var(--shadow-card);
}
.partner-card h4{font-size:18px;margin-bottom:10px;}
.partner-card ul li{
  font-size:14px;color:var(--navy-soft);padding:6px 0 6px 22px;position:relative;
}
.partner-card ul li::before{
  content:"";position:absolute;left:0;top:14px;width:8px;height:8px;border-radius:50%;background:var(--orange);
}

/* ---------- COURSES GRID ---------- */
.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.course-card{
  background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-card);
  display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(23,35,58,0.06);
}
.course-card-body{padding:26px;display:flex;flex-direction:column;flex:1;}
.course-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.course-tag{
  display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.5px;padding:5px 12px;border-radius:var(--radius-pill);
}
.tag-uni{background:var(--blush);color:var(--navy);}
.tag-level{background:rgba(23,35,58,0.06);color:var(--navy-soft);}
.course-card h4{font-size:19px;margin-bottom:8px;}
.course-card p{font-size:14px;margin-bottom:16px;}
.course-meta{display:flex;flex-direction:column;gap:6px;margin-bottom:18px;font-size:13px;color:var(--navy-soft);}
.course-meta li{display:flex;gap:8px;align-items:flex-start;}
.course-meta svg{width:15px;height:15px;stroke:var(--orange);flex-shrink:0;margin-top:2px;}
.course-card .btn-link{
  margin-top:auto;font-weight:700;color:var(--orange);display:inline-flex;align-items:center;gap:6px;font-size:14.5px;
}
.course-card .btn-link svg{width:16px;height:16px;stroke:var(--orange);transition:transform .15s ease;}
.course-card .btn-link:hover svg{transform:translateX(4px);}

/* ---------- TOPICS ---------- */
.topics-grid{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;}
.topic-chip{
  background:#fff;border:2px solid var(--blush);border-radius:var(--radius-pill);
  padding:12px 24px;font-weight:700;font-size:14px;color:var(--navy);
}

/* ---------- GOOGLE REVIEWS ---------- */
.google-reviews{background:#FFF8F5;}

/* -- Rating summary bar: business identity + average rating, sourced
   live from the verified Google Business Profile, never hard-coded.
   .is-loading is applied only until the first fetch resolves. -- */
.reviews-summary:not([hidden]){display:flex;}
.reviews-summary{
  align-items:center;gap:20px;flex-wrap:wrap;
  background:#fff;border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);
  padding:20px 24px;box-shadow:var(--shadow-card);margin-bottom:28px;
}
.reviews-summary-inner{display:flex;align-items:center;gap:14px;min-width:0;}
.google-g{width:30px;height:30px;flex-shrink:0;}
.reviews-summary-text{display:flex;flex-direction:column;gap:4px;min-width:0;}
.reviews-business-name{font-weight:800;font-size:15px;color:var(--navy);}
.reviews-rating-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.reviews-rating-value{font-weight:900;font-size:17px;color:var(--navy);}
.reviews-stars{color:var(--coral);font-size:15px;letter-spacing:2px;line-height:1;}
.reviews-count{font-size:13px;color:var(--navy-soft);}
.reviews-view-all{margin-left:auto;white-space:nowrap;}
.reviews-summary.is-loading .reviews-summary-text,
.reviews-summary.is-loading .reviews-view-all{visibility:hidden;}
.reviews-summary.is-loading{position:relative;}
.reviews-summary.is-loading::after{
  content:"";position:absolute;inset:0;border-radius:var(--radius-md);
  background:linear-gradient(90deg, rgba(23,35,58,0.04) 25%, rgba(23,35,58,0.08) 37%, rgba(23,35,58,0.04) 63%);
  background-size:400% 100%;animation:reviewsShimmer 1.4s ease infinite;
}

/* -- Review cards: same visual DNA as the site's other cards (white
   fill, soft shadow, rounded-md corners, coral accents) -- */
.reviews-grid:not([hidden]){display:grid;}
.reviews-grid{
  grid-template-columns:1fr;gap:24px;margin-top:8px;
}
@media (min-width:768px){
  .reviews-grid{grid-template-columns:repeat(2,1fr);}
}
@media (min-width:1024px){
  .reviews-grid{grid-template-columns:repeat(3,1fr);}
}
.review-card:not([hidden]){display:flex;}
.review-card{
  background:#fff;border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);
  padding:28px;box-shadow:var(--shadow-card);flex-direction:column;min-width:0;
}
.review-card-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;min-width:0;}
.review-avatar{
  width:44px;height:44px;border-radius:50%;background:var(--grad);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;
  flex-shrink:0;object-fit:cover;overflow:hidden;
}
.review-head-text{min-width:0;}
.review-author-name{
  font-size:15px;margin:0;font-weight:700;color:var(--navy);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.review-meta-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--navy-soft);margin-top:2px;}
.review-stars{color:var(--coral);font-size:14px;letter-spacing:1px;line-height:1;}
.review-text{font-size:14.5px;color:var(--navy-soft);line-height:1.7;flex-grow:1;margin-bottom:0;}
.review-text.is-clamped{
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;
}
.review-read-more{
  margin-top:10px;background:none;border:none;padding:0;font-weight:700;font-size:13.5px;
  color:var(--orange);cursor:pointer;font-family:inherit;align-self:flex-start;
}
.review-read-more:hover{text-decoration:underline;}
.review-google-badge{
  margin-top:16px;display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--navy-soft);
}
.review-google-badge svg{width:13px;height:13px;flex-shrink:0;}

/* -- Loading skeleton cards (shown before the first successful fetch;
   shimmer respects prefers-reduced-motion via the global rule below) -- */
.review-skeleton{gap:0;}
.review-avatar-skeleton{
  width:44px;height:44px;border-radius:50%;background:rgba(23,35,58,0.08);flex-shrink:0;
}
.review-head-lines{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0;}
.review-head-lines span{display:block;height:10px;border-radius:4px;background:rgba(23,35,58,0.08);}
.review-head-lines span:first-child{width:55%;height:12px;}
.review-head-lines span:last-child{width:35%;}
.review-text-skeleton{
  display:block;height:11px;border-radius:4px;background:rgba(23,35,58,0.08);margin-top:14px;
}
.review-text-skeleton.short{width:60%;}
.review-skeleton .review-avatar-skeleton,
.review-skeleton .review-head-lines span,
.review-skeleton .review-text-skeleton{animation:reviewsShimmer 1.4s ease infinite;}
@keyframes reviewsShimmer{
  0%{opacity:.6;} 50%{opacity:1;} 100%{opacity:.6;}
}

/* -- Manual (non-autoplaying) Prev/Next + dot pagination -- */
.reviews-carousel{position:relative;}
.reviews-nav:not([hidden]){display:flex;}
.reviews-nav{align-items:center;justify-content:center;gap:16px;margin-top:28px;}
.reviews-nav-btn{
  width:40px;height:40px;border-radius:50%;background:#fff;border:2px solid var(--blush);
  display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--navy);
  flex-shrink:0;transition:border-color .2s ease, color .2s ease;padding:0;
}
.reviews-nav-btn svg{width:18px;height:18px;}
.reviews-nav-btn:hover{border-color:var(--orange);color:var(--orange);}
.reviews-nav-btn:disabled{opacity:.35;cursor:default;}
.reviews-dots{display:flex;align-items:center;gap:8px;}
.reviews-dot{
  width:8px;height:8px;border-radius:50%;background:rgba(23,35,58,0.15);border:none;padding:0;cursor:pointer;
}
.reviews-dot[aria-current="true"]{background:var(--grad);width:22px;border-radius:var(--radius-pill);}

.reviews-fallback-note{text-align:center;color:var(--navy-soft);font-size:14px;margin-top:24px;}
.reviews-fallback-note a{color:var(--orange);font-weight:700;}

@media (max-width:600px){
  .reviews-summary{padding:18px 20px;}
  .reviews-view-all{margin-left:0;width:100%;justify-content:center;display:flex;}
}

/* ---------- FOOTER ---------- */
footer{background:var(--navy);color:rgba(255,255,255,0.75);padding-top:72px;}
.footer-top{
  display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:40px;padding-bottom:48px;
  border-bottom:1px solid rgba(255,255,255,0.1);
}
.footer-brand img{height:38px;margin-bottom:18px;filter:brightness(0) invert(1);}
.footer-brand p{color:rgba(255,255,255,0.6);font-size:14px;margin-bottom:10px;}
.footer-social{display:flex;gap:12px;margin-top:18px;}
.footer-social a{
  width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,0.08);
  display:flex;align-items:center;justify-content:center;
  transition:background .2s ease,transform .2s ease;
}
.footer-social a:hover{background:var(--grad);transform:translateY(-2px);}
.footer-social{flex-wrap:wrap;}
.footer-social svg{width:18px;height:18px;}
.footer-logo-link{display:inline-block;transition:opacity .2s ease;}
.footer-logo-link:hover{opacity:0.82;}
footer h4{color:#fff;font-size:15px;margin-bottom:18px;position:relative;padding-bottom:12px;}
footer h4::after{content:"";position:absolute;left:0;bottom:0;width:28px;height:3px;border-radius:2px;background:var(--grad);}
footer ul li{margin-bottom:11px;font-size:14px;}
footer ul li a{transition:color .2s ease;}
footer ul li a:hover{color:var(--peach);}
.footer-bottom{
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;
  padding:26px 0;font-size:13px;color:rgba(255,255,255,0.5);
}
.footer-bottom ul{display:flex;gap:22px;}

/* ---------- COOKIE BANNER ---------- */
.cookie-banner{
  position:fixed;left:20px;right:20px;bottom:20px;z-index:200;
  max-width:640px;margin:0 auto;
  background:#fff;border-radius:20px;box-shadow:0 20px 50px rgba(0,0,0,0.2);
  padding:22px 26px;display:flex;flex-direction:column;gap:14px;
  transform:translateY(140%);transition:transform .4s ease;
}
.cookie-banner.show{transform:translateY(0);}
.cookie-banner p{font-size:13px;margin:0;color:var(--navy-soft);}
.cookie-actions{display:flex;gap:10px;flex-wrap:wrap;}

/* ---------- INNER PAGE HERO / BREADCRUMB ---------- */
.page-hero{
  padding:56px 0 64px;text-align:center;
  background:
    radial-gradient(circle at 85% 12%, rgba(254,111,127,0.10), transparent 45%),
    radial-gradient(circle at 8% 90%, rgba(255,104,59,0.08), transparent 40%);
}
.breadcrumb{font-size:13px;color:var(--navy-soft);margin-bottom:18px;}
.breadcrumb a{color:var(--orange);font-weight:700;}
.page-hero h1{font-size:clamp(32px,4.5vw,48px);}
.page-hero .lead{max-width:620px;margin:0 auto;font-size:17px;}

/* ---------- ABOUT PAGE ---------- */
.values-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.value-card{background:#fff;border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);padding:26px;box-shadow:var(--shadow-card);}
.value-card h3{font-size:16px;margin-bottom:6px;font-weight:900;letter-spacing:-0.5px;}
.value-card p{font-size:13.5px;margin:0;}
.audience-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;}
.audience-item{display:flex;gap:14px;background:#FFF8F5;border-radius:var(--radius-md);padding:20px;align-items:flex-start;}
.audience-item h3{font-size:15px;margin-bottom:4px;font-weight:900;letter-spacing:-0.5px;}
.audience-item p{font-size:13.5px;margin:0;}
.pillar-row{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:36px;}
.pillar-card{text-align:center;padding:24px 16px;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-card);}
.pillar-card .num{font-size:34px;font-weight:900;color:var(--orange);display:block;margin-bottom:8px;}
.pillar-card p{font-size:13px;margin:0;font-weight:700;color:var(--navy);}

/* ---------- TEAM PAGE ---------- */
.role-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;}
.role-card{
  background:#fff;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);
  display:flex;border:1px solid rgba(23,35,58,0.06);
}
.role-card img{width:200px;object-fit:cover;flex-shrink:0;}
.role-body{padding:24px;display:flex;flex-direction:column;justify-content:center;}
.role-body h3{font-size:17px;margin-bottom:6px;font-weight:900;letter-spacing:-0.5px;}
.role-body p{font-size:14px;margin:0;}
.role-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--orange);margin-bottom:8px;display:block;}
.team-note{
  background:#FFF8F5;padding:18px 22px;
  border-radius:14px;font-size:14px;color:var(--navy-soft);margin-top:36px;
}

/* ---------- CONTACT PAGE ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
.contact-info-list{display:grid;gap:20px;margin:28px 0;}
.contact-info-item{display:flex;gap:16px;align-items:flex-start;}
.contact-info-item h4{font-size:15px;margin-bottom:4px;}
.contact-info-item p{margin:0;font-size:14.5px;}
.contact-form{display:grid;gap:16px;background:#FFF8F5;padding:32px;border-radius:var(--radius-lg);}
.contact-form label{font-size:13px;font-weight:700;margin-bottom:6px;display:block;color:var(--navy);}
.contact-form input, .contact-form select, .contact-form textarea{
  width:100%;padding:13px 16px;border-radius:12px;border:1px solid rgba(23,35,58,0.15);
  font-family:inherit;font-size:14px;background:#fff;color:var(--navy);
}
.contact-form textarea{min-height:120px;resize:vertical;}
.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;}
.form-row-2>div{min-width:0;}
.contact-form .form-note{font-size:12.5px;color:var(--navy-soft);margin:0;}
.map-embed{border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-card);margin-top:24px;height:260px;background:#FFF8F5;display:flex;align-items:center;justify-content:center;color:var(--navy-soft);font-size:13px;text-align:center;padding:20px;}
.map-embed-fallback{flex-direction:column;gap:14px;}
.map-embed-address{margin:0;font-weight:700;color:var(--navy);font-size:15px;max-width:340px;line-height:1.5;}

/* ---------- Contact form validation ---------- */
.form-required-note{font-size:12.5px;color:var(--navy-soft);margin:0 0 16px;}
.req-star{color:#D33A3A;margin-left:2px;}
.contact-form input.invalid, .contact-form select.invalid, .contact-form textarea.invalid{
  border-color:#D33A3A;box-shadow:0 0 0 3px rgba(211,58,58,0.1);
}
.contact-form input:focus-visible, .contact-form select:focus-visible, .contact-form textarea:focus-visible{
  outline:2px solid var(--orange);outline-offset:1px;
}
.char-counter{font-size:12px;color:var(--navy-soft);text-align:right;margin-top:4px;}
.char-counter.limit-near{color:var(--orange);}
.char-counter.limit-over{color:#D33A3A;font-weight:700;}
.phone-input-row{
  display:flex;align-items:stretch;width:100%;position:relative;
  border-radius:12px;border:1px solid rgba(23,35,58,0.15);background:#fff;
}
.phone-input-row:focus-within{outline:2px solid var(--orange);outline-offset:1px;}
.phone-input-row:has(input.invalid){border-color:#D33A3A;box-shadow:0 0 0 3px rgba(211,58,58,0.1);}
.phone-input-row .phone-input-divider{width:1px;flex-shrink:0;margin:9px 0;background:rgba(23,35,58,0.14);}
.contact-form .phone-input-row input{
  flex:1 1 auto;width:auto;min-width:0;
  border:none;border-radius:0;background:transparent;padding:13px 14px 13px 10px;
}
.phone-input-row input:focus{outline:none;}

/* ---------- Country selector (searchable combobox popup) ---------- */
.country-select{position:static;flex:0 0 auto;display:flex;min-width:0;}
.country-select-btn{
  display:flex;align-items:center;gap:6px;min-height:44px;
  border:none;background:transparent;cursor:pointer;font-family:inherit;
  padding:13px 10px 13px 14px;flex:0 0 auto;color:var(--navy);border-radius:12px 0 0 12px;
}
.country-select-btn:focus-visible{outline:2px solid var(--orange);outline-offset:-2px;}
.country-select-flag.fi{width:20px;height:15px;flex-shrink:0;border-radius:2px;box-shadow:0 0 0 1px rgba(23,35,58,0.1);background-color:#eee;}
.country-select-code{font-size:13.5px;font-weight:700;white-space:nowrap;color:var(--navy);}
.country-select-chevron{width:14px;height:14px;stroke:#4A5568;flex-shrink:0;transition:transform .15s ease;}
#countrySelectBtn[aria-expanded="true"] .country-select-chevron{transform:rotate(180deg);}

.country-dropdown{
  display:none;position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:110;
  background:#fff;border:1px solid rgba(23,35,58,0.15);border-radius:14px;
  box-shadow:0 16px 36px rgba(23,35,58,0.18);overflow:hidden;max-height:320px;
  flex-direction:column;
}
.country-dropdown:not([hidden]){display:flex;}
.country-dropdown.drop-up{top:auto;bottom:calc(100% + 8px);}
.country-search-wrap{position:relative;padding:10px;border-bottom:1px solid rgba(23,35,58,0.08);flex-shrink:0;}
.contact-form .country-search-input{
  width:100%;min-height:44px;padding:10px 12px;border-radius:10px;
  border:1px solid rgba(23,35,58,0.15);font-family:inherit;font-size:14px;
  background:#FFF8F5;color:var(--navy);
}
.contact-form .country-search-input:focus{outline:2px solid var(--orange);outline-offset:1px;border-color:transparent;}
.country-listbox{list-style:none;margin:0;padding:6px;overflow-y:auto;max-height:250px;}
.country-opt{
  display:none;align-items:center;gap:10px;padding:10px 12px;min-height:44px;
  border-radius:10px;cursor:pointer;font-size:14px;color:var(--navy);
}
.country-opt:not([hidden]){display:flex;}
.country-opt-flag.fi{width:22px;height:16px;flex-shrink:0;border-radius:2px;box-shadow:0 0 0 1px rgba(23,35,58,0.12);background-color:#eee;}
.country-opt-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.country-opt-code{flex-shrink:0;font-weight:700;color:var(--navy-soft);font-size:13px;}
.country-opt.active,.country-opt:hover{background:#FFF3EF;}
.country-opt[aria-selected="true"]{background:var(--blush);font-weight:700;}
.country-no-results{padding:16px;text-align:center;font-size:13.5px;color:var(--navy-soft);margin:0;}

@media (max-width:374px){
  .country-select-btn{padding:11px 6px 11px 12px;gap:4px;}
  .country-select-code{font-size:12.5px;}
}

/* ---------- COURSE CATEGORY TEASER (homepage) ---------- */
.category-chip-row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin:28px 0 32px;}
.category-chip{
  display:inline-flex;align-items:center;gap:8px;background:#fff;border:2px solid var(--blush);
  border-radius:var(--radius-pill);padding:12px 22px;font-weight:700;font-size:14px;color:var(--navy);
}
.category-chip svg{width:16px;height:16px;stroke:var(--orange);}
.category-chip:hover{border-color:var(--orange);color:var(--orange);}
.teaser-cta{text-align:center;}

/* ---------- COURSE CATEGORY ACCORDION (courses page) ---------- */
.category-accordion{display:grid;gap:16px;max-width:920px;margin:0 auto;}
.category-item{
  border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);overflow:hidden;
  background:#fff;box-shadow:var(--shadow-card);
}
.category-header{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:22px 26px;cursor:pointer;background:none;border:none;width:100%;text-align:left;font-family:inherit;
}
.category-header-left{display:flex;align-items:center;gap:16px;}
.category-header h3{margin:0;font-size:18px;}
.category-header .cat-sub{font-size:13px;color:var(--navy-soft);font-weight:400;margin-top:2px;}
.category-count{
  font-size:12px;font-weight:700;color:var(--navy);background:var(--blush);
  padding:5px 12px;border-radius:var(--radius-pill);white-space:nowrap;
}
.category-chevron{width:20px;height:20px;stroke:var(--navy-soft);flex-shrink:0;transition:transform .25s ease;}
.category-item.open .category-chevron{transform:rotate(180deg);stroke:var(--orange);}
.category-body{max-height:0;overflow:hidden;transition:max-height .35s ease;}
.category-item.open .category-body{max-height:900px;}
.category-body-inner{padding:4px 26px 26px;display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
.cat-course-link{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:16px 18px;border:1px solid rgba(23,35,58,0.08);border-radius:14px;background:#FFF8F5;
}
.cat-course-link:hover{border-color:var(--orange);}
.cat-course-link .info h4{font-size:15px;margin:0 0 4px;}
.cat-course-link .info p{font-size:12.5px;margin:0;color:var(--navy-soft);}
.cat-course-link .go-arrow{width:18px;height:18px;stroke:var(--orange);flex-shrink:0;}

/* ---------- ELIGIBILITY WIZARD ---------- */
.wizard-page{padding:56px 0 88px;background:#FFF8F5;min-height:70vh;}
.wizard-shell{max-width:720px;}
.wizard-progress-top{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:800;color:var(--orange);margin-bottom:12px;}
.wizard-time{color:var(--navy-soft);font-weight:700;}
.wizard-bar{height:8px;background:rgba(23,35,58,0.08);border-radius:var(--radius-pill);overflow:hidden;margin-bottom:22px;}
.wizard-bar-fill{height:100%;background:var(--grad);border-radius:var(--radius-pill);transition:width .35s ease;width:20%;}
.wizard-steps{display:flex;justify-content:space-between;}
.step-dot{
  width:34px;height:34px;border-radius:50%;background:#fff;border:2px solid rgba(23,35,58,0.14);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:var(--navy-soft);
  transition:all .25s ease;flex-shrink:0;
}
.step-dot.active{background:var(--grad);border-color:transparent;color:#fff;box-shadow:var(--shadow-btn);}
.step-dot.done{background:var(--orange);border-color:transparent;color:#fff;}
.step-dot svg{width:16px;height:16px;stroke:#fff;}
.wizard-card{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:40px;margin-top:28px;}
.wizard-panel{display:none;}
.wizard-panel.active{display:block;animation:wizFade .3s ease;}
@keyframes wizFade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.wizard-panel h2{font-size:26px;margin-bottom:6px;}
.wizard-sub{color:var(--navy-soft);margin-bottom:28px;}
.field-group{margin-bottom:24px;}
.field-group:last-child{margin-bottom:0;}
.field-label{display:block;font-weight:700;font-size:15px;margin-bottom:10px;color:var(--navy);}
.field-hint{font-size:12.5px;color:var(--navy-soft);margin:-6px 0 10px;}
select.wizard-select, input.wizard-input{
  width:100%;padding:14px 16px;border-radius:14px;border:2px solid rgba(23,35,58,0.14);
  font-family:inherit;font-size:15px;background:#fff;color:var(--navy);appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234A5568' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;background-size:18px;
}
input.wizard-input{background-image:none;}
select.wizard-select:focus, input.wizard-input:focus{border-color:var(--orange);outline:none;}
select.wizard-select.field-invalid, input.wizard-input.field-invalid{border-color:#D33A3A;}
.pill-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.pill-options.single-col{grid-template-columns:1fr;}
.pill-option{
  border:2px solid rgba(23,35,58,0.14);border-radius:14px;padding:14px 18px;
  font-weight:700;font-size:14.5px;cursor:pointer;text-align:left;background:#fff;color:var(--navy);
  display:flex;align-items:center;gap:10px;transition:all .15s ease;
}
.pill-option:hover{border-color:var(--blush);}
.pill-option.selected{border-color:var(--orange);background:#FFF3EF;color:var(--orange);}
.checkbox-option{
  display:flex;align-items:center;gap:12px;border:2px solid rgba(23,35,58,0.14);border-radius:14px;
  padding:14px 18px;font-weight:700;font-size:14.5px;cursor:pointer;margin-bottom:12px;transition:all .15s ease;
}
.checkbox-option:last-child{margin-bottom:0;}
.checkbox-option.selected{border-color:var(--orange);background:#FFF3EF;}
.checkbox-option input{width:18px;height:18px;accent-color:var(--orange);flex-shrink:0;}
.wizard-nav{display:flex;justify-content:space-between;align-items:center;margin-top:32px;padding-top:24px;border-top:1px solid rgba(23,35,58,0.08);}
.field-error{color:#D33A3A;font-size:13px;margin-top:6px;display:none;align-items:flex-start;gap:6px;line-height:1.4;}
.field-error.show{display:flex;}
.field-error svg{width:14px;height:14px;flex-shrink:0;margin-top:1px;stroke:#D33A3A;}
.wizard-secure-note{text-align:center;margin-top:20px;font-size:13px;color:var(--navy-soft);}
.wizard-secure-note svg{width:14px;height:14px;stroke:var(--orange);vertical-align:-2px;margin-right:4px;}
.wizard-checkbox-row{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:var(--navy-soft);}
.wizard-checkbox-row input{width:18px;height:18px;margin-top:2px;accent-color:var(--orange);flex-shrink:0;}
.conditional-block{
  padding-left:18px;margin-top:20px;
}

/* ---------- ELIGIBILITY RESULTS ---------- */
.results-head{text-align:center;margin-bottom:36px;}
.results-check{width:56px;height:56px;border-radius:50%;background:var(--grad);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;}
.results-check svg{width:28px;height:28px;stroke:#fff;}
.results-section{margin-bottom:34px;}
.results-section h3{font-size:18px;display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.results-section h3 .ico-circle{width:36px;height:36px;}
.results-section h3 .ico-circle svg{width:18px;height:18px;}
.finance-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px;}
.finance-card{background:#FFF8F5;border-radius:14px;padding:20px;}
.finance-card .lbl{font-size:12px;color:var(--navy-soft);font-weight:700;margin-bottom:8px;display:block;text-transform:uppercase;letter-spacing:.3px;}
.finance-card .amount{font-size:23px;font-weight:900;color:var(--orange);}
.finance-card .note{font-size:11.5px;color:var(--navy-soft);margin-top:8px;line-height:1.5;}
.entitlement-callout{background:#FFF3EF;border-radius:14px;padding:20px 22px;margin-top:16px;}
.entitlement-callout strong{color:var(--navy);}
.support-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:16px;}
.support-col{background:#FFF8F5;border-radius:14px;padding:20px;}
.support-col h4{font-size:14px;margin-bottom:12px;}
.support-col ul{display:grid;gap:9px;}
.support-col ul li{display:flex;gap:8px;font-size:13.5px;color:var(--navy-soft);align-items:flex-start;}
.support-col ul li svg{width:16px;height:16px;stroke:var(--orange);flex-shrink:0;margin-top:2px;}
.reassure-list{display:grid;gap:10px;margin-top:16px;}
.reassure-list li{display:flex;gap:10px;background:#FFF8F5;border-radius:12px;padding:14px 16px;font-size:14px;align-items:flex-start;}
.reassure-list li svg{width:17px;height:17px;stroke:var(--orange);flex-shrink:0;margin-top:2px;}
.assumptions-box{background:var(--navy);color:rgba(255,255,255,0.85);border-radius:14px;padding:22px 24px;font-size:13.5px;}
.assumptions-box strong{color:#fff;}
.assumptions-box ul{margin-top:10px;display:grid;gap:6px;}
.assumptions-box li{padding-left:16px;position:relative;}
.assumptions-box li::before{content:"•";position:absolute;left:0;color:var(--peach);}
.course-suggest-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;}
.results-cta{text-align:center;margin-top:8px;}
.results-source-note{font-size:11.5px;color:var(--navy-soft);text-align:center;margin-top:28px;}
.ineligible-icon{width:56px;height:56px;border-radius:50%;background:var(--blush);display:flex;align-items:center;justify-content:center;margin:0 auto 18px;}
.ineligible-icon svg{width:26px;height:26px;stroke:var(--orange);}

/* ---------- COURSE DETAIL PAGE ---------- */
.course-hero{background:#FFF8F5;padding:48px 0 56px;}
.course-hero .container{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:center;}
.course-hero-img{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);}
.course-hero-img img{width:100%;height:380px;object-fit:cover;}
.fact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:12px 0 36px;}
.fact-item{background:#FFF8F5;border-radius:var(--radius-md);padding:20px;}
.fact-item .lbl{font-size:11.5px;text-transform:uppercase;font-weight:700;color:var(--orange);letter-spacing:.5px;margin-bottom:6px;display:block;}
.fact-item .val{font-weight:700;font-size:15px;color:var(--navy);line-height:1.4;}
.pattern-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0 36px;}
.pattern-card{border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);padding:24px;}
.pattern-card h3{font-size:15px;margin-bottom:10px;color:var(--orange);font-weight:900;letter-spacing:-0.5px;}
.pattern-card ul{display:grid;gap:8px;}
.pattern-card li{font-size:14px;color:var(--navy-soft);padding-left:18px;position:relative;}
.pattern-card li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;background:var(--orange);}
.entry-req-list{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;margin:20px 0 36px;padding:0;list-style:none;}
.entry-req-list li{font-size:14px;color:var(--navy-soft);padding-left:20px;position:relative;line-height:1.5;}
.entry-req-list li::before{content:"";position:absolute;left:0;top:7px;width:7px;height:7px;border-radius:50%;background:var(--grad);}
.related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.related-card{background:#fff;border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);padding:22px;box-shadow:var(--shadow-card);}
.related-card h3{font-size:15px;margin-bottom:6px;font-weight:900;letter-spacing:-0.5px;}
.related-card p{font-size:13px;margin-bottom:12px;}
.related-card .btn-link{font-weight:700;color:var(--orange);font-size:13.5px;}

/* ---------- LOCATION PAGE ---------- */
.location-hero{background:#FFF8F5;padding:56px 0 60px;text-align:center;}
.location-hero .lead{max-width:640px;margin:0 auto;}
.location-stats{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:26px;}
.location-stat{
  background:#fff;border-radius:var(--radius-pill);box-shadow:var(--shadow-card);
  padding:10px 20px;display:flex;align-items:center;gap:9px;font-weight:700;font-size:13.5px;color:var(--navy);
}
.location-stat .num{color:var(--orange);font-weight:900;}
.benefit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.benefit-card{
  background:#fff;border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);
  padding:26px;box-shadow:var(--shadow-card);
}
.benefit-card .ico-circle{margin-bottom:16px;}
.benefit-card h3{font-size:16px;margin-bottom:8px;}
.benefit-card p{font-size:14px;color:var(--navy-soft);margin:0;}
.location-links{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:36px;}
.location-links a{
  font-weight:700;font-size:13.5px;color:var(--navy-soft);
  background:#fff;border:1px solid rgba(23,35,58,0.1);border-radius:var(--radius-pill);
  padding:8px 18px;
}
.location-links a:hover, .location-links a.active{color:var(--orange);border-color:var(--orange);}

/* ---------- BLOG LISTING ---------- */
.blog-hero{padding:72px 0 40px;text-align:center;background:linear-gradient(180deg,#FFF8F5,#fff);}
.blog-hero .eyebrow{display:inline-block;margin-bottom:14px;}
.blog-hero h1{font-size:44px;max-width:720px;margin-left:auto;margin-right:auto;}
.blog-hero p{font-size:17px;color:var(--navy-soft);max-width:600px;margin:0 auto;}
.blog-filter-chips{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:28px 0 8px;}
.blog-filter-chip{padding:9px 20px;border-radius:var(--radius-pill);border:1.5px solid rgba(23,35,58,0.1);background:#fff;font-weight:700;font-size:13.5px;cursor:pointer;color:var(--navy);font-family:inherit;transition:all .2s;}
.blog-filter-chip:hover{border-color:var(--orange);color:var(--orange);}
.blog-filter-chip.active{background:var(--grad);color:#fff;border-color:transparent;box-shadow:var(--shadow-btn);}
.blog-listing{padding:48px 0 90px;}
.featured-post{display:grid;grid-template-columns:1.15fr 1fr;gap:0;background:#fff;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);margin-bottom:56px;}
.featured-post-img{height:420px;overflow:hidden;}
.featured-post-img img{width:100%;height:100%;object-fit:cover;display:block;}
.featured-post-content{padding:40px 44px;display:flex;flex-direction:column;justify-content:center;}
.featured-badge{display:inline-flex;align-items:center;gap:6px;background:var(--grad);color:#fff;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:6px 14px;border-radius:var(--radius-pill);width:fit-content;margin-bottom:16px;}
.featured-post-content .blog-card-cat{margin-bottom:10px;}
.featured-post-content h2{font-size:28px;margin-bottom:14px;}
.featured-post-content p{color:var(--navy-soft);font-size:15.5px;line-height:1.7;margin-bottom:20px;}
.blog-grid{display:grid;grid-template-columns:repeat(var(--related-cols,2),1fr);gap:32px;}
.blog-grid:has(> :only-child){grid-template-columns:1fr;max-width:520px;margin:0 auto;}
.blog-card{background:#fff;border:1px solid transparent;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-card);display:flex;flex-direction:column;}
.blog-card-img{height:210px;overflow:hidden;}
.blog-card-img img{width:100%;height:100%;object-fit:cover;}
/* Hover lift, shadow, border glow, and this image zoom are all defined
   together in the shared CARD HOVER SYSTEM further down this file, and
   scoped to hover-capable pointers only. */
.blog-card-content{padding:24px;display:flex;flex-direction:column;flex:1;}
.blog-card-cat{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--orange);margin-bottom:10px;}
.blog-card h3{font-size:20px;line-height:1.32;margin-bottom:10px;color:var(--navy);transition:color .2s;}
.blog-card h3 a{color:var(--navy);}
.blog-card h3 a:hover,.blog-card:hover h3{color:var(--orange);}
a.featured-post,a.blog-card{color:inherit;}
a.featured-post:hover h2{color:var(--orange);}
a.benefit-card{color:inherit;text-decoration:none;display:block;}
.blog-card p{color:var(--navy-soft);font-size:14.5px;line-height:1.65;flex:1;margin-bottom:18px;}
.blog-card-meta{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:#9aa1ad;padding-top:16px;border-top:1px solid rgba(23,35,58,0.07);}
.blog-card-meta .btn-link{font-weight:700;color:var(--orange);font-size:13px;}
.blog-more-soon{margin-top:56px;text-align:center;padding:40px;border:1.5px dashed rgba(23,35,58,0.15);border-radius:var(--radius-md);}
.blog-more-soon h4{margin-bottom:8px;}
.blog-more-soon p{color:var(--navy-soft);font-size:14.5px;margin:0;}

/* ---------- ARTICLE PAGE ---------- */
.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:rgba(23,35,58,0.06);z-index:400;}
.reading-progress-bar{height:100%;width:0%;background:var(--grad);}
.article-hero{background:var(--navy);color:#fff;padding:44px 0 40px;}
.article-hero .breadcrumb{color:rgba(255,255,255,0.55);margin-bottom:18px;}
.article-hero .breadcrumb a{color:rgba(255,255,255,0.75);}
.article-hero .course-tag{background:rgba(255,255,255,0.12);color:#fff;}
.article-hero h1{font-size:38px;max-width:820px;margin:18px 0 16px;color:#fff;}
.article-hero .lead{color:rgba(255,255,255,0.78);font-size:17px;max-width:720px;margin-bottom:22px;}
.article-meta-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-size:13.5px;color:rgba(255,255,255,0.7);}
.article-meta-row .dot{width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,0.4);}
.article-hero-img{margin-top:32px;border-radius:var(--radius-lg);overflow:hidden;height:420px;}
.article-hero-img img{width:100%;height:100%;object-fit:cover;display:block;}
.article-shell{max-width:1120px;margin:0 auto;padding:48px 24px 90px;display:grid;grid-template-columns:220px 1fr;gap:52px;align-items:start;}
.article-toc{position:sticky;top:calc(var(--header-offset, 96px) + 20px);max-height:calc(100vh - var(--header-offset, 96px) - 40px);overflow-y:auto;}
.article-toc h4{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:#9aa1ad;margin-bottom:14px;}
.article-toc ul{display:flex;flex-direction:column;gap:2px;}
.article-toc a{display:block;padding:7px 12px;font-size:14px;color:var(--navy-soft);border-radius:8px;transition:color .15s,background-color .15s;}
.article-toc a:hover{color:var(--orange);}
.article-toc a.active{color:var(--orange);background:var(--blush);font-weight:700;}
.listen-bar{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid rgba(23,35,58,0.08);border-radius:var(--radius-md);padding:12px 18px;box-shadow:var(--shadow-card);margin-bottom:36px;}
.listen-play-btn{width:44px;height:44px;flex-shrink:0;border-radius:50%;background:var(--grad);color:#fff;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-btn);}
.listen-play-btn svg{width:18px;height:18px;}
.listen-text{flex:1;min-width:0;}
.listen-status{font-weight:800;font-size:14.5px;display:block;}
.listen-hint{font-size:12.5px;color:#9aa1ad;}
.listen-controls{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.listen-speed{border:1px solid rgba(23,35,58,0.12);border-radius:8px;padding:7px 8px;font-size:13px;font-family:inherit;color:var(--navy);background:#fff;}
.listen-voice{border:1px solid rgba(23,35,58,0.12);border-radius:8px;padding:7px 10px;font-size:13px;font-family:inherit;color:var(--navy);background:#fff;max-width:190px;}
.listen-stop-btn{background:none;border:1px solid rgba(23,35,58,0.12);border-radius:8px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--navy-soft);flex-shrink:0;}
.listen-stop-btn svg{width:15px;height:15px;}
.listen-bar.unsupported{display:none;}
.article-body{max-width:720px;font-size:18.5px;line-height:1.95;color:#2b3547;letter-spacing:0.1px;}
.article-body h2{font-size:27px;margin-top:56px;margin-bottom:18px;color:var(--navy);letter-spacing:-0.3px;scroll-margin-top:24px;position:relative;padding-top:18px;}
.article-body h2::before{content:"";position:absolute;top:0;left:0;width:44px;height:4px;border-radius:2px;background:var(--grad);}
.article-body h3{font-size:21px;margin-top:36px;margin-bottom:14px;color:var(--navy);scroll-margin-top:24px;}
.article-body p{margin:0 0 26px;}
.article-lead{font-size:21px;line-height:1.75;color:var(--navy);font-weight:500;}
.article-body ul{list-style:none;margin:0 0 26px;padding-left:0;}
.article-body ul li{position:relative;padding-left:30px;margin-bottom:13px;line-height:1.8;}
.article-body ul li::before{content:"";position:absolute;left:2px;top:11px;width:9px;height:9px;border-radius:50%;background:var(--grad);}
.article-body ol{margin:0 0 26px;padding-left:24px;counter-reset:none;}
.article-body ol li{margin-bottom:13px;line-height:1.8;}
.article-body strong{color:var(--navy);font-weight:700;}
.article-body a{color:var(--orange);font-weight:700;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px;}
.article-body a:hover{color:var(--coral);}
.article-body blockquote{position:relative;padding:28px 32px 28px 58px;margin:36px 0;font-size:21px;line-height:1.6;font-style:italic;color:var(--navy);background:#FFF8F5;border-radius:var(--radius-md);}
.article-body blockquote::before{content:"\201C";position:absolute;left:20px;top:6px;font-size:46px;line-height:1;font-style:normal;font-family:Georgia,serif;color:var(--orange);}
.article-body blockquote p{margin:0;}
.article-body section-divider,.article-divider{border:none;border-top:1px solid rgba(23,35,58,0.08);margin:44px 0;}
.article-body .speaking{background:linear-gradient(90deg,rgba(254,111,127,0.1),rgba(254,111,127,0));border-radius:8px;box-shadow:-8px 0 0 rgba(254,111,127,0.1);}
.article-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:36px 0;}
.article-stat{background:#FFF8F5;border-radius:var(--radius-md);padding:22px 16px;text-align:center;}
.article-stat .num{font-size:26px;font-weight:900;color:var(--orange);display:block;}
.article-stat .lbl{font-size:12.5px;color:var(--navy-soft);margin-top:6px;}
.article-cta-box{background:var(--navy);color:#fff;border-radius:var(--radius-lg);padding:36px;margin:44px 0;text-align:center;}
.article-cta-box h3{color:#fff;margin-bottom:10px;}
.article-cta-box p{color:rgba(255,255,255,0.75);margin-bottom:22px;font-size:15.5px;}
.article-cta-box .btn-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}
.article-body a.btn{text-decoration:none;}
.article-body a.btn-primary{color:#fff;}
.article-cta-box .btn-outline{background:transparent;border-color:rgba(255,255,255,0.45);color:#fff;}
.article-cta-box .btn-outline:hover{background:rgba(255,255,255,0.1);border-color:#fff;color:#fff;}
.author-card{display:flex;gap:18px;align-items:center;padding:26px;background:#FFF8F5;border-radius:var(--radius-md);margin-top:56px;}
.author-card .avatar{width:56px;height:56px;border-radius:50%;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:19px;flex-shrink:0;}
.author-card h4{font-size:16px;margin-bottom:4px;}
.author-card p{font-size:13.5px;color:var(--navy-soft);margin:0;}
.article-share-row{display:flex;align-items:center;gap:14px;margin-top:40px;padding-top:24px;border-top:1px solid rgba(23,35,58,0.08);}
.article-share-row span{font-size:13px;font-weight:700;color:var(--navy-soft);}
.article-related{background:#FFF8F5;padding:64px 0;}

/* Portrait source photos whose subject sits in the lower half of the frame
   get cropped to blank space by default center object-position when placed
   in a wide landscape box (hero images, card thumbnails). Apply this class
   to the <img> to keep the subject in frame instead. Use for any future
   photo where a landscape crop of a portrait source hides the subject. */
.img-focus-low{object-position:center 60%;}

/* ---------- RESPONSIVE ---------- */

/* Smaller desktop/laptop: keep the full header on one row, just tighten
   gaps/padding/font/icon sizes so it doesn't feel crowded before there's
   genuinely no room left (that's the 1024px cutover below). Threshold is
   1599px (not 1399) because the full 7-item nav + language selector + both
   CTAs needs the tighter spacing well before "laptop" sizes -- 1440/1366/
   1280 all land in this tier. */
@media (max-width:1599px){
  .header-inner{gap:18px;padding:14px 20px;}
  nav.main-nav ul{gap:18px;}
  nav.main-nav a, .nav-dropdown-toggle{font-size:14px;}
  .nav-icon{width:15px;height:15px;}
  .header-actions{gap:12px;}
  .header-cta{gap:8px;}
  .header-cta .btn{padding:10px 14px;font-size:13px;gap:6px;}
  .btn-icon{width:15px;height:15px;}
}

/* Tablet and mobile: don't squeeze the desktop nav -- hand off to the
   existing hamburger/slide-in menu instead. */
@media (max-width:1024px){
  nav.main-nav, .header-actions .lang-dropdown, .header-cta{display:none;}
  .menu-toggle{display:block;}
}

@media (max-width:980px){
  .hero .container, .funding .container, .support .container, .course-hero .container, .contact-grid{grid-template-columns:1fr;}
  .hero-visual{order:-1;}
  .barriers-grid{grid-template-columns:repeat(2,1fr);}
  .steps, .steps-row2{grid-template-columns:repeat(2,1fr);}
  .free-grid{grid-template-columns:repeat(2,1fr);}
  .trust-items{grid-template-columns:repeat(2,1fr);}
  .partners-grid, .course-grid, .values-grid, .related-grid{grid-template-columns:1fr 1fr;}
  .footer-top{grid-template-columns:1fr 1fr;}
  .trust-strip .container{gap:16px;font-size:11px;}
  .stat-float{left:16px;}
  .role-grid{grid-template-columns:1fr;}
  .audience-grid, .pillar-row, .fact-grid, .pattern-grid, .benefit-grid{grid-template-columns:1fr 1fr;}
  .category-body-inner{grid-template-columns:1fr;}
  .finance-grid, .support-cols{grid-template-columns:1fr;}
  .blog-grid{grid-template-columns:1fr !important;}
  .featured-post{grid-template-columns:1fr;}
  .featured-post-img{height:220px;}
  .article-hero-img{height:240px;}
  .featured-post-content{padding:32px;}
  .article-shell{grid-template-columns:1fr;}
  .article-toc{position:static;order:2;margin-top:40px;padding:20px;background:#FFF8F5;border-radius:var(--radius-md);max-height:none;overflow-y:visible;}
  .article-toc ul{border-left:none;}
  .article-body{order:1;max-width:none;}
  .article-stat-row{grid-template-columns:1fr 1fr;}
}
@media (max-width:600px){
  section{padding:64px 0;}
  .barriers-grid{grid-template-columns:1fr 1fr;}
  .free-grid{grid-template-columns:1fr;}
  .trust-items{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr;}
  .free-banner{flex-direction:column;text-align:center;}
  .free-banner h3,.free-banner p{text-align:center;}
  .partners-grid, .course-grid, .values-grid, .related-grid, .audience-grid, .pillar-row, .fact-grid, .pattern-grid, .benefit-grid, .entry-req-list{grid-template-columns:1fr;}
  .location-hero{padding:44px 0 48px;}
  .role-card{flex-direction:column;}
  .role-card img{width:100%;height:200px;}
  .form-row-2{grid-template-columns:1fr;}
  .category-header{padding:18px 18px;}
  .category-body-inner{padding:0 18px 18px;}
  .wizard-card{padding:24px 20px;}
  .pill-options{grid-template-columns:1fr;}
  .wizard-steps{gap:4px;}
  .step-dot{width:28px;height:28px;font-size:12px;}
  .blog-hero h1{font-size:30px;}
  .article-hero h1{font-size:27px;}
  .article-shell{padding:36px 18px 64px;}
  .article-body{font-size:16.5px;line-height:1.85;}
  .article-body h2{font-size:22px;margin-top:44px;}
  .article-lead{font-size:18.5px;}
  .article-body blockquote{font-size:17px;padding:14px 18px;}
  .listen-bar{flex-wrap:wrap;}
  .listen-text{order:1;flex-basis:100%;}
  .listen-play-btn{order:0;}
  .listen-controls{order:2;flex-basis:100%;justify-content:space-between;flex-wrap:wrap;gap:8px;}
  .listen-voice{flex:1;min-width:120px;}
  .article-stat-row{grid-template-columns:1fr;}
  .author-card{flex-direction:column;text-align:center;}

  /* ---------- Responsive audit fixes (320-600px) ---------- */
  /* Fixed-height photography sized for desktop hero/side-by-side
     layouts looks oversized and disproportionate once those sections
     stack to a single column on phones. */
  .hero-visual img{height:260px;}
  .support-img img{height:220px;}
  .course-hero-img img{height:220px;}
  .hero{padding:40px 0 28px;}
  .page-hero{padding:40px 0 44px;}
  .wizard-page{padding:36px 0 56px;}
  .contact-form{padding:24px 20px;}
  .funding-card, .step-card{padding:22px 18px;}
}

/* Very narrow phones (≈320-374px): a couple of the 600px-tier values
   are still a little tight at this width. */
@media (max-width:374px){
  .hero h1{font-size:30px;}
  .page-hero h1{font-size:26px;}
  .hero-badges{gap:16px;}
  .free-banner{padding:32px 24px;}
  .wizard-card{padding:20px 16px;}
}

/* ===================================================================
   ANIMATION SYSTEM
   Shared, reusable motion utilities for every public page. Targets
   existing component classes directly (no markup changes needed for
   most of it) so it can't drift out of sync with the content.

   Safety model:
   - Content is 100% visible by default. The "start hidden, animate in"
     state only applies under the `html.js-anim` selector, and that
     class is only added by a tiny inline script in <head> (see
     page templates) that checks prefers-reduced-motion FIRST. So:
       - JS disabled            -> class never added -> everything visible.
       - prefers-reduced-motion -> class never added -> everything visible.
       - JS enabled, motion ok  -> class added before first paint (no
         flash), js/animations.js then reveals things via IntersectionObserver.
   - Only opacity/transform are animated (GPU-friendly, no layout thrash).
   - One shared IntersectionObserver in animations.js, one-shot reveal
     (unobserve() after first intersection -- no replay on scroll back up).
   =================================================================== */
:root{
  --dur-fast:.3s;
  --dur-base:.45s;
  --dur-slow:.6s;
  --ease-out:cubic-bezier(.16,.8,.32,1);
  --move-sm:8px;
  --move-md:16px;
  --move-lg:24px;
  --stagger-step:70ms;
}

/* Page-level load fade (pure CSS, no JS dependency) */
body{animation:pageFadeIn .5s var(--ease-out);}
@keyframes pageFadeIn{from{opacity:0;}to{opacity:1;}}

/* ---------- Scroll reveal: section heads + repeated cards ---------- */
/* Same selector list is used by js/animations.js's IntersectionObserver.
   Deliberately excludes anything inside the eligibility wizard's dynamic
   panels (finance-card, support-col, step-dot, pill-option, etc.) so a
   display:none->block toggle can never leave results permanently hidden. */
html.js-anim .section-head,
html.js-anim .barrier-card,
html.js-anim .funding-card,
html.js-anim .step-card,
html.js-anim .free-card,
html.js-anim .trust-item,
html.js-anim .value-card,
html.js-anim .audience-item,
html.js-anim .support-feature,
html.js-anim .role-card,
html.js-anim .benefit-card,
html.js-anim .blog-card,
html.js-anim .featured-post,
html.js-anim .fact-item,
html.js-anim .pattern-card,
html.js-anim .related-card,
html.js-anim .category-item,
html.js-anim .location-stat,
html.js-anim .topic-chip,
html.js-anim .category-chip,
html.js-anim .contact-info-item,
html.js-anim .footer-top{
  opacity:.01;
  transform:translateY(var(--move-md));
  transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
  transition-delay:calc(var(--stagger-i,0) * var(--stagger-step));
}
html.js-anim .section-head.in-view,
html.js-anim .barrier-card.in-view,
html.js-anim .funding-card.in-view,
html.js-anim .step-card.in-view,
html.js-anim .free-card.in-view,
html.js-anim .trust-item.in-view,
html.js-anim .value-card.in-view,
html.js-anim .audience-item.in-view,
html.js-anim .support-feature.in-view,
html.js-anim .role-card.in-view,
html.js-anim .benefit-card.in-view,
html.js-anim .blog-card.in-view,
html.js-anim .featured-post.in-view,
html.js-anim .fact-item.in-view,
html.js-anim .pattern-card.in-view,
html.js-anim .related-card.in-view,
html.js-anim .category-item.in-view,
html.js-anim .location-stat.in-view,
html.js-anim .topic-chip.in-view,
html.js-anim .category-chip.in-view,
html.js-anim .contact-info-item.in-view,
html.js-anim .footer-top.in-view{
  opacity:1;
  transform:none;
}

/* ---------- Hero load-in (pure CSS, animates immediately on paint,
   not scroll-triggered -- so it works with zero JS dependency beyond
   the reduced-motion class check) ---------- */
@keyframes heroIn{from{opacity:0;transform:translateY(var(--move-md));}to{opacity:1;transform:none;}}
html.js-anim .page-hero .eyebrow,
html.js-anim .hero-copy .eyebrow,
html.js-anim .blog-hero .eyebrow{animation:heroIn var(--dur-slow) var(--ease-out) both;}
html.js-anim .page-hero h1,
html.js-anim .hero-copy h1,
html.js-anim .blog-hero h1{animation:heroIn var(--dur-slow) var(--ease-out) .08s both;}
html.js-anim .page-hero .lead,
html.js-anim .hero-copy .lead,
html.js-anim .blog-hero p{animation:heroIn var(--dur-slow) var(--ease-out) .16s both;}
html.js-anim .hero-copy .hero-ctas{animation:heroIn var(--dur-slow) var(--ease-out) .24s both;}
html.js-anim .hero-badges .badge{animation:heroIn var(--dur-base) var(--ease-out) .32s both;}
html.js-anim .hero-visual,
html.js-anim .course-hero-img,
html.js-anim .article-hero-img{animation:heroIn var(--dur-slow) var(--ease-out) .12s both;}
html.js-anim .stat-float{animation:heroIn var(--dur-base) var(--ease-out) .48s both;}

/* ===================================================================
   CARD HOVER SYSTEM
   One shared treatment for every repeated card component sitewide
   (process steps, service/benefit cards, team cards, blog/news cards,
   course links, location stat pills). Two tiers:

   - "Link cards" (CARD_LINK) are themselves an <a> -- the whole card
     navigates, so they get the full treatment including a coral
     border/glow, and native <a> semantics already supply the pointer
     cursor and :focus-visible target for free (no extra HTML needed).
   - "Info cards" (CARD_STATIC) are plain, non-interactive containers
     (any real click targets live *inside* them, e.g. a related-card's
     "View course" link, or a blog-card's <h3><a>). They get the same
     lift/shadow/icon/heading polish for tactile delight, but no
     cursor-pointer claim and no :active press -- the card itself
     isn't clickable, only its inner link/button is, and that inner
     element keeps its own native hover/focus behaviour untouched.

   Kept out entirely: the eligibility wizard's live panels (results,
   pill options, step dots) -- a distinct calculator tool, not part of
   the card categories this system targets -- and small non-card
   elements with no border/shadow of their own (contact-info-item,
   support-feature rows, topic-chip labels).
   =================================================================== */
.barrier-card, .funding-card, .step-card, .free-card, .trust-item, .value-card,
.audience-item, .role-card, .benefit-card, .related-card, .pattern-card,
a.blog-card, div.blog-card, .featured-post, a.cat-course-link{
  position:relative;
  overflow:hidden;
}
@media (hover:hover) and (pointer:fine){
  /* -- Info cards: lift + deeper shadow + coral border tint -- */
  .barrier-card, .funding-card, .step-card, .free-card, .trust-item, .value-card,
  .audience-item, .role-card, .benefit-card, .related-card, .pattern-card,
  div.blog-card, .review-card{
    transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out),
      border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);
  }
  .barrier-card:hover, .funding-card:hover, .step-card:hover, .trust-item:hover,
  .value-card:hover, .audience-item:hover, .role-card:hover, .benefit-card:hover,
  .related-card:hover, .pattern-card:hover, div.blog-card:hover, .review-card:hover{
    transform:translateY(-7px);
    box-shadow:0 18px 38px rgba(23,35,58,0.14);
  }
  .barrier-card:hover, .funding-card:hover, .trust-item:hover, .value-card:hover,
  .benefit-card:hover, .related-card:hover, div.blog-card:hover, .review-card:hover{
    border-color:rgba(254,111,127,0.45);
  }
  .step-card:hover{border-color:transparent;}
  .audience-item:hover{background:#FFF3EC;border-color:rgba(254,111,127,0.3);}
  .pattern-card:hover{background:#fff;border-color:rgba(254,111,127,0.4);}
  .free-card:hover{
    transform:translateY(-7px);
    background:rgba(255,255,255,0.1);
    border-color:rgba(255,255,255,0.28);
    box-shadow:0 18px 38px rgba(0,0,0,0.25);
  }

  /* -- Link cards: same lift + a visible coral glow ring -- */
  a.blog-card, .featured-post, a.cat-course-link{
    transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
  }
  a.blog-card:hover, .featured-post:hover{
    transform:translateY(-7px);
    box-shadow:0 18px 38px rgba(23,35,58,0.14), 0 0 0 2px rgba(254,111,127,0.35);
  }
  a.cat-course-link:hover{
    transform:translateY(-4px);
    box-shadow:0 10px 24px rgba(23,35,58,0.1);
  }
  .channel-btn{transition:transform var(--dur-fast) var(--ease-out), border-color .2s ease;}
  .channel-btn:hover{transform:translateY(-3px);}
  .category-chip:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(254,111,127,0.18);}
  .category-chip{transition:transform var(--dur-fast) var(--ease-out), border-color .2s ease, color .2s ease, box-shadow var(--dur-fast) var(--ease-out);}
  .location-stat{transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);}
  .location-stat:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(23,35,58,0.12);}

  /* -- Expanding accent line along the bottom edge (info cards only;
     link cards already get the glow ring above) -- */
  .barrier-card::after, .funding-card::after, .step-card::after, .trust-item::after,
  .value-card::after, .benefit-card::after, .related-card::after, div.blog-card::after{
    content:"";position:absolute;left:0;bottom:0;height:3px;width:0;
    background:var(--grad);transition:width var(--dur-base) var(--ease-out);
  }
  .barrier-card:hover::after, .funding-card:hover::after, .step-card:hover::after,
  .trust-item:hover::after, .value-card:hover::after, .benefit-card:hover::after,
  .related-card:hover::after, div.blog-card:hover::after{width:100%;}

  /* -- Icon / number badge active state -- */
  .barrier-card .ico-circle, .funding-card .ico-circle, .trust-item .ico-circle,
  .value-card .ico-circle, .audience-item .ico-circle, .benefit-card .ico-circle,
  .step-num, .free-card .ico-circle, .category-header .ico-circle{
    transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
  }
  .barrier-card:hover .ico-circle, .funding-card:hover .ico-circle,
  .trust-item:hover .ico-circle, .value-card:hover .ico-circle,
  .audience-item:hover .ico-circle, .benefit-card:hover .ico-circle,
  .free-card:hover .ico-circle{
    transform:scale(1.1);
  }
  .step-card:hover .step-num{
    transform:scale(1.12);
    box-shadow:0 6px 16px rgba(255,104,59,0.4);
  }
  .category-header:hover .ico-circle{transform:scale(1.08);}
  .category-header:hover .category-count{transform:scale(1.06);background:var(--peach);color:#fff;}
  .category-count{transition:transform var(--dur-fast) var(--ease-out), background .2s ease, color .2s ease;}

  /* -- Heading colour shift on hover (skips headings that are already
     accent-coloured by default, e.g. pattern-card / role-tag) -- */
  .barrier-card:hover h3, .funding-card:hover h3, .step-card:hover h3,
  .trust-item:hover h3, .value-card:hover h3, .audience-item:hover h3,
  .benefit-card:hover h3, .related-card:hover h3, .role-card:hover .role-body h3{
    color:var(--orange);
  }
  .free-card:hover h3{color:var(--peach);}
  .category-header:hover h3{color:var(--orange);}

  /* -- CTA / arrow nudges to the right -- */
  .related-card:hover .btn-link{transform:translateX(4px);display:inline-flex;}
  .related-card .btn-link{transition:transform var(--dur-fast) var(--ease-out);display:inline-block;}

  /* -- Image zoom within a fixed, already-clipped container (card
     dimensions never change; only the image scales inside it) -- */
  .role-card img, .blog-card-img img{transition:transform var(--dur-slow) var(--ease-out);}
  .role-card:hover img{transform:scale(1.06);}
  a.blog-card:hover .blog-card-img img, div.blog-card:hover .blog-card-img img{transform:scale(1.06);}
  a.blog-card{border-color:transparent;}
  a.blog-card:hover{border-color:transparent;}

  /* -- Press feedback for genuinely clickable cards only -- */
  a.blog-card:active, .featured-post:active, a.cat-course-link:active, .category-chip:active{
    transform:translateY(-3px) scale(.98);
  }

  /* -- Small statistic/info pills: a lighter version of the same
     treatment -- no accent line or icon scale (they carry neither),
     just enough lift + colour to feel responsive to the cursor. -- */
  .fact-item{
    border:1px solid transparent;
    transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out),
      border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);
  }
  .fact-item:hover{
    transform:translateY(-4px);
    background:#fff;
    border-color:rgba(254,111,127,0.35);
    box-shadow:0 10px 22px rgba(23,35,58,0.1);
  }
}

/* Touch / no-hover devices: keep cards visually stable, just a quick,
   subtle tap acknowledgement -- no lift, no glow, nothing that could
   get "stuck" after the finger lifts. */
@media (hover:none){
  a.blog-card:active, .featured-post:active, a.cat-course-link:active, .category-chip:active,
  .barrier-card:active, .funding-card:active, .step-card:active, .trust-item:active,
  .value-card:active, .audience-item:active, .role-card:active, .benefit-card:active,
  .related-card:active, .pattern-card:active, div.blog-card:active, .review-card:active{
    background-color:rgba(23,35,58,0.03);
  }
}

/* ---------- Buttons / links / focus feedback ---------- */
.btn{transition:transform .15s var(--ease-out), box-shadow .15s var(--ease-out);}
.btn:active{transform:scale(.97);}
:focus-visible{outline:2px solid var(--orange);outline-offset:2px;}

/* ---------- Counters (opt-in via .count-up; JS animates the number,
   preserving any non-digit prefix/suffix like £, +, %, K) ---------- */
.count-up{font-variant-numeric:tabular-nums;}

/* ---------- Screen-reader-only text (e.g. "(opens in a new tab)") ---------- */
.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;
}

/* ---------- Lightweight loading state (e.g. contact form submit
   button while the HubSpot fetch is in flight) ---------- */
.is-loading{position:relative;color:transparent !important;pointer-events:none;}
.is-loading::after{
  content:"";position:absolute;top:50%;left:50%;width:18px;height:18px;
  margin:-9px 0 0 -9px;border-radius:50%;border:2px solid rgba(255,255,255,0.5);
  border-top-color:#fff;animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- Reduced motion: switch every animation/transition this
   system adds fully off, and guarantee nothing is left hidden. Also
   disables the pre-existing wizard-panel fade. Must stay last. ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:0.001ms !important;animation-iteration-count:1 !important;}
  body{animation:none;}
  .wizard-panel.active{animation:none;}
  html.js-anim .section-head, html.js-anim .barrier-card, html.js-anim .funding-card,
  html.js-anim .step-card, html.js-anim .free-card, html.js-anim .trust-item,
  html.js-anim .value-card, html.js-anim .audience-item, html.js-anim .support-feature,
  html.js-anim .role-card, html.js-anim .benefit-card, html.js-anim .blog-card,
  html.js-anim .featured-post, html.js-anim .fact-item, html.js-anim .pattern-card,
  html.js-anim .related-card, html.js-anim .category-item, html.js-anim .location-stat,
  html.js-anim .topic-chip, html.js-anim .category-chip, html.js-anim .contact-info-item,
  html.js-anim .footer-top, html.js-anim .page-hero *, html.js-anim .hero-copy *,
  html.js-anim .blog-hero *, html.js-anim .hero-visual, html.js-anim .course-hero-img,
  html.js-anim .article-hero-img, html.js-anim .stat-float{
    opacity:1 !important;transform:none !important;transition:none !important;
  }
  .barrier-card:hover, .funding-card:hover, .step-card:hover, .free-card:hover,
  .trust-item:hover, .value-card:hover, .audience-item:hover, .role-card:hover,
  .benefit-card:hover, .related-card:hover, .category-item:hover,
  .featured-post:hover, .fact-item:hover, .pattern-card:hover,
  .cat-course-link:hover, .channel-btn:hover, .btn:active,
  a.blog-card:hover, div.blog-card:hover, .location-stat:hover, .category-chip:hover,
  a.blog-card:active, .featured-post:active, a.cat-course-link:active, .category-chip:active,
  .step-card:hover .step-num, .category-header:hover .ico-circle,
  .category-header:hover .category-count, .role-card:hover img,
  a.blog-card:hover .blog-card-img img, div.blog-card:hover .blog-card-img img,
  .barrier-card:hover .ico-circle, .funding-card:hover .ico-circle,
  .trust-item:hover .ico-circle, .value-card:hover .ico-circle,
  .audience-item:hover .ico-circle, .benefit-card:hover .ico-circle,
  .free-card:hover .ico-circle, .related-card:hover .btn-link,
  .review-card:hover, .review-card:active{
    transform:none !important;
  }
  .review-card, .reviews-dot[aria-current="true"]{transition:none !important;}
  .barrier-card::after, .funding-card::after, .step-card::after, .trust-item::after,
  .value-card::after, .benefit-card::after, .related-card::after, div.blog-card::after{
    transition:none !important;
  }
  .is-loading::after{animation:none;}
}

/* mobile nav drawer */
.mobile-nav{
  position:fixed;inset:0;background:#fff;z-index:150;
  display:flex;flex-direction:column;padding:24px;
  transform:translateX(100%);transition:transform .3s ease;
  overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
}
.mobile-nav-head{flex-shrink:0;}
.mobile-nav.open{transform:translateX(0);}
.mobile-nav-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:36px;}
.mobile-nav ul{display:flex;flex-direction:column;gap:26px;}
.mobile-nav a{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;}
.mobile-nav a .nav-icon{width:20px;height:20px;}
.mobile-nav-ctas{display:flex;flex-direction:column;gap:14px;margin-top:32px;}
.mobile-nav-ctas .btn{margin-top:0;justify-content:center;width:100%;}

/* ---------- Enquiry success modal (contact page) ---------- */
.modal-overlay{
  position:fixed;inset:0;z-index:300;
  background:rgba(23,35,58,0.55);
  display:flex;align-items:center;justify-content:center;
  padding:24px;
  opacity:0;visibility:hidden;
  transition:opacity var(--dur-fast) var(--ease-out), visibility 0s linear var(--dur-fast);
}
.modal-overlay.show{
  opacity:1;visibility:visible;
  transition:opacity var(--dur-fast) var(--ease-out), visibility 0s linear 0s;
}
.modal-box{
  background:#fff;border-radius:var(--radius-lg);
  box-shadow:0 25px 60px rgba(23,35,58,0.3);
  max-width:420px;width:100%;max-height:calc(100vh - 48px);overflow-y:auto;
  padding:40px 32px 32px;text-align:center;
  transform:scale(.92) translateY(12px);opacity:0;
  transition:transform var(--dur-base) cubic-bezier(.34,1.56,.64,1), opacity var(--dur-fast) var(--ease-out);
}
.modal-overlay.show .modal-box{transform:scale(1) translateY(0);opacity:1;}
.modal-box:focus{outline:none;}
.modal-icon{
  width:64px;height:64px;border-radius:50%;background:var(--grad);color:#fff;
  display:flex;align-items:center;justify-content:center;margin:0 auto 20px;
}
.modal-icon svg{width:30px;height:30px;}
.modal-box h3{margin-bottom:10px;font-size:22px;}
.modal-box p{margin-bottom:26px;}
.modal-box .btn{width:100%;}

@media (max-width:480px){
  .modal-box{padding:32px 22px 24px;}
}

body.modal-open{overflow:hidden;}

@media (prefers-reduced-motion:reduce){
  .modal-overlay, .modal-box{transition:opacity .01ms linear !important;}
  .modal-box{transform:none !important;}
  .modal-overlay:not(.show){visibility:hidden;}
}
