/* =========================================================
   Stitch Avenue Boutique — homepage styles
   Palette: deep indigo + antique gold on cool off-white
   ========================================================= */

:root{
  --brand:       #342B6E;
  --brand-deep:  #221C48;
  --gold:        #C9A227;
  --gold-soft:   #E3CB86;
  --cream:       #F8F7FC;
  --sand:        #EBE9F7;
  --ink:         #1B1733;
  --muted:       #6A6685;
  --line:        rgba(27,23,51,.13);
  --white:       #ffffff;

  --serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --sans:  "Jost", "Helvetica Neue", Arial, sans-serif;

  --wrap: 1180px;
  --r:    14px;
  --shadow:    0 18px 40px -22px rgba(27,23,51,.35);
  --shadow-lg: 0 34px 70px -32px rgba(27,23,51,.45);
  --ease: cubic-bezier(.22,.61,.36,1);
}

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

html{
  scroll-behavior:smooth; scroll-padding-top:96px;
  /* The closed mobile nav drawer is parked off-screen right (translateX(100%)),
     which widens the document by its 340px. Chrome clips that via body alone,
     but iOS Safari does not — it needs the rule on html too.
     `clip` rather than `hidden`: it clips without creating a scroll container,
     so the sticky header keeps working and iOS cannot rubber-band sideways. */
  overflow-x:clip;
}

body{
  margin:0;
  font-family:var(--sans);
  font-weight:300;
  font-size:16.5px;
  line-height:1.7;
  color:var(--ink);
  background:var(--cream);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;  /* fallback for browsers without `clip` (iOS < 16) */
  overflow-x:clip;
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul,ol{ margin:0; padding:0; list-style:none; }

h1,h2,h3{
  font-family:var(--serif);
  font-weight:600;
  line-height:1.12;
  letter-spacing:-.01em;
  margin:0 0 .5em;
}
h1{ font-size:clamp(2.9rem, 6vw, 4.6rem); }
h2{ font-size:clamp(2.1rem, 4vw, 3.1rem); }
h3{ font-size:1.4rem; }
p{ margin:0 0 1em; }

.container{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:24px; }

.eyebrow{
  display:inline-block;
  font-size:.72rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--brand);
  margin-bottom:1rem;
  position:relative;
  padding-left:34px;
}
.eyebrow::before{
  content:""; position:absolute; left:0; top:50%;
  width:24px; height:1px; background:var(--gold);
}
.eyebrow--light{ color:var(--gold-soft); }
.eyebrow--light::before{ background:var(--gold-soft); }

.muted{ color:var(--muted); font-size:.92rem; }

