/*
Theme Name: Foundation Estate
Version: 1.0
Text Domain: foundation-estate
*/

/* =========================
   Fonts — Foundation Estate
========================= */
@font-face {
  font-family: "Minion Pro";
  src: url("assets/fonts/MinionPro-Regular.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Die Grotesk";
  src: url("assets/fonts/DieGrotesk-VF-Roman.woff2") format("woff2-variations");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Die Grotesk";
  src: url("assets/fonts/DieGrotesk-VF-Italic.woff2") format("woff2-variations");
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
}

/* =========================
   Variables
========================= */
:root {
  /* Colours (legacy — inherited from base template) */
  --semi:     #414042;
  --light:    #EBEAEA;
  --red:      #D92333;
  --dark-red: #B50626;
  --grey:     #E3E0DB;
  --white:    #FFFFFF;

  /* Colours — Foundation Estate brand palette. Overridden by Theme Colours (wp-admin) via wp_head. */
  --color-primary-red: #a14546;
  --color-cream:       #ebeee5;
  --color-peach:       #e0c79f;
  --color-white:       #ffffff;
  --color-black:       #000000;

  /* Typography */
  --heading-font: "Die Grotesk", system-ui, sans-serif;
  --body-font:    "Die Grotesk", system-ui, sans-serif;
  --accent-font:  "Die Grotesk", system-ui, sans-serif;

  /* Layout */
  --container: 1440px;
  --gutter:    48px;
}

/* =========================
   Reset & Base
========================= */
*, *::before, *::after { box-sizing: border-box; }

/* scroll-behavior: smooth removed — Lenis (assets/js/lenis-init.js) now
   owns smooth scrolling sitewide, including anchor-link jumps; leaving the
   native behaviour on would fight its easing. */

body {
  margin: 0;
  font-family: var(--body-font);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.6;
  color: var(--color-primary-red);
  background: var(--color-cream);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { cursor: pointer; border: none; background: none; padding: 0; font-family: inherit; }
p { margin: 0 0 1.25rem; font-family: var(--body-font); font-weight: 400; }
p:last-child { margin-bottom: 0; }
strong {
  font-weight: 600;
}

/* =========================
   Container
========================= */
.foundation-estate-container {
  max-width: var(--container);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}

/* =========================
   Typography
========================= */
h1, h2, h3, h4, h5, h6 { margin: 0; font-family: var(--heading-font); font-weight: 500; }

/* H1 — 56px/59 at 1440px */
h1, .foundation-estate-h1 {
  font-size: clamp(2.8rem, 3.89vw, 3.5rem);
  line-height: 1.054;
  font-weight: 300;
}

@media (max-width: 900px) {
  h1, .foundation-estate-h1 {
    font-size: clamp(2rem, 8vw, 2.5rem);
  }
}

/* H2 — 36px/40 at 1440px */
h2, .foundation-estate-h2 {
  font-size: clamp(2rem, 2.5vw, 2.25rem);
  line-height: 1.111;
}

/* H3 — 30px/39 at 1440px */
h3, .foundation-estate-h3 {
  font-size: clamp(1.7rem, 2.083vw, 1.875rem);
  line-height: 1.3;
}

/* H4 — 22px/30 at 1440px */
h4, .foundation-estate-h4 {
  font-size: clamp(1.3rem, 1.528vw, 1.375rem);
  line-height: 1.364;
  font-weight: 400;
}

/* H5 — 20px/26 at 1440px */
h5, .foundation-estate-h5 {
  font-size: clamp(1.15rem, 1.528vw, 1.275rem);
  line-height: 1.364;
}

/* Display-1 — 72px/74 at 1440px */
.foundation-estate-display-1 {
  font-family: var(--heading-font);
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  line-height: 1.028;
  font-weight: 500;
}

/* Body Large — 20px/26 at 1440px */
.foundation-estate-body-lg {
  font-size: clamp(1rem, 1.389vw, 1.25rem);
  line-height: 1.3;
}

/* WYSIWYG content */
.foundation-estate-wysiwyg h2, .foundation-estate-wysiwyg h3, .foundation-estate-wysiwyg h4, .foundation-estate-wysiwyg h5 { margin-bottom: 0.75em; }
.foundation-estate-wysiwyg p  { margin-bottom: 1.25rem; }
.foundation-estate-wysiwyg p:last-child { margin-bottom: 0; }
.foundation-estate-wysiwyg ul, .foundation-estate-wysiwyg ol { padding-left: 1.25em; margin-bottom: 1.25rem; }
.foundation-estate-wysiwyg ul { list-style: disc; }
.foundation-estate-wysiwyg ol { list-style: decimal; }
.foundation-estate-wysiwyg li { margin-bottom: 0.4em; }
.foundation-estate-wysiwyg a { text-decoration: underline; text-underline-offset: 3px; transition: opacity 0.2s; }
.foundation-estate-wysiwyg a:hover { opacity: 0.65; }

/* =========================
   Utility
========================= */
.foundation-estate-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0;
  margin: -1px; overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}

/* =========================
   Buttons
========================= */
.foundation-estate-btn {
  position: relative;
  z-index: 0;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--heading-font);
  font-size: 13px;
  line-height: 1.231;
  font-weight: 500;
  padding: 15px 20px;
  border: 1px solid;
  background: transparent;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, scale 0.2s ease;
  text-decoration: none;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.foundation-estate-btn:active { scale: 0.982; }

/* Fill rises from the bottom on hover, with a slightly curved crest as it
   rises; --btn-fill is set per variant */
.foundation-estate-btn::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--btn-fill, transparent);
  border-radius: 0;
  translate: 0 102%;
  transition: translate 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.foundation-estate-btn:hover::before { translate: 0 0; }

/* Label roll: the current label slides up and out of view while a
   duplicate copy rises in from below to take its place. */
