/* ════════════════════════════════════════════════════════════
   FLORAL FANTASY OF BAY RIDGE — Shared Stylesheet
   Chanel-editorial redesign + category page support
   ════════════════════════════════════════════════════════════ */

/* ─── DESIGN TOKENS ──────────────────────────────────────────── */
:root {
  /* Homepage palette */
  --white:       #FFFFFF;
  --black:       #1A1A1A;
  --gold:        #C49A0C;
  --border:      rgba(0,0,0,0.12);

  /* Category page palette (preserved) */
  --ivory:       #F9F7F5;
  --bone:        #EDEAE7;
  --charcoal:    #222228;
  --champagne:   #C49A0C;
  --cream:       #FAF8F7;
  --near-black:  #2A2A2E;

  /* Easing */
  --ease-luxury: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-exit:   cubic-bezier(0.0, 0.0, 0.2, 1);
  --dur-micro:      150ms;
  --dur-std:        300ms;
  --dur-enter:      600ms;
  --dur-slow:       900ms;
  --dur-ken-burns:  8s;

  /* Header height token — used by sub-nav/scroll margins */
  --nav-h: 72px;
}

/* ─── BASE RESET ─────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: 160px;
  overflow-y: scroll;
}

body {
  background-color: var(--white);
  color: var(--black);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}
body.is-loading { overflow: hidden; }

/* ─── ACCESSIBILITY UTILITIES ────────────────────────────────── */
.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;
}

/* ─── SKIP LINK ──────────────────────────────────────────────── */
.skip-link {
  position: absolute;
  top: 1rem;
  left: 1rem;
  background: var(--black);
  color: var(--white);
  padding: 0.5rem 1rem;
  font-family: 'Libre Franklin', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  z-index: 9999;
  transform: translateY(calc(-100% - 2rem));
  transition: transform var(--dur-micro) var(--ease-luxury);
  text-decoration: none;
}
.skip-link:focus { transform: translateY(0); }

/* ─── TYPOGRAPHY ─────────────────────────────────────────────── */
.t-display {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.02em;
}
.t-section {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.01em;
}
.t-quote {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-weight: 400;
  line-height: 1.2;
}
.t-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--champagne);
}
.t-body {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 200;
  font-size: 1.0625rem;
  line-height: 1.8;
}
.t-link {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.75rem;
  letter-spacing: 0.17em;
  text-transform: uppercase;
}

/* ─── SCROLL REVEAL ──────────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity var(--dur-enter) var(--ease-luxury),
    transform var(--dur-enter) var(--ease-luxury);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 80ms; }
.reveal-delay-2 { transition-delay: 160ms; }
.reveal-delay-3 { transition-delay: 240ms; }
.reveal-delay-4 { transition-delay: 320ms; }
.reveal-delay-5 { transition-delay: 400ms; }

.coll-card.reveal.reveal-delay-4 { transition-delay: 600ms; }
.coll-card.reveal.reveal-delay-5 { transition-delay: 750ms; }

/* ── Word-by-word reveal ─────────────────────────────────────── */
.word-reveal-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.55s var(--ease-luxury),
              transform 0.55s var(--ease-luxury);
}

.word-reveal.wv-visible .word-reveal-word {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  /* Word-by-word text entrance */
  .word-reveal-word {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  /* Auto-playing CSS animations — disable entirely */
  .page-hero-bg,
  .kb-zoom,
  .about-scroll-hint,
  .page-loader-logo {
    animation: none !important;
  }
  /* Scroll reveal — ensure visible without transition (JS also handles this) */
  .reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .cat-entrance {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  /* Page loader — instant hide on load */
  .page-loader { transition: none !important; }
  /* Ken Burns on ed-block images — no zoom */
  .ed-block-img,
  .cust-img-wrap img { transition: none !important; transform: none !important; }
}

/* ─── SECTION UTILITIES (shared — category pages depend on these) */
.section-ivory      { background-color: var(--ivory); }
.section-bone       { background-color: var(--bone); }
.section-charcoal   { background-color: var(--charcoal); }
.section-near-black { background-color: var(--near-black); }

.section-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding-left: clamp(1.5rem, 6vw, 7.5rem);
  padding-right: clamp(1.5rem, 6vw, 7.5rem);
}
.section-py    { padding-top: clamp(5rem, 8vw, 8rem);   padding-bottom: clamp(5rem, 8vw, 8rem); }
.section-py-lg { padding-top: clamp(6rem, 10vw, 10rem); padding-bottom: clamp(6rem, 10vw, 10rem); }

/* ══════════════════════════════════════════════════════════════
   HOMEPAGE — TWO-ROW HEADER (.ff-header)
   ══════════════════════════════════════════════════════════════ */

.ff-header {
  position: sticky;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: var(--white);
  will-change: transform;
}
.ff-header.scrolled {
  border-bottom: 1px solid var(--border);
}

/* Row 1 — logo centered, actions right */
.ff-header-row1 {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 26px 48px;
  border-bottom: 2px solid var(--gold);
}
.ff-header-logo-link {
  display: block;
  line-height: 0;
  transition: opacity var(--dur-std) var(--ease-luxury);
}
.ff-header-logo-link:hover { opacity: 0.72; }
.ff-header-logo {
  height: 54px;
  width: auto;
}
.ff-header-actions {
  position: absolute;
  right: 40px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 0;
}
.ff-header-icon {
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--black);
  text-decoration: none;
  position: relative;
  transition: opacity var(--dur-std);
}
.ff-header-icon:hover { opacity: 0.45; }
.ff-header-icon:focus-visible { outline: 2px solid var(--black); outline-offset: 2px; }

/* Cart badge in ff-header */
.ff-header-icon .cart-badge {
  background-color: var(--black);
  color: var(--white);
}

/* Row 2 — nav links centered, gold background */
.ff-header-row2 {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--gold);
  height: 44px;
  position: relative;
}

/* Desktop nav list */
.ff-nav-links {
  display: flex;
  align-items: center;
  gap: 2.5rem;
  list-style: none;
  height: 100%;
}
.ff-nav-links > li {
  position: relative;
  height: 100%;
  display: flex;
  align-items: center;
}

/* Nav link / button base */
.ff-nav-links > li > a,
.ff-nav-links > li > .nav-dropdown-trigger {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--white);
  background: none;
  border: none;
  cursor: pointer;
  padding: 0.5rem 1rem;
  display: flex;
  align-items: center;
  gap: 0.3rem;
  white-space: nowrap;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.ff-nav-links > li > a:hover,
.ff-nav-links > li > .nav-dropdown-trigger:hover {
  background-color: rgba(255,255,255,0.2);
  opacity: 1;
}
.ff-nav-links > li > a:focus-visible,
.ff-nav-links > li > .nav-dropdown-trigger:focus-visible {
  outline: 2px solid var(--white);
  outline-offset: 4px;
}

/* Chevron in ff-header nav */
.ff-nav-links .nav-chevron {
  width: 7px;
  height: 7px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
  transition: transform var(--dur-std) var(--ease-luxury);
  display: inline-block;
  margin-left: 2px;
}
.ff-nav-links .nav-dropdown-trigger[aria-expanded="true"] .nav-chevron {
  transform: rotate(-135deg) translateY(-2px);
}

/* Dropdown panel inside ff-header */
.ff-nav-links .nav-dropdown {
  position: absolute;
  top: calc(100% + 12px);
  left: 50%;
  background: var(--white);
  border: 1px solid var(--border);
  min-width: 440px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) translateY(-8px);
  transition:
    opacity var(--dur-std) var(--ease-luxury),
    transform var(--dur-std) var(--ease-luxury);
  z-index: 200;
}
.ff-nav-links .nav-dropdown::before {
  content: '';
  position: absolute;
  top: -5px;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 8px;
  height: 8px;
  background: var(--white);
  border-left: 1px solid var(--border);
  border-top: 1px solid var(--border);
}
.ff-nav-links .nav-dropdown.open {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
.ff-nav-links .nav-dropdown a {
  display: block;
  padding: 0.75rem 1.375rem;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 500;
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--black);
  text-decoration: none;
  border-bottom: 1px solid rgba(0,0,0,0.06);
  border-left: 2px solid transparent;
  transition: color var(--dur-micro), background-color var(--dur-micro), border-left-color var(--dur-std) var(--ease-luxury), padding-left var(--dur-std) var(--ease-luxury);
}
.ff-nav-links .nav-dropdown a:nth-last-child(-n+2) { border-bottom: none; }
.ff-nav-links .nav-dropdown a:hover {
  color: var(--black);
  background-color: rgba(196,154,12,0.06);
  border-left-color: var(--gold);
  padding-left: 1.625rem;
}
.ff-nav-links .nav-dropdown a:focus-visible { outline: 2px solid var(--black); outline-offset: -2px; }
.ff-nav-links .nav-dropdown-label {
  display: block;
  padding: 0.75rem 1.375rem 0.375rem;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.5625rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: rgba(26,26,26,0.35);
  border-bottom: 1px solid rgba(0,0,0,0.08);
  margin-bottom: 0.25rem;
}
.ff-nav-links .nav-dropdown-group {
  padding: 0.875rem 1.375rem 0.75rem;
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.ff-nav-links .nav-dropdown-group:last-child { border-bottom: none; }
.ff-nav-links .nav-dropdown-group a.nav-dropdown-group-name {
  display: block;
  padding: 0;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  color: var(--black);
  border-bottom: none;
  margin-bottom: 0.35rem;
}
.ff-nav-links .nav-dropdown-group a.nav-dropdown-group-name:hover {
  color: rgba(26,26,26,0.5);
  background-color: transparent;
  padding-left: 0;
}
.ff-nav-links .nav-dropdown-sub-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.1rem 0.15rem;
  margin-top: 0.2rem;
}
.ff-nav-links .nav-dropdown .nav-dropdown-sub-link {
  font-size: 0.5625rem;
  letter-spacing: 0.08em;
  color: rgba(26,26,26,0.38);
  text-decoration: none;
  padding: 0;
  border-bottom: none;
  font-weight: 300;
  transition: color var(--dur-micro);
}
.ff-nav-links .nav-dropdown .nav-dropdown-sub-link:hover {
  color: rgba(26,26,26,0.7);
  background: transparent;
  padding-left: 0;
}
.ff-nav-links .nav-dropdown-sub-dot {
  font-size: 0.5625rem;
  color: rgba(26,26,26,0.2);
  user-select: none;
}

/* Hamburger — hidden on desktop, shown on mobile */
.ff-hamburger {
  display: none;
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  flex-direction: column;
  justify-content: center;
  align-items: flex-end;
  gap: 5px;
  width: 44px;
  height: 44px;
  cursor: pointer;
  background: none;
  border: none;
  padding: 10px;
  z-index: 2;
}
.ff-hamburger span {
  display: block;
  height: 1px;
  background-color: var(--black);
  transition:
    width var(--dur-std) var(--ease-luxury),
    transform var(--dur-std) var(--ease-luxury),
    opacity var(--dur-micro) var(--ease-exit);
}
.ff-hamburger span:nth-child(1) { width: 22px; }
.ff-hamburger span:nth-child(2) { width: 16px; }
.ff-hamburger span:nth-child(3) { width: 22px; }
.ff-hamburger.open span:nth-child(1) { transform: translateY(6px) rotate(45deg); width: 22px; }
.ff-hamburger.open span:nth-child(2) { opacity: 0; width: 0; }
.ff-hamburger.open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); width: 22px; }
.ff-hamburger:focus-visible { outline: 2px solid var(--black); outline-offset: 3px; }

/* Cart badge */
.cart-badge {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 16px;
  height: 16px;
  background-color: var(--black);
  color: var(--white);
  font-family: 'Libre Franklin', sans-serif;
  font-size: 0.5625rem;
  font-weight: 500;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  opacity: 0;
  transform: scale(0);
  transition: opacity var(--dur-micro) var(--ease-luxury), transform var(--dur-micro) var(--ease-luxury);
}
.cart-badge.visible { opacity: 1; transform: scale(1); }