/* ---------- Buttons ---------- */
.btn{
  --btn-bg:var(--brand);
  --btn-fg:#fff;
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  background:var(--btn-bg); color:var(--btn-fg);
  font-family:var(--sans); font-size:.82rem; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase;
  padding:1.05rem 2.1rem;
  border:1px solid var(--btn-bg); border-radius:999px;
  cursor:pointer;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), background .3s var(--ease), color .3s var(--ease);
}
.btn:hover{ transform:translateY(-2px); box-shadow:0 14px 28px -14px rgba(52,43,110,.7); }
.btn:active{ transform:translateY(0); }
.btn--ghost{ --btn-bg:transparent; --btn-fg:var(--ink); border-color:var(--line); }
.btn--ghost:hover{ --btn-bg:var(--ink); --btn-fg:#fff; border-color:var(--ink); box-shadow:none; }
.btn--sm{ padding:.72rem 1.4rem; font-size:.72rem; }
.btn--full{ width:100%; }

/* ---------- Top bar ---------- */
.topbar{
  background:var(--brand-deep); color:var(--gold-soft);
  text-align:center; font-size:.76rem; letter-spacing:.14em; text-transform:uppercase;
}
.topbar p{ margin:0; padding:.7rem 24px; }
.topbar a{ border-bottom:1px solid currentColor; padding-bottom:1px; }
.topbar a:hover{ color:#fff; }

/* ---------- Header ---------- */
.header{
  position:sticky; top:0; z-index:60;
  background:rgba(248,247,252,.88);
  backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.header.is-stuck{ border-color:var(--line); box-shadow:0 10px 30px -26px rgba(27,23,51,.6); }
.header__inner{ display:flex; align-items:center; justify-content:space-between; gap:1.5rem; height:78px; }

.logo{ display:flex; align-items:center; gap:.7rem; }
.logo__mark{
  width:44px; height:44px; flex:none;
  display:grid; place-items:center;
  background:var(--brand); color:var(--gold-soft);
  font-family:var(--serif); font-size:1.1rem; font-weight:700; letter-spacing:.02em;
  border-radius:50%;
}
.logo__text{ display:flex; flex-direction:column; line-height:1.1; }
.logo__text strong{ font-family:var(--serif); font-size:1.32rem; font-weight:700; letter-spacing:.01em; }
.logo__text small{ font-size:.6rem; letter-spacing:.26em; text-transform:uppercase; color:var(--muted); }

.nav{ display:flex; align-items:center; gap:1.9rem; }
.nav__link{ font-size:.85rem; letter-spacing:.06em; position:relative; padding:.25rem 0; }
.nav__link::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:0;
  background:var(--brand); transition:width .3s var(--ease);
}
.nav__link:hover::after, .nav__link.is-active::after{ width:100%; }
.nav__link.is-active{ color:var(--brand); }
.nav__cta{ margin-left:.4rem; }

.burger{
  display:none; width:44px; height:44px; border:1px solid var(--line);
  border-radius:50%; background:transparent; cursor:pointer;
  flex-direction:column; align-items:center; justify-content:center; gap:5px;
}
.burger span{ width:18px; height:1.5px; background:var(--ink); transition:transform .3s var(--ease), opacity .2s; }

/* Only ever shown at mobile widths — see the 820px breakpoint. */
.nav-scrim{ display:none; }
.burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

/* ---------- Hero ---------- */
.hero{
  position:relative; padding:clamp(3rem,7vw,6rem) 0 0; overflow:hidden;
  /* Banner photo sits under a cream scrim so the headline stays readable */
  background-image:
    linear-gradient(100deg, rgba(248,247,252,.97) 0%, rgba(248,247,252,.94) 42%, rgba(248,247,252,.80) 100%),
    url("../images/web/sewing-banner.webp");
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
}
.hero::before{
  content:""; position:absolute; inset:auto -20% 30% -30%; height:640px;
  background:radial-gradient(closest-side, rgba(201,162,39,.16), transparent 70%);
  pointer-events:none;
}
.hero__inner{
  position:relative;
  display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(2rem,5vw,4.5rem); align-items:center;
  padding-bottom:clamp(3rem,6vw,5.5rem);
}
.hero h1 em{ font-style:italic; color:var(--brand); }
.lead{ font-size:1.08rem; color:var(--muted); max-width:46ch; }
.hero__actions{ display:flex; flex-wrap:wrap; gap:.85rem; margin:2rem 0 2.6rem; }

.hero__stats{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(146px,1fr));
  gap:1.4rem 1.6rem;
  border-top:1px solid var(--line); padding-top:1.6rem;
}
.hero__stats li{ display:flex; flex-direction:column; }
.hero__stats strong{ font-family:var(--serif); font-size:2rem; font-weight:600; color:var(--brand); line-height:1; }
.hero__stats span{ font-size:.74rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin-top:.4rem; }

/* Hero collage */
.hero__art{ position:relative; height:clamp(420px,46vw,560px); }
.frame{
  position:absolute; border-radius:var(--r); overflow:hidden;
  box-shadow:var(--shadow-lg);
  background:var(--sand);
}
.frame__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.frame__tag{
  position:absolute; left:12px; bottom:12px;
  background:rgba(248,247,252,.92); color:var(--ink);
  font-size:.64rem; letter-spacing:.16em; text-transform:uppercase;
  padding:.4rem .7rem; border-radius:999px;
  white-space:nowrap; max-width:calc(100% - 24px);
  overflow:hidden; text-overflow:ellipsis;
}
.frame--tall{ width:58%; height:78%; top:0; right:6%; }
/* .frame--wide overlaps this frame's bottom edge, so tag it from the top */
.frame--tall .frame__tag{ top:12px; bottom:auto; }
.frame--wide{ width:56%; height:34%; bottom:2%; left:0; }
.frame--small{ width:34%; height:26%; top:12%; left:2%; }

/* Portrait sources cropped into landscape frames — bias the crop upward
   so the face and neckline survive instead of a midsection band */
.frame--wide .frame__img{ object-position:center 42%; }
.frame--small .frame__img{ object-position:center 34%; }
.frame--small .frame__tag{ background:rgba(27,23,51,.84); color:var(--gold-soft); }

.badge-circle{
  position:absolute; right:2%; bottom:4%;
  width:118px; height:118px; border-radius:50%;
  background:var(--cream); box-shadow:var(--shadow);
  display:grid; place-items:center;
}
.badge-circle svg{ position:absolute; inset:0; width:100%; height:100%; animation:spin 22s linear infinite; }
.badge-circle text{ font-family:var(--sans); font-size:8.4px; letter-spacing:.14em; fill:var(--muted); text-transform:uppercase; }
.badge-circle__needle{ font-size:1.9rem; color:var(--brand); line-height:1; }
@keyframes spin{ to{ transform:rotate(360deg); } }

/* Marquee */
.marquee{
  border-block:1px solid var(--line);
  background:var(--sand);
  overflow:hidden; padding:.9rem 0;
}
.marquee__track{
  display:flex; align-items:center; gap:2rem; width:max-content;
  animation:slide 38s linear infinite;
  font-family:var(--serif); font-size:1.5rem; font-style:italic; color:var(--brand-deep);
  white-space:nowrap;
}
.marquee__track i{ color:var(--gold); font-size:.6rem; font-style:normal; }
@keyframes slide{ to{ transform:translateX(-50%); } }

/* ---------- Sections ---------- */
.section{ padding:clamp(4rem,8vw,7rem) 0; }
.section--tint{ background:var(--sand); }
.section__head{ max-width:640px; margin-bottom:3.2rem; }
.section__head p{ color:var(--muted); }

.grid{ display:grid; gap:1.6rem; }
.grid--3{ grid-template-columns:repeat(3,1fr); }

/* ---------- Cards ---------- */
.card{
  background:var(--white);
  border:1px solid var(--line);
  border-radius:var(--r);
  padding:2.2rem 2rem;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); border-color:transparent; }