.foundation-estate-btn__label {
  position: relative;
  display: inline-block;
  translate: 0 0;
  transition: translate 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.foundation-estate-btn:hover .foundation-estate-btn__label {
  translate: 0 -220%;
  animation: foundation-estate-btn-bounce 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.foundation-estate-btn__label-after {
  position: absolute;
  left: 0;
  top: 220%;
  display: inline-block;
  white-space: nowrap;
  color: var(--btn-hover-text, var(--color-cream));
  transform-origin: bottom center;
  scale: 1 0.8;
  transition: scale 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.foundation-estate-btn:hover .foundation-estate-btn__label-after { scale: 1 1; }

@keyframes foundation-estate-btn-bounce {
  0%   { scale: 1 1; }
  40%  { scale: 1.02 1.005; }
  100% { scale: 1 1; }
}

.foundation-estate-btn--white { border-color: var(--white); color: var(--white); --btn-fill: var(--white); }
.foundation-estate-btn--dark  { border-color: var(--color-black);  color: var(--color-black); --btn-fill: var(--dark-red); }
.foundation-estate-btn--outline-red {
  border-radius: 0;
  border-color: var(--color-primary-red);
  color: var(--color-primary-red);
  --btn-fill: var(--color-primary-red);
}
.foundation-estate-btn--outline-cream {
  border-radius: 0;
  border-color: var(--color-cream);
  color: var(--color-cream);
  --btn-fill: var(--color-cream);
  --btn-hover-text: var(--color-primary-red);
}
.foundation-estate-btn--outline-cream:hover { color: var(--color-primary-red); }

/* Secondary CTA — the reverse of every other variant: filled white at rest,
   with the fill sliding away on hover to reveal a transparent/outlined
   button instead of filling in. Label colour swaps the opposite way too
   (red at rest, cream on hover) to stay legible either way. */
.foundation-estate-btn--secondary {
  border-color: var(--color-white);
  color: var(--color-primary-red);
  --btn-fill: var(--color-white);
}

.foundation-estate-btn--secondary::before { translate: 0 0; }
.foundation-estate-btn--secondary:hover::before { translate: 0 102%; }
.foundation-estate-btn--secondary:hover { color: var(--color-cream); }

.foundation-estate-btn--white:hover { color: var(--dark-red); }
.foundation-estate-btn--dark:hover  { color: var(--white); }
.foundation-estate-btn--outline-red:hover { color: var(--color-cream); }

.foundation-estate-btn--orange {
  border: none;
  border-radius: 0;
  background: var(--color-primary-red);
  color: var(--color-cream);
  --btn-fill: var(--color-black);
}

/* =========================
   Non-clickable menu items
========================= */
li.menu-item-129 > a,
li.menu-item-87  > a {
  pointer-events: none;
  cursor: default;
}

/* =========================
   Header
========================= */
.foundation-estate-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  background: transparent;
  transition: transform 0.3s ease, background-color 0.3s ease;
}

.foundation-estate-header.is-hidden { transform: translateY(-100%); }

/* Set by assets/js/header-scroll.js — transparent over the hero on load,
   solid once scrolled past it. */
.foundation-estate-header.is-scrolled { background: var(--color-white); }

.search-results .foundation-estate-header { background: var(--color-black); }

/* Set by assets/js/mobile-menu.js — the header sits above the off-canvas
   mobile menu (higher z-index), so its own background would otherwise
   show as a solid bar over the open menu underneath it. */
.foundation-estate-header.is-menu-open { background: transparent; }

.foundation-estate-header__inner {
  display: flex;
  align-items: center;
  gap: 32px;
  /* Matches .foundation-estate-container's actual content inset (gutter, plus extra
     centering once the viewport exceeds --container) so the logo/nav align
     with the rest of the page's content instead of sitting flush at a flat
     gutter width on ultra-wide screens. */
  padding: 18px calc(max(0px, (100vw - var(--container)) / 2) + var(--gutter));
}

/* Logo */
.foundation-estate-header__logo { display: flex; align-items: center; }
.foundation-estate-header__logo a { display: flex; align-items: center; }

.foundation-estate-header__logo img {
  height: 45px;
  width: auto;
}

.foundation-estate-header__logo-text {
  color: var(--color-peach);
  font-family: var(--heading-font);
  font-size: 22px;
  font-weight: 400;
  text-transform: uppercase;
}

@media (max-width: 900px) {
  .foundation-estate-header__logo-text { font-size: 16px; }
}

/* Primary nav — right-aligned */
.foundation-estate-header__nav-wrap {
  display: flex;
  align-items: center;
  margin-left: auto;
  padding: 0 32px;
}

.foundation-estate-primary-menu {
  display: flex;
  align-items: center;
  gap: 42px;
  height: 64px;
}

.foundation-estate-primary-menu li { position: relative; display: flex; align-items: center; height: 100%; }

.foundation-estate-primary-menu li a {
  position: relative;
  display: inline-block;
  padding-top: 10px;
  padding-bottom: 10px;
  font-family: var(--heading-font);
  font-size: 14px;
  line-height: 17px;
  font-weight: 450;
  letter-spacing: 0.6px;
  color: var(--color-primary-red);
  text-transform: uppercase;
  transition: opacity 0.2s, color 0.3s ease;
  white-space: nowrap;
}

/* Transparent header over the hero — white nav text instead of red, until
   scrolled to the solid white header (.is-scrolled, set by
   assets/js/header-scroll.js). */
.foundation-estate-header:not(.is-scrolled) .foundation-estate-primary-menu li a {
  color: var(--color-cream);
}

.foundation-estate-primary-menu li a::before,
.foundation-estate-primary-menu li a::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  height: 0.5px;
  background: currentColor;
  transform: scaleX(0);
  transition: transform 0.3s ease;
}

.foundation-estate-primary-menu li a::before {
  bottom: 5px;
  transform-origin: right;
}

.foundation-estate-primary-menu li a::after {
  bottom: 0;
  transform-origin: left;
}

.foundation-estate-primary-menu li a:hover::before,
.foundation-estate-primary-menu li a:hover::after,
.foundation-estate-primary-menu li.current-menu-item > a::before,
.foundation-estate-primary-menu li.current-menu-item > a::after,
.foundation-estate-primary-menu li.current-page-ancestor > a::before,
.foundation-estate-primary-menu li.current-page-ancestor > a::after {
  transform: scaleX(1);
}


/* Dropdown chevron button */
.foundation-estate-nav__chevron {
  display: flex;
  align-items: center;
  padding: 4px 2px;
  color: var(--white);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: transform 0.25s ease;
  flex-shrink: 0;
  margin-left: 3px;
}

.foundation-estate-primary-menu .menu-item-has-children:hover > .foundation-estate-nav__chevron,
.foundation-estate-primary-menu .menu-item-has-children.is-open  > .foundation-estate-nav__chevron {
  transform: rotate(180deg);
  opacity: 1;
}

/* Dropdown sub-menu */
.foundation-estate-primary-menu .sub-menu {
  position: absolute;
  top: 100%;
  left: 0;
  background: var(--color-white);
  min-width: 220px;
  list-style: none;
  padding: 8px 0;
  margin: 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
  z-index: 300;
}

.foundation-estate-primary-menu .menu-item-has-children:hover > .sub-menu,
.foundation-estate-primary-menu .menu-item-has-children.is-open  > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.foundation-estate-primary-menu .sub-menu li {
  display: block;
  height: auto;
  width: 100%;
}

.foundation-estate-primary-menu .sub-menu li a,
.foundation-estate-primary-menu .sub-menu li a:hover,
.foundation-estate-primary-menu .sub-menu li a:active,
.foundation-estate-primary-menu .sub-menu li.current-menu-item > a {
  display: block;
  padding: 11px 24px;
  color: var(--color-primary-red);
  font-size: 13px;
  font-weight: 500;
  white-space: nowrap;
  opacity: 1;
  transition: background 0.15s;
}

/* Wins over the transparent-header (.is-scrolled) cream-text rule above,
   which would otherwise cascade into the dropdown too since it targets any
   li a under .foundation-estate-primary-menu. */
.foundation-estate-header:not(.is-scrolled) .foundation-estate-primary-menu .sub-menu li a,
.foundation-estate-header:not(.is-scrolled) .foundation-estate-primary-menu .sub-menu li a:hover,
.foundation-estate-header:not(.is-scrolled) .foundation-estate-primary-menu .sub-menu li a:active,
.foundation-estate-header:not(.is-scrolled) .foundation-estate-primary-menu .sub-menu li.current-menu-item > a {
  color: var(--color-primary-red);
}

/* No sliding-underline hover here — that's the top-level nav-link effect
   inherited from .foundation-estate-primary-menu li a::before/::after. */
.foundation-estate-primary-menu .sub-menu li a::before,
.foundation-estate-primary-menu .sub-menu li a::after {
  content: none;
}

.foundation-estate-primary-menu .sub-menu li a:hover {
  background: var(--color-cream);
  opacity: 1;
}

@keyframes foundation-estate-nav-underline {
  from { width: 0; }
  to   { width: 100%; }
}

/* Right column */
.foundation-estate-header__right {
  display: flex;
  align-items: center;
  gap: 0;
  justify-content: flex-end;
}

/* Hamburger */
.foundation-estate-header__hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 32px;
  height: 32px;
  padding: 0;
  flex-shrink: 0;
  background: none;
  border: none;
  cursor: pointer;
}

.foundation-estate-header__hamburger span {
  display: block;
  width: 100%;
  height: 1px;
  border-radius: 2px;
  background: var(--white);
  transition: transform 0.3s ease, opacity 0.3s ease, background-color 0.3s ease;
  transform-origin: center;
}

.foundation-estate-header__hamburger.is-active span:nth-child(1) { transform: translateY(9px) rotate(45deg); }
.foundation-estate-header__hamburger.is-active span:nth-child(2) { opacity: 0; }
.foundation-estate-header__hamburger.is-active span:nth-child(3) { transform: translateY(-9px) rotate(-45deg); }

/* Set by assets/js/header-logo-swap.js once the header has scrolled to its
   solid white background — switches the hamburger to red for contrast. */
.foundation-estate-header__hamburger.is-over-cream span { background: var(--color-primary-red); }

/* While open, the button is the close (X) icon sitting over the menu's own
   red background, so it needs to be white instead. */
.foundation-estate-header__hamburger.is-active.is-over-cream span { background: var(--white); }

.foundation-estate-main {
  position: relative;
  z-index: 1;
  display: flow-root;
  margin-bottom: calc(-1 * var(--footer-height, 0px));
  padding-bottom: var(--footer-height, 0px);
  /* The bottom padding above is empty space reserved so the sticky footer
     (behind, in z-index terms) can be seen through it — but as .foundation-estate-main's
     own box, that empty region still captured clicks meant for the footer.
     Disable hit-testing on the wrapper itself, then re-enable it on the
     actual content (which never extends into the padding anyway), so real
     page content stays fully clickable while the reveal gap lets clicks
     pass through to the footer underneath. */
  pointer-events: none;
}

.foundation-estate-main > * {
  pointer-events: auto;
}

.foundation-estate-main > *:last-child {
  box-shadow: 0 16px 16px rgba(0, 0, 0, 0.05);
}

/* =========================
   Mobile Menu
========================= */
.foundation-estate-mobile-menu {
  position: fixed;
  inset: 0;
  background: var(--color-primary-red);
  z-index: 190;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 100px var(--gutter) 60px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
  overflow-y: auto;
}

.foundation-estate-mobile-menu.is-open { opacity: 1; pointer-events: all; }

/* Right-aligned, sitting just above the divider. Same fade+blur-in as the
   nav items below, but triggered off .is-open rather than foundation-estate-animate's
   scroll observer, for the same reason as the divider above. */
.foundation-estate-mobile-menu__contact {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  margin-bottom: clamp(24px, 4vw, 40px);
  opacity: 0;
  filter: blur(14px);
  transform: translateY(24px);
  transition: opacity 0.6s ease, filter 1s ease, transform 0.6s ease;
}

.foundation-estate-mobile-menu.is-open .foundation-estate-mobile-menu__contact {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
}

.foundation-estate-mobile-menu__contact-link {
  margin: 0;
  color: var(--color-cream);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  line-height: 1.6;
  text-transform: uppercase;
  transition: opacity 0.2s;
}

.foundation-estate-mobile-menu__contact-link:hover { opacity: 0.7; }

.foundation-estate-mobile-menu__social-label {
  display: block;
  margin-top: 4px;
  color: var(--color-cream);
  font-family: var(--heading-font);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 13px;
}

.foundation-estate-mobile-menu__social {
  display: flex;
  gap: 12px;
  margin-top: 4px;
}

.foundation-estate-mobile-menu__social-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--color-cream);
  transition: opacity 0.2s;
}

.foundation-estate-mobile-menu__social-icon:hover { opacity: 0.7; }

/* Same double-line grow-in as .foundation-estate-three-col-cta__divider, but
   triggered off .is-open directly rather than foundation-estate-animate's scroll
   observer — this element is always geometrically in the viewport
   (position:fixed inset:0) even while hidden, so the observer would fire
   the instant the page loads and the lines would already be grown in by
   the time the menu is actually opened. */
.foundation-estate-mobile-menu__divider {
  margin: 0 0 clamp(24px, 4vw, 40px);
}

.foundation-estate-mobile-menu__divider-line {
  border-top: 0.5px solid var(--color-cream);
  transform: scaleX(0);
  transition: transform 2s ease;
}

.foundation-estate-mobile-menu__divider-line--1 { transform-origin: right; }

