/* ==========================================================================
   VERMELL ESTATE
   Tokens → Reset → Typography → Grid → Buttons → Header → Sections → Footer
   Single breakpoint: 479px
   ========================================================================== */

:root {
  --white-100: #fff;
  --white-60: #fff9;
  --white-50: #ffffff80;
  --white-40: #fff6;
  --white-20: #fff3;
  --white-10: #ffffff1a;

  /* Warm near-black. Neutral enough to disappear, warm enough not to fight
     the golden-hour photography sitting on top of it. */
  --ground: #0a0908;
  --ground-rgb: 10, 9, 8;
  --ground-raised: #161413;
  --ground-raised-hi: #201d1b;

  --brand-accent: #fb9826;
  --button-clicked: #fa8805;
}

/* ---------------------------------------------------------------- reset -- */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100%;
  background-color: var(--ground);
  color: var(--white-100);
  font-family: Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1rem;
  line-height: 130%;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img {
  max-width: 100%;
  border: 0;
  vertical-align: middle;
  display: inline-block;
}

a {
  color: inherit;
  text-decoration: none;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

button,
input,
textarea {
  font: inherit;
  color: inherit;
}

/* ScrollSmoother requires these exact wrapper mechanics */
.page-wrapper {
  position: relative;
  overflow: hidden;
}

/* ----------------------------------------------------------- typography -- */

.h1 {
  font-size: 11.875rem;
  font-weight: 600;
  line-height: 100%;
  letter-spacing: -10px;
}

.h2 {
  font-size: 3.75rem;
  font-weight: 600;
  line-height: 110%;
  letter-spacing: -3.6px;
}

.h3 {
  font-size: 2.8125rem;
  font-weight: 600;
  line-height: 100%;
  letter-spacing: -3px;
  text-decoration: none;
}

.h4 {
  font-size: 1.75rem;
  font-weight: 600;
  line-height: 120%;
  letter-spacing: -2px;
}

.body-xxl {
  font-size: 1.75rem;
  font-weight: 600;
  line-height: 130%;
  letter-spacing: -2px;
}

.body-xl {
  font-size: 1.375rem;
  font-weight: 500;
  line-height: 120%;
  letter-spacing: -1px;
}

.body-lg,
.body-l {
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 130%;
  letter-spacing: -0.5px;
  text-decoration: none;
}

.body-lg-semibold {
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 100%;
  letter-spacing: -0.5px;
}

.body-md {
  font-size: 1rem;
  font-weight: 500;
  line-height: 130%;
  letter-spacing: -0.5px;
}

.body-md-regular {
  font-size: 1rem;
  font-weight: 400;
  line-height: 130%;
  letter-spacing: -0.5px;
}

.body-sm {
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 130%;
  letter-spacing: -0.6px;
}

.title-xs {
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 0.9375rem;
  letter-spacing: -0.5px;
}

.button-sm {
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 90%;
  letter-spacing: -0.5px;
  text-decoration: none;
}

.color-white {
  color: var(--white-100);
}
.color-white-60 {
  color: var(--white-60);
}
.color-white-50 {
  color: var(--white-50);
}
.color-white-40 {
  color: var(--white-40);
}
.color-ground {
  color: var(--ground);
}
.opacity-20 {
  opacity: 0.2;
}

.link {
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* --------------------------------------------------------------- layout -- */

.container {
  width: 100%;
  max-width: 100%;
  padding-left: 2.5rem;
  padding-right: 2.5rem;
}

.row {
  display: flex;
  margin-left: -1rem;
  margin-right: -1rem;
}

.row.align-end {
  align-items: flex-end;
}

.column {
  padding-left: 1rem;
  padding-right: 1rem;
}

.column-3 {
  width: 25%;
}
.column-4 {
  width: 33.3333%;
}
.column-6 {
  width: 50%;
}
.column-8 {
  width: 66.6667%;
}
.column-9 {
  width: 75%;
}
.column-12 {
  width: 100%;
}

.padding-global {
  padding-top: 5rem;
  padding-bottom: 5rem;
}

.padding-top-0 {
  padding-top: 0 !important;
}

.head {
  margin-bottom: 4rem;
}

.head.margin-bottom-40 {
  margin-bottom: 2.5rem;
}

.head__title {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.head__description {
  display: flex;
  flex-flow: column;
  gap: 2.5rem;
}

.margin-bottom-32 {
  margin-bottom: 2rem;
}

.z-index-3 {
  position: relative;
  z-index: 5;
}

.logo-mini {
  width: 0.75rem;
  height: 0.75rem;
  display: block;
}

/* Split-line masking — created at runtime by SplitText */
.split-line {
  display: block;
  will-change: transform;
}

/* ------------------------------------------------------- scenic sections --
   A full-bleed photograph behind a whole section, pushed far enough back with
   a scrim that white text stays crisp on top. The inner .section-bg carries
   `data-speed` so ScrollSmoother drifts it slower than the content, and it is
   inset past the section edges to give that drift somewhere to go. */

.section-scenic {
  position: relative;
  isolation: isolate;
  background-color: var(--ground);
  overflow: hidden;
}

.section-bg {
  position: absolute;
  inset: -12% 0;
  z-index: -1;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  background-size: cover;
  pointer-events: none;
}

.section-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(var(--ground-rgb), 0.97) 0%,
    rgba(var(--ground-rgb), 0.84) 22%,
    rgba(var(--ground-rgb), 0.8) 50%,
    rgba(var(--ground-rgb), 0.86) 78%,
    rgba(var(--ground-rgb), 0.97) 100%
  );
}

/* Responsive visibility helpers.
   Scoped to a min-width query so the mobile block below can set real display
   values without an !important war against component rules. */
@media screen and (min-width: 480px) {
  .mobile-visible,
  .mobile-visible-inline,
  .header__burger,
  .mobile-menu,
  .destination-mobile {
    display: none !important;
  }
}

/* -------------------------------------------------------------- buttons -- */

.btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 1rem;
  padding: 1.25rem 2rem;
  border-radius: 5rem;
  background-color: var(--white-100);
  text-decoration: none;
  transition: all 0.2s;
}

