/* ═══════════════════════════════════════════════════════════
   VIA VINHO — Main Stylesheet
   Brand: v4 · Three colours. Nothing more.
   Typography: Lora (serif display) + Poppins (sans UI)
   Built: May 2026
═══════════════════════════════════════════════════════════ */

    /* ─────────────────────────────────────────
       BRAND TOKENS — Via Vinho v4
       Three colours. Nothing more.
    ───────────────────────────────────────── */
    :root {
      --burgundy:      #6B1F2A;
      --burgundy-deep: #561929;
      --alabaster:     #F4F9F0;
      --charcoal:      #1A1A1A;

      --ab-80: rgba(244,249,240,0.80);
      --ab-55: rgba(244,249,240,0.55);
      --ab-30: rgba(244,249,240,0.30);
      --ab-12: rgba(244,249,240,0.12);
      --ab-07: rgba(244,249,240,0.07);

      --ch-70: rgba(26,26,26,0.70);
      --ch-40: rgba(26,26,26,0.40);
      --ch-20: rgba(26,26,26,0.20);
      --ch-10: rgba(26,26,26,0.10);

      --font-serif: 'Lora', Georgia, serif;
      --font-sans:  'Poppins', system-ui, sans-serif;

      /* Spacing — from brand spec */
      --gutter: clamp(28px, 6vw, 80px);
      --max-w:  1280px;
    }

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    html { font-size: 16px; scroll-behavior: smooth; }
    body {
      font-family: var(--font-sans);
      background: var(--alabaster);
      color: var(--charcoal);
      -webkit-font-smoothing: antialiased;
      overflow-x: hidden;
    }
    a { color: inherit; text-decoration: none; }
    img { display: block; max-width: 100%; }

    .container {
      width: 100%;
      max-width: var(--max-w);
      margin: 0 auto;
      padding: 0 var(--gutter);
    }

    /* ══════════════════════════════════════════
       NAV
       Fixed. Transparent → Alabaster on scroll.
       Logo left. Links right. Poppins Light 13px tracked all-caps.
    ══════════════════════════════════════════ */
    .nav {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 100;
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 32px var(--gutter);
      transition: background 350ms ease, padding 350ms ease, box-shadow 350ms ease;
    }
    .nav.scrolled {
      background: rgba(244,249,240,0.96);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      padding: 20px var(--gutter);
      box-shadow: 0 1px 0 var(--ch-10);
    }

    .nav-logo {
      display: flex;
      align-items: center;
      position: relative;
    }

    /* Two-logo crossfade: white on dark hero → burgundy on alabaster nav.
       Hero state: full luxury-presence size. Scrolled state: compact mark. */
    .nav-logo-img {
      height: 130px;
      width: auto;
      transition: opacity 350ms ease, height 350ms ease;
      display: block;
    }

    /* White logo — default (dark hero) */
    .nav-logo-white {
      opacity: 1;
      position: relative;
      z-index: 1;
    }

    /* Burgundy logo — absolutely positioned, fades in on scroll */
    .nav-logo-colored {
      position: absolute;
      left: 0;
      top: 50%;
      transform: translateY(-50%);
      opacity: 0;
      z-index: 2;
    }

    /* On scroll both logos shrink in sync; white fades out, burgundy fades in. */
    .nav.scrolled .nav-logo-img       { height: 56px; }
    .nav.scrolled .nav-logo-white     { opacity: 0; }
    .nav.scrolled .nav-logo-colored   { opacity: 1; }

    @media (max-width: 640px) {
      .nav-logo-img { height: 90px; }
      .nav.scrolled .nav-logo-img { height: 44px; }
    }

    .nav-links {
      display: flex;
      align-items: center;
      gap: clamp(20px, 3vw, 40px);
      list-style: none;
    }
    .nav-links a {
      font-family: var(--font-sans);
      font-size: 0.69rem;
      font-weight: 300;
      letter-spacing: 0.13em;
      text-transform: uppercase;
      color: var(--ab-80);
      transition: color 150ms ease;
    }
    .nav.scrolled .nav-links a { color: var(--ch-70); }
    .nav-links a:hover { color: var(--alabaster); }
    .nav.scrolled .nav-links a:hover { color: var(--charcoal); }

    /* Enquire CTA link */
    .nav-enquire a {
      color: var(--alabaster) !important;
      border-bottom: 1px solid var(--ab-30);
      padding-bottom: 2px;
      transition: border-color 150ms ease !important;
    }
    .nav-enquire a:hover { border-color: var(--alabaster) !important; }
    .nav.scrolled .nav-enquire a {
      color: var(--burgundy) !important;
      border-color: var(--burgundy) !important;
      opacity: 0.7;
    }
    .nav.scrolled .nav-enquire a:hover { opacity: 1; }


    /* ══════════════════════════════════════════
       RESERVE HERO
       Video background. Charcoal-left gradient.
       Alabaster text. Reserve register.
    ══════════════════════════════════════════ */
    .hero {
      position: relative;
      width: 100%;
      height: 100svh;
      min-height: 640px;
      overflow: hidden;
      background: var(--charcoal);
    }

    /* Video placeholder — replace src with actual video in build */
    .hero-video {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      opacity: 0.65;
    }

    /* Left-heavy charcoal gradient — per brand spec */
    .hero::before {
      content: '';
      position: absolute;
      inset: 0;
      background: linear-gradient(
        to right,
        rgba(26,26,26,0.80) 0%,
        rgba(26,26,26,0.50) 50%,
        rgba(26,26,26,0.15) 100%
      );
      z-index: 1;
      pointer-events: none;
    }

    /* Bottom charcoal fade — flows into brand-position (Charcoal) below */
    .hero::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 200px;
      background: linear-gradient(to top, var(--charcoal) 0%, transparent 100%);
      z-index: 2;
      pointer-events: none;
    }

    .hero-content {
      position: absolute;
      bottom: 18%;
      left: var(--gutter);
      right: var(--gutter);
      z-index: 3;
      max-width: 720px;
    }

    /* Reserve mark — white version (via CSS filter) for dark bg */
    .hero-mark {
      height: 22px;
      width: auto;
      filter: brightness(0) invert(1);
      opacity: 0.85;
      margin-bottom: 32px;
      opacity: 0;
      animation: fadeUp 0.7s 0.1s ease both;
    }

    .hero-label {
      font-family: var(--font-sans);
      font-size: 0.68rem;
      font-weight: 300;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: var(--ab-55);
      margin-bottom: 20px;
      opacity: 0;
      animation: fadeUp 0.7s 0.2s ease both;
    }

    .hero-headline {
      font-family: var(--font-serif);
      font-size: clamp(2.6rem, 6vw, 4.5rem);
      font-weight: 400;
      font-style: normal;
      line-height: 1.10;
      letter-spacing: -0.02em;
      color: var(--alabaster);
      margin-bottom: 32px;
      opacity: 0;
      animation: fadeUp 0.9s 0.32s ease both;
    }

    .hero-cta {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      font-family: var(--font-sans);
      font-size: 0.72rem;
      font-weight: 300;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--alabaster);
      border-bottom: 1px solid var(--ab-30);
      padding-bottom: 3px;
      transition: border-color 200ms ease, color 200ms ease;
      opacity: 0;
      animation: fadeUp 0.8s 0.5s ease both;
    }
    .hero-cta:hover { border-color: var(--alabaster); }

    .scroll-indicator {
      position: absolute;
      bottom: 48px;
      right: var(--gutter);
      z-index: 3;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 10px;
      opacity: 0;
      animation: fadeUp 0.8s 0.7s ease both;
    }
    .scroll-line {
      width: 1px;
      height: 40px;
      background: linear-gradient(to bottom, var(--ab-30), transparent);
    }
    .scroll-text {
      font-family: var(--font-sans);
      font-size: 0.58rem;
      font-weight: 300;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--ab-30);
    }


    /* ══════════════════════════════════════════
       BRAND POSITIONING — What is Via Vinho?
       Charcoal ground. Flows seamlessly from hero fade
       directly into inclusions below (also Charcoal).
    ══════════════════════════════════════════ */
    .brand-position {
      background: var(--charcoal);
      padding: clamp(56px, 8vw, 96px) var(--gutter) clamp(40px, 5vw, 64px);
    }

    .brand-position-inner {
      max-width: 720px;
      margin: 0 auto;
      text-align: center;
    }

    .brand-position-eyebrow {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 18px;
      font-family: var(--font-sans);
      font-size: 0.65rem;
      font-weight: 300;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: rgba(244,249,240,0.45);
      margin-bottom: 44px;
    }
    .brand-position-eyebrow::before,
    .brand-position-eyebrow::after {
      content: '';
      width: 32px;
      height: 1px;
      background: var(--burgundy);
      opacity: 0.5;
    }

    .brand-position-prose p {
      font-family: var(--font-serif);
      font-size: clamp(1.1rem, 2vw, 1.4rem);
      font-weight: 300;
      line-height: 1.65;
      letter-spacing: -0.01em;
      color: rgba(244,249,240,0.80);
      margin-bottom: 22px;
    }
    .brand-position-prose p:last-child { margin-bottom: 0; }

    /* Lead line — positioning statement. Alabaster italic on charcoal.
       NOTE: Do NOT use Burgundy here — Burgundy on Charcoal is ~1.5:1 contrast, unreadable. */
    .brand-position-lead {
      font-style: italic !important;
      color: var(--alabaster) !important;
      font-size: clamp(1.4rem, 2.6vw, 1.85rem) !important;
      line-height: 1.3 !important;
      margin-bottom: 32px !important;
    }


    /* ══════════════════════════════════════════
       CLASSIC INTRODUCTION
       Alabaster. Warmer. Big Lora Italic in Burgundy.
       Illustration as decorative overlay.
    ══════════════════════════════════════════ */
    .classic-intro {
      background: var(--alabaster);
      padding: clamp(60px, 10vw, 120px) var(--gutter) clamp(32px, 4vw, 48px);
      position: relative;
      overflow: hidden;
    }

    /* Gestural illustration — Classic decorative element */
    .classic-illustration {
      position: absolute;
      right: clamp(-40px, -2vw, 0px);
      top: 50%;
      transform: translateY(-48%);
      width: clamp(280px, 36vw, 500px);
      color: var(--burgundy);
      opacity: 0.22;
      pointer-events: none;
      z-index: 0;
    }

    .classic-intro-inner {
      position: relative;
      z-index: 1;
      max-width: 740px;
    }

    .classic-eyebrow {
      display: flex;
      align-items: center;
      gap: 16px;
      font-family: var(--font-sans);
      font-size: 0.65rem;
      font-weight: 300;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: var(--ch-40);
      margin-bottom: 28px;
    }
    .classic-eyebrow::before {
      content: '';
      display: inline-block;
      width: 48px;
      height: 1px;
      background: var(--burgundy);
      flex-shrink: 0;
    }

    /* Classic mark logo — with illustration, given full presence here */
    .classic-mark {
      height: clamp(44px, 6vw, 64px);
      width: auto;
      margin-bottom: 44px;
      display: block;
      opacity: 0.92;
    }

    /* The big headline — display scale Lora Italic, Burgundy */
    .classic-headline {
      font-family: var(--font-serif);
      font-size: clamp(2.6rem, 7vw, 5.5rem);
      font-weight: 300;
      font-style: italic;
      line-height: 1.03;
      letter-spacing: -0.025em;
      color: var(--burgundy);
      margin-bottom: 28px;
    }

    .classic-sub {
      font-family: var(--font-sans);
      font-size: clamp(0.85rem, 1.5vw, 0.95rem);
      font-weight: 300;
      line-height: 1.8;
      color: var(--ch-70);
      max-width: 440px;
    }


    /* ══════════════════════════════════════════
       INCLUSIONS — Every Experience Includes
       Charcoal ground. Flows directly from brand-position (no top padding,
       no border-top — same background, no divider needed).
       Applies to BOTH Classic and Reserve.
    ══════════════════════════════════════════ */
    .inclusions {
      background: var(--charcoal);
      padding: 0 var(--gutter) clamp(64px, 10vw, 120px);
    }

    .inclusions-eyebrow {
      font-family: var(--font-sans);
      font-size: 0.63rem;
      font-weight: 300;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: rgba(244,249,240,0.35);
      margin-bottom: 40px;
      text-align: center;
    }

    .inclusions-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 24px 40px;
      max-width: 860px;
      margin: 0 auto;
    }

    .inclusion-item {
      display: flex;
      align-items: flex-start;
      gap: 14px;
    }

    .inclusion-dash {
      flex-shrink: 0;
      width: 20px;
      height: 1px;
      background: var(--burgundy);
      opacity: 0.7;
      margin-top: 10px;
    }

    .inclusion-text {
      font-family: var(--font-sans);
      font-size: 0.82rem;
      font-weight: 300;
      line-height: 1.6;
      color: rgba(244,249,240,0.65);
    }

    @media (max-width: 640px) {
      .inclusions-grid { grid-template-columns: 1fr 1fr; }
    }
    @media (max-width: 420px) {
      .inclusions-grid { grid-template-columns: 1fr; }
    }


    /* ══════════════════════════════════════════
       CLASSIC EXPERIENCE CARDS
       Centered grid. Cards wrap on narrow widths.
       Curated set — feels intentional, not truncated.
    ══════════════════════════════════════════ */
    .experiences {
      background: var(--alabaster);
      padding: 0 0 clamp(80px, 12vw, 140px);
      position: relative;
    }

    .experience-grid {
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      justify-content: center;
      gap: 20px;
      padding: 0 var(--gutter) 16px;
    }

    .exp-card {
      flex: 0 0 clamp(300px, 36vw, 400px);
      scroll-snap-align: start;
      background: #fff;
      overflow: hidden;
      display: flex;
      flex-direction: column;
    }

    .card-img-wrap {
      width: 100%;
      height: 240px;
      overflow: hidden;
      background: var(--ch-10);
      position: relative;
    }
    /* Image placeholder — replace with actual img in build */
    .card-img-placeholder {
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .card-img-placeholder span {
      font-family: var(--font-sans);
      font-size: 0.62rem;
      font-weight: 300;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      color: var(--ch-20);
    }

    /* Warm photo treatments per tier — applied via CSS on actual images */
    .card-img-warm {
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center center;
      filter: brightness(1.03) saturate(1.08);
    }

    .card-body {
      padding: 28px 32px 32px;
      display: flex;
      flex-direction: column;
      flex: 1;
    }

    .card-region {
      font-family: var(--font-sans);
      font-size: 0.62rem;
      font-weight: 300;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--burgundy);
      opacity: 0.7;
      margin-bottom: 10px;
    }

    .card-name {
      font-family: var(--font-serif);
      font-size: clamp(1.25rem, 2vw, 1.6rem);
      font-weight: 400;
      font-style: italic;
      color: var(--charcoal);
      margin-bottom: 12px;
      line-height: 1.2;
    }

    .card-tagline {
      font-family: var(--font-serif);
      font-size: 0.9rem;
      font-weight: 300;
      font-style: italic;
      color: var(--ch-70);
      margin-bottom: 14px;
      line-height: 1.5;
    }

    .card-desc {
      font-family: var(--font-sans);
      font-size: 0.8rem;
      font-weight: 300;
      line-height: 1.75;
      color: var(--ch-70);
      margin-bottom: 24px;
    }

    .card-meta {
      font-family: var(--font-sans);
      font-size: 0.68rem;
      font-weight: 300;
      letter-spacing: 0.05em;
      color: var(--ch-40);
      margin-bottom: 20px;
    }

    .card-footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      border-top: 1px solid var(--ch-10);
      padding-top: 20px;
      margin-top: auto;
    }

    .card-price {
      font-family: var(--font-serif);
      font-size: 1.2rem;
      font-weight: 400;
      color: var(--burgundy);
      line-height: 1;
    }
    .card-price small {
      font-family: var(--font-sans);
      font-size: 0.68rem;
      font-weight: 300;
      color: var(--ch-40);
      margin-left: 6px;
      font-style: normal;
    }

    /* Classic Primary CTA — Burgundy fill, Alabaster text, Poppins SemiBold, square, 150ms */
    .btn-classic {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-family: var(--font-sans);
      font-size: 0.68rem;
      font-weight: 600;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      background: var(--burgundy);
      color: var(--alabaster);
      padding: 12px 20px;
      transition: background 150ms ease, transform 150ms ease;
      white-space: nowrap;
    }
    .btn-classic:hover { background: var(--burgundy-deep); transform: translateY(-1px); }
    .btn-classic:active { transform: translateY(0); }


    /* ══════════════════════════════════════════
       TIER SEAM — Alabaster Classic → Burgundy Reserve
       Hairline gradient strip. Holds the "Via Vinho Reserve" label
       mid-transition. Marks the lift from Classic to Reserve.
    ══════════════════════════════════════════ */
    .tier-seam {
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 56px var(--gutter);
      gap: 20px;
      background: linear-gradient(to bottom, var(--alabaster) 0%, var(--burgundy-deep) 100%);
    }

    .tier-seam-label {
      font-family: var(--font-sans);
      font-size: 0.6rem;
      font-weight: 300;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: rgba(26,26,26,0.25);
      white-space: nowrap;
    }


    /* ══════════════════════════════════════════
       GALLERY STRIP — Tour imagery
       Separates Classic and Reserve. Full-bleed.
       Pure CSS crossfade — 4 images, 16s cycle.
       To update: swap .gs-N background for an <img> src.
    ══════════════════════════════════════════ */
    .gallery-strip {
      position: relative;
      width: 100%;
      height: clamp(380px, 44vw, 520px);
      overflow: hidden;
      background: var(--charcoal);
    }

    .gallery-strip-item {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      opacity: 0;
      animation: gsSlide 24s ease-in-out infinite;
    }

    /* Slot delays — 4 slots × 6s each = 24s cycle */
    .gs-1 { animation-delay: 0s;  }
    .gs-2 { animation-delay: 6s;  }
    .gs-3 { animation-delay: 12s; }
    .gs-4 { animation-delay: 18s; }

    @keyframes gsSlide {
      0%       { opacity: 0; }       /* fade-in start */
      4.17%    { opacity: 1; }       /* 1s — fade-in complete */
      25%      { opacity: 1; }       /* 6s — full slot duration reached */
      29.17%   { opacity: 0; }       /* 7s — fade-out complete (1s fade) */
      100%     { opacity: 0; }       /* hold until next loop */
    }

    /* Cinematic vignette */
    .gallery-strip::before {
      content: '';
      position: absolute;
      inset: 0;
      background: rgba(26,26,26,0.28);
      z-index: 10;
      pointer-events: none;
    }

    /* Bottom dissolve into Reserve Burgundy */
    .gallery-strip::after {
      content: '';
      position: absolute;
      bottom: 0; left: 0; right: 0;
      height: 140px;
      background: linear-gradient(to bottom, transparent 0%, var(--burgundy) 100%);
      z-index: 11;
      pointer-events: none;
    }


    /* ══════════════════════════════════════════
       RESERVE INTRODUCTION
       Mirrors classic-intro structure. Burgundy palette.
       Alabaster text on burgundy ground.
    ══════════════════════════════════════════ */
    .reserve-intro {
      background: var(--burgundy);
      padding: clamp(80px, 12vw, 140px) var(--gutter) clamp(32px, 4vw, 48px);
      position: relative;
      overflow: hidden;
    }

    .reserve-intro-inner {
      position: relative;
      z-index: 1;
      max-width: 740px;
    }

    .reserve-section-label {
      display: flex;
      align-items: center;
      gap: 16px;
      font-family: var(--font-sans);
      font-size: 0.65rem;
      font-weight: 300;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: var(--ab-55);
      margin-bottom: 32px;
    }
    .reserve-section-label::before {
      content: '';
      display: inline-block;
      width: 48px;
      height: 1px;
      background: var(--ab-30);
      flex-shrink: 0;
    }

    .reserve-headline {
      font-family: var(--font-serif);
      font-size: clamp(2.2rem, 5.5vw, 4.4rem);
      font-weight: 300;
      font-style: italic;
      line-height: 1.08;
      letter-spacing: -0.02em;
      color: var(--alabaster);
      margin-bottom: 36px;
    }

    .reserve-sub {
      max-width: 480px;
    }
    .reserve-sub p {
      font-family: var(--font-sans);
      font-size: clamp(0.88rem, 1.5vw, 0.98rem);
      font-weight: 300;
      line-height: 1.8;
      color: var(--ab-80);
      margin-bottom: 18px;
    }
    .reserve-sub p:last-child { margin-bottom: 0; }

    .reserve-sub-emphasis {
      font-family: var(--font-serif) !important;
      font-style: italic;
      color: var(--alabaster) !important;
      font-size: clamp(1rem, 1.8vw, 1.18rem) !important;
      margin-top: 14px !important;
    }


    /* ══════════════════════════════════════════
       RESERVE EXPERIENCE CARDS
       Same .exp-card structure. Burgundy section ground.
       Alabaster card bodies with burgundy accents.
    ══════════════════════════════════════════ */
    .reserve-experiences {
      background: var(--burgundy);
      padding: 0 0 clamp(80px, 12vw, 140px);
      position: relative;
    }

    .exp-card--reserve { background: var(--alabaster); }

    /* Reserve placeholder image — darker burgundy gradient */
    .exp-card--reserve .card-img-placeholder {
      background: linear-gradient(135deg, #4a1820 0%, #6B1F2A 50%, #561929 100%);
    }
    .card-img-placeholder--reserve span {
      color: rgba(244,249,240,0.5) !important;
    }

    /* Reserve card button — outlined burgundy on alabaster card */
    .btn-reserve-card {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-family: var(--font-sans);
      font-size: 0.68rem;
      font-weight: 600;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      background: transparent;
      color: var(--burgundy);
      border: 1px solid var(--burgundy);
      padding: 11px 20px;
      transition: background 150ms ease, color 150ms ease, transform 150ms ease;
      white-space: nowrap;
    }
    .btn-reserve-card:hover {
      background: var(--burgundy);
      color: var(--alabaster);
      transform: translateY(-1px);
    }
    .btn-reserve-card:active { transform: translateY(0); }


    /* ══════════════════════════════════════════
       FOUNDER STRIP
       Charcoal. Nicola. Personal.
    ══════════════════════════════════════════ */
    .founder {
      background: var(--charcoal);
      padding: clamp(60px, 10vw, 120px) var(--gutter);
    }

    .founder-inner {
      display: grid;
      grid-template-columns: 220px 1fr;
      gap: clamp(40px, 6vw, 80px);
      align-items: center;
      max-width: 860px;
      margin: 0 auto;
    }

    .founder-photo {
      aspect-ratio: 4/5;
      background: rgba(244,249,240,0.07);
      overflow: hidden;
      position: relative;
    }
    .founder-photo-img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
    }

    .founder-eyebrow {
      font-family: var(--font-sans);
      font-size: 0.63rem;
      font-weight: 300;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--ab-55);
      margin-bottom: 12px;
    }

    .founder-name {
      font-family: var(--font-serif);
      font-size: clamp(2.4rem, 4vw, 3.6rem);
      font-weight: 400;
      font-style: italic;
      color: var(--alabaster);
      margin-bottom: 8px;
      line-height: 1.05;
    }

    .founder-role {
      font-family: var(--font-sans);
      font-size: 0.68rem;
      font-weight: 300;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: var(--ab-55);
      margin-bottom: 28px;
    }

    .founder-rule {
      width: 48px;
      height: 1px;
      background: var(--burgundy);
      opacity: 0.6;
      margin-bottom: 28px;
    }

    .founder-copy {
      font-family: var(--font-sans);
      font-size: 0.88rem;
      font-weight: 300;
      line-height: 1.9;
      color: var(--ab-80);
    }


    /* ══════════════════════════════════════════
       TESTIMONIALS
       Full-bleed vineyard photo. Alabaster card.
       From the screenshot the user shared — this treatment.
    ══════════════════════════════════════════ */
    .testimonials {
      position: relative;
      overflow: hidden;
      min-height: 480px;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: clamp(60px, 10vw, 100px) var(--gutter);
    }

    /* Full-bleed vineyard photo */
    .testimonials-bg-img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      z-index: 0;
    }

    /* Dark overlay — 55% for readable white text over photo */
    .testimonials-overlay {
      position: absolute;
      inset: 0;
      background: rgba(0, 0, 0, 0.55);
      z-index: 1;
    }

    .testimonial-card {
      position: relative;
      z-index: 2;
      background: transparent;
      padding: clamp(36px, 5vw, 64px) clamp(36px, 5vw, 72px);
      max-width: 720px;
      width: 100%;
      text-align: center;
    }

    .testimonial-quote {
      font-family: var(--font-serif);
      font-size: clamp(1.05rem, 2.2vw, 1.45rem);
      font-weight: 400;
      font-style: italic;
      line-height: 1.55;
      color: var(--alabaster);
      margin-bottom: 28px;
      text-shadow: 0 1px 2px rgba(0,0,0,0.3);
    }

    .testimonial-rule {
      width: 32px;
      height: 1px;
      background: var(--alabaster);
      margin: 0 auto 20px;
      opacity: 0.5;
    }

    .testimonial-name {
      font-family: var(--font-sans);
      font-size: 0.75rem;
      font-weight: 400;
      letter-spacing: 0.08em;
      color: rgba(244,249,240,0.85);
    }


    /* ══════════════════════════════════════════
       CTA — CHARCOAL BACKGROUND
       "Tell me what you have in mind."
       Ghost buttons. Enquiry-focused.
    ══════════════════════════════════════════ */
    .cta-section {
      background: var(--charcoal);
      padding: clamp(88px, 14vw, 160px) var(--gutter);
      text-align: center;
      position: relative;
      overflow: hidden;
    }

    /* Reserve illustration echo — sparse, white, very low opacity */
    .cta-illustration {
      position: absolute;
      right: clamp(-80px, -4vw, -20px);
      bottom: -60px;
      width: clamp(200px, 28vw, 380px);
      opacity: 0.04;
      color: var(--alabaster);
      pointer-events: none;
    }

    .cta-rule {
      width: 48px;
      height: 1px;
      background: var(--ab-30);
      margin: 0 auto 36px;
    }

    .cta-headline {
      font-family: var(--font-serif);
      font-size: clamp(1.8rem, 4.5vw, 3.4rem);
      font-weight: 300;
      font-style: italic;
      color: var(--alabaster);
      line-height: 1.15;
      margin-bottom: 20px;
      letter-spacing: -0.015em;
    }

    .cta-body {
      font-family: var(--font-sans);
      font-size: 0.88rem;
      font-weight: 300;
      line-height: 1.8;
      color: var(--ab-55);
      max-width: 480px;
      margin: 0 auto 48px;
    }

    .cta-buttons {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 16px;
      flex-wrap: wrap;
    }

    /* Ghost buttons on charcoal */
    .btn-ghost-dark {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      font-family: var(--font-sans);
      font-size: 0.72rem;
      font-weight: 400;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--alabaster);
      border: 1px solid var(--ab-30);
      padding: 14px 32px;
      transition: border-color 200ms ease, background 200ms ease;
    }
    .btn-ghost-dark:hover {
      border-color: var(--ab-80);
      background: rgba(244,249,240,0.06);
    }

    /* Small Reserve mark below buttons */
    .cta-mark {
      margin-top: 60px;
      display: flex;
      justify-content: center;
    }
    .cta-mark img {
      height: 18px;
      width: auto;
      filter: brightness(0) invert(1);
      opacity: 0.25;
    }


    /* ══════════════════════════════════════════
       FOOTER
    ══════════════════════════════════════════ */
    .footer {
      background: var(--charcoal);
      border-top: 1px solid rgba(244,249,240,0.08);
      padding: 28px var(--gutter);
    }

    .footer-inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 20px;
      flex-wrap: wrap;
    }

    .footer p {
      font-family: var(--font-sans);
      font-size: 0.65rem;
      font-weight: 300;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: rgba(244,249,240,0.3);
    }

    .footer a {
      color: rgba(244,249,240,0.45);
      transition: color 150ms ease;
    }
    .footer a:hover { color: var(--alabaster); }


    /* ══════════════════════════════════════════
       SCROLL REVEALS
    ══════════════════════════════════════════ */
    .reveal {
      opacity: 0;
      transform: translateY(20px);
      transition: opacity 0.6s ease, transform 0.6s ease;
    }
    .reveal.visible {
      opacity: 1;
      transform: translateY(0);
    }
    .reveal-d1 { transition-delay: 0.1s; }
    .reveal-d2 { transition-delay: 0.2s; }
    .reveal-d3 { transition-delay: 0.3s; }


    /* ══════════════════════════════════════════
       ANIMATIONS
    ══════════════════════════════════════════ */
    @keyframes fadeUp {
      from { opacity: 0; transform: translateY(20px); }
      to   { opacity: 1; transform: translateY(0); }
    }


    /* ══════════════════════════════════════════
       RESPONSIVE
    ══════════════════════════════════════════ */
    @media (max-width: 760px) {
      .nav-links { display: none; }
      .exp-card { flex: 0 0 clamp(260px, 78vw, 320px); }
      .founder-inner { grid-template-columns: 1fr; }
      .founder-photo { aspect-ratio: 3/2; }
      .cta-buttons { flex-direction: column; align-items: center; }
      .footer-inner { flex-direction: column; align-items: flex-start; }
    }
