/* CSMax section library (phase 1, agent S2, 2026-10-17).
   Load AFTER styles.css:  <link rel="stylesheet" href="assets/sections.css">
   - Uses only styles.css tokens and its existing components (.cta-pill, .btn--primary, .stepper, .pricing,
     .faq, .check-list). No new colour styles: every pill and circle stays the solid sage + --rim look from styles.css 17b.
   - Pair every section root with .section (padding) and, for a beige-2 band, .section--alt.
   - Class names start with the section name. Mobile first: phone layout is the default, wider screens add columns.
   - Card grids use container queries; page-level splits use media queries (R4 rule R13.6).
   - Motion lives in styles.css section 19 (S1). Add .reveal / .reveal-stagger in the HTML; nothing here hides content.
   Markup for each section: assets/COMPONENTS.md, part "Sections". Live demo: assets/_sections_demo.html.
   Source notes: the layouts were rebuilt by hand from the named library's free pattern (structure only, no code
   copied, no Tailwind). Where no library pattern was used it says "Own layout". */


/* ---------- shared: positioning context (the old sage haze glows are gone, no gradients on the site) ---------- */
.sec-hero-center, .sec-media-frame, .sec-cta-band { position: relative; isolation: isolate; }


/* ---------- sec-media-frame: screenshot or video in a glass frame ---------- */
/* Own layout. The glass edge reuses --rim (styles.css section 1); the frame never animates. */
.sec-media-frame { width: 100%; max-width: 980px; margin-inline: auto; }   /* width: auto margins in a grid would shrink it to nothing */
.sec-media-frame__glass {
  margin: 0;
  padding: 10px;
  border-radius: var(--r-xl);
  background: rgba(255, 255, 255, 0.45);
  border: 1px solid rgba(255, 255, 255, 0.8);
  box-shadow: var(--rim), var(--shadow-md);
  -webkit-backdrop-filter: blur(12px);   /* under 20px blur: cheap on phones (R3 finding 11) */
  backdrop-filter: blur(12px);
}
.sec-media-frame__screen {
  position: relative;
  aspect-ratio: 16 / 10;          /* space is reserved before the image loads, so no layout shift (R3.2) */
  border-radius: calc(var(--r-xl) - 10px);
  overflow: hidden;
  background: var(--charcoal);
}
.sec-media-frame__screen > img,
.sec-media-frame__screen > video { width: 100%; height: 100%; object-fit: cover; border: 0; }
.sec-media-frame--video .sec-media-frame__screen { aspect-ratio: 16 / 9; }
.sec-media-frame--phone { max-width: 240px; }   /* a 9:16 frame gets tall fast; 320 px from 860 px up */
@media (min-width: 860px) { .sec-media-frame--phone { max-width: 320px; } }
.sec-media-frame--phone .sec-media-frame__screen { aspect-ratio: 9 / 16; }
/* empty slot until a real screenshot exists: dark green screen, green play circle (existing .video-slot__play), cream label */
.sec-media-frame__empty {
  position: absolute; inset: 0;
  display: grid; place-items: center; align-content: center; gap: var(--s-3);
  padding: var(--s-4);
  background: var(--charcoal);
  color: var(--cream);
  font-size: var(--fs-sm);
  text-align: center;
}
.sec-media-frame__caption { margin: var(--s-4) 0 0; text-align: center; font-size: var(--fs-sm); color: var(--ink-2); }
@media (prefers-reduced-transparency: reduce) {
  .sec-media-frame__glass { background: var(--paper); -webkit-backdrop-filter: none; backdrop-filter: none; }
}


