/* ==========================================================================
   S3 Education — Editorial design system for the public marketing site.
   Navy #262061 / Red #ed1f26 sampled from the logo, gold reserved strictly
   for award/prestige signals. Fraunces (display) + Plus Jakarta Sans (body).
   Single light theme by deliberate choice — this is the brand-facing site.
   ========================================================================== */

:root {
  --ink: #262061;
  --navy: #262061;
  --navy-deep: #262061;
  --navy-black: #100d29;
  --red: #ed1f26;
  --red-deep: #ed1f26;
  --gold: #ed1f26;
  --gold-bright: #ed1f26;
  --paper: #fbf9f5;
  --surface: #ffffff;
  --surface-sunk: #f4f1ea;
  --muted: #625d78;
  --line: rgba(27, 23, 64, 0.1);
  --line-strong: rgba(27, 23, 64, 0.18);
  --on-navy: #f4f2fb;
  --on-navy-muted: #b7b0da;
  --shadow-sm: 0 1px 2px rgba(20, 16, 46, 0.06);
  --shadow: 0 1px 2px rgba(20, 16, 46, 0.05), 0 24px 48px -24px rgba(20, 16, 46, 0.32);
  --shadow-lg: 0 40px 90px -32px rgba(15, 12, 40, 0.5);
  --radius-sm: 10px;
  --radius: 18px;
  --radius-lg: 28px;
  --wrap: 1240px;
  --font-display: 'Afacad', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-body: 'Afacad', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono: 'Afacad', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

html { font-size: 17.5px; }
body { font-family: var(--font-body); }

@media (prefers-reduced-motion: reduce) {
  .ed * { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}

.ed { color: var(--ink); font-family: var(--font-body); }
.ed *, .ed *::before, .ed *::after { box-sizing: border-box; }
.ed img, .ed svg { max-width: 100%; display: block; }
.ed a { color: inherit; text-decoration: none; }
.ed h1, .ed h2, .ed h3, .ed h4 { font-family: var(--font-display); font-weight: 800; margin: 0; text-wrap: balance; color: var(--ink); letter-spacing:-0.025em; }
.ed p { margin: 0 0 1rem; line-height: 1.7; }
.ed ul, .ed ol { margin: 0; padding: 0; list-style: none; }
.ed a:focus-visible, .ed button:focus-visible, .ed input:focus-visible, .ed select:focus-visible, .ed textarea:focus-visible {
  outline: 2px solid var(--red); outline-offset: 3px; border-radius: 3px;
}

.ed .wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 3rem); }
.ed .wrap-narrow { max-width: 46rem; margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 2rem); }

.ed .eyebrow {
  font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase;
  font-weight: 700; color: var(--red); margin: 0 0 0.85rem; display: inline-flex; align-items: center; gap: 0.5rem;
  border: 1px solid var(--line-strong); border-radius: 6px; padding: 0.45rem 0.85rem;
}
.ed .eyebrow.on-navy { color: var(--gold-bright); border-color: rgba(255, 255, 255, 0.4); }
.ed .eyebrow.navy { color: var(--navy); }

