/* ============================================================
   ARIELA DANAEI — Define. Design. Dominate.
   Palette: Near-Black #0D0D0D · Pure White #FFFFFF · Signal Red #E31E24
   Type: Barlow Condensed (self-hosted) — Black 900 / Medium 500 / Regular 400
   Rule: red appears sparingly — one accent per section.
   ============================================================ */

@font-face {
  font-family: "Barlow Condensed";
  font-style: normal; font-weight: 400; font-display: swap;
  src: url("assets/fonts/barlow-condensed-regular.woff2") format("woff2");
}
@font-face {
  font-family: "Barlow Condensed";
  font-style: normal; font-weight: 500; font-display: swap;
  src: url("assets/fonts/barlow-condensed-medium.woff2") format("woff2");
}
@font-face {
  font-family: "Barlow Condensed";
  font-style: normal; font-weight: 900; font-display: swap;
  src: url("assets/fonts/barlow-condensed-black.woff2") format("woff2");
}

:root {
  --black: #0D0D0D;
  --white: #FFFFFF;
  --red: #E31E24;
  --grey: #6b6b6b;
  --line: #e6e6e6;
  --line-dark: #2a2a2a;
  --maxw: 1200px;
  --pad: clamp(20px, 5vw, 80px);
  --font: "Barlow Condensed", "Oswald", "Arial Narrow", system-ui, sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

/* ---------- Cross-page fade transition ---------- */
/* Two layers, so every project page fades in on arrival:
   1. Cross-document view transitions (Chrome 126+) — a true crossfade where supported.
   2. A plain CSS fade-in on the project-page <body> — the RELIABLE fallback that
      also runs over file:// and in browsers without view transitions. This is what
      guarantees Gazebo/Loaf/FE all fade in when opened from the home page. */
@view-transition { navigation: auto; }
::view-transition-old(root),
::view-transition-new(root) { animation-duration: 0.35s; }

@keyframes ad-page-in { from { opacity: 0; } to { opacity: 1; } }
/* No fill-mode: the page defaults to fully visible, so if the animation never
   runs (throttled/background tab, odd browser) it fails VISIBLE, never blank. */
body.gz, body.lf, body.fe { animation: ad-page-in 0.45s ease; }

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) { animation: none; }
  body.gz, body.lf, body.fe { animation: none; }
}

body {
  font-family: var(--font);
  background: var(--white);
  color: var(--black);
  font-size: 18px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; display: block; height: auto; }
a { color: inherit; text-decoration: none; }

.accent { color: var(--red); }

/* ---------- Shared type ---------- */
.eyebrow {
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.28em;
  font-size: 13px;
  color: var(--grey);
  margin-bottom: 22px;
}
.eyebrow--light { color: rgba(255,255,255,0.6); }

.section__title {
  font-weight: 900;
  text-transform: uppercase;
  line-height: 0.92;
  letter-spacing: -0.01em;
  font-size: clamp(44px, 8vw, 104px);
}

.section__lead {
  max-width: 42ch;
  margin-top: 22px;
  color: var(--grey);
  font-size: clamp(18px, 2.2vw, 22px);
}
.section--dark .section__lead { color: rgba(255,255,255,0.7); }

