/* cs-tokens: v1 — fluid design-token foundation. Paste verbatim; fill only the palette. */
:root {
  --bg:          #F4F0EB;
  --bg-alt:      #EDE7DF;
  --card:        #FAF8F5;
  --ink:         #2E2822;
  --muted:       #8A7A6B;
  --accent:      #6E5643;
  --accent2:     #967A64;
  --accent-rgb:  110,86,67;
  --accent-light: rgba(110,86,67,.08);
  --gold:        #C4B850;  /* warm champagne gold — EK wall signage (verified F2) */
  --border:      rgba(110,86,67,.18);
  --surface:     #E7D9CE;

  --fs-xs:   clamp(0.75rem,  0.70rem + 0.25vw, 0.875rem);
  --fs-sm:   clamp(0.875rem, 0.82rem + 0.28vw, 1.00rem);
  --fs-base: clamp(1.00rem,  0.92rem + 0.40vw, 1.125rem);
  --fs-md:   clamp(1.125rem, 1.05rem + 0.38vw, 1.25rem);
  --fs-lg:   clamp(1.25rem,  1.10rem + 0.75vw, 1.75rem);
  --fs-xl:   clamp(1.75rem,  1.50rem + 1.25vw, 2.50rem);
  --fs-2xl:  clamp(2.50rem,  2.00rem + 2.50vw, 4.00rem);
  --fs-3xl:  clamp(3.50rem,  2.50rem + 5.00vw, 6.00rem);

  --sp-2xs:  clamp(0.25rem,  0.20rem + 0.25vw, 0.375rem);
  --sp-xs:   clamp(0.50rem,  0.40rem + 0.50vw, 0.75rem);
  --sp-sm:   clamp(0.75rem,  0.60rem + 0.75vw, 1.125rem);
  --sp-md:   clamp(1.00rem,  0.82rem + 0.90vw, 1.50rem);
  --sp-lg:   clamp(1.50rem,  1.20rem + 1.50vw, 2.25rem);
  --sp-xl:   clamp(2.00rem,  1.60rem + 2.00vw, 3.00rem);
  --sp-2xl:  clamp(3.00rem,  2.40rem + 3.00vw, 4.50rem);

  --dur-fast: 150ms;
  --dur-base: 260ms;
  --dur-slow: 420ms;
  --ease-std: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
}

/* ── RESET & BASE ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { overflow-x: clip; }
body {
  background: var(--bg);
  color: var(--ink);
  font-family: 'Merriweather Sans', system-ui, sans-serif;
  font-size: var(--fs-base);
  line-height: 1.75;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--accent2); outline-offset: 2px; border-radius: 2px; }
:focus:not(:focus-visible) { outline: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

/* ══ NAV ══ */
.site-nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 200;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 var(--sp-xl);
  height: 64px;
  transition: background var(--dur-slow) var(--ease-std),
              box-shadow var(--dur-slow) var(--ease-std);
}
.site-nav.scrolled {
  background: rgba(244,240,235,0.96);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 1px 0 var(--border);
}

/* Nav logo — TEXT MARK ONLY (no brand-manifest.json; no logo image may be used) */
/* Nav mark is "EK" monogram — distinct from hero h1 "RESTORE" to prevent any text-collision */
.nav-logo {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-xs);
  text-decoration: none;
  min-height: 44px;          /* TAP-TARGET FLOOR */
  padding: 0 var(--sp-2xs);  /* horizontal breathing room */
}
.nav-logo-ek {
  font-family: 'Fira Sans', sans-serif;
  font-weight: 600;
  font-size: 1.15rem;
  letter-spacing: 0.12em;
  color: rgba(250,248,245,0.95);
  text-shadow: 0 4px 20px rgba(0,0,0,.85), 0 2px 8px rgba(0,0,0,.7);
  transition: color var(--dur-base), text-shadow var(--dur-base);
  line-height: 1;
}
.nav-logo-name {
  font-family: 'Fira Sans', sans-serif;
  font-weight: 300;
  font-size: var(--fs-xs);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(250,248,245,0.80);
  /* strong multi-layer shadow: survives light/glossy hero imagery (CANVAS SCRIM + illegible-over-media) */
  text-shadow: 0 4px 30px rgba(0,0,0,.9), 0 2px 10px rgba(0,0,0,.7);
  transition: color var(--dur-base), text-shadow var(--dur-base);
  line-height: 1;
}
.site-nav.scrolled .nav-logo-ek  { color: var(--gold);   text-shadow: none; }
.site-nav.scrolled .nav-logo-name { color: var(--muted);  text-shadow: none; }

