/* Red's Tree Farm: V2 (client feedback round 1)
   White page, the logo red (#a1372d) and the client's blue (#385260) as the two brand colours,
   pine green kept for transactions. Headlines: a Guest-in-Residence-style "bubble" slab (Ultra,
   uppercase, coloured fill + hard offset shadow) for the few big statements; everything else in
   Archivo, the condensed "control panel" face the client likes. Fewer photos, more colour. */
:root {
  --white: #ffffff;
  --paper-2: #f3f4f2;      /* faint cool grey for quiet panels */
  --ink: #1f2427;
  --muted: #5d666b;
  --rule: #dcdfe0;
  --red: #a1372d;          /* Red's logo red (client) */
  --red-deep: #7e2a22;
  --blue: #385260;         /* client's blue */
  --blue-deep: #2a3f4a;
  --pine: #2d4a38;
  --pine-hover: #233c2d;

  --slab: "Ultra", "Rockwell Extra Bold", "Rockwell", Georgia, serif;
  --ui: "Archivo", "Helvetica Neue", Arial, sans-serif;

  --gutter: clamp(16px, 3.2vw, 44px);
  --space-1: 8px; --space-2: 16px; --space-3: 24px; --space-4: 40px; --space-5: 64px; --space-6: clamp(72px, 10vw, 140px);
  --nav-h: 64px;
  color-scheme: light;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 24px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0; background: var(--white); color: var(--ink);
  font: 400 16px/1.6 var(--ui); font-stretch: 100%;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--ink); color: var(--white); padding: 8px 12px; }
.skip:focus { top: 12px; }
p { margin: 0; }

/* ---------- type ----------
   Uppercase for everything that names or labels; sentence case only for reading text.
   1 Display    Ultra, uppercase, hard shadow             .bubble: hero, How it works, tile titles
   2 Headline   Archivo 900 / 70%, uppercase              Pick your pine, Delivery/Pickup, Good questions, sizes, Total, quotes
   3 Standfirst Archivo 850 / 72%, uppercase              hero sub, tile lines, How it works intro, Delivery/Pickup lines, sign-off
   4 Item       Archivo 800 / 78%, uppercase              FAQ questions, Add a tree stand
   5 Label      Archivo 700 / 82%, 0.74rem, +0.14em       eyebrows, field and fact labels, footer labels
   6 Action     Archivo 700 / 82-88%, uppercase, tracked  buttons and text links
   7 Body       Archivo 400, sentence case                paragraphs, answers, notes */
.eyebrow, .caption, .field__label, .tag {
  font-family: var(--ui); font-stretch: 82%; font-weight: 700; font-size: 0.74rem;
  letter-spacing: 0.14em; text-transform: uppercase; line-height: 1.4; margin: 0;
}
.eyebrow { color: var(--muted); }
.eyebrow--light { color: rgba(255, 255, 255, 0.82); }
/* headings: Archivo, heavy and condensed, uppercase (client: "the control panel font") */
.heading-2 { font-family: var(--ui); font-stretch: 70%; font-weight: 900; text-transform: uppercase; font-size: clamp(2.3rem, 4.6vw, 3.8rem); line-height: 0.95; letter-spacing: -0.005em; margin: 0; text-wrap: balance; }
.heading-3 { font-family: var(--ui); font-stretch: 78%; font-weight: 800; text-transform: uppercase; font-size: clamp(1.25rem, 2vw, 1.6rem); line-height: 1.05; margin: 0; text-wrap: balance; }

/* the "bubble" headline: slab caps, coloured fill, hard offset shadow (after Guest in Residence) */
.bubble {
  --fill: var(--blue); --shade: var(--red);
  font-family: var(--slab); font-weight: 400; text-transform: uppercase; margin: 0;
  color: var(--fill); line-height: 0.98; letter-spacing: 0.01em; text-wrap: balance;
  text-shadow: 0.045em 0.045em 0 var(--shade);
}
.bubble--light { --fill: var(--white); --shade: var(--red); }
/* tile titles (Our Roots, Who's Red?): red fill, blue hard shadow (Sam, 28 Oct) */
.bubble--tile { --fill: var(--red); --shade: var(--blue); }

