/*
  Editorial alignment + density. Linked last (after each page's own stylesheet) so that
  every public page shares ONE content edge, and the desktop layout is scaled to ~75%.
*/

/* --ed-zoom is the page zoom (1 = none); vh units are NOT scaled by zoom, so full-screen heights divide by it */
:root { --ed-zoom: 1; --ed-fullh: calc(100vh / var(--ed-zoom) - var(--ed-nav-h)); }

/* ---------- Density: public pages render at 85% on desktop ----------
   (matches a 75% browser zoom; phones and tablets are untouched, portal/admin untouched) */
@media (min-width: 1024px) {
  html:has(body:not(.admin-figma-portal):not(.portal-experience)) { zoom: .85; --ed-zoom: .85; }
}

/* ---------- One shared content edge ----------
   --ed-pad-x resolves against the width of the element it is used on, so use it only on
   full-width wrappers: text then starts at max(gutter, (width - max) / 2) everywhere. */
:root { --ed-pad-x: max(var(--ed-gutter), calc((100% - var(--ed-max)) / 2)); }

/* navigation + footer */
body:not(.admin-figma-portal) .sel-nav,
body:not(.admin-figma-portal) .sel-nav.sel-nav--scrolled { padding-inline: var(--ed-pad-x); }
body:not(.admin-figma-portal) .pv-footer { padding-inline: var(--ed-gutter); }
body:not(.admin-figma-portal) .pv-footer__inner,
body:not(.admin-figma-portal) .pv-footer__bottom { width: 100%; max-width: var(--ed-max); margin-inline: auto; padding-inline: 0; }

/* logo */
.sel-nav__logo { display: inline-flex; align-items: center; flex: none; }
.sel-nav__logo-img { display: block; width: auto; height: 62px; }
.pv-footer__logo { display: inline-block; margin-bottom: 20px; }
.pv-footer__logo img { display: block; width: auto; height: 120px; }
@media (max-width: 860px) { .sel-nav__logo-img { height: 50px; } }

/* home / about trust strip */
body:not(.admin-figma-portal) .pv-trust__inner { max-width: none; width: 100%; padding-inline: var(--ed-pad-x); }

/* shop */
body:not(.admin-figma-portal) .sh-page .sh-hero { padding-left: var(--ed-pad-x); }
body:not(.admin-figma-portal) .sh-page .sh-hero__content { padding-left: 0; }
body:not(.admin-figma-portal) .bq-toolbar__inner,
body:not(.admin-figma-portal) .bq-section__inner { width: 100%; max-width: none; margin-inline: 0; padding-inline: var(--ed-pad-x); }
body:not(.admin-figma-portal) .bq-help { width: calc(100% - 2 * var(--ed-gutter)); max-width: var(--ed-max); margin-inline: auto; }

/* cart / checkout */
body:not(.admin-figma-portal) .ct-hero { padding-inline: var(--ed-pad-x); }
body:not(.admin-figma-portal) .ct-hero__content { width: 100%; max-width: none; margin: 0; }
body:not(.admin-figma-portal) .ct-stepbar { padding-inline: var(--ed-pad-x); }
body:not(.admin-figma-portal) .ct-body { width: 100%; max-width: none; margin-inline: 0; padding-inline: var(--ed-pad-x); }

/* ---------- Compact vertical rhythm ---------- */
body:not(.admin-figma-portal):not(.portal-experience) :where(h1) { font-size: clamp(2.4rem, 5vw, 4.4rem); }
body:not(.admin-figma-portal):not(.portal-experience) :where(h2) { font-size: clamp(1.9rem, 3.2vw, 2.9rem); }
.ed-section { padding-block: clamp(56px, 7vw, 104px); }

/* home hero: the section carries the shared edge, the text column sits inside it */
body:not(.admin-figma-portal) .pv-home-hero { padding-left: var(--ed-pad-x); }
body:not(.admin-figma-portal) .pv-home-hero .pv-marquee { margin-left: calc(-1 * var(--ed-pad-x)); }

/* ---------- Full-screen sections (marketing pages) ----------
   Every home / programmes / about / achievements band fills the screen under the nav and keeps its
   content vertically centred, so the page never rests on half of one section and half of the next. */