.btn-primary:hover {
  background-color: #ececec;
}

.btn-primary:active {
  background-color: var(--button-clicked);
}

.btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  min-width: 8.5rem;
  padding: 0.875rem 1.5rem;
  border-radius: 5rem;
  /* Lifted off the ground, with a hairline, so it still reads as a button on
     a near-black section and on a photo backdrop alike. */
  background-color: var(--ground-raised);
  border: 1px solid var(--white-10);
  text-decoration: none;
  transition: all 0.2s;
}

.btn-secondary:hover {
  background-color: var(--ground-raised-hi);
  border-color: var(--white-20);
}

.btn-secondary.is-full-width {
  width: 100%;
}

.btn-icon {
  display: flex;
  align-items: center;
  line-height: 0;
}

.btn-close {
  position: relative;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  opacity: 0.6;
  transition: opacity 0.2s;
}

.btn-close::before,
.btn-close::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 15%;
  width: 70%;
  height: 1px;
  background-color: var(--white-100);
}

.btn-close::before {
  transform: rotate(45deg);
}
.btn-close::after {
  transform: rotate(-45deg);
}
.btn-close:hover {
  opacity: 1;
}

/* --------------------------------------------------------------- header -- */

.header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  width: 100%;
  background-color: transparent;
  transition: background-color 0.3s ease, backdrop-filter 0.3s ease;
}