.tag { display: inline-block; margin-left: 8px; padding: 2px 6px; background: var(--paper-2); color: var(--muted); letter-spacing: .08em; vertical-align: 1px; }

/* editorial link: small caps, underlined */
.quiet-link {
  font-family: var(--ui); font-stretch: 82%; font-weight: 700; font-size: 0.8rem; letter-spacing: 0.14em; text-transform: uppercase;
  text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1px; color: var(--ink);
  justify-self: start;
}
.quiet-link:hover { text-decoration-thickness: 2px; }
.quiet-link--btn { background: none; border: 0; padding: 0; cursor: pointer; }

/* transactional button: square, pine */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 48px; padding: 0 22px; border: 0; border-radius: 0; cursor: pointer; text-decoration: none;
  font-family: var(--ui); font-stretch: 88%; font-weight: 700; font-size: 0.82rem; letter-spacing: 0.12em; text-transform: uppercase;
}
.btn--pine { background: var(--pine); color: var(--white); }
/* Same lift as the Delivery/Pickup tiles: hard offset shadow on hover, press back flat on click. */
.btn--pine, .newsletter__btn { --lift: var(--ink); box-shadow: 0 0 0 var(--lift);
  transition: transform .25s cubic-bezier(.2,.8,.3,1.4), box-shadow .25s ease, background-color .25s ease; }
.btn--pine:hover, .newsletter__btn:hover { transform: translate(-3px, -3px); box-shadow: 5px 5px 0 var(--lift); }
.btn--pine:active, .newsletter__btn:active { transform: translate(0, 0); box-shadow: 0 0 0 var(--lift); transition-duration: .08s; }
.btn--pine[disabled]:hover { transform: none; box-shadow: none; }
@media (prefers-reduced-motion: reduce) {
  .btn--pine, .newsletter__btn { transition: background-color .2s ease; }
  .btn--pine:hover, .newsletter__btn:hover, .btn--pine:active, .newsletter__btn:active { transform: none; box-shadow: none; }
  .btn--pine:hover { background: var(--pine-hover); }
}
.btn--block { width: 100%; }
.btn[disabled] { opacity: .45; cursor: not-allowed; }

/* ---------- marquee ---------- */
.marquee { background: var(--red); color: var(--white); overflow: hidden; height: 34px; display: flex; align-items: center; position: relative; z-index: 30; }
.marquee__track { display: flex; flex: none; gap: 56px; padding-left: 56px; white-space: nowrap; animation: marquee 48s linear infinite;
  font-stretch: 82%; font-weight: 700; font-size: 0.74rem; letter-spacing: 0.14em; text-transform: uppercase; }
.marquee__track span::after { content: "✶"; margin-left: 56px; font-size: .7em; opacity: .7; }
@keyframes marquee { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .marquee__track { animation: none; } }