body:not(.admin-figma-portal) .pv-home-hero,
body:not(.admin-figma-portal) main > .ed-band,
body:not(.admin-figma-portal) main:has(> .ed-band) > .figma-page-hero {
  min-height: var(--ed-fullh);
  box-sizing: border-box;
}
body:not(.admin-figma-portal) main > .ed-band,
body:not(.admin-figma-portal) main:has(> .ed-band) > .figma-page-hero { display: flex; flex-direction: column; justify-content: center; }
body:not(.admin-figma-portal) main > .ed-band { padding-block: clamp(40px, 5vw, 72px); }
body:not(.admin-figma-portal) main > .ed-band > .pv-section__head { flex: none; }
body:not(.admin-figma-portal) main > .ed-band.pv-cta { align-items: center; text-align: center; }
body:not(.admin-figma-portal) main:has(> .ed-band) > .figma-page-hero > div { margin-block: auto; }
@media (max-width: 1023px) {
  body:not(.admin-figma-portal) .pv-home-hero, body:not(.admin-figma-portal) main > .ed-band, body:not(.admin-figma-portal) main:has(> .ed-band) > .figma-page-hero { min-height: 0; }
}

/* ---------- Home hero: full-width photograph, text over it (the earlier, fuller look) ---------- */
body:not(.admin-figma-portal) .pv-home-hero { display: flex; align-items: center; padding-left: var(--ed-pad-x); background: var(--ed-plum-deep); }
body:not(.admin-figma-portal) .pv-home-hero .pv-home-hero__media { position: absolute; inset: 0; width: 100%; z-index: 0; }
body:not(.admin-figma-portal) .pv-home-hero .pv-home-hero__image { object-position: 50% 30%; }
body:not(.admin-figma-portal) .pv-home-hero .pv-home-hero__shade {
  inset: 0; width: 100%; z-index: 1;
  background: linear-gradient(90deg, rgba(26, 10, 16, .86) 0, rgba(26, 10, 16, .6) 34%, rgba(26, 10, 16, .12) 72%, rgba(26, 10, 16, .0) 100%),
              linear-gradient(0deg, rgba(26, 10, 16, .7) 0, transparent 30%);
}
body:not(.admin-figma-portal) .pv-home-hero::before { inset: 0; }
body:not(.admin-figma-portal) .pv-home-hero .pv-home-hero__content { padding-left: 0; padding-right: 0; max-width: 44rem; }
body:not(.admin-figma-portal) .pv-home-hero .pv-marquee { right: 0; width: 100%; margin-left: calc(-1 * var(--ed-pad-x)); left: 0; }
body:not(.admin-figma-portal) .pv-home-hero .ed-motes { right: 0; }
@media (max-width: 860px) {
  body:not(.admin-figma-portal) .pv-home-hero .pv-home-hero__shade { background: linear-gradient(0deg, rgba(26, 10, 16, .9) 0, rgba(26, 10, 16, .55) 55%, rgba(26, 10, 16, .25) 100%); }
}

/* Headlines wrap naturally (no forced breaks); balance keeps the lines even */
body:not(.admin-figma-portal) :where(h1, h2, h3) { text-wrap: balance; }
body:not(.admin-figma-portal) :where(p, li) { text-wrap: pretty; }

/* ---------- Keep tall blocks inside one screen: heights follow the viewport ---------- */
:root { --ed-vh: calc(100vh / var(--ed-zoom)); }
@media (min-width: 861px) {
  body:not(.admin-figma-portal) .ed-band .pv-program-card,
  body:not(.admin-figma-portal) .ed-band.pv-section--fit .pv-program-card { aspect-ratio: auto; min-height: 0; height: clamp(300px, calc(var(--ed-vh) - 400px), 540px); }
  body:not(.admin-figma-portal) .ed-band .pv-teacher-feature img { aspect-ratio: auto; width: 100%; height: clamp(320px, calc(var(--ed-vh) - 300px), 560px); object-fit: cover; }
}
body:not(.admin-figma-portal) .pv-home-hero .pv-home-hero__image { object-position: 70% 62%; }

