/* ============================================================
   Super Bespoke — stylesheet
   Tokens → base → components → responsive → reduced motion
   ============================================================ */

:root{
  --navy:        #0d1a3d;
  --navy-deep:   #0a1430;
  --navy-soft:   #16244b;
  --navy-line:   rgba(13,26,61,.14);
  --ivory:       #F7F5F0;
  --ivory-warm:  #EFEAE0;
  --ivory-deep:  #E5DFD2;
  --brass:       #B08D57;
  --brass-light: #C9A876;
  --brass-ink:   #8A6A3B;          /* AA contrast on ivory for small text */
  --ink:         #0d1a3d;
  --muted:       #4C5468;
  --muted-navy:  rgba(247,245,240,.64);

  --serif: "Cormorant Garamond", Cormorant, Georgia, "Times New Roman", serif;
  --sans:  Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  --ease: cubic-bezier(.16,1,.3,1);
  --slow: 720ms;
  --med:  520ms;
  --fast: 400ms;

  --gut:  clamp(1.25rem, 5vw, 5rem);
  --maxw: 80rem;
}

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

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

body{
  margin:0;
  background:var(--ivory);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:300;
  font-size:clamp(.95rem,.32vw + .87rem,1.0625rem);
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

img,svg,canvas,video{ display:block; max-width:100%; }
h1,h2,h3{ font-family:var(--serif); font-weight:300; margin:0; line-height:1.08; }
p{ margin:0 0 1.15em; }
p:last-child{ margin-bottom:0; }
a{ color:inherit; }
::selection{ background:var(--brass); color:#fff; }

:focus-visible{ outline:2px solid var(--brass-ink); outline-offset:3px; }
.on-navy :focus-visible,
.hero :focus-visible,
.site-header:not(.is-solid) :focus-visible{ outline-color:var(--brass-light); }

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:300;
  background:var(--navy); color:var(--ivory);
  padding:.9rem 1.4rem; text-decoration:none;
  font-size:.7rem; letter-spacing:.2em; text-transform:uppercase;
}
.skip-link:focus{ left:1rem; top:1rem; }

.u-hidden{
  position:absolute!important; width:1px; height:1px; margin:-1px;
  padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* ── Shared type ──────────────────────────────────────────── */
.shell{ max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gut); width:100%; }
.section{ padding-block:clamp(4.5rem,10vh + 2.5rem,9rem); position:relative; }
.on-navy{ background:var(--navy); color:var(--ivory); }

.eyebrow{
  display:flex; align-items:center; gap:1rem;
  margin:0 0 1.5rem;
  font-size:.66rem; font-weight:400; letter-spacing:.32em;
  text-transform:uppercase; color:var(--brass-ink);
}
.eyebrow::after{
  content:""; flex:1 1 4rem; max-width:5rem; height:1px;
  background:linear-gradient(90deg,var(--brass),transparent);
}
.on-navy .eyebrow{ color:var(--brass-light); }
.on-navy .eyebrow::after{ background:linear-gradient(90deg,rgba(201,168,118,.75),transparent); }

.section-title{ font-size:clamp(2.05rem,4.2vw,3.75rem); max-width:17ch; letter-spacing:-.01em; }
.section-title em{ font-style:italic; color:var(--brass-ink); }
.on-navy .section-title em{ color:var(--brass-light); }

.lede{ max-width:46ch; margin-top:1.5rem; color:var(--muted); }
.on-navy .lede{ color:var(--muted-navy); }
.wordmark{
  font-family:var(--sans); text-transform:uppercase;
  letter-spacing:.42em; font-weight:400; font-size:.66rem;
  line-height:1; white-space:nowrap;
}

/* ── Reveal on scroll ─────────────────────────────────────── */
.reveal{
  opacity:0; transform:translateY(20px);
  transition:opacity var(--slow) var(--ease), transform var(--slow) var(--ease);
  transition-delay:var(--d,0ms);
}
.reveal.is-in{ opacity:1; transform:none; }

/* ============================================================
   Header
   ============================================================ */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:100;
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
  padding:clamp(.9rem,2vh,1.5rem) var(--gut);
  color:var(--ivory);
  transition:background var(--med) var(--ease), color var(--med) var(--ease),
             box-shadow var(--med) var(--ease), padding var(--med) var(--ease);
}
.site-header::before{
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:linear-gradient(180deg,rgba(10,20,48,.7),rgba(10,20,48,0));
  transition:opacity var(--med) var(--ease);
}
.site-header.is-solid{
  background:rgba(247,245,240,.94);
  -webkit-backdrop-filter:saturate(1.4) blur(14px);
  backdrop-filter:saturate(1.4) blur(14px);
  color:var(--ink);
  box-shadow:0 1px 0 var(--navy-line);
  padding-block:.75rem;
}
.site-header.is-solid::before{ opacity:0; }
.brand{ display:flex; align-items:center; gap:.85rem; text-decoration:none; color:inherit; }