/* ---------- nav (always solid white in V2: there is no photo behind it) ---------- */
.nav { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 40; }
.nav__inner {
  height: var(--nav-h); display: flex; align-items: center; gap: var(--space-4);
  padding-inline: var(--gutter); color: var(--ink);
  background: color-mix(in srgb, var(--white) 94%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  transition: box-shadow .35s ease;
}
.nav.is-solid .nav__inner { box-shadow: 0 1px 0 var(--rule); }
.logo { display: block; flex: none; }
.logo img, .logo--footer { display: block; height: 40px; width: auto; }
.nav__links { display: flex; gap: 28px; margin-left: auto; }
.nav__links a { text-decoration: none; font-stretch: 82%; font-weight: 700; font-size: 0.74rem; letter-spacing: 0.14em; text-transform: uppercase; padding: 6px 0; border-bottom: 1px solid transparent; }
.nav__links a:hover { border-color: currentColor; }
.nav__cta { min-height: 40px; padding: 0 16px; font-size: 0.72rem; }
.nav__toggle { display: none; margin-left: auto; width: 44px; height: 44px; background: none; border: 0; cursor: pointer; position: relative; }
.nav__bars, .nav__bars::before { position: absolute; left: 11px; right: 11px; height: 1.5px; background: currentColor; content: ""; }
.nav__bars { top: 18px; transition: transform .25s ease; } .nav__bars::before { top: 7px; left: 0; right: 0; transition: transform .25s ease; }
.nav.is-open .nav__bars { transform: translateY(3.5px) rotate(45deg); }
.nav.is-open .nav__bars::before { transform: translateY(-7px) rotate(-90deg); }
/* mobile menu: the blue band, links as bubble slab (white fill, red hard shadow), like "Fresh tree. Your way." */
.mobile-menu { position: fixed; inset: 0; top: 0; z-index: -1; background: var(--blue); color: var(--white);
  display: flex; flex-direction: column; gap: 18px; padding: calc(var(--nav-h) + 96px) var(--gutter) 40px; } /* ~70px clear space under the logo */
.mobile-menu a:not(.btn) { font-family: var(--slab); font-weight: 400; text-transform: uppercase; font-size: clamp(2.1rem, 10vw, 3.2rem); line-height: 1.05;
  color: var(--white); text-shadow: 0.06em 0.06em 0 var(--red); text-decoration: none; }
.mobile-menu .btn { margin-top: 22px; background: var(--white); color: var(--blue); --lift: var(--red); }
.nav.is-open .nav__inner { background: var(--blue); color: var(--white); box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; }
.nav.is-open .logo img { filter: brightness(0) invert(1); }
.nav.is-open .nav__cta { display: none; }

/* ---------- hero (close-up photo; headline colour C: white fill, red hard shadow) ---------- */
.hero { position: relative; background: var(--white); padding: clamp(56px, 9vw, 140px) var(--gutter) clamp(56px, 8vw, 120px); border-bottom: 1px solid var(--rule); }
.hero__copy { max-width: 1500px; margin-inline: auto; display: grid; gap: clamp(28px, 4vw, 48px); justify-items: start; }
.hero__title { font-size: clamp(2.9rem, 8.2vw, 8.6rem); }
.hero__title span { display: block; }
.hero__sub { font-size: 0.56em; margin-top: 0.3em; --fill: var(--red); --shade: var(--blue); color: var(--red); text-shadow: 0.045em 0.045em 0 var(--blue); }
.hero--photo { min-height: clamp(560px, calc(100svh - var(--nav-h)), 980px); display: flex; align-items: center; overflow: hidden; background: var(--blue); border-bottom: 0; }
.hero--photo .hero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 100% 45%; } /* hero 4 (Sam), hand and trunk */
.hero--photo .hero__copy { position: relative; width: 100%; }
.hero--photo .hero__title { --fill: var(--white); --shade: var(--red); max-width: 9.5em; font-size: clamp(2.6rem, 5.2vw, 6rem); }
/* Subtitle in the condensed sans (same pairing as the Our Roots tiles): Ultra for the headline only. */
.hero--photo .hero__sub { font-family: var(--ui); font-stretch: 72%; font-weight: 850; font-size: 0.42em; line-height: 1.05; letter-spacing: .01em;
  margin-top: 0.55em; color: var(--white); text-shadow: 0 1px 14px rgba(10, 16, 20, .3); }
/* On the photo the CTA lifts on white, not ink. */
.hero__cta { --lift: var(--white); }
@media (max-width: 700px) {
  .hero--photo { align-items: flex-start; min-height: 0; height: calc(var(--hero-h, 100svh) - var(--nav-h)); }
  .hero--photo .hero__bg { object-position: 50% 100%; } /* portrait phone image: keep the hand and tree, trim sky first */
}

/* ---------- order ---------- */
.order { display: grid; grid-template-columns: auto minmax(0, 1fr); background: var(--white); }
.order__visual { position: relative; background: var(--white); }
.tree-frame { margin: 0; position: sticky; top: var(--nav-h); height: clamp(560px, calc(100svh - var(--nav-h)), 1100px); aspect-ratio: 4 / 5; overflow: hidden; }
.tree-frame__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 0%; opacity: 0; transition: opacity .45s ease; }
.tree-frame__img.is-active { opacity: 1; }
.growth-mark { position: absolute; left: 0; right: 60%; top: 30%; display: flex; justify-content: flex-end; align-items: center; gap: 10px; transition: top .45s ease, right .45s ease; pointer-events: none; }
.growth-mark__label { order: -1; white-space: nowrap; }
@media (max-width: 600px) { .growth-mark { gap: 6px; } .growth-mark__line { width: 22px; } }
.growth-mark__line { width: 54px; height: 2px; background: var(--red); }
.growth-mark__label { font-family: var(--ui); font-stretch: 75%; font-weight: 800; font-size: 0.95rem; letter-spacing: .04em; text-transform: uppercase; color: var(--white);
  background: var(--red); padding: 2px 8px; }
