:root{
  /* ---- Logo-derived palette: black canvas, cream type, gold accent ---- */
  --color-black: #0b0a08;
  --color-surface: #17130e;      /* card / tile surfaces, one step off black */
  --color-surface-2: #1e1912;    /* slightly lighter surface for contrast on surface */
  --color-border: rgba(233,201,148,0.16);
  --color-cream: #f2e7d3;        /* primary text */
  --color-muted: rgba(242,231,211,0.62);
  --color-gold: #c9a463;
  --color-gold-bright: #e8c987;
  --color-gold-dim: rgba(201,164,99,0.14);

  --font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;

  --tracking: -0.02em;

  --radius-sm: 3px;
  --radius-card: 15px;
  --radius-input: 18px;
  --radius-pill: 87.5px;
  --radius-frame: 100px;

  --shadow-md: rgba(0,0,0,0.4) 0px 10px 30px 0px, rgba(201,164,99,0.08) 0px 1px 0px 0px inset;
  --shadow-gold: rgba(201,164,99,0.25) 0px 10px 40px 0px;

  --section-gap: 72px;
  --page-max: 1400px;

  --ease: cubic-bezier(.22,.9,.25,1);
}

*{ box-sizing: border-box; }

html{ background: var(--color-black); }

body{
  margin: 0;
  background: var(--color-black);
  color: var(--color-cream);
  font-family: var(--font);
  font-weight: 400;
  letter-spacing: var(--tracking);
  -webkit-font-smoothing: antialiased;
}

img, svg{ display: block; max-width: 100%; }
a{ color: inherit; }
button{ font-family: inherit; }

.wrap{
  max-width: var(--page-max);
  margin: 0 auto;
  padding: 0 40px;
}

.eyebrow{
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-gold);
  margin: 0 0 16px;
}
.eyebrow.center{ text-align: center; }

.section{
  padding: var(--section-gap) 0;
}
.section-head{
  max-width: 720px;
  margin: 0 0 48px;
}
.section-head.center{
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
h2.heading{
  font-size: clamp(30px, 4vw, 38px);
  line-height: 1.15;
  letter-spacing: -0.76px;
  font-weight: 500;
  margin: 0;
  color: var(--color-cream);
}

/* ---------- Scroll progress bar ---------- */
#scroll-progress{
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, var(--color-gold), var(--color-gold-bright));
  z-index: 300;
  box-shadow: 0 0 8px rgba(201,164,99,0.6);
}

/* ---------- Loader ---------- */
#loader{
  position: fixed;
  inset: 0;
  z-index: 200;
  background: var(--color-black);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 18px;
}
.loader-mark{
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.3em;
  color: var(--color-cream);
  opacity: 0;
  animation: loaderFade 1.4s var(--ease) forwards;
}
.loader-bar{
  width: 140px;
  height: 1px;
  background: var(--color-border);
  overflow: hidden;
}
.loader-bar span{
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--color-gold), var(--color-gold-bright));
  animation: loaderBar 1s var(--ease) forwards;
}
@keyframes loaderFade{ 0%{ opacity:0; } 100%{ opacity:1; } }
@keyframes loaderBar{ 0%{ width:0%; } 100%{ width:100%; } }