.header.is-active {
  background-color: rgba(var(--ground-rgb), 0.72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.header__in {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  max-width: 100%;
  height: 4.5rem;
  padding-left: 2.5rem;
  padding-right: 2.5rem;
}

.header__l {
  position: relative;
  display: flex;
  align-items: center;
  height: 100%;
  padding-right: 2rem;
}

.header-logo {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.header-logo__icon {
  display: block;
}

.header-logo__title {
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -0.5px;
}

.header__r {
  display: flex;
  align-items: center;
  height: 100%;
}

.header-nav {
  display: flex;
  align-items: center;
  gap: 2rem;
  height: 100%;
}

.header-nav__item {
  display: flex;
  align-items: center;
  height: 100%;
}

.header-nav__link {
  opacity: 0.85;
  transition: opacity 0.2s;
}

.header-nav__link:hover {
  opacity: 1;
}

.header__accent {
  position: relative;
  display: flex;
  align-items: center;
  height: 100%;
  padding-left: 2rem;
}

/* The three header rules that draw in on load */
.header__dec {
  position: absolute;
  background-color: var(--white-20);
}

.header__dec--1 {
  inset: auto 0 0 0;
  height: 1px;
}

.header__button {
  padding-left: 2rem;
}

.btn-burger {
  display: block;
  width: 2.5rem;
  height: 2.5rem;
}

.btn-burger__in {
  position: relative;
  width: 100%;
  height: 100%;
}

.btn-burger__line {
  position: absolute;
  left: 25%;
  width: 50%;
  height: 1.5px;
  background-color: var(--white-100);
  transition: transform 0.3s ease, opacity 0.3s ease;
}

.btn-burger__line--1 {
  top: 42%;
}
.btn-burger__line--2 {
  top: 58%;
}

.btn-burger.is-active .btn-burger__line--1 {
  transform: translateY(3px) rotate(45deg);
}
.btn-burger.is-active .btn-burger__line--2 {
  transform: translateY(-3px) rotate(-45deg);
}

.mobile-menu {
  flex-flow: column;
  gap: 1.5rem;
  padding: 1.5rem 2.5rem 2.5rem;
  background-color: var(--ground-raised);
  border-top: 1px solid var(--white-10);
}

/* ----------------------------------------------------------------- hero -- */

.intro {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1440 / 922;
  text-align: center;
  background-color: var(--ground-raised);
  background-position: 50%;
  background-repeat: no-repeat;
  background-size: cover;
  overflow: hidden;
}

.intro__in {
  display: flex;
  width: 100%;
}

.intro__text {
  width: 100%;
}

/* Scrim between the mid-ground plate and the headline: holds the nav and the
   sub-copy legible over a bright sky without flattening the photograph. */
.intro::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(var(--ground-rgb), 0.62) 0%,
    rgba(var(--ground-rgb), 0.12) 28%,
    rgba(var(--ground-rgb), 0.1) 60%,
    rgba(var(--ground-rgb), 0.55) 100%
  );
}

.intro__headline {
  position: relative;
  z-index: 3;
}

.intro__button {
  display: flex;
  justify-content: center;
}

/* Layer 1 sits behind the headline, layer 2 in front of it */
.intro-bg-part {
  position: absolute;
  display: block;
  width: 100%;
  object-fit: cover;
  pointer-events: none;
}

.intro-bg-part--1 {
  inset: 0 0 auto 0;
  z-index: 1;
  height: 58%;
  object-position: 50% 40%;
  /* Mid-ground ridge dissolves down into the sky plate behind it */
  -webkit-mask-image: linear-gradient(to bottom, #000 40%, transparent 100%);
  mask-image: linear-gradient(to bottom, #000 40%, transparent 100%);
}

.intro-bg-part--2 {
  inset: auto 0 0 0;
  z-index: 4;
  height: 34%;
  object-position: 50% 70%;
  /* Dissolves upward so the H1 appears to sink behind the vine rows */
  -webkit-mask-image: linear-gradient(to top, #000 45%, transparent 100%);
  mask-image: linear-gradient(to top, #000 45%, transparent 100%);
}

.intro-bg-dark {
  display: none;
}

/* ---------------------------------------------------------------- stats -- */

.statistic-section {
  position: relative;
}

.statistic__wrapper {
  position: relative;
}

.statistic__items {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;
}

.statistic-item {
  position: relative;
  padding: 2.5rem;
}

.statistic-item__head {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin-bottom: 2.5rem;
}

.statistic-item__visual {
  aspect-ratio: 400 / 260;
  overflow: hidden;
}

.statistic-item__illustration {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Rules that draw in — width/height animated from 0 by GSAP */
.statistic__border {
  position: absolute;
  background-color: var(--white-10);
}

.statistic__border--top {
  top: 0;
  left: 0;
  width: 0;
  height: 1px;
}

.statistic__border--bottom {
  bottom: 0;
  left: 0;
  width: 0;
  height: 1px;
}

.statistic__border--right {
  top: 1px;
  right: 0;
  width: 1px;
  height: 0;
}

/* ---------------------------------------------------------------- about -- */

.about {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}

.about__visual {
  overflow: hidden;
  aspect-ratio: 636 / 620;
}

.about__illustration {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.about__content {
  display: flex;
  flex-flow: column;
  justify-content: space-between;
}

.about__head {
  margin-bottom: 4rem;
}

.about__items {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  /* Hug the stats; the photo strip below takes the leftover height instead of
     letting the column end in dead black space. */
  flex: none;
  width: 100%;
}

.about__strip {
  flex: 1;
  min-height: 11rem;
  margin-top: 2.5rem;
  overflow: hidden;
}

.about__strip-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.about-item {
  display: flex;
  flex-flow: column;
  justify-content: space-between;
  gap: 2rem;
  padding-bottom: 1.875rem;
}

.about-item__head {
  display: flex;
  flex-flow: column;
  gap: 1rem;
}

.about-item__logos {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

.about-item__logo {
  height: 1.5rem;
  width: auto;
  opacity: 0.5;
}

/* ------------------------------------------------------------- featured -- */

.featured__items {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin-left: -2.5rem;
  margin-right: -2.5rem;
}

.featured-item {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2.5rem;
  padding: 2.5rem;
}

.featured-item__text {
  display: flex;
  flex-flow: column;
  justify-content: space-between;
}

.featured-item__head {
  display: flex;
  flex-flow: column;
  gap: 1rem;
  margin-bottom: 2.5rem;
}

.featured-item__cost {
  display: flex;
  align-items: baseline;
  gap: 0.375rem;
}

.featured-item__body {
  display: flex;
  flex-flow: column;
  gap: 1.5rem;
}

.featured-item__properties {
  display: flex;
  flex-flow: column;
  gap: 0.75rem;
}

.featured-item-property {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--white-10);
}

.featured-item-property__icon {
  width: 1rem;
  height: 1rem;
  flex: none;
}

.featured-item-property__icon.size-l {
  width: 4.5rem;
  height: 1rem;
}

.featured-item__visual {
  overflow: hidden;
  aspect-ratio: 300 / 420;
}

.featured-item__illustration {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* The 7 rules forming the featured grid — 4 horizontal, 3 vertical */
.featured__dec {
  position: absolute;
  background-color: var(--white-10);
  pointer-events: none;
}

.featured__dec--1,
.featured__dec--2,
.featured__dec--3,
.featured__dec--4 {
  left: 0;
  width: 0;
  height: 1px;
}

.featured__dec--1 {
  top: 0;
}
.featured__dec--2 {
  top: 33.3333%;
}
.featured__dec--3 {
  top: 66.6667%;
}
.featured__dec--4 {
  bottom: 0;
}

.featured__dec--5,
.featured__dec--6,
.featured__dec--7 {
  top: 0;
  width: 1px;
  height: 0;
}

.featured__dec--5 {
  left: 50%;
}
.featured__dec--6 {
  left: 0;
}
.featured__dec--7 {
  right: 0;
}

/* -------------------------------------------------------------- combine -- */

.combine {
  position: relative;
  aspect-ratio: 1440 / 863;
  padding-top: 5rem;
  background-position: 50%;
  background-repeat: no-repeat;
  background-size: cover;
}

.combine__items {
  display: flex;
  flex-flow: column;
  gap: 0.5rem;
}

.combine__steps {
  position: absolute;
  inset: auto 0 0 0;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 0;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  background-color: rgba(var(--ground-rgb), 0.35);
}

.combine-step {
  position: relative;
  display: flex;
  flex-flow: column;
  gap: 5.5rem;
  padding: 2.5rem;
}

.combine-step.sizel-l {
  grid-column: span 2;
  justify-content: flex-end;
}

.combine-step__head {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}

.combine-step__body {
  margin-top: auto;
}

.combine-step__dec {
  position: absolute;
  background-color: var(--white-10);
}

.combine-step__dec--1,
.combine-step__dec--2,
.combine-step__dec--3,
.combine-step__dec--4 {
  top: 0;
  left: 0;
  width: 1px;
  height: 100%;
}

.combine-step__dec--5,
.combine-step__dec--6 {
  top: 0;
  left: 0;
  width: 100%;
  height: 1px;
}

.combine__dec {
  position: absolute;
  background-color: var(--white-10);
}

.combine__dec--1 {
  top: 0;
  left: 0;
  width: 100%;
  height: 1px;
}

.combine__dec--2 {
  top: 0;
  right: 0;
  width: 1px;
  height: 100%;
}

/* --------------------------------------------------------------- region -- */

.destination {
  position: relative;
  aspect-ratio: 1440 / 1013;
  padding-top: 5rem;
  padding-bottom: 5rem;
  background-position: 50%;
  background-repeat: no-repeat;
  background-size: cover;
}

.destination::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(var(--ground-rgb), 0.85) 0%,
    rgba(var(--ground-rgb), 0.4) 45%,
    rgba(var(--ground-rgb), 0.9) 100%
  );
  pointer-events: none;
}

.destination .container {
  position: relative;
  z-index: 2;
}

.destination__code {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}

.destination__dots {
  position: absolute;
  left: 1%;
  bottom: 24%;
  display: block;
  width: 90%;
  height: auto;
}

.destination-mobile {
  flex-flow: column;
  gap: 1.5rem;
}

.destination-mobile-item__head {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin-bottom: 1rem;
}

.destination-mobile-item__visual {
  aspect-ratio: 335 / 200;
  overflow: hidden;
}

.destination-mobile-item__illustration {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ---------------------------------------------------------- how it works -- */

.how-works {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  column-gap: 1.5rem;
  row-gap: 4rem;
}

.how-works-item__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 1.5rem;
  margin-bottom: 1.5rem;
  border-bottom: 1px solid var(--white-10);
}

.how-works-item__icon {
  width: 2rem;
  height: 2rem;
  display: block;
}

.how-works-item__count {
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: -0.5px;
  color: var(--white-40);
}

.how-works-item__body {
  display: flex;
  flex-flow: column;
  gap: 0.75rem;
}

/* --------------------------------------------------------- winemakers -- */

.practitioners {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
}

.practitioners__list {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: auto auto;
  gap: 0;
}

.practitioners__text {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: minmax(50%, 1fr) minmax(50%, 1fr);
  gap: 0;
}

.practitioners__row {
  display: flex;
  align-items: center;
  padding: 2.5rem;
}

.practitioners__items {
  display: flex;
  flex-flow: column;
  gap: 2.5rem;
  width: 100%;
}

.practitioners-item {
  display: flex;
  gap: 1rem;
}

.practitioners-item__icon {
  width: 1rem;
  height: 1rem;
  flex: none;
  margin-top: 0.25rem;
}

.practitioners-item__content {
  display: flex;
  flex-flow: column;
  gap: 0.75rem;
}

.coaches-person {
  position: relative;
  padding: 2.5rem;
  border-top: 1px solid var(--white-10);
}

.practitioners__list .coaches-person {
  border: none !important;
}

.coaches-person__visual {
  position: relative;
  aspect-ratio: 300 / 420;
  overflow: hidden;
}

.coaches-person__visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    194.25deg,
    rgba(0, 0, 0, 0) 31.27%,
    rgba(0, 0, 0, 0.5) 84.84%
  );
}

.coaches-person__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.coaches-person__head {
  position: absolute;
  inset: auto 0 0 0;
  z-index: 2;
  display: flex;
  flex-flow: column;
  gap: 0.25rem;
  padding: 1.5rem;
}

/* Bio overlay revealed on hover */
.coaches-person-info {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-flow: column;
  justify-content: space-between;
  align-items: flex-start;
  padding: 2rem;
  background-color: var(--ground-raised);
  opacity: 0;
  pointer-events: none;
  overflow-y: auto;
  transition: opacity 0.2s linear;
}

.coaches-person:hover .coaches-person-info {
  opacity: 1;
  pointer-events: all;
}

.coaches-person-info__location {
  margin-bottom: 1.25rem;
  color: var(--white-50);
  flex: none;
}

.coaches-person-info__body {
  display: flex;
  flex-flow: column;
  justify-content: space-between;
  flex: 1;
  width: 100%;
}

.coaches-person-info__head {
  display: flex;
  flex-flow: column;
  gap: 1rem;
}

.coaches-person-info__headline {
  display: flex;
  flex-flow: column;
  gap: 0.25rem;
}

.coaches-person-info__items {
  display: flex;
  flex-flow: column;
  gap: 0.625rem;
  width: 100%;
  margin-top: 1.5rem;
}

.coaches-person-info__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--white-10);
}

.coaches-person-info__item-icon {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--brand-accent);
}

.coaches-person-info__item-icon::before {
  content: "";
  width: 0.75rem;
  height: 0.75rem;
  border-radius: 50%;
  background-color: currentColor;
  opacity: 0.35;
}

/* Winemaker section rules */
.practitioners__dec {
  position: absolute;
  background-color: var(--white-10);
  pointer-events: none;
}

.practitioners__dec--1,
.practitioners__dec--2 {
  left: 0;
  width: 0;
  height: 1px;
}

.practitioners__dec--1 {
  top: 0;
}
.practitioners__dec--2 {
  bottom: 0;
}

.practitioners__dec--3 {
  top: 0;
  left: 50%;
  width: 1px;
  height: 0;
}

/* --------------------------------------------------------------- footer -- */

.footer {
  padding-top: 5rem;
}

.footer__in {
  position: relative;
}

.footer__visual {
  position: relative;
  aspect-ratio: 1360 / 320;
  overflow: hidden;
  margin-bottom: 5rem;
}

.footer__illustration {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.footer__layer {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(var(--ground-rgb), 0.2) 0%,
    rgba(var(--ground-rgb), 0.85) 100%
  );
}

.footer-top {
  padding-bottom: 5rem;
}

.footer-logo {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.footer-logo__title {
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -0.5px;
}

.footer-top__links {
  display: flex;
  flex-flow: column;
  gap: 1rem;
}

.footer-top__contacts {
  display: flex;
  flex-flow: column;
  gap: 1rem;
}

.footer-bottom {
  position: relative;
}

.footer-bottom__in {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  padding: 1.5rem 2.5rem;
}

.footer__l {
  display: flex;
  align-items: center;
  gap: 2rem;
}

.footer__copy {
  position: relative;
  padding-right: 2rem;
}

.footer__copy-dec {
  position: absolute;
  top: -1.5rem;
  right: 0;
  width: 1px;
  height: calc(100% + 3rem);
  background-color: var(--white-10);
}

.footer-made-by {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}

.footer-made-by__visual {
  color: var(--white-100);
}

.footer-bottom__links {
  display: flex;
  align-items: center;
  gap: 2rem;
}

.footer-bottom__dec {
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--white-10);
}

/* --------------------------------------------------------------- forms -- */

.page-padding {
  padding-top: 10rem;
  padding-bottom: 5rem;
}

.form {
  display: flex;
  flex-flow: column;
  gap: 1.5rem;
  max-width: 40rem;
}

.form.is-hidden {
  display: none;
}

.form__row {
  display: flex;
  flex-flow: column;
  gap: 0.5rem;
}

.form__input {
  width: 100%;
  padding: 1rem 0;
  background-color: transparent;
  border: 0;
  border-bottom: 1px solid var(--white-10);
  color: var(--white-100);
  font-size: 1.125rem;
  font-weight: 500;
  letter-spacing: -0.5px;
  outline: none;
  transition: border-color 0.2s;
}

.form__input::placeholder {
  color: var(--white-40);
}

.form__input:focus {
  border-bottom-color: var(--brand-accent);
}

textarea.form__input {
  min-height: 8rem;
  resize: vertical;
}

.form__button {
  margin-top: 1rem;
}

.form__success {
  padding: 1.5rem 0;
  color: var(--brand-accent);
}

/* ---------------------------------------------------- coaches page grid -- */

.coaches__items {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;
  margin-left: -2.5rem;
  margin-right: -2.5rem;
  border-bottom: 1px solid var(--white-10);
}

.coaches__items .coaches-person:nth-child(3n + 2) {
  border-left: 1px solid var(--white-10);
  border-right: 1px solid var(--white-10);
}

/* ==========================================================================
   MOBILE — 479px
   Every SplitText reveal degrades to a plain fade in js/app.js
   ========================================================================== */

@media screen and (max-width: 479px) {
  .mobile-hidden {
    display: none !important;
  }

  .mobile-visible {
    display: block;
  }

  .mobile-visible-inline {
    display: inline;
  }

  .header__burger {
    display: flex;
    align-items: center;
  }

  /* The bar keeps only logo + burger; the links live in the drawer */
  .header__r .header-nav,
  .header__in .header__button {
    display: none;
  }

  .header__l {
    padding-right: 1rem;
  }

  .header-logo__title,
  .footer-logo__title {
    white-space: nowrap;
  }


  .mobile-menu {
    display: none;
  }

  .mobile-menu .header-nav {
    flex-flow: column;
    align-items: flex-start;
    gap: 1.25rem;
    height: auto;
  }

  .mobile-menu .header-nav__item {
    height: auto;
  }

  .mobile-menu.is-active {
    display: flex;
  }

  .destination-mobile {
    display: flex;
  }

  .container {
    padding-left: 1.25rem;
    padding-right: 1.25rem;
  }

  .header__in {
    padding-left: 1.25rem;
    padding-right: 1.25rem;
  }

  .padding-global {
    padding-top: 2rem;
    padding-bottom: 2rem;
  }

  .row {
    margin-left: -0.5rem;
    margin-right: -0.5rem;
  }

  .row.mobile-column {
    flex-flow: column;
  }

  .row.mobile-gap-56 {
    gap: 3.5rem;
  }

  .column {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }

  .row.mobile-column > .column {
    width: 100%;
  }

  .head {
    margin-bottom: 2rem;
  }

  .head__description {
    gap: 2rem;
  }

  .mobile-margin-bottom-24 {
    margin-bottom: 1.5rem;
  }

  .mobile-margin-bottom-16 {
    margin-bottom: 1rem;
  }

  /* Typography */
  .h1 {
    font-size: 4.5rem;
    letter-spacing: -3px;
  }

  .h2 {
    font-size: 2.5rem;
    letter-spacing: -2px;
  }

  .h3 {
    font-size: 2.25rem;
    letter-spacing: -2px;
  }

  .h4 {
    font-size: 1.5rem;
    letter-spacing: -1px;
  }

  .mobile-h3 {
    font-size: 2.25rem;
    letter-spacing: -2px;
  }

  .mobile-h4 {
    font-size: 1.5rem;
    letter-spacing: -1px;
  }

  .mobile-font-size-36 {
    font-size: 2.25rem;
    letter-spacing: -2px;
  }

  .mobile-font-size-22 {
    font-size: 1.375rem;
    letter-spacing: -1px;
  }

  .body-xxl {
    font-size: 1.125rem;
    line-height: 100%;
    letter-spacing: -0.5px;
  }

  .body-md,
  .mobile-body-md {
    font-size: 0.875rem;
    letter-spacing: -0.6px;
  }

  .mobile-lg {
    font-size: 1.125rem;
    letter-spacing: -0.5px;
  }

  /* Strip the desktop <br> line breaks */
  .mobile-no-br br {
    display: none;
  }

  .mobile-fw {
    display: block;
  }

  /* Hero */
  .intro {
    aspect-ratio: 375 / 812;
    max-height: 50rem;
    height: auto;
    width: 100%;
    padding-top: 14.375rem;
    align-items: flex-start;
    justify-content: center;
    background-image: none !important;
    overflow: hidden;
  }

  .intro__text {
    display: flex;
    flex-flow: column;
  }

  .intro__button.mobile-visible {
    position: absolute;
    inset: auto 1.25rem 2.5rem 1.25rem;
    z-index: 5;
    display: flex;
  }

  .intro__button.mobile-visible .btn-primary {
    width: 100%;
    justify-content: center;
  }

  .intro-bg-dark {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: block;
    background: linear-gradient(
      180deg,
      rgba(var(--ground-rgb), 0) 40%,
      rgba(var(--ground-rgb), 0.7) 100%
    );
  }

  /* Stats */
  .statistic__items {
    grid-template-columns: 1fr;
  }

  .statistic-item {
    padding: 1.5rem 1.25rem;
  }

  .statistic__border--right {
    display: none;
  }

  /* About */
  .about {
    display: flex;
    flex-flow: column;
    gap: 2rem;
  }

  .about__visual {
    aspect-ratio: 335 / 366;
  }

  .about__head {
    margin-bottom: 2rem;
  }

  .about__items {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .about__strip {
    min-height: 0;
    aspect-ratio: 335 / 200;
    margin-top: 2rem;
  }

  .about-item {
    gap: 1.5rem;
    padding-bottom: 0;
  }

  /* Featured */
  .featured__items {
    grid-template-columns: 1fr;
    margin-left: -1.25rem;
    margin-right: -1.25rem;
  }

  .featured-item {
    grid-template-columns: 1fr;
    gap: 1.5rem;
    padding: 1.5rem 1.25rem;
    border-top: 1px solid var(--white-10);
  }

  .featured-item__head {
    margin-bottom: 1.5rem;
  }

  .featured-item__visual.mobile-visible {
    display: block;
    aspect-ratio: 335 / 240;
    margin-bottom: 1.5rem;
  }

  .featured__dec {
    display: none;
  }

  .btn-secondary.is-full-width {
    width: 100%;
  }

  /* Combine */
  .combine {
    aspect-ratio: 375 / 765;
    padding-top: 4rem;
    background-position: 50% 0;
  }

  .combine__items {
    gap: 1rem;
  }

  .combine__steps {
    grid-template-columns: 1fr 1fr;
  }

  .combine-step {
    gap: 0.625rem;
    padding: 1.25rem;
  }

  .combine-step.sizel-l {
    display: none;
  }

  .combine-step__dec--5,
  .combine-step__dec--6 {
    display: none;
  }

  /* Region */
  .destination {
    aspect-ratio: auto;
    padding-top: 2rem;
    padding-bottom: 2rem;
  }

  .destination__code {
    display: none;
  }

  /* How it works */
  .how-works {
    grid-template-columns: 1fr;
    row-gap: 2rem;
  }

  /* Winemakers */
  .practitioners {
    grid-template-columns: 1fr;
  }

  .practitioners__list.mobile-hidden {
    display: none !important;
  }

  .practitioners__row {
    padding: 1.5rem 1.25rem;
  }

  .practitioners__dec {
    display: none;
  }

  .coaches__items {
    grid-template-columns: 1fr;
    margin-left: -1.25rem;
    margin-right: -1.25rem;
  }

  .coaches__items .coaches-person:nth-child(3n + 2) {
    border-left: none;
    border-right: none;
  }

  .coaches-person {
    padding: 1.5rem 1.25rem;
  }

  /* Footer */
  .footer {
    padding-top: 2rem;
  }

  .footer__visual {
    aspect-ratio: 335 / 240;
    margin-bottom: 2.5rem;
  }

  .footer-top {
    padding-bottom: 2.5rem;
  }

  .footer-bottom__in {
    flex-flow: column;
    align-items: flex-start;
    gap: 1.5rem;
    padding: 1.5rem 1.25rem;
  }

  .footer__l {
    flex-flow: column;
    align-items: flex-start;
    gap: 1rem;
  }

  .footer__copy-dec {
    display: none;
  }

  .footer-bottom__links {
    flex-flow: column;
    align-items: flex-start;
    gap: 1rem;
  }


  .page-padding {
    padding-top: 7rem;
    padding-bottom: 2rem;
  }
}

/* ==========================================================================
   COLLECTION  (collection.html)
   ========================================================================== */

.chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.chip {
  padding: 0.625rem 1.125rem;
  border-radius: 5rem;
  border: 1px solid var(--white-10);
  color: var(--white-60);
  cursor: pointer;
  transition: color 0.2s, border-color 0.2s, background-color 0.2s;
}

.chip:hover {
  color: var(--white-100);
  border-color: var(--white-40);
}

.chip.is-active {
  color: var(--ground);
  background-color: var(--white-100);
  border-color: var(--white-100);
}

/* Hairlines live on the items themselves (not nth-child) so the grid still
   reads correctly after the varietal filter hides cards. */
.collection__items {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  margin-left: -2.5rem;
  margin-right: -2.5rem;
  border-top: 1px solid var(--white-10);
  border-left: 1px solid var(--white-10);
}

.collection-item {
  display: flex;
  flex-flow: column;
  gap: 1.5rem;
  padding: 2.5rem;
  border-right: 1px solid var(--white-10);
  border-bottom: 1px solid var(--white-10);
}

.collection-item__visual {
  aspect-ratio: 320 / 380;
  overflow: hidden;
}

.collection-item__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

.collection-item:hover .collection-item__photo {
  transform: scale(1.05);
}

.collection-item__head {
  display: flex;
  flex-flow: column;
  gap: 0.5rem;
}

.collection-item__vintage {
  color: var(--brand-accent);
}

.collection-item__note {
  color: var(--white-60);
}

.collection-item__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-top: auto;
  padding-top: 1.25rem;
  border-top: 1px solid var(--white-10);
}

.collection-empty {
  padding: 4rem 2.5rem;
  color: var(--white-50);
  display: none;
}

.collection-empty.is-visible {
  display: block;
}

/* ==========================================================================
   TASTING DETAIL  (tasting.html)
   ========================================================================== */

.detail-hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  aspect-ratio: 1440 / 660;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  background-size: cover;
  background-color: var(--ground);
  overflow: hidden;
}