@media (prefers-reduced-motion: reduce) { .tree-frame__img, .growth-mark { transition: none; } }

.order__panel { padding: var(--space-5) var(--gutter) var(--space-5) clamp(24px, 5vw, 88px); display: grid; gap: var(--space-3); align-content: start; max-width: 600px; }
.order__panel .heading-2 { margin-bottom: var(--space-2); color: var(--blue); }
.order-form { display: grid; gap: 30px; }
.field { border: 0; margin: 0; padding: 0; display: grid; gap: 12px; min-width: 0; }
.field__label { color: var(--ink); padding: 0; }
legend.field__label { margin-bottom: 20px; } /* legends ignore the fieldset grid gap */
.field > label.field__label { margin-bottom: 8px; } /* + 12px grid gap = the same 20px */
.field__status, .field__hint { font-size: 0.86rem; color: var(--muted); }
.field__status.is-good { color: var(--pine); font-weight: 600; }
.field--row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px 16px; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); padding: 16px 0; }
.field__price { font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 700; font-size: .95rem; }

/* delivery / pickup: two colour tiles; the chosen one fills and lifts (client #32) */
.segmented { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.segmented label { position: relative; cursor: pointer; }
.segmented input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.segmented span {
  display: flex; align-items: center; justify-content: center; min-height: 60px;
  font-stretch: 72%; font-weight: 850; font-size: 1.15rem; letter-spacing: .06em; text-transform: uppercase;
  border: 2px solid var(--c); color: var(--c); background: var(--white);
  box-shadow: 0 0 0 var(--c);
  transition: background-color .25s ease, color .25s ease, transform .25s cubic-bezier(.2,.8,.3,1.4), box-shadow .25s ease;
}
.segmented__fee { margin-left: .5em; font-size: .78em; font-weight: 700; letter-spacing: .04em; opacity: .85; }
.segmented label:nth-child(1) { --c: var(--red); }
.segmented label:nth-child(2) { --c: var(--blue); }
.segmented label:hover span { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--c); }
.segmented input:checked + span { background: var(--c); color: var(--white); transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--ink); }
.segmented input:focus-visible + span { outline: 3px solid var(--ink); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { .segmented span { transition: none; } }

.sizes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--rule); }
.size { position: relative; cursor: pointer; display: grid; gap: 4px; padding: 16px 4px 14px; border-bottom: 1px solid var(--rule); }
.size + .size { padding-left: 16px; border-left: 1px solid var(--rule); }
.size input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.size__ft { font-family: var(--ui); font-stretch: 70%; font-weight: 900; font-size: 2.7rem; line-height: 0.9; text-transform: uppercase; }
.size__cm { font-stretch: 82%; font-size: .74rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.size__price { font-size: .95rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.size::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 4px; background: var(--red); transform: scaleX(0); transform-origin: left; transition: transform .3s ease; }
.size + .size::after { left: 16px; }
.size:has(input:checked)::after { transform: scaleX(1); }
.size:has(input:checked) .size__ft { color: var(--red); }
.size:has(input:focus-visible) { outline: 2px solid var(--red); outline-offset: 2px; }

.check { display: inline-flex; align-items: center; gap: 14px; cursor: pointer; position: relative; }
.check input { position: absolute; opacity: 0; width: 22px; height: 22px; margin: 0; cursor: pointer; }
.check__box { width: 22px; height: 22px; border: 2px solid var(--ink); display: grid; place-items: center; }
.check input:checked + .check__box { background: var(--pine); border-color: var(--pine); }
.check input:checked + .check__box::after { content: ""; width: 10px; height: 5px; border-left: 2px solid var(--white); border-bottom: 2px solid var(--white); transform: translateY(-1px) rotate(-45deg); }
.check input:focus-visible + .check__box { outline: 2px solid var(--red); outline-offset: 3px; }
.check__text { font-family: var(--ui); font-stretch: 78%; font-weight: 800; font-size: 1.2rem; text-transform: uppercase; letter-spacing: .02em; line-height: 1.1; }
.stand-photo { grid-column: 1 / -1; margin: 0; display: flex; align-items: center; gap: 14px; }
.stand-photo img { width: 96px; height: auto; flex: none; }
.stand-photo figcaption { font-size: .86rem; color: var(--muted); }

.select { position: relative; }
.select::after { content: ""; position: absolute; right: 16px; top: 50%; width: 8px; height: 8px; border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); transform: translateY(-70%) rotate(45deg); pointer-events: none; }
select, input[type="text"], input[type="email"] {
  width: 100%; min-height: 52px; padding: 0 44px 0 14px; border: 1.5px solid var(--ink); border-radius: 0; background: var(--white); color: var(--ink);
  font: 400 1rem var(--ui); -webkit-appearance: none; appearance: none;
}
select:disabled { border-color: var(--rule); color: var(--muted); }