.foundation-estate-mobile-menu__divider-line--2 {
  transform-origin: left;
  margin-top: 8px;
}

.foundation-estate-mobile-menu.is-open .foundation-estate-mobile-menu__divider-line {
  transform: scaleX(1);
}

.foundation-estate-mobile-nav {
  display: flex;
  flex-direction: column;
  padding-bottom: 20px;
}

/* Fade + blur in one by one as the menu opens — same reasoning as the
   divider above for not using foundation-estate-animate's scroll observer: this
   element is always geometrically in the viewport (position:fixed
   inset:0) even while hidden, so it would fire immediately on page load
   rather than when the menu actually opens. */
.foundation-estate-mobile-nav > li {
  opacity: 0;
  filter: blur(14px);
  transform: translateY(24px);
  transition: opacity 0.6s ease, filter 1s ease, transform 0.6s ease;
}

.foundation-estate-mobile-menu.is-open .foundation-estate-mobile-nav > li {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
}

.foundation-estate-mobile-nav > li:nth-child(1) { transition-delay: 0ms; }
.foundation-estate-mobile-nav > li:nth-child(2) { transition-delay: 60ms; }
.foundation-estate-mobile-nav > li:nth-child(3) { transition-delay: 120ms; }
.foundation-estate-mobile-nav > li:nth-child(4) { transition-delay: 180ms; }
.foundation-estate-mobile-nav > li:nth-child(5) { transition-delay: 240ms; }
.foundation-estate-mobile-nav > li:nth-child(6) { transition-delay: 300ms; }
.foundation-estate-mobile-nav > li:nth-child(7) { transition-delay: 360ms; }
.foundation-estate-mobile-nav > li:nth-child(8) { transition-delay: 420ms; }

.foundation-estate-mobile-nav li a {
  display: block;
  padding: 5px 0;
  font-family: var(--heading-font);
  font-size: clamp(1.5rem, 2.2vw, 1.875rem);
  font-weight: 300;
  color: var(--color-cream);
  transition: opacity 0.2s;
}
.foundation-estate-mobile-nav li a:hover { opacity: 0.65; }

/* Mobile: parent items with children */
.foundation-estate-mobile-nav .menu-item-has-children {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}

.foundation-estate-mobile-nav .menu-item-has-children > a {
  flex: 1;
}

.foundation-estate-mobile-chevron {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  color: var(--white);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: transform 0.25s ease;
  flex-shrink: 0;
}

.foundation-estate-mobile-nav .menu-item-has-children.is-open > .foundation-estate-mobile-chevron {
  transform: rotate(180deg);
}

/* Mobile sub-menu */
.foundation-estate-mobile-nav .sub-menu {
  display: none;
  width: 100%;
  flex-direction: column;
  padding: 4px 0 8px 16px;
}

.foundation-estate-mobile-nav .menu-item-has-children.is-open > .sub-menu {
  display: flex;
}

.foundation-estate-mobile-nav .sub-menu li { display: block; }

.foundation-estate-mobile-nav .sub-menu li a {
  font-size: clamp(1rem, 3.5vw, 1.25rem);
  padding: 12px 0;
}

/* =========================
   Footer
========================= */
.foundation-estate-footer {
  position: sticky;
  bottom: 0;
  background: var(--color-primary-red);
  padding: clamp(60px, 8vw, 100px) 0 32px;
}

.foundation-estate-footer__main {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  align-items: start;
  gap: 40px;
  margin-bottom: clamp(60px, 10vw, 140px);
}

.foundation-estate-footer__col {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.foundation-estate-footer__col-label {
  margin: 0 0 20px;
  color: var(--color-cream);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  text-transform: uppercase;
}

.foundation-estate-footer__menu {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.foundation-estate-footer__menu a {
  color: var(--color-cream);
  font-family: var(--heading-font);
  font-weight: 300;
  font-size: 13px;
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.foundation-estate-footer__menu a:hover { opacity: 0.7; }

.foundation-estate-footer__contact {
  margin: 0 0 12px;
}

.foundation-estate-footer__contact a {
  color: var(--color-cream);
  font-family: var(--heading-font);
  font-weight: 300;
  font-size: 13px;
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.foundation-estate-footer__contact a:hover { opacity: 0.7; }

.foundation-estate-footer__social-icons {
  display: flex;
  gap: 12px;
  margin-top: 12px;
}

.foundation-estate-footer__social-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--white);
  transition: opacity 0.2s;
}

.foundation-estate-footer__social-icon:hover { opacity: 0.7; }

.foundation-estate-footer__logo {
  width: 100%;
}

.foundation-estate-footer__logo a {
  display: block;
  width: 100%;
}

.foundation-estate-footer__logo img {
  width: 100%;
  height: auto;
}

.foundation-estate-footer__bottom {
  display: flex;
}

.foundation-estate-footer__copyright {
  margin: 0;
  color: var(--color-cream);
  font-family: var(--body-font);
  font-weight: 400;
  font-size: 12px;
  opacity: 0.6;
}

/* =========================
   Scroll Animations
========================= */
.foundation-estate-animate {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s ease, transform 0.6s ease !important;
  transition-delay: calc(var(--foundation-estate-delay, 0) * 1ms) !important;
}

/* Blur-in variant: fades/rises in as usual, but also starts out of focus
   and sharpens into place. */
.foundation-estate-animate--blur {
  filter: blur(14px);
  transition: opacity 0.6s ease, transform 0.6s ease, filter 1s ease !important;
  transition-delay: calc(var(--foundation-estate-delay, 0) * 1ms) !important;
}

.foundation-estate-animate--blur.is-visible {
  filter: blur(0);
}

.foundation-estate-btn.foundation-estate-animate--blur {
  transition-duration: 0.8s !important;
}

.foundation-estate-animate.is-visible { opacity: 1; transform: translateY(0); }

.foundation-estate-animate--grow {
  transform: scale(0.4) translateY(50px);
  transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
  transition-delay: calc(var(--foundation-estate-delay, 0) * 1ms) !important;
}
.foundation-estate-animate--grow.is-visible { transform: scale(1) translateY(0); }

/* Typewriter reveal: wrapper stays static, each letter carries its own transition-delay (set inline) */
.foundation-estate-typewriter.foundation-estate-animate {
  opacity: 1;
  transform: none;
}

.foundation-estate-typewriter__word {
  display: inline-block;
}

.foundation-estate-typewriter__char {
  display: inline-block;
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 0.15s ease, transform 0.15s ease;
}

.foundation-estate-typewriter.is-visible .foundation-estate-typewriter__char {
  opacity: 1;
  transform: translateY(0);
}

/* Blur-in variant: each letter starts out of focus, sharpening into place
   on its own staggered delay (inherited from .foundation-estate-typewriter__char). */
.foundation-estate-typewriter--blur .foundation-estate-typewriter__char {
  filter: blur(14px);
  transition: opacity 0.5s ease, transform 0.5s ease, filter 0.5s ease;
}

.foundation-estate-typewriter--blur.is-visible .foundation-estate-typewriter__char {
  filter: blur(0);
}

/* Subtle looping drift, started (via inline animation-delay) once the entrance grow-in has finished */
@keyframes foundation-estate-icon-wiggle {
  0%, 100% { transform: translate(0, 0); }
  10% { transform: translate(-1px, -1px); }
  20% { transform: translate(1px, -1px); }
  30% { transform: translate(-1px, 1px); }
  40% { transform: translate(1px, 1px); }
  50% { transform: translate(-1px, -1px); }
  60% { transform: translate(1px, -1px); }
  70% { transform: translate(-1px, 1px); }
  80% { transform: translate(1px, 1px); }
  90% { transform: translate(-1px, -1px); }
}

.foundation-estate-intro-banner__icon-float {
  animation: foundation-estate-icon-wiggle 6s ease-in-out infinite;
}


/* =========================
   Partial: Intro Banner
========================= */
.foundation-estate-intro-banner {
  position: sticky;
  top: 0;
  z-index: -1;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  background: var(--color-primary-red);
}

.foundation-estate-intro-banner--single-image {
  height: 70vh;
}

/* Full-bleed background — the single image (Disable Slider) and the
   rotating slider share this same layer; slides are stacked on top of
   each other and crossfaded by assets/js/intro-banner-slider.js. */
.foundation-estate-intro-banner__media {
  position: absolute;
  inset: 0;
}

.foundation-estate-intro-banner__media > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.foundation-estate-intro-banner__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1.2s ease;
}

.foundation-estate-intro-banner__slide.is-active {
  opacity: 1;
  z-index: 1;
}

.foundation-estate-intro-banner__slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Dark wash so the heading stays legible over any photo. */
.foundation-estate-intro-banner__overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: rgba(0, 0, 0, 0.7);
  pointer-events: none;
}

.foundation-estate-intro-banner__content {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 20px;
  height: 100%;
  /* Matches .foundation-estate-container's actual content inset, same as the header,
     so the heading starts at the same left edge as the rest of the page's
     content instead of a flat gutter on ultra-wide screens. */
  padding: 0 0 0 calc(max(0px, (100vw - var(--container)) / 2) + var(--gutter));
}

.foundation-estate-intro-banner__heading {
  width: max-content;
  max-width: calc(100% - calc(max(0px, (100vw - var(--container)) / 2) + var(--gutter)) * 2);
  color: var(--color-cream);
  margin: 0;
  font-size: 80px;
  font-weight: 300;
  white-space: normal;
}

.foundation-estate-intro-banner__description {
  max-width: 50%;
  color: var(--color-cream);
  margin: 0;
  font-size: 35px;
  line-height: 1.2;
  font-weight: 300;
}

.foundation-estate-intro-banner__cta-group {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 12px;
}