/* ─── MOBILE MENU (shared: homepage + category pages) ─────────── */
#mobile-menu {
  position: fixed;
  inset: 0;
  background-color: var(--black);
  z-index: 101;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 1.25rem;
  overflow-y: auto;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-std) var(--ease-luxury);
  padding: clamp(5rem, 15vh, 8rem) 2.5rem 4rem;
}
#mobile-menu.open { opacity: 1; pointer-events: auto; }

.mobile-menu-link {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(1.375rem, 5vw, 1.75rem);
  color: var(--white);
  text-decoration: none;
  letter-spacing: 0.04em;
  text-align: center;
  width: 100%;
  white-space: nowrap;
  padding: 0.375rem 0; /* min 44px touch target */
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity var(--dur-enter) var(--ease-luxury),
    transform var(--dur-enter) var(--ease-luxury),
    color var(--dur-std) var(--ease-luxury);
}
.mobile-menu-link:hover { color: rgba(255,255,255,0.55); }
.mobile-menu-link:focus-visible { outline: 2px solid var(--white); outline-offset: 4px; }
#mobile-menu.open .mobile-menu-link { opacity: 1; transform: translateY(0); }
#mobile-menu.open .mobile-menu-link:nth-child(1) { transition-delay: 60ms; }
#mobile-menu.open .mobile-menu-link:nth-child(2) { transition-delay: 120ms; }
#mobile-menu.open .mobile-menu-link:nth-child(3) { transition-delay: 180ms; }
#mobile-menu.open .mobile-menu-link:nth-child(4) { transition-delay: 240ms; }
#mobile-menu.open .mobile-menu-link:nth-child(5) { transition-delay: 300ms; }

.mobile-accordion { width: 100%; text-align: center; }
.mobile-accordion-trigger {
  min-height: 44px;
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(1.375rem, 5vw, 1.75rem);
  color: var(--white);
  letter-spacing: 0.04em;
  text-align: center;
  width: 100%;
  background: none;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity var(--dur-enter) var(--ease-luxury),
    transform var(--dur-enter) var(--ease-luxury),
    color var(--dur-std) var(--ease-luxury);
}
.mobile-accordion-trigger:hover { color: rgba(255,255,255,0.55); }
.mobile-accordion-trigger:focus-visible { outline: 2px solid var(--white); outline-offset: 4px; }
#mobile-menu.open .mobile-accordion-trigger { opacity: 1; transform: translateY(0); }
#mobile-menu.open .mobile-accordion:nth-child(2) .mobile-accordion-trigger { transition-delay: 120ms; }
#mobile-menu.open .mobile-accordion:nth-child(3) .mobile-accordion-trigger { transition-delay: 180ms; }

.mobile-accordion-chevron {
  width: 10px;
  height: 10px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-3px);
  transition: transform var(--dur-std) var(--ease-luxury);
  display: inline-block;
}
.mobile-accordion-trigger[aria-expanded="true"] .mobile-accordion-chevron {
  transform: rotate(-135deg) translateY(-1px);
}
.mobile-accordion-panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 400ms var(--ease-luxury);
}
.mobile-accordion-panel.open { max-height: 700px; }
#mobile-menu .mobile-accordion-panel a {
  display: block;
  padding: 0.75rem 0;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.875rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.5);
  text-decoration: none;
  text-align: center;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  transition: color 0.2s;
}
#mobile-menu .mobile-accordion-panel a:last-child { border-bottom: none; }
#mobile-menu .mobile-accordion-panel a:hover { color: rgba(255,255,255,0.85); }
.mobile-accordion-panel a:focus-visible { outline: 2px solid var(--white); outline-offset: 3px; }

/* ══════════════════════════════════════════════════════════════
   HOMEPAGE — EDITORIAL BLOCKS
   ══════════════════════════════════════════════════════════════ */

.ed-block {
  position: relative;
  height: 85vh;
  min-height: 500px;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  background-color: #1a1a1a;
  /* Zero gap between stacked blocks: handled by removing margin from body */
}

/* Slideshow slides — stack via absolute, crossfade via opacity */
.ed-slide {
  opacity: 0;
  transition: transform 8s cubic-bezier(0.16, 1, 0.3, 1), opacity 1s ease;
}
.ed-slide.ed-slide-active {
  opacity: 1;
}

/* Background image — scales on hover (Ken Burns) + parallax base */
.ed-block-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
  transform: scale(1.04);
}
.ed-block:hover .ed-block-img {
  transform: scale(1.08);
}

/* Gradient: transparent top → dark bottom for text legibility */
.ed-block-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    transparent 25%,
    rgba(0,0,0,0.25) 55%,
    rgba(0,0,0,0.62) 100%
  );
  z-index: 1;
}
/* Hero overlay — lighter, no text to protect */
.ed-hero-overlay {
  background: linear-gradient(
    to bottom,
    transparent 40%,
    rgba(0,0,0,0.15) 100%
  ) !important;
  z-index: 3;
}

/* ── Slideshow-specific overrides ────────────────────────────── */

/* Dark letterbox background so studio images blend seamlessly */
.ed-slideshow {
  background-color: #111;
}

/* Neutralise the generic hover-zoom — Ken Burns handles motion */
.ed-slideshow:hover .ed-block-img {
  transform: scale(1);
}

/* Contain full image (no crop) + editorial colour grade */
.ed-slideshow .ed-block-img {
  object-fit: contain;
  transform: scale(1);
  filter: saturate(0.9) contrast(1.03);
  transition: opacity 1s ease;
  will-change: transform, opacity;
}

/* Inactive slide baseline */
.ed-slideshow .ed-slide {
  z-index: 0;
}

/* Active slide: Ken Burns zoom-in */
.ed-slideshow .ed-slide.ed-slide-active {
  opacity: 1;
  z-index: 2;
  animation: kenBurns 8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Exiting slide: zoom to 1.12 + fade out over 1.2s */
.ed-slideshow .ed-slide.exiting {
  opacity: 0;
  transform: scale(1.12);
  transition: opacity 1.2s ease, transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 1;
}

/* Vignette overlay: radial (edge darkening) + linear (bottom grounding) */
.ed-slideshow::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background:
    radial-gradient(ellipse at center, transparent 40%, rgba(0,0,0,0.35) 100%),
    linear-gradient(to bottom, transparent 80%, rgba(0,0,0,0.3) 100%);
}

/* Progress bar: 2px strip, animates 0→100% over slide interval */
.ed-slideshow::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  height: 2px;
  width: 0;
  background: var(--champagne);
  z-index: 5;
}
.ed-slideshow.playing::before {
  animation: progressBar 5s linear forwards;
}

/* Ken Burns keyframes */
@keyframes kenBurns {
  from { transform: scale(1); }
  to   { transform: scale(1.06); }
}

/* Progress bar keyframes */
@keyframes progressBar {
  from { width: 0; }
  to   { width: 100%; }
}

/* Centered text content at bottom of block */
.ed-block-content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 0 clamp(1.5rem, 6vw, 6rem) clamp(3.5rem, 6vw, 5.5rem);
  width: 100%;
}

/* Label: small uppercase, slightly transparent */
.ed-block-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.65);
  margin-bottom: 1.25rem;
  /* Reveal */
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity 600ms var(--ease-luxury),
    transform 600ms var(--ease-luxury);
}

/* Headline: Playfair Display, large, tracked uppercase */
.ed-block-headline {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(1.875rem, 3.5vw, 3.25rem);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--white);
  line-height: 1.1;
  margin-bottom: 2.25rem;
  max-width: 820px;
  /* Reveal */
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity 700ms var(--ease-luxury) 150ms,
    transform 700ms var(--ease-luxury) 150ms;
}

/* CTA button: gold fill, white text, no radius */
.ed-block-btn {
  display: inline-block;
  background: var(--gold);
  color: var(--white);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 52px;
  border-radius: 0;
  /* Transition covers both hover state AND reveal animation */
  opacity: 0;
  transform: translateY(16px);
  transition:
    background 0.3s ease,
    color 0.3s ease,
    opacity 700ms var(--ease-luxury) 300ms,
    transform 700ms var(--ease-luxury) 300ms;
}
.ed-block-btn:hover {
  background: var(--white);
  color: var(--black);
}
.ed-block-btn:focus-visible {
  outline: 2px solid var(--white);
  outline-offset: 4px;
}
.ed-block-btn:active { opacity: 0.85; }

/* Triggered by IntersectionObserver adding .ed-visible to the block */
.ed-block.ed-visible .ed-block-label {
  opacity: 0.65;
  transform: translateY(0);
}
.ed-block.ed-visible .ed-block-headline {
  opacity: 1;
  transform: translateY(0);
}
.ed-block.ed-visible .ed-block-btn {
  opacity: 1;
  transform: translateY(0);
}

/* ══════════════════════════════════════════════════════════════
   HOMEPAGE — COLLECTIONS SECTION
   ══════════════════════════════════════════════════════════════ */

.coll-section {
  background: var(--white);
  padding: clamp(5rem, 8vw, 8rem) clamp(1.5rem, 6vw, 7.5rem);
  position: relative;
  contain: layout style;
}
.coll-section::before {
  content: '';
  display: block;
  width: 60px;
  height: 2px;
  background: var(--gold);
  margin: 0 auto clamp(2.5rem, 4vw, 3.5rem);
}
.coll-section-header {
  text-align: center;
  margin-bottom: clamp(3rem, 5vw, 4.5rem);
}
.coll-eyebrow {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(26,26,26,0.38);
  margin-bottom: 1.25rem;
}
.coll-headline {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2.25rem, 4.5vw, 3.75rem);
  color: var(--black);
  letter-spacing: 0.03em;
  line-height: 1.1;
  margin-bottom: clamp(3.5rem, 6vw, 5rem);
}
/* reveal handled by word spans — keep opacity visible */
.coll-headline.reveal {
  opacity: 1;
  transform: none;
}
.coll-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(1rem, 2vw, 1.5rem);
}

.video-row {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(1rem, 2vw, 1.5rem);
  margin-top: clamp(1rem, 2vw, 1.5rem);
}

.video-row-card .coll-card-img-wrap {
  aspect-ratio: 16 / 9;
}

/* Show full portrait angel video — no cropping */
.video-row-card .coll-card-video {
  object-fit: contain;
  background: var(--black);
}

/* Video card — same positioning as .coll-card-img */
.coll-card-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 600ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}
.coll-card:hover .coll-card-video,
.coll-card:focus-visible .coll-card-video { transform: scale(1.05); }
.coll-card {
  text-decoration: none;
  display: block;
  cursor: pointer;
}
.coll-card-img-wrap {
  overflow: hidden;
  position: relative;
  aspect-ratio: 3 / 4;
}
/* Gradient overlay — always present, darkens on hover */
.coll-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.2) 40%, transparent 70%);
  transition: background 0.5s var(--ease-luxury);
  z-index: 2;
  pointer-events: none;
}
.coll-card:hover .coll-card-overlay,
.coll-card:focus-visible .coll-card-overlay {
  background: linear-gradient(to top, rgba(0,0,0,0.82) 0%, rgba(0,0,0,0.32) 40%, rgba(0,0,0,0.08) 70%);
}
/* Text overlay — sits at bottom of card over gradient */
.coll-card-text {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 1.5rem;
  z-index: 3;
  pointer-events: none;
}
.coll-card-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  opacity: 1;
  transition: opacity 0.6s ease, transform 600ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}
