/*
 * Cropin design system layer. Loaded after every other stylesheet; see DESIGN.md.
 *
 * The page families arrive with their own type and colour rules, so the roles
 * below are written with `:not(#ds)` (ID-level specificity without an ID) to
 * win over class chains without resorting to !important. Component modules
 * should not need to restate any of these rules.
 */

/* ---------------------------------------------------------------- tokens */
:root {
  --ds-bg: #07090d;
  --ds-panel: #0d1118;
  --ds-line: #242b34;
  --ds-line-strong: #3a434e;
  --ds-ink: #f2f4ef;
  --ds-ink-2: #c3cac8;
  --ds-muted: #9ca4a7;
  --ds-light: #eff1eb;
  --ds-ink-dark: #07090d;
  --ds-ink-dark-2: #3f4a48;
  --ds-lime: #b8ff5a;
  --ds-lime-hover: #cfff8f;
  --ds-blue: #04a5d9;
  --ds-blue-ink: #075f78;
  --ds-green: #7ac15c;

  --ds-font: Manrope, "Manrope Fallback", Arial, sans-serif;
  --ds-mono: "DM Mono", ui-monospace, monospace;

  --ds-display: clamp(3.25rem, 6.4vw, 6rem);
  --ds-h1: clamp(2.625rem, 5vw, 4.5rem);
  --ds-h2: clamp(2rem, 3.4vw, 3.25rem);
  --ds-h2-cta: clamp(2.5rem, 4.6vw, 4.25rem);
  --ds-lede: clamp(1.0625rem, 1.25vw, 1.25rem);
  --ds-body: 1rem;
  --ds-small: 0.875rem;
  --ds-label: 0.75rem;

  --ds-section: clamp(56px, 6.5vw, 96px);
  --ds-measure: 68ch;
  --ds-ease: cubic-bezier(0.22, 1, 0.36, 1);

  /* Older token names used by the physical-world and reference layers. */
  --pw-lime: var(--ds-lime);
  --pw-blue: var(--ds-blue);
  --acid: var(--ds-lime);
  --display-tracking: -0.03em;
}

/* Metric-matched fallback so text does not reflow when Manrope arrives. */
@font-face {
  font-family: "Manrope Fallback";
  src: local("Arial");
  size-adjust: 107%;
  ascent-override: 99%;
  descent-override: 28%;
  line-gap-override: 0%;
}