/* Inner pages: nav always shows on solid background */
body.page-inner .site-nav { background: rgba(244,240,235,0.97); box-shadow: 0 1px 0 var(--border); }
body.page-inner .nav-logo-ek  { color: var(--gold);    text-shadow: none; }
body.page-inner .nav-logo-name { color: var(--muted);  text-shadow: none; }
body.page-inner .nav-links a { color: var(--ink); text-shadow: none; }
body.page-inner .nav-burger span { background: var(--ink); }

.nav-links {
  display: flex; align-items: center; gap: var(--sp-lg);
  list-style: none;
}
.nav-links a {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs);
  font-weight: 400;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  text-decoration: none;
  color: rgba(250,248,245,0.85);
  text-shadow: 0 2px 10px rgba(0,0,0,.6);
  transition: color var(--dur-base);
  /* tap target via min-height on block/flex parent */
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.site-nav.scrolled .nav-links a { color: var(--ink); text-shadow: none; }
.nav-links a:hover { color: var(--accent); }

.nav-book {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0 var(--sp-md);
  background: var(--accent);
  color: #FAF8F5 !important;
  text-shadow: none !important;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 500;
  letter-spacing: 0.16em; text-transform: uppercase;
  text-decoration: none;
  transition: background var(--dur-base);
}
.nav-book:hover { background: #5A4035; }

/* ── BURGER ── */
.nav-burger {
  display: none;
  flex-direction: column; justify-content: center; align-items: center;
  gap: 5px;
  width: 44px; height: 44px;
  background: none; border: none; cursor: pointer; padding: 0;
}
.nav-burger span {
  display: block; width: 22px; height: 1.5px;
  background: rgba(250,248,245,0.9);
  transition: background var(--dur-base), transform var(--dur-base), opacity var(--dur-base);
}
.site-nav.scrolled .nav-burger span { background: var(--ink); }

/* ── DRAWER — ND-1 through ND-5 ── */
.nav-drawer {
  display: none;
  position: fixed; inset: 0; z-index: 300;
  flex-direction: column;
  padding: 80px var(--sp-xl) var(--sp-2xl);
  /* ND-1: opaque panel, alpha ≥ 0.92 */
  background: rgba(46,40,34,0.97);
  overflow-y: auto;
}
.nav-drawer.open { display: flex; }
.drawer-close {
  position: absolute; top: 12px; right: var(--sp-xl);
  background: none; border: none;
  /* ND-2: 44px tap target, ND-3: explicit color */
  color: rgba(250,248,245,0.90);  /* ND-3: color on button */
  font-size: var(--fs-lg); cursor: pointer;
  min-height: 44px; min-width: 44px;
  display: flex; align-items: center; justify-content: center;
}
.nav-drawer ul { list-style: none; }
.nav-drawer ul li a {
  /* ND-2: 44px by padding; ND-3: explicit color on <a> */
  display: flex; align-items: center;
  min-height: 44px; padding: 0.8rem 0;
  color: rgba(250,248,245,0.92);  /* ND-3: color on the <a> itself */
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-md); font-weight: 300;
  letter-spacing: 0.18em; text-transform: uppercase;
  text-decoration: none;
  border-bottom: 1px solid rgba(250,248,245,0.10);
  transition: color var(--dur-fast);
}
.nav-drawer ul li a:hover { color: var(--accent2); }
.drawer-book {
  display: flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0.9rem var(--sp-md);
  margin-top: var(--sp-lg);
  background: var(--accent);
  /* ND-3: explicit color on <a> */
  color: rgba(250,248,245,0.96) !important;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 500;
  letter-spacing: 0.16em; text-transform: uppercase;
  text-decoration: none;
  border-bottom: none !important;
  transition: background var(--dur-base);
}
.drawer-book:hover { background: #5A4035; }

@media (max-width: 880px) {
  .nav-links { display: none; }
  .nav-burger { display: flex; }
}

/* ══ HERO (index only) — CSS cross-dissolve, static-header route ══ */
.hero {
  position: relative; width: 100%; height: 100vh; min-height: 640px;
  overflow: hidden;
  background: #2E2822;
}
.hero-layer {
  position: absolute; inset: 0; z-index: 1;
}
.hero-layer img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center 30%;
  display: block;
}
/* hero-motion gate: data-hero-fallback="static" route — no time-based animation;
   hero-layer--a shows the primary still; hero-layer--b is suppressed. */