.coll-card-img.loaded { opacity: 1; }
.coll-card:hover .coll-card-img,
.coll-card:focus-visible .coll-card-img { transform: scale(1.04); }
.coll-card-name {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(1.125rem, 1.6vw, 1.375rem);
  color: var(--white);
  line-height: 1.2;
  margin-bottom: 0.4rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: transform 0.4s var(--ease-luxury);
}
.coll-card:hover .coll-card-name,
.coll-card:focus-visible .coll-card-name { transform: translateY(-8px); }
.coll-card-sub {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: 0.6875rem;
  color: rgba(255,255,255,0.6);
  letter-spacing: 0.04em;
  line-height: 1.5;
  margin-bottom: 0.75rem;
  transition: transform 0.4s var(--ease-luxury);
}
.coll-card:hover .coll-card-sub,
.coll-card:focus-visible .coll-card-sub { transform: translateY(-8px); }
.coll-card-browse {
  display: block;
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--white);
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.4s var(--ease-luxury),
              transform 0.4s var(--ease-luxury);
}
.coll-card:hover .coll-card-browse,
.coll-card:focus-visible .coll-card-browse {
  opacity: 1;
  transform: translateY(0);
}

/* Collections card reveal — more dramatic than global .reveal */
.coll-card.reveal {
  opacity: 0;
  transform: translateY(32px) scale(0.97);
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.coll-card.reveal.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.coll-card.reveal.reveal-delay-1 { transition-delay: 150ms; }
.coll-card.reveal.reveal-delay-2 { transition-delay: 300ms; }
.coll-card.reveal.reveal-delay-3 { transition-delay: 450ms; }

/* Collections word entrance */
.coll-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.coll-word.c-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Collections eyebrow entrance */
.coll-eyebrow-entrance {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.coll-eyebrow-entrance.c-visible {
  opacity: 1;
  transform: translateY(0);
}


/* custom gallery image fade-in */
.custom-gallery img {
  opacity: 1;
  transition: opacity 0.6s ease, transform 600ms cubic-bezier(0.16, 1, 0.3, 1);
}
.custom-gallery img.loaded { opacity: 1; }

/* ══════════════════════════════════════════════════════════════
   CUSTOM PAGE (.custom-header, .custom-gallery)
   ══════════════════════════════════════════════════════════════ */

.custom-header {
  background: var(--white);
  padding: clamp(3rem, 5vw, 5rem) clamp(1.5rem, 6vw, 7.5rem);
  text-align: center;
}
.custom-eyebrow {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(26,26,26,0.38);
  margin-bottom: 1.25rem;
}
.custom-headline {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2rem, 4vw, 3.25rem);
  color: var(--black);
  letter-spacing: 0.1em;
  margin-bottom: 2rem;
}
.custom-intro {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 1.9;
  color: rgba(26,26,26,0.55);
  max-width: 620px;
  margin: 0 auto 2rem;
}
.custom-cta {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.75rem;
  letter-spacing: 0.15em;
  color: rgba(26,26,26,0.45);
}
.custom-cta a {
  color: var(--black);
  text-decoration: none;
  transition: opacity 0.2s;
}
.custom-cta a:hover { opacity: 0.5; }

.custom-gallery {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 clamp(1.5rem, 6vw, 7.5rem) clamp(5rem, 8vw, 8rem);
  columns: 3;
  column-gap: clamp(1rem, 2vw, 1.5rem);
}
.custom-gallery figure {
  margin: 0 0 clamp(1rem, 2vw, 1.5rem);
  break-inside: avoid;
  overflow: hidden;
}
.custom-gallery img {
  width: 100%;
  display: block;
  transition: transform 600ms cubic-bezier(0.16, 1, 0.3, 1);
}
.custom-gallery figure:hover img {
  transform: scale(1.03);
}

.gallery-hidden {
  display: none;
}
.gallery-load-wrap {
  text-align: center;
  padding: clamp(2.5rem, 4vw, 4rem) 0 clamp(3rem, 5vw, 5rem);
}
.gallery-load-btn {
  display: inline-block;
  background: var(--white);
  color: var(--black);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 16px 52px;
  border: 1px solid var(--black);
  border-radius: 0;
  cursor: pointer;
  transition: background 0.3s ease, color 0.3s ease;
}
.gallery-load-btn:hover {
  background: var(--black);
  color: var(--white);
}
.gallery-load-btn:focus-visible {
  outline: 2px solid var(--black);
  outline-offset: 4px;
}

@media (max-width: 1023px) {
  .custom-gallery { columns: 2; }
}
@media (max-width: 600px) {
  .custom-gallery { columns: 1; max-width: 480px; }
}


/* ══════════════════════════════════════════════════════════════
   HOMEPAGE — COLLECTION CARD CTA
   ══════════════════════════════════════════════════════════════ */

/* .coll-card-cta removed — replaced by .coll-card-browse overlay text */

/* ══════════════════════════════════════════════════════════════
   HOMEPAGE — PULLQUOTE SECTION
   ══════════════════════════════════════════════════════════════ */

.pullquote-section {
  background: var(--charcoal);
  padding: clamp(6rem, 12vw, 12rem) clamp(2rem, 8vw, 12rem);
  text-align: center;
  position: relative;
}
.pullquote-inner {
  max-width: 780px;
  margin: 0 auto;
}
.pullquote-text {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-style: italic;
  font-size: clamp(1.5rem, 3vw, 2.5rem);
  line-height: 1.5;
  color: var(--cream);
  quotes: none;
}
.pullquote-attr {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(196,154,12,0.6);
  margin-top: 2rem;
}

/* ══════════════════════════════════════════════════════════════
   HOMEPAGE — CONTACT SECTION (.contact-section)
   ══════════════════════════════════════════════════════════════ */

.contact-section {
  background: var(--black);
  padding: clamp(5rem, 10vw, 10rem) clamp(1.5rem, 6vw, 7.5rem);
  text-align: center;
  position: relative;
}
.contact-section::before {
  content: '';
  position: absolute;
  top: -80px;
  left: 0;
  right: 0;
  height: 80px;
  background: linear-gradient(to bottom, transparent, var(--black));
  pointer-events: none;
  z-index: 1;
}
.contact-inner {
  max-width: 780px;
  margin: 0 auto;
  text-align: center;
}
.contact-eyebrow,
.contact-headline { text-align: center; }
.contact-eyebrow {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.35);
  margin-bottom: 1.25rem;
}
.contact-headline {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2rem, 4vw, 3.5rem);
  color: var(--white);
  letter-spacing: 0.04em;
  line-height: 1.15;
  margin-bottom: clamp(2rem, 4vw, 3rem);
}
.contact-text {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 1.9;
  color: rgba(255,255,255,0.5);
  max-width: 520px;
  margin: 0 auto 2.5rem;
}
.contact-details {
  display: flex;
  justify-content: center;
  gap: clamp(3rem, 6vw, 5rem);
  margin-bottom: 2.5rem;
}
.contact-detail-group {
  text-align: center;
}
.contact-detail-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.3);
  margin-bottom: 0.75rem;
}
.contact-detail-value {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  color: rgba(255,255,255,0.65);
  line-height: 1.6;
}
.contact-detail-value a {
  color: rgba(255,255,255,0.65);
  text-decoration: none;
  transition: color 0.3s ease;
}
.contact-detail-value a:hover { color: var(--white); }
.contact-btn {
  display: inline-block;
  background: var(--gold);
  color: var(--white);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 52px;
  border-radius: 0;
  border: 1px solid transparent;
  transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
.contact-btn:hover {
  background: transparent;
  color: var(--gold);
  border-color: var(--gold);
}
.contact-btn:focus-visible {
  outline: 2px solid var(--white);
  outline-offset: 4px;
}
@media (max-width: 600px) {
  .contact-details {
    flex-direction: column;
    gap: 2rem;
  }
}

/* Map */
.contact-map-wrap {
  overflow: hidden;
  margin-top: clamp(2rem, 4vw, 3rem);
  margin-bottom: 2.5rem;
}

.contact-map-wrap iframe {
  display: block;
  width: 100%;
  filter: saturate(0) contrast(1.1) brightness(0.95);
  transition: filter 600ms var(--ease-luxury);
}

.contact-map-wrap:hover iframe {
  filter: saturate(0.5) contrast(1.05) brightness(1);
}

/* ══════════════════════════════════════════════════════════════
   LUXURY FOOTER (.lux-footer) — shared across all 7 pages
   ══════════════════════════════════════════════════════════════ */

.lux-footer {
  background: #1A1A1A;
  padding: clamp(3rem, 5vw, 5rem) clamp(2rem, 6vw, 4rem);
  text-align: center;
}

.lux-footer-inner {
  max-width: 720px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
}

.lux-footer-logo-link {
  display: inline-block;
  line-height: 0;
  opacity: 0.85;
  transition: opacity 250ms;
}

.lux-footer-logo-link:hover { opacity: 1; }

.lux-footer-logo {
  max-height: 48px;
  width: auto;
}

.lux-footer-phones {
  font-family: 'Libre Franklin', sans-serif;
  font-size: 14px;
  font-weight: 300;
  color: rgba(255, 255, 255, 0.7);
  line-height: 1.6;
  margin: 0;
}

.lux-footer-phones a {
  color: inherit;
  text-decoration: none;
  transition: color 200ms;
}

.lux-footer-phones a:hover { color: var(--gold); }
.lux-footer-phones a:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }

.lux-footer-address {
  font-family: 'Libre Franklin', sans-serif;
  font-size: 13px;
  font-weight: 300;
  color: rgba(255, 255, 255, 0.45);
  letter-spacing: 0.02em;
  line-height: 1.6;
  margin: 0;
}

.lux-footer-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0 0.75rem;
  line-height: 2;
}

.lux-footer-nav a {
  font-family: 'Libre Franklin', sans-serif;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.5);
  text-decoration: none;
  transition: color 200ms;
}

.lux-footer-nav a:hover { color: var(--gold); }
.lux-footer-nav a:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }

.lux-footer-nav span {
  color: rgba(196, 154, 12, 0.35);
  font-size: 10px;
  line-height: 1;
  user-select: none;
}

.lux-footer-rule {
  width: 80px;
  height: 1px;
  background: rgba(196, 154, 12, 0.3);
  flex-shrink: 0;
}

.lux-footer-social {
  display: flex;
  justify-content: center;
  margin-bottom: 1.25rem;
}
.lux-footer-social-link {
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.8;
  transition: opacity 250ms ease, transform 250ms ease, filter 250ms ease;
}
.lux-footer-social-link:hover,
.lux-footer-social-link:focus-visible {
  opacity: 1;
  transform: translateY(-2px);
  filter: drop-shadow(0 0 6px rgba(238,42,123,0.5));
}
.lux-footer-social-link:active {
  transform: translateY(0);
}

.lux-footer-copy {
  font-family: 'Libre Franklin', sans-serif;
  font-size: 11px;
  font-weight: 300;
  color: rgba(255, 255, 255, 0.3);
  letter-spacing: 0.04em;
  margin: 0;
}

/* Mobile: stack phone numbers vertically, increase small text readability */
@media (max-width: 480px) {
  .lux-footer-phones {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    align-items: center;
  }
  .lux-footer-phones span[aria-hidden] { display: none; }
  .lux-footer-nav a { font-size: 12px; }
  .lux-footer-nav span { font-size: 11px; }
  .lux-footer-copy { font-size: 12px; }
}

/* ══════════════════════════════════════════════════════════════
   CATEGORY PAGES — OLD #NAVBAR (single row, logo left)
   These styles are ONLY used by standing-tributes.html,
   sprays-wreaths.html, baskets.html, keepsakes.html
   ══════════════════════════════════════════════════════════════ */

#navbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 3rem;
  height: 72px;
  background-color: var(--champagne);
  border-bottom: none;
}

.nav-logo { height: 50px; width: auto; }

.nav-links {
  display: flex;
  align-items: center;
  gap: 2rem;
  list-style: none;
}
.nav-links > li { position: relative; }

.nav-links > li > a,
.nav-links > li > button {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--cream);
  transition: color var(--dur-std) var(--ease-luxury);
  position: relative;
  background: none;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0;
}
.nav-links > li > a::after,
.nav-links > li > button::after {
  content: '';
  position: absolute;
  bottom: -3px;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--cream);
  transition: width var(--dur-std) var(--ease-luxury);
}
.nav-links > li > a:hover::after,
.nav-links > li > button:hover::after { width: 100%; }
.nav-links > li > a:hover,
.nav-links > li > button:hover { color: rgba(250,248,247,0.7); }
.nav-links > li > a:focus-visible,
.nav-links > li > button:focus-visible { outline: 2px solid var(--cream); outline-offset: 4px; }