/* The crest is two stacked images — light brass over the navy hero, darker
   brass once the header turns ivory — crossfaded rather than recoloured. */
.brand-crest{
  position:relative; display:block; flex:none;
  height:42px; aspect-ratio:191/155;
  transition:height var(--med) var(--ease);
}
.site-header.is-solid .brand-crest{ height:36px; }
.brand-crest__img{
  position:absolute; inset:0; width:100%; height:100%;
  transition:opacity var(--med) var(--ease);
}
.brand-crest__img--ink{ opacity:0; }
.site-header.is-solid .brand-crest__img--light{ opacity:0; }
.site-header.is-solid .brand-crest__img--ink{ opacity:1; }
.brand .wordmark{ font-size:.62rem; letter-spacing:.34em; }

.site-nav{ display:flex; align-items:center; gap:clamp(1.3rem,2.4vw,2.6rem); }
.site-nav a{
  position:relative; text-decoration:none; padding-block:.4rem; opacity:.84;
  font-size:.645rem; letter-spacing:.24em; text-transform:uppercase; font-weight:400;
  transition:opacity var(--fast) var(--ease), background var(--fast) var(--ease),
             color var(--fast) var(--ease), border-color var(--fast) var(--ease);
}
.site-nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:currentColor; opacity:.5;
  transform:scaleX(0); transform-origin:left;
  transition:transform var(--med) var(--ease);
}
.site-nav a:hover{ opacity:1; }
.site-nav a:hover::after,.site-nav a:focus-visible::after{ transform:scaleX(1); }
.site-nav .nav-cta{ border:1px solid currentColor; padding:.6rem 1.15rem; opacity:.9; }
.site-nav .nav-cta::after{ display:none; }
.site-nav .nav-cta:hover{ background:var(--brass); border-color:var(--brass); color:var(--navy); opacity:1; }

.nav-toggle{
  display:none; background:none; border:0; color:inherit; cursor:pointer;
  font:inherit; font-size:.645rem; letter-spacing:.24em; text-transform:uppercase;
  padding:.5rem 0;
}

/* ============================================================
   Hero
   ============================================================ */
.hero{
  position:relative;
  min-height:100svh;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding-block:clamp(7rem,16vh,10rem) clamp(5rem,12vh,7rem);
  background:var(--navy-deep);
  color:var(--ivory);
  overflow:hidden;
  isolation:isolate;
}
.hero-stage{ position:absolute; inset:0; z-index:-1; overflow:hidden; }
.hero-flow{
  position:absolute; inset:-18%; z-index:2; pointer-events:none;
  opacity:.28; mix-blend-mode:screen;
  background:
    linear-gradient(112deg,
      transparent 0%,
      rgba(247,245,240,.045) 19%,
      transparent 34%,
      rgba(201,168,118,.095) 49%,
      transparent 64%,
      rgba(247,245,240,.035) 82%,
      transparent 100%),
    repeating-linear-gradient(64deg, rgba(255,255,255,.028) 0 1px, transparent 1px 8px);
  background-size:180% 180%, auto;
  animation:fabric-flow 9s linear infinite;
  transform:rotate(-1deg);
  will-change:background-position, transform;
}
.hero-canvas{
  position:absolute; inset:0; z-index:1;
  width:100%; height:100%; opacity:0; transition:opacity 1.2s ease-out;
}
.hero-canvas.is-ready{ opacity:.92; }