/* ---------- sec-hero-split: text left, media right; stacks on phone ---------- */
/* Based on HyperUI marketing "Banners" (split hero), MIT, https://www.hyperui.dev/components/marketing */
.sec-hero-split { padding-block: var(--s-7) var(--s-8); }
.sec-hero-split__grid { display: grid; gap: var(--s-7); align-items: center; }
.sec-hero-split__title { margin-bottom: var(--s-5); font-size: clamp(1.8rem, 1.4rem + 2.4vw, 3.6rem); line-height: 1.05; text-wrap: balance; }   /* half-width column: a step under --fs-display; max = 2x min for zoom (R13.7) */
.sec-hero-split__sub { margin-bottom: 0; text-wrap: pretty; }
.sec-hero-split__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-5); margin-top: var(--s-6); }
.sec-hero-split__note { font-size: var(--fs-sm); color: var(--ink-2); }
.sec-hero-split .sec-trust-row__list { justify-content: flex-start; margin-top: var(--s-6); }
@media (min-width: 960px) {
  .sec-hero-split { padding-block: var(--s-9); }
  .sec-hero-split__grid { grid-template-columns: 7fr 5fr; gap: var(--s-8); }   /* text 7 of 12, media 5 of 12 (BLUEPRINT 0.7) */
  .sec-hero-split__actions .cta-pill { width: auto; }   /* phone keeps the full-width pill from styles.css */
}
/* Buyer-page hero (BLUEPRINT 0.7, moved here from the 4 buyer pages 2026-10-17): the buyer icon in one big green circle.
   The solid sage, --rim and shadow come from .persona__bubble (styles.css 17b); only the shape lives here.
   Each page still sets its own h1 font-size and phone spacing: the h1 lengths differ, and each page was tuned so
   the pill sits inside the first 375 x 667 screen. */
.sec-hero-split .persona__bubble { width: clamp(240px, 26vw, 380px); aspect-ratio: 1; border-radius: 50%; display: grid; place-items: center; margin-inline: auto; }
.sec-hero-split .persona__bubble img { width: 62%; height: auto; }
@media (max-width: 959px) {   /* stacked: the same img moves above the h1 and shrinks (no second image) */
  .sec-hero-split__media { order: -1; }
  .sec-hero-split .persona__bubble { width: 96px; margin-inline: 0; }
}


/* ---------- sec-hero-center: centered headline, actions, optional media below ---------- */
/* Based on HyperUI marketing "Banners" (centered hero), MIT, https://www.hyperui.dev/components/marketing */
.sec-hero-center { text-align: center; padding-block: var(--s-8) var(--s-7); overflow-x: clip; }
.sec-hero-center__title { max-width: 1000px; margin-inline: auto; margin-bottom: var(--s-5); }
.sec-hero-center__sub { margin-inline: auto; margin-bottom: 0; }
.sec-hero-center__actions { display: flex; flex-direction: column; align-items: center; gap: var(--s-3); margin-top: var(--s-6); }
.sec-hero-center__note { font-size: var(--fs-sm); color: var(--ink-2); }
.sec-hero-center__media { margin-top: var(--s-8); }
.sec-hero-center .sec-trust-row__list { margin-top: var(--s-6); }
@media (min-width: 960px) { .sec-hero-center { padding-block: var(--s-9) var(--s-8); } }


/* ---------- sec-trust-row: short honest chips (never logos we do not have) ---------- */
/* Based on HyperUI marketing "Logo Clouds" layout, MIT, https://www.hyperui.dev/components/marketing
   (chips with plain facts take the place of logos). Use alone as a thin band, or drop the list inside a hero. */