/* Dropdown chevron (inside old navbar) */
#navbar .nav-chevron {
  width: 8px;
  height: 8px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
  transition: transform var(--dur-std) var(--ease-luxury);
  display: inline-block;
  margin-left: 2px;
}
#navbar .nav-dropdown-trigger[aria-expanded="true"] .nav-chevron {
  transform: rotate(-135deg) translateY(-2px);
}

/* Dropdown panel (inside old navbar) */
#navbar .nav-dropdown {
  position: absolute;
  top: calc(100% + 14px);
  left: 50%;
  background-color: var(--ivory);
  border: 1px solid rgba(196,154,12,0.2);
  min-width: 280px;
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) translateY(-8px);
  transition:
    opacity var(--dur-std) var(--ease-luxury),
    transform var(--dur-std) var(--ease-luxury);
  z-index: 200;
}
#navbar .nav-dropdown::before {
  content: '';
  position: absolute;
  top: -5px;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 8px;
  height: 8px;
  background-color: var(--ivory);
  border-left: 1px solid rgba(196,154,12,0.2);
  border-top: 1px solid rgba(196,154,12,0.2);
}
#navbar .nav-dropdown.open {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
#navbar .nav-dropdown a {
  display: block;
  padding: 0.625rem 1.375rem;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(28,28,28,0.65);
  text-decoration: none;
  border-bottom: 1px solid rgba(196,154,12,0.08);
  transition: color var(--dur-micro) var(--ease-luxury), background-color var(--dur-micro) var(--ease-luxury), padding-left var(--dur-std) var(--ease-luxury);
}
#navbar .nav-dropdown a:last-child { border-bottom: none; }
#navbar .nav-dropdown a:hover {
  color: var(--champagne);
  background-color: rgba(196,154,12,0.04);
  padding-left: 1.625rem;
}
#navbar .nav-dropdown a:focus-visible { outline: 2px solid var(--champagne); outline-offset: -2px; }
#navbar .nav-dropdown-label {
  display: block;
  padding: 0.75rem 1.375rem 0.375rem;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.5625rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--champagne);
  border-bottom: 1px solid rgba(196,154,12,0.15);
  margin-bottom: 0.25rem;
}
#navbar .nav-dropdown-group {
  padding: 0.875rem 1.375rem 0.75rem;
  border-bottom: 1px solid rgba(196,154,12,0.1);
}
#navbar .nav-dropdown-group:last-child { border-bottom: none; }
#navbar .nav-dropdown-group a.nav-dropdown-group-name {
  display: block;
  padding: 0;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  color: var(--charcoal);
  border-bottom: none;
  margin-bottom: 0.35rem;
}
#navbar .nav-dropdown-group a.nav-dropdown-group-name:hover {
  color: var(--champagne);
  background-color: transparent;
  padding-left: 0;
}
#navbar .nav-dropdown-sub-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.1rem 0.15rem;
  margin-top: 0.2rem;
}
#navbar .nav-dropdown .nav-dropdown-sub-link {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.5625rem;
  letter-spacing: 0.08em;
  color: rgba(34,34,40,0.38);
  text-decoration: none;
  padding: 0;
  border-bottom: none;
  transition: color var(--dur-micro) var(--ease-luxury);
}
#navbar .nav-dropdown .nav-dropdown-sub-link:hover {
  color: var(--champagne);
  background-color: transparent;
  padding-left: 0;
}
#navbar .nav-dropdown-sub-dot {
  font-size: 0.5625rem;
  color: rgba(34,34,40,0.2);
  user-select: none;
  line-height: 1;
}

/* Category page cart icon */
.nav-cart {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: var(--cream);
  cursor: pointer;
  background: none;
  border: none;
  transition: color var(--dur-std) var(--ease-luxury);
  text-decoration: none;
}
.nav-cart:hover { color: rgba(250,248,247,0.7); }
.nav-cart:focus-visible { outline: 2px solid var(--cream); outline-offset: 3px; }
.nav-cart .cart-badge {
  background-color: var(--charcoal);
  color: var(--cream);
}

/* Hamburger (old navbar — category pages) */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: flex-end;
  gap: 5px;
  width: 44px;
  height: 44px;
  cursor: pointer;
  background: none;
  border: none;
  padding: 10px;
}
.hamburger:focus-visible { outline: 2px solid var(--cream); outline-offset: 3px; }
.hamburger span {
  display: block;
  height: 1px;
  background-color: var(--cream);
  transition:
    width var(--dur-std) var(--ease-luxury),
    transform var(--dur-std) var(--ease-luxury),
    opacity var(--dur-micro) var(--ease-exit);
}
.hamburger span:nth-child(1) { width: 22px; }
.hamburger span:nth-child(2) { width: 16px; }
.hamburger span:nth-child(3) { width: 22px; }
.hamburger.open span:nth-child(1) { transform: translateY(6px) rotate(45deg); width: 22px; }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); width: 22px; }

/* ─── GALLERY CARD ORDER BUTTON ─────────────────────────────── */
.ff-card-order-btn {
  display: block;
  width: 100%;
  margin-top: 0.75rem;
  padding: 0.625rem 1rem;
  background: var(--champagne);
  color: var(--charcoal);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.5875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  border: 1px solid var(--champagne);
  transition:
    opacity 300ms var(--ease-luxury),
    letter-spacing 300ms var(--ease-luxury);
}
.ff-card-order-btn:hover {
  opacity: 0.82;
  letter-spacing: 0.22em;
}

/* ─── CATEGORY PAGE BUTTONS ──────────────────────────────────── */
.btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.875rem 2rem;
  background-color: var(--champagne);
  color: var(--charcoal);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  border: 1px solid var(--champagne);
  cursor: pointer;
  transition:
    background-color var(--dur-std) var(--ease-luxury),
    color var(--dur-std) var(--ease-luxury),
    letter-spacing var(--dur-std) var(--ease-luxury),
    opacity var(--dur-micro) var(--ease-exit),
    transform 300ms var(--ease-luxury);
}
.btn-primary:hover { opacity: 0.82; letter-spacing: 0.23em; }
.btn-primary:focus-visible { outline: 2px solid var(--champagne); outline-offset: 3px; }

.btn-outline {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.875rem 2rem;
  background-color: transparent;
  color: var(--cream);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  border: 1px solid rgba(250,248,244,0.5);
  cursor: pointer;
  transition:
    border-color var(--dur-std) var(--ease-luxury),
    color var(--dur-std) var(--ease-luxury),
    letter-spacing var(--dur-std) var(--ease-luxury),
    background-color var(--dur-std) var(--ease-luxury),
    transform 300ms var(--ease-luxury);
}
.btn-outline:hover {
  background-color: rgba(196,154,12,0.1);
  border-color: rgba(250,248,247,0.8);
  letter-spacing: 0.23em;
}
.btn-outline:focus-visible { outline: 2px solid var(--champagne); outline-offset: 3px; }

/* ─── MAGNETIC HOVER ────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .btn-primary,
  .btn-outline,
  .btn-outline-dark {
    transition: none !important;
  }
}

/* ─── PRODUCT CARDS (category pages) ────────────────────────── */
.products-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(1.25rem, 2.5vw, 2rem);
}
.product-card { text-decoration: none; display: block; cursor: pointer; }
.product-card-img-wrap { overflow: hidden; position: relative; background: #F0EEEB; }
.product-card-img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  display: block;
  opacity: 1;
  transition: transform 400ms var(--ease-luxury), opacity 0.3s ease;
}
.product-card-img.loaded { opacity: 1; }
.product-card:hover .product-card-img { transform: scale(1.04); }
.product-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(28,28,28,0.5) 0%, transparent 50%);
  opacity: 0;
  transition: opacity var(--dur-std) var(--ease-luxury);
}
.product-card:hover .product-card-overlay { opacity: 1; }
.product-card-body { padding: 1rem 0 0; }
.product-card-name {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #1A1A1A;
}
.product-card-price {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 500;
  font-size: 1.1rem;
  color: #C49A0C;
  letter-spacing: 0.03em;
  margin-top: 0.25rem;
}
.product-card:focus-visible { outline: 2px solid var(--champagne); outline-offset: 3px; }

/* ─── CATEGORY PAGE FOOTER (removed — replaced by .lux-footer) ── */

/* ─── CATEGORY PAGE LAYOUT ───────────────────────────────────── */
.page-header {
  background-color: var(--bone);
  padding-top: clamp(3rem, 5vw, 5rem);
  padding-bottom: clamp(3rem, 5vw, 5rem);
  border-bottom: 1px solid rgba(196,154,12,0.2);
}
.page-header-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding-left: clamp(1.5rem, 6vw, 7.5rem);
  padding-right: clamp(1.5rem, 6vw, 7.5rem);
}
.page-header h1 {
  display: inline-block;
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  margin-top: 0.75rem;
  margin-bottom: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 2px solid var(--gold);
}
.page-header .t-body { max-width: 520px; color: rgba(34,34,40,0.6); }

/* ─── PAGE HERO (Category Pages) ───────────────────────────────────────────── */

.page-hero {
  position: relative;
  min-height: 50vh;
  display: flex;
  align-items: center;
  overflow: hidden;
}

/* Background image layer — Ken Burns zooms this */
.page-hero-bg {
  position: absolute;
  inset: 0;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
  background-color: #1a1a1a;
  animation: pageHeroKenBurns 12s ease-out forwards;
}

/* Page-specific background images — WebP with PNG fallback via image-set */
.page-hero--standing-tributes .page-hero-bg {
  background-image: url('Edited%20Images/Edited%202.webp');
  background-image: image-set(url('Edited%20Images/Edited%202.webp') type('image/webp'), url('Edited%20Images/Edited%202.png') type('image/png'));
  background-position: 65% center;
}
.page-hero--sprays-wreaths .page-hero-bg {
  background-image: url('Edited%20Images/Edited%205.webp');
  background-image: image-set(url('Edited%20Images/Edited%205.webp') type('image/webp'), url('Edited%20Images/Edited%205.png') type('image/png'));
  background-position: center 40%;
}
.page-hero--baskets .page-hero-bg {
  background-image: url('Edited%20Images/Edited%203.webp');
  background-image: image-set(url('Edited%20Images/Edited%203.webp') type('image/webp'), url('Edited%20Images/Edited%203.png') type('image/png'));
  background-position: 60% center;
}
.page-hero--keepsakes .page-hero-bg {
  background-image: url('Edited%20Images/Edited%201.webp');
  background-image: image-set(url('Edited%20Images/Edited%201.webp') type('image/webp'), url('Edited%20Images/Edited%201.png') type('image/png'));
  background-position: 60% 45%;
}

@keyframes pageHeroKenBurns {
  from { transform: scale(1.0); }
  to   { transform: scale(1.06); }
}

@media (prefers-reduced-motion: reduce) {
  .page-hero-bg { animation: none; }
}

/* Gradient overlay */
.page-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,0.35), rgba(0,0,0,0.55));
  pointer-events: none;
}

/* Text container */
.page-hero-inner {
  position: relative;
  z-index: 2;
  padding: clamp(4rem, 7vw, 7rem) clamp(3rem, 6vw, 8rem);
  max-width: 860px;
}

.page-hero-label {
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--champagne);
  margin-bottom: 1rem;
}

.page-hero-headline {
  font-family: var(--font-display);
  font-size: clamp(2.75rem, 5vw, 4.5rem);
  font-weight: 400;
  color: var(--cream);
  line-height: 1.1;
  margin: 0 0 0.75rem;
}

.page-hero-rule {
  width: 80px;
  height: 1px;
  background: var(--champagne);
  opacity: 0.4;
  margin-bottom: 1.25rem;
}