.hero-fallback{
  position:absolute; inset:0; z-index:0;
  background:
    radial-gradient(120% 80% at 68% 32%, rgba(176,141,87,.16), transparent 58%),
    repeating-linear-gradient(58deg, rgba(255,255,255,.035) 0 2px, transparent 2px 7px),
    repeating-linear-gradient(-58deg, rgba(0,0,0,.16) 0 2px, transparent 2px 7px),
    linear-gradient(165deg,#16244b 0%,#0d1a3d 46%,#070e24 100%);
  background-size:100% 100%, 70px 70px, 70px 70px, 100% 100%;
  animation:fabric-weave-drift 18s linear infinite;
}
.hero-vignette{
  position:absolute; inset:0; z-index:3; pointer-events:none;
  background:
    radial-gradient(120% 90% at 52% 42%, transparent 46%, rgba(7,14,36,.6) 100%),
    linear-gradient(180deg, rgba(7,14,36,.5) 0%, transparent 24%, transparent 48%, rgba(7,14,36,.86) 100%);
}
.hero-grain{
  position:absolute; inset:-50%; z-index:4; pointer-events:none; opacity:.22; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

@keyframes fabric-flow{
  0%{ background-position:0% 48%, 0 0; transform:translate3d(-1.5%,0,0) rotate(-1deg); }
  50%{ background-position:100% 52%, 34px 18px; transform:translate3d(1.5%,-.6%,0) rotate(-1deg); }
  100%{ background-position:200% 48%, 68px 36px; transform:translate3d(-1.5%,0,0) rotate(-1deg); }
}
@keyframes fabric-weave-drift{
  0%{ background-position:center, 0 0, 0 0, center; }
  100%{ background-position:center, 70px 38px, -70px 38px, center; }
}

.hero-inner{ position:relative; }
.hero-logo{ width:clamp(190px,19vw,260px); height:auto; margin-bottom:clamp(1.5rem,3vh,2.2rem); }
.hero-eyebrow{
  margin:0 0 1.1rem;
  font-size:.66rem; letter-spacing:.36em; text-transform:uppercase;
  color:var(--brass-light);
}
.hero-title{
  font-size:clamp(2.6rem,7.4vw,6.2rem);
  line-height:1.02; letter-spacing:-.015em; margin:0;
  max-width:16ch;
}
.hero-title em{ font-style:italic; color:var(--brass-light); }
.hero-sub{
  margin:clamp(1.4rem,3vh,2rem) 0 0;
  max-width:42ch; color:var(--muted-navy);
  font-size:1.02em;
}
.hero-cta{
  display:inline-flex; align-items:center; gap:1rem;
  margin-top:clamp(1.8rem,4vh,2.6rem);
  padding:.95rem 1.6rem;
  border:1px solid rgba(201,168,118,.55);
  color:var(--brass-light);
  text-decoration:none;
  font-size:.67rem; letter-spacing:.24em; text-transform:uppercase;
  transition:background var(--med) var(--ease), color var(--med) var(--ease),
             border-color var(--med) var(--ease), gap var(--med) var(--ease);
}
.hero-cta:hover{ background:var(--brass); border-color:var(--brass); color:var(--navy); gap:1.5rem; }
.hero-cta svg{ flex:none; }

.scroll-cue{
  position:absolute; left:var(--gut); bottom:clamp(1.4rem,3vh,2.2rem);
  display:flex; align-items:center; gap:1rem;
  text-decoration:none; color:var(--muted-navy);
  font-size:.62rem; letter-spacing:.28em; text-transform:uppercase;
  transition:color var(--med) var(--ease);
}
.scroll-cue:hover{ color:var(--brass-light); }
.scroll-cue__line{
  display:block; width:clamp(3rem,7vw,5.5rem); height:1px;
  background:linear-gradient(90deg,currentColor,transparent);
  position:relative; overflow:hidden;
}
.scroll-cue__line::after{
  content:""; position:absolute; inset:0 auto 0 0; width:40%;
  background:var(--brass-light);
  animation:cue 3.4s var(--ease) infinite;
}
@keyframes cue{ 0%{transform:translateX(-110%)} 55%,100%{transform:translateX(260%)} }

@media (max-width:820px){
  .scroll-cue{ left:50%; transform:translateX(-50%); }
  .scroll-cue__label{ display:none; }
}

/* ============================================================
   The Suit & The Shirt — pinned horizontal rails
   ============================================================ */
.craft{ position:relative; }
.craft-track{ position:relative; }
.craft-sticky{
  display:flex; flex-direction:column; justify-content:center; gap:clamp(2rem,5vh,3.5rem);
  padding-block:clamp(4.5rem,10vh,8rem);
  overflow:hidden;
}
.craft-head{ max-width:var(--maxw); }
.craft-progress{ display:none; align-items:center; gap:1.2rem; margin:2.2rem 0 0; }
.craft-progress__bar{ display:block; width:min(16rem,40vw); height:1px; background:rgba(247,245,240,.16); }
.craft-progress__fill{
  display:block; height:100%; width:20%; background:var(--brass);
  transform-origin:left; transition:width var(--fast) linear;
}
.craft-progress__count{
  font-size:.62rem; letter-spacing:.28em; text-transform:uppercase; color:var(--muted-navy);
  font-variant-numeric:tabular-nums;
}

.craft-rail{
  list-style:none; margin:0 auto; padding:0 var(--gut);
  max-width:var(--maxw);
  display:grid; gap:clamp(2.5rem,6vw,4.5rem);
}
.craft-card{ position:relative; max-width:34rem; }
.craft-num{
  display:block; font-family:var(--serif); font-size:2.6rem; line-height:1;
  color:var(--brass); opacity:.75; margin-bottom:1.1rem;
  font-variant-numeric:tabular-nums;
}
.craft-motif{
  width:clamp(120px,12vw,168px);
  height:clamp(120px,12vw,168px);
  color:var(--brass-light);
  opacity:.9;
  margin-bottom:1.5rem;
  overflow:visible;
}
.craft-motif .wash{ fill:currentColor; opacity:.09; stroke:none; }
.craft-motif .strong{ stroke-width:1.35; stroke-opacity:.86; }
.craft-motif .fine{ stroke-opacity:.38; }
.craft-motif .baste{ stroke-dasharray:4 5; stroke-opacity:.58; }
.craft-motif--measurement-photo{
  width:clamp(280px,27vw,460px);
  height:clamp(187px,18vw,307px);
  object-fit:contain;
  object-position:left center;
  opacity:1;
  border:0;
  border-radius:0;
  background:transparent;
  filter:none;
  box-shadow:none;
}
.on-navy .craft-motif--measurement-photo{
  opacity:1;
  filter:invert(1) sepia(.24) saturate(.86) hue-rotate(350deg) brightness(1.65) contrast(1.32) drop-shadow(0 0 10px rgba(247,245,240,.2));
}
.craft-motif--suit-stage-photo{
  width:clamp(280px,27vw,460px);
  height:clamp(250px,25vw,420px);
  object-fit:contain;
  object-position:left center;
  opacity:1;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.on-navy .craft-motif--suit-stage-photo{
  opacity:.62;
  filter:invert(1) sepia(.18) saturate(.62) hue-rotate(350deg) brightness(1.1) contrast(1.02) drop-shadow(0 0 6px rgba(247,245,240,.08));
}
.on-navy .craft-motif--suit-muted{
  opacity:.46;
  filter:invert(1) sepia(.14) saturate(.48) hue-rotate(350deg) brightness(.95) contrast(.94) drop-shadow(0 0 4px rgba(247,245,240,.06));
}
.on-navy .craft-motif--suit-archive{
  opacity:.44;
}
.craft-motif--shears{
  width:clamp(104px,11vw,154px);
  height:clamp(132px,14vw,190px);
  object-fit:contain;
  object-position:left center;
  opacity:.94;
  filter:drop-shadow(0 18px 24px rgba(0,0,0,.28));
}
.craft-motif--pre-shrunk-photo{
  width:clamp(210px,22vw,360px);
  height:clamp(208px,27vw,450px);
  object-fit:contain;
  object-position:left center;
  opacity:.96;
  filter:none;
}
.craft-motif--shirt-cut-photo,
.craft-motif--shirt-stitch-photo{
  width:clamp(280px,27vw,460px);
  height:clamp(250px,25vw,420px);
  object-fit:contain;
  object-position:left center;
  opacity:.82;
  filter:drop-shadow(0 14px 20px rgba(10,20,48,.08));
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.craft-heading{ font-size:clamp(1.65rem,2.6vw,2.35rem); margin-bottom:.9rem; }
.craft-card p{ color:var(--muted-navy); max-width:40ch; margin:0; }

/* Pinned mode (desktop, motion allowed) */
.craft.is-pinned .craft-sticky{ position:sticky; top:0; height:100svh; }
.craft.is-pinned .craft-progress{ display:flex; }
.craft.is-pinned .craft-rail{
  display:flex; grid-auto-flow:column;
  max-width:none; margin-inline:0;
  padding-inline:max(var(--gut), calc((100vw - var(--maxw))/2 + var(--gut)));
  gap:clamp(3rem,7vw,7rem);
  will-change:transform;
  transition:transform 120ms linear;
}
.craft.is-pinned .craft-card{ flex:0 0 min(34rem,72vw); }

/* Light variant — the shirt rail, on ivory after the navy suit rail */
.craft--light{ background:var(--ivory); color:var(--ink); }
.craft--light .craft-num{ color:var(--brass-ink); opacity:.9; }
.craft--light .craft-motif{ color:var(--brass-ink); opacity:.8; }
.craft--light .craft-motif--measurement-photo{
  opacity:1;
  filter:none;
}
.craft--light .craft-motif--shears{
  opacity:.92;
  filter:drop-shadow(0 16px 22px rgba(10,20,48,.16));
}
.craft--light .craft-motif--pre-shrunk-photo{
  opacity:.98;
  filter:drop-shadow(0 16px 24px rgba(10,20,48,.08));
}
.craft--light .craft-motif--suit-stage-photo{
  opacity:.82;
  filter:drop-shadow(0 14px 20px rgba(10,20,48,.08));
}
.craft--light .craft-motif--suit-muted{
  opacity:.76;
}
.craft--light .craft-motif--suit-archive{
  opacity:.72;
}
.craft--light .craft-card p{ color:var(--muted); }
.craft--light .craft-progress__bar{ background:var(--navy-line); }
.craft--light .craft-progress__count{ color:var(--muted); }

/* ============================================================
   Unmarked — no label, no logo
   ============================================================ */
.unmarked-points{
  list-style:none; margin:clamp(2.5rem,5vh,3.5rem) 0 0; padding:0;
  display:grid; gap:0 clamp(1.5rem,4vw,3.5rem);
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));
}
.unmarked-points li{
  display:flex; flex-direction:column; gap:.5rem;
  padding:1.4rem 0; border-top:1px solid var(--navy-line);
}
/* Ivory, so it separates the navy hero from the navy suit rail below it */
.unmarked{ background:var(--ivory); }
.unmarked-name{ font-family:var(--serif); font-size:1.4rem; line-height:1.2; color:var(--ink); }
.unmarked-note{ font-size:.85rem; line-height:1.65; color:var(--muted); max-width:34ch; }

/* ============================================================
   Partners — names set in type, not the mills' own logos
   ============================================================ */
.partners{ background:var(--ivory-warm); }
.partner-grid{
  list-style:none; margin:clamp(2.5rem,5vh,3.5rem) 0 0; padding:0;
  display:grid; gap:1px;
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));
  background:var(--navy-line);
  border:1px solid var(--navy-line);
}
.partner{
  display:flex; flex-direction:column; justify-content:center; gap:.5rem;
  min-height:8.5rem;
  padding:1.75rem clamp(1.1rem,2vw,1.75rem);
  background:var(--ivory);
  transition:background var(--med) var(--ease);
}
.partner:hover{ background:var(--ivory-warm); }
.partner-name{
  font-family:var(--serif);
  font-size:clamp(1.25rem,1.7vw,1.55rem);
  line-height:1.15;
  letter-spacing:.02em;
  color:var(--ink);
  transition:color var(--med) var(--ease);
}
.partner:hover .partner-name{ color:var(--brass-ink); }
.partner-meta{
  font-size:.62rem; letter-spacing:.26em; text-transform:uppercase;
  color:var(--muted);
}
.partners-note{
  margin:1.25rem 0 0;
  font-size:.66rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--brass-ink);
}

