/* ============================================================
   Inner-page component styles — the ported site.css page components
   re-keyed from CONTAINER classes (which Elementor doesn't render on
   imported containers) to ELEMENT-IDs + WIDGET classes. Reused across
   all inner pages via a shared element-ID convention (IDs are unique
   within a page, and only one page renders at a time, so the same IDs
   recur page-to-page). prose + timeline already work because their
   class sits on a single text widget (widget classes DO render).
   ============================================================ */

/* ---- Page hero (banner over a photo) — #page-hero ---- */
#page-hero {
  position: relative; overflow: hidden;
  padding: clamp(72px,11vw,132px) 20px clamp(56px,8vw,104px);
}
#page-hero::before { /* dark left-weighted scrim, from .page-hero .hero-scrim */
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(90deg, rgba(28,20,12,.88) 0%, rgba(28,20,12,.66) 48%, rgba(28,20,12,.38) 100%);
}
#page-hero > .e-con-inner, #page-hero > * { position: relative; z-index: 2; }
#page-hero .crumbs .elementor-heading-title { font-size: 13.5px; font-weight: 600; letter-spacing: .02em; color: rgba(255,255,255,.6) !important; }
#page-hero .crumbs a { color: rgba(255,255,255,.78); }
.page-hero-h1 .elementor-heading-title { color: #fff !important; font-size: clamp(34px,5vw,60px) !important; font-weight: 500 !important; margin: 18px 0 0; max-width: 880px; }
.page-hero-sub .elementor-widget-container, .page-hero-sub p { color: rgba(255,255,255,.9) !important; font-size: clamp(17px,1.5vw,20px); margin: 20px 0 0; max-width: 680px; line-height: 1.55; }
/* taller landing variant (Preschool / Kindergarten / Grades) */
#page-hero.page-hero--big, #page-hero-big { padding: clamp(96px,15vw,190px) 20px clamp(72px,10vw,120px); }
#page-hero-big::before { content:""; position:absolute; inset:0; z-index:1; background: linear-gradient(90deg, rgba(28,20,12,.88) 0%, rgba(28,20,12,.66) 48%, rgba(28,20,12,.38) 100%); }
#page-hero-big { position:relative; overflow:hidden; }
#page-hero-big > .e-con-inner, #page-hero-big > * { position:relative; z-index:2; }
#page-hero-big .page-hero-h1 .elementor-heading-title { font-size: clamp(38px,5.6vw,68px) !important; }
.page-hero-actions { display: flex; flex-wrap: wrap; gap: 13px; margin-top: 30px; }

/* ---- Photo-less hero (academics) — #page-hero-plain: solid ink + two radial glows,
   matching dist .page-hero (no .has-photo). Shares the crumbs/h1/sub text skins. ---- */
#page-hero-plain { position: relative; overflow: hidden;
  padding: clamp(54px,8vw,104px) 20px clamp(44px,6vw,72px); }
#page-hero-plain::before { content:""; position:absolute; width:420px; height:420px; border-radius:50%;
  background: radial-gradient(circle, rgba(245,184,25,.22), transparent 70%); top:-160px; right:-120px; z-index:0; }
#page-hero-plain::after { content:""; position:absolute; width:420px; height:420px; border-radius:50%;
  background: radial-gradient(circle, rgba(232,116,43,.20), transparent 70%); bottom:-200px; left:-120px; z-index:0; }
#page-hero-plain > .e-con-inner, #page-hero-plain > * { position: relative; z-index: 2; }
#page-hero-plain .crumbs .elementor-heading-title { font-size: 13.5px; font-weight: 600; letter-spacing: .02em; color: rgba(255,255,255,.6) !important; }
#page-hero-plain .crumbs a { color: rgba(255,255,255,.78); }

/* ---- Tight section variant (dist .section--tight) — id beats the .e-parent rhythm rule.
   Reused id (only one page renders at a time). ---- */
#section-tight { padding-top: clamp(48px,6vw,84px) !important; padding-bottom: clamp(48px,6vw,84px) !important; }

