/* ============================================================
   UTILITIES + reveal animation
   ============================================================ */
.flow > * + * { margin-top: var(--space-sm); }
.flow-lg > * + * { margin-top: var(--space-md); }
.cluster { display: flex; flex-wrap: wrap; gap: var(--space-2xs); align-items: center; }
.cluster--between { justify-content: space-between; }
.stack { display: grid; gap: var(--space-2xs); }
.center-x { margin-inline: auto; }
.text-center { text-align: center; }
.text-muted { color: var(--text-muted); }
.text-strong { color: var(--text-strong); }
.mt-0 { margin-top: 0; }
.mt-sm { margin-top: var(--space-sm); }
.mt-md { margin-top: var(--space-md); }
.mt-lg { margin-top: var(--space-lg); }
.mb-sm { margin-bottom: var(--space-sm); }
.mb-md { margin-bottom: var(--space-md); }
.full-bleed-img { border-radius: var(--radius-md); overflow: hidden; }
.hide { display: none !important; }
.on-dark { color: var(--text-on-dark); }
[hidden] { display: none !important; }
.lead { font-size: var(--step-1); color: var(--text-muted); }
.pill-list { display: flex; flex-wrap: wrap; gap: var(--space-2xs); list-style: none; padding: 0; margin: 0; }
.divider { height: 1px; background: var(--border); border: none; margin-block: var(--space-lg); }
.on-dark .divider, .section--cinematic .divider { background: var(--border-dark); }
.aspect-16-10 { aspect-ratio: 16/10; }
.rounded { border-radius: var(--radius-md); overflow: hidden; }
.icon-inline { display: inline-block; width: 1.1em; height: 1.1em; vertical-align: -0.15em; }

/* Check list */
.checklist { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-2xs); }
.checklist li { display: flex; gap: 0.6em; align-items: flex-start; }
.checklist li::before { content: ""; flex: none; width: 1.35em; height: 1.35em; margin-top: 0.1em; background: var(--psm-yellow); border-radius: 50%;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center/0.9em no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center/0.9em no-repeat;
  background-blend-mode: normal;
}
.crosslist { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-2xs); }
.crosslist li { display: flex; gap: 0.6em; align-items: flex-start; color: var(--text-muted); }
.crosslist li::before { content: "×"; flex: none; font-weight: 700; color: var(--psm-error); width: 1.35em; text-align: center; }

/* Numbered process */
.steps { list-style: none; counter-reset: step; padding: 0; margin: 0; display: grid; gap: var(--space-sm); }
.steps > li { display: grid; grid-template-columns: auto 1fr; gap: var(--space-sm); align-items: start; counter-increment: step; }
.steps > li::before { content: counter(step, decimal-leading-zero); font-family: var(--font-display); font-weight: 600; font-size: var(--step-2); color: var(--psm-yellow-deep); line-height: 1; }
.on-dark .steps > li::before, .section--cinematic .steps > li::before { color: var(--psm-yellow); }
.steps h3 { font-size: var(--step-1); margin-bottom: 0.2em; }

/* Reveal on scroll (progressive enhancement) */
.reveal { opacity: 0; transform: translateY(16px); }
.js-ready .reveal { transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
.reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; } }
/* No-JS safety: if JS never runs, content must still show */
.no-js .reveal { opacity: 1; transform: none; }

/* Stat block */
.stat { text-align: center; }
.stat__num { font-family: var(--font-display); font-size: var(--step-4); color: var(--text-strong); line-height: 1; }
.on-dark .stat__num { color: var(--psm-white); }
.stat__label { font-size: var(--step--1); color: var(--text-muted); }
.on-dark .stat__label { color: var(--text-on-dark-muted); }

/* Overflow safety — prevent grid/flex blowout and long-word overflow */
h1, h2, h3, h4, p, a, li, blockquote { overflow-wrap: break-word; }
.grid > *, .split > *, .hero__inner > * { min-width: 0; }
.hero__inner { max-width: min(46rem, 100%); }