.detail-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(var(--ground-rgb), 0.72) 0%,
    rgba(var(--ground-rgb), 0.25) 40%,
    rgba(var(--ground-rgb), 0.92) 100%
  );
}

.detail-hero .container {
  position: relative;
  z-index: 2;
  padding-bottom: 4rem;
}

.detail-hero__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 3.5rem;
  margin-top: 2.5rem;
}

.detail-hero__meta-item {
  display: flex;
  flex-flow: column;
  gap: 0.5rem;
}

.detail {
  display: grid;
  grid-template-columns: 1fr 23rem;
  gap: 5rem;
  align-items: start;
}

.detail__body {
  display: flex;
  flex-flow: column;
  gap: 2rem;
}

/* Booking panel */
.booking-card {
  position: sticky;
  top: 6.5rem;
  display: flex;
  flex-flow: column;
  gap: 1.5rem;
  padding: 2rem;
  background-color: var(--ground-raised);
  border: 1px solid var(--white-10);
}

.booking-card__price {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}

.booking-card__rows {
  display: flex;
  flex-flow: column;
  gap: 0.75rem;
}

.booking-card__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--white-10);
}

.booking-card .btn-primary {
  justify-content: center;
}

/* Itinerary */
.itinerary {
  display: flex;
  flex-flow: column;
}