/* ---- 2-column content grid (prose + aside) — [id^=page-grid] (may repeat per page) ---- */
[id^="aside-grid"] { display: grid !important; grid-template-columns: 1.6fr 1fr; gap: clamp(36px,5vw,72px); align-items: start; }
[id^="aside-grid"] > .e-con-inner { display: contents !important; }
[id^="aside-grid"] > .e-con-inner > .e-con { width: auto !important; max-width: none !important; }
@media (max-width: 880px) { [id^="aside-grid"] { grid-template-columns: 1fr; } }

/* ---- Aside info cards — [id^=page-aside] ---- */
[id^="page-aside"] { position: sticky; top: 90px; display: flex !important; flex-direction: column; gap: 18px; }
[id^="page-aside"] > .e-con-inner { display: contents !important; }
.ic-h3 .elementor-heading-title { font-size: 21px !important; margin: 0 0 10px; color: var(--ink) !important; }
.ic-p .elementor-widget-container, .ic-p p { font-size: 15px; color: var(--muted) !important; margin: 0 0 16px; }
.ic-h3-white .elementor-heading-title { color: #fff !important; }
.ic-p-white .elementor-widget-container, .ic-p-white p { color: rgba(255,255,255,.9) !important; }
.contact-row { display: grid; gap: 12px; margin: 4px 0 0; }
.contact-row a { display: flex; align-items: flex-start; gap: 11px; font-size: 15px; font-weight: 500; color: var(--ink); overflow-wrap: anywhere; min-width: 0; }
.contact-row svg { width: 17px; height: 17px; color: var(--orange); flex: none; margin-top: 2px; }
/* Dark info-card contact rows (dist .info-card.dark): white links, gold icons. */
.contact-row--dark a { color: #fff !important; }
.contact-row--dark svg { color: var(--gold); }
/* info-card buttons span full width */
.ic-btn, .ic-btn .elementor-button { width: 100%; justify-content: center; }
@media (max-width: 880px) { [id^="page-aside"] { position: static; } }

/* ---- Full-width media band — #media-band ---- */
#media-band { position: relative; overflow: hidden; min-height: clamp(260px,36vw,440px);
  display: flex !important; align-items: flex-end;
  background-position: center center; background-size: cover; padding: 0; }
#media-band::after { content: ""; position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(28,20,12,.5), rgba(28,20,12,0) 55%); z-index: 1; }
.media-cap .elementor-widget-container, .media-cap { position: relative; z-index: 2; }
.media-cap .elementor-heading-title { color: #fff !important; font-family: var(--font-head) !important;
  font-size: clamp(22px,2.6vw,32px) !important; font-weight: 500 !important; padding: 0 0 clamp(24px,4vw,40px); }

/* ---- Feature grid + cards — #feature-grid ---- */
#feature-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(240px,1fr)); gap: 20px; }
#feature-grid > .e-con-inner { display: contents !important; }
#feature-grid > .e-con-inner > .e-con { width: auto !important; max-width: none !important; }
.feat-h3 .elementor-heading-title { font-size: 19px !important; margin: 0 0 7px; }
.feat-p .elementor-widget-container, .feat-p p { font-size: 15px; color: var(--muted) !important; margin: 0; }
/* icon chip */
.feat-ico { width: 46px; height: 46px; border-radius: 12px; display: inline-grid; place-items: center;
  background: var(--orange-tint); color: var(--orange-deep); margin-bottom: 16px; }
.feat-ico svg { width: 24px; height: 24px; }
/* dist alternates the chip tint: .feature-card:nth-child(2n) .ico → gold. The cards are
   the .e-con children promoted by #feature-grid > .e-con-inner{display:contents}. */
#feature-grid > .e-con-inner > .e-con:nth-child(2n) .feat-ico { background: var(--gold-tint); color: #a9760a; }

/* ---- Sport/season cards (athletics) — #season-grid (reuses .feature-grid layout).
   Card visuals are native; text skins + the .grades pill / .season line are re-keyed here
   (dist .sport-card descendant selectors don't apply — the container class isn't rendered). */
#season-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(240px,1fr)); gap: 20px; }
#season-grid > .e-con-inner { display: contents !important; }
#season-grid > .e-con-inner > .e-con { width: auto !important; max-width: none !important; }
.sport-h3 .elementor-heading-title { font-size: 20px !important; margin: 0; }
.sport-p .elementor-widget-container, .sport-p p { font-size: 15px; color: var(--muted) !important; margin: 0 0 12px; }
#season-grid .grades { font-size: 12.5px; font-weight: 700; color: var(--orange-deep); background: var(--orange-tint); padding: 4px 11px; border-radius: 999px; white-space: nowrap; }
#season-grid .season { font-size: 13.5px; font-weight: 600; color: var(--ink-soft); display: inline-flex; align-items: center; gap: 7px; }
#season-grid .season svg { width: 15px; height: 15px; color: var(--gold); }

/* ---- Childcare: room-list cards sit in a cream2 section (dist .section--cream2 .room-card
   → line-strong border); and the #cc-cards grid below the schedule form. ---- */
.room-list .room-card { border-color: var(--line-strong); }
#cc-cards { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(270px,1fr)); gap: 22px; margin-top: 34px; align-items: start; }
#cc-cards > .e-con-inner { display: contents !important; }
#cc-cards > .e-con-inner > .e-con { width: auto !important; max-width: none !important; }

/* ---- Prose blocks: force the serif/weight the class CSS expects (prose class is on
   a text widget, so .prose descendants match; just ensure headings use the head font) */
.prose h2, .prose h3 { font-family: var(--font-head); font-weight: 500; }

/* ---- Section head (reused) — centered/left variants handled per page ---- */
.page-section-head .h2-lg .elementor-heading-title { font-size: clamp(30px,4vw,50px) !important; }
/* Smaller heading scales referenced by zbuild (resources "Stay in the loop." = h2-res;
   contact/apply form+map column heads + kindergarten teacher head = h2-mid). */
.h2-mid .elementor-heading-title { font-size: clamp(26px,3vw,38px) !important; }
.h2-res .elementor-heading-title { font-size: clamp(24px,2.8vw,34px) !important; }

/* ---- Tuition table sub-headings (academics/childcare): dist raw <h3 style="..."> ---- */
.tuition-h3 .elementor-heading-title { font-family: var(--font-head); font-weight: 500; font-size: 22px !important; margin: 0 0 14px; }
.tuition-h3.tuition-mt .elementor-heading-title { margin-top: 34px; }
.tuition-note .elementor-widget-container, .tuition-note p { color: var(--muted) !important; font-size: 14.5px; margin-top: 14px; }

/* ============================================================
   Program-page components (preschool / kindergarten / grades)
   ============================================================ */

/* Hero action buttons live inside #page-hero-big */
#page-hero-big .page-hero-actions, #page-hero .page-hero-actions { display: flex; flex-wrap: wrap; gap: 13px; margin-top: 30px; }

/* Subject grid — #subject-grid, native cards + subj-* widget text */
#subject-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(290px,1fr)); gap: 14px; }
#subject-grid > .e-con-inner { display: contents !important; }
#subject-grid > .e-con-inner > .e-con { width: auto !important; max-width: none !important; }
.subj-h3 .elementor-heading-title { font-size: 18px !important; margin: 0 0 6px; }
.subj-p .elementor-widget-container, .subj-p p { font-size: 14.5px; color: var(--muted) !important; margin: 0; line-height: 1.55; }

/* Page figure — #page-figure image + caption (widget classes) */
.page-fig-img img { width: 100%; aspect-ratio: 4/5; object-fit: cover; display: block; border-radius: 18px 18px 0 0; }
.page-fig-img.wide img { aspect-ratio: 16/10; }
.figcap .elementor-widget-container, .figcap p { font-size: 13.5px; color: var(--muted) !important; padding: 12px 16px; background: var(--paper); margin: 0; border: 1px solid var(--line); border-top: 0; border-radius: 0 0 18px 18px; }

/* Final CTA card — #final-card (dark, centered, radial glows) */
#final-card { position: relative; overflow: hidden; text-align: center; }
#final-card::before { content: ""; position: absolute; width: 360px; height: 360px; border-radius: 50%; background: radial-gradient(circle, rgba(245,184,25,.28), transparent 70%); top: -120px; right: -80px; z-index: 0; }
#final-card::after { content: ""; position: absolute; width: 360px; height: 360px; border-radius: 50%; background: radial-gradient(circle, rgba(232,116,43,.28), transparent 70%); bottom: -140px; left: -90px; z-index: 0; }
#final-card > .e-con-inner { position: relative; z-index: 2; }
#final-card .eyebrow .elementor-heading-title { color: var(--gold-soft) !important; }
#final-actions { display: flex; flex-wrap: wrap; gap: 13px; justify-content: center; margin: 32px 0 0; }
.enroll-line .elementor-widget-container, .enroll-line p { color: var(--gold-soft) !important; font-weight: 600; margin: 18px 0 0; font-size: 17px; }

/* Teacher spotlight — #teacher-spot (image + name/role/bio) */
#teacher-spot { display: grid !important; grid-template-columns: auto 1fr; gap: 22px; align-items: center;
  background: var(--paper); border: 1px solid var(--line); border-radius: 18px; padding: clamp(20px,3vw,30px);
  box-shadow: 0 6px 18px rgba(33,28,22,.07); }
