/* ==========================================================================
   Agriment Services, Inc. — shared stylesheet (styles.css)
   Every page uses this one file. Sections:
   1. Tokens   2. Base   3. Layout helpers   4. Buttons (shared CTA style)
   5. Media / photo placeholders   6. Header + nav   7. Hero
   8. Stats row   9. Cards   10. Proof band   11. Product teaser
   12. Slim cards   13. NutriFilter strip   14. Testimonials
   15. News row   16. Quote CTA band   17. Footer   18. Utilities
   --- added in Stage 3a (service pages) ---
   19. Page hero   20. Prose, checklists, icon lists   21. Process steps
   22. Callout   23. Video   24. Document list   25. Gallery + lightbox
   26. Spec tiles   27. Service hub cards   28. Info cards + lists
   29. Badges   30. NutriFilter section
   --- added in Stage 3b (products) ---
   31. Product cards   32. Proof cards (fewer than four)   33. Product page top
   34. Safety box + red warning   35. Problem tags   36. Retailer cards
   37. Breadcrumbs
   --- added in Stage 3c (realty + insurance) ---
   38. Status badges   39. Listing cards   40. Listing page (back link, facts,
   gallery, location, video)   41. "Every listing includes" strip
   42. Past sales table + auction block   43. Insurance coverage grid, call band notes
   --- added in Stage 3d (about, contact, pay, privacy, resources) ---
   44. History timeline   45. Partner cards   46. Contact cards, help panel,
   contact details row, map, Tally form spot   47. Pay card   48. Policy text
   49. Resources groups
   --- added in Stage 5 round 1 ---
   50. "Most popular" flag   51. "Got Sludge?" block   52. Source note
   (also: larger header brand + tagline, home hero name block, hero brand tag,
   larger retailer logos; menu button now shows below 1280px)
   ========================================================================== */

/* 1. Tokens ---------------------------------------------------------------- */
:root {
  --green-950: #0f2a1b;
  --green-900: #143522;
  --green-800: #1b462d;      /* deep field green — primary */
  --green-700: #245a3a;
  --green-600: #2f6f48;
  --green-100: #e3ece4;
  --green-50:  #f0f5f0;

  --wheat:      #d4ad6a;     /* earth accent */
  --wheat-dark: #b8904c;
  --wheat-50:   #f8f1e4;

  --bg:      #faf8f3;        /* warm off-white */
  --surface: #ffffff;
  --text:    #23272b;        /* charcoal */
  --muted:   #5a6168;
  --line:    #e4e0d6;

  --radius:    14px;
  --radius-sm: 8px;
  --shadow:    0 1px 2px rgba(20,30,25,.06), 0 6px 20px rgba(20,30,25,.07);
  --shadow-lg: 0 2px 4px rgba(20,30,25,.06), 0 16px 40px rgba(20,30,25,.12);

  --font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --container: 1200px;
  --gutter: 20px;
  --header-h: 72px;
  --section-y: clamp(56px, 8vw, 96px);
}

/* 2. Base ------------------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
  margin: 0;
  font-family: var(--font);
  font-size: 17px;
  line-height: 1.6;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}
img, video, svg { display: block; max-width: 100%; }
a { color: var(--green-700); text-underline-offset: 3px; }
a:hover { color: var(--green-900); }
h1, h2, h3, h4 { line-height: 1.15; margin: 0 0 .5em; color: var(--green-950); letter-spacing: -0.02em; }
h1 { font-size: clamp(2.1rem, 5.2vw, 3.6rem); font-weight: 800; }
h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 800; }
h3 { font-size: 1.25rem; font-weight: 700; }
p  { margin: 0 0 1em; }
:focus-visible { outline: 3px solid var(--wheat); outline-offset: 2px; border-radius: 4px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
.skip-link { position: absolute; left: -9999px; top: 8px; z-index: 200; background: var(--surface); padding: 8px 14px; border-radius: var(--radius-sm); }
.skip-link:focus { left: 8px; }

/* 3. Layout helpers -------------------------------------------------------- */
.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.section { padding: var(--section-y) 0; }
.section--tint { background: var(--green-50); }
.section--white { background: var(--surface); }
.section__head { max-width: 720px; margin: 0 0 40px; }
.section__head--center { margin-left: auto; margin-right: auto; text-align: center; }
.section__head p { color: var(--muted); font-size: 1.1rem; }
.eyebrow {
  display: inline-block;
  font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--green-600); margin-bottom: 12px;
}
.grid { display: grid; gap: 24px; }
.grid--2 { grid-template-columns: 1fr; }
.grid--3 { grid-template-columns: 1fr; }
.grid--4 { grid-template-columns: repeat(2, 1fr); }
@media (min-width: 760px) {
  .grid--2 { grid-template-columns: repeat(2, 1fr); }
  .grid--3 { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1000px) { .grid--4 { grid-template-columns: repeat(4, 1fr); } }

/* 4. Buttons — ONE shared style for every button and call-to-action link.
      Markup: <a class="btn btn--primary" data-cta="quote" href="/contact/">…</a>
      Variants only change color. data-cta names the action so a Tally pop-up
      can be attached later (see README). --------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 12px 22px;
  font: 600 1rem/1.2 var(--font);
  border: 2px solid transparent; border-radius: 999px;
  text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: background-color .15s, color .15s, border-color .15s, transform .15s;
}
.btn:hover { transform: translateY(-1px); }
.btn .icon { width: 18px; height: 18px; }
.btn--primary { background: var(--green-800); color: #fff; }
.btn--primary:hover { background: var(--green-950); color: #fff; }
.btn--accent { background: var(--wheat); color: var(--green-950); }
.btn--accent:hover { background: var(--wheat-dark); color: var(--green-950); }
.btn--outline { background: transparent; color: var(--green-800); border-color: var(--green-800); }
.btn--outline:hover { background: var(--green-800); color: #fff; }
.btn--outline-light { background: transparent; color: #fff; border-color: rgba(255,255,255,.85); }
.btn--outline-light:hover { background: #fff; color: var(--green-950); }
.btn--sm { min-height: 40px; padding: 8px 18px; font-size: .95rem; }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; }

.link-arrow {
  display: inline-flex; align-items: center; gap: 6px;
  font-weight: 600; text-decoration: none; color: var(--green-700);
}
.link-arrow .icon { width: 18px; height: 18px; transition: transform .15s; }
.link-arrow:hover .icon { transform: translateX(3px); }

.icon { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.icon--fill { fill: currentColor; stroke: none; }

/* 5. Media + photo placeholders
      <div class="media" data-label="services/fendt-fleet.jpg"><img …></div>
      The labeled box shows underneath; the real photo covers it once the file
      is in /assets/img/. site.js hides any image that fails to load. -------- */
.media {
  position: relative; overflow: hidden;
  aspect-ratio: 16 / 10;
  background:
    repeating-linear-gradient(45deg, rgba(27,70,45,.05) 0 12px, rgba(27,70,45,.09) 12px 24px),
    var(--green-100);
  border-radius: var(--radius);
}
.media::after {
  content: "PHOTO · /assets/img/" attr(data-label);
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: max-content; max-width: 88%;
  padding: 6px 10px; border-radius: 6px;
  background: rgba(255,255,255,.88); color: var(--green-900);
  font: 600 .72rem/1.35 ui-monospace, SFMono-Regular, Menlo, monospace;
  text-align: center; word-break: break-all;
}
.media img, .media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }
.media.is-missing img { display: none; }
.media.is-loaded::after { display: none; }
.media.is-loaded { background: transparent; }
.media--square { aspect-ratio: 1 / 1; }
.media--wide { aspect-ratio: 16 / 9; }
.media--logo { aspect-ratio: 3 / 1; border-radius: var(--radius-sm); background: var(--surface); }
.media--logo img { object-fit: contain; padding: 8px; }
.media--logo::after { content: attr(data-label); font-size: .62rem; padding: 2px 4px; }