/* Vertical pagination dots, right edge. */
.foundation-estate-intro-banner__pagination {
  position: absolute;
  z-index: 3;
  top: 50%;
  right: calc(max(0px, (100vw - var(--container)) / 2) + var(--gutter));
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
}

.foundation-estate-intro-banner__dot {
  position: relative;
  width: 8px;
  height: 8px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid var(--color-cream);
  background: transparent;
  cursor: pointer;
  transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.3s ease;
}

/* Soft ring that blooms outward on hover/focus — permanently at rest
   (low opacity) around whichever dot is active, so it reads as "current"
   even before you interact with it. */
.foundation-estate-intro-banner__dot::before {
  content: '';
  position: absolute;
  inset: -9px;
  border-radius: 50%;
  border: 1px solid var(--color-cream);
  opacity: 0;
  transform: scale(0.5);
  transition: opacity 0.35s ease, transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
  pointer-events: none;
}

.foundation-estate-intro-banner__dot:hover,
.foundation-estate-intro-banner__dot:focus-visible {
  transform: scale(1.35);
  background: rgba(235, 238, 229, 0.4);
  outline: none;
}

.foundation-estate-intro-banner__dot:hover::before,
.foundation-estate-intro-banner__dot:focus-visible::before {
  opacity: 1;
  transform: scale(1);
}

.foundation-estate-intro-banner__dot.is-active {
  background: var(--color-cream);
}

.foundation-estate-intro-banner__dot.is-active::before {
  opacity: 0.45;
  transform: scale(1);
}

/* Reused by .foundation-estate-post-header (single.php) for its own
   featured-image column — not part of the intro banner partial itself. */
.foundation-estate-intro-banner__single-image {
  position: relative;
  flex: 1;
  overflow: hidden;
}

.foundation-estate-intro-banner__single-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.foundation-estate-intro-banner__cursor {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 130px;
  height: 130px;
  border-radius: 50%;
  background: rgba(235, 238, 229, 0.55);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  color: var(--color-primary-red);
  text-align: center;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -50%) scale(0.8);
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.foundation-estate-intro-banner__cursor span {
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.foundation-estate-intro-text-media__media.is-hovering .foundation-estate-intro-banner__cursor,
.foundation-estate-two-media-columns__media.is-hovering .foundation-estate-intro-banner__cursor,
.foundation-estate-landscape-image__media.is-hovering .foundation-estate-intro-banner__cursor,
.foundation-estate-projects-feed__item.is-hovering .foundation-estate-intro-banner__cursor,
.foundation-estate-experience-cards__card.is-hovering .foundation-estate-intro-banner__cursor,
.foundation-estate-process__image.is-hovering .foundation-estate-intro-banner__cursor {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

/* =========================
   Post Media Lightbox
========================= */
.foundation-estate-media-lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #000;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.foundation-estate-media-lightbox.is-open {
  opacity: 1;
  pointer-events: all;
}

.foundation-estate-media-lightbox-inner {
  position: relative;
  width: 100%;
  height: 100%;
}

.foundation-estate-media-lightbox-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #000;
}

.foundation-estate-media-lightbox-close {
  position: absolute;
  top: 24px;
  right: 24px;
  z-index: 1;
  color: var(--white);
  opacity: 0.8;
  transition: opacity 0.2s ease;
}

.foundation-estate-media-lightbox-close:hover { opacity: 1; }

@media (max-width: 900px) {
  .foundation-estate-intro-banner__heading {
    font-size: clamp(2rem, 8vw, 2.5rem);
  }

  .foundation-estate-intro-banner__description {
    max-width: 90%;
  }

  /* No hover on touch — the cursor bubble would otherwise never disappear
     since it can only ever be revealed by a hover that will never come. */
  .foundation-estate-intro-banner__cursor {
    display: none;
  }
}

.foundation-estate-intro-banner__icon-texture {
  position: absolute;
  inset: 0;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  mix-blend-mode: multiply;
  pointer-events: none;
}

/* =========================
   Single Post
========================= */
/* Identical layout to .foundation-estate-intro-banner (red left column + single image
   right column) — this is that same design for single posts, just shorter
   and with its own content (title, publish date) on the left. */
.foundation-estate-post-header {
  display: flex;
  width: 100%;
  height: 50vh;
  background: var(--color-primary-red);
}

.foundation-estate-post-header__left {
  position: relative;
  z-index: 2;
  flex: 0 0 66.6667%;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 var(--gutter) 0 calc(max(0px, (100vw - var(--container)) / 2) + var(--gutter));
}

.foundation-estate-post-header__title {
  width: 100%;
  max-width: 100%;
  white-space: normal;
  font-size: clamp(1.75rem, 2.5vw, 2.5rem);
  line-height: 1.15;
  color: var(--color-cream);
  margin: 0 0 clamp(24px, 4vw, 40px);
}

.foundation-estate-post-header__date {
  margin: 0;
  color: var(--color-cream);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  line-height: 1.6;
  text-transform: uppercase;
}

@media (max-width: 900px) {
  .foundation-estate-post-header {
    flex-direction: column;
    height: auto;
  }

  .foundation-estate-post-header__left {
    flex: none;
    padding: calc(clamp(30px, 4vw, 60px) + 80px) var(--gutter) clamp(30px, 4vw, 60px);
  }

  .foundation-estate-post-header .foundation-estate-intro-banner__single-image {
    flex: none;
    height: 50vh;
  }

  .foundation-estate-post-header__title {
    width: auto;
    max-width: 100%;
    white-space: normal;
    font-size: clamp(2rem, 8vw, 2.5rem);
  }
}

.foundation-estate-post-body {
  background: var(--color-cream);
  padding: clamp(30px, 4vw, 60px) 0;
}

/* =========================
   Partial: Intro (Text Left, Media Right)
========================= */
.foundation-estate-intro-text-media {
  position: relative;
  background: var(--color-cream);
  padding: clamp(30px, 4vw, 60px) 0;
}

.foundation-estate-intro-text-media__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: clamp(56px, 9vw, 140px);
}

.foundation-estate-intro-text-media__text {
  color: var(--color-primary-red);
}

.foundation-estate-intro-text-media__text p {
  font-family: var(--body-font);
  font-size: 20px;
  line-height: 1.35;
  font-weight: 400;
}

.foundation-estate-intro-text-media__media {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  cursor: pointer;
}

.foundation-estate-intro-text-media__media.is-hovering { cursor: none; }

.foundation-estate-intro-text-media__media img,
.foundation-estate-intro-text-media__media video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 900px) {
  .foundation-estate-intro-text-media__grid { grid-template-columns: 1fr; }
}

/* =========================
   Partial: Two Paragraphs
========================= */
.foundation-estate-two-paragraphs {
  position: relative;
  background: var(--color-cream);
  padding: clamp(30px, 4vw, 60px) 0;
}

.foundation-estate-two-paragraphs__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(56px, 9vw, 140px);
}

.foundation-estate-two-paragraphs__text {
  color: var(--color-primary-red);
}

.foundation-estate-two-paragraphs__text p {
  font-size: 16px;
}

@media (max-width: 900px) {
  .foundation-estate-two-paragraphs__grid { grid-template-columns: 1fr; }
}

/* =========================
   Partial: 2 Media Columns
========================= */
.foundation-estate-two-media-columns {
  position: relative;
  background: var(--color-cream);
  padding: clamp(30px, 4vw, 60px) 0;
}

.foundation-estate-two-media-columns__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(56px, 9vw, 140px);
}

.foundation-estate-two-media-columns__media {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  cursor: pointer;
}

.foundation-estate-two-media-columns__media.is-hovering { cursor: none; }

.foundation-estate-two-media-columns__media img,
.foundation-estate-two-media-columns__media video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 900px) {
  .foundation-estate-two-media-columns__grid { grid-template-columns: 1fr; }
}

/* =========================
   Partial: Landscape Image
========================= */
.foundation-estate-landscape-image {
  position: relative;
  padding: clamp(30px, 4vw, 60px) 0;
}

.foundation-estate-landscape-image__media {
  position: relative;
  overflow: hidden;
  cursor: pointer;
}

.foundation-estate-landscape-image__media.is-hovering { cursor: none; }

.foundation-estate-landscape-image__media img {
  display: block;
  width: 100%;
  height: auto;
}

/* =========================
   Partial: Post Testimonials
========================= */
.foundation-estate-post-testimonials {
  position: relative;
  background: var(--color-cream);
  padding: clamp(30px, 4vw, 60px) 0;
}

.foundation-estate-post-testimonials__list {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: clamp(56px, 8vw, 100px);
  text-align: left;
}

.foundation-estate-post-testimonials__item {
  margin: 0 auto;
  max-width: 900px;
}

.foundation-estate-post-testimonials__quote {
  margin: 0;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: clamp(1.1rem, 1.6vw, 1.375rem);
  line-height: 1.6;
}