#teacher-spot > .e-con-inner { display: contents !important; }
#teacher-spot > .e-con-inner > .e-con, #teacher-spot > .e-con-inner > .elementor-widget { width: auto !important; max-width: none !important; }
.ts-img img { width: 116px; height: 116px; border-radius: 50%; object-fit: cover; object-position: center 20%; }
.ts-name .elementor-heading-title { font-size: 22px !important; margin: 0 0 2px; }
.ts-role .elementor-widget-container, .ts-role p { font-size: 13.5px; font-weight: 700; color: var(--orange-deep) !important; text-transform: uppercase; letter-spacing: .06em; margin: 0 0 10px; }
.ts-bio .elementor-widget-container, .ts-bio p { font-size: 15px; color: var(--muted) !important; margin: 0; }
@media (max-width: 560px) { #teacher-spot { grid-template-columns: 1fr; text-align: center; } .ts-img img { margin-inline: auto; } }

/* ============================================================
   Ported inner pages — the dist <main> lives in one HTML widget inside
   #ported-page. Kill Elementor's container padding / boxed width / widget
   spacing so the dist .section/.wrap classes control the whole layout 1:1.
   (ID beats the .e-con.e-parent section-rhythm rule, so no padding leaks in.)
   ============================================================ */
#ported-page { padding: 0 !important; }
#ported-page > .e-con-inner { max-width: none !important; padding: 0 !important; width: 100%; }
#ported-page .elementor-widget-html, #ported-page .elementor-widget-html > .elementor-widget-container { margin: 0 !important; padding: 0 !important; }
/* Hello/Elementor reset table cells to line-height 1.5 and form labels to 1.0; dist lets
   both inherit body line-height 1.6. Restore so tuition tables + form labels match dist. */
.ztable td, .ztable th { line-height: 1.6; }
.sched-table td, .sched-table th { line-height: 1.6; }
.zform label { line-height: 1.6; }

/* ============================================================
   Elementor Pro Forms → .zform bridge. The `form` widget carries class `zform`, so the
   ported site.css `.zform label/input/select/textarea` descendant rules mostly apply for
   free; this block reproduces the card + gutter, beats Pro's own field/button chrome, and
   maps Pro's flex-column layout to the dist row2/row3 look. Scoped to `.zform` only.
   ============================================================ */
/* the card (dist .zform) sits on the <form> */
.zform .elementor-form { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius);
  padding: clamp(22px,3vw,32px); box-shadow: var(--shadow-sm); }