.page-hero-body {
  font-family: var(--font-body);
  font-size: clamp(0.9rem, 1.2vw, 1rem);
  font-weight: 300;
  line-height: 1.7;
  color: rgba(250, 248, 247, 0.7);
  max-width: 480px;
}

@media (max-width: 640px) {
  .page-hero { min-height: 40vh; }
  .page-hero-inner { padding: clamp(3rem, 8vw, 4rem) clamp(1.5rem, 5vw, 2.5rem); }
}

/* Sticky sub-nav */
.sub-nav {
  background-color: var(--ivory);
  border-bottom: 1px solid rgba(196,154,12,0.15);
  position: sticky;
  top: 151px;
  z-index: 50;
}
.sub-nav-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding-left: clamp(1.5rem, 6vw, 7.5rem);
  padding-right: clamp(1.5rem, 6vw, 7.5rem);
  display: flex;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.sub-nav-inner::-webkit-scrollbar { display: none; }
.sub-nav-link {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(34,34,40,0.45);
  text-decoration: none;
  padding: 1rem 1.25rem;
  white-space: nowrap;
  border-bottom: 2px solid transparent;
  transition: color var(--dur-std) var(--ease-luxury), border-color var(--dur-std) var(--ease-luxury);
  flex-shrink: 0;
}
.sub-nav-link:hover { color: var(--charcoal); border-bottom-color: rgba(196,154,12,0.4); }
.sub-nav-link.active { color: var(--charcoal); border-bottom-color: var(--gold); }
.sub-nav-link:focus-visible { outline: 2px solid var(--gold); outline-offset: -2px; }

/* Category section */
.cat-section { scroll-margin-top: calc(151px + 49px); }
.cat-section + .cat-section { border-top: 1px solid rgba(196,154,12,0.12); }
.cat-section-header { margin-bottom: clamp(2rem, 4vw, 3rem); }
.cat-section-header h2 { font-size: clamp(1.75rem, 3vw, 2.5rem); margin-top: 0.5rem; }

.product-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(1rem, 2vw, 1.5rem);
}

/* ─── BRAND STORY (category pages reference) ─────────────────── */
.story-grid {
  display: grid;
  grid-template-columns: 55fr 45fr;
  gap: clamp(3rem, 6vw, 6rem);
  align-items: center;
  margin-top: clamp(3rem, 5vw, 5rem);
}

/* ══════════════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════════════ */

/* Tablet: 1024px */
@media (max-width: 1023px) {
  /* Category page old navbar */
  .nav-links { display: none; }
  .nav-cart  { display: none; }
  .hamburger { display: flex; }

  /* Homepage new header */
  .ff-nav-links { display: none; }
  .ff-hamburger { display: flex; }
  .ff-header-row2 {
    display: none; /* row2 fully hidden; hamburger is in row1 */
  }

  /* Collections */
  .coll-grid { grid-template-columns: repeat(2, 1fr); }
  .video-row { grid-template-columns: repeat(2, 1fr); }

  /* Category page grids */
  .products-grid     { grid-template-columns: repeat(2, 1fr); }
  .product-grid      { grid-template-columns: repeat(3, 1fr); }
}

/* Mobile: 767px */
@media (max-width: 767px) {
  /* Category page old navbar */
  #navbar { padding: 0 1.5rem; height: 64px; }
  .nav-logo { height: 40px; }
  .sub-nav { top: 77px; }
  .cat-section { scroll-margin-top: calc(77px + 45px); }
  .sub-nav-inner { flex-wrap: wrap; overflow-x: visible; padding-top: 0.25rem; padding-bottom: 0.25rem; }
  .sub-nav-link { white-space: normal; flex-shrink: 1; padding: 0.625rem 0.75rem; font-size: 0.8rem; }

  /* Homepage new header */
  .ff-header-row1 { padding: 18px 24px; }
  .ff-header-logo  { height: 40px; }
  /* Cart moves to left, hamburger stays right */
  .ff-header-actions { right: 24px; gap: 0; }
  .ff-header-icon {
    position: absolute;
    left: 24px;
    right: auto;
    top: 50%;
    transform: translateY(-50%);
  }

  /* Editorial blocks */
  .ed-block { height: 60vh; min-height: 360px; }
  .ed-slideshow { height: 55vh; }
  .ed-block-headline { font-size: clamp(1.375rem, 5vw, 2.25rem); }

  /* Collections */
  .coll-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; }
  .video-row { grid-template-columns: repeat(2, 1fr); gap: 1rem; }

  /* Category pages */
  .products-grid { grid-template-columns: 1fr 1fr; }
  .product-grid  { grid-template-columns: 1fr 1fr; }
  .story-grid    { grid-template-columns: 1fr; }

  /* Category footers — removed, replaced by .lux-footer */
}

/* Small mobile: 479px */
@media (max-width: 640px) {
  .coll-grid     { grid-template-columns: 1fr; }
  .video-row     { grid-template-columns: 1fr; }
  .product-grid  { grid-template-columns: 1fr; }
  .ed-slideshow  { height: 45vh; }
}

/* Very small: 374px */
@media (max-width: 374px) {
  .products-grid { grid-template-columns: 1fr; }
}


/* ══════════════════════════════════════════════════════════════
   CUSTOM PAGE — PAGE-LOAD ENTRANCE ANIMATIONS
   ══════════════════════════════════════════════════════════════ */

.custom-entrance {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.custom-entrance.entered {
  opacity: 1;
  transform: translateY(0);
}

.custom-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.custom-word.entered {
  opacity: 1;
  transform: translateY(0);
}

/* ══════════════════════════════════════════════════════════════
   PAGE LOADER
   ══════════════════════════════════════════════════════════════ */
.page-loader {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
              visibility 0.8s;
}
.page-loader.loaded {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.page-loader-logo {
  height: 60px;
  width: auto;
  opacity: 0;
  transform: scale(0.9);
  animation: loaderFadeIn 0.6s cubic-bezier(0.16, 1, 0.3, 1) 0.1s forwards;
}
@keyframes loaderFadeIn {
  to { opacity: 1; transform: scale(1); }
}

/* ══════════════════════════════════════════════════════════════
   SCROLL PROGRESS BAR
   ══════════════════════════════════════════════════════════════ */
.scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--gold);
  z-index: 200;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.1s linear;
  will-change: transform;
  pointer-events: none;
}

/* ══════════════════════════════════════════════════════════════
   MAGNETIC WILL-CHANGE
   ══════════════════════════════════════════════════════════════ */
.ed-block-btn,
.gallery-load-btn {
  display: inline-block;
  background: transparent;
  color: var(--gold);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 14px 36px;
  border: 1px solid var(--gold);
  transition:
    background-color var(--dur-std) var(--ease-luxury),
    color var(--dur-std) var(--ease-luxury);
}
.contact-btn {
  display: inline-block;
  background: var(--gold);
  color: var(--white);
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 14px 36px;
  border: 1px solid var(--gold);
  transition:
    background-color var(--dur-std) var(--ease-luxury),
    color var(--dur-std) var(--ease-luxury);
}
.contact-btn:hover {
  background: transparent;
  color: var(--gold);
}

/* ══════════════════════════════════════════════════════════════
   CATEGORY PAGE ENTRANCE ANIMATIONS
   ══════════════════════════════════════════════════════════════ */
.cat-entrance {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.cat-entrance.c-entered {
  opacity: 1;
  transform: translateY(0);
}
.cat-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.cat-word.c-entered {
  opacity: 1;
  transform: translateY(0);
}

/* ══════════════════════════════════════════════════════════════
   CLIP-PATH PRODUCT CARD REVEALS
   ══════════════════════════════════════════════════════════════ */
.product-card.clip-reveal {
  clip-path: none;
  transition: none;
}
.product-card.clip-reveal.revealed {
  clip-path: none;
}
.product-card.clip-reveal.reveal-delay-1 { transition-delay: 100ms; }
.product-card.clip-reveal.reveal-delay-2 { transition-delay: 200ms; }
.product-card.clip-reveal.reveal-delay-3 { transition-delay: 300ms; }

/* ══════════════════════════════════════════════════════════════
   NAV ACTIVE STATE
   ══════════════════════════════════════════════════════════════ */
.ff-nav-links > li > a.nav-active,
.ff-nav-links > li > .nav-dropdown-trigger.nav-active {
  position: relative;
}
.ff-nav-links > li > a.nav-active::after,
.ff-nav-links > li > .nav-dropdown-trigger.nav-active::after {
  content: '';
  position: absolute;
  bottom: -8px;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--white);
  opacity: 0.6;
}

/* ══════════════════════════════════════════════════════════════
   FOOTER SECTION BLEND (removed — .lux-footer is dark, no blend needed)
   ══════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════
   LIGHTBOX
   ══════════════════════════════════════════════════════════════ */

/* Hide chat widget when any lightbox is open */
body.lightbox-open .ff-chat-bubble,
body.lightbox-open .ff-chat-label,
body.lightbox-open .ff-chat-panel { display: none; }

body.lightbox-open { overflow: hidden; }

.lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.95);
  display: none;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  z-index: 9000;
  opacity: 0;
  transition: opacity 300ms ease;
  cursor: pointer;
}
.lightbox.active {
  opacity: 1;
}
.lightbox-content {
  transform: scale(0.85);
  opacity: 0;
  transition: transform 400ms cubic-bezier(0.16, 1, 0.3, 1), opacity 400ms ease;
  text-align: center;
  cursor: default;
}
.lightbox.active .lightbox-content {
  transform: scale(1);
  opacity: 1;
}
.lightbox-img {
  max-height: 85vh;
  max-width: 90vw;
  object-fit: contain;
  display: block;
  border: none;
  outline: none;
  box-shadow: none;
}
.lightbox-close {
  position: absolute;
  top: -3rem;
  right: 0;
  color: #fff;
  font-size: 1.5rem;
  background: none;
  border: none;
  cursor: pointer;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.7;
  transition: opacity 300ms ease;
  z-index: 9001;
}
.lightbox-close:hover { opacity: 1; }
.lightbox-close:focus-visible { outline: 2px solid rgba(255,255,255,0.5); outline-offset: 2px; }
.lightbox-name {
  color: #fff;
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.1rem;
  font-weight: 400;
  margin-top: 1.2rem;
}
.lightbox-price {
  color: #C49A0C;
  font-family: 'Libre Franklin', sans-serif;
  font-size: 1rem;
  font-weight: 500;
  margin-top: 0.3rem;
}
/* ══════════════════════════════════════════════════════════════
   VIDEO SPLIT — 50/50 editorial video left, text right
   ══════════════════════════════════════════════════════════════ */

.vid-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
}

/* Video column: full-bleed cover, no padding */
.vid-split-video-col {
  position: relative;
  overflow: hidden;
  min-height: clamp(400px, 50vh, 600px);
}

.vid-split-video-col video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--dur-ken-burns) var(--ease-luxury);
  transform: scale(1);
  transform-origin: center center;
}

.vid-split-video-col.kb-active video {
  transform: scale(1.05);
}

/* ─── EDITORIAL VIDEO ───────────────────────────────────────────────────────── */
.editorial-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Instagram link — absolute, bottom-left of video column */
.vid-split-ig {
  position: absolute;
  bottom: 1rem;
  left: 1rem;
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  opacity: 0.55;
  transition: opacity var(--dur-std) var(--ease-luxury),
              transform var(--dur-std) var(--ease-luxury);
}

.vid-split-ig:hover,
.vid-split-ig:focus-visible {
  opacity: 1;
  transform: scale(1.08);
}

.vid-split-ig:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}

.vid-split-ig svg {
  display: block;
  width: 20px;
  height: 20px;
  fill: none;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}

.vid-split-ig span {
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.8);
}
@media (max-width: 767px) {
  .vid-split-ig span { font-size: 0.8125rem; }
}

/* Text column */
.vid-split-text-col {
  background: #1A1A1A;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding: clamp(2rem, 5vw, 4rem);
}