/* ---------- Buttons ---------- */
.pill{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 24px;
  border-radius: var(--radius-pill);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: var(--tracking);
  text-transform: uppercase;
  text-decoration: none;
  border: none;
  cursor: pointer;
  box-shadow: var(--shadow-md);
  transition: opacity .2s var(--ease), transform .2s var(--ease);
}
.pill:hover{ opacity: 0.85; }
.pill:active{ transform: scale(0.97); }
.pill-dark{ background: linear-gradient(135deg, var(--color-gold-bright), var(--color-gold)); color: #1a1409; }
.pill-dark .tick{ width: 8px; height: 1px; background: #1a1409; }
.pill-ghost{
  background: transparent;
  color: var(--color-cream);
  box-shadow: none;
  border: 1px solid var(--color-border);
}
.pill-ghost:hover{ opacity: 1; border-color: var(--color-gold); }

.text-link{
  font-size: 14px;
  font-weight: 500;
  letter-spacing: var(--tracking);
  text-transform: uppercase;
  text-decoration: none;
  color: var(--color-cream);
  opacity: 0.7;
  transition: opacity .2s;
}
.text-link:hover{ opacity: 1; }

.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;
}

.discovery-popup{
  position: fixed;
  left: max(20px, env(safe-area-inset-left));
  bottom: max(20px, env(safe-area-inset-bottom));
  z-index: 180;
  width: min(92vw, 360px);
  max-width: 360px;
  transform: translateX(-120%);
  opacity: 0;
  pointer-events: none;
  transition: transform .45s var(--ease), opacity .45s var(--ease);
}
.discovery-popup.is-visible{ transform: translateX(0); opacity: 1; pointer-events: auto; }
.discovery-popup-content{
  position: relative;
  padding: 10px 12px;
  border-radius: 16px;
  border: 1px solid var(--color-gold);
  background: linear-gradient(135deg, rgba(242,231,211,0.98), rgba(255,255,255,0.94));
  color: var(--color-black);
  box-shadow: var(--shadow-gold);
}
.discovery-popup-eyebrow{
  margin: 0 0 6px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--color-gold);
}
.discovery-popup-title{
  margin: 0 0 8px;
  font-size: 13px;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--color-black);
}
.discovery-popup-copy,
.discovery-popup-success p,
.discovery-popup-footer,
.discovery-popup-error{ margin: 0; font-size: 13px; line-height: 1.5; color: rgba(11,10,8,0.74); }
.discovery-popup-form{ display: flex; flex-direction: column; gap: 6px; margin-top: 0; }
.discovery-popup-field input{
  width: 100%;
  border: 1px solid rgba(11,10,8,0.12);
  border-radius: 999px;
  padding: 8px 10px;
  font-size: 12px;
  color: var(--color-black);
  background: rgba(255,255,255,0.9);
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.discovery-popup-field input:focus-visible{
  outline: none;
  border-color: var(--color-gold);
  box-shadow: 0 0 0 3px rgba(201,164,99,0.2);
}
.discovery-popup-submit{ justify-content: center; width: 100%; padding: 8px 12px; min-height: 34px; font-size: 11px; }
.discovery-popup-submit[disabled]{ opacity: 0.7; cursor: wait; }
.discovery-popup-success,
.discovery-popup-error{ display: none; margin-top: 12px; padding-top: 4px; }
.discovery-popup-success.is-visible,
.discovery-popup-error.is-visible{ display: block; }
.discovery-popup-success h3{ margin: 0 0 6px; font-size: 17px; color: var(--color-black); }
.discovery-popup-schedule{ display: inline-flex; justify-content: center; margin-top: 10px; width: auto; }
.discovery-hp{ position: absolute; left: -9999px; opacity: 0; pointer-events: none; }
.discovery-popup-error{ color: #8f2d2d; font-weight: 500; }
.discovery-popup-form.is-submitting .discovery-popup-submit{ opacity: 0.85; }

@media (max-width: 900px){
  .discovery-popup{ left: 10px; right: 10px; bottom: calc(10px + env(safe-area-inset-bottom)); width: auto; max-width: none; }
  .discovery-popup-content{ border-radius: 14px; padding: 10px; }
}

/* ---------- Header ---------- */
.site-header{
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: calc(20px + env(safe-area-inset-top)) calc(40px + env(safe-area-inset-right)) 20px calc(40px + env(safe-area-inset-left));
  background: linear-gradient(var(--color-black) 55%, transparent);
}
.logo{
  font-size: 16px;
  font-weight: 500;
  text-decoration: none;
  color: var(--color-cream);
  display: flex;
  align-items: center;
  gap: 6px;
}
.logo .dot{ color: var(--color-gold); }
.nav-center{
  font-size: 14px;
  font-weight: 400;
  color: var(--color-muted);
}
.nav-links{
  display: flex;
  align-items: center;
  gap: 28px;
}
.nav-links a:not(.pill){
  font-size: 14px;
  font-weight: 500;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--color-cream);
  opacity: 0.75;
  transition: opacity .2s, color .2s;
}
.nav-links a:not(.pill):hover{ opacity: 1; color: var(--color-gold-bright); }
.nav-right{ display: flex; align-items: center; gap: 20px; }

/* ---------- Mobile nav toggle / drawer ---------- */
.nav-toggle{
  display: none;
  flex: none;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: 50%;
  background: var(--color-surface);
  cursor: pointer;
  position: relative;
  z-index: 102;
}
.nav-toggle span,
.nav-toggle span::before,
.nav-toggle span::after{
  content: "";
  position: absolute;
  left: 13px;
  right: 13px;
  height: 1.5px;
  background: var(--color-cream);
  transition: transform .25s var(--ease), opacity .25s var(--ease);
}
.nav-toggle span{ top: 21px; }
.nav-toggle span::before{ top: -6px; }
.nav-toggle span::after{ top: 6px; }
body.nav-open .nav-toggle span{ background: transparent; }
body.nav-open .nav-toggle span::before{ transform: translateY(6px) rotate(45deg); }
body.nav-open .nav-toggle span::after{ transform: translateY(-6px) rotate(-45deg); }
.nav-close{ display: none; }
.nav-scrim{
  display: none;
  position: fixed;
  inset: 0;
  z-index: 98;
  background: rgba(0,0,0,0.5);
  opacity: 0;
  transition: opacity .25s var(--ease);
}
body.nav-open .nav-scrim{ display: block; opacity: 1; }

/* ---------- Hero ----------
   The 3D loop is full-bleed and sits behind the copy, open-air —
   no framed card, no ground plane, just floating in the page. */
.hero{
  position: relative;
  min-height: 100vh; /* fallback for browsers without dvh support */
  min-height: 100dvh; /* prevents mobile browser toolbars from clipping the hero */
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 120px 40px 100px;
  overflow: hidden;
}
.hero-stage{
  position: absolute;
  inset: 0;
  z-index: 1;
}
.hero-stage canvas{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}
.hero-copy{
  position: relative;
  z-index: 2;
  text-align: center;
  max-width: 820px;
  width: 100%;
  min-width: 0;
  margin: 0 auto;
  pointer-events: none;
}
/* A soft dark scrim behind the copy, independent of wherever the 3D
   object happens to be — a safety net so the headline stays readable
   even against the brightest part of the glow. */
.hero-copy::before{
  content: "";
  position: absolute;
  inset: -60px -80px;
  z-index: -1;
  background: radial-gradient(ellipse at center, rgba(11,10,8,0.6) 0%, rgba(11,10,8,0.28) 55%, rgba(11,10,8,0) 80%);
}
.hero-title{
  margin: 0 0 24px;
  font-weight: 500;
  font-size: clamp(40px, 8vw, 84px);
  line-height: 1.02;
  letter-spacing: -0.02em;
  color: var(--color-cream);
}
.title-line{ display: block; }
.title-word{ display: inline-block; white-space: nowrap; }
.title-letter{ display: inline-block; will-change: transform, opacity; }
.hero-sub{
  font-size: 18px;
  line-height: 1.5;
  color: var(--color-muted);
  max-width: 520px;
  margin: 0 auto 32px;
  opacity: 0;
  transform: translateY(16px);
}
.hero-ctas{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 16px;
  opacity: 0;
  transform: translateY(16px);
  pointer-events: auto;
}

.skip-btn{
  position: absolute;
  right: 24px;
  bottom: 24px;
  z-index: 3;
  background: rgba(242,231,211,0.08);
  border: 1px solid rgba(242,231,211,0.25);
  color: var(--color-cream);
  font-size: 12px;
  letter-spacing: 0.08em;
  padding: 10px 16px;
  border-radius: var(--radius-pill);
  cursor: pointer;
  opacity: 0;
  transition: opacity .3s var(--ease);
}
.skip-btn.visible{ opacity: 1; }
.skip-btn.hidden{ opacity: 0; pointer-events: none; }

.scroll-cue{
  position: absolute;
  left: 50%;
  bottom: 40px;
  transform: translateX(-50%);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-muted);
}
.scroll-cue .plus{ color: var(--color-gold); }