/* ============================================================
   Presence
   ============================================================ */
.presence-grid{
  display:grid; gap:clamp(2.5rem,6vw,5rem); grid-template-columns:1fr; align-items:center;
}
@media (min-width:960px){
  .presence-grid{ grid-template-columns:minmax(0,1fr) minmax(0,.95fr); }
  .globe-figure{ order:2; }
}
.presence-list{ list-style:none; margin:clamp(2rem,4vh,2.8rem) 0 0; padding:0; }
.presence-list li{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:.4rem 1.5rem;
  padding:1rem 0; border-top:1px solid rgba(247,245,240,.13);
}
.presence-list li:last-child{ border-bottom:1px solid rgba(247,245,240,.13); }
.presence-city{
  font-family:var(--serif); font-size:1.5rem; min-width:9rem; color:var(--ivory);
}
.presence-role{ font-size:.78rem; letter-spacing:.09em; color:var(--muted-navy); }

.globe-figure{ margin:0; display:flex; flex-direction:column; gap:1.2rem; }
.globe-wrap{
  position:relative; width:100%; aspect-ratio:1; max-width:34rem; margin-inline:auto;
  cursor:grab;
  /* Horizontal drag turns the globe; vertical still scrolls the page. */
  touch-action:pan-y;
}
.globe-wrap.is-dragging{ cursor:grabbing; }
.globe-wrap:focus-visible{ outline:1px solid var(--brass); outline-offset:8px; }
.globe-canvas{ width:100%; height:100%; pointer-events:none; }
.globe-hint{
  position:absolute; left:50%; bottom:-.25rem; transform:translateX(-50%);
  margin:0; pointer-events:none;
  font-size:.6rem; letter-spacing:.24em; text-transform:uppercase;
  color:rgba(247,245,240,.42);
  transition:opacity var(--med) var(--ease);
}
.globe-hint.is-gone{ opacity:0; }
.globe-caption{
  font-size:.68rem; letter-spacing:.08em; color:rgba(247,245,240,.42);
  text-align:center; max-width:34ch; margin-inline:auto;
}

