/* Corvia site-wide stylesheet — hosted asset.
   Source of truth for all shared visual CSS on corviacycle.com.
   Nav and footer markup is generated by corvia-site.js; this file styles it.
   Edit → re-upload asset → swap Webflow asset URL in site head → publish.
   Last edited: 2026-07-25 (canonical nav + footer refactor). */

/* ---------- Design tokens (fallbacks; Webflow site vars still win when present) ---------- */
:root {
  --deep-brown: #423020;
  --cream: #F7F1EA;
  --arch-support: #F5ECE6;
  --ui-border: #E8DFD3;
  --ui-text-muted: #9C8B78;
  --link: #423020;
  --privacy-mist: #E8E7EA;   /* the home privacy-promise band; set in Webflow, mirrored here */
  --taupe: #DBCABB;
  --dusty-blue: #8F9D9F;
  --button-primary: #4E5F82;
  --button-hover: #617397;
  /* Column standards, locked 2026-09-05. See CLAUDE.md "Column standards".
     New surfaces use these tokens; literal widths are legacy pending
     migration. Chrome (nav 1280) and the home features-spotlight grid
     (1200) are deliberate exceptions. */
  --col-read: 720px;     /* long-form body text: blog posts, articles, legal */
  --col-content: 880px;  /* page content and hero columns (the /faq width) */
  --col-wide: 1120px;    /* card grids, listings, footer inner */
  /* Heading scale, locked 2026-09-05 (Will): the /why-corvia ratio. The old
     56/52 pairing had no hierarchy. Redefined at :root inside a mobile media
     query just below, so consumers never need their own mobile size. */
  --type-h1: 60px;
  --type-h2: 44px;
  --font-headers: 'Cormorant Garamond', Georgia, serif;
  --font-body: 'Montserrat', Helvetica, sans-serif;
}

@media (max-width: 900px) {
  :root { --type-h1: 40px; --type-h2: 36px; }
}

/* ---------- Site-wide link color (deep-brown on-brand default) ----------
   Catches any <a> not covered by a more specific rule. Buttons/CTAs override
   with class-based color (white on button-primary background). */
a { color: var(--link); }

/* ---------- Logo (nav + footer render <img> inline via canonical JS templates) ---------- */
.nav-logo img { height: 36px; width: auto; display: block; }

/* ---------- Nav (desktop) ----------
   .site-nav > .nav-container > (.nav-logo, .nav-links, .nav-actions).
   Full-width bar; content column pinned at ~1272px via responsive padding.

   2026-09-05: the nav and footer are server-rendered by the "Site Nav" and
   "Site Footer" Webflow components, not painted by corvia-site.js any more.
   A Webflow HTML Embed always ships its content inside a <div class="w-embed">,
   which lands between .site-nav and .nav-container. That matters: .site-nav is
   a flex container, so the wrapper would become the flex item and the bar would
   collapse to its content width instead of filling. display:contents removes
   the wrapper from the box tree so the layout is identical to the old DOM.
   The footer does not strictly need it (its children are max-width + auto
   margins inside a plain block) but it is kept symmetrical on purpose. */
.site-nav > .w-embed,
.bom-footer > .w-embed { display: contents; }
.site-nav {
  display: flex; align-items: stretch;
  padding: 20px max(32px, calc((100vw - 1336px) / 2));
  background: rgba(247, 241, 234, 0.92);
  border-bottom: 1px solid rgba(66, 48, 32, 0.08);
  max-width: none; margin: 0;
}
.nav-container { display: flex; align-items: center; justify-content: space-between; gap: 24px; width: 100%; }
.nav-actions { display: flex; align-items: center; gap: 8px; }
.nav-links { display: flex !important; gap: 32px !important; align-items: center !important; }
.nav-item { position: relative; display: inline-flex; align-items: center; }
.nav-item-dropdown > .nav-link { cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
/* The dropdown toggle is a real <button> (it opens a menu, it does not navigate),
   so it needs the usual control reset. Webflow's normalize zeroes the border and
   already gives buttons `font: inherit; color: inherit`, but it does not clear
   the UA button face. Strip chrome only: adding font/color here would outrank
   .nav-link (equal specificity, later stylesheet) and the toggle would render
   14px Arial grey instead of the 15px brand brown. */
.nav-dropdown-toggle {
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
/* Current page marked inside the dropdown too. `.nav-dropdown a` is (0,1,1) so
   the bare .nav-link-active from the Webflow stylesheet loses on color; this
   selector matches its specificity deliberately. */
.nav-dropdown a.nav-dropdown-link-active { color: var(--link); font-weight: 600; }
.nav-dropdown-caret { font-size: 10px; transition: transform 0.15s; }
.nav-item-dropdown:hover .nav-dropdown-caret { transform: rotate(180deg); }
/* Invisible hover-bridge: catches the mouse in the 8px visual gap between trigger
   and dropdown so hover doesn't drop as the pointer travels down. */
.nav-item-dropdown::after {
  content: ''; position: absolute; top: 100%; left: 0; right: 0; height: 14px;
  pointer-events: auto;
}
.nav-dropdown {
  display: none; position: absolute; top: calc(100% + 8px); left: -20px;
  background: #fff; border: 1px solid var(--ui-border); border-radius: 12px;
  padding: 8px 0; min-width: 220px;
  box-shadow: 0 12px 32px rgba(66, 48, 32, 0.10); z-index: 30;
}
.nav-item-dropdown:hover .nav-dropdown,
.nav-item-dropdown:focus-within .nav-dropdown { display: block; }
.nav-dropdown a {
  display: block; padding: 11px 22px; color: var(--deep-brown);
  text-decoration: none; font-size: 14px;
  font-family: var(--font-body); font-weight: 500;
}
.nav-dropdown a:hover { background: var(--arch-support); color: var(--link); }
.nav-signin { color: var(--deep-brown); text-decoration: none; padding: 12px 16px; font-size: 14px; font-weight: 500; }
.nav-start-btn {
  background: var(--button-primary); color: #fff !important;
  padding: 12px 20px; border-radius: 10px; text-decoration: none;
  font-size: 14px; font-weight: 600; display: inline-block;
}
.nav-start-btn:hover { background: var(--button-hover); }

/* ---------- Mobile nav (toggle + drawer + sticky CTA) ---------- */
.mobile-nav-toggle {
  display: none; background: none; border: 0; padding: 0; cursor: pointer;
  width: 40px; height: 40px; position: relative; margin-left: 8px;
}
.mobile-nav-toggle span {
  display: block; position: absolute; left: 8px; right: 8px; height: 2px;
  background: var(--deep-brown); border-radius: 1px;
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.mobile-nav-toggle span:nth-child(1) { top: 13px; }
.mobile-nav-toggle span:nth-child(2) { top: 19px; }
.mobile-nav-toggle span:nth-child(3) { top: 25px; }
.mobile-nav-toggle.open span:nth-child(1) { top: 19px; transform: rotate(45deg); }
.mobile-nav-toggle.open span:nth-child(2) { opacity: 0; }
.mobile-nav-toggle.open span:nth-child(3) { top: 19px; transform: rotate(-45deg); }

.mobile-drawer {
  display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: var(--cream); z-index: 100;
  padding: 88px 32px 40px; flex-direction: column; overflow-y: auto;
  font-family: var(--font-body);
}
.mobile-drawer.open { display: flex; }
.mobile-drawer-close {
  position: absolute; top: 18px; right: 16px; background: none; border: 0;
  font-size: 36px; line-height: 1; color: var(--deep-brown); cursor: pointer;
  padding: 6px 14px; font-family: Georgia, serif; font-weight: 300; border-radius: 8px;
}
.mobile-drawer-close:hover { background: rgba(66, 48, 32, 0.08); }
.mobile-drawer-section-header {
  padding: 20px 0 6px; font-size: 11px; font-weight: 700; color: var(--ui-text-muted);
  text-transform: uppercase; letter-spacing: 0.14em;
}
.mobile-drawer-link {
  display: block; padding: 14px 0; color: var(--deep-brown); text-decoration: none;
  font-size: 20px; font-family: var(--font-headers);
  border-bottom: 1px solid rgba(232, 223, 211, 0.6);
}
.mobile-drawer-link.nav-link-active { color: var(--link); font-weight: 600; }
.mobile-drawer-divider { border: 0; border-top: 1px solid var(--ui-border); margin: 24px 0 8px; }
.mobile-drawer-cta {
  display: block; margin-top: 24px; padding: 18px 32px;
  background: var(--button-primary); color: #fff !important; border-radius: 12px;
  text-align: center; text-decoration: none; font-weight: 600; font-size: 16px;
  font-family: var(--font-body);
}
.mobile-sticky-cta {
  display: none; position: fixed; bottom: 0; left: 0; right: 0;
  background: var(--cream); border-top: 1px solid var(--ui-border);
  padding: 12px 16px; z-index: 50;
  box-shadow: 0 -4px 16px rgba(66, 48, 32, 0.08);
}
.mobile-sticky-cta-btn {
  display: block; padding: 15px 24px; background: var(--button-primary);
  color: #fff; border-radius: 10px; text-align: center; text-decoration: none;
  font-weight: 600; font-size: 15px; font-family: var(--font-body);
}

/* ---------- Article shell (blog posts) ---------- */
.article-shell { max-width: calc(var(--col-read) + 64px); margin: 0 auto; padding: 64px 32px 32px; font-family: var(--font-body); } /* reading column + 2x32px side padding */
.article-header { margin-bottom: 32px; }
.article-crumbs { margin-bottom: 20px; font-size: 13px; letter-spacing: 0.16em; text-transform: uppercase; color: #8B6354; }
.article-crumbs-link { color: var(--link); text-decoration: none; }
.article-h1 { margin: 0 0 20px; font-size: 44px; line-height: 1.1; font-weight: 500; font-family: var(--font-headers); color: var(--deep-brown); }
.article-byline { font-size: 15px; color: #6B5947; font-style: italic; font-family: var(--font-headers); }
.article-hero-figure { margin: 32px -16px 40px; padding: 0; }
.article-hero-img { width: 100%; height: auto; display: block; border-radius: 8px; }
.article-hero-caption { margin-top: 12px; font-size: 13px; color: #8B6354; font-style: italic; text-align: center; font-family: var(--font-headers); }
.article-lede-p { margin: 0 0 20px; font-size: 19px; line-height: 1.7; color: var(--deep-brown); font-family: var(--font-headers); }
.article-section { margin: 56px 0; }
.article-h2 { margin: 0 0 20px; font-size: 30px; line-height: 1.2; font-weight: 500; font-family: var(--font-headers); color: var(--deep-brown); }
.article-p { margin: 0 0 18px; font-size: 17px; line-height: 1.75; color: var(--deep-brown); }
.article-p a, .article-lede-p a, .article-faq-a a, .article-vocab-def a, .legal-body a { color: var(--deep-brown); text-decoration: underline; text-decoration-color: rgba(66, 48, 32, 0.35); text-decoration-thickness: 1px; text-underline-offset: 3px; }
.article-p a:hover, .article-lede-p a:hover, .article-faq-a a:hover, .article-vocab-def a:hover, .legal-body a:hover { text-decoration-color: var(--deep-brown); }
.article-vocab-list { margin: 32px 0; background: #fff; border: 1px solid rgba(66, 48, 32, 0.1); border-radius: 14px; overflow: hidden; }
.article-vocab-row { display: grid; grid-template-columns: 140px 1fr; gap: 24px; padding: 18px 24px; border-bottom: 1px solid rgba(66, 48, 32, 0.08); }
.article-vocab-row-hi { background: #F0F4F5; border-bottom-width: 0; }
.article-vocab-word { font-family: var(--font-headers); font-size: 18px; font-weight: 500; color: var(--deep-brown); }
.article-vocab-def { font-size: 16px; line-height: 1.6; color: var(--deep-brown); }
.article-faq { margin: 32px 0; display: flex; flex-direction: column; gap: 20px; }
.article-faq-item { padding: 24px 28px; background: #fff; border: 1px solid rgba(66, 48, 32, 0.1); border-radius: 12px; }
.article-faq-q { margin-bottom: 12px; font-family: var(--font-headers); font-size: 19px; font-weight: 500; color: var(--deep-brown); }
.article-faq-a { margin: 0; font-size: 16px; line-height: 1.65; color: var(--deep-brown); }


/* ---------- Listings + Related (JS-rendered from registry) ---------- */
.journal-listing { max-width: var(--col-wide); margin: 24px auto 96px; padding: 0 32px; }
.journal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 28px; }
/* .journal-listing already supplies the 32px gutter. .journal-section carries
   its own for standalone use, and nesting the two doubled it: the grid fell to
   1008px against the 1016px that `repeat(auto-fill, minmax(320px,1fr))` needs
   for three columns, so /blog silently rendered two while every pillar page
   rendered three. Zero the inner gutter and the two agree. */
.journal-listing .journal-section { margin: 0 0 64px; padding: 0; }
.journal-listing .journal-section:last-child { margin-bottom: 0; }
.journal-listing .journal-section-eyebrow { margin: 0 0 20px; font-size: 12px; line-height: 1.4; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 600; color: #8B6354; }
.journal-section[data-hidden] { display: none; }
.journal-card[data-hidden] { display: none; }

.article-related { max-width: 1080px; margin: 72px auto 96px; padding: 0 32px; }
.article-related-inner { border-top: 1px solid rgba(66, 48, 32, 0.12); padding-top: 40px; }
.article-related-eyebrow { margin: 0 0 24px; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 600; color: #8B6354; }
.article-related-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-bottom: 32px; }
.article-related-grid .journal-card-image { aspect-ratio: 16/10; }
.article-related-grid .journal-card-title { font-size: 19px; }
.article-related-grid .journal-card-excerpt { font-size: 14px; -webkit-line-clamp: 3; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.article-related-footer { display: flex; flex-direction: column; gap: 10px; padding-top: 20px; border-top: 1px dashed rgba(66, 48, 32, 0.15); }
.article-related-cornerstone,
.article-related-hub { font-family: var(--font-headers); font-size: 17px; color: var(--link); text-decoration: none; font-style: italic; }
.article-related-cornerstone:hover,
.article-related-hub:hover { color: var(--deep-brown); }

@media (max-width: 900px) {
  .article-related-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .article-related-grid { grid-template-columns: 1fr; }
}

/* ---------- Footer ---------- */
.bom-footer { background: #2E1F14; padding: 64px 0 40px; margin-top: 0; font-family: var(--font-body); }
.bom-footer-inner { max-width: var(--col-wide); margin: 0 auto; padding: 0 32px; display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 40px; }
.bom-footer-col { display: flex; flex-direction: column; gap: 10px; }
.bom-footer-logo { font-family: var(--font-headers); font-size: 26px; color: var(--cream); margin-bottom: 10px; text-decoration: none; }
.bom-footer-logo img { height: 40px; width: auto; display: block; filter: brightness(0) invert(1); }
.bom-footer-tag { font-size: 14px; line-height: 1.6; color: rgba(247, 241, 234, 0.7); font-style: italic; font-family: var(--font-headers); }
.bom-footer-h { margin-bottom: 8px; font-family: var(--font-headers); font-size: 16px; font-weight: 500; color: var(--cream); }
.bom-footer-link { font-size: 14px; color: rgba(247, 241, 234, 0.7); text-decoration: none; }
.bom-footer-link:hover { color: var(--cream); }
.bom-footer-bottom { max-width: var(--col-wide); margin: 24px auto 0; padding: 24px 32px 0; border-top: 1px solid rgba(247, 241, 234, 0.1); font-size: 13px; color: rgba(247, 241, 234, 0.55); }

/* ---------- Anchor offset for #features (Session L, 2026-08-21) ----------
   The "Features" nav item targets /#features, the home spotlight section.
   The site nav is fixed, so without this the section lands under it. */
#features {
  scroll-margin-top: 88px;
}

/* ---------- Footer St. Michael prayer (Session L, 2026-08-21) ----------
   Sits between the link columns and the copyright bar, far left, icon then
   prayer. Icon height is the smallest at which the line art still reads.
   Text mirrors .bom-footer-tag (Cormorant italic) so the two muted serif
   lines in the footer share a voice. Shares the rule/padding/gutter of
   .bom-footer-bottom so the two hairlines stack evenly (2026-08-23). */
.bom-footer-prayer {
  max-width: var(--col-wide);
  margin: 64px auto 0;
  padding: 24px 32px 0;
  border-top: 1px solid rgba(247, 241, 234, 0.1);
  display: flex;
  align-items: center;
  gap: 18px;
}
.bom-footer-prayer-icon {
  height: 50px;
  width: auto;
  flex: none;
  display: block;
  opacity: 0.9;
  margin-top: 2px;
}
.bom-footer-prayer-text {
  margin: 0;
  max-width: 980px;
  font-family: var(--font-headers);
  font-style: italic;
  font-size: 13px;
  line-height: 1.65;
  color: rgba(247, 241, 234, 0.55);
}


/* ---------- Journal (index + pillar pages) ---------- */
/* Journal hubs are WHITE, the section standard (Will, 2026-09-11). The four
   pillar pages have no .corvia-page wrapper so they were white already; /blog's
   wrapper carries data-journal="hub" to override the site-wide cream. */
[data-journal="hub"] { background: #FFFFFF; }
.journal-shell { max-width: var(--col-wide); margin: 0 auto; padding: 0 32px 96px; font-family: var(--font-body); }
.journal-hero { max-width: var(--col-wide); margin: 0 auto; padding: 96px 32px 32px; font-family: var(--font-body); }
.journal-h1 { margin: 16px 0 24px; font-size: 56px; line-height: 1.05; font-weight: 500; font-family: var(--font-headers); color: var(--deep-brown); }
.journal-sub { margin: 0; max-width: 720px; font-size: 20px; line-height: 1.55; color: #6B5947; font-style: italic; font-family: var(--font-headers); }
.journal-tabs { max-width: var(--col-wide); margin: 16px auto 44px; padding: 0 32px; display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid rgba(66, 48, 32, 0.12); }
/* Pillar pages ship the tabs inside an HTML Embed: without display:contents the
   .w-embed wrapper is the flex item at line-height and the padded inline links
   spill over the container border (the "gray bar shifts up" bug). Same fix as
   .site-nav > .w-embed. inline-block + no underline make .journal-tab
   self-sufficient where w-button is absent. */
.journal-tabs > .w-embed { display: contents; }
.journal-tab { display: inline-block; text-decoration: none; background: none; border: 0; padding: 14px 20px; font-family: var(--font-body); font-size: 14px; font-weight: 600; color: #8B6354; letter-spacing: 0.02em; cursor: pointer; position: relative; transition: color 0.15s; }
.journal-tab:hover { color: var(--deep-brown); }
.journal-tab-active { color: var(--deep-brown); }
.journal-tab-active::after { content: ''; position: absolute; left: 20px; right: 20px; bottom: -1px; height: 2px; background: var(--deep-brown); }
.journal-section { max-width: var(--col-wide); margin: 56px auto 0; padding: 0 32px; }
/* line-height pinned so this reads identically whether the tag is <p> or <h2>. */
.journal-section-eyebrow { margin-bottom: 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 600; color: #8B6354; }
.journal-list { max-width: var(--col-wide); margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }

.journal-card { display: flex; flex-direction: column; padding: 0; background: #fff; border: 1px solid rgba(66, 48, 32, 0.1); border-radius: 16px; text-decoration: none; color: inherit; overflow: hidden; transition: transform 0.15s ease, box-shadow 0.15s ease; }
.journal-card:hover { transform: translateY(-2px); box-shadow: 0 12px 32px rgba(66, 48, 32, 0.08); }
.journal-card-image { aspect-ratio: 16/10; background-size: cover; background-position: center 25%; background-color: #F0F4F5; }
.journal-card-inner { padding: 22px 24px 24px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.journal-card-tag { margin: 0; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 600; color: #8B6354; }
.journal-card-title { margin: 0; font-family: var(--font-headers); font-size: 22px; line-height: 1.22; font-weight: 500; color: var(--deep-brown); }
.journal-card-excerpt { margin: 0; font-size: 15px; line-height: 1.55; color: var(--deep-brown); flex: 1; }
.journal-card-meta { margin: 0; font-size: 12px; color: #8B6354; }


.journal-card[data-hidden] { display: none; }

/* ---------- Brand decorations (background-image approach, 2026-07-26) ------------
   PATTERN: sections carry rosary + blob via CSS pseudo-elements (::before / ::after)
   pointing at the brand assets on the Webflow CDN. No DOM elements. Backgrounds are
   naturally contained inside their parent, cascade identically in Designer and live,
   and never disrupt the element tree editors work in.

   Content sits above pseudos via `> * { z-index: 1 }`. isolation:isolate creates a
   local stacking context so decorations never bleed onto adjacent sections.

   Mary anchor on /privacy-promise is a real in-flow <img> (below, .brand-mary-anchor)
   because it is centered content, not decoration. */

[class^="hero-new"], [class*=" hero-new"],
[class^="about-hero"], [class*=" about-hero"],
[class^="hero-1"], [class*=" hero-1"],
[class^="faq-hero"], [class*=" faq-hero"],
[class^="privacy-promise"], [class*=" privacy-promise"],
[class^="founder-mini"], [class*=" founder-mini"],
[class^="final-invitation"], [class*=" final-invitation"] {
  position: relative; overflow: hidden; isolation: isolate;
}
[class^="hero-new"] > *, [class*=" hero-new"] > *,
[class^="about-hero"] > *, [class*=" about-hero"] > *,
[class^="hero-1"] > *, [class*=" hero-1"] > *,
[class^="faq-hero"] > *, [class*=" faq-hero"] > *,
[class^="privacy-promise"] > *, [class*=" privacy-promise"] > *,
[class^="founder-mini"] > *, [class*=" founder-mini"] > *,
[class^="final-invitation"] > *, [class*=" final-invitation"] > * {
  position: relative; z-index: 1;
}

/* Decoration selectors are section-tag-scoped so pseudo-elements never render on
   nested divs (hero-new-inner, founder-mini-card, founder-mini-body, etc). */

/* Home hero: branch low-left beside the CTA, plus the sand blob top-left.
   The rosary-1 wash that used to fill this ::before slot was removed when the
   chapel photograph took the right-hand side; the branch replaced it here on
   Will's note, sitting near the Start free button rather than opposite it. */
section[class^="hero-new"]::before, section[class*=" hero-new"]::before {
  content: ''; position: absolute; left: -70px; bottom: -50px;
  width: 430px; height: 258px; opacity: 0.11; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
}
section[class^="hero-new"]::after, section[class*=" hero-new"]::after {
  content: ''; position: absolute; top: -320px; left: -480px;
  width: 1600px; height: 1200px; opacity: 0.32; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a6519df09a1ffb6dbf494dc_brand-color-3.png") top center / 100% auto no-repeat;
}

/* Founder mini: blush blob top-right */
section[class^="founder-mini"]::before, section[class*=" founder-mini"]::before {
  content: ''; position: absolute; top: -320px; right: -380px;
  width: 1240px; height: 900px; opacity: 0.32; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a6519df03cb9e176505817d_brand-color-1.png") top center / 100% auto no-repeat;
}

/* Final invitation (dark CTA): rosary-2 sweeping in from top-left, small */
section[class^="final-invitation"]::before, section[class*=" final-invitation"]::before {
  /* Sits WHOLE inside the left gutter rather than bleeding off the edge.
     The closing CTA is a centred column: at 1280 its content runs x=312 to 968,
     leaving a 312px gutter each side. A 210px rosary centred in that gutter
     clears the text by ~50px and never touches the viewport edge. (2026-08-23)

     ANCHORED TO THE TOP, not vertically centred (2026-09-05, Will's note).
     Centring left a gap above the beads that grew with the band: 21px at 1440
     and more at narrower widths, because the band's height moves with how the
     body copy wraps. Pinning to top:0 makes the rosary hang from the section
     edge and read as a rosary on a hook, and the slack collects at the bottom
     where a rosary ends anyway. Do not reintroduce translateY here. */
  content: ''; position: absolute; top: 0; left: 52px;
  width: 210px; height: 471px; opacity: 1; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b7139b2f681a72d697a42_home-rosary-line.webp") center / 100% auto no-repeat;
}

/* /about hero: branch low-right + sand blob top-left. The legacy rosary-1
   wash ("the beads") came off at Will's request 2026-09-05; branch is the
   same asset + treatment as the home hero (black ink on light ground,
   ~0.11, no filter). Desktop only; the short mobile hero has no room. */
@media (min-width: 901px) {
  section[class^="about-hero"]::before, section[class*=" about-hero"]::before {
    content: ''; position: absolute; right: -60px; bottom: -45px;
    width: 520px; height: 311px; opacity: 0.11; pointer-events: none; z-index: 0;
    background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
  }
}
section[class^="about-hero"]::after, section[class*=" about-hero"]::after {
  content: ''; position: absolute; top: -320px; left: -480px;
  width: 1600px; height: 1200px; opacity: 0.32; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a6519df09a1ffb6dbf494dc_brand-color-3.png") top center / 100% auto no-repeat;
}

/* /pricing hero (class 'hero-1'): slate blue band (var(--button-primary),
   Will's final call 2026-09-04 after trying dusty #8F9D9F) with cream type.
   Branch is white via invert(1) on the dark ground per the opacity table. The branch sits low-right in its natural dark ink at
   0.14, no invert: white line art vanished on dusty blue (the opacity table in
   MEMORY.md is per-asset AND per-ground). Desktop only: below 900px
   the band is full of stacked text and the branch would sit behind it.
   History: a drawn SVG rosary hung here for one deploy on 2026-09-04 and was
   rejected by Will same day (wrong beads); the legacy brand-rosary-1.png 0.70
   wash was retired the same morning. Do not bring either back. */
@media (min-width: 901px) {
  section[class^="hero-1"]::before, section[class*=" hero-1"]::before {
    content: ''; position: absolute; right: -70px; bottom: -55px;
    width: 560px; height: 335px; opacity: 0.18; pointer-events: none; z-index: 0;
    filter: invert(1);
    background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
  }
}
/* /faq hero: branch low-right + sand blob top-left. The LAST legacy rosary-1
   0.70 wash on the site came off here 2026-09-05; same treatment as /about
   (black ink on cream, ~0.11, no filter). Desktop only; the short mobile
   hero has no room. brand-rosary-1.png is now unreferenced site-wide. */
@media (min-width: 901px) {
  section[class^="faq-hero"]::before, section[class*=" faq-hero"]::before {
    content: ''; position: absolute; right: -60px; bottom: -45px;
    width: 520px; height: 311px; opacity: 0.11; pointer-events: none; z-index: 0;
    background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
  }
}
section[class^="faq-hero"]::after, section[class*=" faq-hero"]::after {
  content: ''; position: absolute; top: -320px; left: -480px;
  width: 1600px; height: 1200px; opacity: 0.32; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a6519df09a1ffb6dbf494dc_brand-color-3.png") top center / 100% auto no-repeat;
}

.brand-mary-anchor { display: block; margin: 0 auto 24px; width: 96px; height: auto; }

/* ---------- Mobile breakpoint ---------- */
@media (max-width: 900px) {
  .nav-links { display: none !important; }
  .mobile-nav-toggle { display: inline-flex !important; }
  [class^="nav-buttons"] .btn-ghost,
  [class^="nav-buttons"] [class^="btn-ghost"] { display: none !important; }
  .mobile-sticky-cta { display: block; }
  body { padding-bottom: 78px; }
  .site-nav .nav-cta { display: none; }
  .site-nav { padding: 16px 20px; }
  .article-shell { padding: 48px 20px 24px; }
  .article-h1 { font-size: 32px; }
  .article-h2 { font-size: 24px; }
  .article-vocab-row { grid-template-columns: 1fr; gap: 8px; }
  .bom-footer-inner { grid-template-columns: 1fr 1fr; gap: 32px; }
  .bom-footer-prayer { margin-top: 48px; padding-top: 24px; gap: 14px; align-items: flex-start; }
  .bom-footer-prayer-icon { height: 44px; }
  .bom-footer-prayer-text { font-size: 12.5px; line-height: 1.6; }
  .journal-h1 { font-size: 36px; }
  .journal-hero { padding: 64px 20px 24px; }
  .journal-shell { padding: 0 20px 64px; }
  .journal-section { padding: 0 20px; }
  .journal-list { grid-template-columns: 1fr; gap: 20px; }
  
  .journal-tabs { margin: 8px 0 28px; padding: 0 20px; overflow-x: auto; white-space: nowrap; flex-wrap: nowrap; }
  .journal-tab { padding: 12px 14px; font-size: 13px; flex-shrink: 0; }

  /* Rosaries + blobs scale down proportionally on mobile so nothing overflows narrow viewports. */
  section[class^="hero-new"]::before, section[class*=" hero-new"]::before {
    width: 438px; height: 520px; top: -20px; right: -40px;
  }
  /* faq-hero::before dropped from this rule 2026-09-05: the branch that
     replaced its rosary wash exists only inside a 901px+ media query. */
  section[class^="hero-new"]::after, section[class*=" hero-new"]::after,
  section[class^="about-hero"]::after, section[class*=" about-hero"]::after,
  section[class^="faq-hero"]::after, section[class*=" faq-hero"]::after {
    width: 980px; height: 720px; top: -220px; left: -320px;
  }
  section[class^="founder-mini"]::before, section[class*=" founder-mini"]::before {
    width: 820px; height: 600px; top: -220px; right: -240px;
  }
  section[class^="final-invitation"]::before, section[class*=" final-invitation"]::before {
    /* No usable gutter on a phone, so it goes back to a soft bleed and drops
       well down in opacity so it never competes with the copy over it.
       top:0 matches the desktop anchoring (2026-09-05). */
    width: 190px; height: 426px; left: -56px; top: 0; opacity: 0.5;
  }
  .brand-mary-anchor { width: 72px; }
}

/* ---------- FEATURES PAGE (/features) + homepage differentiator tile row ----------
   Webflow WHTML strips inner class names not registered in the Style Manager,
   so this block styles by TAG POSITION under the registered parent classes
   (features-hero, feature-section, features-cta, home-different) plus
   whatever inline styles were carried in the WHTML at insert time. That way
   the page renders correctly without needing to register 60+ inner classes.
   Added 2026-07-29 (Session J) — replaces the class-based first draft. */

/* Hero */


/* Feature sections (2-col text | mockup) */


/* Optional footnote (bare <p> after the <ul>, italic) */

/* Pull-quote (last div under feature-copy) */


/* Feature visual (right column mockup wrapper) */


/* Small eyebrow paragraph inside mockups (first p direct child) */

/* Generic card style for direct div children of the mockup wrapper */


/* Brown pull band (scripture / featured band) — first div inside visual with the brown style */


/* Rosary tile (flex-row with chev) */


/* Learn mockup — progress card is the FIRST div in the learn visual */
#learn > div > div:last-child > div:first-child { padding: 18px 20px; }
#learn > div > div:last-child > div:first-child > div:first-child {
  display: flex; justify-content: space-between; margin: 0 0 10px; padding: 0;
  font-family: var(--font-body); font-size: 13px; color: var(--deep-brown); font-weight: 600;
  background: transparent; border: none;
}
#learn > div > div:last-child > div:first-child > div:nth-of-type(2) {
  height: 6px; background: #EFE7DA; border-radius: 999px; overflow: hidden;
  margin-bottom: 14px; padding: 0; border: none;
}
#learn > div > div:last-child > div:first-child > div:nth-of-type(2) > span {
  display: block; height: 100%; background: var(--deep-brown); width: 12%; border-radius: 999px;
}
#learn > div > div:last-child > div:first-child > a {
  display: inline-block; background: var(--button-primary); color: #FFFFFF !important;
  padding: 10px 22px; border-radius: 12px; font-family: var(--font-body);
  font-size: 13px; font-weight: 500; text-decoration: none;
}
/* Module header paragraphs inside learn visual */
#learn > div > div:last-child > p:not(:first-child) {
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 22px 0 10px;
}
/* Learn lesson tiles (span + inner div layout) */
#learn > div > div:last-child > div:not(:first-child) {
  display: flex; align-items: center; gap: 14px; padding: 12px 16px;
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 12px;
  margin-bottom: 8px;
}
#learn > div > div:last-child > div:not(:first-child) > span {
  width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--ui-border);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  font-family: var(--font-body); font-size: 12px; color: #8B6354; background: transparent;
  float: none;
}
/* Done state — checkmarks in green */
#learn > div > div:last-child > div:not(:first-child) > span:first-child:not(:empty)[data-done],
#learn > div > div:last-child > div:not(:first-child) > span:first-child {
  color: #8B6354;
}
#learn > div > div:last-child > div:not(:first-child) > div > p:first-child {
  font-family: var(--font-headers); font-size: 17px; color: var(--deep-brown); margin: 0;
  text-transform: none; letter-spacing: 0;
}
#learn > div > div:last-child > div:not(:first-child) > div > p:last-child {
  font-family: var(--font-body); font-size: 11px; color: #8B6354; margin: 3px 0 0; font-style: normal;
}

/* Feast Days mockup — calendar container is direct div child */
#feast-days > div > div:last-child > div {
  padding: 20px;
}
#feast-days > div > div:last-child > div > p:first-child {
  font-family: var(--font-headers); font-size: 18px; text-align: center;
  color: var(--deep-brown); margin: 0 0 16px;
  text-transform: none; letter-spacing: 0;
}
/* The mock-cal-grid — 22 cells in a grid; identifiable as the div child of the calendar with many day children */
#feast-days > div > div:last-child > div > div:not(:last-child) {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px;
  padding: 0; border: none; background: transparent; margin: 0;
}
#feast-days > div > div:last-child > div > div:not(:last-child) > div {
  position: relative; aspect-ratio: 1; border: 1px solid #EFE7DA;
  border-radius: 10px; display: flex; align-items: center; justify-content: center;
  font-family: var(--font-body); font-size: 12px; color: var(--deep-brown);
  background: #FBF7F1; margin: 0; padding: 0;
}
/* Stamps in each day: inline style already sets background color; just size them */
#feast-days > div > div:last-child > div > div:not(:last-child) > div > span:not(:first-child) {
  width: 18px; height: 18px; border-radius: 50%; display: inline-block; float: none;
}
/* Stars in each day (first span, if star char) */
#feast-days > div > div:last-child > div > div:not(:last-child) > div > span:first-child {
  position: absolute; top: 3px; right: 5px; color: #C08A3C; font-size: 10px;
  line-height: 1; width: auto; height: auto; float: none;
}
/* Legend row (last div inside calendar) */
#feast-days > div > div:last-child > div > div:last-child {
  display: flex; gap: 14px; flex-wrap: wrap; justify-content: center;
  margin-top: 14px; margin-bottom: 0; padding: 0; border: none; background: transparent;
  font-family: var(--font-body); font-size: 11px; color: #6B5947;
}
#feast-days > div > div:last-child > div > div:last-child > span {
  display: inline-flex; align-items: center; gap: 5px; float: none; color: #6B5947;
}
#feast-days > div > div:last-child > div > div:last-child > span > i {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%;
}