/* ---------- Scroll reveal ---------- */
.reveal{
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .4s var(--ease), transform .4s var(--ease);
  will-change: opacity, transform;
}
.reveal.in-view{ opacity: 1; transform: translateY(0); }

/* .tilt-in elements are animated entirely by GSAP/ScrollTrigger (js/site.js) —
   only the safety-net opacity lives in CSS in case that script fails to load. */
.tilt-in{ opacity: 0; }

/* ---------- Services ---------- */
.services-intro{
  max-width: 640px;
  margin: 0 auto;
  font-size: 17px;
  line-height: 1.6;
  color: var(--color-muted);
}
/* ---------- Process ---------- */
.process-grid{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.process-step{ text-align: center; }
.process-num{
  width: 44px;
  height: 44px;
  margin: 0 auto 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-gold);
  border-radius: 50%;
  color: var(--color-gold-bright);
  font-size: 14px;
  font-weight: 500;
}
.process-title{
  font-size: 17px;
  font-weight: 500;
  color: var(--color-cream);
  letter-spacing: -0.02em;
  margin: 0 0 10px;
}
.process-desc{ font-size: 14px; line-height: 1.6; color: var(--color-muted); margin: 0; }

/* ---------- Work grid ---------- */
.work-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
}
.work-tile{
  position: relative;
  border-radius: var(--radius-frame);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  aspect-ratio: 4 / 3;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  padding: 28px;
}
.work-tile::after{
  content: "Footage coming soon";
  position: absolute;
  top: 28px;
  right: 28px;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(242,231,211,0.3);
}
.work-tile-info{ color: var(--color-cream); }
.work-tile-name{ font-size: 22px; font-weight: 500; margin: 0 0 4px; }
.work-tile-cat{ font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-gold); margin: 0; }
.work-more{ text-align: center; margin-top: 0; }
.portfolio-cta-section{ padding: 36px 0; }
.home-showcase{ padding-top: 0; }
.home-showcase-grid{ grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1000px){
  .home-showcase-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px){
  .home-showcase-grid{ grid-template-columns: repeat(2, 1fr); }
  .home-showcase-grid .portfolio-card{ max-width: 165px; }
}
.home-showcase-grid .portfolio-card{ max-width: 200px; }