.sec-trust-row { padding-block: var(--s-6); }
.sec-trust-row__list {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; justify-content: center; gap: var(--s-3);
}
.sec-trust-row__item {
  display: inline-flex; align-items: center; gap: var(--s-2);
  min-height: 36px;
  padding: 6px 16px 6px 12px;
  border: 1px solid var(--line);
  border-radius: var(--r-pill);
  background: var(--paper);
  color: var(--ink);
  font-size: var(--fs-sm);
  font-weight: 500;
  line-height: 1.3;
}
.sec-trust-row__item::before {   /* small charcoal tick, drawn in CSS so screen readers skip it */
  content: "";
  flex: none;
  width: 5px; height: 10px;
  margin: -3px 4px 0 4px;
  border: solid var(--charcoal); border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.sec-hero-split + .sec-trust-row { padding-top: 0; }   /* right under the hero on the same beige (BLUEPRINT 0.8) */


/* ---------- sec-bento: 4 to 6 feature tiles of mixed size ---------- */
/* Based on HyperUI marketing "Feature Grids", MIT, https://www.hyperui.dev/components/marketing (rebuilt as a bento) */
.sec-bento > .container { container-type: inline-size; }
.sec-bento__grid { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-4); }
.sec-bento__tile {
  display: flex; flex-direction: column; gap: var(--s-3);
  padding: var(--s-6) var(--s-5);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.sec-bento__tile--dark { --focus: var(--cream); background: var(--charcoal); border-color: var(--charcoal); color: var(--cream); }
.sec-bento__tile--dark .sec-bento__text { color: var(--cream); }
.sec-bento__tile--dark .sec-bento__title { color: var(--cream); }
.sec-bento__icon {
  width: 72px; height: 72px; flex: none;
  display: grid; place-items: center;
  border-radius: 50%;
  background: var(--beige-2);
}
.sec-bento__icon img { width: 48px; height: 48px; }
.sec-bento__title { font-size: var(--fs-h3); margin: 0; }
.sec-bento__text { margin: 0; color: var(--ink-2); }
.sec-bento__media {
  margin-top: auto;
  aspect-ratio: 16 / 9;
  max-height: 220px;              /* a wide tile must not grow taller than its row neighbours */
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--beige-2);
  border: 1px solid var(--line);
  display: grid; place-items: center;
  color: var(--ink-2); font-size: var(--fs-sm);
}
.sec-bento__media img { width: 100%; height: 100%; object-fit: cover; }
@container (min-width: 640px) {
  .sec-bento__grid { grid-template-columns: repeat(2, 1fr); }
  .sec-bento__tile--wide { grid-column: span 2; }
}
/* desktop: a 6-column grid. Plain tile = 2 columns, --half = 3, --wide = 4, --tall = 2 rows.
   Pattern that fills cleanly with 5 tiles: wide, tall, plain, plain, wide... see the demo. */
@container (min-width: 960px) {
  .sec-bento__grid { grid-template-columns: repeat(6, 1fr); grid-auto-flow: dense; }
  .sec-bento__tile { grid-column: span 2; padding: var(--s-6); }
  .sec-bento__tile--half { grid-column: span 3; }
  .sec-bento__tile--wide { grid-column: span 4; }
  .sec-bento__tile--tall { grid-row: span 2; }
  /* a tall tile has spare height: its icon drops to the bottom and grows, so the tile is not half empty */
  .sec-bento__tile--tall .sec-bento__icon { order: 1; margin-top: auto; width: 128px; height: 128px; }
  .sec-bento__tile--tall .sec-bento__icon img { width: 88px; height: 88px; }
}


/* ---------- sec-feature-rows: alternating text and media rows ---------- */
/* Based on HyperUI marketing "Feature Grids" (media + text rows), MIT, https://www.hyperui.dev/components/marketing */
.sec-feature-rows__list { display: grid; gap: var(--s-8); }
.sec-feature-rows__row { display: grid; gap: var(--s-6); align-items: center; }
.sec-feature-rows__title { font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.25rem); line-height: 1.12; margin-bottom: var(--s-4); }
.sec-feature-rows__text { font-size: var(--fs-lead); color: var(--ink-2); max-width: 520px; }
.sec-feature-rows__text:last-child { margin-bottom: 0; }
.sec-feature-rows__row .check-list { margin-top: var(--s-5); margin-bottom: 0; }
@media (min-width: 860px) {
  .sec-feature-rows__list { gap: var(--s-9); }
  .sec-feature-rows__row { grid-template-columns: 1fr 1fr; gap: var(--s-8); }
  /* every second row puts the media on the left; the DOM keeps text first so the reading order never changes */
  .sec-feature-rows__row:nth-child(even) .sec-feature-rows__media { order: -1; }
}


/* ---------- sec-steps: 3 or 4 numbered steps, horizontal on desktop ---------- */
/* Own layout: a paper panel around the existing .stepper (styles.css section 8), which already goes
   vertical on phone and horizontal from 860 px. */
.sec-steps__panel {
  padding: var(--s-7) var(--s-5);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-sm);
}
.sec-steps__foot { margin-top: var(--s-7); text-align: center; }
@media (min-width: 860px) { .sec-steps__panel { padding: var(--s-8) var(--s-7); } }


/* ---------- sec-compare: CSMax vs editing it yourself vs hiring an editor (facts only) ---------- */
/* Based on Preline UI free "Pricing" comparison table pattern, MIT plus Preline Fair Use License,
   https://preline.co/examples.html . Rule: CSMax is always column 2, so the highlight needs no extra classes. */