.vid-split-label {
  font-family: var(--font-body);
  font-size: 0.8125rem;
  font-weight: 400;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--champagne);
  margin: 0 0 0.875rem;
}

.vid-split-headline {
  font-family: var(--font-display);
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  font-weight: 300;
  line-height: 1.1;
  color: #FFFFFF;
  margin: 0 0 1.25rem;
}

.vid-split-body {
  font-family: var(--font-body);
  font-size: 0.875rem;
  font-weight: 300;
  line-height: 1.75;
  color: rgba(255,255,255,0.55);
  margin: 0 0 2rem;
  max-width: 38ch;
}

.vid-split-btn {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  text-decoration: none;
  color: #FFFFFF;
  background: var(--gold);
  padding: 0.875rem 2rem;
  transition: background var(--dur-std) var(--ease-luxury);
  align-self: flex-start;
}

.vid-split-btn:hover {
  background: #a8840a;
}

/* Instagram button below Discover Our Story */
.vid-split-ig-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 0.875rem;
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 400;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  text-decoration: none;
  color: rgba(255,255,255,0.6);
  border: 1px solid rgba(255,255,255,0.2);
  padding: 0.75rem 1.5rem;
  align-self: flex-start;
  transition: color 250ms ease, border-color 250ms ease, transform 250ms ease;
}
.vid-split-ig-btn:hover,
.vid-split-ig-btn:focus-visible {
  color: rgba(255,255,255,0.95);
  border-color: rgba(255,255,255,0.5);
  transform: translateY(-1px);
}
.vid-split-ig-btn:active {
  transform: translateY(0);
}

/* Instagram link inside text column (inline, not absolute) */
.vid-split-ig-inline {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  opacity: 0.7;
  transition: opacity var(--dur-std) var(--ease-luxury);
}

.vid-split-ig-inline:hover,
.vid-split-ig-inline:focus-visible {
  opacity: 1;
}

.vid-split-ig-inline span {
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.6);
}
@media (max-width: 767px) {
  .vid-split-ig-inline span { font-size: 0.8125rem; }
}

@media (prefers-reduced-motion: reduce) {
  .vid-split-video-col video { transition: none !important; transform: none !important; }
  .vid-split-video-col.kb-active video { transform: none; }
}

@media (max-width: 768px) {
  .vid-split { grid-template-columns: 1fr; }
  .vid-split-video-col { min-height: clamp(260px, 50vw, 420px); }
}

/* ══════════════════════════════════════════════════════════════
   CUSTOM TEASER
   ══════════════════════════════════════════════════════════════ */

.custom-teaser {
  background: var(--white);
  padding: clamp(5rem, 8vw, 8rem) clamp(1.5rem, 6vw, 7.5rem);
}
.custom-teaser-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(3rem, 5vw, 5rem);
  align-items: center;
}
.custom-teaser-text { text-align: left; }
.custom-teaser-eyebrow {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 1.25rem;
}
.custom-teaser-headline {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2rem, 3.5vw, 3rem);
  color: var(--black);
  letter-spacing: 0.03em;
  line-height: 1.15;
  margin-bottom: 2rem;
}
.custom-teaser-images {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: repeat(3, 1fr);
  gap: clamp(0.75rem, 1.5vw, 1rem);
}
.custom-teaser-img {
  margin: 0;
  overflow: hidden;
}
.custom-teaser-img img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.custom-teaser-img:hover img { transform: scale(1.04); }
.custom-teaser-btn {
  display: inline-block;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--white);
  background: var(--gold);
  padding: 1rem 3rem;
  text-decoration: none;
  transition: background-color 0.3s cubic-bezier(0.16, 1, 0.3, 1), color 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.custom-teaser-btn:hover {
  background: var(--black);
  color: var(--white);
}
@media (max-width: 767px) {
  .custom-teaser-inner { grid-template-columns: 1fr; }
  .custom-teaser-text { text-align: center; }
  .custom-teaser-images {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
  }
}

/* ══════════════════════════════════════════════════════════════
   HOMEPAGE §2 — STORY PREVIEW SPLIT
   ══════════════════════════════════════════════════════════════ */

.story-preview {
  max-width: 820px;
  margin: 0 auto;
  padding: clamp(4rem, 7vw, 7rem) clamp(1.5rem, 6vw, 4rem);
  text-align: center;
}
.story-preview-text-col {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.story-preview-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--champagne);
  margin-bottom: 1.25rem;
}
.story-preview-heading {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(1.75rem, 3vw, 2.75rem);
  letter-spacing: 0.04em;
  line-height: 1.2;
  color: var(--black);
  margin-bottom: 1.5rem;
}
.story-preview-body {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 2;
  color: rgba(26,26,26,0.6);
  margin-bottom: 2rem;
  max-width: 44ch;
}
.story-preview-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--black);
}
.story-preview-cta:focus-visible {
  outline: 2px solid var(--black);
  outline-offset: 3px;
}
.story-preview-cta:active { opacity: 0.7; }
.story-preview-cta-logo {
  height: 20px;
  width: auto;
  opacity: 0.65;
  flex-shrink: 0;
}
.story-preview-cta-arrow {
  display: inline-block;
  transition: transform 400ms cubic-bezier(0.16, 1, 0.3, 1);
}
.story-preview-cta:hover .story-preview-cta-arrow {
  transform: translateX(6px);
}


/* ─── VIDEO SHOWCASE — Ken Burns zoom, hover overlay, click-to-fullscreen ──── */
.video-showcase {
  position: relative;
  overflow: hidden;
  cursor: pointer;
  touch-action: manipulation;
  display: block;
}

/* Dark overlay fades in on hover */
.video-showcase::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0);
  transition: background var(--dur-slow) var(--ease-luxury);
  z-index: 2;
  pointer-events: none;
}
.video-showcase:hover::before {
  background: rgba(0, 0, 0, 0.2);
}

/* Centered icon + label — visible on hover */
.video-showcase__icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  z-index: 3;
  opacity: 0;
  transition: opacity var(--dur-std) var(--ease-luxury);
  pointer-events: none;
}
.video-showcase:hover .video-showcase__icon {
  opacity: 1;
}

/* Expand icon — corner-bracket arrows via inline SVG data URI */
.video-showcase__expand {
  display: block;
  width: 32px;
  height: 32px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='rgba(255,255,255,0.9)' stroke-width='1.5' stroke-linecap='square'%3E%3Cpath d='M2 10V2h8M22 2h8v8M30 22v8h-8M10 30H2v-8'/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

/* "Click to expand" label */
.video-showcase__label {
  font-family: var(--font-body);
  font-size: 0.5625rem;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.6);
  white-space: nowrap;
}

/* Ken Burns: video scales slowly when .kb-active is added via JS */
.video-showcase video {
  transition: transform var(--dur-ken-burns) var(--ease-luxury);
  transform: scale(1);
  transform-origin: center center;
}
.video-showcase.kb-active video {
  transform: scale(1.05);
}

/* Reduced motion: disable all showcase animations */
@media (prefers-reduced-motion: reduce) {
  .video-showcase::before { transition: none; }
  .video-showcase__icon { transition: none; }
  .video-showcase video { transition: none !important; transform: none !important; }
}



/* ══════════════════════════════════════════════════════════════
   ABOUT PAGE — Editorial Redesign
   ══════════════════════════════════════════════════════════════ */

/* §1 Hero */
.about-hero {
  position: relative;
  min-height: 70vh;
  height: 85vh;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #111;
}
.about-hero-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transform: scale(1);
  transition: transform 8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
  image-rendering: high-quality;
}
.about-hero.kb-active .about-hero-img {
  transform: scale(1.03);
}

/* ─── ABOUT HERO VIDEO */
.about-hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 60%;
  z-index: 0;
}

/* ─── ABOUT CONTACT CTAs */
.about-contact-ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: 1.5rem;
  justify-content: center;
}
.about-hero-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.45);
  z-index: 1;
}
.about-hero-content {
  position: relative;
  z-index: 2;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 clamp(1.5rem, 6vw, 6rem);
}
.about-hero-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.65rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.75);
  margin-bottom: 1.25rem;
}
.about-hero-headline {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2rem, 5vw, 4rem);
  letter-spacing: 0.08em;
  line-height: 1.15;
  color: var(--white);
}
.about-scroll-hint {
  display: block;
  width: 1px;
  height: 48px;
  background: rgba(255,255,255,0.35);
  margin-top: 3rem;
  animation: scrollPulse 2.4s cubic-bezier(0.16, 1, 0.3, 1) infinite;
}
@keyframes scrollPulse {
  0%, 100% { opacity: 0.15; transform: scaleY(0.4); }
  50%       { opacity: 0.65; transform: scaleY(1); }
}

/* §2–3 Split layouts */
.about-split {
  display: grid;
  grid-template-columns: 55fr 45fr;
  min-height: 70vh;
}
.about-split--flip {
  grid-template-columns: 45fr 55fr;
}
.about-split-img-col {
  overflow: hidden;
}
.about-split-img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center;
  filter: saturate(0.82) contrast(0.97);
  transform: scale(1);
  transition: transform 8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}
.about-split-img.kb-active {
  transform: scale(1.04);
}
.about-split-text-col {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(3rem, 6vw, 6rem);
  background: var(--white);
}
.about-split-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--champagne);
  margin-bottom: 1.25rem;
}
.about-split-heading {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(1.75rem, 3vw, 2.75rem);
  letter-spacing: 0.04em;
  line-height: 1.2;
  color: var(--black);
  margin-bottom: 1.5rem;
}
.about-split-rule {
  width: 48px;
  height: 1px;
  background: var(--champagne);
  margin-bottom: 1.75rem;
  flex-shrink: 0;
}
.about-split-body {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 2;
  color: rgba(26,26,26,0.6);
  margin-bottom: 1.25rem;
}
.about-split-body:last-child { margin-bottom: 0; }

/* ─── ABOUT PULL QUOTE ──────────────────────────────────────────────────────── */

.about-pullquote {
  background-color: var(--charcoal);
  padding: clamp(4rem, 8vw, 7rem) clamp(2rem, 6vw, 8rem);
  text-align: center;
}

.about-pullquote-inner {
  max-width: 800px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.t-quote {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 3vw, 2.5rem);
  font-weight: 400;
  font-style: italic;
  color: var(--cream);
  line-height: 1.4;
  max-width: 700px;
  margin: 0 auto 2rem;
}

.rule-champagne-short {
  display: block;
  width: 60px;
  height: 1px;
  background: var(--champagne);
  opacity: 0.5;
  margin-bottom: 1.5rem;
}

.about-pullquote .t-label {
  color: var(--champagne);
  letter-spacing: 0.22em;
}

/* §5 Numbers */
.about-numbers {
  background: var(--charcoal);
  padding: clamp(4rem, 8vw, 7rem) clamp(1.5rem, 6vw, 6rem);
}
.about-numbers-inner {
  max-width: 1100px;
  margin: 0 auto;
}
.about-numbers-grid {
  display: flex;
  align-items: center;
  justify-content: center;
}
.about-counter {
  flex: 1;
  text-align: center;
  padding: 0 clamp(1rem, 3vw, 2.5rem);
}
.about-counter-num {
  display: block;
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(3rem, 6vw, 5.5rem);
  color: var(--white);
  letter-spacing: -0.02em;
  line-height: 1;
  margin-bottom: 0.75rem;
}
.about-counter-label {
  display: block;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--champagne);
}
.about-counter-rule {
  width: 1px;
  height: 64px;
  background: rgba(196,154,12,0.3);
  flex-shrink: 0;
}

