/* ArchCap — Astra overrides + component styles (Cool-Navy).
   Tokens come from theme.json presets: var(--wp--preset--color--ac-*). This file is the build-side
   discipline (DESIGN_STANDARDS.md) + the styling for the archcap/* core-block patterns. */

:root {
  --nav-height: 72px;
  --ac-white: var(--wp--preset--color--ac-white, #F7F4EF);
  --ac-cream: var(--wp--preset--color--ac-cream, #EDE8DF);
  --ac-stone: var(--wp--preset--color--ac-stone, #C8C0B5);
  --ac-navy: var(--wp--preset--color--ac-navy, #001B3D);
  --ac-navy-deep: var(--wp--preset--color--ac-navy-deep, #00142C);
  --ac-gold: var(--wp--preset--color--ac-gold, #D4AF37);
  --ac-ink: var(--wp--preset--color--ac-ink, #22262C);
  --ac-slate: var(--wp--preset--color--ac-slate, #5A5F66);
  --ac-line: var(--wp--preset--color--ac-line, #E5E0D6);
}
/* Gold = jewel accent only (button, thin rules, numerals, hairlines). Never headline/body text —
   gold-on-navy vibrates ("itchy"). Headlines: white/cream on navy, navy on light. */

/* ---- Astra bug pre-empts (DESIGN_STANDARDS.md) ---- */
html, body { overflow-x: hidden; }
html { scroll-padding-top: calc(var(--nav-height) + 20px); }
.site-below-footer-wrap, .site-primary-footer-wrap { background: var(--ac-navy-deep) !important; }
body.home #content .ast-container { max-width: 100%; padding-left: 0; padding-right: 0; }
/* Neutralise Astra's default link/button blue */
a { color: var(--ac-navy); }
a:hover { color: var(--ac-gold); }

/* ---- Nav ---- */
.main-header-bar { position: sticky; top: 0; z-index: 100; background: var(--ac-white); transition: box-shadow .2s ease; }
.ast-header-sticked, .main-header-bar.is-scrolled { box-shadow: 0 1px 0 var(--ac-line), 0 6px 20px rgba(15,23,32,.06); }
.main-header-menu .menu-link { text-transform: uppercase; letter-spacing: .09em; font-family: var(--wp--preset--font-family--ac-body); font-size: 13px; font-weight: 600; }

/* ---- Buttons: PRIMARY = gold fill / navy text (the one bold gold moment); works on navy & light. ---- */
.wp-block-button .wp-block-button__link,
.ac-btn {
  display: inline-block; border-radius: 4px; padding: 14px 30px;
  font-family: var(--wp--preset--font-family--ac-body); font-weight: 600; font-size: 17px; letter-spacing: .01em; text-decoration: none;
  background: var(--ac-gold); color: var(--ac-navy); border: 1px solid var(--ac-gold);
  transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}
.wp-block-button .wp-block-button__link:hover, .ac-btn:hover {
  background: #c6a12c; color: var(--ac-navy); transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,20,44,.16);
}
.wp-block-button .wp-block-button__link:focus-visible, .ac-btn:focus-visible {
  outline: 3px solid var(--ac-navy); outline-offset: 2px;
}
/* Secondary = outline. On light: navy border/text; on navy: gold border, white text. */
.wp-block-button.is-style-outline .wp-block-button__link, .ac-btn--ghost {
  background: transparent; color: var(--ac-navy); border-color: var(--ac-navy);
}
.wp-block-button.is-style-outline .wp-block-button__link:hover, .ac-btn--ghost:hover { background: var(--ac-navy); color: var(--ac-white); }
.ac-on-navy .wp-block-button.is-style-outline .wp-block-button__link { color: #fff; border-color: rgba(212,175,55,.7); }
.ac-on-navy .wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--ac-gold); color: var(--ac-navy); border-color: var(--ac-gold); }

/* ---- Eyebrow + gold rule ---- */
.ac-eyebrow { text-transform: uppercase; letter-spacing: .12em; font-size: 13px; font-weight: 600; color: var(--ac-slate); }
.ac-rule { width: 56px; height: 2px; background: var(--ac-gold); border: 0; margin: 0 0 20px; }

/* ---- Cards ---- */
.ac-card { background: #fff; border: 1px solid var(--ac-line); border-radius: 4px; overflow: hidden; transition: transform .15s ease, box-shadow .15s ease; }
.ac-card:hover { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(15,23,32,.10); }
.ac-card img { width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 4px; }

/* ---- Hero (archcap/hero) ----
   Imageless (default, as seeded): a single padded navy band — no empty void.
   With a photo (added at P6): asymmetric 55/45 split with a scrim. */
.ac-hero { position: relative; background: var(--ac-navy); color: #fff; padding: clamp(56px,8vw,104px) clamp(24px,6vw,88px); }
.ac-hero__copy { max-width: 58ch; }
.ac-hero__copy h1 { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(38px,5vw,56px); line-height: 1.05; letter-spacing: -.01em; color: #fff; margin: 0 0 16px; }
.ac-hero__promise { font-size: 18px; line-height: 1.6; color: rgba(246,248,250,.86); max-width: 46ch; }
.ac-hero__buttons { margin-top: 26px; display: flex; gap: 14px; flex-wrap: wrap; }
.ac-hero__media { display: none; }
/* Split layout only when a real photo is present */
.ac-hero:not(.ac-hero--cover):has(.ac-hero__media) { display: grid; grid-template-columns: 55% 45%; padding: 0; }
.ac-hero:not(.ac-hero--cover):has(.ac-hero__media) .ac-hero__copy { padding: clamp(40px,6vw,88px); align-self: center; max-width: none; }
.ac-hero:not(.ac-hero--cover):has(.ac-hero__media) .ac-hero__media { display: block; position: relative; min-height: 320px; height: 100%; align-self: stretch; }
/* S4: WP core .wp-block-image{margin-bottom:1em} left a ~52px gap under every SPLIT hero image, so the
   photo stopped short of the bottom of the hero. Zero it so the image always fills the hero. */
.ac-hero .ac-hero__media, .ac-hero figure.wp-block-image.ac-hero__media { margin: 0 !important; }
.ac-hero__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ac-hero__media::after { content: ""; position: absolute; inset: 0; background: rgba(22,34,46,.55); }
@media (max-width: 921px) {
  .ac-hero:not(.ac-hero--cover):has(.ac-hero__media) { grid-template-columns: 1fr; }
  .ac-hero:not(.ac-hero--cover):has(.ac-hero__media) .ac-hero__media { order: -1; min-height: 220px; }
  .ac-hero__promise { display: block; } /* the mobile sub-line bug: never hide it */
}
/* One H1 per page: Astra's own single title/meta is disabled via site-post-title meta;
   this hides any residual entry meta on our CPT singles. */
.single-money_page .entry-meta, .single-service .entry-meta,
.single-city .entry-meta, .single-article .entry-meta,
.single-money_page .ast-single-post-featured-section { display: none; }

/* ---- Trust strip ---- */
.ac-trust { background: #fff; border-top: 1px solid var(--ac-line); border-bottom: 1px solid var(--ac-line); }
.ac-trust .ac-trust__row { display: flex; flex-wrap: wrap; gap: clamp(16px,3vw,40px); justify-content: center; padding: 20px; }
.ac-trust__item { display: flex; align-items: center; gap: 10px; color: var(--ac-slate); font-size: 15px; }
.ac-trust__item strong { color: var(--ac-ink); }

/* ---- Why ArchCap (gold numerals) ---- */
.ac-why { padding: clamp(60px,8vw,96px) clamp(20px,5vw,64px); }
.ac-why__grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: clamp(24px,3vw,40px); }
.ac-why__num { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(40px,5vw,56px); color: var(--ac-gold); line-height: 1; }

/* ---- Emergency band ---- */
.ac-emergency { background: var(--ac-navy); color: #fff; padding: clamp(40px,6vw,72px) clamp(20px,5vw,64px); text-align: center; }
.ac-emergency h2 { font-family: var(--wp--preset--font-family--ac-heading); color: #fff; }
.ac-emergency .ac-btn { background: var(--ac-gold); color: var(--ac-navy-deep); border-color: var(--ac-gold); }
.ac-emergency .ac-btn:hover { filter: brightness(1.05); }

/* ---- CTA footer band ---- */
.ac-cta { background: var(--ac-white); padding: clamp(48px,7vw,96px) clamp(20px,5vw,64px); }
.ac-cta h2 { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(28px,3.2vw,40px); }

/* ---- Portfolio bento ---- */
.ac-portfolio { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; padding: clamp(20px,4vw,48px); }
.ac-portfolio a { border-radius: 4px; overflow: hidden; display: block; }
.ac-portfolio img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ac-portfolio .span-2 { grid-column: span 2; grid-row: span 2; }
@media (max-width: 921px) { .ac-portfolio { grid-template-columns: repeat(2,1fr); } .ac-portfolio .span-2 { grid-column: span 2; grid-row: span 1; } }

/* ---- Review card ---- */
.ac-review { border-left: 3px solid var(--ac-gold); padding: 18px 22px; background: #fff; border-radius: 4px; }
.ac-review cite { color: var(--ac-slate); font-style: normal; font-size: 14px; }

/* ---- FAQ (works with core details or Spectra FAQ) ---- */
.ac-faq details { border-bottom: 1px solid var(--ac-line); padding: 16px 0; }
.ac-faq summary { cursor: pointer; font-weight: 600; color: var(--ac-ink); }

/* ---- Footer (ac-footer, printed in wp_footer) ---- */
.ac-footer { background: var(--ac-navy-deep); color: rgba(246,248,250,.72); }
.ac-footer__inner { max-width: 1200px; margin: 0 auto; padding: clamp(48px,6vw,72px) clamp(20px,5vw,48px) 28px; }
.ac-footer__cols { display: grid; grid-template-columns: 1.6fr repeat(4,1fr); gap: clamp(24px,3vw,40px); }
.ac-footer__word { font-family: var(--wp--preset--font-family--ac-heading); font-size: 26px; color: #fff; }
.ac-footer__brand p { margin: 14px 0 18px; max-width: 40ch; line-height: 1.55; font-size: 14px; }
.ac-footer__contact a { color: #fff; font-weight: 600; }
.ac-footer__title { color: var(--ac-gold); text-transform: uppercase; letter-spacing: .1em; font-size: 12px; margin-bottom: 12px; }
.ac-footer ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ac-footer a { color: rgba(246,248,250,.72); text-decoration: none; font-size: 14px; }
.ac-footer a:hover { color: var(--ac-gold); }
.ac-footer__bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-top: 32px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.10); font-size: 13px; }
.ac-footer__bottom a { margin-left: 18px; }
@media (max-width: 921px) { .ac-footer__cols { grid-template-columns: 1fr 1fr; } }
@media (max-width: 544px) { .ac-footer__cols { grid-template-columns: 1fr; } }

/* ============================ WOW composed pages ============================ */
/* Pages use Astra 'page-builder' (full-width) layout so alignfull heroes/bands span the viewport.
   Loose text (paragraphs, headings, FAQ, related) is constrained to a readable, centered column. */
.entry-content.clear > :not(.alignfull):not(.alignwide) {
  max-width: 880px !important; margin-left: auto !important; margin-right: auto !important;
  padding-left: clamp(20px,5vw,24px); padding-right: clamp(20px,5vw,24px);
}
.entry-content > .alignfull { margin-top: 0; margin-bottom: 0; max-width: none !important; }
.entry-content { display: flow-root; }

/* ---- Cover hero: full-bleed photo behind copy + gradient scrim ----
   !important on the positioning-critical props so Astra/WP core image rules can't override. */
.ac-hero--cover { display: block !important; position: relative !important; padding: 0 !important; overflow: hidden; }
.ac-hero--cover .ac-hero__media { display: block !important; position: absolute !important; inset: 0 !important; margin: 0 !important; height: 100% !important; width: 100% !important; max-width: none !important; }
.ac-hero--cover .ac-hero__media img { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover !important; }
.ac-hero--cover .ac-hero__media::after { content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(110deg, rgba(15,23,32,.85) 0%, rgba(15,23,32,.62) 38%, rgba(15,23,32,.18) 78%, rgba(15,23,32,.08) 100%); }
.ac-hero--cover .ac-hero__copy { position: relative !important; z-index: 2 !important; max-width: 64ch;
  padding: clamp(72px,11vw,150px) clamp(24px,7vw,96px); }
.ac-hero--home .ac-hero__copy { min-height: clamp(440px,62vh,660px); display: flex; flex-direction: column; justify-content: center; }
.ac-hero--cover .ac-hero__copy h1 { max-width: 20ch; }

/* ---- Trust strip ---- */
.ac-trust__row { display: flex; flex-wrap: wrap; gap: clamp(16px,4vw,56px); justify-content: center;
  padding: 22px clamp(20px,5vw,48px); background: #fff; border-top: 1px solid var(--ac-line); border-bottom: 1px solid var(--ac-line); }
.ac-trust__item { margin: 0; color: var(--ac-slate); font-size: 15px; }
.ac-trust__item strong { color: var(--ac-ink); }

/* ---- Section rhythm + shared inner width ---- */
.ac-routes-wrap, .ac-portfolio-preview, .ac-why, .ac-portfolio-full, .ac-about-gallery, .ac-emergency-links, .ac-emergency-steps {
  padding: clamp(56px,8vw,104px) clamp(24px,6vw,64px); }
.ac-routes-wrap > .wp-block-heading, .ac-portfolio-preview > .wp-block-heading,
.ac-why > .wp-block-heading, .ac-routes-wrap > .ac-lead, .ac-portfolio-preview > .ac-lead {
  max-width: 1180px; margin-left: auto; margin-right: auto; text-align: center; }
.ac-lead { color: var(--ac-slate); font-size: 18px; max-width: 60ch; margin-inline: auto; margin-top: 6px; margin-bottom: clamp(28px,4vw,48px); text-align: center; }
.ac-why { background: var(--ac-white); }

/* ---- Service route cards ---- */
.ac-routes { max-width: 1180px; margin-inline: auto; gap: clamp(16px,2vw,24px); }
.ac-route { padding: 0; height: 100%; }
.ac-route .wp-block-image { margin: 0; }
.ac-route img { aspect-ratio: 4/3; object-fit: cover; width: 100%; border-radius: 4px 4px 0 0; }
.ac-route__body { padding: 20px 22px 24px; }
.ac-route__body h3 { font-family: var(--wp--preset--font-family--ac-heading); margin: 0 0 8px; }
.ac-route__body p { color: var(--ac-slate); font-size: 15px; line-height: 1.55; }
.ac-route__link a { color: var(--ac-navy); font-weight: 600; text-decoration: none; }
.ac-route__link a:hover { color: var(--ac-gold); }

/* ---- Why numerals grid ---- */
.ac-why__grid { max-width: 1180px; margin-inline: auto; gap: clamp(24px,3vw,44px); }
.ac-why__grid .wp-block-column { border-top: 2px solid var(--ac-line); padding-top: 18px; }
.ac-why__num { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(40px,5vw,56px); color: var(--ac-gold); line-height: 1; margin: 0 0 6px; }
.ac-why h2, .ac-portfolio-preview h2 { font-family: var(--wp--preset--font-family--ac-heading); text-align: center; }

/* ---- Portfolio bento ---- */
.ac-portfolio { grid-template-columns: repeat(4, 1fr); gap: 12px; max-width: 1280px; margin-inline: auto; padding: 0; }
.ac-portfolio .wp-block-image { margin: 0; border-radius: 4px; overflow: hidden; }
.ac-portfolio .wp-block-image img { width: 100%; height: 100%; aspect-ratio: 1; object-fit: cover; display: block; }
.ac-portfolio .span-2 { grid-column: span 2; grid-row: span 2; }
.ac-portfolio .span-2 img { aspect-ratio: auto; }
@media (max-width: 782px) { .ac-portfolio { grid-template-columns: repeat(2,1fr); } .ac-portfolio .span-2 { grid-column: span 2; grid-row: span 1; } }

/* ---- About gallery ---- */
.ac-about-gallery .ac-portfolio { grid-template-columns: repeat(3,1fr); }
@media (max-width: 782px){ .ac-about-gallery .ac-portfolio { grid-template-columns: 1fr 1fr; } }

/* ---- Emergency page links ---- */
.ac-emergency-links ul, .ac-emergency-steps { max-width: 1180px; margin-inline: auto; }
.ac-emergency-links ul { columns: 2; gap: 32px; list-style: none; padding: 0; }
.ac-emergency-links a { color: var(--ac-navy); font-weight: 600; }

/* ---- Fluent Forms "Request a Quote" (brand-matched) ---- */
.ac-form { max-width: 720px; margin: 8px auto clamp(48px,7vw,88px); }
.ac-form .fluentform .ff-el-input--label label { font-weight: 600; color: var(--ac-ink); }
.ac-form .fluentform input[type=text], .ac-form .fluentform input[type=email],
.ac-form .fluentform select, .ac-form .fluentform textarea {
  border: 1px solid var(--ac-line); border-radius: 4px; padding: 12px 14px; font-size: 16px; width: 100%;
  background: #fff; color: var(--ac-ink);
}
.ac-form .fluentform input:focus, .ac-form .fluentform select:focus, .ac-form .fluentform textarea:focus {
  outline: 3px solid var(--ac-gold); outline-offset: 1px; border-color: var(--ac-navy);
}
.ac-form .fluentform .ff-btn-submit {
  background: var(--ac-navy) !important; color: #fff !important; border-radius: 4px !important;
  padding: 14px 28px !important; font-weight: 600 !important; border: 0 !important;
}
.ac-form .fluentform .ff-btn-submit:hover { background: var(--ac-navy-deep) !important; box-shadow: inset 0 -2px 0 var(--ac-gold); }

/* ---- Self-contained Request a Quote form ---- */
.ac-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.ac-quote { max-width: 720px; margin: 4px auto clamp(40px,6vw,80px); text-align: left; }
.ac-quote__row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 600px){ .ac-quote__row { grid-template-columns: 1fr; } }
.ac-quote label { display: block; margin: 0 0 16px; font-weight: 600; color: var(--ac-ink); font-size: 15px; }
.ac-quote label span { color: var(--ac-gold); }
.ac-quote input, .ac-quote select, .ac-quote textarea {
  display: block; width: 100%; margin-top: 6px; padding: 12px 14px; font-size: 16px; font-weight: 400;
  border: 1px solid var(--ac-line); border-radius: 4px; background: #fff; color: var(--ac-ink); font-family: inherit;
}
.ac-quote input:focus, .ac-quote select:focus, .ac-quote textarea:focus { outline: 3px solid var(--ac-gold); outline-offset: 1px; border-color: var(--ac-navy); }
.ac-quote button { cursor: pointer; margin-top: 6px; }
.ac-quote__fine { margin-top: 12px; color: var(--ac-slate); font-size: 13px; }
.ac-form__ok { max-width: 720px; margin: 8px auto clamp(40px,6vw,80px); padding: 20px 24px; border-left: 3px solid var(--ac-gold); background: #fff; border-radius: 4px; color: var(--ac-ink); }

/* ==================== REAL-BRAND REFINEMENTS (from archcap.ca) ====================
   Navy #001B3D + gold #D4AF37 (accent only) + warm cream, serif-on-serif.
   Headlines: WHITE on navy, NAVY on light. Gold = button + thin rules + numerals + hairlines. */

/* Hero: true-navy scrim + a restrained gold rule above the headline (the jewel accent). */
.ac-hero--cover .ac-hero__media::after {
  background: linear-gradient(110deg, rgba(0,13,30,.88) 0%, rgba(0,20,44,.62) 40%, rgba(0,20,44,.16) 82%, rgba(0,20,44,.05) 100%) !important; }
.ac-hero--cover .ac-hero__copy::before {
  content: ""; display: block; width: 66px; height: 3px; background: var(--ac-gold); margin: 0 0 26px; }
.ac-hero__copy h1 { color: #fff; }
.ac-hero__promise { color: rgba(247,244,239,.9); font-family: var(--wp--preset--font-family--ac-body); }

/* Heading colour discipline */
.wp-block-heading { color: var(--ac-navy); }
.ac-on-navy .wp-block-heading, .ac-hero .wp-block-heading, .ac-emergency h2,
.ac-routes-wrap > .wp-block-heading { color: #fff; }

/* Warm grounds */
.ac-trust, .ac-trust__row, .ac-card { background: var(--ac-white); }
.ac-why { background: var(--ac-cream); }

/* "What do you need done?" = navy section, gold-hairline cards, WHITE titles (readable, not gold). */
.ac-routes-wrap { background: var(--ac-navy); }
.ac-routes-wrap > .ac-lead { color: var(--ac-stone) !important; }
.ac-routes-wrap .ac-route { background: var(--ac-navy-deep); border: 1px solid rgba(212,175,55,.38); }
.ac-routes-wrap .ac-route:hover { box-shadow: 0 16px 36px rgba(0,0,0,.32); transform: translateY(-3px); }
.ac-routes-wrap .ac-route__body h3 { color: #fff; }
.ac-routes-wrap .ac-route__body p { color: var(--ac-stone); }
.ac-routes-wrap .ac-route__link a { color: var(--ac-gold); }

/* Thin gold underline under centred section headings */
.ac-why h2, .ac-portfolio-preview h2 { position: relative; padding-bottom: 18px; }
.ac-why h2::after, .ac-portfolio-preview h2::after {
  content: ""; position: absolute; left: 50%; transform: translateX(-50%); bottom: 0; width: 60px; height: 3px; background: var(--ac-gold); }

/* Footer: titles in warm stone (gold-on-navy small text is itchy); one tiny gold dot accent. */
.ac-footer__title { color: var(--ac-stone); }
.ac-footer__word { color: #fff; }
.ac-footer__word::after { content: "."; color: var(--ac-gold); }
.ac-trust__item strong { color: var(--ac-navy); }

/* ---- Service-page sections (What's included / How it works / Related / Gallery) ---- */
.ac-included { background: var(--ac-white); }
.ac-included ul { columns: 2; column-gap: 48px; max-width: 900px; margin: 14px auto 0; list-style: none; padding: 0; }
.ac-included li { position: relative; padding: 9px 0 9px 30px; break-inside: avoid; border-bottom: 1px solid var(--ac-line); }
.ac-included li::before { content: ""; position: absolute; left: 2px; top: 14px; width: 11px; height: 6px; border-left: 2px solid var(--ac-gold); border-bottom: 2px solid var(--ac-gold); transform: rotate(-45deg); }
@media (max-width:600px){ .ac-included ul { columns: 1; } }
.ac-process { background: var(--ac-cream); }
.ac-steps { max-width: 1180px; margin-inline: auto; gap: clamp(20px,3vw,40px); }
.ac-step__num { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(34px,4vw,46px); color: var(--ac-gold); line-height: 1; margin: 0 0 8px; }
.ac-related-services { background: var(--ac-white); }
.ac-related-services ul { columns: 2; list-style: none; padding: 0; max-width: 900px; margin: 12px auto 0; }
.ac-related-services li { padding: 8px 0; break-inside: avoid; }
.ac-related-services a { color: var(--ac-navy); font-weight: 600; }
.ac-service-gallery { background: var(--ac-white); }
.ac-service-gallery .ac-portfolio { grid-template-columns: repeat(2,1fr); max-width: 1000px; }
.ac-included h2, .ac-process h2, .ac-related-services h2, .ac-service-gallery h2 { text-align: center; }

/* ---- Property management: real buildings we keep running (Gorbay, named with permission) ---- */
.ac-prop { background: var(--ac-ivory,#EDEBE6); padding: clamp(48px,7vw,88px) clamp(20px,5vw,64px); }
.ac-prop > .ac-eyebrow, .ac-prop > .wp-block-heading { text-align: center; }
.ac-prop > .ac-lead { text-align: center; max-width: 68ch; }
.ac-prop__grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 18px;
  max-width: 1080px; margin: clamp(28px,4vw,44px) auto 0; align-items: stretch; }
.ac-prop__card { background: #fff; border: 1px solid var(--ac-hairline,#E7E9EC); border-radius: 3px;
  overflow: hidden; margin: 0; height: 100%; box-shadow: 0 1px 2px rgba(0,20,44,.05); }
.ac-prop__card .ac-prop__img, .ac-prop__card figure.wp-block-image.ac-prop__img { margin: 0; }
.ac-prop__card .ac-prop__img img { width: 100%; height: 250px; object-fit: cover; display: block; cursor: zoom-in; }
.ac-prop__body { padding: 20px 22px 24px; }
.ac-prop__body h3 { font-family: var(--wp--preset--font-family--ac-heading); font-size: 21px;
  color: var(--ac-navy); margin: 0 0 4px; }
.ac-prop__area { margin: 0; font-size: 15px; color: var(--ac-slate,#5A6270); }
.ac-prop__area::before { content: ""; display: block; width: 36px; height: 2px;
  background: var(--ac-gold); margin: 0 0 10px; }
@media (max-width: 560px) { .ac-prop__card .ac-prop__img img { height: 200px; } }

/* ---- 404: still a job site. Blueprint treatment in pure CSS (no generated imagery). ---- */
.ac-404 { position: relative; background: var(--ac-navy); color: #fff; overflow: hidden;
  padding: clamp(64px,10vw,132px) clamp(20px,5vw,64px);
  /* break out of Astra's content container so the navy runs edge to edge */
  width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
/* the 404 template supplies its own full-bleed band, so drop the theme's page padding around it */
.error404 .site-content .ast-container { padding-left: 0; padding-right: 0; max-width: none; }
.error404 .entry-header, .error404 .ast-archive-description { display: none; }
.ac-404__grid { position: absolute; inset: 0; opacity: .16; pointer-events: none;
  background-image: linear-gradient(rgba(212,175,55,.55) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(212,175,55,.55) 1px, transparent 1px);
  background-size: 46px 46px; mask-image: radial-gradient(ellipse at 50% 40%, #000 35%, transparent 78%);
  -webkit-mask-image: radial-gradient(ellipse at 50% 40%, #000 35%, transparent 78%); }
.ac-404__inner { position: relative; z-index: 1; max-width: 980px; margin-inline: auto; text-align: center; }
.ac-404__eyebrow { font-family: var(--ac-ui); text-transform: uppercase; letter-spacing: .18em;
  font-size: 12px; color: var(--ac-gold); margin: 0 0 18px; }
.ac-404__h1 { font-family: var(--wp--preset--font-family--ac-heading); color: #fff; line-height: 1.05;
  font-size: clamp(34px,5.4vw,62px); margin: 0 0 18px; }
.ac-404__lead { color: rgba(246,248,250,.86); font-size: 18px; line-height: 1.65; max-width: 60ch;
  margin: 0 auto clamp(34px,5vw,52px); }
.ac-404__routes { display: grid; grid-template-columns: repeat(auto-fit,minmax(260px,1fr)); gap: 12px;
  text-align: left; margin-bottom: clamp(34px,5vw,48px); }
.ac-404__route { display: block; padding: 18px 20px; border: 1px solid rgba(212,175,55,.35);
  border-radius: 3px; background: rgba(255,255,255,.03); text-decoration: none;
  transition: border-color .18s ease, background .18s ease, transform .18s ease; }
.ac-404__route:hover { border-color: var(--ac-gold); background: rgba(212,175,55,.09); transform: translateY(-2px); }
.ac-404__route-name { display: block; font-family: var(--wp--preset--font-family--ac-heading);
  font-size: 19px; color: #fff; margin-bottom: 4px; }
.ac-404__route:hover .ac-404__route-name { color: var(--ac-gold); }
.ac-404__route-line { display: block; font-size: 14.5px; line-height: 1.5; color: rgba(246,248,250,.7); }
.ac-404__foot { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.ac-404__call { margin: 0; color: rgba(246,248,250,.8); font-size: 15px; }
.ac-404__call a { color: var(--ac-gold); font-weight: 600; text-decoration: none; }
.ac-404__call a:hover { text-decoration: underline; }
@media (prefers-reduced-motion: reduce) { .ac-404__route { transition: none; } .ac-404__route:hover { transform: none; } }

/* ---- Quote form: "what do you need" as tick-all-that-apply, plus a styled select everywhere ---- */
.ac-quote__needs { border: 0; padding: 0; margin: 0 0 18px; }
.ac-quote__needs legend { font-weight: 600; color: var(--ac-ink); padding: 0; margin-bottom: 10px; }
.ac-quote__hint { font-weight: 400; color: var(--ac-slate,#5A6270); font-size: 14px; margin-left: 6px; }
.ac-needs__opts { display: grid; grid-template-columns: repeat(auto-fit,minmax(190px,1fr)); gap: 10px; }
/* NOTE: must out-specify .ac-quote label{display:block} and .ac-quote label span{color:gold} (that gold is
   for the required asterisk, not for option text: gold is an accent, never body copy). */
.ac-quote .ac-needs__opt, .ac-needs__opt { display: flex; align-items: center; gap: 10px; cursor: pointer;
  margin: 0; border: 1px solid var(--ac-hairline,#E7E9EC); border-radius: 3px; padding: 12px 14px;
  background: #fff; font-weight: 400; font-size: 15px; line-height: 1.3;
  transition: border-color .15s ease, box-shadow .15s ease; min-height: 46px; }
.ac-quote .ac-needs__opt span, .ac-needs__opt span { color: var(--ac-ink); font-weight: 400; }
.ac-quote .ac-needs__opt:hover { border-color: var(--ac-navy); }
.ac-quote .ac-needs__opt input[type="checkbox"], .ac-needs__opt input[type="checkbox"] {
  width: 18px; height: 18px; min-height: 0; padding: 0; margin: 0; flex: 0 0 auto;
  accent-color: var(--ac-gold); border-radius: 2px; }
.ac-quote .ac-needs__opt:has(input:checked) { border-color: var(--ac-gold); box-shadow: inset 0 0 0 1px var(--ac-gold); }
.ac-quote .ac-needs__opt input:focus-visible { outline: 3px solid var(--ac-navy); outline-offset: 2px; }
/* the native select was the one unstyled control on the form; match it to the inputs (also fixes the drawer) */
.ac-quote select, .ac-drawer select {
  -webkit-appearance: none; appearance: none; width: 100%; background: #fff;
  border: 1px solid var(--ac-hairline,#E7E9EC); border-radius: 3px; padding: 12px 40px 12px 14px;
  font: inherit; color: var(--ac-ink); line-height: 1.3; min-height: 46px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23001B3D' stroke-width='1.6'/></svg>");
  background-repeat: no-repeat; background-position: right 14px center; }
.ac-quote select:focus, .ac-drawer select:focus { border-color: var(--ac-navy); outline: none; box-shadow: 0 0 0 3px rgba(0,27,61,.12); }

/* Belt-and-braces with the PHP filter: never show an empty byline / broken author link on CPT singles. */
.single-service .entry-meta, .single-city .entry-meta, .single-money_page .entry-meta,
.single-article .entry-meta, .ast-single-post .entry-meta .posted-by { display: none !important; }

/* S5: keep body copy to a readable measure (~72ch). Full-bleed paragraphs are hard to read and were
   part of what made these sections feel like a text wall. Applies to city + hub intros alike. */
.ac-hub-intro p:not(.ac-eyebrow) { max-width: 72ch; margin-inline: auto; }
.ac-hub-intro h2 + p:not(.ac-eyebrow) { margin-top: .6em; }

/* ---- S5: city intro discipline list as blocks, not bullets in a text wall ---- */
.ac-hub-intro ul.wp-block-list { list-style: none; padding: 0; margin: clamp(22px,3vw,36px) auto 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(260px,1fr)); gap: 16px; max-width: 1080px; }
.ac-hub-intro ul.wp-block-list li { background: #fff; border: 1px solid var(--ac-hairline,#E7E9EC);
  border-radius: 3px; padding: clamp(20px,2.2vw,28px); font-size: 16px; line-height: 1.65;
  color: var(--ac-ink); text-align: left; box-shadow: 0 1px 2px rgba(0,20,44,.04); }
.ac-hub-intro ul.wp-block-list li strong { display: block; margin-bottom: .5em; }
.ac-hub-intro ul.wp-block-list li strong a { color: var(--ac-navy); text-decoration: none;
  font-family: var(--wp--preset--font-family--ac-heading); font-size: 19px; }
.ac-hub-intro ul.wp-block-list li strong a:hover { color: var(--ac-gold); }
.ac-hub-intro ul.wp-block-list li strong::after { content: ""; display: block; width: 38px; height: 2px;
  background: var(--ac-gold); margin-top: .55em; }

/* ---- S5: local knowledge as scannable cards, not a wall of text ---- */
.ac-local-info { background: var(--ac-white); padding: clamp(48px,7vw,88px) clamp(20px,5vw,64px); }
.ac-local-info > .ac-eyebrow, .ac-local-info > .wp-block-heading { text-align: center; }
.ac-localgrid { display: grid; grid-template-columns: repeat(2,1fr); gap: 18px; max-width: 1080px;
  margin: clamp(28px,4vw,44px) auto 0; align-items: stretch; }
.ac-localcard { background: #fff; border: 1px solid var(--ac-hairline,#E7E9EC); border-radius: 3px;
  padding: clamp(22px,2.6vw,32px); box-shadow: 0 1px 2px rgba(0,20,44,.04);
  height: 100%; margin: 0; align-self: stretch; }
.ac-localcard h3 { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(18px,2vw,21px);
  color: var(--ac-navy); margin: 0 0 .5em; }
.ac-localcard h3::after { content: ""; display: block; width: 42px; height: 2px; background: var(--ac-gold); margin-top: .5em; }
.ac-localcard p { font-size: 16.5px; line-height: 1.7; color: var(--ac-ink); margin: 0 0 .8em; }
.ac-localcard p:last-child { margin-bottom: 0; }
.ac-localcard a { color: var(--ac-navy); text-decoration: underline; text-underline-offset: 3px; }
.ac-localcard a:hover { color: var(--ac-gold); }
@media (max-width: 820px) { .ac-localgrid { grid-template-columns: 1fr; } }

/* ---- Gallery with only a few photos: static centred row (no marquee = no dead space mid-scroll) ---- */
.ac-galgrid { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; max-width: 1180px; margin-inline: auto; }
.ac-galgrid figure, .ac-galgrid figure.wp-block-image { margin: 0; flex: 0 1 300px; }
/* beat WP core's .wp-block-image img{width:auto} so portrait shots fill the cell instead of leaving gaps */
.ac-galgrid .wp-block-image img, .ac-galgrid figure img {
  width: 100%; height: 380px; object-fit: cover; border-radius: 3px; display: block; cursor: zoom-in;
}
@media (max-width: 600px) { .ac-galgrid figure, .ac-galgrid figure.wp-block-image { flex: 1 1 100%; }
  .ac-galgrid .wp-block-image img, .ac-galgrid figure img { height: 300px; } }

/* ---- Portfolio: "Work in progress" section (live builds, own ground so it reads distinct) ---- */
.ac-pf-progress { background: var(--ac-ivory, #EDEBE6); padding: clamp(48px,7vw,88px) clamp(20px,5vw,64px); }
.ac-pf-progress > .wp-block-heading, .ac-pf-progress > .ac-eyebrow { text-align: center; }
.ac-pf-progress > .ac-lead { text-align: center; max-width: 68ch; }
.ac-pf-progress .ac-pf__grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; max-width: 1180px; margin-inline: auto; }
.ac-pf-progress .ac-pf__grid figure { margin: 0; }
.ac-pf-progress .ac-pf__grid img { width: 100%; height: 260px; object-fit: cover; border-radius: 3px; display: block; }
@media (max-width: 900px) { .ac-pf-progress .ac-pf__grid { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 560px) { .ac-pf-progress .ac-pf__grid { grid-template-columns: 1fr; } .ac-pf-progress .ac-pf__grid img { height: 220px; } }

/* ---- Article body (money pages): readable editorial column, not a text dump ---- */
.ac-article { padding: clamp(40px,6vw,72px) 20px; }
.ac-article > * { max-width: 760px; margin-inline: auto; }
.ac-article h2 { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(24px,3vw,34px); line-height: 1.15; color: var(--ac-navy); margin: 1.5em auto .45em; }
.ac-article > h2:first-child, .ac-article > .wp-block-heading:first-child { margin-top: 0; }
.ac-article h2::after { content: ""; display: block; width: 48px; height: 2px; background: var(--ac-gold); margin-top: .5em; }
.ac-article h3 { font-family: var(--wp--preset--font-family--ac-heading); font-size: clamp(19px,2vw,22px); color: var(--ac-navy); margin: 1.4em auto .4em; }
.ac-article p, .ac-article li { font-family: var(--wp--preset--font-family--ac-body); font-size: 18px; line-height: 1.75; color: var(--ac-ink); }
.ac-article p { margin: 0 auto 1.05em; }
.ac-article ul { padding-left: 1.2em; margin: 0 auto 1.2em; }
.ac-article li { margin: .3em 0; }
.ac-article a { color: var(--ac-navy); text-decoration: underline; text-underline-offset: 3px; }
.ac-article a:hover { color: var(--ac-gold); }

/* ---- Logo: gold crest, small, alone (matches archcap.ca) ---- */
.custom-logo, .custom-logo-link img { max-height: 56px !important; width: auto !important; }
.site-branding .site-title, .ast-site-identity .site-title, .site-header .site-description { display: none !important; }

/* ---- Reviews (real Google reviews) ---- */
.ac-reviews-wrap { background: var(--ac-cream); }
.ac-reviews-wrap h2 { text-align: center; }
.ac-reviews { max-width: 1120px; margin-inline: auto; gap: clamp(20px,3vw,32px); margin-top: 10px; }
.ac-rev { background: var(--ac-white); border: 1px solid var(--ac-line); border-radius: 4px; padding: 26px 26px 22px; height: 100%; }
.ac-rev__stars { color: var(--ac-gold); letter-spacing: 3px; font-size: 17px; margin: 0 0 12px; }
.ac-rev__quote { font-family: var(--wp--preset--font-family--ac-heading); font-size: 20px; line-height: 1.45; color: var(--ac-navy); margin: 0 0 14px; }
.ac-rev__name { color: var(--ac-slate); font-size: 14px; margin: 0; }

/* ==================== v3: WHITE palette + BUTTON/LINK STANDARD + scroll-top ==================== */
:root {
  /* v14 PALETTE (sampled from ArchCap's real brand): refined desaturated navy + warm-stone
     neutral + true brass gold. Fixes the flat #001B3D and the tired yellow cream. */
  /* E2: TWO ground tones only — white (primary) + ivory (warm alt). --ac-cream folded into ivory
     so there is no third near-white causing accidental seams. Grounds = white / ivory / navy. */
  --ac-white:#FBFBF9; --ac-ivory:#EDEBE6; --ac-cream:#EDEBE6; --ac-stone:#C9C3B8;
  --ac-navy:#1B2A44; --ac-navy-deep:#131F33; --ac-navy-soft:#2C3E5C;
  --ac-gold:#C89A44; --ac-gold-bright:#DDB85E; --ac-gold-deep:#97772C; --ac-gold-soft:#E6D6AE;
  --ac-ink:#1C2333; --ac-slate:#59606E; --ac-line:#E5E2DB;
}
body { background:#FBFBF9; }
.ac-why, .ac-process, .ac-reviews-wrap { background: var(--ac-cream) !important; }
.ac-trust, .ac-trust__row, .ac-card, .ac-included, .ac-related-services, .ac-service-gallery, .ac-cta { background: var(--ac-white) !important; }

/* BUTTON STANDARD — primary = gold fill / navy text; secondary = outline; NO blue anywhere. */
.wp-block-button .wp-block-button__link, .ac-btn {
  background: var(--ac-gold) !important; color: var(--ac-navy) !important; border:1px solid var(--ac-gold) !important;
  border-radius:4px !important; font-family: var(--wp--preset--font-family--ac-body) !important; font-weight:600 !important;
  letter-spacing:.02em; padding:15px 32px !important; text-decoration:none !important; box-shadow:none !important;
}
.wp-block-button .wp-block-button__link:hover, .ac-btn:hover { background:#c6a12c !important; color:var(--ac-navy) !important; transform:translateY(-2px); }
.wp-block-button.is-style-outline .wp-block-button__link, .ac-btn--ghost {
  background:transparent !important; color:var(--ac-navy) !important; border:1.5px solid var(--ac-navy) !important;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover { background:var(--ac-navy) !important; color:#fff !important; }
.ac-on-navy .wp-block-button.is-style-outline .wp-block-button__link { color:#fff !important; border-color:rgba(212,175,55,.85) !important; }
.ac-on-navy .wp-block-button.is-style-outline .wp-block-button__link:hover { background:var(--ac-gold) !important; color:var(--ac-navy) !important; border-color:var(--ac-gold) !important; }

/* LINK STANDARD — no default underline; navy, gold on hover; body links get underline-on-hover only. */
a, .menu-link, .ast-button, .wp-block-button__link { color: var(--ac-navy); text-decoration: none; }
a:hover { color: var(--ac-gold); }
.entry-content p a, .ac-related-services a { border-bottom:1px solid rgba(0,27,61,.28); }
.entry-content p a:hover, .ac-related-services a:hover { border-bottom-color: var(--ac-gold); color: var(--ac-gold); }
.ac-route__link a, .ac-hero a, .ac-footer a { border:0 !important; }

/* Center CTA + FAQ bands; center buttons in centered bands (Notes 5/12). */
.ac-cta, .ac-emergency, .ac-faq { text-align:center; }
.ac-cta .wp-block-buttons, .ac-emergency .wp-block-buttons, .ac-faq .wp-block-buttons { justify-content:center; }
.ac-faq details { text-align:left; max-width:780px; margin-inline:auto; }

/* Hero flush to header (kill the gap above/below). */
.entry-content > .alignfull:first-child { margin-top:0 !important; }
.ac-hero + * { margin-top:0 !important; }

/* BACK-TO-TOP on brand (Astra scroll-to-top). */
#ast-scroll-top, .ast-scroll-to-top-wrapper { background: var(--ac-navy) !important; color: var(--ac-gold) !important; border-radius:4px !important; box-shadow:0 4px 14px rgba(0,20,44,.25) !important; }
/* F7: pin back-to-top to the very bottom-right corner + below the quote drawer tab, so the two floating elements never overlap. */
#ast-scroll-top { right:20px !important; bottom:20px !important; z-index:140 !important; }
#ast-scroll-top:hover { background: var(--ac-gold) !important; color: var(--ac-navy) !important; }

/* ==================== v3b: header wordmark + nav CTA/phone/emergency + footer logo + mobile bar ==================== */
.site-branding .site-title, .ast-site-identity .site-title, .site-header .site-title { display:inline-block !important; }
.site-title a, .site-title { font-family: var(--wp--preset--font-family--ac-heading) !important; color: var(--ac-navy) !important; font-size:21px !important; font-weight:400 !important; text-decoration:none !important; border:0 !important; letter-spacing:.01em; }
.ac-nav-emergency > .menu-link::before { content:"\25CF\00a0"; color: var(--ac-gold); }
.ac-nav-cta > .menu-link { background: var(--ac-gold); color: var(--ac-navy) !important; border-radius:4px; padding:9px 20px !important; }
.ac-nav-cta > .menu-link:hover { background:#c6a12c; color:var(--ac-navy) !important; }
.ac-nav-phone > .menu-link { color: var(--ac-navy) !important; font-weight:600; }
.ac-footer__logo { display:block; height:54px; width:auto; margin-bottom:14px; }
.ac-mobilebar { display:none; }
@media (max-width: 921px){
  .ac-mobilebar { display:grid; grid-template-columns:1fr 1fr; position:fixed; left:0; right:0; bottom:0; z-index:9999; box-shadow:0 -2px 12px rgba(0,20,44,.2); }
  .ac-mobilebar a { text-align:center; padding:15px 8px; font-weight:700; font-family:var(--wp--preset--font-family--ac-body); text-decoration:none; border:0 !important; }
  .ac-mobilebar__call { background:var(--ac-navy); color:#fff !important; }
  .ac-mobilebar__quote { background:var(--ac-gold); color:var(--ac-navy) !important; }
  body { padding-bottom:54px; }
}

/* ==================== v3c: SPLIT hero (copy left on navy, clean image right) ==================== */
.ac-hero--split { padding:0 !important; background:var(--ac-navy); }
.ac-hero--split .ac-hero__copy { padding: clamp(48px,6vw,84px) clamp(28px,5vw,72px) !important; align-self:center; max-width:none; }
.ac-hero--split .ac-hero__copy::before { content:""; display:block; width:64px; height:3px; background:var(--ac-gold); margin:0 0 22px; }
.ac-hero--split .ac-hero__media { min-height:520px; }
.ac-hero--split .ac-hero__media::after { display:none; }
.ac-hero--split .ac-hero__copy h1 { font-size:clamp(34px,4vw,52px); }
@media(max-width:921px){ .ac-hero--split .ac-hero__media { min-height:280px; } }

/* ==================== v3d: readable service cards + nav CTA size ==================== */
.ac-routes-wrap .ac-route { background:#fff !important; border:1px solid var(--ac-line) !important; }
.ac-routes-wrap .ac-route__body h3 { color:var(--ac-navy) !important; }
.ac-routes-wrap .ac-route__body p { color:var(--ac-slate) !important; }
.ac-routes-wrap .ac-route__link a { color:var(--ac-navy) !important; border:0 !important; }
.ac-routes-wrap .ac-route__link a:hover { color:var(--ac-gold) !important; }
.ac-nav-cta > .menu-link { padding:8px 18px !important; font-size:13px !important; }

/* ==================== v3e: nav CTA chip + emergency urgency ==================== */
.main-header-menu .ac-nav-cta, .ast-menu-toggle + .main-header-menu .ac-nav-cta { display:flex !important; align-items:center !important; }
.ac-nav-cta > .menu-link { background:var(--ac-gold) !important; color:var(--ac-navy) !important; border-radius:4px !important; padding:9px 18px !important; font-size:13px !important; line-height:1.15 !important; height:auto !important; }
.ac-hero--emergency .ac-hero__copy::before { background:var(--ac-gold) !important; width:80px; }
.ac-hero--emergency .ac-hero__buttons .wp-block-button:first-child .wp-block-button__link { font-size:19px !important; padding:16px 30px !important; }

/* ============================================================================
   v4 — NAVY HEADER (preview-leaning) + 3-font editorial system + ivory ground
   This section is authoritative for the header/nav; it supersedes v3b/v3d/v3e nav
   rules above (later + !important). Type tokens:
     --ac-display  Libre Caslon Text (headlines)
     --ac-serif    Source Serif 4    (reading body)
     --ac-ui       Source Sans 3     (nav, buttons, eyebrows, labels, forms)
   ============================================================================ */
:root{
  --ac-ivory:#EDEBE6;
  --ac-display: var(--wp--preset--font-family--ac-heading, 'Libre Caslon Text', Georgia, 'Times New Roman', serif);
  --ac-serif:   var(--wp--preset--font-family--ac-body, 'Source Serif 4', Georgia, 'Times New Roman', serif);
  --ac-ui:      var(--wp--preset--font-family--ac-ui, 'Source Sans 3', -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);
  --nav-height: 74px;
}

/* ---- Utility top strip (desktop) ---- */
.ac-topbar{ background:var(--ac-navy-deep); color:rgba(255,255,255,.66); font-family:var(--ac-ui); font-size:12.5px; }
.ac-topbar__inner{ max-width:1320px; margin:0 auto; padding:8px clamp(20px,4vw,44px); display:flex; align-items:center; justify-content:space-between; gap:24px; }
.ac-topbar__trust{ letter-spacing:.015em; }
.ac-topbar__right{ display:flex; align-items:center; gap:11px; white-space:nowrap; }
.ac-topbar__label{ color:rgba(255,255,255,.5); text-transform:uppercase; letter-spacing:.16em; font-size:10.5px; }
.ac-topbar__phone{ color:#fff !important; font-weight:600; border:0 !important; letter-spacing:.02em; text-decoration:none; }
.ac-topbar__phone:hover{ color:var(--ac-gold) !important; }
@media(max-width:1150px){ .ac-topbar{ display:none; } }

/* ---- Main header bar -> NAVY ---- */
.main-header-bar{ background:var(--ac-navy) !important; border-bottom:1px solid rgba(212,175,55,.26); }
.ast-header-sticked, .main-header-bar.is-scrolled{ box-shadow:0 8px 26px rgba(0,10,25,.30) !important; }
.site-branding, .ast-site-identity{ display:flex; align-items:center; }
.custom-logo, .custom-logo-link img{ max-height:50px !important; width:auto !important; }
/* Wordmark (site title) -> white Caslon */
.site-branding .site-title, .ast-site-identity .site-title, .site-header .site-title{ display:inline-block !important; margin:0; }
.site-title a, .site-title{ color:#fff !important; font-family:var(--ac-display) !important; font-weight:400 !important; font-size:20px !important; letter-spacing:.01em !important; white-space:nowrap; text-decoration:none !important; border:0 !important; }
.site-title a:hover{ color:#fff !important; }

/* ---- Desktop nav links: white, uppercase, tracked (UI), gold hover underline ---- */
.main-header-menu .menu-link{ color:#fff !important; font-family:var(--ac-ui) !important; text-transform:uppercase; letter-spacing:.13em; font-size:12px !important; font-weight:600 !important; }
.main-header-menu > .menu-item > .menu-link{ padding-left:.85rem !important; padding-right:.85rem !important; position:relative; }
.main-header-menu > .menu-item > .menu-link:hover,
.main-header-menu > .current-menu-item > .menu-link{ color:var(--ac-gold) !important; }
.main-header-menu > .menu-item:not(.ac-nav-cta) > .menu-link::after{
  content:""; position:absolute; left:.85rem; right:.85rem; bottom:16px; height:1.5px; background:var(--ac-gold);
  transform:scaleX(0); transform-origin:left; transition:transform .25s cubic-bezier(.25,.8,.25,1); }
.main-header-menu > .menu-item:not(.ac-nav-cta) > .menu-link:hover::after,
.main-header-menu > .current-menu-item:not(.ac-nav-cta) > .menu-link::after{ transform:scaleX(1); }
/* dropdown caret colour */
.main-header-menu .ast-menu-toggle{ color:rgba(255,255,255,.7) !important; }

/* Emergency: gold dot */
.ac-nav-emergency > .menu-link::before{ content:"\25CF\00a0"; color:var(--ac-gold); }

/* CTA chip: gold fill / navy text (primary) */
.main-header-menu .ac-nav-cta{ display:flex !important; align-items:center !important; }
.ac-nav-cta > .menu-link{ background:var(--ac-gold) !important; color:var(--ac-navy) !important; border-radius:4px !important;
  padding:9px 18px !important; margin-left:.55rem; font-size:12px !important; letter-spacing:.07em !important; line-height:1.15 !important; height:auto !important; }
.ac-nav-cta > .menu-link::after{ display:none !important; }
.ac-nav-cta > .menu-link:hover{ background:#e0bd45 !important; color:var(--ac-navy) !important; }

/* ---- Dropdown / mega panel: white card, gold top rule (readable) ---- */
.main-header-menu .sub-menu{ background:#fff !important; border-top:2px solid var(--ac-gold) !important;
  box-shadow:0 18px 42px rgba(0,10,25,.22) !important; border-radius:0 0 4px 4px; padding:6px 0; }
.main-header-menu .sub-menu .menu-link{ color:var(--ac-navy) !important; text-transform:none !important; letter-spacing:.01em !important; font-size:14px !important; font-weight:500 !important; }
.main-header-menu .sub-menu .menu-link::after{ display:none !important; }
.main-header-menu .sub-menu .menu-link:hover{ color:var(--ac-gold) !important; background:var(--ac-ivory) !important; }

/* ---- Desktop menu: single row, never wrap (the old CTA-drops-to-a-2nd-line bug) ---- */
.main-header-menu{ flex-wrap:nowrap !important; }
.main-header-menu > .menu-item > .menu-link{ white-space:nowrap; }

/* ---- Tablet + narrow-desktop zone (922-1150): compact so the full header fits one clean row,
        keeping Astra's native 921 mobile breakpoint (raising it double-renders the header). ---- */
@media(max-width:1150px){
  .site-title a, .site-title{ font-size:16px !important; }
  .custom-logo, .custom-logo-link img{ max-height:38px !important; }
  .main-header-menu .menu-link{ font-size:11px !important; letter-spacing:.07em !important; }
  .main-header-menu > .menu-item > .menu-link{ padding-left:.5rem !important; padding-right:.5rem !important; }
  .ac-nav-cta > .menu-link{ padding:8px 13px !important; letter-spacing:.05em !important; }
  .main-header-menu > .menu-item:not(.ac-nav-cta) > .menu-link::after{ left:.5rem; right:.5rem; }
}

/* ---- Mobile header/menu (<=921, Astra's native switch) -> navy panel, white links, visible toggle ---- */
@media(max-width:921px){
  .ast-mobile-header-wrap .main-header-bar-navigation, .main-header-menu, .ast-mobile-popup-drawer,
  .ast-mobile-popup-drawer .main-header-menu{ background:var(--ac-navy) !important; }
  .ast-mobile-popup-drawer.active .ast-mobile-popup-inner{ background:var(--ac-navy) !important; }
  .main-header-menu{ flex-wrap:wrap !important; }
  .main-header-menu .menu-link, .ast-mobile-popup-drawer .menu-link{ color:#fff !important; letter-spacing:.08em; border-bottom:1px solid rgba(255,255,255,.08); }
  .main-header-menu > .menu-item > .menu-link::after{ display:none !important; }
  .ast-mobile-menu-buttons .menu-toggle, .menu-toggle{ background:transparent !important; color:#fff !important; }
  .menu-toggle .ast-mobile-svg, .ast-button-wrap .ast-mobile-svg{ fill:#fff !important; }
  .site-title a, .site-title{ font-size:18px !important; }
  .ac-nav-cta > .menu-link{ display:inline-block; margin:8px 20px; }
}

/* ---- Eyebrow (gold, UI, tracked) — the section-label system (preview) ---- */
.ac-eyebrow{ font-family:var(--ac-ui) !important; text-transform:uppercase; letter-spacing:.2em; font-size:12px; font-weight:600; color:var(--ac-gold); margin:0 0 14px; display:block; }
.ac-on-navy .ac-eyebrow, .ac-hero .ac-eyebrow{ color:var(--ac-gold); }

/* ---- Buttons + nav share the UI sans (crisp, matches nav) ---- */
.wp-block-button .wp-block-button__link, .ac-btn, .ac-quote button, .ac-quote input, .ac-quote select, .ac-quote textarea{ font-family:var(--ac-ui) !important; }

/* ---- Ivory as the warm alternate ground (the "have both" rhythm) ---- */
.ac-why, .ac-process, .ac-reviews-wrap{ background:var(--ac-ivory) !important; }
.ac-included, .ac-related-services, .ac-service-gallery, .ac-cta, .ac-trust, .ac-trust__row{ background:var(--ac-white) !important; }

/* ---- Secondary (outline) button legible on the navy split hero ---- */
.ac-hero .wp-block-button.is-style-outline .wp-block-button__link{ color:#fff !important; border:1.5px solid rgba(212,175,55,.85) !important; }
.ac-hero .wp-block-button.is-style-outline .wp-block-button__link:hover{ background:var(--ac-gold) !important; color:var(--ac-navy) !important; border-color:var(--ac-gold) !important; }

/* ============================================================================
   v5 — elevated shared blocks: stats bar · discipline checkerboard · 5-step
   process · seamless marquee gallery. Centered eyebrow + heading system.
   ============================================================================ */
/* WP flow-layout can inject margins between flex children — neutralise in our tracks/rows/grids. */
.ac-marquee__track > *, .ac-check__row > *, .ac-stats__grid > *{ margin-block:0 !important; }

/* Centered eyebrow + heading for full-bleed sections */
.ac-check > .ac-eyebrow, .ac-process > .ac-eyebrow, .ac-recent-head > .ac-eyebrow{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-check > .wp-block-heading, .ac-process > .wp-block-heading, .ac-recent-head > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-recent-head > .ac-lead{ text-align:center; }

/* ---- Stats bar (navy proof strip) ---- */
.ac-stats{ background:var(--ac-navy) !important; padding:clamp(38px,5vw,60px) clamp(24px,6vw,64px) !important; border-top:1px solid rgba(212,175,55,.22); }
.ac-stats__grid{ max-width:1180px; margin-inline:auto; gap:clamp(18px,3vw,36px) !important; }
.ac-stats__grid .wp-block-column{ text-align:center; border-left:1px solid rgba(212,175,55,.26); padding:6px clamp(10px,1.5vw,20px); }
.ac-stats__grid .wp-block-column:first-child{ border-left:0; }
.ac-stat__num{ font-family:var(--ac-display); font-size:clamp(28px,3.2vw,42px); color:var(--ac-gold); line-height:1; margin:0 0 8px; }
.ac-stat__label{ color:rgba(255,255,255,.8); font-size:13.5px; line-height:1.5; margin:0; }
@media(max-width:781px){ .ac-stats__grid{ flex-wrap:wrap; } .ac-stats__grid .wp-block-column{ flex-basis:44% !important; border-left:0; margin-bottom:8px; } }

/* ---- Discipline checkerboard (alternating image/text tiles) ---- */
.ac-check{ padding:clamp(56px,8vw,104px) 0 0 !important; background:var(--ac-ivory) !important; } /* E2: match the ivory tiles below (no white-band-on-ivory-tile seam) */
.ac-check > .ac-eyebrow, .ac-check > .wp-block-heading, .ac-check > .ac-check__intro{ padding-inline:clamp(24px,6vw,64px); }
/* F5: the checkerboard header reads as a real section intro — heading sits tight to a centered constrained
   sub-line, then a generous gap before the first tile, on mobile and desktop. */
.ac-check > .wp-block-heading{ margin-bottom:clamp(14px,1.6vw,20px); }
.ac-check > .ac-check__intro{ text-align:center; max-width:760px; margin:0 auto clamp(44px,5.5vw,76px); color:var(--ac-slate); font-size:clamp(16px,1.2vw,18px); }
.ac-check__row{ display:grid; grid-template-columns:1fr 1fr; align-items:stretch; }
.ac-check__row--navy{ background:var(--ac-navy); }
.ac-check__media{ margin:0 !important; min-height:360px; position:relative; overflow:hidden; }
.ac-check__media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.ac-check__text{ align-self:center; padding:clamp(38px,5vw,76px) clamp(28px,5vw,64px); }
.ac-check__text > *{ max-width:560px; }
.ac-check__row:nth-child(even) .ac-check__media{ order:2; }
.ac-check__text h3{ font-family:var(--ac-display); font-size:clamp(24px,2.4vw,33px); color:var(--ac-navy); margin:0 0 12px; line-height:1.12; }
.ac-check__row--navy .ac-check__text h3{ color:#fff; }
.ac-check__text p{ color:var(--ac-slate); }
.ac-check__row--navy .ac-check__text p{ color:rgba(255,255,255,.82); }
.ac-check__caps{ list-style:none !important; padding:0 !important; margin:16px 0 !important; columns:2; column-gap:22px; max-width:560px; }
.ac-check__caps li{ position:relative; padding:5px 0 5px 20px; font-size:14.5px; color:var(--ac-ink); break-inside:avoid; }
.ac-check__row--navy .ac-check__caps li{ color:rgba(255,255,255,.85); }
.ac-check__caps li::before{ content:""; position:absolute; left:1px; top:11px; width:8px; height:8px; border-right:2px solid var(--ac-gold); border-bottom:2px solid var(--ac-gold); transform:rotate(45deg); }
.ac-check__link{ margin-top:8px; }
.ac-check__link a{ font-family:var(--ac-ui) !important; font-weight:600; letter-spacing:.05em; text-transform:uppercase; font-size:13px; color:var(--ac-navy) !important; border:0 !important; }
.ac-check__row--navy .ac-check__link a{ color:var(--ac-gold) !important; }
.ac-check__link a:hover{ color:var(--ac-gold) !important; }
@media(max-width:860px){
  .ac-check__row, .ac-check__row:nth-child(even){ grid-template-columns:1fr; }
  .ac-check__media, .ac-check__row:nth-child(even) .ac-check__media{ order:-1; min-height:220px; }
  .ac-check__caps{ columns:1; }
}

/* ---- Process: 5 steps ---- */
.ac-process .ac-eyebrow{ text-align:center; }
.ac-steps--5{ gap:clamp(14px,2vw,26px) !important; max-width:1180px; margin-inline:auto; }
.ac-steps--5 .wp-block-column{ border-top:2px solid var(--ac-line); padding-top:16px; }
.ac-process .ac-step__num{ font-family:var(--ac-display); font-size:clamp(30px,3vw,42px); color:var(--ac-gold); line-height:1; margin:0 0 8px; }
.ac-process h3{ font-family:var(--ac-display); font-size:19px; color:var(--ac-navy); margin:0 0 6px; }
.ac-process p{ color:var(--ac-slate); font-size:15px; line-height:1.55; }
@media(max-width:900px){ .ac-steps--5{ flex-wrap:wrap; } .ac-steps--5 .wp-block-column{ flex-basis:46% !important; } }
@media(max-width:560px){ .ac-steps--5 .wp-block-column{ flex-basis:100% !important; } }

/* ---- Seamless marquee gallery ---- */
.ac-recent-head{ background:var(--ac-white) !important; padding:clamp(56px,8vw,96px) clamp(24px,6vw,64px) clamp(22px,3vw,34px) !important; }
.ac-recent-foot{ background:var(--ac-white) !important; padding:clamp(22px,3vw,38px) 0 clamp(56px,8vw,96px) !important; }
.ac-center-btns{ justify-content:center; }
.ac-marquee{ background:var(--ac-white); overflow:hidden; padding:6px 0 4px;
  -webkit-mask:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent); mask:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent); }
.ac-marquee__track{ display:flex; flex-wrap:nowrap !important; gap:16px; width:max-content; animation:ac-scroll 70s linear infinite; }
.ac-marquee:hover .ac-marquee__track{ animation-play-state:paused; }
.ac-marquee__item{ margin:0 !important; flex:0 0 auto; }
.ac-marquee__item img{ height:clamp(210px,26vw,300px); width:auto; max-width:none; border-radius:4px; display:block; object-fit:cover; }
@keyframes ac-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@media(prefers-reduced-motion:reduce){ .ac-marquee{ -webkit-mask:none; mask:none; } .ac-marquee__track{ animation:none; flex-wrap:wrap !important; justify-content:center; width:auto; } }
/* [ac_gallery] per-page slider section (tag-driven, grows over time) */
.ac-galsection{ padding:clamp(48px,6vw,88px) 0 clamp(40px,5vw,72px); background:var(--ac-white); text-align:center; }
.ac-galsection > .ac-eyebrow{ margin:0 0 6px; }
.ac-galsection > .wp-block-heading{ font-family:var(--ac-display); color:var(--ac-navy); margin:0 0 clamp(24px,3vw,40px); }
.ac-galsection .ac-marquee{ text-align:left; }
/* touch: let the row be swiped as well as auto-scroll */
.ac-galsection .ac-marquee{ overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; }
.ac-galsection .ac-marquee::-webkit-scrollbar{ display:none; }
/* portfolio link under every per-page slider (C16/C26) */
.ac-galmore{ text-align:center; margin-top:clamp(18px,2.4vw,30px); }
.ac-galmore a{ font-family:var(--ac-ui) !important; font-weight:600; letter-spacing:.05em; text-transform:uppercase; font-size:13px; color:var(--ac-navy) !important; border:0 !important; }
.ac-galmore a:hover{ color:var(--ac-gold) !important; }
/* link-only state: a service with no real photos yet shows a prominent portfolio button instead of a slider */
.ac-galsection--link{ padding-bottom:clamp(48px,6vw,88px); }
.ac-galmore--solo{ margin-top:clamp(18px,2.6vw,30px); }
.ac-galmore--solo a{ display:inline-block; border:1px solid var(--ac-navy) !important; padding:12px 28px; border-radius:4px; }
.ac-galmore--solo a:hover{ background:var(--ac-navy); color:#fff !important; }
/* lightbox modal (click any gallery image) */
.ac-lightbox{ position:fixed; inset:0; z-index:10000; display:none; align-items:center; justify-content:center; background:rgba(0,20,44,.92); padding:24px; cursor:zoom-out; }
.ac-lightbox.is-open{ display:flex; }
.ac-lightbox img{ max-width:min(1100px,94vw); max-height:90vh; width:auto; height:auto; border-radius:4px; box-shadow:0 20px 60px rgba(0,0,0,.5); cursor:default; }
.ac-lightbox__close{ position:absolute; top:16px; right:22px; background:transparent !important; border:0 !important; color:#fff !important; font-size:40px; line-height:1; cursor:pointer; box-shadow:none !important; }
.ac-zoom, .ac-marquee__item img, .ac-portfolio img, .ac-pf__grid img{ cursor:zoom-in; }
/* Instagram feed = themed rolling left-to-right slider (matches our marquee); activates when the feed connects */
.ac-igsection{ background:var(--ac-ivory); padding:clamp(48px,6vw,88px) 0; text-align:center; }
.ac-igsection #sbi_images, .ac-igsection #sb_instagram #sbi_images{ display:flex !important; flex-wrap:nowrap !important; width:max-content !important; gap:14px; animation:ac-scroll 80s linear infinite; }
.ac-igsection:hover #sbi_images{ animation-play-state:paused; }
.ac-igsection #sbi_images .sbi_item{ flex:0 0 auto !important; width:clamp(220px,22vw,300px) !important; border-radius:4px; overflow:hidden; }
@media(prefers-reduced-motion:reduce){ .ac-igsection #sbi_images{ animation:none; flex-wrap:wrap !important; width:auto !important; justify-content:center; } }

/* ============================================================================
   v6 — Property Management: Scope-of-Care grid + navy feature band
   ============================================================================ */
.ac-scope{ background:var(--ac-white) !important; }
.ac-scope > .ac-eyebrow, .ac-scope > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-scope > .wp-block-heading{ margin-bottom:clamp(28px,4vw,48px); }
.ac-scope__grid{ max-width:1180px; margin-inline:auto; flex-wrap:wrap !important; gap:clamp(18px,2.4vw,28px) !important; }
.ac-scope__grid > *{ margin-block:0 !important; }
.ac-scope__grid .wp-block-column{ flex-basis:calc(33.333% - 20px) !important; flex-grow:0 !important; }
.ac-scope__card{ background:var(--ac-ivory); border:1px solid var(--ac-line); border-top:2px solid var(--ac-gold); border-radius:4px; padding:28px 26px; height:100%; }
.ac-scope__card h3{ font-family:var(--ac-display); font-size:20px; color:var(--ac-navy); margin:0 0 8px; }
.ac-scope__card p{ color:var(--ac-slate); font-size:15px; line-height:1.55; margin:0; }
@media(max-width:860px){ .ac-scope__grid .wp-block-column{ flex-basis:calc(50% - 14px) !important; } }
@media(max-width:560px){ .ac-scope__grid .wp-block-column{ flex-basis:100% !important; } }

/* ---- Feature band (navy statement + consultative CTA) ---- */
.ac-band{ background:var(--ac-navy) !important; text-align:center; padding:clamp(56px,8vw,96px) clamp(24px,6vw,64px) !important; }
.ac-band .ac-eyebrow{ text-align:center; }
.ac-band h2{ font-family:var(--ac-display); color:#fff !important; font-size:clamp(28px,3.4vw,44px); max-width:22ch; margin:6px auto 16px; }
.ac-band__lead{ color:rgba(255,255,255,.84); max-width:60ch; margin:0 auto clamp(22px,3vw,30px); font-size:18px; line-height:1.6; }

/* ============================================================================
   v7 — Contact page (heart: form + people/NAP rail + emergency + after)
   ============================================================================ */
.ac-contact-wrap{ background:var(--ac-white) !important; padding:clamp(48px,7vw,88px) clamp(24px,6vw,64px) !important; }
.ac-contact{ max-width:1180px; margin-inline:auto; gap:clamp(32px,4vw,64px) !important; align-items:flex-start; }
.ac-contact .ac-contact__formcol{ flex-basis:60% !important; }
.ac-contact .ac-contact__rail{ flex-basis:40% !important; background:var(--ac-ivory); border:1px solid var(--ac-line); border-top:2px solid var(--ac-gold); border-radius:4px; padding:30px 30px 26px; }
.ac-contact__formcol h2{ font-family:var(--ac-display); color:var(--ac-navy); margin:2px 0 8px; }
.ac-contact__rail h3{ font-family:var(--ac-display); color:var(--ac-navy); font-size:21px; margin:0 0 10px; }
.ac-contact__rail p{ color:var(--ac-slate); font-size:15px; line-height:1.6; }
.ac-contact__item{ border-top:1px solid var(--ac-line); padding-top:12px; margin-top:12px !important; color:var(--ac-ink) !important; }
.ac-contact__k{ display:block; font-family:var(--ac-ui); text-transform:uppercase; letter-spacing:.12em; font-size:11px; color:var(--ac-slate); margin-bottom:2px; }
.ac-contact__item a{ color:var(--ac-navy); font-weight:600; border:0 !important; }
.ac-contact__item a:hover{ color:var(--ac-gold); }
.ac-contact__emerg{ margin-top:22px; padding:18px 20px; background:var(--ac-navy); border-radius:4px; }
.ac-contact__emerg h3{ color:#fff; font-size:18px; margin:0 0 6px; }
.ac-contact__emerg p{ color:rgba(255,255,255,.82); font-size:14.5px; margin:0; }
.ac-contact__emerg a{ color:var(--ac-gold); font-weight:700; border:0 !important; }
.ac-contact-wrap .ac-quote{ margin:6px 0 0; }
.ac-after{ background:var(--ac-ivory) !important; text-align:center; padding:clamp(48px,7vw,80px) clamp(24px,6vw,64px) !important; }
.ac-after .ac-eyebrow{ text-align:center; }
.ac-after h2{ font-family:var(--ac-display); color:var(--ac-navy); }
.ac-after p{ color:var(--ac-slate); max-width:64ch; margin-inline:auto; }
@media(max-width:860px){ .ac-contact .ac-contact__formcol, .ac-contact .ac-contact__rail{ flex-basis:100% !important; } }

/* ============================================================================
   v8 — service pages: gallery grid, visual related cards, centered eyebrows,
   tighter cover-hero padding (the "too much top/bottom" note).
   ============================================================================ */
.ac-service-gallery{ background:var(--ac-white) !important; }
.ac-service-gallery > .ac-eyebrow, .ac-service-gallery > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-service-gallery > .wp-block-heading{ margin-bottom:clamp(20px,3vw,32px); }
.ac-gallery-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; max-width:1180px; margin-inline:auto; }
.ac-gallery-grid > *{ margin-block:0 !important; }
.ac-gallery-grid .wp-block-image{ margin:0; border-radius:4px; overflow:hidden; }
.ac-gallery-grid img{ width:100%; height:100%; aspect-ratio:4/3; object-fit:cover; display:block; border-radius:4px; }
@media(max-width:781px){ .ac-gallery-grid{ grid-template-columns:1fr 1fr; } }

.ac-related-visual{ background:var(--ac-ivory) !important; padding:clamp(56px,8vw,96px) clamp(24px,6vw,64px) !important; }
.ac-related-visual > .ac-eyebrow, .ac-related-visual > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-related-visual > .wp-block-heading{ margin-bottom:clamp(24px,3vw,40px); }
.ac-related-visual .ac-routes{ max-width:1180px; margin-inline:auto; }
.ac-related-visual .ac-route{ background:#fff !important; border:1px solid var(--ac-line) !important; }
.ac-related-visual .ac-route__body h3{ color:var(--ac-navy) !important; font-family:var(--ac-display); }
.ac-related-visual .ac-route__link a{ color:var(--ac-navy) !important; border:0 !important; }
.ac-related-visual .ac-route__link a:hover{ color:var(--ac-gold) !important; }

/* What's included + process: centered eyebrow/heading/lead */
.ac-included > .ac-eyebrow, .ac-included > .wp-block-heading, .ac-included > .ac-lead{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-process > .ac-eyebrow, .ac-process > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }

/* Cover hero: tighter vertical padding + sensible min-height (was too tall on service/money pages) */
.ac-hero--cover .ac-hero__copy{ padding-top:clamp(52px,7vw,90px) !important; padding-bottom:clamp(52px,7vw,90px) !important; }
.ac-hero--cover:not(.ac-hero--home) .ac-hero__copy{ min-height:clamp(280px,38vh,380px); }

/* Service/hub cards use a responsive grid now (home no longer uses .ac-routes) */
.ac-routes{ display:grid !important; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:clamp(16px,2vw,24px) !important; max-width:1180px; margin-inline:auto; }
.ac-routes > *{ margin-block:0 !important; }

/* ============================================================================
   v9 — discipline hubs (rebuilt): intro + visual child cards + gallery + why +
   internal money-page links + FAQ + CTA.
   ============================================================================ */
.ac-hub-intro{ background:var(--ac-white) !important; text-align:center; padding:clamp(56px,8vw,92px) clamp(24px,6vw,64px) !important; }
.ac-hub-intro .ac-eyebrow, .ac-hub-intro h2, .ac-hub-intro .ac-lead{ text-align:center; }
.ac-hub-intro h2{ font-family:var(--ac-display); color:var(--ac-navy); }
.ac-hub-intro .ac-lead{ max-width:66ch; margin-inline:auto; color:var(--ac-slate); }
.ac-hub-cards{ background:var(--ac-ivory) !important; padding:clamp(56px,8vw,96px) clamp(24px,6vw,64px) !important; }
.ac-hub-cards > .ac-eyebrow, .ac-hub-cards > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-hub-cards > .wp-block-heading{ margin-bottom:clamp(24px,3vw,40px); }
.ac-hub-cards .ac-route, .ac-related-visual .ac-route{ background:#fff !important; border:1px solid var(--ac-line) !important; }
.ac-hub-cards .ac-route__body h3{ color:var(--ac-navy) !important; font-family:var(--ac-display); }
.ac-hub-cards .ac-route__link a{ color:var(--ac-navy) !important; border:0 !important; }
.ac-hub-cards .ac-route__link a:hover{ color:var(--ac-gold) !important; }
.ac-hub-links{ background:var(--ac-white) !important; padding:clamp(44px,6vw,76px) clamp(24px,6vw,64px) !important; text-align:center; }
.ac-hub-links .ac-eyebrow, .ac-hub-links h2{ text-align:center; }
.ac-hub-links h2{ font-family:var(--ac-display); color:var(--ac-navy); }
.ac-hub-links ul{ columns:3; column-gap:40px; max-width:1000px; margin:18px auto 0; list-style:none; padding:0; text-align:left; }
.ac-hub-links li{ padding:6px 0; break-inside:avoid; }
.ac-hub-links a{ color:var(--ac-navy); font-weight:500; border-bottom:1px solid rgba(0,27,61,.2); }
.ac-hub-links a:hover{ color:var(--ac-gold); border-color:var(--ac-gold); }
@media(max-width:820px){ .ac-hub-links ul{ columns:2; } }
@media(max-width:560px){ .ac-hub-links ul{ columns:1; text-align:center; } }

/* ============================================================================
   v10 — emergency page (phone-first): bold call band + numbered steps
   ============================================================================ */
.ac-band--emergency{ border-top:3px solid var(--ac-gold); }
.ac-band--emergency h2{ font-size:clamp(30px,3.6vw,46px); }
.ac-emergency-steps{ background:var(--ac-white) !important; padding:clamp(48px,7vw,84px) clamp(24px,6vw,64px) !important; }
.ac-emergency-steps > .ac-eyebrow, .ac-emergency-steps > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-emergency-steps > .wp-block-heading{ margin-bottom:clamp(24px,3vw,40px); }
.ac-esteps{ max-width:1180px; margin-inline:auto; gap:clamp(16px,2vw,28px) !important; }
.ac-esteps > *{ margin-block:0 !important; }
.ac-esteps .wp-block-column{ border-top:2px solid var(--ac-gold); padding-top:16px; }
.ac-estep__n{ font-family:var(--ac-display); font-size:clamp(30px,3vw,42px); color:var(--ac-gold); line-height:1; margin:0 0 8px; }
.ac-emergency-steps h3{ font-family:var(--ac-display); font-size:19px; color:var(--ac-navy); margin:0 0 6px; }
.ac-emergency-steps p{ color:var(--ac-slate); font-size:15px; line-height:1.55; }
@media(max-width:900px){ .ac-esteps{ flex-wrap:wrap; } .ac-esteps .wp-block-column{ flex-basis:46% !important; } }
@media(max-width:560px){ .ac-esteps .wp-block-column{ flex-basis:100% !important; } }
.ac-emergency-links{ background:var(--ac-ivory) !important; padding:clamp(44px,6vw,76px) clamp(24px,6vw,64px) !important; }
.ac-emergency-links > .ac-eyebrow, .ac-emergency-links > .wp-block-heading{ text-align:center; }
.ac-emergency-links ul{ columns:2; max-width:800px; margin:12px auto 0; }
.ac-emergency-links a{ color:var(--ac-navy); font-weight:600; }

/* ============================================================================
   v11 — portfolio filter + about editorial body
   ============================================================================ */
.ac-portfolio-full{ background:var(--ac-white) !important; padding:clamp(48px,7vw,88px) clamp(24px,6vw,64px) !important; }
.ac-portfolio-full > .ac-eyebrow, .ac-portfolio-full > .wp-block-heading{ text-align:center; max-width:1180px; margin-inline:auto; }
.ac-portfolio-full > .wp-block-heading{ margin-bottom:clamp(18px,2.6vw,28px); }
.ac-pf{ max-width:1280px; margin-inline:auto; }
.ac-pf__bar{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-bottom:clamp(20px,3vw,32px); }
.ac-pf__btn{ font-family:var(--ac-ui); text-transform:uppercase; letter-spacing:.1em; font-size:12px; font-weight:600; color:var(--ac-navy); background:transparent; border:1px solid var(--ac-line); border-radius:2px; padding:9px 18px; cursor:pointer; transition:all .2s ease; }
.ac-pf__btn:hover{ border-color:var(--ac-navy); }
.ac-pf__btn.is-active{ background:var(--ac-navy); color:#fff; border-color:var(--ac-navy); }
.ac-pf__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.ac-pf__item{ margin:0; border-radius:4px; overflow:hidden; aspect-ratio:4/3; }
.ac-pf__item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s ease; }
.ac-pf__item:hover img{ transform:scale(1.04); }
@media(max-width:820px){ .ac-pf__grid{ grid-template-columns:1fr 1fr; } }
@media(max-width:520px){ .ac-pf__grid{ grid-template-columns:1fr; } }

/* About editorial body (readable centered column, was a flat wall) */
.ac-about-body{ background:var(--ac-white) !important; padding:clamp(48px,7vw,88px) clamp(24px,6vw,64px) !important; }
.ac-about-body > *{ max-width:760px; margin-inline:auto; }
.ac-about-body > .ac-eyebrow{ text-align:center; }
.ac-about-body h2{ font-family:var(--ac-display); color:var(--ac-navy); margin-top:1.5em; margin-bottom:.35em; }
.ac-about-body p, .ac-about-body li{ color:var(--ac-ink); }
.ac-about-body p{ margin-bottom:1.1em; }

/* ============================================================================
   v12 — retire the "counting" (01/02/03) AI tell. Editorial devices instead:
   why -> gold-rule columns · process/steps -> connected timeline · stats ->
   proof band · emergency -> phase words. (feedback_counting_and_ai_convergence)
   ============================================================================ */
/* Why: a short gold rule tops each column (no numerals) */
.ac-why__grid .wp-block-column{ border-top:0 !important; padding-top:26px !important; position:relative; }
.ac-why__grid .wp-block-column::before{ content:""; position:absolute; top:0; left:0; width:44px; height:3px; background:var(--ac-gold); }
.ac-why h3{ font-family:var(--ac-display); color:var(--ac-navy); font-size:clamp(20px,2.1vw,26px); margin:0 0 10px; }
.ac-why p{ color:var(--ac-slate); }
.ac-why h2::after{ display:none; } /* drop the underline gimmick under the heading */

/* Process / How it works: a connected timeline (dots on a gold spine, no numbers) */
.ac-process .ac-timeline{ max-width:1180px; margin-inline:auto; gap:clamp(16px,2vw,30px) !important; position:relative; }
.ac-process .ac-timeline > *{ margin-block:0 !important; }
.ac-process .ac-timeline::before{ content:""; position:absolute; top:9px; left:8px; right:8px; height:2px; background:linear-gradient(90deg,#e6d7b2,var(--ac-gold),#e6d7b2); opacity:.55; }
.ac-process .ac-timeline .wp-block-column{ position:relative; padding-top:34px; }
.ac-process .ac-timeline .wp-block-column::before{ content:""; position:absolute; top:2px; left:0; width:16px; height:16px; border-radius:50%; background:var(--ac-ivory); border:3px solid var(--ac-gold); }
.ac-process .ac-timeline h3{ font-family:var(--ac-display); color:var(--ac-navy); font-size:19px; margin:0 0 6px; }
.ac-process .ac-timeline p{ color:var(--ac-slate); font-size:15px; line-height:1.55; margin:0; }
@media(max-width:900px){ .ac-process .ac-timeline{ flex-wrap:wrap; } .ac-process .ac-timeline::before{ display:none; } .ac-process .ac-timeline .wp-block-column{ flex-basis:46% !important; } }
@media(max-width:560px){ .ac-process .ac-timeline .wp-block-column{ flex-basis:100% !important; } }

/* Proof band (replaces the big-number stats): confident statements, gold hairlines */
.ac-proof{ background:var(--ac-navy) !important; padding:clamp(40px,5vw,60px) clamp(24px,6vw,64px) !important; border-top:1px solid rgba(212,175,55,.22); }
.ac-proof__grid{ max-width:1180px; margin-inline:auto; gap:0 !important; }
.ac-proof__grid > *{ margin-block:0 !important; }
.ac-proof__grid .wp-block-column{ padding:6px clamp(16px,2.4vw,32px); border-left:1px solid rgba(212,175,55,.26); }
.ac-proof__grid .wp-block-column:first-child{ border-left:0; }
.ac-proof__t{ font-family:var(--ac-display); color:#fff; font-size:clamp(18px,1.9vw,23px); line-height:1.2; margin:0 0 8px; min-height:2.4em; }
@media(max-width:781px){ .ac-proof__t{ min-height:0; } }
.ac-proof__t::after{ content:""; display:block; width:26px; height:2px; background:var(--ac-gold); margin-top:10px; }
.ac-proof__d{ color:rgba(255,255,255,.72); font-size:14px; line-height:1.5; margin:0; }
@media(max-width:781px){ .ac-proof__grid{ flex-wrap:wrap; } .ac-proof__grid .wp-block-column{ flex-basis:50% !important; border-left:0; margin-bottom:18px; } }

/* Emergency: phase words (First / Then / Next / If it is safe) not 1 2 3 4 */
.ac-estep__n{ font-family:var(--ac-ui) !important; text-transform:uppercase; letter-spacing:.14em; font-size:12px !important; font-weight:700; color:var(--ac-gold) !important; margin:0 0 8px !important; }

/* ============================================================================
   v14 — palette-pass fixes: proof trim (L11), eyebrow alignment (L12/L21),
   flush + toned checkerboard (L13/L14).
   ============================================================================ */
/* Proof band: four bold statements, no sub-text, tighter */
.ac-proof__t{ min-height:0 !important; margin:0 !important; }
.ac-proof{ padding:clamp(34px,4vw,52px) clamp(24px,6vw,64px) !important; }
.ac-proof__grid .wp-block-column{ padding-block:4px; }

/* Eyebrow aligns with its centred heading — systemic (L12/L21) */
.ac-why > .ac-eyebrow, .ac-reviews-wrap > .ac-eyebrow, .ac-portfolio-preview > .ac-eyebrow,
.ac-cta > .ac-eyebrow, .ac-band > .ac-eyebrow, .ac-hub-intro > .ac-eyebrow{ text-align:center !important; max-width:1180px; margin-inline:auto; }

/* Checkerboard: flush seamless tiles (kill inter-row gap) + light rows on stone
   (gives tone + grounds the "floating" images, alternating stone / navy rhythm) */
.ac-check{ padding-bottom:0 !important; }
.ac-check.is-layout-flow > *, .ac-check > .ac-check__row{ margin-block:0 !important; }
.ac-check__row:not(.ac-check__row--navy){ background:var(--ac-ivory); }
.ac-check__row:not(.ac-check__row--navy) .ac-check__text{ background:var(--ac-ivory); }

/* ============================================================================
   v15 — button state bug (L9) · hero flush all templates (L10) · timeline
   breathing room (L20) · why cards (L12/L18)
   ============================================================================ */
/* On-brand text selection (kills the blue selection box on the gold CTA) + no tap-highlight */
::selection{ background:var(--ac-gold-soft); color:var(--ac-navy); }
::-moz-selection{ background:var(--ac-gold-soft); color:var(--ac-navy); }
a, button, .menu-link, .wp-block-button__link, .ac-nav-cta > .menu-link, .ac-btn{ -webkit-tap-highlight-color:transparent; }
.ac-nav-cta > .menu-link, .ac-nav-cta > .menu-link:hover, .ac-nav-cta > .menu-link:focus,
.ac-nav-cta > .menu-link:active, .ac-nav-cta > .menu-link:visited{ color:var(--ac-navy) !important; }
.wp-block-button .wp-block-button__link:active, .wp-block-button .wp-block-button__link:focus{ color:var(--ac-navy) !important; }

/* Hero flush on every template. Root cause: CPT singles render an empty .entry-header (ast-no-title)
   + container top-padding the home Page layout drops. Kill both. */
.main-header-bar{ margin-bottom:0 !important; }
.entry-header.ast-no-title, .ast-single-post .entry-header{ display:none !important; margin:0 !important; padding:0 !important; }
body:not(.home) #primary, body:not(.home) .site-content > .ast-container{ padding-top:0 !important; margin-top:0 !important; }
body:not(.home) .entry-content{ margin-top:0 !important; }
.entry-content > .ac-hero:first-child, .entry-content.clear > .alignfull:first-child{ margin-top:0 !important; }

/* Timeline: breathing room, names pop, descriptions recede (L20 not-packed / glanceable) */
.ac-process .ac-timeline{ gap:clamp(22px,2.8vw,44px) !important; }
.ac-process .ac-timeline h3{ font-size:clamp(18px,1.7vw,21px); color:var(--ac-navy); }
.ac-process .ac-timeline p{ font-size:14px; color:var(--ac-slate); line-height:1.5; max-width:24ch; }

/* Why cards: white cards on stone, gold top-rule, subtle hover lift (nice + lively block) */
.ac-why__grid .wp-block-column::before{ display:none !important; }
.ac-why__grid .wp-block-column{ border-top:0 !important; padding-top:0 !important; }
.ac-why__card{ background:var(--ac-white); border:1px solid var(--ac-line); border-radius:4px; padding:30px 28px; height:100%; position:relative; transition:transform .22s cubic-bezier(.25,.8,.25,1), box-shadow .22s ease; }
.ac-why__card::before{ display:none; } /* E3: removed the floating top-left gold tab */
.ac-why__card:hover{ transform:translateY(-4px); box-shadow:0 16px 38px rgba(19,31,51,.13); }
.ac-why__card h3{ font-family:var(--ac-display); color:var(--ac-navy); font-size:clamp(20px,2vw,25px); margin:0 0 12px; padding-bottom:12px; position:relative; }
.ac-why__card h3::after{ content:""; position:absolute; left:0; bottom:0; width:34px; height:2px; background:var(--ac-gold); } /* E3: gold accent relocated under the heading */
.ac-why__card p{ color:var(--ac-slate); }

/* ============================================================================
   v16 — lively secondary "explore" links (L15): underline draws in + gold shift
   on hover. Low-emphasis, never competes with the primary button.
   ============================================================================ */
.ac-check__link a, .ac-route__link a{ position:relative; display:inline-block; padding-bottom:3px; transition:color .2s ease; }
.ac-check__link a::after, .ac-route__link a::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:1.5px; background:var(--ac-gold); transform:scaleX(0); transform-origin:left; transition:transform .3s cubic-bezier(.25,.8,.25,1); }
.ac-check__link a:hover, .ac-route__link a:hover{ color:var(--ac-gold) !important; }
.ac-check__link a:hover::after, .ac-route__link a:hover::after{ transform:scaleX(1); }
/* gentle image zoom on discipline + service cards (subtle, GPU) */
.ac-check__media img, .ac-route img, .ac-gallery-grid img{ transition:transform .5s cubic-bezier(.25,.8,.25,1); }
.ac-check__row:hover .ac-check__media img, .ac-route:hover img{ transform:scale(1.03); }
/* Footer Instagram link */
.ac-footer__contact .ac-footer__ig{ display:block; margin-top:10px; font-size:13.5px; font-weight:500; }

/* ============================================================================
   v17 — MOBILE + off-canvas menu, crafted (L9): a navy panel with generous tap
   rows, clear discipline hierarchy, indented sub-items, a prominent gold CTA.
   ============================================================================ */
@media(max-width:921px){
  .main-header-menu, .main-navigation .main-header-menu, .ast-mobile-popup-drawer .main-header-menu{
    background:var(--ac-navy) !important; padding:6px 0 18px !important; }
  .main-header-menu .menu-item{ border-bottom:1px solid rgba(255,255,255,.09) !important; }
  .main-header-menu .menu-link, .main-header-bar-navigation .menu-link{ background:transparent !important; } /* Astra paints links white on mobile → invisible on navy */
  .main-header-menu > .menu-item > .menu-link, .main-header-menu .menu-link{
    color:#fff !important; font-family:var(--ac-ui) !important; text-transform:uppercase; letter-spacing:.1em;
    font-size:14px !important; font-weight:600 !important; min-height:54px !important; display:flex; align-items:center;
    padding:0 26px !important; }
  .main-header-menu > .menu-item > .menu-link::after{ display:none !important; }   /* no underline animation on mobile */
  /* sub-menu = a quiet indented accordion on the deeper navy */
  .main-header-menu .sub-menu{ background:var(--ac-navy-deep) !important; box-shadow:none !important; border:0 !important; border-radius:0 !important; padding:0 !important; }
  .main-header-menu .sub-menu .menu-link{ text-transform:none !important; letter-spacing:.01em !important; font-size:14.5px !important; font-weight:400 !important; color:rgba(255,255,255,.82) !important; padding-left:44px !important; min-height:48px !important; }
  /* the caret / expand control, generous + visible */
  .main-header-menu .ast-menu-toggle{ color:rgba(255,255,255,.75) !important; width:54px; height:54px; display:flex; align-items:center; justify-content:center; }
  /* Request a Quote = a full gold button inside the panel */
  .main-header-menu > .ac-nav-cta{ margin:16px 24px 6px !important; border-bottom:0 !important; }
  .ac-nav-cta > .menu-link{ background:var(--ac-gold) !important; color:var(--ac-navy) !important; justify-content:center; border-radius:3px !important; min-height:52px !important; letter-spacing:.09em !important; }
  .ac-nav-emergency > .menu-link::before{ content:"\25CF\00a0"; color:var(--ac-gold); }
  /* hamburger + close icon in white, generous target */
  .ast-mobile-menu-buttons .menu-toggle, .menu-toggle{ background:transparent !important; color:#fff !important; min-width:48px; min-height:48px; }
  .menu-toggle .ast-mobile-svg, .ast-button-wrap .ast-mobile-svg{ fill:#fff !important; }
}

/* ============================================================================
   v13 — accessibility + UX polish
   ============================================================================ */
/* Visible keyboard focus on every interactive element */
a:focus-visible, button:focus-visible, .menu-link:focus-visible, .wp-block-button__link:focus-visible,
.ac-pf__btn:focus-visible, .ac-quote input:focus-visible, .ac-quote select:focus-visible,
.ac-quote textarea:focus-visible, summary:focus-visible{ outline:3px solid var(--ac-gold) !important; outline-offset:2px; border-radius:2px; }
.main-header-bar a:focus-visible, .ac-on-navy a:focus-visible, .ac-nav-cta > .menu-link:focus-visible{ outline-color:#fff !important; }
/* Comfortable tap targets on the mobile menu + link lists */
@media(max-width:1150px){
  .main-header-menu .menu-link{ min-height:44px; display:flex; align-items:center; }
  .ac-footer a, .ac-hub-links a, .ac-emergency-links a{ display:inline-block; padding:5px 0; }
}
/* Honour reduced-motion globally (marquee/timeline already handled) */
@media(prefers-reduced-motion:reduce){
  *, *::before, *::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
  .ac-card:hover, .ac-route:hover, .wp-block-button .wp-block-button__link:hover, .ac-pf__item:hover img, .main-header-bar.is-scrolled{ transform:none !important; }
}
/* Slightly stronger contrast on the navy top-strip text */
.ac-topbar{ color:rgba(255,255,255,.78); }
.ac-topbar__label{ color:rgba(255,255,255,.62); }

/* ============================================================================
   v18 — mobile accordion: COOPERATE with Astra's native control.
   Astra renders a <button.ast-menu-toggle> over each parent row; clicking it
   toggles .ast-submenu-expanded on the <li> (Astra's own JS). We key our collapse/
   expand + arrow rotation on THAT class (not a custom one) so the native button
   just works. Tapping the discipline TEXT still opens its hub page.
   ============================================================================ */
@media(max-width:921px){
  /* Do NOT override the sub-menu's display/max-height — Astra's native off-canvas
     accordion (the .ast-menu-toggle button toggling .ast-submenu-expanded) already
     opens/closes it cleanly. We only style the control + rotate the chevron. */
  .main-header-menu .ast-menu-toggle{
    background:transparent !important; border:0 !important; border-left:1px solid rgba(255,255,255,.08) !important;
    color:rgba(255,255,255,.8) !important; min-width:56px !important; min-height:54px !important; }
  .main-header-menu .ast-menu-toggle:active{ background:rgba(255,255,255,.06) !important; }
  .main-header-menu .dropdown-menu-toggle{ transition:transform .3s ease; }
  .main-header-menu .menu-item-has-children.ast-submenu-expanded > .menu-link .dropdown-menu-toggle{ transform:rotate(180deg); }
  .main-header-menu .ast-icon.icon-arrow svg{ width:15px !important; height:15px !important; }
}
/* Fail-safe scroll reveals: only active once JS adds .ac-reveal-on (else all visible) */
.ac-reveal-on .ac-check__row, .ac-reveal-on .ac-route, .ac-reveal-on .ac-why__card, .ac-reveal-on .ac-step{
  opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .7s cubic-bezier(.22,.8,.28,1); }
.ac-reveal-on .ac-check__row.is-in, .ac-reveal-on .ac-route.is-in, .ac-reveal-on .ac-why__card.is-in, .ac-reveal-on .ac-step.is-in{
  opacity:1; transform:none; }
@media(prefers-reduced-motion:reduce){
  .ac-reveal-on .ac-check__row, .ac-reveal-on .ac-route, .ac-reveal-on .ac-why__card, .ac-reveal-on .ac-step{ opacity:1 !important; transform:none !important; }
}

/* ============================================================================
   v19 — header CTA stays navy-on-gold even when it IS the current page.
   Astra recolors .current-menu-item links with the gold accent (3-class rule),
   which beat our 2-class .ac-nav-cta rule → gold-on-gold = invisible on /contact/.
   These 4-class selectors win it back in every state.
   ============================================================================ */
.main-header-menu .ac-nav-cta.current-menu-item > .menu-link,
.main-header-menu .ac-nav-cta.current_page_item > .menu-link,
.main-header-menu .ac-nav-cta.current-menu-ancestor > .menu-link,
.main-header-menu .ac-nav-cta > .menu-link:hover,
.main-header-menu .ac-nav-cta > .menu-link:focus,
.main-header-menu .ac-nav-cta > .menu-link{ color:var(--ac-navy) !important; }

/* ============================================================================
   v20 — E22 submenu active state + E25 About-body list alignment
   ============================================================================ */
/* E22 — dropdown/sub-menu items get a current-page state (was missing; only the top nav had one) */
.main-header-menu .sub-menu .current-menu-item > .menu-link,
.main-header-menu .sub-menu .current_page_item > .menu-link,
.main-header-menu .sub-menu .current-menu-ancestor > .menu-link{ color:var(--ac-gold) !important; }
/* E25 — About "How we work" list must share the 760px reading column + proper bullet indent
   (the > * max-width rule centres the paragraphs but the <ul> escaped it → bullets hung far left) */
.ac-about-body ul, .ac-about-body ol{ max-width:760px; margin-inline:auto; padding-left:1.3em; text-align:left; }
.ac-about-body li{ margin-bottom:.45em; }

/* E14 — kill the stray white strip between the last section and the footer.
   The .entry-content wrapper carried a 34px bottom margin, so full-bleed CTA bands
   left a sliver of page-background before the navy footer. Content sections own their
   own padding; the footer owns its top spacing → zero the wrapper's trailing margin. */
.entry-content{ margin-bottom:0 !important; }

/* E8 — quiet Elyown maker's mark in the footer (understated, professional, not a pitch) */
.ac-footer__by{ color:rgba(255,255,255,.38); font-size:12px; }
.ac-footer__by a{ color:rgba(255,255,255,.55); }
.ac-footer__by a:hover{ color:var(--ac-gold); }

/* E27/E29 — footer second row: service areas + guides (comprehensive footer + discoverability) */
.ac-footer__cols2{ display:grid; grid-template-columns:2fr 1.1fr; gap:clamp(28px,5vw,64px);
  margin-top:clamp(26px,4vw,42px); padding-top:clamp(22px,3vw,30px); border-top:1px solid rgba(255,255,255,.10); }
.ac-footer__areas ul{ display:block !important; columns:3; column-gap:24px; }
.ac-footer__areas li{ break-inside:avoid; }
.ac-footer__guides ul{ columns:1; }
@media(max-width:768px){ .ac-footer__cols2{ grid-template-columns:1fr; gap:26px; } .ac-footer__areas ul{ columns:2; } }

/* E28/E30 — city-page local-knowledge section (researched permits/rebates/housing) */
.ac-local-info{ background:var(--ac-white) !important; padding:clamp(48px,7vw,84px) clamp(24px,6vw,64px) !important; }
.ac-local-info > .ac-eyebrow, .ac-local-info > .wp-block-heading{ text-align:center; }
.ac-local-info > *{ max-width:820px; margin-inline:auto; }
.ac-local-info h3{ font-family:var(--ac-display); color:var(--ac-navy); font-size:clamp(19px,2vw,23px); margin:1.4em 0 .4em; }
.ac-local-info p{ color:var(--ac-ink); margin-bottom:1em; }
.ac-local-info a{ color:var(--ac-navy); text-decoration:underline; text-decoration-color:var(--ac-gold); text-underline-offset:3px; }

/* E13 — floating "Get a quote" drawer (desktop only; mobile keeps the sticky Call/Quote bar) */
.ac-drawer{ position:fixed; right:0; bottom:170px; z-index:150; } /* F7: raised so the tab clears the back-to-top button below it */
.ac-drawer__tab{ position:absolute; right:0; bottom:0; transform:rotate(-90deg); transform-origin:100% 100%;
  background:var(--ac-gold); color:var(--ac-navy); border:0; font-family:var(--ac-ui); font-weight:700;
  letter-spacing:.06em; font-size:13px; padding:11px 20px; border-radius:5px 5px 0 0; cursor:pointer; box-shadow:0 6px 20px rgba(0,0,0,.22); }
.ac-drawer__tab:hover{ background:var(--ac-gold-bright); }
.ac-drawer__panel{ position:fixed; right:-380px; bottom:18px; width:344px; max-width:calc(100vw - 24px);
  background:#fff; border:1px solid var(--ac-line); border-radius:6px; box-shadow:0 24px 60px rgba(19,31,51,.30);
  padding:24px 22px 22px; transition:right .32s cubic-bezier(.25,.8,.25,1); }
.ac-drawer.is-open .ac-drawer__panel{ right:18px; }
.ac-drawer.is-open .ac-drawer__tab{ opacity:0; pointer-events:none; }
/* F8: close button was inheriting Astra's blue button fill — force brand (transparent + navy glyph, gold on hover). */
.ac-drawer .ac-drawer__close, .ac-drawer .ac-drawer__close:hover, .ac-drawer .ac-drawer__close:focus, .ac-drawer .ac-drawer__close:active{ position:absolute; top:8px; right:10px; background:transparent !important; border:0 !important; box-shadow:none !important; outline:none; width:36px; height:36px; padding:0 !important; font-size:28px; line-height:1; color:var(--ac-navy) !important; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.ac-drawer .ac-drawer__close:hover, .ac-drawer .ac-drawer__close:focus-visible{ color:var(--ac-gold) !important; }
.ac-drawer__h{ font-family:var(--ac-display); color:var(--ac-navy); font-size:20px; }
.ac-drawer__p{ color:var(--ac-slate); font-size:13.5px; margin:4px 0 12px; }
.ac-drawer form{ display:flex; flex-direction:column; gap:9px; }
.ac-drawer input, .ac-drawer select, .ac-drawer textarea{ border:1px solid var(--ac-line); border-radius:4px; padding:9px 11px; font-size:14px; font-family:var(--ac-ui); width:100%; }
.ac-drawer .ac-hp{ position:absolute; left:-9999px; }
.ac-drawer__send{ background:var(--ac-gold) !important; color:var(--ac-navy) !important; border:0 !important; border-radius:4px !important; padding:11px !important; font-weight:700; cursor:pointer; }
.ac-drawer__call{ text-align:center; font-size:13px; color:var(--ac-navy); margin-top:2px; }
@media(max-width:921px){ .ac-drawer{ display:none !important; } }