.summary { border-top: 2px solid var(--ink); padding-top: 16px; display: grid; gap: 12px; }
.summary__lines { margin: 0; display: grid; gap: 8px; font-size: .95rem; }
.summary__lines div { display: flex; justify-content: space-between; gap: 16px; }
.summary__lines dt { color: var(--muted); }
.summary__lines dd { margin: 0; font-variant-numeric: tabular-nums; text-align: right; }
.summary__total { display: flex; justify-content: space-between; align-items: baseline; font-family: var(--ui); font-stretch: 70%; font-weight: 900; text-transform: uppercase; font-size: 2rem; line-height: 1; border-top: 1px solid var(--rule); padding-top: 14px; }
.summary__total span:last-child { font-variant-numeric: tabular-nums; color: var(--red); }
.summary__note { font-size: .82rem; color: var(--muted); }

/* ---------- our roots ---------- */
.roots { display: grid; grid-template-columns: 1fr 1fr; gap: 0; background: var(--white); }
.roots__item { display: grid; align-content: start; min-width: 0; }
.roots__tile { margin: 0; position: relative; aspect-ratio: 4 / 5; width: 100%; display: flex; flex-direction: column; justify-content: flex-end; background: var(--paper-2); } /* grows if the story needs more room */
.roots__tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.roots__tile::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(10, 16, 20, .82), rgba(10, 16, 20, .55) 38%, rgba(10, 16, 20, 0) 72%); pointer-events: none; }
/* Pastel #33: no "heading then description". Title and line live on the photo; the copy follows straight on. */
.roots__cap { position: relative; z-index: 2; display: grid; gap: 12px; color: var(--white);
  padding: 0 clamp(20px, 3vw, 44px) clamp(28px, 3.4vw, 48px); }
.roots__text { font-size: clamp(1rem, 1.15vw, 1.12rem); line-height: 1.55; max-width: 34em; margin-top: 6px; text-shadow: 0 1px 10px rgba(10, 16, 20, .45); }
.bubble--tile { font-size: clamp(2.4rem, 5vw, 5.2rem); line-height: 1; }
.roots__line { font-family: var(--ui); font-stretch: 72%; font-weight: 850; text-transform: uppercase; color: var(--white);
  font-size: clamp(1.2rem, 1.9vw, 1.8rem); line-height: 1.05; letter-spacing: .01em; text-shadow: 0 1px 12px rgba(10, 16, 20, .35); }
.roots__sign { font-family: var(--ui); font-stretch: 72%; font-weight: 850; text-transform: uppercase; font-size: clamp(1.1rem, 1.4vw, 1.3rem) !important; line-height: 1.2 !important; color: var(--white) !important; text-shadow: 0.06em 0.06em 0 var(--red); }