/* inner-page heroes: text stays on the shared left edge while the band fills the screen */
body:not(.admin-figma-portal) main:has(> .ed-band) > .figma-page-hero { align-items: flex-start; }
body:not(.admin-figma-portal) main:has(> .ed-band) > .figma-page-hero > div { margin-inline: 0; align-self: flex-start; }

/* ---------- Use the whole screen: spacing and type follow the viewport height ----------
   (--ed-vh = viewport height in zoomed CSS px; the journey's own svh rules are not zoom-aware and left it short) */
@media (min-width: 1001px) {
  body:not(.admin-figma-portal) .sj-band { height: calc(var(--ed-vh) - var(--ed-nav-h) + 16px); min-height: calc(var(--ed-vh) - var(--ed-nav-h) + 16px); }
  body:not(.admin-figma-portal) .selene-journey { padding-block: clamp(20px, calc(var(--ed-vh) * .036), 48px) clamp(34px, calc(var(--ed-vh) * .05), 64px); gap: clamp(24px, 3vw, 56px); }
  body:not(.admin-figma-portal) .sj-panel { justify-content: space-between; overflow-y: auto; }
}
@media (min-width: 721px) {
  body:not(.admin-figma-portal) .sj-panel { gap: clamp(8px, calc(var(--ed-vh) * .0155), 20px); }
  body:not(.admin-figma-portal) .sj-panel h2 { font-size: clamp(1.9rem, calc(var(--ed-vh) * .048), 3rem); line-height: 1.02; margin: 4px 0; }
  body:not(.admin-figma-portal) .sj-copy { font-size: clamp(13px, calc(var(--ed-vh) * .0145), 15px); line-height: 1.55; }
  body:not(.admin-figma-portal) .sj-chip { padding: clamp(7px, calc(var(--ed-vh) * .009), 11px) 17px; font-size: clamp(12px, calc(var(--ed-vh) * .0135), 14px); }
  body:not(.admin-figma-portal) .sj-field select { padding: clamp(8px, calc(var(--ed-vh) * .01), 12px) 14px; font-size: clamp(13px, calc(var(--ed-vh) * .0145), 15px); }
  body:not(.admin-figma-portal) .sj-hud, body:not(.admin-figma-portal) .sj-up { padding: clamp(10px, calc(var(--ed-vh) * .015), 20px); }
  body:not(.admin-figma-portal) .sj-hud strong { font-size: clamp(21px, calc(var(--ed-vh) * .028), 30px); }
}
@media (min-width: 1024px) {
  body:not(.admin-figma-portal) main > .ed-band { padding-block: clamp(40px, calc(var(--ed-vh) * .08), 120px); }
  body:not(.admin-figma-portal) main > .ed-band .pv-section__head { margin-bottom: clamp(28px, calc(var(--ed-vh) * .06), 76px); }
  body:not(.admin-figma-portal) main > .ed-band .pv-steps { gap: clamp(16px, calc(var(--ed-vh) * .028), 36px); }
  body:not(.admin-figma-portal) main > .ed-band .pv-steps li { padding: clamp(24px, calc(var(--ed-vh) * .04), 52px) clamp(22px, 2.4vw, 40px); }
  body:not(.admin-figma-portal) main > .ed-band :where(p) { font-size: clamp(.9375rem, calc(var(--ed-vh) * .0175), 1.125rem); line-height: 1.75; }
  body:not(.admin-figma-portal) main > .ed-band :where(h2) { font-size: clamp(2.2rem, calc(var(--ed-vh) * .06), 3.8rem); }
  body:not(.admin-figma-portal) main > .ed-band.pv-cta { gap: clamp(8px, calc(var(--ed-vh) * .015), 20px); }
  body:not(.admin-figma-portal) main > .ed-band .pv-programme summary { padding-block: clamp(18px, calc(var(--ed-vh) * .03), 34px); }
}