.foundation-estate-post-testimonials__name {
  margin: 24px 0 0;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* =========================
   Partial: Post Content
========================= */
.foundation-estate-post-content {
  position: relative;
  background: var(--color-cream);
  padding: clamp(30px, 4vw, 60px) 0;
}

.foundation-estate-post-content__text {
  margin: 0 auto;
  max-width: 900px;
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 16px;
  line-height: 1.6;
}

/* =========================
   Partial: Post Pagination
========================= */
.foundation-estate-post-pagination {
  padding: clamp(30px, 4vw, 60px) 0 0;
}

.foundation-estate-post-pagination__row {
  display: flex;
  align-items: center;
}

.foundation-estate-post-pagination__prev,
.foundation-estate-post-pagination__next {
  flex-shrink: 0;
}

.foundation-estate-post-pagination__prev { margin-right: auto; }
.foundation-estate-post-pagination__next { margin-left: auto; }

/* =========================
   Partial: Projects Feed
========================= */
.foundation-estate-projects-feed {
  background: var(--color-white);
  padding: 0 0 clamp(60px, 8vw, 120px);
}

.foundation-estate-projects-feed__eyebrow {
  margin: 0 0 clamp(56px, 8vw, 100px);
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.foundation-estate-projects-feed__list {
  display: flex;
  flex-direction: column;
  gap: clamp(56px, 8vw, 100px);
}

.foundation-estate-projects-feed__item {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 2fr;
  align-items: start;
  gap: clamp(24px, 3vw, 48px);
  color: inherit;
  text-decoration: none;
}

.foundation-estate-projects-feed__item.is-hovering { cursor: none; }

.foundation-estate-projects-feed__item.is-limited {
  display: none;
}

.foundation-estate-projects-feed__load-more-wrap {
  display: flex;
  justify-content: flex-end;
  margin-top: clamp(40px, 6vw, 64px);
}

.foundation-estate-projects-feed__load-more-wrap[hidden] {
  display: none;
}

.foundation-estate-projects-feed__title {
  margin: 0 0 12px;
  color: var(--color-primary-red);
  font-family: var(--accent-font);
  font-weight: 400;
  font-size: clamp(1.5rem, 2.5vw, 2rem);
}

.foundation-estate-projects-feed__meta {
  display: flex;
  flex-direction: column;
}

.foundation-estate-projects-feed__meta-item {
  margin: 0;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 0.04em;
  line-height: 1.6;
  text-transform: uppercase;
}

.foundation-estate-projects-feed__image {
  aspect-ratio: 3 / 2;
  overflow: hidden;
}

.foundation-estate-projects-feed__image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 900px) {
  .foundation-estate-projects-feed__item {
    grid-template-columns: 1fr;
    padding-bottom: 30px;
  }

  /* No hover on touch — the "View Project" cursor bubble would otherwise
     just sit there permanently, and cursor:none would hide the real
     pointer on hybrid touch+mouse devices with nothing shown in its place. */
  .foundation-estate-projects-feed__item.is-hovering { cursor: auto; }

  .foundation-estate-projects-feed__item .foundation-estate-intro-banner__cursor {
    display: none;
  }
}

/* =========================
   Search Page
========================= */
.foundation-estate-search-header {
  background: var(--color-black);
  color: var(--white);
  padding: 140px 0 60px;
}

.foundation-estate-search-header__label {
  font-size: 13px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.5);
  margin-bottom: 12px;
}

.foundation-estate-search-header__term {
  font-size: clamp(2rem, 4vw, 3.5rem);
  font-weight: 300;
  margin-bottom: 12px;
}

.foundation-estate-search-header__count {
  font-size: 14px;
  color: rgba(255,255,255,0.5);
  margin: 0;
}

.foundation-estate-search-results {
  padding-top: 60px;
  padding-bottom: 80px;
}

.foundation-estate-search-results__list {
  display: flex;
  flex-direction: column;
}

.foundation-estate-search-result {
  padding: 36px 0;
  border-bottom: 1px solid var(--grey);
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

.foundation-estate-search-result__meta { display: flex; align-items: center; gap: 12px; }

.foundation-estate-search-result__type {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--semi);
  font-weight: 500;
}

.foundation-estate-search-result__title {
  font-size: clamp(1.125rem, 1.806vw, 1.625rem);
  font-weight: 500;
}

.foundation-estate-search-result__title a { transition: opacity 0.2s; }
.foundation-estate-search-result__title a:hover { opacity: 0.65; }

.foundation-estate-search-result__excerpt {
  font-size: 15px;
  color: var(--semi);
  line-height: 1.6;
  margin: 0;
}

.foundation-estate-search-result__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-black);
  transition: opacity 0.2s;
  margin-top: 4px;
}

.foundation-estate-search-result__link:hover { opacity: 0.65; }

.foundation-estate-search-results__empty { max-width: 560px; padding: 60px 0; }
.foundation-estate-search-results__empty p { font-size: 18px; margin-bottom: 32px; }
.foundation-estate-search-results__empty .search-form { display: flex; gap: 0; border-bottom: 1px solid var(--color-black); }
.foundation-estate-search-results__empty .search-field { flex: 1; border: none; outline: none; font-family: var(--body-font); font-size: 18px; padding: 12px 0; background: none; }
.foundation-estate-search-results__empty .search-submit { display: none; }

.foundation-estate-search-results__pagination { margin-top: 60px; }
.foundation-estate-search-results__pagination .nav-links { display: flex; gap: 8px; align-items: center; }
.foundation-estate-search-results__pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 40px; height: 40px; padding: 0 12px;
  border: 1px solid var(--grey); font-size: 13px; font-weight: 500;
  transition: background 0.2s, color 0.2s;
}
.foundation-estate-search-results__pagination .page-numbers.current { background: var(--color-black); color: var(--white); border-color: var(--color-black); }
.foundation-estate-search-results__pagination .page-numbers:hover:not(.current) { background: var(--light); }

/* =========================
   Responsive
========================= */
@media (max-width: 1200px) {
  :root { --gutter: 32px; }
}

@media (max-width: 1024px) {
  .foundation-estate-primary-menu { gap: 24px; }
}

/* =========================
   Partial: Testimonial Slider
========================= */
.foundation-estate-testimonial-slider {
  position: relative;
  background: var(--color-cream);
  padding: 0 0 clamp(60px, 8vw, 120px);
  overflow: hidden;
}

.foundation-estate-testimonial-slider__inner {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: clamp(32px, 5vw, 64px);
  align-items: start;
  max-width: 66.666%;
  margin: 0 auto;
}

.foundation-estate-testimonial-slider__image {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  overflow: hidden;
}

.foundation-estate-testimonial-slider__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.foundation-estate-testimonial-slider__content {
  display: flex;
  flex-direction: column;
}

.foundation-estate-testimonial-slider__quote {
  margin: 0;
  color: var(--color-primary-red);
  font-weight: 400;
  font-size: clamp(2rem, 2.5vw, 2.25rem);
  line-height: 1.111;
}

.foundation-estate-testimonial-slider__quote p { margin: 0 0 1.25em; }
.foundation-estate-testimonial-slider__quote p:last-child { margin-bottom: 0; }

.foundation-estate-testimonial-slider__person {
  margin: 24px 0 0;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

@media (max-width: 900px) {
  .foundation-estate-testimonial-slider__inner {
    max-width: 100%;
  }
}

@media (max-width: 700px) {
  .foundation-estate-testimonial-slider__inner {
    grid-template-columns: 1fr;
  }
}

.foundation-estate-project-feed__lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #000;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.foundation-estate-project-feed__lightbox.is-open {
  opacity: 1;
  pointer-events: all;
}

.foundation-estate-project-feed__lightbox-inner {
  position: relative;
  width: 100%;
  height: 100%;
}

.foundation-estate-project-feed__lightbox-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #000;
}

.foundation-estate-project-feed__lightbox-close {
  position: absolute;
  top: 24px;
  right: 24px;
  z-index: 1;
  color: var(--white);
  opacity: 0.8;
  transition: opacity 0.2s ease;
}

.foundation-estate-project-feed__lightbox-close:hover { opacity: 1; }

/* =========================
   Partial: Contact
========================= */
.foundation-estate-contact {
  position: relative;
  padding: clamp(60px, 8vw, 120px) 0;
}

.foundation-estate-contact--no-padding-top {
  padding-top: 0;
}

.foundation-estate-contact--black  { background: var(--color-black); }
.foundation-estate-contact--cream  { background: var(--color-cream); }
.foundation-estate-contact--white  { background: var(--color-white); }

.foundation-estate-contact--black .foundation-estate-contact__heading,
.foundation-estate-contact--black .foundation-estate-contact__detail a,
.foundation-estate-contact--black .foundation-estate-contact__info {
  color: var(--color-cream);
}

.foundation-estate-contact--cream .foundation-estate-contact__heading,
.foundation-estate-contact--cream .foundation-estate-contact__detail a,
.foundation-estate-contact--cream .foundation-estate-contact__info,
.foundation-estate-contact--white .foundation-estate-contact__heading,
.foundation-estate-contact--white .foundation-estate-contact__detail a,
.foundation-estate-contact--white .foundation-estate-contact__info {
  color: var(--color-primary-red);
}

.foundation-estate-contact__heading {
  margin: 0 0 clamp(40px, 6vw, 64px);
  font-family: var(--heading-font);
  font-weight: 300;
  font-size: clamp(1.5rem, 2.2vw, 1.875rem);
}

.foundation-estate-contact__detail-label {
  margin: 0 0 4px;
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
  opacity: 0.75;
}

.foundation-estate-contact__grid {
  display: grid;
  grid-template-columns: minmax(280px, 640px) 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}

/* No Image set — the info/form column is the grid's only child, so let it
   take the full row instead of auto-placing into the narrower first track
   (image's spot) and leaving the wider second track empty. */
.foundation-estate-contact__grid > .foundation-estate-contact__info:only-child {
  grid-column: 1 / -1;
  max-width: 640px;
}

.foundation-estate-contact__media {
  position: relative;
  aspect-ratio: 3 / 4;
  overflow: hidden;
}

.foundation-estate-contact__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.foundation-estate-contact__info {
  font-size: 16px;
  line-height: 1.5;
}

.foundation-estate-contact__detail { margin: 0 0 24px; }

.foundation-estate-contact__detail a {
  position: relative;
  display: inline-block;
  color: inherit;
  font-family: var(--body-font);
  font-weight: 400;
  font-size: 16px;
  text-decoration: none;
  opacity: 0.75;
  transition: opacity 0.2s ease;
}

.foundation-estate-contact__detail a:hover { opacity: 1; }