/* ---------- how it works ---------- */
.how__lead { background: var(--blue); color: var(--white); padding: clamp(64px, 9vw, 130px) var(--gutter); display: grid; gap: 18px; justify-items: start; }
.how__lead .bubble { font-size: clamp(2.6rem, 7vw, 6.6rem); }
.how__intro { font-family: var(--ui); font-stretch: 72%; font-weight: 850; text-transform: uppercase; letter-spacing: .01em; line-height: 1.05; font-size: clamp(1.2rem, 1.9vw, 1.8rem); }
.how__ways { display: grid; grid-template-columns: 1fr 1fr; }
.way { padding: clamp(40px, 5vw, 72px) var(--gutter); display: grid; gap: 22px; align-content: start; color: var(--white); }
.way--delivery { background: var(--red); }
.way--pickup { background: var(--white); color: var(--ink); }
.way__title { font-family: var(--ui); font-stretch: 70%; font-weight: 900; text-transform: uppercase; font-size: clamp(3.4rem, 8vw, 7.5rem); line-height: .85; margin: 0; letter-spacing: -0.01em; }
.way--pickup .way__title { color: var(--blue); }
.way__q { font-family: var(--ui); font-stretch: 72%; font-weight: 850; text-transform: uppercase; letter-spacing: .01em; line-height: 1.05; font-size: clamp(1.2rem, 1.9vw, 1.8rem); }
.way .facts li { border-color: currentColor; border-color: color-mix(in srgb, currentColor 30%, transparent); }
.way__link { font-stretch: 82%; font-weight: 700; font-size: 0.8rem; letter-spacing: 0.14em; text-transform: uppercase; text-decoration: underline; text-underline-offset: 6px; justify-self: start; }
.way--pickup .way__link { color: var(--blue); }
.facts { list-style: none; margin: 0; padding: 0; display: grid; }
.facts li { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); gap: 16px; padding: 14px 0; border-top: 1px solid var(--rule); font-size: 1rem; }
.facts li:last-child { border-bottom: 1px solid var(--rule); }
.facts li span:first-child { font-stretch: 82%; font-weight: 700; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; opacity: .8; padding-top: 3px; }

/* ---------- kind words ---------- */
.words { background: var(--red); color: var(--white); padding: clamp(56px, 7vw, 100px) var(--gutter); display: grid; gap: var(--space-4); justify-items: center; text-align: center; }
.words__title { font-family: var(--ui); font-stretch: 82%; font-weight: 700; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--white); opacity: .8; margin: 0; }
.quotes { display: grid; max-width: 1100px; }
.quote { grid-area: 1 / 1; margin: 0; display: grid; gap: 22px; justify-items: center; align-content: center; /* short quotes stay compact inside the tallest quote's box */ opacity: 0; visibility: hidden; transition: opacity .5s ease, visibility .5s; }
.quote.is-active { opacity: 1; visibility: visible; }
.quote p { font-family: var(--ui); font-stretch: 72%; font-weight: 850; text-transform: uppercase; font-size: clamp(1.9rem, 4.2vw, 3.6rem); line-height: 1.02; color: var(--white); text-wrap: balance; }
.quote footer { font-stretch: 82%; font-weight: 700; font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; color: var(--white); opacity: .85; }
.quote footer::before { content: "— "; }
.quotes__nav { display: flex; gap: 10px; }
.quotes__nav button { width: 34px; height: 24px; padding: 0; border: 0; background: none; cursor: pointer; position: relative; }
.quotes__nav button::after { content: ""; position: absolute; left: 0; right: 0; top: 10px; height: 3px; background: rgba(255, 255, 255, .35); }
.quotes__nav button[aria-pressed="true"]::after { background: var(--white); }

/* ---------- faq + contact ---------- */
.faq { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.4fr); gap: var(--space-5); padding: var(--space-6) var(--gutter); max-width: 1400px; margin-inline: auto; }
.faq__side { display: grid; gap: var(--space-3); align-content: start; position: sticky; top: calc(var(--nav-h) + 32px); align-self: start; }
.faq__side .heading-2 { color: var(--blue); }
.faq__main { display: grid; gap: var(--space-5); min-width: 0; }
.faq__list details { border-top: 1px solid var(--rule); }
.faq__list details:last-child { border-bottom: 1px solid var(--rule); }
.faq__list summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: baseline; gap: 20px; padding: 22px 0;
  font-family: var(--ui); font-stretch: 78%; font-weight: 800; text-transform: uppercase; font-size: clamp(1.1rem, 1.6vw, 1.35rem); line-height: 1.15; letter-spacing: .01em; }