/* ---------- One type system on every public page: Cormorant for headlines, Inter for everything else ---------- */
body:not(.admin-figma-portal):not(.portal-experience) .pv-footer,
body:not(.admin-figma-portal):not(.portal-experience) .pv-footer :where(a, p, span, small, button, div) { font-family: var(--ed-sans); }
body:not(.admin-figma-portal):not(.portal-experience) .modal-box :where(p, button, span, a) { font-family: var(--ed-sans); }
body:not(.admin-figma-portal) .pv-contact-details { gap: 0; }
body:not(.admin-figma-portal) .pv-contact-details p { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); align-items: baseline; gap: 6px 20px; margin: 0; padding: clamp(14px, calc(var(--ed-vh) * .02), 22px) 0; font-size: 1rem; line-height: 1.6; }
body:not(.admin-figma-portal) .pv-contact-details small { font: 500 .6875rem/1.4 var(--ed-sans); letter-spacing: .18em; text-transform: uppercase; color: var(--ed-oxblood); }
body:not(.admin-figma-portal) .pv-contact-details :where(a, span) { font-family: var(--ed-sans); font-size: 1rem; line-height: 1.6; color: var(--ed-ink); }
body:not(.admin-figma-portal) .pv-contact-form label { font: 500 .6875rem/1.3 var(--ed-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ed-oxblood); }
body:not(.admin-figma-portal) .pv-contact-form :where(input, textarea) { font: 400 .9375rem/1.45 var(--ed-sans); min-height: 50px; }
body:not(.admin-figma-portal) .pv-contact-form textarea { min-height: calc(110px + var(--ed-vh) * .08); }
body:not(.admin-figma-portal) .pv-contact-form__note { font: 400 .8125rem/1.5 var(--ed-sans); color: var(--ed-ink-soft); }
body:not(.admin-figma-portal) .pv-contact-grid h2 { font-size: clamp(2.2rem, calc(var(--ed-vh) * .055), 3.6rem); }
body:not(.admin-figma-portal) .pv-contact-grid .pv-contact-details p > :where(a, span) { font-family: var(--ed-sans) !important; font-size: 1rem !important; font-weight: 400 !important; line-height: 1.6 !important; letter-spacing: 0 !important; }

/* ---------- Contact Us: the whole page (banner, details, map, form) in one screen on desktop ---------- */
@media (min-width: 1024px) {
  body:not(.admin-figma-portal) .figma-page-hero--contact { min-height: 0; padding-block: clamp(20px, calc(var(--ed-vh) * .028), 34px); }
  body:not(.admin-figma-portal) .figma-page-hero--contact > div > p { margin: 0 0 8px; }
  body:not(.admin-figma-portal) .figma-page-hero--contact h1 { font-size: clamp(2.2rem, calc(var(--ed-vh) * .05), 3.4rem); line-height: 1; }
  body:not(.admin-figma-portal) .pv-contact-page { box-sizing: border-box; min-height: calc(var(--ed-vh) - var(--ed-nav-h) - clamp(80px, calc(var(--ed-vh) * .13), 130px)); display: flex; align-items: stretch; padding-block: clamp(20px, calc(var(--ed-vh) * .03), 40px); }
  body:not(.admin-figma-portal) .pv-contact-grid { width: 100%; align-items: stretch; gap: clamp(28px, 4vw, 72px); padding-inline: 0; }
  body:not(.admin-figma-portal) .pv-contact-grid > div:first-child { display: flex; flex-direction: column; min-height: 0; }
  body:not(.admin-figma-portal) .pv-contact-grid h2 { margin: 0 0 clamp(12px, calc(var(--ed-vh) * .02), 22px); font-size: clamp(1.9rem, calc(var(--ed-vh) * .045), 2.8rem); }
  body:not(.admin-figma-portal) .pv-contact-grid .pv-section__kicker { margin-bottom: 10px; }
  body:not(.admin-figma-portal) .pv-contact-details { margin: 0 0 clamp(12px, calc(var(--ed-vh) * .018), 20px); }
  body:not(.admin-figma-portal) .pv-contact-details p { padding: clamp(9px, calc(var(--ed-vh) * .012), 14px) 0; }
  body:not(.admin-figma-portal) .pv-social-links { margin-bottom: clamp(10px, calc(var(--ed-vh) * .015), 18px); }
  body:not(.admin-figma-portal) .pv-map { flex: 1 1 auto; height: auto; min-height: 150px; }
  body:not(.admin-figma-portal) .pv-map iframe { width: 100%; height: 100%; min-height: 150px; border: 0; border-radius: inherit; display: block; }
  body:not(.admin-figma-portal) .pv-contact-form-wrap { display: flex; flex-direction: column; padding: clamp(18px, calc(var(--ed-vh) * .028), 36px) clamp(22px, 2.6vw, 40px); }
  body:not(.admin-figma-portal) .pv-contact-form-wrap h2 { margin-bottom: clamp(8px, calc(var(--ed-vh) * .014), 16px); }
  body:not(.admin-figma-portal) .pv-contact-form { flex: 1 1 auto; display: flex; flex-direction: column; gap: 6px; }
  body:not(.admin-figma-portal) .pv-contact-form label { margin-top: clamp(4px, calc(var(--ed-vh) * .008), 10px); }
  body:not(.admin-figma-portal) .pv-contact-form :where(input) { min-height: clamp(40px, calc(var(--ed-vh) * .05), 50px); padding-block: 8px; }
  body:not(.admin-figma-portal) .pv-contact-form textarea { flex: 1 1 auto; min-height: 90px; }
  body:not(.admin-figma-portal) .pv-contact-form .pv-button { margin-top: clamp(8px, calc(var(--ed-vh) * .015), 16px); align-self: flex-start; }
}