/* ============================================================
   Enquiry
   ============================================================ */
.enquire{ background:var(--ivory-warm); }
.enquire-grid{ display:grid; gap:clamp(2.5rem,6vw,5rem); grid-template-columns:1fr; }
@media (min-width:960px){
  .enquire-grid{ grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); }
  .enquire-intro{ position:sticky; top:6rem; align-self:start; }
}

.enquire-facts{ margin:clamp(2rem,4vh,2.8rem) 0 0; }
.enquire-facts > div{
  display:flex; justify-content:space-between; gap:1.5rem;
  padding:.85rem 0; border-top:1px solid var(--navy-line);
}
.enquire-facts dt{
  font-size:.66rem; letter-spacing:.24em; text-transform:uppercase; color:var(--brass-ink);
}
.enquire-facts dd{ margin:0; font-family:var(--serif); font-size:1.15rem; text-align:right; }

.enquiry-form{ display:grid; gap:clamp(1.4rem,3vh,2rem); }
.field-row{ display:grid; gap:inherit; grid-template-columns:1fr; }
@media (min-width:640px){ .field-row{ grid-template-columns:1fr 1fr; } }

.field{ margin:0; display:flex; flex-direction:column; gap:.5rem; min-width:0; }
.field label,.fieldset legend{
  font-size:.64rem; letter-spacing:.24em; text-transform:uppercase; color:var(--brass-ink);
  padding:0;
}
.field-opt{ letter-spacing:.12em; color:var(--muted); text-transform:none; font-size:.68rem; }