.card__icon{
  width:52px; height:52px; border-radius:14px;
  display:grid; place-items:center; margin-bottom:1.3rem;
  background:var(--sand); color:var(--brand);
}
.card__icon svg{ width:24px; height:24px; stroke-linecap:round; stroke-linejoin:round; }
.card__icon i{ font-size:22px; line-height:1; }
.card p{ color:var(--muted); font-size:.95rem; }

.card--feature{ background:var(--brand); color:#fff; border-color:var(--brand); }
.card--feature p{ color:rgba(255,255,255,.78); }
.card--feature .card__icon{ background:rgba(255,255,255,.12); color:var(--gold-soft); }
.card--feature .ticks li::before{ color:var(--gold-soft); }
.card--feature .ticks li{ border-color:rgba(255,255,255,.16); }

.ticks{ margin-top:1.4rem; }
.ticks li{
  position:relative; padding:.6rem 0 .6rem 1.5rem;
  font-size:.88rem; border-top:1px solid var(--line);
}
.ticks li::before{
  content:"\f00c";                       /* fa-check */
  font-family:"Font Awesome 6 Free"; font-weight:900;
  position:absolute; left:0; top:.62rem; color:var(--gold); font-size:.72rem;
}

/* ---------- Gallery ---------- */
.gallery{
  display:grid;
  grid-template-columns:repeat(6,1fr);
  grid-auto-rows:150px;
  gap:1.1rem;
}
.tile{
  margin:0; position:relative; border-radius:var(--r); overflow:hidden;
  box-shadow:var(--shadow);
}
/* tile--a is the tall feature; the other four sit as a 2x2 block beside it */
.tile--a{ grid-column:span 2; grid-row:span 4; }
.tile--b,.tile--c,.tile--d,.tile--e{ grid-column:span 2; grid-row:span 2; }

.tile__img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center;
  transition:transform .6s var(--ease);
}
/* Upper-biased crops so faces and necklines are kept, not cropped out */
.tile--b .tile__img{ object-position:center 46%; }
.tile--c .tile__img{ object-position:center 36%; }
.tile--d .tile__img{ object-position:center 32%; }
.tile--e .tile__img{ object-position:center 34%; }
.tile:hover .tile__img{ transform:scale(1.06); }