/* Light-touch Ninja Forms overrides to match the theme — the field's own
   <label> is hidden entirely; its placeholder text (set per-field in the
   Ninja Forms builder) is styled to look identical to how the label used
   to, sitting naturally inside the field instead of positioned over it.
   Minimal underlined style — no fill, no border-radius, plain-case
   placeholder — rather than the site's usual filled/pill form treatment. */
.foundation-estate-contact__form .nf-field-container {
  margin-bottom: 20px;
}

.foundation-estate-contact__form .nf-field-label {
  display: none;
}

.foundation-estate-contact__form .nf-field-description {
  font-size: 14px;
  padding-bottom: 20px;
}

.foundation-estate-contact__form input[type="text"],
.foundation-estate-contact__form input[type="email"],
.foundation-estate-contact__form input[type="tel"],
.foundation-estate-contact__form textarea {
  width: 100%;
  background: none;
  border: none;
  border-bottom: 1px solid currentColor;
  border-radius: 0;
  color: inherit;
  font-family: var(--body-font);
  font-size: 15px;
  padding: 10px 0;
}

.foundation-estate-contact__form input[type="text"]::placeholder,
.foundation-estate-contact__form input[type="email"]::placeholder,
.foundation-estate-contact__form input[type="tel"]::placeholder,
.foundation-estate-contact__form textarea::placeholder {
  color: inherit;
  font-family: var(--body-font);
  font-weight: 400;
  font-size: 15px;
  opacity: 0.6;
}

.foundation-estate-contact__form textarea { min-height: 100px; resize: vertical; }

.foundation-estate-contact__form .nf-form-fields-required,
.foundation-estate-contact__form .nf-error-msg,
.foundation-estate-contact__form .nf-error-required-error,
.foundation-estate-contact__form .ninja-forms-req-symbol {
  display: none;
}

/* Ninja Forms only ever renders this as a plain <input type="submit">
   (confirmed in its own field template) — a void element that can't hold
   child spans, so assets/js/ninja-form-btn-label.js wraps it in a real
   span carrying the visible dot + label, turning the input itself into an
   invisible full-cover overlay that stays the actual clickable/submitting
   element. */
.foundation-estate-contact__submit-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}

.foundation-estate-contact__submit-dot {
  flex: 0 0 auto;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}

.foundation-estate-contact__submit-label {
  font-family: var(--heading-font);
  font-size: 15px;
  font-weight: 400;
  transition: opacity 0.2s ease;
}

.foundation-estate-contact__submit-wrap:hover .foundation-estate-contact__submit-label {
  opacity: 0.6;
}

.foundation-estate-contact__submit-wrap input[type="submit"] {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  opacity: 0;
  cursor: pointer;
}

@media (max-width: 900px) {
  .foundation-estate-contact__grid {
    grid-template-columns: 1fr;
  }

  .foundation-estate-contact__media {
    aspect-ratio: 4 / 3;
  }
}

/* =========================
   Partial: Behind The Scenes Columns
========================= */
.foundation-estate-behind-the-scenes {
  position: relative;
  background: var(--color-cream);
  padding: clamp(60px, 8vw, 120px) 0;
}

.foundation-estate-behind-the-scenes__heading {
  font-size: clamp(2.25rem, 5vw, 4rem);
  color: var(--color-peach);
  text-transform: uppercase;
  margin-bottom: clamp(32px, 5vw, 56px);
}

.foundation-estate-behind-the-scenes__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 3vw, 32px);
}

.foundation-estate-behind-the-scenes__col {
  display: block;
  color: inherit;
}

.foundation-estate-behind-the-scenes__media {
  position: relative;
  aspect-ratio: 9 / 16;
  overflow: hidden;
  margin-bottom: 12px;
}

.foundation-estate-behind-the-scenes__media img,
.foundation-estate-behind-the-scenes__media video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.foundation-estate-behind-the-scenes__col:hover .foundation-estate-behind-the-scenes__media img,
.foundation-estate-behind-the-scenes__col:hover .foundation-estate-behind-the-scenes__media video {
  transform: scale(1.04);
}

/* Hover: the other columns dim under an overlay while one is hovered */
.foundation-estate-behind-the-scenes__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0);
  transition: background 0.3s ease;
  pointer-events: none;
}

.foundation-estate-behind-the-scenes__media.is-dimmed::after {
  background: rgba(0, 0, 0, 0.55);
}

.foundation-estate-behind-the-scenes__project-name {
  font-family: var(--accent-font);
  font-size: 14px;
  letter-spacing: 0.02em;
  font-weight: 700;
  color: var(--color-peach);
  line-height: 1.4;
  margin: 0;
}

.foundation-estate-behind-the-scenes__cta {
  display: flex;
  justify-content: flex-end;
  margin-top: clamp(32px, 5vw, 56px);
}

@media (max-width: 900px) {
  .foundation-estate-behind-the-scenes__grid { grid-template-columns: 1fr; }
  .foundation-estate-behind-the-scenes__cta  { justify-content: flex-start; }
}

/* =========================
   Partial: Team Feed
========================= */
.foundation-estate-team-feed {
  position: relative;
  background: var(--color-primary-red);
  padding: clamp(60px, 8vw, 120px) 0;
}

.foundation-estate-team-feed--cream {
  background: var(--color-cream);
}

.foundation-estate-team-feed--cream .foundation-estate-team-feed__eyebrow,
.foundation-estate-team-feed--cream .foundation-estate-team-feed__heading,
.foundation-estate-team-feed--cream .foundation-estate-team-feed__name,
.foundation-estate-team-feed--cream .foundation-estate-team-feed__position {
  color: var(--color-primary-red);
}

.foundation-estate-team-feed__eyebrow {
  margin: 0 0 16px;
  color: var(--color-cream);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.foundation-estate-team-feed__heading {
  font-family: var(--heading-font);
  font-size: clamp(1.75rem, 2.5vw, 2.25rem);
  font-weight: 400;
  line-height: 1.2;
  color: var(--color-cream);
  margin-bottom: clamp(32px, 5vw, 56px);
}

/* Same entrance treatment as .foundation-estate-three-col-cta__column-heading's
   foundation-estate-animate/is-visible pairing — bigger rise, slower ease-out. */
.foundation-estate-team-feed__heading.foundation-estate-animate {
  transform: translateY(56px);
  transition-duration: 0.9s !important;
  transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.foundation-estate-team-feed__heading.foundation-estate-animate.is-visible {
  transform: translateY(0);
}

.foundation-estate-team-feed__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(24px, 3vw, 32px) clamp(20px, 3vw, 32px);
}

.foundation-estate-team-feed__member {
  padding-bottom: clamp(32px, 4vw, 48px);
}

.foundation-estate-team-feed__photo {
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  margin-bottom: 12px;
}

.foundation-estate-team-feed__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}


.foundation-estate-team-feed__name,
.foundation-estate-team-feed__position {
  font-family: var(--accent-font);
  text-transform: uppercase;
  font-weight: 400;
  color: var(--color-cream);
  line-height: 1.4;
  font-size: 14px;
}

.foundation-estate-team-feed__name {
  margin: 0;
}

.foundation-estate-team-feed__cta-wrap {
  display: flex;
  justify-content: flex-end;
  margin-top: clamp(32px, 5vw, 56px);
}