/* ---------- Full portfolio page (work.html) ---------- */
.work-page-hero{ padding-top: 160px; }

.portfolio-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  justify-items: center;
}
.portfolio-card{
  width: 100%;
  max-width: 480px;
  border-radius: var(--radius-frame);
  overflow: hidden;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-md);
  transition: transform .25s, border-color .25s;
  cursor: pointer;
  will-change: transform;
}
.portfolio-card[data-orientation="horizontal"]{
  max-width: 760px;
}
.portfolio-card--wide{
  grid-column: span 2;
  max-width: 760px;
}
.portfolio-card:hover{ transform: translateY(-4px); border-color: var(--color-gold); }
.video-frame{
  position: relative;
  overflow: hidden;
  background: var(--color-black);
  aspect-ratio: 9 / 16;
}
.portfolio-card[data-orientation="horizontal"] .video-frame{ aspect-ratio: 16 / 9; }
.portfolio-embed{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  background: var(--color-black);
}

/* Slightly zoom horizontal embeds so they crop to fill the frame
   and avoid letterbox/black bars when native aspect differs. This
   only affects horizontal cards (keeps vertical cards unchanged). */
.portfolio-card[data-orientation="horizontal"] .portfolio-embed{
  transform: scale(1.06);
  transform-origin: center center;
}
.portfolio-poster{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 1;
}
.play-indicator{
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
/* Player is preloaded underneath from the moment the card is near the
   viewport, but stays hidden behind the poster until actually playing —
   this is what makes clicking feel instant instead of waiting to load. */
.portfolio-card.is-playing .portfolio-poster,
.portfolio-card.is-playing .play-indicator{
  opacity: 0;
  pointer-events: none;
}
.play-icon{
  width: 25%;
  aspect-ratio: 1;
  min-width: 44px;
  max-width: 72px;
  border-radius: 50%;
  background: rgba(11, 10, 8, 0.55);
  border: 1px solid rgba(242, 231, 211, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
}
.play-icon::after{
  content: "";
  width: 0;
  height: 0;
  margin-left: 4px;
  border-style: solid;
  border-width: 11px 0 11px 18px;
  border-color: transparent transparent transparent var(--color-cream);
}
@media (max-width: 1000px){
  .portfolio-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px){
  .portfolio-grid{ grid-template-columns: 1fr; }
  .portfolio-card{ max-width: 480px; }
}

/* ---------- Locations ---------- */
.locations-intro{
  font-size: 18px;
  color: var(--color-muted);
  max-width: 560px;
  margin: -24px auto 24px;
}
.city-stat{
  text-align: center;
  margin: 0 0 40px;
}
.city-stat-num{
  font-size: 40px;
  font-weight: 500;
  color: var(--color-gold-bright);
  line-height: 1;
}
.city-stat-label{
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-muted);
  margin-top: 6px;
}
.globe-stage{
  position: relative;
  width: 100%;
  max-width: 900px;
  height: min(64vh, 620px);
  min-height: 340px;
  margin: 0 auto;
  border-radius: var(--radius-frame);
  overflow: hidden;
  background: radial-gradient(circle at 50% 42%, #241d12 0%, var(--color-black) 72%);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-md);
}
.globe-stage canvas{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  touch-action: none;
}
.city-ticker{
  margin-top: 32px;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.city-ticker-track{
  display: inline-block;
  white-space: nowrap;
  font-size: 14px;
  color: var(--color-muted);
  letter-spacing: var(--tracking);
  animation: tickerScroll 150s linear infinite;
  padding: 8px 0;
}
@keyframes tickerScroll{
  0%{ transform: translateX(0); }
  100%{ transform: translateX(-50%); }
}

/* ---------- Packages ---------- */
.packages-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  align-items: stretch;
}
.package-card{
  position: relative;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  padding: 40px 32px;
  display: flex;
  flex-direction: column;
  color: var(--color-cream);
  transition: border-color .25s, transform .25s;
}
.package-card:not(.featured):hover{ border-color: var(--color-gold); transform: translateY(-4px); }
.package-card.featured{
  background: linear-gradient(160deg, var(--color-gold-bright), var(--color-gold) 70%);
  color: #1a1409;
  border-color: transparent;
  transform: scale(1.04);
  box-shadow: var(--shadow-gold);
}
.package-star-badge{
  position: absolute;
  top: -15px;
  left: 50%;
  transform: translateX(-50%);
  background: #1a1409;
  color: var(--color-gold-bright);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 8px 18px;
  border-radius: var(--radius-pill);
  white-space: nowrap;
  box-shadow: var(--shadow-md);
}
.package-badge{
  align-self: flex-start;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.1em;
  color: var(--color-gold-bright);
  margin: 0 0 8px;
}
.package-card.featured .package-badge{ color: rgba(26,20,9,0.55); }
.package-name{ font-size: 28px; font-weight: 500; letter-spacing: -0.02em; margin: 0 0 6px; }
.package-subtitle{
  font-size: 13px;
  color: var(--color-muted);
  margin: 0 0 20px;
}
.package-card.featured .package-subtitle{ color: rgba(26,20,9,0.65); }

.package-price{
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding-bottom: 20px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--color-border);
}
.package-card.featured .package-price{ border-bottom-color: rgba(26,20,9,0.18); }
.package-price-label{ font-size: 12px; color: var(--color-muted); }
.package-card.featured .package-price-label{ color: rgba(26,20,9,0.6); }
.package-price-amount{ font-size: 34px; font-weight: 500; letter-spacing: -0.02em; }
.package-price-unit{ font-size: 15px; font-weight: 400; opacity: 0.7; }

.package-desc{
  font-size: 15px;
  font-weight: 500;
  line-height: 1.5;
  margin: 0 0 10px;
}
.package-desc-sub{
  font-size: 14px;
  line-height: 1.55;
  opacity: 0.75;
  margin: 0 0 28px;
}

.package-list-label{
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.6;
  margin: 0 0 14px;
}
.package-features{
  list-style: none;
  padding: 0;
  margin: 0 0 28px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 14px;
}
.package-features li{
  font-size: 13px;
  line-height: 1.4;
  padding-left: 18px;
  position: relative;
}
.package-features li::before{
  content: "\2713";
  position: absolute;
  left: 0;
  top: 0;
  font-weight: 500;
  color: var(--color-gold-bright);
}
.package-card.featured .package-features li::before{ color: #1a1409; }

.package-tags{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 28px;
}
.package-tag{
  font-size: 12px;
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--color-border);
  opacity: 0.85;
}
.package-card.featured .package-tag{ border-color: rgba(26,20,9,0.25); }

.package-best-for{
  font-size: 14px;
  line-height: 1.55;
  margin: 0 0 28px;
  opacity: 0.85;
}

.package-card .pill{ align-self: flex-start; margin-top: auto; }
.package-card:not(.featured) .pill{ background: linear-gradient(135deg, var(--color-gold-bright), var(--color-gold)); color: #1a1409; box-shadow: none; }
.package-card.featured .pill{ background: #1a1409; color: var(--color-gold-bright); box-shadow: none; }

.custom-package{
  margin-top: 56px;
  background: var(--color-surface);
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-card);
  padding: 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.custom-package h3{ font-size: 22px; font-weight: 500; margin: 0 0 10px; color: var(--color-cream); }
.custom-package-kicker{ font-size: 13px; font-weight: 500; color: var(--color-gold); margin: 0 0 8px; }
.custom-package p{ font-size: 15px; color: var(--color-muted); margin: 0; max-width: 460px; }

.addons{
  margin-top: 72px;
  text-align: center;
}
.addons-heading{
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.02em;
  margin: 0 0 28px;
}
.addons-grid{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  max-width: 900px;
  margin: 0 auto;
}
.addon-tag{
  font-size: 13px;
  padding: 9px 16px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--color-border);
  color: var(--color-muted);
  transition: border-color .2s, color .2s;
}
.addon-tag:hover{ border-color: var(--color-gold); color: var(--color-cream); }

/* ---------- About / Us ---------- */
.about-layout{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
}
.about-copy{
  font-size: 19px;
  line-height: 1.65;
  color: var(--color-muted);
  margin: 0;
}

/* Structured differentiators grid — a full-width, premium showcase rather
   than a plain list, so it reads as a proper "why us" sell, not a footnote. */
.why-us{ margin-top: 72px; }
.why-us-label{
  text-align: center;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-gold);
  margin: 0 0 32px;
}
.why-us-grid{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.why-us-card{
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  padding: 32px 28px;
  transition: border-color .25s, transform .25s;
}
.why-us-card:hover{ border-color: var(--color-gold); transform: translateY(-4px); }
.why-us-num{
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.08em;
  color: var(--color-gold);
  margin: 0 0 20px;
}
.why-us-title{
  font-size: 17px;
  font-weight: 500;
  color: var(--color-cream);
  letter-spacing: -0.02em;
  margin: 0 0 10px;
}
.why-us-desc{ font-size: 14px; line-height: 1.55; color: var(--color-muted); margin: 0; }

.about-slideshow{
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 5;
  border-radius: var(--radius-frame);
  overflow: hidden;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-md);
}
.slideshow-track{
  display: flex;
  width: 100%;
  height: 100%;
  transition: transform 0.9s cubic-bezier(.65,0,.24,1);
}
.slide{
  flex: 0 0 100%;
  height: 100%;
  display: flex;
  align-items: flex-end;
  padding: 28px;
  position: relative;
  overflow: hidden;
  background: var(--color-black);
}
.slide-media{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.001); /* establishes the transform for the Ken Burns tween below */
}
.slide.is-active .slide-media{
  animation: kenburns 5.5s ease-out forwards;
}
@keyframes kenburns{
  from{ transform: scale(1.001); }
  to{ transform: scale(1.08); }
}
.slide-soon{
  position: absolute;
  top: 28px;
  right: 28px;
  z-index: 1;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(242,231,211,0.3);
}
.slide p{ position: relative; z-index: 1; color: var(--color-gold-bright); font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; margin: 0; text-shadow: 0 2px 12px rgba(0,0,0,0.6); }
.slide-arrow{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: none;
  background: rgba(242,231,211,0.1);
  color: var(--color-cream);
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s;
}
.slide-arrow:hover{ background: rgba(201,164,99,0.3); }
.slide-arrow.prev{ left: 18px; }
.slide-arrow.next{ right: 18px; }
.slide-dots{
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 8px;
}
.slide-dot{
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(242,231,211,0.3);
  border: none;
  padding: 0;
  cursor: pointer;
  transition: background 0.2s, transform 0.2s;
}
.slide-dot.active{ background: var(--color-gold-bright); transform: scale(1.4); }