.tile figcaption{
  position:absolute; inset:auto 0 0 0;
  display:flex; align-items:center; justify-content:space-between; gap:.5rem;
  padding:2.6rem 1.1rem 1rem;
  /* Firm scrim — captions sit over pale fabric in several photos */
  background:linear-gradient(to top, rgba(17,14,36,.92) 0%, rgba(17,14,36,.74) 42%, rgba(17,14,36,0) 100%);
  color:#fff; font-size:.85rem;
}
.tile figcaption em{ font-style:normal; color:var(--gold-soft); font-size:.8rem; }
.gallery__note{ margin-top:1.8rem; color:var(--muted); font-size:.9rem; }
.gallery__note a{ color:var(--brand); border-bottom:1px solid var(--gold); }

/* ---------- Steps ---------- */
.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.6rem; counter-reset:s; }
.step{ position:relative; padding-top:2.6rem; border-top:1px solid var(--line); }
.step::after{
  content:""; position:absolute; top:-4px; left:0; width:7px; height:7px;
  border-radius:50%; background:var(--gold);
}
.step__num{
  font-family:var(--serif); font-size:2.6rem; font-weight:600;
  color:var(--brand); opacity:.25; line-height:1; display:block; margin-bottom:.6rem;
}
.step h3{ font-size:1.25rem; margin-bottom:.4rem; }
.step p{ color:var(--muted); font-size:.92rem; margin:0; }