/* Shop banner: text only, no decorative image panel */
body:not(.admin-figma-portal) .sh-page .sh-hero { display: block; height: auto; min-height: 0; padding-right: var(--ed-pad-x); }
body:not(.admin-figma-portal) .sh-page .sh-hero::before, body:not(.admin-figma-portal) .sh-page .sh-hero::after,
body:not(.admin-figma-portal) .sh-page .sh-hero__content::before, body:not(.admin-figma-portal) .sh-page .sh-hero__content::after { display: none; content: none; }
body:not(.admin-figma-portal) .sh-page .sh-hero__content { padding-block: 30px; }

/* Contact: tighten so banner + content stay inside one screen */
@media (min-width: 1024px) {
  body:not(.admin-figma-portal) .figma-page-hero--contact { padding-block: clamp(12px, calc(var(--ed-vh) * .016), 20px); }
  body:not(.admin-figma-portal) .figma-page-hero--contact h1 { font-size: clamp(2rem, calc(var(--ed-vh) * .042), 3rem); }
  body:not(.admin-figma-portal) .pv-contact-page { min-height: 0; padding-block: clamp(14px, calc(var(--ed-vh) * .02), 28px); }
  body:not(.admin-figma-portal) .pv-contact-form :where(input) { min-height: clamp(38px, calc(var(--ed-vh) * .044), 46px); }
  body:not(.admin-figma-portal) .pv-contact-form textarea { min-height: 64px; }
  body:not(.admin-figma-portal) .pv-contact-form-wrap { padding-block: clamp(14px, calc(var(--ed-vh) * .02), 26px); }
  body:not(.admin-figma-portal) .pv-contact-form .pv-contact-form__note { margin: 4px 0 0; }
}

/* ---------- Nav: smaller logo + name beside it; all links, cart, account, log in and enrol grouped on the right ---------- */
.sel-nav__logo { gap: 12px; }
.sel-nav__logo-img { height: 50px; }
.sel-nav__brand { font: 500 1.05rem/1 var(--ed-display); letter-spacing: .06em; text-transform: uppercase; color: var(--ed-on-dark); white-space: nowrap; }
body:not(.admin-figma-portal) .sel-nav__links { flex: 1; justify-content: flex-end; gap: clamp(20px, 2.4vw, 40px); }
body:not(.admin-figma-portal) .sel-nav__primary { margin: 0; }
@media (min-width: 861px) { body:not(.admin-figma-portal) .sel-nav__links, body:not(.admin-figma-portal) .sel-nav__primary, body:not(.admin-figma-portal) .sel-nav__actions { gap: clamp(14px, 1.7vw, 26px); } }
.sel-nav__links a[hidden], .sel-nav__actions [hidden], .sel-nav__menu[hidden] { display: none !important; }
@media (max-width: 1180px) { .sel-nav__brand { display: none; } }
@media (max-width: 860px) { .sel-nav__logo-img { height: 42px; } .sel-nav__brand { display: inline; font-size: .95rem; letter-spacing: .05em; } }
@media (max-width: 440px) { .sel-nav__brand { display: none; } }

