/* Speed overrides — keep visual system, cut unused network work. */

/* Stop Google Inter/Poppins downloads; local theme faces already cover UI. */
:where(*) {
  --vs-font-sans: Plusjakartasans, Eudoxussans, sans-serif;
}
body,
.body,
.w-body {
  font-family: Plusjakartasans, Eudoxussans, sans-serif;
}

/* Classes that used Inter / Poppins in the Webflow export */
.button,
.button.small,
.outline-button,
.subtitle,
.subtitle-text,
.text-block-2,
.text-block-4,
.text-block-6-copy,
.nav-link,
.w-nav-link {
  font-family: Plusjakartasans, Eudoxussans, sans-serif !important;
}

/* Until fonts-deferred.css loads, fall back instead of blocking on 1MB TTFs */
.xxl-heading,
.xl-heading,
.heading-2,
.heading-5,
.heading-6,
.heading-7 {
  font-synthesis: none;
}

/*
 * Drop theme CSS backgrounds only AFTER the optimized cover image has loaded.
 * Using plain :has(> img) blanked slots on first visit while next/image was still
 * downloading (second reload looked fine because of cache).
 */
.hero-background-image:has(> img[data-loaded='1']),
.hero-background-image-2:has(> img[data-loaded='1']),
.paralax-background:has(> img[data-loaded='1']),
.team-background-image:has(> img[data-loaded='1']),
.background:has(> img[data-loaded='1']),
.location-card-background:has(> img[data-loaded='1']),
.partner-background-image:has(> img[data-loaded='1']),
.e-e-background-image:has(> img[data-loaded='1']),
.grove-gallery:has(> img[data-loaded='1']),
.dish-label:has(> img[data-loaded='1']),
.img-bg:has(> img[data-loaded='1']),
.hero-img:has(> img[data-loaded='1']),
[data-cover-ready='1'] {
  background-image: none !important;
}

/*
 * Cream Webflow "background-load" panels wait on deferred webflow.js ix2.
 * On cold loads they cover photos until JS arrives — hide them so CSS/img show.
 */
.background-load-top,
.background-load-bottom {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Absolute-fill cover photos injected into former CSS-background slots */
.location-card-background > img,
.hero-background-image-2 > img,
.partner-background-image > img,
.e-e-background-image > img,
.grove-gallery > img,
.dish-label > img,
.img-bg > img,
.hero-img > img,
.vs-cover-scrim {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
}
.location-card-background > img,
.hero-background-image-2 > img,
.partner-background-image > img,
.e-e-background-image > img,
.grove-gallery > img,
.dish-label > img,
.img-bg > img,
.hero-img > img {
  object-fit: cover !important;
  object-position: 50% 50% !important;
  z-index: 0;
}
.vs-cover-scrim {
  background: linear-gradient(#00000080, #00000080);
  z-index: 1;
  pointer-events: none;
}
.location-card-background .overlay,
.partner-background-image .overlay,
.e-e-background-image .overlay {
  z-index: 1;
}

/* Below-fold decorative layers: don't eagerly paint offscreen parallax.
 * Skip .about-us-section — those layers are position:absolute fills; content-visibility
 * size containment collapses them when the only child is an absolute CoverImage. */
.background-cover .paralax-background,
.locations-image-section .paralax-background {
  content-visibility: auto;
  contain-intrinsic-size: 600px 400px;
}