.faq__list summary::-webkit-details-marker { display: none; }
.faq__list summary::after { content: "+"; font-family: var(--ui); font-weight: 400; font-size: 1.7rem; line-height: 1; color: var(--red); }
.faq__list details[open] summary::after { content: "–"; }
.faq__list details p { padding: 0 0 24px; max-width: 60ch; color: var(--ink); }
/* ---------- footer (client: #385260) ---------- */
.footer { background: var(--blue); color: var(--white); padding: clamp(48px, 6vw, 80px) var(--gutter) 22px; display: grid; gap: clamp(40px, 5vw, 64px); }
.footer__top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px clamp(24px, 4vw, 64px); align-items: start; }
.logo--footer { height: clamp(26px, 2.6vw, 38px); }
/* both columns share one rhythm: label, then a 52px content row, then a small line */
.footer__col { display: grid; grid-template-rows: auto 52px auto; gap: 12px; min-width: 0; }
.footer__label { font-stretch: 82%; font-weight: 700; font-size: .74rem; letter-spacing: .16em; text-transform: uppercase; opacity: .75; }
.footer__email { align-self: center; font-family: var(--ui); font-stretch: 78%; font-weight: 800; font-size: clamp(1.25rem, 1.9vw, 1.6rem); color: var(--white); text-decoration: none; overflow-wrap: anywhere; }
.footer__email:hover { text-decoration: underline; text-underline-offset: 6px; }
.footer__link, .footer__hint { font-size: .9rem; color: var(--white); opacity: .8; text-decoration: none; }
.footer__link { display: inline-flex; align-items: center; gap: 10px; justify-self: start; }
.footer__link svg { width: 18px; height: 18px; flex: none; }
.footer__link:hover { opacity: 1; text-decoration: underline; text-underline-offset: 4px; }
.newsletter__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; height: 52px; }
.newsletter__row input, .newsletter__btn { box-sizing: border-box; height: 52px; min-height: 0; margin: 0; border: 1.5px solid var(--white); }
.newsletter__row input { border-right: 0; background: transparent; color: var(--white); padding: 0 16px; font-size: 1rem; border-radius: 0; }
.newsletter__row input::placeholder { color: var(--white); opacity: .6; }
.newsletter__row input:focus-visible { outline: 2px solid var(--white); outline-offset: -5px; }
.newsletter__btn { padding: 0 20px; background: var(--white); color: var(--blue); cursor: pointer; border-radius: 0;
  font-family: var(--ui); font-stretch: 88%; font-weight: 700; font-size: 0.82rem; letter-spacing: 0.12em; text-transform: uppercase; }
.newsletter__btn { --lift: var(--red); }
.footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, .25);
  font-stretch: 82%; font-weight: 700; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; opacity: .85; }
.footer__links { display: flex; flex-wrap: wrap; gap: 8px 26px; }
.footer__links a { text-decoration: none; }
.footer__links a:hover { text-decoration: underline; text-underline-offset: 5px; }
@media (max-width: 900px) { .footer__top { grid-template-columns: minmax(0, 1fr); } }

/* ---------- mobile order bar ---------- */
.orderbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; display: none; align-items: center; justify-content: space-between; gap: 14px;
  padding: 10px var(--gutter) calc(10px + env(safe-area-inset-bottom, 0px)); background: var(--white); border-top: 2px solid var(--ink); }
.orderbar__sum { font-size: .9rem; font-weight: 600; font-variant-numeric: tabular-nums; min-width: 0; }
.orderbar .btn { min-height: 44px; padding: 0 16px; flex: none; }