.sec-compare__scroll {
  overflow-x: auto;                /* only scrolls if a cell is too long at 320 px; the page itself never does */
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
}
.sec-compare__table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); line-height: 1.4; }
.sec-compare__table caption { padding: 0; }
.sec-compare__table th,
.sec-compare__table td { padding: 14px 12px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.sec-compare__table tbody tr:last-child > * { border-bottom: 0; }
.sec-compare__table thead th { background: var(--beige-2); font-weight: 700; color: var(--ink); }
.sec-compare__table tbody th { font-weight: 600; color: var(--ink); }
.sec-compare__table td { color: var(--ink-2); }
.sec-compare__table :is(th, td):nth-child(2) { background: var(--cream); color: var(--ink); font-weight: 600; }
.sec-compare__table thead th:nth-child(2) { background: var(--charcoal); color: var(--cream); }
.sec-compare__note { margin: var(--s-4) 0 0; font-size: var(--fs-xs); color: var(--ink-2); }
@media (min-width: 720px) {
  .sec-compare__table { font-size: var(--fs-body); }
  .sec-compare__table th, .sec-compare__table td { padding: 18px 20px; }
}
/* Phone (BLUEPRINT 0.10, moved here from the 4 buyer pages 2026-10-17): each row becomes one small card (row heading,
   then the 3 answers), never a sideways scroll. Each answer shows its column name from its td's data-label, because the
   header row is only kept for screen readers here. Only inside a .sec-compare section: other tables that borrow the
   look (academy's price ladder) have no data-label and stay tables. */
@media (max-width: 719px) {
  .sec-compare .sec-compare__scroll { overflow: visible; border: 0; border-radius: 0; background: none; box-shadow: none; }
  .sec-compare .sec-compare__table, .sec-compare .sec-compare__table :is(tbody, tr, th, td) { display: block; }
  .sec-compare .sec-compare__table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .sec-compare .sec-compare__table tbody { display: grid; gap: var(--s-4); }
  .sec-compare .sec-compare__table tr { border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--paper); overflow: hidden; box-shadow: var(--shadow-sm); }
  .sec-compare .sec-compare__table tbody tr > :not(:last-child) { border-bottom: 1px solid var(--line); }
  .sec-compare .sec-compare__table tbody tr > :last-child { border-bottom: 0; }
  .sec-compare .sec-compare__table tbody th { background: var(--beige-2); }
  .sec-compare .sec-compare__table td::before { content: attr(data-label); display: block; margin-bottom: 2px; font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-2); }
}


/* ---------- sec-for-you: two columns, for you / not for you ---------- */
/* Own layout. The "for you" list reuses .check-list; the "not for you" list draws a muted cross. */
.sec-for-you__grid { display: grid; gap: var(--s-5); }
.sec-for-you__col { padding: var(--s-6) var(--s-5); border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--paper); }
.sec-for-you__col--no { background: transparent; border-style: dashed; border-color: #B8AC9B; }   /* same grey as form borders: 3:1 is not needed for a decorative edge */
.sec-for-you__title { font-size: var(--fs-h3); margin-bottom: var(--s-5); }
.sec-for-you__col .check-list { margin-bottom: 0; }
.sec-for-you__no { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-4); }
.sec-for-you__no li { position: relative; padding-left: 40px; color: var(--ink); }
.sec-for-you__no li::before {
  content: "";
  position: absolute; left: 0; top: 0.1em;
  width: 26px; height: 26px;
  border: 2px solid var(--ink-2); border-radius: 50%;
  background:
    linear-gradient(45deg, transparent 43%, var(--ink-2) 43% 57%, transparent 57%) center / 11px 11px no-repeat,
    linear-gradient(-45deg, transparent 43%, var(--ink-2) 43% 57%, transparent 57%) center / 11px 11px no-repeat;
}
/* the platform-rules lines that sit under both columns, full width, smaller (BLUEPRINT 0.12). Use with .check-list. */
.sec-for-you__rules { margin: var(--s-6) auto 0; max-width: 820px; font-size: var(--fs-sm); }
@media (min-width: 720px) {
  .sec-for-you__grid { grid-template-columns: 1fr 1fr; }
  .sec-for-you__col { padding: var(--s-7) var(--s-6); }
}