/* CTA band */
.features-cta {
  padding: 96px 32px; background: #2E1F14; text-align: center;
}
.features-cta > div { max-width: 720px; margin: 0 auto; }
.features-cta > div > p:first-child {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.16em;
  text-transform: uppercase; color: rgba(247,241,234,0.7); margin: 0 0 20px;
}
.features-cta > div > h2 {
  font-family: var(--font-headers); font-weight: 500; color: var(--cream);
  font-size: var(--type-h2); line-height: 1.1; margin: 0 0 20px;
}
.features-cta > div > p:nth-of-type(2) {
  font-family: var(--font-body); font-size: 15px; color: rgba(247,241,234,0.8);
  margin: 0 0 32px;
}
.features-cta > div > a:nth-of-type(1) {
  display: inline-block; padding: 16px 40px; background: var(--cream);
  color: var(--deep-brown) !important; border-radius: 12px; text-decoration: none;
  font-family: var(--font-body); font-size: 16px; font-weight: 600;
}
.features-cta > div > a:nth-of-type(2) {
  display: block; margin-top: 22px; font-family: var(--font-headers);
  font-style: italic; color: rgba(247,241,234,0.7); font-size: 15px;
  text-decoration: none;
}

/* Homepage differentiator tile row */


/* Responsive */
@media (max-width: 960px) {
  
  
  
  
  
  
  
  
  .features-cta > div > h2 { font-size: 38px; }
}


/* ---------- LEARN COURSE PAGE (/learn-the-billings-method) ----------
   Sentinel-driven overview: <div class="learn-overview" data-corvia-lessons="overview">
   gets filled with 5 module bands (A..E), each showing its lessons as tiles.
   Because renderLessonsOverview() runs after DOMContentLoaded, its class names
   are not subject to Webflow WHTML class stripping — full class-based CSS OK.
   Course-page hero/CTA uses structural selectors under the registered parent
   .course-page class. Added 2026-07-29 (Session J, part 2). */
.course-hero {
  padding: 96px 32px 48px; background: var(--cream); text-align: center;
}
.course-hero > div { max-width: 780px; margin: 0 auto; }
.course-hero > div > p:first-child {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.16em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 20px;
}
.course-hero > div > h1 {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: var(--type-h1); line-height: 1.1; margin: 0 0 24px;
}
.course-hero > div > p:nth-of-type(2) {
  font-family: var(--font-headers); font-size: 20px; line-height: 1.55;
  color: var(--deep-brown); margin: 0 0 32px;
}
.course-hero > div > div {
  display: inline-flex; gap: 16px; flex-wrap: wrap; justify-content: center;
  font-family: var(--font-body); font-size: 13px; color: #6B5947;
}
.course-hero > div > div > span {
  display: inline-flex; align-items: center; gap: 6px;
}

.course-body { padding: 64px 32px 96px; background: var(--cream); }
.course-body > div { max-width: 900px; margin: 0 auto; }
.course-body > div > p:first-child {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 6px; text-align: center;
}
.course-body > div > h2:first-of-type {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 32px; line-height: 1.2; margin: 0 0 32px; text-align: center;
}

.learn-overview { margin: 0; }
.learn-overview .learn-module { margin-bottom: 40px; }
.learn-overview .learn-module-eyebrow {
  font-family: var(--font-body); font-size: 11px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 14px;
}
.learn-overview .learn-lesson-list { display: block; }
.learn-overview .learn-lesson-tile {
  display: flex; align-items: center; gap: 16px; padding: 16px 20px;
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 14px;
  margin-bottom: 8px;
}
.learn-overview .learn-lesson-num {
  width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--ui-border);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  font-family: var(--font-body); font-size: 13px; color: #8B6354;
}
.learn-overview .learn-lesson-body { min-width: 0; }
.learn-overview .learn-lesson-title {
  font-family: var(--font-headers); font-size: 18px; color: var(--deep-brown);
  margin: 0;
}
.learn-overview .learn-lesson-sub {
  font-family: var(--font-body); font-size: 12px; color: #8B6354; margin: 4px 0 0;
}

.course-why { padding: 80px 32px; background: var(--arch-support); }
.course-why > div { max-width: 720px; margin: 0 auto; text-align: center; }
.course-why > div > p:first-child {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 16px;
}
.course-why > div > h2 {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 34px; line-height: 1.2; margin: 0 0 20px;
}
.course-why > div > p:nth-of-type(2) {
  font-family: var(--font-headers); font-size: 19px; line-height: 1.6;
  color: var(--deep-brown); margin: 0 0 12px;
}
.course-why > div > p:nth-of-type(3) {
  font-family: var(--font-body); font-size: 14px; line-height: 1.65;
  color: #4B3B2C; margin: 0;
}

@media (max-width: 720px) {
  .course-hero { padding: 72px 24px 32px; }
  .course-hero > div > h1 { font-size: 38px; }
  .course-hero > div > p:nth-of-type(2) { font-size: 17px; }
  .course-body { padding: 48px 24px 72px; }
  .learn-overview .learn-lesson-title { font-size: 16px; }
}

/* ---------- HOME HERO CHART MOCKUP v2 (Session J part 3) ----------
   Uses data-attributes (preserved by WHTML) + pseudo-elements for stamp
   colors and feast stars. Inline styles get stripped/rewritten by WHTML;
   data-* survive intact. */


/* Calendar grid — data-mock="cal" */


/* Stamp = colored circle via pseudo-element (no inline styles) */


/* Feast day star via ::after */

/* Today marker outline */


/* Legend row — data-mock="legend" */


/* ---------- FEATURES SPOTLIGHT (/features, Charli-inspired layout, Corvia-branded) ----------
   Palette: cream/deep-brown/taupe. Type: Cormorant Garamond + Montserrat.
   Cards are anchors with data-target; JS toggles active + [hidden] on mockups.
   Added 2026-08-02. */
.features-spotlight {
  padding: 48px 32px 96px; background: var(--cream); position: relative;
}
.features-spotlight .features-spotlight-header {
  max-width: 900px; margin: 0 auto 48px; text-align: center;
}
.features-spotlight .features-spotlight-eyebrow {
  font-family: var(--font-body); font-size: 13px; letter-spacing: 0.16em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 20px;
}
.features-spotlight .features-spotlight-h2 {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 52px; line-height: 1.1; margin: 0 0 20px; letter-spacing: -0.01em;
}
.features-spotlight .features-spotlight-h2-mark {
  background-image: linear-gradient(180deg, transparent 60%, rgba(143, 157, 159, 0.35) 60%);
  padding: 0 4px; color: var(--deep-brown); font-style: italic;
}
.features-spotlight .features-spotlight-lede {
  font-family: var(--font-body); font-size: 17px; line-height: 1.55;
  color: #4B3B2C; max-width: 640px; margin: 0 auto;
}
.features-spotlight .features-spotlight-inner {
  max-width: 1200px; margin: 0 auto; display: grid;
  grid-template-columns: 2fr 3fr; gap: 72px; align-items: start;
}
.features-spotlight .features-spotlight-left {
  position: sticky; top: 96px;
}
.features-spotlight .features-spotlight-phone {
  position: relative; padding: 24px; background: #FFFFFF;
  border: 1px solid var(--ui-border); border-radius: 24px;
  box-shadow: 0 32px 80px -40px rgba(66, 48, 32, 0.28);
  min-height: 460px;
}
.features-spotlight .features-spotlight-mockup { display: block; }
.features-spotlight .features-spotlight-mockup[hidden] { display: none; }
.features-spotlight .features-spotlight-right {
  display: flex; flex-direction: column; gap: 16px;
}
.features-spotlight .features-spotlight-card {
  padding: 28px 32px; border: 1px solid var(--ui-border); border-radius: 18px;
  text-decoration: none; background: transparent; color: var(--deep-brown);
  cursor: pointer; display: block;
  transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
}
.features-spotlight .features-spotlight-card:hover {
  background: rgba(255, 255, 255, 0.5); border-color: #C4A67F;
}
.features-spotlight .features-spotlight-card-active,
.features-spotlight .features-spotlight-card.features-spotlight-card-active {
  background: #FFFFFF; border-left: 4px solid var(--deep-brown);
  box-shadow: 0 12px 32px -20px rgba(66, 48, 32, 0.35);
}
.features-spotlight .features-spotlight-card .features-spotlight-card-eyebrow {
  font-family: var(--font-body); font-size: 11px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 8px;
}
.features-spotlight .features-spotlight-card .features-spotlight-card-h {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 26px; line-height: 1.15; margin: 0 0 10px;
}
.features-spotlight .features-spotlight-card .features-spotlight-card-p {
  font-family: var(--font-body); font-size: 14px; line-height: 1.6;
  color: #4B3B2C; margin: 0;
}
.features-spotlight .features-spotlight-hub {
  max-width: 1200px; margin: 56px auto 0; text-align: center;
}
.features-spotlight .features-spotlight-hub > a {
  display: inline-block; padding: 14px 32px; border-radius: 999px;
  border: 1px solid var(--deep-brown); font-family: var(--font-body);
  font-size: 14px; font-weight: 500; color: var(--deep-brown);
  text-decoration: none; transition: background 0.15s;
}
.features-spotlight .features-spotlight-hub > a:hover {
  background: var(--deep-brown); color: var(--cream);
}

/* ---------- Mockup interior (Pray scripture-band, prayer-card, rosary-tile) ---------- */
.features-spotlight [data-mock="scripture-band"] {
  background: #A87F5F; color: var(--cream); border-radius: 16px;
  padding: 20px 24px; text-align: center; margin-bottom: 14px;
}
.features-spotlight [data-mock="band-eyebrow"] {
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: rgba(247, 241, 234, 0.75); margin: 0 0 8px;
}
.features-spotlight [data-mock="band-quote"] {
  margin: 0; font-family: var(--font-headers); font-style: italic;
  font-size: 17px; line-height: 1.4;
}
.features-spotlight [data-mock="band-attr"] {
  display: block; margin-top: 8px; font-family: var(--font-body); font-size: 11px;
  letter-spacing: 0.08em; color: rgba(247, 241, 234, 0.75);
}
.features-spotlight [data-mock="prayer-card"] {
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 16px;
  padding: 20px; margin-bottom: 14px;
}
.features-spotlight [data-mock="card-eyebrow"] {
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 8px;
}
.features-spotlight [data-mock="card-title"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 22px; margin: 0 0 8px;
}
.features-spotlight [data-mock="card-body"] {
  font-family: var(--font-body); font-size: 13px; line-height: 1.55;
  color: #4B3B2C; margin: 0 0 8px;
}
.features-spotlight [data-mock="card-italic"] {
  font-family: var(--font-headers); font-style: italic; font-size: 13px;
  color: #6B5947; margin: 0;
}
.features-spotlight [data-mock="rosary-tile"] {
  display: flex; align-items: center; justify-content: space-between;
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 14px;
  padding: 14px 18px;
}
.features-spotlight [data-mock="tile-title"] {
  font-family: var(--font-headers); font-weight: 500; font-size: 17px;
  color: var(--deep-brown); margin: 0;
}
.features-spotlight [data-mock="tile-sub"] {
  font-family: var(--font-body); font-size: 12px; color: #8B6354; margin: 4px 0 0;
}
.features-spotlight [data-mock="tile-chev"] {
  font-family: var(--font-headers); font-weight: 700; color: var(--deep-brown);
  font-size: 22px; opacity: 0.8;
}

/* ---------- Mockup interior (Saints: list-eyebrow, saint-card) ---------- */
.features-spotlight [data-mock="list-eyebrow"] {
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 12px;
}
.features-spotlight [data-mock="saint-card"] {
  position: relative; background: #FFFFFF; border: 1px solid var(--ui-border);
  border-radius: 16px; padding: 20px; margin-bottom: 14px;
}
.features-spotlight [data-mock="saint-star"] {
  position: absolute; top: 20px; right: 20px; color: #C08A3C; font-size: 18px;
}
.features-spotlight [data-mock="saint-name"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 20px; margin: 0 0 6px; padding-right: 32px;
}
.features-spotlight [data-mock="saint-feast"] {
  font-family: var(--font-body); font-size: 11px; letter-spacing: 0.06em;
  color: #8B6354; margin: 0 0 10px;
}
.features-spotlight [data-mock="saint-body"] {
  font-family: var(--font-body); font-size: 13px; line-height: 1.55;
  color: #4B3B2C; margin: 0 0 8px;
}
.features-spotlight [data-mock="saint-patron"] {
  font-family: var(--font-headers); font-style: italic; font-size: 13px;
  color: #6B5947; margin: 0;
}