/* ---------- Buttons ---------- */
.btn {
  display: inline-block;
  font-family: var(--font); /* <button> elements don't inherit body font — set it explicitly */
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 14px;
  padding: 16px 30px;
  border: 2px solid transparent;
  transition: all 0.2s ease;
  cursor: pointer;
}
.btn--primary { background: var(--red); color: #fff; border-color: var(--red); }
.btn--primary:hover { background: #c0141a; border-color: #c0141a; }
.btn--ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,0.4); }
.btn--ghost:hover { border-color: #fff; }
.btn--dark { background: var(--black); color: #fff; border-color: var(--black); }
.btn--dark:hover { background: var(--red); border-color: var(--red); }

/* ---------- Nav ---------- */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px var(--pad);
  transition: background 0.3s ease, padding 0.3s ease, box-shadow 0.3s ease;
}
.nav__logo { display: block; }
.nav__logo img { height: 26px; width: auto; }
.nav__logo-dark { display: none; }
.nav__logo-light { display: block; }
.nav.is-solid { background: var(--white); box-shadow: 0 1px 0 var(--line); padding-top: 14px; padding-bottom: 14px; }
.nav.is-solid .nav__logo-dark { display: block; }
.nav.is-solid .nav__logo-light { display: none; }
.nav.is-solid .nav__links a { color: var(--black); }
.nav.is-solid .nav__toggle span { background: var(--black); }

.nav__links { display: flex; align-items: center; gap: 34px; }
.nav__links a {
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 14px;
  font-weight: 500;
}
.nav__links a:hover { color: var(--red); }
.nav__cta { border: 2px solid currentColor; padding: 9px 18px; }
.nav.is-solid .nav__cta { border-color: var(--black); }
.nav.is-solid .nav__cta:hover { background: var(--red); color: #fff !important; border-color: var(--red); }

.nav__toggle { display: none; background: none; border: 0; flex-direction: column; gap: 5px; cursor: pointer; }
.nav__toggle span { width: 26px; height: 2px; background: #fff; display: block; transition: 0.2s; }

/* ---------- Hero (animates on load — no scroll needed) ---------- */
.hero {
  position: relative; background: var(--black); color: #fff;
  min-height: 100vh; min-height: 100svh; display: flex; align-items: center;
  padding: clamp(88px, 12vh, 140px) var(--pad) clamp(40px, 6vh, 84px); overflow: hidden;
}
.hero__inner { max-width: var(--maxw); width: 100%; margin: 0 auto; }
.hero__title { font-weight: 900; text-transform: uppercase; line-height: 0.88; letter-spacing: -0.02em; margin-bottom: clamp(18px, 3vh, 34px); }
/* Font scales to the smaller of viewport WIDTH or HEIGHT, so the whole hero always fits one screen */
.hero__title .word { display: block; overflow: hidden; padding: 0.14em 0; margin: -0.14em 0; font-size: clamp(44px, min(13.5vw, 18vh), 190px); }
.hero__title .word--dominate { font-size: clamp(56px, min(17vw, 24vh), 250px); letter-spacing: 0.04em; }  /* biggest word = most dominant */
.hero__title .word__i { display: block; }
.hero__sub { max-width: 46ch; font-size: clamp(17px, min(2.4vw, 3vh), 26px); color: rgba(255,255,255,0.78); margin-bottom: clamp(22px, 3.5vh, 40px); }
.hero__actions { display: flex; gap: 16px; flex-wrap: wrap; }

/* On-load choreography: each word rises up from behind a mask, automatically (Mann-Sales-style) */
.hero .word__i { transform: translateY(110%); }
.hero .hero__sub, .hero .hero__actions { opacity: 0; }
.hero .word--define   .word__i { animation: wordRise 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.15s both; }
.hero .word--design   .word__i { animation: wordRise 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.42s both; }
.hero .word--dominate { overflow: visible; }  /* let it scale past the line for a harder hit */
.hero .word--dominate .word__i { transform-origin: left center; animation: dominateSlam 0.62s cubic-bezier(0.2, 1, 0.28, 1) 0.72s both; }
.hero .hero__sub      { animation: heroFade 0.9s cubic-bezier(0.16, 1, 0.3, 1) 1.25s both; }
.hero .hero__actions  { animation: heroFade 0.9s cubic-bezier(0.16, 1, 0.3, 1) 1.4s both; }

@keyframes wordRise { from { transform: translateY(110%); } to { transform: translateY(0); } }
@keyframes heroFade { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
/* "Dominate" hits harder — drops in oversized and snaps down to size */
@keyframes dominateSlam {
  0%   { opacity: 0; transform: translateY(42%) scale(1.16); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* ---------- Reveal-on-scroll (refined easing) ---------- */
.js .reveal { opacity: 0; transform: translateY(32px); transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1), transform 0.9s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal.reveal-in { opacity: 1; transform: none; }

/* Masked heading reveal — the title rises from behind a line */
.js .section__title { overflow: hidden; padding: 0.1em 0; margin: -0.1em 0; }
.js .section__title .rise { display: block; transform: translateY(115%); transition: transform 0.95s cubic-bezier(0.16, 1, 0.3, 1); }
.section__head.reveal-in .section__title .rise,
.contact__intro.reveal-in .section__title .rise { transform: none; }

/* Word-by-word stagger reveal (Work heading) */
.js .section__title--stagger { overflow: visible; }
.section__title--stagger .w { display: inline-block; overflow: hidden; padding: 0.12em 0; margin: -0.12em 0; vertical-align: bottom; }
.js .section__title--stagger .w__i { display: inline-block; transform: translateY(110%); transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.section__head.reveal-in .section__title--stagger .w__i { transform: none; }
.section__title--stagger .w:nth-child(1) .w__i { transition-delay: 0.03s; }
.section__title--stagger .w:nth-child(2) .w__i { transition-delay: 0.11s; }
.section__title--stagger .w:nth-child(3) .w__i { transition-delay: 0.19s; }
.section__title--stagger .w:nth-child(4) .w__i { transition-delay: 0.27s; }
.section__title--stagger .w:nth-child(5) .w__i { transition-delay: 0.35s; }

/* Nav link underline swipe */
.nav__links a:not(.nav__cta) { position: relative; }
.nav__links a:not(.nav__cta)::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 1px;
  background: currentColor; transform: scaleX(0); transform-origin: left;
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}
.nav__links a:not(.nav__cta):hover::after { transform: scaleX(1); }

/* Lenis smooth scroll (recommended base CSS) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

/* ---------- Sections ---------- */
.section { padding: clamp(70px, 11vw, 150px) var(--pad); max-width: var(--maxw); margin: 0 auto; }
.section--dark {
  background: var(--black); color: #fff;
  max-width: none; margin: 0;
  padding-left: max(var(--pad), calc((100vw - var(--maxw))/2));
  padding-right: max(var(--pad), calc((100vw - var(--maxw))/2));
}
.section__head { margin-bottom: clamp(48px, 7vw, 90px); }

/* ---------- Work (editorial / posh) ---------- */
.project { margin-bottom: clamp(90px, 13vw, 180px); }
.project:last-child { margin-bottom: 0; }
.project__head {
  display: grid; grid-template-columns: auto 1fr; gap: 8px 32px; align-items: end;
  margin-bottom: 30px; padding-top: 30px; border-top: 1px solid var(--line);
}
.project__index { grid-row: span 2; align-self: start; font-weight: 900; font-size: clamp(24px, 4vw, 44px); line-height: 1; color: #d2d2d2; }
.project__title-block { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 20px; }
.project__name { font-weight: 900; text-transform: uppercase; font-size: clamp(32px, 5vw, 58px); line-height: 0.95; }
.project__tags { text-transform: uppercase; letter-spacing: 0.2em; font-size: 12px; color: var(--grey); font-weight: 500; }
.project__caption { grid-column: 2; color: #4a4a4a; font-size: clamp(16px, 1.5vw, 19px); max-width: 62ch; }

.shot { overflow: hidden; background: #f4f4f4; display: block; }
.shot img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.8s cubic-bezier(0.2, 0.7, 0.2, 1); }
.shot:hover img { transform: scale(1.04); }
.project__feature { margin-bottom: 14px; }
.project__feature img { aspect-ratio: 3/2; }
.project__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; }
.project__row .shot img { aspect-ratio: 4/3; }

/* ---------- Work: stacked horizontal rectangle tiles ---------- */
.wtiles {
  display: flex; flex-direction: column; gap: clamp(14px, 1.6vw, 24px);
  width: 100vw; position: relative; left: 50%; transform: translateX(-50%);
  padding: 0 clamp(20px, 2.8vw, 46px);   /* small border in from the page edges */
}
.wtile { display: block; position: relative; height: clamp(220px, 33vh, 380px); overflow: hidden; }
/* Media layer (brand color + logo) — full color */
.wtile__media { position: absolute; inset: 0; }
.wtile__media img { width: 100%; height: 100%; object-fit: contain; transition: transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); }
.wtile:hover .wtile__media img { transform: scale(1.02); }
/* Brand color fills the band behind the (contained) lockup — matched to each logo's own background */
.wtile--gazebo .wtile__media { background: #46736b; }
.wtile--loaf   .wtile__media { background: #efe9dd; }
.wtile--fe     .wtile__media { background: #5a4a42; }
/* "View project" label — red, reveals on hover */
.wtile__view { position: absolute; z-index: 2; bottom: clamp(14px, 2vw, 24px); right: clamp(18px, 2vw, 28px); color: var(--red); font-weight: 500; text-transform: uppercase; letter-spacing: 0.16em; font-size: 12px; opacity: 0; transform: translateX(-6px); transition: opacity 0.4s ease, transform 0.4s ease; }
.wtile:hover .wtile__view { opacity: 1; transform: none; }

/* ---------- Scrolling marquee ---------- */
.marquee { background: var(--black); color: #fff; overflow: hidden; padding: clamp(18px, 3vw, 30px) 0; white-space: nowrap; }
.marquee__track { display: flex; width: max-content; animation: marquee 26s linear infinite; }
.mq-dom { transition: color 0.3s ease; }
.marquee:hover .mq-dom { color: var(--red); }
.marquee__group { display: flex; }
.marquee__group > span {
  font-weight: 900; text-transform: uppercase; font-size: clamp(38px, 6.5vw, 86px);
  line-height: 1; padding: 0 0.35em; letter-spacing: 0.01em;
}
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ---------- How it works — stacked step-cards ---------- */
.hiw__deck {
  --ch: clamp(132px, 16vw, 164px); --gap: 16px; --card: #191919;
  position: relative; max-width: 860px; margin: 0 auto; height: calc(var(--ch) * 1.86);
  transition: height 0.55s cubic-bezier(0.16, 1, 0.3, 1);
  cursor: pointer; overflow: visible; outline: none;
}
.hiw__deck:focus-visible { outline: 2px solid var(--red); outline-offset: 8px; border-radius: 14px; }

.hiw__card {
  position: absolute; left: 0; right: 0; top: 0; height: var(--ch);
  background: var(--card); border: 1px solid var(--line-dark); border-radius: 14px;
  padding: clamp(18px, 3vw, 28px) clamp(22px, 3.6vw, 38px);
  display: flex; align-items: center; gap: clamp(18px, 3vw, 34px);
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.5);
  transition: transform 0.55s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease, border-color 0.35s ease;
  transform-origin: top center; will-change: transform;
}
.hiw__num { font-weight: 900; font-size: clamp(30px, 4vw, 46px); line-height: 1; color: var(--red); flex: none; min-width: 1.6em; }
.hiw__rule { align-self: stretch; width: 1px; background: var(--line-dark); flex: none; }
.hiw__body h3 { font-weight: 900; text-transform: uppercase; font-size: clamp(22px, 3vw, 34px); line-height: 1; margin-bottom: 8px; }
.hiw__body p { color: rgba(255, 255, 255, 0.66); font-size: clamp(14px, 1.4vw, 17px); line-height: 1.5; max-width: 52ch; }

/* collapsed stack — 2 & 3 peek; 4-6 tuck behind 3 */
.hiw__card:nth-child(1) { transform: translateY(0) scale(1);                          z-index: 6; }
.hiw__card:nth-child(2) { transform: translateY(calc(var(--ch) * 0.43)) scale(.972);  z-index: 5; }
.hiw__card:nth-child(3) { transform: translateY(calc(var(--ch) * 0.86)) scale(.944);  z-index: 4; }
.hiw__card:nth-child(4) { transform: translateY(calc(var(--ch) * 0.86)) scale(.93);   z-index: 3; }
.hiw__card:nth-child(5) { transform: translateY(calc(var(--ch) * 0.86)) scale(.93);   z-index: 2; }
.hiw__card:nth-child(6) { transform: translateY(calc(var(--ch) * 0.86)) scale(.93);   z-index: 1; }

/* hover — peek out further */
.hiw__deck:not(.is-open):hover { height: calc(var(--ch) * 2.4); }
.hiw__deck:not(.is-open):hover .hiw__card:nth-child(2) { transform: translateY(calc(var(--ch) * 0.54)) scale(.978); }
.hiw__deck:not(.is-open):hover .hiw__card:nth-child(3) { transform: translateY(calc(var(--ch) * 1.08)) scale(.95); }
.hiw__deck:not(.is-open):hover .hiw__card:nth-child(4) { transform: translateY(calc(var(--ch) * 1.22)) scale(.93); }
.hiw__deck:not(.is-open):hover .hiw__card:nth-child(5) { transform: translateY(calc(var(--ch) * 1.31)) scale(.912); }
.hiw__deck:not(.is-open):hover .hiw__card:nth-child(6) { transform: translateY(calc(var(--ch) * 1.37)) scale(.9); }

/* open — deal out into a readable column */
.hiw__deck.is-open { height: calc(6 * var(--ch) + 5 * var(--gap)); cursor: default; }
.hiw__deck.is-open .hiw__card { box-shadow: 0 10px 26px rgba(0, 0, 0, 0.4); }
.hiw__deck.is-open .hiw__card:hover { border-color: rgba(227, 30, 36, 0.55); }
.hiw__deck.is-open .hiw__card:nth-child(1) { transform: translateY(calc(0 * (var(--ch) + var(--gap)))) scale(1); }
.hiw__deck.is-open .hiw__card:nth-child(2) { transform: translateY(calc(1 * (var(--ch) + var(--gap)))) scale(1); }
.hiw__deck.is-open .hiw__card:nth-child(3) { transform: translateY(calc(2 * (var(--ch) + var(--gap)))) scale(1); }
.hiw__deck.is-open .hiw__card:nth-child(4) { transform: translateY(calc(3 * (var(--ch) + var(--gap)))) scale(1); }
.hiw__deck.is-open .hiw__card:nth-child(5) { transform: translateY(calc(4 * (var(--ch) + var(--gap)))) scale(1); }
.hiw__deck.is-open .hiw__card:nth-child(6) { transform: translateY(calc(5 * (var(--ch) + var(--gap)))) scale(1); }

/* hint under the deck */
.hiw__hint { max-width: 860px; margin: 22px auto 0; text-align: center; cursor: pointer;
  text-transform: uppercase; letter-spacing: 0.2em; font-size: 12px; color: rgba(255, 255, 255, 0.5);
  transition: opacity 0.3s ease, color 0.3s ease; }
.hiw__hint:hover { color: var(--red); }
.hiw__hint .k { color: var(--red); }
.hiw__deck.is-open + .hiw__hint .open-txt { display: none; }
.hiw__hint .close-txt { display: none; }
.hiw__deck.is-open + .hiw__hint .close-txt { display: inline; }

/* mobile — bigger cards, no hover, rest slightly fanned so the stack is obvious */
@media (max-width: 640px) {
  .hiw__deck { --ch: clamp(150px, 40vw, 188px); }
  .hiw__body p { display: none; }
  .hiw__deck.is-open .hiw__body p { display: block; }
  .hiw__deck:not(.is-open) { height: calc(var(--ch) * 2.08); }
  .hiw__deck:not(.is-open) .hiw__card:nth-child(4) { transform: translateY(calc(var(--ch) * 0.88)) scale(.925); }
  .hiw__deck:not(.is-open) .hiw__card:nth-child(5) { transform: translateY(calc(var(--ch) * 0.93)) scale(.915); }
  .hiw__deck:not(.is-open) .hiw__card:nth-child(6) { transform: translateY(calc(var(--ch) * 0.97)) scale(.905); }
}

/* ---------- About (Who's Behind It) ---------- */
.about__grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: clamp(36px, 7vw, 96px); align-items: center; }
.about__text .eyebrow { margin-bottom: 18px; }
/* Heading sized/styled to match the service titles (Discovery Call, Strategy, …) */
.about__name {
  font-weight: 900; text-transform: uppercase;
  font-size: clamp(26px, 3.4vw, 40px); line-height: 1;
  letter-spacing: -0.01em; margin-bottom: 26px;
}
.about__text p { margin-bottom: 20px; font-size: 19px; max-width: 52ch; }
.about__text p:last-of-type { margin-bottom: 30px; }
.about__text .btn { margin-top: 0; }
/* D icon, right of the screen */
.about__mark { display: flex; justify-content: center; align-items: center; }
.about__mark img { width: auto; height: clamp(200px, 30vw, 340px); max-width: 100%; }

/* ---------- Book ---------- */
.book__embed { display: flex; justify-content: center; }
/* Embedded Calendly calendar — white sheet + brand colours set via the widget's own params.
   On the white section the calendar melts into the page so it reads as native, not a widget. */
.book__embed .calendly-inline-widget { width: 100%; max-width: 1000px; }
.book__fallback { text-align: center; font-size: clamp(19px, 2.4vw, 24px); }
.book__fallback a { color: var(--red); border-bottom: 1px solid currentColor; }
.book__panel {
  border: 1px solid var(--line-dark); border-radius: 6px;
  background: rgba(255,255,255,0.02);
  max-width: 620px; width: 100%;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; text-align: center;
  gap: 22px; padding: clamp(40px, 6vw, 68px) clamp(28px, 5vw, 56px);
}
.book__panel-lead {
  color: rgba(255,255,255,0.82); font-size: clamp(19px, 2.4vw, 24px);
  line-height: 1.4; max-width: 34ch;
}
.book__cta { margin-top: 4px; }
.book__alt {
  color: rgba(255,255,255,0.5); font-size: 15px; letter-spacing: 0.01em;
  border-bottom: 1px solid transparent; transition: color 0.2s, border-color 0.2s;
}
.book__alt:hover { color: rgba(255,255,255,0.9); border-color: rgba(255,255,255,0.4); }

/* ---------- Contact ---------- */
/* Heading on top, form spans the full page width beneath it. */
.contact__grid { display: block; }
.contact__intro { margin-bottom: clamp(30px, 4vw, 52px); }
.contact__intro .section__title { font-size: clamp(40px, 6vw, 82px); line-height: 0.98; }

.contact__form { display: flex; flex-direction: column; gap: 18px; }
.contact__form label { display: flex; flex-direction: column; gap: 8px; text-transform: uppercase; letter-spacing: 0.14em; font-size: 13px; font-weight: 500; }
.contact__form input[type="text"],
.contact__form input[type="email"],
.contact__form input[type="tel"],
.contact__form textarea,
.contact__form select {
  font-family: var(--font); font-size: 17px; padding: 14px 16px;
  border: 1px solid var(--black); background: #fff; color: var(--black); border-radius: 0; width: 100%;
}
.contact__form textarea { resize: vertical; }
.contact__form ::placeholder { color: var(--grey); opacity: 1; }
.contact__form input:focus, .contact__form textarea:focus, .contact__form select:focus { outline: 2px solid var(--red); outline-offset: -1px; }
.contact__form .btn { align-self: flex-start; margin-top: 6px; }
.contact__status { font-size: 15px; letter-spacing: 0; text-transform: none; }

/* two-across rows that stack on small screens */
.contact__form .cf-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 540px) { .contact__form .cf-row { grid-template-columns: 1fr; } }

/* select: custom chevron, grey until a real option is chosen */
.contact__form select {
  appearance: none; -webkit-appearance: none; cursor: pointer; padding-right: 40px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%230D0D0D' stroke-width='2'/></svg>");
  background-repeat: no-repeat; background-position: right 16px center; background-size: 12px 8px;
}
.contact__form select:required:invalid { color: var(--grey); }

/* "optional" tag inside a label */
.contact__form .cf-tag { text-transform: none; letter-spacing: 0.02em; font-size: 12px; font-weight: 400; color: var(--grey); }

/* how-did-you-hear checkbox group */
.contact__form .cf-check { border: 0; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.contact__form .cf-check legend { text-transform: uppercase; letter-spacing: 0.14em; font-size: 13px; font-weight: 500; padding: 0; }
.contact__form .cf-opts { display: flex; flex-wrap: wrap; gap: 12px 20px; }
.contact__form .cf-opt {
  flex-direction: row; align-items: center; gap: 9px;
  text-transform: none; letter-spacing: 0; font-size: 16px; font-weight: 400; cursor: pointer;
}
.contact__form .cf-opt input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--red); cursor: pointer; flex: none; }

/* captcha (hCaptcha widget) */
.contact__form .cf-captcha { margin-top: 2px; min-height: 78px; }

/* ---------- Footer ---------- */
.footer { font-family: var(--font); background: var(--black); color: #fff; text-align: center; padding: 0 var(--pad) clamp(28px, 4vw, 44px); }
/* Marquee opens the footer — full-bleed, flush to the top */
.footer .marquee { margin: 0 calc(-1 * var(--pad)) clamp(24px, 3.5vw, 38px); }
.footer__logo { height: 28px; width: auto; margin: 0 auto 14px; }
.footer__tag { font-weight: 900; text-transform: uppercase; font-size: clamp(26px, 4vw, 44px); line-height: 1; margin-bottom: 26px; }
.footer__meta { color: rgba(255,255,255,0.65); font-size: 15px; text-transform: uppercase; letter-spacing: 0.12em; }
.footer__meta a:hover { color: var(--red); }
.footer__copy { color: rgba(255,255,255,0.35); font-size: 13px; margin-top: 10px; text-transform: uppercase; letter-spacing: 0.14em; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 820px) {
  .nav__links {
    position: fixed; inset: 0 0 0 auto; width: min(78vw, 320px);
    background: var(--black); flex-direction: column; align-items: flex-start;
    justify-content: center; gap: 26px; padding: 40px;
    transform: translateX(100%); transition: transform 0.3s ease;
  }
  .nav__links a { color: #fff !important; font-size: 20px; }
  .nav.is-open .nav__links { transform: translateX(0); }
  .nav__toggle { display: flex; z-index: 101; }
  .nav.is-solid .nav__toggle span { background: var(--black); }
  .nav.is-open.is-solid .nav__toggle span { background: #fff; }

  .about__grid { grid-template-columns: 1fr; }
  .contact__grid { grid-template-columns: 1fr; }
  .project__head { grid-template-columns: 1fr; }
  .project__index { grid-row: auto; }
  .project__caption { grid-column: 1; }
}

@media (max-width: 480px) {
  .hero { padding-top: clamp(96px, 15vh, 120px); }
  .wtile { height: clamp(180px, 26vh, 260px); }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
  .hero .word__i, .hero .hero__sub, .hero .hero__actions,
  .js .section__title .rise, .js .section__title--stagger .w__i, .js .reveal {
    opacity: 1 !important; transform: none !important; filter: none !important; animation: none !important;
  }
  .marquee__track { animation: none !important; }
  #about .section__title .accent::after { transform: scaleX(1) !important; transition: none !important; }
}

/* ============================================================
   PROJECT PAGES
   ============================================================ */
.proj-nav {
  position: sticky; top: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px var(--pad); background: rgba(255,255,255,0.5); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: 0 1px 0 var(--line);
}
.proj-nav__logo img { height: 24px; width: auto; display: block; }
.proj-back { text-transform: uppercase; letter-spacing: 0.16em; font-size: 13px; font-weight: 500; }
.proj-back:hover { color: var(--red); }

.proj-hero { display: flex; align-items: center; justify-content: center; min-height: 54vh; padding: clamp(60px, 9vw, 110px) var(--pad); }
.proj-hero__logo { max-width: min(440px, 62%); max-height: 240px; width: auto; height: auto; }
.proj-hero--gazebo { background: #46736b; }
.proj-hero--loaf   { background: #efe9dd; }
.proj-hero--fe     { background: #5a4a42; }

.proj-intro { max-width: var(--maxw); margin: 0 auto; padding: clamp(46px, 7vw, 88px) var(--pad) clamp(18px, 3vw, 36px); }
.proj-eyebrow { text-transform: uppercase; letter-spacing: 0.24em; font-size: 13px; color: var(--grey); margin-bottom: 18px; }
.proj-title { font-weight: 900; text-transform: uppercase; font-size: clamp(48px, 9vw, 118px); line-height: 0.9; letter-spacing: -0.01em; }
.proj-tags { text-transform: uppercase; letter-spacing: 0.2em; font-size: 13px; color: var(--grey); margin-top: 18px; }
.proj-desc { font-size: clamp(18px, 2vw, 24px); max-width: 62ch; margin-top: 22px; color: #333; }

.proj-gallery {
  max-width: var(--maxw); margin: 0 auto;
  padding: clamp(30px, 5vw, 60px) var(--pad) clamp(60px, 9vw, 120px);
  display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(14px, 2vw, 26px);
}
.proj-gallery figure { overflow: hidden; margin: 0; aspect-ratio: 4 / 3; background: #f5f5f5; }
.proj-gallery img { width: 100%; height: 100%; object-fit: contain; display: block; transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.proj-gallery figure:hover img { transform: scale(1.03); }
.proj-gallery .wide { grid-column: span 1; }  /* uniform — no full-width feature */

.proj-guidelines { background: var(--black); color: #fff; padding: clamp(60px, 9vw, 120px) var(--pad); text-align: center; }
.proj-guidelines h2 { font-weight: 900; text-transform: uppercase; font-size: clamp(30px, 5vw, 60px); line-height: 1; }
.proj-guidelines p { color: rgba(255,255,255,0.7); max-width: 52ch; margin: 18px auto 0; font-size: 18px; }

.proj-cta { text-align: center; padding: clamp(56px, 8vw, 100px) var(--pad); display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

@media (max-width: 600px) {
  .proj-gallery { grid-template-columns: 1fr; }
  .proj-gallery .wide { grid-column: span 1; }
}

/* ---------- Testimonials ---------- */
.tmt-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 72px); max-width: var(--maxw); margin: 0 auto; }
.tmt { margin: 0; display: flex; flex-direction: column; height: 100%; }
.tmt__mark { display: block; font-weight: 900; font-size: clamp(56px, 6vw, 86px); line-height: 0.55; color: var(--black); margin-bottom: 8px; }
.tmt__quote { font-weight: 500; font-size: clamp(18px, 1.9vw, 24px); line-height: 1.45; margin: 0; }
.tmt__author { margin-top: auto; padding-top: 24px; text-transform: uppercase; letter-spacing: 0.16em; font-size: 13px; font-weight: 700; }
.tmt__author span { color: var(--grey); font-weight: 500; }
@media (max-width: 720px) { .tmt-grid { grid-template-columns: 1fr; gap: 44px; } }

/* ---------- Project guidelines deck ---------- */
.proj-deck { background: var(--white); padding: clamp(56px, 8vw, 100px) var(--pad); }
.proj-deck__head { max-width: 1100px; margin: 0 auto clamp(26px, 4vw, 46px); display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.proj-deck__head h2 { font-weight: 900; text-transform: uppercase; font-size: clamp(30px, 5vw, 58px); line-height: 1; }
.proj-deck__pages { max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column; gap: clamp(12px, 1.8vw, 20px); }
.proj-deck__pages img { width: 100%; height: auto; display: block; border: 1px solid var(--line); }

/* ---- Page-transition veil: home → case study ---- */
.page-veil { position: fixed; inset: 0; z-index: 9999; background: #fff; pointer-events: none; opacity: 0; transition: opacity 0.45s ease; }
.page-veil.is-active { opacity: 1; pointer-events: all; }
@media (prefers-reduced-motion: reduce) { .page-veil { transition: none; } }