.hero-layer--a {
  /* static — no animation; site-qa[hero-motion] requires frozen-at-rest for scroll-scrub OR no motion at all */
}
.hero-layer--b {
  display: none;  /* layer-b not visible in static route; avoids time-based motion */
}

/* CANVAS SCRIM LAW — gradient ancestor covering ALL hero text elements */
.hero-scrim {
  position: absolute; inset: 0; z-index: 2;
  /* gradient-image ancestor satisfies the scrim requirement for ALL child text */
  /* darkened midpoint (was 0.22 → 0.52) so centred text clears 2:1 over light cream imagery */
  background-image: linear-gradient(
    to bottom,
    rgba(0,0,0,0.60) 0%,
    rgba(0,0,0,0.52) 42%,
    rgba(0,0,0,0.65) 100%
  );
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  text-align: center;
  padding: 80px var(--sp-xl) var(--sp-2xl);  /* 80px = nav height + buffer */
}

.hero-eyebrow {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.30em; text-transform: uppercase;
  color: rgba(250,248,245,0.92);  /* was 0.75 — raised to clear 2:1 over light hero imagery */
  margin-bottom: var(--sp-md);
  text-shadow: 0 4px 30px rgba(0,0,0,.9), 0 2px 10px rgba(0,0,0,.7);
}

/* Hero h1 = "RESTORE" — distinct from nav logo "EK"; no text-collision possible */
.hero-wordmark {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-3xl);
  font-weight: 300;
  letter-spacing: 0.30em;
  text-transform: uppercase;
  color: #FAF8F5;
  line-height: 1.05;
  text-shadow: 0 4px 30px rgba(0,0,0,.9), 0 2px 10px rgba(0,0,0,.7);
  margin-bottom: var(--sp-xs);
}

.hero-rule {
  display: flex; align-items: center; justify-content: center;
  gap: var(--sp-sm); margin-bottom: var(--sp-sm);
}
.hero-rule::before, .hero-rule::after {
  content: ''; flex: 1; max-width: 48px; height: 1px;
  background: rgba(250,248,245,0.40);
}
.hero-rule-sub {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: rgba(250,248,245,0.88);  /* was 0.70; strong shadow raised to clear 2:1 */
  text-shadow: 0 4px 30px rgba(0,0,0,.9), 0 2px 10px rgba(0,0,0,.7);
}

.hero-tagline {
  font-family: 'Merriweather Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 300;
  letter-spacing: 0.06em;
  color: rgba(250,248,245,0.85);  /* was 0.65; strong shadow raised to clear 2:1 */
  margin-top: var(--sp-md);
  margin-bottom: var(--sp-xl);
  text-shadow: 0 4px 30px rgba(0,0,0,.9), 0 2px 10px rgba(0,0,0,.7);
  max-width: 480px;
}