/* the Kit forces Roboto on form labels/fields — re-assert the body font everywhere */
.zform .elementor-field, .zform .elementor-field-label, .zform .form-note,
.zform .elementor-field-type-submit .elementor-button, .zform select, .zform textarea {
  font-family: var(--font-body) !important; }
/* flex-wrap columns with a 14px inter-column gutter + 15px row gap (Pro padding-gutter model) */
.zform .elementor-form-fields-wrapper { display: flex; flex-wrap: wrap; margin: 0 -7px; }
.zform .elementor-field-group { padding: 0 7px; margin-bottom: 15px; align-content: flex-start; }
.zform .elementor-field-group.elementor-field-type-submit, .zform .elementor-field-group:has(.form-note) { margin-bottom: 0; }
@media (max-width: 560px) { .zform .elementor-col-50 { width: 100%; } }
/* fields — beat Pro's .elementor-field-textual + per-widget defaults (need !important) */
.zform .elementor-field-group .elementor-field.elementor-field-textual,
.zform .elementor-field-group select.elementor-field,
.zform .elementor-field-group textarea.elementor-field {
  width: 100%; font-family: inherit; font-size: 15px !important; line-height: 1.4; color: var(--ink) !important;
  background: var(--cream) !important; border: 1px solid var(--line-strong) !important; border-radius: 10px !important;
  padding: 11px 13px !important; box-shadow: none; height: auto; }