/* ---------- Mockup interior (Feast Days: calendar grid, data-stamp+data-feast) ---------- */
.features-spotlight [data-mock="cal-wrap"] {
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 16px;
  padding: 20px;
}
.features-spotlight [data-mock="cal-header"] {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: 8px;
}
.features-spotlight [data-mock="cal-eyebrow"] {
  margin: 0; font-family: var(--font-body); font-size: 10px;
  letter-spacing: 0.14em; text-transform: uppercase; color: #8B6354;
}
.features-spotlight [data-mock="cal-cycle"] {
  margin: 0; font-family: var(--font-headers); font-size: 15px;
  color: var(--deep-brown); font-style: italic;
}
.features-spotlight [data-mock="cal-insight"] {
  margin: 0 0 16px; font-family: var(--font-headers); font-size: 22px;
  line-height: 1.25; color: var(--deep-brown);
}
.features-spotlight [data-mock="cal-grid"] {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px;
  margin-bottom: 14px;
}
.features-spotlight [data-mock="cal-grid"] > div {
  aspect-ratio: 1; border: 1px solid #EFE7DA; border-radius: 10px;
  background: #FBF7F1; position: relative;
  display: flex; align-items: center; justify-content: center;
}
.features-spotlight [data-mock="cal-grid"] > div[data-empty="1"] {
  border-color: transparent; background: transparent;
}
.features-spotlight [data-mock="cal-grid"] > div[data-stamp]::before {
  content: ""; width: 18px; height: 18px; border-radius: 50%; display: inline-block;
}
.features-spotlight [data-mock="cal-grid"] > div[data-stamp="green"]::before  { background: #5CAB5E; }
.features-spotlight [data-mock="cal-grid"] > div[data-stamp="yellow"]::before { background: #E8C547; }
.features-spotlight [data-mock="cal-grid"] > div[data-stamp="red"]::before    { background: #D94B3D; }
.features-spotlight [data-mock="cal-grid"] > div[data-stamp="white"]::before  { background: #FFFFFF; border: 1px solid #C0B29C; box-sizing: border-box; }
.features-spotlight [data-mock="cal-grid"] > div[data-feast="1"]::after {
  content: "\2605"; position: absolute; top: 3px; right: 5px;
  color: #C08A3C; font-size: 10px; line-height: 1;
}
.features-spotlight [data-mock="cal-grid"] > div[data-today="1"] {
  border: 2px solid var(--deep-brown); background: var(--cream);
}
.features-spotlight [data-mock="cal-grid"] > div[data-today="1"]::after {
  content: "TODAY"; position: absolute; bottom: 3px; left: 0; right: 0;
  color: var(--deep-brown); font-family: var(--font-body); font-size: 7px;
  letter-spacing: 0.08em; font-weight: 600; text-align: center; top: auto;
}
.features-spotlight [data-mock="cal-legend"] {
  display: flex; gap: 14px; flex-wrap: wrap; justify-content: center;
  font-family: var(--font-body); font-size: 10px; color: #6B5947;
}
.features-spotlight [data-mock="cal-legend"] > span {
  display: inline-flex; align-items: center; gap: 5px;
}
.features-spotlight [data-mock="cal-legend"] > span > i {
  display: inline-block; width: 9px; height: 9px; border-radius: 50%;
}
.features-spotlight [data-mock="cal-legend"] > span > i[data-legend="green"]  { background: #5CAB5E; }
.features-spotlight [data-mock="cal-legend"] > span > i[data-legend="yellow"] { background: #E8C547; }
.features-spotlight [data-mock="cal-legend"] > span > i[data-legend="red"]    { background: #D94B3D; }
.features-spotlight [data-mock="cal-legend"] > span > i[data-legend="white"]  { background: #FFFFFF; border: 1px solid #C0B29C; box-sizing: border-box; }
.features-spotlight [data-mock="cal-legend"] > span[data-legend-star="1"]::before {
  content: "\2605"; color: #C08A3C; margin-right: 3px;
}

@media (max-width: 960px) {
  .features-spotlight .features-spotlight-h2 { font-size: 40px; }
  .features-spotlight .features-spotlight-inner { grid-template-columns: 1fr; gap: 40px; }
  .features-spotlight .features-spotlight-left { position: static; }
}
@media (max-width: 560px) {
  .features-spotlight .features-spotlight-h2 { font-size: 32px; }
  .features-spotlight .features-spotlight-lede { font-size: 17px; }
  .features-spotlight .features-spotlight-card { padding: 20px 22px; }
  .features-spotlight .features-spotlight-card .features-spotlight-card-h { font-size: 22px; }
}

/* ---------- Spotlight mockups: Learn + Share (added 2026-08-02, home spotlight) ---------- */
.features-spotlight [data-mock="learn-progress"] {
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 14px;
  padding: 16px 20px; margin-bottom: 14px;
}
.features-spotlight [data-mock="learn-progress-row"] {
  display: flex; justify-content: space-between; margin-bottom: 10px;
  font-family: var(--font-body); font-size: 12px; font-weight: 600;
  color: var(--deep-brown);
}
.features-spotlight [data-mock="learn-bar"] {
  height: 6px; background: #EFE7DA; border-radius: 999px; overflow: hidden;
  margin-bottom: 14px;
}
.features-spotlight [data-mock="learn-bar"] > span {
  display: block; height: 100%; background: var(--deep-brown); width: 11%; border-radius: 999px;
}
.features-spotlight [data-mock="learn-continue"] {
  display: inline-block; background: var(--button-primary); color: #FFFFFF !important;
  padding: 8px 18px; border-radius: 10px; font-family: var(--font-body);
  font-size: 12px; font-weight: 500; text-decoration: none;
}
.features-spotlight [data-mock="learn-module-h"] {
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 18px 0 8px;
}
.features-spotlight [data-mock="learn-tile"] {
  display: flex; align-items: center; gap: 12px; padding: 12px 14px;
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 12px;
  margin-bottom: 8px;
}
.features-spotlight [data-mock="learn-num"] {
  width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--ui-border);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  font-family: var(--font-body); font-size: 11px; color: #8B6354; background: transparent;
}
.features-spotlight [data-mock="learn-tile"][data-done="1"] [data-mock="learn-num"] {
  background: #5CAB5E; color: #FFFFFF; border-color: #5CAB5E;
}
.features-spotlight [data-mock="learn-tile-h"] {
  font-family: var(--font-headers); font-size: 15px; color: var(--deep-brown);
  margin: 0;
}
.features-spotlight [data-mock="learn-tile-sub"] {
  font-family: var(--font-body); font-size: 10px; color: #8B6354; margin: 3px 0 0;
}

.features-spotlight [data-mock="share-eyebrow"] {
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 12px;
}
.features-spotlight [data-mock="share-instructor"] {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 14px;
  padding: 16px 20px; margin-bottom: 14px;
}
.features-spotlight [data-mock="share-h"] {
  font-family: var(--font-headers); font-size: 18px; color: var(--deep-brown);
  margin: 0;
}
.features-spotlight [data-mock="share-role"] {
  font-family: var(--font-body); font-size: 12px; color: #8B6354; margin: 4px 0 0;
}
.features-spotlight [data-mock="share-status"] {
  padding: 4px 10px; border-radius: 999px; background: #5CAB5E; color: #FFFFFF;
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.08em;
  text-transform: uppercase; font-weight: 600; flex-shrink: 0;
}
.features-spotlight [data-mock="share-permit"] {
  background: #FFFFFF; border: 1px solid var(--ui-border); border-radius: 14px;
  padding: 16px 20px;
}
.features-spotlight [data-mock="share-permit-h"] {
  font-family: var(--font-body); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #8B6354; margin: 0 0 12px;
}
.features-spotlight [data-mock="share-permit-row"] {
  display: flex; align-items: flex-start; gap: 10px; margin: 0 0 8px;
  font-family: var(--font-body); font-size: 13px; color: #4B3B2C; line-height: 1.5;
}
.features-spotlight [data-mock="check"] {
  color: #5CAB5E; font-weight: 700; width: 14px; text-align: center; flex-shrink: 0;
}
.features-spotlight [data-mock="ex"] {
  color: #C0B29C; font-weight: 700; width: 14px; text-align: center; flex-shrink: 0;
}
.features-spotlight [data-mock="share-permit-hint"] {
  font-family: var(--font-headers); font-style: italic; font-size: 12px;
  color: #6B5947; margin: 12px 0 0;
}

/* ---------- Phone frame around spotlight mockups (both spotlights) ----------
   Wraps the mockup in a rounded warm-taupe outer body with a subtle speaker
   pill at top. Inner mockup becomes the "screen" (white, rounded, inset).
   Added 2026-08-02. */
.features-spotlight .features-spotlight-phone {
  position: relative;
  padding: 40px 20px 20px;
  background: transparent;
  border: 1px solid #FFFFFF;
  border-radius: 46px;
  box-shadow: 0 32px 80px -40px rgba(0, 0, 0, 0.35);
  min-height: 520px;
}
.features-spotlight .features-spotlight-phone::before {
  content: "";
  position: absolute;
  top: 14px; left: 50%; transform: translateX(calc(-50% - 8px));
  width: 50px; height: 4px; border-radius: 2px;
  background: rgba(255, 255, 255, 0.85);
  z-index: 2;
}
.features-spotlight .features-spotlight-phone::after {
  content: "";
  position: absolute;
  top: 12px; left: calc(50% + 26px);
  width: 8px; height: 8px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.75);
  z-index: 2;
}
.features-spotlight .features-spotlight-mockup {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 0;
}

/* ---------- Home spotlight: blue-background variant (Session K part 3) ---------- */
.features-spotlight[data-bg="blue"] {
  background: #4E5F82;
}
.features-spotlight[data-bg="blue"] .features-spotlight-eyebrow {
  color: rgba(247, 241, 234, 0.78);
}
.features-spotlight[data-bg="blue"] .features-spotlight-h2 {
  color: var(--cream);
}
/* Kill the marked-word highlight on the blue variant (per Will's ask). */
.features-spotlight[data-bg="blue"] .features-spotlight-h2-mark {
  background-image: none;
  border-bottom: none;
  padding: 0;
  color: var(--cream);
  font-style: normal;
}
.features-spotlight[data-bg="blue"] .features-spotlight-lede {
  color: rgba(247, 241, 234, 0.85);
}

/* Cards on blue bg: inactive is a subtle cream tint (readable on blue),
   active is solid cream with deep-brown text. */
.features-spotlight[data-bg="blue"] .features-spotlight-card {
  background: rgba(247, 241, 234, 0.08);
  border-color: rgba(247, 241, 234, 0.18);
  color: var(--cream);
}
.features-spotlight[data-bg="blue"] .features-spotlight-card:hover {
  background: rgba(247, 241, 234, 0.16);
  border-color: rgba(247, 241, 234, 0.28);
}
.features-spotlight[data-bg="blue"] .features-spotlight-card .features-spotlight-card-eyebrow {
  color: rgba(247, 241, 234, 0.72);
}
.features-spotlight[data-bg="blue"] .features-spotlight-card .features-spotlight-card-h {
  color: var(--cream);
}
.features-spotlight[data-bg="blue"] .features-spotlight-card .features-spotlight-card-p {
  color: rgba(247, 241, 234, 0.82);
}
/* Active card on blue: solid cream/white background, deep-brown text back */
.features-spotlight[data-bg="blue"] .features-spotlight-card.features-spotlight-card-active,
.features-spotlight[data-bg="blue"] .features-spotlight-card-active {
  background: #FFFFFF;
  border-left: 4px solid var(--cream);
  border-top-color: transparent;
  border-right-color: transparent;
  border-bottom-color: transparent;
  color: var(--deep-brown);
  box-shadow: 0 12px 32px -20px rgba(0, 0, 0, 0.5);
}
.features-spotlight[data-bg="blue"] .features-spotlight-card-active .features-spotlight-card-eyebrow {
  color: #8B6354;
}
.features-spotlight[data-bg="blue"] .features-spotlight-card-active .features-spotlight-card-h {
  color: var(--deep-brown);
}
.features-spotlight[data-bg="blue"] .features-spotlight-card-active .features-spotlight-card-p {
  color: #4B3B2C;
}

/* Hub CTA on blue bg */
.features-spotlight[data-bg="blue"] .features-spotlight-hub > a {
  border-color: var(--cream);
  color: var(--cream);
}
.features-spotlight[data-bg="blue"] .features-spotlight-hub > a:hover {
  background: var(--cream);
  color: var(--deep-brown);
}

/* The saints list eyebrow renders directly on the section background, outside
   any white mockup card, so its cream-background brown is unreadable on blue.
   (Session L, 2026-08-21: home spotlight gained the Church's Year card.) */
.features-spotlight[data-bg="blue"] [data-mock="list-eyebrow"] {
  color: rgba(247, 241, 234, 0.72);
}

/* ---------- Screenshots inside phone frames (Session K.7, 2026-08-02) ---------- */
.features-spotlight .features-spotlight-mockup > img {
  display: block; width: 100%; height: auto; border-radius: 30px;
}


/* ---------- Home hero ----------
   Was forced text-only on 2026-08-02 (K.9.2) after the old hero-product art was
   pulled. Restored to two columns on 2026-08-23 to carry the chapel photograph,
   which uses the same arch mask as the journey pages (ARCH_RADIUS from the app's
   ArchCard.tsx). The !important flags survive because the Webflow Style Manager
   still ships its own grid declaration for .hero-new-inner. */
.hero-new .hero-new-inner {
  display: grid !important;
  grid-template-columns: 1.02fr 0.98fr !important;
  gap: 60px;
  align-items: center;
  max-width: 1160px;
  margin: 0 auto;
  padding: 0 20px;
  text-align: left;
}
.hero-new .hero-new-inner > div {
  display: block;
  width: 100%;
  max-width: 720px;
  margin: 0;
  text-align: left;
}
/* The 720px cap above is for the copy column; the figure sizes to its grid track. */
.hero-new .hero-new-inner > [data-home="hero-figure"] {
  max-width: none;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
  background: #EFE6DC url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9e153d5e62ef78c9966d15_corvia-hero.webp") center / cover no-repeat;
  box-shadow: 0 30px 70px -40px rgba(66, 48, 32, 0.55);
}
.hero-new .hero-new-inner > div > p,
.hero-new .hero-new-inner > div > h1 {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
}
.hero-new .hero-new-inner .hero-ctas-1-2 {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 12px;
  /* "Free for 30 days." is the last line of .hero-subhead-new, which carries
     margin: 0 !important, so the button row had a literal 0px gap above it and
     only line-height leading kept them apart (2026-08-23). */
  margin-top: 28px;
}

/* ---------- Home page grids: stack on small screens (2026-08-23) ----------
   .mode-fork-cards-3-1, .how-steps and .promise-grid-1 were all declared
   `grid-template-columns: 1fr 1fr 1fr` in the Webflow stylesheet with no
   media query anywhere, so at 390px their three columns totalled 487px inside
   a 262px container and the home page scrolled sideways (scrollWidth 602).

   Fixed with auto-fit rather than three hand-picked breakpoints: each grid
   drops 3 -> 2 -> 1 at whatever width its own cards actually stop fitting,
   which is different for each of them, and it keeps working if a card is ever
   added. min(100%, Npx) is what stops the track from exceeding the container
   on very narrow screens; minmax(Npx, 1fr) alone would still overflow.
   Two class names, so these outrank the single-class Webflow rules without
   needing !important. */
.mode-fork-1-2 .mode-fork-cards-3-1 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
.how-it-works .how-steps {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
}
.privacy-promise .promise-grid-1 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
}

/* ---------- Home fork: section-level link to /why-corvia (2026-08-23) ----------
   The three cards each link into one starting point. This is the fourth door,
   for a reader who does not want to choose yet. Cream-on-brown, matching
   [data-course-cta="btn"], which is this codebase's button for dark bands. */
[data-fork-cta="wrap"] { margin-top: 40px; text-align: center; }
[data-fork-cta="btn"] {
  display: inline-block;
  background: var(--cream);
  color: var(--deep-brown);
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 600;
  text-decoration: none;
  padding: 16px 32px;
  border-radius: 12px;
  transition: background 0.15s;
}
[data-fork-cta="btn"]:hover { background: #FFFFFF; }
@media (max-width: 900px) {
  [data-fork-cta="wrap"] { margin-top: 32px; }
}

/* ---------- Mode fork: brown section, uniform cream cards (K.10, 2026-08-02) ---------- */
.mode-fork-1-2 {
  background: var(--deep-brown) !important;
  color: var(--cream);
}
.mode-fork-1-2 .section-eyebrow {
  color: rgba(247, 241, 234, 0.72) !important;
}
.mode-fork-1-2 h2,
.mode-fork-1-2 h2[class*="section-h2-"] {
  color: var(--cream) !important;
}

/* ---------- Home privacy-promise: strip boxes, add icons above headings (K.17, 2026-08-03) ---------- */
.privacy-promise .promise-grid-1 {
  gap: 40px 32px !important;
}
.privacy-promise .promise-item {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  box-shadow: none !important;
}
.privacy-promise .promise-item [data-privacy-icon] {
  width: 64px;
  height: 64px;
  margin: 0 auto 28px;
  border-radius: 50%;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 30px 30px;
}
.privacy-promise .promise-item [data-privacy-icon="shield"] {
  background-color: #C8A084;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F7F1EA' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='6' width='18' height='12' rx='1'/><path d='m3 7 9 6 9-6'/></svg>");
}
.privacy-promise .promise-item [data-privacy-icon="lock"] {
  background-color: #94A5A9;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F7F1EA' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='8'/><path d='M12 8v8'/><path d='M8 12h8'/></svg>");
}
.privacy-promise .promise-item [data-privacy-icon="trash"] {
  background-color: #9DAE9A;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F7F1EA' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'><path d='M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z'/><polyline points='14 3 14 9 20 9'/></svg>");
}
.privacy-promise .promise-item .promise-h3-1-2 {
  font-family: var(--font-headers) !important;
  color: var(--deep-brown) !important;
  font-size: 22px !important;
  line-height: 1.3 !important;
  font-weight: 500 !important;
  margin: 0 0 12px !important;
}
.privacy-promise .promise-item .promise-body {
  font-family: var(--font-body) !important;
  color: rgba(66, 48, 32, 0.82) !important;
  font-size: 15px !important;
  line-height: 1.6 !important;
  margin: 0 !important;
}
.privacy-promise [data-privacy-h2="1"] {
  font-family: var(--font-headers);
  font-weight: 500;
  color: var(--deep-brown);
  font-size: 52px;
  line-height: 1.1;
  letter-spacing: -0.01em;
  max-width: 820px;
  margin: 8px auto 48px;
  text-align: center;
}
@media (max-width: 720px) {
  .privacy-promise [data-privacy-h2="1"] { font-size: 36px; }
}
.mode-fork-1-2 .mode-card-1-2 {
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(255, 255, 255, 0.85) !important;
  color: var(--cream) !important;
  backdrop-filter: blur(2px);
}
.mode-fork-1-2 .mode-card-1-2 .mode-card-eyebrow,
.mode-fork-1-2 .mode-card-1-2 .card-h3-1-2,
.mode-fork-1-2 .mode-card-1-2 .card-body-1-2,
.mode-fork-1-2 .mode-card-1-2 .card-link-1-2 {
  color: var(--cream) !important;
}
.mode-fork-1-2 .mode-card-1-2 .mode-card-eyebrow {
  color: rgba(247, 241, 234, 0.72) !important;
}
.mode-fork-1-2 .mode-card-1-2 .card-body-1-2 {
  color: rgba(247, 241, 234, 0.86) !important;
}

/* ---------- Testimonials: staggered warm-tone horizontal scroll (K.21, 2026-08-03) ---------- */
.reviews-section {
  padding: 96px 0 !important;
  background: var(--cream) !important;
  overflow: hidden;
}
.reviews-section .section-inner {
  padding: 0 24px !important;
  max-width: var(--col-wide) !important;
  margin: 0 auto !important;
}
.reviews-section .section-eyebrow,
.reviews-section h2[class*="section-h2-"] {
  text-align: center;
  max-width: var(--col-wide);
  margin-left: auto !important;
  margin-right: auto !important;
}
.reviews-section .review-grid {
  display: flex !important;
  gap: 32px !important;
  grid-template-columns: none !important;
  grid-template-rows: none !important;
  max-width: none !important;
  padding: 56px 60px 100px !important;
  margin: 0 !important;
  overflow-x: auto;
  overflow-y: visible;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.reviews-section .review-grid::-webkit-scrollbar { display: none; }
.reviews-section .review-card {
  position: relative;
  flex: 0 0 auto;
  width: 340px;
  padding: 52px 36px 40px !important;
  border-radius: 8px !important;
  scroll-snap-align: center;
  transition: none !important;
  border: none !important;
  box-shadow: 0 24px 44px -32px rgba(66, 48, 32, 0.4);
  display: block !important;
}
.reviews-section .review-card:hover {
  transform: translateY(var(--stagger-y, 0));
  box-shadow: 0 24px 44px -32px rgba(66, 48, 32, 0.4);
}
.reviews-section .review-card:nth-child(odd) {
  --stagger-y: 60px;
  transform: translateY(60px);
}
.reviews-section .review-card:nth-child(even) {
  --stagger-y: 0px;
  transform: translateY(0);
}
.reviews-section .review-card:nth-child(3n+1) {
  background: #A8795B !important;
  color: var(--cream) !important;
}
.reviews-section .review-card:nth-child(3n+2) {
  background: #A6806E !important;
  color: var(--cream) !important;
}
.reviews-section .review-card:nth-child(3n+3) {
  background: #C5A993 !important;
  color: var(--deep-brown) !important;
}
.reviews-section .review-card::before {
  content: "\201C";
  position: absolute;
  top: 4px;
  right: 24px;
  font-family: var(--font-headers);
  font-weight: 500;
  font-size: 96px;
  line-height: 1;
  color: rgba(247, 241, 234, 0.55);
  font-style: normal;
  pointer-events: none;
}
.reviews-section .review-card:nth-child(3n+3)::before {
  color: rgba(66, 48, 32, 0.3);
}
.reviews-section .review-card .review-quote {
  font-family: var(--font-headers) !important;
  font-style: italic !important;
  font-weight: 500 !important;
  font-size: 18px !important;
  line-height: 1.5 !important;
  color: inherit !important;
  margin: 0 !important;
  text-align: left !important;
  max-width: none !important;
  position: relative;
  z-index: 1;
}
@media (max-width: 720px) {
  .reviews-section .review-grid {
    padding: 40px 24px 80px !important;
    gap: 20px !important;
  }
  .reviews-section .review-card {
    width: 280px;
    padding: 40px 28px 32px !important;
  }
  .reviews-section .review-card:nth-child(odd) {
    --stagger-y: 30px;
    transform: translateY(30px);
  }
  .reviews-section .review-card::before {
    font-size: 72px;
  }
}

/* Reviews section: relative container so arrow buttons + dots can absolutely position */
.reviews-section {
  position: relative;
}
/* Arrow buttons */
.reviews-section [data-scroll-btn] {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--cream);
  border: 1px solid rgba(66, 48, 32, 0.15);
  color: var(--deep-brown);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 5;
  box-shadow: 0 8px 20px -12px rgba(66, 48, 32, 0.35);
  transition: opacity 0.2s ease, transform 0.2s ease;
  padding: 0;
}
.reviews-section [data-scroll-btn] svg {
  width: 20px;
  height: 20px;
}
.reviews-section [data-scroll-btn="prev"] { left: 20px; }
.reviews-section [data-scroll-btn="next"] { right: 20px; }
.reviews-section [data-scroll-btn]:hover {
  transform: translateY(-50%) scale(1.05);
}
.reviews-section [data-scroll-btn][data-disabled="1"] {
  opacity: 0.3;
  pointer-events: none;
}
/* Pagination dots */
.reviews-section [data-scroll-dots] {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 12px;
}
.reviews-section [data-scroll-dot] {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(66, 48, 32, 0.22);
  border: none;
  padding: 0;
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
}
.reviews-section [data-scroll-dot][data-active="1"] {
  background: var(--deep-brown);
  transform: scale(1.2);
}
@media (max-width: 720px) {
  .reviews-section [data-scroll-btn] { display: none; }
}

/* ---------- From the journal section (K.26, refactored) ----------
   All selectors chain .blog-featured with a second class/attribute so specificity
   naturally beats the Webflow-registered .blog-grid / .section-eyebrow classes
   without leaning on !important. */
.blog-featured .section-inner > .section-eyebrow {
  margin-bottom: 12px;
}
.blog-featured .section-inner > h2[class*="section-h2-"] {
  margin: 0 0 16px;
  text-align: center;
}
.blog-featured .section-inner > [data-journal-lede="1"] {
  font-family: var(--font-body);
  color: rgba(66, 48, 32, 0.78);
  font-size: 17px;
  line-height: 1.55;
  max-width: 640px;
  margin: 0 auto 56px;
  text-align: center;
}
/* [data-journal-listing] overrides the .blog-grid CSS grid so the inner
   .journal-grid can lay its cards out edge-to-edge. */
.blog-featured .section-inner > [data-journal-listing] {
  display: block;
  grid-template-columns: none;
  margin: 0 auto 56px;
  padding: 0;
  max-width: none;
  width: 100%;
}
.blog-featured .section-inner > [data-journal-listing] .journal-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}
.blog-featured .section-inner > .blog-cta-row {
  margin-top: 0;
  text-align: center;
}
@media (max-width: 900px) {
  .blog-featured .section-inner > [data-journal-listing] .journal-grid {
    grid-template-columns: 1fr;
  }
}

/* ---------- Home ledes: Montserrat body copy under headers (K.26) ---------- */
.mode-fork-1-2 .section-inner > [data-mode-fork-lede="1"] {
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.55;
  color: rgba(247, 241, 234, 0.82);
  max-width: 640px;
  margin: 0 auto 40px;
  text-align: center;
}

/* ---------- Home FAQ (K.29): blue section, plus/minus drawer cards on left ----------
   All selectors chain the outer .corvia-page-1-2 wrapper so specificity (20+) beats
   Webflow's registered .faq-1-2-3-4 / .faq-item-* / .faq-list classes (10). */
.corvia-page-1-2 section.faq-1-2-3-4 {
  background: #4E5F82;
  padding: 96px 24px;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner {
  max-width: 820px;
  margin: 0 auto;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner > .section-eyebrow {
  color: rgba(247, 241, 234, 0.72);
  text-align: center;
  margin: 0 0 12px;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner > h2[class*="section-h2-"] {
  color: var(--cream);
  text-align: center;
  margin: 0 0 48px;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner > .faq-list {
  display: block;
  width: 100%;
  max-width: none;
  padding: 0;
  margin: 0 auto 48px;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"] {
  display: block;
  width: 100%;
  max-width: none;
  background: rgba(247, 241, 234, 0.08);
  border: 1px solid rgba(247, 241, 234, 0.22);
  border-radius: 6px;
  padding: 0;
  margin: 0 0 14px;
  overflow: hidden;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"]:last-child {
  margin-bottom: 0;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"]:hover {
  background: rgba(247, 241, 234, 0.16);
  border-color: rgba(247, 241, 234, 0.32);
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"][data-open="1"] {
  background: #FFFFFF;
  border-color: #FFFFFF;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"] > [class*="faq-q-"] {
  font-family: var(--font-headers);
  font-weight: 500;
  color: var(--cream);
  font-size: 20px;
  line-height: 1.3;
  margin: 0;
  padding: 22px 28px 22px 60px;
  cursor: pointer;
  user-select: none;
  position: relative;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"][data-open="1"] > [class*="faq-q-"] {
  color: var(--deep-brown);
}
/* Plus/minus indicator on the LEFT — horizontal bar always; vertical bar hides when open. */
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"] > [class*="faq-q-"]::before {
  content: "";
  position: absolute;
  left: 24px;
  top: 50%;
  width: 14px;
  height: 1.5px;
  background: currentColor;
  transform: translateY(-50%);
  transition: opacity 0.2s ease;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"] > [class*="faq-q-"]::after {
  content: "";
  position: absolute;
  left: 24px;
  top: 50%;
  width: 14px;
  height: 1.5px;
  background: currentColor;
  transform: translateY(-50%) rotate(90deg);
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"][data-open="1"] > [class*="faq-q-"]::after {
  transform: translateY(-50%) rotate(0deg);
  opacity: 0;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"] > .faq-a {
  font-family: var(--font-body);
  color: rgba(247, 241, 234, 0.86);
  font-size: 15px;
  line-height: 1.65;
  margin: 0;
  padding: 0 28px 22px 60px;
  display: none;
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"][data-open="1"] > .faq-a {
  display: block;
  color: rgba(66, 48, 32, 0.82);
}
.corvia-page-1-2 .faq-1-2-3-4 .section-inner .faq-list > [class*="faq-item-"][data-open="1"] .inline-link-1 {
  color: var(--deep-brown);
  text-decoration: underline;
}
/* See all questions CTA */
.corvia-page-1-2 .faq-1-2-3-4 [data-faq-cta="1"] {
  text-align: center;
}
.corvia-page-1-2 .faq-1-2-3-4 [data-faq-btn="1"] {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 500;
  color: var(--cream);
  background: transparent;
  padding: 14px 32px;
  border-radius: 999px;
  text-decoration: none;
  border: 1px solid var(--cream);
  transition: background 0.15s ease, color 0.15s ease;
}
.corvia-page-1-2 .faq-1-2-3-4 [data-faq-btn="1"]:hover {
  background: var(--cream);
  color: var(--deep-brown);
}

/* Mary anchor above the reviews eyebrow (K.23) */
.reviews-section .brand-mary-anchor {
  display: block;
  width: 96px;
  height: auto;
  margin: 0 auto 24px;
  opacity: 0.9;
}
.privacy-promise .brand-mary-anchor { display: none !important; }
@media (max-width: 720px) {
  .reviews-section .brand-mary-anchor { width: 72px; margin-bottom: 20px; }
}

/* ---------- Pricing: match top-of-home visual system (K.13, 2026-08-02) ---------- */
.hero-1 {
  padding: 96px 24px 72px !important;
  background: var(--button-primary) !important;
}
.hero-1 .hero-inner {
  max-width: 820px;
  margin: 0 auto;
  text-align: left;
}
.hero-1 .hero-h1-1-2 {
  font-family: var(--font-headers) !important;
  font-weight: 500 !important;
  color: var(--cream) !important;
  /* The Webflow class pins the paint color via -webkit-text-fill-color, which
     beats `color` at paint time no matter the cascade. Diagnosed 2026-09-04
     after `* { color !important }` visibly failed on this one element. If a
     Designer-styled heading ignores a color override, suspect this first. */
  -webkit-text-fill-color: var(--cream) !important;
  font-size: var(--type-h1) !important;
  line-height: 1.08 !important;
  letter-spacing: -0.01em !important;
  margin: 0 0 20px !important;
}
.hero-1 .hero-subhead-1 {
  font-family: var(--font-headers) !important;
  color: rgba(247, 241, 234, 0.92) !important;
  font-size: 22px !important;
  line-height: 1.5 !important;
  margin: 0 !important;
}
/* ---------- /about rework (2026-09-05) ----------
   Story-led page: hero -> "Why we built it." (5 paragraphs, the last two are
   API-inserted [data-ab="p"] mirroring .founder-para) -> pull quote ->
   founders band (from Will's "Built from lived experience" mock: deep-brown
   panel, arch-masked couple photo, names + quotes, tan rosary in the gutter)
   -> beliefs. The photo is the PLACEHOLDER shot until the new one lands;
   swap = replace the background-image URL on [data-ab="f-photo"]. */
/* Method H2 sits centered over left-aligned copy by default, which reads as a
   left indent; Will wants it flush with the paragraphs (2026-09-05). */
.method-section h2 { text-align: left !important; }
/* The method CTA is internal navigation, not the conversion action, so it does
   NOT wear the Start-free blue (Will's call). Brown outline secondary. */
.method-section [data-ab="btn"] {
  margin-top: 24px;
  background: transparent;
  color: var(--deep-brown);
  border: 1.5px solid rgba(66, 48, 32, 0.45);
  padding: 14.5px 30.5px;
}
/* Billings founders photograph (Will, 2026-09-05): left of the method copy,
   arch-masked per ARCH_RADIUS (copied from ArchCard.tsx, do not re-derive),
   CC BY-SA 4.0 credit required in the figcaption. Photo is a div background
   per build rule 2. */
.method-section .method-body {
  display: grid;
  grid-template-columns: 340px 1fr;
  gap: 0 56px;
  align-items: start;
}
.method-section .method-body > * { grid-column: 2; }
.method-section .method-body > [data-ab="m-photo-wrap"] {
  grid-column: 1;
  grid-row: 1 / span 6;
  margin: 0;
}
[data-ab="m-photo"] {
  width: 100%;
  height: 300px;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9c735ae94cd7aca52174ba_billings-founders-bw.webp") center / cover no-repeat;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
}
[data-ab="m-credit"] {
  margin: 10px 4px 0;
  font-family: var(--font-body);
  font-size: 12px;
  line-height: 1.5;
  color: rgba(66, 48, 32, 0.55);
}
@media (max-width: 900px) {
  .method-section .method-body { display: block; }
  .method-section .method-body > [data-ab="m-photo-wrap"] { margin: 0 0 24px; max-width: 420px; }
}

.method-section [data-ab="btn"]:hover {
  background: var(--deep-brown);
  color: var(--cream);
}
[data-ab="p"] {
  font-family: var(--font-headers);
  color: rgba(66, 48, 32, 0.86);
  font-size: 20px;
  line-height: 1.55;
  margin: 0 0 20px;
}
/* Next-generation passage, highlighted at Will's request (2026-09-05).
   v3 (Will: "decorative brackets"): manuscript corner brackets, top-left
   and bottom-right, in the eyebrow brown. Pure CSS pseudo-elements, no
   asset. v1 arch-support panel and v2 left rule both rejected same day. */
[data-ab="highlight"] {
  position: relative;
  margin: 48px 0;
  padding: 40px 48px;
  /* v5 (Will's reference mocks): thin frame with oversized rounded corners on
     one diagonal, oversized Cormorant quote marks anchoring the other. The
     marks carry a white knockout so the frame line passes beneath them, the
     same trick as the arch-cross ground. Crossed-corner v4 rejected. */
  border: 1.5px solid rgba(66, 48, 32, 0.30);
  border-radius: 6px 64px 6px 64px;
}
[data-ab="highlight"]::before,
[data-ab="highlight"]::after {
  position: absolute;
  font-family: var(--font-headers);
  font-weight: 600;
  font-size: 96px;
  line-height: 0.6;
  color: #C9A88C;
  background: #fff;
  padding: 0 12px;
  pointer-events: none;
}
[data-ab="highlight"]::before { content: '\201C'; top: -18px; left: 22px; }
[data-ab="highlight"]::after { content: '\201D'; bottom: -38px; right: 22px; }
@media (max-width: 900px) {
  [data-ab="highlight"] { padding: 32px 24px; border-radius: 6px 40px 6px 40px; }
  [data-ab="highlight"]::before, [data-ab="highlight"]::after { font-size: 64px; }
  [data-ab="highlight"]::before { top: -12px; left: 14px; }
  [data-ab="highlight"]::after { bottom: -26px; right: 14px; }
}
[data-ab="highlight"] p {
  font-family: var(--font-headers);
  font-style: italic;
  color: rgba(66, 48, 32, 0.95);
  font-size: 22px;
  line-height: 1.5;
  margin: 0 0 16px;
}
[data-ab="highlight"] p:last-child { margin-bottom: 0; }
[data-ab="founders"] {
  background: var(--deep-brown);
  padding: 96px 24px;
  position: relative;
  overflow: hidden;
}
/* Vertical sprig low-right on the founders band (Will, 2026-09-05: a
   DIFFERENT branch, the horizontal one already decorates this page's hero).
   Asset corvia-branch-v-alpha.webp, keyed from assets/corvia_brand-two.png
   via the line-art pipeline, first use anywhere. Dark-ground treatment per
   the opacity table: invert(1) at 0.15. Desktop only; f-inner is pinned to
   z-index 1 so the sprig stays behind the copy. */
@media (min-width: 901px) {
  [data-ab="founders"]::before {
    content: ''; position: absolute; right: -20px; bottom: -70px;
    width: 260px; height: 520px; opacity: 0.15; pointer-events: none; z-index: 0;
    filter: invert(1);
    background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9c77d30b94f55d303b3e1d_corvia-branch-v-alpha.webp") center / 100% auto no-repeat;
  }
}
[data-ab="founders"] [data-ab="f-inner"] { position: relative; z-index: 1; }
/* ---- placement: /about founders band (dark ground) ----
   Will swapped the rosary for the arch-cross 2026-09-05. Ink lightened for the
   deep-brown ground; the apex cross knock-out patch inherits --arch-ground. */
[data-ab="founders"] > [data-brand="arch-frame"] {
  --arch-ground: var(--deep-brown);
  --arch-ink: rgba(247, 241, 234, 0.22);
  --arch-width: min(1180px, 96%);
  --arch-height: 900px;
  --arch-top: 24px;
  --arch-curve: 240px;
}
[data-ab="f-inner"] {
  max-width: 1000px; margin: 0 auto;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
  gap: 64px; align-items: center;
  position: relative; z-index: 1;
}
[data-ab="f-photo"] {
  aspect-ratio: 4 / 5; max-width: 380px; width: 100%; margin: 0 auto;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9e0f532cd62253c3e52bb0_wj-headshot.webp") center top / cover no-repeat;
  box-shadow: 0 30px 70px -40px rgba(0, 0, 0, 0.65);
}
[data-ab="f-eyebrow"] {
  font-family: var(--font-body); font-size: 12px; font-weight: 600;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(247, 241, 234, 0.7); margin: 0 0 28px;
}
[data-ab="f-person"] + [data-ab="f-person"] { margin-top: 40px; }
[data-ab="f-name"] {
  font-family: var(--font-headers); font-size: 30px; font-weight: 500;
  color: var(--cream); margin: 0 0 4px;
}
[data-ab="f-role"] {
  font-family: var(--font-body); font-size: 12px; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: #C9A88C; margin: 0 0 14px;
}
[data-ab="f-quote"] {
  font-family: var(--font-headers); font-style: italic;
  font-size: 21px; line-height: 1.5;
  color: rgba(247, 241, 234, 0.92); margin: 0;
}
@media (max-width: 900px) {
  [data-ab="founders"] { padding: 64px 20px; }
  [data-ab="f-inner"] { gap: 40px; }
  [data-ab="f-photo"] { max-width: 320px; }
}

/* ---------- /pricing plan cards (2026-09-04) ----------
   Replaced the ✓✓ comparison table: every row was identical in both columns,
   so it was a features list dressed as a spreadsheet. The old table + lede are
   HIDDEN (visibility), not deleted; revert = set them visible again and remove
   [data-pc] elements. Cards carry trial mechanics, the shared checklist
   carries features, the trust strip carries the true confidence facts. */
[data-pc="cards"] {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  gap: 24px; max-width: 720px; margin: 0 auto;
}
[data-pc="card"] {
  background: #fff; border: 1px solid rgba(66, 48, 32, 0.12);
  border-radius: 18px; padding: 36px 32px 30px; text-align: center;
}
[data-pc="card"][data-pc-featured] { background: var(--arch-support); border-color: rgba(66, 48, 32, 0.18); }
[data-pc="chip"] {
  display: inline-block; background: var(--deep-brown); color: var(--cream);
  font-family: var(--font-body); font-size: 11px; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase;
  padding: 6px 14px; border-radius: 999px; margin: 0 0 16px;
}
[data-pc="chip"][data-pc-ghost] { background: transparent; color: #8B6354; border: 1px solid rgba(66, 48, 32, 0.2); }
[data-pc="plan"] { font-family: var(--font-headers); font-size: 24px; font-weight: 500; color: var(--deep-brown); margin: 0 0 2px; }
[data-pc="price"] { font-family: var(--font-headers); font-size: 46px; font-weight: 500; color: var(--deep-brown); margin: 0; line-height: 1.1; font-variant-numeric: lining-nums; }
[data-pc="per"] { font-size: 18px; color: rgba(66, 48, 32, 0.55); }
[data-pc="equiv"] { font-family: var(--font-body); font-size: 13px; color: #8B6354; margin: 6px 0 22px; }
[data-pc="list"] {
  list-style: none; max-width: 620px; margin: 44px auto 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr));
  gap: 12px 40px;
}
[data-pc="list"] li {
  font-family: var(--font-body); font-size: 15px; line-height: 1.5;
  color: var(--deep-brown); position: relative; padding-left: 28px; text-align: left;
}
[data-pc="list"] li::before { content: '\2713'; position: absolute; left: 0; top: 0; color: #6E8060; font-weight: 600; }
[data-pc="trust"] {
  font-family: var(--font-body); font-size: 13px; letter-spacing: 0.02em;
  color: rgba(66, 48, 32, 0.6); text-align: center; margin: 40px 0 0;
}

/* Static-header additions on /pricing (2026-09-04). The eyebrow, CTA and micro
   are API-inserted elements styled off data-pr attributes, so the Webflow
   Style Manager cannot strip them. The btn and micro rules live merged with
   the journey heroes' (data-um / data-bw) so the primary action cannot drift. */
.hero-1 [data-pr="eyebrow"] {
  font-family: var(--font-body);
  font-size: 13px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(247, 241, 234, 0.9);
  margin: 0 0 20px;
}
/* On the dusty-blue band the shared blue button disappears, so /pricing runs
   the OUTLINE treatment Will picked 2026-09-04: transparent fill, cream border
   and label, cream fill + brown label on hover. Padding drops 1.5px each side
   so the bordered button keeps the merged rule's footprint. Scoped tighter
   than the merged journey-hero rule so only this band changes. */
.hero-1 [data-pr="btn"] {
  background: transparent; color: var(--cream);
  border: 1.5px solid var(--cream); padding: 14.5px 30.5px;
}
.hero-1 [data-pr="btn"]:hover { background: var(--cream); color: var(--deep-brown); }
.hero-1 [data-pr="micro"] { color: rgba(247, 241, 234, 0.8); }
.pricing-matrix-section {
  padding: 96px 24px !important;
  background: var(--cream) !important;
}
.pricing-matrix-section .matrix-inner {
  max-width: var(--col-wide);
  margin: 0 auto;
}
.pricing-matrix-section .matrix-h2 {
  font-family: var(--font-headers) !important;
  font-weight: 500 !important;
  color: var(--deep-brown) !important;
  font-size: var(--type-h2) !important;
  line-height: 1.1 !important;
  letter-spacing: -0.01em !important;
  text-align: center !important;
  margin: 0 0 16px !important;
}
.pricing-matrix-section .matrix-lede {
  font-family: var(--font-headers) !important;
  color: rgba(66, 48, 32, 0.78) !important;
  font-size: 20px !important;
  line-height: 1.5 !important;
  text-align: center !important;
  max-width: 640px;
  margin: 0 auto 48px !important;
}
.pricing-matrix-section .matrix-beta-note {
  max-width: 720px;
  margin: 40px auto 0 !important;
  padding: 20px 24px !important;
  background: rgba(66, 48, 32, 0.05);
  border: 1px solid rgba(66, 48, 32, 0.12);
  border-radius: 4px;
  font-family: var(--font-body) !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: var(--deep-brown) !important;
  text-align: center;
}
.pricing-matrix-section .matrix-beta-note strong {
  color: var(--deep-brown) !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em;
}
.faq-section {
  padding: 96px 24px !important;
  background: var(--taupe, #DBCABB) !important;
}
.faq-section .section-h2-1 {
  font-family: var(--font-headers) !important;
  font-weight: 500 !important;
  color: var(--deep-brown) !important;
  font-size: var(--type-h2) !important;
  line-height: 1.1 !important;
  letter-spacing: -0.01em !important;
  text-align: center !important;
  max-width: var(--col-wide);
  margin: 0 auto 48px !important;
}
.faq-section .faq-item-1 {
  max-width: 820px;
  margin: 0 auto 16px !important;
  padding: 24px 28px !important;
  background: var(--cream) !important;
  border: 1px solid rgba(66, 48, 32, 0.10) !important;
  border-radius: 4px !important;
}
.faq-section .faq-item-1 .faq-q {
  font-family: var(--font-headers) !important;
  font-weight: 500 !important;
  color: var(--deep-brown) !important;
  font-size: 22px !important;
  line-height: 1.3 !important;
  margin: 0 0 10px !important;
}
.faq-section .faq-item-1 .faq-a {
  font-family: var(--font-body) !important;
  color: rgba(66, 48, 32, 0.82) !important;
  font-size: 15px !important;
  line-height: 1.65 !important;
  margin: 0 !important;
}
.final-invitation-1 {
  padding: 96px 24px !important;
  background: var(--deep-brown) !important;
  color: var(--cream) !important;
  text-align: center !important;
}
.final-invitation-1 .section-inner {
  max-width: 720px;
  margin: 0 auto;
}
.final-invitation-1 .final-h2-1 {
  font-family: var(--font-headers) !important;
  font-weight: 500 !important;
  color: var(--cream) !important;
  font-size: var(--type-h2) !important;
  line-height: 1.1 !important;
  letter-spacing: -0.01em !important;
  margin: 0 0 32px !important;
}
@media (max-width: 720px) {
  .pricing-matrix-section .matrix-h2,
  .faq-section .section-h2-1,
}

/* ---------- Universal section H2 + final CTA H2 normalization (K.14, cleaned K.29.2)
   Defaults for cross-page section headers; page-specific overrides win by specificity. */
h2[class*="section-h2-"] {
  font-family: var(--font-headers);
  font-weight: 500;
  color: var(--deep-brown);
  font-size: var(--type-h2);
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0 0 24px;
}
h2[class*="final-h2-"] {
  font-family: var(--font-headers);
  font-weight: 500;
  color: var(--cream);
  font-size: var(--type-h2);
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0 0 24px;
}
section[class^="final-invitation-"], section[class*=" final-invitation-"] {
  background: var(--deep-brown);
  color: var(--cream);
  padding: 96px 24px;
  text-align: center;
}
section[class^="final-invitation-"] .section-inner,
section[class*=" final-invitation-"] .section-inner {
  max-width: 720px;
  margin: 0 auto;
}
section[class^="final-invitation-"] p[class*="final-invitation-body-"],
section[class*=" final-invitation-"] p[class*="final-invitation-body-"] {
  font-family: var(--font-body);
  font-style: normal;
  font-size: 17px;
  line-height: 1.55;
  color: rgba(247, 241, 234, 0.86);
  max-width: 560px;
  margin: 0 auto 32px;
}
@media (max-width: 720px) {
  h2[class*="section-h2-"],
}

/* ---------- /about page (K.14, 2026-08-02) ---------- */
.about-hero {
  padding: 96px 24px 72px !important;
  background: var(--cream) !important;
}
.about-hero .about-hero-inner {
  max-width: 820px;
  margin: 0 auto;
  text-align: left;
}
.about-hero .hero-eyebrow-1 {
  font-family: var(--font-body) !important;
  font-size: 13px !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: #8B6354 !important;
  margin: 0 0 20px !important;
}
.about-hero .about-h1 {
  font-family: var(--font-headers) !important;
  font-weight: 500 !important;
  color: var(--deep-brown) !important;
  font-size: var(--type-h1) !important;
  line-height: 1.08 !important;
  letter-spacing: -0.01em !important;
  margin: 0 0 20px !important;
}
.about-hero .about-subhead {
  font-family: var(--font-headers) !important;
  color: rgba(66, 48, 32, 0.82) !important;
  font-size: 22px !important;
  line-height: 1.5 !important;
  margin: 0 !important;
}
.founder-section {
  padding: 96px 24px !important;
  background: #FFFFFF !important;
}
.founder-section > * {
  max-width: 820px;
  margin-left: auto !important;
  margin-right: auto !important;
}
.founder-section .founder-body .founder-para {
  font-family: var(--font-headers) !important;
  color: rgba(66, 48, 32, 0.86) !important;
  font-size: 20px !important;
  line-height: 1.55 !important;
  margin: 0 0 20px !important;
}
.founder-section .founder-names {
  display: flex !important;
  flex-wrap: wrap;
  gap: 20px;
  margin-top: 40px !important;
}
.founder-section .founder-names .founder-card {
  flex: 1 1 300px;
  padding: 24px 28px !important;
  background: rgba(66, 48, 32, 0.05) !important;
  border: 1px solid rgba(66, 48, 32, 0.10) !important;
  border-radius: 4px !important;
}
.pull-quote-section {
  padding: 96px 24px !important;
  background: var(--deep-brown) !important;
  text-align: center;
}
.pull-quote-section .pull-quote-lg {
  max-width: 900px;
  margin: 0 auto !important;
  font-family: var(--font-headers) !important;
  font-style: italic !important;
  font-weight: 500 !important;
  font-size: 36px !important;
  line-height: 1.3 !important;
  color: var(--cream) !important;
}
.beliefs-section {
  padding: 96px 24px !important;
  background: var(--cream) !important;
}
.beliefs-section > * {
  max-width: 820px;
  margin-left: auto !important;
  margin-right: auto !important;
}
.beliefs-section .beliefs-body {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-top: 24px;
}
.beliefs-section .belief-item-1 {
  padding: 24px 28px !important;
  background: rgba(66, 48, 32, 0.04) !important;
  border-left: 3px solid var(--deep-brown);
  border-radius: 0 4px 4px 0 !important;
  font-family: var(--font-headers) !important;
  font-size: 20px !important;
  line-height: 1.5 !important;
  color: var(--deep-brown) !important;
  margin: 0 !important;
}
.method-section {
  padding: 96px 24px !important;
  background: var(--taupe, #DBCABB) !important;
}
.method-section > * {
  max-width: 820px;
  margin-left: auto !important;
  margin-right: auto !important;
}
.method-section .method-para {
  font-family: var(--font-headers) !important;
  color: rgba(66, 48, 32, 0.88) !important;
  font-size: 20px !important;
  line-height: 1.55 !important;
  margin: 0 0 20px !important;
}
.privacy-promise-compact {
  padding: 96px 24px !important;
  background: var(--cream) !important;
  text-align: center;
}
.privacy-promise-compact > * {
  max-width: var(--col-wide);
  margin-left: auto !important;
  margin-right: auto !important;
}
.privacy-promise-compact .promise-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 40px;
  text-align: left;
}
.privacy-promise-compact .promise-item-1 {
  padding: 28px 30px !important;
  background: rgba(66, 48, 32, 0.05) !important;
  border: 1px solid rgba(66, 48, 32, 0.10) !important;
  border-radius: 4px !important;
}
.contact-section-1 {
  padding: 96px 24px !important;
  background: var(--cream) !important;
  text-align: center;
}
.contact-section-1 > * {
  max-width: 720px;
  margin-left: auto !important;
  margin-right: auto !important;
}
.contact-section-1 .contact-line-1 {
  font-family: var(--font-body) !important;
  font-size: 15px !important;
  line-height: 1.6 !important;
  color: rgba(66, 48, 32, 0.82) !important;
  margin: 0 0 12px !important;
}
@media (max-width: 720px) {
  .pull-quote-section .pull-quote-lg { font-size: 26px !important; }
  .privacy-promise-compact .promise-grid-3 { grid-template-columns: 1fr; }
}

/* ---------- Universal patterns for remaining pages (K.15, 2026-08-02) ---------- */
/* Hero eyebrows across all pages */
p[class^="hero-eyebrow-"], p[class*=" hero-eyebrow-"] {
  font-family: var(--font-body) !important;
  font-size: 13px !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: #8B6354 !important;
  margin: 0 0 20px !important;
}
/* Hero H1s across all pages (except home which is scoped separately) */
section[class^="hero-1"] h1[class^="hero-h1-"],
section[class^="hero-1"] h1[class*=" hero-h1-"] {
  font-family: var(--font-headers) !important;
  font-weight: 500 !important;
  color: var(--deep-brown) !important;
  font-size: var(--type-h1) !important;
  line-height: 1.08 !important;
  letter-spacing: -0.01em !important;
  margin: 0 0 20px !important;
}
/* Hero subheads */
p[class^="hero-subhead-"], p[class*=" hero-subhead-"] {
  font-family: var(--font-headers) !important;
  color: rgba(66, 48, 32, 0.78) !important;
  font-size: 22px !important;
  line-height: 1.5 !important;
  margin: 0 !important;
}
/* Hero containers across pages */
section[class^="hero-1"], section[class*=" hero-1"] {
  padding: 96px 24px 72px !important;
  background: var(--cream);
}
section[class^="hero-1"] > div[class^="hero-inner"],
section[class^="hero-1"] > div[class*=" hero-inner"] {
  max-width: 820px;
  margin: 0 auto;
  text-align: left;
}

/* FAQ items across all pages (defaults; per-page overrides win by higher specificity) */
div[class^="faq-item-"], div[class*=" faq-item-"] {
  max-width: 820px;
  margin: 0 auto 16px;
  padding: 24px 28px;
  background: var(--cream);
  border: 1px solid rgba(66, 48, 32, 0.10);
  border-radius: 4px;
}
div[class^="faq-item-"] h3.faq-q, div[class*=" faq-item-"] h3.faq-q,
div[class^="faq-item-"] h3[class^="faq-q"], div[class*=" faq-item-"] h3[class^="faq-q"] {
  font-family: var(--font-headers);
  font-weight: 500;
  color: var(--deep-brown);
  font-size: 22px;
  line-height: 1.3;
  margin: 0 0 10px;
}
div[class^="faq-item-"] p[class^="faq-a"], div[class*=" faq-item-"] p[class^="faq-a"] {
  font-family: var(--font-body);
  color: rgba(66, 48, 32, 0.82);
  font-size: 15px;
  line-height: 1.65;
  margin: 0;
}
/* ---------- /faq PAGE (consolidated 2026-09-05) ----------
   The only page built from faq-hero / faq-nav / faq-category sections; the
   pricing FAQ (.faq-section) and the home accordion (.corvia-page-1-2
   .faq-1-2-3-4) each carry their own complete blocks and share nothing here
   but the card defaults above. Every selector below wins on specificity
   alone, so this region can live anywhere in the file.
   Hero decoration (branch + sand blob) stays in the shared decoration block
   near the top of the file, alongside every other hero's. */

/* Hero: about-page family. Cream ground, left-aligned 880px column. */
section[class^="faq-hero"], section[class*=" faq-hero"] {
  padding: 96px 24px 72px;
  background: var(--cream);
}
.faq-hero .faq-hero-eyebrow, .faq-hero .faq-h1, .faq-hero .faq-subhead {
  max-width: var(--col-content);
  margin-left: auto;
  margin-right: auto;
  text-align: left;
}
.faq-hero .faq-hero-eyebrow {
  font-family: var(--font-body);
  font-size: 13px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #8B6354;
  margin-bottom: 20px;
}
.faq-hero .faq-h1 {
  font-family: var(--font-headers);
  font-weight: 500;
  color: var(--deep-brown);
  font-size: var(--type-h1);
  line-height: 1.08;
  letter-spacing: -0.01em;
  margin-bottom: 20px;
}
.faq-hero .faq-subhead {
  font-family: var(--font-headers);
  font-size: 22px;
  line-height: 1.5;
  color: rgba(66, 48, 32, 0.82);
  margin-top: 0;
  margin-bottom: 0;
}

/* White body: jump nav + all category sections. faq-category-alt shares the
   faq-category prefix, so the retired alternating tint needs no extra rule. */
section[class^="faq-nav"], section[class*=" faq-nav"] {
  background: #fff;
  padding: 48px 24px 20px;
}
section[class^="faq-category"], section[class*=" faq-category"] {
  background: #fff;
  padding: 64px 24px 48px;
}

/* Content column: 880px, wider than the 820px card default above. Scoped
   under faq-category so the pricing and home FAQ blocks keep their widths. */
section[class^="faq-category"] [class*="faq-list"],
section[class*=" faq-category"] [class*="faq-list"] {
  max-width: var(--col-content);
  margin: 0 auto;
}
section[class^="faq-category"] [class*="faq-item-"],
section[class*=" faq-category"] [class*="faq-item-"] {
  max-width: none;
}

/* Back-to-top: one per category section, appended via WHTML, styled off the
   data attribute per the build rules. href="#top" is the HTML-spec fallback
   that scrolls to the document top with no anchor element needed. */
[data-fq="top"] {
  display: block;
  width: max-content;
  margin: 40px auto 0;
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  color: rgba(66, 48, 32, 0.55);
  transition: color 0.15s ease;
}
[data-fq="top"]:hover { color: var(--deep-brown); }

@media (max-width: 900px) {
  section[class^="faq-hero"], section[class*=" faq-hero"] { padding: 64px 20px 56px; }
  section[class^="faq-category"], section[class*=" faq-category"] { padding: 48px 20px 40px; }
}

/* Cross-link cards across persona pages */
.cross-link-section {
  padding: 72px 24px !important;
  background: var(--cream) !important;
}
.cross-link-section .cross-link-card {
  max-width: 820px;
  margin: 0 auto !important;
  padding: 32px 36px !important;
  background: rgba(66, 48, 32, 0.05) !important;
  border: 1px solid rgba(66, 48, 32, 0.10) !important;
  border-radius: 4px !important;
}

/* Pricing preview mini-cards */
section[class^="pricing-preview-"], section[class*=" pricing-preview-"] {
  padding: 96px 24px !important;
  background: var(--cream) !important;
}
section[class^="pricing-preview-"] .section-inner,
section[class*=" pricing-preview-"] .section-inner {
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
}

/* Boundary / scope-note callouts on personas */
section[class^="boundary-"], section[class*=" boundary-"] {
  padding: 48px 24px !important;
  background: var(--cream) !important;
}
section[class^="boundary-"] div[class^="boundary-note-"],
section[class*=" boundary-"] div[class*=" boundary-note-"] {
  max-width: 820px;
  margin: 0 auto !important;
  padding: 24px 28px !important;
  background: rgba(143, 157, 159, 0.10);
  border-left: 3px solid var(--dusty-blue, #8F9D9F);
  border-radius: 0 4px 4px 0;
  font-family: var(--font-headers) !important;
  color: var(--deep-brown) !important;
  font-size: 18px !important;
  line-height: 1.5;
}

/* Methodology / claims / tile / methods sections default padding */
.methodology, .claims-section, .tile-section {
  padding: 96px 24px !important;
  background: var(--cream) !important;
}
.methodology > *, .claims-section > *, .tile-section > * {
  max-width: var(--col-wide);
  margin-left: auto !important;
  margin-right: auto !important;
}
.methodology .methodology-body {
  max-width: 820px;
  margin: 0 auto !important;
}

/* Alternate section rhythm using nth-of-type-based backgrounds is risky per-page.
   Individual page tweaks below where needed. */


/* ---------- Utilities ---------- */
/* Available to screen readers, removed from the visual layout. Used for the
   section heading that keeps listing pages from jumping h1 -> h3. */
.u-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}


/* ---------- /how-corvia-works (2026-08-22) ----------
   Styling hangs off data-how attributes rather than class names: Webflow WHTML
   strips class names that are not registered in the Style Manager, and this
   page was built entirely through the API. Same pattern as data-mock on the
   feature mockups. */
/* Hero band matches the home privacy-promise background, Will's call 2026-08-23.
   It sits directly above [data-how="paths"], which is --cream, so the seam
   between them is deliberately faint. Text stays deep brown; #E8E7EA is light
   enough that the cream-page type colours carry over unchanged. */
[data-how="hero"] { background: var(--privacy-mist); padding: 96px 24px 56px; text-align: center; position: relative; overflow: hidden; }

/* ---------- Brand branch decoration on /why-corvia (2026-08-23) ----------
   Same device the home hero already uses: a pseudo-element carrying the art as
   a background, never an <img>. Two reasons. WHTML strips src from images it
   has not registered, so an inserted <img> would arrive empty; and this art is
   decorative, so a background is the honest semantics, with no alt text owed.

   The source PNGs are 993KB and 1MB and have NO alpha channel: PNG colour type 2,
   opaque line art on solid white. Straight conversion put a visible white box on
   the mist band. Fixed by deriving alpha from luminance so the antialiased edges
   stay soft, flattening the ink to pure black, then encoding webp with
   -preset drawing -q 82 -alpha_q 75. 60KB and 80KB, down from ~1MB each.
   alpha_q is the cost driver here, not q: at alpha_q 100 the same files were
   190KB and 169KB. Originals stay in marketing-site/assets.

   Opacity is deliberately far below the home hero's 0.32 and 0.70. Those are
   soft colour washes; this is pure black line art, and anything above ~0.15
   competes with the type instead of sitting behind it. */
[data-how="hero"]::after {
  content: ''; position: absolute; left: -90px; bottom: -70px;
  width: 620px; height: 371px; opacity: 0.12; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
}
[data-how="hero"] > .section-inner { position: relative; z-index: 1; }
/* text-align lives on the element, not inherited from a section. [data-how="hero"]
   centres its children so the hero eyebrow looked fine, but [data-how="practice"]
   does not (its step grid is deliberately left-aligned), so the "The daily practice"
   eyebrow sat left under a centred h2. h2 and sub already carry their own
   text-align for the same reason. Caught by Will 2026-08-23. */
[data-how="eyebrow"] {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.2em;
  text-transform: uppercase; font-weight: 600; color: #8B6354; margin: 0 0 20px;
  text-align: center;
}
/* max-width forces the break after "woman," so "not just the cycle." lands
   whole on line two, instead of orphaning "cycle." on its own (Will, 2026-08-23).
   Measured at 60px Cormorant: "Designed around the woman," is 670px and
   "Designed around the woman, not" is 762px, so any cap between those two
   breaks in the right place; 720px sits centred with ~50px either side.
   text-wrap: balance was tried first and breaks after "the", not the comma.
   THIS VALUE IS TUNED TO THIS HEADLINE. Re-measure if the copy changes; a
   different headline simply wraps elsewhere, it never breaks the layout. */
[data-how="h1"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: var(--type-h1); line-height: 1.05; letter-spacing: -0.01em;
  margin: 0 auto 24px; max-width: 720px;
}
[data-how="lede"] {
  font-family: var(--font-body); font-size: 18px; line-height: 1.65;
  color: rgba(66, 48, 32, 0.8); max-width: 720px; margin: 0 auto;
}

[data-how="paths"] { background: var(--cream); padding: 40px 24px 96px; }
[data-how="h2"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 44px; line-height: 1.12; letter-spacing: -0.01em; margin: 0 0 16px; text-align: center;
}
[data-how="sub"] {
  font-family: var(--font-body); font-size: 16px; line-height: 1.65;
  color: rgba(66, 48, 32, 0.72); max-width: 640px; margin: 0 auto 56px; text-align: center;
}
[data-how="grid"] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; align-items: stretch; }
[data-how="card"] {
  display: flex; flex-direction: column; text-decoration: none;
  background: #FFFFFF; border: 1px solid rgba(66, 48, 32, 0.1);
  border-radius: 18px; padding: 36px 32px 32px; transition: box-shadow 0.18s, transform 0.18s;
}
[data-how="card"]:hover { box-shadow: 0 18px 44px -28px rgba(66, 48, 32, 0.5); transform: translateY(-2px); }
[data-how="card-eyebrow"] {
  font-family: var(--font-body); font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase; font-weight: 600; color: #8B6354; margin: 0 0 14px;
}
[data-how="card-h"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 26px; line-height: 1.2; margin: 0 0 14px;
}
[data-how="card-p"] {
  font-family: var(--font-body); font-size: 15px; line-height: 1.65;
  color: rgba(66, 48, 32, 0.78); margin: 0 0 20px;
}
[data-how="card-list"] { list-style: none; margin: 0 0 24px; padding: 0; }
[data-how="card-list"] > li {
  font-family: var(--font-body); font-size: 14px; line-height: 1.5;
  color: rgba(66, 48, 32, 0.7); padding: 0 0 0 22px; margin: 0 0 9px; position: relative;
}
[data-how="card-list"] > li::before {
  content: ''; position: absolute; left: 4px; top: 8px;
  width: 6px; height: 6px; border-radius: 50%; background: var(--dusty-blue, #8F9D9F);
}
/* Qualifier line under the bullets, added with the 2026-08-23 card copy.
   It takes over the foot-alignment job from the CTA: margin-top:auto has to sit
   on whichever element starts the card's bottom group, or the note floats in
   the middle of the card while the CTA alone gets pushed down. The adjacent
   sibling rule below only fires when a note is present, so a card without one
   keeps the original behaviour. */
[data-how="card-note"] {
  margin-top: auto;
  margin-bottom: 14px;
  padding-top: 16px;
  border-top: 1px solid rgba(66, 48, 32, 0.08);
  font-family: var(--font-body);
  font-size: 12.5px;
  line-height: 1.55;
  color: rgba(66, 48, 32, 0.55);
}

/* Pushed to the card foot so all three CTAs align regardless of copy length. */
[data-how="card-cta"] {
  margin-top: auto; font-family: var(--font-body); font-size: 14px;
  font-weight: 600; color: var(--link, #4E5F82);
}
[data-how="card-note"] + [data-how="card-cta"] { margin-top: 0; }

[data-how="practice"] { background: #EFE6DC; padding: 88px 24px; position: relative; overflow: hidden; }
[data-how="practice"]::before {
  content: ''; position: absolute; right: -70px; top: 50%; transform: translateY(-50%);
  width: 300px; height: 600px; opacity: 0.10; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4be_corvia-branch-v-alpha.webp") center / 100% auto no-repeat;
}
[data-how="practice"] > .section-inner { position: relative; z-index: 1; }
[data-how="practice"] [data-how="h2"] { margin-bottom: 16px; }
[data-how="steps"] { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
[data-how="step"] { text-align: left; }
[data-how="step-num"] {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--deep-brown); color: var(--cream);
  font-family: var(--font-body); font-size: 13px; font-weight: 600; margin-bottom: 16px;
}
[data-how="step-h"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 22px; line-height: 1.2; margin: 0 0 10px;
}
[data-how="step-p"] {
  font-family: var(--font-body); font-size: 14.5px; line-height: 1.65;
  color: rgba(66, 48, 32, 0.76); margin: 0;
}

@media (max-width: 900px) {
  [data-how="hero"] { padding: 64px 20px 40px; }
  /* 480px is the same break point scaled to 40px: "Designed around the woman,"
     measures 447px there, "...woman, not" measures 508px. */
  [data-how="h1"] { font-size: 40px; max-width: 480px; }
  [data-how="h2"] { font-size: 32px; }
  [data-how="lede"] { font-size: 16px; }
  [data-how="paths"] { padding: 32px 20px 64px; }
  [data-how="practice"] { padding: 64px 20px; }
  [data-how="hero"]::after { width: 340px; height: 204px; left: -70px; bottom: -40px; opacity: 0.10; }
  [data-how="practice"]::before { display: none; }
  [data-how="grid"] { grid-template-columns: 1fr; gap: 20px; }
  [data-how="steps"] { grid-template-columns: repeat(2, 1fr); gap: 32px 24px; }
}
@media (max-width: 560px) {
  [data-how="steps"] { grid-template-columns: 1fr; }
}

/* ---------- Free-course CTA band, top of /billings-method (2026-08-22) ----------
   The course left the nav on 2026-08-22; this band is now its primary entry
   point. Deep brown so it reads as a distinct offer above the explainer. */
[data-course-cta="1"] { background: var(--deep-brown); color: var(--cream); padding: 56px 24px; }
[data-course-cta="inner"] {
  display: flex; align-items: center; justify-content: space-between;
  gap: 48px; max-width: var(--col-wide); margin: 0 auto;
}
[data-course-cta="copy"] { max-width: 620px; }
[data-course-cta="eyebrow"] {
  font-family: var(--font-body); font-size: 11px; letter-spacing: 0.2em;
  text-transform: uppercase; font-weight: 600;
  color: rgba(247, 241, 234, 0.72); margin: 0 0 14px;
}
[data-course-cta="h"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--cream);
  font-size: 40px; line-height: 1.12; letter-spacing: -0.01em; margin: 0 0 14px;
}
[data-course-cta="p"] {
  font-family: var(--font-body); font-size: 16px; line-height: 1.65;
  color: rgba(247, 241, 234, 0.84); margin: 0;
}
[data-course-cta="actions"] { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; flex: none; }
[data-course-cta="btn"] {
  display: inline-block; background: var(--cream); color: var(--deep-brown);
  font-family: var(--font-body); font-size: 15px; font-weight: 600;
  text-decoration: none; padding: 16px 32px; border-radius: 12px; white-space: nowrap;
  transition: background 0.15s;
}
[data-course-cta="btn"]:hover { background: #FFFFFF; }
[data-course-cta="note"] {
  font-family: var(--font-body); font-size: 12px; color: rgba(247, 241, 234, 0.6);
}
@media (max-width: 900px) {
  [data-course-cta="1"] { padding: 44px 20px; }
  [data-course-cta="inner"] { flex-direction: column; align-items: flex-start; gap: 28px; }
  [data-course-cta="h"] { font-size: 30px; }
  [data-course-cta="actions"] { align-items: stretch; width: 100%; }
  [data-course-cta="btn"] { text-align: center; }
}

/* =====================================================================
   /beginning-womanhood, rebuilt 2026-08-23
   =====================================================================
   Whole page rebuilt from founder copy. Styled off data-bw attributes, not
   class names, for the same reason /why-corvia uses data-how: WHTML strips
   class names that are not registered in the Webflow Style Manager, and this
   page was built through the API.

   Band order is deliberate so the page keeps moving:
     hero cream -> gentle white -> quote brown -> happening cream ->
     three mist -> faith arch -> how white -> season blue -> (JS CTA, brown)
   Season is blue rather than brown specifically because renderFinalCta()
   injects a deep-brown closer directly after it. Two browns would butt.

   Photographs are <div> backgrounds, not <img>. WHTML strips src from images
   it has not registered, so an inserted <img> arrives empty. Source PNGs were
   1.9MB each; webp q80 brings them to 83KB and 74KB.
   ===================================================================== */

[data-bw] { box-sizing: border-box; }

/* ---------- shared type ---------- */
[data-bw="eyebrow"], [data-bw="eyebrow-c"] {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.2em;
  text-transform: uppercase; font-weight: 600; color: #8B6354; margin: 0 0 18px;
}
[data-bw="eyebrow-c"] { text-align: center; }
[data-bw="h1"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 58px; line-height: 1.06; letter-spacing: -0.01em; margin: 0 0 20px;
}
[data-bw="h2"], [data-bw="h2c"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 42px; line-height: 1.14; letter-spacing: -0.01em; margin: 0 0 24px;
}
[data-bw="h2c"] { text-align: center; margin-bottom: 48px; }
[data-bw="deck"] {
  font-family: var(--font-headers); font-style: italic; font-size: 24px;
  line-height: 1.45; color: rgba(66, 48, 32, 0.72); margin: 0 0 26px;
}
[data-bw="lead"] {
  font-family: var(--font-body); font-size: 19px; line-height: 1.6;
  font-weight: 500; color: var(--deep-brown); margin: 0 0 20px;
}
[data-bw="p"] {
  font-family: var(--font-body); font-size: 17px; line-height: 1.75;
  color: rgba(66, 48, 32, 0.78); margin: 0 0 20px;
}
[data-bw="p"]:last-child, [data-bw="lead"]:last-child { margin-bottom: 0; }
[data-bw="quiet"] {
  font-family: var(--font-headers); font-style: italic; font-size: 19px;
  line-height: 1.5; color: rgba(66, 48, 32, 0.6); margin: 0 0 6px;
}

/* ---------- shared containers ---------- */
[data-bw="narrow"] { max-width: 720px; margin: 0 auto; }
[data-bw="wide"]   { max-width: var(--col-wide); margin: 0 auto; }

/* ---------- 1. hero ---------- */
[data-bw="hero"] { background: var(--cream); padding: 88px 24px 96px; }
[data-bw="hero-inner"] {
  max-width: 1160px; margin: 0 auto; display: grid;
  grid-template-columns: 1.02fr 0.98fr; gap: 64px; align-items: center;
}
/* Arch shape lifted verbatim from the app: ARCH_RADIUS in
   corvia/web/lib/components/ArchCard.tsx is
   '50% 50% 1rem 1rem / 90px 90px 1rem 1rem'. Top corners curve over 50% of
   width by a FIXED 90px of height, which is what keeps every arch in the app
   the same height regardless of card height. Note the consequence here: these
   photos are far wider than a rail card, so the same 90px reads as a shallower
   dome than it does in the app. Scale the vertical radius up if a deeper arch
   is wanted. (2026-08-23) */
[data-bw="hero-figure"] {
  aspect-ratio: 4 / 5; overflow: hidden;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
  background: #EFE6DC url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b58331866e1fa4a5558be_bw-charting-desk.webp") center / cover no-repeat;
  box-shadow: 0 30px 70px -40px rgba(66, 48, 32, 0.55);
}

/* ---------- 2. gentle ---------- */
[data-bw="gentle"] { background: #FFFFFF; padding: 92px 24px; }

/* ---------- 3. pull quote ---------- */
[data-bw="quote"] {
  background: var(--deep-brown); padding: 96px 24px; position: relative; overflow: hidden;
}
/* Branch, not the rosary (Will, 2026-08-23). The branch art is pure black ink,
   which would disappear on the deep brown, so invert(1) flips it to white and a
   low opacity brings it back down to a soft warm line. Without the filter this
   is invisible; without the low opacity it shouts. */
[data-bw="quote"]::after {
  content: ''; position: absolute; right: 5%; top: -80px;
  width: 250px; height: 500px; opacity: 0.16; pointer-events: none; z-index: 0;
  filter: invert(1);
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4be_corvia-branch-v-alpha.webp") center / 100% auto no-repeat;
}
[data-bw="quote-text"] {
  position: relative; z-index: 1;
  max-width: 900px; margin: 0 auto; text-align: center;
  font-family: var(--font-headers); font-style: italic; font-weight: 500;
  font-size: 40px; line-height: 1.3; letter-spacing: -0.01em; color: var(--cream);
}

/* ---------- 4. what is happening ---------- */
[data-bw="happening"] { background: var(--cream); padding: 92px 24px; }

/* ---------- 5. three simple things ---------- */
[data-bw="three"] { background: var(--privacy-mist); padding: 92px 24px; }
/* auto-fit, not fixed columns. Three hand-set columns with no media query is
   exactly the bug that made the home page scroll sideways on phones. */
[data-bw="cards"] {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: 24px; align-items: start;
}
[data-bw="card"] {
  background: #FFFFFF; border: 1px solid rgba(66, 48, 32, 0.09);
  border-radius: 18px; padding: 32px 28px;
}
[data-bw="card-h"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 25px; line-height: 1.2; margin: 0 0 14px;
}
[data-bw="card-p"] {
  font-family: var(--font-body); font-size: 15px; line-height: 1.7;
  color: rgba(66, 48, 32, 0.76); margin: 0 0 14px;
}
[data-bw="card-p"]:last-child { margin-bottom: 0; }
[data-bw="closing"] {
  max-width: 640px; margin: 48px auto 0; text-align: center;
  font-family: var(--font-headers); font-style: italic; font-size: 22px;
  line-height: 1.5; color: rgba(66, 48, 32, 0.7);
}

/* ---------- 6. faith ---------- */
[data-bw="faith"] { background: var(--arch-support); padding: 92px 24px; }
[data-bw="split"] {
  max-width: var(--col-wide); margin: 0 auto; display: grid;
  grid-template-columns: 0.92fr 1.08fr; gap: 64px; align-items: center;
}
[data-bw="split-figure"] {
  aspect-ratio: 4 / 5; overflow: hidden;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
  background: #EFE6DC url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9cedd082aa537acd9f2744_corvia-begin-asset-3.webp") center / cover no-repeat;
  box-shadow: 0 30px 70px -40px rgba(66, 48, 32, 0.55);
}

/* ---------- 7. how to begin ---------- */
[data-bw="how"] { background: #FFFFFF; padding: 92px 24px; }
[data-bw="closing-l"] {
  margin: 28px 0 0; padding-top: 26px;
  border-top: 1px solid rgba(66, 48, 32, 0.12);
  font-family: var(--font-headers); font-style: italic; font-size: 23px;
  line-height: 1.45; color: var(--deep-brown);
}

/* ---------- 8. made for this season ---------- */
[data-bw="season"] { background: var(--button-primary); padding: 92px 24px; }
[data-bw="season"] [data-bw="eyebrow-c"] { color: rgba(247, 241, 234, 0.75); }
[data-bw="season"] [data-bw="h2c"] { color: var(--cream); }
[data-bw="season"] [data-bw="p"] { color: rgba(247, 241, 234, 0.88); text-align: center; }

/* ---------- faq (added 2026-08-23, this page had none before) ---------- */
[data-bw="faq"] { background: var(--privacy-mist); padding: 88px 24px; }
[data-bw="qa"] { padding: 26px 0; border-top: 1px solid rgba(66, 48, 32, 0.12); }
[data-bw="qa"]:last-child { border-bottom: 1px solid rgba(66, 48, 32, 0.12); }
[data-bw="q"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 23px; line-height: 1.25; margin: 0 0 12px;
}
[data-bw="a"] {
  font-family: var(--font-body); font-size: 16px; line-height: 1.7;
  color: rgba(66, 48, 32, 0.78); margin: 0 0 12px;
}
[data-bw="a"]:last-child { margin-bottom: 0; }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  [data-bw="hero"] { padding: 56px 20px 64px; }
  [data-bw="hero-inner"] { grid-template-columns: 1fr; gap: 40px; }
  [data-bw="hero-figure"] { order: -1; aspect-ratio: 3 / 2; }
  [data-bw="h1"] { font-size: 40px; }
  [data-bw="h2"], [data-bw="h2c"] { font-size: 32px; }
  [data-bw="deck"] { font-size: 21px; }
  [data-bw="gentle"], [data-bw="happening"], [data-bw="three"],
  [data-bw="faith"], [data-bw="how"], [data-bw="season"],
  [data-bw="faq"] { padding: 64px 20px; }
  [data-bw="q"] { font-size: 20px; }
  [data-bw="quote"] { padding: 64px 20px; }
  [data-bw="quote-text"] { font-size: 27px; }
  [data-bw="quote"]::after { display: none; }
  [data-bw="split"] { grid-template-columns: 1fr; gap: 36px; }
  [data-bw="split-figure"] { aspect-ratio: 3 / 2; }
  [data-bw="closing"] { font-size: 19px; margin-top: 36px; }
  [data-bw="closing-l"] { font-size: 20px; }
}

/* =====================================================================
   /understanding-my-cycle, rebuilt 2026-08-23
   =====================================================================
   Same construction as /beginning-womanhood: whole page rebuilt from founder
   copy, styled off data-* attributes because WHTML strips unregistered class
   names, photographs as div backgrounds because WHTML strips img src.

   This block is deliberately PARALLEL to the data-bw block above rather than
   merged with it. The two pages share a type scale today, but they are separate
   founder-owned pages and either may be restyled alone; merging the selectors
   would make a tweak to one silently move the other. The one value that must
   stay in sync is the arch radius, and its source of truth is neither file:
   it is ARCH_RADIUS in corvia/web/lib/components/ArchCard.tsx.

   Band order:
     hero cream -> observe white -> three mist -> quote brown (+branch) ->
     nogoal cream -> season arch -> billings white -> method cream (photo) ->
     faith arch (photo) -> learn white -> later cream -> faq mist -> (JS CTA)
   ===================================================================== */

[data-um] { box-sizing: border-box; }

/* ---------- shared type ---------- */
[data-um="eyebrow"], [data-um="eyebrow-c"] {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.2em;
  text-transform: uppercase; font-weight: 600; color: #8B6354; margin: 0 0 18px;
}
[data-um="eyebrow-c"] { text-align: center; }
[data-um="h1"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 46px; line-height: 1.1; letter-spacing: -0.01em; margin: 0 0 20px;
}
[data-um="h2"], [data-um="h2c"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 40px; line-height: 1.15; letter-spacing: -0.01em; margin: 0 0 24px;
}
[data-um="h2c"] { text-align: center; margin-bottom: 44px; }
[data-um="deck"] {
  font-family: var(--font-headers); font-style: italic; font-size: 23px;
  line-height: 1.45; color: rgba(66, 48, 32, 0.72); margin: 0 0 24px;
}
[data-um="lead"] {
  font-family: var(--font-body); font-size: 19px; line-height: 1.6;
  font-weight: 500; color: var(--deep-brown); margin: 0 0 20px;
}
[data-um="p"] {
  font-family: var(--font-body); font-size: 17px; line-height: 1.75;
  color: rgba(66, 48, 32, 0.78); margin: 0 0 20px;
}
[data-um="quiet"] {
  font-family: var(--font-headers); font-style: italic; font-size: 19px;
  line-height: 1.5; color: rgba(66, 48, 32, 0.6); margin: 0 0 6px;
}

/* ---------- containers ---------- */
[data-um="narrow"] { max-width: 720px; margin: 0 auto; }
[data-um="wide"]   { max-width: var(--col-wide); margin: 0 auto; }

/* ---------- hero ---------- */
[data-um="hero"] { background: var(--cream); padding: 80px 24px 92px; }
[data-um="hero-inner"] {
  max-width: 1160px; margin: 0 auto; display: grid;
  grid-template-columns: 1.05fr 0.95fr; gap: 60px; align-items: center;
}
/* Hero CTA, shared by /understanding-my-cycle and /beginning-womanhood.
   These two selectors are merged ON PURPOSE, unlike the rest of the data-um and
   data-bw blocks which are deliberately parallel: the two pages must offer an
   identical primary action, so this is the one place drift would be a bug
   rather than a preference. The cream-on-dark buttons elsewhere
   ([data-course-cta="btn"], [data-fork-cta="btn"]) are a different family and
   are not part of this. (2026-08-23) */
[data-um="btn"], [data-bw="btn"], [data-pr="btn"], [data-pc="btn"], [data-ab="btn"] {
  display: inline-block; margin-top: 12px; background: var(--button-primary);
  color: var(--cream); font-family: var(--font-body); font-size: 15px;
  font-weight: 600; text-decoration: none; padding: 16px 32px;
  border-radius: 12px; transition: background 0.15s;
}
[data-um="btn"]:hover, [data-bw="btn"]:hover, [data-pr="btn"]:hover, [data-pc="btn"]:hover, [data-ab="btn"]:hover { background: var(--button-hover); }
[data-um="micro"], [data-bw="micro"], [data-pr="micro"], [data-pc="micro"] {
  margin: 14px 0 0; font-family: var(--font-body); font-size: 12.5px;
  color: rgba(66, 48, 32, 0.55);
}

/* ---------- arch photos ----------
   Radius copied from the app: ARCH_RADIUS in ArchCard.tsx. Keep the two
   marketing pages and the app on the same string. */
[data-um="hero-figure"], [data-um="split-figure"] {
  aspect-ratio: 4 / 5; overflow: hidden;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
  background: #EFE6DC center / cover no-repeat;
  box-shadow: 0 30px 70px -40px rgba(66, 48, 32, 0.55);
}
[data-um="hero-figure"] { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5ec87a10a02ce948954f_um-arch-prayer.webp"); }
[data-um-img="phone"]   { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9cedd297923db41e931218_corvia-understanding-asset-4.webp"); }
[data-um-img="candle"]  { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9e208418b2986991c41f14_corvia-understanding-asset-5.webp"); }

/* ---------- text bands ---------- */
[data-um="observe"]  { background: #FFFFFF;            padding: 88px 24px; }
[data-um="nogoal"]   { background: var(--cream);       padding: 88px 24px; }
[data-um="season"]   { background: var(--arch-support); padding: 88px 24px; }
[data-um="billings"] { background: #FFFFFF;            padding: 88px 24px; }
[data-um="learn"]    { background: #FFFFFF;            padding: 88px 24px; }
[data-um="later"]    { background: var(--cream);       padding: 88px 24px; }

/* ---------- three cards ---------- */
[data-um="three"] { background: var(--privacy-mist); padding: 88px 24px; }
[data-um="cards"] {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: 24px; align-items: start;
}
[data-um="card"] {
  background: #FFFFFF; border: 1px solid rgba(66, 48, 32, 0.09);
  border-radius: 18px; padding: 32px 28px;
}
[data-um="card-h"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 25px; line-height: 1.2; margin: 0 0 14px;
}
[data-um="card-p"] {
  font-family: var(--font-body); font-size: 15px; line-height: 1.7;
  color: rgba(66, 48, 32, 0.76); margin: 0 0 14px;
}
[data-um="card-p"]:last-child { margin-bottom: 0; }

/* ---------- pull quote + branch ----------
   Black ink on deep brown, so invert(1) then a low opacity. Same reasoning as
   the /beginning-womanhood quote band; the horizontal branch is used here so
   the two pages do not read as the same module twice. */
[data-um="quote"] {
  background: var(--deep-brown); padding: 92px 24px;
  position: relative; overflow: hidden;
}
[data-um="quote"]::after {
  content: ''; position: absolute; left: -70px; bottom: -60px;
  width: 560px; height: 336px; opacity: 0.15; pointer-events: none; z-index: 0;
  filter: invert(1);
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
}
[data-um="quote-text"] {
  position: relative; z-index: 1;
  max-width: 900px; margin: 0 auto; text-align: center;
  font-family: var(--font-headers); font-style: italic; font-weight: 500;
  font-size: 38px; line-height: 1.32; letter-spacing: -0.01em; color: var(--cream);
}

/* ---------- split photo sections ---------- */
[data-um="method"] { background: var(--cream);        padding: 88px 24px; }
[data-um="faith"]  { background: var(--arch-support); padding: 88px 24px; }
[data-um="split"] {
  max-width: var(--col-wide); margin: 0 auto; display: grid;
  grid-template-columns: 1.06fr 0.94fr; gap: 60px; align-items: center;
}
[data-um="faith"] [data-um="split"] { grid-template-columns: 0.94fr 1.06fr; }

/* ---------- lists ---------- */
[data-um="maybe"], [data-um="nots"], [data-um="already"] {
  list-style: none; margin: 0 0 24px; padding: 0;
}
[data-um="maybe"] > li, [data-um="nots"] > li, [data-um="already"] > li {
  font-family: var(--font-body); font-size: 17px; line-height: 1.6;
  color: rgba(66, 48, 32, 0.78); padding: 0 0 0 24px; margin: 0 0 12px;
  position: relative;
}
[data-um="maybe"] > li::before, [data-um="nots"] > li::before,
[data-um="already"] > li::before {
  content: ''; position: absolute; left: 4px; top: 11px;
  width: 6px; height: 6px; border-radius: 50%; background: #8F9D9F;
}
[data-um="maybe"] { max-width: 620px; margin-left: auto; margin-right: auto; }

/* ---------- closers ---------- */
[data-um="closing"] {
  max-width: 620px; margin: 8px auto 0; text-align: center;
  font-family: var(--font-headers); font-style: italic; font-size: 22px;
  line-height: 1.5; color: rgba(66, 48, 32, 0.7);
}
[data-um="closing-l"] {
  margin: 28px 0 0; padding-top: 26px;
  border-top: 1px solid rgba(66, 48, 32, 0.12);
  font-family: var(--font-headers); font-style: italic; font-size: 23px;
  line-height: 1.45; color: var(--deep-brown);
}
[data-um="link"] {
  display: inline-block; margin-top: 26px; font-family: var(--font-body);
  font-size: 15px; font-weight: 600; color: var(--button-primary);
  text-decoration: none;
}
[data-um="link"]:hover { text-decoration: underline; }

/* ---------- faq ---------- */
[data-um="faq"] { background: var(--privacy-mist); padding: 88px 24px; }
[data-um="qa"] {
  padding: 26px 0; border-top: 1px solid rgba(66, 48, 32, 0.12);
}
[data-um="qa"]:last-child { border-bottom: 1px solid rgba(66, 48, 32, 0.12); }
[data-um="q"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 23px; line-height: 1.25; margin: 0 0 12px;
}
[data-um="a"] {
  font-family: var(--font-body); font-size: 16px; line-height: 1.7;
  color: rgba(66, 48, 32, 0.78); margin: 0 0 12px;
}
[data-um="a"]:last-child { margin-bottom: 0; }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  [data-um="hero"] { padding: 52px 20px 60px; }
  [data-um="hero-inner"] { grid-template-columns: 1fr; gap: 36px; }
  [data-um="hero-figure"] { order: -1; aspect-ratio: 3 / 2; }
  [data-um="h1"] { font-size: 34px; }
  [data-um="h2"], [data-um="h2c"] { font-size: 30px; }
  [data-um="deck"] { font-size: 20px; }
  [data-um="observe"], [data-um="three"], [data-um="nogoal"], [data-um="season"],
  [data-um="billings"], [data-um="method"], [data-um="faith"], [data-um="learn"],
  [data-um="later"], [data-um="faq"] { padding: 60px 20px; }
  [data-um="quote"] { padding: 60px 20px; }
  [data-um="quote-text"] { font-size: 26px; }
  [data-um="quote"]::after { width: 340px; height: 204px; opacity: 0.12; }
  [data-um="split"], [data-um="faith"] [data-um="split"] {
    grid-template-columns: 1fr; gap: 34px;
  }
  [data-um="split-figure"] { aspect-ratio: 3 / 2; }
  [data-um="method"] [data-um="split-figure"] { order: -1; }
  [data-um="closing"] { font-size: 19px; }
  [data-um="closing-l"] { font-size: 20px; }
  [data-um="q"] { font-size: 20px; }
}

/* =====================================================================
   /married, rebuilt 2026-08-23
   =====================================================================
   Third and last of the starting-point page rebuilds. Same construction as
   the data-bw and data-um blocks above: data-* hooks because WHTML strips
   unregistered class names, div backgrounds because it strips img src, arch
   radius from ArchCard.tsx, auto-fit card grid so nothing can overflow.

   This page carries the site's densest GWP-sensitive copy, and the copy
   handles it well: it repeatedly states what Corvia does NOT do (declare
   fertility status, apply Billings rules, direct intercourse). Those
   sentences contain prohibited substrings inside explicit denials, which is
   the negating-disclaimer pattern the founder locked as a keeper. Do not
   "clean" them; they are the strongest GWP evidence on the site.

   Band order:
     hero cream -> conversation white -> together arch (photo) -> built mist ->
     quote brown (+branch) -> billings white -> openness cream ->
     prayer arch (photo) -> window white -> instructor cream ->
     intercourse mist (photo) -> method white -> responsible cream ->
     seasons arch -> faq mist -> (JS CTA, brown)
   ===================================================================== */

[data-mr] { box-sizing: border-box; }

/* ---------- type ---------- */
[data-mr="eyebrow"], [data-mr="eyebrow-c"] {
  font-family: var(--font-body); font-size: 12px; letter-spacing: 0.2em;
  text-transform: uppercase; font-weight: 600; color: #8B6354; margin: 0 0 18px;
}
[data-mr="eyebrow-c"] { text-align: center; }
[data-mr="h1"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 46px; line-height: 1.1; letter-spacing: -0.01em; margin: 0 0 20px;
}
[data-mr="h2"], [data-mr="h2c"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 40px; line-height: 1.15; letter-spacing: -0.01em; margin: 0 0 24px;
}
[data-mr="h2c"] { text-align: center; margin-bottom: 40px; }
[data-mr="deck"] {
  font-family: var(--font-headers); font-style: italic; font-size: 23px;
  line-height: 1.45; color: rgba(66, 48, 32, 0.72); margin: 0 0 24px;
}
[data-mr="lead"] {
  font-family: var(--font-body); font-size: 19px; line-height: 1.6;
  font-weight: 500; color: var(--deep-brown); margin: 0 0 20px;
}
[data-mr="p"] {
  font-family: var(--font-body); font-size: 17px; line-height: 1.75;
  color: rgba(66, 48, 32, 0.78); margin: 0 0 20px;
}
[data-mr="quiet"] {
  font-family: var(--font-headers); font-style: italic; font-size: 19px;
  line-height: 1.5; color: rgba(66, 48, 32, 0.6); margin: 0 0 6px;
}

/* ---------- containers ---------- */
[data-mr="narrow"] { max-width: 720px; margin: 0 auto; }
[data-mr="wide"]   { max-width: var(--col-wide); margin: 0 auto; }

/* ---------- hero ---------- */
[data-mr="hero"] { background: var(--cream); padding: 80px 24px 92px; }
[data-mr="hero-inner"] {
  max-width: 1160px; margin: 0 auto; display: grid;
  grid-template-columns: 1.05fr 0.95fr; gap: 60px; align-items: center;
}
/* Same hero CTA as the other two rebuilt pages; merged for the same reason,
   the primary action must not drift between them. */
[data-mr="btn"] {
  display: inline-block; margin-top: 12px; background: var(--button-primary);
  color: var(--cream); font-family: var(--font-body); font-size: 15px;
  font-weight: 600; text-decoration: none; padding: 16px 32px;
  border-radius: 12px; transition: background 0.15s;
}
[data-mr="btn"]:hover { background: var(--button-hover); }
[data-mr="micro"] {
  margin: 14px 0 0; font-family: var(--font-body); font-size: 12.5px;
  color: rgba(66, 48, 32, 0.55);
}

/* ---------- arch photos ---------- */
[data-mr="hero-figure"], [data-mr="split-figure"] {
  aspect-ratio: 4 / 5; overflow: hidden;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
  background: #EFE6DC center / cover no-repeat;
  box-shadow: 0 30px 70px -40px rgba(66, 48, 32, 0.55);
}
[data-mr="hero-figure"]  { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b6822efdad2a541c46066_mr-couple-crucifix.webp"); }
[data-mr-img="intentions"] { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b6821ecd76b1215e9efed_mr-intentions-rings.webp"); }
[data-mr-img="phone"]      { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9cedd3faefec087b1411f0_corvia-married-asset-5.webp"); }
[data-mr-img="chart"]      { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b6822aac2149440bd4642_mr-chart-calendar.webp"); }

/* ---------- bands ---------- */
[data-mr="conversation"] { background: #FFFFFF;             padding: 88px 24px; }
[data-mr="together"]     { background: var(--arch-support);  padding: 88px 24px; }
[data-mr="billings"]     { background: #FFFFFF;             padding: 88px 24px; }
[data-mr="openness"]     { background: var(--cream);        padding: 88px 24px; }
[data-mr="prayer"]       { background: var(--arch-support);  padding: 88px 24px; }
[data-mr="window"]       { background: #FFFFFF;             padding: 88px 24px; }
[data-mr="instructor"]   { background: var(--cream);        padding: 88px 24px; }
[data-mr="intercourse"]  { background: var(--privacy-mist);  padding: 88px 24px; }
[data-mr="method"]       { background: #FFFFFF;             padding: 88px 24px; }
[data-mr="responsible"]  { background: var(--cream);        padding: 88px 24px; }
[data-mr="seasons"]      { background: var(--arch-support);  padding: 88px 24px; }

/* ---------- cards ---------- */
[data-mr="built"] { background: var(--privacy-mist); padding: 88px 24px; }
[data-mr="cards"] {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
  gap: 22px; align-items: start;
}
[data-mr="card"] {
  background: #FFFFFF; border: 1px solid rgba(66, 48, 32, 0.09);
  border-radius: 18px; padding: 30px 26px;
}
[data-mr="card-h"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 24px; line-height: 1.2; margin: 0 0 14px;
}
[data-mr="card-p"] {
  font-family: var(--font-body); font-size: 15px; line-height: 1.7;
  color: rgba(66, 48, 32, 0.76); margin: 0 0 14px;
}
[data-mr="card-p"]:last-child { margin-bottom: 0; }

/* ---------- quote + branch ----------
   Third variation of the same branch: mirrored with scaleX(-1) so this page's
   brown band does not read as a copy of the other two. invert(1) is still
   required because the ink is black and the ground is deep brown. */
[data-mr="quote"] {
  background: var(--deep-brown); padding: 92px 24px;
  position: relative; overflow: hidden;
}
[data-mr="quote"]::after {
  content: ''; position: absolute; right: -70px; bottom: -60px;
  width: 560px; height: 336px; opacity: 0.15; pointer-events: none; z-index: 0;
  filter: invert(1); transform: scaleX(-1);
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
}
[data-mr="quote-text"] {
  position: relative; z-index: 1;
  max-width: 940px; margin: 0 auto; text-align: center;
  font-family: var(--font-headers); font-style: italic; font-weight: 500;
  font-size: 37px; line-height: 1.32; letter-spacing: -0.01em; color: var(--cream);
}

/* ---------- split ---------- */
[data-mr="split"] {
  max-width: var(--col-wide); margin: 0 auto; display: grid;
  grid-template-columns: 1.06fr 0.94fr; gap: 60px; align-items: center;
}
[data-mr="prayer"] [data-mr="split"] { grid-template-columns: 0.94fr 1.06fr; }

/* ---------- lists ---------- */
[data-mr="asks"], [data-mr="nots"], [data-mr="already"], [data-mr="maybe"] {
  list-style: none; margin: 0 0 24px; padding: 0;
}
[data-mr="asks"] > li, [data-mr="nots"] > li,
[data-mr="already"] > li, [data-mr="maybe"] > li {
  font-family: var(--font-body); font-size: 17px; line-height: 1.6;
  color: rgba(66, 48, 32, 0.78); padding: 0 0 0 24px; margin: 0 0 12px;
  position: relative;
}
[data-mr="asks"] > li::before, [data-mr="nots"] > li::before,
[data-mr="already"] > li::before, [data-mr="maybe"] > li::before {
  content: ''; position: absolute; left: 4px; top: 11px;
  width: 6px; height: 6px; border-radius: 50%; background: #8F9D9F;
}
/* The four discernment questions carry more weight than a plain bullet list. */
[data-mr="asks"] > li {
  font-family: var(--font-headers); font-style: italic; font-size: 21px;
  color: var(--deep-brown); line-height: 1.45;
}
[data-mr="asks"] > li::before { top: 13px; background: #8B6354; }

/* ---------- closers ---------- */
[data-mr="closing"] {
  max-width: 620px; margin: 8px auto 0; text-align: center;
  font-family: var(--font-headers); font-style: italic; font-size: 22px;
  line-height: 1.5; color: rgba(66, 48, 32, 0.7);
}
[data-mr="closing-l"] {
  margin: 28px 0 0; padding-top: 26px;
  border-top: 1px solid rgba(66, 48, 32, 0.12);
  font-family: var(--font-headers); font-style: italic; font-size: 23px;
  line-height: 1.45; color: var(--deep-brown);
}

/* ---------- faq ---------- */
[data-mr="faq"] { background: var(--privacy-mist); padding: 88px 24px; }
[data-mr="qa"] { padding: 26px 0; border-top: 1px solid rgba(66, 48, 32, 0.12); }
[data-mr="qa"]:last-child { border-bottom: 1px solid rgba(66, 48, 32, 0.12); }
[data-mr="q"] {
  font-family: var(--font-headers); font-weight: 500; color: var(--deep-brown);
  font-size: 23px; line-height: 1.25; margin: 0 0 12px;
}
[data-mr="a"] {
  font-family: var(--font-body); font-size: 16px; line-height: 1.7;
  color: rgba(66, 48, 32, 0.78); margin: 0 0 12px;
}
[data-mr="a"]:last-child { margin-bottom: 0; }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  [data-mr="hero"] { padding: 52px 20px 60px; }
  [data-mr="hero-inner"] { grid-template-columns: 1fr; gap: 36px; }
  [data-mr="hero-figure"] { order: -1; aspect-ratio: 3 / 2; }
  [data-mr="h1"] { font-size: 34px; }
  [data-mr="h2"], [data-mr="h2c"] { font-size: 29px; }
  [data-mr="deck"] { font-size: 20px; }
  [data-mr="conversation"], [data-mr="together"], [data-mr="built"],
  [data-mr="billings"], [data-mr="openness"], [data-mr="prayer"],
  [data-mr="window"], [data-mr="instructor"], [data-mr="intercourse"],
  [data-mr="method"], [data-mr="responsible"], [data-mr="seasons"],
  [data-mr="faq"] { padding: 60px 20px; }
  [data-mr="quote"] { padding: 60px 20px; }
  [data-mr="quote-text"] { font-size: 25px; }
  [data-mr="quote"]::after { width: 340px; height: 204px; opacity: 0.12; }
  [data-mr="split"], [data-mr="prayer"] [data-mr="split"] {
    grid-template-columns: 1fr; gap: 34px;
  }
  [data-mr="split-figure"] { aspect-ratio: 3 / 2; }
  [data-mr="together"] [data-mr="split-figure"],
  [data-mr="intercourse"] [data-mr="split-figure"] { order: -1; }
  [data-mr="asks"] > li { font-size: 19px; }
  [data-mr="closing"] { font-size: 19px; }
  [data-mr="closing-l"] { font-size: 20px; }
  [data-mr="q"] { font-size: 20px; }
}

/* ---------- Homepage decorative line art (2026-08-23) ----------
   Rosary on the blue features band, branch on the cream how-it-works band.
   Note the two need opposite handling, as everywhere else on this site: the
   rosary is TAN ink so its luminance-derived alpha is already low and it needs
   no filter, while the branch is BLACK ink and needs a low opacity on cream.
   Both sections get position/overflow so the art can bleed and still clip. */
/* Rosary sits on the Why Corvia fork, not the features band (moved 2026-08-23).
   .mode-fork-1-2 is deep brown and gets no position/overflow of its own from the
   shared decoration block, so both are set here. Opacity 1 because the ink is tan:
   see the tan-versus-black note on the /beginning-womanhood quote band. */
.mode-fork-1-2 { position: relative; overflow: hidden; }
.mode-fork-1-2::after {
  content: ''; position: absolute; right: 3%; top: -50px;
  width: 280px; height: 628px; opacity: 1; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b7139b2f681a72d697a42_home-rosary-line.webp") top center / 100% auto no-repeat;
}
.mode-fork-1-2 .section-inner { position: relative; z-index: 1; }

section[class^="how-it-works"], section[class*=" how-it-works"] {
  position: relative; overflow: hidden;
}
section[class^="how-it-works"]::after,
section[class*=" how-it-works"]::after {
  content: ''; position: absolute; left: -80px; bottom: -50px;
  width: 520px; height: 312px; opacity: 0.11; pointer-events: none; z-index: 0;
  background: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp") center / 100% auto no-repeat;
}
.how-it-works .section-inner { position: relative; z-index: 1; }

@media (max-width: 900px) {
  .hero-new .hero-new-inner {
    grid-template-columns: 1fr !important;
    gap: 36px;
  }
  .hero-new .hero-new-inner > [data-home="hero-figure"] {
    order: -1; aspect-ratio: 3 / 2;
  }
  .mode-fork-1-2::after { display: none; }
  section[class^="how-it-works"]::after,
  section[class*=" how-it-works"]::after { width: 320px; height: 192px; opacity: 0.09; }
}

/* ==========================================================================
   /billings-method — full rebuild 2026-08-24
   ==========================================================================
   Namespace: data-bom. Parallel to data-bw / data-um / data-mr; deliberately
   NOT merged with them so this page can be restyled alone (build rule 5).

   Copy source: Jubilee's 2026-08-23 draft, reconciled against the DEPLOYED
   backend (live /log, /chart, /profile/mode + services/src/algorithm/v2), not
   against the algorithm spec. Three reconciliations are load-bearing:
     1. The sensation table carries all EIGHT options the live check-in shows
        (dry, sticky, moist, damp, wet, slippery, bleeding, unsure). The draft
        listed six and called them "six words"; a reader who counted six then
        met eight buttons would think she was in the wrong app.
     2. Step 03 of the cycle is "Developing pattern", never "developing
        fertility" — /today renders the header YOUR DEVELOPING PATTERN, and the
        fertility-status wording is a GWP violation besides.
     3. The stamp bridge in [data-bom="fits"] mirrors the live chart legend
        verbatim so the vocabulary a reader learns here is the vocabulary she
        meets on day one.

   The Jubilee design mocks (assets/screenshots/inspo) drove layout and palette
   ONLY. Their fertility-status columns (INFERTILE / POTENTIALLY FERTILE / VERY
   FERTILE / PEAK FERTILITY, "Fertility is rising", "Highest fertility") are
   deliberately absent: the locked founder exception covers editorial
   explanation of the method, and explicitly does not license availability
   outputs used as status labels.

   The Four Rules block is the founder exception, locked 2026-08-22. Scope is
   editorial explanation on the marketing site only. Nothing here may imply
   Corvia applies the rules — the app does not, and a grep of web/ and
   services/ confirms zero rule-application logic.
   ========================================================================== */

[data-bom] { box-sizing: border-box; }

:root {
  --bom-ink:        #423020;
  --bom-paper:      #FAF6F1;
  --bom-tint:       #F2EBE3;
  --bom-terracotta: #A8624A;
  --bom-sage:       #6E8060;
  --bom-rule:       rgba(66, 48, 32, 0.12);
  --bom-muted:      rgba(66, 48, 32, 0.62);
  --bom-arch:       50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
}

/* ---------- shared primitives ---------- */
[data-bom="wrap"]    { max-width: var(--col-wide); margin: 0 auto; padding: 0 24px; }
[data-bom="narrow"]  { max-width: 720px;  margin: 0 auto; padding: 0 24px; }

[data-bom="eyebrow"] {
  font-family: var(--font-body);
  font-size: 11.5px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--bom-terracotta);
  margin: 0 0 18px;
}
[data-bom="eyebrow"][data-align="center"] { text-align: center; }

[data-bom="h2"] {
  font-family: var(--font-headers);
  font-size: 46px; line-height: 1.12; font-weight: 400;
  color: var(--bom-ink); margin: 0 0 22px;
}
[data-bom="h2"][data-align="center"] { text-align: center; margin-left: auto; margin-right: auto; }

[data-bom="p"] {
  font-family: var(--font-body);
  font-size: 16.5px; line-height: 1.75; color: var(--bom-ink);
  margin: 0 0 18px;
}
[data-bom="p"]:last-child { margin-bottom: 0; }
[data-bom="p"][data-align="center"] { text-align: center; }

/* Pull line — the short declarative sentence that closes several sections. */
[data-bom="pull"] {
  font-family: var(--font-headers);
  font-size: 27px; line-height: 1.4; font-style: italic;
  color: var(--bom-ink); margin: 26px 0 0;
}
[data-bom="pull"][data-align="center"] { text-align: center; }

/* Arch figure. ARCH_RADIUS copied verbatim from the app's ArchCard.tsx —
   do not re-derive it here. */
[data-bom="arch"] {
  width: 100%; aspect-ratio: 4 / 5;
  border-radius: var(--bom-arch);
  background-color: #EFE6DC;
  background-size: cover; background-position: center; background-repeat: no-repeat;
  box-shadow: 0 30px 70px -40px rgba(66, 48, 32, 0.55);
}
[data-bom="arch"][data-img="journal"]  { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8bbdff60ceee655c5e38d4_bom-hero-journal.webp"); }
[data-bom="arch"][data-img="crucifix"] { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8bbdff2eb82082f90f9203_bom-couple-crucifix.webp"); }
[data-bom="arch"][data-img="record"]   { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9cf02e6bd8d3c0e8d7f6d3_corvia-billings-4.webp"); }

/* ---------- 01 · Billings 101 course drawer ----------
   Compact terracotta ad band, rebuilt 2026-09-05 from the full-height
   two-column band (copy + arch photo; markup archived in
   pages/backups/2026-09-05/billings-method.html). Native <details>/<summary>:
   the content ships server-rendered for crawlers, the open attribute is baked
   into the markup so every load starts open, and closing needs no JS. */
[data-bom="course"] {
  display: block;
  background: var(--bom-terracotta);
  interpolate-size: allow-keywords; /* lets block-size animate to auto (Chromium) */
}
[data-bom="course"]::details-content {
  block-size: 0; overflow: clip;
  transition: block-size 0.28s ease, content-visibility 0.28s allow-discrete;
}
[data-bom="course"][open]::details-content { block-size: auto; }

[data-bom="course-bar"] { display: block; list-style: none; cursor: pointer; padding: 18px 0; }
[data-bom="course-bar"]::-webkit-details-marker { display: none; }
[data-bom="course-bar-row"] { display: flex; align-items: baseline; gap: 16px; }
[data-bom="course-h"] {
  font-family: var(--font-headers);
  font-size: 30px; line-height: 1; font-weight: 400; letter-spacing: 0.02em;
  /* Cormorant defaults to oldstyle figures; the 101 needs lining caps. */
  text-transform: uppercase; font-variant-numeric: lining-nums; font-feature-settings: 'lnum' 1;
  color: var(--cream); margin: 0;
}
[data-bom="course-tag"] {
  font-family: var(--font-headers); font-style: italic;
  font-size: 18px; color: rgba(247, 241, 234, 0.85);
}
[data-bom="course-toggle"] {
  margin-left: auto; align-self: center; flex: none;
  width: 34px; height: 34px; border-radius: 50%;
  background-color: rgba(247, 241, 234, 0.14);
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23F7F1EA%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27m5.5%2014.5%206.5-6%206.5%206%27%2F%3E%3C%2Fsvg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 15px 15px;
  transition: transform 0.2s ease, background-color 0.15s;
}
[data-bom="course-bar"]:hover [data-bom="course-toggle"] { background-color: rgba(247, 241, 234, 0.26); }
[data-bom="course"]:not([open]) [data-bom="course-toggle"] { transform: rotate(180deg); }

[data-bom="course-open"] { padding: 6px 0 30px; }
[data-bom="course-row"] { display: flex; align-items: flex-start; gap: 40px; }
[data-bom="course-copy"] { max-width: 640px; }
[data-bom="course-sub"] {
  font-family: var(--font-headers);
  font-size: 26px; line-height: 1.2; color: var(--cream); margin: 0 0 10px;
}
[data-bom="course-body"] {
  font-family: var(--font-body);
  font-size: 15px; line-height: 1.65; color: rgba(247, 241, 234, 0.88); margin: 0;
}
[data-bom="course-actions"] {
  margin-left: auto; flex: none; align-self: center;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
[data-bom="course-note"] {
  font-family: var(--font-headers); font-style: italic;
  font-size: 16px; color: rgba(247, 241, 234, 0.8); margin: 0;
}
[data-bom="course-facts"] {
  display: flex; flex-wrap: wrap; gap: 16px 40px;
  margin: 24px 0 0; padding: 20px 0 0;
  border-top: 1px solid rgba(247, 241, 234, 0.22);
}
[data-bom="course-fact"] {
  display: flex; align-items: center; gap: 12px;
  font-family: var(--font-body); font-size: 13.5px; letter-spacing: 0.01em;
  color: rgba(247, 241, 234, 0.85); margin: 0;
}
[data-bom="course-fact"]::before {
  content: ''; width: 34px; height: 34px; flex: none; border-radius: 50%;
  background-color: rgba(247, 241, 234, 0.12);
  background-repeat: no-repeat; background-position: center; background-size: 17px 17px;
}
[data-bom="course-fact"][data-i="lessons"]::before { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23F7F1EA%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M4%204.5h6a3%203%200%200%201%203%203v12a2.4%202.4%200%200%200-2.4-2.4H4Z%27%2F%3E%3Cpath%20d%3D%27M20%204.5h-6a3%203%200%200%200-3%203v12a2.4%202.4%200%200%201%202.4-2.4H20Z%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="course-fact"][data-i="pace"]::before { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23F7F1EA%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%278.5%27%2F%3E%3Cpath%20d%3D%27M12%207.5V12l3%202%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="course-fact"][data-i="cert"]::before { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23F7F1EA%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%279.5%27%20r%3D%275.5%27%2F%3E%3Cpath%20d%3D%27M8.5%2014.5%207%2021.5l5-2.4%205%202.4-1.5-7%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="course-btn"] {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--cream); color: var(--bom-terracotta);
  font-family: var(--font-body); font-size: 15px; font-weight: 600;
  text-decoration: none; padding: 15px 30px; border-radius: 12px;
  transition: background 0.15s;
}
[data-bom="course-btn"]:hover { background: #FFFFFF; }

@media screen and (max-width: 767px) {
  [data-bom="course-bar"] { padding: 15px 0; }
  [data-bom="course-h"] { font-size: 23px; }
  [data-bom="course-row"] { flex-direction: column; align-items: flex-start; gap: 20px; }
  [data-bom="course-actions"] { margin-left: 0; width: 100%; align-items: stretch; }
  [data-bom="course-btn"] { justify-content: center; }
  [data-bom="course-note"] { text-align: center; }
  [data-bom="course-facts"] { flex-direction: column; gap: 14px; }
  [data-bom="course-open"] { padding-bottom: 26px; }
}
@media screen and (max-width: 479px) {
  [data-bom="course-tag"] { display: none; }
}

/* ---------- 02 · hero ---------- */
[data-bom="hero"] {
  position: relative; overflow: hidden;
  background: var(--cream);
  padding: 92px 0 96px;
}
[data-bom="hero-grid"] {
  display: grid; grid-template-columns: 1.02fr 0.98fr;
  gap: 60px; align-items: center;
}
[data-bom="hero-h1"] {
  font-family: var(--font-headers);
  font-size: 62px; line-height: 1.06; font-weight: 400;
  color: var(--bom-ink); margin: 0 0 24px;
}
[data-bom="hero-lede"] {
  font-family: var(--font-body);
  font-size: 17.5px; line-height: 1.72; color: var(--bom-ink); margin: 0 0 24px;
}
[data-bom="hero-strip"] {
  font-family: var(--font-body);
  font-size: 14.5px; line-height: 1.7; color: var(--bom-muted);
  padding: 18px 0; margin: 0 0 22px;
  border-top: 1px solid var(--bom-rule); border-bottom: 1px solid var(--bom-rule);
}

/* ---------- 03 · not the rhythm method ----------
   Two-column comparison from the billings-vs-rythmn mock. */
[data-bom="rhythm"] { background: var(--bom-paper); padding: 88px 0; }
[data-bom="rhythm-card"] {
  background: #FFFDFB;
  border: 1px solid var(--bom-rule);
  border-radius: 28px;
  padding: 52px 48px;
  margin-top: 40px;
  display: grid; grid-template-columns: 1fr 1px 1fr; gap: 44px; align-items: start;
  position: relative;
}
[data-bom="rhythm-div"] { background: var(--bom-rule); width: 1px; height: 100%; }
[data-bom="rhythm-badge"] {
  width: 62px; height: 62px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-headers); font-size: 27px; margin: 0 0 18px;
}
[data-bom="rhythm-col"][data-side="a"] [data-bom="rhythm-badge"] { background: rgba(168, 98, 74, 0.12); }
[data-bom="rhythm-col"][data-side="b"] [data-bom="rhythm-badge"] { background: rgba(110, 128, 96, 0.14); }
[data-bom="rhythm-name"] {
  font-family: var(--font-headers);
  font-size: 25px; letter-spacing: 0.06em; text-transform: uppercase; margin: 0 0 12px;
}
[data-bom="rhythm-col"][data-side="a"] [data-bom="rhythm-name"] { color: var(--bom-terracotta); }
[data-bom="rhythm-col"][data-side="b"] [data-bom="rhythm-name"] { color: var(--bom-sage); }
[data-bom="rhythm-underline"] { width: 60px; height: 2px; margin: 0 0 22px; }
[data-bom="rhythm-col"][data-side="a"] [data-bom="rhythm-underline"] { background: var(--bom-terracotta); }
[data-bom="rhythm-col"][data-side="b"] [data-bom="rhythm-underline"] { background: var(--bom-sage); }
[data-bom="rhythm-body"] {
  font-family: var(--font-body); font-size: 16.5px; line-height: 1.72;
  color: var(--bom-ink); margin: 0 0 28px;
}
[data-bom="rhythm-chip"] {
  display: block; font-family: var(--font-body); font-size: 14px;
  padding: 15px 20px; border-radius: 12px; color: var(--bom-ink);
}
[data-bom="rhythm-col"][data-side="a"] [data-bom="rhythm-chip"] { background: rgba(168, 98, 74, 0.08); }
[data-bom="rhythm-col"][data-side="b"] [data-bom="rhythm-chip"] { background: rgba(110, 128, 96, 0.1); }
[data-bom="rhythm-after"] {
  font-family: var(--font-body); font-size: 16.5px; line-height: 1.75;
  color: var(--bom-ink); margin: 38px auto 0; max-width: 780px; text-align: center;
}

/* ---------- 04 · the core principle ---------- */
[data-bom="principle"] { background: var(--cream); padding: 88px 0; }

/* ---------- 05 · the vocabulary of sensation ----------
   EIGHT rows, matching the live check-in. Column three carries the app's own
   plain-language description; there is deliberately no fertility-status
   column (see the header note). */
[data-bom="vocab"] { background: var(--bom-tint); padding: 88px 0; }
[data-bom="vocab-table"] {
  margin-top: 40px; background: #FFFDFB;
  border: 1px solid var(--bom-rule); border-radius: 24px; overflow: hidden;
}
[data-bom="vocab-row"] {
  display: grid; grid-template-columns: 210px 1fr; gap: 32px;
  align-items: center; padding: 24px 34px;
  border-bottom: 1px solid var(--bom-rule);
}
[data-bom="vocab-row"]:last-child { border-bottom: 0; }
[data-bom="vocab-row"][data-accent="peak"] { background: rgba(110, 128, 96, 0.07); }
[data-bom="vocab-row"][data-accent="other"] { background: rgba(66, 48, 32, 0.03); }
[data-bom="vocab-term"] {
  display: flex; align-items: center; gap: 16px;
  font-family: var(--font-headers); font-size: 25px; color: var(--bom-ink);
}
[data-bom="vocab-dot"] {
  width: 15px; height: 15px; border-radius: 50%; flex: none;
  border: 1px solid rgba(66, 48, 32, 0.22);
}
[data-bom="vocab-desc"] {
  font-family: var(--font-body); font-size: 15.5px; line-height: 1.68; color: var(--bom-ink);
}
[data-bom="vocab-desc"] em { color: var(--bom-muted); font-style: italic; }
[data-bom="vocab-foot"] {
  margin-top: 34px; text-align: center;
}

/* ---------- 06 · your baseline ---------- */
[data-bom="baseline"] { background: var(--cream); padding: 88px 0; }
/* The product note. Jubilee's draft explained BIP conceptually but never said
   the user declares one at setup — and that declaration changes how her
   moist/damp/wet days are read (/profile/mode, "Your infertile baseline").
   Folded in here rather than given its own section so the page keeps its
   rhythm. */
[data-bom="incorvia"] {
  margin-top: 36px; padding: 26px 30px;
  background: rgba(78, 95, 130, 0.06);
  border-left: 3px solid var(--button-primary);
  border-radius: 0 14px 14px 0;
}
[data-bom="incorvia-h"] {
  font-family: var(--font-body); font-size: 11.5px; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--button-primary); margin: 0 0 12px;
}
[data-bom="incorvia-p"] {
  font-family: var(--font-body); font-size: 15.5px; line-height: 1.7;
  color: var(--bom-ink); margin: 0;
}

/* ---------- 07 · Peak Day ---------- */
[data-bom="peak"] { background: var(--bom-paper); padding: 88px 0; }
[data-bom="peak-callout"] {
  margin-top: 34px; padding: 34px 38px;
  background: #FFFDFB; border: 1px solid var(--bom-rule); border-radius: 22px;
}

/* ---------- 08 · the shape of a cycle ----------
   Six steps. Step 03 is "Developing pattern" to match /today's live
   YOUR DEVELOPING PATTERN header. The mock's per-step fertility levels are
   deliberately not carried over. */
[data-bom="shape"] { background: var(--cream); padding: 88px 0; }
[data-bom="shape-grid"] {
  margin-top: 44px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
  gap: 20px;
}
[data-bom="shape-step"] {
  background: #FFFDFB; border: 1px solid var(--bom-rule);
  border-radius: 20px 20px 14px 14px; padding: 28px 24px 26px;
  display: flex; flex-direction: column;
}
[data-bom="shape-num"] {
  font-family: var(--font-body); font-size: 12px; font-weight: 600;
  letter-spacing: 0.14em; color: var(--bom-terracotta); margin: 0 0 12px;
}
[data-bom="shape-name"] {
  font-family: var(--font-headers); font-size: 23px; line-height: 1.2;
  color: var(--bom-ink); margin: 0 0 14px;
}
[data-bom="shape-body"] {
  font-family: var(--font-body); font-size: 14.5px; line-height: 1.65;
  color: var(--bom-muted); margin: 0;
}
[data-bom="shape-close"] { margin-top: 40px; text-align: center; }

/* ---------- 09 · the four rules (founder exception, locked) ---------- */
[data-bom="rules"] { background: var(--bom-tint); padding: 88px 0; }
[data-bom="rules-grid"] {
  margin-top: 40px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: 22px;
}
[data-bom="rule-card"] {
  background: #FFFDFB; border: 1px solid var(--bom-rule);
  border-radius: 20px; padding: 32px 30px;
  display: flex; flex-direction: column;
}
[data-bom="rule-tag"] {
  font-family: var(--font-body); font-size: 11px; font-weight: 600;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--bom-terracotta); margin: 0 0 14px;
}
[data-bom="rule-h"] {
  font-family: var(--font-headers); font-size: 22px; line-height: 1.3;
  color: var(--bom-ink); margin: 0 0 14px;
}
[data-bom="rule-p"] {
  font-family: var(--font-body); font-size: 15px; line-height: 1.68;
  color: var(--bom-muted); margin: 0;
}
[data-bom="rule-card"][data-kind="peak"] { border-color: rgba(110, 128, 96, 0.4); }
[data-bom="rule-card"][data-kind="peak"] [data-bom="rule-tag"] { color: var(--bom-sage); }

/* ---------- 10 · trying to conceive ---------- */
[data-bom="conceive"] { background: var(--cream); padding: 78px 0; }
[data-bom="conceive-card"] {
  max-width: 820px; margin: 0 auto;
  background: #FFFDFB; border: 1px solid var(--bom-rule);
  border-radius: 24px; padding: 46px 48px; text-align: center;
}

/* ---------- 11 · faith and fertility ---------- */
[data-bom="faith"] {
  position: relative; overflow: hidden;
  background: var(--bom-paper); padding: 92px 0;
}
[data-bom="faith-grid"] {
  display: grid; grid-template-columns: 0.92fr 1.08fr;
  gap: 60px; align-items: center; margin-bottom: 56px;
}
[data-bom="faith-cards"] {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr));
  gap: 20px;
}
[data-bom="faith-card"] {
  background: #FFFDFB; border: 1px solid var(--bom-rule);
  border-radius: 20px 20px 14px 14px; padding: 30px 26px;
}
[data-bom="faith-num"] {
  font-family: var(--font-headers); font-size: 22px;
  color: var(--bom-terracotta); margin: 0 0 14px;
}
[data-bom="faith-h"] {
  font-family: var(--font-headers); font-size: 22px; line-height: 1.25;
  color: var(--bom-ink); margin: 0 0 12px;
}
[data-bom="faith-p"] {
  font-family: var(--font-body); font-size: 14.5px; line-height: 1.65;
  color: var(--bom-muted); margin: 0;
}
[data-bom="faith-prose"] { margin-top: 56px; }
[data-bom="faith-block"] { margin-bottom: 34px; }
[data-bom="faith-block"]:last-child { margin-bottom: 0; }
[data-bom="faith-lead"] {
  font-family: var(--font-headers); font-size: 25px; line-height: 1.35;
  color: var(--bom-ink); margin: 0 0 12px;
}
[data-bom="faith-note"] {
  margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--bom-rule);
  font-family: var(--font-body); font-size: 14px; line-height: 1.7;
  color: var(--bom-muted);
}

/* ---------- 12 · a seventy-year story ---------- */
[data-bom="story"] { background: var(--cream); padding: 88px 0; }

/* ---------- 13 · effectiveness ----------
   Qualitative by founder decision 2026-08-24. The page previously claimed
   "0 to 0.5% per year, the same range as the oral contraceptive pill". No
   source supports that for Billings — the WHO five-country trial found 2.8
   method-related pregnancies per 100 woman-years, and the 2018 Obstet Gynecol
   systematic review puts BOM at 1.1-3.4 perfect use and 10.5-33.6 typical use.
   Corvia's own /billings-method-effectiveness page already carries the honest
   numbers, so the research link points there rather than restating them. */
[data-bom="effect"] { background: var(--bom-tint); padding: 88px 0; }
[data-bom="effect-link"] {
  display: inline-block; margin-top: 26px;
  font-family: var(--font-body); font-size: 15px; font-weight: 600;
  color: var(--button-primary); text-decoration: none;
  border-bottom: 1px solid rgba(78, 95, 130, 0.4); padding-bottom: 2px;
}
[data-bom="effect-link"]:hover { border-bottom-color: var(--button-primary); }

/* ---------- 14 · more than fertility ---------- */
[data-bom="record"] { background: var(--cream); padding: 88px 0; }
[data-bom="record-list"] { margin: 0 0 22px; padding: 0; list-style: none; }
[data-bom="record-list"] li {
  position: relative; padding-left: 26px; margin-bottom: 13px;
  font-family: var(--font-body); font-size: 16px; line-height: 1.7; color: var(--bom-ink);
}
[data-bom="record-list"] li::before {
  content: ''; position: absolute; left: 0; top: 11px;
  width: 7px; height: 7px; border-radius: 50%; background: var(--bom-terracotta);
}

/* ---------- 15 · learn it the right way ---------- */
[data-bom="learn"] { background: var(--bom-paper); padding: 88px 0; }
[data-bom="learn-actions"] {
  display: flex; flex-wrap: wrap; gap: 14px; margin-top: 32px;
}
[data-bom="learn-btn"] {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--button-primary); color: var(--cream);
  font-family: var(--font-body); font-size: 15.5px; font-weight: 600;
  text-decoration: none; padding: 17px 34px; border-radius: 12px;
  transition: background 0.15s;
}
[data-bom="learn-btn"]:hover { background: var(--button-hover); }
[data-bom="learn-btn"][data-variant="ghost"] {
  background: transparent; color: var(--bom-ink);
  border: 1px solid rgba(66, 48, 32, 0.28);
}
[data-bom="learn-btn"][data-variant="ghost"]:hover { background: rgba(66, 48, 32, 0.05); }
[data-bom="learn-note"] {
  margin-top: 32px; padding-top: 22px; border-top: 1px solid var(--bom-rule);
  font-family: var(--font-body); font-size: 13.5px; line-height: 1.7; color: var(--bom-muted);
}

/* ---------- 16 · where Corvia fits (+ the stamp bridge) ---------- */
[data-bom="fits"] {
  position: relative; overflow: hidden;
  background: var(--bom-tint); padding: 92px 0;
}
[data-bom="fits-grid"] {
  display: grid; grid-template-columns: 1.06fr 0.94fr;
  gap: 60px; align-items: center;
}
[data-bom="fits-steps"] { margin: 26px 0 26px; padding: 0; list-style: none; }
[data-bom="fits-steps"] li {
  font-family: var(--font-headers); font-size: 23px; line-height: 1.5;
  color: var(--bom-ink); padding: 9px 0 9px 26px; position: relative;
  border-bottom: 1px solid var(--bom-rule);
}
[data-bom="fits-steps"] li:last-child { border-bottom: 0; }
[data-bom="fits-steps"] li::before {
  content: ''; position: absolute; left: 0; top: 20px;
  width: 8px; height: 8px; border-radius: 50%; background: var(--bom-sage);
}

/* The stamp bridge. Mirrors the live /chart legend verbatim (hexes from
   Algorithm Spec §7, confirmed against the deployed app 2026-08-24) so the
   vocabulary here is the vocabulary she meets on day one. */
[data-bom="stamps"] {
  margin-top: 52px; background: #FFFDFB;
  border: 1px solid var(--bom-rule); border-radius: 24px; padding: 38px 40px;
}
[data-bom="stamps-h"] {
  font-family: var(--font-headers); font-size: 25px; color: var(--bom-ink); margin: 0 0 8px;
}
[data-bom="stamps-sub"] {
  font-family: var(--font-body); font-size: 15px; line-height: 1.7;
  color: var(--bom-muted); margin: 0 0 28px;
}
[data-bom="stamps-grid"] {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 176px), 1fr));
  gap: 16px 22px;
}
[data-bom="stamp"] { display: flex; align-items: center; gap: 12px; }
[data-bom="stamp-dot"] {
  width: 26px; height: 26px; border-radius: 50%; flex: none;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-body); font-size: 11.5px; font-weight: 700; color: var(--bom-ink);
}
[data-bom="stamp-label"] {
  font-family: var(--font-body); font-size: 14px; line-height: 1.4; color: var(--bom-ink);
}

/* ---------- branch decoration ----------
   Reuses the alpha-keyed brand branches already on the CDN. Black ink on a
   light ground, so low opacity — see the CLAUDE.md note on why opacity is not
   portable between the tan and black line art. */
[data-bom="faith"]::after,
[data-bom="fits"]::before {
  content: ''; position: absolute; pointer-events: none; z-index: 0;
  background-repeat: no-repeat; background-position: center; background-size: 100% auto;
}
[data-bom="faith"]::after {
  bottom: -40px; left: -54px; width: 300px; height: 190px; opacity: 0.09;
  background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4a9_corvia-branch-h-alpha.webp");
  transform: scaleX(-1);
}
[data-bom="fits"]::before {
  top: -34px; right: -40px; width: 240px; height: 305px; opacity: 0.08;
  background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a8b5618d04c77b8762da4be_corvia-branch-v-alpha.webp");
}
[data-bom="faith"]  > [data-bom="wrap"],
[data-bom="fits"]   > [data-bom="wrap"] { position: relative; z-index: 1; }

/* ---------- responsive ---------- */
@media screen and (max-width: 991px) {
  [data-bom="hero-grid"],
  [data-bom="faith-grid"],
  [data-bom="fits-grid"] { grid-template-columns: 1fr; gap: 44px; }
  [data-bom="hero-figure"] { max-width: 460px; }
  [data-bom="hero-h1"]  { font-size: 50px; }
  [data-bom="h2"]       { font-size: 38px; }
  [data-bom="rhythm-card"] { grid-template-columns: 1fr; gap: 36px; padding: 40px 32px; }
  [data-bom="rhythm-div"] { width: 100%; height: 1px; }
}

@media screen and (max-width: 767px) {
  [data-bom="hero"], [data-bom="faith"], [data-bom="fits"] { padding: 62px 0; }
  [data-bom="rhythm"], [data-bom="principle"], [data-bom="vocab"], [data-bom="baseline"],
  [data-bom="peak"], [data-bom="shape"], [data-bom="rules"], [data-bom="story"],
  [data-bom="effect"], [data-bom="record"], [data-bom="learn"] { padding: 62px 0; }
  [data-bom="hero-h1"] { font-size: 40px; }
  [data-bom="h2"] { font-size: 32px; }
  [data-bom="pull"] { font-size: 23px; }
  /* The sensation table collapses to stacked rows — a 210px fixed column
     inside a ~330px viewport was the sideways-scroll bug on the home page. */
  [data-bom="vocab-row"] { grid-template-columns: 1fr; gap: 12px; padding: 22px 24px; }
  [data-bom="vocab-term"] { font-size: 22px; }
  [data-bom="conceive-card"] { padding: 34px 26px; }
  [data-bom="stamps"] { padding: 30px 24px; }
  [data-bom="learn-actions"] { flex-direction: column; align-items: stretch; }
  [data-bom="learn-btn"] { justify-content: center; }
  [data-bom="faith"]::after, [data-bom="fits"]::before { display: none; }
}

/* ---------- swatches ----------
   Sensation dots use the app's stamp family so the colour a reader learns
   here is the colour she meets on the chart. Stamp hexes are Algorithm Spec
   §7, re-confirmed against the deployed /chart legend on 2026-08-24. */
[data-bom="vocab-dot"][data-s="dry"]       { background: #5CAB5E; }
[data-bom="vocab-dot"][data-s="sticky"]    { background: #5CAB5E; }
[data-bom="vocab-dot"][data-s="moist"]     { background: #E8C547; }
[data-bom="vocab-dot"][data-s="damp"]      { background: #E8C547; }
[data-bom="vocab-dot"][data-s="wet"]       { background: #FFFFFF; border-color: #4A3728; }
[data-bom="vocab-dot"][data-s="slippery"]  { background: #FFFFFF; border-color: #4A3728; border-width: 2px; }
[data-bom="vocab-dot"][data-s="bleeding"]  { background: #D94B3D; }
[data-bom="vocab-dot"][data-s="unsure"]    { background: #DDD4C8; border-style: dashed; border-color: #AAAAAA; }

[data-bom="stamp-dot"][data-s="dry"]       { background: #5CAB5E; border: 1.5px solid #3D8440; }
[data-bom="stamp-dot"][data-s="discharge"] { background: #E8C547; border: 1.5px solid #C5A020; }
[data-bom="stamp-dot"][data-s="possible"]  { background: #FFFFFF; border: 2px solid #4A3728; box-shadow: 0 1px 3px rgba(0,0,0,0.18); }
[data-bom="stamp-dot"][data-s="peak"]      { background: #FFFFFF; border: 2px solid #4A3728; box-shadow: 0 1px 3px rgba(0,0,0,0.18); }
[data-bom="stamp-dot"][data-s="postpeak"]  { background: #5CAB5E; border: 1.5px solid #3D8440; color: #FFFFFF; }
[data-bom="stamp-dot"][data-s="spotting"]  { background: #D94B3D; border: 1.5px dashed #B03025; }
[data-bom="stamp-dot"][data-s="bleeding"]  { background: #D94B3D; border: 1.5px solid #B03025; }
[data-bom="stamp-dot"][data-s="unobserved"]{ background: #D4894A; color: #FFFFFF; }
[data-bom="stamp-dot"][data-s="intercourse"] { background: #5CAB5E; border: 1.5px solid #3D8440; color: #FFFFFF; }

/* ---------- /billings-method fixes, same session 2026-08-24 ---------- */

/* The six cycle steps divide evenly by 3, 2 and 1, so the columns are set
   explicitly at each breakpoint. auto-fit picked 4 at 1440px and left a
   two-card orphan row. Six across matched the mock but the mock's captions run
   three words; Jubilee's run twenty, and at 170px they wrapped to eleven lines.
   3x2 is the layout this copy length actually wants. */
[data-bom="shape-grid"] { grid-template-columns: repeat(3, 1fr); }
@media screen and (max-width: 767px)  { [data-bom="shape-grid"] { grid-template-columns: repeat(2, 1fr); } }
@media screen and (max-width: 479px)  { [data-bom="shape-grid"] { grid-template-columns: 1fr; } }

/* Rhythm-vs-Billings: the two columns carry unequal copy, so the closing chip
   has to be pushed to a shared baseline rather than floating up under the
   shorter one. margin-top:auto belongs on the element that STARTS the bottom
   group. */
[data-bom="rhythm-col"] { display: flex; flex-direction: column; height: 100%; }
[data-bom="rhythm-chip"] { margin-top: auto; }
[data-bom="rhythm-card"] { align-items: stretch; }

/* Badge glyphs inherit body ink by default, which reads as a smudge. Tint each
   to its column's accent. */
[data-bom="rhythm-col"][data-side="a"] [data-bom="rhythm-badge"] { color: var(--bom-terracotta); }
[data-bom="rhythm-col"][data-side="b"] [data-bom="rhythm-badge"] { color: var(--bom-sage); }

/* Stacked figures need the same cap the hero and course figures already have,
   or a 4:5 arch fills the full column height on tablet. */
@media screen and (max-width: 991px) {
  [data-bom="faith-figure"], [data-bom="fits-figure"] { max-width: 460px; }
}

/* ---------- /billings-method detail pass, 2026-08-24 ----------
   Second look at Jubilee's inspo mocks. Adds the motifs that make the mock
   set read as one family: ornament dividers, letterspaced serif caps for
   term names, circular line-art icon badges, arch-topped cards, the vs.
   medallion, and tick/cross chips.

   Icons are inline data-URI SVG in CSS rather than markup: WHTML strips src
   from unregistered <img>, and CSS is the one layer that cannot be rewritten
   out from under the page.

   Icon colours follow the APP's stamp family, not the mock's fertility
   gradient. The mock tints DRY tan, MOIST amber, WET blue and SLIPPERY deep
   green as a rising fertility ramp; that ramp is a status scale, which is
   exactly what the founder exception does not cover. Same visual richness,
   colours a reader will actually meet on her chart. */

[data-bom="flourish"] {
  display: flex; align-items: center; justify-content: center; gap: 18px;
  margin: 0 auto 24px; max-width: 300px;
}
[data-bom="flourish"]::before, [data-bom="flourish"]::after {
  content: ''; flex: 1; height: 1px; background: linear-gradient(to right, transparent, rgba(66,48,32,0.22), transparent);
}
[data-bom="flourish"] > span {
  /* Brand cross, geometry from the arch apex (brand/assets/arch-cross.svg):
     bar ~26% down the upright, round caps. The flanking botanical curls were
     cut 2026-09-05 on founder feedback. */
  width: 26px; height: 22px; flex: none; background-repeat: no-repeat; background-position: center;
  background-size: 20px 20px;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%20fill%3D%27none%27%20stroke%3D%27%23A8624A%27%20stroke-width%3D%271.2%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M10%203.2V16.8%27%2F%3E%3Cpath%20d%3D%27M5.2%206.8h9.6%27%2F%3E%3C%2Fsvg%3E");
}
[data-bom="flourish"][data-align="left"] { margin-left: 0; }

/* Hairline + diamond under a card title. The mock uses it on every card in
   cycle-asset-2 and cycle-asset-3. */
[data-bom="diamond"] {
  position: relative; height: 1px; width: 78px; margin: 0 0 14px;
  background: linear-gradient(to right, transparent, rgba(66,48,32,0.2), transparent);
}
[data-bom="diamond"]::after {
  content: ''; position: absolute; left: 50%; top: 50%;
  width: 5px; height: 5px; margin: -2.5px 0 0 -2.5px; transform: rotate(45deg);
  background: var(--bom-terracotta);
}
[data-bom="diamond"][data-align="center"] { margin-left: auto; margin-right: auto; }

/* Sensation badges: the mock's circular line-art icons, carrying the app's
   stamp colour rather than the mock's fertility ramp. */
[data-bom="vocab-icon"] {
  width: 46px; height: 46px; border-radius: 50%; flex: none;
  background-repeat: no-repeat; background-position: center; background-size: 23px 23px;
  border: 1px solid transparent;
}
[data-bom="vocab-icon"][data-s="dry"] { background-color: rgba(92,171,94,0.16); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%233D8440%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%274%27%2F%3E%3Cpath%20d%3D%27M12%202v2M12%2020v2M4.9%204.9l1.4%201.4M17.7%2017.7l1.4%201.4M2%2012h2M20%2012h2M4.9%2019.1l1.4-1.4M17.7%206.3l1.4-1.4%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="vocab-icon"][data-s="sticky"] { background-color: rgba(92,171,94,0.16); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%233D8440%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M6.5%2018a4.5%204.5%200%200%201%20.3-9%206%206%200%200%201%2011.4%201.6A3.9%203.9%200%200%201%2017.5%2018Z%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="vocab-icon"][data-s="moist"] { background-color: rgba(232,197,71,0.22); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23B8912A%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203.5c3.2%203.6%205%206.2%205%208.6a5%205%200%200%201-10%200c0-2.4%201.8-5%205-8.6Z%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="vocab-icon"][data-s="damp"] { background-color: rgba(232,197,71,0.22); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23B8912A%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M3%2010c2-1.6%203.4-1.6%205.4%200s3.4%201.6%205.4%200%203.4-1.6%205.4%200%27%2F%3E%3Cpath%20d%3D%27M3%2015c2-1.6%203.4-1.6%205.4%200s3.4%201.6%205.4%200%203.4-1.6%205.4%200%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="vocab-icon"][data-s="wet"] { background-color: #FFFFFF; background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23423020%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M3%208c2-1.6%203.4-1.6%205.4%200s3.4%201.6%205.4%200%203.4-1.6%205.4%200%27%2F%3E%3Cpath%20d%3D%27M3%2012.5c2-1.6%203.4-1.6%205.4%200s3.4%201.6%205.4%200%203.4-1.6%205.4%200%27%2F%3E%3Cpath%20d%3D%27M3%2017c2-1.6%203.4-1.6%205.4%200s3.4%201.6%205.4%200%203.4-1.6%205.4%200%27%2F%3E%3C%2Fsvg%3E"); border-color: rgba(66,48,32,0.35); }
[data-bom="vocab-icon"][data-s="slippery"] { background-color: #FFFFFF; background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23423020%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M15.5%205.5c-4%200-6%202.2-6%204.4%200%203.6%206%202.4%206%206%200%202.2-2%204.1-6%204.1%27%2F%3E%3C%2Fsvg%3E"); border-color: rgba(66,48,32,0.55); border-width: 2px; }
[data-bom="vocab-icon"][data-s="bleeding"] { background-color: rgba(217,75,61,0.14); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23B03025%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203c3.4%203.9%205.3%206.6%205.3%209.1A5.3%205.3%200%200%201%2012%2017.4a5.3%205.3%200%200%201-5.3-5.3C6.7%209.6%208.6%206.9%2012%203Z%27%2F%3E%3Cpath%20d%3D%27M9%2020.5h6%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="vocab-icon"][data-s="unsure"] { background-color: rgba(66,48,32,0.07); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%238A8178%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279%27%2F%3E%3Cpath%20d%3D%27M9.4%209.3a2.7%202.7%200%200%201%205.2.9c0%201.8-2.6%202.2-2.6%204%27%2F%3E%3Cpath%20d%3D%27M12%2017.4h.01%27%2F%3E%3C%2Fsvg%3E"); border-color: rgba(66,48,32,0.18); border-style: dashed; }

/* Rhythm vs Billings: calendar and branch, per the mock. */
[data-bom="rhythm-badge"] {
  background-repeat: no-repeat; background-position: center; background-size: 27px 27px; font-size: 0;
}
[data-bom="rhythm-col"][data-side="a"] [data-bom="rhythm-badge"] { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23A8624A%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%273.5%27%20y%3D%275%27%20width%3D%2717%27%20height%3D%2715.5%27%20rx%3D%272.5%27%2F%3E%3Cpath%20d%3D%27M3.5%209.5h17M8%203v4M16%203v4%27%2F%3E%3Cpath%20d%3D%27M8%2013h.01M12%2013h.01M16%2013h.01M8%2016.5h.01M12%2016.5h.01%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="rhythm-col"][data-side="b"] [data-bom="rhythm-badge"] { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%236E8060%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2021V9%27%2F%3E%3Cpath%20d%3D%27M12%2012.5c0-3%202-5.2%205.2-5.6C17%2010%2015%2012.4%2012%2012.5Z%27%2F%3E%3Cpath%20d%3D%27M12%2016.5c0-2.4%201.6-4.2%204.2-4.5-.2%202.4-1.8%204.4-4.2%204.5Z%27%2F%3E%3Cpath%20d%3D%27M12%2012c0-3-2-5.2-5.2-5.6C7%209.5%209%2011.9%2012%2012Z%27%2F%3E%3C%2Fsvg%3E"); }

/* The vs. medallion sitting on the divider. */
[data-bom="rhythm-div"] { position: relative; }
[data-bom="rhythm-div"]::after {
  content: 'vs.'; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 54px; height: 54px; border-radius: 50%; background: #FFFDFB;
  border: 1px solid rgba(66,48,32,0.16);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-headers); font-style: italic; font-size: 20px; color: var(--bom-muted);
}

/* Tick and cross on the closing chips. */
[data-bom="rhythm-chip"] { display: flex; align-items: center; gap: 12px; }
[data-bom="rhythm-chip"]::before {
  content: ''; width: 22px; height: 22px; flex: none; border-radius: 50%;
  border: 1.5px solid currentColor; background-repeat: no-repeat; background-position: center; background-size: 13px 13px;
}
[data-bom="rhythm-col"][data-side="a"] [data-bom="rhythm-chip"]::before { color: rgba(168,98,74,0.85); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23A8624A%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M6.5%206.5%2017.5%2017.5M17.5%206.5%206.5%2017.5%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="rhythm-col"][data-side="b"] [data-bom="rhythm-chip"]::before { color: rgba(110,128,96,0.9); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%236E8060%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27m5%2012.5%204.5%204.5L19%207.5%27%2F%3E%3C%2Fsvg%3E"); }

/* Faith cards: the mock gives each an icon medallion. */
[data-bom="faith-icon"] {
  width: 52px; height: 52px; border-radius: 50%; margin: 0 0 18px;
  background-repeat: no-repeat; background-position: center; background-size: 25px 25px;
}
[data-bom="faith-icon"][data-i="body"] { background-color: rgba(168,98,74,0.13); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23A8624A%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%277%27%20r%3D%273.2%27%2F%3E%3Cpath%20d%3D%27M12%2010.2V21M8.4%2014h7.2%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="faith-icon"][data-i="act"] { background-color: rgba(110,128,96,0.16); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%236E8060%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2020s-7-4.5-7-9.4A3.9%203.9%200%200%201%2012%208a3.9%203.9%200%200%201%207%202.6C19%2015.5%2012%2020%2012%2020Z%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="faith-icon"][data-i="pray"] { background-color: rgba(78,95,130,0.13); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%234E5F82%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2021V10%27%2F%3E%3Cpath%20d%3D%27M12%2010%209%206.5a2%202%200%200%201%203-2.6%202%202%200%200%201%203%202.6Z%27%2F%3E%3Cpath%20d%3D%27M7%2021h10%27%2F%3E%3C%2Fsvg%3E"); }
[data-bom="faith-icon"][data-i="share"] { background-color: rgba(196,150,90,0.18); background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23A07A3C%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%278%27%20cy%3D%278%27%20r%3D%272.6%27%2F%3E%3Ccircle%20cx%3D%2716%27%20cy%3D%278%27%20r%3D%272.6%27%2F%3E%3Cpath%20d%3D%27M3.5%2019c0-2.7%202-4.4%204.5-4.4S12.5%2016.3%2012.5%2019%27%2F%3E%3Cpath%20d%3D%27M11.5%2019c0-2.7%202-4.4%204.5-4.4S20.5%2016.3%2020.5%2019%27%2F%3E%3C%2Fsvg%3E"); }

/* ---------- typography motifs from the mock set ---------- */

/* Term and step names run as letterspaced serif caps in every mock. */
[data-bom="vocab-term"] {
  font-size: 19px; letter-spacing: 0.11em; text-transform: uppercase;
  gap: 18px; color: var(--bom-ink);
}
[data-bom="shape-name"] {
  font-size: 17px; letter-spacing: 0.1em; text-transform: uppercase; line-height: 1.35;
}
[data-bom="rhythm-name"] { font-size: 22px; letter-spacing: 0.13em; }
[data-bom="faith-h"]     { font-size: 20px; }

/* Per-step name colour, echoing the mock's stepped palette without importing
   its fertility captions. */
[data-bom="shape-step"][data-step="1"] [data-bom="shape-name"] { color: #B0503F; }
[data-bom="shape-step"][data-step="2"] [data-bom="shape-name"] { color: #9A7B44; }
[data-bom="shape-step"][data-step="3"] [data-bom="shape-name"] { color: #5F7A52; }
[data-bom="shape-step"][data-step="4"] [data-bom="shape-name"] { color: #4E5F82; }
[data-bom="shape-step"][data-step="5"] [data-bom="shape-name"] { color: #A07A3C; }
[data-bom="shape-step"][data-step="6"] [data-bom="shape-name"] { color: #6E6480; }

/* Numbered medallion. The mock puts the step number in a filled circle rather
   than setting it as loose type. */
[data-bom="shape-num"] {
  width: 30px; height: 30px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; letter-spacing: 0; color: #FFFFFF; margin: 0 0 16px;
}
[data-bom="shape-step"][data-step="1"] [data-bom="shape-num"] { background: #B0503F; }
[data-bom="shape-step"][data-step="2"] [data-bom="shape-num"] { background: #9A7B44; }
[data-bom="shape-step"][data-step="3"] [data-bom="shape-num"] { background: #5F7A52; }
[data-bom="shape-step"][data-step="4"] [data-bom="shape-num"] { background: #4E5F82; }
[data-bom="shape-step"][data-step="5"] [data-bom="shape-num"] { background: #A07A3C; }
[data-bom="shape-step"][data-step="6"] [data-bom="shape-num"] { background: #6E6480; }

/* An italicised word inside a display heading is the mock set's signature
   typographic move ("The *shape* of a cycle"). */
[data-bom="h2"] em, [data-bom="hero-h1"] em, [data-bom="course-sub"] em {
  font-style: italic; color: inherit;
}

/* ---------- arch-topped cards ----------
   cycle-asset-2 and cycle-asset-3 both set their cards as shallow arches. A
   softer curve than the photo arch, which would look domed at card scale. */
[data-bom="shape-step"], [data-bom="faith-card"] {
  border-radius: 62px 62px 14px 14px / 44px 44px 14px 14px;
  padding-top: 34px;
}

/* The decorative arch behind this section was promoted to a brand-level
   component on 2026-08-24 — see "BRAND ASSET — the Corvia arch" at the foot of
   this file. The markup now carries [data-brand="arch-frame"]; the placement
   override lives beside the component. */
[data-bom="faith"] > [data-bom="wrap"] { position: relative; z-index: 1; }

/* ---------- stamps: tighten to the mock's card rhythm ---------- */
[data-bom="stamps"] { border-radius: 24px; }

@media screen and (max-width: 991px) {
  /* The vs. medallion sits on a horizontal rule once the columns stack. */
  [data-bom="rhythm-div"]::after { width: 46px; height: 46px; font-size: 18px; }
}
@media screen and (max-width: 767px) {
  [data-bom="vocab-term"] { font-size: 17px; gap: 14px; }
  [data-bom="vocab-icon"] { width: 40px; height: 40px; background-size: 20px 20px; }
  [data-bom="shape-step"], [data-bom="faith-card"] { border-radius: 44px 44px 14px 14px / 30px 30px 14px 14px; }
}

/* Cross at the apex of the faith arch, per cycle-asset-3. */

/* ---------- dotted leader ----------
   cycle-asset-1 runs a dotted leader from each term across to its description.
   Only drawn where the row is still two columns; once the row stacks the
   leader would point at nothing. */
@media screen and (min-width: 768px) {
  [data-bom="vocab-term"] { position: relative; padding-right: 30px; }
  [data-bom="vocab-term"]::after {
    content: ''; position: absolute; right: -2px; bottom: 8px; width: 26px;
    border-bottom: 1px dotted rgba(66, 48, 32, 0.32);
  }
  [data-bom="vocab-row"] { grid-template-columns: 240px 1fr; gap: 26px; }
}

/* (The "enclose, never intersect" sizing this section needed is now recorded on
   the brand component itself as rule 1.) */

/* Clasped hands did not survive the downscale to 25px; a rayed cross does. */
[data-bom="faith-icon"][data-i="pray"] { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%234E5F82%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%205.5v14M8%2010h8%27%2F%3E%3Cpath%20d%3D%27M12%202.6v1.4M9.6%204.1l.7%201.2M14.4%204.1l-.7%201.2%27%2F%3E%3C%2Fsvg%3E"); }

/* Four rule cards: auto-fit chose 3 and left the Peak Rule alone on a second
   row. Four across would be ~250px, and Rule 2's body runs forty words, so
   2x2 is the honest fit for this copy. Same orphan lesson as the cycle grid.
   The faith cards stay 4-across because their captions run under ten words. */
[data-bom="rules-grid"] { grid-template-columns: repeat(2, 1fr); }
@media screen and (max-width: 767px) { [data-bom="rules-grid"] { grid-template-columns: 1fr; } }


/* ==========================================================================
   BRAND ASSET — the Corvia arch
   ==========================================================================
   A hairline arch with a cross at its apex, sitting behind a section's content.
   Originated on /billings-method as [data-bom="faith-frame"] from Jubilee's
   cycle-asset-3 mock; promoted to a brand-level component 2026-08-24 at Will's
   request so it can be reused anywhere.

   The shape carries the same architectural language as the photo arch
   (ARCH_RADIUS in the app's ArchCard.tsx) but reads as a chapel apse rather
   than a card, which is why the cross belongs on it and not on the photo mask.

   USAGE
     <div data-brand="arch-frame"></div>
   as a DIRECT CHILD of a section that is position:relative. Then tune it from
   the placement rule, never by editing the component:

     .my-section > [data-brand="arch-frame"] {
       --arch-ground: var(--cream);   // MUST match the band behind it
       --arch-height: 900px;
       --arch-top: 28px;
     }

   --arch-ground is the one variable you cannot skip. The cross sits ON the
   arch's own hairline, so it needs an opaque patch of the section's background
   behind it to knock the line out; set it wrong and a stroke runs through the
   cross.

   TWO RULES LEARNED THE HARD WAY (2026-08-24):
   1. The arch must be WIDER than the text column it sits behind. The first cut
      was narrower, so its two sides ran down through live paragraph copy
      instead of around it. Enclose, never intersect.
   2. In a section with overflow:hidden, make it TALLER than the section so the
      sides clip at the bottom edge. A frame that ends inside the section shows
      two hairlines stopping in mid-air.

   Hidden below 992px: at tablet width there is no room for it to clear the
   content, and rule 1 fails.
   ========================================================================== */

[data-brand="arch-frame"] {
  --arch-width:  min(1280px, 96%);
  --arch-height: 620px;
  --arch-top:    18px;
  --arch-curve:  260px;
  --arch-ink:    rgba(168, 98, 74, 0.16);
  --arch-ground: var(--cream);
  --arch-cross:  30px;

  position: absolute;
  top: var(--arch-top);
  left: 50%;
  transform: translateX(-50%);
  width: var(--arch-width);
  height: var(--arch-height);
  pointer-events: none;
  z-index: 0;
  border: 1px solid var(--arch-ink);
  border-bottom: 0;
  border-radius: 50% 50% 0 0 / var(--arch-curve) var(--arch-curve) 0 0;
}
[data-brand="arch-frame"]::after {
  content: '';
  position: absolute;
  top: calc(var(--arch-cross) / -2);
  left: 50%;
  margin-left: calc(var(--arch-cross) / -2);
  width: var(--arch-cross);
  height: var(--arch-cross);
  background-color: var(--arch-ground);
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23A8624A%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%204v15M7%209h10%27%2F%3E%3C%2Fsvg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 73% 73%;
}
@media screen and (max-width: 991px) {
  [data-brand="arch-frame"] { display: none; }
}

/* ---- placement: /billings-method faith band ---- */
[data-bom="faith"] > [data-brand="arch-frame"] {
  --arch-ground: var(--bom-paper);
  --arch-width:  min(1280px, 96%);
  --arch-height: 620px;
  --arch-top:    18px;
  --arch-curve:  260px;
}

/* ---- placement: home hero ----
   Section is 793px tall with overflow:hidden and a cream ground, and its
   content column is 1160px wide, so the arch runs 1320px and 900px tall: wider
   than the copy on both sides, and clipped at the bottom rather than stopping
   short. position/z-index are restated because `[class^="hero-new"] > *` sets
   position:relative and z-index:1 on every direct child. */
.hero-new > [data-brand="arch-frame"],
section[class^="hero-new"] > [data-brand="arch-frame"],
section[class*=" hero-new"] > [data-brand="arch-frame"] {
  position: absolute;
  z-index: 0;
  --arch-ground: var(--cream);
  --arch-width:  min(1320px, 94%);
  --arch-height: 900px;
  --arch-top:    28px;
  --arch-curve:  300px;
  --arch-ink:    rgba(168, 98, 74, 0.14);
}

/* ==========================================================================
   Journal CMS Collection Lists — 2026-09-04
   ==========================================================================
   The Journal moved from a JS-painted registry to real Webflow CMS Collection
   Lists, so /blog and the four pillar hubs now server-render their article
   cards. Crawlers that do not execute JS previously saw five empty pages.

   Webflow emits its own wrapper markup for a Collection List
   (.w-dyn-list > .w-dyn-items > .w-dyn-item). `.journal-grid` only ever
   existed in this stylesheet — the old JS created that div at runtime, so it
   was never registered in the Style Manager and cannot be applied to a
   Designer element. Style Webflow's own .w-dyn-items instead; it is the same
   box in the same place.

   The card image is now a real <img> rather than a background div, so the
   listing carries alt text a crawler can read. .journal-card-image was written
   for a background element, hence the object-fit rule below. */

.journal-shell .w-dyn-items,
.journal-listing-cms .w-dyn-items {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 28px;
}
.journal-shell .w-dyn-item,
.journal-listing-cms .w-dyn-item { display: flex; }
.journal-shell .w-dyn-item > .journal-card,
.journal-listing-cms .w-dyn-item > .journal-card { width: 100%; }

/* .journal-card-image was authored as a background container; it is now an
   <img> so it needs object-fit to crop the same way. */
img.journal-card-image {
  display: block;
  width: 100%;
  object-fit: cover;
  object-position: center 25%;
}

/* Empty state should never look like a broken page. */
.journal-shell .w-dyn-empty {
  background: transparent;
  padding: 32px 0;
  font-family: var(--font-body);
  font-size: 15px;
  color: #8B6354;
}

/* ---------- Journal article template: "Keep reading" block (2026-09-04) ----------
   The static articles had a JS-filled .article-related sentinel; the CMS
   template renders a real Collection List instead. .article-related-eyebrow
   only ever existed in this stylesheet (the old JS created that element at
   runtime), so it is not applicable to a Designer element — style the heading
   by position instead. */
.article-shell > .article-related {
  max-width: 900px;
  margin: 72px auto 0;
  padding: 44px 0 0;
  border-top: 1px solid rgba(66, 48, 32, 0.12);
}
.article-shell > .article-related > h2 {
  margin: 0 0 26px;
  font-family: var(--font-body);
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 600;
  color: #8B6354;
}
.article-shell > .article-related .w-dyn-items {
  display: grid;
  /* Explicit 3 across: the block always holds exactly three cards, and
     auto-fill inside the article column was resolving to 2 + 1. */
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
@media (max-width: 900px) {
  .article-shell > .article-related .w-dyn-items { grid-template-columns: repeat(2, 1fr); }
}
.article-shell > .article-related .w-dyn-item { display: flex; }
.article-shell > .article-related .journal-card { width: 100%; }
.article-shell > .article-related .journal-card-inner { padding: 18px 20px 20px; gap: 8px; }
.article-shell > .article-related img.journal-card-image { aspect-ratio: 16 / 10; height: auto; }
.article-shell > .article-related .journal-card-title { font-size: 19px; }
.article-shell > .article-related .journal-card-excerpt { font-size: 14px; line-height: 1.5; }
.article-shell > .article-related .w-dyn-empty { display: none; }

@media (max-width: 767px) {
  .article-shell > .article-related { margin-top: 52px; padding-top: 34px; }
  .article-shell > .article-related .w-dyn-items { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Journal article body typography — CMS rich text (2026-09-04)
   ==========================================================================
   REGRESSION FIX. The static articles styled .article-p / .article-h2 /
   .article-lede-p directly. Moving the body into a CMS RichText field strips
   those classes by design — Webflow emits bare <p>/<h2>/<h3> inside
   .w-richtext — and nothing in this stylesheet targeted .w-richtext, so the
   articles fell back to Webflow defaults: 14px Montserrat, 20px line-height,
   #333, 10px margins, and sans-serif headings. That is what made them read as
   blocky and cramped.

   These rules restore the original article typography. Values are lifted from
   .article-p, .article-h2 and .article-lede-p so the CMS articles match the
   static ones they replaced. Scoped to .article-shell so the Journal card
   excerpts and other rich text are unaffected. */

.article-shell .w-richtext {
  font-family: var(--font-body);
  color: var(--deep-brown);
}

/* Body copy — was 17px / 1.75 on .article-p */
.article-shell .w-richtext p {
  margin: 0 0 18px;
  font-size: 17px;
  line-height: 1.75;
  color: var(--deep-brown);
}

/* The opening paragraphs carried .article-lede-p: larger, serif, a standfirst.
   Only the first paragraph of the body gets it. */
.article-shell .w-richtext > p:first-child {
  font-family: var(--font-headers);
  font-size: 19px;
  line-height: 1.7;
  margin-bottom: 20px;
}

/* Section headings — was 30px Cormorant on .article-h2 */
.article-shell .w-richtext h2 {
  margin: 44px 0 18px;
  font-family: var(--font-headers);
  font-size: 30px;
  line-height: 1.2;
  font-weight: 500;
  color: var(--deep-brown);
}
.article-shell .w-richtext > h2:first-child { margin-top: 0; }

/* The FAQ questions at the foot of each article render as h3. */
.article-shell .w-richtext h3 {
  margin: 30px 0 10px;
  font-family: var(--font-headers);
  font-size: 22px;
  line-height: 1.3;
  font-weight: 500;
  color: var(--deep-brown);
}
.article-shell .w-richtext h4 {
  margin: 26px 0 10px;
  font-family: var(--font-headers);
  font-size: 19px;
  line-height: 1.35;
  font-weight: 500;
  color: var(--deep-brown);
}

/* Links keep the understated brown underline the static articles used, rather
   than Webflow's default blue. */
.article-shell .w-richtext a {
  color: var(--deep-brown);
  text-decoration: underline;
  text-decoration-color: rgba(66, 48, 32, 0.35);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}
.article-shell .w-richtext a:hover { text-decoration-color: var(--deep-brown); }

.article-shell .w-richtext strong { font-weight: 600; }
.article-shell .w-richtext em { font-style: italic; }

.article-shell .w-richtext ul,
.article-shell .w-richtext ol { margin: 0 0 18px; padding-left: 22px; }
.article-shell .w-richtext li {
  margin-bottom: 9px;
  font-size: 17px;
  line-height: 1.7;
  color: var(--deep-brown);
}

/* In-body article images (Jubilee's explainer graphics, first used 2026-09-11).
   Webflow wraps a rich-text image in figure.w-richtext-figure-type-image > div > img;
   nothing here targeted those, so an inserted graphic shipped unstyled. Full measure
   of the reading column, arch-free (these are already composed artwork). */
.article-shell .w-richtext figure {
  margin: 34px 0; max-width: 100%;
}
.article-shell .w-richtext figure div { line-height: 0; }
.article-shell .w-richtext figure img,
.article-shell .w-richtext > img {
  display: block; width: 100%; height: auto; border-radius: 14px;
}
.article-shell .w-richtext figure figcaption {
  font-family: var(--font-headers); font-style: italic;
  font-size: 15px; line-height: 1.5; color: var(--ui-text-muted);
  text-align: center; margin-top: 12px;
}
@media screen and (max-width: 767px) {
  .article-shell .w-richtext figure { margin: 26px 0; }
}

.article-shell .w-richtext blockquote {
  margin: 26px 0;
  padding: 4px 0 4px 22px;
  border-left: 2px solid rgba(168, 98, 74, 0.4);
  font-family: var(--font-headers);
  font-size: 21px;
  line-height: 1.5;
  font-style: italic;
  color: var(--deep-brown);
}

/* Body text holds the site reading column (Will, 2026-09-05). The CMS
   migration capped this at 660px citing a 17px measure, but body renders at
   19px, where --col-read is ~75 characters per line. Scoping stays
   .article-shell .w-richtext so Journal card excerpts are unaffected. */
.article-shell .w-richtext { max-width: var(--col-read); }

@media (max-width: 767px) {
  .article-shell .w-richtext p,
  .article-shell .w-richtext li { font-size: 16px; }
  .article-shell .w-richtext > p:first-child { font-size: 18px; }
  .article-shell .w-richtext h2 { font-size: 24px; margin-top: 34px; }
  .article-shell .w-richtext h3 { font-size: 20px; }
}


/* ---------- /billings-101 LESSON PAGES (CMS template, 2026-09-05) ----------
   Server-rendered course lessons, fed from the app's lessons.ts by
   scripts/sync_learn.py (source chain in that file's docstring). The reading
   experience reuses the .article-shell family; this region adds only what a
   lesson has and an article does not. */
[data-lp="kicker"] {
  margin: 0 0 12px;
  font-family: var(--font-body);
  font-size: 12.5px; font-weight: 600;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: #8B6354;
}
[data-lp="article"] .w-richtext figure { margin: 34px 0; }
[data-lp="article"] .w-richtext figure img {
  max-width: 100%; height: auto; display: block; margin: 0 auto;
}
[data-lp="article"] .w-richtext figcaption {
  margin-top: 12px;
  font-size: 13.5px; line-height: 1.55; text-align: center;
  color: var(--bom-muted);
}
[data-lp="lessonnav"] {
  display: flex; justify-content: space-between; align-items: baseline; gap: 24px;
  margin: 48px 0 8px; padding-top: 26px;
  border-top: 1px solid rgba(66, 48, 32, 0.12);
}
[data-lp="lessonnav"] a {
  font-family: var(--font-body); font-size: 15px; font-weight: 600;
  color: var(--bom-terracotta); text-decoration: none;
}
[data-lp="lessonnav"] a:hover { text-decoration: underline; text-underline-offset: 3px; }
[data-lp="next"] { margin-left: auto; text-align: right; }
@media (max-width: 767px) {
  [data-lp="lessonnav"] { flex-direction: column; gap: 12px; }
  [data-lp="next"] { margin-left: 0; text-align: left; }
}

/* The course-overview tiles on /learn-the-billings-method became links when
   the lessons shipped; the tile look is unchanged. */
a.learn-lesson-tile { text-decoration: none; color: inherit; }
a.learn-lesson-tile:hover .learn-lesson-title { color: var(--bom-terracotta); }

/* ---------- Billings 101 certificate + reading progress (2026-09-05) ------
   The claim band on /learn-the-billings-method (data-cert namespace) and the
   localStorage read-state on the syllabus tiles. The certificate image is
   drawn on a canvas in corvia-site.js; nothing here renders it. */
[data-cert="band"] {
  background: var(--bom-paper);
  border-top: 1px solid var(--bom-rule);
  padding: 96px 24px 104px;
}
[data-cert="inner"] { max-width: 620px; margin: 0 auto; text-align: center; }
[data-cert="eyebrow"] {
  margin: 0 0 14px;
  font-family: var(--font-body); font-size: 13px; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase; color: #8B6354;
}
[data-cert="h"] {
  margin: 0 0 16px;
  font-family: var(--font-headers); font-size: var(--type-h2);
  line-height: 1.12; font-weight: 400; color: var(--deep-brown);
}
[data-cert="p"] {
  margin: 0 auto; max-width: 520px;
  font-family: var(--font-body); font-size: 16.5px; line-height: 1.7;
  color: var(--deep-brown);
}
[data-cert="form-slot"] .w-form { margin: 30px 0 0; }
[data-cert="form-slot"] form {
  display: grid; grid-template-columns: 1fr 1fr auto; gap: 6px 12px;
  align-items: end; text-align: left; max-width: 560px; margin: 0 auto;
}
[data-cert="form-slot"] label {
  margin: 0 0 2px;
  font-family: var(--font-body); font-size: 12px; font-weight: 600;
  letter-spacing: 0.07em; text-transform: uppercase; color: var(--bom-muted);
}
[data-cert="form-slot"] label:nth-of-type(1) { grid-column: 1; grid-row: 1; }
[data-cert="form-slot"] label:nth-of-type(2) { grid-column: 2; grid-row: 1; }
[data-cert="form-slot"] input[type="text"],
[data-cert="form-slot"] input[type="email"] {
  width: 100%; height: auto; margin: 0; padding: 13px 14px;
  font-family: var(--font-body); font-size: 15px; line-height: 1.3;
  color: var(--deep-brown);
  background: #FFFFFF; border: 1px solid rgba(66, 48, 32, 0.22); border-radius: 10px;
}
[data-cert="form-slot"] input[type="text"]  { grid-column: 1; grid-row: 2; }
[data-cert="form-slot"] input[type="email"] { grid-column: 2; grid-row: 2; }
[data-cert="form-slot"] input[type="submit"] {
  grid-column: 3; grid-row: 2;
  padding: 14px 26px; border: none; border-radius: 10px; cursor: pointer;
  background: var(--deep-brown); color: var(--cream);
  font-family: var(--font-body); font-size: 15px; font-weight: 600;
  transition: background 0.15s;
}
[data-cert="form-slot"] input[type="submit"]:hover { background: #2F2314; }
[data-cert="form-slot"] .w-form-done {
  background: transparent; padding: 18px 0 0;
  font-family: var(--font-headers); font-style: italic;
  font-size: 19px; color: var(--deep-brown);
}
[data-cert="form-slot"] .w-form-fail {
  margin-top: 14px; border-radius: 10px;
  background: rgba(217, 75, 61, 0.08);
  font-family: var(--font-body); font-size: 14px; color: #8A2F24;
}
[data-cert="micro"] {
  margin: 16px 0 0;
  font-family: var(--font-body); font-size: 13px; color: var(--bom-muted);
}
[data-cert="preview"] { margin: 34px auto 0; max-width: 560px; }
[data-cert="preview"] img {
  display: block; width: 100%; height: auto;
  border: 1px solid rgba(66, 48, 32, 0.18); border-radius: 10px;
  box-shadow: 0 24px 60px -36px rgba(66, 48, 32, 0.5);
}
[data-cert="resume"] {
  margin: 0 0 26px; padding: 14px 18px;
  background: #FFFFFF; border: 1px solid rgba(66, 48, 32, 0.12); border-radius: 12px;
  font-family: var(--font-body); font-size: 14.5px; color: var(--deep-brown);
}
[data-cert="resume"] a { color: var(--bom-terracotta); font-weight: 600; text-decoration: none; }
[data-cert="resume"] a:hover { text-decoration: underline; }
.learn-overview a.learn-lesson-tile.is-read .learn-lesson-num {
  background: #5CAB5E; border-color: #5CAB5E; color: #FFFFFF; font-size: 15px;
}
@media (max-width: 640px) {
  [data-cert="form-slot"] form { grid-template-columns: 1fr; }
  [data-cert="form-slot"] label:nth-of-type(1),
  [data-cert="form-slot"] label:nth-of-type(2),
  [data-cert="form-slot"] input[type="text"],
  [data-cert="form-slot"] input[type="email"],
  [data-cert="form-slot"] input[type="submit"] { grid-column: 1; grid-row: auto; }
  [data-cert="form-slot"] label:nth-of-type(2) { margin-top: 10px; }
  [data-cert="form-slot"] input[type="submit"] { width: 100%; margin-top: 12px; }
}

/* ---------- /instructors + /for-mothers photo splits (2026-09-06) ----------
   Founder photography added to two Designer-built pages. Each target section
   gained a data-* grid wrapper (WHTML) holding the page's original copy block
   plus an arch-masked figure div; the sections' own classes keep their band
   backgrounds and padding. Same figure grammar as the journey pages. */
[data-ins="hero-grid"], [data-ins="portal-grid"],
[data-fm="hero-grid"], [data-fm="together-grid"] {
  max-width: var(--col-wide); margin: 0 auto;
  display: grid; grid-template-columns: 1.1fr 0.8fr;
  gap: 64px; align-items: center;
}
[data-ins="hero-grid"] > div:first-child, [data-ins="portal-grid"] > div:first-child,
[data-fm="hero-grid"] > div:first-child, [data-fm="together-grid"] > div:first-child {
  margin: 0; max-width: none;
}
[data-ins="hero-grid"] > div:first-child,
[data-fm="hero-grid"] > div:first-child { text-align: left; }
[data-ins="hero-figure"], [data-ins="portal-figure"],
[data-fm="hero-figure"], [data-fm="together-figure"] {
  aspect-ratio: 4 / 5; overflow: hidden;
  border-radius: 50% 50% 1rem 1rem / 90px 90px 1rem 1rem;
  background-color: #EFE6DC;
  background-size: cover; background-position: center; background-repeat: no-repeat;
  box-shadow: 0 30px 70px -40px rgba(66, 48, 32, 0.55);
}
[data-ins="hero-figure"]   { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9e2423d5f65dba7b59258a_corvia-instructor-1.webp"); }
[data-ins="portal-figure"] { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9e2425fdb7b2d8a609b8bd_corvia-instructor-2.webp"); }
[data-fm="hero-figure"]     { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9e2427c933da7c43f78b23_corvia-mothers-2.webp"); }
[data-fm="together-figure"] { background-image: url("https://cdn.prod.website-files.com/6a603c009d2f172fbebc9970/6a9e24264aa64a5d84edae68_corvia-mothers-1.webp"); }
/* Hero CTAs sat flush against the subhead once the heroes went split
   (Will, 2026-09-06); the buttons are direct children of the copy block. */
[data-ins="hero-grid"] > div:first-child > a,
[data-fm="hero-grid"] > div:first-child > a { margin-top: 28px; display: inline-block; }
@media (max-width: 991px) {
  [data-ins="hero-grid"], [data-ins="portal-grid"],
  [data-fm="hero-grid"], [data-fm="together-grid"] { grid-template-columns: 1fr; gap: 40px; }
  [data-ins="hero-figure"], [data-ins="portal-figure"],
  [data-fm="hero-figure"], [data-fm="together-figure"] {
    order: -1; aspect-ratio: 3 / 2; width: 100%; max-width: 460px; margin: 0 auto;
  }
}

/* ============================================================
   Journal article course CTA band (data-jcta), 2026-09-11.
   Template-level terracotta box on every /blog/{slug} page, sitting
   between the article body and "Keep reading". Palette and button
   mirror the /billings-method course drawer ([data-bom="course"]);
   the terracotta is mirrored locally because --bom-terracotta is
   scoped to [data-bom]. Spans the article shell width, matching the
   hero figure above it, so no literal column width is introduced.
   ============================================================ */
[data-jcta="band"] {
  --jcta-terracotta: #A8624A; /* = --bom-terracotta */
  display: block;
  background: var(--jcta-terracotta);
  border-radius: 14px;
  padding: 36px 40px;
  margin: 52px 0 10px;
}
[data-jcta="h"] {
  font-family: var(--font-headers);
  font-size: 27px; line-height: 1.2; font-weight: 400;
  color: var(--cream); margin: 0 0 10px;
}
[data-jcta="p"] {
  font-family: var(--font-body);
  font-size: 15px; line-height: 1.65;
  color: rgba(247, 241, 234, 0.88); margin: 0 0 22px;
}
[data-jcta="btn"] {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--cream); color: var(--jcta-terracotta);
  font-family: var(--font-body); font-size: 15px; font-weight: 600;
  text-decoration: none; padding: 15px 30px; border-radius: 12px;
  transition: background 0.15s;
}
[data-jcta="btn"]:hover { background: #FFFFFF; }
@media screen and (max-width: 767px) {
  [data-jcta="band"] { padding: 28px 24px; margin: 40px 0 6px; }
  [data-jcta="h"] { font-size: 23px; }
  [data-jcta="btn"] { display: flex; justify-content: center; }
}