/* ---------- Contact ---------- */
.contact-section{ padding-bottom: 120px; }
.contact-teaser{
  text-align: center;
  max-width: 560px;
  margin: 0 auto 40px;
}
.contact-teaser p{ font-size: 18px; color: var(--color-muted); }
.contact-heading{
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.contact-drawer{
  max-width: 760px;
  margin: 0 auto;
}
.contact-form{
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  padding: 40px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.form-field{ display: flex; flex-direction: column; gap: 8px; }
.form-field.full{ grid-column: 1 / -1; }
.form-field label{ font-size: 13px; font-weight: 500; color: var(--color-muted); }
.form-field input,
.form-field select,
.form-field textarea{
  font-family: inherit;
  font-size: 16px;
  letter-spacing: var(--tracking);
  padding: 14px 18px;
  border-radius: var(--radius-input);
  border: 1px solid var(--color-border);
  background: var(--color-surface-2);
  color: var(--color-cream);
  outline: none;
  transition: border-color .2s;
}
.form-field select option{ background: var(--color-surface-2); color: var(--color-cream); }
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus{ border-color: var(--color-gold); }
.form-field textarea{ resize: vertical; min-height: 110px; }
.form-optional{ text-transform: none; letter-spacing: 0; font-weight: 400; opacity: 0.7; }
.budget-options{ display: flex; flex-direction: column; gap: 10px; }
.budget-option{
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  border-radius: var(--radius-input);
  border: 1px solid var(--color-border);
  background: var(--color-surface-2);
  cursor: pointer;
  transition: border-color .2s, background .2s;
}
.budget-option:hover{ border-color: var(--color-gold); }
.budget-option input{ position: absolute; opacity: 0; width: 0; height: 0; }
.budget-radio-dot{
  flex: none;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1px solid var(--color-border);
  position: relative;
  transition: border-color .2s;
}
.budget-radio-dot::after{
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: var(--color-gold);
  opacity: 0;
  transition: opacity .2s;
}
.budget-option input:checked ~ .budget-radio-dot{ border-color: var(--color-gold); }
.budget-option input:checked ~ .budget-radio-dot::after{ opacity: 1; }
.budget-option input:checked ~ .budget-option-label{ color: var(--color-gold-bright); }
.budget-option-label{ font-size: 16px; color: var(--color-cream); transition: color .2s; }
.contact-form .form-submit{ grid-column: 1 / -1; display: flex; align-items: center; gap: 16px; }
.form-note{ font-size: 13px; color: var(--color-muted); }
.form-success{
  display: none;
  grid-column: 1 / -1;
  font-size: 15px;
  padding: 16px 20px;
  border-radius: var(--radius-input);
  background: var(--color-gold-dim);
  color: var(--color-gold-bright);
}
.form-success.visible{ display: block; }
.form-error{
  display: none;
  grid-column: 1 / -1;
  font-size: 15px;
  padding: 16px 20px;
  border-radius: var(--radius-input);
  background: rgba(224,102,84,0.12);
  color: #e06654;
}
.form-error.visible{ display: block; }

/* ---------- Footer ---------- */
.site-footer{
  border-top: 1px solid var(--color-border);
  padding: 56px 0 40px;
}
.footer-top{
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 40px;
  margin-bottom: 40px;
}
.footer-cols{ display: flex; gap: 64px; flex-wrap: wrap; }
.footer-col h4{
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-gold);
  margin: 0 0 16px;
}
.footer-col a, .footer-col p{
  display: block;
  font-size: 14px;
  color: var(--color-cream);
  text-decoration: none;
  margin-bottom: 10px;
  opacity: 0.75;
}
.footer-col a:hover{ opacity: 1; color: var(--color-gold-bright); }
.footer-bottom{
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
  font-size: 13px;
  color: var(--color-muted);
  flex-wrap: wrap;
  gap: 12px;
}

/* ---------- Divider ticks ---------- */
.tick-divider{
  display: flex;
  justify-content: center;
  gap: 16px;
  color: var(--color-gold);
  font-size: 16px;
  opacity: 0.5;
}

/* ---------- Responsive ---------- */
@media (max-width: 900px){
  .nav-center{ display: none; }
  .nav-toggle{ display: block; }
  .nav-right{
    position: fixed;
    top: 0;
    right: 0;
    z-index: 101;
    width: min(320px, 82vw);
    height: 100dvh;
    padding: calc(24px + env(safe-area-inset-top)) 28px 24px;
    padding-right: calc(28px + env(safe-area-inset-right));
    background: var(--color-black);
    border-left: 1px solid var(--color-border);
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 40px;
    transform: translateX(100%);
    transition: transform .3s var(--ease);
    overflow-y: auto;
  }
  body.nav-open .nav-right{ transform: translateX(0); display: flex; }
  .nav-close{
    display: flex;
    align-self: flex-end;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin: -8px -8px 0 0;
    border: 1px solid var(--color-border);
    border-radius: 50%;
    background: var(--color-surface);
    color: var(--color-cream);
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
  }
  .nav-links{
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
  .nav-links a:not(.pill){
    width: 100%;
    padding: 12px 0;
    font-size: 16px;
    border-bottom: 1px solid var(--color-border);
  }
  .nav-right .pill{ justify-content: center; }
  .process-grid{ grid-template-columns: repeat(2, 1fr); }
  .packages-grid{ grid-template-columns: 1fr; }
  .package-card.featured{ transform: none; }
  .about-layout{ grid-template-columns: 1fr; gap: 40px; }
  .about-slideshow{ aspect-ratio: 4 / 3; order: -1; }
  .why-us-grid{ grid-template-columns: repeat(2, 1fr); }
  .contact-form{ grid-template-columns: 1fr; }
}
body.nav-open{ overflow: hidden; }
@media (max-width: 640px){
  .wrap{ padding: 0 20px; }
  .site-header{ padding: 14px 20px; gap: 10px 16px; }
  .pill{ padding: 10px 16px; font-size: 12px; }
  .package-features{ grid-template-columns: 1fr; }
  .addons-grid{ gap: 8px; }
  .why-us-grid{ grid-template-columns: 1fr; }
  .process-grid{ grid-template-columns: 1fr; }
  .footer-top{ flex-direction: column; }
}