.enquiry-form input[type=text],
.enquiry-form input[type=email],
.enquiry-form input[type=tel],
.enquiry-form select,
.enquiry-form textarea{
  width:100%; min-width:0;
  font:inherit; font-size:1rem; color:var(--ink);
  background:transparent;
  border:0; border-bottom:1px solid rgba(13,26,61,.28);
  border-radius:0;
  padding:.6rem .1rem;
  transition:border-color var(--med) var(--ease), background var(--med) var(--ease);
  -webkit-appearance:none; appearance:none;
}
.enquiry-form textarea{ resize:vertical; line-height:1.7; }
.enquiry-form select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%234C5468' stroke-width='1.2'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right .2rem center;
  padding-right:1.4rem;
}
.enquiry-form :is(input,select,textarea):hover{ border-color:rgba(13,26,61,.5); }
.enquiry-form :is(input,select,textarea):focus{
  outline:none; border-color:var(--brass); background:rgba(176,141,87,.06);
}
.enquiry-form :is(input,select,textarea):focus-visible{ outline:2px solid var(--brass-ink); outline-offset:2px; }
.enquiry-form ::placeholder{ color:rgba(76,84,104,.6); }

.phone-group{ display:grid; grid-template-columns:minmax(6rem,auto) 1fr; gap:.75rem; }