.itinerary-item {
  display: grid;
  grid-template-columns: 9rem 1fr;
  gap: 2.5rem;
  padding: 2rem 0;
  border-top: 1px solid var(--white-10);
}

.itinerary-item:last-child {
  border-bottom: 1px solid var(--white-10);
}

.itinerary-item__body {
  display: flex;
  flex-flow: column;
  gap: 0.5rem;
}

/* Host strip */
.host {
  display: grid;
  grid-template-columns: 20rem 1fr;
  gap: 3rem;
  align-items: center;
}

.host__visual {
  aspect-ratio: 320 / 380;
  overflow: hidden;
}

.host__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.host__body {
  display: flex;
  flex-flow: column;
  gap: 1.25rem;
}

/* ---------------------------------------------------------------- mobile -- */

@media screen and (max-width: 479px) {
  .collection__items {
    grid-template-columns: 1fr;
    margin-left: -1.25rem;
    margin-right: -1.25rem;
    border-left: none;
  }

  .collection-item {
    padding: 1.5rem 1.25rem;
    border-right: none;
  }

  .chips {
    gap: 0.375rem;
  }

  .chip {
    padding: 0.5rem 0.875rem;
  }

  .detail-hero {
    aspect-ratio: auto;
    min-height: 34rem;
    padding-top: 8rem;
  }

  .detail-hero .container {
    padding-bottom: 2.5rem;
  }

  .detail-hero__meta {
    gap: 1.5rem 2.5rem;
    margin-top: 1.5rem;
  }

  .detail {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }

  .booking-card {
    position: static;
    padding: 1.5rem;
  }

  .itinerary-item {
    grid-template-columns: 1fr;
    gap: 0.75rem;
    padding: 1.5rem 0;
  }

  .host {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }

  .host__visual {
    aspect-ratio: 335 / 300;
  }
}

/* Fills the dead column beside the contact form on visit.html */
.visit__aside {
  aspect-ratio: 636 / 420;
  overflow: hidden;
}

.visit__aside-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

@media screen and (max-width: 479px) {
  .visit__aside {
    aspect-ratio: 335 / 220;
    margin-top: 2rem !important;
  }
}