/* ------------------------------------ Buttons ------------------------------------ */
.ed .btn {
  display: inline-flex; align-items: center; gap: 0.55rem; font-family: var(--font-body); font-weight: 700;
  font-size: 0.95rem; padding: 0.95rem 1.7rem; border-radius: 999px; border: 1.5px solid transparent;
  cursor: pointer; transition: transform 0.18s ease, background-color 0.18s ease, border-color 0.18s ease, box-shadow .18s ease;
  white-space: nowrap;
}
.ed .btn:hover { transform: translateY(-2px); }
.ed .btn-red { background: var(--red); color: #fff; box-shadow: 0 14px 28px -14px rgba(227, 30, 43, 0.55); }
.ed .btn-red:hover { background: var(--red-deep); }
.ed .btn-navy { background: var(--navy); color: #fff; }
.ed .btn-navy:hover { background: var(--navy-deep); }
.ed .btn-outline-light { border-color: rgba(255, 255, 255, 0.5); color: #fff; }
.ed .btn-outline-light:hover { background: rgba(255, 255, 255, 0.12); border-color: #fff; }
.ed .btn-ghost { border-color: var(--line-strong); color: var(--ink); background: transparent; }
.ed .btn-ghost:hover { border-color: var(--navy); }
.ed .btn-sm { padding: 0.65rem 1.25rem; font-size: 0.85rem; }
.ed .link-arrow {
  display: inline-flex; align-items: center; gap: 0.4rem; font-weight: 700; font-size: 0.92rem; color: var(--navy);
}
.ed .link-arrow svg { width: 1rem; height: 1rem; transition: transform 0.2s ease; }
.ed .link-arrow:hover svg { transform: translateX(4px); }
.ed .link-arrow.on-navy { color: #fff; }

/* ------------------------------------ Sections ------------------------------------ */
.ed section.pad { padding: clamp(4rem, 8vw, 6.5rem) 0; }
.ed section.pad-sm { padding: clamp(2.5rem, 5vw, 3.5rem) 0; }
.ed .sec-head { max-width: 40rem; margin-bottom: 3rem; }
.ed .sec-head.center { margin-left: auto; margin-right: auto; text-align: center; }
.ed .sec-head h2 { font-size: clamp(1.9rem, 3.6vw, 2.75rem); line-height: 1.08; }
.ed .sec-head p.lede { color: var(--muted); font-size: 1.08rem; margin-top: 1rem; }
.ed .sec-head-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 2rem; flex-wrap: wrap; margin-bottom: 3rem; }
.ed .sec-head-row .sec-head { margin-bottom: 0; }
.ed .divider { border: none; border-top: 1px solid var(--line); margin: 0; }

/* ------------------------------------ Hero ------------------------------------ */
.ed .hero-photo { position: relative; overflow: hidden; isolation: isolate; color: #fff; }
.ed .hero-photo .hero-media { position: absolute; inset: 0; z-index: -2; }
.ed .hero-photo .hero-media img { width: 100%; height: 100%; object-fit: cover; }
.ed .hero-photo .hero-scrim {
  position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(100deg, rgba(16, 13, 41, 0.95) 0%, rgba(16, 13, 41, 0.82) 38%, rgba(16, 13, 41, 0.42) 68%, rgba(16, 13, 41, 0.12) 100%),
    linear-gradient(0deg, rgba(16, 13, 41, 0.55), transparent 46%);
}
.ed .hero-photo.tone-dark .hero-scrim { background: linear-gradient(0deg, rgba(16, 13, 41, 0.94), rgba(16, 13, 41, 0.62)); }
.ed .hero-inner { padding: clamp(6rem, 15vw, 9rem) 0 clamp(3.5rem, 7vw, 5rem); }
.ed .hero-inner.compact { padding: clamp(4.5rem, 11vw, 6.5rem) 0 clamp(2.75rem, 5vw, 3.5rem); }
.ed .hero-badge {
  display: inline-flex; align-items: center; gap: 0.55rem; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.03em;
  color: var(--gold-bright); margin-bottom: 1.5rem; background: rgba(224, 172, 74, 0.12);
  border: 1px solid rgba(224, 172, 74, 0.35); padding: 0.45rem 0.95rem 0.45rem 0.7rem; border-radius: 999px;
}
.ed .hero-badge svg { width: 15px; height: 15px; flex: none; }
.ed .hero-photo h1 { color: #fff; font-size: clamp(2.4rem, 5.4vw, 4.1rem); line-height: 1.04; max-width: 20ch; }
.ed .hero-photo h1 em { font-style: normal; color: #ff7c81; }
.ed .hero-photo .lede { color: rgba(255, 255, 255, 0.84); font-size: 1.15rem; max-width: 34rem; margin: 1.35rem 0 2rem; }
.ed .hero-crumbs { display: flex; align-items: center; gap: 0.55rem; font-size: 0.85rem; color: rgba(255, 255, 255, 0.7); margin-top: 1.75rem; }
.ed .hero-crumbs a { color: #fff; font-weight: 700; }

/* ------------------------------------ Hero v2 (bottom-anchored, top-pinned crumbs) ------------------------------------ */
.ed .hero-photo--v2 { min-height: clamp(24rem, 52vw, 34rem); display: flex; flex-direction: column; }
.ed .hero-photo--v2 .hero-topbar {
  padding: clamp(1.5rem, 4vw, 2.25rem) 0 0; position: relative; z-index: 1;
}
.ed .hero-photo--v2 .hero-crumbs-v2 {
  display: flex; align-items: center; gap: 0.5rem; font-size: 0.78rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.06em; color: rgba(255, 255, 255, 0.55);
}
.ed .hero-photo--v2 .hero-crumbs-v2 a { color: rgba(255, 255, 255, 0.85); text-decoration: none; }
.ed .hero-photo--v2 .hero-crumbs-v2 a:hover { color: #fff; }
.ed .hero-photo--v2 .hero-crumbs-v2 svg { width: 0.7rem; height: 0.7rem; opacity: 0.5; }
.ed .hero-photo--v2 .hero-bottom {
  margin-top: auto; padding: clamp(2.5rem, 6vw, 4rem) 0 clamp(4.5rem, 9vw, 6rem); position: relative; z-index: 1;
  border-top: 1px solid rgba(255, 255, 255, 0.16);
}
.ed .hero-photo--v2 .hero-bottom-grid { display: grid; grid-template-columns: 1fr auto; gap: 2rem; align-items: end; }
.ed .hero-photo--v2 .hero-index {
  font-family: var(--font-mono, monospace); font-size: 0.85rem; font-weight: 700; letter-spacing: 0.05em;
  color: var(--gold-bright); margin-bottom: 0.9rem; display: block;
}
.ed .hero-photo--v2 h1 {
  color: #fff; font-size: clamp(2.5rem, 6vw, 4.6rem); line-height: 0.98; max-width: 18ch; letter-spacing: -0.01em;
}
.ed .hero-photo--v2 .lede { color: rgba(255, 255, 255, 0.8); font-size: 1.08rem; max-width: 30rem; margin: 1.1rem 0 0; }
.ed .hero-photo--v2 .hero-side { display: flex; flex-direction: column; align-items: flex-end; gap: 0.9rem; text-align: right; }
.ed .hero-photo--v2 .hero-side-stat { color: #fff; }
.ed .hero-photo--v2 .hero-side-stat strong { display: block; font-family: var(--font-display); font-size: 2.1rem; line-height: 1; }
.ed .hero-photo--v2 .hero-side-stat span { display: block; font-size: 0.76rem; color: rgba(255, 255, 255, 0.6); text-transform: uppercase; letter-spacing: 0.05em; margin-top: 0.3rem; }
@media (max-width: 720px) {
  .ed .hero-photo--v2 .hero-bottom-grid { grid-template-columns: 1fr; }
  .ed .hero-photo--v2 .hero-side { align-items: flex-start; text-align: left; flex-direction: row; gap: 1.75rem; }
}
.ed .hero-crumbs svg { width: 0.8rem; height: 0.8rem; opacity: 0.6; }

/* Overlapping feature strip that bridges hero into body (Trident-style depth) */
.ed .feature-strip-wrap { position: relative; z-index: 4; margin-top: -2.75rem; }
.ed .feature-strip {
  background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow-lg);
  display: grid; grid-template-columns: repeat(4, 1fr); overflow: hidden; gap: 1px; background-color: var(--line);
}
.ed .feature-strip a, .ed .feature-strip div.fs-item {
  display: flex; align-items: center; justify-content: flex-start; gap: 1.1rem; padding: 1.5rem 1.6rem; background: var(--surface);
  text-decoration: none; color: var(--ink); transition: background-color 0.2s ease, transform 0.2s ease;
  position: relative; text-align: left;
}
.ed .feature-strip a:hover { background: var(--surface-sunk); transform: translateY(-2px); z-index: 1; box-shadow: 0 12px 24px -14px rgba(20, 17, 50, 0.3); }
.ed .fs-icon, .fs-icon {
  width: 3.2rem !important; height: 3.2rem !important; min-width: 3.2rem !important; border-radius: 14px !important;
  color: #ffffff !important; flex: none !important;
  display: grid !important; place-items: center !important; place-content: center !important; align-content: center !important; justify-content: center !important; text-align: center !important;
  background: var(--red); box-shadow: 0 8px 20px -6px rgba(227, 30, 43, 0.55);
  transition: transform 0.25s ease; position: relative !important; margin: 0 !important; padding: 0 !important;
}
.ed .feature-strip a:hover .fs-icon, .ed .feature-strip div.fs-item:hover .fs-icon { transform: scale(1.08) rotate(-4deg); }
.ed .feature-strip > :nth-child(2) .fs-icon { background: var(--navy) !important; box-shadow: 0 8px 20px -6px rgba(38, 33, 99, 0.55) !important; }
.ed .feature-strip > :nth-child(3) .fs-icon { background: var(--red) !important; box-shadow: 0 8px 20px -6px rgba(227, 30, 43, 0.55) !important; }
.ed .feature-strip > :nth-child(4) .fs-icon { background: var(--navy) !important; box-shadow: 0 8px 20px -6px rgba(38, 33, 99, 0.55) !important; }

.ed .fs-icon svg, .fs-icon svg {
  width: 1.5rem !important; height: 1.5rem !important; min-width: 1.5rem !important; min-height: 1.5rem !important;
  flex: none !important; display: block !important; margin: auto !important; position: static !important;
  float: none !important; top: auto !important; left: auto !important; right: auto !important; bottom: auto !important; transform: none !important;
  color: #ffffff !important; stroke: #ffffff !important; fill: none !important;
}
.ed .fs-icon svg *, .fs-icon svg * { stroke: #ffffff !important; }
.ed .fs-icon i, .fs-icon i {
  color: #ffffff !important; font-size: 1.25rem !important; line-height: 1 !important;
  display: block !important; margin: auto !important; position: static !important;
  float: none !important; top: auto !important; left: auto !important; right: auto !important; bottom: auto !important; transform: none !important;
}
.ed .feature-strip strong { display: block; font-size: 1.02rem; font-family: var(--font-display); font-weight: 700; color: var(--ink); line-height: 1.25; }
.ed .feature-strip span { display: block; font-size: 0.82rem; color: var(--muted); margin-top: 0.2rem; line-height: 1.3; }
@media (max-width: 900px) {
  .ed .feature-strip { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .ed .feature-strip-wrap { margin-top: 1.5rem; }
  .ed .feature-strip { grid-template-columns: 1fr; }
}

/* ------------------------------------ Stat row ------------------------------------ */
.ed .stat-row { display: flex; flex-wrap: wrap; gap: clamp(1.75rem, 5vw, 3.5rem); }
.ed .stat-row .stat strong {
  display: block; font-family: var(--font-display); font-size: clamp(1.9rem, 3.4vw, 2.5rem); font-weight: 600;
  color: var(--navy); font-variant-numeric: tabular-nums; line-height: 1;
}
.ed .stat-row .stat span { display: block; font-size: 0.84rem; color: var(--muted); margin-top: 0.4rem; }
.ed .stat-row.on-navy .stat strong { color: #fff; }
.ed .stat-row.on-navy .stat span { color: var(--on-navy-muted); }
.ed .stat-row .stat { border-left: 2px solid var(--red); padding-left: 1rem; }

/* ------------------------------------ Photo/text split ------------------------------------ */
.ed .split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2.5rem, 6vw, 5rem); align-items: center; }
.ed .split.reverse { direction: rtl; }
.ed .split.reverse > * { direction: ltr; }
@media (max-width: 900px) { .ed .split { grid-template-columns: 1fr; } .ed .split.reverse { direction: ltr; } }
.ed .split-media { position: relative; }
.ed .split-media img { width: 100%; height: clamp(320px, 42vw, 460px); object-fit: cover; border-radius: var(--radius); box-shadow: var(--shadow); }
.ed .badge-overlap {
  position: absolute; bottom: -1.75rem; right: -1.5rem; background: var(--surface); border-radius: 999px;
  box-shadow: var(--shadow-lg); padding: 0.9rem 1.4rem 0.9rem 0.9rem; display: flex; align-items: center; gap: 0.85rem;
  max-width: 15rem;
}
.ed .badge-overlap img { width: 3.4rem; height: 3.4rem; border-radius: 999px; object-fit: cover; box-shadow: none; }
.ed .badge-overlap strong { display: block; font-family: var(--font-display); font-size: 1.15rem; color: var(--navy); line-height: 1; }
.ed .badge-overlap span { display: block; font-size: 0.74rem; color: var(--muted); margin-top: 0.3rem; line-height: 1.35; }
@media (max-width: 560px) { .ed .badge-overlap { right: 0.5rem; bottom: -1.25rem; padding: 0.7rem 1rem 0.7rem 0.7rem; } .ed .badge-overlap img { width: 2.6rem; height: 2.6rem; } }

/* ------------------------------------ Cards ------------------------------------ */
.ed .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
.ed .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.ed .grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.1rem; }
@media (max-width: 980px) { .ed .grid-3, .ed .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .ed .grid-2, .ed .grid-3, .ed .grid-4 { grid-template-columns: 1fr; } }

.ed .icon-card {
  border: 1px solid var(--line); border-radius: var(--radius); padding: 2rem 1.75rem; background: var(--surface);
  transition: box-shadow 0.25s ease, transform 0.25s ease, border-color 0.25s ease;
}
.ed .icon-card:hover { box-shadow: var(--shadow); transform: translateY(-4px); border-color: transparent; }
.ed .icon-card .ic-num { font-family: var(--font-mono); font-size: 0.78rem; color: var(--muted); margin-bottom: 1.1rem; }
.ed .ic-icon {
  width: 3.1rem; height: 3.1rem; border-radius: 12px; background: rgba(38, 33, 99, 0.07); color: var(--navy);
  display: flex; align-items: center; justify-content: center; margin-bottom: 1.4rem;
}
.ed .ic-icon svg { width: 1.6rem; height: 1.6rem; }
.ed .icon-card h3 { font-size: 1.14rem; margin-bottom: 0.6rem; }
.ed .icon-card p { color: var(--muted); font-size: 0.93rem; margin: 0; }
.ed .icon-card .card-link { display: inline-flex; align-items: center; gap: 0.4rem; margin-top: 1.1rem; font-weight: 700; font-size: 0.86rem; color: var(--red); }

/* ---- Photo + colored-icon variant (step cards with an image strip) ---- */
.ed .icon-card--photo { padding: 0; overflow: hidden; }
.ed .icon-card--photo .icp-media { height: 160px; overflow: hidden; }
.ed .icon-card--photo .icp-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.ed .icon-card--photo:hover .icp-media img { transform: scale(1.06); }
.ed .icon-card--photo .icp-body { padding: 1.6rem 1.6rem 1.9rem; position: relative; }
.ed .icon-card--photo .ic-icon {
  position: absolute; top: -1.75rem; left: 1.6rem; margin: 0; color: #fff;
  box-shadow: 0 10px 22px -8px rgba(20, 17, 50, 0.4); border: 3px solid var(--surface);
}
.ed .icon-card--photo .icp-body { padding-top: 2.1rem; }
.ed .icon-card--photo.icp-navy .ic-icon { background: var(--navy); }
.ed .icon-card--photo.icp-red .ic-icon { background: var(--red); }
.ed .icon-card--photo.icp-gold .ic-icon { background: var(--gold); }

/* ---- Live API university cards (destination pages) --------------------- */
.ed .uni-live-badge {
  display: inline-flex; align-items: center; gap: 0.45rem; font-size: 0.76rem; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.05em; color: #1f9d63; background: rgba(31, 157, 99, 0.1);
  border-radius: 999px; padding: 0.4rem 0.8rem; flex: none;
}
.ed .uni-live-badge .tlb-dot { width: 6px; height: 6px; border-radius: 50%; background: #1f9d63; animation: tlbPulseEd 1.8s ease-in-out infinite; }
@keyframes tlbPulseEd { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
.ed .uni-api-card { display: flex; flex-direction: column; align-items: flex-start; text-align: left; }
.ed .uni-api-logo { width: 100%; height: 64px; display: flex; align-items: center; justify-content: flex-start; }
.ed .uni-api-logo img { max-height: 56px; max-width: 100%; object-fit: contain; }
.ed .uni-api-fallback {
  height: 56px; width: 56px; border-radius: 10px; background: var(--surface-sunk); color: var(--navy);
  align-items: center; justify-content: center; font-family: var(--font-display); font-weight: 700; font-size: 1.1rem;
}

.ed .photo-card {
  position: relative; border-radius: var(--radius); overflow: hidden; isolation: isolate; text-decoration: none;
  color: #fff; box-shadow: var(--shadow); aspect-ratio: 4 / 5; display: flex; flex-direction: column; justify-content: flex-end;
}
.ed .photo-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform 0.6s cubic-bezier(.2,.7,.2,1); }
.ed .photo-card:hover img { transform: scale(1.07); }
.ed .photo-card::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgba(16, 13, 41, 0.94) 0%, rgba(16, 13, 41, 0.28) 58%, rgba(16, 13, 41, 0.02) 100%); }
.ed .photo-card .pc-tag {
  position: absolute; top: 1rem; left: 1rem; font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.08em;
  background: rgba(255, 255, 255, 0.16); border: 1px solid rgba(255, 255, 255, 0.32); padding: 0.28rem 0.6rem; border-radius: 999px; backdrop-filter: blur(6px);
}
.ed .photo-card .pc-body { padding: 1.3rem 1.3rem 1.5rem; }
.ed .photo-card h3 { color: #fff; font-size: 1.2rem; margin-bottom: 0.35rem; }
.ed .photo-card p { color: rgba(255, 255, 255, 0.82); font-size: 0.85rem; margin: 0; line-height: 1.5; }

.ed .event-card {
  border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--surface);
  text-decoration: none; color: var(--ink); display: flex; flex-direction: column; box-shadow: none;
  transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.ed .event-card:hover { box-shadow: var(--shadow); transform: translateY(-4px); }
.ed .event-card .ec-media { position: relative; height: 190px; overflow: hidden; }
.ed .event-card .ec-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.ed .event-card:hover .ec-media img { transform: scale(1.06); }
.ed .event-card .ec-body { display: flex; gap: 1.1rem; align-items: flex-start; padding: 1.3rem 1.4rem; }
.ed .event-card .ec-date { flex: none; width: 3.6rem; height: 3.6rem; border-radius: 10px; background: var(--navy); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; font-family: var(--font-display); }
.ed .event-card .ec-date strong { font-size: 1.15rem; line-height: 1; }
.ed .event-card .ec-date span { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.06em; }
.ed .event-card h3 { font-size: 1.05rem; margin-bottom: 0.4rem; }
.ed .event-card p { margin: 0 0 0.5rem; font-size: 0.86rem; color: var(--muted); }

/* ------------------------------------ Events toolbar + v2 card body ------------------------------------ */
.ed .events-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.85rem; margin-bottom: 1.4rem; padding: 0.9rem; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.ed .events-tabs { display: flex; gap: 0.3rem; flex: none; }
.ed .events-tabs a { padding: 0.5rem 1.1rem; border-radius: 999px; font-size: 0.86rem; font-weight: 700; color: var(--muted); text-decoration: none; transition: all 0.2s ease; white-space: nowrap; }
.ed .events-tabs a.is-active { background: var(--navy); color: #fff; }
.ed .events-tabs a:not(.is-active):hover { color: var(--ink); background: var(--bg, #f4f2fb); }
.ed .events-filters { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; flex: 1; justify-content: flex-end; min-width: 0; }
.ed .ev-search { position: relative; display: flex; align-items: center; flex: 1 1 200px; max-width: 260px; min-width: 160px; }
.ed .ev-search svg { position: absolute; left: 0.85rem; width: 1rem; height: 1rem; color: var(--muted); pointer-events: none; }
.ed .ev-search input { width: 100%; padding: 0.55rem 0.9rem 0.55rem 2.3rem; border: 1px solid var(--line); border-radius: 10px; font-size: 0.84rem; background: #fff; color: var(--ink); }
.ed .events-filters select { flex: 0 1 auto; width: auto; max-width: 170px; padding: 0.55rem 2rem 0.55rem 0.85rem; border: 1px solid var(--line); border-radius: 10px; font-size: 0.84rem; background-color: #fff; color: var(--ink); 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='%23625d78' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.6rem center; background-size: 0.85rem; cursor: pointer; text-overflow: ellipsis; }
.ed .events-count { color: var(--muted); font-size: 0.86rem; font-weight: 600; margin: 0 0 1rem; }
.ed .events-empty { text-align: center; color: var(--muted); padding: 3rem 0; }

.ed .event-card .ec-media { height: 175px; }
.ed .event-card .ec-status { position: absolute; top: 0.8rem; left: 0.8rem; padding: 0.3rem 0.7rem; border-radius: 999px; font-size: 0.68rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; background: rgba(255,255,255,0.92); color: var(--ink); }
.ed .event-card .ec-status.is-upcoming { background: var(--red); color: #fff; }
.ed .event-card .ec-status.is-ended { background: rgba(20,16,46,0.55); color: #fff; }
.ed .event-card .ec-type { position: absolute; bottom: 0.8rem; left: 0.8rem; padding: 0.28rem 0.65rem; border-radius: 8px; font-size: 0.68rem; font-weight: 700; background: rgba(15,12,40,0.55); color: #fff; backdrop-filter: blur(4px); }
.ed .event-card .ec-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(15,12,40,0.28) 0%, transparent 30%, transparent 60%, rgba(15,12,40,0.5) 100%); pointer-events: none; }
.ed .event-card .ec-body-v2 { padding: 1.2rem 1.3rem 1.4rem; display: flex; flex-direction: column; gap: 0.7rem; }
.ed .event-card .ec-date-row { display: flex; align-items: center; gap: 0.85rem; }
.ed .event-card .ec-when { display: flex; flex-direction: column; }
.ed .event-card .ec-when strong { font-size: 0.82rem; color: var(--ink); }
.ed .event-card .ec-when span { font-size: 0.76rem; color: var(--muted); }
.ed .event-card .ec-body-v2 h3 { font-size: 1.05rem; margin: 0; line-height: 1.3; }
.ed .event-card .ec-venue { display: flex; align-items: center; gap: 0.4rem; font-size: 0.82rem; color: var(--muted); margin: 0; }
.ed .event-card .ec-venue svg { width: 0.9rem; height: 0.9rem; flex: none; color: var(--red); }
.ed .event-card .ec-summary { font-size: 0.84rem; color: var(--muted); line-height: 1.55; margin: 0; }
.ed .event-card .ec-foot { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; margin-top: 0.3rem; padding-top: 0.8rem; border-top: 1px solid var(--line); }
.ed .event-card .ec-spots { font-size: 0.74rem; font-weight: 700; color: var(--red); }
.ed .event-card .ec-spots.is-full { color: var(--muted); }
.ed .events-grid.is-list { grid-template-columns: 1fr; }
.ed .events-grid.is-list .event-card { display: grid; grid-template-columns: 220px 1fr; }
.ed .events-grid.is-list .event-card .ec-media { height: 100%; }
.ed .events-grid.is-list .event-card .ec-body-v2 { padding: 1.1rem 1.3rem; }
@media (max-width: 720px) {
  .ed .events-toolbar { flex-direction: column; align-items: stretch; }
  .ed .events-tabs { width: 100%; }
  .ed .events-tabs a { flex: 1; text-align: center; }
  .ed .events-filters { justify-content: stretch; }
  .ed .ev-search { max-width: none; flex: 1 1 100%; }
  .ed .events-filters select { flex: 1 1 calc(50% - 0.3rem); max-width: none; }
}

/* ------------------------------------ Timeline / process ------------------------------------ */
.ed .process-grid { display: grid; grid-template-columns: repeat(6, 1fr); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--line); gap: 1px; }
.ed .process-step { background: var(--surface); padding: 2rem 1.5rem; position: relative; }
.ed .process-step .ps-num {
  font-family: var(--font-display); font-size: 1.1rem; width: 2.3rem; height: 2.3rem; border-radius: 999px;
  background: var(--navy); color: #fff; display: flex; align-items: center; justify-content: center; margin-bottom: 1.2rem;
}
.ed .process-step:last-child .ps-num { background: var(--red); }
.ed .process-step h4 { font-size: 0.98rem; margin-bottom: 0.5rem; }
.ed .process-step p { font-size: 0.84rem; color: var(--muted); margin: 0; }
@media (max-width: 980px) { .ed .process-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 620px) { .ed .process-grid { grid-template-columns: 1fr; } }

/* Three-step "how we work" with big numerals (AbroadNet-style) */
.ed .steps-numeral { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
@media (max-width: 820px) { .ed .steps-numeral { grid-template-columns: 1fr; } }
.ed .step-numeral-card { position: relative; border: 1px solid var(--line); border-radius: var(--radius); padding: 2.2rem 1.9rem; background: var(--surface); overflow: hidden; }
.ed .step-numeral-card .big-num { position: absolute; right: 1.3rem; top: 0.6rem; font-family: var(--font-display); font-size: 5rem; font-weight: 600; color: var(--surface-sunk); line-height: 1; z-index: 0; }
.ed .step-numeral-card > * { position: relative; z-index: 1; }
.ed .step-numeral-card .ic-icon { background: rgba(227, 30, 43, 0.08); color: var(--red); }

/* ------------------------------------ Testimonials ------------------------------------ */
.ed .quote-card { background: var(--navy); color: #fff; border-radius: var(--radius-lg); padding: clamp(2rem, 4vw, 3.25rem); box-shadow: var(--shadow-lg); }
.ed .quote-card .qm { font-family: var(--font-display); font-size: 3rem; color: var(--gold-bright); line-height: 1; display: block; margin-bottom: 0.5rem; }
.ed .quote-card p.body { font-size: 1.2rem; line-height: 1.7; color: rgba(255, 255, 255, 0.94); margin: 0 0 1.75rem; }
.ed .quote-who { display: flex; align-items: center; gap: 1rem; }
.ed .quote-who img { width: 3.4rem; height: 3.4rem; border-radius: 999px; object-fit: cover; border: 2px solid rgba(255, 255, 255, 0.25); }
.ed .quote-who strong { display: block; font-size: 0.96rem; }
.ed .quote-who span { display: block; font-size: 0.82rem; color: var(--on-navy-muted); }
.ed .face-row { display: flex; align-items: center; margin-top: 1.5rem; }
.ed .face-row img { width: 2.9rem; height: 2.9rem; border-radius: 999px; object-fit: cover; border: 3px solid var(--paper); margin-right: -0.75rem; }
.ed .face-row span { margin-left: 1.4rem; font-weight: 700; font-size: 0.86rem; color: var(--navy); }
.ed .story-graphic { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow); }
.ed .story-graphic img { width: 100%; height: auto; display: block; }

/* ------------------------------------ Award / trust band ------------------------------------ */
.ed .trust-band { background: var(--navy-deep); color: #fff; }
.ed .trust-row { display: flex; align-items: center; justify-content: space-between; gap: 2.5rem; flex-wrap: wrap; padding: 2.75rem 0; }
.ed .trust-award { display: flex; align-items: center; gap: 1.1rem; }
.ed .trust-award .ta-icon { width: 2.9rem; height: 2.9rem; color: var(--gold-bright); flex: none; }
.ed .trust-award strong { display: block; font-family: var(--font-display); font-size: 1.05rem; }
.ed .trust-award span { display: block; font-size: 0.8rem; color: var(--on-navy-muted); }
.ed .trust-badge { background: #fff; border-radius: 14px; padding: 0.55rem; display: flex; align-items: center; }
.ed .trust-badge img { height: 78px; width: auto; }

/* ------------------------------------ Logo strip ------------------------------------ */
.ed .logo-strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.75rem 1rem; }
.ed .logo-chip {
  display: inline-flex; align-items: center; gap: 0.6rem; padding: 0.7rem 1.2rem; border: 1px solid var(--line); border-radius: 999px;
  font-weight: 700; font-size: 0.85rem; color: var(--ink); background: var(--surface); transition: border-color .2s ease, transform .2s ease;
}
.ed .logo-strip a.logo-chip:hover { border-color: var(--red); transform: translateY(-2px); }
.ed .logo-chip i.dot { width: 0.5rem; height: 0.5rem; border-radius: 999px; background: var(--red); flex: none; }

/* ------------------------------------ CTA band ------------------------------------ */
.ed .cta-banner {
  background: var(--red); border-radius: var(--radius-lg); color: #fff;
  padding: clamp(2rem, 4vw, 2.75rem) clamp(1.75rem, 4vw, 3rem); display: flex; align-items: center; justify-content: space-between; gap: 2rem; flex-wrap: wrap;
}
.ed .cta-banner h3 { color: #fff; font-size: clamp(1.35rem, 2.6vw, 1.75rem); margin-bottom: 0.35rem; }
.ed .cta-banner p { color: rgba(255, 255, 255, 0.88); margin: 0; font-size: 0.95rem; }
.ed .cta-banner .btn-red { background: #fff; color: var(--red-deep); box-shadow: none; }
.ed .cta-banner .btn-red:hover { background: var(--paper); }

.ed .cta-band { text-align: center; padding: clamp(4.5rem, 8vw, 6rem) 0; }
.ed .cta-band h2 { font-size: clamp(1.9rem, 3.6vw, 2.6rem); max-width: 34rem; margin: 0 auto 1rem; }
.ed .cta-band p { color: var(--muted); max-width: 30rem; margin: 0 auto 2rem; }
.ed .cta-btns { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* ------------------------------------ Forms ------------------------------------ */
.ed .form-panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(1.75rem, 3vw, 2.5rem); box-shadow: var(--shadow); }

/* ---- Service detail page: process steps, accent icons, proof stat -------- */
.ed .svc-process { display: flex; flex-direction: column; gap: 1.5rem; }
.ed .svc-process-step { display: flex; gap: 1.1rem; align-items: flex-start; }
.ed .svc-process-num {
  flex: none; width: 2.1rem; height: 2.1rem; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-family: var(--font-display); font-weight: 700; font-size: 0.95rem; color: #fff;
}
.ed .svc-icon-navy { background: var(--navy); }
.ed .svc-icon-red { background: var(--red); }
.ed .svc-icon-gold { background: var(--gold); }
.ed .ic-icon.svc-icon-navy, .ed .ic-icon.svc-icon-red, .ed .ic-icon.svc-icon-gold { color: #fff; }
.ed .svc-stat { border-radius: var(--radius-sm, 10px); padding: 1.1rem 1.3rem; color: #fff; display: flex; flex-direction: column; gap: 0.3rem; }
.ed .svc-stat strong { font-family: var(--font-display); font-size: 1.9rem; line-height: 1; }
.ed .svc-stat span { font-size: 0.85rem; opacity: 0.85; }
.ed .f-field { display: flex; flex-direction: column; gap: 0.4rem; margin-bottom: 1.1rem; }
.ed .f-field label { font-size: 0.85rem; font-weight: 700; }
.ed .f-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 560px) { .ed .f-row { grid-template-columns: 1fr; } }
.ed input[type="text"], .ed input[type="email"], .ed input[type="tel"], .ed input[type="url"], .ed input[type="date"], .ed select, .ed textarea {
  font: inherit; padding: 0.85rem 1rem; border: 1px solid var(--line-strong); border-radius: 10px; width: 100%; background: var(--paper); color: var(--ink);
}
.ed input:focus, .ed select:focus, .ed textarea:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,23,64,0.1); }
.ed textarea { resize: vertical; min-height: 110px; }
.ed .honeypot { position: absolute; left: -9999px; opacity: 0; }
.ed .qual-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.6rem; }
@media (max-width: 560px) { .ed .qual-grid { grid-template-columns: 1fr; } }
.ed .qual-opt { display: flex; align-items: center; gap: 0.55rem; border: 1px solid var(--line-strong); border-radius: 10px; padding: 0.75rem 0.9rem; font-size: 0.88rem; font-weight: 600; cursor: pointer; transition: border-color .15s ease, background .15s ease; }
.ed .qual-opt:has(input:checked) { border-color: var(--navy); background: rgba(27,23,64,0.05); }
.ed .qual-opt input { width: auto; margin: 0; accent-color: var(--navy); }
.ed .apply-steps { list-style: none; margin: 0 0 1.6rem; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.ed .apply-steps li { display: flex; gap: 0.85rem; align-items: flex-start; font-size: 0.92rem; color: var(--muted); }
.ed .apply-steps .as-num { flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--navy); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 0.85rem; display: flex; align-items: center; justify-content: center; }

/* ------------------------------------ Office/contact cards ------------------------------------ */
.ed .office-card { border: 1px solid var(--line); border-radius: var(--radius); padding: 1.6rem; background: var(--surface); }
.ed .office-card--accent { position: relative; z-index: 1; border-top: 3px solid var(--red); transition: transform 0.2s ease, box-shadow 0.2s ease; background: var(--surface); }
.ed .office-card--accent:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.ed .office-card--accent .oc-tag { display: inline-flex; align-items: center; justify-content: center; padding: 0.25rem 0.55rem; border-radius: 6px; background: rgba(227, 30, 43, 0.09); }
.ed .office-card--accent.office-card--navy { border-top-color: var(--navy); }
.ed .office-card--accent.office-card--navy .oc-tag { color: var(--navy); background: rgba(38, 33, 99, 0.09); }
.ed .office-card .oc-tag { font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.08em; color: var(--red); font-weight: 700; }
.ed .office-card h3 { font-size: 1.05rem; margin: 0.5rem 0 0.6rem; }
.ed .office-card p { font-size: 0.88rem; color: var(--muted); margin-bottom: 0.5rem; }
.ed .office-card a.contact-line { display: flex; align-items: center; gap: 0.5rem; font-size: 0.86rem; font-weight: 700; color: var(--navy); margin-top: 0.35rem; }
.ed .office-card a.contact-line svg { width: 0.95rem; height: 0.95rem; color: var(--red); }
.ed a.office-card.contact-line { display: flex; align-items: center; gap: 0.85rem; font-size: 0.92rem; font-weight: 700; color: var(--navy); }
.ed a.office-card.contact-line svg { width: 1.15rem; height: 1.15rem; flex: none; color: var(--red); }

/* Full Background Brand Colored Office Cards */
.ed .office-card--colored {
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 18px;
  padding: 1.6rem;
  color: #ffffff !important;
  box-shadow: 0 12px 30px -10px rgba(0, 0, 0, 0.18);
  transition: transform 0.22s ease, box-shadow 0.22s ease;
  display: flex;
  flex-direction: column;
}
.ed .office-card--colored:hover {
  transform: translateY(-5px);
  box-shadow: 0 18px 45px -10px rgba(0, 0, 0, 0.28);
}
.ed .office-card--colored .oc-tag {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0.25rem 0.6rem; border-radius: 7px;
  background: rgba(255, 255, 255, 0.22); color: #ffffff !important;
  font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.08em; font-weight: 800;
  align-self: flex-start;
}
.ed .office-card--colored h3 {
  font-size: 1.1rem; font-weight: 800; color: #ffffff !important; margin: 0.6rem 0 0.5rem;
}
.ed .office-card--colored p.oc-address {
  font-size: 0.86rem; color: rgba(255, 255, 255, 0.88) !important; margin-bottom: 1rem; line-height: 1.5; flex: 1;
}
.ed .office-card--colored .oc-details {
  display: flex; flex-direction: column; gap: 0.35rem; margin-top: auto; font-size: 0.85rem; color: #ffffff; border-top: 1px solid rgba(255, 255, 255, 0.18); padding-top: 0.75rem;
}
.ed .office-card--colored .oc-detail-line {
  display: flex; align-items: flex-start; gap: 0.4rem; color: #ffffff !important; text-decoration: none; font-size: 0.84rem; line-height: 1.45; word-break: break-word;
}
.ed .office-card--colored .oc-detail-line strong {
  font-weight: 800; color: #ffffff !important; flex: none; width: 18px;
}
.ed .office-card--colored .oc-detail-line:hover {
  text-decoration: underline;
}

.ed .office-card--theme-red { background: linear-gradient(135deg, #ed1f26 0%, #ed1f26 100%); }
.ed .office-card--theme-navy { background: linear-gradient(135deg, #262061 0%, #262061 100%); }

/* ------------------------------------ FAQ accordion ------------------------------------ */
.ed .faq-item { border-bottom: 1px solid var(--line); }
.ed .faq-item:first-child { border-top: 1px solid var(--line); }
.ed .faq-q { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.4rem 0; cursor: pointer; font-weight: 700; font-size: 1.02rem; list-style: none; }
.ed .faq-q::-webkit-details-marker { display: none; }
.ed .faq-q svg { width: 1.1rem; height: 1.1rem; color: var(--red); flex: none; transition: transform 0.25s ease; }
.ed details[open] .faq-q svg { transform: rotate(45deg); }
.ed .faq-a { padding: 0 0 1.5rem; color: var(--muted); font-size: 0.96rem; max-width: 42rem; }

/* ------------------------------------ Photo grid (gallery) ------------------------------------ */
.ed .photo-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.9rem; }
.ed .photo-grid img { width: 100%; height: 220px; object-fit: cover; border-radius: 14px; box-shadow: var(--shadow-sm); }
@media (max-width: 900px) { .ed .photo-grid { grid-template-columns: repeat(2, 1fr); } }

/* ------------------------------------ Header / nav ------------------------------------ */
body.ed-body { margin: 0; background: var(--paper); }
.ed-header { position: sticky; top: 0; z-index: 60; }
.ed-topbar { background: var(--navy-black); color: rgba(255, 255, 255, 0.8); font-size: 0.82rem; }
.ed-topbar-inner { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0; gap: 1rem; flex-wrap: wrap; }
.ed-topbar-links { display: flex; gap: 1.4rem; }
.ed-topbar-links a { color: #fff; font-weight: 600; text-decoration: none; }
@media (max-width: 700px) { .ed-topbar { display: none; } }
.ed-nav-bar { background: rgba(251, 249, 245, 0.92); backdrop-filter: blur(10px); border-bottom: 1px solid transparent; transition: border-color 0.2s ease, box-shadow 0.2s ease; }
.ed-header.is-scrolled .ed-nav-bar { border-color: var(--line); box-shadow: var(--shadow-sm); }
.ed-nav-row { display: flex; align-items: center; justify-content: space-between; padding: 0.85rem 0; gap: 1.5rem; }
.ed-brand img { height: 46px; width: auto; display: block; }
.ed-nav-links { display: flex; align-items: center; gap: 1.9rem; font-size: 0.92rem; font-weight: 600; }
.ed-nav-links > a { color: var(--ink); text-decoration: none; padding: 0.4rem 0; position: relative; }
.ed-nav-links > a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px; background: var(--red); transform: scaleX(0); transform-origin: left; transition: transform 0.2s ease; }
.ed-nav-links > a:hover::after { transform: scaleX(1); }
.ed-nav-item { position: relative; }
.ed-nav-item > a { display: inline-flex; align-items: center; gap: 0.3rem; color: var(--ink); text-decoration: none; padding: 0.4rem 0; cursor: pointer; }
.ed-nav-item > a svg { width: 0.7rem; height: 0.7rem; transition: transform 0.2s ease; }
.ed-nav-item:hover > a svg { transform: rotate(180deg); }
.ed-mega {
  position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(8px); width: 30rem; background: var(--surface);
  border-radius: var(--radius); box-shadow: var(--shadow-lg); padding: 1.4rem; opacity: 0; pointer-events: none; transition: opacity 0.18s ease, transform 0.18s ease;
  border-top: 3px solid var(--red); z-index: 50;
}
.ed-mega-narrow { width: 20rem; }
.ed-nav-item:hover .ed-mega { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.ed-mega-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 0.2rem; }
.ed-mega-inner.one-col { grid-template-columns: 1fr; }
.ed-mega-inner a { padding: 0.6rem 0.7rem; border-radius: 8px; font-size: 0.87rem; font-weight: 600; color: var(--ink); text-decoration: none; }
.ed-mega-inner a:hover { background: var(--surface-sunk); color: var(--red-deep); }
.ed-mega-all { display: block; margin-top: 0.9rem; padding-top: 0.9rem; border-top: 1px solid var(--line); font-weight: 700; font-size: 0.85rem; color: var(--red); text-decoration: none; }
.ed-nav-cta { display: flex; align-items: center; gap: 1rem; }
.ed-nav-signin { font-size: 0.88rem; font-weight: 700; color: var(--ink); text-decoration: none; }
.ed-nav-toggle { display: none; background: none; border: 1px solid var(--line-strong); border-radius: 8px; padding: 0.5rem 0.65rem; }
@media (max-width: 980px) {
  .ed-nav-links { display: none; }
  .ed-nav-toggle { display: inline-flex; }
  .ed-nav-signin { display: none; }
}
.ed-mnav { position: fixed; inset: 0; z-index: 100; background: var(--navy-black); color: #fff; padding: 1.5rem; display: none; flex-direction: column; overflow-y: auto; }
.ed-mnav.is-open { display: flex; }
.ed-mnav-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; }
.ed-mnav-close { background: none; border: 1px solid rgba(255, 255, 255, 0.3); border-radius: 8px; color: #fff; padding: 0.5rem 0.65rem; }
.ed-mnav ul { display: flex; flex-direction: column; gap: 0.2rem; font-size: 1.4rem; font-family: var(--font-display); }
.ed-mnav a { text-decoration: none; color: #fff; padding: 0.75rem 0; border-bottom: 1px solid rgba(255, 255, 255, 0.1); display: block; }
.ed-mnav-cta { margin-top: auto; display: flex; flex-direction: column; gap: 0.85rem; padding-top: 1.5rem; }

/* ------------------------------------ Footer ------------------------------------ */
.ed-footer { position: relative; background-color: #262061; background-image: radial-gradient(rgba(255,255,255,.07) 1px,transparent 1px); background-size: 22px 22px; color: rgba(255, 255, 255, 0.72); font-size: 0.95rem; font-family: var(--font-body); }
.ed-footer-cta-outer { max-width: var(--wrap); margin: 0 auto; padding: clamp(2rem, 4vw, 3rem) clamp(1.25rem, 4vw, 3rem) 0; }
/* The footer is brand navy, so this panel is lifted with a translucent white wash
   rather than its own colour — keeps it visible without leaving the brand palette. */
.ed-footer-cta { background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.18); border-radius: 20px; padding: clamp(2rem, 4vw, 3rem); display: flex; align-items: center; justify-content: space-between; gap: 2rem; flex-wrap: wrap; box-shadow: 0 20px 50px rgba(0,0,0,0.22); }
.ed-footer-cta h3 { color: #fff; font-family: var(--font-display); font-size: clamp(1.4rem, 2.5vw, 1.85rem); font-weight: 700; margin: 0 0 0.5rem; }
.ed-footer-cta p { margin: 0; color: rgba(255, 255, 255, 0.8); max-width: 28rem; font-size: 0.98rem; }
.ed-footer-cta-stats { display: flex; gap: clamp(1.25rem, 3vw, 2.5rem); }
.ed-footer-cta-stats div { text-align: left; }
.ed-footer-cta-stats strong { display: block; font-family: var(--font-display); font-size: clamp(1.6rem, 2.8vw, 2.2rem); font-weight: 700; color: #fff; line-height: 1; }
.ed-footer-cta-stats span { font-size: 0.78rem; color: rgba(255, 255, 255, 0.65); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; }
.ed-footer-cta-btn {
  flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem;
  background: var(--red, #ed1f26); color: #fff !important;
  padding: 0.9rem 2rem; border-radius: 999px; font-weight: 700; font-size: 1rem; text-decoration: none;
  box-shadow: 0 12px 28px -8px rgba(227, 30, 43, 0.7); transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
}
.ed-footer-cta-btn:hover { transform: translateY(-3px); box-shadow: 0 16px 36px -8px rgba(227, 30, 43, 0.85); background: #ed1f26; color: #fff !important; }

.ed-footer-top.wrap {
  max-width: var(--wrap); margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 3rem) 0;
  display: grid; grid-template-columns: minmax(220px, 0.85fr) minmax(0, 2.2fr) minmax(240px, 0.85fr); gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}
@media (max-width: 991px) {
  .ed-footer-top.wrap { grid-template-columns: 1fr; }
}

/* Brand panel — same footer background, just its own content column */
.ed-footer-brand-panel {
  padding: clamp(2.5rem, 5vw, 3.5rem) 0;
}
@media (max-width: 991px) { .ed-footer-brand-panel { padding: 2.5rem clamp(1.25rem, 4vw, 3rem); margin: 0 calc(-1 * clamp(1.25rem, 4vw, 3rem)); border-bottom: 1px solid rgba(255,255,255,.08); } }
.ed-footer-logo-wrap { background: #fff; display: inline-block; padding: 8px 16px; border-radius: 10px; margin-bottom: 1.4rem; }
.ed-footer-brand-panel img { height: 38px; display: block; filter: none; }
.ed-footer-brand-panel > p { max-width: 22rem; font-size: 1rem; line-height: 1.7; color: rgba(255, 255, 255, 0.68); margin-bottom: 1.6rem; }
.ed-footer-social { display: flex; gap: 0.75rem; }
.ed-footer-social a { width: 2.7rem; height: 2.7rem; border-radius: 50%; background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255,255,255,0.14); display: flex; align-items: center; justify-content: center; text-decoration: none; transition: all 0.22s ease; }
.ed-footer-social a:hover { background: var(--red); border-color: var(--red); transform: translateY(-3px); box-shadow: 0 8px 20px rgba(227, 30, 43, 0.4); }
.ed-footer-social svg { width: 1.1rem; height: 1.1rem; color: #fff; }

/* Link columns — clean text list, clear brand-accent underline on headings */
.ed-footer-links {
  display: grid; grid-template-columns: repeat(3, minmax(auto, max-content)); gap: clamp(1.5rem, 3vw, 2.5rem);
  justify-content: space-between;
  padding: clamp(2.5rem, 5vw, 3.5rem) 0;
}
@media (max-width: 700px) { .ed-footer-links { grid-template-columns: 1fr 1fr; justify-content: start; } }
@media (max-width: 460px) { .ed-footer-links { grid-template-columns: 1fr; } }
.ed-footer h4 { font-family: var(--font-display); color: #fff; font-size: 0.95rem; letter-spacing: 0.06em; text-transform: uppercase; margin: 0 0 1.3rem; font-weight: 700; position: relative; padding-bottom: .6rem; white-space: nowrap; }
.ed-footer h4::after { content: ""; position: absolute; left: 0; bottom: 0; width: 24px; height: 2px; background: var(--red); border-radius: 2px; }
.ed-footer ul { display: flex; flex-direction: column; gap: 0.8rem; list-style: none; padding: 0; margin: 0; }
.ed-footer a { text-decoration: none; color: rgba(255, 255, 255, 0.68); font-size: 0.95rem; font-weight: 500; transition: all 0.18s ease; white-space: nowrap !important; }
.ed-footer a:hover { color: #fff; transform: translateX(4px); }
.ed-footer-phone, .ed-footer-email { color: #fff !important; font-weight: 700; display: inline-flex; align-items: center; }

/* Newsletter — same footer background, CTA emphasis comes from the button + heading, not a walled-off block */
.ed-footer-newsletter-panel {
  padding: clamp(2.5rem, 5vw, 3.5rem) 0;
  display: flex; flex-direction: column; justify-content: center;
}
@media (max-width: 991px) { .ed-footer-newsletter-panel { margin: 0 calc(-1 * clamp(1.25rem, 4vw, 3rem)); padding: 2.5rem clamp(1.25rem, 4vw, 3rem); border-top: 1px solid rgba(255,255,255,.08); } }
.ed-footer-newsletter-eyebrow { margin: 0 0 0.6rem; font-size: 0.74rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em; color: var(--gold-bright, #ed1f26); }
.ed-footer-newsletter-panel h3 { color: #fff; font-family: var(--font-display); font-size: clamp(1.3rem, 2.2vw, 1.55rem); line-height: 1.25; margin: 0 0 0.7rem; }
.ed-footer-newsletter-copy { font-size: 0.92rem; color: rgba(255, 255, 255, 0.72); margin-bottom: 1.4rem; line-height: 1.55; }
.ed-newsletter { display: flex; border-radius: 999px; overflow: hidden; background: rgba(255,255,255,.08); border: 1px solid rgba(255, 255, 255, 0.25); transition: border-color 0.2s ease, background 0.2s ease; }
.ed-newsletter:focus-within { border-color: var(--red); background: rgba(255,255,255,.12); box-shadow: 0 0 0 3px rgba(227, 30, 43, 0.25); }
.ed-newsletter input { flex: 1; min-width: 0; border: none; background: transparent; padding: 0.9rem 1.2rem; color: #fff; font-family: var(--font-body); font-size: 0.95rem; outline: none; }
.ed-newsletter input::placeholder { color: rgba(255, 255, 255, 0.5); }
.ed-newsletter button { flex: none; border: none; background: var(--red); color: #fff; font-weight: 700; font-size: 0.88rem; padding: 0 1.3rem; cursor: pointer; transition: background 0.2s ease; display: flex; align-items: center; gap: 0.5rem; white-space: nowrap; }
.ed-newsletter button:hover { background: #ed1f26; }

.ed-footer-bottom.wrap {
  max-width: var(--wrap); margin: 0 auto; border-top: 1px solid rgba(255, 255, 255, 0.08);
  padding: 1.6rem clamp(1.25rem, 4vw, 3rem); display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; font-size: 0.88rem; color: rgba(255, 255, 255, 0.6);
}
.ed-footer-legal a { color: rgba(255, 255, 255, 0.7); text-decoration: none; margin: 0 4px; transition: color 0.2s ease; }
.ed-footer-legal a:hover { color: #fff; text-decoration: underline; }
.ed-floating-whatsapp {
  position: fixed; right: 1.5rem; bottom: 1.5rem; width: 3.5rem; height: 3.5rem; display: flex; align-items: center; justify-content: center;
  background: #25d366; color: #fff; border-radius: 999px; z-index: 90; box-shadow: 0 12px 28px rgba(0, 0, 0, 0.28); text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.ed-floating-whatsapp:hover { transform: scale(1.08); box-shadow: 0 16px 36px rgba(37, 211, 102, 0.45); }
.ed-floating-whatsapp svg { width: 1.7rem; height: 1.7rem; }


/* ------------------------------------ Utility ------------------------------------ */
.ed .bg-paper { background: var(--paper); }
.ed .bg-surface { background: var(--surface); }
.ed .bg-sunk { background: var(--surface-sunk); }
.ed .bordered-y { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.ed .reveal { opacity: 0; transform: translateY(18px); transition: opacity 0.7s ease, transform 0.7s cubic-bezier(.2,.7,.2,1); }
.ed .reveal.is-in { opacity: 1; transform: none; }

/* ------------------------------------ Site-wide nav overrides ------------------------------------ */
.navbar-nav .nav-badge {
  display: inline-flex; align-items: center; justify-content: center; min-width: 1.2rem; height: 1.2rem; padding: 0 0.3rem;
  margin-left: 0.35rem; border-radius: 999px; background: var(--red, #ed1f26); color: #fff; font-size: 0.62rem; font-weight: 800;
  vertical-align: 2px; line-height: 1;
}
.navbar .attr-right .attr-nav li.button a.btn-apply-nav {
  display: inline-flex !important; align-items: center; gap: 0.5rem;
  background: #ed1f26 !important;
  color: #fff !important; border: none !important; border-radius: 999px !important;
  padding: 0.7rem 1.5rem !important; font-weight: 700; font-size: 0.88rem; letter-spacing: 0.01em;
  box-shadow: 0 8px 20px -6px rgba(227, 30, 43, 0.55); transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.navbar .attr-right .attr-nav li.button a.btn-apply-nav svg { width: 1rem; height: 1rem; transition: transform 0.2s ease; }
.navbar .attr-right .attr-nav li.button a.btn-apply-nav:hover {
  transform: translateY(-2px); box-shadow: 0 12px 26px -6px rgba(227, 30, 43, 0.65); color: #fff !important;
}
.navbar .attr-right .attr-nav li.button a.btn-apply-nav:hover svg { transform: translateX(3px); }
.navbar .attr-right .attr-nav li.button a.btn-apply-nav::after { display: none !important; }
/* "Book a session" — ghost companion to Apply Now. */
.navbar .attr-right .attr-nav li.button a.btn-book-nav {
  display: inline-flex !important; align-items: center; gap: 0.5rem;
  background: transparent !important; color: #262061 !important;
  border: 1.5px solid rgba(38, 32, 97, 0.25) !important; border-radius: 999px !important;
  padding: 0.62rem 1.25rem !important; font-weight: 700; font-size: 0.88rem; margin-right: 0.6rem;
  transition: border-color 0.2s ease, background 0.2s ease;
}
.navbar .attr-right .attr-nav li.button a.btn-book-nav:hover {
  border-color: #262061 !important; background: rgba(38, 32, 97, 0.05) !important; color: #262061 !important;
}
.navbar .attr-right .attr-nav li.button a.btn-book-nav::after { display: none !important; }
@media (max-width: 991px) { .navbar .attr-right .attr-nav li.button a.btn-book-nav { display: none !important; } }

/* Kill the Visaco theme's default red banner shape behind the logo (navbar-style-one demo decoration) */
.navbar-style-one a.navbar-brand::after { content: none !important; }

/* Keep header / nav-links / apply-button on a single row instead of wrapping to a second line */
.navbar .container-fluid.nav-wide.d-flex { flex-wrap: nowrap !important; }
.navbar .navbar-header { flex: none !important; }
.navbar .navbar-collapse { flex: 1 1 auto !important; min-width: 0; }
.navbar .attr-right { flex: none !important; float: none !important; margin-left: 1rem; }
@media (min-width: 992px) {
  .navbar.navbar-style-one .navbar-nav > li > a { padding-left: 8px !important; padding-right: 8px !important; font-size: 0.83rem !important; }
}
@media (max-width: 1450px) and (min-width: 992px) {
  .navbar .s3-logo { width: 190px !important; }
  .navbar.navbar-style-one .navbar-nav > li > a { padding-left: 6px !important; padding-right: 6px !important; font-size: 0.78rem !important; }
  .navbar .attr-right .attr-nav li.button a.btn-apply-nav { padding: 0.6rem 1.1rem !important; font-size: 0.82rem; }
}
@media (max-width: 991px) {
  .navbar .container-fluid.nav-wide.d-flex { flex-wrap: wrap !important; }
}

/* ------------------------------------ Mega menus ------------------------------------ */
/* Note: on desktop these panels are relocated to a direct child of <body> by JS
   (see public-nav.blade.php) so they escape nav.navbar's backdrop-filter, which
   otherwise creates a new containing block for position:fixed descendants and
   silently breaks top/left math. So these rules must NOT depend on .navbar
   ancestry or DOM nesting under .mega-parent — visibility is driven by the
   .is-open-for class JS toggles, not :hover/.on. */
.mega-menu, .mega-menu * { text-transform: none; letter-spacing: normal; }
@media (min-width: 992px) {
  .navbar .mega-parent { position: static; }
  /* Centred with left/right:0 + margin-inline:auto rather than a translateX, because
     the open animation owns `transform` — using it to position as well made the panel
     jump out of alignment. This keeps it locked to the same centre line as the nav. */
  .mega-menu {
    display: none; position: fixed !important; top: 96px;
    left: 0 !important; right: 0 !important; bottom: auto !important; z-index: 1050;
    margin: 0 auto !important;
    background: #fff; border-top: 3px solid var(--red, #ed1f26); border-radius: 0 0 16px 16px;
    box-shadow: 0 30px 70px rgba(28, 23, 80, 0.18); padding: 1.75rem;
    animation: megaMenuIn 0.22s ease both !important; grid-template-columns: 1fr 300px; gap: 1.75rem;
  }
  @keyframes megaMenuIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
  .mega-menu.is-open-for { display: grid; }
  .mega-wide { width: min(920px, calc(100vw - 3rem)); }
  /* Student Utilities carries far more links than the other menus — go wider and
     spread them over three columns so the panel doesn't run down the viewport. */
  .mega-widest { width: min(1180px, calc(100vw - 3rem)); }
  .mega-narrow { width: min(620px, calc(100vw - 3rem)); }
  .mega-col { display: flex; flex-direction: column; gap: 0.3rem; }
  .mega-col-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.3rem 1rem; align-content: start; }
  .mega-col-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.3rem 0.75rem; align-content: start; }
  .mega-heading { font-size: 0.72rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted, #888); margin: 0 0 0.6rem 0.75rem; }
  .mega-link {
    display: flex; align-items: flex-start; gap: 0.85rem; padding: 0.7rem 0.75rem; border-radius: 10px;
    text-decoration: none; color: var(--ink, #262061); transition: background 0.15s ease, transform 0.15s ease;
  }
  .mega-link:hover { background: #f7f7fb; transform: translateX(2px); }
  .mega-link i { flex: none; width: 2rem; height: 2rem; border-radius: 8px; background: var(--navy, #262061); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 0.85rem; margin-top: 0.1rem; }
  .mega-link strong { display: block; font-size: 0.87rem; font-weight: 700; line-height: 1.3; }
  .mega-link small { display: block; font-size: 0.76rem; color: var(--muted, #888); margin-top: 0.15rem; line-height: 1.4; }
  .mega-cta {
    background: var(--navy, #262061); border-radius: 14px;
    padding: 1.5rem; display: flex; flex-direction: column; color: #fff;
  }
  .mega-cta .eyebrow { color: rgba(255, 255, 255, 0.6); font-size: 0.68rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; margin: 0 0 0.5rem; }
  .mega-cta h4 { color: #fff; font-size: 1.15rem; margin: 0 0 0.6rem; line-height: 1.3; text-transform: none; }
  .mega-cta p { color: rgba(255, 255, 255, 0.72); font-size: 0.83rem; margin: 0 0 1.2rem; line-height: 1.5; text-transform: none; }
  .mega-cta-btn {
    margin-top: auto; display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
    background: var(--red, #ed1f26); color: #fff !important;
    padding: 0.65rem 1.1rem; border-radius: 999px; font-size: 0.8rem; font-weight: 700; text-decoration: none;
    text-transform: none; letter-spacing: normal; transition: transform 0.2s ease, box-shadow 0.2s ease;
  }
  .mega-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 22px -8px rgba(227, 30, 43, 0.6); }
  .mega-cta-links { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 0.9rem; }
  .mega-cta-links a { color: rgba(255, 255, 255, 0.78); font-size: 0.78rem; font-weight: 700; text-decoration: none; transition: color 0.15s ease; }
  .mega-cta-links a:hover { color: #fff; }
  .mega-dest-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.35rem; align-content: start; }
  .mega-dest-card {
    display: flex; align-items: center; gap: 0.6rem; padding: 0.65rem 0.75rem; border-radius: 10px;
    text-decoration: none; color: var(--ink, #262061); font-size: 0.86rem; font-weight: 600;
    transition: background 0.15s ease, transform 0.15s ease;
  }
  .mega-dest-card:hover { background: #f7f7fb; transform: translateX(2px); }
  .mega-dest-flag {
    display: inline-block; flex: none; width: 1.5rem; height: 1.1rem; border-radius: 3px;
    background-size: cover !important; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08) inset;
  }
}
@media (max-width: 991px) {
  .navbar .mega-menu { position: static !important; box-shadow: none !important; border-top: none !important; padding: 0.5rem 0 0.75rem !important; background: transparent !important; grid-template-columns: 1fr !important; width: auto !important; display: none !important; }
  .navbar .mega-parent.mega-open > .mega-menu { display: block !important; }
  .navbar .mega-cta { display: none !important; }
  .navbar .mega-dest-grid { grid-template-columns: 1fr !important; gap: 0 !important; }
  .navbar .mega-col-2, .navbar .mega-col-3 { grid-template-columns: 1fr !important; gap: 0 !important; }
  .navbar .mega-col { gap: 0 !important; }
  .navbar .mega-link, .navbar .mega-dest-card {
    color: inherit !important; padding: 0.65rem 0.5rem !important; border-bottom: 1px solid #ececf2;
    border-radius: 0 !important; text-decoration: none !important; align-items: center !important;
  }
  .navbar .mega-link i {
    background: var(--navy, #262061); flex: none; width: 1.7rem !important; height: 1.7rem !important;
    font-size: 0.72rem !important; border-radius: 6px !important; display: flex !important; align-items: center; justify-content: center;
  }
  .navbar .mega-link span { display: flex !important; flex-direction: column; }
  .navbar .mega-link strong { text-decoration: none; font-size: 0.85rem !important; display: block; }
  .navbar .mega-link small { display: block; margin-top: 0.1rem; font-size: 0.72rem !important; }
  .navbar .mega-heading { display: none; }
  .navbar .mega-dest-flag { display: inline-block; flex: none; width: 1.8rem; height: 1.3rem; border-radius: 3px; background-size: cover !important; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08) inset; }
  .navbar .mega-col { gap: 0 !important; }
}

/* ==========================================================================
   Program Finder
   ========================================================================== */
.ed .pf-intro { padding: clamp(2.5rem, 6vw, 4.5rem) 0 2.5rem; text-align: center; }
.ed .pf-intro h1 { font-size: clamp(2.2rem, 5vw, 3.4rem); margin: 0.4rem 0 0.8rem; }
.ed .pf-search-row { display: flex; gap: 0.75rem; justify-content: center; align-items: stretch; max-width: 640px; margin: 0 auto 1.1rem; }
.ed .pf-search { position: relative; display: flex; align-items: center; flex: 1; }
.ed .pf-search svg { position: absolute; left: 1rem; width: 1.1rem; height: 1.1rem; color: var(--muted); pointer-events: none; }
.ed .pf-search input { width: 100%; padding: 0.85rem 1rem 0.85rem 2.7rem; border: 1px solid var(--line); border-radius: 999px; font-size: 0.95rem; background: var(--surface); color: var(--ink); }
.ed .pf-filters-btn { flex: none; display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.85rem 1.3rem; border: 1px solid var(--ink); border-radius: 999px; background: #fff; color: var(--ink); font-weight: 700; font-size: 0.9rem; cursor: pointer; position: relative; }
.ed .pf-filters-btn svg { width: 1.05rem; height: 1.05rem; }
.ed .pf-filters-btn:hover { background: var(--bg, #f4f2fb); }
.ed .pf-filters-count { position: absolute; top: -0.4rem; right: -0.4rem; width: 1.3rem; height: 1.3rem; border-radius: 50%; background: var(--red); color: #fff; font-size: 0.68rem; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.ed .pf-filters-panel { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; max-width: 760px; margin: 0 auto 1.6rem; padding: 1.1rem; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.ed .pf-filter-group { display: flex; flex-direction: column; gap: 0.3rem; text-align: left; flex: 1 1 150px; min-width: 140px; }
.ed .pf-filter-group label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); }
.ed .pf-filter-group select { padding: 0.55rem 2rem 0.55rem 0.75rem; border: 1px solid var(--line); border-radius: 8px; font-size: 0.86rem; background-color: #fff; color: var(--ink); 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='%23625d78' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.55rem center; background-size: 0.85rem; cursor: pointer; }
.ed .pf-recs-label { font-size: 0.76rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); margin-bottom: 1rem; }
.ed .pf-recs { display: flex; flex-wrap: wrap; gap: 1.8rem; justify-content: center; }
.ed .pf-rec { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; background: none; border: 0; cursor: pointer; color: var(--muted); font-size: 0.78rem; font-weight: 600; }
.ed .pf-rec svg { width: 1.6rem; height: 1.6rem; padding: 0.7rem; box-sizing: content-box; border: 1px solid var(--line); border-radius: 50%; color: var(--muted); transition: all 0.2s ease; }
.ed .pf-rec:hover svg { border-color: var(--red); color: var(--red); transform: translateY(-2px); }
.ed .pf-rec:hover { color: var(--ink); }

.ed .pf-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.ed .pf-card { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--surface); transition: box-shadow 0.25s ease, transform 0.25s ease; }
.ed .pf-card:hover { box-shadow: var(--shadow); transform: translateY(-4px); }
.ed .pf-card-media { position: relative; height: 160px; overflow: hidden; }
.ed .pf-card-media img { width: 100%; height: 100%; object-fit: cover; }
.ed .pf-card-level { position: absolute; top: 0.7rem; left: 0.7rem; padding: 0.28rem 0.65rem; border-radius: 999px; font-size: 0.68rem; font-weight: 800; text-transform: uppercase; background: rgba(255,255,255,0.92); color: var(--ink); }
.ed .pf-compare-toggle { position: absolute; top: 0.6rem; right: 0.6rem; width: 2.1rem; height: 2.1rem; border-radius: 50%; background: rgba(15,12,40,0.55); backdrop-filter: blur(4px); border: 0; color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s ease; }
.ed .pf-compare-toggle:hover { background: rgba(15,12,40,0.8); }
.ed .pf-compare-toggle.is-active { background: var(--red); }
.ed .pf-compare-toggle.is-active svg { transform: rotate(45deg); }
.ed .pf-compare-toggle svg { width: 1.1rem; height: 1.1rem; transition: transform 0.2s ease; }
.ed .pf-card-body { padding: 1.1rem 1.2rem 1.3rem; }
.ed .pf-card-uni { font-size: 0.76rem; color: var(--muted); margin: 0 0 0.3rem; font-weight: 600; }
.ed .pf-card-body h3 { font-size: 1.02rem; margin: 0 0 0.6rem; line-height: 1.3; }
.ed .pf-card-meta { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.9rem; }
.ed .pf-card-meta span { font-size: 0.72rem; padding: 0.22rem 0.55rem; border-radius: 6px; background: var(--bg, #f4f2fb); color: var(--muted); font-weight: 600; }
.ed .pf-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; padding-top: 0.8rem; border-top: 1px solid var(--line); }
.ed .pf-card-foot strong { font-size: 0.92rem; color: var(--navy); }
@media (max-width: 900px) { .ed .pf-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ed .pf-grid { grid-template-columns: 1fr; } .ed .pf-search-row { flex-direction: column; } }

/* ---- Compare tray ---- */
.pf-compare-tray { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; background: #fff; border-top: 1px solid var(--line); box-shadow: 0 -10px 40px rgba(20,16,46,0.12); }
.pf-tray-inner { display: flex; align-items: center; gap: 1.5rem; padding: 1rem 0; flex-wrap: wrap; }
.pf-tray-head { flex: none; min-width: 160px; }
.pf-tray-head strong { display: block; font-size: 1rem; color: var(--ink); }
.pf-tray-head span { display: block; font-size: 0.78rem; color: var(--muted); margin-top: 0.15rem; }
.pf-tray-slots { display: flex; gap: 0.7rem; flex: 1; flex-wrap: wrap; }
.pf-tray-slot { position: relative; width: 3.6rem; height: 3.6rem; border-radius: 50%; border: 2px dashed var(--line); display: flex; align-items: center; justify-content: center; flex: none; }
.pf-tray-slot .pf-slot-num { color: var(--line); font-weight: 800; font-size: 1.1rem; }
.pf-tray-slot.is-filled { border-style: solid; border-color: transparent; overflow: visible; }
.pf-tray-slot img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.pf-tray-slot span { display: none; }
.pf-slot-remove { position: absolute; top: -0.3rem; right: -0.3rem; width: 1.3rem; height: 1.3rem; border-radius: 50%; background: #111; color: #fff; border: 2px solid #fff; font-size: 0.85rem; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.pf-tray-actions { display: flex; gap: 0.6rem; flex: none; }
@media (max-width: 720px) { .pf-tray-inner { justify-content: center; text-align: center; } .pf-tray-actions { width: 100%; justify-content: center; } }

/* ---- Compare modal ---- */
.pf-compare-modal { position: fixed; inset: 0; z-index: 80; background: rgba(15,12,40,0.6); display: flex; align-items: center; justify-content: center; padding: 1.5rem; }
.pf-compare-modal-inner { background: #fff; border-radius: var(--radius); padding: 2rem; max-width: 900px; width: 100%; max-height: 85vh; overflow: auto; position: relative; }
.pf-compare-modal-inner h2 { margin: 0 0 1.2rem; }
.pf-compare-close { position: absolute; top: 1.2rem; right: 1.2rem; width: 2.2rem; height: 2.2rem; border-radius: 50%; border: 1px solid var(--line); background: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.pf-compare-close svg { width: 1.1rem; height: 1.1rem; }
.pf-compare-table-wrap { overflow-x: auto; }
.pf-compare-table { width: 100%; border-collapse: collapse; }
.pf-compare-table td, .pf-compare-table th { padding: 0.75rem 1rem; border-bottom: 1px solid var(--line); text-align: left; font-size: 0.88rem; min-width: 160px; }
.pf-compare-table img { width: 100%; height: 90px; object-fit: cover; border-radius: 8px; }
.pf-compare-table .pf-row-label { font-weight: 700; color: var(--muted); font-size: 0.76rem; text-transform: uppercase; letter-spacing: 0.04em; min-width: 110px; }

/* ==========================================================================
   Event detail page (evd)
   ========================================================================== */
.ed .evd-top { padding: clamp(4.5rem, 7vw, 6.5rem) 0 0; }
.ed .evd-top-split { display: grid; grid-template-columns: 1.3fr 1fr; gap: clamp(2rem, 4vw, 3.5rem); align-items: center; }
@media (max-width: 900px) { .ed .evd-top-split { grid-template-columns: 1fr; } }
.ed .evd-poster { border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); background: var(--surface); align-self: start; }
/* Show the whole flyer/poster — never crop it. contain + auto height keeps the
   full image visible whatever its aspect ratio (portrait posters included). */
.ed .evd-poster img { width: 100%; height: auto; max-height: none; object-fit: contain; display: block; }
.ed .evd-top-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.2rem; }
.ed .evd-badges { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.ed .evd-status { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.85rem; border-radius: 999px; font-size: 0.8rem; font-weight: 700; }
.ed .evd-status i { width: 0.4rem; height: 0.4rem; border-radius: 50%; background: currentColor; display: inline-block; }
.ed .evd-status.is-upcoming { background: rgba(227, 30, 43, 0.09); color: var(--red); }
.ed .evd-status.is-ended { background: rgba(98, 93, 120, 0.12); color: var(--muted); }
.ed .evd-mode { font-size: 0.8rem; font-weight: 600; color: var(--muted); }
.ed .evd-share { width: 2.6rem; height: 2.6rem; border-radius: 50%; border: 1px solid var(--line); background: var(--surface); display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--ink); flex: none; }
.ed .evd-share:hover { border-color: var(--red); color: var(--red); }
.ed .evd-share svg { width: 1.1rem; height: 1.1rem; }
.ed .evd-title { font-size: clamp(2rem, 4.5vw, 3.1rem); line-height: 1.1; max-width: 22ch; margin-bottom: 0.9rem; }
.ed .evd-lede { font-size: 1.05rem; color: var(--muted); max-width: 42rem; margin-bottom: 1.4rem; }
.ed .evd-meta-row { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-bottom: 1.6rem; }
.ed .evd-meta-row span { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.6rem 1rem; border: 1px solid var(--line); border-radius: 10px; font-size: 0.86rem; font-weight: 600; color: var(--ink); background: var(--surface); }
.ed .evd-meta-row svg { width: 1rem; height: 1rem; color: var(--red); flex: none; }
.ed .evd-cta-row { display: flex; align-items: center; gap: 1.3rem; flex-wrap: wrap; margin-bottom: 2rem; }
.ed .evd-cal-link { display: inline-flex; align-items: center; gap: 0.45rem; font-size: 0.88rem; font-weight: 700; color: var(--navy); text-decoration: none; border-bottom: 1px dashed var(--navy); padding-bottom: 0.15rem; }
.ed .evd-cal-link svg { width: 1rem; height: 1rem; }
.ed .evd-countdown { padding: 1.4rem 0 2rem; }
.ed .evd-countdown-label { font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); margin-bottom: 0.8rem; }
.ed .evd-countdown-row { display: flex; gap: 0.7rem; }
.ed .evd-cd-cell { width: 4.6rem; padding: 0.7rem 0; text-align: center; border-radius: 10px; background: var(--navy); box-shadow: var(--shadow-sm); }
.ed .evd-cd-cell:nth-child(even) { background: var(--red); }
.ed .evd-cd-cell strong { display: block; font-family: var(--font-display); font-size: 1.5rem; color: #fff; line-height: 1; }
.ed .evd-cd-cell span { display: block; font-size: 0.68rem; font-weight: 700; text-transform: uppercase; color: rgba(255,255,255,0.75); margin-top: 0.35rem; letter-spacing: 0.04em; }

.ed .evd-tabs { position: sticky; top: var(--header-h, 0); z-index: 20; background: rgba(255,255,255,0.92); backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); margin-bottom: 0; }
.ed .evd-tabs-row { display: flex; gap: 1.8rem; }
.ed .evd-tabs-row a { padding: 1rem 0; font-size: 0.9rem; font-weight: 700; color: var(--muted); text-decoration: none; border-bottom: 2px solid transparent; transition: all 0.2s ease; }
.ed .evd-tabs-row a.is-active, .ed .evd-tabs-row a:hover { color: var(--red); border-bottom-color: var(--red); }
.ed .evd-anchor-offset { display: block; height: 0; margin-top: -6.5rem; padding-top: 6.5rem; visibility: hidden; }

.ed .evd-detail-cards { display: flex; flex-wrap: wrap; gap: 0.9rem; margin: 1.8rem 0; }
.ed .evd-detail-card { display: flex; align-items: center; gap: 0.9rem; padding: 1rem 1.2rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); flex: 1 1 220px; }
.ed .evd-detail-date { flex: none; width: 3.2rem; height: 3.2rem; border-radius: 10px; background: var(--navy); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; font-family: var(--font-display); }
.ed .evd-detail-date strong { font-size: 1.05rem; line-height: 1; }
.ed .evd-detail-date span { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.05em; }
.ed .evd-detail-icon { flex: none; width: 3.2rem; height: 3.2rem; border-radius: 10px; background: rgba(227,30,43,0.08); color: var(--red); display: flex; align-items: center; justify-content: center; }
.ed .evd-detail-icon svg { width: 1.4rem; height: 1.4rem; }
.ed .evd-detail-card > div:last-child { display: flex; flex-direction: column; gap: 0.15rem; }
.ed .evd-detail-card strong { font-size: 0.88rem; color: var(--ink); }
.ed .evd-detail-card span { font-size: 0.82rem; color: var(--muted); }
/* The visaco template sets body{overflow-x:hidden}, which makes the body a scroll
   container and silently disables position:sticky for every descendant. overflow-x:clip
   clips the same horizontal overflow WITHOUT creating a scroll container, so sticky
   asides (event sidebar, service/university sidebars) work again. */
body.ed-body { overflow-x: clip; }
.ed .evd-split-sticky { align-items: start !important; }
/* Sticky booking/registration aside. max-height keeps a long registration form within
   the viewport (it scrolls inside the card) so it still sticks and stays reachable. */
.ed .evd-register { position: sticky; top: calc(var(--header-h, 0px) + 5.5rem); align-self: start; max-height: calc(100vh - var(--header-h, 0px) - 7rem); overflow-y: auto; }
@media (max-width: 900px) { .ed .evd-register { position: static; max-height: none; overflow: visible; } }
@media (max-width: 640px) { .ed .evd-cd-cell { width: 4rem; } .ed .evd-tabs-row { gap: 1.2rem; overflow-x: auto; } }

/* ==========================================================================
   University directory (uvd)
   ========================================================================== */
.ed .uvd-intro { padding: clamp(2.5rem, 6vw, 4rem) 0 2rem; }
.ed .uvd-intro h1 { font-size: clamp(2rem, 4.5vw, 3rem); margin: 0.4rem 0 0.8rem; max-width: 20ch; }
.ed .uvd-intro .lede { max-width: 46rem; margin-bottom: 1.8rem; }
.ed .uvd-search-row { display: flex; gap: 0.75rem; margin-bottom: 1.1rem; flex-wrap: wrap; }
.ed .uvd-search { position: relative; display: flex; align-items: center; flex: 1 1 320px; }
.ed .uvd-search svg { position: absolute; left: 1rem; width: 1.1rem; height: 1.1rem; color: var(--muted); pointer-events: none; }
.ed .uvd-search input { width: 100%; padding: 0.85rem 1rem 0.85rem 2.7rem; border: 1px solid var(--line); border-radius: 999px; font-size: 0.95rem; background: var(--surface); color: var(--ink); }
.ed .uvd-search-row select { flex: 0 1 220px; padding: 0.7rem 2rem 0.7rem 1rem; border: 1px solid var(--line); border-radius: 999px; font-size: 0.88rem; background-color: #fff; color: var(--ink); 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='%23625d78' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.85rem center; background-size: 0.85rem; cursor: pointer; }
.ed .uvd-toolbar-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.ed .uvd-view-toggle { display: inline-flex; gap: 0.3rem; border: 1px solid var(--line); border-radius: 999px; padding: 0.25rem; flex: none; }
.ed .uvd-view-toggle button { width: 2.1rem; height: 2.1rem; border-radius: 999px; border: none; background: transparent; color: var(--muted); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.15s ease; }
.ed .uvd-view-toggle button svg { width: 1rem; height: 1rem; }
.ed .uvd-view-toggle button.is-active { background: var(--navy); color: #fff; }
.ed .uvd-view-toggle button:not(.is-active):hover { color: var(--ink); }
.ed .uvd-tier-pills { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.ed .uvd-pill { padding: 0.5rem 1rem; border-radius: 999px; border: 1px solid var(--line); background: var(--surface); color: var(--muted); font-size: 0.82rem; font-weight: 700; cursor: pointer; transition: all 0.15s ease; }
.ed .uvd-pill:hover { border-color: var(--red); color: var(--ink); }
.ed .uvd-pill.is-active { background: var(--navy); border-color: var(--navy); color: #fff; }

.ed .pin-map-wrap { position: relative; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: #eef0f8; }
.ed .pin-map-svg { display: block; width: 100%; height: auto; aspect-ratio: 784 / 459; }
.ed .pin-map-pin { cursor: pointer; }
.ed .pin-map-pin circle { transition: all 0.2s ease; }
.ed .pin-map-halo { fill: #ed1f26 !important; opacity: 0.35 !important; }
.ed .pin-map-core { fill: #ed1f26 !important; stroke: #262061 !important; stroke-width: 1.5px !important; }
.ed .pin-map-pin:hover .pin-map-halo, .ed .pin-map-pin:focus .pin-map-halo { r: 12 !important; opacity: 0.55 !important; }
.ed .pin-map-pin.is-active .pin-map-halo { r: 14 !important; opacity: 0.65 !important; }
.ed .pin-map-tooltip {
  position: absolute; pointer-events: none; z-index: 10; transform: translate(-50%, -115%);
  background: linear-gradient(135deg, #262061 0%, #262061 55%, #ed1f26 120%) !important;
  color: #ffffff !important; padding: 0.65rem 0.95rem !important; border-radius: 12px !important;
  font-size: 0.85rem !important; font-weight: 800 !important; white-space: nowrap !important;
  border: 1.5px solid rgba(227, 30, 43, 0.5) !important;
  box-shadow: 0 16px 36px -6px rgba(23, 19, 64, 0.45), 0 6px 20px rgba(227, 30, 43, 0.35) !important;
}
.ed .pin-map-tooltip:after {
  content: ""; position: absolute; left: 50%; top: 100%; transform: translateX(-50%);
  border: 6px solid transparent; border-top-color: #262061 !important;
}
.ed .pin-map-tooltip span { display: block; font-weight: 700 !important; color: #ffffff !important; font-size: 0.76rem !important; margin-top: 0.2rem; opacity: 0.92; }

.ed .uvd-list { display: flex; flex-direction: column; gap: 0.7rem; }
.ed .uvd-list--grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.ed .uvd-list--grid .uvd-card { grid-template-columns: 1fr; }
.ed .uvd-list--grid .uvd-card-media { height: 8rem; }
.ed .uvd-list--grid .uvd-why-grid { flex-direction: column; gap: 0.4rem; }
.ed .uvd-list--grid .uvd-card-foot { flex-direction: column; align-items: flex-start; }
.ed .uvd-list--grid .uvd-card-foot .btn { width: 100%; justify-content: center; }
@media (max-width: 900px) { .ed .uvd-list--grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ed .uvd-list--grid { grid-template-columns: 1fr; } }
.ed .uvd-card { display: grid; grid-template-columns: 7.5rem 1fr; gap: 1.1rem; border: 1px solid rgba(23, 19, 64, 0.08); border-radius: 14px; background: #ffffff; padding: 1rem; box-shadow: 0 10px 30px rgba(15, 12, 40, 0.04); transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); }
.ed .uvd-card:hover { box-shadow: 0 20px 45px rgba(23, 19, 64, 0.12); transform: translateY(-4px); border-color: rgba(227, 30, 43, 0.25); }
.ed .uvd-card-media { display: flex; align-items: center; justify-content: center; background: #ffffff; border: 1px solid rgba(23, 19, 64, 0.09); border-radius: 10px; height: 5.2rem; padding: 0.6rem; box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); position: relative; overflow: hidden; }
.ed .uvd-card:nth-child(3n+2) .uvd-card-media { border-color: rgba(227, 30, 43, 0.15); }
.ed .uvd-card:nth-child(3n+3) .uvd-card-media { border-color: rgba(217, 164, 65, 0.2); }
.ed .uvd-card-media img { max-width: 90%; max-height: 85%; object-fit: contain; }
.ed .uvd-fallback { width: 100%; height: 100%; border-radius: 10px; background: linear-gradient(135deg, #262061 0%, #262061 100%); color: #ffffff; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.35rem; font-family: var(--font-display); font-weight: 700; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); }
.ed .uvd-fallback i { font-size: 1.4rem; color: var(--gold-bright, #ed1f26); }
.ed .uvd-fallback span { font-size: 0.85rem; letter-spacing: 0.08em; text-transform: uppercase; color: #ffffff; }
.ed .uvd-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.8rem; }
.ed .uvd-card-head h3 { font-size: 1.02rem; margin: 0; line-height: 1.3; font-family: var(--font-display); font-weight: 700; color: var(--navy); }
.ed .uvd-tier { flex: none; font-size: 0.7rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; padding: 0.35rem 0.85rem; border-radius: 999px; white-space: nowrap; box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.ed .uvd-tier--strategic { background: linear-gradient(135deg, #262061 0%, #262061 100%); color: #ffffff; border: 1px solid rgba(217, 164, 65, 0.3); }
.ed .uvd-tier--preferred { background: linear-gradient(135deg, #ed1f26 0%, #ed1f26 100%); color: #ffffff; }
.ed .uvd-tier--network { background: #f1f5f9; color: #475569; border: 1px solid #cbd5e1; }
.ed .uvd-card-loc { display: flex; align-items: center; gap: 0.35rem; font-size: 0.82rem; color: var(--muted); margin: 0.25rem 0 0.7rem; font-weight: 500; }
.ed .uvd-card-loc svg { width: 0.88rem; height: 0.88rem; color: var(--red); flex: none; }
.ed .uvd-why { background: var(--navy); border-radius: 10px; padding: 0.7rem 0.9rem; margin-bottom: 0.75rem; border-left: 3px solid var(--gold-bright, #ed1f26); }
.ed .uvd-why-label { font-size: 0.68rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--gold-bright, #ed1f26); margin: 0 0 0.4rem; display: flex; align-items: center; gap: 0.3rem; }
.ed .uvd-why-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0.3rem 1rem; }
.ed .uvd-why-grid span { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; color: rgba(255,255,255,0.92); font-weight: 600; line-height: 1.3; }
.ed .uvd-why-grid svg { width: 0.85rem; height: 0.85rem; color: #4ade80; flex: none; }
.ed .uvd-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-top: 0.7rem; border-top: 1px solid rgba(23, 19, 64, 0.08); flex-wrap: wrap; }
.ed .uvd-fee-label { display: block; font-size: 0.72rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; font-weight: 700; }
.ed .uvd-card-foot strong { display: block; font-size: 0.98rem; color: var(--navy); margin-top: 0.1rem; font-family: var(--font-display); font-weight: 800; }
.ed .uvd-loadmore-wrap { text-align: center; margin-top: 2rem; }
.ed .uvd-loadmore-wrap p { margin-top: 0.7rem; font-size: 0.84rem; color: var(--muted); }
@media (max-width: 640px) { .ed .uvd-card { grid-template-columns: 1fr; } .ed .uvd-card-media { height: 5rem; } .ed .uvd-search-row select { flex: 1 1 100%; } }

/* ==========================================================================
   Match widget (global floating quiz — deliberately NOT .ed-scoped, lives
   outside the .ed wrapper at the body level like the footer).
   ========================================================================== */
.mw-launcher { position: fixed; right: 1.5rem; bottom: 1.5rem; z-index: 90; font-family: var(--font-body, 'Plus Jakarta Sans', sans-serif); }
.mw-launcher-btn { display: inline-flex; align-items: center; gap: 0.6rem; padding: 0.95rem 1.4rem; border-radius: 999px; border: none; background: var(--navy, #262061); color: #fff; font-weight: 700; font-size: 0.9rem; cursor: pointer; box-shadow: 0 16px 40px -12px rgba(38, 33, 99, 0.55); transition: transform 0.2s ease, box-shadow 0.2s ease; }
.mw-launcher-btn:hover { transform: translateY(-3px); box-shadow: 0 20px 48px -12px rgba(38, 33, 99, 0.6); }
.mw-launcher-btn svg { width: 1.15rem; height: 1.15rem; color: var(--gold-bright, #ed1f26); flex: none; }

.mw-backdrop { position: fixed; inset: 0; z-index: 91; background: rgba(15, 12, 40, 0.6); backdrop-filter: blur(2px); animation: mwBackdropIn 0.2s ease; }
@keyframes mwBackdropIn { from { opacity: 0; } to { opacity: 1; } }
.mw-panel {
  position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 92;
  width: min(26rem, calc(100vw - 2rem)); max-height: min(40rem, calc(100vh - 3rem));
  background: #fff; border-radius: 20px; box-shadow: 0 40px 100px -20px rgba(15, 12, 40, 0.55);
  display: flex; flex-direction: column; overflow: hidden; animation: mwPanelIn 0.25s cubic-bezier(.2,.8,.2,1);
}
@keyframes mwPanelIn { from { opacity: 0; transform: translate(-50%, -46%) scale(0.97); } to { opacity: 1; transform: translate(-50%, -50%) scale(1); } }
@media (max-width: 480px) { .mw-panel { width: calc(100vw - 1.5rem); } }
.mw-head { display: flex; align-items: center; gap: 0.8rem; padding: 1.2rem 1.3rem; background: var(--navy, #262061); color: #fff; flex: none; }
.mw-head-avatar { width: 2.4rem; height: 2.4rem; border-radius: 50%; background: var(--red, #ed1f26); display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 0.8rem; flex: none; }
.mw-head-copy { flex: 1; min-width: 0; }
.mw-head-copy strong { display: block; font-size: 0.95rem; }
.mw-head-copy span { display: block; font-size: 0.76rem; color: rgba(255,255,255,0.72); margin-top: 0.15rem; }
.mw-close { flex: none; width: 1.9rem; height: 1.9rem; border-radius: 50%; border: none; background: rgba(255,255,255,0.14); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.mw-close svg { width: 0.9rem; height: 0.9rem; }
.mw-progress { height: 3px; background: rgba(38,33,99,0.1); flex: none; }
.mw-progress-bar { height: 100%; background: var(--red, #ed1f26); width: 0; transition: width 0.3s ease; }
.mw-body { padding: 1.5rem 1.3rem; overflow-y: auto; flex: 1; }
.mw-step { display: none; }
.mw-step.is-active { display: block; animation: mwFadeIn 0.25s ease; }
@keyframes mwFadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.mw-intro-icon { width: 3.4rem; height: 3.4rem; border-radius: 50%; background: rgba(227,30,43,0.09); color: var(--red, #ed1f26); display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; }
.mw-intro-icon svg { width: 1.6rem; height: 1.6rem; }
.mw-step[data-step="0"] { text-align: center; }
.mw-step[data-step="0"] h3 { font-size: 1.2rem; margin: 0 0 0.6rem; color: var(--ink, #262061); font-family: var(--font-display, serif); }
.mw-step[data-step="0"] p { font-size: 0.88rem; color: var(--muted, #625d78); line-height: 1.55; margin: 0 0 1.3rem; }
.mw-noaccount { font-size: 0.76rem; color: var(--muted, #625d78); margin-top: 0.8rem !important; }
.mw-label { display: block; font-size: 1rem; font-weight: 700; color: var(--ink, #262061); margin-bottom: 1rem; }
.mw-input { width: 100%; padding: 0.8rem 1rem; border: 1px solid var(--line, #e5e2f0); border-radius: 999px; font-size: 0.92rem; margin-bottom: 1rem; }
.mw-full { width: 100%; justify-content: center; }
.mw-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.85rem 1.4rem; border-radius: 999px; border: none; font-weight: 700; font-size: 0.9rem;
  cursor: pointer; text-decoration: none; transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}
.mw-btn:hover { transform: translateY(-2px); }
.mw-btn-primary { background: var(--red, #ed1f26); color: #fff; box-shadow: 0 14px 28px -14px rgba(227, 30, 43, 0.55); }
.mw-btn-primary:hover { background: var(--red-deep, #b3121c); }
.mw-btn-ghost { background: #fff; color: var(--ink, #262061); border: 1px solid var(--line, #e5e2f0); }
.mw-btn-ghost:hover { border-color: var(--navy, #262061); }
.mw-choice-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; margin-bottom: 0.9rem; }
.mw-choice-grid.mw-choice-grid--dest { grid-template-columns: 1fr; }
.mw-choice { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; padding: 1.1rem 0.6rem; border: 1px solid var(--line, #e5e2f0); border-radius: 14px; background: #fff; cursor: pointer; font-size: 0.82rem; font-weight: 700; color: var(--ink, #262061); transition: all 0.15s ease; text-align: center; }
.mw-choice:hover { border-color: var(--red, #ed1f26); background: rgba(227,30,43,0.04); }
.mw-choice svg { width: 1.4rem; height: 1.4rem; color: var(--navy, #262061); }
.mw-choice--dest { flex-direction: row; justify-content: flex-start; padding: 0.8rem 0.9rem; }
.mw-dest-count { flex: none; width: 1.8rem; height: 1.8rem; border-radius: 50%; background: var(--surface-sunk, #f1eff8); color: var(--navy, #262061); display: flex; align-items: center; justify-content: center; font-size: 0.72rem; }
.mw-skip { display: block; width: 100%; text-align: center; background: none; border: none; color: var(--muted, #625d78); font-size: 0.82rem; font-weight: 600; cursor: pointer; padding: 0.5rem; text-decoration: underline; text-underline-offset: 3px; }
.mw-skip--inline { grid-column: 1 / -1; margin-top: -0.3rem; }
.mw-results h3 { font-size: 1.1rem; margin: 0 0 0.6rem; color: var(--ink, #262061); font-family: var(--font-display, serif); }
.mw-results p { font-size: 0.88rem; color: var(--muted, #625d78); line-height: 1.6; margin: 0 0 1rem; }
.mw-result-dest { display: flex; align-items: center; gap: 0.8rem; padding: 0.9rem 1rem; border-radius: 14px; background: var(--surface-sunk, #f1eff8); }
.mw-dest-flag { font-size: 1.6rem; line-height: 1; }
.mw-result-dest strong { display: block; font-size: 0.92rem; color: var(--ink, #262061); }
.mw-result-dest span { display: block; font-size: 0.78rem; color: var(--muted, #625d78); margin-top: 0.15rem; }
.mw-result-grid { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.mw-result-chip { font-size: 0.78rem; font-weight: 700; padding: 0.4rem 0.7rem; border-radius: 999px; background: var(--surface-sunk, #f1eff8); color: var(--ink, #262061); }
.mw-lead-form { border-top: 1px solid var(--line, #e5e2f0); margin-top: 1.2rem; padding-top: 0.2rem; }
.mw-submitted { font-size: 0.85rem; color: #1f9d63; font-weight: 700; text-align: center; margin-top: 0.8rem; }
.mw-browse-link { display: block; text-align: center; font-size: 0.84rem; font-weight: 700; color: var(--navy, #262061); text-decoration: none; margin-top: 1rem; }
.mw-restart { display: block; width: 100%; text-align: center; background: none; border: none; color: var(--muted, #625d78); font-size: 0.78rem; cursor: pointer; padding: 0.8rem 0 0; }
@media (max-width: 480px) { .mw-launcher, .mw-panel { right: 0.8rem; bottom: 0.8rem; } .mw-launcher-btn span { display: none; } .mw-launcher-btn { padding: 0.9rem; } }

/* ==========================================================================
   Destination page university sidebar filter (uvd-sidebar / uvd-layout)
   ========================================================================== */
.ed .uvd-layout { display: grid; grid-template-columns: 260px 1fr; gap: 2rem; align-items: start; }
.ed .uvd-sidebar { position: sticky; top: 1.5rem; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--surface); }
.ed .uvd-sidebar-head { display: flex; align-items: center; justify-content: space-between; padding: 0.9rem 1.1rem; background: var(--navy); border-bottom: 3px solid var(--red); font-weight: 700; font-size: 0.9rem; }
.ed .uvd-sidebar-head span { display: flex; align-items: center; gap: 0.5rem; color: #fff; }
.ed .uvd-sidebar-head span svg { width: 1rem; height: 1rem; }
.ed .uvd-sidebar-head button { background: none; border: none; color: #fff; font-weight: 700; font-size: 0.82rem; cursor: pointer; text-decoration: underline; }
.ed .uvd-filter-group { padding: 1rem 1.1rem; border-bottom: 1px solid var(--line); }
.ed .uvd-filter-group:last-child { border-bottom: none; }
.ed .uvd-filter-title { font-size: 0.86rem; font-weight: 700; color: var(--ink); margin: 0 0 0.7rem; }
.ed .uvd-radio { display: flex; align-items: center; gap: 0.6rem; padding: 0.4rem 0; cursor: pointer; font-size: 0.86rem; color: var(--ink); }
.ed .uvd-radio input { accent-color: var(--navy); width: 1rem; height: 1rem; flex: none; }
.ed .uvd-radio input:disabled { opacity: 0.7; }
.ed .uvd-radio span { flex: 1; }
.ed .uvd-radio em { font-style: normal; font-size: 0.8rem; font-weight: 700; color: var(--navy); }
.ed .uvd-filter-more { margin-top: 0.5rem; }
.ed .uvd-filter-more summary { font-size: 0.82rem; font-weight: 700; color: var(--red); cursor: pointer; list-style: none; }
.ed .uvd-filter-more summary::-webkit-details-marker { display: none; }
.ed .uvd-filter-more[open] summary { margin-bottom: 0.5rem; }
.ed .uvd-filter-other { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.4rem 0.2rem; text-decoration: none; color: var(--ink); font-size: 0.84rem; border-radius: 6px; }
.ed .uvd-filter-other:hover { background: rgba(38, 33, 99, 0.05); }
.ed .uvd-filter-other em { font-style: normal; color: var(--muted); font-size: 0.78rem; }
@media (max-width: 900px) {
  .ed .uvd-layout { grid-template-columns: 1fr; }
  .ed .uvd-sidebar { position: static; }
  .ed .uvd-filter-more:not([open]) .uvd-filter-other { display: none; }
}

/* ==========================================================================
   Office map — real per-office pins on the same world-map geometry as the
   homepage study map. Flat brand colors only, no gradients.
   ========================================================================== */
.ed .office-map-section { padding: clamp(3rem, 6vw, 4.5rem) 0; }
.ed-footer .office-map-section--footer { position:relative; overflow:hidden; background-color:#100d2b; background-image:radial-gradient(rgba(255,255,255,.1) 1px,transparent 1px); background-size:24px 24px; color:#ffffff; padding:clamp(4rem,7vw,6rem) 0; }
.ed-footer .office-map-section--footer:before { content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 65% 48%,rgba(79,70,229,.18),transparent 55%); }
.ed-footer .office-map-section--footer > .wrap { position:relative; z-index:1; }
.ed-footer .office-map-section--footer .sec-head { max-width:900px; margin-bottom:clamp(2.5rem,5vw,4rem); text-align:center; }
.ed-footer .office-map-section--footer .sec-head h2 { color:#ffffff; font-family:var(--font-display, 'Afacad', sans-serif); font-size:clamp(28px,4vw,42px); font-weight:800; }
.ed-footer .office-map-section--footer .sec-head .lede { color:#cbd5e1; font-size:1.05rem; font-weight:400; max-width:680px; margin:0 auto; line-height:1.6; }
.ed .office-map-layout { display:grid; grid-template-columns:minmax(340px,440px) minmax(0,1fr); grid-template-areas:"card map"; gap:clamp(2rem,4vw,3.5rem); align-items:stretch; width:100%; }
.ed .office-map-layout > * { min-width:0; }
.ed .office-map-frame { grid-area:map; position:relative; border:1px solid rgba(255,255,255,.16); border-radius:22px; overflow:hidden; height:440px; min-height:0; background:#262061; box-shadow:0 25px 60px -20px rgba(0,0,0,.6); }
.ed .office-map-svg .world-map-countries path,
.ed-footer .world-map-countries path { fill:#3b3386; stroke:#5b52b8; stroke-width:.55; transition:fill .3s ease; }
.ed .office-map-svg { display:block; width:100%; height:440px; min-height:0; border-radius:22px; overflow:hidden; }
.ed .office-map-svg > rect { fill:transparent; }
.ed .office-map-pin { cursor: pointer; }
.ed .office-map-pin circle { transition: r 0.15s ease, opacity 0.15s ease; transform-box: fill-box; transform-origin: center; }
.ed .office-map-pin .omp-halo { animation: officePinPulseAmbient 3.2s ease-out infinite; }
.ed .office-map-pin:nth-child(3n+1) .omp-halo { animation-delay: -0.6s; }
.ed .office-map-pin:nth-child(3n+2) .omp-halo { animation-delay: -1.8s; }
.ed .office-map-pin:hover circle, .ed .office-map-pin:focus circle { transform: scale(1.35); }
.ed .office-map-pin:hover .omp-halo, .ed .office-map-pin:focus .omp-halo, .ed .office-map-pin.is-active .omp-halo { r: 11; opacity: 0.3; animation: none; transform: none; }
.ed .office-map-pin.is-active .omp-dot { r: 4; }
.ed .office-map-pin.is-slide-active .omp-dot { r:4.5; fill:#ed1f26; }
.ed .office-map-pin.is-slide-active .omp-halo { opacity:.42; animation:officePinPulse 1.8s ease-out infinite; }
@keyframes officePinPulse {
  0% { r:5; opacity:.55; }
  70%,100% { r:14; opacity:0; }
}
@keyframes officePinPulseAmbient {
  0%, 60% { opacity: 0.16; }
  80% { opacity: 0.32; }
  100% { opacity: 0.16; }
}
@media (prefers-reduced-motion:reduce) {
  .ed .office-map-pin.is-slide-active .omp-halo { animation:none; r:10; opacity:.34; }
  .ed .office-map-pin .omp-halo { animation:none; }
}
.ed .office-map-tooltip { position:absolute; pointer-events:none; z-index:20; transform:translate(-50%,calc(-100% - 10px)); display:inline-flex; align-items:center; gap:.5rem; background:#ffffff; color:#171340; padding:.6rem .95rem; border-radius:999px; font-size:.78rem; font-weight:800; white-space:nowrap; box-shadow:0 14px 35px -10px rgba(0,0,0,.65); opacity:0; visibility:hidden; transition:opacity .15s ease,transform .15s ease; }
.ed .office-map-tooltip.is-visible { opacity: 1; visibility: visible; transform:translate(-50%,calc(-100% - 7px)); }
.ed .office-map-tooltip > i { display:grid; place-items:center; width:22px; height:22px; border-radius:50%; background:#ed1f26; color:#ffffff; font-size:.65rem; }
.ed .office-map-tooltip:after { content:""; position:absolute; left:50%; top:100%; transform:translateX(-50%); border:6px solid transparent; border-top-color:#ffffff; }
.ed .omt-eyebrow { margin: 0; font-size: 0.68rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.05em; color: #ed1f26; }
.ed .omt-eyebrow + h4 { margin: 0.15rem 0 0.3rem; font-size: 0.95rem; }
.ed .office-map-tooltip h4 { color: #fff; }
.ed .omt-address { margin: 0 0 0.5rem; color: rgba(255,255,255,0.75); line-height: 1.4; }
.ed .omt-contacts { display: flex; flex-direction: column; gap: 0.3rem; }
.ed .omt-contact { display: flex; align-items: center; gap: 0.4rem; color: #fff; text-decoration: none; font-weight: 600; pointer-events: auto; }
.ed .omt-contact i { width: 0.9rem; color: var(--red); }
.ed .office-map-connector { display: none !important; }
.ed .office-carousel { position:relative; grid-area:card; height:440px; min-width:0; display:grid; grid-template-rows:auto 1fr auto; padding:1.2rem; border:1px solid rgba(255,255,255,.2); border-radius:22px; background:rgba(255, 255, 255, 0.08); backdrop-filter:blur(20px) saturate(160%); -webkit-backdrop-filter:blur(20px) saturate(160%); box-shadow:0 25px 60px rgba(0,0,0,.5); overflow:hidden; transition:box-shadow .3s ease, border-color .3s ease; }
.ed .office-carousel:before { content:""; position:absolute; inset:-1px; z-index:0; pointer-events:none; border-radius:inherit; padding:1px; background:linear-gradient(135deg, rgba(237,31,38,.55), transparent 40%, transparent 60%, rgba(255,255,255,.2)); -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite:xor; mask-composite:exclude; opacity:.85; }
.ed .office-carousel:hover { border-color:rgba(255,255,255,.32); box-shadow:0 30px 70px rgba(0,0,0,.6); }
.ed .office-carousel > * { position:relative; z-index:1; }
.ed .office-carousel-label { display:flex; justify-content:space-between; align-items:center; padding-bottom:.7rem; border-bottom:1px solid rgba(255,255,255,.14); color:#94a3b8; font-size:.72rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; margin-bottom:.4rem; }
.ed .office-carousel-label b { color:#ffffff; font-weight:900; }
.ed .office-cards-grid { position:relative; min-width:0; overflow:hidden; border-radius:14px; }
.ed .office-map-card { position:absolute; inset:0; overflow-wrap:anywhere; border:0; border-radius:14px; background:transparent; padding:.8rem .4rem; opacity:0; visibility:hidden; transform:translateY(18px); transition:opacity .42s ease,transform .42s ease,visibility .42s; }
.ed .office-map-card.is-current { opacity:1; visibility:visible; transform:translateY(0); }
.ed .office-card-heading { display:flex; align-items:center; gap:1rem; margin-bottom:1.1rem; }
.ed .office-country-mark { display:grid; place-items:center; flex:0 0 46px; width:46px; height:46px; border:2px solid #ffffff; border-radius:50%; background-size:cover; color:#ffffff; font-size:.6rem; font-weight:900; box-shadow:0 4px 14px rgba(0,0,0,.4); }
.ed .office-card-heading strong { display:block; color:#ffffff; font-family:var(--font-display, 'Afacad', sans-serif); font-size:1.25rem; font-weight:800; line-height:1.2; }
.ed .office-card-heading small { display:block; margin-top:.2rem; color:rgba(255,255,255,.6); font-size:.85rem; font-weight:700; }
.ed .office-card-benefits { display:flex; flex-direction:column; gap:.75rem; margin:0 0 1.2rem!important; padding:0!important; }
.ed .office-card-benefits li { display:grid; grid-template-columns:24px 1fr; gap:.65rem; align-items:start; color:#f1f5f9; font-size:.88rem; font-weight:500; line-height:1.45; }
.ed .office-card-benefits li i { display:grid; place-items:center; width:20px; height:20px; margin-top:.1rem; border-radius:50%; background:#ed1f26; color:#ffffff; font-size:.58rem; box-shadow:0 2px 8px rgba(237,31,38,0.4); }
.ed .office-card-benefits a { color:#ffffff; font-weight:600; text-decoration:none; }
.ed .office-card-benefits a:hover { color:#ed1f26; text-decoration:underline; }
.ed .office-card-cta { display:inline-flex; align-items:center; justify-content:center; gap:.6rem; padding:.8rem 1.4rem; border-radius:999px; background:#ed1f26; color:#ffffff!important; font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; text-decoration:none!important; box-shadow:0 4px 16px rgba(237,31,38,0.4); transition:all .25s ease; }
.ed .office-card-cta:hover { background:#ffffff; color:#171340!important; transform:translateY(-2px); box-shadow:0 8px 24px rgba(255,255,255,0.3); }
.ed .office-map-card.is-active { border-color: var(--navy); box-shadow: var(--shadow); }
.ed .office-map-card h5 { margin:0 0 1rem; font-size:clamp(1.15rem,2vw,1.5rem); color:#fff; }
.ed .office-map-card p { margin:0 0 .65rem; font-size:.85rem; color:rgba(255,255,255,.65); line-height:1.65; }
.ed .office-map-card p:last-child { margin-bottom: 0; }
.ed .office-map-card p a { color:#fff; text-decoration:none; }
.ed .office-map-card p a:hover { color: var(--red); text-decoration: underline; }
.ed .office-map-card p strong { color:#fff; }
.ed .office-carousel-footer { display:grid; grid-template-columns:1fr 40px 40px; gap:.6rem; align-items:center; padding-top:.8rem; border-top:1px solid rgba(255,255,255,.14); }
.ed .office-carousel-progress { height:3px; border-radius:999px; overflow:hidden; background:rgba(255,255,255,.16); }
.ed .office-carousel-progress span { display:block; width:0; height:100%; background:#ed1f26; transition:width .35s ease; }
.ed .office-carousel-footer button { width:40px; height:40px; border:1px solid rgba(255,255,255,.25); border-radius:50%; background:rgba(255,255,255,.06); color:#ffffff; cursor:pointer; font-size:.9rem; transition:all .2s ease; display:grid; place-items:center; }
.ed .office-carousel-footer button:hover { background:#ed1f26; border-color:#ed1f26; transform:scale(1.08); }
@media (max-width:900px) { .ed .office-map-layout { grid-template-columns:1fr; grid-template-areas:"map" "card"; } .ed .office-map-frame,.ed .office-map-svg { height:380px; } .ed .office-carousel { height:390px; } }
@media (max-width:560px) { .ed .office-map-frame,.ed .office-map-svg { height:300px; } .ed .office-carousel { height:390px; } }

/* About page — image-led story */
.ed .about-story-media { position:relative; padding:0 3.5rem 3.5rem 0; }
.ed .about-story-main { width:100% !important; height:auto !important; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius); display:block; }
.ed .about-story-inset { position:absolute !important; right:0 !important; bottom:0 !important; width:48% !important; height:auto !important; aspect-ratio:4/5; object-fit:cover; border:6px solid #fff; border-radius:var(--radius); box-shadow:0 20px 45px rgba(12, 10, 34, 0.22); z-index:2; }
.ed .about-story-media .badge-overlap { left:1.25rem; right:auto; bottom:-1rem; z-index:3; }
.ed .about-journey { padding:clamp(4rem,8vw,7rem) 0; background:var(--navy-black,#100e29); color:rgba(255,255,255,.7); }
.ed .about-journey > .wrap { display:grid; grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr); gap:clamp(2.5rem,6vw,6rem); align-items:center; }
.ed .about-journey-copy { position:sticky; top:8rem; }
.ed .about-journey h2 { color:#fff; font-size:clamp(2rem,4vw,3.25rem); margin-bottom:1.25rem; }
.ed .about-journey-copy > p:not(.eyebrow) { font-size:1.03rem; line-height:1.8; margin-bottom:1.75rem; }
.ed .about-journey .link-arrow { color:#fff; }
.ed .about-journey-gallery { display:grid; grid-template-columns:repeat(2,1fr); gap:1rem; }
.ed .about-photo { position:relative; overflow:hidden; min-height:290px; border-radius:var(--radius-sm); margin:0; }
.ed .about-photo--wide { grid-column:1/-1; min-height:360px; }
.ed .about-photo img { width:100%; height:100%; object-fit:cover; position:absolute; inset:0; transition:transform .6s ease; }
.ed .about-photo:hover img { transform:scale(1.035); }
.ed .about-photo:after { content:""; position:absolute; inset:35% 0 0; background:linear-gradient(transparent,rgba(8,6,28,.82)); }
.ed .about-photo figcaption { position:absolute; z-index:1; left:1.25rem; bottom:1.1rem; color:#fff; font-weight:700; }
.ed .about-photo figcaption span { color:var(--red); font-size:.72rem; letter-spacing:.1em; margin-right:.55rem; }
.ed .about-impact { position:relative; min-height:580px; display:flex; align-items:center; overflow:hidden; }
.ed .about-impact-bg,.ed .about-impact-overlay { position:absolute; inset:0; width:100%; height:100%; }
.ed .about-impact-bg { object-fit:cover; object-position:center 42%; }
.ed .about-impact-overlay { background:linear-gradient(90deg,rgba(13,11,36,.96) 0%,rgba(13,11,36,.82) 48%,rgba(13,11,36,.18) 100%); }
.ed .about-impact-inner { position:relative; z-index:1; width:100%; color:rgba(255,255,255,.72); }
.ed .about-impact-inner > h2 { color:#fff; max-width:650px; font-size:clamp(2.1rem,4.5vw,3.6rem); }
.ed .about-impact-inner > p:not(.eyebrow) { max-width:600px; line-height:1.8; font-size:1.02rem; }
.ed .about-impact-stats { display:flex; flex-wrap:wrap; gap:clamp(2rem,5vw,4.5rem); margin-top:2.5rem; }
.ed .about-impact-stats strong { display:block; color:#fff; font-family:var(--font-display); font-size:clamp(2rem,4vw,3.25rem); line-height:1; }
.ed .about-impact-stats span { display:block; margin-top:.45rem; font-size:.76rem; text-transform:uppercase; letter-spacing:.08em; }
@media (max-width:900px) {
  .ed .about-journey > .wrap { grid-template-columns:1fr; }
  .ed .about-journey-copy { position:static; max-width:680px; }
}
@media (max-width:600px) {
  .ed .about-story-media { padding:0 2rem 3rem 0; }
  .ed .about-story-inset { width:52% !important; border-width:4px; }
  .ed .about-journey-gallery { grid-template-columns:1fr; }
  .ed .about-photo--wide { grid-column:auto; min-height:280px; }
  .ed .about-photo { min-height:260px; }
  .ed .about-impact { min-height:650px; align-items:flex-end; padding-bottom:3.5rem; }
  .ed .about-impact-overlay { background:linear-gradient(0deg,rgba(13,11,36,.98) 0%,rgba(13,11,36,.78) 68%,rgba(13,11,36,.25) 100%); }
}
.ed .hero-float-card, .ed .hero-float-card *, .ed .hero-float-card span, .ed .hero-float-card strong { color: #262061 !important; }
.ed .hero-float-card strong { font-weight: 800 !important; color: #262061 !important; }
.ed .hero-float-card span { color: #262061 !important; }
.ed .hero-float-card i { color: #ed1f26 !important; }

/* ── Dotted globe (office network) ────────────────────────────────── */
.ed .office-globe { position: relative; width: 100%; height: 100%; display: grid; place-items: center; }
.ed .office-globe canvas { display: block; }
.ed .office-globe .og-pin-layer { position: absolute; inset: 0; pointer-events: none; }
/* Pins are absolutely placed from the projection each frame; the translate keeps
   the element centred on its own coordinate. */
.ed .office-globe .office-map-pin {
  position: absolute; transform: translate(-50%, -50%);
  width: 18px; height: 18px; padding: 0; border: 0; background: none;
  cursor: pointer; pointer-events: auto; display: grid; place-items: center;
}
.ed .office-globe .omp-halo {
  position: absolute; width: 18px; height: 18px; border-radius: 50%;
  background: var(--red, #ed1f26); opacity: .28;
}
.ed .office-globe .omp-dot {
  position: relative; width: 8px; height: 8px; border-radius: 50%;
  background: var(--red, #ed1f26); box-shadow: 0 0 0 1.5px #fff;
}
.ed .office-globe .office-map-pin:hover .omp-dot,
.ed .office-globe .office-map-pin.is-slide-active .omp-dot { width: 11px; height: 11px; }
.ed .office-globe .office-map-pin.is-slide-active .omp-halo { opacity: .5; animation: ogPulse 1.8s ease-out infinite; }
@keyframes ogPulse { 0% { transform: scale(.6); opacity: .55; } 100% { transform: scale(1.5); opacity: 0; } }
.ed .office-globe .office-map-pin:focus-visible { outline: 2px solid #fff; outline-offset: 3px; border-radius: 50%; }
@media (prefers-reduced-motion: reduce) { .ed .office-globe .omp-halo { animation: none !important; } }

/* ── Our Locations ────────────────────────────────────────────────── */
.ed .loc-toolbar { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; margin-bottom: 1.2rem; }
.ed .loc-search { position: relative; flex: 1 1 320px; }
.ed .loc-search i { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); color: var(--muted, #64748b); }
.ed .loc-search input { width: 100%; padding: .95rem 1rem .95rem 2.7rem; border: 1.5px solid var(--line, #e2e8f0); border-radius: 999px; font: inherit; font-size: .95rem; background: #fff; }
.ed .loc-search input:focus { outline: none; border-color: var(--red, #ed1f26); box-shadow: 0 0 0 3px rgba(237,31,38,.12); }
.ed .loc-near { display: inline-flex; align-items: center; gap: .5rem; white-space: nowrap; }
.ed .loc-status { min-height: 1.4rem; margin: 0 0 1rem; font-size: .88rem; font-weight: 600; color: var(--navy, #262061); }

.ed .loc-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.8rem; }
.ed .loc-chip { display: inline-flex; align-items: center; gap: .45rem; padding: .5rem .9rem; border: 1.5px solid var(--line, #e2e8f0); border-radius: 999px; background: #fff; font: inherit; font-size: .84rem; font-weight: 700; color: var(--navy, #262061); cursor: pointer; transition: border-color .15s ease, background .15s ease, color .15s ease; }
.ed .loc-chip img { width: 18px; height: 13px; object-fit: cover; border-radius: 2px; }
.ed .loc-chip span { color: var(--muted, #94a3b8); font-weight: 600; }
.ed .loc-chip:hover { border-color: var(--navy, #262061); }
.ed .loc-chip.is-active { background: var(--navy, #262061); border-color: var(--navy, #262061); color: #fff; }
.ed .loc-chip.is-active span { color: rgba(255,255,255,.65); }

.ed .loc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.2rem; }
.ed .loc-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line, #e6e8f0); border-radius: 16px; padding: 1.4rem; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.ed .loc-card[hidden] { display: none; }
.ed .loc-card:hover { transform: translateY(-3px); box-shadow: 0 16px 34px rgba(16,14,41,.09); }
.ed .loc-card.is-nearest { border-color: var(--red, #ed1f26); box-shadow: 0 0 0 3px rgba(237,31,38,.12); }
.ed .loc-card-head { display: flex; align-items: flex-start; gap: .8rem; margin-bottom: 1rem; }
.ed .loc-flag { flex: 0 0 38px; width: 38px; height: 28px; border-radius: 5px; overflow: hidden; box-shadow: 0 0 0 1px rgba(0,0,0,.08); }
.ed .loc-flag img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ed .loc-card-head h3 { margin: 0; font-size: 1.02rem; color: var(--navy, #262061); line-height: 1.25; }
.ed .loc-card-head p { margin: .15rem 0 0; font-size: .84rem; color: var(--muted, #64748b); }
.ed .loc-distance { margin-left: auto; padding: .2rem .55rem; border-radius: 999px; background: #fdeaec; color: var(--red, #ed1f26); font-size: .72rem; font-weight: 800; white-space: nowrap; }

.ed .loc-details { list-style: none; margin: 0 0 1.2rem; padding: 0; display: flex; flex-direction: column; gap: .55rem; flex: 1; }
.ed .loc-details li { display: flex; gap: .6rem; font-size: .86rem; color: var(--muted, #4e5265); line-height: 1.5; }
.ed .loc-details i { color: var(--red, #ed1f26); width: 16px; flex: none; margin-top: .18rem; }
.ed .loc-details a { color: var(--navy, #262061); font-weight: 600; text-decoration: none; word-break: break-word; }
.ed .loc-details a:hover { text-decoration: underline; }

.ed .loc-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.ed .loc-btn { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem .9rem; border: 1.5px solid var(--line, #e2e8f0); border-radius: 999px; background: #fff; font: inherit; font-size: .8rem; font-weight: 700; color: var(--navy, #262061); text-decoration: none; cursor: pointer; transition: background .15s ease, color .15s ease, border-color .15s ease; }
.ed .loc-btn:hover { background: var(--navy, #262061); border-color: var(--navy, #262061); color: #fff; }
.ed .loc-btn--primary { background: var(--red, #ed1f26); border-color: var(--red, #ed1f26); color: #fff; }
.ed .loc-btn--primary:hover { background: var(--navy, #262061); border-color: var(--navy, #262061); }
.ed .loc-empty { margin: 2rem 0 0; text-align: center; color: var(--muted, #64748b); }
@media (max-width: 600px) { .ed .loc-grid { grid-template-columns: 1fr; } }

/* Locations map */
.ed .loc-map-wrap { margin: 0 0 1.8rem; border-radius: 16px; overflow: hidden; border: 1px solid var(--line, #e6e8f0); box-shadow: 0 10px 30px rgba(16,14,41,.06); }
.ed #locMap { height: 420px; width: 100%; background: #eef0f7; }
.ed .loc-pin span { display: block; width: 16px; height: 16px; border-radius: 50%; background: var(--red, #ed1f26); box-shadow: 0 0 0 2px #fff, 0 2px 6px rgba(0,0,0,.35); }
.ed .leaflet-popup-content { font-family: inherit; font-size: .86rem; color: var(--navy, #262061); }
.ed .leaflet-container { font-family: inherit; }
@media (max-width: 600px) { .ed #locMap { height: 320px; } }

/* Office carousel: size to the tallest card instead of a fixed height.
   Cards were position:absolute, so they contributed no height and the longest
   address (UK, two lines plus a registration number) was clipped mid-button.
   Stacking them in one grid cell keeps the crossfade but lets the tallest set the height. */
.ed .office-carousel { height: auto; min-height: 440px; }
.ed .office-cards-grid { display: grid; overflow: visible; }
.ed .office-map-card { position: relative; inset: auto; grid-area: 1 / 1; }
@media (max-width: 900px) {
  .ed .office-carousel { min-height: 390px; }
}

/* Tighten the office directory card: it was sized for a fixed 440px box, which left
   a lot of dead space around short entries once the height became content-driven. */
.ed .office-carousel { min-height: 360px; padding: 1rem 1.1rem; }
.ed .office-card-heading { margin-bottom: .8rem; gap: .8rem; }
.ed .office-card-heading strong { font-size: 1.1rem; }
.ed .office-card-benefits { gap: .5rem; margin: 0 0 .9rem !important; }
.ed .office-card-benefits li { font-size: .84rem; line-height: 1.45; }
.ed .office-map-card { padding: .6rem .3rem; }
.ed .office-country-mark { flex: 0 0 36px; width: 36px; height: 36px; }
.ed .office-card-cta { padding: .7rem 1.2rem; font-size: .82rem; }
@media (max-width: 900px) { .ed .office-carousel { min-height: 330px; } }

/* Newsletter: split the field and the button apart. They were welded into one pill
   by a shared `overflow:hidden` wrapper, which read as a single control and gave the
   button no shape of its own. */
.ed-newsletter {
  display: flex; gap: .6rem; align-items: stretch; flex-wrap: wrap;
  border: 0; border-radius: 0; overflow: visible; background: none;
  box-shadow: none;
}
.ed-newsletter:focus-within { border: 0; background: none; box-shadow: none; }
.ed-newsletter input {
  flex: 1 1 200px; min-width: 0; padding: .85rem 1.15rem;
  border: 1px solid rgba(255,255,255,.28); border-radius: 999px;
  background: rgba(255,255,255,.08); color: #fff;
  transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.ed-newsletter input:focus {
  outline: none; border-color: var(--red, #ed1f26);
  background: rgba(255,255,255,.13);
  box-shadow: 0 0 0 3px rgba(237,31,38,.25);
}
.ed-newsletter button {
  flex: 0 0 auto; padding: .85rem 1.5rem; border: 0; border-radius: 999px;
  background: var(--red, #ed1f26); color: #fff; font-weight: 800;
  display: inline-flex; align-items: center; gap: .5rem; cursor: pointer;
  transition: background .2s ease, transform .2s ease, box-shadow .2s ease;
}
.ed-newsletter button:hover {
  background: #fff; color: var(--navy, #262061);
  transform: translateY(-2px); box-shadow: 0 12px 24px -12px rgba(0,0,0,.6);
}
.ed-newsletter button:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }

/* ── Locations: directory left, map right ─────────────────────────── */
.ed .loc-split {
  display: grid; grid-template-columns: minmax(330px, 420px) minmax(0, 1fr);
  gap: 1.25rem; align-items: stretch; height: min(72vh, 680px);
}
.ed .loc-panel {
  display: flex; flex-direction: column; min-height: 0;
  border: 1px solid var(--line, #e6e8f0); border-radius: 16px;
  background: #fff; overflow: hidden;
}
.ed .loc-panel-head { display: flex; flex-direction: column; gap: .6rem; padding: 1rem 1rem .75rem; border-bottom: 1px solid var(--line, #eef0f6); }
.ed .loc-panel .loc-search { flex: none; }
.ed .loc-panel .loc-near {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .7rem 1rem; border: 0; border-radius: 999px;
  background: var(--red, #ed1f26); color: #fff; font: inherit; font-size: .85rem; font-weight: 800;
  cursor: pointer; transition: background .18s ease, transform .18s ease;
}
.ed .loc-panel .loc-near:hover { background: var(--navy, #262061); transform: translateY(-1px); }
.ed .loc-panel .loc-near:disabled { opacity: .6; cursor: default; transform: none; }

/* Country chips scroll horizontally so they never eat the list's height. */
.ed .loc-panel .loc-filters {
  display: flex; flex-wrap: nowrap; gap: .4rem; margin: 0;
  padding: .7rem 1rem; overflow-x: auto; scrollbar-width: thin;
  border-bottom: 1px solid var(--line, #eef0f6);
}
.ed .loc-panel .loc-chip { flex: none; padding: .4rem .7rem; font-size: .78rem; }
.ed .loc-count { margin: 0; padding: .6rem 1rem .1rem; font-size: .78rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted, #8b90a6); }
.ed .loc-panel .loc-status { padding: 0 1rem; margin: .25rem 0 0; font-size: .82rem; }

/* The list itself is what scrolls. */
.ed .loc-panel .loc-grid {
  display: flex; flex-direction: column; gap: .7rem;
  flex: 1 1 auto; min-height: 0; overflow-y: auto;
  padding: .8rem 1rem 1rem; grid-template-columns: none;
}
.ed .loc-panel .loc-card { padding: 1rem; border-radius: 12px; }
.ed .loc-panel .loc-card:hover { transform: none; box-shadow: 0 8px 20px rgba(16,14,41,.08); }
.ed .loc-panel .loc-card-head h3 { font-size: .95rem; }
.ed .loc-panel .loc-details { margin-bottom: .8rem; gap: .4rem; }
.ed .loc-panel .loc-details li { font-size: .82rem; }

.ed .loc-map-col { position: relative; border: 1px solid var(--line, #e6e8f0); border-radius: 16px; overflow: hidden; min-height: 0; }
.ed .loc-map-col #locMap { position: absolute; inset: 0; height: 100%; width: 100%; }

@media (max-width: 900px) {
  .ed .loc-split { grid-template-columns: 1fr; height: auto; }
  .ed .loc-map-col { height: 320px; }
  .ed .loc-panel .loc-grid { max-height: 520px; }
}

/* Equal columns: the frame had a hard 440px while the carousel became content-driven,
   so the two could never match. With both auto, align-items:stretch sizes them to the
   same grid row. The card stack already sizes to its tallest member, so the row height
   stays stable as you page through offices. */
.ed .office-map-frame { height: auto; min-height: 360px; }
@media (max-width: 900px) { .ed .office-map-frame { min-height: 330px; } }

/* Place autocomplete */
.ed .loc-search { position: relative; }
.ed .loc-search input { padding-right: 2.4rem; }
.ed .loc-clear {
  position: absolute; right: .55rem; top: 50%; transform: translateY(-50%);
  width: 26px; height: 26px; display: grid; place-items: center;
  border: 0; border-radius: 50%; background: #eef0f6; color: var(--muted, #64748b);
  cursor: pointer; font-size: .75rem;
}
.ed .loc-clear:hover { background: var(--red, #ed1f26); color: #fff; }
.ed .loc-suggest {
  position: absolute; z-index: 1200; top: calc(100% + .35rem); left: 0; right: 0;
  margin: 0; padding: .3rem; list-style: none; max-height: 280px; overflow-y: auto;
  background: #fff; border: 1px solid var(--line, #e2e8f0); border-radius: 12px;
  box-shadow: 0 18px 40px rgba(16,14,41,.16);
}
.ed .loc-suggest-item {
  display: flex; align-items: flex-start; gap: .6rem; padding: .55rem .65rem;
  border-radius: 8px; cursor: pointer; font-size: .86rem; line-height: 1.35;
}
.ed .loc-suggest-item i { color: var(--red, #ed1f26); margin-top: .15rem; font-size: .8rem; }
.ed .loc-suggest-item strong { display: block; color: var(--navy, #262061); font-weight: 700; }
.ed .loc-suggest-item small { display: block; color: var(--muted, #8b90a6); font-size: .78rem; }
.ed .loc-suggest-item:hover,
.ed .loc-suggest-item.is-active { background: #f4f5fb; }
.ed .loc-suggest-item.is-active { box-shadow: inset 0 0 0 1.5px rgba(38,32,97,.25); }

/* Featured "nearest office" slot, sitting with the sentence that names it. */
.ed .loc-nearest { padding: .2rem 1rem .6rem; }
.ed .loc-nearest[hidden] { display: none; }
.ed .loc-nearest .loc-card {
  border-color: var(--red, #ed1f26);
  box-shadow: 0 0 0 3px rgba(237,31,38,.12);
  background: #fffdfd;
}
.ed .loc-nearest .loc-card::before {
  content: 'Nearest office';
  display: block; margin-bottom: .5rem;
  font-size: .68rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase;
  color: var(--red, #ed1f26);
}
.ed .loc-nearest .loc-card:hover { transform: none; }

/* Country chips were being clipped in half. Two causes: the row is a flex child in a
   column panel and defaults to flex-shrink:1, so it got squeezed; and setting
   overflow-x:auto makes overflow-y compute to auto rather than visible, which crops
   the chips vertically instead of letting them overflow. */
.ed .loc-panel .loc-filters {
  flex: 0 0 auto;
  align-items: center;
  overflow-x: auto;
  overflow-y: hidden;
  padding: .75rem 1rem .85rem;
  scrollbar-width: thin;
}
.ed .loc-panel .loc-chip {
  flex: 0 0 auto;
  min-height: 30px;
  line-height: 1.2;
  white-space: nowrap;
}
.ed .loc-panel .loc-chip img { flex: none; }
/* Slim scrollbar so it doesn't eat into the chip row. */
.ed .loc-panel .loc-filters::-webkit-scrollbar { height: 5px; }
.ed .loc-panel .loc-filters::-webkit-scrollbar-thumb { background: #d5d9e6; border-radius: 3px; }
.ed .loc-panel .loc-filters::-webkit-scrollbar-track { background: transparent; }

/* Event card: city and country under the free-text venue line. */
.ed .ec-place { margin: .15rem 0 0; font-size: .8rem; font-weight: 700; color: var(--red, #ed1f26); padding-left: 1.55rem; }

/* ── Event highlight cards: full-strength brand colour ────────────────
   These used tinted variants (a pale pink icon chip, a near-white numeral on a
   white card), which read as washed out. Alternating solid navy and solid red
   at full depth, with white content, so nothing relies on a tint. */
.ed .step-numeral-card {
  border: 0; border-radius: 16px; padding: 1.6rem 1.5rem;
  background: var(--navy, #262061); overflow: hidden;
}
.ed .step-numeral-card:nth-child(even) { background: var(--red, #ed1f26); }

.ed .step-numeral-card .big-num {
  position: absolute; right: 1.1rem; top: .4rem;
  font-size: 3.2rem; font-weight: 800; line-height: 1; z-index: 0;
  color: #fff; opacity: .16;
}
.ed .step-numeral-card .ic-icon {
  width: 2.6rem; height: 2.6rem; margin-bottom: .8rem; border-radius: 10px;
  display: grid; place-items: center;
  background: #fff;
}
.ed .step-numeral-card .ic-icon svg { width: 1.5rem; height: 1.5rem; }
/* Tick picks up the card colour so it stays legible on either background. */
.ed .step-numeral-card .ic-icon { color: var(--navy, #262061); }
.ed .step-numeral-card:nth-child(even) .ic-icon { color: var(--red, #ed1f26); }

.ed .step-numeral-card p {
  margin: 0; position: relative; z-index: 1;
  color: #fff; font-weight: 700; font-size: .98rem; line-height: 1.4;
}

/* Heading inside the branded numeral cards (About page uses an h3 as well as a p). */
.ed .step-numeral-card h3 {
  position: relative; z-index: 1;
  margin: 0 0 .5rem; color: #fff; font-size: 1.12rem; line-height: 1.25;
}
.ed .step-numeral-card p { color: rgba(255,255,255,.88); font-weight: 500; font-size: .93rem; line-height: 1.6; }
/* Three-up rows alternate navy/red/navy; the even-child rule alone would leave 3 the same. */
.ed .steps-numeral .step-numeral-card:nth-child(3n+2) { background: var(--red, #ed1f26); }
.ed .steps-numeral .step-numeral-card:nth-child(3n+2) .ic-icon { color: var(--red, #ed1f26); }
.ed .steps-numeral .step-numeral-card:nth-child(3n+1),
.ed .steps-numeral .step-numeral-card:nth-child(3n+3) { background: var(--navy, #262061); }
.ed .steps-numeral .step-numeral-card:nth-child(3n+1) .ic-icon,
.ed .steps-numeral .step-numeral-card:nth-child(3n+3) .ic-icon { color: var(--navy, #262061); }

/* About us menu. The three-column effect comes from the markup (two link groups in one
   wrapper, beside the CTA) so it holds even on the inherited `1fr 300px` grid. This only
   widens the panel to give those columns room. */
@media (min-width: 992px) {
  .navbar .mega-menu.mega-about { width: min(1060px, calc(100vw - 3rem)) !important; align-items: start; }
}
@media (max-width: 991px) {
  /* Stacked on mobile, where the panel is a plain block list. */
  .navbar .mega-menu.mega-about .mega-about-cols { grid-template-columns: 1fr !important; gap: 0 !important; }
}

/* Shared enquiry fields (partials/lead-fields). Used by any form that creates a lead. */
.lead-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin: .8rem 0 1rem; }
.lead-field { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.lead-field label { font-size: .8rem; font-weight: 700; color: var(--navy, #262061); }
.lead-field label span { color: var(--red, #ed1f26); }
.lead-field input, .lead-field select {
  width: 100%; padding: .7rem .85rem; border: 1.5px solid var(--line, #e2e8f0);
  border-radius: 10px; font: inherit; font-size: .9rem; background: #fff; color: var(--navy, #262061);
}
.lead-field input:focus, .lead-field select:focus {
  outline: none; border-color: var(--red, #ed1f26); box-shadow: 0 0 0 3px rgba(237,31,38,.12);
}
.cmp-followup-submit { margin-top: .2rem; }
@media (max-width: 640px) { .lead-fields { grid-template-columns: 1fr; } }

/* ── Interactive route globe (destinations map view) ──────────────── */
.route-globe {
  position: relative; width: 100%; aspect-ratio: 16 / 11; min-height: 380px;
  display: grid; place-items: center; cursor: grab; touch-action: none;
  border-radius: 20px; overflow: hidden;
  background: radial-gradient(circle at 50% 40%, #1c1747 0%, #100d2b 70%);
  outline: none;
}
.route-globe.is-dragging { cursor: grabbing; }
.route-globe:focus-visible { box-shadow: 0 0 0 3px rgba(237,31,38,.55); }
.route-globe canvas { display: block; }

.rg-pins { position: absolute; inset: 0; pointer-events: none; }
.rg-pin {
  position: absolute; transform: translate(-50%, -50%);
  width: 20px; height: 20px; padding: 0; border: 0; background: none;
  display: grid; place-items: center; cursor: pointer; pointer-events: auto;
}
.rg-dotmark { border-radius: 50%; display: block; transition: transform .15s ease; }
/* Offices: smaller supporting markers. */
.rg-pin--office .rg-dotmark {
  width: 9px; height: 9px;
  background: var(--red, #ed1f26);
  box-shadow: 0 0 0 2px #fff, 0 0 10px 3px rgba(237,31,38,.5);
}
/* Destinations lead this view, so they are larger with a ring and a name. */
.rg-pin--destination { width: 26px; height: 26px; }
.rg-pin--destination .rg-dotmark {
  width: 14px; height: 14px;
  background: #fff;
  box-shadow: 0 0 0 3px var(--red, #ed1f26), 0 0 0 6px rgba(255,255,255,.28), 0 0 16px 5px rgba(255,255,255,.45);
}
.rg-pin:hover .rg-dotmark, .rg-pin.is-active .rg-dotmark { transform: scale(1.45); }

.rg-label {
  position: absolute; left: 50%; top: 100%;
  transform: translate(-50%, 4px);
  white-space: nowrap; pointer-events: none;
  font-size: .72rem; font-weight: 800; letter-spacing: .01em; color: #fff;
  text-shadow: 0 1px 3px rgba(6,4,24,.95), 0 0 10px rgba(6,4,24,.8);
  opacity: 0; transition: opacity .18s ease;
}
.rg-pin.show-label .rg-label { opacity: 1; }
.rg-pin:hover .rg-label, .rg-pin.is-active .rg-label { opacity: 1; color: #ffd9db; }
.rg-pin:focus-visible { outline: 2px solid #fff; outline-offset: 2px; border-radius: 50%; }

.rg-card {
  position: absolute; transform: translate(-50%, calc(-100% - 18px));
  width: min(250px, 76vw); z-index: 60;
  background: #fff; border-radius: 14px; padding: .9rem 1rem 1rem;
  box-shadow: 0 20px 45px rgba(8, 6, 30, .45); text-align: left;
}
.rg-card[hidden] { display: none; }
.rg-card::after {
  content: ''; position: absolute; left: 50%; bottom: -7px; transform: translateX(-50%) rotate(45deg);
  width: 14px; height: 14px; background: #fff;
}
.rg-card-close { position: absolute; top: .35rem; right: .5rem; border: 0; background: none; font-size: 1.15rem; line-height: 1; color: #9aa0b5; cursor: pointer; }
.rg-card-close:hover { color: var(--red, #ed1f26); }
.rg-card-kind { margin: 0 0 .15rem; font-size: .64rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--red, #ed1f26); }
.rg-card[data-kind="destination"] .rg-card-kind { color: var(--navy, #262061); }
.rg-card h4 { margin: 0 0 .3rem; font-size: 1rem; color: var(--navy, #262061); line-height: 1.2; }
.rg-card-meta { margin: 0; font-size: .8rem; color: var(--muted, #6b6c7e); }
.rg-card-sub { margin: .1rem 0 0; font-size: .78rem; font-weight: 700; color: var(--navy, #262061); }
.rg-card-cta {
  display: inline-flex; align-items: center; gap: .4rem; margin-top: .7rem;
  padding: .5rem .9rem; border-radius: 999px; background: var(--red, #ed1f26);
  color: #fff; font-size: .78rem; font-weight: 800; text-decoration: none;
  transition: background .15s ease, transform .15s ease;
}
.rg-card-cta:hover { background: var(--navy, #262061); color: #fff; transform: translateY(-1px); }

.rg-legend {
  position: absolute; left: 0; right: 0; bottom: .7rem; z-index: 5;
  display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1.1rem;
  font-size: .74rem; font-weight: 700; color: rgba(255,255,255,.82); pointer-events: none;
}
.rg-legend .rg-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-right: .3rem; }
.rg-dot--office { background: var(--red, #ed1f26); }
.rg-dot--destination { background: #fff; }
.rg-hint { color: rgba(255,255,255,.55); font-weight: 600; }
@media (max-width: 700px) { .route-globe { aspect-ratio: 1 / 1; min-height: 320px; } .rg-hint { display: none; } }

/* ── Multi-step application form ──────────────────────────────────── */
/* Steps are only hidden once the script adds .is-stepped, so the form stays
   fully usable if the script never runs. */
.apply-form.is-stepped .af-step { display: none; }
.apply-form.is-stepped .af-step.is-current { display: block; }
.af-step { border: 0; padding: 0; margin: 0 0 .4rem; min-width: 0; }
.af-legend { padding: 0; margin: 0 0 1rem; font-size: 1.05rem; font-weight: 800; color: var(--navy, #262061); }

.af-progress { display: flex; gap: .4rem; list-style: none; margin: 0 0 1.5rem; padding: 0; counter-reset: none; }
.af-progress li {
  flex: 1; display: flex; align-items: center; gap: .45rem; min-width: 0;
  font-size: .76rem; font-weight: 700; color: var(--muted, #9aa0b5);
  padding-top: .55rem; border-top: 3px solid var(--line, #e6e8f0);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.af-progress li span {
  flex: none; width: 20px; height: 20px; border-radius: 50%;
  display: grid; place-items: center; font-size: .68rem;
  background: var(--line, #e6e8f0); color: var(--muted, #7a8095);
}
.af-progress li.is-current { color: var(--navy, #262061); border-top-color: var(--red, #ed1f26); }
.af-progress li.is-current span { background: var(--red, #ed1f26); color: #fff; }
.af-progress li.is-done { color: var(--navy, #262061); border-top-color: var(--navy, #262061); }
.af-progress li.is-done span { background: var(--navy, #262061); color: #fff; }

.af-nav { display: flex; gap: .6rem; align-items: center; margin-top: 1.2rem; }
.af-nav .btn { flex: 1; justify-content: center; }
.af-nav .af-back { flex: 0 0 auto; }
.af-error { margin: .8rem 0 0; padding: .6rem .8rem; border-radius: 8px; background: #fdeaec; color: #a3121a; font-size: .85rem; font-weight: 600; }
.af-error[hidden] { display: none; }
@media (max-width: 560px) {
  .af-progress li { font-size: 0; gap: 0; }
  .af-progress li span { font-size: .68rem; }
}

/* ── Event detail cards ───────────────────────────────────────────── */
/* The card is a horizontal flex row: icon, then one text column. Rows stack inside
   that column so a second row cannot become a third column. */
.ed .evd-detail-body { display: flex; flex-direction: column; gap: .55rem; min-width: 0; flex: 1; }
.ed .evd-detail-body > div { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
.ed .evd-detail-body strong { font-size: .72rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--red, #ed1f26); }
.ed .evd-detail-body span { font-size: .88rem; font-weight: 600; color: var(--navy, #262061); line-height: 1.45; overflow-wrap: anywhere; }

/* The generic `.evd-detail-card strong` colour was overriding the white day number,
   leaving it navy on a navy badge — only the month was visible. */
.ed .evd-detail-date strong { color: #fff !important; font-size: 1.25rem; font-weight: 800; }
.ed .evd-detail-date span { color: rgba(255,255,255,.85); }
.ed .evd-detail-date { background: var(--navy, #262061); }

/* Solid brand red chip rather than an 8% tint. */
.ed .evd-detail-card .evd-detail-icon { background: var(--red, #ed1f26); color: #fff; }
.ed .evd-detail-card { border-color: var(--line, #e6e8f0); background: #fff; align-items: flex-start; }
.ed .evd-detail-card > div:first-child { margin-top: .1rem; }

/* ── Nav: hide the redundant desktop hamburger ────────────────────── */
/* .side-menu-toggle had no breakpoint, so it showed on desktop where the full
   nav is already visible. It targets #navbar-menu, which on desktop IS that
   visible nav, so clicking it dimmed the page with the template overlay and
   opened nothing. The header keeps its own toggle for mobile. */
@media (min-width: 992px) {
  .navbar .attr-nav li.side-menu { display: none !important; }
  .navbar .overlay-screen { display: none !important; }
}

/* ── Contrast: text over photographic sections ────────────────────── */
/* The overlay fades to 25% at the top of these bands, so white at 72% sat on a
   bright photo and washed out. Full-strength white plus a shadow keeps the copy
   readable wherever the image happens to be light. */
.ed .about-impact-inner { color: rgba(255,255,255,.94); }
.ed .about-impact-inner > p:not(.eyebrow) {
  color: #fff; text-shadow: 0 1px 12px rgba(8,6,26,.75), 0 1px 3px rgba(8,6,26,.9);
}
.ed .about-impact-inner > h2 { text-shadow: 0 2px 16px rgba(8,6,26,.7); }
.ed .about-impact-inner .eyebrow { color: #ff8f95; }
.ed .about-impact-stats span { color: rgba(255,255,255,.88); }
/* Deepen the thin end of the scrim so there is always something behind the text. */
.ed .about-impact-overlay { background: linear-gradient(0deg, rgba(13,11,36,.98) 0%, rgba(13,11,36,.9) 55%, rgba(13,11,36,.62) 100%) !important; }

/* Remaining low-opacity white text. The hero variants sit over photographs, where a
   light image leaves them barely legible; the card ones sit on solid dark panels and
   only needed a modest lift. */
.s3r .thv2-crumbs, .s3r .thv2-crumbs a { color: rgba(255,255,255,.9); text-shadow: 0 1px 6px rgba(8,6,26,.7); }
.s3r .thv2-eyebrow { color: rgba(255,255,255,.95); text-shadow: 0 1px 8px rgba(8,6,26,.75); }
.ed .about-journey { color: rgba(255,255,255,.9); }
.ed .office-map-card p { color: rgba(255,255,255,.82); }

/* ── Process steps as full-colour brand cards ─────────────────────── */
/* Alternating solid navy and red at full depth, matching the event highlight and
   About cards, rather than plain rows on a light background. */
.svc-process { display: flex; flex-direction: column; gap: .8rem; }
.svc-process-step {
  display: flex; gap: 1rem; align-items: flex-start;
  padding: 1.15rem 1.25rem; border-radius: 14px;
  background: var(--navy, #262061);
  transition: transform .18s ease, box-shadow .18s ease;
}
.svc-process-step:nth-child(even) { background: var(--red, #ed1f26); }
.svc-process-step:hover { transform: translateY(-2px); box-shadow: 0 14px 30px -14px rgba(16,14,41,.65); }

/* White badge, number inherits the card colour so it reads on either background. */
.svc-process-step .svc-process-num {
  flex: none; width: 2rem; height: 2rem; border-radius: 50%;
  display: grid; place-items: center;
  background: #fff !important; color: var(--navy, #262061) !important;
  font-weight: 800; font-size: .9rem; line-height: 1;
}
.svc-process-step:nth-child(even) .svc-process-num { color: var(--red, #ed1f26) !important; }

.svc-process-step > div:last-child { min-width: 0; }
.svc-process-step strong, .svc-process-step h3 {
  display: block; margin: 0 0 .25rem;
  color: #fff; font-size: 1rem; font-weight: 800; line-height: 1.25;
}
.svc-process-step p { margin: 0; color: rgba(255,255,255,.9); font-size: .9rem; line-height: 1.55; }

/* Connector between process steps, so the six read as one sequence rather than six
   separate cards. The line runs from the number badge of one card into the next and
   carries the colour across, since the cards alternate navy and red. */
.svc-process-step { position: relative; }
.svc-process-step:not(:last-child)::after {
  content: '';
  position: absolute;
  left: 2.25rem;              /* centre of the 2rem badge inside 1.25rem padding */
  top: 100%;
  transform: translateX(-50%);
  width: 3px;
  height: .8rem;              /* exactly the gap between cards */
  border-radius: 2px;
  background: linear-gradient(180deg, var(--navy, #262061), var(--red, #ed1f26));
}
.svc-process-step:nth-child(even):not(:last-child)::after {
  background: linear-gradient(180deg, var(--red, #ed1f26), var(--navy, #262061));
}
/* Small arrowhead pointing to the next step. */
.svc-process-step:not(:last-child)::before {
  content: '';
  position: absolute;
  left: 2.25rem;
  top: calc(100% + .55rem);
  transform: translateX(-50%) rotate(45deg);
  width: 7px; height: 7px;
  border-right: 3px solid var(--red, #ed1f26);
  border-bottom: 3px solid var(--red, #ed1f26);
  border-radius: 1px;
  z-index: 1;
}
.svc-process-step:nth-child(even):not(:last-child)::before {
  border-right-color: var(--navy, #262061);
  border-bottom-color: var(--navy, #262061);
}
@media (prefers-reduced-motion: no-preference) {
  .svc-process-step:hover::after { height: .8rem; }
}

/* ── Missing background utility ───────────────────────────────────── */
/* .bg-navy was used in the markup but never defined, so the section kept the page's
   cream background while its text stayed white — invisible. */
.bg-navy { background: var(--navy, #262061); color: #fff; }
.bg-navy .sec-head h2, .bg-navy h2, .bg-navy h3 { color: #fff; }
.bg-navy .lede, .bg-navy p { color: rgba(255,255,255,.88); }
.bg-navy .eyebrow { color: #ff8f95; border-color: rgba(255,255,255,.28); }

/* ── 5-stage journey: connected colour cards ──────────────────────── */
.journey-5 {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1.6rem;
}
.j5-card {
  position: relative; padding: 1.25rem 1.3rem; border-radius: 14px;
  background: var(--navy, #262061); color: #fff;
  transition: transform .18s ease, box-shadow .18s ease;
}
.j5-card:nth-child(even) { background: var(--red, #ed1f26); }
.j5-card:hover { transform: translateY(-3px); box-shadow: 0 16px 34px -14px rgba(16,14,41,.6); }
.j5-step { display: block; margin-bottom: .45rem; font-size: .7rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: rgba(255,255,255,.75); }
.j5-card h4 { margin: 0 0 .5rem; font-size: 1rem; font-weight: 800; color: #fff; line-height: 1.25; }
.j5-card p { margin: 0; font-size: .84rem; line-height: 1.55; color: rgba(255,255,255,.9); }

/* Connector running through the gap into the next stage. */
.j5-card:not(:last-child)::after {
  content: ''; position: absolute; top: 50%; left: 100%;
  width: 1.6rem; height: 3px; transform: translateY(-50%);
  background: linear-gradient(90deg, var(--navy, #262061), var(--red, #ed1f26));
}
.j5-card:nth-child(even):not(:last-child)::after {
  background: linear-gradient(90deg, var(--red, #ed1f26), var(--navy, #262061));
}
.j5-card:not(:last-child)::before {
  content: ''; position: absolute; top: 50%; left: calc(100% + 1.15rem);
  width: 7px; height: 7px; transform: translateY(-50%) rotate(-45deg);
  border-right: 3px solid var(--red, #ed1f26); border-bottom: 3px solid var(--red, #ed1f26);
  border-radius: 1px; z-index: 1;
}
.j5-card:nth-child(even):not(:last-child)::before {
  border-right-color: var(--navy, #262061); border-bottom-color: var(--navy, #262061);
}
/* Stack on narrow screens, with the connector turning to run downward. */
@media (max-width: 1000px) {
  .journey-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
  .j5-card::after, .j5-card::before { display: none; }
}
@media (max-width: 560px) { .journey-5 { grid-template-columns: 1fr; } }

/* ── Destination detail modal (globe) ─────────────────────────────── */
.rg-modal { position: fixed; inset: 0; z-index: 3000; display: grid; place-items: center; padding: 1.25rem; }
.rg-modal[hidden] { display: none; }
.rg-modal-backdrop { position: absolute; inset: 0; background: rgba(10,8,32,.68); backdrop-filter: blur(3px); }
.rg-modal-panel {
  position: relative; z-index: 1; width: min(680px, 100%); max-height: 90vh; overflow-y: auto;
  background: #fff; border-radius: 20px; box-shadow: 0 40px 90px rgba(6,4,26,.5);
}
.rg-modal-close {
  position: absolute; top: .8rem; right: .8rem; z-index: 3;
  width: 34px; height: 34px; border: 0; border-radius: 50%;
  background: rgba(10,8,32,.55); color: #fff; font-size: 1.3rem; line-height: 1; cursor: pointer;
}
.rg-modal-close:hover { background: var(--red, #ed1f26); }

.rg-modal-hero { position: relative; height: 190px; overflow: hidden; border-radius: 20px 20px 0 0; }
.rg-modal-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
.rg-modal-hero::after { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10,8,32,.92) 0%, rgba(10,8,32,.25) 70%); }
.rg-modal-hero-copy { position: absolute; left: 1.5rem; bottom: 1.1rem; z-index: 2; }
.rg-modal-hero-copy h3 { margin: 0; color: #fff; font-size: 1.75rem; line-height: 1.1; }
.rg-modal-hero-copy p { margin: .2rem 0 0; color: rgba(255,255,255,.85); font-size: .85rem; font-weight: 600; }

.rg-modal-body { padding: 1.4rem 1.5rem 1.6rem; }
.rgm-tagline { margin: 0 0 1.1rem; color: var(--muted, #6b6c7e); font-size: .95rem; line-height: 1.55; }

.rgm-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; margin-bottom: 1rem; }
.rgm-stat { padding: .85rem .9rem; border: 1px solid var(--line, #e6e8f0); border-radius: 12px; background: #fbfbfe; min-width: 0; }
.rgm-stat-label { display: flex; align-items: center; gap: .35rem; font-size: .7rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--muted, #8b90a6); margin-bottom: .3rem; }
.rgm-stat-label i { color: var(--red, #ed1f26); }
.rgm-stat strong { display: block; font-size: .98rem; color: var(--navy, #262061); line-height: 1.25; overflow-wrap: anywhere; }
.rgm-stat small { display: block; margin-top: .15rem; font-size: .74rem; color: var(--muted, #9aa0b5); }

.rgm-fx { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; padding: .6rem .8rem; border-radius: 10px; background: #f4f5fb; margin-bottom: 1.2rem; }
.rgm-fx label { font-size: .78rem; font-weight: 700; color: var(--navy, #262061); }
.rgm-fx select { padding: .35rem .6rem; border: 1.5px solid var(--line, #e2e8f0); border-radius: 8px; font: inherit; font-size: .82rem; background: #fff; }
.rgm-fx small { color: var(--muted, #9aa0b5); font-size: .72rem; margin-left: auto; }

.rgm-section { margin-bottom: 1.1rem; }
.rgm-section h4 { margin: 0 0 .5rem; font-size: .78rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--navy, #262061); }
.rgm-chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.rgm-chip { padding: .32rem .7rem; border-radius: 999px; background: #eef0fa; color: var(--navy, #262061); font-size: .78rem; font-weight: 700; }
.rgm-chips--intake .rgm-chip { background: #eafaf1; color: #12724a; }
.rgm-highlights { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: .4rem .9rem; }
.rgm-highlights li { position: relative; padding-left: 1.3rem; font-size: .85rem; color: var(--ink, #4e5265); line-height: 1.45; }
.rgm-highlights li::before { content: '\f005'; font-family: 'Font Awesome 5 Free'; font-weight: 900; position: absolute; left: 0; top: .1rem; color: var(--red, #ed1f26); font-size: .72rem; }

.rgm-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.3rem; }
.rgm-cta { display: inline-flex; align-items: center; gap: .4rem; padding: .75rem 1.15rem; border-radius: 999px; border: 1.5px solid var(--line, #e2e8f0); background: #fff; color: var(--navy, #262061); font-size: .85rem; font-weight: 800; text-decoration: none; transition: background .15s ease, color .15s ease, border-color .15s ease; }
.rgm-cta:hover { background: var(--navy, #262061); border-color: var(--navy, #262061); color: #fff; }
.rgm-cta--primary { background: var(--red, #ed1f26); border-color: var(--red, #ed1f26); color: #fff; flex: 1 1 220px; justify-content: center; }
.rgm-cta--primary:hover { background: var(--navy, #262061); border-color: var(--navy, #262061); }
.rgm-cta--plain { border-color: transparent; color: var(--muted, #6b6c7e); }
@media (max-width: 560px) {
  .rgm-stats { grid-template-columns: 1fr; }
  .rgm-highlights { grid-template-columns: 1fr; }
  .rg-modal-hero { height: 150px; }
}

/* ── CS Alondra display face ──────────────────────────────────────── */
/* Self-hosted (public/fonts/alondra), woff2 with a woff fallback.
   The family ships a single weight, so it is used only where one weight works:
   large h1/h2 headings at weight 400. Everything that needs 600-800 — stat
   numbers, badges, date chips, h3/h4 — stays on Afacad, which has real weights.
   Faux-bolding a display face smears it. */
@font-face {
  font-family: 'CS Alondra';
  src: url('../fonts/alondra/CSAlondra-Regular.woff2') format('woff2'),
       url('../fonts/alondra/CSAlondra-Regular.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'CS Alondra';
  src: url('../fonts/alondra/CSAlondra-Italic.woff2') format('woff2'),
       url('../fonts/alondra/CSAlondra-Italic.woff') format('woff');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}

:root { --font-heading: 'CS Alondra', 'Afacad', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }

/* Large headings only. Weight 400 because that is the only weight that exists;
   hierarchy comes from size, not from a synthesised bold. */
.ed h1, .ed h2,
.ed .sec-head h2,
.s3r h1, .s3r h2,
/* This footer heading has a more specific rule of its own, so it must be named
   explicitly or it keeps the old face while every other h2 changes. */
.ed-footer .office-map-section--footer .sec-head h2 {
  font-family: var(--font-heading);
  font-weight: 400;
  letter-spacing: -0.01em;
}

/* Tier tags, ranked by colour: top partners in brand red, descending to neutral. */
.ed .pc-tier-tag--strategic { background: var(--red, #ed1f26); color: #fff; }
.ed .pc-tier-tag--preferred { background: var(--navy, #262061); color: #fff; }
.ed .pc-tier-tag--standard { background: #eef0fa; color: var(--navy, #262061); }
.ed .pc-tier-tag--network { background: #f4f5f8; color: var(--muted, #6b6c7e); }

/* "Why S3 recommends" items no longer carry icons: the checkmarks and cap were
   #4ade80, the only green on the page and off-brand. Spacing adjusted for text-only. */
.ed .uvd-why-grid svg { display: none; }
.ed .uvd-why-grid span { gap: 0; }

/* ---------------------------------------------------------------------------
   Service pages: journey summary band + sticky sidebar
   The rail markup is shared with partials/process-steps, so it inherits the
   .process-steps rules in s3-home.css; only the differences live here.
   --------------------------------------------------------------------------- */
.ed .process-steps.ps-summary { padding: 3.25rem 0; background: var(--surface); border-bottom: 1px solid var(--line); }
.ed .ps-summary .ps-summary-head { text-align: center; max-width: 720px; margin: 0 auto 2.5rem; }
.ed .ps-summary .ps-summary-head h2 { font-size: clamp(1.55rem, 3vw, 2.1rem); margin: 0 0 .6rem; }
.ed .ps-summary .ps-lede { color: var(--muted); font-size: .97rem; margin: 0; }
.ed .ps-summary .ps-rail { margin-bottom: 0; }

/* The stage this service covers. Solid navy node mirrors the homepage
   "is-first" treatment, so the highlight reads as progress, not decoration. */
.ed .ps-summary .ps-rail-item.is-active .ps-node { background: var(--s3-navy, #262061); border-color: var(--s3-navy, #262061); color: #fff; }
.ed .ps-summary .ps-rail-item:not(.is-active) { opacity: .9; }
.ed .ps-summary .ps-here { font-size: .64rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--red); }

/* Sidebar tracks the step list instead of stranding whitespace beside it.
   Needs the .split's align-items:flex-start (set inline on the service page). */
.ed .form-panel.svc-aside { position: sticky; top: 6.5rem; }

@media (max-width: 900px) {
    .ed .form-panel.svc-aside { position: static; }
    .ed .ps-summary .ps-rail-item:not(.is-active) { opacity: 1; }
}

/* ===========================================================================
   Booking ("Book a session") — public appointment flow
   Landing cards, the booking form (mode / country / slot picker / details),
   confirmation and manage pages. Uses the same tokens and .btn variants as the
   rest of the editorial theme.
   =========================================================================== */

/* --- Landing: service cards --- */
.ed .bk-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
/* Branded photo cards: a study-abroad image under a brand-colour veil, so each
   session reads as a designed tile rather than a text box. Navy or red per accent. */
.ed .bk-card {
    position: relative; overflow: hidden; isolation: isolate;
    min-height: 17rem; border-radius: var(--radius); text-decoration: none;
    background-size: cover; background-position: center; background-repeat: no-repeat;
    box-shadow: var(--shadow); transition: transform .25s ease, box-shadow .25s ease;
}
/* The veil is the brand colour; a lighter top-left keeps the photo legible. */
.ed .bk-card-veil { position: absolute; inset: 0; z-index: 0; transition: opacity .25s ease; }
.ed .bk-accent-navy .bk-card-veil { background: linear-gradient(150deg, rgba(38,32,97,.72) 0%, rgba(38,32,97,.92) 62%, rgba(16,13,41,.96) 100%); }
.ed .bk-accent-red .bk-card-veil { background: linear-gradient(150deg, rgba(180,18,26,.72) 0%, rgba(207,22,30,.9) 60%, rgba(38,32,97,.95) 100%); }
.ed .bk-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }
.ed .bk-card:hover .bk-card-veil { opacity: .92; }
.ed .bk-card-inner { position: relative; z-index: 1; display: flex; flex-direction: column; height: 100%; min-height: inherit; padding: 1.5rem; color: #fff; gap: .6rem; }
.ed .bk-card-top { display: flex; align-items: center; justify-content: space-between; }
.ed .bk-card-icon {
    width: 3rem; height: 3rem; border-radius: 12px; display: grid; place-items: center;
    background: rgba(255,255,255,.16); color: #fff; font-size: 1.2rem; backdrop-filter: blur(2px);
    border: 1px solid rgba(255,255,255,.22);
}
.ed .bk-card-dur { font-size: .78rem; font-weight: 700; color: rgba(255,255,255,.9); background: rgba(255,255,255,.14); padding: .3rem .6rem; border-radius: 999px; }
.ed .bk-card-dur i { margin-right: .25rem; }
.ed .bk-card-body { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; gap: .3rem; }
.ed .bk-card h3 { font-size: 1.28rem; margin: 0; color: #fff; line-height: 1.15; }
.ed .bk-card-tag { color: rgba(255,255,255,.82); font-size: .9rem; margin: 0; }
.ed .bk-card-foot { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding-top: .8rem; border-top: 1px solid rgba(255,255,255,.2); }
.ed .bk-card-modes { display: inline-flex; gap: .6rem; font-size: .92rem; color: rgba(255,255,255,.85); }
.ed .bk-card-go { display: inline-flex; align-items: center; gap: .4rem; font-weight: 800; font-size: .86rem; color: #fff; }
.ed .bk-card-go i { transition: transform .2s ease; }
.ed .bk-card:hover .bk-card-go i { transform: translateX(4px); }

/* --- Webinars strip --- */
.ed .bk-webinars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.ed .bk-webinar { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); text-decoration: none; color: var(--ink); overflow: hidden; transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease; }
.ed .bk-webinar:hover { transform: translateY(-3px); border-color: var(--line-strong); box-shadow: var(--shadow-sm); }
/* Event photo with the date badge overlaid in the corner. */
.ed .bk-webinar-media { position: relative; aspect-ratio: 16 / 8; overflow: hidden; background: var(--surface-sunk); }
.ed .bk-webinar-media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
.ed .bk-webinar:hover .bk-webinar-media img { transform: scale(1.05); }
.ed .bk-webinar-date { position: absolute; top: .6rem; left: .6rem; width: 3rem; text-align: center; background: var(--navy); color: #fff; border-radius: 9px; padding: .4rem 0; box-shadow: 0 6px 16px -6px rgba(16,13,41,.7); }
.ed .bk-webinar-date strong { display: block; font-size: 1.2rem; line-height: 1; }
.ed .bk-webinar-date span { font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; }
.ed .bk-webinar-body { padding: .9rem 1rem 1.05rem; }
.ed .bk-webinar-mode { font-size: .74rem; text-transform: uppercase; letter-spacing: .04em; color: var(--red); font-weight: 700; }
.ed .bk-webinar-body h4 { margin: .25rem 0 0; font-size: .96rem; line-height: 1.3; }

/* --- How it works --- */
/* Connected 3-step flow: icon medallions joined by a brand line, so it reads as
   a journey rather than three stray dots. */
.ed .bk-flow { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.ed .bk-flow-line { position: absolute; top: 2.1rem; left: 16%; right: 16%; height: 3px; background: linear-gradient(90deg, var(--navy), var(--red)); border-radius: 3px; z-index: 0; }
.ed .bk-flow-step { position: relative; z-index: 1; text-align: center; padding: 0 .8rem; }
.ed .bk-flow-icon {
    position: relative; display: inline-grid; place-items: center;
    width: 4.2rem; height: 4.2rem; border-radius: 50%;
    background: var(--navy); color: #fff; font-size: 1.4rem; margin-bottom: 1rem;
    box-shadow: 0 10px 26px -8px rgba(38,32,97,.55); border: 4px solid var(--surface);
}
.ed .bk-flow-step:nth-child(3) .bk-flow-icon { background: var(--red); box-shadow: 0 10px 26px -8px rgba(237,31,38,.5); }
.ed .bk-flow-step:last-child .bk-flow-icon { background: var(--red); box-shadow: 0 10px 26px -8px rgba(237,31,38,.5); }
.ed .bk-flow-num {
    position: absolute; top: -.35rem; right: -.35rem; width: 1.5rem; height: 1.5rem; border-radius: 50%;
    background: #fff; color: var(--navy); font-size: .78rem; font-weight: 800; display: grid; place-items: center;
    border: 2px solid var(--navy);
}
.ed .bk-flow-step:last-child .bk-flow-num { color: var(--red); border-color: var(--red); }
.ed .bk-flow-step h4 { margin: 0 0 .3rem; font-size: 1.1rem; }
.ed .bk-flow-step p { color: var(--muted); font-size: .92rem; margin: 0; }

/* --- Booking form layout --- */
.ed .bk-layout { display: grid; grid-template-columns: 20rem 1fr; gap: 2rem; align-items: start; }
.ed .bk-summary { position: sticky; top: 6.5rem; padding: 1.6rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-sunk); }
.ed .bk-summary-icon { width: 3rem; height: 3rem; border-radius: 12px; display: grid; place-items: center; background: rgba(38,32,97,.08); color: var(--navy); font-size: 1.2rem; margin-bottom: .8rem; }
.ed .bk-summary-icon.bk-accent-red { background: rgba(237,31,38,.1); color: var(--red); }
.ed .bk-summary h2 { font-size: 1.35rem; margin: 0 0 .5rem; }
.ed .bk-summary-desc { color: var(--muted); font-size: .92rem; margin: 0 0 1rem; }
.ed .bk-summary-list { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; gap: .5rem; }
.ed .bk-summary-list li { display: flex; gap: .55rem; font-size: .9rem; align-items: flex-start; }
.ed .bk-summary-list i { color: var(--red); margin-top: .2rem; }
.ed .bk-summary-foot { display: flex; gap: 1.2rem; font-size: .86rem; font-weight: 700; color: var(--navy); border-top: 1px solid var(--line); padding-top: .9rem; }

.ed .bk-form { display: grid; gap: 1.5rem; }
.ed .bk-step-panel { border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem; margin: 0; background: var(--surface); }
.ed .bk-step-panel legend { font-weight: 800; font-size: 1.05rem; padding: 0 .5rem; display: flex; align-items: center; gap: .5rem; }
.ed .bk-step-num { display: inline-grid; place-items: center; width: 1.7rem; height: 1.7rem; border-radius: 50%; background: var(--navy); color: #fff; font-size: .85rem; }

/* mode picker */
.ed .bk-mode-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .75rem; }
.ed .bk-mode input { position: absolute; opacity: 0; pointer-events: none; }
.ed .bk-mode-face { display: flex; flex-direction: column; gap: .45rem; padding: 1.1rem; border: 1.5px solid var(--line); border-radius: var(--radius-sm); cursor: pointer; background: var(--surface-sunk); transition: transform .15s ease, border-color .15s ease, background .15s ease, box-shadow .15s ease; height: 100%; }
/* Coloured icon badge so each card carries brand colour even when unselected. */
.ed .bk-mode-face i { display: inline-grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 11px; background: var(--navy); color: #fff; font-size: 1.05rem; }
.ed .bk-mode-face strong { font-size: .95rem; color: var(--ink); }
.ed .bk-mode-face small { color: var(--muted); font-size: .78rem; line-height: 1.3; }
.ed .bk-mode-face:hover { transform: translateY(-2px); border-color: var(--navy); box-shadow: var(--shadow-sm); }
/* Selected: the whole card fills navy with a glow and inverted icon. */
.ed .bk-mode input:checked + .bk-mode-face { border-color: var(--navy); background: var(--navy); box-shadow: 0 12px 26px -10px rgba(38,32,97,.7); }
.ed .bk-mode input:checked + .bk-mode-face strong { color: #fff; }
.ed .bk-mode input:checked + .bk-mode-face small { color: rgba(255,255,255,.8); }
.ed .bk-mode input:checked + .bk-mode-face i { background: #fff; color: var(--navy); }
.ed .bk-mode input:focus-visible + .bk-mode-face { outline: 2px solid var(--red); outline-offset: 2px; }

/* fields */
.ed .bk-field { margin-bottom: 1rem; }
.ed .bk-field:last-child { margin-bottom: 0; }
.ed .bk-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.ed .bk-field label { display: block; font-weight: 700; font-size: .9rem; margin-bottom: .4rem; }
.ed .bk-field input, .ed .bk-field select, .ed .bk-field textarea {
    width: 100%; padding: .7rem .8rem; border: 1px solid var(--line-strong); border-radius: var(--radius-sm);
    background: var(--surface); color: var(--ink); font: inherit;
}
.ed .bk-field input:focus, .ed .bk-field select:focus, .ed .bk-field textarea:focus { outline: 2px solid var(--navy); outline-offset: 1px; border-color: var(--navy); }
.ed .bk-help { color: var(--muted); font-size: .8rem; margin: .4rem 0 0; }

/* slot picker */
.ed .bk-tz-note { color: var(--muted); font-size: .85rem; margin: 0 0 1rem; }
.ed .bk-slots.is-loading { opacity: .5; pointer-events: none; }
.ed .bk-day-tabs { display: flex; gap: .5rem; overflow-x: auto; padding-bottom: .5rem; margin-bottom: 1rem; }
.ed .bk-day-tab { flex: none; display: flex; flex-direction: column; align-items: center; gap: .1rem; padding: .5rem .85rem; border: 1.5px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); cursor: pointer; color: var(--muted); }
.ed .bk-day-tab span { font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; }
.ed .bk-day-tab strong { font-size: .95rem; color: var(--ink); }
.ed .bk-day-tab.is-active { border-color: var(--navy); background: var(--navy); }
.ed .bk-day-tab.is-active span, .ed .bk-day-tab.is-active strong { color: #fff; }
.ed .bk-day-slots.is-hidden { display: none; }
.ed .bk-day-heading { font-size: .9rem; color: var(--muted); font-weight: 700; margin: 0 0 .7rem; }
.ed .bk-slot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr)); gap: .5rem; }
.ed .bk-slot input { position: absolute; opacity: 0; pointer-events: none; }
.ed .bk-slot span { display: block; text-align: center; padding: .55rem .3rem; border: 1.5px solid var(--line); border-radius: var(--radius-sm); cursor: pointer; font-size: .88rem; font-weight: 600; transition: border-color .15s ease, background .15s ease; }
.ed .bk-slot input:checked + span { border-color: var(--red); background: var(--red); color: #fff; }
.ed .bk-slot input:focus-visible + span { outline: 2px solid var(--navy); outline-offset: 2px; }
.ed .bk-slots-empty { color: var(--muted); font-size: .95rem; display: flex; gap: .5rem; align-items: flex-start; }
.ed .bk-slots-empty i { color: var(--red); margin-top: .2rem; }

/* form footer */
.ed .bk-form-foot { display: flex; flex-direction: column; align-items: center; gap: .6rem; text-align: center; }
.ed .bk-submit { font-size: 1.02rem; padding: .85rem 2rem; }
.ed .bk-form-note { color: var(--muted); font-size: .85rem; margin: 0; }

/* alerts */
.ed .bk-alert { display: flex; gap: .7rem; align-items: flex-start; padding: 1rem 1.2rem; border-radius: var(--radius-sm); margin-bottom: 1.5rem; }
.ed .bk-alert i { font-size: 1.1rem; margin-top: .1rem; }
.ed .bk-alert ul { margin: .3rem 0 0; padding-left: 1.1rem; }
.ed .bk-alert-error { background: rgba(237,31,38,.08); color: #a3161b; border: 1px solid rgba(237,31,38,.25); }
.ed .bk-alert-ok { background: rgba(38,32,97,.07); color: var(--navy); border: 1px solid rgba(38,32,97,.22); }

/* confirmation + manage */
/* No hero on this page, so the full .pad top would drop the card far below the
   header. Trim the top; keep a normal bottom. */
.ed .bk-confirm-wrap { background: var(--surface-sunk); padding-top: clamp(1.75rem, 3vw, 2.75rem); }
.ed .bk-confirm { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: clamp(1.75rem, 4vw, 3rem); text-align: center; box-shadow: var(--shadow); }
.ed .bk-confirm-tick { width: 4rem; height: 4rem; margin: 0 auto 1rem; border-radius: 50%; background: var(--navy); color: #fff; display: grid; place-items: center; font-size: 1.6rem; }
.ed .bk-confirm h1 { font-size: clamp(1.6rem, 3vw, 2.2rem); margin: .2rem 0 .6rem; }
.ed .bk-confirm-lede { color: var(--muted); max-width: 32rem; margin: 0 auto 1.6rem; }
.ed .bk-confirm-cancelled { color: var(--red); font-weight: 700; }
.ed .bk-confirm-card { text-align: left; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; max-width: 30rem; margin: 0 auto 1.6rem; }
.ed .bk-confirm-row { display: flex; justify-content: space-between; gap: 1rem; padding: .9rem 1.2rem; }
.ed .bk-confirm-row + .bk-confirm-row { border-top: 1px solid var(--line); }
.ed .bk-confirm-key { color: var(--muted); font-size: .88rem; font-weight: 700; white-space: nowrap; }
.ed .bk-confirm-key i { color: var(--navy); margin-right: .3rem; }
.ed .bk-confirm-val { text-align: right; font-size: .92rem; }
.ed .bk-confirm-val small { color: var(--muted); }
.ed .bk-confirm-actions { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; margin-bottom: 1.2rem; align-items: flex-start; }
/* Add-to-calendar expander: one button that reveals Google + .ics. Works with
   no JS via <details>; brand navy/red only. */
/* Add-to-calendar expander. Its own class (was .bk-cal, which collided with the
   booking calendar picker's card frame and drew an outer card around the button). */
.ed .bk-addcal { position: relative; }
.ed .bk-addcal > summary { list-style: none; cursor: pointer; }
.ed .bk-addcal > summary::-webkit-details-marker { display: none; }
.ed .bk-addcal[open] > summary { background: var(--navy); }
.ed .bk-cal-menu {
    position: absolute; z-index: 5; margin-top: .5rem; left: 0; min-width: 100%;
    display: flex; flex-direction: column; padding: .4rem; gap: .2rem;
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm);
    box-shadow: var(--shadow-lg);
}
.ed .bk-cal-opt {
    display: flex; align-items: center; gap: .6rem; white-space: nowrap;
    padding: .6rem .8rem; border-radius: 8px; text-decoration: none; color: var(--ink);
    font-weight: 600; font-size: .9rem;
}
.ed .bk-cal-opt:hover { background: var(--surface-sunk); }
.ed .bk-cal-opt i { width: 1.1rem; text-align: center; color: var(--navy); }
.ed .bk-cal-opt:first-child i { color: var(--red); }
@media (max-width: 560px) { .ed .bk-addcal, .ed .bk-addcal > summary { width: 100%; } .ed .bk-cal-menu { left: 0; right: 0; } }
.ed .bk-confirm-help { color: var(--muted); font-size: .85rem; margin: 0; }
.ed .bk-confirm-more { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1.5rem; flex-wrap: wrap; }
.ed .bk-confirm-more a { font-weight: 700; color: var(--navy); text-decoration: none; }

.ed .bk-manage h1 { font-size: clamp(1.5rem, 3vw, 2rem); margin: .2rem 0 1rem; }
.ed .bk-manage-status { display: inline-flex; align-items: center; gap: .5rem; padding: .5rem 1rem; border-radius: 999px; font-weight: 700; font-size: .9rem; margin-bottom: 1.5rem; }
.ed .bk-status-active { background: rgba(38,32,97,.1); color: var(--navy); }
.ed .bk-status-cancelled { background: rgba(237,31,38,.1); color: #a3161b; }
.ed .bk-status-past { background: var(--surface-sunk); color: var(--muted); }
.ed .bk-manage-section { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.ed .bk-manage-section h3 { font-size: 1.1rem; margin: 0 0 .5rem; }
.ed .bk-manage-danger h3 { color: var(--red); }
.ed .bk-cancel-btn { color: var(--red); border-color: rgba(237,31,38,.4); }

/* responsive */
@media (max-width: 900px) {
    .ed .bk-layout { grid-template-columns: 1fr; }
    .ed .bk-summary { position: static; }
    .ed .bk-grid, .ed .bk-webinars { grid-template-columns: 1fr; }
    .ed .bk-flow { grid-template-columns: 1fr; gap: 1rem; }
    .ed .bk-flow-line { display: none; }
    .ed .bk-flow-step { display: flex; align-items: center; gap: 1rem; text-align: left; padding: 0; }
    .ed .bk-flow-icon { margin-bottom: 0; flex: none; width: 3.4rem; height: 3.4rem; font-size: 1.15rem; }
}
@media (min-width: 601px) and (max-width: 900px) {
    .ed .bk-grid, .ed .bk-webinars { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
    .ed .bk-field-row { grid-template-columns: 1fr; }
    .ed .bk-confirm-row { flex-direction: column; gap: .2rem; }
    .ed .bk-confirm-val { text-align: left; }
}

/* "Reach us directly" cards on contact: full-weight brand backgrounds. */
.ed a.office-card.contact-line--navy,
.ed a.office-card.contact-line--red {
    color: #fff; border: none;
    padding: 1rem 1.25rem; border-radius: var(--radius-sm);
    box-shadow: var(--shadow-sm); transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.ed a.office-card.contact-line--navy { background: var(--navy); }
.ed a.office-card.contact-line--red { background: var(--red); }
.ed a.office-card.contact-line--navy svg,
.ed a.office-card.contact-line--red svg { color: #fff; }
.ed a.office-card.contact-line--navy:hover,
.ed a.office-card.contact-line--red:hover {
    transform: translateY(-3px); box-shadow: var(--shadow); filter: brightness(1.06); color: #fff;
}

/* Reusable sticky sidebar for two-column layouts where a short column would
   otherwise hang beside a tall one (contact, service pages, etc.).
   Needs the row to be align-items:flex-start. Goes static on narrow screens. */
.ed .sticky-aside { position: sticky; top: 6.5rem; }
@media (max-width: 900px) { .ed .sticky-aside { position: static; } }

/* Match widget: back button, Font Awesome field icons, and live count badge. */
.mw-back { flex: none; width: 1.9rem; height: 1.9rem; border-radius: 50%; border: none; background: rgba(255,255,255,0.14); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.mw-back:hover { background: rgba(255,255,255,0.24); }
.mw-back svg { width: 0.9rem; height: 0.9rem; }
.mw-back[hidden] { display: none; }
.mw-choice { position: relative; }
.mw-choice i { font-size: 1.35rem; line-height: 1; color: var(--navy, #262061); }
.mw-choice:hover i { color: var(--red, #ed1f26); }
.mw-choice-count { position: absolute; top: 0.4rem; right: 0.4rem; min-width: 1.15rem; height: 1.15rem; padding: 0 0.28rem; border-radius: 999px; background: var(--navy, #262061); color: #fff; font-size: 0.66rem; font-weight: 800; display: grid; place-items: center; }

/* On wider screens give the match popup more room and lay the field grid out
   4-up, so the 10 study areas fit in fewer rows with less scrolling. Only the
   field step widens; the 5-item level grid and single-column destinations keep
   their layout. */
@media (min-width: 640px) {
    .mw-panel { width: min(34rem, calc(100vw - 2rem)); }
    #mwFieldGrid { grid-template-columns: repeat(4, 1fr); }
}

/* Offices section: a darkened campus photo behind the existing navy veil and dot
   texture, so the section gains depth while the white text and globe stay
   legible. Layer order (top-to-bottom): dots, dark veil, photo.
   Must match the specificity of the .ed-footer rule above (this section always
   renders inside <footer class="ed-footer">) or the dots-only background wins. */
.ed-footer .office-map-section--footer,
.office-map-section--footer {
    background-image:
        radial-gradient(rgba(255,255,255,.1) 1px, transparent 1px),
        linear-gradient(rgba(16,13,43,.82), rgba(16,13,43,.9)),
        url('/images/new/students-participating-in-class-discussion-with-fl-2026-03-24-07-33-45-utc.jpg') !important;
    background-size: 24px 24px, cover, cover !important;
    background-position: 0 0, center, center !important;
    background-repeat: repeat, no-repeat, no-repeat !important;
}

/* Split CTA (about page): image on one half, copy + buttons on the other. */
.ed .cta-split { text-align: left; }
.ed .cta-split-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.ed .cta-split-media { border-radius: var(--radius-lg); overflow: hidden; aspect-ratio: 4 / 3; box-shadow: var(--shadow); }
.ed .cta-split-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ed .cta-split-copy h2 { margin: 0 0 1rem; max-width: none; }
.ed .cta-split-copy p { color: var(--muted); margin: 0 0 2rem; max-width: 34rem; }
.ed .cta-split .cta-btns { justify-content: flex-start; }
@media (max-width: 800px) {
    .ed .cta-split-grid { grid-template-columns: 1fr; }
    .ed .cta-split { text-align: center; }
    .ed .cta-split-media { aspect-ratio: 16 / 9; }
    .ed .cta-split-copy p { margin-left: auto; margin-right: auto; }
    .ed .cta-split .cta-btns { justify-content: center; }
}

/* Journey summary: keep the not-yet/other steps clearly legible (the fade plus
   the default pale node made them hard to read). Active step still stands out
   via its solid navy node. */
.ed .ps-summary .ps-node { border-color: var(--line-strong); color: var(--muted); }
.ed .ps-summary .ps-rail-title { color: var(--ink); }

/* Full-bleed split CTA: the image runs flush to the section edge (no rounding,
   no margin) and fills ~40% of the width; the copy + buttons sit on the other
   side. The section itself is the grid, so the image reaches top and bottom too.
   Each section may set its own photo via `style="--cta-img:url(...)"`; otherwise
   a shared students photo is used. Applies to every .cta-band. */
.ed .cta-band {
    display: grid;
    grid-template-columns: 1fr 1fr;   /* half image, half copy */
    align-items: stretch;
    padding: 0;                        /* image must reach the edges */
    overflow: hidden;
    text-align: left;
}
.ed .cta-band::before {
    content: "";
    align-self: stretch;
    min-height: 24rem;
    background-image: var(--cta-img, url('/images/new/african-university-students-standing-proud-campus.jpg'));
    background-size: cover;
    background-position: center;
}
.ed .cta-band .wrap {
    max-width: none;
    margin: 0;
    padding: clamp(2.5rem, 6vw, 5rem) clamp(1.5rem, 5vw, 4.5rem);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    text-align: left;
}
.ed .cta-band h2 { max-width: none; margin: 0 0 1rem; }
.ed .cta-band p { max-width: 40rem; margin: 0 0 2rem; color: var(--muted); }
.ed .cta-band .cta-btns { justify-content: flex-start; }

@media (max-width: 800px) {
    .ed .cta-band { grid-template-columns: 1fr; }        /* image on top, copy below */
    .ed .cta-band::before { min-height: 14rem; }
    .ed .cta-band .wrap { align-items: center; text-align: center; }
    .ed .cta-band p { margin-left: auto; margin-right: auto; }
    .ed .cta-band .cta-btns { justify-content: center; }
}

/* ---------------------------------------------------------------------------
   University filter sidebar — colourful, high-contrast version.
   Count badges are pill-shaped and tinted per partnership tier; the selected
   row lights up; each tier carries its brand colour dot. Uses :has() (widely
   supported) so no markup changes are needed.
   --------------------------------------------------------------------------- */

/* Header: a touch of gradient behind the navy. */
.ed .uvd-sidebar-head { background: linear-gradient(135deg, #2b2570 0%, #1a1547 100%); }
.ed .uvd-sidebar-head button { transition: color .15s ease; }
.ed .uvd-sidebar-head button:hover { color: #ffd9db; }

/* Group titles get a small brand tick. */
.ed .uvd-filter-title { display: flex; align-items: center; gap: .45rem; text-transform: uppercase; letter-spacing: .04em; font-size: .74rem; color: var(--muted); }
.ed .uvd-filter-title::before { content: ""; width: .55rem; height: .55rem; border-radius: 2px; background: var(--red); flex: none; }

/* Rows behave like tappable chips. */
.ed .uvd-radio { border-radius: 10px; padding: .5rem .55rem; transition: background .15s ease; }
.ed .uvd-radio:hover { background: var(--surface-sunk); }
.ed .uvd-radio:has(input:checked) { background: rgba(38,32,97,.07); font-weight: 700; }

/* Count → pill badge (default navy-tinted). */
.ed .uvd-radio em {
    background: var(--surface-sunk); color: var(--navy);
    padding: .12rem .55rem; border-radius: 999px; min-width: 1.7rem; text-align: center;
    font-size: .76rem; font-weight: 800;
}
.ed .uvd-radio:has(input[value=""]) em { background: var(--navy); color: #fff; }

/* Per-tier colour: a dot before the label and a matching count badge. */
.ed .uvd-radio span { position: relative; }
.ed .uvd-radio:has(input[value="strategic"]) span::before,
.ed .uvd-radio:has(input[value="preferred"]) span::before,
.ed .uvd-radio:has(input[value="standard"]) span::before,
.ed .uvd-radio:has(input[value="network"]) span::before {
    content: ""; display: inline-block; width: .6rem; height: .6rem; border-radius: 50%;
    margin-right: .5rem; vertical-align: middle;
}
.ed .uvd-radio:has(input[value="strategic"]) span::before { background: #262061; }
.ed .uvd-radio:has(input[value="preferred"]) span::before { background: #ed1f26; }
.ed .uvd-radio:has(input[value="standard"]) span::before  { background: #64748b; }
.ed .uvd-radio:has(input[value="network"]) span::before   { background: #94a3b8; }

.ed .uvd-radio:has(input[value="strategic"]) em { background: #262061; color: #fff; }
.ed .uvd-radio:has(input[value="preferred"]) em { background: #ed1f26; color: #fff; }
.ed .uvd-radio:has(input[value="standard"]) em  { background: #64748b; color: #fff; }
.ed .uvd-radio:has(input[value="network"]) em   { background: #94a3b8; color: #fff; }

/* "Switch destination" reads as a real link/button. */
.ed .uvd-filter-more summary { display: inline-flex; align-items: center; gap: .35rem; padding: .35rem .1rem; }
.ed .uvd-filter-more summary::after { content: "\203A"; font-weight: 800; transition: transform .15s ease; }
.ed .uvd-filter-more[open] summary::after { transform: rotate(90deg); }
.ed .uvd-filter-other em { background: var(--surface-sunk); color: var(--navy); padding: .1rem .5rem; border-radius: 999px; font-weight: 800; }

/* Services index: photo cards with a brand veil and white text (same treatment
   as the booking session cards). Overrides the plain .icon-card look. */
.ed .svc-photo-card {
    position: relative; overflow: hidden; isolation: isolate;
    border-radius: var(--radius); text-decoration: none;
    background-size: cover; background-position: center; background-repeat: no-repeat;
    box-shadow: var(--shadow); transition: transform .25s ease, box-shadow .25s ease;
    min-height: 22rem; padding: 0; border: none;
}
.ed .svc-photo-veil { position: absolute; inset: 0; z-index: 0; transition: opacity .25s ease; }
/* Match the booking cards exactly: lighter at the top so more of the photo
   shows, deepening toward the bottom to keep the text legible. */
.ed .svc-photo-card.bk-accent-navy .svc-photo-veil { background: linear-gradient(150deg, rgba(38,32,97,.62) 0%, rgba(38,32,97,.9) 62%, rgba(16,13,41,.96) 100%); }
.ed .svc-photo-card.bk-accent-red .svc-photo-veil { background: linear-gradient(150deg, rgba(180,18,26,.62) 0%, rgba(207,22,30,.88) 60%, rgba(38,32,97,.95) 100%); }
.ed .svc-photo-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }
.ed .svc-photo-card:hover .svc-photo-veil { opacity: .93; }

.ed .svc-photo-inner { position: relative; z-index: 1; display: flex; flex-direction: column; height: 100%; padding: 1.6rem 1.5rem; color: #fff; }
.ed .svc-photo-card .ic-num { font-size: .8rem; font-weight: 800; color: rgba(255,255,255,.6); letter-spacing: .05em; margin-bottom: .8rem; }
.ed .svc-photo-card .ic-icon {
    width: 3rem; height: 3rem; border-radius: 12px; display: grid; place-items: center;
    background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.22);
    margin-bottom: 1rem;
}
.ed .svc-photo-card .ic-icon svg { width: 1.4rem; height: 1.4rem; color: #fff; }
.ed .svc-photo-card h3 { color: #fff; font-size: 1.2rem; margin: 0 0 .5rem; line-height: 1.2; }
.ed .svc-photo-card p { color: rgba(255,255,255,.85); font-size: .92rem; margin: 0; }
.ed .svc-photo-badge {
    align-self: flex-start; margin-top: 1rem;
    font-size: .78rem; font-weight: 700; color: #fff;
    background: rgba(255,255,255,.15); border: 1px solid rgba(255,255,255,.22);
    padding: .35rem .75rem; border-radius: 999px;
}
.ed .svc-photo-link {
    margin-top: auto; padding-top: 1.2rem;
    display: inline-flex; align-items: center; gap: .4rem; font-weight: 800; color: #fff;
}
.ed .svc-photo-link { transition: gap .2s ease; }
.ed .svc-photo-card:hover .svc-photo-link { gap: .7rem; }

/* Centre the study-destination header block. The generic `.ed .sec-head` gives it
   max-width:40rem with no auto margins, so it was pinned left while the toolbar
   below centred on full width — the two didn't line up. */
.study-destination-hub .sec-head {
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

/* Newsletter: make the Subscribe button span the full width, matching the input
   (it already wraps to its own line in the footer column). */
.ed-newsletter button { flex: 1 1 100%; width: 100%; justify-content: center; }

/* ---------------------------------------------------------------------------
   Booking calendar picker — a month grid of open dates, then that day's times.
   Reuses .bk-slot / .bk-slot-grid for the time chips.
   --------------------------------------------------------------------------- */
/* Card frame so the calendar reads as a distinct, tactile control. */
.ed .bk-cal {
    max-width: 24rem; padding: 1.1rem 1.15rem 1.25rem;
    border: 1px solid var(--line); border-radius: 16px;
    background: linear-gradient(180deg, var(--surface) 0%, var(--surface-sunk) 100%);
    box-shadow: var(--shadow-sm);
}
.ed .bk-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.ed .bk-cal-title { font-weight: 800; font-size: 1.05rem; color: var(--navy); }
.ed .bk-cal-nav {
    width: 2.1rem; height: 2.1rem; border-radius: 50%; border: 0;
    background: var(--navy); color: #fff; cursor: pointer; font-size: .8rem;
    display: grid; place-items: center; box-shadow: 0 6px 14px -6px rgba(38,32,97,.6);
    transition: transform .15s ease, background .15s ease, opacity .15s ease;
}
.ed .bk-cal-nav:hover:not(:disabled) { background: var(--red); transform: translateY(-1px); }
.ed .bk-cal-nav:disabled { opacity: .25; cursor: not-allowed; box-shadow: none; }

.ed .bk-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: .35rem; }
.ed .bk-cal-dow { text-align: center; font-size: .68rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--navy); opacity: .55; padding-bottom: .4rem; }
.ed .bk-cal-pad { aspect-ratio: 1; }
.ed .bk-cal-day {
    aspect-ratio: 1; display: grid; place-items: center; border-radius: 11px;
    font-size: .88rem; font-weight: 700; border: 1.5px solid transparent; background: none;
}
/* Dates with no availability (or in the past): quietly dimmed, not clickable. */
.ed .bk-cal-day.is-off { color: rgba(27,23,64,.28); }
/* Bookable dates POP: tinted fill, brand ring, and a clear dot. */
.ed button.bk-cal-day.is-available {
    color: var(--navy); cursor: pointer; position: relative;
    background: rgba(38,32,97,.06); border-color: rgba(38,32,97,.16);
    transition: transform .15s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.ed button.bk-cal-day.is-available::after { content: ""; position: absolute; bottom: .34rem; width: 5px; height: 5px; border-radius: 50%; background: var(--red); }
.ed button.bk-cal-day.is-available:hover { transform: translateY(-2px); background: rgba(237,31,38,.1); border-color: var(--red); box-shadow: 0 8px 18px -8px rgba(237,31,38,.5); }
/* Selected date: solid navy with a glow so it clearly stands out. */
.ed button.bk-cal-day.is-selected {
    background: var(--navy); border-color: var(--navy); color: #fff;
    box-shadow: 0 10px 22px -8px rgba(38,32,97,.75); transform: translateY(-1px);
}
.ed button.bk-cal-day.is-selected::after { background: #fff; }

.ed .bk-cal-times { margin-top: 1.5rem; }
.ed .bk-cal-times-head { font-size: .92rem; font-weight: 800; color: var(--navy); margin: 0 0 .8rem; display: inline-flex; align-items: center; gap: .5rem; }
.ed .bk-cal-times-head::before { content: ""; width: .55rem; height: .55rem; border-radius: 2px; background: var(--red); }

/* Apply page: full-brand country cards (alternating navy/red), and the form
   column sticks so it balances the taller "what happens next" column. */
.ed .apply-countries { display: flex; flex-direction: column; gap: .6rem; }
.ed .apply-country {
    display: flex; justify-content: space-between; align-items: center;
    padding: .95rem 1.15rem; border-radius: 11px; text-decoration: none;
    font-weight: 700; font-size: .95rem; color: #fff;
    box-shadow: var(--shadow-sm); transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.ed .apply-country--navy { background: var(--navy); }
.ed .apply-country--red { background: var(--red); }
.ed .apply-country:hover { transform: translateX(4px); filter: brightness(1.07); box-shadow: var(--shadow); color: #fff; }
.ed .apply-country-arrow { color: rgba(255,255,255,.85); font-size: 1.1rem; transition: transform .2s ease; }
.ed .apply-country:hover .apply-country-arrow { transform: translateX(3px); color: #fff; }

/* Service photo cards: force the "Explore Service" link white and prominent.
   The generic .card-link (red, from a later stylesheet) was winning and turned
   invisible on the red cards; this higher-specificity rule overrides it. */
.ed .svc-photo-card .card-link { color: #fff; font-weight: 800; }
.ed .svc-photo-card .card-link svg { color: #fff; width: 1.05rem; height: 1.05rem; }
.ed .svc-photo-card:hover .card-link { text-decoration: underline; text-underline-offset: 3px; }

/* ===========================================================================
   Find a course — IDP-style course search: filter sidebar + results grid.
   =========================================================================== */
.ed .cf-hero { padding: clamp(2.5rem, 5vw, 3.5rem) 0 1.5rem; }
.ed .cf-hero h1 { font-size: clamp(1.9rem, 4vw, 2.8rem); margin: .3rem 0 .6rem; }
.ed .cf-hero .lede { color: var(--muted); max-width: 46rem; }

.ed .cf-layout { display: grid; grid-template-columns: 17rem 1fr; gap: 2rem; align-items: start; padding-bottom: 4rem; }

/* --- Filters sidebar --- */
.ed .cf-filters { position: sticky; top: 5.5rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); overflow: hidden; }
.ed .cf-filters-head { display: flex; align-items: center; justify-content: space-between; padding: .9rem 1.1rem; background: var(--navy); color: #fff; font-weight: 800; font-size: .95rem; }
.ed .cf-filters-head i { margin-right: .4rem; }
.ed .cf-reset { background: none; border: 0; color: #fff; font-weight: 700; font-size: .8rem; cursor: pointer; text-decoration: underline; }
.ed .cf-fgroup { padding: 1rem 1.1rem; border-bottom: 1px solid var(--line); }
.ed .cf-fgroup--last { border-bottom: 0; }
.ed .cf-flabel { display: block; font-size: .74rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); margin: 0 0 .6rem; }
.ed .cf-search { display: flex; align-items: center; gap: .5rem; border: 1px solid var(--line-strong); border-radius: 9px; padding: .5rem .7rem; }
.ed .cf-search i { color: var(--muted); font-size: .82rem; }
.ed .cf-search input { border: 0; outline: 0; width: 100%; font: inherit; font-size: .88rem; background: none; color: var(--ink); }
.ed .cf-check { display: flex; align-items: center; gap: .55rem; padding: .3rem 0; font-size: .88rem; color: var(--ink); cursor: pointer; }
.ed .cf-check input { width: 1rem; height: 1rem; accent-color: var(--navy); flex: none; }
.ed .cf-select { width: 100%; padding: .55rem .7rem; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--surface); font: inherit; font-size: .88rem; color: var(--ink); }

/* --- Results --- */
.ed .cf-results-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.2rem; }
.ed .cf-results-head p { margin: 0; color: var(--muted); font-size: .95rem; }
.ed .cf-results-head strong { color: var(--navy); font-size: 1.1rem; }
.ed .cf-filters-toggle { display: none; align-items: center; gap: .4rem; background: var(--navy); color: #fff; border: 0; border-radius: 999px; padding: .5rem 1rem; font-weight: 700; font-size: .85rem; cursor: pointer; }

.ed .cf-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(15.5rem, 1fr)); gap: 1.1rem; }
.ed .cf-card { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); padding: 1.2rem; box-shadow: var(--shadow-sm); transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.ed .cf-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: var(--line-strong); }
.ed .cf-card-top { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: .8rem; }
.ed .cf-logo { width: 3rem; height: 3rem; border-radius: 10px; border: 1px solid var(--line); background: #fff; display: grid; place-items: center; overflow: hidden; flex: none; }
.ed .cf-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.ed .cf-logo-initials { font-weight: 800; color: var(--navy); font-size: .82rem; }
.ed .cf-heart { background: none; border: 0; color: var(--red); font-size: 1.1rem; cursor: pointer; padding: .2rem; }
.ed .cf-heart.is-saved { color: var(--red); }
.ed .cf-card-title { font-size: 1.02rem; margin: 0 0 .25rem; line-height: 1.25; color: var(--navy); }
.ed .cf-card-uni { font-size: .86rem; font-weight: 700; color: var(--ink); margin: 0 0 .6rem; }
.ed .cf-badge { display: inline-flex; align-items: center; gap: .35rem; align-self: flex-start; font-size: .72rem; font-weight: 800; padding: .28rem .6rem; border-radius: 999px; margin-bottom: .7rem; }
.ed .cf-badge--sch { background: rgba(217,164,65,.14); color: #9a7420; }
.ed .cf-card-meta { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; gap: .4rem; flex: 1; }
.ed .cf-card-meta li { display: flex; align-items: baseline; gap: .5rem; font-size: .84rem; color: var(--muted); }
.ed .cf-card-meta i { color: var(--navy); width: 1rem; text-align: center; flex: none; font-size: .8rem; }
.ed .cf-card-btn { display: block; text-align: center; padding: .65rem; border: 1.5px solid var(--navy); border-radius: 999px; color: var(--navy); font-weight: 700; font-size: .88rem; text-decoration: none; transition: background .15s ease, color .15s ease; }
.ed .cf-card-btn:hover { background: var(--navy); color: #fff; }
.ed .cf-empty { text-align: center; color: var(--muted); padding: 3rem 1rem; font-size: 1rem; }
.ed .cf-empty i { color: var(--navy); margin-right: .4rem; }

@media (max-width: 860px) {
    .ed .cf-layout { grid-template-columns: 1fr; }
    .ed .cf-filters { position: fixed; inset: 0 auto 0 0; z-index: 80; width: min(20rem, 88vw); border-radius: 0; transform: translateX(-100%); transition: transform .25s ease; overflow-y: auto; box-shadow: var(--shadow-lg); }
    .ed .cf-filters.is-open { transform: none; }
    .ed .cf-filters-toggle { display: inline-flex; }
}
.ed .cf-flag { width: 1.1rem; height: .78rem; object-fit: cover; border-radius: 2px; vertical-align: -1px; box-shadow: 0 0 0 1px rgba(0,0,0,.06); }
.ed .cf-check .cf-flag { margin-right: .1rem; }

/* Universities shown as equal partners: one neutral badge, no rank colours. */
.ed .uvd-tier.uvd-tier--partner { background: rgba(38,32,97,.08); color: var(--navy); border: 1px solid rgba(38,32,97,.16); }
.ed .uvd-count-label { margin: 0; color: var(--muted); font-size: .92rem; }
.ed .uvd-count-label strong { color: var(--navy); font-size: 1.05rem; }

/* Destination page: section tabs live inside the floating feature card. */
html { scroll-behavior: smooth; }
.ed .fs-tabs {
    display: flex; gap: .25rem; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none;
    background: var(--navy); border-radius: 14px; padding: .4rem .5rem; margin-top: .6rem;
    box-shadow: 0 16px 34px -20px rgba(38,32,97,.5);
}
.ed .fs-tabs::-webkit-scrollbar { display: none; }
.ed .fs-tabs a {
    flex: none; color: rgba(255,255,255,.75); font-weight: 700; font-size: .85rem;
    letter-spacing: .02em; padding: .55rem 1rem; border-radius: 999px; white-space: nowrap;
    transition: color .2s ease, background .2s ease;
}
.ed .fs-tabs a:hover { color: #fff; background: rgba(255,255,255,.10); }
.ed .fs-tabs a.is-active { color: var(--navy); background: #fff; }
.ed #d-overview, .ed #d-universities, .ed #d-scholarships,
.ed #d-compare, .ed #d-enquire { scroll-margin-top: 96px; }
/* Find a Course — browse by field of study */
.ed .fos-search { position: relative; max-width: 34rem; margin-top: 1.4rem; }
.ed .fos-search svg { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); width: 1.1rem; height: 1.1rem; color: var(--muted); }
.ed .fos-search input { width: 100%; padding: .85rem 1rem .85rem 2.6rem; border: 1px solid var(--line-strong, var(--line)); border-radius: 999px; font-size: .95rem; background: var(--surface); color: var(--ink); }
.ed .fos-search input:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(38,32,97,.12); }
.ed .fos-grid { gap: 1.2rem; }
.ed a.fos-card { display: flex; flex-direction: column; align-items: flex-start; text-decoration: none; color: inherit; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.ed a.fos-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px -20px rgba(38,32,97,.4); border-color: var(--navy); }
.ed a.fos-card h3 { font-size: 1.08rem; margin: .2rem 0 .4rem; color: var(--navy); }
.ed a.fos-card p { font-size: .9rem; color: var(--muted); line-height: 1.5; margin: 0 0 1rem; }
.ed a.fos-card .fos-cta { margin-top: auto; font-size: .85rem; font-weight: 800; color: var(--red); display: inline-flex; align-items: center; gap: .4rem; }
.ed a.fos-card:hover .fos-cta i { transform: translateX(3px); }
.ed a.fos-card .fos-cta i { transition: transform .2s ease; }
.ed .fos-empty { text-align: center; color: var(--muted); padding: 2rem 0; }

/* WhatsApp button on each office directory card */
.ed .office-card-actions { display:flex; gap:.7rem; align-items:center; flex-wrap:wrap; }
.ed .office-card-actions .office-card-cta { flex:1 1 auto; }
.ed .office-card-whatsapp { flex:none; display:inline-flex; align-items:center; gap:.45rem; padding:.8rem 1.2rem; border-radius:999px; background:#25d366; color:#fff!important; font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; text-decoration:none!important; box-shadow:0 4px 16px rgba(37,211,102,.4); transition:transform .25s ease, box-shadow .25s ease; }
.ed .office-card-whatsapp:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(37,211,102,.5); }
.ed .office-card-whatsapp i { font-size:1rem; }

/* Persistent "Book a Session" floating button (bottom-left, clear of the WhatsApp bubble). */
.book-fab { position:fixed; left:1.5rem; bottom:1.5rem; z-index:90; display:inline-flex; align-items:center; gap:.5rem; background:#262061; color:#fff; font-weight:800; font-size:.9rem; padding:.85rem 1.4rem; border-radius:999px; box-shadow:0 12px 28px rgba(38,32,97,.42); text-decoration:none; transition:transform .2s ease, box-shadow .2s ease; }
.book-fab:hover { transform:translateY(-2px); box-shadow:0 16px 38px rgba(38,32,97,.55); color:#fff; }
.book-fab svg { width:1.05rem; height:1.05rem; }
@media (max-width:560px){ .book-fab { left:1rem; bottom:1rem; padding:.75rem 1.1rem; font-size:.82rem; } }

/* Study abroad fair schedule: one card per city on the tour. */
.fair-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:1rem; }
.fair-card { position:relative; border:1px solid rgba(38,32,97,.12); border-radius:14px; padding:1.15rem 1.25rem; background:#fff; box-shadow:0 4px 14px rgba(38,32,97,.05); transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.fair-card:hover { transform:translateY(-3px); box-shadow:0 14px 30px rgba(38,32,97,.12); border-color:rgba(237,31,38,.35); }
.fair-card-date { display:inline-block; font-size:.74rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:#ed1f26; background:rgba(237,31,38,.08); padding:.3rem .6rem; border-radius:999px; margin-bottom:.7rem; }
.fair-card-city { font-family:var(--font-display); font-size:1.25rem; line-height:1.15; color:#262061; margin:0 0 .5rem; }
.fair-card-city span { display:block; font-family:var(--font-body,inherit); font-size:.78rem; font-weight:600; letter-spacing:.02em; text-transform:uppercase; color:var(--muted); margin-top:.15rem; }
.fair-card-venue { display:flex; align-items:center; gap:.4rem; font-size:.9rem; color:var(--muted); margin:0; }
.fair-card-venue svg { flex:none; color:#262061; }