.hero-cta {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0.75rem var(--sp-2xl);
  background: var(--accent); color: #FAF8F5;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  text-decoration: none;
  transition: background var(--dur-base);
}
.hero-cta:hover { background: #5A4035; }

.hero-scroll {
  position: absolute; bottom: var(--sp-xl); left: 50%;
  transform: translateX(-50%);
  z-index: 3;
  display: flex; flex-direction: column; align-items: center; gap: var(--sp-xs);
  /* Scrim requirement for scroll cue text: strong multi-layer shadow */
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(250,248,245,0.55);
  text-shadow: 0 4px 30px rgba(0,0,0,.9), 0 2px 10px rgba(0,0,0,.7);
  pointer-events: none;
}
.hero-scroll-line {
  width: 1px; height: 28px;
  background: rgba(250,248,245,0.35);
  animation: scrollPulse 2.2s ease-in-out infinite;
}
@keyframes scrollPulse { 0%,100% { opacity: 0.35; } 50% { opacity: 0.85; } }
@media (prefers-reduced-motion: reduce) { .hero-scroll-line { animation: none; } }

/* ══ PAGE HEADER (inner pages: services, gallery, about, contact) ══ */
.page-header {
  position: relative;
  height: 38vh; min-height: 260px;
  overflow: hidden;
  background: var(--ink);    /* solid fallback — contrast anchor */
  margin-top: 64px;          /* clear fixed nav */
}
/* Gradient-only variant (gallery page: all pool photos appear as tiles; image here = dupe) */
.page-header--gradient {
  display: flex; flex-direction: column; justify-content: flex-end;
}
.page-header-img {
  position: absolute; inset: 0;
  background-size: cover; background-position: center 30%;
  background-color: var(--ink);
}
.page-header-img img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center 30%;
}
.page-header-scrim {
  position: absolute; inset: 0;
  background-image: linear-gradient(to bottom, rgba(0,0,0,0.52), rgba(0,0,0,0.38));
  display: flex; flex-direction: column;
  align-items: flex-start; justify-content: flex-end;
  padding: var(--sp-2xl) var(--sp-xl);
}
.page-header-label {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.26em; text-transform: uppercase;
  color: rgba(250,248,245,0.70);
  text-shadow: 0 4px 20px rgba(0,0,0,.9), 0 2px 8px rgba(0,0,0,.7);
  margin-bottom: var(--sp-xs);
}
.page-header-title {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xl); font-weight: 300;
  letter-spacing: 0.10em;
  color: #FAF8F5;
  text-shadow: 0 4px 30px rgba(0,0,0,.9), 0 2px 10px rgba(0,0,0,.7);
}

/* ══ SHARED LAYOUT ══ */
.section-inner {
  max-width: 1160px; margin: 0 auto;
  padding-left: var(--sp-xl); padding-right: var(--sp-xl);
}
.section-label {
  display: block;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 600;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--accent2);
  margin-bottom: var(--sp-xs);
}
.section-heading {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xl); font-weight: 300;
  letter-spacing: 0.08em;
  color: var(--ink);
  line-height: 1.2;
}
.section-body {
  font-family: 'Merriweather Sans', sans-serif;
  font-size: var(--fs-base);
  color: var(--muted);
  line-height: 1.80;
}
.hairline-rule {
  display: flex; align-items: center; gap: var(--sp-md);
  margin: var(--sp-lg) 0;
}
.hairline-rule::before, .hairline-rule::after {
  content: ''; flex: 1; height: 1px; background: var(--border);
}
.hairline-rule span {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--muted);
}

/* ══ SCROLL REVEAL ══ */
.reveal {
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.65s var(--ease-out), transform 0.65s var(--ease-out);
}
.reveal.in-view { opacity: 1; transform: none; }