/* ---------- sec-quote: one big quote (only a real one, with permission) ---------- */
/* Based on HyperUI marketing "Testimonials", MIT, https://www.hyperui.dev/components/marketing
   Pages keep this whole section inside an HTML comment until a real, permitted quote exists. */
.sec-quote__figure { max-width: 900px; margin: 0 auto; text-align: center; }
.sec-quote__text {
  margin: 0 0 var(--s-5);
  font: 400 clamp(1.45rem, 1.05rem + 1.8vw, 2.4rem)/1.25 var(--font-display);
  letter-spacing: -0.01em;
  color: var(--ink);
}
.sec-quote__text::before {   /* big opening mark, hidden from screen readers (alt text "") */
  content: "\201C";
  content: "\201C" / "";
  display: block;
  font-size: 2.6em; line-height: 0.6;
  margin-bottom: 0.15em;
  color: var(--accent-text);
}
.sec-quote__who { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); }
.sec-quote__name { display: block; color: var(--ink); font-weight: 700; font-size: var(--fs-body); }


/* ---------- sec-stats: real numbers only, each with its source ---------- */
/* Own layout. Every number needs a .sec-stats__source line; no source, no number. */
.sec-stats__list { list-style: none; margin: 0; padding: 0; display: grid; }
.sec-stats__item { padding-block: var(--s-5); border-top: 1px solid var(--line); }
.sec-stats__item:first-child { border-top: 0; padding-top: 0; }
.sec-stats__num { margin: 0 0 var(--s-2); font: 400 clamp(2.5rem, 1.8rem + 3vw, 4rem)/1 var(--font-display); letter-spacing: -0.03em; color: var(--ink); }
.sec-stats__label { margin: 0 0 var(--s-2); font-weight: 700; color: var(--ink); }
.sec-stats__source { margin: 0; font-size: var(--fs-xs); color: var(--ink-2); }
@media (min-width: 720px) {
  .sec-stats__list { grid-auto-flow: column; grid-auto-columns: 1fr; }
  .sec-stats__item { padding: 0 var(--s-6); border-top: 0; border-left: 1px solid var(--line); }
  .sec-stats__item:first-child { border-left: 0; padding-left: 0; }
}


/* ---------- sec-pricing: 3 plan cards, featured in the middle ---------- */
/* Based on HyperUI marketing "Pricing", MIT, https://www.hyperui.dev/components/marketing
   Reuses .pricing and .price-card (styles.css section 12). Put .price-card--featured on the middle card. */
.sec-pricing__note { margin: var(--s-6) auto 0; max-width: 680px; text-align: center; font-size: var(--fs-sm); color: var(--ink-2); }
@media (min-width: 900px) {
  .sec-pricing .pricing { align-items: center; }
  .sec-pricing .price-card--featured { padding-block: var(--s-8); }   /* taller middle card, no transform so nothing shifts */
}


/* ---------- sec-faq: heading left, accordion right on desktop ---------- */
/* Based on HyperUI marketing "FAQs", MIT, https://www.hyperui.dev/components/marketing
   Reuses .faq (styles.css section 13); site.js opens and closes it. */
.sec-faq__grid { display: grid; gap: var(--s-6); }
.sec-faq__head .h2 { margin-bottom: var(--s-4); }
.sec-faq__head .lead { margin-bottom: var(--s-5); }
.sec-faq .faq { max-width: none; margin: 0; }
@media (min-width: 960px) {
  .sec-faq__grid { grid-template-columns: 1fr 1.6fr; gap: var(--s-8); align-items: start; }
  .sec-faq__head { position: sticky; top: 104px; }   /* sits under the 72 px sticky nav */
}


/* ---------- sec-cta-band: full-width charcoal band with one pill ---------- */
/* Based on HyperUI marketing "CTAs", MIT, https://www.hyperui.dev/components/marketing
   Alternate version: use the existing classes instead, <section class="panel-cta panel-cta--full"> (styles.css 16). */