/* ---------- sheets (dialogs) ---------- */
.sheet { border: 0; padding: 0; background: var(--white); color: var(--ink); width: min(520px, calc(100vw - 32px)); max-height: calc(100svh - 32px); }
.sheet::backdrop { background: rgba(20, 28, 33, .55); backdrop-filter: blur(3px); }
.sheet__inner { position: relative; display: grid; gap: 18px; padding: 36px 32px 32px; }
.sheet__inner > div { display: grid; gap: 14px; }
.sheet__inner .heading-3 { color: var(--blue); }
.sheet__close { position: absolute; top: 10px; right: 12px; width: 40px; height: 40px; background: none; border: 0; font-size: 1.8rem; line-height: 1; cursor: pointer; color: var(--muted); }
.sheet__msg { font-size: 1.05rem; }
.sheet .summary__lines { border-top: 1px solid var(--rule); padding-top: 14px; }

/* preview-only markers: remove for production */
.preview-only { }

/* ---------- responsive ---------- */
@media (max-width: 1080px) {
  .nav__links { gap: 20px; }
}
@media (max-width: 900px) {
  .nav__links, .nav__cta { display: none; }
  .nav__toggle { display: block; }
  .order { grid-template-columns: minmax(0, 1fr); }
  .tree-frame { position: relative; top: 0; height: auto; width: 100%; aspect-ratio: 4 / 5; }
  .order__panel { max-width: 640px; padding: var(--space-5) var(--gutter); }
  .faq { grid-template-columns: minmax(0, 1fr); }
  .faq__side { position: static; }
}
@media (max-width: 760px) {
  :root { --nav-h: 58px; }
  .roots { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .roots__tile { max-height: none; aspect-ratio: 9 / 16; } /* taller on phones so the story sits below Red and the hands */
  .roots__tile img { object-position: 50% 0%; }
  .how__ways { grid-template-columns: minmax(0, 1fr); }
  .orderbar:not([hidden]) { display: flex; }
  .facts li { grid-template-columns: 5.2rem minmax(0, 1fr); }
}

/* ---------- film grain: one shared treatment over every photograph (Sam's references are grainy, analogue) ---------- */
.hero--photo::after, .tree-frame::after, .roots__tile::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 220px; mix-blend-mode: overlay; opacity: .9; /* stronger, coarser grain (Nico) */
}
.hero--photo .hero__copy { z-index: 2; }
.growth-mark { z-index: 2; }

/* the shed photo is mostly mid-tone timber, where overlay grain reads weakest: a second, finer layer brings it level with the hero */
.tree-frame::after { opacity: 1; background-size: 160px; filter: contrast(1.6); }

/* Pastel V2 #8: height reference for the person beside the tree */
.model-note { position: absolute; z-index: 2; right: 16px; bottom: 14px; margin: 0; color: var(--ink);
  font-stretch: 82%; font-weight: 700; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; text-shadow: 0 0 8px rgba(255, 245, 230, .6); } /* no box: sits on the light shed floor */

/* phone: size chips on the tree photo (desktop keeps the sticky photo beside the selector) */
.frame-sizes { display: none; }
@media (max-width: 900px) {
  .frame-sizes { display: flex; position: absolute; z-index: 3; left: 12px; bottom: 12px; gap: 5px; }
  .frame-sizes button { min-width: 38px; height: 30px; padding: 0 8px; border: 0; background: var(--white); color: var(--red); cursor: pointer;
    font: 800 .72rem var(--ui); font-stretch: 82%; letter-spacing: .06em; text-transform: uppercase; }
  .frame-sizes button[aria-pressed="true"] { background: var(--red); color: var(--white); }
  .frame-sizes button:focus-visible { outline: 2px solid var(--white); outline-offset: 2px; }
  .model-note { color: var(--white); text-shadow: 0 1px 8px rgba(10, 16, 20, .6); bottom: 19px; }
}
.hero--photo::after { transform: translateZ(0); }

/* delivery dialog: Google address suggestions */
.addr { position: relative; }
.addr__list { position: static; margin: 0; padding: 0; list-style: none; background: var(--white);
  border: 1.5px solid var(--ink); border-top: 0; max-height: 260px; overflow-y: auto; }
.addr__list li { padding: 12px 14px; cursor: pointer; font-size: .95rem; line-height: 1.35; border-top: 1px solid var(--rule); }
.addr__list li:first-child { border-top: 0; }
.addr__list li[aria-selected="true"], .addr__list li:hover { background: var(--paper-2); }
.addr__list li small { display: block; color: var(--muted); font-size: .82rem; }