/* §6 Closing CTA */
.about-cta {
  background: var(--ivory);
  padding: clamp(4rem, 8vw, 7rem) clamp(1.5rem, 6vw, 6rem);
  text-align: center;
}
.about-cta-inner {
  max-width: 640px;
  margin: 0 auto;
}
.about-cta-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--champagne);
  margin-bottom: 1.25rem;
}
.about-cta-heading {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(1.75rem, 3.5vw, 3rem);
  letter-spacing: 0.04em;
  line-height: 1.2;
  color: var(--black);
  margin-bottom: 1.5rem;
}
.about-cta-body {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 2;
  color: rgba(26,26,26,0.55);
  margin-bottom: 2.5rem;
}
.about-cta-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  flex-wrap: wrap;
}
.about-btn-primary {
  display: inline-block;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 14px 40px;
  background: var(--black);
  color: var(--white);
  border: 1px solid var(--black);
  transition: background 300ms ease, color 300ms ease;
}
.about-btn-primary:hover        { background: var(--white); color: var(--black); }
.about-btn-primary:focus-visible { outline: 2px solid var(--black); outline-offset: 3px; }
.about-btn-primary:active       { opacity: 0.85; }
.about-btn-outline {
  display: inline-block;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 14px 40px;
  background: transparent;
  color: var(--black);
  border: 1px solid var(--black);
  transition: background 300ms ease, color 300ms ease;
}
.about-btn-outline:hover        { background: var(--black); color: var(--white); }
.about-btn-outline:focus-visible { outline: 2px solid var(--black); outline-offset: 3px; }
.about-btn-outline:active       { opacity: 0.85; }

/* About page mobile */
@media (max-width: 768px) {
  .about-hero { height: 65vh; min-height: 420px; }
  .about-split,
  .about-split--flip { grid-template-columns: 1fr; min-height: unset; }
  .about-split-img-col { min-height: 56vw; order: -1; }
  .about-split--flip .about-split-img-col { order: -1; }
  .about-numbers-grid { flex-direction: column; gap: 2.5rem; }
  .about-counter-rule { width: 64px; height: 1px; }
}

/* Reduced motion overrides for about page */
@media (prefers-reduced-motion: reduce) {
  .about-hero.kb-active .about-hero-img { transform: scale(1); image-rendering: high-quality; }
  .about-split-img.kb-active { transform: scale(1); }
  .about-scroll-hint { animation: none; }
}

/* ══════════════════════════════════════════════════════════════
   CUSTOM ARRANGEMENTS — Editorial Showcase (homepage §5)
   ══════════════════════════════════════════════════════════════ */

.cust-showcase {
  background: #1A1A1A;
  padding-bottom: clamp(3rem, 4vw, 4rem);
  contain: layout style;
}

.cust-header {
  text-align: center;
  padding: clamp(5rem, 8vw, 8rem) clamp(1.5rem, 6vw, 7.5rem) clamp(3rem, 4vw, 4rem);
}

.cust-eyebrow {
  display: block;
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--champagne);
  margin-bottom: 1.5rem;
}

.cust-headline {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4vw, 3.5rem);
  font-weight: 300;
  color: #FFFFFF;
  line-height: 1.1;
  letter-spacing: 0.02em;
  margin-bottom: 1.25rem;
}

.cust-subline {
  font-family: var(--font-body);
  font-size: 0.875rem;
  font-weight: 300;
  color: rgba(255,255,255,0.5);
  letter-spacing: 0.05em;
}

/* 3×3 grid */
.cust-gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 5px;
  padding: 0 clamp(0.75rem, 3vw, 3rem);
  max-width: 1600px;
  margin: 0 auto;
}

.cust-item {
  display: block;
}

/* Desktop: show 6 items (3 cols × 2 rows), hide the rest */
.cust-item:nth-child(n+7) { display: none; }

/* Image wrap: Ken Burns + hover overlay */
.cust-img-wrap {
  position: relative;
  overflow: hidden;
  display: block;
  cursor: zoom-in;
  background: #111;
  aspect-ratio: 1 / 1;
}

.cust-img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--dur-ken-burns) var(--ease-luxury);
  transform: scale(1);
  transform-origin: center center;
}

.cust-img-wrap.kb-active img {
  transform: scale(1.02);
}

.cust-item:hover .cust-img-wrap img {
  transform: scale(1.04);
  transition-duration: 0.6s;
}

.cust-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--dur-slow) var(--ease-luxury);
  pointer-events: none;
}

.cust-item:hover .cust-overlay {
  background: rgba(0,0,0,0.35);
}

.cust-overlay-title {
  font-family: var(--font-display);
  font-size: 1.125rem;
  font-weight: 300;
  color: #FFFFFF;
  letter-spacing: 0.06em;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity var(--dur-std) var(--ease-luxury),
              transform var(--dur-std) var(--ease-luxury);
  text-align: center;
  padding: 0 1rem;
}

.cust-item:hover .cust-overlay-title {
  opacity: 0;
  transform: translateY(8px);
}

/* See More */
.cust-more-wrap {
  text-align: center;
  padding: clamp(2.5rem, 4vw, 3.5rem) 0 1.5rem;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 1rem;
}

.cust-more-btn {
  display: block;
  width: 100%;
  max-width: 400px;
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  color: #FFFFFF;
  background: var(--gold);
  border: none;
  padding: 1rem 3rem;
  cursor: pointer;
  transition: background var(--dur-std) var(--ease-luxury);
}

.cust-more-btn:hover {
  background: #a8840a;
}

.cust-more-btn:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}

.cust-phone-display {
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 400;
  color: rgba(196,154,12,0.6);
  margin: -0.25rem 0 0;
  letter-spacing: 0.05em;
  width: 100%;
}

/* Bottom CTA */
.cust-bottom-cta {
  text-align: center;
  padding: 2.5rem 0 clamp(4rem, 6vw, 6rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
}

.cust-order-btn {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: #FFFFFF;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.3);
  padding: 1rem 4rem;
  text-decoration: none;
  transition: background var(--dur-std) var(--ease-luxury),
              color var(--dur-std) var(--ease-luxury),
              border-color var(--dur-std) var(--ease-luxury);
}

.cust-order-btn:hover {
  background: #FFFFFF;
  color: #1A1A1A;
  border-color: #FFFFFF;
}

.cust-phone {
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 300;
  color: rgba(255,255,255,0.35);
  letter-spacing: 0.08em;
}

/* Lightbox */
.cust-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.92);
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--dur-std) var(--ease-luxury),
              visibility var(--dur-std) var(--ease-luxury);
  cursor: pointer;
}

.cust-lightbox.open {
  opacity: 1;
  visibility: visible;
}

.cust-lightbox img {
  max-width: 90vw;
  max-height: 85vh;
  object-fit: contain;
  display: block;
  pointer-events: none;
}

/* @media (max-width: 600px) stale 2-col gallery rule removed — superseded by 767px single-column rule */

/* ══════════════════════════════════════════════════════════════
   REDUCED MOTION
   ══════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
  .reveal { opacity: 1; transform: none; }
  .cust-img-wrap img { transition: none !important; transform: none !important; }
  .cust-overlay { transition: none; }
  .cust-overlay-title { transition: none; transform: none; opacity: 1; }
  .cust-lightbox { transition: none; }
  .ed-block-label,
  .ed-block-headline,
  .ed-block-btn { opacity: 1; transform: none; }
  .ed-block.ed-visible .ed-block-label { opacity: 0.65; }
  .ed-block-img { transition: none; }
  /* Slideshow: skip Ken Burns + progress bar; keep simple crossfade */
  .ed-slideshow .ed-slide.ed-slide-active { animation: none; transform: scale(1); }
  .ed-slideshow .ed-slide.exiting { transform: scale(1); }
  .ed-slideshow::before { display: none; }
  .coll-word { opacity: 1; transform: none; transition: none; }
  .coll-eyebrow-entrance { opacity: 1; transform: none; transition: none; }
  .coll-card.reveal { opacity: 1; transform: none; }
  .coll-card-img, .custom-gallery img { opacity: 1; }
  .gallery-hidden.reveal { opacity: 1; transform: none; }
  .custom-entrance { opacity: 1; transform: none; transition: none; }
  .custom-word { opacity: 1; transform: none; transition: none; }
  .coll-card-overlay { transition: none; }
  .coll-card-name, .coll-card-sub { transition: none; }
  .coll-card-browse { opacity: 1; transform: none; transition: none; }
  .lightbox { transition: none; }
  .lightbox-content { transition: none; }
  .page-loader { display: none; }
  .scroll-progress { display: none; }
  .cat-entrance { opacity: 1; transform: none; transition: none; }
  .cat-word { opacity: 1; transform: none; transition: none; }
  .product-card.clip-reveal { clip-path: none; transition: none; }
  /* New effects: show in final state */
  .coll-card-img-wrap { clip-path: none !important; transition: none !important; }
  .cust-img-wrap { clip-path: none !important; transition: none !important; }
  .cust-eyebrow { transition: none !important; letter-spacing: 0.2em !important; }
  .pullquote-text { transform: none !important; transition: none !important; }
  .testimonial-slide { opacity: 1 !important; transform: none !important; }
}

/* ══════════════════════════════════════════════════════════════
   CLIP-PATH REVEALS — homepage collection cards (left wipe)
   ══════════════════════════════════════════════════════════════ */

.coll-card-img-wrap {
  clip-path: none;
  transition: transform 1.2s var(--ease-luxury);
}
.coll-card-img-wrap.clip-revealed {
  clip-path: none;
}

/* ── Custom gallery: bottom-up clip-path reveal ─────────────── */
.cust-img-wrap {
  clip-path: none;
  transition: transform var(--dur-ken-burns) var(--ease-luxury);
}
.cust-img-wrap.clip-revealed {
  clip-path: none;
}

/* Custom gallery: brightness on hover — removed (avoided filter softness) */

/* ── Letter-spacing tighten on cust-eyebrow ─────────────────── */
.cust-eyebrow {
  letter-spacing: 0.32em;
  transition: letter-spacing 1.2s var(--ease-luxury);
}
.cust-eyebrow.ls-tightened {
  letter-spacing: 0.2em;
}

/* ── Pullquote parallax target ───────────────────────────────── */
.pullquote-text {
  will-change: transform;
}

/* ══════════════════════════════════════════════════════════════
   TESTIMONIALS SECTION
   ══════════════════════════════════════════════════════════════ */

.testimonials-section {
  background: var(--charcoal);
  padding: clamp(5rem, 8vw, 8rem) clamp(1.5rem, 6vw, 7.5rem);
}

.testimonials-inner {
  max-width: 800px;
  margin: 0 auto;
  text-align: center;
}

.testimonials-label {
  display: block;
  font-family: var(--font-body);
  font-size: 0.625rem;
  font-weight: 400;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--champagne);
  margin-bottom: 0.875rem;
}

.testimonials-heading {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  color: var(--cream);
  margin-bottom: clamp(2.5rem, 4vw, 3.5rem);
}

/* ─── TESTIMONIAL CAROUSEL ──────────────────────────────────────────────────── */

.testimonial-carousel {
  position: relative;
  text-align: center;
}

.testimonial-carousel-track {
  position: relative;
  min-height: 200px;
}

.testimonial-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 600ms var(--ease-luxury);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}

.testimonial-slide.active {
  opacity: 1;
  position: relative;
  pointer-events: auto;
}

.testimonial-quote {
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.125rem, 2vw, 1.5rem);
  line-height: 1.65;
  color: var(--cream);
  max-width: 600px;
  margin: 0 auto 1.5rem;
}

.testimonial-author {
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--champagne);
  margin-top: 0;
}

.testimonial-dots {
  display: flex;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 2.5rem;
}

.testimonial-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--champagne);
  opacity: 0.3;
  border: none;
  cursor: pointer;
  padding: 0;
  transition: opacity 300ms var(--ease-luxury);
}

.testimonial-dot.active { opacity: 1; }
.testimonial-dot:hover  { opacity: 0.7; }

/* Reduced-motion: show all slides stacked, no animation */
@media (prefers-reduced-motion: reduce) {
  .testimonial-slide {
    position: relative;
    inset: auto;
    opacity: 1;
    transition: none;
    margin-bottom: 2.5rem;
  }
  .testimonial-carousel-track { min-height: 0; }
  .testimonial-dots { display: none; }
}

