/* Astra's transparent/floating header (".ast-theme-transparent-header
   #masthead{position:absolute;left:0;right:0}") is defined inside
   astra-inline.css, extracted from the live site's Customizer-generated
   inline <style> block. That 100KB+ hand-assembled stylesheet has a parser
   quirk somewhere upstream of this particular rule that keeps the browser
   from registering it as a distinct CSSOM rule (verified: every other
   min-width:921px block in the file parses fine, but this one silently
   disappears from document.styleSheets), so the header falls back to
   theme.css's default `#masthead{position:relative}` and renders as a
   solid bar instead of floating over the hero slider like the live site.
   Restating it here, in a small hand-written file loaded after everything
   else, sidesteps the issue without having to hunt for a stray brace in
   100KB of minified CSS. */
.ast-theme-transparent-header #masthead {
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
}

/* On the live site the nav bar itself renders as a solid white bar (not
   see-through) — verified by inspecting the live page directly. Locally,
   theme.css's unconditional ".ast-primary-header-bar{background-color:#000}"
   rule (the Customizer's primary-menu background setting) wins over
   ".main-header-bar{background-color:#fff}" purely by appearing later in
   the same stylesheet, since both selectors have identical specificity.
   Restate the white background so this element matches the live page. */
.main-header-bar {
  background-color: #fff !important;
}

/* Elementor renders elements with a scroll "entrance animation" configured
   with a permanent ".elementor-invisible{visibility:hidden}" class baked
   right into the page HTML (68 occurrences across 20 crawled pages,
   including the Contact page's whole contact-form section). On the live
   WordPress site, Elementor's own frontend JS removes that class via an
   IntersectionObserver as each element scrolls into view. That JS isn't
   part of this static export, so anything marked elementor-invisible would
   otherwise stay permanently hidden — including entire form sections.
   There's no animation system to hand it off to here, so just show
   everything immediately; static and visible beats animated and missing. */
.elementor-invisible {
  visibility: visible !important;
}

/* Elementor's testimonial/carousel widgets ship an older Swiper build whose
   markup uses the "swiper-container" class name, while theme.css's own
   Swiper base styles (".swiper{overflow:hidden;...}") only target the
   newer "swiper" class name used elsewhere on the site. Since the two
   class names never match the same rule, ".swiper-container" elements were
   missing "overflow:hidden" entirely — Swiper's own JS still runs and
   positions the active slide correctly, but every other slide (plus its
   loop-mode duplicates) spilled out to the right, stretching the whole
   page thousands of pixels wide. */
.swiper-container {
  overflow: hidden;
}

/* THE BIG ONE: every page is rendered in Next.js via
   `<div dangerouslySetInnerHTML={{__html: html}} />` (see app/page.js and
   app/[slug]/page.js) — React requires *some* element to hang that prop on,
   so it adds one extra, class-less wrapper div between #content and the
   page's actual <main>/.ast-container markup that WordPress never had.
   Astra's full-width rule, "#content>.ast-container{max-width:100%;
   padding:0}" (theme.css), uses a direct-child combinator that only matches
   when .ast-container is an IMMEDIATE child of #content — which is exactly
   the relationship our extra wrapper div breaks. The result: every regular
   (non-Elementor-canvas) page fell back to the boxed default
   ".ast-container{max-width:1320px}" instead of stretching full width,
   which is also why headings/sections read as having the wrong side
   padding — they were all sitting inside a narrower, centered column than
   the live site. Restated below with a descendant combinator (no ">") so
   it matches regardless of the extra nesting level. */
.ast-page-builder-template .site-content .ast-container:not(.legacy-chrome .ast-container) {
  max-width: 100% !important;
  padding: 0 !important;
}