/* ---------- Promise strip ---------- */
.promise{ background:var(--brand-deep); color:#fff; padding:2.4rem 0; }
.promise__inner{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem; }
.promise__item{ display:flex; flex-direction:column; gap:.2rem; padding-left:1.1rem; border-left:1px solid rgba(255,255,255,.18); }
.promise__item strong{ font-family:var(--serif); font-size:1.3rem; font-weight:600; color:var(--gold-soft); }
.promise__item span{ font-size:.82rem; color:rgba(255,255,255,.7); }

/* ---------- Founder ---------- */
/* Text-only editorial block: statement on the left, the story on the right,
   three supporting points ruled off underneath. */
.founder__inner{
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(2rem,5vw,4.5rem); align-items:start;
}
.founder__inner > *{ min-width:0; }
.founder__head h2{ margin-bottom:1.6rem; }
.founder__quote{
  margin:0; padding-left:1.5rem;
  border-left:2px solid var(--gold);
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(1.25rem,2.1vw,1.7rem); line-height:1.45;
  color:var(--brand); max-width:26ch;
}
.founder__copy p{ color:var(--muted); max-width:52ch; }
.founder__copy .btn{ margin-top:1.2rem; }

.founder__points{
  display:grid; grid-template-columns:repeat(3,1fr); gap:1.8rem;
  margin-top:clamp(2.6rem,5vw,4rem);
  padding-top:clamp(2.2rem,4vw,3rem);
  border-top:1px solid var(--line);
}
.founder__point{ display:grid; gap:.35rem; align-content:start; }
.founder__point i{ color:var(--gold); font-size:1.05rem; margin-bottom:.35rem; }
.founder__point strong{ font-family:var(--serif); font-size:1.22rem; font-weight:600; }
.founder__point span{ color:var(--muted); font-size:.92rem; line-height:1.6; }

/* ---------- Quotes ---------- */
.quote{
  margin:0; background:var(--white); border:1px solid var(--line);
  border-radius:var(--r); padding:2rem 1.8rem;
  display:flex; flex-direction:column; gap:.4rem;
}
.stars{ color:var(--gold); letter-spacing:.18em; font-size:.9rem; }
.quote p{ font-family:var(--serif); font-size:1.22rem; font-style:italic; line-height:1.5; color:var(--ink); margin:.4rem 0 1.2rem; }
.quote cite{ font-style:normal; display:flex; flex-direction:column; margin-top:auto; }
.quote cite strong{ font-size:.92rem; font-weight:500; }
.quote cite span{ font-size:.76rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }

/* ---------- Booking ---------- */
.booking{ background:var(--brand); color:#fff; }
.booking__inner{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,5vw,4.5rem); align-items:center; }
/* A grid `1fr` track is minmax(auto,1fr), so it refuses to shrink below its
   content's min-content width. The email address below has no break
   opportunity, which otherwise forces both columns wider than the screen. */
.booking__inner > *{ min-width:0; }
.booking h2{ color:#fff; }
.booking__copy p{ color:rgba(255,255,255,.78); max-width:42ch; }
.booking__contact{ margin-top:2rem; display:grid; gap:.9rem; }
.booking__contact li{ display:flex; gap:1rem; align-items:baseline; border-bottom:1px solid rgba(255,255,255,.16); padding-bottom:.9rem; }
.booking__contact span{ font-size:.7rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-soft); width:112px; flex:none; }
.booking__contact span i{ width:1.1em; text-align:center; margin-right:.3rem; font-size:.85rem; }
.booking__contact a{ font-size:1.05rem; border-bottom:1px solid transparent; transition:border-color .25s; overflow-wrap:anywhere; }
.booking__contact a:hover{ border-color:var(--gold-soft); }

.booking__form{
  background:var(--cream); color:var(--ink);
  border-radius:var(--r); padding:2.2rem;
  box-shadow:var(--shadow-lg);
  display:grid; gap:1rem;
}
.field{ display:grid; gap:.4rem; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.field label{ font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); }
.field input, .field select, .field textarea{
  font-family:var(--sans); font-size:.95rem; color:var(--ink);
  background:var(--white); border:1px solid var(--line); border-radius:10px;
  padding:.85rem 1rem; width:100%;
  transition:border-color .25s, box-shadow .25s;
}
.field textarea{ resize:vertical; }
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(52,43,110,.18);
}
.field input.is-error, .field select.is-error, .field textarea.is-error{
  border-color:#B3261E; background:#FEF7F6;
}
.field input.is-error:focus, .field select.is-error:focus, .field textarea.is-error:focus{
  box-shadow:0 0 0 3px rgba(179,38,30,.16);
}
.field__hint{ text-transform:none; letter-spacing:0; font-size:.74rem; opacity:.75; }
.field__error{
  margin:0; font-size:.78rem; line-height:1.4; color:#B3261E;
  display:none;   /* only takes up space once it has something to say */
}
.field__error.is-shown{ display:block; }