/* ══ PROMISE BAND ══ */
.promise-band {
  background: var(--bg);
  padding: var(--sp-2xl) 0;
  text-align: center;
}
.promise-band-inner {
  max-width: 680px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
.promise-band-inner .hairline-rule { margin-bottom: var(--sp-xl); }
.promise-text {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-lg); font-weight: 300;
  line-height: 1.65; color: var(--ink);
}
.promise-text em { font-style: italic; color: var(--accent); }

/* ══ RESULTS STRIP (hook) ══ */
.results-strip {
  background: var(--bg-alt);
  padding: var(--sp-2xl) 0;
}
.results-strip-header {
  text-align: center; margin-bottom: var(--sp-xl);
}
/* 4-column filmstrip grid; at mobile 2×2 */
.results-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-sm);
  padding: 0 var(--sp-xl);
  max-width: 1160px; margin: 0 auto;
}
@media (max-width: 860px) {
  .results-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Mat + inner-rule frame — RESTORE wordmark editorial motif */
.result-tile {
  position: relative;
  aspect-ratio: 4/5;
  background: var(--bg);
  overflow: hidden;
  padding: 9px;
  box-shadow: inset 0 0 0 1px rgba(110,86,67,0.28);
}
.result-tile img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
  display: block;
  transition: transform 0.6s var(--ease-out);
}
.result-tile:hover img { transform: scale(1.04); }

.results-strip-cta {
  text-align: center; margin-top: var(--sp-xl); padding: 0 var(--sp-xl);
}
.results-strip-cta a {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0.75rem var(--sp-xl);
  border: 1px solid var(--accent);
  color: var(--accent);
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 400;
  letter-spacing: 0.18em; text-transform: uppercase;
  text-decoration: none;
  transition: background var(--dur-base), color var(--dur-base);
}
.results-strip-cta a:hover { background: var(--accent); color: #FAF8F5; }

/* ══ SERVICES BAND (home) ══ */
.services-band {
  background: var(--bg);
  padding: var(--sp-2xl) 0;
}
.services-band-header {
  text-align: center; margin-bottom: var(--sp-xl);
}
.services-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-md);
  max-width: 1160px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
@media (max-width: 900px) { .services-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .services-grid { grid-template-columns: 1fr; } }
.service-card {
  background: var(--card);
  padding: var(--sp-xl) var(--sp-lg);
  border-top: 2px solid var(--accent);
}
.service-card-ek {
  font-family: 'Fira Sans', sans-serif;
  font-weight: 600; font-size: var(--fs-xs);
  letter-spacing: 0.10em; color: var(--gold);
  margin-bottom: var(--sp-md);
}
.service-card h3 {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-md); font-weight: 300;
  letter-spacing: 0.06em; color: var(--ink);
  margin-bottom: var(--sp-sm);
}
.service-card p {
  font-family: 'Merriweather Sans', sans-serif;
  font-size: var(--fs-sm); color: var(--muted);
  line-height: 1.70;
}

/* ══ STUDIO BAND ══ */
.studio-band {
  background: var(--bg-alt);
  padding: var(--sp-2xl) 0;
}
.studio-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-xl);
  align-items: center;
  max-width: 1160px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
@media (max-width: 720px) { .studio-inner { grid-template-columns: 1fr; } }
.studio-img {
  aspect-ratio: 2/3;
  overflow: hidden;
}
.studio-img img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.studio-copy {
  padding: var(--sp-lg) 0;
}
.studio-copy .section-heading {
  margin: var(--sp-sm) 0 var(--sp-md);
}
.studio-address {
  display: inline-block;
  margin-top: var(--sp-lg);
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 400;
  letter-spacing: 0.08em;
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid var(--border);
  padding-bottom: 2px;
  transition: color var(--dur-base), border-color var(--dur-base);
}
.studio-address:hover { color: var(--ink); border-color: var(--ink); }