/* ---------- Login: fill the screen under the nav (the form column is centred) ---------- */
body:not(.admin-figma-portal) .lg-page,
body:not(.admin-figma-portal) .lg-split { min-height: var(--ed-fullh); }
body:not(.admin-figma-portal) .lg-form-col { display: flex; align-items: center; justify-content: center; }
body:not(.admin-figma-portal) .lg-split__img-col { min-height: var(--ed-fullh); }
@media (max-width: 860px) { body:not(.admin-figma-portal) .lg-page, body:not(.admin-figma-portal) .lg-split, body:not(.admin-figma-portal) .lg-split__img-col { min-height: 0; } body:not(.admin-figma-portal) .lg-split__img-col { min-height: 320px; } }

/* ---------- Admin + account portals: a little smaller (88%) on desktop ---------- */
@media (min-width: 1024px) {
  html:has(body.admin-figma-portal), html:has(body.portal-experience), html:has(body.account-order-page) { zoom: .88; --ed-zoom: .88; }
  .admin-figma-workspace { min-height: calc(100vh / var(--ed-zoom)); }
  .admin-figma-sidebar { height: calc(100vh / var(--ed-zoom) - 56px); }
  body.account-order-page main { min-height: calc(100vh / var(--ed-zoom)); }
  .admin-figma-portal .modal-box { max-height: calc(100dvh / var(--ed-zoom) - 88px); }
  .account-order-page .modal-box { max-height: calc(100dvh / var(--ed-zoom) - 32px); }
  .billing-dialog__panel { max-height: calc(100vh / var(--ed-zoom) - 40px); }
}
body:not(.admin-figma-portal) .lg-form-col { padding-block: clamp(14px, calc(var(--ed-vh) * .02), 28px); }
body:not(.admin-figma-portal) .lg-form-wrap { padding-block: clamp(22px, calc(var(--ed-vh) * .03), 38px); }
/* Booking dialogs scale to fit on desktop, with scrolling available at the minimum scale. */
@media (min-width: 861px) { .tm__main { max-height: none; overflow: visible; } .tm-overlay { overflow-y: auto; align-items: safe center; } }

/* Consistent baseline and digit widths for dates, counts and financial data. */
/* Numeric displays share the sans face, including legacy portal and modal rules. */
body :is(
  .ed-number, .ed-pcard__num, .pv-steps__num, .ae-environment__number,
  .sel-stat__num, .sel-pillar__num, .pillar-num, .stat-value,
  .cart-count, .queue-count, .sh-tab__count, .bq-section__count,
  .pd-gallery__count, .product-thumb-count, .aw-count, .faq-counter,
  .ct-step__circle, .step-dot, .tm__steps li > span, .tm__fee-amount,
  .price, .product-price, .ed-prod__price, .sh-card__price, .bq-card__price,
  .pd-price, .ct-item__price, .ct-qty-val, .qty-input,
  .ct-summary__row > span:last-child, .ct-delivery-choice label > strong,
  .ct-confirm__amount, .ct-detail-row--amount .ct-detail-row__val,
  .tuition-status-card__remaining > strong, [data-tuition-price],
  .order-total, .pending-order-card__total > strong, .billing-orders-table__total,
  .measurement-date, .measurement-value, .product-date, .product-timestamp,
  .order-date, .order-date__date, .order-date__time, .timeline-time,
  .private-lesson-card__date, .private-lesson-card__price, .private-lesson-card__time,
  .public-class-card__time > span, .public-class-schedule__count,
  .sched-calendar__daynum, .sched-event__time, .sched-agenda__date, .s-time,
  .capacity-fraction, #sj-pct, time, input[type="number"], input[type="tel"],
  input[type="date"], input[type="time"], input[inputmode="numeric"],
  input[inputmode="decimal"], .time-picker select, .birth-date-picker select
) {
  font-family: var(--ed-sans) !important;
  font-style: normal;
  font-variant-numeric: lining-nums tabular-nums;
}
body { font-variant-numeric: lining-nums tabular-nums; }
body :is(input, select, button, time, td, th,
  .cart-count, .ct-step__circle, .ct-qty-val, .bq-section__count,
  .bq-card__price, .pd-price, .ct-item__price, .ct-summary__row,
  .ct-confirm__amount, .ct-detail-row--amount, .public-class-card__time,
  .tuition-status-card__remaining, .billing-orders-table__total) {
  font-variant-numeric: lining-nums tabular-nums;
}
body:not(.admin-figma-portal) :is(.pd-price, .bq-card__price, .ct-item__price,
  .ct-summary__row > span:last-child, .ct-confirm__amount,
  .ct-detail-row--amount .ct-detail-row__val, .ct-qty-val,
  .public-class-card__time > span, .tuition-status-card__remaining > strong) {
  font-family: var(--ed-sans);
  font-style: normal;
  letter-spacing: normal;
  font-variant-numeric: lining-nums tabular-nums;
}