.field-error{
  font-size:.72rem; letter-spacing:.04em; color:#8d2f2f;
}
.field.has-error :is(input,select,textarea){ border-color:#8d2f2f; }
.fieldset.has-error .chip span{ border-color:#8d2f2f; }

.fieldset{ border:0; padding:0; margin:0; }
.fieldset legend{ margin-bottom:.85rem; }

.chips{ display:flex; flex-wrap:wrap; gap:.6rem; }
.chip{ position:relative; }
.chip input{
  position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer;
}
.chip span{
  display:block;
  padding:.6rem 1.1rem;
  border:1px solid rgba(13,26,61,.24);
  font-size:.68rem; letter-spacing:.16em; text-transform:uppercase;
  transition:background var(--med) var(--ease), color var(--med) var(--ease),
             border-color var(--med) var(--ease);
}
.chip:hover span{ border-color:var(--brass); }
.chip input:checked + span{
  background:var(--navy); border-color:var(--navy); color:var(--ivory);
}
.chip input:focus-visible + span{ outline:2px solid var(--brass-ink); outline-offset:2px; }

.field--honey{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.form-foot{
  display:flex; flex-wrap:wrap; align-items:center; gap:1.5rem 2rem;
  margin-top:.5rem; padding-top:clamp(1.4rem,3vh,2rem);
  border-top:1px solid var(--navy-line);
}
.btn-cta{
  display:inline-flex; align-items:center; gap:1rem;
  padding:1.05rem 1.9rem;
  background:var(--navy); color:var(--ivory);
  border:1px solid var(--navy); cursor:pointer;
  font:inherit; font-size:.68rem; letter-spacing:.24em; text-transform:uppercase;
  transition:background var(--med) var(--ease), color var(--med) var(--ease),
             border-color var(--med) var(--ease), gap var(--med) var(--ease);
}
.btn-cta:hover{ background:var(--brass); border-color:var(--brass); color:var(--navy); gap:1.5rem; }
.btn-cta[disabled]{ opacity:.55; cursor:progress; }
.btn-cta svg{ flex:none; }

.form-note{ flex:1 1 18rem; margin:0; font-size:.8rem; line-height:1.65; color:var(--muted); }

.form-status{
  margin:0; padding:1.1rem 1.3rem;
  border-left:2px solid var(--brass);
  background:rgba(176,141,87,.1);
  font-size:.9rem;
}
.form-status[data-state=error]{ border-color:#8d2f2f; background:rgba(141,47,47,.08); }

/* ============================================================
   Footer
   ============================================================ */
.site-footer{ padding-block:clamp(3.5rem,8vh,6rem) 2rem; }
.footer-grid{
  display:grid; gap:clamp(2.2rem,5vw,3.5rem);
  grid-template-columns:1fr;
  padding-bottom:clamp(2.5rem,6vh,4rem);
}
@media (min-width:760px){ .footer-grid{ grid-template-columns:1.4fr 1fr 1.3fr .8fr; } }

.footer-brand{ display:flex; flex-direction:column; align-items:flex-start; gap:.9rem; }
.footer-logo{ width:190px; height:auto; }
.footer-line{ margin:.3rem 0 0; font-size:.8rem; color:var(--muted-navy); }

.footer-nav,.footer-contact,.footer-social{ display:flex; flex-direction:column; gap:.6rem; font-style:normal; }
.footer-nav a,.footer-social a{
  text-decoration:none; font-size:.65rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--muted-navy); transition:color var(--fast) var(--ease);
}
.footer-nav a:hover,.footer-social a:hover{ color:var(--brass-light); }
.footer-contact a,.footer-contact span{ font-size:.85rem; color:var(--muted-navy); text-decoration:none; }
.footer-contact a{ transition:color var(--fast) var(--ease); }
.footer-contact a:hover{ color:var(--brass-light); }

.footer-base{
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:.6rem 2rem;
  padding-top:1.6rem; border-top:1px solid rgba(247,245,240,.13);
}
.footer-base p{ margin:0; font-size:.7rem; letter-spacing:.1em; color:rgba(247,245,240,.42); }

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width:820px){
  .site-nav{
    position:fixed; inset:0; z-index:-1;
    flex-direction:column; justify-content:center; align-items:flex-start; gap:1.6rem;
    padding:6rem var(--gut) 3rem;
    background:var(--navy); color:var(--ivory);
    opacity:0; visibility:hidden;
    transition:opacity var(--med) var(--ease), visibility var(--med);
  }
  .site-nav a{ font-size:.78rem; letter-spacing:.28em; }
  .site-nav .nav-cta{ margin-top:.6rem; }
  .site-header.nav-open .site-nav{ opacity:1; visibility:visible; z-index:1; }
  .site-header.nav-open{ background:transparent; color:var(--ivory); box-shadow:none; }
  .site-header.nav-open::before{ opacity:0; }
  .site-header.nav-open .brand-crest__img--light{ opacity:1; }
  .site-header.nav-open .brand-crest__img--ink{ opacity:0; }
  .nav-toggle{ display:block; position:relative; z-index:2; }
  /* Keep the crest above the open menu layer, like the Close button. */
  .brand{ position:relative; z-index:2; }
}
@media (max-width:560px){
  /* Two up, so eight houses do not become eight screens of scrolling. */
  .partner-grid{ grid-template-columns:1fr 1fr; }
  .partner{ min-height:7rem; padding:1.1rem .9rem; }
  .partner-name{ font-size:1.05rem; }
  .partner-meta{ letter-spacing:.18em; }
}
@media (max-width:520px){
  .brand .wordmark{ display:none; }
  .presence-city{ min-width:0; }
  .enquire-facts dd{ font-size:1.05rem; }
}

/* ============================================================
   Reduced motion
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
  .reveal{ opacity:1; transform:none; }
  .scroll-cue__line::after{ display:none; }
  .hero-grain{ display:none; }
}

/* Anchor offset for the fixed header */
section[id], [id]{ scroll-margin-top: clamp(4.5rem, 9vh, 6rem); }
.hero[id]{ scroll-margin-top: 0; }