.form__note{ margin:0; font-size:.85rem; text-align:center; min-height:1.2em; color:var(--muted); }
.form__note.is-ok{ color:#2E6B33; }
.form__note.is-bad{ color:#B3261E; }
.form__legal{ margin:0; font-size:.72rem; line-height:1.5; text-align:center; color:var(--muted); opacity:.8; }

/* Honeypots — pulled out of the layout without display:none, which some bots
   check for. Kept out of the a11y tree by aria-hidden on the wrapper. */
.hp{
  position:absolute; left:-9999px; top:auto;
  width:1px; height:1px; overflow:hidden;
}

/* Submit button while the request is in flight */
#bookingSubmit{ position:relative; }
#bookingSubmit[disabled]{ opacity:.65; cursor:not-allowed; transform:none; box-shadow:none; }
#bookingSubmit.is-busy .btn__label{ visibility:hidden; }
#bookingSubmit.is-busy::after{
  content:""; position:absolute; width:18px; height:18px;
  border:2px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%;
  animation:spin .7s linear infinite;
}
@keyframes spin{ to{ transform:rotate(360deg); } }

/* ---------- Visit ---------- */
.visit{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.6rem; }
.visit__card{ background:var(--white); border:1px solid var(--line); border-radius:var(--r); padding:2rem 1.8rem; }
.visit__card h3{ font-size:1.15rem; }
.visit__card p{ color:var(--muted); font-size:.95rem; }
.link-arrow{ color:var(--brand); font-size:.85rem; letter-spacing:.06em; border-bottom:1px solid var(--gold); }
.link-arrow i{ font-size:.72rem; margin-left:.25rem; }
.visit__card h3 i{ color:var(--gold); margin-right:.5rem; font-size:.9em; }
.socials{ display:flex; flex-wrap:wrap; gap:.6rem; margin-top:1rem; }
.socials a{
  display:inline-flex; align-items:center; gap:.45rem;
  font-size:.75rem; letter-spacing:.12em; text-transform:uppercase;
  border:1px solid var(--line); border-radius:999px; padding:.5rem 1rem;
  transition:background .25s, color .25s, border-color .25s;
}
.socials a i{ font-size:.95rem; }
.socials a:hover{ background:var(--brand); color:#fff; border-color:var(--brand); }

/* ---------- Footer ---------- */
.footer{ background:var(--ink); color:rgba(255,255,255,.72); padding:3.5rem 0 1.6rem; }
.footer__inner{ display:flex; justify-content:space-between; gap:2rem; flex-wrap:wrap; padding-bottom:2.4rem; border-bottom:1px solid rgba(255,255,255,.12); }
.footer__brand p{ margin:1rem 0 0; font-size:.9rem; max-width:34ch; }
.logo--light .logo__mark{ background:var(--gold); color:var(--brand-deep); }
.logo--light .logo__text strong{ color:#fff; }
.logo--light .logo__text small{ color:rgba(255,255,255,.5); }
.footer__links{ display:flex; flex-wrap:wrap; gap:1.4rem; align-items:flex-start; }
.footer__links a{ font-size:.87rem; transition:color .25s; }
.footer__links a:hover{ color:var(--gold-soft); }
.footer__bottom{ display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; padding-top:1.4rem; font-size:.78rem; color:rgba(255,255,255,.45); }
.footer__bottom p{ margin:0; }

/* ---------- Floating WhatsApp ---------- */
.fab{
  position:fixed; right:20px; bottom:20px; z-index:70;
  width:54px; height:54px; border-radius:50%;
  display:grid; place-items:center;
  background:#25D366; color:#fff;
  box-shadow:0 12px 26px -10px rgba(37,211,102,.7);
  transition:transform .3s var(--ease);
}
.fab:hover{ transform:scale(1.08); }
.fab svg{ width:28px; height:28px; }
.fab i{ font-size:29px; line-height:1; }

/* ---------- Reveal on scroll ---------- */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.is-visible{ opacity:1; transform:none; }

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width:1000px){
  .hero__inner{ grid-template-columns:1fr; }
  .hero__art{ order:-1; height:400px; max-width:560px; }
  .grid--3, .visit{ grid-template-columns:1fr 1fr; }
  .steps{ grid-template-columns:1fr 1fr; }
  .promise__inner{ grid-template-columns:1fr 1fr; }
  .booking__inner{ grid-template-columns:1fr; }
  .founder__inner{ grid-template-columns:1fr; gap:2rem; }
  .founder__quote{ max-width:none; }
  .gallery{ grid-auto-rows:130px; }
}

@media (max-width:820px){
  /* `backdrop-filter` makes .header the containing block for its fixed-position
     descendants, which collapsed the drawer to the header's own 78px box — the
     links then spilled out of it with no background behind them. The blur is a
     desktop nicety, so it goes here and .nav resolves against the viewport. */
  .header{ backdrop-filter:none; background:var(--cream); }

  /* Above the drawer, so the X actually closes it rather than being covered. */
  .burger{ display:flex; position:relative; z-index:70; background:var(--cream); }

  .nav{
    position:fixed; inset:0 0 0 auto; width:min(84vw,340px);
    background:var(--white); border-left:1px solid var(--line);
    flex-direction:column; align-items:flex-start; justify-content:center;
    gap:1.6rem; padding:5.5rem 2.2rem 2rem;   /* clears the header row */
    transform:translateX(100%);
    transition:transform .4s var(--ease), visibility .4s var(--ease);
    box-shadow:var(--shadow-lg); z-index:65;
    overflow-y:auto;
    visibility:hidden;                        /* keeps links out of the tab order */
  }
  .nav.is-open{ transform:none; visibility:visible; }
  .nav__link{ font-size:1.3rem; font-family:var(--serif); }
  .nav__cta{ margin-left:0; margin-top:.6rem; }
  body.nav-open{ overflow:hidden; }

  /* Tap-anywhere-to-close, and the dimming that makes the panel read as a panel.
     Sits below the header (z-60) so the burger stays reachable. */
  .nav-scrim{
    display:block; position:fixed; inset:0; z-index:55;
    background:rgba(27,23,51,.55);
    opacity:0; pointer-events:none;
    transition:opacity .4s var(--ease);
  }
  .nav-scrim.is-shown{ opacity:1; pointer-events:auto; }
}

@media (max-width:860px){
  .founder__points{ grid-template-columns:1fr 1fr; gap:1.6rem; }
}

@media (max-width:640px){
  .grid--3, .visit, .steps, .promise__inner, .founder__points{ grid-template-columns:1fr; }
  /* Two captions side by side collide in a half-width tile — stack them */
  .tile figcaption{ flex-direction:column; align-items:flex-start; gap:.05rem; font-size:.78rem; padding:2.2rem .8rem .8rem; }
  .gallery{ grid-template-columns:repeat(2,1fr); grid-auto-rows:130px; }
  .tile--a{ grid-column:span 2; grid-row:span 3; }
  .tile--b,.tile--c,.tile--d,.tile--e{ grid-column:span 1; grid-row:span 2; }
  .hero__stats{ gap:1.6rem; }
  .hero__stats strong{ font-size:1.6rem; }
  .field-row{ grid-template-columns:1fr; }
  .booking__form{ padding:1.6rem; }
  /* Label beside value leaves too little room for the email — stack them */
  .booking__contact li{ flex-direction:column; align-items:flex-start; gap:.25rem; }
  .booking__contact span{ width:auto; }
  .hero__art{ height:330px; }
  .frame__tag{ font-size:.55rem; letter-spacing:.1em; padding:.32rem .55rem; }
  .badge-circle{ width:92px; height:92px; }
  .marquee__track{ font-size:1.2rem; }
  .footer__inner{ flex-direction:column; }
}

/* ---------- Accessibility ---------- */
@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  html{ scroll-behavior:auto; }
  .reveal{ opacity:1; transform:none; }
}

:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; border-radius:4px; }