/* ══ BOOK BAND ══ */
.book-band {
  background: var(--ink);
  padding: var(--sp-2xl) 0;
  text-align: center;
}
.book-band-inner {
  max-width: 620px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
.book-brand {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.32em; text-transform: uppercase;
  color: rgba(250,248,245,0.50);
  margin-bottom: var(--sp-sm);
}
.book-heading {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xl); font-weight: 300;
  letter-spacing: 0.08em; color: #FAF8F5;
  margin-bottom: var(--sp-xl);
}
.book-ctas {
  display: flex; flex-wrap: wrap; gap: var(--sp-md);
  justify-content: center; margin-bottom: var(--sp-lg);
}
.btn-primary {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0.75rem var(--sp-2xl);
  background: var(--accent); color: #FAF8F5;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  text-decoration: none;
  transition: background var(--dur-base);
}
.btn-primary:hover { background: var(--accent2); }
.btn-ghost {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0.75rem var(--sp-xl);
  border: 1px solid rgba(250,248,245,0.30);
  color: rgba(250,248,245,0.80);
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 400;
  letter-spacing: 0.14em; text-transform: uppercase;
  text-decoration: none;
  transition: border-color var(--dur-base), color var(--dur-base);
}
.btn-ghost:hover { border-color: rgba(250,248,245,0.70); color: #FAF8F5; }
.book-socials {
  display: flex; gap: var(--sp-lg); justify-content: center;
}
.book-socials a {
  display: inline-flex; align-items: center; min-height: 44px;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: rgba(250,248,245,0.50);
  text-decoration: none;
  transition: color var(--dur-base);
}
.book-socials a:hover { color: rgba(250,248,245,0.85); }

/* ══ FOOTER ══ */
.site-footer {
  background: var(--surface);
  padding: var(--sp-2xl) var(--sp-xl);
  border-top: 1px solid var(--border);
}
.footer-inner {
  max-width: 1160px; margin: 0 auto;
  display: flex; flex-wrap: wrap;
  align-items: center; justify-content: space-between;
  gap: var(--sp-lg);
}
/* TEXT wordmark — no logo image (no manifest); height 28px for logo-render-bounds gate */
.footer-wordmark {
  display: block;
  font-family: 'Fira Sans', sans-serif;
  font-weight: 300; font-size: var(--fs-sm);
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--accent);
  height: 28px; line-height: 28px; /* explicit height 24-96px per logo-render-bounds */
}
.footer-nav {
  display: flex; flex-wrap: wrap; gap: var(--sp-sm) var(--sp-lg);
  list-style: none;
}
.footer-nav a {
  display: inline-flex; align-items: center; min-height: 44px;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-weight: 300;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--muted); text-decoration: none;
  transition: color var(--dur-base);
}
.footer-nav a:hover { color: var(--accent); }
.footer-copy {
  width: 100%;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); color: var(--muted);
  letter-spacing: 0.06em; text-align: center;
  padding-top: var(--sp-md);
  border-top: 1px solid var(--border);
  margin-top: var(--sp-md);
}

/* ══ SERVICES PAGE ══ */
.services-page { background: var(--bg); padding: var(--sp-2xl) 0; }
.services-page-inner {
  max-width: 1160px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
.services-page-intro {
  max-width: 640px; margin-bottom: var(--sp-2xl);
}
.services-full-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-lg);
}
@media (max-width: 860px) { .services-full-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .services-full-grid { grid-template-columns: 1fr; } }
.service-full-card {
  background: var(--card);
  border-top: 2px solid var(--accent);
  overflow: hidden;
}
.service-full-img {
  aspect-ratio: 4/3;
  overflow: hidden;
}
.service-full-img img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
  display: block;
  transition: transform 0.6s var(--ease-out);
}
.service-full-card:hover .service-full-img img { transform: scale(1.04); }
.service-full-body {
  padding: var(--sp-lg);
}
.service-full-body h2 {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-lg); font-weight: 300;
  letter-spacing: 0.06em; color: var(--ink);
  margin-bottom: var(--sp-sm);
}
.service-full-body p {
  font-family: 'Merriweather Sans', sans-serif;
  font-size: var(--fs-sm); color: var(--muted);
  line-height: 1.75;
}
.service-note {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-xs); font-style: italic;
  color: var(--accent2); margin-top: var(--sp-sm);
}