/* ------------------------------------------------------ browser surfaces */
html {
  color-scheme: dark;
  scrollbar-color: #343d48 var(--ds-bg);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body.pw-theme {
  font-family: var(--ds-font);
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
body.pw-theme ::selection {
  background: var(--ds-lime);
  color: var(--ds-ink-dark);
}
body.pw-theme :is(input, textarea, select) {
  caret-color: var(--ds-lime);
}
body.pw-theme a {
  text-underline-offset: 0.25em;
  text-decoration-thickness: 1px;
}
body.pw-theme ::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
body.pw-theme ::-webkit-scrollbar-track {
  background: var(--ds-bg);
}
body.pw-theme ::-webkit-scrollbar-thumb {
  background: #343d48;
  border: 2px solid var(--ds-bg);
}
body.pw-theme :is(strong, b, td, dd, .metrics strong, [class*="stat"] strong, [class*="Stat"] strong, [class*="metric"] strong) {
  font-variant-numeric: tabular-nums;
}

/* ------------------------------------------------------------- headings */
body.pw-theme :is(h1, h2, h3, h4):not(#ds) {
  font-family: var(--ds-font);
  text-wrap: balance;
}
body.pw-theme p:not(#ds) {
  text-wrap: pretty;
}

/* Page H1: one size, weight and tracking for every page family. */
body.pw-theme h1:not(.mono):not(#ds) {
  font-size: var(--ds-h1);
  line-height: 1.02;
  font-weight: 500;
  letter-spacing: -0.03em;
}
/* Homepage display headline. */
body.pw-theme .option-two .hero h1:not(#ds) {
  font-size: var(--ds-display);
  line-height: 0.98;
  letter-spacing: -0.035em;
}
/* No accent-coloured last word. */
body.pw-theme .option-two :is(h1, h2) em:not(#ds) {
  color: inherit;
  font-style: normal;
}

/* Section H2 (not card titles inside articles, lists, figures or legal text). */
body.pw-theme h2:not(.mono):not(:is(article, li, aside, figure, details, dialog, nav, header, .mega-menu, footer, [class*="olicy"], [class*="legal"], [class*="glossary"], [class*="card"], [class*="Card"]) h2):not(#ds) {
  font-size: var(--ds-h2);
  line-height: 1.08;
  font-weight: 500;
  letter-spacing: -0.025em;
}
/* Closing call-to-action bands carry a larger H2. */
body.pw-theme :is(.page-cta, .cta) h2:not(#ds) {
  font-size: var(--ds-h2-cta);
  line-height: 1.02;
  font-weight: 500;
  letter-spacing: -0.03em;
}
/* H3/H4 leading scales with size; no paragraph-height headings. */
body.pw-theme :is(h3, h4):not(.mono):not(#ds) {
  line-height: calc(1em + 0.35rem);
  letter-spacing: -0.01em;
}

/* --------------------------------------------------------- body and lede */
body.pw-theme .option-two :is(.lede, .hero-lede, .native-lede, .page-intro > div > p:last-child, .thesis p:not(.section-index)):not(#ds) {
  font-size: var(--ds-lede);
  line-height: 1.55;
  max-width: 62ch;
}
body.pw-theme .option-two :is(section, article) p:not(.mono):not(.eyebrow):not(.breadcrumb):not([class*="lede"]) {
  max-width: 72ch;
}

/* ------------------------------------------------------ labels and chrome */
/* Labels stacked above headings are removed (refine-html marks them). */
body.pw-theme .is-kicker:not(#ds),
body.pw-theme .option-two .pulse:not(#ds),
body.pw-theme .option-two :is(.grid-overlay, .cta-grid):not(#ds) {
  display: none;
}
/* Native components get the same rule: an eyebrow directly above a heading is
   a kicker. Side-rail labels (followed by a content column) remain. */
body.pw-theme .eyebrow:not(.is-dateline):has(+ :is(h1, h2, h3)):not(#ds) {
  display: none;
}
/* Eyebrows that remain are side-rail labels, the section's name in the left
   column (Krishna's layout). They read as titles: full-strength ink, 16px
   semibold, sentence case, with a short accent bar marking the section start. */
body.pw-theme .option-two .eyebrow:not(.is-dateline):not(#ds),
body.pw-theme .option-two :is([class*="domain-concept-feature_rail"], [class*="careers-experience_rail"], [class*="glossary_rail"], [class*="retained_rail"], .production-story__rail):not(#ds) {
  font-family: var(--ds-font);
  font-size: var(--ds-body);
  font-weight: 600;
  letter-spacing: -0.005em;
  text-transform: none;
  line-height: 1.4;
}
body.pw-theme .option-two .eyebrow:not(.is-dateline):not(:is(.cta, .page-cta, .terminal, .product-ui) *):not(#ds)::before,
body.pw-theme .option-two :is([class*="domain-concept-feature_rail"], [class*="careers-experience_rail"], [class*="glossary_rail"], [class*="retained_rail"], .production-story__rail):not(#ds)::before {
  content: "";
  display: block;
  width: 24px;
  height: 2px;
  margin-bottom: 12px;
  background: var(--ds-lime);
}
body.pw-theme .option-two :is(.light, .layer-light, .decision, .outcomes, .agents-easy, .eudr-evidence, .seed-platform-showcase, .water-food-ag, .fin-underwriting, .datahub-foundation, .datahub-grid-section, .datahub-flow, .datahub-faq, .intel-plot, .intel-proof, .intel-regional, .intel-faq, .partner-model, [class*="cropFootprint"], [class*="decisions__"], [class*="workflow__"], [class*="reportFeature"], [class*="retail-supplier-intelligence_section"], [class*="careers-experience_join"], [class*="company-leadership_investors"]) .eyebrow:not(:is(.terminal, .product-ui, [class*="dark"]) *):not(#ds)::before,
body.pw-theme .option-two [class*="retained_cropProofLight"] :is(.eyebrow, [class*="retained_rail"]):not(#ds)::before {
  background: var(--ds-green);
}
body.pw-theme .option-two :is([class*="domain-concept-feature_rail"], [class*="careers-experience_rail"], [class*="glossary_rail"], [class*="retained_rail"], .production-story__rail):not(#ds) {
  color: inherit;
}
body.pw-theme .option-two .eyebrow:not(.is-dateline):not(:is(.light, .layer-light, .decision, .outcomes, .agents-easy, .eudr-evidence, .seed-platform-showcase, .water-food-ag, .fin-underwriting, .datahub-foundation, .datahub-grid-section, .datahub-flow, .datahub-faq, .intel-plot, .intel-proof, .intel-regional, .intel-faq, .partner-model, [class*="cropFootprint"], [class*="decisions__"], [class*="workflow__"], [class*="reportFeature"], [class*="retail-supplier-intelligence_section"], [class*="careers-experience_join"], [class*="company-leadership_investors"], .cta, .page-cta) *):not(#ds) {
  color: var(--ds-ink);
}
body.pw-theme .option-two :is(.light, .layer-light, .decision, .outcomes, .agents-easy, .eudr-evidence, .seed-platform-showcase, .water-food-ag, .fin-underwriting, .datahub-foundation, .datahub-grid-section, .datahub-flow, .datahub-faq, .intel-plot, .intel-proof, .intel-regional, .intel-faq, .partner-model, [class*="cropFootprint"], [class*="decisions__"], [class*="workflow__"], [class*="reportFeature"], [class*="retail-supplier-intelligence_section"], [class*="careers-experience_join"], [class*="company-leadership_investors"]) .eyebrow:not(:is(.terminal, .product-ui, [class*="dark"]) *):not(#ds) {
  color: var(--ds-ink-dark);
}
/* Case-study datelines (source · place · date) stay as data. */
body.pw-theme .option-two .eyebrow.is-dateline:not(#ds) {
  font-family: var(--ds-mono);
  font-size: var(--ds-label);
  letter-spacing: 0.06em;
  color: var(--ds-ink-2);
}
/* Breadcrumbs read as navigation. */
body.pw-theme .option-two .breadcrumb:not(#ds) {
  font-family: var(--ds-font);
  font-size: var(--ds-small);
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ds-muted);
}
body.pw-theme .option-two .breadcrumb a:not(#ds) {
  color: var(--ds-ink-2);
  text-decoration: underline;
  text-decoration-color: var(--ds-line-strong);
}
body.pw-theme .option-two .breadcrumb a:hover:not(#ds) {
  color: var(--ds-ink);
  text-decoration-color: currentColor;
}
/* Data labels: DM Mono at the 12px floor, readable tracking. */
body.pw-theme .option-two .mono:not(h1, h2, h3, .button, .breadcrumb, .eyebrow):not(#ds) {
  letter-spacing: 0.06em;
}
body.pw-theme .option-two .page-hero-aside:not(#ds) {
  font-size: var(--ds-label);
}
body.pw-theme .option-two .page-hero-aside span:not(#ds) {
  color: var(--ds-muted);
}
body.pw-theme .option-two .page-hero-aside b:not(#ds) {
  color: var(--ds-ink-2);
  font-weight: 400;
}
body.pw-theme .option-two .domain-panel b:not(#ds),
body.pw-theme .option-two .system-label:not(#ds) {
  font-size: var(--ds-label);
}

/* ------------------------------------------------------------- actions */
body.pw-theme .option-two .button:not(#ds) {
  font-family: var(--ds-font);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.2;
  padding: 14px 20px;
  min-height: 48px;
  gap: 28px;
  border-radius: 0;
  transition: background-color 0.18s var(--ds-ease), color 0.18s var(--ds-ease);
}
body.pw-theme .option-two .button:hover:not(#ds) {
  transform: none;
}
body.pw-theme .option-two .button:not(.light):not(.secondary):hover:not(#ds) {
  background: var(--ds-lime-hover);
}
body.pw-theme .option-two .button.button-small:not(#ds) {
  font-size: 0.875rem;
  padding: 10px 16px;
  min-height: 40px;
  gap: 16px;
}
body.pw-theme .option-two .text-link:not(#ds) {
  font-size: 0.9375rem;
  font-weight: 500;
  transition: border-color 0.18s var(--ds-ease);
}
body.pw-theme .option-two .text-link:not(:is(.light, .layer-light, .decision, .outcomes, .agents-easy, .eudr-evidence, .seed-platform-showcase, .water-food-ag, .fin-underwriting, .datahub-foundation, .datahub-grid-section, .datahub-flow, .datahub-faq, .intel-plot, .intel-proof, .intel-regional, .intel-faq, .partner-model, [class*="cropFootprint"], [class*="decisions__"], [class*="workflow__"], [class*="reportFeature"], [class*="retail-supplier-intelligence_section"], [class*="careers-experience_join"], [class*="company-leadership_investors"], .cta, .page-cta) *):not(#ds) {
  color: var(--ds-ink);
  border-bottom-color: var(--ds-line-strong);
}
body.pw-theme .option-two .text-link:hover:not(#ds) {
  border-bottom-color: currentColor;
}

/* --------------------------------------------------------------- focus */
body.pw-theme :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible:not(#ds) {
  outline: 2px solid var(--ds-lime);
  outline-offset: 3px;
  box-shadow: none;
}
body.pw-theme :is(.light, .layer-light, .decision, .outcomes, .agents-easy, .eudr-evidence, .seed-platform-showcase, .water-food-ag, .fin-underwriting, .datahub-foundation, .datahub-grid-section, .datahub-flow, .datahub-faq, .intel-plot, .intel-proof, .intel-regional, .intel-faq, .partner-model, [class*="cropFootprint"], [class*="decisions__"], [class*="workflow__"], [class*="reportFeature"], [class*="retail-supplier-intelligence_section"], [class*="careers-experience_join"], [class*="company-leadership_investors"], .cta, .page-cta) :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible:not(#ds) {
  outline-color: var(--ds-ink-dark);
}

/* Skip link: visible on focus, above the fixed navigation. */
body.pw-theme a.pw-skip:not(#ds) {
  position: fixed;
  top: 12px;
  left: 16px;
  z-index: 2000;
  padding: 12px 18px;
  background: var(--ds-lime);
  color: var(--ds-ink-dark);
  font: 600 0.9375rem/1 var(--ds-font);
  transform: translateY(-200%);
}
body.pw-theme a.pw-skip:focus:not(#ds) {
  transform: none;
  outline-color: var(--ds-ink-dark);
}

/* ------------------------------------------------- light-surface contrast */
/* Light sections the reference contrast pass does not cover. Nested dark
   panels (terminals, product UI, maps) keep their own ink. */
body.pw-theme .option-two :is(.eudr-evidence, .seed-platform-showcase) :is(h1, h2, h3, h4):not(:is(.terminal, .product-ui, [class*="dark"], figure) *):not(#ds) {
  color: var(--ds-ink-dark);
}
body.pw-theme .option-two :is(.eudr-evidence, .seed-platform-showcase) p:not(.mono):not(:is(.terminal, .product-ui, [class*="dark"], figure) *):not(#ds) {
  color: var(--ds-ink-dark-2);
}
body.pw-theme .option-two :is(.light, .layer-light, .decision, .outcomes, .agents-easy, .eudr-evidence, .seed-platform-showcase, .water-food-ag, .fin-underwriting, .datahub-foundation, .datahub-grid-section, .datahub-flow, .datahub-faq, .intel-plot, .intel-proof, .intel-regional, .intel-faq, .partner-model, [class*="cropFootprint"], [class*="decisions__"], [class*="workflow__"], [class*="reportFeature"], [class*="retail-supplier-intelligence_section"], [class*="careers-experience_join"], [class*="company-leadership_investors"]) :is(.breadcrumb, .section-index):not(:is(.terminal, .product-ui, [class*="dark"]) *):not(#ds) {
  color: var(--ds-ink-dark-2);
}
/* Lime bands: dark ink throughout. */
body.pw-theme .option-two :is(.cta, .page-cta) :is(h2, p, .eyebrow):not(#ds) {
  color: var(--ds-ink-dark);
}

/* --------------------------------------------------------------- footer */
body.pw-theme .option-two footer .footer-grid b:not(#ds) {
  font-family: var(--ds-font);
  font-size: var(--ds-small);
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ds-ink);
}
body.pw-theme .option-two footer .footer-grid a:not(#ds) {
  font-size: 0.9375rem;
  color: var(--ds-ink-2);
}
body.pw-theme .option-two footer .footer-grid a:hover:not(#ds) {
  color: var(--ds-ink);
}
body.pw-theme .option-two footer .footer-top p:not(#ds),
body.pw-theme .option-two footer .footer-bottom:not(#ds) {
  color: var(--ds-muted);
}

/* --------------------------------------------------------------- motion */
body.pw-theme .option-two .reveal:not(#ds) {
  transition: opacity 0.6s var(--ds-ease), transform 0.6s var(--ds-ease);
}
/* Hover changes colour, never geometry. */
body.pw-theme .option-two .layer:hover:not(#ds) {
  padding-left: 0;
  padding-right: 0;
}
@media (prefers-reduced-motion: reduce) {
  body.pw-theme *:not(#ds) {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ------------------------------------------------------- shell plumbing */
.ion-site-header-mount {
  display: contents;
}

/* ---------------------------------------- consent and newsletter controls */
/* Injected at runtime by the tracking and newsletter integrations. */
body.pw-theme .cropin-consent:not(#ds) {
  border: 1px solid var(--ds-line-strong);
  border-radius: 0;
  background: var(--ds-panel);
  color: var(--ds-ink-2);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
  font: 400 0.9375rem/1.55 var(--ds-font);
}
body.pw-theme .cropin-consent strong:not(#ds) {
  color: var(--ds-ink);
  font-size: 1rem;
  font-weight: 600;
}
body.pw-theme :is(.cropin-consent button, .cropin-consent-manage):not(#ds) {
  border: 1px solid var(--ds-line-strong);
  border-radius: 0;
  background: transparent;
  color: var(--ds-ink);
  font: 600 0.875rem/1.2 var(--ds-font);
  padding: 12px 16px;
  min-height: 44px;
}
body.pw-theme .cropin-consent button[data-choice="yes"]:not(#ds) {
  border-color: var(--ds-lime);
  background: var(--ds-lime);
  color: var(--ds-ink-dark);
}
body.pw-theme .cropin-consent-manage:not(#ds) {
  background: var(--ds-panel);
  font-size: 0.8125rem;
  min-height: 36px;
  padding: 8px 12px;
}
body.pw-theme :is(.cropin-newsletter-consent, .cropin-newsletter-status):not(#ds) {
  font: 400 0.875rem/1.5 var(--ds-font);
  color: var(--ds-muted);
}
body.pw-theme .cropin-newsletter-consent input:not(#ds) {
  accent-color: var(--ds-lime);
}

/* --------------------------------------------- ordered numerals (real order) */
/* Product layers are numbered because the stack order matters; set the
   numerals as quiet Manrope figures, not a monospace headline. */
body.pw-theme .option-two .layer-number:not(#ds) {
  font-family: var(--ds-font);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0;
  font-variant-numeric: tabular-nums;
  color: var(--ds-muted);
  margin-bottom: 28px;
}
body.pw-theme .option-two :is(.light, .layer-light) .layer-number:not(#ds) {
  color: var(--ds-blue-ink);
}

/* Status pills with "live" dots duplicate the breadcrumb and imply live data. */
body.pw-theme .option-two :is(.forest-status, .agents-live-pill):not(#ds) {
  display: none;
}
body.pw-theme .option-two .agent-context-label:not(#ds) {
  font-size: var(--ds-small);
  font-weight: 600;
  letter-spacing: 0;
  color: var(--ds-ink-2);
}

/* ---------------------------------------------------------- mega-menu */
/* Labels that repeat the tab name or sit above a heading are removed; the
   group label above the domain list stays as a quiet Manrope label. */
body.pw-theme .option-two .mega-menu p.mono:has(+ :is(h2, h3)):not(#ds) {
  display: none;
}
body.pw-theme .option-two .mega-menu p.mono:not(#ds) {
  font-family: var(--ds-font);
  font-size: var(--ds-small);
  font-weight: 600;
  letter-spacing: 0;
  text-transform: lowercase;
  color: var(--ds-muted);
}
body.pw-theme .option-two .mega-menu p.mono:not(#ds)::first-letter {
  text-transform: uppercase;
}

/* ------------------------------------------------------ customer marquee */
body.pw-theme .option-two .customer-marquee-head :is(p, a):not(#ds) {
  font-family: var(--ds-font);
  font-size: var(--ds-small);
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
body.pw-theme .option-two .customer-marquee-head p:not(#ds) {
  color: var(--ds-ink-2);
}
body.pw-theme .option-two .customer-marquee-head a:not(#ds) {
  color: var(--ds-muted);
}

/* ------------------------------------------------------- partner and customer logos */
/* Brand logos always show the brand's own colours. On dark surfaces each logo
   sits on its own white tile (the captured artwork includes white "paper"
   backgrounds, which merge into the tile). Cropin's own mark is not affected. */
body.pw-theme img[data-logo-mode]:not(#ds) {
  filter: none;
  opacity: 1;
  mix-blend-mode: normal;
}
body.pw-theme .option-two .customer-wordmark:not(#ds) {
  width: 196px;
  min-height: 92px;
  margin: 10px 6px;
  padding: 14px 20px;
  border: 0;
  background: #fff;
  opacity: 1;
}
body.pw-theme .option-two .customer-wordmark:hover:not(#ds) {
  background: #fff;
}
body.pw-theme .option-two .customer-wordmark img:not(#ds) {
  height: 60px;
}
/* The edge fades were tuned for white-on-dark marks; they smear across tiles. */
body.pw-theme .option-two .customer-marquee-window:not(#ds)::before,
body.pw-theme .option-two .customer-marquee-window:not(#ds)::after {
  display: none;
}
body.pw-theme .option-two .partner-logo:not(#ds) {
  padding: 12px 18px;
  background: #fff;
}

/* --------------------------------------------- AI Agents workflow table */
/* Every agent's full path (team, signal, agent, action, improvement) reads in
   one row, and the seven rows fit one laptop screen. The table holds down to
   760px; phones get one compact card per agent. */
body.pw-theme .option-two .agents-flow-head span:not(#ds) {
  padding: 12px 16px;
  font-size: 0.75rem;
}
body.pw-theme .option-two .agents-flow-row > div:not(#ds) {
  min-height: 0;
  padding: 15px 16px;
}
body.pw-theme .option-two .agents-flow-row b:not(#ds) {
  font-size: clamp(0.9375rem, 1.1vw, 1.0625rem);
  line-height: 1.3;
}
body.pw-theme .option-two .agents-flow-row small:not(#ds) {
  margin-top: 4px;
  font-size: 0.8125rem;
  line-height: 1.4;
}
@media (min-width: 761px) and (max-width: 1050px) {
  body.pw-theme .option-two .agents-flow-head:not(#ds) {
    display: grid;
  }
  body.pw-theme .option-two .agents-flow:not(#ds) {
    display: block;
    border: 0;
    border-left: 1px solid #283941;
  }
  body.pw-theme .option-two .agents-flow-row:not(#ds) {
    display: grid;
    border: 0;
    border-bottom: 1px solid #283941;
  }
  body.pw-theme .option-two .agents-flow-row > div:not(#ds) {
    border-bottom: 0;
    border-right: 1px solid #283941;
    padding: 13px 12px;
  }
  body.pw-theme .option-two .agents-flow-row > div:not(#ds)::before {
    content: none;
  }
  body.pw-theme .option-two .agents-flow-head span:not(#ds) {
    padding: 10px 12px;
  }
}
@media (max-width: 760px) {
  /* One card per agent: the team across the top, the four steps in a 2 x 2 grid. */
  body.pw-theme .option-two .agents-flow:not(#ds) {
    gap: 12px;
  }
  body.pw-theme .option-two .agents-flow-row:not(#ds) {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  body.pw-theme .option-two .agents-flow-row > div:not(#ds) {
    padding: 12px 14px;
    border-bottom: 1px solid #283941;
  }
  body.pw-theme .option-two .agents-flow-row > div:first-child:not(#ds) {
    grid-column: 1 / -1;
  }
  body.pw-theme .option-two .agents-flow-row > div:nth-child(2n):not(#ds) {
    border-right: 1px solid #283941;
  }
  body.pw-theme .option-two .agents-flow-row > div:nth-last-child(-n + 2):not(#ds) {
    border-bottom: 0;
  }
}

/* ------------------------------------------------------- integrations */
/* Nine integrations read as a 5 + 4 grid of larger, evenly spaced tiles. */
body.pw-theme .option-two .integration-row:not(#ds) {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
  margin-top: 8px;
}
body.pw-theme .option-two .integration-row span:not(#ds) {
  display: flex;
  align-items: center;
  min-height: 68px;
  padding: 18px 22px;
  border: 1px solid var(--ds-line-strong);
  font-size: 1.0625rem;
  font-weight: 500;
  line-height: 1.3;
  color: var(--ds-ink);
}
@media (max-width: 900px) {
  body.pw-theme .option-two .integration-row:not(#ds) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 560px) {
  body.pw-theme .option-two .integration-row:not(#ds) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }
  body.pw-theme .option-two .integration-row span:not(#ds) {
    min-height: 56px;
    padding: 14px 16px;
    font-size: 1rem;
  }
}

/* ------------------------------------------------------- vertical rhythm */
/* One section rhythm for every page family: about 108px at 1440 wide and
   64px on phones (was 120 to 160px, with 340px+ empty bands between blocks). */
body.pw-theme .option-two :is(
  .page-section,
  .section,
  .datahub-section,
  .agents-easy,
  .agents-directory,
  .agents-segments,
  .agents-workflow,
  .agents-guardrails,
  .orbit-image-case,
  .vision-proof,
  .page-cta,
  .cta,
  section[class*="industry-decision-page_"]:not([class*="hero"]),
  section[class*="retail-supplier-intelligence_section"],
  section[class*="careers-experience_section"],
  section[class*="company-leadership_section"]
):not(#ds) {
  padding-top: var(--ds-section);
  padding-bottom: var(--ds-section);
}
body.pw-theme .option-two :is(.page-cta, .cta):not(#ds) {
  min-height: 0;
}
/* Section introductions sit closer to the content they introduce. */
body.pw-theme .option-two .page-intro:not(#ds) {
  margin-bottom: clamp(32px, 4vw, 56px);
}
body.pw-theme .option-two .page-intro:only-child:not(#ds) {
  margin-bottom: 0;
}
/* A section that is only a short introduction does not need a full block. */
body.pw-theme .option-two .page-section:has(> .page-wrap > .page-intro:only-child):not(#ds) {
  padding-bottom: calc(var(--ds-section) * 0.5);
  border-bottom: 0;
}
body.pw-theme .option-two .page-section:has(> .page-wrap > .page-intro:only-child) + .page-section:not(#ds) {
  padding-top: calc(var(--ds-section) * 0.5);
  border-top: 0;
}
@media (max-width: 900px) {
  /* Side-rail label above its heading once the intro stacks. */
  body.pw-theme .option-two .page-intro:not(#ds) {
    gap: 14px;
  }
}

/* ------------------------------------------- Cropin Cloud screens: one fold */
/* Each Cropin Cloud screen section fits a single laptop screen (agreed on the
   Oct 14 call). Screens are capped at 60% of the viewport, are never shown
   wider than their own pixels, and their sections use a tighter rhythm.
   OrbitAI answer screens are long by nature and keep their full height. */
body.pw-theme .option-two :is(
  .evidence-media,
  .intel-carousel-media,
  .water-food-ag-media,
  .fin-underwriting-media,
  .production-story__visual,
  .fire-proof figure,
  .vision-proof figure,
  .basin-proof figure,
  .seed-platform-showcase figure,
  .source-report-frame,
  [class*="retail-evidence-system_reportFrame"]
) img:not([src*="orbit" i]):not(#ds) {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: clamp(260px, calc(100vh - 430px), 480px);
  margin-inline: auto;
  object-fit: contain;
}
/* Gujarat study: three biomass charts beside the map, matched to its height. */
body.pw-theme .option-two .forest-agb-series:not(#ds) {
  display: grid;
  gap: 10px;
  align-content: start;
}
body.pw-theme .option-two .forest-agb-series img:not(#ds) {
  display: block;
  width: 100%;
  height: 112px;
  object-fit: contain;
}
body.pw-theme .option-two .forest-study-v2:not(#ds) {
  margin-top: 28px;
  align-items: start;
}
body.pw-theme .option-two :is(
  [class*="industry-decision-page_evidenceImage"],
  [class*="industry-decision-page_evidenceStage"],
  .production-story__stage,
  .production-story__visual,
  .forest-study-map,
  .forest-carbon-image,
  .forest-compare figure,
  .forest-console-body,
  [class*="domain-concept-feature_figure"]
):not(#ds) {
  min-height: 0;
  height: auto;
}
body.pw-theme .option-two section:has(:is(.evidence-media, .eudr-carousel-media, .intel-carousel-media, .water-food-ag-media, .fin-underwriting-media, .production-story__visual) img:not([src*="orbit" i])):not(:has(img[src*="orbit" i])):not(#ds) {
  padding-top: calc(var(--ds-section) * 0.6);
  padding-bottom: calc(var(--ds-section) * 0.6);
}
body.pw-theme .option-two section:has(:is(.evidence-media, .eudr-carousel-media, .intel-carousel-media, .production-story__visual) img:not([src*="orbit" i])):not(:has(img[src*="orbit" i])) :is(.page-intro, [class*="sectionHead"], [class*="_header"], .production-story__header, .eudr-evidence-intro, .intel-intro):not(#ds) {
  margin-bottom: 24px;
}
/* Per-section caps: the screen's height is the viewport minus that section's
   heading, tabs and caption, so heading and screen share one fold. */
body.pw-theme .option-two :is(.production-story__visual, [class*="domain-concept-feature_figure"], .water-food-ag-media, .basin-proof figure) img:not([src*="orbit" i]):not(#ds):not(#ds-fold) {
  max-height: clamp(260px, calc(100vh - 510px), 440px);
}
body.pw-theme .option-two .fin-underwriting-media img:not(#ds):not(#ds-fold) {
  max-height: clamp(240px, calc(100vh - 575px), 400px);
}
body.pw-theme .option-two .eudr-evidence-intro:not(#ds) {
  margin-bottom: 24px;
}
body.pw-theme .option-two .forest-agb-series .evidence-media img:not(#ds):not(#ds-fold) {
  height: 148px;
  max-height: 148px;
  width: 100%;
}
body.pw-theme .option-two .forest-age-grid figure img:not(#ds):not(#ds-fold) {
  min-height: 0;
  height: auto;
  max-height: clamp(260px, calc(100vh - 430px), 480px);
  object-fit: contain;
}
/* Galleries of several screens read as one row on desktop, so the whole
   gallery sits in one fold; each screen opens full size from its frame. Frames
   hug the screen instead of letterboxing it in a dark box. */
body.pw-theme .option-two .seed-platform-showcase .evidence-media img:not(#ds):not(#ds-fold) {
  width: 100%;
  max-height: none;
}
body.pw-theme .option-two .seed-platform-grid figure > div:not(#ds) {
  height: auto;
  aspect-ratio: 16 / 10;
  padding: 12px;
}
body.pw-theme .option-two .seed-platform-grid .evidence-media:not(#ds) {
  height: 100%;
}
body.pw-theme .option-two .seed-platform-showcase .evidence-media img:not(#ds):not(#ds-fold):not(#ds-row) {
  height: 100%;
  object-fit: contain;
}
body.pw-theme .option-two .seed-platform-grid figcaption:not(#ds) {
  min-height: 0;
  padding: 18px 20px 20px;
}
body.pw-theme .option-two .seed-platform-grid figcaption b:not(#ds) {
  font-size: var(--ds-body);
}
body.pw-theme .option-two .seed-platform-grid:not(#ds) {
  margin-top: 0;
}
@media (min-width: 1100px) {
  body.pw-theme .option-two .seed-platform-grid:not(#ds) {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  body.pw-theme .option-two .vision-gallery:not(#ds) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  body.pw-theme .option-two .vision-gallery figure.wide:not(#ds) {
    grid-column: auto;
  }
}
body.pw-theme .option-two .vision-gallery:not(#ds) {
  margin-top: 0;
}
body.pw-theme .option-two .vision-gallery figure img:not(#ds):not(#ds-fold) {
  height: clamp(220px, calc(100vh - 560px), 300px);
  max-height: none;
  object-fit: contain;
}
body.pw-theme .option-two .vision-gallery figcaption:not(#ds) {
  padding: 16px 18px;
  flex-direction: column;
  justify-content: flex-start;
  gap: 8px;
}
body.pw-theme .option-two .vision-wide img:not(#ds):not(#ds-fold) {
  aspect-ratio: auto;
  max-height: clamp(260px, calc(100vh - 430px), 480px);
  object-fit: contain;
}

/* EUDR carousel: on desktop each product screen sits beside its caption, so the
   screen stays large while the whole slide fits one fold. */
@media (min-width: 901px) {
  body.pw-theme .option-two .eudr-carousel-slide:not(#ds) {
    display: grid;
    grid-template-columns: minmax(0, 1.75fr) minmax(260px, 1fr);
  }
  body.pw-theme .option-two .eudr-carousel-media:not(#ds) {
    aspect-ratio: auto;
    height: clamp(280px, calc(100vh - 400px), 500px);
    border-bottom: 0;
    border-right: 1px solid #dce6e1;
  }
  body.pw-theme .option-two .eudr-carousel-slide figcaption:not(#ds) {
    grid-template-columns: 1fr;
    align-content: center;
    gap: 12px;
  }
}
body.pw-theme .option-two .eudr-carousel-media img:not(#ds):not(#ds-fold) {
  width: 100%;
  height: 100%;
  max-height: none;
  object-fit: contain;
}
/* Gujarat AGB series: three small charts stacked beside the map. The full-image
   control shrinks to an icon button (accessible name kept) so it never covers
   the chart. */
body.pw-theme .option-two :is(.forest-agb-series, .seed-platform-grid) .evidence-open:not(#ds) {
  top: auto;
  bottom: 6px;
  right: 6px;
  min-height: 32px;
  width: 32px;
  padding: 0;
  gap: 0;
  justify-content: center;
  font-size: 0;
}
body.pw-theme .option-two :is(.forest-agb-series, .seed-platform-grid) .evidence-open span:not(#ds) {
  font-size: 14px;
}

/* ------------------------------------------------------- step and card rows */
/* Cards read top-down at one rhythm: label, a fixed 40px, heading, 16px, body.
   Headings used to sit on an auto margin, so a card with a shorter heading or
   no link started its heading lower than its neighbours. Links and footers sit
   at the card foot. */
body.pw-theme .option-two :is(.agents-easy-flow article, .agents-directory-grid article, .ecosystem-flow > div):not(#ds) {
  min-height: 0;
}
body.pw-theme .option-two :is(.agents-easy-flow, .agents-directory-grid, .domain-product-grid) h3:not(#ds),
body.pw-theme .option-two .ecosystem-flow strong:not(#ds) {
  margin: 40px 0 16px;
}
body.pw-theme .option-two .agents-easy-flow h3:not(#ds) {
  font-size: clamp(1.5rem, 1.9vw, 2rem);
  line-height: 1.12;
  letter-spacing: -0.03em;
}
body.pw-theme .option-two .agents-directory-grid h3:not(#ds) {
  font-size: clamp(1.6rem, 2.1vw, 2.25rem);
  line-height: 1.1;
}
body.pw-theme .option-two .agents-easy-flow p:not(#ds) {
  font-size: var(--ds-body);
}
body.pw-theme .option-two .agents-directory-grid .agent-details-link:not(#ds) {
  margin-top: auto;
  padding-top: 24px;
  align-self: flex-start;
}
/* Decision-loop table: every cell starts at the same line. */
body.pw-theme .option-two .agents-flow-row > div:not(#ds) {
  justify-content: flex-start;
  min-height: 0;
  padding: 22px 18px;
}
/* Product-screen carousels (Cropin Intelligence, EUDR): the caption heading is
   a step title, not a section headline, so it matches the EUDR caption size and
   the slide no longer reserves 650px. */
body.pw-theme .option-two .intel-carousel-slide:not(#ds) {
  min-height: 0;
}
body.pw-theme .option-two .intel-carousel-copy h3:not(#ds) {
  margin: 20px 0 14px;
  font-size: clamp(1.4rem, 2vw, 1.875rem);
  line-height: 1.15;
  letter-spacing: -0.025em;
}
body.pw-theme .option-two .intel-carousel-copy > b:not(#ds) {
  margin-top: 22px;
}

/* ------------------------------------------------------------ page heroes */
/* Inner-page heroes reserved 82-89vh and centred their content, which left a
   140-260px band under the hero copy: the first scroll read looser than the
   rest of the page. Heroes now size to their content and end on the shared
   section rhythm, so hero-to-first-section matches section-to-section. */
body.pw-theme .option-two .page-hero:not(#ds) {
  min-height: 0;
  padding-bottom: var(--ds-section);
}
body.pw-theme .option-two .partner-hero:not(#ds) {
  min-height: 0;
  gap: 0;
  padding-bottom: 48px;
}
body.pw-theme .option-two .partner-hero .partner-coordinate:not(#ds) {
  margin-top: clamp(40px, 5vw, 72px);
}