.zform .elementor-field-group textarea.elementor-field { min-height: 110px; resize: vertical; }
.zform .elementor-field-group .elementor-field:focus { outline: 2px solid var(--orange); outline-offset: 1px; border-color: var(--line-strong) !important; }
/* labels — Pro's `.elementor-widget-form .elementor-field-group > label` (0,2,1) beats a plain
   .zform label, so !important the dist values */
.zform .elementor-field-label { font-size: 13.5px !important; font-weight: 700 !important; color: var(--ink-soft) !important;
  display: block; margin-bottom: 5px; line-height: 1.6; padding: 0; }
.zform .elementor-mark-required, .zform .elementor-field-required .elementor-field-label:after { display: none; }
/* submit button = dist .btn.btn--primary, left-aligned auto width */
.zform .elementor-field-type-submit { justify-content: flex-start; }
.zform .elementor-field-type-submit .elementor-button {
  display: inline-flex; align-items: center; gap: 8px; width: auto; min-height: 0;
  font-family: var(--font-body); font-size: 16px; font-weight: 700; line-height: 1;
  color: #fff; background: var(--orange-deep); border: 0; border-radius: 999px;
  padding: 13px 22px; cursor: pointer; text-decoration: none; transition: background .15s ease; }
.zform .elementor-field-type-submit .elementor-button:hover,
.zform .elementor-field-type-submit .elementor-button:focus { background: #a84e10; color: #fff; }
/* the Lucide arrow-right after the submit label (dist buttons carry it) */
.zform .elementor-field-type-submit .elementor-button > span::after {
  content: ""; display: inline-block; width: 16px; height: 16px; margin-left: 2px;
  vertical-align: -2px; background: currentColor;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14M12 5l7 7-7 7'/></svg>") center/contain no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14M12 5l7 7-7 7'/></svg>") center/contain no-repeat; }
/* the fine-print note (an HTML field), forced below the submit button via flex order */
.zform .elementor-field-group:has(.form-note) { order: 5; width: 100%; padding-top: 4px; }
.zform .elementor-field-group:has(.form-note) .form-note { margin: 0; }
/* success / error messages inherit the dist look */
.zform .elementor-message-success { background: #e8f6ec; border: 1px solid #bce3c8; color: #1d6b3a;
  border-radius: 10px; padding: 13px 16px; font-weight: 600; font-size: 15px; }
/* empty labels (e.g. an age-group radio whose legend is a separate .form-legend) take no space */
.zform .elementor-field-label:empty { display: none; }

/* ---- childcare Pro form: section legends, radio/checkbox options, the weekly grid ---- */
/* legends + field-help come through as HTML fields; their inner classes are ported (site.css) */
.zform .elementor-field-group:has(.form-legend), .zform .elementor-field-group:has(.field-help),
.zform .elementor-field-group:has(.sched-head) { width: 100%; padding-top: 0; padding-bottom: 0; margin-bottom: 8px; }
/* header row aligns to the checkbox rows: match their 8px horizontal inset (drop the 7px gutter) */
.zform .elementor-field-group:has(.sched-head) { padding-left: 0; padding-right: 0; margin-bottom: 0; }
/* radio / checkbox option rows → dist .opt-inline / .opt-stack / .opt */
.zform .elementor-field-subgroup.elementor-subgroup-inline { display: flex; flex-wrap: wrap; gap: 9px 24px; }
.zform .elementor-field-type-radio .elementor-field-subgroup:not(.elementor-subgroup-inline) { display: grid; gap: 10px; }
.zform .elementor-field-option { display: flex; align-items: flex-start; gap: 10px; margin: 0;
  font-size: 15px; font-weight: 500; color: var(--ink); text-transform: none; letter-spacing: 0; }
.zform .elementor-field-option label { font-weight: 500 !important; font-size: 15px !important; color: var(--ink) !important;
  margin: 0; text-transform: none; letter-spacing: 0; }
.zform .elementor-field-option input { width: auto !important; margin: 3px 0 0 !important; flex: none; accent-color: var(--orange); }
/* weekly schedule grid — 13 checkbox fields laid back into the dist table */
.zform .sched-head { display: grid; grid-template-columns: minmax(132px,1.4fr) repeat(5,1fr); gap: 0 8px;
  padding: 10px 0; background: var(--cream-2); border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; }
.zform .sched-head span { font-family: var(--font-body); font-weight: 700; font-size: 12px; letter-spacing: .04em;
  text-transform: uppercase; color: var(--ink-soft); text-align: center; }
.zform .sched-head span:first-child { text-align: left; }
.zform .elementor-field-type-checkbox { display: grid !important; grid-template-columns: minmax(132px,1.4fr) repeat(5,1fr);
  align-items: center; gap: 0 8px; border: 1px solid var(--line); border-top: 0; padding: 10px 8px; margin-bottom: 0; }
.zform .elementor-field-type-checkbox + .elementor-field-type-checkbox { border-top: 0; }
.zform .elementor-field-type-checkbox .elementor-field-label { grid-column: 1; margin: 0 !important;
  font-size: 14.5px !important; font-weight: 600 !important; color: var(--ink) !important; text-align: left; white-space: nowrap; }
/* promote the 5 day checkboxes to direct grid items so they land in the row's own columns 2-6
   (identical to the header grid) instead of re-dividing a sub-span */
.zform .elementor-field-type-checkbox .elementor-field-subgroup { display: contents; }
.zform .elementor-field-type-checkbox .elementor-field-option { justify-content: center; }
.zform .elementor-field-type-checkbox .elementor-field-option label { position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.zform .elementor-field-type-checkbox .elementor-field-option input { margin: 0 !important; transform: scale(1.15); }
/* Topbar search magnifier stays faint white (the generic .topbar svg rule colours icons
   gold; the search glyph is decorative inside the input). */
.topbar .tb-search .tb-mag { color: rgba(255,255,255,.55); }

/* ============================================================
   Hello Elementor theme collision: its own .site-header/.site-footer
   defaults (padding-block:1rem + max-inline-size:var(--content-width))
   land on our ported chrome because we reuse those class names. Neutralize
   so the bar is full-width, .header-inner/.wrap reach --maxw (1240px), and
   the header isn't 32px taller than the approved site.
   ============================================================ */
.elementor-location-header .site-header { max-inline-size: none !important; padding-block: 0 !important; }
.elementor-location-header .header-inner { max-inline-size: var(--maxw) !important; }
.elementor-location-footer .site-footer { max-inline-size: none !important; }
.elementor-location-footer .site-footer .wrap { max-inline-size: var(--maxw) !important; }

/* ============================================================
   Mobile nav button polish (user feedback 2026-08-29)
   ------------------------------------------------------------
   1) Hello Elementor resets button :hover/:focus/:active background to #cc3366
      (magenta); it leaks onto our hamburger + mega chevrons + close button when
      tapped/focused. Neutralize and keep the approved subtle cream state.
   2) Close (×) button: darker glyph + stronger outline for contrast.
   3) Align the close button's centre with the nav chevron column (right pad 10px,
      not 20 — its centre now matches the chevrons below it).
   ============================================================ */
.menu-toggle:hover, .menu-toggle:focus, .menu-toggle:active, .menu-toggle:focus-visible {
  background: transparent !important; color: var(--ink) !important; /* stays ghost like the original */
}
.nav-expand:hover, .nav-expand:focus, .nav-expand:active, .nav-expand:focus-visible {
  background: var(--cream-2) !important; color: var(--ink) !important;
}
.nav-close-btn:hover, .nav-close-btn:focus, .nav-close-btn:active, .nav-close-btn:focus-visible {
  background: var(--cream-2) !important; border-color: var(--line-strong) !important; color: var(--ink) !important;
}
/* contrast: default state gets the darker glyph + defined outline */
.nav-close-btn { color: var(--ink) !important; border-color: var(--line-strong) !important; }
.nav-close-btn svg { width: 20px; height: 20px; }
/* alignment: centre the × over the chevron column */
body.nav-open .nav-close-row { padding-right: 10px !important; }

/* Same Hello pink bug on real <button> elements elsewhere (form submit buttons are
   <button type="submit" class="btn btn--primary">). site.css covers :hover but not
   :focus/:active, so neutralize those to each button's own colour. */
button.btn--primary:focus, button.btn--primary:active, button.btn--primary:focus-visible,
.zform button:focus, .zform button:active, .zform button:focus-visible { background: #a84e10 !important; }
button.btn--light:focus, button.btn--light:active, button.btn--light:focus-visible { background: #fff !important; }
button.btn--ghost:focus, button.btn--ghost:active, button.btn--ghost:focus-visible { background: transparent !important; }

/* Hello/Elementor colour every <a> blue on :hover (link-hover default), which beats the
   button's own text colour — so orange buttons flashed BLUE text on hover. Buttons never
   change text colour on interaction in dist, so re-assert each variant's colour across
   hover/focus/active for both raw `.btn` links and native `.zbtn .elementor-button`. */
.btn--primary:hover, .btn--primary:focus, .btn--primary:active, .btn--primary:focus-visible,
.zbtn.is-primary .elementor-button:hover, .zbtn.is-primary .elementor-button:focus, .zbtn.is-primary .elementor-button:active,
.btn--outline-light:hover, .btn--outline-light:focus, .btn--outline-light:active, .btn--outline-light:focus-visible,
.zbtn.is-outline-light .elementor-button:hover, .zbtn.is-outline-light .elementor-button:focus, .zbtn.is-outline-light .elementor-button:active { color: #fff !important; }
.btn--ghost:hover, .btn--ghost:focus, .btn--ghost:active, .btn--ghost:focus-visible,
.zbtn.is-ghost .elementor-button:hover, .zbtn.is-ghost .elementor-button:focus, .zbtn.is-ghost .elementor-button:active,
.btn--light:hover, .btn--light:focus, .btn--light:active, .btn--light:focus-visible,
.zbtn.is-light .elementor-button:hover, .zbtn.is-light .elementor-button:focus, .zbtn.is-light .elementor-button:active { color: var(--ink) !important; }

/* Close button glyph centering: Hello's default button padding (8px 16px) offsets the ×
   inside the fixed 38×38 box. Zero it so grid place-items:center centers the glyph. */
.nav-close-btn { padding: 0 !important; }