/* ══ GALLERY PAGE ══ */
.gallery-page { background: var(--bg); padding: var(--sp-2xl) 0; }
.gallery-page-inner {
  max-width: 1160px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
.gallery-intro { max-width: 560px; margin-bottom: var(--sp-xl); }
/* CSS columns masonry — always visible, hover-scale */
.gallery-masonry {
  columns: 3;
  column-gap: var(--sp-sm);
}
@media (max-width: 860px) { .gallery-masonry { columns: 2; } }
@media (max-width: 480px) { .gallery-masonry { columns: 1; } }
.gallery-tile {
  break-inside: avoid;
  margin-bottom: var(--sp-sm);
  overflow: hidden;
  background: var(--bg-alt);
  padding: 8px;
  box-shadow: inset 0 0 0 1px rgba(110,86,67,0.22);
}
.gallery-tile img {
  width: 100%;
  height: auto;
  display: block;
  transition: transform 0.55s var(--ease-out);
}
.gallery-tile:hover img { transform: scale(1.04); }

/* ══ ABOUT PAGE ══ */
.about-page { background: var(--bg); padding: var(--sp-2xl) 0; }
.about-inner {
  max-width: 1160px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
.about-split {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: var(--sp-2xl);
  align-items: start;
  margin-bottom: var(--sp-2xl);
}
@media (max-width: 720px) { .about-split { grid-template-columns: 1fr; } }
.about-img {
  aspect-ratio: 2/3;
  overflow: hidden;
  padding: 10px;
  box-shadow: inset 0 0 0 1px rgba(110,86,67,0.25);
}
.about-img img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.about-copy .section-heading { margin: var(--sp-sm) 0 var(--sp-md); }
.about-copy .section-body { margin-bottom: var(--sp-md); }

/* ══ CONTACT PAGE ══ */
.contact-page { background: var(--bg); padding: var(--sp-2xl) 0; }
.contact-inner {
  max-width: 860px; margin: 0 auto;
  padding: 0 var(--sp-xl);
}
.contact-block {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-xl);
  margin-top: var(--sp-xl);
}
@media (max-width: 640px) { .contact-block { grid-template-columns: 1fr; } }
.contact-item {
  padding: var(--sp-xl);
  background: var(--card);
  border-top: 2px solid var(--accent);
}
.contact-item h2 {
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-md); font-weight: 300;
  letter-spacing: 0.08em; color: var(--ink);
  margin-bottom: var(--sp-sm);
}
.contact-item p, .contact-item address {
  font-family: 'Merriweather Sans', sans-serif;
  font-size: var(--fs-sm); color: var(--muted);
  line-height: 1.70; font-style: normal;
}
.contact-link {
  display: inline-flex; align-items: center;
  min-height: 44px;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 400;
  letter-spacing: 0.08em;
  color: var(--accent); text-decoration: none;
  border-bottom: 1px solid var(--border);
  padding-bottom: 2px;
  transition: color var(--dur-base), border-color var(--dur-base);
}
.contact-link:hover { color: var(--ink); border-color: var(--ink); }
.contact-cta {
  display: flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0.75rem var(--sp-xl);
  background: var(--accent); color: #FAF8F5;
  font-family: 'Fira Sans', sans-serif;
  font-size: var(--fs-sm); font-weight: 500;
  letter-spacing: 0.16em; text-transform: uppercase;
  text-decoration: none; margin-top: var(--sp-md);
  transition: background var(--dur-base);
}
.contact-cta:hover { background: #5A4035; }