.sec-cta-band {
  --focus: var(--cream);           /* focus ring must show on charcoal */
  padding-block: var(--s-8);
  background: var(--charcoal);
  color: var(--cream);
  text-align: center;
  overflow: hidden;
}
.sec-cta-band__title { max-width: 820px; margin: 0 auto var(--s-4); font-size: var(--fs-h2); line-height: 1.08; letter-spacing: -0.02em; color: var(--cream); }
.sec-cta-band__text { max-width: 620px; margin: 0 auto var(--s-6); font-size: var(--fs-lead); color: var(--cream); }
.sec-cta-band__sub { display: block; margin-top: var(--s-3); font-size: var(--fs-sm); color: var(--cream); }
@media (min-width: 960px) { .sec-cta-band { padding-block: var(--s-9); } }
/* inset version (BLUEPRINT 0.15, moved here from the buyer pages and academy 2026-10-17): put the band INSIDE a
   .container, so it is a rounded charcoal box as wide as the content, with beige before the charcoal footer. */
.sec-cta-band--inset { border-radius: var(--r-xl); padding-inline: var(--s-5); }


/* ---------- founder, text only (until a photo exists) ---------- */
/* Own layout (BLUEPRINT 0.5). Add .founder--text to .founder: one narrow centered column instead of photo + text. */
.founder--text { max-width: 780px; margin-inline: auto; grid-template-columns: 1fr; }


/* ---------- sec-sticky-cta: phone-only bottom bar with one pill ---------- */
/* Own pattern, no JS. Put it as the LAST child of <main>. position: sticky keeps it on the bottom edge while
   you scroll, then it docks in its own place just above the footer, so it never covers the footer. */
.sec-sticky-cta {
  position: sticky; bottom: 0; z-index: 40;
  padding: var(--s-3) var(--gutter) calc(var(--s-3) + env(safe-area-inset-bottom, 0px));
  background: rgba(245, 239, 230, 0.94);   /* --beige, nearly solid so text under it never shows through */
  -webkit-backdrop-filter: saturate(1.2) blur(10px);
  backdrop-filter: saturate(1.2) blur(10px);
  border-top: 1px solid var(--line);
}
.sec-sticky-cta .cta-pill { width: 100%; min-height: 52px; padding-block: 12px; }
/* keyboard focus is never hidden behind the bar (WCAG 2.4.11) */
@media (max-width: 719px) { html:has(.sec-sticky-cta) { scroll-padding-bottom: 96px; } }
@media (min-width: 720px) { .sec-sticky-cta { display: none; } }
/* Out of the way where the page already shows its own buttons (2026-10-17, CSS only):
   - while the hero is on screen (its pill and price line sit there; the bar used to cover them on a 375 x 667 phone)
   - while the plan cards are on screen: #pricing on buyer pages, #price on academy.
   Two scroll-driven animations on opacity and visibility, so a hidden pill can not be tabbed to. Fill mode stays none:
   each one only acts inside its own range, so they never fight. Browsers without timeline-scope keep the bar showing. */
@keyframes sticky-away { 0%, 100% { opacity: 1; visibility: visible; } 8%, 92% { opacity: 0; visibility: hidden; } }
@keyframes sticky-hero { 0%, 92% { opacity: 0; visibility: hidden; } 100% { opacity: 1; visibility: visible; } }   /* fades in as the hero's last strip leaves */
@supports (timeline-scope: none) {
  body { timeline-scope: --pricing, --hero; }
  :is(#pricing, #price) { view-timeline: --pricing; }
  :is(.sec-hero-split, .sec-hero-center) { view-timeline: --hero; }
  .sec-sticky-cta { animation: sticky-away linear, sticky-hero linear; animation-timeline: --pricing, --hero; animation-range: cover, cover; }
  /* the Pause toggle (styles.css 19d) pauses every animation; paused here, the bar froze hidden for the rest of the page */
  html[data-motion="paused"] .sec-sticky-cta { animation-play-state: running !important; }
}
/* Optional, older pattern (academy.html still has it, harmless): everything after the hero inside <div class="after-hero">
   with the bar as that div's LAST child. Sticky can not rise above its parent's top, so the bar waits for the hero to
   leave. Not needed any more: the --hero timeline above does the same on every page. Plain block, no CSS. */

/* Fix (P6, 2026-10-17): accent words in a charcoal band title were charcoal on charcoal, i.e. invisible */
.sec-cta-band .accent-box { color: inherit; }
/* Fix (P3): the Draft tag is unreadable on dark green bands */
.sec-cta-band .tag--draft { color: var(--cream); border-color: var(--cream); }