/* ─── KEN BURNS SCROLL ZOOM ─────────────────────────────────────────────────── */

@keyframes kenBurnsZoom {
  from { transform: scale(1); }
  to   { transform: scale(1.03); }
}

/* Applied to wrapper elements (coll-card-img-wrap) for Ken Burns zoom */
.kb-zoom {
  animation: kenBurnsZoom 10s ease-in-out forwards;
  animation-play-state: paused;
}

.kb-zoom.kb-active {
  animation-play-state: running;
}

@media (prefers-reduced-motion: reduce) {
  .kb-zoom {
    animation: none;
  }
}

/* ══════════════════════════════════════════════════════════════
   MOBILE QA FIXES
   ══════════════════════════════════════════════════════════════ */

/* ── Tablet 1023px ──────────────────────────────────────────── */
@media (max-width: 1023px) {
  /* Custom gallery: 2 cols at tablet */
  .cust-gallery { grid-template-columns: repeat(2, 1fr); }
  /* Note: 767px breakpoint below overrides this for mobile with single column */
}

/* ── Mobile 767px ───────────────────────────────────────────── */
@media (max-width: 767px) {
  /* Custom gallery: bypass clip-path scroll animation — show images immediately.
     The IntersectionObserver reveal is unreliable on mobile (items near fold,
     viewport size variance). Images are hidden until the observer fires, which
     causes only 1–2 images to appear. Remove clip-path entirely on mobile. */
  /* Mobile: 3 centered items in a single column */
  .cust-gallery {
    grid-template-columns: 1fr !important;
    max-width: 420px;
    margin-left: auto;
    margin-right: auto;
  }
  .cust-item {
    width: 100%;
    max-width: 360px;
    margin-left: auto;
    margin-right: auto;
  }
  .cust-item:nth-child(n+4) { display: none !important; }
  .cust-img-wrap {
    clip-path: none !important;
    transition: transform var(--dur-ken-burns) var(--ease-luxury);
  }

  /* Touch targets: primary action buttons */
  .btn-primary,
  .btn-outline,
  .btn-outline-dark {
    min-height: 44px;
  }

  .vid-split-btn {
    min-height: 44px;
    padding-top: 0.9375rem;
    padding-bottom: 0.9375rem;
  }

  .contact-btn {
    min-height: 44px;
    padding-top: 1rem;
    padding-bottom: 1rem;
  }

  .sub-nav-link {
    padding-top: 0.875rem;
    padding-bottom: 0.875rem;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }

  /* Video row: reduce aspect ratio on mobile so cards aren't too tall */
  .video-row-card .coll-card-img-wrap {
    aspect-ratio: 4 / 3;
  }
}

/* ── Small mobile 640px ─────────────────────────────────────── */
@media (max-width: 640px) {
  /* Custom gallery: keep the single-column mobile stack centered */
  .cust-gallery {
    grid-template-columns: 1fr;
    justify-items: center;
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }

  /* CTA button row: stack buttons full-width and centered */
  .cust-more-wrap {
    flex-direction: column;
    align-items: center;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }

  .cust-more-wrap .btn-primary,
  .cust-more-wrap .btn-outline {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  .cust-phone-display {
    text-align: center;
  }

  /* About page numbers: reduce counter font so 4 items don't crowd */
  .about-counter-num {
    font-size: clamp(2.25rem, 10vw, 3.5rem);
  }

}

/* ── Very small 374px ───────────────────────────────────────── */
@media (max-width: 374px) {
  /* Custom gallery: keep the single-column mobile stack on very small phones */
  .cust-gallery {
    grid-template-columns: 1fr;
    justify-items: center;
    max-width: 320px;
    margin-left: auto;
    margin-right: auto;
  }

  /* Hero slideshow: prevent excessive height on very small phones */
  .ed-slideshow { height: 40vh; min-height: 280px; }

  /* Page hero on category pages */
  .page-hero { min-height: 35vh; }
  .page-hero-headline { font-size: 2rem; }

  /* Collection grid: single column already applies, just tighten gap */
  .coll-grid { gap: 0.75rem; }

  /* Contact details: ensure phone numbers don't break layout */
  .contact-detail-value { font-size: 0.875rem; }
}

/* ── Testimonial dot touch target (all breakpoints) ─────────── */
/* Expand tap area with padding + negative margin trick */
.testimonial-dot {
  padding: 18px;
  margin: -18px;
}


/* ─────────────────────────────────────────────────────────────────────────────
   CUSTOM PAGE REDESIGN — §1 hero tweak, §3 gallery, §4 lightbox
   ───────────────────────────────────────────────────────────────────────────── */

/* §1 — Split hero overrides */
.custom-hero-split {
  min-height: 85vh;
}

/* Video fills the left column like an image would */
.custom-hero-split .about-split-img {
  filter: none;
  transition: none;
  transform: none !important;
}

/* Dark text column */
.custom-hero-text {
  background: var(--black);
  justify-content: center;
  gap: 0;
}

.custom-hero-text .about-hero-label {
  margin-bottom: 1.5rem;
}

.custom-hero-text .about-hero-headline {
  font-size: clamp(2rem, 4vw, 3.5rem);
}

/* Mobile: video on top, text below */
@media (max-width: 768px) {
  .custom-hero-split {
    grid-template-columns: 1fr;
    min-height: unset;
  }
  .custom-hero-split .about-split-img-col {
    min-height: 56vw;
    order: -1;
  }
  .custom-hero-text {
    padding: clamp(2.5rem, 6vw, 4rem);
  }
}

/* §2 — Split: image on left, text on right (default about-split order) */
/* §2 — Split slideshow */
.custom-split-slides {
  position: relative;
}

.custom-slide {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  filter: saturate(0.88) contrast(0.96);
  opacity: 0;
  transition: opacity 900ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity;
}

/* First slide is relative before JS initialises — holds the column height */
.custom-slide--active {
  opacity: 1;
  position: relative;
}

/* After JS marks the container ready, all slides go absolute */
.custom-split-slides.js-ready .custom-slide {
  position: absolute;
}

.custom-split-slides.js-ready .custom-slide--active {
  opacity: 1;
}

/* §3 — Gallery section wrapper */
.cust-pg-gallery-section {
  background: var(--white);
  padding: clamp(4rem, 7vw, 7rem) clamp(1.5rem, 5vw, 5rem);
}

.cust-pg-gallery-header {
  text-align: center;
  margin-bottom: clamp(2.5rem, 4vw, 4rem);
}

.cust-pg-gallery-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 0.875rem;
}

.cust-pg-gallery-heading {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(1.75rem, 3vw, 2.75rem);
  letter-spacing: 0.04em;
  color: var(--black);
}

/* §3 — Grid */
.cust-pg-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(0.5rem, 1vw, 1rem);
  max-width: 1400px;
  margin: 0 auto;
}

/* §3 — Individual cell */
.cg-item {
  position: relative;
  overflow: hidden;
  cursor: pointer;
  aspect-ratio: 4 / 5;
  background: #111;
}

.cg-item picture,
.cg-item img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 600ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}

.cg-item:hover img,
.cg-item:focus-visible img {
  transform: scale(1.04);
}

/* Bottom gradient overlay — appears on hover */
.cg-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.45) 0%, transparent 45%);
  opacity: 0;
  transition: opacity 300ms cubic-bezier(0.16, 1, 0.3, 1);
  pointer-events: none;
}

.cg-item:hover .cg-overlay,
.cg-item:focus-visible .cg-overlay {
  opacity: 1;
}

.cg-item:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}

/* §4 — Lightbox */
.cust-lb {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 300ms cubic-bezier(0.16, 1, 0.3, 1);
}

.cust-lb.open {
  opacity: 1;
  pointer-events: all;
}

.cust-lb-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.92);
}

.cust-lb-img {
  position: relative;
  z-index: 1;
  max-width: 90vw;
  max-height: 85vh;
  object-fit: contain;
  display: block;
  transition: opacity 150ms;
}

.cust-lb-close {
  position: absolute;
  top: 1.25rem;
  right: 1.5rem;
  z-index: 2;
  background: none;
  border: none;
  color: rgba(255,255,255,0.7);
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.5rem;
  transition: color 200ms;
}

.cust-lb-close:hover { color: var(--white); }

.cust-lb-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  background: none;
  border: none;
  color: rgba(255,255,255,0.5);
  font-size: 1.75rem;
  line-height: 1;
  cursor: pointer;
  padding: 1.5rem 1rem;
  transition: color 200ms;
}

.cust-lb-nav:hover { color: var(--white); }
.cust-lb-prev { left: 0.5rem; }
.cust-lb-next { right: 0.5rem; }

/* §3 — Responsive gallery grid */
@media (max-width: 900px) {
  .cust-pg-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 540px) {
  .cust-pg-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 0.375rem;
  }
  .cust-pg-gallery-section {
    padding: 3rem 1rem;
  }
  .cust-lb-nav {
    padding: 1rem 0.5rem;
    font-size: 1.25rem;
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .cg-item img,
  .cg-overlay,
  .cust-lb { transition: none; }
  .cg-item:hover img { transform: none; }
}

/* ─────────────────────────────────────────────────────────────────────────────
   CUSTOM PAGE — Teaser grid, gold CTA, fullscreen gallery overlay
   ───────────────────────────────────────────────────────────────────────────── */

/* Teaser 2×3 grid */
.cust-teaser-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(0.375rem, 0.75vw, 0.75rem);
  max-width: 960px;
  margin: 0 auto;
}

.cust-teaser-item {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: #111;
}

.cust-teaser-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  transition: transform 600ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}

.cust-teaser-item:hover img {
  transform: scale(1.03);
}

/* Gold "View Full Gallery" CTA */
.cust-gallery-btn-wrap {
  text-align: center;
  margin-top: clamp(2rem, 3vw, 3rem);
}

.cust-gallery-btn {
  display: inline-block;
  background: var(--gold);
  color: #FFFFFF;
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding: 1rem 2.5rem;
  border: none;
  cursor: pointer;
  transition: background 250ms cubic-bezier(0.16, 1, 0.3, 1),
              transform  250ms cubic-bezier(0.16, 1, 0.3, 1);
}

.cust-gallery-btn:hover {
  background: #a8850a;
}

.cust-gallery-btn:active {
  transform: scale(0.97);
}

.cust-gallery-btn:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}

/* Fullscreen gallery overlay */
.gallery-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(0, 0, 0, 0.95);
  display: flex;
  flex-direction: column;
  opacity: 0;
  visibility: hidden;
  transition: opacity 400ms cubic-bezier(0.16, 1, 0.3, 1),
              visibility 400ms;
}

.gallery-overlay.is-open {
  opacity: 1;
  visibility: visible;
}

.gallery-overlay-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.25rem 1.75rem;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  flex-shrink: 0;
}

.gallery-overlay-label {
  font-family: 'Libre Franklin', sans-serif;
  font-weight: 400;
  font-size: 0.625rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.55);
}

.gallery-overlay-close {
  background: none;
  border: none;
  color: rgba(255,255,255,0.65);
  font-size: 1.75rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.5rem;
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 200ms;
}

.gallery-overlay-close:hover { color: #fff; }

.gallery-overlay-body {
  flex: 1;
  overflow-y: auto;
  padding: clamp(1rem, 2vw, 2rem);
  -webkit-overflow-scrolling: touch;
}

.gallery-overlay-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(0.375rem, 0.75vw, 0.75rem);
  max-width: 1400px;
  margin: 0 auto;
}

.go-item {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: #111;
}

.go-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  transition: transform 600ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}

.go-item:hover img {
  transform: scale(1.03);
}

/* Overlay responsive */
@media (max-width: 1023px) {
  .gallery-overlay-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
  .gallery-overlay-grid { grid-template-columns: 1fr; }
  .cust-teaser-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .gallery-overlay { transition: none; }
  .cust-teaser-item img,
  .go-item img { transition: none; }
  .cust-teaser-item:hover img,
  .go-item:hover img { transform: none; }
}