/* 6. Header + navigation --------------------------------------------------- */
.site-header { position: sticky; top: 0; z-index: 100; }
.utility { background: var(--green-950); color: rgba(255,255,255,.85); font-size: .82rem; }
.utility__inner { display: flex; justify-content: flex-end; gap: 10px; padding-top: 6px; padding-bottom: 6px; }
.utility a { color: inherit; text-decoration: none; }
.utility a:hover { color: #fff; text-decoration: underline; }
.utility__sep { opacity: .5; }
.utility__phone { display: none; align-items: center; gap: 6px; font-weight: 700; color: #fff !important; }
.utility__phone .icon { width: 15px; height: 15px; color: var(--wheat); }
.utility__sep--phone { display: none; }

.header { background: #fff; border-bottom: 1px solid var(--line); } /* no backdrop-filter: it would trap the fixed mobile menu */
.header.is-scrolled { box-shadow: 0 4px 18px rgba(20,30,25,.08); }
.header__inner { display: flex; align-items: center; gap: 20px; min-height: 84px; }

.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--green-950); flex-shrink: 1; min-width: 0; }
.brand__logo { width: 64px; height: 64px; border-radius: 12px; overflow: hidden; background: #fff; border: 1px solid var(--line); display: grid; place-items: center; font-weight: 800; font-size: .95rem; color: var(--green-800); flex-shrink: 0; }
.brand__logo img { width: 100%; height: 100%; object-fit: contain; padding: 3px; }
.brand__logo.is-missing img { display: none; }
.brand__name { font-weight: 800; font-size: 1.35rem; line-height: 1.1; letter-spacing: -0.015em; }
.brand__name small { display: block; font-weight: 700; font-size: .72rem; letter-spacing: .11em; text-transform: uppercase; color: var(--green-600); margin-top: 5px; }
/* Round 2: company name larger and more pronounced (tablet and up) */
@media (min-width: 561px) {
  .header__inner { min-height: 96px; }
  .brand { gap: 16px; }
  .brand__logo { width: 74px; height: 74px; border-radius: 14px; box-shadow: 0 2px 8px rgba(20,30,25,.08); }
  .brand__name { font-size: 1.7rem; padding-left: 16px; border-left: 3px solid var(--wheat); }
  .brand__name small { font-size: .78rem; margin-top: 6px; }
}
@media (min-width: 1280px) {
  .brand { gap: 12px; }
  .brand__logo { width: 68px; height: 68px; }
  .brand__name { font-size: 1.5rem; padding-left: 13px; }
  .brand__name small { font-size: .72rem; letter-spacing: .1em; }
  .nav__link { padding: 10px 10px; }
}

.nav { margin: 0 auto; }
.nav__list { list-style: none; margin: 0; padding: 0; display: flex; gap: 2px; }
.nav__item { position: relative; display: flex; align-items: center; }
.nav__link {
  display: block; padding: 10px 12px; border-radius: var(--radius-sm);
  font-weight: 600; font-size: .98rem; color: var(--text); text-decoration: none;
}
.nav__link:hover, .nav__link[aria-current="page"] { color: var(--green-800); background: var(--green-50); }
.nav__caret { display: none; }
.nav__menu {
  list-style: none; margin: 0; padding: 10px;
  position: absolute; top: 100%; left: 0; min-width: 270px;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity .15s, transform .15s, visibility .15s;
}
.nav__item:hover > .nav__menu,
.nav__item:focus-within > .nav__menu { opacity: 1; visibility: visible; transform: none; }
.nav__menu a { display: block; padding: 8px 12px; border-radius: 6px; color: var(--text); text-decoration: none; font-size: .95rem; }
.nav__menu a:hover { background: var(--green-50); color: var(--green-800); }
.nav__menu-heading { padding: 8px 12px 4px; font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.nav__menu .is-indented a { padding-left: 22px; }
.nav__menu-divider { height: 1px; background: var(--line); margin: 6px 4px; }

.header__actions { display: flex; align-items: center; gap: 14px; flex-shrink: 0; }
.header__phone { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: var(--green-900); text-decoration: none; white-space: nowrap; }
.header__phone .icon { width: 18px; height: 18px; color: var(--green-600); }
.nav-toggle {
  display: none; width: 46px; height: 46px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface); color: var(--green-900); cursor: pointer; place-items: center;
}

/* Header: hide the phone number text (icon stays) until the screen is wide */
@media (min-width: 561px) { .brand__name { white-space: nowrap; } }
/* Round 2: the larger company name needs the room, so the number text now lives in the top bar on every screen */
.utility__phone, .utility__sep--phone { display: inline-flex; }
@media (min-width: 1px) {
  .header__phone span { display: none; }
  .header__phone { width: 46px; height: 46px; justify-content: center; border: 1px solid var(--line); border-radius: 10px; }
}
/* Header: tablet + phone (menu button below 1280px) */
@media (max-width: 1279px) {
  .header__phone span { display: none; }
  .header__phone { width: 46px; height: 46px; justify-content: center; border: 1px solid var(--line); border-radius: 10px; }
  .nav-toggle { display: grid; }
  .header__actions { margin-left: auto; gap: 8px; }
  .nav {
    position: fixed; left: 0; right: 0; top: var(--nav-top, 110px); bottom: 0;
    margin: 0; background: var(--surface); overflow-y: auto;
    padding: 12px var(--gutter) 40px; border-top: 1px solid var(--line);
    display: none;
  }
  .nav.is-open { display: block; }
  .nav__list { flex-direction: column; gap: 0; }
  .nav__item { flex-wrap: wrap; border-bottom: 1px solid var(--line); }
  .nav__link { flex: 1; padding: 16px 4px; font-size: 1.08rem; background: none !important; }
  .nav__caret {
    display: grid; place-items: center; width: 48px; height: 48px;
    background: none; border: 0; color: var(--green-800); cursor: pointer;
  }
  .nav__caret .icon { transition: transform .2s; }
  .nav__caret[aria-expanded="true"] .icon { transform: rotate(180deg); }
  .nav__menu {
    position: static; width: 100%; min-width: 0; display: none;
    opacity: 1; visibility: visible; transform: none;
    box-shadow: none; border: 0; border-radius: 0; padding: 0 0 12px;
  }
  .nav__item:hover > .nav__menu, .nav__item:focus-within > .nav__menu { display: none; }
  .nav__item.is-open > .nav__menu { display: block; }
  .nav__menu a { padding: 10px 12px; }
  body.nav-open { overflow: hidden; }
}
@media (max-width: 560px) {
  .header .btn--quote { display: none; } /* quote button repeats in the mobile menu */
  .header .header__phone { display: none; } /* call link moves to the top bar on phones */
  .header__inner { gap: 10px; min-height: 76px; }
  .brand { gap: 10px; }
  .brand__name { font-size: clamp(.98rem, 4.65vw, 1.2rem); white-space: nowrap; padding-left: 8px; border-left: 3px solid var(--wheat); }
  .brand__name small { font-size: clamp(.56rem, 2.55vw, .66rem); letter-spacing: .06em; margin-top: 4px; white-space: normal; }
  .brand__logo { width: 54px; height: 54px; border-radius: 10px; }
  .utility__inner { justify-content: center; }
  .utility__phone, .utility__sep--phone { display: inline-flex; }
  .utility__email, .utility__sep--email { display: none; }
}
@media (max-width: 374px) {
  .brand { gap: 8px; }
  .brand__logo { width: 48px; height: 48px; }
  .brand__name { font-size: 4.4vw; padding-left: 7px; }
}
.nav__mobile-cta { display: none; }
@media (max-width: 1279px) { .nav__mobile-cta { display: grid; gap: 10px; margin-top: 20px; } }

/* 7. Hero ------------------------------------------------------------------ */
.hero { position: relative; color: #fff; background: var(--green-950); overflow: hidden; }
.hero__media { position: absolute; inset: 0; border-radius: 0; aspect-ratio: auto; }
.hero__media::after { top: 14px; left: auto; right: 14px; transform: none; z-index: 3; max-width: 60%; }
.hero__overlay {
  position: absolute; inset: 0; z-index: 2;
  background: linear-gradient(100deg, rgba(10,28,18,.88) 0%, rgba(10,28,18,.72) 45%, rgba(10,28,18,.35) 100%);
}
.hero__content { position: relative; z-index: 4; padding: clamp(80px, 12vw, 150px) 0; max-width: 760px; }
.hero h1 { color: #fff; margin-bottom: 20px; }
.hero__sub { font-size: clamp(1.05rem, 1.6vw, 1.25rem); color: rgba(255,255,255,.9); max-width: 640px; margin-bottom: 0; }
.hero .eyebrow { color: var(--wheat); }

/* Home hero: logo, company name, "Animal Waste Management Systems", then the intro */
.hero--home { min-height: min(88vh, 860px); display: flex; align-items: center; }
.hero--home > .container { width: 100%; }
.hero--home .hero__content { padding: clamp(64px, 9vw, 120px) 0; max-width: 880px; }
.hero__logo { width: clamp(96px, 13vw, 140px); aspect-ratio: 1; border-radius: 20px; background: #fff; display: grid; place-items: center; overflow: hidden; margin-bottom: 26px; box-shadow: 0 10px 30px rgba(0,0,0,.25); font-weight: 800; color: var(--green-800); }
.hero__logo img { width: 100%; height: 100%; object-fit: contain; padding: 8px; }
.hero__logo.is-missing img { display: none; }
.hero--home h1 { font-size: clamp(2.6rem, 8vw, 5.4rem); line-height: 1; letter-spacing: -0.03em; margin-bottom: 14px; }
.hero__tagline { font-size: clamp(1.25rem, 3vw, 2rem); font-weight: 700; color: var(--wheat); letter-spacing: .01em; line-height: 1.2; margin: 0 0 24px; }
.hero__est { display: block; margin-top: 22px; font-size: .85rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.72); }
/* Home hero (round 3): logo beside "Agriment Services" on every screen, whole block centered */
.hero--home .hero__content { max-width: 1120px; margin: 0 auto; text-align: center; }
.hero__brandrow { display: flex; align-items: center; justify-content: center; gap: clamp(14px, 3vw, 40px); margin-bottom: 18px; }
.hero__brandrow .hero__logo { margin-bottom: 0; flex-shrink: 0; }
.hero__brandrow h1 { margin-bottom: 0; text-align: left; }
.hero--home .hero__sub { max-width: 760px; margin-left: auto; margin-right: auto; }
.hero--home .hero__overlay { background: linear-gradient(180deg, rgba(10,28,18,.72) 0%, rgba(10,28,18,.82) 100%); }
@media (min-width: 900px) { .hero__brandrow h1 { white-space: nowrap; } }
@media (max-width: 599px) {
  .hero__brandrow .hero__logo { width: clamp(64px, 20vw, 88px); border-radius: 14px; }
  .hero__brandrow h1 { font-size: clamp(2rem, 10.5vw, 2.8rem); }
}

/* 8. Stats row (big number + label; e.g. Renewable Energy stat row)
      <div class="stats stats--3"><div class="stats__item"><span class="stats__value">…</span><span class="stats__label">…</span></div>…</div> */
.stats {
  display: grid; grid-template-columns: 1fr;
  background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.stats__item { padding: 24px 20px; border-bottom: 1px solid var(--line); }
.stats__item:last-child { border-bottom: 0; }
.stats__value { display: block; font-size: clamp(1.4rem, 3vw, 2.1rem); font-weight: 800; color: var(--green-800); line-height: 1.1; letter-spacing: -0.02em; }
.stats__label { display: block; margin-top: 6px; font-size: .92rem; color: var(--muted); line-height: 1.35; }
@media (min-width: 760px) {
  .stats--3 { grid-template-columns: repeat(3, 1fr); }
  .stats--3 .stats__item { border-bottom: 0; border-right: 1px solid var(--line); padding: 30px 28px; }
  .stats--3 .stats__item:last-child { border-right: 0; }
}

/* 9. Cards ----------------------------------------------------------------- */
.card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow); overflow: hidden; display: flex; flex-direction: column;
}
.card__body { padding: 24px; display: flex; flex-direction: column; flex: 1; }
.card__body p { color: var(--muted); }
.card__body .link-arrow { margin-top: auto; }

/* Feature card (large, with photo) */
.feature-card .media { border-radius: 0; aspect-ratio: 16 / 9; }
.feature-card .card__body { padding: 28px; }
.feature-card h3 { font-size: 1.55rem; }

/* Mini card (icon + title + one line) — whole card is a link */
.mini-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 20px; }
.mini-card {
  flex: 1 1 100%;
  display: flex; flex-direction: column; gap: 6px; padding: 24px;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  text-decoration: none; color: var(--text);
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.mini-card:hover { border-color: var(--green-600); box-shadow: var(--shadow); transform: translateY(-2px); color: var(--text); }
.mini-card h3 { font-size: 1.1rem; margin: 8px 0 2px; }
.mini-card p { color: var(--muted); font-size: .97rem; margin: 0 0 8px; }
.mini-card .link-arrow { margin-top: auto; font-size: .95rem; }
@media (min-width: 640px) { .mini-card { flex-basis: calc(50% - 10px); } }
@media (min-width: 1000px) { .mini-card { flex: 0 1 calc(33.333% - 14px); } }

.icon-badge {
  width: 52px; height: 52px; border-radius: 12px; display: grid; place-items: center;
  background: var(--green-50); color: var(--green-800);
}
.icon-badge .icon { width: 26px; height: 26px; }

/* Why ASI columns */
.why { text-align: left; }
.why .icon-badge { background: var(--wheat-50); color: var(--wheat-dark); margin-bottom: 16px; }
.why h3 { margin-bottom: 8px; }
.why p { color: var(--muted); margin: 0; }
.why--plain p { color: var(--text); font-size: 1.05rem; font-weight: 500; }

/* 10. Proof band ----------------------------------------------------------- */
.proof-grid { display: grid; gap: 16px; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 1000px) { .proof-grid { grid-template-columns: repeat(4, 1fr); gap: 20px; } }
.proof-card {
  display: flex; flex-direction: column;
  background: var(--surface); border-radius: var(--radius); padding: 22px;
  border-top: 4px solid var(--wheat); box-shadow: var(--shadow);
}
.proof-card__number { font-size: clamp(1.5rem, 3vw, 2.3rem); font-weight: 800; color: var(--green-800); line-height: 1.05; letter-spacing: -0.02em; margin-bottom: 12px; }
.proof-card__text { font-size: .93rem; color: var(--muted); margin-bottom: 16px; }
.proof-card__link { margin-top: auto; display: inline-flex; align-items: center; gap: 6px; font-size: .9rem; font-weight: 600; text-decoration: none; }
.proof-card__link .icon { width: 16px; height: 16px; }
@media (max-width: 480px) { .proof-card { padding: 16px; } .proof-card__text { font-size: .87rem; } }

/* 11. Product teaser (benefit block) --------------------------------------- */
.split { display: grid; gap: 40px; align-items: center; }
@media (min-width: 900px) { .split { grid-template-columns: 1fr 1fr; gap: 64px; } }
.product-collage { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.product-collage .media { aspect-ratio: 1 / 1; background-color: var(--surface); }
.product-collage .media img { object-fit: contain; padding: 10px; }
.product-collage .media:not(.is-missing) { background: #fff; border: 1px solid var(--line); }
.product-row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; max-width: 900px; margin: 28px auto 0; }
@media (min-width: 760px) { .product-row { grid-template-columns: repeat(4, 1fr); } }
.product-tile { display: block; text-align: center; text-decoration: none; color: var(--green-950); font-weight: 600; font-size: .95rem; }
.product-tile .media { aspect-ratio: 1 / 1; margin-bottom: 10px; transition: box-shadow .15s, transform .15s; }
.product-tile .media:not(.is-missing) { background: #fff; border: 1px solid var(--line); }
.product-tile .media img { object-fit: contain; padding: 10px; }
.product-tile:hover .media { box-shadow: var(--shadow); transform: translateY(-2px); }
.retailers { margin-top: 40px; padding-top: 32px; border-top: 1px solid var(--line); }
.retailers__label { text-align: center; font-size: clamp(1.1rem, 2.2vw, 1.4rem); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--green-950); margin-bottom: 24px; }
.retailers__row { display: grid; grid-template-columns: 1fr; gap: 18px; max-width: 1100px; margin: 0 auto; }
@media (min-width: 640px) { .retailers__row { grid-template-columns: repeat(3, 1fr); gap: 22px; } }
.retailers__row .media--logo { aspect-ratio: 2 / 1; }
.retailers__row .media--logo img { padding: 16px 22px; }
.retailers__row a { display: block; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); transition: border-color .15s, box-shadow .15s; }
.retailers__row a:hover { border-color: var(--green-600); box-shadow: var(--shadow); }

/* 12. Slim cards (Realty & Insurance) -------------------------------------- */
.slim-card {
  display: grid; grid-template-columns: 1fr; overflow: hidden;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow);
}
.slim-card .media { border-radius: 0; aspect-ratio: 16 / 9; }
.slim-card__icon { display: grid; place-items: center; background: var(--green-800); color: var(--wheat); min-height: 140px; }
.slim-card__icon .icon { width: 56px; height: 56px; stroke-width: 1.4; }
.slim-card__body { padding: 24px; }
.slim-card__body p { color: var(--muted); }
@media (min-width: 560px) {
  .slim-card { grid-template-columns: 40% 1fr; }
  .slim-card .media { aspect-ratio: auto; height: 100%; min-height: 200px; }
}

/* 13. NutriFilter strip ---------------------------------------------------- */
.strip { background: var(--green-800); color: #fff; }
.strip__inner { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; padding-top: 28px; padding-bottom: 28px; }
.strip__icon { width: 48px; height: 48px; border-radius: 50%; background: rgba(255,255,255,.1); display: grid; place-items: center; color: var(--wheat); flex-shrink: 0; }
.strip__text { flex: 1 1 420px; margin: 0; font-size: 1.08rem; }
.strip__text strong { color: var(--wheat); }

/* 14. Testimonials --------------------------------------------------------- */
.testimonial { position: relative; max-width: 860px; margin: 0 auto; text-align: center; }
.testimonial__mark { font: 800 5.5rem/0.6 Georgia, serif; color: var(--wheat); display: block; height: 44px; margin-bottom: 12px; }
.testimonial__quote { font-size: clamp(1.15rem, 2.2vw, 1.5rem); line-height: 1.5; color: var(--green-950); font-weight: 500; margin: 0 0 22px; letter-spacing: -0.01em; }
.testimonial__name { font-weight: 700; }
.testimonial__company { font-variant: small-caps; letter-spacing: .04em; color: var(--muted); font-size: 1.02rem; }
.testimonial__link { display: inline-block; margin-top: 12px; font-weight: 600; font-size: .95rem; }

.carousel { position: relative; }
.js .carousel__slide { display: none; }
.js .carousel__slide.is-active { display: block; animation: fadeIn .4s ease; }
.carousel__slide + .carousel__slide { margin-top: 48px; }
.js .carousel__slide + .carousel__slide { margin-top: 0; }
.carousel__controls { display: none; align-items: center; justify-content: center; gap: 14px; margin-top: 28px; }
.js .carousel__controls { display: flex; }
.carousel__btn { width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--line); background: var(--surface); color: var(--green-800); display: grid; place-items: center; cursor: pointer; }
.carousel__btn:hover { border-color: var(--green-700); }
.carousel__btn .icon { width: 20px; height: 20px; }
.carousel__dots { display: flex; gap: 8px; }
.carousel__dot { width: 10px; height: 10px; padding: 0; border-radius: 50%; border: 0; background: var(--line); cursor: pointer; }
.carousel__dot[aria-current="true"] { background: var(--green-800); width: 26px; border-radius: 6px; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* 15. News row ------------------------------------------------------------- */
.news { display: grid; gap: 14px; }
@media (min-width: 760px) { .news { grid-template-columns: 1fr 1fr; } }
.news__item { display: flex; gap: 16px; align-items: flex-start; padding: 20px 22px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.news__item .icon { color: var(--green-600); margin-top: 2px; }
.news__kicker { display: block; font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 4px; }
.news__title { font-weight: 600; color: var(--green-950); }
a.news__title { color: var(--green-800); }
.news__meta { color: var(--muted); font-size: .9rem; }

/* 16. Quote CTA band ------------------------------------------------------- */
.cta-band { background: var(--green-900); color: #fff; padding: clamp(48px, 7vw, 80px) 0; }
.cta-band__inner { display: grid; gap: 24px; align-items: center; }
@media (min-width: 900px) { .cta-band__inner { grid-template-columns: 1.2fr 1fr; } .cta-band .btn-row { justify-content: flex-end; } }
.cta-band h2 { color: #fff; margin-bottom: 10px; }
.cta-band p { color: rgba(255,255,255,.88); font-size: 1.12rem; margin: 0; max-width: 560px; }
@media (max-width: 480px) { .cta-band .btn { width: 100%; white-space: normal; overflow-wrap: anywhere; } }
.cta-band__inner > * { min-width: 0; }

/* 17. Footer --------------------------------------------------------------- */
.site-footer { background: var(--green-950); color: rgba(255,255,255,.8); font-size: .95rem; }
.footer__grid { display: grid; gap: 36px; padding-top: 64px; padding-bottom: 40px; }
@media (min-width: 700px) { .footer__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1.2fr; } }
.footer__brand .brand__logo { width: 88px; height: 88px; background: #fff; margin-bottom: 16px; border: 0; }
.footer__brand strong { display: block; color: #fff; font-size: 1.45rem; line-height: 1.15; margin-bottom: 4px; }
.footer__tagline { display: block; color: var(--wheat); font-size: .8rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 12px; }
.site-footer h4 { color: #fff; font-size: .82rem; letter-spacing: .12em; text-transform: uppercase; margin-bottom: 14px; }
.site-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.site-footer a { color: rgba(255,255,255,.85); text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.footer__contact li { display: flex; gap: 10px; }
.footer__contact .icon { width: 18px; height: 18px; color: var(--wheat); margin-top: 4px; }
.footer__contact .btn { margin-top: 10px; }
.footer__social { border-top: 1px solid rgba(255,255,255,.12); padding: 22px 0; text-align: center; }
.footer__social-label { display: block; font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; margin-bottom: 10px; }
.footer__social-row { display: flex; justify-content: center; gap: 16px; }
.footer__social-row a { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; color: #fff; }
.footer__social-row a:hover { background: rgba(255,255,255,.1); }
.footer__social-row .icon { width: 24px; height: 24px; }
.footer__bottom { border-top: 1px solid rgba(255,255,255,.12); padding: 18px 0 26px; font-size: .84rem; color: rgba(255,255,255,.65); }
.footer__bottom-inner { display: flex; flex-wrap: wrap; gap: 6px 18px; justify-content: space-between; }
.footer__bottom a { color: rgba(255,255,255,.75); }

/* 18. Utilities ------------------------------------------------------------ */
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.text-center { text-align: center; }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }

/* ==========================================================================
   Added in Stage 3a — components for service pages (reused by later pages)
   ========================================================================== */

/* 19. Page hero (inner pages): shorter than the home hero, with one button.
      Photo:   <section class="hero hero--page"> + .hero__media + .hero__overlay
      Pattern: <section class="hero hero--page hero--pattern" data-hero-icon="clipboard">
               (no photo; site.js adds a large faded icon on the right) */
.hero--page .hero__content { padding: clamp(64px, 9vw, 112px) 0; }
.hero--page h1 { font-size: clamp(2rem, 4.6vw, 3.2rem); margin-bottom: 14px; }
.hero__actions { margin-top: 28px; }
.hero--pattern {
  background:
    radial-gradient(circle at 1px 1px, rgba(255,255,255,.08) 1.2px, transparent 0) 0 0 / 22px 22px,
    linear-gradient(120deg, var(--green-950) 0%, var(--green-800) 100%);
}
.hero__pattern-icon {
  position: absolute; right: -40px; top: 50%; transform: translateY(-50%);
  width: clamp(220px, 34vw, 420px); height: auto; aspect-ratio: 1;
  color: var(--wheat); opacity: .14; stroke-width: 1; z-index: 1; pointer-events: none;
}
@media (max-width: 700px) { .hero__pattern-icon { opacity: .08; right: -80px; } }

/* 20. Prose, checklists, icon lists --------------------------------------- */
.prose { max-width: 760px; }
.prose p { font-size: 1.1rem; }
.prose--lead p:first-child { font-size: clamp(1.15rem, 1.8vw, 1.3rem); color: var(--green-950); }
.two-col { display: grid; gap: 32px 64px; }
@media (min-width: 900px) { .two-col { grid-template-columns: 1fr 1fr; } }

.checklist { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.checklist li { display: flex; gap: 12px; align-items: flex-start; font-size: 1.05rem; }
.checklist .icon { width: 22px; height: 22px; margin-top: 2px; color: var(--surface); background: var(--green-700); border-radius: 50%; padding: 4px; stroke-width: 3; }
.checklist--cards { gap: 12px; }
.checklist--cards li { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 16px 18px; }
@media (min-width: 760px) { .checklist--2 { grid-template-columns: 1fr 1fr; } }

.icon-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; grid-template-columns: 1fr; }
.icon-list li { display: flex; align-items: center; gap: 14px; font-weight: 600; color: var(--green-950); }
.icon-list .icon-badge { width: 44px; height: 44px; flex-shrink: 0; }
.icon-list .icon-badge .icon { width: 22px; height: 22px; }
@media (min-width: 560px) { .icon-list--2 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 900px) { .icon-list--5 { grid-template-columns: repeat(5, 1fr); } .icon-list--5 li { flex-direction: column; text-align: center; } }

/* 21. Process steps (numbered, with icons) — horizontal on desktop -------- */
.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 20px; counter-reset: step; }
@media (min-width: 760px) { .steps { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .steps--4 { grid-template-columns: repeat(4, 1fr); } .steps--3 { grid-template-columns: repeat(3, 1fr); } }
.step {
  position: relative; counter-increment: step;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 26px 24px 24px; box-shadow: var(--shadow);
}
.step__top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.step__num {
  width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center;
  background: var(--green-800); color: #fff; font-weight: 800; font-size: 1.05rem;
}
.step__num::before { content: counter(step); }
.step__top .icon { width: 30px; height: 30px; color: var(--wheat-dark); }
.step h3 { font-size: 1.15rem; margin-bottom: 6px; }
.step p { color: var(--muted); margin: 0; font-size: .98rem; }

/* 22. Callout (teaser card linking to another page) ----------------------- */
.callout {
  display: flex; flex-wrap: wrap; align-items: center; gap: 18px 24px;
  background: var(--wheat-50); border: 1px solid #ecdcbc; border-left: 5px solid var(--wheat);
  border-radius: var(--radius); padding: 24px 28px;
}
.callout .icon-badge { background: var(--surface); color: var(--wheat-dark); }
.callout__text { flex: 1 1 380px; margin: 0; font-size: 1.06rem; color: var(--green-950); }
.callout__text strong { display: block; font-size: 1.15rem; margin-bottom: 2px; }

/* 23. Video (privacy-enhanced YouTube, lazy-loaded) ----------------------- */
.video { max-width: 900px; margin: 0 auto; }
.video__frame { position: relative; aspect-ratio: 16 / 9; border-radius: var(--radius); overflow: hidden; background: var(--green-950); box-shadow: var(--shadow-lg); }
.video__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video figcaption, .figure-caption { margin-top: 12px; text-align: center; color: var(--muted); font-size: .95rem; }
.video-pair .video { max-width: none; margin: 0; }
.video__title { font-size: 1.15rem; margin: 0 0 12px; text-align: center; }

/* 24. Document list — PDF icon, plain-English title, "PDF", opens in new tab
      <ul class="doc-list"><li><a href="/docs/…pdf" target="_blank" rel="noopener">
        <svg class="icon"><use href="#i-file"></use></svg>
        <span class="doc-list__title">Title</span><span class="doc-list__meta">PDF</span></a></li></ul> */
.doc-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
@media (min-width: 760px) { .doc-list { grid-template-columns: 1fr 1fr; } }
.doc-list a {
  display: flex; align-items: center; gap: 14px; height: 100%;
  padding: 16px 18px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm);
  text-decoration: none; color: var(--green-950); transition: border-color .15s, box-shadow .15s;
}
.doc-list a:hover { border-color: var(--green-600); box-shadow: var(--shadow); color: var(--green-950); }
.doc-list .icon { color: #b0413e; width: 26px; height: 26px; }
.doc-list__title { flex: 1; font-weight: 600; line-height: 1.35; }
.doc-list__meta { font-size: .82rem; font-weight: 600; color: var(--muted); white-space: nowrap; }
.doc-list__all { margin-top: 18px; }

/* 25. Gallery + lightbox (tap to enlarge, swipe on phone) ----------------
      <div class="gallery"><a class="gallery__item media media--square" href="/assets/img/x.jpg" data-label="x.jpg"><img …></a></div> */
.gallery { display: grid; gap: 10px; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 560px) { .gallery { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 900px) { .gallery { grid-template-columns: repeat(4, 1fr); } .gallery--6 { grid-template-columns: repeat(3, 1fr); } .gallery--dense { grid-template-columns: repeat(6, 1fr); } }
.gallery__item { display: block; border-radius: var(--radius-sm); cursor: zoom-in; }
.gallery__item img { transition: transform .3s; }
.gallery__item:hover img { transform: scale(1.04); }
.gallery__item::after { font-size: .6rem; }
.gallery__more { display: none; }

.lightbox {
  position: fixed; inset: 0; z-index: 300; display: none;
  background: rgba(8,18,12,.94); color: #fff;
  align-items: center; justify-content: center; padding: 56px 12px;
}
.lightbox.is-open { display: flex; }
.lightbox__img { max-width: min(1200px, 100%); max-height: 100%; object-fit: contain; border-radius: 6px; user-select: none; }
.lightbox__btn {
  position: absolute; width: 48px; height: 48px; border-radius: 50%; border: 0;
  background: rgba(255,255,255,.12); color: #fff; display: grid; place-items: center; cursor: pointer;
}
.lightbox__btn:hover { background: rgba(255,255,255,.24); }
.lightbox__close { top: 12px; right: 12px; }
.lightbox__prev { left: 12px; top: 50%; transform: translateY(-50%); }
.lightbox__next { right: 12px; top: 50%; transform: translateY(-50%); }
.lightbox__count { position: absolute; top: 22px; left: 50%; transform: translateX(-50%); font-size: .9rem; opacity: .8; }
@media (max-width: 560px) { .lightbox__prev, .lightbox__next { top: auto; bottom: 12px; transform: none; } }
body.lightbox-open { overflow: hidden; }

/* 26. Spec tiles (equipment specs) ---------------------------------------- */
.spec-grid { display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 560px) { .spec-grid { grid-template-columns: 1fr 1fr; } }
.spec-tile { background: var(--surface); border: 1px solid var(--line); border-top: 4px solid var(--wheat); border-radius: var(--radius-sm); padding: 18px; }
.spec-tile__value { display: block; font-size: 1.45rem; font-weight: 800; color: var(--green-800); letter-spacing: -0.02em; line-height: 1.15; margin-bottom: 6px; }
.spec-tile p { margin: 0; font-size: .93rem; color: var(--muted); }

/* 27. Service hub cards — first card is wide ------------------------------ */
.service-grid { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 700px) { .service-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .service-grid { grid-template-columns: repeat(3, 1fr); } }
.service-card { text-decoration: none; color: var(--text); transition: box-shadow .15s, transform .15s, border-color .15s; }
.service-card:hover { color: var(--text); box-shadow: var(--shadow-lg); transform: translateY(-2px); border-color: var(--green-600); }
.service-card .media { border-radius: 0; aspect-ratio: 16 / 10; }
.service-card h3 { font-size: 1.25rem; margin-bottom: 6px; }
.service-card .card__body p { margin-bottom: 14px; }
.service-card__icon { aspect-ratio: 16 / 10; display: grid; place-items: center; color: var(--wheat);
  background:
    radial-gradient(circle at 1px 1px, rgba(255,255,255,.08) 1.2px, transparent 0) 0 0 / 22px 22px,
    linear-gradient(120deg, var(--green-950) 0%, var(--green-800) 100%); }
.service-card__icon .icon { width: 64px; height: 64px; stroke-width: 1.3; }
.service-card--lead { grid-column: 1 / -1; }
@media (min-width: 700px) {
  .service-card--lead { display: grid; grid-template-columns: 1.2fr 1fr; }
  .service-card--lead .media { aspect-ratio: auto; min-height: 340px; height: 100%; }
  .service-card--lead .card__body { padding: 40px; justify-content: center; }
  .service-card--lead h3 { font-size: 1.9rem; }
  .service-card--lead p { font-size: 1.08rem; }
}

/* 28. Info cards (icon + title + line, not a link) and short lists -------- */
.info-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 26px; display: flex; flex-direction: column; gap: 6px; }
.info-card .icon-badge { margin-bottom: 10px; }
.info-card h3 { font-size: 1.12rem; margin: 0 0 4px; }
.info-card p { color: var(--muted); margin: 0; font-size: .98rem; }
.info-card .link-arrow { margin-top: 10px; font-size: .95rem; }
.list-card h3 { padding-bottom: 12px; margin-bottom: 14px; border-bottom: 2px solid var(--wheat); }
.list-card ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.list-card li { position: relative; padding-left: 18px; color: var(--text); font-size: .98rem; line-height: 1.45; }
.list-card li::before { content: ""; position: absolute; left: 0; top: .55em; width: 7px; height: 7px; border-radius: 50%; background: var(--green-600); }
.feature-block { display: grid; gap: 32px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(24px, 4vw, 44px); box-shadow: var(--shadow); }
@media (min-width: 900px) { .feature-block { grid-template-columns: 1.2fr 1fr; gap: 48px; align-items: center; } }
.feature-block p { color: var(--muted); font-size: 1.05rem; }
.figure { margin: 0; }
.figure .media { box-shadow: var(--shadow); }
.media--contain { background-color: #fff; }
.media--contain:not(.is-missing) { background: #fff; border: 1px solid var(--line); }
.media--contain img { object-fit: contain; }

/* 29. Badges (credentials) ------------------------------------------------- */
.badge-grid { display: grid; gap: 12px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .badge-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .badge-grid { grid-template-columns: repeat(3, 1fr); } }
.badge { display: flex; gap: 12px; align-items: flex-start; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px 16px; }
.badge .icon { color: var(--wheat-dark); width: 22px; height: 22px; margin-top: 2px; }
.badge strong { display: block; font-size: .95rem; color: var(--green-950); line-height: 1.35; }
.badge span { display: block; font-size: .84rem; color: var(--muted); margin-top: 2px; }

/* 30. NutriFilter section (dark, full width) ------------------------------ */
.nf { background: var(--green-950); color: rgba(255,255,255,.88); }
.nf h2, .nf h3 { color: #fff; }
.nf .eyebrow { color: var(--wheat); }
.nf .section__head p { color: rgba(255,255,255,.85); }
.nf__intro { max-width: 820px; font-size: 1.08rem; }
.nf__block { margin-top: 56px; }
.nf__block > h3 { font-size: 1.45rem; margin-bottom: 20px; }
.nf .step { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.14); box-shadow: none; }
.nf .step p { color: rgba(255,255,255,.8); }
.nf .step__num { background: var(--wheat); color: var(--green-950); }
.nf .step__top .icon { color: var(--wheat); }
.nf .info-card { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.14); }
.nf .info-card p { color: rgba(255,255,255,.85); }
.nf .icon-badge { background: rgba(212,173,106,.15); color: var(--wheat); }
.nf__note { font-size: .9rem; color: rgba(255,255,255,.65); margin-top: 14px; }
.result-card { background: var(--surface); color: var(--text); border-radius: var(--radius); padding: 24px; border-top: 4px solid var(--wheat); display: flex; flex-direction: column; }
.result-card h4 { color: var(--green-950); font-size: 1.1rem; margin-bottom: 4px; }
.result-card__cond { font-size: .9rem; color: var(--muted); margin-bottom: 14px; }
.result-card__result { font-weight: 700; color: var(--green-800); font-size: 1.02rem; line-height: 1.45; margin: 0; }
.nf__validation { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14); border-radius: var(--radius); padding: clamp(24px, 4vw, 40px); }
.nf__status { display: inline-block; margin-top: 8px; padding: 8px 14px; border-radius: 999px; background: rgba(212,173,106,.16); color: var(--wheat); font-weight: 600; font-size: .92rem; }
.nf .figure-caption { color: rgba(255,255,255,.7); text-align: left; }
.nf__cta { text-align: center; }
.nf__cta p { font-size: 1.2rem; color: #fff; max-width: 640px; margin: 0 auto 20px; }
.nf__cta .btn-row { justify-content: center; }
.nf__cta small { display: block; margin-top: 14px; color: rgba(255,255,255,.75); font-size: .95rem; }
.nf a:not(.btn) { color: var(--wheat); }

/* ==========================================================================
   Added in Stage 3b — products (hub, problem pages, product pages, Where to Buy)
   ========================================================================== */

/* 31. Product cards (container photo, name, one line, "View product") ----- */
.product-grid { display: grid; gap: 16px; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 1000px) { .product-grid { grid-template-columns: repeat(4, 1fr); gap: 22px; } }
.product-grid--3, .product-grid--2 { grid-template-columns: 1fr; }
@media (min-width: 640px) { .product-grid--3, .product-grid--2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .product-grid--3 { grid-template-columns: repeat(3, 1fr); } .product-grid--2 { grid-template-columns: repeat(2, 1fr); max-width: 820px; } }
.product-card .media { aspect-ratio: 1 / 1; border-radius: 0; border-bottom: 1px solid var(--line); }
.product-card .media:not(.is-missing) { background: #fff; }
.product-card .media img { object-fit: contain; padding: 14px; }
.product-card .card__body { padding: 18px 18px 20px; }
.product-card h3, .product-card h4 { font-size: 1.12rem; margin-bottom: 6px; }
.product-card .card__body p { font-size: .95rem; margin-bottom: 16px; }
.product-card .btn { margin-top: auto; align-self: flex-start; }
@media (max-width: 559px) {
  .product-grid:not(.product-grid--3):not(.product-grid--2) .card__body { padding: 14px; }
  .product-grid:not(.product-grid--3):not(.product-grid--2) .card__body p { font-size: .88rem; }
  .product-grid:not(.product-grid--3):not(.product-grid--2) .btn { align-self: stretch; padding-left: 10px; padding-right: 10px; }
}
.product-group { margin-top: 48px; }
.product-group > h3 { font-size: 1.3rem; padding-bottom: 10px; margin-bottom: 18px; border-bottom: 2px solid var(--wheat); }
.product-group .product-grid { grid-template-columns: repeat(2, 1fr); }
@media (min-width: 1000px) { .product-group .product-grid { grid-template-columns: repeat(4, 1fr); } }

/* Five problem cards: 3 + 2 on desktop with the bottom row filling the width */
@media (max-width: 999px) { .service-grid--5 .service-card__icon { aspect-ratio: 16 / 6; } }
@media (min-width: 1000px) {
  .service-grid--5 { grid-template-columns: repeat(6, 1fr); }
  .service-grid--5 > * { grid-column: span 2; }
  .service-grid--5 > :nth-child(n+4) { grid-column: span 3; }
  .service-grid--5 > :nth-child(n+4) .service-card__icon { aspect-ratio: 16 / 6.6; }
}

/* 32. Proof cards when a page shows fewer than four ----------------------- */
.proof-grid--few { grid-template-columns: minmax(0, 380px); justify-content: center; }
@media (min-width: 640px) { .proof-grid--few { grid-template-columns: repeat(auto-fit, minmax(260px, 340px)); } }
.proof-grid--few .proof-card__text { font-size: .98rem; }

/* 33. Product page top: photo left; name, benefit, specs, buy buttons right */
.product-top { padding: clamp(28px, 5vw, 56px) 0 var(--section-y); background: var(--surface); }
.product-detail { display: grid; gap: 32px; }
@media (min-width: 900px) { .product-detail { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 56px; align-items: start; } }
@media (min-width: 900px) { .product-detail__photo { position: sticky; top: calc(var(--header-h) + 52px); } }
.product-detail__photo .media { aspect-ratio: 1 / 1; border: 1px solid var(--line); }
.product-detail__photo .media:not(.is-missing) { background: #fff; }
.product-detail__photo .media img { object-fit: contain; padding: clamp(14px, 3vw, 32px); }
.product-detail h1 { font-size: clamp(2rem, 4.4vw, 3rem); margin-bottom: 6px; }
.product-detail__note { color: var(--muted); font-size: .95rem; margin-bottom: 10px; }
.product-detail__benefit { font-size: clamp(1.12rem, 1.8vw, 1.3rem); color: var(--green-950); font-weight: 500; line-height: 1.45; margin-bottom: 24px; }
.product-detail .checklist { gap: 10px; margin-bottom: 22px; }
.product-detail .checklist li { font-size: 1rem; }
.product-detail .checklist .icon { width: 20px; height: 20px; }
.pack { display: flex; align-items: center; gap: 12px; padding: 14px 16px; margin-bottom: 26px; background: var(--green-50); border-radius: var(--radius-sm); }
.pack .icon { color: var(--green-700); }
.pack__label { font-size: .85rem; color: var(--muted); display: block; line-height: 1.2; }
.pack__value { font-weight: 700; color: var(--green-950); }
.buy { padding: 22px 0 0; border-top: 1px solid var(--line); }
.buy h2 { font-size: 1.15rem; margin-bottom: 12px; }
.buy .btn-row { flex-direction: column; align-items: stretch; }
@media (min-width: 560px) { .buy .btn-row { flex-direction: row; align-items: center; } }
.buy .btn .icon { width: 16px; height: 16px; }
.buy__direct { margin: 14px 0 0; color: var(--muted); }
.buy__direct a { font-weight: 700; white-space: nowrap; }
.product-docs { margin-top: 26px; }
.product-docs h2 { font-size: 1.15rem; margin-bottom: 12px; }
.product-docs .doc-list { grid-template-columns: 1fr; }
.note-call { margin: 14px 0 0; font-weight: 600; color: var(--green-950); }
.note-call a { white-space: nowrap; }

/* 34. Safety box (every product page) + red warning box ------------------- */
.safety { background: var(--surface); border: 1px solid var(--line); border-left: 5px solid var(--muted); border-radius: var(--radius); padding: 24px 28px; }
.safety h2 { font-size: 1.35rem; margin-bottom: 12px; }
.safety p { margin-bottom: .7em; }
.safety p:last-child { margin-bottom: 0; }
.safety__label { font-weight: 700; }
.warning { display: flex; gap: 16px; align-items: flex-start; background: #fdf2f1; border: 2px solid #b0413e; border-radius: var(--radius); padding: 22px 24px; margin-bottom: 20px; color: #4a1615; }
.warning .icon { width: 30px; height: 30px; color: #b0413e; margin-top: 2px; }
.warning strong { display: block; color: #8f2f2c; font-size: 1.1rem; margin-bottom: 4px; }
.warning p { margin: 0; font-weight: 500; }

/* 35. Problem tags ("Solves") ---------------------------------------------- */
.tags { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 0; padding: 0; }
.tag { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 16px; border: 1px solid var(--green-600); border-radius: 999px; background: var(--surface); color: var(--green-800); font-weight: 600; text-decoration: none; transition: background-color .15s, color .15s; }
.tag:hover { background: var(--green-800); color: #fff; }
.tag .icon { width: 18px; height: 18px; }
.solves-title { font-size: 1.35rem; margin: 40px 0 14px; }

/* 36. Retailer cards (Where to Buy) ---------------------------------------- */
.retailer-card .media--logo { aspect-ratio: 2 / 1; border-radius: 0; border-bottom: 1px solid var(--line); }
.retailer-card .media--logo img { padding: 20px 28px; }
.retailer-card h2 { font-size: 1.35rem; margin-bottom: 6px; }
.retailer-card .card__body p { margin-bottom: 20px; }
.retailer-card .btn-row { margin-top: auto; }
.retailer-card .btn .icon { width: 16px; height: 16px; }
.wtb-note { text-align: center; margin: 36px auto 0; max-width: 720px; font-size: 1.08rem; color: var(--green-950); }
.wtb-note a { font-weight: 700; }

/* 37. Breadcrumbs ---------------------------------------------------------- */
.crumbs { font-size: .9rem; color: var(--muted); margin-bottom: 22px; }
.crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.crumbs li + li::before { content: "/"; margin-right: 6px; color: var(--line); }
.crumbs a { color: var(--green-700); text-decoration: none; font-weight: 600; }
.crumbs a:hover { text-decoration: underline; }

/* ==========================================================================
   Added in Stage 3c — realty (hub + listing pages) and insurance
   ========================================================================== */

/* 38. Status badges — <span class="status" data-status="for-sale | reduced | contract | sold"></span>
      site.js writes the label; change the one word to change the badge. */
.status {
  display: inline-flex; align-items: center; gap: 7px; align-self: flex-start;
  padding: 6px 13px; border-radius: 999px;
  font-size: .82rem; font-weight: 700; line-height: 1.2;
  background: var(--green-700); color: #fff;
}
.status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: .75; }
.status:empty { display: none; }
.status[data-status="reduced"]  { background: var(--wheat); color: var(--green-950); }
.status[data-status="contract"] { background: #fff; color: var(--green-900); box-shadow: inset 0 0 0 2px var(--wheat-dark); }
.status[data-status="sold"]     { background: var(--text); color: #fff; }

/* 39. Listing cards (Realty hub) — the whole card is a link */
.listing-grid { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .listing-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .listing-grid { grid-template-columns: repeat(3, 1fr); } }
.listing-card { position: relative; text-decoration: none; color: var(--text); transition: box-shadow .15s, transform .15s, border-color .15s; }
.listing-card:hover { color: var(--text); box-shadow: var(--shadow-lg); transform: translateY(-2px); border-color: var(--green-600); }
.listing-card .media { border-radius: 0; aspect-ratio: 16 / 10; }
.listing-card .status { position: absolute; top: 14px; left: 14px; z-index: 2; box-shadow: 0 2px 8px rgba(10,28,18,.25); }
.listing-card .status[data-status="contract"] { box-shadow: inset 0 0 0 2px var(--wheat-dark), 0 2px 8px rgba(10,28,18,.25); }
.listing-card h3 { font-size: 1.2rem; margin-bottom: 6px; }
.listing-card__place { display: flex; align-items: center; gap: 6px; font-size: .95rem; margin: 0 0 14px; }
.listing-card__place .icon { width: 16px; height: 16px; color: var(--green-600); }
.listing-card__facts { list-style: none; margin: 0 0 20px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.listing-card__facts li { padding: 5px 10px; border-radius: 6px; background: var(--green-50); color: var(--green-900); font-size: .88rem; font-weight: 600; line-height: 1.3; }
.listing-card .btn { margin-top: auto; align-self: flex-start; }
.listing-group + .listing-group { margin-top: 64px; }

/* 40. Listing page ----------------------------------------------------------- */
.listing-top { background: var(--surface); padding: clamp(24px, 4vw, 44px) 0 clamp(40px, 6vw, 64px); }
.link-arrow--back { margin-bottom: 22px; }
.link-arrow--back:hover .icon { transform: translateX(-3px); }
.listing-head { display: flex; flex-direction: column; gap: 12px; margin-bottom: 26px; }
.listing-head h1 { font-size: clamp(1.9rem, 4.2vw, 2.9rem); margin: 0; }
.listing-head__place { display: flex; align-items: flex-start; gap: 8px; margin: 0; color: var(--muted); font-size: 1.06rem; }
.listing-head__place .icon { width: 20px; height: 20px; margin-top: 3px; color: var(--green-600); }

/* Key facts row: value + label, joined by hairlines */
.facts {
  list-style: none; margin: 0 0 28px; padding: 0;
  display: grid; gap: 1px; grid-template-columns: repeat(2, 1fr);
  background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden;
}
.facts li { background: var(--surface); padding: 16px 18px; }
.facts li:last-child:nth-child(odd) { grid-column: 1 / -1; }
.facts__value { display: block; font-size: clamp(1.3rem, 2.6vw, 1.75rem); font-weight: 800; color: var(--green-800); line-height: 1.1; letter-spacing: -0.02em; }
.facts__label { display: block; margin-top: 4px; font-size: .88rem; color: var(--muted); line-height: 1.3; }
@media (min-width: 760px) {
  .facts { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
  .facts li:last-child:nth-child(odd) { grid-column: auto; }
  .facts li { padding: 20px 22px; }
}

/* Listing gallery: first photo large, the rest as thumbnails (lightbox from site.js) */
.listing-gallery { grid-template-columns: repeat(4, 1fr); gap: 8px; }
.listing-gallery .gallery__item:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 10; border-radius: var(--radius); }
.listing-gallery .gallery__item:first-child::after { font-size: .72rem; }
@media (min-width: 760px) {
  .listing-gallery { grid-template-columns: repeat(6, 1fr); gap: 10px; }
  .listing-gallery .gallery__item:first-child { aspect-ratio: 2 / 1; }
}
@media (min-width: 1000px) { .listing-gallery { grid-template-columns: repeat(8, 1fr); } }

.listing-location { display: grid; gap: 24px; align-items: start; }
@media (min-width: 760px) { .listing-location--map { grid-template-columns: 1fr 1fr; gap: 40px; } }
.listing-location address { font-style: normal; font-weight: 700; font-size: 1.1rem; color: var(--green-950); margin-bottom: 12px; }
.listing-location .btn-row { margin-top: 18px; }
.listing-location .media { max-width: 520px; }
.video__frame video { position: absolute; inset: 0; width: 100%; height: 100%; background: #000; }

/* 41. "Every listing includes" strip --------------------------------------- */
.includes { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.includes li {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 8px 16px 8px 8px; border-radius: 999px;
  background: var(--surface); border: 1px solid var(--line);
  font-weight: 600; font-size: .95rem; color: var(--green-950); line-height: 1.3;
}
.includes .icon { width: 32px; height: 32px; padding: 7px; border-radius: 50%; background: var(--green-50); color: var(--green-800); }

/* 42. Past sales table + auction block ------------------------------------- */
.table-wrap { overflow-x: auto; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.data-table { width: 100%; border-collapse: collapse; font-size: .98rem; }
.data-table th { text-align: left; padding: 12px 18px; background: var(--green-50); color: var(--muted); font-size: .85rem; font-weight: 700; }
.data-table td { padding: 14px 18px; border-top: 1px solid var(--line); vertical-align: top; line-height: 1.45; }
.data-table td:first-child { font-weight: 800; color: var(--green-800); white-space: nowrap; }
@media (max-width: 559px) { .data-table th, .data-table td { padding: 12px 12px; } .data-table { font-size: .92rem; } }

.auction { display: grid; gap: 24px; align-items: center; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: clamp(22px, 4vw, 36px); }
.auction .media { aspect-ratio: 4 / 5; max-width: 200px; }
.auction p { color: var(--muted); font-size: 1.05rem; }
@media (min-width: 700px) { .auction { grid-template-columns: 200px 1fr; gap: 36px; } }

/* 43. Insurance coverage grid + call band notes ---------------------------- */
@media (min-width: 900px) { .icon-list--3 { grid-template-columns: repeat(3, 1fr); } }
.icon-list--cards li { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px 16px; }
.cta-band .cta-band__note { margin-top: 10px; font-size: .98rem; color: rgba(255,255,255,.75); }

/* ==========================================================================
   Added in Stage 3d — About, Contact, Pay, Privacy Policy, Resources
   ========================================================================== */

/* 44. History timeline — vertical on phones, horizontal scroller on desktop
      <div class="timeline-wrap"><div class="timeline__nav">…</div>
      <ol class="timeline"><li><span class="timeline__year">1994</span><p>…</p></li></ol></div> */
.timeline { list-style: none; margin: 0; padding: 0 0 0 30px; position: relative; }
.timeline::before { content: ""; position: absolute; left: 8px; top: 6px; bottom: 6px; width: 2px; background: var(--green-100); }
.timeline li { position: relative; padding-bottom: 26px; }
.timeline li:last-child { padding-bottom: 0; }
.timeline li::before {
  content: ""; position: absolute; left: -30px; top: 4px; width: 18px; height: 18px; border-radius: 50%;
  background: var(--surface); border: 4px solid var(--green-700);
}
.timeline__year { display: block; font-size: 1.15rem; font-weight: 800; color: var(--green-800); letter-spacing: -0.01em; margin-bottom: 4px; }
.timeline p { margin: 0; color: var(--text); font-size: 1rem; line-height: 1.5; }
.timeline li.is-now::before { background: var(--wheat); border-color: var(--wheat-dark); }
.timeline li.is-now .timeline__year { color: var(--wheat-dark); }
.timeline__nav { display: none; }
@media (min-width: 900px) {
  .timeline {
    display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
    padding: 0 0 18px; scrollbar-width: thin; scrollbar-color: var(--green-600) var(--green-100);
  }
  .timeline::before { display: none; }
  .timeline li {
    flex: 0 0 260px; scroll-snap-align: start;
    padding: 34px 26px 0 0; border-top: 3px solid var(--green-100); margin-top: 9px;
  }
  .timeline li::before { left: 0; top: -12px; }
  .timeline p { font-size: .97rem; color: var(--muted); }
  .js .timeline__nav { display: flex; justify-content: flex-end; gap: 10px; margin-bottom: 18px; }
  .timeline__btn {
    width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; cursor: pointer;
    border: 2px solid var(--green-800); background: var(--surface); color: var(--green-800);
  }
  .timeline__btn:hover { background: var(--green-800); color: #fff; }
  .timeline__btn .icon { width: 20px; height: 20px; }
}

/* 45. Partner cards (About) — info cards that link, plus the retailer logo row */
.partner-card { text-decoration: none; color: var(--text); transition: border-color .15s, box-shadow .15s, transform .15s; }
.partner-card:hover { color: var(--text); border-color: var(--green-600); box-shadow: var(--shadow); transform: translateY(-2px); }
.partner-card .link-arrow { margin-top: auto; padding-top: 10px; }
.partners-retail { margin-top: 32px; }

/* 46. Contact page ----------------------------------------------------------- */
.contact-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 28px; display: flex; flex-direction: column; align-items: flex-start; }
.contact-card .icon-badge { margin-bottom: 16px; }
.contact-card h2 { font-size: 1.2rem; margin-bottom: 6px; }
.contact-card .contact-card__detail { font-size: clamp(1.2rem, 2.2vw, 1.4rem); font-weight: 800; color: var(--green-800); letter-spacing: -0.01em; line-height: 1.3; margin-bottom: 8px; word-break: break-word; font-style: normal; }
.contact-card p { color: var(--muted); margin-bottom: 22px; }
.contact-card .contact-card__detail--email { font-size: clamp(1.02rem, 1.6vw, 1.12rem); word-break: break-all; }
.contact-card .btn { margin-top: auto; }
@media (max-width: 480px) { .contact-card .btn { width: 100%; } }

.quote-form-slot:empty { display: none; }   /* Tally form goes inside #quote-form later */
.quote-form-slot { margin-top: 32px; }

.help-panel { margin-top: 32px; background: var(--green-50); border: 1px solid var(--green-100); border-radius: var(--radius); padding: clamp(22px, 4vw, 36px); }
.help-panel h2 { font-size: 1.3rem; }
.help-panel > p { color: var(--muted); }

.contact-meta { list-style: none; margin: 28px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 28px; color: var(--muted); font-size: .98rem; }
.contact-meta li { display: inline-flex; align-items: center; gap: 8px; }
.contact-meta .icon { width: 18px; height: 18px; color: var(--green-600); }
.contact-meta a { color: var(--green-800); font-weight: 600; text-decoration: none; }
.contact-meta a:hover { text-decoration: underline; }
.contact-meta .contact-meta__fb { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--green-50); }
.contact-meta .contact-meta__fb .icon { width: 20px; height: 20px; color: var(--green-800); }

.map-embed { position: relative; height: clamp(300px, 45vw, 440px); background: var(--green-100); }
.map-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.map-embed__label { position: absolute; left: 16px; top: 16px; z-index: 2; display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: var(--green-800); color: #fff; font-size: .85rem; font-weight: 700; box-shadow: var(--shadow); }
.map-embed__label .icon { width: 16px; height: 16px; }
.pay-line-wrap { padding: 40px 0; }
.pay-line { text-align: center; margin: 0; font-size: 1.08rem; color: var(--green-950); }
.pay-line .link-arrow { margin-left: 4px; }

/* 47. Pay card --------------------------------------------------------------- */
.pay-card { max-width: 560px; margin: 0 auto; text-align: center; background: var(--surface); border: 1px solid var(--line); border-top: 5px solid var(--wheat); border-radius: var(--radius); box-shadow: var(--shadow-lg); padding: clamp(28px, 5vw, 44px); }
.pay-card .icon-badge { margin: 0 auto 16px; }
.pay-card h2 { font-size: 1.4rem; }
.pay-card p { color: var(--muted); }
.pay-card .btn { margin: 8px 0 18px; }
@media (max-width: 480px) { .pay-card .btn { width: 100%; } }
.secure-note { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-size: .92rem; color: var(--muted); }
.secure-note .icon { width: 18px; height: 18px; color: var(--green-700); }
.pay-help { max-width: 560px; margin: 24px auto 0; text-align: center; color: var(--muted); }

/* 48. Policy text (Privacy Policy) ------------------------------------------ */
.policy { max-width: 760px; }
.policy h2 { font-size: 1.25rem; margin: 32px 0 8px; }
.policy h2:first-child { margin-top: 0; }
.policy p { font-size: 1.05rem; }

/* 49. Resources groups ------------------------------------------------------ */
.jump { margin-bottom: 8px; }
.doc-group { padding-top: 48px; }
.doc-group:first-of-type { padding-top: 24px; }
.doc-group__title { display: flex; align-items: center; gap: 12px; font-size: 1.4rem; margin-bottom: 18px; }
.doc-group__title .icon-badge { width: 44px; height: 44px; }
.doc-group__title .icon-badge .icon { width: 22px; height: 22px; }
.doc-list .doc-list__static { display: flex; align-items: center; gap: 14px; height: 100%; padding: 16px 18px; background: var(--surface); border: 1px dashed var(--line); border-radius: var(--radius-sm); color: var(--green-950); }
.doc-list .doc-list__static .icon { color: var(--green-600); }
.doc-note { margin: 12px 0 0; font-size: .9rem; color: var(--muted); }

/* ==========================================================================
   Added in Stage 5 round 1
   ========================================================================== */

/* 50. "Most popular" flag on product cards and tiles */
.product-card, .product-tile { position: relative; }
.flag { position: absolute; top: 10px; left: 10px; z-index: 2; padding: 4px 10px; border-radius: 999px; background: var(--wheat); color: var(--green-950); font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }

/* 51. "Got Sludge?" block — the Got Sludge graphic beside a short call to action */
.got-sludge { display: grid; gap: 28px; align-items: center; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: clamp(20px, 4vw, 40px); }
@media (min-width: 860px) { .got-sludge { grid-template-columns: 1.1fr 1fr; gap: 48px; } }
.got-sludge .media { aspect-ratio: 3 / 2; background-color: #fff; }
.got-sludge .media img { object-fit: contain; }
.got-sludge h2 { margin-bottom: 12px; }
.got-sludge p { color: var(--muted); font-size: 1.08rem; }

/* 52. Source note under a figure or section (small, muted) */
.source-note { font-size: .88rem; color: var(--muted); margin-top: 14px; }
.hero__logo.media.is-loaded { background: #fff; }
.hero__logo.media::after { font-size: .55rem; }
/* Very narrow phones (320px): let grid items shrink instead of pushing the page sideways */
.grid > *, .info-card { min-width: 0; }
.info-card { overflow-wrap: anywhere; }