/* Cart: slimmer title band, order steps centred */
body:not(.admin-figma-portal) #cart-view { padding-block: 24px; }
body:not(.admin-figma-portal) .ct-summary { padding: 20px 24px; }
body:not(.admin-figma-portal) .ct-summary__title { margin-bottom: 12px; padding-bottom: 12px; }
body:not(.admin-figma-portal) .ct-summary__row { margin-bottom: 12px; }
body:not(.admin-figma-portal) .ct-summary .ct-delivery-choice { gap: 8px; margin-block: 12px; padding-block: 12px; }
body:not(.admin-figma-portal) .ct-summary .ct-delivery-choice .sel-label { margin: 0 0 4px; }
body:not(.admin-figma-portal) .ct-summary .ct-delivery-choice label { min-height: 36px; margin: 0; padding-block: 0; }
body:not(.admin-figma-portal) .ct-summary__row--total { margin-top: 10px; padding-top: 12px; margin-bottom: 16px; }
body:not(.admin-figma-portal) .ct-hero { min-height: 0; padding-block: 30px; }
body:not(.admin-figma-portal) .ct-hero__title { font-size: clamp(2rem, calc(var(--ed-vh) * .05), 3.2rem); }
@media (min-width: 961px) { body:not(.admin-figma-portal) .ct-stepbar { justify-content: center; } }

/* Contact Us: no banner; the page title stays for screen readers */
.ed-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Basket icon glows softly when something lands in it */
.cart-fly-ghost { border-radius: 50%; aspect-ratio: 1; transition: none; }
@keyframes ed-cart-glow {
  0% { filter: none; color: var(--ed-on-dark-soft); }
  12%, 25% { filter: drop-shadow(0 0 7px rgba(232, 180, 192, .95)) drop-shadow(0 0 16px rgba(232, 180, 192, .55)); color: #fff; }
  100% { filter: none; color: var(--ed-on-dark-soft); }
}
body:not(.admin-figma-portal) .sel-nav__cart.cart-bump { animation: ed-cart-glow 2.6s ease-out; }
@media (prefers-reduced-motion: reduce) { body:not(.admin-figma-portal) .sel-nav__cart.cart-bump { animation: none; } }

/* Cart step 2: delivery details in two columns so the whole form fits on one screen */
@media (min-width: 761px) {
  body:not(.admin-figma-portal) .ct-delivery-wrap { max-width: 980px; padding: clamp(18px, calc(var(--ed-vh) * .03), 32px) clamp(22px, 3vw, 44px); }
  body:not(.admin-figma-portal) .ct-delivery-wrap .enrol-form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(10px, calc(var(--ed-vh) * .016), 18px) 20px; }
  body:not(.admin-figma-portal) .ct-delivery-wrap .enrol-form__field { margin: 0; }
  body:not(.admin-figma-portal) .ct-delivery-wrap .enrol-form__field[hidden] { display: none; }
  body:not(.admin-figma-portal) .ct-delivery-wrap :where(#address-field, #pickup-field, #not-applicable-field, #class-pass-account-note) { grid-column: 1 / -1; }
  body:not(.admin-figma-portal) .ct-delivery-wrap #ship-address { min-height: 0; height: clamp(64px, calc(var(--ed-vh) * .1), 96px); }
  body:not(.admin-figma-portal) .ct-body:has(.ct-delivery-wrap) { padding-block: clamp(16px, calc(var(--ed-vh) * .03), 32px) clamp(24px, calc(var(--ed-vh) * .04), 48px); }
  body:not(.admin-figma-portal) .ct-delivery-wrap .ct-section-title { margin-bottom: 6px; }
  body:not(.admin-figma-portal) .ct-delivery-wrap .ct-section-sub { margin-bottom: clamp(10px, calc(var(--ed-vh) * .02), 20px); }
  body:not(.admin-figma-portal) .ct-delivery-wrap .ct-upload-actions { margin-top: clamp(12px, calc(var(--ed-vh) * .022), 24px); }
}

/* Shop: section blurbs stay on one line on desktop */
@media (min-width: 761px) { body:not(.admin-figma-portal) .bq-section__head p { max-width: none; white-space: nowrap; } }

/* Journey boards: slim scrollbar kept inside the rounded map, clear of its corners */
body .sj-board, body .jn-board { scrollbar-width: auto !important; scrollbar-color: auto !important; }
body .sj-board::-webkit-scrollbar, body .jn-board::-webkit-scrollbar { width: 12px; }
body .sj-board::-webkit-scrollbar-track, body .jn-board::-webkit-scrollbar-track { margin-block: 26px; background: transparent; }
body .sj-board::-webkit-scrollbar-thumb, body .jn-board::-webkit-scrollbar-thumb { border: 4px solid transparent; border-radius: 999px; background: rgba(155, 61, 86, .35) padding-box; }
body .sj-board::-webkit-scrollbar-button, body .jn-board::-webkit-scrollbar-button { display: none; width: 0; height: 0; }

/* Logo overlay for product images stored without a baked-in watermark (image URL carries ?clean=1). */
.wm { position: relative; }
.wm::after { content: ""; position: absolute; top: 3%; right: 3%; width: 16%; aspect-ratio: 1; pointer-events: none;
  background: url("/static/img/logo-white.png") center / contain no-repeat; mix-blend-mode: difference; opacity: .9; }

/* Cart lines link back to the product page. */
a.ct-item__img { display: block; }
.ct-item__name a { color: inherit; text-decoration: none; }
.ct-item__name a:hover, .ct-item__name a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }

/* Shop category picker: a pill button that opens a tick-list so several categories can be combined. */
.bq-cat { position: relative; }
.bq-cat__btn { height: 40px; min-width: 190px; padding: 0 38px 0 18px; border: 1px solid var(--ed-rule); border-radius: 999px; background: var(--ed-ivory) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23785' stroke-width='1.6'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E") no-repeat right 16px center; color: var(--ed-ink); font: 400 .8125rem var(--ed-sans); text-align: left; cursor: pointer; }
.bq-cat__btn.is-set { border-color: var(--ed-oxblood); color: var(--ed-oxblood); }
.bq-cat__menu { position: absolute; z-index: 30; top: calc(100% + 6px); right: 0; width: max(100%, 230px); max-height: 340px; overflow-y: auto; padding: 8px; border: 1px solid var(--ed-rule); border-radius: 16px; background: var(--ed-ivory); box-shadow: var(--ed-shadow-m); }
.bq-cat__opt { display: flex; align-items: center; gap: 10px; margin: 0; padding: 9px 10px; border-radius: 10px; font: 400 .8125rem var(--ed-sans); color: var(--ed-ink); cursor: pointer; }
.bq-cat__opt:hover { background: var(--ed-blush); }
.bq-cat__opt input { width: 16px; height: 16px; margin: 0; accent-color: var(--ed-oxblood); }
.bq-cat__opt span { flex: 1; }
.bq-cat__opt small { color: var(--ed-taupe); font-size: .6875rem; }
.bq-cat__clear { display: block; width: 100%; margin-top: 4px; padding: 8px; border: 0; border-top: 1px solid var(--ed-rule); background: none; color: var(--ed-oxblood); font: 600 .75rem var(--ed-sans); cursor: pointer; }
@media (max-width: 720px) { body:not(.admin-figma-portal) .bq-toolbar__tools:has(.bq-cat:not([hidden])) { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } body:not(.admin-figma-portal) .bq-toolbar__tools .bq-search { grid-column: 1 / -1; } .bq-cat__btn { width: 100%; min-width: 0; } .bq-cat__menu { left: 0; right: auto; } }