@media (max-width: 900px) {
  .foundation-estate-team-feed__grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
  .foundation-estate-team-feed__grid { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .foundation-estate-footer__main { grid-template-columns: repeat(2, 1fr); gap: 40px; }
}

@media (max-width: 560px) {
  .foundation-estate-footer__main { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
  :root { --gutter: 20px; }

  .foundation-estate-header__nav-wrap   { display: none; }
  .foundation-estate-header__right      { margin-left: auto; }

  .foundation-estate-header__logo img {
    height: 30px;
  }

  .foundation-estate-header__hamburger {
    display: flex;
    width: 44px;
    height: 30px;
    border: none;
    padding: 0 11px;
    gap: 6px;
    background: none;
  }

  /* Recalculated for this breakpoint's own geometry (1px lines, 6px gap) —
     the base 9px offset is tuned for the desktop hamburger's 3px lines and
     5px gap, so reusing it here put the two diagonal bars off-centre. */
  .foundation-estate-header__hamburger.is-active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .foundation-estate-header__hamburger.is-active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
}

/* =========================
   Back To Top
========================= */
.foundation-estate-back-to-top {
  position: fixed;
  right: clamp(20px, 3vw, 40px);
  bottom: clamp(20px, 3vw, 40px);
  z-index: 250;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--color-primary-red);
  color: var(--color-cream);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s, background-color 0.3s ease, color 0.3s ease;
}

/* Toggled by back-to-top.js when the button is currently sitting over a
   red-background section, so it doesn't blend into it. */
.foundation-estate-back-to-top.is-over-red {
  background: var(--color-white);
  color: var(--color-primary-red);
}

.foundation-estate-back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.foundation-estate-back-to-top:hover { opacity: 0.85; }

/* =========================
   Partial: 3 Columns + CTA
========================= */
.foundation-estate-three-col-cta {
  background: var(--color-cream);
  padding: clamp(60px, 8vw, 100px) 0;
}

.foundation-estate-three-col-cta__top {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
}

.foundation-estate-three-col-cta__top-text {
  flex: 0 0 33.333%;
}

.foundation-estate-three-col-cta__top-text--wide {
  flex-basis: 66.666%;
}

.foundation-estate-three-col-cta__eyebrow {
  margin: 0 0 16px;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.foundation-estate-three-col-cta__heading {
  margin: 0;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: clamp(1.75rem, 2.5vw, 2.25rem);
  line-height: 1.2;
}

.foundation-estate-three-col-cta__cta {
  flex-shrink: 0;
}

.foundation-estate-three-col-cta__divider {
  margin: clamp(40px, 6vw, 64px) 0;
}

.foundation-estate-three-col-cta__divider-line {
  border-top: 0.5px solid var(--color-primary-red);
  transform: scaleX(0);
  transition: opacity 2s ease, transform 2s ease !important;
}

.foundation-estate-three-col-cta__divider-line--1 {
  transform-origin: right;
}

.foundation-estate-three-col-cta__divider-line--2 {
  transform-origin: left;
  margin-top: 8px;
}

.foundation-estate-three-col-cta__divider-line.is-visible {
  transform: scaleX(1);
}

.foundation-estate-three-col-cta__columns {
  display: flex;
  justify-content: space-between;
  gap: 48px;
  margin-top: clamp(32px, 5vw, 56px);
}

.foundation-estate-three-col-cta__column {
  flex: 0 1 calc(33.333% - 32px);
}

/* Fills the empty third slot when only 2 real columns are added, instead
   of the CTA sitting in its own row below the grid (see three_column_cta.php). */
.foundation-estate-three-col-cta__column--cta {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
}

.foundation-estate-three-col-cta__icon-wrap {
  display: flex;
  align-items: flex-end;
  height: 48px;
  margin-bottom: 24px;
}

.foundation-estate-three-col-cta__icon {
  display: block;
  height: 20px;
  width: auto;
}

.foundation-estate-three-col-cta__column-heading {
  margin: 0 0 16px;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 300;
  font-size: clamp(1.5rem, 2.2vw, 1.875rem);
}

.foundation-estate-three-col-cta__column-description {
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 15px;
  line-height: 1.6;
}

/* More dramatic, longer entrance for this section specifically — a bigger
   rise distance and slower duration than the sitewide .foundation-estate-animate
   default, still staggered per column via the shared data-delay system. */
.foundation-estate-three-col-cta__column .foundation-estate-animate {
  transform: translateY(56px);
  transition-duration: 0.7s !important;
  transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.foundation-estate-three-col-cta__column .foundation-estate-animate.is-visible {
  transform: translateY(0);
}

.foundation-estate-three-col-cta__cta-wrap {
  display: flex;
  justify-content: flex-end;
  margin-top: clamp(40px, 6vw, 64px);
}

@media (max-width: 900px) {
  .foundation-estate-three-col-cta__top {
    flex-direction: column;
    align-items: flex-start;
    gap: 24px;
  }

  .foundation-estate-three-col-cta__top-text {
    flex-basis: auto;
  }

  .foundation-estate-three-col-cta__columns {
    flex-direction: column;
    gap: 40px;
  }

  .foundation-estate-three-col-cta__column {
    flex-basis: auto;
  }

  .foundation-estate-three-col-cta__cta-wrap {
    justify-content: flex-start;
  }
}

/* =========================
   Partial: Large Text 2 Columns
========================= */
.foundation-estate-large-text-2col {
  background: var(--color-cream);
  padding: clamp(60px, 8vw, 120px) 0;
}

.foundation-estate-large-text-2col--no-padding-top {
  padding-top: 0;
}

.foundation-estate-large-text-2col__eyebrow {
  margin: 0 0 clamp(32px, 5vw, 56px);
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.foundation-estate-large-text-2col__columns {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(32px, 5vw, 64px);
}

/* Same text treatment as .foundation-estate-three-col-cta__heading */
.foundation-estate-large-text-2col__column {
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: clamp(1.25rem, 2vw, 1.625rem);
  line-height: 1.4;
}

.foundation-estate-large-text-2col__column p { margin: 0 0 1.5em; }
.foundation-estate-large-text-2col__column p:last-child { margin-bottom: 0; }

@media (max-width: 700px) {
  .foundation-estate-large-text-2col__columns {
    grid-template-columns: 1fr;
  }
}

/* =========================
   Partial: Simple Paragraph
========================= */
.foundation-estate-simple-paragraph {
  background: var(--color-cream);
  padding: 120px 0 clamp(60px, 8vw, 120px);
}

@media (max-width: 900px) {
  .foundation-estate-simple-paragraph {
    padding-top: 0;
  }
}

.foundation-estate-simple-paragraph--no-padding-bottom {
  padding-bottom: 0;
}

/* Same double-line grow-in as .foundation-estate-three-col-cta__divider */
.foundation-estate-simple-paragraph__divider {
  margin: 0 0 clamp(40px, 6vw, 64px);
}

.foundation-estate-simple-paragraph__divider-line {
  border-top: 0.5px solid var(--color-primary-red);
  transform: scaleX(0);
  transition: opacity 2s ease, transform 2s ease !important;
}

.foundation-estate-simple-paragraph__divider-line--1 {
  transform-origin: right;
}

.foundation-estate-simple-paragraph__divider-line--2 {
  transform-origin: left;
  margin-top: 8px;
}

.foundation-estate-simple-paragraph__divider-line.is-visible {
  transform: scaleX(1);
}

.foundation-estate-simple-paragraph__content p {
  margin: 0 0 1.5em;
}

.foundation-estate-simple-paragraph__content p:last-child { margin-bottom: 0; }

/* =========================
   Partial: Process
========================= */
.foundation-estate-process {
  display: flex;
  height: 100vh;
  background: var(--color-white);
}

.foundation-estate-process__left {
  flex: 0 0 42%;
  min-width: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding: clamp(60px, 8vw, 120px) clamp(40px, 4vw, 64px) 0 calc(max(0px, (100vw - var(--container)) / 2) + var(--gutter));
}

.foundation-estate-process__eyebrow {
  margin: 0 0 16px;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.foundation-estate-process__heading {
  margin: 0 0 clamp(40px, 6vw, 64px);
  color: var(--color-primary-red);
  font-weight: 400;
}

.foundation-estate-process__accordion {
  margin-top: auto;
  display: flex;
  flex-direction: column;
}

.foundation-estate-process__item {
  border-top: 1px solid rgba(0, 0, 0, 0.1);
}

.foundation-estate-process__item:last-child {
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.foundation-estate-process__toggle {
  display: flex;
  align-items: center;
  gap: 24px;
  width: 100%;
  padding: 20px 0;
  border: none;
  background: none;
  cursor: pointer;
  text-align: left;
}

.foundation-estate-process__number {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--color-cream);
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-size: 13px;
  letter-spacing: 0.04em;
  transition: background-color 0.3s ease, color 0.3s ease;
}

.foundation-estate-process__item.is-active .foundation-estate-process__number {
  background: var(--color-primary-red);
  color: var(--color-cream);
}

.foundation-estate-process__title {
  font-family: var(--heading-font);
  font-size: clamp(1.15rem, 1.5vw, 1.375rem);
  font-weight: 400;
  color: var(--color-primary-red);
}

/* Height-animated collapse. A generous max-height stands in for "auto"
   (which can't be transitioned) — comfortably larger than any real
   description, so it never clips, while still collapsing fully to 0
   when closed. */
.foundation-estate-process__panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.8s cubic-bezier(0.65, 0, 0.35, 1);
}

.foundation-estate-process__item.is-active .foundation-estate-process__panel {
  max-height: 240px;
}

.foundation-estate-process__description {
  margin: 0 0 0 64px;
  padding-bottom: 24px;
  max-width: 480px;
  color: var(--color-primary-red);
  font-size: 15px;
  line-height: 1.6;
}

.foundation-estate-process__media {
  position: relative;
  flex: 1;
  overflow: hidden;
}

.foundation-estate-process__image {
  position: absolute;
  inset: 0;
  opacity: 0;
  color: inherit;
  text-decoration: none;
  transition: opacity 0.6s ease;
}

.foundation-estate-process__image.is-active {
  opacity: 1;
  z-index: 1;
}

.foundation-estate-process__image.is-hovering { cursor: none; }

.foundation-estate-process__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

@media (max-width: 900px) {
  .foundation-estate-process {
    flex-direction: column;
    height: auto;
  }

  .foundation-estate-process__left {
    flex: none;
    padding: clamp(40px, 6vw, 60px) var(--gutter);
  }

  .foundation-estate-process__media {
    flex: none;
    height: 60vh;
  }

  .foundation-estate-process__description {
    margin-left: 0;
  }
}

/* =========================
   Partial: Experience Cards
========================= */
/* Each card is sticky at the top of the viewport — the next one (later in
   DOM, so it already paints above at the same z-index:auto stacking level)
   scrolls up and covers it, the same mechanism as the sticky intro banner. */
.foundation-estate-experience-cards {
  background: var(--color-white);
}

.foundation-estate-experience-cards__top {
  position: sticky;
  top: 0;
  z-index: 2;
  height: var(--header-height, 0px);
  background: var(--color-white);
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.foundation-estate-experience-cards__top-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  height: 100%;
}

.foundation-estate-experience-cards__eyebrow {
  margin: 0;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.foundation-estate-experience-cards__card {
  position: sticky;
  top: var(--header-height, 0px);
  display: block;
  padding: 0 0 clamp(60px, 8vw, 100px);
  background: var(--color-white);
  border-top: 1px solid rgba(0, 0, 0, 0.1);
  color: inherit;
  text-decoration: none;
}

.foundation-estate-experience-cards__card.is-hovering { cursor: none; }

.foundation-estate-experience-cards__inner {
  display: grid;
  grid-template-columns: 30% 30% 30%;
  align-items: start;
  gap: clamp(40px, 5vw, 80px);
  width: 100%;
  padding-top: clamp(32px, 5vw, 56px);
}

.foundation-estate-experience-cards__media {
  aspect-ratio: 4 / 5;
  overflow: hidden;
}

.foundation-estate-experience-cards__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.foundation-estate-experience-cards__heading {
  min-width: 0;
  margin: 0;
  color: var(--color-primary-red);
  font-size: clamp(2rem, 2.5vw, 2.25rem);
  font-weight: 400;
}

.foundation-estate-experience-cards__description {
  margin: 0;
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.6;
}

.foundation-estate-experience-cards__further-info {
  margin-top: 20px;
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 16px;
  line-height: 1.6;
}

.foundation-estate-experience-cards__list {
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 16px;
  line-height: 1.6;
}

@media (max-width: 900px) {
  .foundation-estate-experience-cards__card {
    padding: 0 0 48px;
  }

  .foundation-estate-experience-cards__inner {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .foundation-estate-experience-cards__media {
    aspect-ratio: 4 / 3;
  }

  .foundation-estate-experience-cards__heading {
    white-space: normal;
  }
}

/* =========================
   Partial: Experience Cards V2
========================= */
.foundation-estate-experience-cards-v2 {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--color-white);
}

.foundation-estate-experience-cards-v2__card--spaced {
  margin-top: clamp(80px, 10vw, 140px);
  padding-top: clamp(80px, 10vw, 140px);
  border-top: 1px solid rgba(0, 0, 0, 0.1);
}

.foundation-estate-experience-cards-v2__top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 5vw, 80px);
}

.foundation-estate-experience-cards-v2__heading {
  margin: 0 0 20px;
  color: var(--color-primary-red);
  font-size: clamp(2rem, 2.5vw, 2.25rem);
  font-weight: 400;
}

.foundation-estate-experience-cards-v2__description {
  margin: 0;
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.6;
}

.foundation-estate-experience-cards-v2__further-info {
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 16px;
  line-height: 1.6;
}

.foundation-estate-experience-cards-v2__divider {
  margin: clamp(56px, 7vw, 96px) 0 0;
}

.foundation-estate-experience-cards-v2__divider-line {
  border-top: 0.5px solid var(--color-primary-red);
  transform: scaleX(0);
  transition: opacity 2s ease, transform 2s ease !important;
}

.foundation-estate-experience-cards-v2__divider-line--1 {
  transform-origin: right;
}

.foundation-estate-experience-cards-v2__divider-line--2 {
  transform-origin: left;
  margin-top: 8px;
}

.foundation-estate-experience-cards-v2__divider-line.is-visible {
  transform: scaleX(1);
}

.foundation-estate-experience-cards-v2__columns {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(32px, 4vw, 48px);
  margin-top: clamp(40px, 5vw, 56px);
}

.foundation-estate-experience-cards-v2__column-headline {
  margin: 0 0 16px;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 300;
  font-size: clamp(1.25rem, 1.6vw, 1.5rem);
}

.foundation-estate-experience-cards-v2__column-text {
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 15px;
  line-height: 1.6;
}

@media (max-width: 900px) {
  .foundation-estate-experience-cards-v2__top {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .foundation-estate-experience-cards-v2__columns {
    grid-template-columns: 1fr 1fr;
    gap: 32px;
  }
}

@media (max-width: 560px) {
  .foundation-estate-experience-cards-v2__columns {
    grid-template-columns: 1fr;
  }
}

/* =========================
   Partial: Split Content
========================= */
.foundation-estate-split-content {
  padding: clamp(40px, 6vw, 80px) 0;
  background: var(--color-white);
}

.foundation-estate-split-content__inner {
  display: flex;
  min-height: calc(100vh - var(--header-height, 0px));
  gap: clamp(40px, 5vw, 80px);
}

.foundation-estate-split-content--auto-height .foundation-estate-split-content__inner {
  min-height: 0;
  align-items: stretch;
}

.foundation-estate-split-content--auto-height .foundation-estate-split-content__content {
  justify-content: center;
}

.foundation-estate-split-content--image-right .foundation-estate-split-content__inner {
  flex-direction: row-reverse;
}

.foundation-estate-split-content__media {
  flex: 1 1 0;
  overflow: hidden;
}

.foundation-estate-split-content__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.foundation-estate-split-content__media--auto-height {
  display: flex;
  align-items: center;
  justify-content: center;
}

.foundation-estate-split-content__media--auto-height img {
  height: auto;
  object-fit: initial;
}

.foundation-estate-split-content__content {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}

.foundation-estate-split-content__heading {
  margin: 0 0 20px;
  color: var(--color-primary-red);
  font-weight: 400;
}

.foundation-estate-split-content__subheading {
  margin: 0 0 32px;
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: clamp(1.15rem, 1.5vw, 1.375rem);
  font-weight: 400;
  line-height: 1.3;
}

.foundation-estate-split-content__description {
  color: var(--color-primary-red);
  font-family: var(--body-font);
  font-size: 16px;
  line-height: 1.6;
}

.foundation-estate-split-content__description p {
  margin: 0 0 1.25em;
}

.foundation-estate-split-content__description p:last-child {
  margin-bottom: 0;
}

/* Checklist styling for any <ul> in the WYSIWYG — plain dots become
   rotated-border checkmarks instead. */
.foundation-estate-split-content__description ul {
  margin: 0 0 1.25em;
  padding: 0;
  font-size: 14px;
  list-style: none;
}

.foundation-estate-split-content__description ul li {
  position: relative;
  margin: 0 0 6px;
  padding-left: 28px;
}

.foundation-estate-split-content__description ul li:last-child {
  margin-bottom: 0;
}

.foundation-estate-split-content__description ul li::before {
  content: '';
  position: absolute;
  left: 2px;
  top: 0.4em;
  width: 12px;
  height: 7px;
  border-left: 2px solid var(--color-primary-red);
  border-bottom: 2px solid var(--color-primary-red);
  transform: rotate(-45deg);
}

@media (max-width: 900px) {
  .foundation-estate-split-content__inner,
  .foundation-estate-split-content--image-right .foundation-estate-split-content__inner {
    flex-direction: column;
    height: auto;
  }

  .foundation-estate-split-content__media {
    flex: none;
    aspect-ratio: 4 / 3;
  }

  .foundation-estate-split-content__content {
    padding: clamp(40px, 6vw, 60px) 0;
  }
}

/* =========================
   Partial: Simple Heading
========================= */
.foundation-estate-simple-heading {
  padding: clamp(160px, 20vw, 280px) 0 clamp(60px, 8vw, 120px);
  background: var(--color-white);
}

.foundation-estate-simple-heading--no-padding-bottom {
  padding-bottom: 0;
}

.foundation-estate-simple-heading__counters {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(32px, 5vw, 64px);
  margin: 0 0 clamp(32px, 5vw, 56px);
}

.foundation-estate-simple-heading__counter {
  display: flex;
  align-items: baseline;
  gap: 12px;
}

.foundation-estate-simple-heading__counter-number {
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: clamp(2.5rem, 4vw, 3.5rem);
  line-height: 1;
}

.foundation-estate-simple-heading__counter-label {
  max-width: 140px;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
  line-height: 1.4;
}

.foundation-estate-simple-heading__eyebrow {
  margin: 0 0 16px;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: uppercase;
}

.foundation-estate-simple-heading__heading {
  margin: 0;
  color: var(--color-primary-red);
  font-family: var(--heading-font);
  font-weight: 400;
  font-size: clamp(1.75rem, 2.5vw, 2.25rem);
  line-height: 1.2;
}

/* =========================
   Partial: BG Image CTA
========================= */
.foundation-estate-bg-image-cta {
  position: relative;
  overflow: hidden;
  padding: clamp(80px, 10vw, 160px) 0;
}

.foundation-estate-bg-image-cta__media {
  position: absolute;
  inset: 0;
}

.foundation-estate-bg-image-cta__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.foundation-estate-bg-image-cta__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(0, 0, 0, 0.65);
  pointer-events: none;
}

.foundation-estate-bg-image-cta__inner {
  position: relative;
  z-index: 2;
}

.foundation-estate-bg-image-cta__heading {
  width: 33.333%;
  margin: 0;
  color: var(--color-cream);
  font-weight: 400;
  font-size: clamp(1.75rem, 2.5vw, 2.25rem);
  line-height: 1.2;
}

.foundation-estate-bg-image-cta__divider {
  margin: clamp(40px, 6vw, 64px) 0;
}

.foundation-estate-bg-image-cta__divider-line {
  border-top: 0.5px solid var(--color-cream);
  transform: scaleX(0);
  transition: opacity 2s ease, transform 2s ease !important;
}

.foundation-estate-bg-image-cta__divider-line--1 {
  transform-origin: right;
}

.foundation-estate-bg-image-cta__divider-line--2 {
  transform-origin: left;
  margin-top: 8px;
}

.foundation-estate-bg-image-cta__divider-line.is-visible {
  transform: scaleX(1);
}

.foundation-estate-bg-image-cta__columns {
  display: flex;
  justify-content: space-between;
  gap: 48px;
}

.foundation-estate-bg-image-cta__column {
  flex: 0 1 calc(33.333% - 32px);
}

.foundation-estate-bg-image-cta__column--text {
  color: var(--color-cream);
  font-family: var(--body-font);
  font-size: 16px;
  line-height: 1.6;
}

.foundation-estate-bg-image-cta__column--cta {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
}

.foundation-estate-bg-image-cta__column--text p {
  margin: 0 0 1.25em;
}

.foundation-estate-bg-image-cta__column--text p:last-child {
  margin-bottom: 0;
}

@media (max-width: 900px) {
  .foundation-estate-bg-image-cta__heading {
    width: 100%;
  }

  .foundation-estate-bg-image-cta__columns {
    flex-direction: column;
    gap: 32px;
  }

  .foundation-estate-bg-image-cta__column {
    flex: none;
  }

  .foundation-estate-bg-image-cta__column--cta {
    justify-content: flex-start;
  }
}

