/*
Theme Name: Priovant
Theme URI: https://priovant.com
Author: Priovant
Description: Custom minimal block theme for Priovant. Core blocks only; design tokens live in theme.json.
Version: 0.1.1
Requires at least: 6.6
Tested up to: 6.7
Requires PHP: 8.2
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: priovant
*/

/* All theme overrides use :root :where(...) for low specificity so users can still override via the Site Editor Styles UI. */

/* Smooth in-page scrolling (e.g. the header "Sign up" → #signup), disabled when
   the user prefers reduced motion. The sign-up section's scroll-margin-top keeps
   its top clear of the sticky header (≈ header height; smaller on mobile). */
@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}
:root :where(#signup) {
	scroll-margin-top: 140px;
}

/* /isi landing (via the WPE redirect plugin: /isi → /#isi). Same responsive values
   as .priovant-legal H-anchors below (style.css around L2700) — sticky header ≈ 147px
   desktop / 115px mobile + a ~13px gap so the "IMPORTANT SAFETY INFORMATION" heading
   isn't clipped. Scoped to the new #isi anchor only; the existing #priovant-isi-section
   id keeps its today-behavior (native hash-jump, no offset — used by isi-tray.js:17 for
   cloning + section-shots.mjs:54 for screenshots). */
:root :where(#isi) {
	scroll-margin-top: 160px;
}
@media (max-width: 1023px) {
	:root :where(#isi) {
		scroll-margin-top: 130px;
	}
}

/* Footnote/scientific markers SCALE with the surrounding text (copywriter, 2026-07-30 — a
   fixed 10px read too small/too-high on H2s and a touch too big in the 12px footnote list).
   0.625em ≈ the UA `smaller`, tuned so body copy lands on the ~10px they signed off on
   (0.625 × 16px body = 10px); a marker then keeps the same ratio at every size (heading →
   body → footnote), like the ™ (`.priovant-tm`, 0.6em, below). */
:root :where(sup, sub) {
	font-size: 0.625em;
}
/* Position the marker as a normal superscript (`super`, like the ™). We'd previously used
   `text-top` because a FIXED-size glyph drifted to mid-line as a heading grew — but the glyph
   now SCALES (0.625em above), so `super` raises it by a proportional amount and it stays a
   consistent superscript at every size, sitting lower on H2s than the ascent-pinned `text-top`
   (which read "too high"). `line-height: 1` strips the sup's leading so it can't inflate a tall
   line box (e.g. body copy at 1.625). */
:root :where(sup) {
	vertical-align: super;
	line-height: 1;
	/* A footnote marker must never wrap MID-MARKER: a citation like "1-3"/"1,2" carries internal
	   break opportunities (the hyphen/comma), so a wrapping line could split it to "1-" / "3".
	   `white-space: nowrap` keeps the marker whole; because markers are authored with NO space
	   before the <sup> ("study.<sup>1-3</sup>"), the word + marker then have no break opportunity
	   between them either → a needed wrap lands BEFORE the word (the whole "study.1-3" moves down
	   together), never inside the footnote. NOT a forced break — only changes WHERE an
	   already-necessary wrap falls. SITE-WIDE (widened from hero-only 2026-07-23): markers are
	   short + the word still breaks via overflow-wrap, so no overflow risk; the ™/FPO sups are
	   single-glyph/short → no-op. */
	white-space: nowrap;
}
/* Trademark ™ — the importer's esc() auto-wraps every ™ in <sup class="priovant-tm">, so it
   renders as a PROPORTIONAL superscript (0.6em, ~60% of the surrounding text) rather than the
   fixed-10px footnote-marker size above. Scales with its context (hero lead → body). Later in
   source than the :where(sup) rule (same 0-specificity :where) so it wins. */
:root :where(.priovant-tm) {
	font-size: 0.6em;
	vertical-align: super;
}

/* Tightened em-dash — the importer's <emdash> token wraps a — in this span (OPT-IN, not every
   em-dash). Negative inline margins pull both neighbors in past the font's built-in side bearings
   so a closed em-dash reads tight ("(brepocitinib)—the"), per the copywriter. Applied to the Day
   One LP + homepage hero leads; see docs/backlog.md "Em-dash tightening" for the broader copy review.
   Colored the COPY gray (not the blue bold lead-in it sits inside) — a direct color on the span
   beats the inherited blue (2026-07-10, designer). */
:root :where(.priovant-emdash) {
	margin: 0 -0.06em;
	color: var(--wp--preset--color--lisraya-text);
}

:root :where(.is-style-eyebrow) {
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--wp--preset--color--lisraya-text);
	line-height: 1.5;
	margin-bottom: var(--wp--preset--spacing--20);
}

/* Presentational uppercase (copy authored via the <uppercase> token → this span, so the
   source copy stays properly cased). Used by the ISI section headings. */
:root :where(.priovant-uppercase) {
	text-transform: uppercase;
}

:root :where(.wp-block-separator.is-style-lisraya-rule) {
	border: 0;
	background-color: var(--wp--preset--color--lisraya-yellow);
	height: 2px;
	opacity: 1;
	max-width: none;
	margin-block: var(--wp--preset--spacing--30);
}

:root :where(.wp-block-separator.is-style-lisraya-rule-narrow) {
	border: 0;
	background-color: var(--wp--preset--color--lisraya-yellow);
	height: 2px;
	opacity: 1;
	max-width: 200px;
	margin-left: 0;
	margin-right: auto;
	margin-block: var(--wp--preset--spacing--30);
}

/* ============ Inner gutter (root padding is 0 — see theme.json) ============
   Root padding is 0, so every alignwide 1280 box centers — and its side gutters
   begin growing — at exactly 1280px site-wide (mirrors Make's `mx-auto max-w-7xl`
   containers, which have no outer gutter and grow from 1280). Each box now carries
   Make's 24px breathing room INSIDE itself; border-box keeps the box at 1280 so the
   onset doesn't shift. Hero (px-6 → px-200 desktop) is handled in its own rule; the
   CTA card is excluded — it has its own larger padding and goes edge-to-edge below
   1280, exactly like Make. */
:root :where(.priovant-nav, .priovant-signup, .priovant-footer, .priovant-isi-tray, .priovant-isi) :where(.alignwide) {
	box-sizing: border-box;
	padding-inline: 24px;
}
/* Header utility bar + the constrained chrome rows aren't alignwide — give their
   content the same centered 1280 box with 24px inner padding. */
:root :where(.priovant-utility-bar) > :where(.wp-block-navigation) {
	width: 100%;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	box-sizing: border-box;
	padding-inline: 24px;
}

/* Reusable content-page container (the <main> of any standard page). Gives the
   same page width + side gutters as the landing page: capped at wideSize
   (1280px), centered, 24px inner gutters that grow beyond 1280 (root padding is
   0). Hero-like breathing room above the H1 / below the content (80px desktop,
   40px mobile — see the ≤1023px block). Use on every page we build. */
:root :where(.priovant-page) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: 24px;
	padding-block: 80px;
}

/* ============ Section primitive (reusable across all pages) ============
   The universal section shape: an alignfull outer (its own background) with
   80px/40px vertical rhythm, and alignwide content capped at wideSize (1280px),
   centered, with 24px gutters that grow beyond 1280 (root padding is 0). Any new
   section just needs class="…priovant-section" + alignwide inner group(s).
   (Mirrors the per-section gutter rule above + .priovant-page; mobile padding in
   the ≤1023px block.) */
:root :where(.priovant-section) {
	padding-block: 80px;
}
:root :where(.priovant-section) :where(.alignwide) {
	box-sizing: border-box;
	padding-inline: 24px;
}
/* Data Table section: match the page's 112px content inset (as .priovant-content-block /
   the lower hero / the speedbump do) so the table lines up with its neighboring sections
   instead of reading full-width — the generic .priovant-section gutter is only 24px, which
   left the table ~88px wider per side than the rest of the page column. Mobile keeps 24px. */
:root :where(.priovant-datatable-section) :where(.alignwide) {
	padding-inline: 112px;
}
@media (max-width: 1023px) {
	:root :where(.priovant-datatable-section) :where(.alignwide) {
		padding-inline: 24px;
	}
}

:root :where(.priovant-hero) {
	position: relative;
	padding-top: 80px;    /* Make: pt-[81px] desktop */
	padding-bottom: 80px; /* Make: pb 80px */
	/* How far the wideSize (1280px) container's left edge sits from the viewport
	   edge — i.e. how much the centered gutters have opened up. 0 until the viewport
	   reaches wideSize, then grows. The burst + gold gutter add this, so they begin
	   widening exactly at 1280px (mirrors Make's max-w-7xl), ignoring root padding. */
	--hero-gutter-grow: max(0px, (100vw - var(--wp--style--global--wide-size, 1280px)) / 2);
}

/* The hero's full-bleed bottom rule hugs the section's bottom edge (drop the
   separator's default top margin) so the space below the burst ≈ the 80px above it. */
.wp-block-separator.priovant-hero__rule {
	margin-top: 0;
}

/* Hero burst: the 126px stepped bars sit 26px inside the wideSize container — i.e.
   26px past wherever its left edge is (--hero-gutter-grow), so they track the gold
   gutter as it widens. Top-aligned with the H1 (80px = the section's top padding).
   Out of flow so the text stays in normal flow. Make: bars left 26px, 126×298. */
:root :where(.priovant-hero__burst) {
	position: absolute;
	left: calc(var(--hero-gutter-grow) + 26px);
	top: 80px;
	margin: 0;
	width: 126px;
	height: 298px;
	max-width: none;
	pointer-events: none;
	z-index: 1;
}

:root :where(.priovant-hero__burst svg) {
	width: 100%;
	height: 100%;
	display: block;
}

/* Dark-gold gutter extension: fills from the viewport's LEFT EDGE to 27px into the
   wideSize container (1px under the bars at 26px), top-aligned with the bars and the
   same 298px height. Its width = the open gutter (--hero-gutter-grow) + 27px, so it's
   27px until the viewport reaches wideSize (1280px) and then GROWS — the burst's dark
   side appears to widen, with no media query. Make: hero gutter extension. */
:root :where(.priovant-hero__gutter) {
	position: absolute;
	top: 80px;
	left: 0;
	height: 298px;
	width: calc(var(--hero-gutter-grow) + 27px);
	max-width: none;
	background-color: var(--wp--preset--color--lisraya-yellow);
	pointer-events: none;
	z-index: 0;
}

:root :where(.priovant-hero__content) {
	/* Make hero px-6 (24px). Root padding is now 0 (theme.json), so this is the
	   hero's own breathing room; border-box keeps the alignwide box at 1280. */
	box-sizing: border-box;
	padding-inline: 24px;
	/* The decorative layers are absolutely positioned, so the section's blockGap
	   spuriously pushes the content down 32px (the content becomes a "later" child).
	   Zero it so the content top aligns with the burst top, matching the Make layout. */
	margin-block-start: 0;
}
/* Desktop: inset the text 200px so it clears the burst/gutter (Make: lg:px-[200px]).
   No upper cap — the gold gutter grows into the widening side gutter on its own, so
   the 1023px mobile breakpoint stays the only responsive boundary. */
@media (min-width: 1024px) {
	:root :where(.priovant-hero__content) {
		padding-left: 200px;
	}
}

/* Constrain the hero text column to ~Figma V4 width so the H1 wraps to two lines
   and the paragraphs match the V4 wrap (instead of running full-width). */
:root :where(.priovant-hero__content) > * {
	max-width: 760px;
}

/* H1 capped a touch tighter so it wraps after "dermatomyositis" like V4. */
:root :where(.priovant-hero__content) h1 {
	max-width: 660px;
}

/* Hero lead/body type + rhythm, per the Make hero (line-height 1.5, 24px below H1). */
:root :where(.priovant-hero__content p.has-lead-font-size) {
	line-height: 1.5;
}
:root :where(.priovant-hero__content h1 + p) {
	margin-block-start: 24px;
}
/* Blank-line gap between the two body blocks, mirroring Make's <br><br>:
   36px desktop (24px lead × 1.5). Mobile drops to 24px in the ≤1023px block. */
:root :where(.priovant-hero__content p.has-lead-font-size + p.has-lead-font-size) {
	margin-block-start: 36px;
}

/* Constrain the yellow rule between eyebrow and H1 so it doesn't span
   the full content width — Figma shows it ~680px wide, left-aligned.
   Targets the in-hero separator only (not the trailing alignfull rule). */
:root :where(.priovant-hero__content .wp-block-separator.is-style-lisraya-rule) {
	max-width: 680px;
	margin-left: 0;
	margin-right: auto;
}

/* Markdown bold (`**…**` → `<strong class="has-lisraya-blue-color">`, inline()'s only
   emitter of that class): brand blue ONLY inside the heroes (e.g. the hero lead phrase
   "Introducing LISRAYA –"); the BODY-COPY color everywhere else — site-wide review
   2026-07-14. WP's preset `.has-lisraya-blue-color` sets blue with `!important`, so both
   overrides use `!important` + a more specific selector than the bare preset; the hero
   rule out-specifies the default, so it wins inside a hero. Scoped to `strong` only, so
   an editor's intentionally blue paragraph/span (also `.has-lisraya-blue-color`) is untouched. */
:root strong.has-lisraya-blue-color {
	color: var(--wp--preset--color--lisraya-text) !important;
}
:root :is(.priovant-hero, .priovant-lower-hero) strong.has-lisraya-blue-color {
	color: var(--wp--preset--color--lisraya-blue) !important;
}

/* ── Lower Level Hero (Make §05 "Hero Sections" → Lower Level Hero; the reusable
   interior-page hero — renamed from .priovant-support-hero) ──
   H1 + body + a full-bleed bottom stepped gold bar (no side burst). 60px vertical
   at all widths (Make fixed py); 112/24 sides. */
:root :where(.priovant-lower-hero) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-lower-hero__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 60px var( --priovant-gutter-inset );   /* Make px-[112px], py 60 (24 sides mobile below) */
}
:root :where(.priovant-lower-hero__heading) {
	margin: 0 0 20px;
	max-width: 750px;
	font-size: 48px;   /* documented H1 standard at ALL widths (was a 28→48 clamp) */
	line-height: 1.15;
	font-weight: 300;  /* documented H1 weight (matches the global h1 + main hero; was 400) */
	letter-spacing: -0.02em;
	overflow-wrap: break-word;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-lower-hero__body) {
	margin: 0;
	max-width: 920px;
	font-size: 24px;   /* `lead` size, fixed at all widths (was a 16→24 clamp) */
	line-height: 1.5;
	color: var(--wp--preset--color--lisraya-text);
}
/* Bottom stepped bar — full-bleed 20px; 4 proportional bands (gold 40% / gold-2
   26.7% / gold-3 20% / gold-4 13.3%) per the V4 band widths at 1512. */
:root :where(.priovant-lower-hero__bar) {
	height: 20px;
	background: linear-gradient(to right,
		var(--wp--preset--color--lisraya-yellow) 0 40%,
		var(--wp--preset--color--lisraya-gold-2) 40% 66.667%,
		var(--wp--preset--color--lisraya-gold-3) 66.667% 86.667%,
		var(--wp--preset--color--lisraya-gold-4) 86.667% 100%);
}
@media (max-width: 1023px) {
	:root :where(.priovant-lower-hero__inner) {
		padding: 60px 24px;   /* Make px-6 mobile; vertical stays 60 (Make fixed py) */
	}
}

/* ── Section nav (V4 842:12335 / Make section-nav.tsx) ──
   Sticky anchor bar that docks under the site header. Desktop: horizontal strip
   (Quick navigation: + links, 57px tall, 3px gold active underline). Mobile:
   dropdown (50px button + menu). section-nav.js sets `top` to the measured
   header height + drives the scroll-spy active state + the dropdown. */
:root :where(.priovant-section-nav) {
	position: sticky;
	top: 135px;   /* JS overrides with the measured header height (desktop ≈135) */
	z-index: 40;
	background-color: var(--wp--preset--color--base);
	border-bottom: 2px solid var(--priovant-border-blue);
}
:root :where(.priovant-section-nav__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: 112px;
}
:root :where(.priovant-section-nav__list) {
	display: flex;
	align-items: stretch;
	list-style: none;
	margin: 0;
	padding: 0;
	white-space: nowrap;
	overflow-x: auto;
	scrollbar-width: none;
}
:root :where(.priovant-section-nav__label) {
	display: flex;
	align-items: center;
	height: 57px;
	padding-right: 16px;
	font-size: 14px;
	line-height: 21px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-section-nav__link) {
	display: inline-flex;
	align-items: center;
	height: 57px;
	padding-inline: 24px;
	font-size: 14px;
	line-height: 21px;
	font-weight: 600;
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: none;
	border-bottom: 3px solid transparent;
	transition: color 150ms ease, border-color 150ms ease;
}
/* Hover/focus = navy text only, NO underline/bold (Make InteractiveSectionNavBar:
   "hover shifts text to navy"). The gold underline + dark bold is the ACTIVE-only treatment. */
:root :where(.priovant-section-nav__link:hover),
:root :where(.priovant-section-nav__link:focus-visible) {
	color: var(--wp--preset--color--lisraya-isi-border);
}
:root :where(.priovant-section-nav__link.is-active) {
	color: var(--wp--preset--color--lisraya-text);
	border-bottom-color: var(--wp--preset--color--lisraya-yellow);
	font-weight: 700;
}
/* Mobile dropdown — hidden on desktop */
:root :where(.priovant-section-nav__mobile) {
	display: none;
}
@media (max-width: 1023px) {
	:root :where(.priovant-section-nav) {
		top: 103px;   /* mobile header ≈103 (JS overrides) */
	}
	:root :where(.priovant-section-nav__inner) {
		padding-inline: 24px;
	}
	:root :where(.priovant-section-nav__list) {
		display: none;
	}
	/* Mobile = a hamburger + "Quick Nav" summary row over an IN-FLOW list that starts open
	   and animates collapsed to the sticky summary once a section is selected/scrolled-to
	   (Make InteractiveSectionNavBarMobile; section-nav.js drives the max-height + summary).
	   The block breaks out of __inner's 24px gutter so rows/dividers/the gold active bar run
	   edge-to-edge; text is re-inset with 24px padding. */
	:root :where(.priovant-section-nav__mobile) {
		display: block;
		margin-inline: -24px;
	}
	:root :where(.priovant-section-nav__toggle) {
		display: flex;
		align-items: center;
		flex-wrap: wrap;
		gap: 2px 10px;
		width: 100%;
		padding: 13px 24px;
		background: none;
		border: 0;
		border-bottom: 2px solid var(--priovant-border-blue);
		font-family: inherit;
		text-align: left;
		cursor: pointer;
	}
	:root :where(.priovant-section-nav__burger) {
		flex-shrink: 0;
		color: var(--wp--preset--color--lisraya-blue);
	}
	:root :where(.priovant-section-nav__label-m) {
		font-size: 14px;
		line-height: 21px;
		font-weight: 600;
		color: var(--wp--preset--color--lisraya-text);
	}
	:root :where(.priovant-section-nav__current) {
		font-size: 14px;
		line-height: 21px;
		font-weight: 700;
		color: var(--wp--preset--color--lisraya-blue);
	}
	:root :where(.priovant-section-nav__current:empty) {
		display: none;
	}
	:root :where(.priovant-section-nav__menu) {
		margin: 0;
		padding: 0;
		list-style: none;
		overflow: hidden;   /* section-nav.js animates max-height (open = list height, collapsed = 0) */
		transition: max-height 280ms ease;
	}
	:root :where(.priovant-section-nav__menu li:not(:last-child)) {
		border-bottom: 1px solid var(--priovant-border-blue);
	}
	:root :where(.priovant-section-nav__menu-link) {
		display: flex;
		align-items: center;
		height: 52px;
		padding-inline: 24px;
		border-left: 3px solid transparent;   /* reserves the gold-bar slot (no text shift when active) */
		font-size: 14px;
		line-height: 21px;
		font-weight: 600;
		color: var(--wp--preset--color--lisraya-blue);
		text-decoration: none;
		transition: background-color 150ms ease, color 150ms ease;
	}
	/* Hover/tap (Make InteractiveSectionNavBarMobile isHov): near-white-blue fill + navy. */
	:root :where(.priovant-section-nav__menu-link:hover),
	:root :where(.priovant-section-nav__menu-link:focus-visible),
	:root :where(.priovant-section-nav__menu-link:active) {
		background-color: var(--wp--preset--color--lisraya-tint);
		color: var(--wp--preset--color--lisraya-isi-border);
	}
	/* Active section (Make active item): light-blue fill + navy bold + gold left bar. */
	:root :where(.priovant-section-nav__menu-link.is-active) {
		color: var(--wp--preset--color--lisraya-isi-border);
		background-color: var(--wp--preset--color--lisraya-utility-bg);
		border-left-color: var(--wp--preset--color--lisraya-yellow);
		font-weight: 700;
	}
}

/* NOTE — for the section-nav CLICK path, section-nav.js (scrollToId) drives the scroll and lands
   the section's HEADING a uniform gap below the chrome; that JS is the source of truth. The
   scroll-margin below is the NATIVE fallback (page-load `#hash` deep links / no-JS), kept in sync
   with the JS. --priovant-section-nav-offset = header + the (measured) collapsed bar height. */
:root :where(
	#patient-enrollment, #enrollment-form, #educational-resources,
	#valor-study, #skin-improvement
) {
	scroll-margin-top: var(--priovant-section-nav-offset, 195px);
}
/* Efficacy anchors whose SCB top padding is collapsed by the de-double rule (they follow a
   section-pad member) would otherwise land FLUSH with the sticky nav — unlike #valor-study /
   #skin-improvement, which keep their SCB top padding. Add that padding (= the JS `gapPx`: 64
   desktop / 48 mobile) as extra scroll-margin so all five native landings match. Landing only —
   normal scroll rhythm is untouched. Adjacency-derived: if these sections are reordered so their
   de-double state flips, revisit this split. */
:root :where( #overall-improvement, #physical-functioning, #steroid-sparing ) {
	scroll-margin-top: calc( var(--priovant-section-nav-offset, 195px) + 64px );
}
@media (max-width: 1023px) {
	:root :where( #overall-improvement, #physical-functioning, #steroid-sparing ) {
		scroll-margin-top: calc( var(--priovant-section-nav-offset, 160px) + 48px );
	}
}

/* ── Support services (V4 842:11823 / Make PatientEnrollmentSection) ──
   Heading + body + a 3-col card grid (3/2/1 columns at 1024/640). 80 desktop /
   40 mobile vertical (Make's support component literally uses fixed 80 — aligned
   to the site's content-section rhythm; designer to confirm mobile). */
:root :where(.priovant-support-services) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-support-services__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 80px 112px;
}
:root :where(.priovant-support-services__heading) {
	margin: 0 0 20px;
	font-size: 36px;   /* `heading` (H2), fixed at all widths (was a 24→36 clamp) */
	line-height: 1.2;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-support-services__body) {
	margin: 0 0 32px;
	max-width: 680px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-support-services__cards) {
	display: grid;
	grid-template-columns: 1fr;
	gap: 20px;
	align-items: start;
}
:root :where(.priovant-support-services__card) {
	box-sizing: border-box;
	background-color: var(--wp--preset--color--base);
	border-radius: var(--priovant-radius-subtle);
	border-top: 3px solid var(--wp--preset--color--lisraya-blue-mid);
	padding: 20px 16px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}
:root :where(.priovant-support-services__card-title) {
	margin: 0;
	font-size: 20px;
	line-height: 24px;
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-support-services__card-body) {
	margin: 0;
	font-size: 15px;
	line-height: 22px;
	color: var(--wp--preset--color--lisraya-text);
}
@media (min-width: 640px) {
	:root :where(.priovant-support-services__cards) {
		grid-template-columns: 1fr 1fr;
	}
}
@media (min-width: 1024px) {
	:root :where(.priovant-support-services__cards) {
		grid-template-columns: 1fr 1fr 1fr;
	}
}
@media (max-width: 1023px) {
	:root :where(.priovant-support-services__inner) {
		padding: 80px 24px 40px;   /* top 80 to match desktop + resources (40 was too tight) */
	}
}

/* ── Support enrollment (V4 842:11873 / Make SupportFormSection) ──
   Tint section: heading + intro paras + the DocuSign FPO card (reuses
   .priovant-docusign*) + download note + outline button. 80/40 vertical. */
:root :where(.priovant-support-enroll) {
	background-color: var(--wp--preset--color--lisraya-tint);
}
:root :where(.priovant-support-enroll__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 80px 112px;
}
:root :where(.priovant-support-enroll__heading) {
	margin: 0 0 16px;
	font-size: 36px;   /* `heading` (H2), fixed at all widths (was a 24→36 clamp) */
	line-height: 1.2;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-support-enroll__p) {
	margin: 0 0 20px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-support-enroll__card) {
	margin-bottom: 20px;
}
/* Support's DocuSign card is 543px TOTAL (V4 842:11883) — tighter than the LP's
   reused frame (min-height 543 + 48 padding = 639). Border-box the frame to 535
   so 8px bar + 535 = 543. */
:root :where(.priovant-support-enroll .priovant-docusign__frame) {
	box-sizing: border-box;
	min-height: 535px;
}
/* Inline body links here are 600 (Make SupportFormSection) — see the text-link
   weight open item in docs/backlog.md. */
:root :where(.priovant-support-enroll .priovant-link) {
	font-weight: 600;
}
/* The download button's label is long ("Download prescription/enrollment form");
   allow it to wrap so it doesn't overflow at 320px (WCAG 1.4.10 reflow). The base
   .priovant-btn is white-space:nowrap, which is right for short buttons. */
:root :where(.priovant-support-enroll__btn) {
	white-space: normal;
	max-width: 100%;
}
/* Placeholder fax pink (Make FPO convention; same as the LP — low contrast,
   removed at go-live). */
:root :where(.priovant-fpo-fax) {
	color: #ff0095;
}
/* General FPO placeholder text — same magenta (#ff0095) as the FPO footnote markers /
   fax, for copy that's a stand-in to be replaced (e.g. the homepage testimonial's
   "Dr. John Smith" attribution). `:root .class` (real specificity, not :where) so it
   overrides a component's own text color. Temporary: grep #ff0095 to strip all FPO at
   go-live. */
:root .priovant-fpo {
	color: #ff0095;
}
@media (max-width: 1023px) {
	:root :where(.priovant-support-enroll__inner) {
		padding: 80px 24px 40px;   /* top 80 to match desktop + resources (40 was too tight) */
	}
}

/* ── Support resources (V4 842:11905 / Make support-resources-section.tsx) ──
   Heading + body + a 2-col card grid. Each card = a light-blue thumbnail panel
   (inline SVG artboard) + content (title/desc + resource button). Hover
   states are pure CSS. 80/40 vertical. */
:root :where(.priovant-support-resources) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-support-resources__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 0 112px 80px;   /* NO top — the CTA speedbump above owns the gap (de-double); 2026-07-15 */
}
:root :where(.priovant-support-resources__heading) {
	margin: 0 0 12px;
	font-size: 36px;   /* `heading` (H2), fixed at all widths (was a 24→36 clamp) */
	line-height: 1.2;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-support-resources__body) {
	margin: 0 0 48px;
	max-width: 750px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-support-resources__grid) {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
}
:root :where(.priovant-resource) {
	display: flex;
	flex-direction: column;
	background-color: var(--wp--preset--color--base);
	border: 2px solid var(--priovant-border-blue);
	border-radius: var(--priovant-radius-subtle);
	overflow: hidden;
	transition: border-color 150ms ease, box-shadow 150ms ease;
}
:root :where(.priovant-resource:hover) {
	border-color: var(--wp--preset--color--lisraya-blue);
	box-shadow: 0 2px 30px rgba(0, 82, 155, 0.2);
}
:root :where(.priovant-resource__thumb) {
	position: relative;
	overflow: hidden;
	flex-shrink: 0;
	height: 276px;
	background-color: var(--priovant-border-blue);
	transition: background-color 150ms ease;
}
:root :where(.priovant-resource:hover .priovant-resource__thumb) {
	background-color: var(--wp--preset--color--lisraya-blue-muted);
}
/* Thumbnail image — both the UPLOADED thumbnail and the DEFAULT placeholder JPEG
   (render.php emits the placeholder with this same class). An 18px inset border all around, CONTAIN
   (whole image, no crop/distortion). Desktop/tablet: CENTERED both axes so an off-ratio
   thumbnail gets even top/bottom + left/right borders (the box can be taller than the
   image when the content column stretches the card). Mobile (<768, full-width 1-up):
   left-aligned (override below). */
:root :where(.priovant-resource__img) {
	position: absolute;
	top: 18px;
	left: 18px;
	/* Explicit box (NOT `inset:18px` alone): an absolutely-positioned <img> with
	   auto width resolves to its INTRINSIC width and overflows, so size the box and
	   let object-fit:contain scale the bitmap inside it. */
	width: calc(100% - 36px);
	height: calc(100% - 36px);
	object-fit: contain;
	object-position: center;
	display: block;
}
/* Mobile (<768 = the 1-up, full-width thumbnail; the resource grid's 2-up boundary):
   left-align the thumbnail on the wide full-width panel. Tablet (768–1023, 2-up)
   keeps the centered treatment above. */
@media (max-width: 767px) {
	:root :where(.priovant-resource__img) {
		object-position: left center;
	}
}
:root :where(.priovant-resource__content) {
	flex: 1;
	display: flex;
	flex-direction: column;
	min-width: 0;
}
:root :where(.priovant-resource__text) {
	flex: 1;
	padding: 20px;
}
:root :where(.priovant-resource__title) {
	margin: 0 0 8px;
	font-size: 16px;
	line-height: 24px;
	font-weight: 600;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-resource__desc) {
	margin: 0;
	font-size: 14px;
	line-height: 22px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-resource__actions) {
	display: flex;
	align-items: center;
	padding: 0 20px 20px;
}
/* Card hover darkens the Download/Visit-Site button border (Make: the whole
   card + its buttons go #cfe2f2 → #00529b). */
:root :where(.priovant-resource:hover .priovant-btn--resource) {
	border-color: var(--wp--preset--color--lisraya-blue);
}
/* Resource cards stay 2-up until 768px (a per-section exception, like the
   homepage Evidence cards), then drop to 1-up at ≤767. The card internals
   (thumbnail beside content) only go side-by-side at ≥1024 — at 768–1023 the
   2-up cards keep the stacked thumbnail-over-content layout (too narrow for the
   220px thumbnail beside text). */
@media (min-width: 768px) {
	:root :where(.priovant-support-resources__grid) {
		grid-template-columns: 1fr 1fr;
	}
}
@media (min-width: 1024px) {
	:root :where(.priovant-resource) {
		flex-direction: row;
	}
	:root :where(.priovant-resource__thumb) {
		/* 220px preferred, but allowed to SCALE DOWN on small desktop (1024–~1100):
		   the 2-up cards are too narrow there to hold a fixed 220px thumb beside the
		   actions row. The content column has a min-width floor (below) that reserves
		   the Download button width; the thumbnail absorbs the squeeze instead. Both
		   flex-shrink AND the content floor are required — without the floor, content
		   just grows and the thumb never gives up space. */
		flex-shrink: 1;
		width: 220px;
		min-width: 110px;
		height: auto;
		min-height: 276px;
	}
	:root :where(.priovant-resource__content) {
		min-width: 15rem;   /* 240px: Download (~117) + padding, with generous slack */
	}
}
@media (max-width: 1023px) {
	:root :where(.priovant-support-resources__inner) {
		padding: 0 24px 40px;   /* NO top — de-double under the CTA speedbump (matches desktop); 2026-07-15 */
	}
}

/* Card surfaces (Evidence stats card, CTA Speedbump card) */
:root :where(.priovant-card) {
	background: var(--wp--preset--color--lisraya-tint);
	border-radius: var(--priovant-radius-subtle);
}

/* ISI — dense pharma safety block. Styled to the Make ISI spec: 16px / 1.2 legal
   text in #333, 16px bold section labels, standard disc bullets, px-8 (32px) inner
   padding. Copy is a DRAFT pending MLR — this SIZING is copy-independent. */
:root :where(.priovant-isi) {
	border-top: 3px solid var(--wp--preset--color--lisraya-isi-border);
	font-size: 1rem;   /* Make: 16px legal text */
	line-height: 1.2;  /* Make: 1.2 */
	color: var(--wp--preset--color--lisraya-text);
}

/* The in-page ISI is a shared template part rendered after the page content, so
   it owns its top gap (80px desktop / 40px mobile) rather than relying on the
   preceding section's bottom margin — which WP zeroes once that section is the
   last child of its container. Matches the LP's original signup→ISI spacing and
   keeps it consistent on every page. (The tray's cloned copy is excluded.) */
:root :where(.priovant-isi:not(.priovant-isi-tray__full)) {
	margin-block-start: 80px;
}
/* Homepage: a tight footnotes strip (its own 25px bottom padding + 1px rule)
   precedes the ISI — the footnotes section already provides the spacing, so the
   ISI abuts it with no extra gap (matches Make: Footnotes and ISI are adjacent
   siblings, neither adds a top margin). Scoped via the sibling combinator so only
   the homepage's <main class="priovant-home"> is affected — the LP keeps 80px.
   NOTE: the ISI's template-part WRAPPER carries the 32px root block-gap as its
   own margin-top, which the ISI margin collapses into — so we zero BOTH the
   wrapper and the ISI to remove the gap entirely. The template-part/.priovant-isi
   are kept OUT of :where() so this outranks the ISI's own ≤1023px margin rule
   (margin-block-start:40px, later in source) and the gap stays 0 on mobile too. */
:root :where(main.priovant-home) + .wp-block-template-part {
	margin-block-start: 0;
}
:root :where(main.priovant-home) + .wp-block-template-part .priovant-isi {
	margin-block-start: 0;
}
/* Enrollment: the blue signing band already carries its own 80px bottom padding, so
   the shared ISI top gap renders as an empty WHITE strip between the blue and the
   ISI. Zero both the template-part wrapper block-gap and the ISI margin so the blue
   section abuts the ISI (same mechanism as the homepage above). */
:root :where(main.priovant-enrollment) + .wp-block-template-part {
	margin-block-start: 0;
}
:root :where(main.priovant-enrollment) + .wp-block-template-part .priovant-isi {
	margin-block-start: 0;
}

/* Make ISI body + header use px-8 (32px); override the shared 24px inner gutter. */
:root :where(.priovant-isi, .priovant-isi-tray) .alignwide {
	padding-inline: 32px;
}

:root :where(.priovant-isi__header) {
	border-bottom: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	min-height: 44px;
	/* Make's header bar is `flex items-center` — center the heading vertically so
	   the min-height slack splits evenly (a block layout pools it at the bottom). */
	display: flex;
	align-items: center;
}

/* In-body section labels (Indication, Warnings…) — Make renders these 16px bold
   #333, sentence case (not the small uppercase eyebrow). */
:root :where(.priovant-isi) .is-style-eyebrow {
	font-size: 1rem;
	line-height: 1.2;
	text-transform: none;
	letter-spacing: normal;
	margin-bottom: var(--wp--preset--spacing--10);
}

/* The persistent header title stays UPPERCASE (Make: bold, ls -0.02em). It's the SAME line in
   the in-page ISI and the docked sticky tray, so both render at the SAME size — Make sizes it
   at 12px (0.75rem) in BOTH. (The in-page header was previously 16px while only the tray was
   12px; corrected 2026-07-08 to 12px for both, per the "same line = same size" call + Make.) */
:root :where(.priovant-isi__header) .is-style-eyebrow,
:root :where(.priovant-isi-tray__header) .is-style-eyebrow {
	font-size: 0.75rem;
	line-height: 1.2;
	text-transform: uppercase;
	letter-spacing: -0.02em;
	margin-bottom: 0;
}

/* Generic drug name "brepocitinib" stays lowercase inside the uppercased eyebrow. */
:root :where(.priovant-isi__header) .is-style-eyebrow span,
:root :where(.priovant-isi-tray__header) .is-style-eyebrow span {
	text-transform: none;
}

:root :where(.priovant-isi__warning) {
	font-weight: 700;
	color: #000;
	letter-spacing: 0.5px;
}

/* Standard disc bullets (Make: list-disc, pl-5/pl-6). */
:root :where(.priovant-isi ul) {
	list-style: disc;
	padding-left: 24px;
	margin: 0;
}
:root :where(.priovant-isi ul li) {
	margin-bottom: 4px;   /* Make: risk-factor li mb-1 (4px) */
}
/* Boxed-warning list: disc bullets, bold, 12px apart (Make: list-disc, li 700,
   space-y-3). Self-contained (not scoped to .priovant-isi) so it also styles the
   collapsed sticky-tray teaser, which lives under .priovant-isi-tray. */
:root :where(.priovant-isi__warning-list) {
	list-style: disc;
	padding-left: 24px;
	margin: 16px 0 0;   /* 16px below the warning title (Make boxed title mb-4) */
}
/* Tray teaser: a bit more breathing room after the warning before the bullets. */
:root :where(.priovant-isi-tray) .priovant-isi__warning-list {
	margin-top: 24px;
}
:root :where(.priovant-isi__warning-list) li {
	font-weight: 700;
	margin-bottom: 12px;
}
/* (No flat opacity on the last teaser bullet — Make fades it via the bottom
   white gradient overlay only, see .priovant-isi-tray__body::after.) */

/* Pull each subsection's copy up tight under its bold title (Make: title mb-8),
   while the section blockGap keeps 16px between subsections. A title is a paragraph
   whose only content is a <strong>; the copy below it is a paragraph without one. */
:root :where(.priovant-isi) p:has(> strong) + p:not(:has(> strong)) {
	margin-top: var(--wp--preset--spacing--10);   /* 8px */
}
/* Within a subsection, consecutive copy (and copy → bullet list) also stays at 8px
   (Make mb-8) — e.g. the Serious infections paragraphs. The boxed-warning title is a
   bold class (not a <strong>), so guard against it to keep its title→list at 16px. */
:root :where(.priovant-isi) p:not(:has(> strong)):not(.priovant-isi__warning) + p:not(:has(> strong)),
:root :where(.priovant-isi) p:not(:has(> strong)):not(.priovant-isi__warning) + ul {
	margin-top: var(--wp--preset--spacing--10);   /* 8px */
}

/* The "Important Safety Information" section label sits above the boxed warning with the
   16px section rhythm — matching "WARNINGS and PRECAUTIONS:" → "Serious infections." — not
   the tight 8px title→copy gap the rule above would otherwise give it. */
:root :where(.priovant-isi, .priovant-isi-tray) .priovant-isi__section-label + p {
	margin-top: var(--wp--preset--spacing--20);   /* 16px */
}

/* ISI section headings keep their SEMANTIC tag (h3 sections · h4 Limitations) but render at
   BODY size — matching the bold body-copy labels they replaced — NOT the canonical h3/h4 sizes.
   (The h2 banner uses .is-style-eyebrow above.) */
:root :where(.priovant-isi, .priovant-isi-tray) .priovant-isi__heading {
	font-size: 1rem;
	line-height: 1.2;
	font-weight: 700;
	letter-spacing: normal;
	color: var(--wp--preset--color--lisraya-text);
}
/* Pull a section heading's following COPY up tight (8px) — like the prior bold-title→copy gap
   (Adverse Reactions → its paragraph, Limitations of Use → its paragraph). Excludes the
   boxed-warning section label, which keeps the 16px section rhythm to the WARNING (rule above). */
:root :where(.priovant-isi) .priovant-isi__heading:not(.priovant-isi__section-label) + p:not(:has(> strong)) {
	margin-top: var(--wp--preset--spacing--10);   /* 8px */
}

/* Thin gray rule between ISI subsections (Make: 1px #d1d1d1). 16px top margin
   (matching the 16px below from the next block's gap) gives the inline Indication
   divider an equal 16/16; on the Adverse Reactions / Drug Interactions dividers —
   each the first child of a section with 24px padding-top — it stacks to 40px
   above / 16px below, matching Make's larger section spacing. */
:root :where(.priovant-isi__divider) {
	height: 1px;
	background: var(--wp--preset--color--lisraya-rule-gray);
	margin: 16px 0 0;
}
/* Sticky-tray peek: WARNING → divider gap must match the in-page ISI's 40px
   (which comes from the next block group's 24px padding-top + the divider's
   16px margin-top). In the tray the divider is a plain sibling of the WARNING
   paragraph — no group padding — so bump its margin-top to the full 40px. */
:root :where(.priovant-isi-tray) .priovant-isi__divider {
	margin-top: 40px;
}
/* The Adverse Reactions / Drug Interactions dividers are each the FIRST child of
   their section, so the layout zeroes their top margin and they'd only get the
   section's 24px padding-top. Restore the 16px (→40px above, matching Make's
   larger section spacing). Specificity here beats the layout's first-child reset. */
:root :where(.priovant-isi) .priovant-isi__divider:first-child {
	margin-top: 16px;
}

/* "Not comprehensive" footer note — 16px #333, BOLD (designer 2026-07-10). */
:root :where(.priovant-isi__muted) {
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-text);
}
/* see_pi line (closes Special Populations, under Renal Impairment) — a touch more room
   above it than the group's blockGap gives (padding, so it's additive, 2026-07-10). */
:root :where(.priovant-isi__seepi) {
	padding-top: 10px;
}

/* The ONE Prescribing Information link lives in the closing "Please note…" footer line
   (.priovant-isi__muted): blue underlined (brand text-link). The see_pi line above it is plain
   bold body copy, no link (copywriter 2026-07-08). */
:root :where(.priovant-isi__muted) a {
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: underline;
}

/* Site nav (header) — utility bar + main row + bottom blue divider */
:root :where(.priovant-utility-bar) {
	background: var(--wp--preset--color--lisraya-utility-bg);
	font-size: 0.6875rem;
	font-weight: 600;
}

:root :where(.priovant-utility-bar a) {
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: none;
}

:root :where(.priovant-nav) {
	background-color: var(--wp--preset--color--base);  /* opaque so content scrolls under it */
	border-bottom: 4px solid var(--wp--preset--color--lisraya-blue);
}

/* Sticky header. Stick the template-part WRAPPER, not the inner group: a sticky
   element only travels within its parent's box, and the nav group's parent
   (<header class="wp-block-template-part">) is exactly its height — no room. The
   wrapper's parent (.wp-site-blocks) is the tall scroll container, so it sticks. */
header.wp-block-template-part {
	position: sticky;
	top: 0;
	/* Above the sticky ISI tray (also z-index 100, but later in the DOM) so the
	   mobile menu overlay — which lives inside this header's stacking context —
	   covers the tray when open. */
	z-index: 110;
	background-color: var(--wp--preset--color--base);
}

:root :where(.priovant-nav__logo svg, .priovant-nav__logo img) {
	width: 160px;
	max-width: 100%;   /* scale down with its lane on very narrow screens */
	height: auto;
	display: block;
}
/* On phones narrower than the logo + buttons + padding (≲340px), let ONLY the
   logo shrink so the header still fits — the Sign up + hamburger cluster keeps
   its fixed size. (Self-limiting: no effect at 360px+, where everything fits.) */
:root :where(.priovant-nav__logo) {
	min-width: 0;
}
:root :where(.priovant-nav__right) {
	flex-shrink: 0;
}

/* Footer */
:root :where(.priovant-footer__top-rule) {
	background: var(--wp--preset--color--lisraya-yellow);
	height: 4px;
}

/* Make footer uses px-8 (32px); override the shared 24px inner gutter. */
:root :where(.priovant-footer) .alignwide {
	padding-inline: 32px;
}

/* Column model (Make): brand fixed 384px, disclaimer fills, links hug their content.
   (Without widths, WP makes all columns grow equally — these win on specificity.) */
:root :where(.priovant-footer) .wp-block-column.priovant-footer__brand {
	flex: 0 0 384px;
}
:root :where(.priovant-footer) .wp-block-column.priovant-footer__disclaimer {
	flex: 1 1 0%;
	min-width: 0;
}
:root :where(.priovant-footer) .wp-block-column.priovant-footer__links {
	flex: 0 0 auto;
	width: max-content;
}

:root :where(.priovant-footer__brand svg, .priovant-footer__brand img) {
	width: 126px;
	height: auto;
	display: block;
}

/* Brand tagline — bold-blue underlined link, 14px (Make footer tagline). */
:root :where(.priovant-footer__tagline) {
	margin-top: 14px;
	margin-bottom: 0;
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 22.75px;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-footer__tagline a) {
	color: inherit;
	text-decoration: underline;
}

/* Copyright — muted gray, 12px (Make). */
:root :where(.priovant-footer__copyright) {
	margin-top: 12px;
	margin-bottom: 0;
	font-size: 0.75rem;
	line-height: 19.5px;
	color: rgba(26, 26, 26, 0.6);
}

/* Center disclaimer — 12px #333 body, blue underlined inline links (Make). */
:root :where(.priovant-footer__disclaimer) p {
	font-size: 0.75rem;
	line-height: 19.5px;
	color: var(--wp--preset--color--lisraya-text);
	margin: 0;
}
/* 12px between the two disclaimer paragraphs (Make line1 margin-bottom). */
:root :where(.priovant-footer__disclaimer) p + p {
	margin-top: 12px;
}
:root :where(.priovant-footer__disclaimer a) {
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: underline;
}

:root :where(.priovant-footer__links a) {
	color: var(--wp--preset--color--lisraya-blue);
	font-weight: 700;
	font-size: 0.875rem;   /* Make: 14px */
	line-height: 20px;
	letter-spacing: -0.02em;
	text-decoration: none;
}

/* Footer link columns: no disc bullets — they read as a column of links,
   not a bulleted list. */
:root :where(.priovant-footer__links ul) {
	list-style: none;
	padding-left: 0;
	margin: 0;
}
:root :where(.priovant-footer__links li) {
	margin-bottom: 12px;   /* Make: gap-3 */
}
:root :where(.priovant-footer__links li:last-child) {
	margin-bottom: 0;
}

/* ── Revised site footer (homepage / Support / content pages) ──
   parts/footer-site.html. Three zones in DOM order: brand · disclaimer · nav —
   which matches BOTH layouts, so no flex `order` is needed.
   DESKTOP (V4 844:22465): the three sit in a ROW — brand (left, 384) · informational
   disclaimer (middle, fills ~260 at 1280) · nav/legal link columns (right, ~492).
   MOBILE (≤1023, V4 844:24545): they stack — brand → disclaimer → links, the links
   becoming a 2-column grid. Reuses the .priovant-footer__* leaf styles (gold bar,
   logo, tagline, copyright, disclaimer); the LP keeps the simpler .priovant-footer. */
:root :where(.priovant-footer-site) .alignwide {
	box-sizing: border-box;
	padding-inline: 32px;   /* Make px-8 */
}
:root :where(.priovant-footer-site__body) {
	display: flex;
	flex-wrap: wrap;        /* below ~1280 the nav wraps to its own row (tablet) */
	align-items: flex-start;
	gap: 40px;
	padding-block: var(--wp--preset--spacing--60) 40px;   /* 64 / 40 (Make pt-16 pb-10) */
}
:root :where(.priovant-footer-site__brand) {
	flex: 0 0 384px;        /* V4 brand column */
}
:root :where(.priovant-footer-site__disclaimer) {
	flex: 1 1 220px;        /* middle column — fills to ~260 at 1280 (V4) */
}
:root :where(.priovant-footer-site__nav) {
	flex: 0 0 auto;         /* hug content on the right (V4 ~492) */
	display: flex;
	gap: 48px;              /* Make gap-12 between columns */
	flex-wrap: wrap;
}
:root :where(.priovant-footer-site__col) {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;              /* Make gap-3 between links */
}
:root :where(.priovant-footer-site__col a) {
	color: var(--wp--preset--color--lisraya-blue);
	font-weight: 700;
	font-size: 0.875rem;   /* 14px */
	line-height: 20px;
	letter-spacing: -0.02em;
	text-decoration: none;
	white-space: nowrap;
}
:root :where(.priovant-footer-site__col a:hover),
:root :where(.priovant-footer-site__col a:focus-visible) {
	text-decoration: underline;
}
@media (max-width: 1023px) {
	/* Stack: brand → disclaimer → links (DOM order; V4 mobile). */
	:root :where(.priovant-footer-site__body) {
		flex-direction: column;
		gap: 40px;
	}
	:root :where(.priovant-footer-site__brand),
	:root :where(.priovant-footer-site__disclaimer) {
		flex: 0 0 auto;
	}
	/* Links: 2-column grid — nav1 + nav2 on top, legal wraps under nav1 (V4). */
	:root :where(.priovant-footer-site__nav) {
		gap: 32px 48px;
	}
	:root :where(.priovant-footer-site__col) {
		flex: 0 0 calc(50% - 24px);
	}
	:root :where(.priovant-footer-site__col a) {
		white-space: normal;
	}
}
/* 1024–1240: not enough room for brand + paragraph + links in one row. Swap the
   wider-desktop order — put the LINKS up next to the brand (right-aligned) and
   drop the disclaimer paragraph to its own full-width row at the bottom. */
@media (min-width: 1024px) and (max-width: 1240px) {
	:root :where(.priovant-footer-site__nav) {
		order: 1;
		margin-inline-start: auto;   /* links to the right; brand stays left */
	}
	:root :where(.priovant-footer-site__disclaimer) {
		order: 2;
		flex: 1 1 100%;              /* paragraph drops full-width to the bottom */
	}
}

/* ============ Nav: desktop utility nav vs mobile hamburger ============ */

/* Utility-bar navigation: small, lisraya-blue, semibold */
:root :where(.priovant-utility-nav) {
	font-size: 0.6875rem;
	font-weight: 600;
	/* No gap between links — Make spaces them purely with each link's 18px
	   side padding (36px text-to-text). The block's default flex gap (32px)
	   would otherwise nearly double that. */
	gap: 0;
}
/* Utility-bar nav links. Higher specificity (no :where) to beat core/navigation's
   inherited link color (#333). Sizes/spacing track the Make nav. */
.priovant-utility-nav .wp-block-navigation-item__content {
	/* !important: core/navigation sets link color at higher specificity
	   (.wp-block-navigation:not(.has-text-color) …), same as the mobile-nav rule. */
	color: var(--wp--preset--color--lisraya-blue) !important;
	line-height: 16.5px;
	letter-spacing: -0.01em;
	padding: 0 18px;
}

/* The mobile drawer + its hamburger toggle are hidden on desktop
   (shown in the ≤1023px block below). */
:root :where(.priovant-drawer-toggle),
:root :where(.priovant-drawer) {
	display: none;
}

/* 4-segment yellow burst bar at the bottom of the hero (mobile only).
   Hidden on desktop where the vertical burst graphic lives on the left. */
:root :where(.priovant-hero__burst-bar) {
	display: none;
}

/* Mobile drawer toggle: blue 40×40 square, matches the Sign Up button.
   (display is set by the show/hide rules so the icon centers via flex only
   when visible.) Hover → darker blue, per Make. */
:root :where(.priovant-drawer-toggle) {
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	padding: 0;
	border: 0;
	border-radius: var(--priovant-radius-sharp);
	align-items: center;
	justify-content: center;
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
	cursor: pointer;
	transition: background-color 150ms ease;
}
:root :where(.priovant-drawer-toggle:hover) {
	background-color: #152b61;
}
/* Icon morph: hamburger when closed, X when open (Make). */
:root :where(.priovant-drawer-toggle__close) {
	display: none;
}
:root :where(.priovant-drawer-toggle[aria-expanded="true"] .priovant-drawer-toggle__open) {
	display: none;
}
:root :where(.priovant-drawer-toggle[aria-expanded="true"] .priovant-drawer-toggle__close) {
	display: block;
}

/* Mobile utility drawer: in-flow disclosure, full-bleed pale-blue panel that
   animates open via max-height (set to scrollHeight in nav-drawer.js). */
:root :where(.priovant-drawer) {
	max-width: none;                 /* escape the constrained-layout content cap */
	width: 100%;
	max-height: 0;
	overflow: hidden;
	background-color: var(--wp--preset--color--lisraya-utility-bg); /* Make drawer fill */
	/* visibility:hidden when collapsed removes the links from the tab order +
	   a11y tree (WCAG 4.1.2); delayed 300ms so the collapse animates first. */
	visibility: hidden;
	transition: max-height 300ms ease-in-out, visibility 0s linear 300ms;
}
:root :where(.priovant-drawer.is-open) {
	visibility: visible;
	transition: max-height 300ms ease-in-out, visibility 0s linear 0s;
}
:root :where(.priovant-drawer__list) {
	max-width: var(--wp--style--global--wide-size);
	margin: 0 auto;
	padding: 8px 24px;
	list-style: none;
	display: flex;
	flex-direction: column;
}
:root :where(.priovant-drawer__item) {
	border-bottom: 1px solid #c7deff; /* Make row divider */
}
:root :where(.priovant-drawer__item:last-child) {
	border-bottom: 0;
}
:root :where(.priovant-drawer__link) {
	display: block;
	padding: 14px 8px;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: none;
}
:root :where(.priovant-drawer__link:hover) {
	color: #152b61;
}

/* ============ Sticky ISI tray (every page; auto-hides when full ISI in view) ============ */

/* The ISI-tray template part renders in the flow after the footer; its inner tray is
   fixed, so the wrapper is empty — but it still picks up the layout's blockGap as a
   top margin, leaving ~32px of dead space below the footer. Zero it. */
.wp-block-template-part:has(.priovant-isi-tray) {
	margin-block-start: 0;
}

:root :where(.priovant-isi-tray) {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	z-index: 100;
	display: flex;
	flex-direction: column;
	max-height: 280px;  /* collapsed: header + teaser */
	background-color: var(--wp--preset--color--base);
	border-top: 3px solid var(--wp--preset--color--lisraya-isi-border);
	box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.08);
	transition: max-height 300ms ease, transform 200ms ease-out, opacity 200ms ease-out;
}

:root :where(.priovant-isi-tray.is-hidden) {
	transform: translateY(100%);
	opacity: 0;
	pointer-events: none;
}

/* Expanded (desktop): grown from the bottom to leave a constant 240px gap at the
   top at any window height — so the header + hero stay visible above it. Mobile
   overrides this to a full-screen cover just below. */
:root :where(.priovant-isi-tray.is-expanded) {
	max-height: calc(100dvh - 240px);
}
@media (max-width: 1023px) {
	/* Mobile: the expanded tray covers the full screen (Make's full-screen mode).
	   Lift it above the sticky header (z-index 110) so it actually covers the
	   header instead of opening behind it. Only the EXPANDED mobile tray does this
	   — collapsed it stays at z-index 100 so the header keeps the mobile nav
	   overlay above the tray; desktop expanded also stays below (it intentionally
	   tucks under the header, leaving a 240px gap). */
	:root :where(.priovant-isi-tray.is-expanded) {
		max-height: 100dvh;
		z-index: 120;
	}
}

/* Google reCAPTCHA badge (injected by the external dev's form JS on the form
   pages) is `position:fixed` in the root stacking context — the SAME layer as
   the collapsed ISI tray (z-index 100), so it gets lost behind it. Lift it
   clear. We DON'T touch the ISI/header z-indexes: they're balanced against each
   other (see above) and nudging ours reintroduced the sticky-header conflict.
   Matches the CookieYes badge on the opposite corner (999999). `!important`
   because the badge carries Google-injected inline styling we don't control. */
.grecaptcha-badge {
	z-index: 999999 !important;
}

/* Full ISI (cloned from #priovant-isi-section) — hidden until expanded, then the
   scrollable region; the teaser is swapped out. */
:root :where(.priovant-isi-tray__full) {
	display: none;
}
:root :where(.priovant-isi-tray.is-expanded) .priovant-isi-tray__body,
:root :where(.priovant-isi-tray.is-collapsing) .priovant-isi-tray__body {
	display: none;
}
:root :where(.priovant-isi-tray.is-expanded) .priovant-isi-tray__full,
:root :where(.priovant-isi-tray.is-collapsing) .priovant-isi-tray__full {
	display: block;
	flex: 1 1 auto;
	min-height: 0;
}
/* Only while EXPANDED does the clone scroll (real scrollbar) + reserve a matching gutter, so its
   centered ISI column insets ~gutter/2 to align with the header (below). */
:root :where(.priovant-isi-tray.is-expanded) .priovant-isi-tray__full {
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-gutter: stable;
}
/* While COLLAPSING, drop the scrollbar (overflow:hidden, no gutter) so the clone's copy returns to
   its natural centered position AT THE START of the collapse — during the shrink, masked — rather
   than staying inset until transitionend and then jumping when the (non-inset) teaser body swaps
   back in. Pairs with the header rule below (also released at collapse-start). 2026-07-09. */
:root :where(.priovant-isi-tray.is-collapsing) .priovant-isi-tray__full {
	overflow: hidden;
}

/* Expanded-tray alignment fix: the scrollable __full clone above reserves a vertical
   scrollbar gutter, which narrows its content and shifts its CENTERED ISI column ~gutter/2
   left of the header's centered banner (visible only with classic/space-taking scrollbars,
   above 1280 where the column centers — headless/overlay scrollbars don't show it). Reserve
   a MATCHING gutter on the (non-scrolling) header while expanded, so the banner and the copy
   center in the same width and stay left-aligned. overflow:hidden makes the gutter reserve.
   Scoped to `is-expanded` ONLY (NOT `is-collapsing`): the gutter is added on open and released
   the instant collapse STARTS (is-expanded removed), so its ~gutter/2 shift happens during the
   grow/shrink motion — masked, and symmetric on open + close. Including `is-collapsing` here
   held the gutter through the whole collapse and released it at transitionend, which made the
   banner + chevron snap ~7.5px right as a naked jump AFTER the tray had settled (2026-07-09). */
:root :where(.priovant-isi-tray.is-expanded) .priovant-isi-tray__header {
	overflow: hidden;
	scrollbar-gutter: stable;
}
/* The clone is a copy of the in-page section; drop its standalone top border. */
:root :where(.priovant-isi-tray__full.priovant-isi) {
	border-top: 0;
}

/* Chevron points down when collapsed, flips up when the tray is expanded. */
:root :where(.priovant-isi-tray__expand svg) {
	transition: transform 200ms ease;
}
:root :where(.priovant-isi-tray.is-expanded) .priovant-isi-tray__expand svg {
	transform: rotate(180deg);
}

:root :where(.priovant-isi-tray__header) {
	border-bottom: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	/* Never let the flex column shrink the docked header: when the EXPANDED tray's
	   cloned ISI overflows the tray max-height, flexbox would otherwise shave a few px
	   off this header too — and since the expanded header is overflow:hidden (the
	   scrollbar-gutter alignment fix), that shaved height CLIPS the banner text so the
	   gray border-bottom slices through it. flex-shrink:0 keeps the header at its natural
	   height; __full (flex:1 1 auto, overflow-y:auto) absorbs all the overflow via scroll. */
	flex-shrink: 0;
}

/* Body teaser: shows the top of the ISI content (WARNING + first paragraphs).
   Clipped to a fixed height so it doesn't overwhelm the viewport.
   Fade-to-white gradient at the bottom suggests "more content below". */
:root :where(.priovant-isi-tray__body) {
	position: relative;
	/* Fixed-size peek: min-height paired with max-height so the box is always
	   144px regardless of how much content is inside. Prior to the verbatim
	   ISI strip, the WARNING title + 2 summary bullets naturally filled 144px
	   and the bottom-fade gradient masked the clip; without the bullets the
	   body would shrink to content-height and the tray would read as short. */
	min-height: 144px;
	max-height: 144px;  /* Make: HEIGHT_PARTIAL (at the top of the page) */
	overflow: hidden;
	font-size: 1rem;    /* Make: 16px legal text */
	line-height: 1.2;   /* Make: 1.2 */
	color: var(--wp--preset--color--lisraya-text);
	transition: max-height 300ms ease;
}
/* Scroll-responsive collapsed teaser (Make): full HEIGHT_PARTIAL (144px) only at
   the top of the page; once the user scrolls down, shrink the teaser to
   HEIGHT_MINIMIZED (68px ≈ the boxed-warning headline) since the sticky header
   has taken the top space. Restores when they scroll back to the top.
   `assets/isi-tray.js` toggles `.is-minimized` by scroll position; `:not(.is-expanded)`
   so opening the full ISI is unaffected (the teaser body is hidden while expanded). */
:root :where(.priovant-isi-tray.is-minimized:not(.is-expanded)) .priovant-isi-tray__body {
	/* min pins the scrolled peek at 68px too — same reason as the page-top rule
	   above: fixed box regardless of content amount. */
	min-height: 68px;
	max-height: 68px;
}

:root :where(.priovant-isi-tray__body)::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 48px;
	pointer-events: none;
	background: linear-gradient(to bottom,
		rgba(255, 255, 255, 0) 0%,
		rgba(255, 255, 255, 1) 100%);
}

/* Expand toggle (Make): 28×28 white square, 2px blue (#00529B) border, dark-blue
   (#152B61) chevron via currentColor. Hover/active fills blue with a white chevron. */
:root :where(.priovant-isi-tray__expand) {
	width: 28px;
	height: 28px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--lisraya-isi-border);
	border-radius: 2px;
	cursor: pointer;
	transition: background-color 150ms ease, color 150ms ease;
}

:root :where(.priovant-isi-tray__expand:hover),
:root :where(.priovant-isi-tray__expand:focus-visible) {
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
}

/* (Body padding-bottom for sticky-tray clearance is defined further down
   with a `:has()` rule so the gap collapses when the tray is hidden.) */

/* ============ Global mobile breakpoint = 1023px ============
   This theme uses a SINGLE mobile breakpoint of 1023px (not WP core's
   default 781px). Force core/columns to stack at ≤1023px — core only
   stacks them at ≤781px, so without this they'd stay side-by-side from
   782–1023px. `!important` mirrors core's own stacking rule and is needed
   to beat the inline flex-basis widths set on the columns. */
@media (max-width: 1023px) {
	:root :where(.wp-block-columns:not(.is-not-stacked-on-mobile)) {
		flex-wrap: wrap !important;
	}
	:root :where(.wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column) {
		flex-basis: 100% !important;
	}
}

/* ============ Mobile responsive overrides (≤ 1023px) ============ */
@media (max-width: 1023px) {
	/* Shorter sticky header on mobile (no utility bar) → smaller scroll offset. */
	:root :where(#signup) {
		scroll-margin-top: 110px;
	}

	/* Tighter page + section breathing room on mobile (matches the hero's 40px). */
	:root :where(.priovant-page),
	:root :where(.priovant-section) {
		padding-block: 40px;
	}
	/* ISI top gap matches the mobile section rhythm (40px). */
	:root :where(.priovant-isi:not(.priovant-isi-tray__full)) {
		margin-block-start: 40px;
	}

	/* Hide the desktop burst + gold gutter on mobile per Figma mobile design
	   (the 4-segment burst bar below the hero carries the brand accent instead). */
	:root :where(.priovant-hero__burst),
	:root :where(.priovant-hero__gutter) {
		display: none;
	}

	/* Tighter hero top padding on mobile (Make: pt 40px). Drop the bottom padding
	   so the full-width 4-segment burst bar sits flush at the section's bottom edge
	   (Make cancels pb-80 with the bar's -80 margin); the gold rule then sits right
	   below the bar instead of 80px under it. */
	:root :where(.priovant-hero) {
		padding-top: 40px;
		padding-bottom: 0;
	}

	/* When the burst column collapses, the text column should also drop
	   its big flex-basis so the text uses full width. core/columns are
	   force-stacked at ≤1023px (above); this guards against any leftover
	   flex-basis on a fixed-width lane. */
	:root :where(.wp-block-columns .wp-block-column[style*="flex-basis:140px"]) {
		display: none;
	}

	/* Show the 4-segment yellow burst bar at the bottom of the hero.
	   Replaces the vertical-on-left burst graphic which is hidden on mobile. */
	:root :where(.priovant-hero__burst-bar) {
		display: block;
		min-height: 24px;
		height: 24px;
		background: linear-gradient(to right,
			var(--wp--preset--color--lisraya-yellow) 0 25%,
			var(--wp--preset--color--lisraya-gold-2) 25% 50%,
			var(--wp--preset--color--lisraya-gold-3) 50% 75%,
			var(--wp--preset--color--lisraya-gold-4) 75% 100%);
	}

	/* Footer columns stack on mobile; let the fixed-width ones take full width. */
	:root :where(.priovant-footer__brand),
	:root :where(.priovant-footer__links) {
		flex-basis: 100% !important;
	}

	/* H1 stays the documented 48px (`hero` token) at ALL widths — the responsive 36px
	   mobile step was removed (designer direction). overflow-wrap + the headline's soft
	   hyphens (e.g. "dermatomyositis") guard a long word from forcing horizontal scroll
	   at 48px on narrow screens. */
	:root :where(.priovant-hero h1, .priovant-page h1) {
		overflow-wrap: break-word;
	}

	/* Hero lead stays the fixed 24px `lead` size at all widths (no mobile step-down).
	   The gap before a second lead block matches the design's blank line (24px). */
	:root :where(.priovant-hero__content p.has-lead-font-size + p.has-lead-font-size) {
		margin-block-start: 24px;
	}
}

/* ⚠ RETIRED 2026-08-07 (Phase 46 + 50): the LP header no longer emits a
   core/button (.wp-block-button__link) — Phase 46 (821f1e0) swapped it for
   two .priovant-btn anchors (Enroll patients + Speak to a rep) inside a
   wp:html block. The block below is dead code, kept for reference. If you
   need to change nav-CTA styling, edit the .priovant-nav__right .priovant-btn
   override (grep 'nav-tight vertical geometry'). Safe to delete this block in
   a dedicated CSS-cleanup pass — verify no wp:button inside .priovant-nav__right
   remains first. */
/* Sign Up button — canonical PRIMARY (Button States chart): solid Brand Blue
   default with an (invisible) blue border, sharp 0 radius, white+Navy hover,
   #003d7a active. Keeps the nav-tight 52px geometry (14px py + 2px border +
   20px line; 16px px + 2px border = the Make's 18px side inset). Non-:where to
   beat the theme.json button padding. Matches the site-header Sign Up. */
.priovant-nav__right .wp-block-button__link {
	white-space: nowrap;
	padding: 14px 16px;
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
	line-height: 20px;
	letter-spacing: -0.02em;
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}

/* Hover/focus = canonical Primary: white fill, Brand Blue (#00529b) text + border
   (inverse of Outline; was Navy, changed 2026-07-13). !important beats WP's preset
   color classes (.has-*-background-color / .has-*-color), emitted with !important,
   which would otherwise keep it blue. */
.priovant-nav__right .wp-block-button__link:hover,
.priovant-nav__right .wp-block-button__link:focus-visible {
	background-color: var(--wp--preset--color--base) !important;
	color: var(--wp--preset--color--lisraya-blue) !important;
	border-color: var(--wp--preset--color--lisraya-blue);
}

/* Active = canonical: darker Brand Blue #003d7a fill, white text. */
.priovant-nav__right .wp-block-button__link:active {
	background-color: var(--priovant-btn-active) !important;
	color: var(--wp--preset--color--base) !important;
	border-color: var(--priovant-btn-active);
}

/* Mobile: match the 40px hamburger height (8px py + 20 line + 2px border).
   Header-scoped breakpoint bumped from 1023 → 1279 (2026-08-07) to match the
   sibling site-header block — keeps LP header button geometry consistent
   through the same width band where the mobile menu now triggers. */
@media (max-width: 1279px) {
	.priovant-nav__right .wp-block-button__link {
		padding-top: 8px;
		padding-bottom: 8px;
	}
}

/* LP-header mobile show/hide — extracted from the omnibus mobile block (≤1023)
   at ~line 1565 and given the header-scoped 1279 breakpoint (2026-08-07). The
   utility bar, drawer toggle, and drawer itself all key off the header's
   wider mobile band; the rest of the omnibus block (hero padding, ISI, page
   padding, footer columns) stays at 1023 per the global convention. */
@media (max-width: 1279px) {
	/* Hide the desktop utility bar; the same links live in the mobile
	   drawer that the hamburger toggle reveals. */
	:root :where(.priovant-utility-bar) {
		display: none;
	}

	/* Show the mobile-only drawer toggle + drawer. */
	:root :where(.priovant-drawer-toggle) {
		display: inline-flex;
	}
	:root :where(.priovant-drawer) {
		display: block;
	}

	/* Move Speak to a rep out of the LP header row on mobile — its equivalent
	   renders as .priovant-drawer__cta at the top of the drawer instead. Bare
	   descendant chain (specificity 0,2,0) beats the base .priovant-btn's
	   inline-flex at 0,1,0 regardless of source order. */
	.priovant-nav__right .priovant-btn--outline {
		display: none;
	}
}

/* Full-width menu CTAs — the "Speak to a rep" button that lives at the top of
   the mobile menu (overlay on site header, drawer on LP header). Layered on
   top of .priovant-btn.priovant-btn--primary geometry: block-level + full
   width so it fills the menu column. Only rendered inside the mobile menu,
   which is itself only visible ≤1279 — so no @media wrapper needed here. */
:root :where(.priovant-siteheader__overlay-cta),
:root :where(.priovant-drawer__cta) {
	display: block;
	width: 100%;
	margin: 0 0 24px 0;
	text-align: center;
}

/* Header-row CTA nav-tight vertical geometry — restore the 52/40 heights the
   header used pre-Phase 46, when the site header ran .priovant-siteheader__signup
   and the LP header ran .priovant-nav__right .wp-block-button__link. Phase 46's
   switch to canonical .priovant-btn (16px py + 21px line = 57px flat) lost the
   header's compact rhythm and misaligned the mobile CTA vs the 40×40 hamburger.
   Height-only override — horizontal padding stays at the canonical 30px so the
   buttons don't visibly shrink in width. Specificity 0,2,0 beats the base
   .priovant-btn :where rule (0,1,0). Restricted to header right-clusters so the
   full-width menu CTAs above (.priovant-siteheader__overlay-cta /
   .priovant-drawer__cta) keep the full canonical .priovant-btn touch target. */
.priovant-siteheader__right .priovant-btn,
.priovant-nav__right .priovant-btn {
	padding-block: 14px;
	line-height: 20px;
	/* → 14 + 20 + 14 + 4 border = 52px desktop */
}
@media (max-width: 1279px) {
	.priovant-siteheader__right .priovant-btn,
	.priovant-nav__right .priovant-btn {
		padding-block: 8px;
		/* → 8 + 20 + 8 + 4 border = 40px mobile — matches the hamburger */
	}
}

/* ============ Reusable CTA buttons (Make primary-button / outline-button) ============
   The .is-style-priovant-{primary,outline} core/button BLOCK STYLES (registered in
   functions.php). Used on any core/button across pages — incl. the GENERATED PATTERNS
   (theme/patterns/*.php emit these classes) + the LP CTA.
   - Primary: solid lisraya-blue, white text; hover → white bg, #00529b text/border.
   - Outline: white bg, lisraya-blue border + text; hover → blue fill, white text.
   (Primary hover is the exact inverse of Outline — both pivot on Brand Blue #00529b.)
   Both: 2px border, sharp (0) radius, 14px/700/-0.02em, 21px line-height, padding 16px 30px.
   ⚠ DRIFT GUARD: these DUPLICATE the canonical .priovant-btn treatment (CANONICAL BUTTON
   SYSTEM, ~L5022). Colors + radius share tokens (lisraya-blue / --priovant-btn-active /
   --priovant-radius-sharp) so those propagate automatically — but the GEOMETRY LITERALS
   (16px 30px · 21px LH · 14px · -0.02em) are copied here. Change the canonical geometry →
   change these too (and vice-versa). Keep the state colors identical to the chart. */
:root :where(.wp-block-button.is-style-priovant-primary .wp-block-button__link) {
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
	padding: 16px 30px;
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 21px;
	letter-spacing: -0.02em;
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
:root :where(.wp-block-button.is-style-priovant-primary .wp-block-button__link):hover,
:root :where(.wp-block-button.is-style-priovant-primary .wp-block-button__link):focus-visible {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--lisraya-blue);
	border-color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.wp-block-button.is-style-priovant-primary .wp-block-button__link):active {
	background-color: var(--priovant-btn-active);
	color: var(--wp--preset--color--base);
	border-color: var(--priovant-btn-active);
}
:root :where(.wp-block-button.is-style-priovant-outline .wp-block-button__link) {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--lisraya-blue);
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
	padding: 16px 30px;
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 21px;
	letter-spacing: -0.02em;
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
:root :where(.wp-block-button.is-style-priovant-outline .wp-block-button__link):hover,
:root :where(.wp-block-button.is-style-priovant-outline .wp-block-button__link):focus-visible {
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
}
:root :where(.wp-block-button.is-style-priovant-outline .wp-block-button__link):active {
	background-color: var(--priovant-btn-active);
	border-color: var(--priovant-btn-active);
	color: var(--wp--preset--color--base);
}

/* VALOR card top-bar: ensure it renders at EXACTLY 8px (theme.json's
   default group padding can otherwise inflate the empty group). */
:root :where(.priovant-card__bar) {
	background: var(--wp--preset--color--lisraya-blue);
	height: 8px;
	min-height: 8px;
	padding: 0;
	overflow: hidden;
}

/* Body bottom-clearance for the sticky tray — only apply the 200px gap
   while the tray is visible. When the tray is hidden (user has reached
   or passed the full ISI), drop the clearance so the footer flows up
   without a giant gap below it. */
body {
	padding-bottom: 0;
	transition: padding-bottom 200ms ease-out;
}
body:has(.priovant-isi-tray:not(.is-hidden)) {
	padding-bottom: 200px;
}

/* ============ CTA "Getting patients started" — layout per the Make file ============ */
:root :where(.priovant-cta) {
	padding-top: 80px;
	padding-bottom: 80px;
}

:root :where(.priovant-cta .priovant-card) {
	padding: 80px 112px;
}

/* Make rhythm: 16px after the H2, 20px between the other blocks. */
:root :where(.priovant-cta .priovant-card) > * + * {
	margin-top: 20px;
}
:root :where(.priovant-cta .priovant-card) > h2 + * {
	margin-top: 16px;
}

/* Body intro paragraph is a touch darker than the rest (Make: #1A1A1A vs #333). */
:root :where(.priovant-cta .priovant-card) > p:first-of-type {
	color: var(--wp--preset--color--lisraya-ink);
}

/* Download button: 16px / 29px padding, tight tracking (Make). */
.priovant-cta .wp-block-button__link {
	padding: 16px 29px;
	letter-spacing: -0.02em;
}

@media (max-width: 1023px) {
	:root :where(.priovant-cta) {
		padding-top: 40px;
		padding-bottom: 40px;
	}
	:root :where(.priovant-cta .priovant-card) {
		padding: 40px 24px;
	}
	/* Below the mobile burst, Make has no inter-section gap: the gold rule sits
	   flush at the hero's bottom and the CTA section's top padding is the only
	   spacer. Collapse our 32px gap (rule margin + section blockGap) so the
	   space below the burst equals the CTA's padding-top exactly. */
	:root :where(.priovant-hero__rule) {
		margin-bottom: 0;
	}
	:root :where(.priovant-cta) {
		margin-top: 0;
	}
}

/* Make's `sm:` breakpoint (640px): the space below the burst grows 40px → 80px
   (CTA `py-10 sm:py-20`). This is the one place Make breaks at 640px rather than
   the theme's usual 1024px boundary — replicated here per the design. */
@media (min-width: 640px) and (max-width: 1023px) {
	:root :where(.priovant-cta) {
		padding-top: 80px;
	}
}

/* ============ CTA: Docusign enrollment placeholder (FPO) ============ */
/* ============ Content Highlight — editable callout box (Make ComponentLibrary) ============
   A full-bleed section (own 80/40 rhythm) centering a FULL-WIDTH `.priovant-highlight__box`
   (H4 heading + body, 3 surface variants: blue tint / outline / white). Padding 40/80 (Make),
   2px content radius, the content-card drop shadow. All text = native editable blocks; variant
   = a class on the box.
   WIDTH (fixed 2026-07-15): Make shows the box FILLING its container full-width. The section
   uses FLOW layout (not `constrained`) — constrained was capping the box at contentSize (720px);
   flow + the box's own max-width = wideSize (1280) is the intended full width. The section's
   24px padding-inline is the min side gutter so the bordered box never touches the edge < 1280. */
:root :where(.priovant-highlight) {
	padding-block: 80px;
	padding-inline: 24px;
}
/* Support-only: 40px section bottom (per review 2026-07-15). The component keeps its
   canonical 80 elsewhere — Content Highlight is Support-only today, but scope it so a
   future page's highlight isn't silently tightened. */
.priovant-support .priovant-highlight { padding-bottom: 40px; }
:root :where(.priovant-highlight__box) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);   /* 1280 — full content width */
	margin-inline: auto;
	padding: 40px 80px;
	border-radius: var(--priovant-radius-subtle);
	box-shadow: 0 2px 15px rgba(0, 82, 155, 0.1);
}
:root :where(.priovant-highlight--blue) {
	background-color: var(--wp--preset--color--lisraya-utility-bg);
}
:root :where(.priovant-highlight--outline) {
	background-color: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-highlight--white) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-highlight__heading) {
	margin: 0 0 12px;
	font-size: 1.375rem;   /* 22px — H4 design, pinned regardless of the tag/level */
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-highlight__body) {
	margin: 0;
	font-size: 1rem;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}
/* Multiple body paragraphs (blockGap:0 box) get their own rhythm. */
:root :where(.priovant-highlight__body + .priovant-highlight__body) {
	margin-top: 16px;
}
@media (max-width: 1023px) {
	:root :where(.priovant-highlight) {
		padding-block: 40px;
	}
	:root :where(.priovant-highlight__box) {
		padding: 32px 24px;   /* tighter inner padding on mobile */
	}
}

/* White panel with the 8px lisraya-blue top bar (.priovant-card__bar).
   Swap the inner __frame contents for the real Docusign <iframe> when live. */
:root :where(.priovant-docusign) {
	background: var(--wp--preset--color--base);
	border-radius: var(--priovant-radius-subtle);
	overflow: hidden;
	box-shadow: 0 2px 15px rgba(0, 82, 155, 0.1);
}

:root :where(.priovant-docusign__frame) {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 543px;  /* Make: 543px */
	padding: var(--wp--preset--spacing--50);
}

/* FPO placeholder graphic (Make): orange circle + FPO/DOCUSIGN/IFRAME label, shown
   until the real Docusign iframe is wired. Decorative — the swoosh orange at 50% is
   hardcoded (not a palette token). Replace this whole __fpo block with the iframe. */
:root :where(.priovant-docusign__fpo) {
	width: min(380px, 100%);
	aspect-ratio: 1;
	border-radius: 50%;
	background: rgba(250, 163, 27, 0.5);  /* #faa31b @ 50% */
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	color: var(--wp--preset--color--lisraya-text);  /* #333333 */
	font-weight: 400;
	line-height: 1;
	text-align: center;
}
:root :where(.priovant-docusign__fpo) span {
	font-size: 32px;
}
:root :where(.priovant-docusign__fpo) .priovant-docusign__fpo-lg {
	font-size: 64px;  /* class outside :where so it beats the span rule */
}

/* ============ Sign-up "Stay in touch" — section layout per the Make file ============ */
/* Space below the section before the ISI (Make wraps SignUp in pb-10 / lg:pb-[80px]).
   Collapses with the next section's blockGap to the larger value. */
:root :where(.priovant-signup) {
	margin-bottom: 80px;
}
/* contact: the sign-up follows the lower-level hero directly, whose stepped
   gold bar is flush at the hero bottom — so there's no prior section to supply the
   sign-up's top gap (the form has padding-top:0 and relies on the section above it).
   Match the patient-enrollment page, where the signing band carries 80px top
   padding (40 mobile). Scoped to .priovant-request-a-rep so the homepage / Support /
   etc. (where a prior section provides the gap) are untouched. */
.priovant-request-a-rep .priovant-signup { padding-top: 80px; }
@media (max-width: 1023px) {
	:root :where(.priovant-signup) {
		margin-bottom: 40px;
	}
	.priovant-request-a-rep .priovant-signup { padding-top: 40px; }
	/* Make: on mobile the gold rules span the full container edge-to-edge (they're
	   direct children of the no-padding container, while the content has px-24).
	   Drop the separators' 24px inner inset so the gold reaches both edges; the
	   form/heading columns keep their 24px. Scoped homepage + content pages (not
	   the reviewed LP), per the global-sign-up-except-LP rule. */
	:root :where(.priovant-request-a-rep) .priovant-signup > .wp-block-separator {
		padding-inline: 0;
	}
}

/* Gold rules hug the section's top/bottom edges; 40px between each rule and the form. */
:root :where(.priovant-signup) > .wp-block-separator:first-child {
	margin: 0 0 40px;
}
:root :where(.priovant-signup) > .wp-block-separator:last-child {
	margin: 40px 0 0;
}

/* The separators are alignwide and get the section's inner padding, but a separator's
   gold background fills its whole border-box (through the padding) by default — so clip
   it to the content box. Now the rule insets to exactly the same edges as the heading
   and form, matching Make (rules + form share the px-[60px] container edges). */
:root :where(.priovant-signup) .wp-block-separator {
	background-clip: content-box;
}

/* Make signup container: px-6 (24px) mobile, lg:px-[60px] desktop. Override the shared
   24px inner gutter so the whole section — gold rules, heading column, form — insets
   60px on desktop and aligns to one set of edges. */
@media (min-width: 1024px) {
	:root :where(.priovant-signup) :where(.alignwide) {
		padding-inline: 60px;
	}
}

/* Make: no column gap (lg:gap-0) — the heading's pr-16 (64px) is the only separator,
   so the 40/60 split stays true. (A column gap would steal width from the form and
   widen the heading, wrapping its text late.) Mobile keeps the row gap for stacking. */
:root :where(.priovant-signup) .wp-block-columns {
	column-gap: 0;
}
/* border-box so the heading's pr-16 (64px) lives INSIDE its 40% basis instead of
   overflowing the row (which would shrink both columns and skew the 40/60 split). */
:root :where(.priovant-signup) .wp-block-columns > .wp-block-column {
	box-sizing: border-box;
}
/* 64px between the heading and the form (Make heading pr-16). */
:root :where(.priovant-signup) .wp-block-columns > .wp-block-column:first-child {
	padding-right: 64px;
}
@media (max-width: 1023px) {
	:root :where(.priovant-signup) .wp-block-columns > .wp-block-column:first-child {
		padding-right: 0;
	}
}

/* Optional intro paragraph below the sign-up heading (left column) — body type,
   16px under the H2. Mirrors the enrollment form's .priovant-signing__intro. */
:root :where(.priovant-signup__intro) {
	margin: 16px 0 0;
	font-size: 1rem;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}

/* ============ Sign-up form ("Stay in touch") — visual-only POC ============ */
:root :where(.priovant-form) {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20);
}

:root :where(.priovant-form__row) {
	display: flex;
	gap: var(--wp--preset--spacing--20);
}

:root :where(.priovant-form__row .priovant-form__field) {
	flex: 1;
}

:root :where(.priovant-form__field) {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

:root :where(.priovant-form__field label) {
	font-size: 0.875rem;
	line-height: 1.5;
	font-weight: 600;
	letter-spacing: -0.028em; /* `label` type token (Make form label) */
	color: var(--wp--preset--color--lisraya-gray-mid); /* gray field label (Mid Gray) */
}

:root :where(.priovant-form__req) {
	color: #d0021b; /* Figma required/error red */
}

:root :where(.priovant-form input[type="text"]),
:root :where(.priovant-form input[type="email"]),
:root :where(.priovant-form input[type="tel"]),
:root :where(.priovant-form select) {
	width: 100%;
	box-sizing: border-box;
	height: 52px;
	padding: 0 24px;
	border: 2px solid var(--wp--preset--color--lisraya-blue-muted); /* Muted Blue field border */
	border-radius: var(--priovant-radius-form);
	background-color: var(--wp--preset--color--base);
	font-family: inherit;
	font-size: 1rem;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-text);
}

:root :where(.priovant-form input:focus),
:root :where(.priovant-form select:focus) {
	border-color: var(--wp--preset--color--lisraya-blue);
	outline: none;
}

:root :where(.priovant-form select) {
	appearance: none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%236293bf' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1rem center;
	padding-right: 2.5rem;
}

:root :where(.priovant-form__consent) {
	display: flex;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--30);
	margin-top: var(--wp--preset--spacing--20);
}

:root :where(.priovant-form__check) {
	display: flex;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--20);
	flex: 1;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--wp--preset--color--lisraya-text);
}

:root :where(.priovant-form__check input[type="checkbox"]) {
	appearance: none;
	-webkit-appearance: none;
	margin: 0.2em 0 0 0;
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	border: 2px solid #999999;
	border-radius: 2px;
	background-color: var(--wp--preset--color--base);
	cursor: pointer;
}

:root :where(.priovant-form__check input[type="checkbox"]:checked) {
	background-color: var(--wp--preset--color--lisraya-blue);
	border-color: var(--wp--preset--color--lisraya-blue);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z' fill='%23ffffff'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 11px 11px;
}

/* /contact + /contact-site only (.priovant-request-a-rep): soften the consent label's
   wrap so the long copy reads a little better — the designer preferred `break-spaces`
   here (2026-07-31). Scoped to the contact hook so every other form's consent is
   unchanged. */
:root :where(.priovant-request-a-rep .priovant-form__check > span) {
	white-space: break-spaces;
}

/* Validation states (driven by assets/signup-form.js). Each error is a BOXED
   alert — pink fill, warning icon, bold 14px text — per the Make "Sign Up Block
   — Error State" spec. Applies to every validated field AND the consent
   checkbox, on every page, at both breakpoints. */
:root :where(.priovant-form__error) {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 6px 0 0;
	padding: 10px 12px;
	background-color: #f3dcde; /* Make alert-box fill */
	border-radius: var(--priovant-radius-form); /* 6px */
	color: var(--wp--preset--color--lisraya-text); /* #333 */
	font-size: 0.875rem; /* 14px */
	line-height: 1.5; /* 21px */
	font-weight: 600;
}

/* Warning-triangle glyph (continuous rounded outline), in the error red.
   NOTE: the Make export's OWN icon path has a gap on its lower-right edge
   (verified — renders the same broken outline in Make), so we draw a clean,
   continuous triangle of the same shape instead. */
:root :where(.priovant-form__error)::before {
	content: "";
	flex-shrink: 0;
	width: 18px;
	height: 18px;
	margin-top: 1px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d0021b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* [hidden] must keep the flex box collapsed until JS reveals it. */
:root :where(.priovant-form__error[hidden]) {
	display: none;
}

/* Errored field's label goes bold + dark (Make). JS toggles the wrapper class. */
:root :where(.priovant-form__field--error label) {
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-text);
}

:root :where(.priovant-form__input--error) {
	border-color: #d0021b !important;
}

/* ───────────────────────────────────────────────────────────────────────────
   MIRRORED FROM THE EXTERNAL DEV'S CHILD THEME
   (external-child-theme/style.css — gitignored; see docs/external-dev/README.md).
   His hcp-marketing-form.js toggles these two classes on OUR sign-up form, but
   the rules live only in his child theme — so without these our success + locked
   states are unstyled anywhere his theme isn't active (local, Cloud Run preview).
   Kept in sync with his values so parent + child match. On WP Engine staging his
   child theme loads AFTER this and overrides (incl. the icon note below).
   ─────────────────────────────────────────────────────────────────────────── */

/* Success state: the #signup-general-error container reused as a green
   confirmation ("Thank you for signing up!"). His values. */
.priovant-form__error.priovant-form__error--success {
	background-color: #e3f1e6; /* light green fill (his value) */
	color: #1b5e20; /* dark green text (his value) */
}

/* OUR addition (his rule sets `content:none` to drop the icon): a success
   checkmark mirroring the error's leading-icon treatment, in the success green.
   Overrides only the base ::before background-image. On staging his
   ::before{content:none} wins, so this shows only where his theme isn't active. */
.priovant-form__error.priovant-form__error--success::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231b5e20' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11 3 3L22 4'/%3E%3C/svg%3E");
}

/* Locked email field after a successful submit (the record key; other fields
   stay editable to update). Already on-brand — uses our palette tokens. */
.priovant-form input.priovant-form__input--locked {
	background-color: var(--wp--preset--color--lisraya-utility-bg);
	border-color: var(--wp--preset--color--lisraya-blue-muted);
	color: var(--wp--preset--color--lisraya-gray-mid);
	cursor: not-allowed;
	opacity: 1;
}

/* ───────────────────────────────────────────────────────────────────────────
   HCP ENROLLMENT FORM — our branded DocuSign signing flow (signingForm renderer,
   page-patient-enrollment.html). Reuses .priovant-form* for fields/labels/consent/
   submit; these add the signing-specific chrome (card column, disclosure scroll-box,
   block-compatible error, DocuSign frame, message) + the external dev's hooks
   (#signing-page-wrapper, .signing-active). See docs/external-dev/hcp-enrollment-form.md.
   ─────────────────────────────────────────────────────────────────────────── */

/* Tint (blue) band with gold rules framing the form (2026-06-25 — a component will
   be added above to fill the height, so the earlier min-height:100svh tray fix was
   removed). 80px vertical rhythm so the H1 lines up with other pages' sections. The
   legal/disclosure box is WHITE here (it sits on the blue band, so a tint box would
   blend). */
.priovant-enrollment__band {
	padding: 80px 0;
	background-color: var(--wp--preset--color--lisraya-tint);
}

/* Content capped at the site-wide container (1280), centered, with the SAME inner
   gutter as the sign-up section (24px → 60px desktop) so the gold rules + form inset
   inside 1280 rather than running to its edges. (His .signing-active hook stays in
   the markup for signing-form.js but no longer changes the width.) */
.priovant-signing {
	max-width: var(--wp--style--global--wide-size, 1280px);
	margin-inline: auto;
	box-sizing: border-box;
	padding-inline: 24px;
}

@media (min-width: 1024px) {
	.priovant-signing {
		padding-inline: 60px; /* matches .priovant-signup .alignwide */
	}
}

/* Gold rules frame the form; 40px gap to the content (matches the sign-up's
   separator), flush at the top/bottom edges of the section content. */
.priovant-signing > .wp-block-separator.is-style-lisraya-rule {
	margin-block: 40px;
}
.priovant-signing > .wp-block-separator.is-style-lisraya-rule:first-child {
	margin-top: 0;
}
.priovant-signing > .wp-block-separator.is-style-lisraya-rule:last-child {
	margin-bottom: 0;
}

/* Two-column layout like the sign-up section: intro col (heading + body) left,
   form right (~400px / flex, 40px gap). The flex lives on this inner grid, NOT on
   #signing-form-container, so his JS's display:block (on signing cancel) can't
   flatten it. */
.priovant-signing__grid {
	display: flex;
	align-items: flex-start;
	gap: 40px;
}

.priovant-signing__intro-col {
	flex: 0 0 400px;
}

/* Form is flush on the white surface (no panel/border/padding) — matches the sign-up.
   The white surface keeps the canonical gray-mid field labels AA-readable. */
.priovant-signing__form-col {
	flex: 1 1 0%;
}

/* Field labels darken to #333 on the tint band — the canonical gray-mid label color
   fails AA contrast on the blue background (passes on white, e.g. the sign-up). */
.priovant-signing__form .priovant-form__field label {
	color: var(--wp--preset--color--lisraya-text);
}

/* The enrollment consent is a LONG legal paragraph (the e-signature agreement), so the
   signing consent STACKS: the full-width checkbox + legal text on top, then ONE bottom row
   (.priovant-signing__consent-actions) holding *Required on the LEFT and Submit on the RIGHT
   (space-between) — so the button sits tight under the copy instead of floating
   right-and-below a short, left-aligned *Required. Column at all widths; SCOPED to
   .priovant-signing__form so the contact sign-up (short one-liner) keeps its
   side-by-side row. (2026-07-24, from the old side-by-side that assumed a short one-liner.) */
:root :where(.priovant-signing__form .priovant-form__consent) {
	flex-direction: column;
	align-items: stretch;
	gap: var(--wp--preset--spacing--20);
}
:root :where(.priovant-signing__consent-actions) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--20);
}

.priovant-signing__title {
	margin: 0 0 16px;
	font-size: 2.25rem; /* 36px — form-section heading (H2; the lower hero is the page H1) */
	line-height: 1.2;
	letter-spacing: -0.02em;
	font-weight: 400;
	color: var(--wp--preset--color--lisraya-blue);
}

.priovant-signing__intro {
	margin: 0;
	font-size: 1rem;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}

.priovant-signing__body {
	margin: 16px 0 0;
	font-size: 1rem;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}

/* Reuse the form field rhythm between fields. */
.priovant-signing__form .priovant-form__field {
	margin-bottom: var(--wp--preset--spacing--20); /* 20px */
}

/* ERSD disclosure: scrollable + keyboard-focusable (WCAG 2.1.1). WHITE — the form
   sits on the tint band, so a tint box would blend; white makes it a distinct panel. */
.priovant-signing__disclosure {
	max-height: 200px;
	overflow-y: auto;
	padding: 16px;
	margin-bottom: 12px;
	background-color: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	border-radius: var(--priovant-radius-subtle);
}

.priovant-signing__disclosure:focus-visible {
	outline: 2px solid var(--wp--preset--color--lisraya-blue);
	outline-offset: 2px;
}

.priovant-signing__disclosure-title {
	margin: 0 0 10px;
	font-size: 0.875rem; /* 14px */
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-text);
}

.priovant-signing__disclosure-text p {
	margin: 0 0 10px;
	font-size: 0.75rem; /* 12px legal */
	line-height: 1.6;
	/* lisraya-text (#333), not gray-mid — gray-mid @12px on the tint box fails AA
	   contrast (WCAG 1.4.3); #333 passes and matches the disclosure title. */
	color: var(--wp--preset--color--lisraya-text);
}

.priovant-signing__disclosure-text p:last-child {
	margin-bottom: 0;
}

/* Inline error — his signing-form.js toggles style.display (block/none), so this
   must NOT be flex (that's the sign-up .priovant-form__error). Same pink alert look,
   icon via padding + background so it survives display:block. Sits below the
   consent/submit row (margin-top), before the privacy notice. */
.priovant-signing__error {
	margin: 16px 0 0;
	padding: 10px 12px 10px 40px;
	background-color: #f3dcde; /* Make alert-box fill */
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d0021b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: 12px 11px;
	background-size: 18px 18px;
	border-radius: var(--priovant-radius-form);
	color: var(--wp--preset--color--lisraya-text);
	font-size: 0.875rem;
	line-height: 1.5;
	font-weight: 600;
}

.priovant-signing__privacy {
	margin: 16px 0 0;
	font-size: 0.75rem; /* 12px */
	line-height: 1.5;
	text-align: center;
	/* #333, not gray-mid — the note sits on the tint band where gray-mid fails AA. */
	color: var(--wp--preset--color--lisraya-text);
}

/* DocuSign embed mount (his JS reveals + mounts the iframe here). */
.priovant-signing__frame {
	min-height: 800px;
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	border-radius: var(--priovant-radius-subtle);
	background-color: var(--wp--preset--color--base);
}

/* Terminal message card (his JS reveals on session end). */
.priovant-signing__message {
	padding: 40px;
	text-align: center;
	background-color: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	border-radius: var(--priovant-radius-subtle);
	font-size: 1.125rem;
	color: var(--wp--preset--color--lisraya-text);
}

/* Rich session-end message = a Content Highlight Block, Variant 2 (outline) + a CTA, injected
   into #signing-message via innerHTML (signing-form.js sessionEnd handler). The box + button
   reuse the DEPLOYED Content Highlight / .priovant-btn styling (so the dev's pasted HTML is
   styled on the real enrollment page); designed/reviewed on the internal /external-form-code
   bench. When #signing-message holds a highlight box, drop its OWN white-card surface so the
   box is the only card (plain-<p> status messages — already-signed, pending — keep the card). */
.priovant-signing__message:has(.priovant-highlight__box) {
	padding: 0;
	border: 0;
	background: none;
	text-align: left;
}
/* Optional CTA row inside a Content Highlight box (left-aligned, matching its copy). */
.priovant-highlight__actions {
	margin: 24px 0 0;
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}

@media (max-width: 1023px) {
	.priovant-enrollment__band {
		padding: 40px 0;
	}

	.priovant-signing__grid {
		flex-direction: column;
		gap: 24px;
	}

	.priovant-signing__intro-col {
		flex-basis: auto;
	}
}

/* Lightweight modal look (native <dialog>). Originally the sign-up success placeholder;
   now REUSED by the dev/staging "Work In Progress" notice (WIP-NOTICE — assets/wip-notice.js),
   so keep it. Off the radius scale by design (temporary chrome). */
:root :where(.priovant-form__modal) {
	border: 0;
	border-radius: 6px;
	padding: var(--wp--preset--spacing--40);
	max-width: 420px;
	box-shadow: 0 8px 30px rgba(0, 82, 155, 0.2);
	color: var(--wp--preset--color--lisraya-text);
	font-family: inherit;
}

:root :where(.priovant-form__modal)::backdrop {
	background: rgba(21, 43, 97, 0.4);
}

/* WIP-NOTICE heading (Work In Progress). */
:root :where(.priovant-form__modal-title) {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-size: 20px;
	line-height: 1.2;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}

:root :where(.priovant-form__modal-msg) {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-size: 1rem;
	line-height: 1.5;
}

:root :where(.priovant-form__modal-close) {
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: 6px;
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
	font-family: inherit;
	font-size: 0.875rem;
	font-weight: 700;
	padding: 0.5rem 1.25rem;
	cursor: pointer;
}

/* Submit = canonical OUTLINE on EVERY page (LP included) — colors (default +
   hover/active/disabled + border) come from the canonical button system at the
   end of this file, which targets .priovant-form__submit unscoped. This block is
   geometry only. (Was canonical Primary until 2026-06-16, when the designer asked
   for the sign-up button to use the Outline style.) */
:root :where(.priovant-form__submit) {
	flex-shrink: 0;
	white-space: nowrap;
	height: 52px;
	padding: 0 26px;
	border-radius: var(--priovant-radius-sharp);
	font-family: inherit;
	font-size: 0.875rem;
	font-weight: 700;
	cursor: pointer;
}

:root :where(.priovant-form__required) {
	margin: 0;
	color: #d0021b; /* Figma required/error red */
	font-size: 0.8125rem;
}

/* Stack the paired name row and the consent/submit row on mobile (≤1023px). */
@media (max-width: 1023px) {
	:root :where(.priovant-form__row),
	:root :where(.priovant-form__consent) {
		flex-direction: column;
	}
}

/* ============ Form abandonment modal (assets/form-guard.js) ================
   Shown when a user tries to leave a dirty form via an in-page link. Design =
   Make ComponentLibrary "Form Abandonment Modal — In Context": a Gold-4 card with
   an 8px dark-gold top rule centred over the dimmed/blurred page. Hidden by default
   ([hidden]); the guard script flips `hidden`. The card is full-viewport-fixed +
   flex-centred so it also covers the sticky ISI tray. Buttons use the canonical
   sharp .priovant-btn (Primary "stay" + Outline "leave"). */
:root :where(.priovant-abandon) {
	position: fixed;
	inset: 0;
	z-index: 1000; /* above the sticky header + ISI tray (≤110) */
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px; /* gutter so the card never touches the viewport edge (mobile) */
	/* Scrim matched to the Make "In Context" render. Make dims the background with TWO
	   stacked effects: the page content at opacity:0.5 (washing it ~50% toward white)
	   PLUS a light-blue-20% overlay. We can't set opacity:0.5 on the whole page behind a
	   body-level fixed overlay, but the two stacked effects are equivalent to a single
	   scrim: 0.5·white then 0.2·(230,241,255) over that ⇒ rgba(247,250,255,0.6). Keeps
	   the light-blue character while washing the background out to match Make. */
	background-color: rgba(247, 250, 255, 0.6);
	-webkit-backdrop-filter: blur(2px);
	backdrop-filter: blur(2px);
}
/* Class display:flex would otherwise beat the UA [hidden] rule. */
:root :where(.priovant-abandon[hidden]) {
	display: none;
}
:root :where(.priovant-abandon__dialog) {
	box-sizing: border-box;
	width: 100%;
	max-width: 480px;
	padding: 32px 40px 40px;
	background-color: var(--wp--preset--color--lisraya-gold-4);
	border-top: 8px solid var(--priovant-gold-dark);
	border-radius: 6px; /* Make; modals aren't in the brand radius chart */
	box-shadow: 0 8px 32px rgba(21, 43, 97, 0.2); /* navy 20% */
	overflow: hidden;
}
:root :where(.priovant-abandon__heading) {
	margin: 0 0 12px;
	font-size: 22px;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-abandon__body) {
	margin: 0 0 32px;
	font-size: 16px;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-abandon__actions) {
	display: flex;
	gap: 16px;
	align-items: center;
	justify-content: center;
}
/* Narrow screens: the 480px card shrinks (max-width + width:100%); stack the two
   buttons full-width and tighten the padding so both labels fit at 320px. */
@media (max-width: 479px) {
	:root :where(.priovant-abandon__dialog) {
		padding: 24px;
	}
	:root :where(.priovant-abandon__actions) {
		flex-direction: column;
	}
	:root :where(.priovant-abandon__actions) .priovant-btn {
		width: 100%;
	}
}

/* ============ Legal / long-form prose pages (Privacy Policy, Terms of Use…)
   Verbatim company-site COPY rendered as native blocks on a STANDARD content page,
   so it inherits the SITE's styling — the `.priovant-page` content area + gutters,
   the global H1/H2/H3 + body type, and the canonical `.priovant-link`. The group is
   blockGap:0, so this block only sets vertical rhythm (no type/color/width here). */
:root :where(.priovant-legal p) {
	margin: 0 0 var(--wp--preset--spacing--20);
}
:root :where(.priovant-legal h2) {
	margin: var(--wp--preset--spacing--50) 0 var(--wp--preset--spacing--20);
}
:root :where(.priovant-legal h3) {
	margin: var(--wp--preset--spacing--40) 0 var(--wp--preset--spacing--20);
}
/* TOC jump-links must land the section heading BELOW the sticky header (else it hides
   behind it). Header ≈ 147px desktop / 115px mobile (switches at 1024) + ~13px gap.
   Target-side scroll-margin-top, matching #signup + the section-nav offset. 2026-07-10. */
:root :where(.priovant-legal :where(h2, h3, h4)[id]) {
	scroll-margin-top: 160px;
}
@media (max-width: 1023px) {
	:root :where(.priovant-legal :where(h2, h3, h4)[id]) {
		scroll-margin-top: 130px;
	}
}
:root :where(.priovant-legal ul) {
	margin: 0 0 var(--wp--preset--spacing--20);
	padding-left: 1.5rem;
	list-style: disc;
}
:root :where(.priovant-legal li) {
	margin: 0 0 0.5rem;
}
/* Bold inline sub-label (e.g. Disclosure "To our affiliates:") tight to its paragraph. */
:root :where(.priovant-legal__sublabel) {
	margin: var(--wp--preset--spacing--20) 0 0.25rem;
}
:root :where(.priovant-legal__effective) {
	margin-top: var(--wp--preset--spacing--40);
}
/* In-page TOC jump-links: keep them brand-blue regardless of :visited. The
   canonical link system turns visited links navy, but these are same-page
   anchors (#section) — "visited" is meaningless and would leave the index
   half-navy once used. Default + hover (mid-blue) behaviour is unchanged.
   (`.priovant-link:visited` is kept OUTSIDE :where() so this out-specifies the
   canonical :visited rule, which lives later in this file.) */
:root :where(.priovant-legal__toc) .priovant-link:visited {
	color: var(--wp--preset--color--lisraya-blue);
}

/* ============ Editor-only overrides (when style.css is loaded inside
   the block editor canvas via add_editor_style). These class hooks
   only exist in the editor DOM, so the rules are inert on the front
   end. ============ */

.editor-styles-wrapper .priovant-isi-tray,
.block-editor-block-list__layout .priovant-isi-tray {
	/* In the editor, render the tray inline rather than pinning it to
	   the bottom of the editor canvas. Saves users from a giant tray
	   overlay hovering over the content they're trying to edit. */
	position: static;
	box-shadow: none;
	transform: none;
	opacity: 1;
}

.editor-styles-wrapper .priovant-isi-tray__body,
.block-editor-block-list__layout .priovant-isi-tray__body {
	/* Show the full ISI tray body inside the editor (no clip + no
	   fade-to-white) so editors can see the actual content while
	   working. The 130px clip is a front-end UX choice; in the editor
	   it just gets in the way. */
	max-height: none;
}

.editor-styles-wrapper .priovant-isi-tray__body::after,
.block-editor-block-list__layout .priovant-isi-tray__body::after {
	display: none;
}

/* Additional */

#wp--skip-link--target {
	margin-block-start: 0;
}
h1.wp-block-heading {margin-top: 0;}

/* ============================================================================
   SITE HEADER (homepage + all main-site pages) — parts/header-site.html
   Two-row sticky nav from Make `nav.tsx` / V4 `844:17568`. Namespaced
   .priovant-siteheader* so the landing page's .priovant-nav is untouched. The
   sticky + base-bg come from the shared `header.wp-block-template-part` rule.
   Single 1024 breakpoint, like the rest of the theme.
   ========================================================================== */
:root :where(.priovant-siteheader) {
	background-color: var(--wp--preset--color--base);
	/* 4px blue bar along the bottom edge (Make box-shadow — adds no height). */
	box-shadow: 0 4px 0 0 var(--wp--preset--color--lisraya-blue);
}

/* Shared 1280 content container with 24px growing gutters (matches alignwide). */
:root :where(.priovant-siteheader__bar) {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: 24px;
}

/* ── Utility strip (desktop only) ── */
:root :where(.priovant-siteheader__utility) {
	background-color: var(--wp--preset--color--lisraya-utility-bg);
}
:root :where(.priovant-siteheader__utilnav) {
	display: flex;
	justify-content: flex-end;
	align-items: center;
}
:root :where(.priovant-siteheader__utillink) {
	display: inline-flex;
	align-items: center;
	padding: 8px 16px;
	font-size: 11px;
	font-weight: 600;
	line-height: 16.5px;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: none;
	transition: color 150ms ease;
}
:root :where(.priovant-siteheader__utillink:hover) {
	color: var(--wp--preset--color--lisraya-isi-border);
}

/* ── Main row ── */
:root :where(.priovant-siteheader__main) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-block: 24px;
}
:root :where(.priovant-siteheader__logo) {
	display: inline-flex;
	/* Let ONLY the logo shrink below ~345px so the header fits at 320px (WCAG
	   1.4.10 reflow): the svg's max-width:100% scales it down with its lane while
	   the right cluster stays fixed (flex-shrink:0). Mirrors the LP nav fix;
	   self-limiting — no effect at 360px+ where everything fits. */
	flex-shrink: 1;
	min-width: 0;
}
:root :where(.priovant-siteheader__logo svg, .priovant-siteheader__logo img) {
	width: 160px;
	max-width: 100%;
	height: auto;
	display: block;
}

/* The Custom Logo / fallback link wrapper (WP's get_custom_logo markup, mirrored by
   priovant_logo_markup()). Tight box so it doesn't add baseline gap in any context. */
:root :where(.custom-logo-link) {
	display: inline-flex;
	line-height: 0;
}

/* Primary nav (desktop only) — 13px/700, gold top-border reserved for active. */
:root :where(.priovant-siteheader__nav) {
	display: flex;
	align-items: center;
	gap: 4px;
}
:root :where(.priovant-siteheader__navlink) {
	padding: 10px 12px;
	border-top: 3px solid transparent;
	font-size: 13px;
	font-weight: 700;
	line-height: 20px;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: none;
	white-space: nowrap;
	transition: color 150ms ease, border-color 150ms ease;
}
/* Hover (Make NavComponents interactive states): navy text + a faint navy 3px top
   bar (the active state firms it up to gold). rgba = Navy #152b61 @ 25%. */
:root :where(.priovant-siteheader__navlink:hover) {
	color: var(--wp--preset--color--lisraya-isi-border);
	border-top-color: rgba(21, 43, 97, 0.25);
}
/* Active page (Make nav.tsx): #333 text + 3px gold top bar. Set
   aria-current="page" on the current page's link (e.g. Support & Resources on
   /support). Nothing is active on the homepage. data-priovant-current-section
   gives the SAME treatment to a section-parent link on a standalone page that
   belongs under it (e.g. Support lit on /patient-enrollment) — visual only, so
   it carries no aria-current (see site-nav.js SECTION_OF). */
:root :where(.priovant-siteheader__navlink[aria-current="page"], .priovant-siteheader__navlink[data-priovant-current-section]) {
	color: var(--wp--preset--color--lisraya-text);
	border-top-color: var(--wp--preset--color--lisraya-yellow);
}

/* Right cluster: Sign Up + hamburger. */
:root :where(.priovant-siteheader__right) {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-shrink: 0;
}
/* ⚠ RETIRED 2026-08-07 (Phase 46 + 50): the site header no longer emits
   .priovant-siteheader__signup — Phase 46 (821f1e0) swapped the single primary
   nav CTA for two .priovant-btn buttons (Enroll patients + Speak to a rep).
   The block below is dead code, kept for reference. If you need to change
   nav-CTA styling, edit the .priovant-siteheader__right .priovant-btn override
   (grep 'nav-tight vertical geometry'). Safe to delete this block in a
   dedicated CSS-cleanup pass — verify no other page/template still uses the
   class first (grep .priovant-siteheader__signup). */
/* Sign Up button (Make: 2px border, 22px sides, 14px py → 52px tall border-box). */
:root :where(.priovant-siteheader__signup) {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	padding: 14px 22px;
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
	font-size: 14px;
	font-weight: 700;
	line-height: 20px;
	letter-spacing: -0.02em;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
/* Hover/focus: the solid-blue button inverts to a white fill with Brand Blue
   (#00529b) text + border — the exact inverse of the Outline button (was Navy
   #152b61, changed 2026-07-13). (This is the unified site header — it also becomes
   the LP's header at launch.) */
:root :where(.priovant-siteheader__signup:hover),
:root :where(.priovant-siteheader__signup:focus-visible) {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--lisraya-blue);
	border-color: var(--wp--preset--color--lisraya-blue);
}
/* active: darker Brand Blue fill (#003d7a), white text — canonical Primary active. */
:root :where(.priovant-siteheader__signup:active) {
	background-color: var(--priovant-btn-active);
	color: var(--wp--preset--color--base);
	border-color: var(--priovant-btn-active);
}

/* Request-a-rep pages (both site- and LP-chrome copies): hide the header CTA — it
   would point users back at the form they're already on. TEMP: pending a decision to
   remove it entirely or repurpose it as a back/close control (see backlog). Covers the
   site header (.priovant-siteheader__signup) and the LP header (.priovant-nav__right
   button). The hamburger/menus stay untouched. (The enrollment form KEEPS its header
   CTA — 2026-07-01, restored.) visibility:hidden (NOT display:none) so the button's box
   is PRESERVED — the site header's main row is justify-content:space-between, so
   collapsing the right cluster would shove the primary nav to the right edge. visibility
   also drops it from the tab order + a11y tree. No :where() — keep specificity above
   core's `.wp-block-buttons > .wp-block-button` (0,2,0). */
body:has(main.priovant-request-a-rep) .priovant-siteheader__signup,
body:has(main.priovant-request-a-rep) .priovant-nav__right .wp-block-button {
	visibility: hidden;
}

/* Hamburger — 40×40 blue square (mobile only; shown in the ≤1023 block). */
:root :where(.priovant-siteheader__toggle) {
	display: none;
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
	cursor: pointer;
	transition: background-color 150ms ease, border-color 150ms ease;
}
:root :where(.priovant-siteheader__toggle:hover) {
	background-color: #00336b;
	border-color: #00336b;
}
:root :where(.priovant-siteheader__toggle-close) {
	display: none;
}
:root :where(.priovant-siteheader__toggle[aria-expanded="true"] .priovant-siteheader__toggle-open) {
	display: none;
}
:root :where(.priovant-siteheader__toggle[aria-expanded="true"] .priovant-siteheader__toggle-close) {
	display: block;
}

/* ── Mobile full-screen overlay ── */
:root :where(.priovant-siteheader__overlay) {
	display: none;   /* shown only ≤1023 (below); top set by site-nav.js */
	position: fixed;
	inset-inline: 0;
	bottom: 0;
	top: 136px;
	z-index: 90;   /* within the header's stacking context; the header wrapper
	                  (z-index 110) is what lifts the open menu above the ISI tray */
	flex-direction: column;
	background-color: var(--wp--preset--color--base);
	/* Kill the mobile browser's default blue tap-highlight on the menu links (it
	   shows through on the transparent utility links as a light-blue flash). */
	-webkit-tap-highlight-color: transparent;
	opacity: 0;
	pointer-events: none;
	/* visibility:hidden removes the closed menu's links from the tab order + a11y
	   tree (WCAG 4.1.2 — no focusable content inside an aria-hidden element);
	   the 300ms visibility delay lets the opacity fade-out finish first. */
	visibility: hidden;
	transition: opacity 300ms ease, visibility 0s linear 300ms;
}
:root :where(.priovant-siteheader__overlay.is-open) {
	opacity: 1;
	pointer-events: auto;
	visibility: visible;
	transition: opacity 300ms ease, visibility 0s linear 0s;
}
:root :where(.priovant-siteheader__overlay-gold) {
	height: 4px;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-siteheader__overlay-inner) {
	flex: 1;
	display: flex;
	flex-direction: column;
	justify-content: flex-start;   /* top-aligned (Make MobileNavOverlay) */
	padding: 32px 32px 0;
	overflow-y: auto;
}
:root :where(.priovant-siteheader__overlay-nav) {
	display: flex;
	flex-direction: column;
	align-items: stretch;          /* full-width, left-aligned links */
	gap: 4px;
}
:root :where(.priovant-siteheader__overlay-link) {
	display: block;
	box-sizing: border-box;   /* width:100% fills the nav → hover/active bg keeps the 32px right gutter (matches left) */
	width: 100%;
	text-align: left;
	padding: 8px 16px;
	border-top: 3px solid transparent;
	border-radius: var(--priovant-radius-sharp);
	font-size: 20px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: none;
	transition: background-color 150ms ease, color 150ms ease;
}
:root :where(.priovant-siteheader__overlay-link:hover) {
	background-color: var(--wp--preset--color--lisraya-blue);   /* darker blue + white text (hover/tap) */
	color: var(--wp--preset--color--base);
}
:root :where(.priovant-siteheader__overlay-link[aria-current="page"], .priovant-siteheader__overlay-link[data-priovant-current-section]) {
	background-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
	border-top-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-siteheader__overlay-util) {
	margin-top: 32px;
	padding-top: 32px;
	border-top: 1px solid #d6e4f5;
}
:root :where(.priovant-siteheader__overlay-util nav) {
	display: flex;
	flex-direction: column;
	align-items: stretch;          /* left-aligned utility links */
	gap: 4px;
}
:root :where(.priovant-siteheader__overlay-utillink) {
	display: block;
	border-left: 3px solid transparent;   /* reserves the gold-bar slot so hover doesn't shift text (Make: 3px + 13px = 16px) */
	padding: 8px 13px;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: none;
	transition: color 150ms ease, border-color 150ms ease;
}
/* Hover/tap (Make InteractiveMobileNavOverlay sub-menu state): bold navy text +
   3px gold left bar. */
:root :where(.priovant-siteheader__overlay-utillink:hover),
:root :where(.priovant-siteheader__overlay-utillink:focus-visible),
:root :where(.priovant-siteheader__overlay-utillink:active) {
	color: var(--wp--preset--color--lisraya-isi-border);
	font-weight: 700;
	border-left-color: var(--wp--preset--color--lisraya-yellow);
}

/* ============ Homepage-only overrides ============
   Scoped to the homepage template's <main class="priovant-home"> so the landing
   page (page-home.html, plain <main>) is untouched. At launch these "just work"
   on the front page — the homepage renders through page-homepage.html (which has
   .priovant-home), since there's no front-page.html. No launch-time edit needed. */
/* Hero H1 line-height 1.15 (Make hero-section.tsx / V4 844:17173 = 110px for
   two lines at 48px) — the shared .priovant-hero uses the theme's 1.08. */
:root :where(.priovant-home .priovant-hero h1) {
	line-height: 1.15;
}
/* Hero burst is shorter on the homepage: 199px vs the LP's 298px (Make
   hero-section.tsx / V4 844:17178–17188 = 199px tall, top-aligned at 80px).
   The burst SVG is preserveAspectRatio="none" vertical bars, so a height
   override just shortens them — no markup/SVG change. Gutter fill matches. */
:root :where(.priovant-home .priovant-hero__burst),
:root :where(.priovant-home .priovant-hero__gutter) {
	height: 199px;
}
/* Homepage hero on mobile follows Make's fixed 80px vertical padding (a masthead
   exception to the canonical 40px mobile rhythm) plus a 48px gap below the copy
   before the 4-band strip (Make hero-section.tsx mobile strip: marginTop 48px).
   Scoped to .priovant-home so the LP hero keeps its own V4-tuned 40px/32px. */
@media (max-width: 1023px) {
	:root :where(.priovant-home .priovant-hero) {
		padding-top: 80px;
	}
	:root :where(.priovant-home .priovant-hero__burst-bar) {
		margin-top: 48px;
	}
}

/* Sign-up heading (h2) stays the global 36/1.2 at all widths — the old mobile 24px
   step-down was removed (typography is fixed-scale, no mobile sizing). */
/* Sign-up: homepage V4 (844:17303) uses a fixed 400px heading column + 40px gap
   + flex-1 form (840), vs the LP's 40/60. Override the renderer's inline
   flex-basis (hence !important). The LP keeps its 40/60 (no .priovant-home). */
:root :where(.priovant-request-a-rep) :where(.priovant-signup .wp-block-columns) {
	column-gap: 40px !important;   /* beat the LP's .wp-block-columns rule */
}
:root :where(.priovant-request-a-rep) :where(.priovant-signup .wp-block-column:first-child) {
	flex: 0 0 400px !important;
}
:root :where(.priovant-request-a-rep) :where(.priovant-signup .wp-block-column:last-child) {
	flex: 1 1 0% !important;
}
/* Sign-up uses the canonical 60px desktop gutter on EVERY page — it inherits the
   base `.priovant-signup .alignwide` rule (60px / lg). Make's px-0 full-bleed on
   the homepage + Support was a designer error; corrected to the standard gutter
   so the section matches the LP and the rest of the page (designer call,
   2026-06-10). Mobile keeps 24px (gold rules stay full-width per the earlier fix). */
/* Homepage Sign Up Now button: 24px sides (V4 → ~134px) so the consent text gets
   its full 654px and wraps to 3 lines like V4 (the LP submit uses 26px). */
:root :where(.priovant-request-a-rep) :where(.priovant-form__submit) {
	padding-inline: 24px;
}
/* The sign-up submit is the canonical OUTLINE button (white + Brand Blue border →
   blue-fill hover → #003d7a active) on EVERY page — see the canonical button
   system at the end of this file (changed from Primary 2026-06-16). This rule is
   just the homepage's 24px side padding (the LP base uses 26px). */

/* Mobile (≤1279): hide utility strip + desktop primary nav; show hamburger +
   make the overlay available (visibility still gated by .is-open opacity).
   Header-scoped breakpoint bumped from 1023 → 1279 (2026-08-07): with the
   two-button nav row (Enroll patients + Speak to a rep) added in Phase 46,
   1024-1279 widths crowd the primary nav — using the mobile menu at those
   widths. Rest of the theme keeps the global 1023 breakpoint (style.css:1549).
   The 'Speak to a rep' outline button in the header row is also hidden here;
   its equivalent appears as .priovant-siteheader__overlay-cta inside the menu. */
@media (max-width: 1279px) {
	:root :where(.priovant-siteheader__utility),
	:root :where(.priovant-siteheader__nav) {
		display: none;
	}
	:root :where(.priovant-siteheader__toggle) {
		display: inline-flex;
	}
	:root :where(.priovant-siteheader__overlay) {
		display: flex;
	}
	/* Move Speak to a rep out of the header row on mobile — it re-renders as a
	   full-width primary button at the top of the overlay. Bare descendant
	   chain (specificity 0,2,0) beats the base .priovant-btn's inline-flex
	   at 0,1,0 regardless of source order. */
	.priovant-siteheader__right .priovant-btn--outline {
		display: none;
	}
	/* V4 mobile: Sign Up is 40px tall (8px py + 20 line + 2px border, border-box)
	   to match the 40×40 hamburger — desktop stays 52px. */
	:root :where(.priovant-siteheader__signup) {
		padding-block: 8px;
	}
	/* 40px breathing room between the logo mark and the right CTA cluster on
	   mobile. Without this, the flex space-between (LP) / gap:16 (site) leaves
	   only a few px between them at 375-390px and they visually touch.
	   LP flex container is unnamed alignwide block markup — target it with
	   :has() so WP's own layout CSS (which zeros child margins) can't win by
	   specificity. Site bumps the existing __main gap directly. */
	.wp-block-group.alignwide:has(> .priovant-nav__logo) {
		column-gap: 40px;
	}
	:root :where(.priovant-siteheader__main) {
		gap: 40px;
	}
}

/* Below the 375px iPhone-SE floor: floor the logo at its 375px-viewport size
   (~120px) and take the size hit out of the button + hamburger cluster below.
   Above 375px the flex-shrink mechanics continue as before (logo naturally
   scales with viewport). Below 375px the logo floors at 120px min and the
   cluster shrinks so 320px WCAG reflow still fits — 36×36 tap targets clear
   the 24×24 min. Covers BOTH header variants (LP .priovant-nav__* and site
   .priovant-siteheader__*). */
@media (max-width: 374.98px) {
	:root :where(.priovant-nav__logo, .priovant-siteheader__logo) {
		min-width: 120px;
	}
	/* Reset the ≤1279 40px gap to 0 so 320px WCAG reflow still fits — the
	   cluster shrink below buys the space for a readable logo, not for a gap.
	   User accepted the trade-off: gap-first at 375+, fit-first at 320. */
	.wp-block-group.alignwide:has(> .priovant-nav__logo) {
		column-gap: 0;
	}
	:root :where(.priovant-siteheader__main) {
		gap: 16px;
	}
	.priovant-siteheader__right .priovant-btn,
	.priovant-nav__right .priovant-btn {
		padding: 6px 8px;
	}
	:root :where(.priovant-siteheader__toggle,
	             .priovant-drawer-toggle) {
		width: 36px;
		height: 36px;
	}
	:root :where(.priovant-siteheader__toggle svg,
	             .priovant-drawer-toggle svg) {
		width: 14px;
		height: 14px;
	}
}

/* ============================================================================
   HOMEPAGE SECTIONS (importer-driven; Make sections / V4 844:17165).
   Shared section vocabulary + per-section styles. New namespaced classes, so
   nothing here touches the landing page.
   ========================================================================== */

/* Shared section header: gray uppercase eyebrow, 200px gold rule, h2 heading.
   (Homepage eyebrows use -0.02em + 20px gap, vs the LP's is-style-eyebrow.) */
:root :where(.priovant-eyebrow) {
	margin: 0 0 20px;
	font-size: 12px;
	line-height: 18px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-rule) {
	width: 200px;
	height: 2px;
	border: 0;
	margin: 0 0 16px;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
/* Section h2 in wp:html sections inherits the theme h2 (36/1.2/400/-0.02em/blue);
   just set the Make 20px bottom gap. */
:root :where(.priovant-section__heading) {
	margin: 0 0 20px;
}

/* ── Full-bleed-section content cap (Make's `max-w-7xl mx-auto`, 1280) ──
   The §06 layout primitives are full-bleed `.alignfull` sections whose background
   spans edge-to-edge, but their CONTENT must stay within the 1280 (wideSize)
   container, centered — exactly like Make, where every section sits inside a
   `maxWidth:1280; margin:0 auto` wrapper. `--priovant-bleed-gutter` is the extra
   inline padding that re-centers content at 1280: it grows with the viewport above
   1280 and clamps to 0 below it (so behavior ≤1280 is unchanged). Each section adds
   its own Make interior gutter on top: `padding-inline: calc(var(--priovant-bleed-gutter) + <gutter>)`.
   (`100%` resolves against each section's containing block = the full-width <main>,
   since root padding is 0.) Sections with their own inner cap — Evidence, Content
   Cards, Statistics, MoA, Testimonial (default), Footnotes, CTA Speedbump — use a
   `__inner`/`__box`/`__card` wrapper instead and are unaffected. */
:root {
	--priovant-bleed-gutter: max( 0px, calc( ( 100% - var( --wp--style--global--wide-size, 1280px ) ) / 2 ) );
	/* ── Section gutter scale ─────────────────────────────────────────────────
	   Desktop content insets INSIDE the 1280 cap (mobile = 24px, except content-cards
	   62 / CTA 32). SINGLE SOURCE OF TRUTH for the recurring per-section gutter — its
	   mirrors are the gutter table in CLAUDE.md and scripts/gutter-check.mjs (the QA
	   gate reads these vars). Apply as `calc(var(--priovant-bleed-gutter) + var(--priovant-gutter-*))`
	   on a full-bleed section, or bare `var(--priovant-gutter-*)` inside a 1280-capped inner.
	   NOT yet tokenized (kept as literals): homepage hero 200, sign-up/testimonial 60,
	   footnotes 73/112. Collapsing the near-duplicates (118→112 etc.) is backlogged (Step B). */
	--priovant-gutter-body: 62px;    /* content-block · content-columns · statistics · chart 70/30 · content-cards content */
	--priovant-gutter-inset: 112px;  /* interior lower-level hero · image content block (evidence + data table share the value) */
	--priovant-gutter-media: 118px;  /* 50/50 · MoA image rows */
	--priovant-gutter-table: 40px;   /* 70/30 data table */
}

/* ── Standard Content Block (Make §06 — component-library / Phase-3 primitive) ──
   Full-width section, 64/112 desktop · 48/24 mobile. eyebrow + gold rule + H2
   (reuse .priovant-eyebrow / .priovant-rule) + body (paragraph or gold-dot
   bullets) + optional outline CTA. layout 'split' = head|main two-column ≥1024. */
:root :where(.priovant-content-block) {
	padding-block: 64px;
	/* 62px inset (was 112) — aligns the body content to the `.priovant-content-cards__box`
	   edge, matching the statistics/chart alignment the designer set 2026-07-14. The hero
	   stays at 112 so the body steps out ~50px wider (the derma/safety rhythm). 2026-07-15. */
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-body ) );
}
:root :where(.priovant-content-block__heading) {
	margin: 0 0 20px;
	color: var(--wp--preset--color--lisraya-blue);
}
/* Variant D (Make §06): the heading renders at the H3 role SIZE (28px) regardless
   of its tag, so the tag stays free for the document outline (Support's "Committed…"
   is an <h2> section-parent of the H3 Copay/Bridge sub-sections, but sized like D).
   This is the ONE SCB variant that decouples size from tag — A/B/C keep the
   convenient heading_level→tag→size shorthand (h2 36 · h3 28 · h4 22), and the
   subheadings feature relies on that coupling. Same tag/size decouple the CTA
   speedbump + 30/70 already use. `.priovant-content-block__heading` is OUTSIDE the
   :where() so this out-specifies the global h2 element style (cf. --imglarge below). */
:root :where(.priovant-content-block--d) .priovant-content-block__heading {
	font-size: 28px;
	line-height: 1.2;
	font-weight: 400;
	letter-spacing: -0.02em;
}
/* Stacked variant: the heading is the LAST child of __head, so its margin-bottom is
   zeroed by the blockGap last-child reset → the 20px heading→body gap disappears.
   Put the gap on __head as padding (immune to margin-collapse + last-child resets).
   Split = side-by-side columns (no vertical gap); featured keeps the heading's own
   margin since the heading isn't the last child there. */
:root :where(.priovant-content-block:not(.priovant-content-block--split) .priovant-content-block__head) {
	padding-bottom: 20px;
}
:root :where(.priovant-content-block__text) {
	margin: 0 0 36px;
	font-size: 16px;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-content-block__text:last-child) {
	margin-bottom: 0;
}
/* Gold-dot bullet list (Make: 6px #FFC60A dots, 18px gap).
   Shared by SCB bullets and the highlight-callout bullets (§4 style) — both
   emit the same 6px yellow ::before dot; only the wrapping class differs. */
:root :where(.priovant-content-block__bullets, .priovant-highlight__bullets) {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 18px;
}
:root :where(.priovant-content-block__bullets li, .priovant-highlight__bullets li) {
	position: relative;
	padding-left: 20px;
	font-size: 16px;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-content-block__bullets li, .priovant-highlight__bullets li)::before {
	content: "";
	position: absolute;
	left: 0;
	top: 10px;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
/* Split: H2 (head, 420px) left · body (main) right, 64px gap — desktop only.
   Columns top-aligned (flex-start). NOTE: whether the shorter body column should
   VERTICALLY CENTER against the taller heading is a pending designer follow-up (see
   backlog) — left top-aligned until decided. As of 2026-07-15 NO page uses the split
   layout (Support "Committed" → Variant D, Dermatomyositis "Delays" → 30/70); it
   survives only in the component-library B/C specimens. */
@media (min-width: 1024px) {
	:root :where(.priovant-content-block--split) {
		display: flex;
		gap: 64px;
		align-items: flex-start;
	}
	:root :where(.priovant-content-block--split > .priovant-content-block__head) {
		flex: 0 0 420px;
	}
	:root :where(.priovant-content-block--split > .priovant-content-block__main) {
		flex: 1;
	}
}
@media (max-width: 1023px) {
	:root :where(.priovant-content-block) {
		padding: 48px 24px;
	}
	:root :where(.priovant-content-block__text) {
		margin-bottom: 28px;
	}
	/* Split stacks to one column ≤1023 (the 64px gap is horizontal/desktop-only), but the
	   heading's own margin is last-child-zeroed and the stacked __head padding rule excludes
	   --split → heading sat flush on the body (0 gap). Restore the standard heading→body gap
	   when stacked (= the non-split __head 20px / the heading's own 20px; Make's
	   ContentBlockBMobile uses 16). Applies to both split instances (Support · About). */
	:root :where(.priovant-content-block--split > .priovant-content-block__head) {
		padding-bottom: 20px;
	}
}

/* Featured Video (Make HalfHalfVideoFeatured): centered header column over a
   full-width 16:9 video, on a tinted band. No CTA. */
:root :where(.priovant-content-block--featured) {
	background-color: var(--wp--preset--color--lisraya-tint);
	padding-block: 80px;
	padding-inline: var( --priovant-bleed-gutter );   /* cap content at 1280; the 70% below is then 70% of 1280 */
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 32px;
	text-align: center;
}
:root :where(.priovant-content-block--featured > *) {
	box-sizing: border-box;
	max-width: 70%;
}
:root :where(.priovant-content-block--featured .priovant-rule) {
	margin-inline: auto;
}
:root :where(.priovant-content-block--featured .priovant-content-block__text) {
	max-width: 560px;
	margin-inline: auto;
}
:root :where(.priovant-content-block--featured .priovant-content-block__video) {
	width: 100%;
}
@media (max-width: 1023px) {
	:root :where(.priovant-content-block--featured) {
		padding: 48px 24px;
		gap: 24px;
	}
	:root :where(.priovant-content-block--featured > *) {
		max-width: 100%;
	}
}

/* Reusable dark 16:9 video placeholder (Make VideoPlayerPlaceholder) — navy box +
   ~45% navy overlay + white/blue play button + labels. Decorative chrome; a real
   embed replaces it later. Shared by Featured Video + (later) the Video 50/50 layouts. */
:root :where(.priovant-videoholder) {
	position: relative;
	aspect-ratio: 16 / 9;
	background-color: var(--priovant-video-bg);
	border-radius: var(--priovant-radius-subtle);
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
}
:root :where(.priovant-videoholder__overlay) {
	position: absolute;
	inset: 0;
	background-color: rgba( 21, 43, 97, 0.45 );
}
:root :where(.priovant-videoholder__inner) {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
}
:root :where(.priovant-videoholder__play) {
	width: 64px;
	height: 64px;
	background-color: var(--wp--preset--color--base);
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-subtle);
	display: flex;
	align-items: center;
	justify-content: center;
}
:root :where(.priovant-videoholder__labels) {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
}
:root :where(.priovant-videoholder__title) {
	font-size: 14px;
	color: rgba( 255, 255, 255, 0.9 );
}
:root :where(.priovant-videoholder__meta) {
	font-size: 12px;
	color: rgba( 255, 255, 255, 0.6 );
}

/* Reusable Vimeo embed wrapper (videoEmbed()): responsive 16:9 + subtle radius; the
   iframe fills it absolutely. The player chrome (play button, controls, scrubber) is
   Vimeo's — inside the cross-origin iframe, set via the Vimeo account + embed params —
   so ONLY this wrapper is themable from here. Used by the testimonial video + Patient
   Stories. (When it also carries .priovant-testimonial__video it inherits that slot's
   1px frame; the navy bg shows only while the iframe loads.) */
:root :where(.priovant-video) {
	position: relative;
	aspect-ratio: 16 / 9;
	width: 100%;
	background-color: var(--priovant-video-bg);
	border-radius: var(--priovant-radius-subtle);
	overflow: hidden;
}
:root :where(.priovant-video__frame) {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}

/* ── 50/50 Layout (Make §06 — component-library / Phase-3 primitive) ──
   Two-column image ┃ content (image left default, or .--right). Image = editable
   core/image; ratio 490/276 standard or 490/389 (.--large, diagrams/MoA art).
   Content reuses .priovant-content-block__* + .priovant-eyebrow / .priovant-rule.
   Stacks in DOM order below 1024. 80/118 desktop · 40/24 mobile. */
:root :where(.priovant-5050) {
	display: flex;
	gap: 64px;
	align-items: center;
	padding-block: 80px;
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-media ) );
}
:root :where(.priovant-5050__media) {
	flex: 1 1 0;
	min-width: 0;
	margin: 0;
}
/* Image-only sizing — scoped to the figure so a chart in the media slot gets flex
   sizing only (it brings its own height). */
:root :where(.priovant-5050__media.wp-block-image) {
	position: relative;          /* figure is the size authority (aspect-ratio) */
	aspect-ratio: 490 / 276;
}
:root :where(.priovant-5050--large) .priovant-5050__media.wp-block-image {
	aspect-ratio: 490 / 389;
}
:root :where(.priovant-5050__media.wp-block-image img) {
	position: absolute;          /* fill the figure; don't let the SVG's intrinsic size set height */
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--priovant-radius-subtle);
	display: block;
}
/* A chart embedded in the media slot: center it against the (often taller) content.
   (The media-slot class now sits on the .priovant-chartblock wrapper Group.) */
:root :where(.priovant-5050__media.priovant-chartblock),
:root :where(.priovant-7030__media.priovant-chartblock) {
	align-self: center;
}
/* On mobile the layout stacks (column, align-items:stretch); the centered chart must
   STRETCH to full width so it sits inside the section's 24px gutter — otherwise it
   keeps its natural canvas width and centers, leaving uneven/short gutters. */
@media (max-width: 1023px) {
	:root :where(.priovant-5050__media.priovant-chartblock),
	:root :where(.priovant-7030__media.priovant-chartblock) {
		align-self: stretch;
	}
}
:root :where(.priovant-5050__content) {
	flex: 1 1 0;
}
/* content_bg: light-blue → the CONTENT column becomes a light-blue box that FILLS the
   column (Make "Data Table, 2-col, Embedded — 50/50": table on the light left, blue text
   panel on the right). align-self:stretch fills the full row height (matching the chart/
   table); the inner flex column vertically centers the text; generous padding insets it. */
:root :where(.priovant-5050__content--panel) {
	align-self: stretch;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 48px;
	background-color: var(--wp--preset--color--lisraya-utility-bg);
	border-radius: var(--priovant-radius-subtle);
}
@media (max-width: 1023px) {
	:root :where(.priovant-5050) {
		flex-direction: column;
		align-items: stretch;
		gap: 24px;
		padding: 40px 24px;
	}
	:root :where(.priovant-5050__content--panel) {
		padding: 32px 24px;
	}
}

/* ── 70/30 Asymmetric Layout (Make §06 — component-library / Phase-3 primitive) ──
   Two-column image ┃ content, 70/30 split, 48px gap, 80/40 desktop · 40/24 mobile.
   .--imglarge → image is the wide 70% + content the narrow 30% (28px H2); default
   = image 30% + content 70% (36px H2). Image stretches to content height (min 320,
   align-items:stretch). Content vertically centered. Stacks below 1024. */
:root :where(.priovant-7030) {
	display: flex;
	gap: 48px;
	align-items: stretch;
	padding-block: 80px;
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-table ) );
}
/* Chart-bearing 70/30 → 62px inset (vs the base 40px) so the About chart shares its left
   edge with the Statistics + Content-Cards sections (= .priovant-content-cards__box).
   SCOPED to :has(.priovant-chartblock) → the Safety AE-table 70/30 (a core/table, no
   chartblock) keeps its Make-verified 40px. Equal specificity to the base rule → source
   order (this is later) wins. (2026-07-14) */
:root :where(.priovant-7030:has(.priovant-chartblock)) {
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-body ) );
}
:root :where(.priovant-7030__media) {
	flex: 3;
	min-width: 0;
}
:root :where(.priovant-7030--imglarge) .priovant-7030__media {
	flex: 7;
}
/* Image-only fill — scoped to the figure (a chart in the slot brings its own height). */
:root :where(.priovant-7030__media.wp-block-image) {
	position: relative;
	min-height: 320px;
}
:root :where(.priovant-7030__media.wp-block-image img) {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--priovant-radius-subtle);
	display: block;
}
:root :where(.priovant-7030__content) {
	flex: 7;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;   /* vertically center against the stretched image */
}
:root :where(.priovant-7030--imglarge) .priovant-7030__content {
	flex: 3;
}
/* content_bg: light-blue → light-blue (#e6f1ff) text panel beside the media (Make "Data
   Table Embedded — 70/30": table left ┃ blue text panel right, = ChartSplitLayout textBg).
   The column already stretches (parent align-items:stretch) + centers; add the panel skin.
   Mirrors .priovant-5050__content--panel. */
:root :where(.priovant-7030__content--panel) {
	padding: 48px;
	background-color: var(--wp--preset--color--lisraya-utility-bg);
	border-radius: var(--priovant-radius-subtle);
}
/* divider variant (Make `ChartSplitLayout` divider — chart/graph embeds): white content
   column + a Dark Gold vertical rule between chart and copy, replacing the light-blue panel.
   Tighten the gap to 40px each side of the 2px rule (Make's 40px chart/content paddings). */
:root :where(.priovant-7030--divider) {
	gap: 40px;
}
:root :where(.priovant-7030__divider) {
	flex: 0 0 2px;
	/* Rule height TRACKS the chart CANVAS (designer 2026-07-14): visible height = canvasHeight
	   − 80 (40px inset top + bottom), centered on the canvas — NOT the whole chart column (the
	   title above + x-axis title/footnote below make the column taller & asymmetric). The canvas
	   box is exposed as CSS vars on the .priovant-7030--divider row by chart-view.js (it knows
	   data-chart-height). Top-anchored + margin-top = canvasTop + 40 lands the rule 40px below the
	   canvas top; height = canvasH − 80 lands its bottom 40px above the canvas bottom. Fallbacks
	   (46/288) = this chart's measured values if JS is unavailable. Replaces the fixed 240px +
	   86px bottom-anchor. */
	align-self: flex-start;
	margin-top: calc( var( --priovant-chart-canvas-top, 46px ) + 40px );
	height: calc( var( --priovant-chart-canvas-h, 288px ) - 80px );
	background-color: var(--priovant-gold-dark);
}
/* Copy centers on the CANVAS too (so it lines up with the rule): pad the column by the same
   top/bottom furniture the canvas is inset by, so the base justify-content:center centers the
   text within the canvas band rather than the taller column. Reset on mobile (rule is dropped,
   column stacks). */
:root :where(.priovant-7030--divider) .priovant-7030__content {
	padding-top: var( --priovant-chart-canvas-top, 46px );
	padding-bottom: var( --priovant-chart-canvas-bottom, 55px );
}
/* 30% copy steps down to 14px/22 (Make `LayoutTextClean` body) — chart-embed only, so the
   generic 70/30 + the Safety table embed keep the 16px body. */
:root :where(.priovant-7030--divider) .priovant-7030__content .priovant-content-block__text {
	font-size: 14px;
	line-height: 22px;
}
/* Keep the gold rule its fixed 200px width inside the flex content column. */
:root :where(.priovant-7030__content .priovant-rule) {
	align-self: flex-start;
}
/* Narrow content column (image is the wide side) → 28px H2 (Make narrow). */
:root :where(.priovant-7030--imglarge) .priovant-content-block__heading {
	font-size: 28px;
}
@media (max-width: 1023px) {
	:root :where(.priovant-7030) {
		flex-direction: column;
		align-items: stretch;
		gap: 24px;
		padding: 40px 24px;   /* chart 70/30 falls back to the 24px site-usual gutter here
		                         (the 62px inset is desktop-only) */
	}
	/* the vertical rule doesn't translate to the stacked layout (Make's mobile drops it). */
	:root :where(.priovant-7030__divider) {
		display: none;
	}
	/* the canvas-band padding is a desktop-only concern (stacked on mobile → no offset). */
	:root :where(.priovant-7030--divider) .priovant-7030__content {
		padding-top: 0;
		padding-bottom: 0;
	}
}

/* ── 30/70 Text + Content Block (Make §06) ── two-tone: 30% white H4 ┃ 70% tint
   body/bullets. Outer 40 vertical; cells own their padding. Stacks below 1024. */
:root :where(.priovant-3070) {
	display: flex;
	padding-block: 80px;   /* canonical section rhythm; 40 mobile below. Support-only 40 bottom scoped below. */
	padding-inline: var( --priovant-bleed-gutter );   /* cap the two-tone row at 1280; columns own their edge padding */
}
/* Support-only: 40px section bottom (per review 2026-07-15). Scoped to .priovant-support so
   the shared 30/70 keeps its canonical 80 bottom on Dermatomyositis + Safety. */
.priovant-support .priovant-3070 { padding-bottom: 40px; }
:root :where(.priovant-3070__head) {
	flex: 0 0 30%;
	min-width: 0;   /* hold the 30% basis (don't let the 36px heading's min-content grow it → overflow) */
	box-sizing: border-box;
	padding: 64px 48px 64px 80px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-end;   /* Make ThirtySeventyBlock: heading right-aligned against the divider */
}
:root :where(.priovant-3070__body) {
	flex: 0 0 70%;
	min-width: 0;
	box-sizing: border-box;
	padding: 64px 80px 64px 48px;
	position: relative;   /* anchor the vertical divider pseudo-element at the 30/70 seam */
	display: flex;
	flex-direction: column;
	justify-content: center;
}
/* Vertical Dark-Gold divider between the columns (Make ThirtySeventyBlock: 2px × 100px,
   centered). A pseudo-element at the body's left (the 30/70 seam) so it adds no layout width. */
:root :where(.priovant-3070__body)::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 2px;
	height: 100px;
	background-color: var(--priovant-gold-dark);
}
/* Body paragraphs reuse .priovant-content-block__text (36px ¶ gap — sized for the SCB's
   wider single-column measure). In the 30/70's 70% column that reads too loose, so tighten
   to the 16px "regular" rhythm the Content Highlight etc. use. `:not(:last-child)` so we DON'T
   out-race the shared __text:last-child reset (same specificity, later in the file) → the last
   ¶ stays 0 and the single-¶ 30/70s (Safety · Dermatomyositis) keep their centered column. */
:root :where(.priovant-3070__body .priovant-content-block__text:not(:last-child)) {
	margin-bottom: 16px;
}
:root :where(.priovant-3070__heading) {
	/* H2 tag (document outline) rendered with the H4 LOOK (22/1.3/700/-0.01em, blue).
	   Designer call 2026-06-30: a component's designed heading styling wins over the tag's
	   default size — reverses the 2026-06-23 "tag size drives the visual" standard. */
	margin: 0;
	font-size: 1.375rem;
	line-height: 1.3;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
	/* TEXT is left-aligned (designer 2026-07-14; matches Make `ThirtySeventyBlock`, whose h4 has
	   no text-align → default left). The heading BLOCK still hugs the divider via the head's
	   align-items:flex-end (= Make's justify-content:flex-end). The earlier `text-align:right`
	   (added with the block in bc7a002) mis-read Make — Make right-POSITIONS the block, it does
	   NOT right-align the text. */
	text-align: left;
	overflow-wrap: break-word;   /* break long words in the narrow 30% column — no h-scroll */
}
@media (max-width: 1023px) {
	:root :where(.priovant-3070) {
		flex-direction: column;
		padding-block: 40px;   /* mobile rhythm */
	}
	:root :where(.priovant-3070__head) {
		flex-basis: auto;
		padding: 40px 24px;
		align-items: stretch;   /* heading back to left-aligned when stacked (Make mobile) */
	}
	:root :where(.priovant-3070__heading) {
		text-align: left;
	}
	:root :where(.priovant-3070__body) {
		flex-basis: auto;
		padding: 32px 24px;
	}
	/* Divider goes horizontal at the head/body seam when stacked (Make mobile). */
	:root :where(.priovant-3070__body)::before {
		left: 24px;
		right: 24px;
		top: 0;
		transform: none;
		width: auto;
		height: 2px;
	}
}

/* ── Image Content Block (Make §06) ── centered intro ¶ + image row + caption.
   full = one 70% image · 5050 = two · 3up = three. Editable core/image; stacks
   below 1024. 64/112 desktop · 40/24 mobile. */
:root :where(.priovant-imgblock) {
	padding-block: 64px;
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-inset ) );
}
:root :where(.priovant-imgblock__intro) {
	max-width: 640px;
	margin: 0 auto 40px;
	text-align: center;
	font-size: 16px;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-imgblock__note) {
	margin: 24px 0 0;
	text-align: center;
	font-size: 12px;
	line-height: 1.5;
	color: var(--wp--preset--color--lisraya-gray-mid);
}
:root :where(.priovant-imgblock__grid) {
	display: flex;
	gap: 24px;
}
:root :where(.priovant-imgblock--full) .priovant-imgblock__grid {
	justify-content: center;
}
:root :where(.priovant-imgblock__media) {
	flex: 1 1 0;
	margin: 0;
	position: relative;
	aspect-ratio: 4 / 3;
}
:root :where(.priovant-imgblock--full) .priovant-imgblock__media {
	flex: 0 0 70%;
	aspect-ratio: 16 / 9;
}
:root :where(.priovant-imgblock__media img) {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--priovant-radius-subtle);
	display: block;
}
/* Video Content Block (Make VideoBlock*) — the same imgblock chrome, but each slot is a
   cell: an optional area header (22/700 blue title + 16/400 body) over a 16:9 placeholder.
   Cells stretch to equal height + the video is pinned to the bottom (margin-top:auto) so the
   videos align across columns even when headers differ in height (Make's grid `auto 1fr`). */
:root :where(.priovant-imgblock--video) .priovant-imgblock__grid {
	align-items: stretch;
}
:root :where(.priovant-imgblock__cell) {
	box-sizing: border-box;
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
}
:root :where(.priovant-imgblock--full) .priovant-imgblock__cell {
	flex: 0 0 70%;
	margin-inline: auto;
}
:root :where(.priovant-imgblock__area-head) {
	margin-bottom: 16px;
}
:root :where(.priovant-imgblock__area-title) {
	margin: 0 0 6px;
	font-size: 22px;
	line-height: 1.2;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-imgblock__area-body) {
	margin: 0;
	font-size: 16px;
	line-height: 1.6;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-imgblock__vmedia) {
	width: 100%;
	margin-top: auto;
}
@media (max-width: 1023px) {
	:root :where(.priovant-imgblock) {
		padding: 40px 24px;
	}
	:root :where(.priovant-imgblock__grid) {
		flex-direction: column;
	}
	:root :where(.priovant-imgblock--full) .priovant-imgblock__media {
		flex-basis: auto;
	}
	:root :where(.priovant-imgblock--full) .priovant-imgblock__cell {
		flex-basis: auto;
	}
}

/* ── Content Columns (Make §06 Horizontal/Stacked card grids) — top-border cards
   in a grid. horizontal = title 160px ┃ copy · stacked = title / copy. ── */
:root :where(.priovant-content-columns) {
	background-color: var(--wp--preset--color--base);
	padding-block: 48px;
	/* 62px inset (was 112) — align the card grid edge to `.priovant-content-cards__box`
	   (the 2026-07-14 body-alignment target); hero stays 112. 2026-07-15. */
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-body ) );
}
:root :where(.priovant-content-columns__grid) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
}
:root :where(.priovant-content-columns--cols3) .priovant-content-columns__grid {
	grid-template-columns: repeat( 3, 1fr );
}
:root :where(.priovant-content-columns__card) {
	box-sizing: border-box;
	min-width: 0;
	background-color: var(--wp--preset--color--base);
	border-top: 3px solid var(--wp--preset--color--lisraya-blue-mid);
	border-radius: var(--priovant-radius-subtle);
}
:root :where(.priovant-content-columns--horizontal) .priovant-content-columns__card {
	display: flex;
	gap: 20px;
	align-items: flex-start;
	padding: 20px 16px;
}
:root :where(.priovant-content-columns--horizontal) .priovant-content-columns__card-title {
	flex: 0 0 160px;
}
:root :where(.priovant-content-columns--horizontal) .priovant-content-columns__card-body {
	flex: 1 1 0;
	min-width: 0;
}
:root :where(.priovant-content-columns--stacked) .priovant-content-columns__card {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 24px;
}
:root :where(.priovant-content-columns__card-title) {
	margin: 0;
	font-size: 20px;
	line-height: 26px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-content-columns__card-body) {
	margin: 0;
	font-size: 15px;
	line-height: 22px;
	color: var(--wp--preset--color--lisraya-text);
}
/* Responsive: 3-up → 2 (≤1023) → 1 (≤639); 2-up → 1 (≤767); horizontal internals
   stack below 1024 (card responsive convention). */
@media (max-width: 1023px) {
	:root :where(.priovant-content-columns) {
		padding: 40px 24px;
	}
	:root :where(.priovant-content-columns--cols3) .priovant-content-columns__grid {
		grid-template-columns: 1fr 1fr;
	}
	:root :where(.priovant-content-columns--horizontal) .priovant-content-columns__card {
		flex-direction: column;
		gap: 8px;
	}
	:root :where(.priovant-content-columns--horizontal) .priovant-content-columns__card-title {
		flex: 0 0 auto;
	}
}
@media (max-width: 767px) {
	:root :where(.priovant-content-columns--cols2) .priovant-content-columns__grid {
		grid-template-columns: 1fr;
	}
}
@media (max-width: 639px) {
	:root :where(.priovant-content-columns--cols3) .priovant-content-columns__grid {
		grid-template-columns: 1fr;
	}
}

/* Reusable section link-CTA: white, blue 2px outline, light-blue (#f0f7ff) hover
   (Make section CTAs — 16/30 padding → 57px). Distinct from the larger
   is-style-priovant-outline button. */
/* .priovant-link-cta = the canonical OUTLINE BUTTON, applied to the importer's
   section "learn more" CTAs (evidence / content-cards / moa — an <a>, not a
   core/button block). Despite the "link" in the name it is NOT an underlined text
   link: same 16×30 / 2px-border / sharp-0 / 14·700 geometry as .priovant-btn, and
   it shares the OUTLINE default/hover/active/disabled states below (grep "OUTLINE
   (+ section"). The underlined text links are the separate .priovant-link* system.
   (Naming sprawl — several aliases for one Outline button; collapse is backlogged
   for the content-column-grid rebuild. Don't rename piecemeal → re-imports pages.) */
:root :where(.priovant-link-cta) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	padding: 16px 30px;
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--lisraya-blue);
	font-size: 14px;
	line-height: 21px;
	font-weight: 700;
	letter-spacing: -0.02em;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color 150ms ease;
}
/* .priovant-link-cta hover/active/disabled → canonical button system (end of file). */

/* ── Evidence (844:17191) ── */
:root :where(.priovant-evidence) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-evidence__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 64px 112px 80px;   /* Make px-[112px]; top trimmed 80→64 per review (mobile 40/32 below) */
}
:root :where(.priovant-evidence__body) {
	margin: 0 0 40px;
	max-width: 680px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-evidence__cards) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: 60px;
	row-gap: 40px;
	margin-bottom: 40px;
}
:root :where(.priovant-evidence__card) {
	display: flex;
	gap: 20px;
	padding: 20px 16px;
	background-color: var(--wp--preset--color--base);
	border-top: 2px solid var(--wp--preset--color--lisraya-blue-mid);
}
:root :where(.priovant-evidence__card-title) {
	flex: 0 0 180px;
	margin: 0;
	font-size: 24px;
	line-height: 26.4px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-evidence__card-desc) {
	flex: 1;
	margin: 0;
	font-size: 16px;
	line-height: 22px;
	color: var(--wp--preset--color--lisraya-text);
}

/* Evidence responsive (a deliberate per-section deviation from Make + the global
   1024px breakpoint, designer call 2026-06-10):
   - ≥1024: 2-up grid, each card title BESIDE description (Make's lg layout).
   - 1023→768: KEEP the 2-up grid, but STACK each card's title above its
     description (Make keeps them side-by-side here, but it's too cramped at
     tablet widths — so we stack from 1023 down).
   - ≤767: drop to 1-up full-width cards (still stacked). */
@media (max-width: 1023px) {
	:root :where(.priovant-evidence__inner) {
		padding: 40px 32px;   /* Make px-[32px] pt/pb-[40px] below lg (1024px) */
	}
	/* Stack each card's two columns (title over description) from 1023 down. */
	:root :where(.priovant-evidence__card) {
		flex-direction: column;
	}
	:root :where(.priovant-evidence__card-title) {
		flex: none;
	}
}
@media (max-width: 767px) {
	:root :where(.priovant-evidence__cards) {
		grid-template-columns: 1fr;
		row-gap: 20px;   /* Make mobile card list gap is 20px (vs the 40px 2-col rowGap) */
	}
}

/* ── Content Cards (Make §06 "Content Cards"; the homepage Unmet Need section is
   one instance) — tint box + eyebrow/rule/H2/intro + drop-shadow feature cards
   (1/2/3 cols) + optional bottom line + CTA. ── */
:root :where(.priovant-content-cards) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-content-cards__box) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 80px 62px;
	background-color: var(--wp--preset--color--lisraya-tint);
	border-radius: var(--priovant-radius-subtle);
}
:root :where(.priovant-content-cards__body) {
	margin: 0 0 40px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-content-cards__cards) {
	display: grid;
	grid-template-columns: 1fr;   /* cols1 (and the ≤1023 collapse) */
	gap: 24px;
	margin-bottom: 40px;
}
:root :where(.priovant-content-cards--cols2) .priovant-content-cards__cards {
	grid-template-columns: 1fr 1fr;
}
:root :where(.priovant-content-cards--cols3) .priovant-content-cards__cards {
	grid-template-columns: repeat( 3, 1fr );
}
/* single — one card constrained to 70% width, left-aligned (Make "Content Cards, Single"). */
:root :where(.priovant-content-cards--single) .priovant-content-cards__cards {
	grid-template-columns: 70%;
}
/* layout: split — Make `ContentCardSingle`: content column LEFT (70%) ┃ single card RIGHT
   (30%), 48px gap, vertically centered. Overrides the stacked --single grid on the right col. */
:root :where(.priovant-content-cards--split) .priovant-content-cards__split {
	display: flex;
	gap: 48px;
	align-items: center;
}
:root :where(.priovant-content-cards--split) .priovant-content-cards__content {
	flex: 7 1 0;
	min-width: 0;
}
/* leaf class OUTSIDE :where so this (0,2,0) beats the stacked --single rule's
   grid-template-columns:70% — otherwise the card renders at 70% of its 30% column. */
:root :where(.priovant-content-cards--split) .priovant-content-cards__cards {
	flex: 3 1 0;
	min-width: 0;
	grid-template-columns: 1fr;
	margin-bottom: 0;
}
/* bg: white — swap the tint (Make "White BG, Single"): white box, tinted cards. */
:root :where(.priovant-content-cards--bg-white) .priovant-content-cards__box {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-content-cards--bg-white) .priovant-content-cards__card {
	background-color: var(--wp--preset--color--lisraya-tint);
}
:root :where(.priovant-content-cards__card) {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 32px;
	border-radius: var(--priovant-radius-subtle);
	background-color: var(--wp--preset--color--base);
	box-shadow: 0 2px 15px rgba( 0, 82, 155, 0.1 );
	/* Grid items default to min-width:auto, so a long card title (e.g.
	   "Debilitating") refuses to shrink below its min-content and overflows the
	   box's right padding at the smallest widths — making the box's left/right
	   gutters unequal. min-width:0 lets the card shrink to its track so the
	   62px box gutters stay symmetric. (No effect at 390+, where it already fits.) */
	min-width: 0;
}
:root :where(.priovant-content-cards__card-title) {
	margin: 0;
	font-size: 24px;
	line-height: 26.4px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-content-cards__card-body) {
	margin: 0;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-content-cards__card-body sup) {
	font-weight: 400; /* size is the global proportional 0.625em (see :where(sup,sub) near top) */
}
:root :where(.priovant-content-cards__bottom) {
	margin: 0 0 40px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
/* Footnote caption (asterisk/source note) — 12px muted, matching the chart footnote. */
:root :where(.priovant-content-cards__footnote) {
	margin: 24px 0 0;
	font-size: 12px;
	line-height: 1.5;
	color: var(--wp--preset--color--lisraya-gray-mid);
}
/* Content-cards CTA: 61px tall (17/19 padding) + border/text-darken hover. */
:root :where(.priovant-content-cards .priovant-link-cta) {
	padding-block: 17px 19px;
}
@media (max-width: 1023px) {
	/* 2/3-col collapse to 1 at ≤1023 (homepage Unmet Need exception — 2→1 at 1023,
	   not the 768 step; designer-confirmed). */
	:root :where(.priovant-content-cards--cols2) .priovant-content-cards__cards,
	:root :where(.priovant-content-cards--cols3) .priovant-content-cards__cards {
		grid-template-columns: 1fr;
	}
	/* single card goes full-width on mobile. */
	:root :where(.priovant-content-cards--single) .priovant-content-cards__cards {
		grid-template-columns: 1fr;
	}
	/* split stacks below 1024: content column above, card full-width below. */
	:root :where(.priovant-content-cards--split) .priovant-content-cards__split {
		flex-direction: column;
		align-items: stretch;
		gap: 24px;
	}
}

/* ── Statistics Block — CANONICAL, editor-managed (priovant/statistics + priovant/stat).
   The card AUTO-FORMATS by stat COUNT via CSS quantity queries — editors add/remove
   `priovant/stat` children (2–6) and the grid reflows with no setting to pick:
     2 → 2 across · 3 → 3 across · 4 → 2×2 · 5 → 3 + a centered 2 · 6 → 3×3.
   Column rule: 2/4 → 2 columns, 3/5/6 → 3 columns (a flex grid + justify-content:center,
   so a partial last row centers). Headline number size steps down as density grows
   (56 → 52 → 48 → 44). Two importer-composed section layouts wrap the card:
   `--centered` (card alone, 70% of 1280, centered) and `--text` (editable text column ┃
   card; `--flip` swaps sides ≥1024). `--bg-white` = white section + tinted card ·
   `--bg-blue` = tinted section + white card. ── */
:root :where(.priovant-statistics) {
	/* Vertical rhythm only; the horizontal inset lives on __inner (below) so content
	   sits 62px inside the 1280 cap — matching .priovant-content-cards__box, so the
	   Statistics · Content-Cards · Chart sections share ONE left edge (Make's
	   StatisticsSection insets px-[64px] ≈ the 62px box gutter; 2026-07-14). */
	padding-block: 80px;
}
:root :where(.priovant-statistics--bg-white) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-statistics--bg-blue) {
	background-color: var(--wp--preset--color--lisraya-tint);
}
/* Text layout — editable text column ┃ stats card, capped at the 1280 container. */
:root :where(.priovant-statistics__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: var( --priovant-gutter-body );   /* 62 inside the 1280 cap → matches content-cards__box */
	display: flex;
	gap: 64px;
	align-items: center;
}
:root :where(.priovant-statistics__text) {
	flex: 1 1 420px;
}
/* In-section footnote (text layout): fine print on the section band, below the content row,
   aligned to the same 62px inset + 1280 cap as __inner. Footnote sizing/gray. */
:root :where(.priovant-statistics__note) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin: 24px auto 0;
	padding-inline: var( --priovant-gutter-body );
	font-size: 12px;
	line-height: 18px;
	color: #666666;
}
@media (max-width: 1023px) {
	:root :where(.priovant-statistics__note) { padding-inline: 24px; }
}
:root :where(.priovant-statistics--text .priovant-statcard) {
	flex: 1 1 460px;
}
@media (min-width: 1024px) {
	:root :where(.priovant-statistics--flip .priovant-statistics__inner) {
		flex-direction: row-reverse;
	}
}
/* Single-stat text layout (Make "1 Stat") — a wider text column ┃ a narrow 276px card
   (vs the A/B 420 ┃ 460). Placed AFTER the --text card rule above; equal :where() specificity
   → source order wins, so a single-stat card overrides the default width. */
:root :where(.priovant-statistics--single.priovant-statistics--text .priovant-statistics__text) {
	flex: 1 1 644px;
}
:root :where(.priovant-statistics--single.priovant-statistics--text .priovant-statcard) {
	flex: 0 0 276px;
}
:root :where(.priovant-statistics--single .priovant-statcard__grid) {
	padding: 24px 24px 40px;   /* the single stat breathes (Make single-card body padding 32/24/40) */
}
/* Centered layout — card alone, 70% of the 1280 container, centered (≤896px). */
:root :where(.priovant-statistics--centered .priovant-statcard) {
	width: 70%;
	max-width: calc( 0.7 * var(--wp--style--global--wide-size, 1280px) );
	margin-inline: auto;
}
/* Stats card chrome (shared by every container — both section layouts AND the 50/50/
   70/30 media-slot embed). Default = tinted card (the white-section look); a tinted
   section (`--bg-blue`) flips it to white. The default bg also covers the embedded card,
   which has no `.priovant-statistics--*` ancestor. */
:root :where(.priovant-statcard) {
	box-sizing: border-box;
	border-top: 8px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-subtle);
	box-shadow: 0 2px 7.5px rgba( 0, 82, 155, 0.1 );
	padding: 8px 0 0;
	background-color: var(--wp--preset--color--lisraya-tint);
}
:root :where(.priovant-statistics--bg-blue .priovant-statcard) {
	background-color: var(--wp--preset--color--base);
}
/* Stats card embedded in a layout media slot (50/50 / 70/30): fill the column, centered
   against the (often taller) content — like the chart embed; stretches on mobile. */
:root :where(.priovant-5050__media.priovant-statsmedia),
:root :where(.priovant-7030__media.priovant-statsmedia) {
	align-self: center;
}
:root :where(.priovant-statsmedia .priovant-statcard) {
	width: 100%;
}
@media (max-width: 1023px) {
	:root :where(.priovant-5050__media.priovant-statsmedia),
	:root :where(.priovant-7030__media.priovant-statsmedia) {
		align-self: stretch;
	}
}
:root :where(.priovant-statcard__title) {
	min-height: 51px;
	margin: 0;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	padding-bottom: 1px;
	font-size: 16px;
	line-height: 1;
	font-weight: 700;
	letter-spacing: -0.02em;
	text-transform: uppercase;
	text-align: center;
	color: var(--wp--preset--color--lisraya-blue);
}
/* The auto-formatting grid: flex-wrap + center so a partial last row centers (5 → 3 + 2).
   flex-basis picks the column count from the child COUNT via :has() quantity queries. */
:root :where(.priovant-statcard__grid) {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	padding: 0 12px 24px;
}
/* Title-less card (blank card_title → the title <p> is omitted, empty-field hardening): the
   grid loses the title bar that gave it top breathing, so mirror the grid's bottom padding at
   the top for equal spacing. Titled cards are UNCHANGED (their title bar provides the top space). */
:root :where(.priovant-statcard:not(:has(> .priovant-statcard__title)) > .priovant-statcard__grid) {
	padding-top: 24px;
}
:root :where(.priovant-statcard__grid) > .priovant-stat {
	flex: 0 0 33.333%;   /* default — 3, 5, 6 stats → 3 columns */
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(2):last-child)) > .priovant-stat {
	flex-basis: 50%;     /* exactly 2 → 2 across */
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(4):last-child)) > .priovant-stat {
	flex-basis: 50%;     /* exactly 4 → 2×2 */
}
/* Exactly 5 → 3 across + the bottom TWO SPREAD to half-width each (Make 3-top/2-bottom),
   not the old centered pair. First 3 stay 33.333%; the 4th + 5th wrap to a full second row.
   `:nth-child` is wrapped in :where() so this stays specificity (0,2,0) like the sibling
   count rules — otherwise it would out-specify (and defeat) the mobile 1-up/2-up overrides. */
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(5):last-child)) > .priovant-stat:where(:nth-child(n+4)) {
	flex-basis: 50%;
}
:root :where(.priovant-stat) {
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 18px 12px;
	text-align: center;
}
:root :where(.priovant-stat__num) {
	margin: 0;
	font-size: 56px;     /* counts 2 & 3 (single row) */
	line-height: 1;
	font-weight: 100;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(4):last-child)) .priovant-stat__num {
	font-size: 52px;     /* 4 → 2×2 */
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(5):last-child)) .priovant-stat__num {
	font-size: 48px;     /* 5 → 3 + 2 */
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(6):last-child)) .priovant-stat__num {
	font-size: 44px;     /* 6 → 3×3 */
}
/* Exactly 1 → a single large stat (Make StatisticsBlockSingle: 96px, full-width, centered).
   Count-driven like the 2–6 rules and mutually exclusive (only a lone stat matches), so every
   existing 2–6 card is untouched. Applies in any container (text/centered/embed). */
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(1):last-child)) > .priovant-stat {
	flex-basis: 100%;
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(1):last-child)) .priovant-stat__num {
	font-size: 96px;
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(1):last-child)) .priovant-stat__sub {
	font-size: 22px;
}
:root :where(.priovant-stat__lbl) {
	margin: 0;
	max-width: 200px;
	font-size: 14px;
	line-height: 20px;
	color: var(--wp--preset--color--lisraya-text);
}
/* Supporting subhead (Make StatDatum.supporting) — tight under the number, Brand Blue + light.
   Optional (save()/importer omit it when blank). Smaller in the dense 5/6 grids to track the
   smaller number. The negative margin overrides the stat's 8px flex gap → a ~4px number↔sub gap. */
:root :where(.priovant-stat__sub) {
	margin: -4px 0 0;
	font-size: 20px;
	line-height: 1.2;
	font-weight: 300;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(5):last-child)) .priovant-stat__sub,
:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(6):last-child)) .priovant-stat__sub {
	font-size: 16px;
}
/* Reference line (Make StatDatum.reference) — smaller gray copy at the END of the stat.
   Color = lisraya-gray-mid #767676 nudged to #6a6a6a: on the tinted card (#f6fbff, the
   bg-white variant) #767676 is only 4.45:1 (fails WCAG AA); #6a6a6a is ~5.2:1 there and on
   white. Near-imperceptible vs the designer's gray, but clears the a11y gate. */
:root :where(.priovant-stat__ref) {
	margin: -4px 0 0;
	max-width: 220px;
	font-size: 12px;
	line-height: 1.4;
	color: #6a6a6a;
}
@media (max-width: 1023px) {
	:root :where(.priovant-statistics) {
		padding-block: 40px;   /* horizontal inset stays on __inner (62px, all widths) */
	}
	:root :where(.priovant-statistics__inner) {
		flex-direction: column;
		align-items: stretch;
		gap: 40px;
		padding-inline: 24px;   /* mobile = site-usual gutter (desktop keeps the 62px inset) */
	}
	/* Reset the desktop flex sizing in the mobile column (flex-basis would become a forced
	   height on text/card). */
	:root :where(.priovant-statistics__text),
	:root :where(.priovant-statistics--text .priovant-statcard) {
		flex: 0 0 auto;
	}
	:root :where(.priovant-statistics--centered .priovant-statcard) {
		width: 100%;
		max-width: none;
	}
	/* On tablets/phones cap at 2-up so dense 5/6 grids stay legible. */
	:root :where(.priovant-statcard__grid) > .priovant-stat,
	:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(4):last-child)) > .priovant-stat {
		flex-basis: 50%;
	}
}
@media (max-width: 640px) {
	:root :where(.priovant-statcard__grid) > .priovant-stat,
	:root :where(.priovant-statcard__grid:has( > .priovant-stat:nth-child(4):last-child)) > .priovant-stat {
		flex-basis: 100%;
	}
}

/* ── MoA (844:17262) — concentric-circle gold figure + text, 2-col ── */
:root :where(.priovant-moa) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-moa__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 80px 118px;
}
:root :where(.priovant-moa__row) {
	display: flex;
	align-items: center;
	gap: 64px;
}
/* Concentric rings = a radial-gradient (centered, clips at the box edges).
   Radii from the Make ring sizes; outermost band = box bg (Lisraya Gold). */
:root :where(.priovant-moa__figure) {
	flex: 0 0 490px;
	height: 389px;
	overflow: hidden;
	background: radial-gradient( circle at center,
		var(--wp--preset--color--base) 0 46px,
		var(--wp--preset--color--lisraya-gold-4) 46px 96px,
		var(--wp--preset--color--lisraya-gold-3) 96px 152px,
		var(--wp--preset--color--lisraya-gold-2) 152px 217px,
		var(--wp--preset--color--lisraya-yellow) 217px );
}
:root :where(.priovant-moa__content) {
	flex: 1;
	min-width: 0;
}
:root :where(.priovant-moa__eyebrow) {
	margin: 0 0 16px;
	font-size: 12px;
	line-height: 16px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-moa__rule) {
	width: 200px;
	height: 2px;
	border: 0;
	margin: 0 0 18px;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-moa__heading) {
	margin: 0 0 20px;
	max-width: 490px;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-moa__body) {
	margin: 0 0 36px;
	max-width: 490px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-text);
}
@media (max-width: 1023px) {
	:root :where(.priovant-moa__inner) {
		max-width: none;
		padding: 0;
	}
	:root :where(.priovant-moa__row) {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}
	:root :where(.priovant-moa__figure) {
		flex: none;
		width: 100%;
		height: 300px;
	}
	:root :where(.priovant-moa__content) {
		padding: 40px 24px;
	}
	:root :where(.priovant-moa__eyebrow) {
		margin-bottom: 32px;
	}
	:root :where(.priovant-moa__rule) {
		margin-bottom: 20px;
	}
	:root :where(.priovant-moa__heading) {
		margin-bottom: 24px;   /* H2 size stays the global 36 at all widths (no mobile step-down) */
	}
	:root :where(.priovant-moa__body) {
		margin-bottom: 24px;
	}
}

/* ── CTA Speedbump (844:17290) — centered tint card ── */
:root :where(.priovant-cta-speedbump) {
	background-color: var(--wp--preset--color--base);
	padding-bottom: 80px;
}
:root :where(.priovant-cta-speedbump__card) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 64px 32px;
	background-color: var(--wp--preset--color--lisraya-tint);
	border-radius: var(--priovant-radius-subtle);
	text-align: center;
}
/* STANDARD for level-configurable headings (heading_level): do NOT hardcode
   font-size/line-height — let the TAG's global element style set the size (h2 = 36px,
   h3 = 28px, h4 = 22px) so changing the level is visual too. Only layout/color here.
   (The old 36px override duplicated the global h2, so removing it leaves h2 unchanged
   while an h3 now renders at the real h3 size.) */
:root :where(.priovant-cta-speedbump__heading) {
	/* Design size is 36px regardless of the semantic tag chosen by heading_level — the
	   component's styling wins over the tag default (reversed standard 2026-06-30). So a
	   heading_level:3 speedbump is an <h3> for the outline but still reads at 36px. */
	margin: 0;
	font-size: 2.25rem;
	line-height: 1.2;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
/* Desktop (≥1024, the primary breakpoint): cap the centered heading to half the card
   width so it doesn't run edge-to-edge to the padding. Centered variant only (the
   --split heading is already column-constrained). */
@media (min-width: 1024px) {
	:root :where(.priovant-cta-speedbump:not(.priovant-cta-speedbump--split) .priovant-cta-speedbump__heading) {
		max-width: 50%;
		margin-inline: auto;
	}
}
:root :where(.priovant-cta-speedbump__rule) {
	width: 576px;
	max-width: 100%;
	height: 2px;
	border: 0;
	margin: 24px auto 36px;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-cta-speedbump__body) {
	max-width: 676px;
	margin: 0 auto 40px;
	font-size: 16px;
	line-height: 26px;
	color: var(--wp--preset--color--lisraya-ink);
}
/* B (Make CtaSpeedbumpB) — centered card, Primary + Outline buttons side-by-side. */
:root :where(.priovant-cta-speedbump__buttons) {
	justify-content: center;
	gap: 16px;
	margin-top: 0;
}
/* No-body speedbump: restore the 36px heading→CTA gap the gold rule used to provide (its bottom
   margin) now that an empty body drops the rule (2026-07-31). The adjacency matches ONLY the no-body
   case — with body copy, the rule + body sit between the heading and the CTA. Covers variant-B buttons
   AND the default variant's single outline <p>. */
:root :where(.priovant-cta-speedbump__heading + .priovant-cta-speedbump__buttons),
:root :where(.priovant-cta-speedbump__heading + p) {
	margin-top: 36px;
}
/* Two-button speedbump (variant B): once the buttons stack on mobile they should be EQUAL width,
   not ragged content-widths (client 2026-07-31, sitewide — flagged on /efficacy). Stack + fill the
   card at ≤767 (the site's 2-up→1-up card boundary); desktop/tablet keep the centered content-width
   row. Scoped to `__buttons`, which only exists on variant B — single-button speedbumps use the
   `.priovant-btn-outline` paragraph markup and are untouched. */
@media (max-width: 767px) {
	:root :where(.priovant-cta-speedbump__buttons) {
		flex-direction: column;
		align-items: stretch;
	}
	:root :where(.priovant-cta-speedbump__buttons .wp-block-button__link) {
		display: block;
		width: 100%;
		text-align: center;
	}
}
/* Variant B EXTENDED (2026-08-12 V5/V9): two CTA columns split by a centered "or" divider,
   each column carrying a button + description body. Renderer emits this shape only when at
   least one cta has a `description:` set (backwards-compat: plain variant B still renders the
   two-button row). Desktop: 2 equal columns + VERTICAL divider between them. Mobile (≤767):
   stack + HORIZONTAL divider between rows. Design ref: 2026-08-12 screens. */
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__cols) {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	/* Gap bumped +10px 2026-08-12 review: more breathing room around the
	   divider AND between the button columns. Mobile stacked view gets the
	   same +10 in the media query below. */
	gap: 50px;
	/* stretch = every grid item fills the row height, so the divider column
	   spans the full height of the tallest content column and its ::before /
	   ::after lines reach from the top of the buttons down past the descriptions.
	   Buttons still top-anchor because .priovant-cta-speedbump__col is a
	   flex-column with default justify-content: flex-start. */
	align-items: stretch;
	/* Group the two-column CTA area visually with the H2 + body copy above.
	   Width bumped 720 → 900 (2026-08-12 review) so the left column has room
	   for the fax/email description to fit in 3 lines instead of 4 — with the
	   50px gap + auto divider, each 1fr column ends up ~390px wide. */
	margin: 36px auto 0;
	max-width: 900px;
	width: 100%;
}
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__col) {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 24px;
}
/* Reset default vertical margins on the col container's AND each col's direct
   children so the flex `gap` (or the grid layout) is the only source of vertical
   spacing. WP's `:where(.is-layout-flow) > * + *` (0,0,0,2) fires at BOTH
   nesting levels — at `__cols` (offsetting the divider + right col by 32px)
   AND at `__col` (offsetting the description below each button by 32px). Our
   selectors deliberately place `> *` OUTSIDE `:where()` and include
   `.wp-block-group` so total specificity (0,0,2,2) beats WP's (client
   2026-08-12 review — Phase 63 verified via Playwright: `.__col`
   marginBlockStart was 32px before this fix). */
:root :where(.priovant-cta-speedbump--b-extended) .priovant-cta-speedbump__cols.wp-block-group > *,
:root :where(.priovant-cta-speedbump--b-extended) .priovant-cta-speedbump__col.wp-block-group > * {
	margin-block-start: 0;
	margin-block-end: 0;
}
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__cta-desc) {
	font-size: 16px;
	line-height: 1.5;
	color: var( --priovant-body, #1a1a1a );
	text-align: center;
	/* Let the column govern (removed the earlier 360px cap so the widened
	   col — Phase 63b — hands its full width to the description). */
	margin: 0;
}
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__cta-desc a) {
	color: var( --priovant-primary, #003a70 );
	text-decoration: underline;
}
/* Divider — vertical rule on desktop: thin line above + "OR" + thin line below.
   Grid `align-items: stretch` on the parent makes this cell fill the row
   height (matching the tallest column), so the ::before / ::after lines
   below fill the space above and below "OR" edge-to-edge. */
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__divider) {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 12px;
	color: #6b7280;
}
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__divider)::before,
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__divider)::after {
	content: "";
	display: block;
	width: 1px;
	flex: 1 1 auto;
	min-height: 40px;
	/* Brand blue (2026-08-12 review) — matches the H2 + button outline color
	   for a coherent brand accent instead of a neutral separator. */
	background: var( --wp--preset--color--lisraya-blue );
}
:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__or) {
	font-size: 14px;
	line-height: 1;
	font-weight: 500;
	color: #6b7280;
}
/* Mobile: stack columns + flip divider to horizontal. Same breakpoint the variant-B
   button row uses (767px), so a page with both a plain B speedbump AND an extended one
   stacks at the same point. */
@media (max-width: 767px) {
	:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__cols) {
		grid-template-columns: 1fr;
		/* +10px to match the desktop bump (2026-08-12 review) — more padding
		   around the horizontal OR divider once stacked. */
		gap: 34px;
	}
	:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__divider) {
		flex-direction: row;
		min-height: 0;
		width: 100%;
		/* Cap the horizontal divider at roughly the button width so it feels
		   anchored inside the component instead of reading as a full-width
		   section break (2026-08-12 review). Measured: buttons ~235px on 390px
		   viewport; 240px keeps the divider visually tied to the CTA. */
		max-width: 240px;
		/* Center the capped divider within its full-width grid cell — without
		   this the 240px element left-aligns to the cell start (2026-08-12 review). */
		justify-self: center;
	}
	:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__divider)::before,
	:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__divider)::after {
		width: auto;
		height: 1px;
		min-height: 0;
		flex: 1 1 auto;
	}
	:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__col .wp-block-button__link) {
		display: block;
		width: 100%;
		text-align: center;
	}
	:root :where(.priovant-cta-speedbump--b-extended .priovant-cta-speedbump__cta-desc) {
		max-width: none;
	}
}
/* C/D (Make CtaSpeedbumpC/D) — 50/50 content ┃ image inside the tint card (D = image left). */
:root :where(.priovant-cta-speedbump--split .priovant-cta-speedbump__card) {
	padding: 64px 80px;
	text-align: left;
}
:root :where(.priovant-cta-speedbump__row) {
	display: flex;
	gap: 64px;
	align-items: center;
}
:root :where(.priovant-cta-speedbump__content) {
	flex: 1 1 0;
	min-width: 0;
}
:root :where(.priovant-cta-speedbump--split .priovant-cta-speedbump__rule) {
	width: 200px;
	margin: 24px 0;
}
:root :where(.priovant-cta-speedbump--split .priovant-cta-speedbump__body) {
	max-width: none;
	margin: 0 0 32px;
}
:root :where(.priovant-cta-speedbump__media) {
	flex: 0 0 490px;
	max-width: 490px;
	margin: 0;
	position: relative;
	aspect-ratio: 490 / 276;
	border-radius: var(--priovant-radius-subtle);
	overflow: hidden;
}
:root :where(.priovant-cta-speedbump__media img) {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
@media (max-width: 1023px) {
	:root :where(.priovant-cta-speedbump--split .priovant-cta-speedbump__card) {
		padding: 40px 24px;
	}
	:root :where(.priovant-cta-speedbump__row) {
		flex-direction: column;
		align-items: stretch;
		gap: 32px;
	}
	:root :where(.priovant-cta-speedbump__media) {
		flex: 1 1 auto;
		max-width: none;
	}
}
/* Canonical outline button (Make OutlineButton) for wp:html sections: 51px,
   solid-blue hover. Distinct from the .priovant-link-cta section "learn more"
   links (16/30, #f0f7ff hover). */
:root :where(.priovant-btn-outline) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	padding: 16px 30px;   /* canonical big-CTA geometry (matches .priovant-btn + block styles) */
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--lisraya-blue);
	font-size: 14px;
	line-height: 21px;
	font-weight: 700;
	letter-spacing: -0.02em;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
/* .priovant-btn-outline hover/active/disabled → canonical button system (end of file). */
@media (max-width: 1023px) {
	:root :where(.priovant-cta-speedbump) {
		padding-bottom: 40px;
	}
}
/* Landing-page CTA speedbump — restore the ORIGINAL DocuSign component's generous
   vertical spacing (112px above + 112px below the card). The replacement speedbump
   lost it because the Make speedbump section has padding-top:0 (it's built to sit
   FLUSH, relying on blockGap:0 neighbours, exactly as on the homepage). But the LP
   keeps blockGap (32px) and the original .priovant-cta section had padding 80/80 →
   32 + 80 = 112 on each side. So re-add the 80px section top padding ON THE LP ONLY
   (via the hero-rule sibling — the homepage speedbump follows .priovant-moa, so it
   stays flush + untouched); padding-bottom is already 80 (shared) and the LP's own
   blockGap supplies the matching +32 above (speedbump margin) and below (sign-up
   margin), reproducing the original 112/112. The card internals (64/32) are the Make
   values and are unchanged. Mobile mirrors the original .priovant-cta: 40px top
   (collapse the blockGap so 40 is the only top spacer), growing to 80 at 640px. */
.priovant-hero__rule + .priovant-cta-speedbump { padding-top: 80px; }
@media (max-width: 1023px) {
	.priovant-hero__rule + .priovant-cta-speedbump { padding-top: 40px; margin-top: 0; }
}
@media (min-width: 640px) and (max-width: 1023px) {
	.priovant-hero__rule + .priovant-cta-speedbump { padding-top: 80px; }
}
/* REVERT OPTION — reduced / homepage-matching spacing (flush: ~24px above from the
   hero rule's own margin, 80px below from the Make padding). If the generous
   treatment above is dropped, delete the three rules above and uncomment these two.
   Kept deliberately for an easy revert.
.priovant-hero__rule + .priovant-cta-speedbump { margin-top: 0; }
.priovant-cta-speedbump + .priovant-signup { margin-top: 0; }
*/

/* ── Testimonial (844:17345) — pull-quote + navy video-card placeholder ──
   Two flush 1fr columns (no inner side padding on desktop; gutters from the
   full-bleed section), 64px gap, top-aligned. The video card is a placeholder
   for a future video embed (see backlog). */
:root :where(.priovant-testimonial) {
	background-color: var(--wp--preset--color--base);
}
:root :where(.priovant-testimonial__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 64px 60px 80px;   /* top trimmed 80→64; 60px side gutter (was 0 — designer error corrected to the standard gutter, 2026-06-10) */
}
/* Make testimonial eyebrow: 16px line-height + 24px gaps (eyebrow → rule → grid). */
:root :where(.priovant-testimonial .priovant-eyebrow) {
	line-height: 16px;
	margin-bottom: 24px;
}
:root :where(.priovant-testimonial .priovant-rule) {
	margin-bottom: 24px;
}
:root :where(.priovant-testimonial__grid) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: start;
	gap: 64px;
}
/* ── Quote figure (left) ── */
:root :where(.priovant-testimonial__figure) {
	margin: 0;
}
:root :where(.priovant-testimonial__mark) {
	display: block;
	font-size: 128px;
	line-height: 96px;
	font-weight: 300;
	color: var(--wp--preset--color--lisraya-yellow);
	margin: 0 0 -32px;
	user-select: none;
}
:root :where(.priovant-testimonial__quote) {
	margin: 0;
	padding-top: 16px;
}
:root :where(.priovant-testimonial__quote p) {
	margin: 0;
	font-size: 36px;
	line-height: 43.2px;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-testimonial__caption) {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding-top: 32px;
}
:root :where(.priovant-testimonial__byrule) {
	width: 32px;
	height: 2px;
	margin-bottom: 8px;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-testimonial__name) {
	margin: 0;
	font-size: 16px;
	line-height: 24px;
	font-weight: 500;
	color: var(--wp--preset--color--lisraya-isi-border);
}
:root :where(.priovant-testimonial__affil) {
	margin: 0;
	font-size: 14px;
	line-height: 20px;
	font-weight: 400;
	color: var(--wp--preset--color--lisraya-text);
}
/* ── Navy video-card placeholder (right) — 16:9, centered play button + labels ── */
:root :where(.priovant-testimonial__video) {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 16px;
	width: 100%;
	/* content-box so the 1px border sits OUTSIDE the 16:9 ratio (the box is now a
	   wp-block-group, which defaults to border-box — that put the border inside the
	   ratio and shrank the card 2px). Keeps the approved render pixel-identical. */
	box-sizing: content-box;
	aspect-ratio: 16 / 9;
	background-color: #0f172b;
	border: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	border-radius: var(--priovant-radius-subtle);
	overflow: hidden;
}
:root :where(.priovant-testimonial__play) {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	background-color: var(--wp--preset--color--base);
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-subtle);
}
:root :where(.priovant-testimonial__vidmeta) {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
}
:root :where(.priovant-testimonial__vidtitle) {
	margin: 0;
	font-size: 14px;
	line-height: 20px;
	font-weight: 400;
	color: rgba( 255, 255, 255, 0.9 );
	text-align: center;
}
:root :where(.priovant-testimonial__vidnote) {
	margin: 0;
	font-size: 12px;
	line-height: 1.2;
	font-weight: 400;
	color: rgba( 255, 255, 255, 0.65 );
	text-align: center;
}
@media (max-width: 1023px) {
	:root :where(.priovant-testimonial__inner) {
		padding: 0 24px 40px;   /* top zeroed on mobile per review (bottom keeps 40) */
	}
	/* Homepage MoA → testimonial: on mobile BOTH sections zero their padding (MoA figure is
	   edge-to-edge; testimonial top zeroed above), leaving only ~40px of margin. Designer
	   wants 80px total on mobile between THESE TWO ONLY (2026-07-21) → add 40px atop the
	   testimonial when it directly follows a MoA. Adjacency = homepage-only (patient-stories
	   has no .priovant-moa, so its variants are untouched); desktop stays 187px, unaffected. */
	:root :where(.priovant-moa + .priovant-testimonial .priovant-testimonial__inner) {
		padding-top: 40px;
	}
	:root :where(.priovant-testimonial__grid) {
		grid-template-columns: 1fr;
	}
}

/* ── Patient Testimonial variants (Make Component Library) — opt-in via `variant: 1|2|3|4`
   (1 Standard · 2 50/50 · 3 Featured · 4 Flipped Standard). ONE DOM structure
   (.priovant-testimonial__pgrid > head · quote · video); the layout AND mobile order are pure
   CSS per `--mod`. The default (no variant) HCP expert layout above is unchanged. ── */
/* Shared H2 + body type */
:root :where(.priovant-testimonial__phead) {
	margin: 0;
}
:root :where(.priovant-testimonial__ptitle) {
	margin: 0 0 16px;
	font-size: 36px;
	line-height: 43.2px;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-testimonial__ptitle:last-child) {
	margin-bottom: 0;
}
:root :where(.priovant-testimonial__pbody) {
	margin: 0;
	font-size: 16px;
	line-height: 26px;
	font-weight: 400;
	color: var(--wp--preset--color--lisraya-text);
}
/* Shared quote box — white card, blue border + soft blue shadow, gold mark ┃ quote (+attrib) */
:root :where(.priovant-testimonial__quotebox) {
	display: grid;
	grid-template-columns: auto 1fr;   /* gold mark ┃ quote body (same row as the old flex layout) */
	align-items: start;                /* keep the gold mark at the TOP of the quote */
	/* Center the quote WITHIN the panel — when the panel is height-matched to a taller video
	   (Standard/Flipped `align-items:stretch`) and the quote runs shorter, it sits centered in
	   the extended tint box rather than pinned to the top (designer 2026-07-20). No-op when the
	   panel height = content height (50/50, Featured, mobile) → those are unaffected. */
	align-content: center;
	gap: 14px;
	/* Flat light-blue panel — designer 2026-07-16 (Make PatientQuoteBox update dropped
	   the white card's 1px border + drop shadow + radius). On white sections (Standard /
	   50-50) it reads as a subtle tint panel; on the Featured tint band it intentionally
	   blends into the section background (no visible card). */
	background-color: var(--wp--preset--color--lisraya-tint);
	padding: 32px 40px;
}
:root :where(.priovant-testimonial__qmark) {
	flex-shrink: 0;
	padding-bottom: 20px;
	font-size: 64px;
	line-height: 48px;
	font-weight: 300;
	color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-testimonial__qbody) {
	flex: 1 1 0;
	min-width: 0;
}
:root :where(.priovant-testimonial__qtext) {
	margin: 0 0 28px;
	font-size: 20px;
	line-height: 30px;
	font-weight: 300;
	letter-spacing: -0.01em;
	/* Primary Navy (was Mid-Blue #358ccb) — designer 2026-07-16 for AA contrast on white. */
	color: var(--wp--preset--color--lisraya-isi-border);
}
:root :where(.priovant-testimonial__qtext:last-child) {
	margin-bottom: 0;
}
:root :where(.priovant-testimonial__attrib) {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}
:root :where(.priovant-testimonial__attrib-rule) {
	width: 32px;
	height: 2px;
	margin-bottom: 8px;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-testimonial__attrib-name) {
	margin: 0;
	font-size: 16px;
	line-height: 24px;
	font-weight: 500;
	color: var(--wp--preset--color--lisraya-text);   /* copy color (was Navy) — designer 2026-07-16 */
}
/* Featured: quote text + attribution centered. */
:root :where(.priovant-testimonial__quotebox--centered .priovant-testimonial__qtext) {
	text-align: center;
}
:root :where(.priovant-testimonial__quotebox--centered .priovant-testimonial__attrib) {
	align-items: center;
}

/* Video slot always fills its column/section (16:9 comes from .priovant-videoholder). */
:root :where(.priovant-testimonial__pvideo) {
	width: 100%;
}

/* Variants 1 + 2 share white bg + 80px block. Side gutter = the site BODY gutter (62px, the
   `--priovant-content-cards__box` alignment) — NOT the Make patient-component's 118px, which
   over-inset the two columns vs the rest of the site and cramped them at narrow desktop
   (1024–1279). Aligns the testimonials to the body content on every page + the ~60px homepage
   testimonial; stays two-column down to the 1024 breakpoint like every other section. (2026-07-16) */
:root :where(.priovant-testimonial--standard),
:root :where(.priovant-testimonial--5050),
:root :where(.priovant-testimonial--flipped) {
	padding-block: 80px;
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-body ) );
}
/* Variant 1 — Standard: H2+body full-width on top, then quote (left) ┃ video (right).
   `align-items: stretch` grows the quote panel to the video's height — a no-JS stand-in
   for the Make JS (which locks the panel to the video height + auto-shrinks the quote
   20→16px to fit). Common case (quote ≤ video): the panel matches the video exactly.
   Longer quote: the row grows and the video keeps its 16:9 via align-self:start below
   (so it never distorts). Designer-approved 2026-07-16 over replicating the JS shrink. */
:root :where(.priovant-testimonial--standard .priovant-testimonial__pgrid) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: stretch;
	gap: 40px;
}
:root :where(.priovant-testimonial--standard .priovant-testimonial__phead) {
	grid-column: 1 / -1;
}
:root :where(.priovant-testimonial--standard .priovant-testimonial__pvideo) {
	align-self: start;
}
/* Variant 4 — Flipped Standard: H2+body full-width on top, then video (left) ┃ quote (right)
   — the mirror of Standard (Make PatientTestimonialBlockFlipped). Same `align-items: stretch`
   height-match; the video keeps its 16:9 via align-self:start while the quote panel grows to
   the row height. Columns are pinned explicitly (DOM order is head → quote → video). */
:root :where(.priovant-testimonial--flipped .priovant-testimonial__pgrid) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: stretch;
	gap: 40px;
}
:root :where(.priovant-testimonial--flipped .priovant-testimonial__phead) {
	grid-column: 1 / -1;
}
:root :where(.priovant-testimonial--flipped .priovant-testimonial__pvideo) {
	grid-column: 1;
	grid-row: 2;
	align-self: start;
}
:root :where(.priovant-testimonial--flipped .priovant-testimonial__quotebox) {
	grid-column: 2;
	grid-row: 2;
}
/* Variant 2 — 50/50: video (left) ┃ H2+body (right), v-centered; quote full-width below. */
:root :where(.priovant-testimonial--5050 .priovant-testimonial__pgrid) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	gap: 40px;
}
:root :where(.priovant-testimonial--5050 .priovant-testimonial__pvideo) {
	grid-column: 1;
	grid-row: 1;
}
:root :where(.priovant-testimonial--5050 .priovant-testimonial__phead) {
	grid-column: 2;
	grid-row: 1;
}
:root :where(.priovant-testimonial--5050 .priovant-testimonial__quotebox) {
	grid-column: 1 / -1;
	grid-row: 2;
	align-self: start;
}
/* Variant 3 — Featured: tint band; centered content at 70%; full-width video. */
:root :where(.priovant-testimonial--featured) {
	background-color: var(--wp--preset--color--lisraya-tint);
	padding-block: 80px;
	padding-inline: var( --priovant-bleed-gutter );   /* cap content at 1280; __pgrid is then 70% of it */
}
:root :where(.priovant-testimonial--featured .priovant-testimonial__pgrid) {
	box-sizing: border-box;
	max-width: 70%;
	margin-inline: auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 40px;
	text-align: center;
}
:root :where(.priovant-testimonial--featured .priovant-testimonial__phead),
:root :where(.priovant-testimonial--featured .priovant-testimonial__quotebox),
:root :where(.priovant-testimonial--featured .priovant-testimonial__pvideo) {
	width: 100%;
}
/* Larger play button for the Featured video (72px box / 32px icon, 15/600 title). */
:root :where(.priovant-videoholder--lg .priovant-videoholder__play) {
	width: 72px;
	height: 72px;
}
:root :where(.priovant-videoholder--lg .priovant-videoholder__play svg) {
	width: 32px;
	height: 32px;
}
:root :where(.priovant-videoholder--lg .priovant-videoholder__title) {
	font-size: 15px;
	font-weight: 600;
}
@media (max-width: 1023px) {
	:root :where(.priovant-testimonial--standard),
	:root :where(.priovant-testimonial--5050),
	:root :where(.priovant-testimonial--flipped) {
		padding: 40px 24px;
	}
	/* Featured: NO section padding so the video bleeds edge-to-edge; content padded below. */
	:root :where(.priovant-testimonial--featured) {
		padding: 0 0 32px;
	}
	/* All variants stack via flex column at ≤1023 (the standard breakpoint). DOM order
	   (head → quote → video) is used AS-IS by Standard, Featured (which floats the video
	   first, below) AND Flipped — Flipped stacks like Standard on mobile per the designer
	   (2026-07-20), NOT the head → video → quote of Make's PatientTestimonialBlockFlippedMobile.
	   Only 50/50 reorders to head → VIDEO → quote (Make *5050Mobile) via order:1 on its quote.
	   `align-items: stretch` + the align-self resets below UNDO the desktop GRID alignment (the
	   50/50 pgrid's `center` + the quote/video `align-self:start`), which otherwise leaks into
	   the flex column and shrinks/centers children — it centered the 50/50 head to ~804px at
	   850–1023. */
	:root :where(.priovant-testimonial--standard .priovant-testimonial__pgrid),
	:root :where(.priovant-testimonial--5050 .priovant-testimonial__pgrid),
	:root :where(.priovant-testimonial--flipped .priovant-testimonial__pgrid) {
		display: flex;
		flex-direction: column;
		gap: 24px;
		align-items: stretch;
	}
	:root :where(.priovant-testimonial--5050 .priovant-testimonial__quotebox) {
		order: 1;
		align-self: stretch;
	}
	:root :where(.priovant-testimonial--standard .priovant-testimonial__pvideo),
	:root :where(.priovant-testimonial--flipped .priovant-testimonial__pvideo) {
		align-self: stretch;
	}
	:root :where(.priovant-testimonial--featured .priovant-testimonial__pgrid) {
		max-width: 100%;
		align-items: stretch;
		gap: 32px;
	}
	/* Featured mobile: video edge-to-edge FIRST (full-bleed, no radius); H2+body + quote stay padded (Make). */
	:root :where(.priovant-testimonial--featured .priovant-testimonial__pvideo) {
		order: -1;
		border-radius: 0;
	}
	:root :where(.priovant-testimonial--featured .priovant-testimonial__phead) {
		padding-inline: 24px;
	}
	:root :where(.priovant-testimonial--featured .priovant-testimonial__quotebox) {
		width: auto;   /* override the desktop width:100% so margin-inline insets the card (no overflow) */
		margin-inline: 24px;
	}
	:root :where(.priovant-testimonial__quotebox) {
		padding: 20px 24px;
		gap: 10px;
	}
	:root :where(.priovant-testimonial__qmark) {
		font-size: 40px;
		line-height: 30px;
	}
	/* Mobile type steps (Make patient-testimonial *Mobile functions) — a component-specific
	   responsive exception: H2 36→24 (Standard/50-50) / 26 (Featured); body 16→15 / 14;
	   attribution 16→14. The quote stays 20px (Make keeps it fixed). */
	:root :where(.priovant-testimonial--standard .priovant-testimonial__ptitle),
	:root :where(.priovant-testimonial--5050 .priovant-testimonial__ptitle),
	:root :where(.priovant-testimonial--flipped .priovant-testimonial__ptitle) {
		font-size: 24px;
		line-height: 30px;
		letter-spacing: -0.48px;
		margin-bottom: 14px;
	}
	:root :where(.priovant-testimonial--featured .priovant-testimonial__ptitle) {
		font-size: 26px;
		line-height: 34px;
		letter-spacing: -0.52px;
		margin-bottom: 16px;
	}
	:root :where(.priovant-testimonial--standard .priovant-testimonial__pbody),
	:root :where(.priovant-testimonial--5050 .priovant-testimonial__pbody),
	:root :where(.priovant-testimonial--flipped .priovant-testimonial__pbody) {
		font-size: 15px;
		line-height: 24px;
	}
	:root :where(.priovant-testimonial--featured .priovant-testimonial__pbody) {
		font-size: 14px;
		line-height: 22px;
	}
	:root :where(.priovant-testimonial__attrib-name) {
		font-size: 14px;
	}
}

/* ── Footnotes (844:17379) — quiet reference list directly above the ISI ──
   Intentionally subtle legal-weight text; 1px #e0e8f0 top border, 73px desktop
   side inset (32px mobile). Numbers are manual prefixes (list-none). */
:root :where(.priovant-footnotes) {
	background-color: var(--wp--preset--color--base);
	border-top: 1px solid #e0e8f0;
}
:root :where(.priovant-footnotes__inner) {
	box-sizing: border-box;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: 25px 73px;
}
/* References flow as ONE running paragraph, not a line per entry (copywriter, 2026-07-30 —
   "tighten them all up to remove line breaks"). The <ol> stays a semantic ordered list for AT,
   but the items render inline so the numbered references run together as body text; the
   whitespace between list items collapses to a single space that separates them. (The legal
   `blocks:` list — Terms & Conditions — keeps its own line-per-item styling below.) */
:root :where(.priovant-footnotes__list) {
	list-style: none;
	margin: 0;
	padding: 0;
	font-size: 12px;
	line-height: 18px;
	color: #666666;
}
:root :where(.priovant-footnotes__list li) {
	display: inline;
	margin: 0;
	font-size: 12px;
	line-height: 18px;
	font-weight: 400;
	color: #666666;
}
:root :where(.priovant-footnotes__abbr) {
	margin: 6px 0 0;
	font-size: 12px;
	line-height: 18px;
	font-weight: 400;
	color: #666666;
}
@media (max-width: 1023px) {
	:root :where(.priovant-footnotes__inner) {
		padding: 25px 32px;
	}
}
/* Footnotes variants (Make, 2026-06-22): `width: content` = 112px inset, no max-width
   cap (aligns to the content-block width); `bg: light-blue` = #E6F1FF + #cfe2f2 border.
   Opt-in via the modifier classes; the default footnotes (homepage) are unchanged. */
:root :where(.priovant-footnotes--content .priovant-footnotes__inner) {
	max-width: none;
	padding: 25px 112px;
}
/* Attached (section-level) footnote — SEE the renderer note. A section's own fine-print,
   NOT the page-wide footer: no top rule, at the CONTENT-WIDTH inset (112, inside the 1280
   cap) so it reads as an indented legal column, more inset than the body's 62. This is Make's
   "Footnotes, Content Width" minus the top rule; it restores the pre-2026-07-15 inset the
   designer wanted (07-15 had briefly widened it to the 62 body gutter). (Support Terms &
   Conditions, under the Bridge.) */
/* attached = a section-level footnote, NOT the page-wide footer. Only TWO changes vs the
   default footer: drop the top rule (here) + the content-width inset (below). NO special top
   padding — it flows STANDARD with the rest of the page; the gap above is just the preceding
   section's own bottom rhythm. */
:root :where(.priovant-footnotes--attached) {
	border-top: 0;
}
:root :where(.priovant-footnotes--attached .priovant-footnotes__inner) {
	padding: 0 var(--priovant-gutter-inset) 60px;   /* 112 content-width inset (inside the 1280 cap); borderless; standard flow (no top override) */
}
@media (max-width: 1023px) {
	:root :where(.priovant-footnotes--attached .priovant-footnotes__inner) { padding: 0 24px 32px; }
}
:root :where(.priovant-footnotes--lightblue) {
	background-color: var(--wp--preset--color--lisraya-utility-bg);
	border-top-color: var(--priovant-border-blue);
}
@media (max-width: 1023px) {
	:root :where(.priovant-footnotes--content .priovant-footnotes__inner) {
		padding: 25px 24px;
	}
}
/* Freeform legal fine-print (footnotesSection `blocks:` mode — Terms & Conditions):
   bold lead + paragraphs + a bulleted list, all at footnote sizing (12/18 #666). */
:root :where(.priovant-footnotes__legal-heading) {
	margin: 0 0 8px;
	font-size: 12px;
	line-height: 18px;
	font-weight: 700;
	color: #666666;
}
:root :where(.priovant-footnotes__legal-text) {
	margin: 0 0 8px;
	font-size: 12px;
	line-height: 18px;
	font-weight: 400;
	color: #666666;
}
:root :where(.priovant-footnotes__legal-text:last-child) {
	margin-bottom: 0;
}
:root :where(.priovant-footnotes__legal-list) {
	margin: 0 0 8px;
	padding-left: 18px;
	list-style: disc;
	font-size: 12px;
	line-height: 18px;
	color: #666666;
}
:root :where(.priovant-footnotes__legal-list li) {
	margin: 0 0 4px;
}

/* ============================================================================
   CANONICAL BUTTON SYSTEM — brand "Button States" chart.
   Three types (Primary / Outline / Resource action) x four states
   (default / hover / active / disabled), all on brand tokens. Single source of
   truth for button STATE COLORS. In-use button classes are wired in so they
   share these states while keeping their own geometry:
     - Outline : the sign-up submit (.priovant-form__submit, EVERY page) +
                 section "learn more" CTAs (.priovant-link-cta) + the wp:html
                 outline button (.priovant-btn-outline)
   Standalone .priovant-btn--{primary,outline,resource} are for new / Resource-
   action buttons (e.g. Support): markup =
     class="priovant-btn priovant-btn--outline"            (standard outline)
     class="priovant-btn priovant-btn--resource"           (resource card btn: its
        OWN light #cfe2f2 outline + leading icon — darkens on card hover; NOT the
        canonical Outline. Defined in the resource block below, used standalone.)
   STATE COLORS (2026-06-11 "Button States" chart; Primary hover updated 2026-07-13):
     Primary  default blue / hover white+BrandBlue(#00529b) / active #003d7a / disabled #e0e8f0 bg + #98a2b3 text
     Outline  default white+blue / hover blue-fill / active #003d7a / disabled white + #d1d1d1 border + #98a2b3 text
     Resource default white+#cfe2f2 border / hover blue-fill / active #003d7a / disabled white + #d1d1d1 + #98a2b3
   (Primary hover pivots on Brand Blue #00529b so Primary ⇄ Outline are exact
   inverses — was white+navy(#152b61) per the original chart, changed per the
   2026-07-13 review. active is the darker Brand Blue #003d7a; the active/disabled
   hexes are local vars at the top of this file — not in the brand palette.)
   .priovant-form__submit is canonical Outline on EVERY page (changed from Primary
   2026-06-16 per the designer), and the .is-style-priovant-{primary,outline}
   editor block styles are now fully canonical (default/hover/#003d7a active +
   sharp-0 radius) and in use (LP CTA + the generated Inserter patterns). ⚠ Those
   block styles live at ~L1676 and DUPLICATE the geometry literals below (16×30 ·
   21 LH · 14 · -0.02em) — if you change this geometry, update them too
   (colors/radius share tokens → propagate).

   ⚠ HEADER EXCEPTION (Phase 50, 2026-08-07): the two header nav CTAs (Enroll
   Patients + Speak to a rep, inside .priovant-siteheader__right and
   .priovant-nav__right) run a scoped padding-block + line-height override to
   restore the 52px desktop / 40px mobile nav-tight rhythm (Phase 46 unified the
   headers onto .priovant-btn but the canonical body geometry ran 57px flat,
   losing the mobile-hamburger height match). See the override at the end of the
   priovant-siteheader/priovant-nav CSS blocks (grep 'nav-tight vertical geometry').
   If you change either of the base geometry values BELOW (padding, line-height),
   also update the header override so 52/40 stays true — or the mobile CTA will
   drift out of alignment with the 40×40 hamburger again.
   ========================================================================== */

/* Base geometry for the standalone canonical classes (Resource + new pages). */
:root :where(.priovant-btn) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	box-sizing: border-box;
	padding: 16px 30px;
	border: 2px solid transparent;
	border-radius: var(--priovant-radius-sharp);
	font-size: 14px;
	line-height: 21px;
	font-weight: 700;
	letter-spacing: -0.02em;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
/* Resource action: tighter geometry (Make support-resources ResourceCard —
   13px/700, ~39px tall, leading 14px icon) + the card's own light-blue outline
   (#cfe2f2, NOT the canonical strong-blue Outline). The button matches the card
   border and darkens to Brand Blue on card hover (see the resources-section
   CSS) — designer-confirmed the light treatment, 2026-06-10.
   Used standalone (no --outline). Leading icon = inline SVG first child. */
:root :where(.priovant-btn--resource) {
	padding: 7px 16px;   /* 7 + 21 lh + 7 + 4 border = 39px, per Make */
	font-size: 13px;
	gap: 8px;
	background-color: var(--wp--preset--color--base);
	border: 2px solid var(--priovant-border-blue);
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-btn--resource) > svg {
	width: 14px;
	height: 14px;
	flex-shrink: 0;
}
/* hover: Brand Blue fill, white text + icon (chart) — the icon recolors via
   currentColor. (Distinct from the card-hover border-darken above, which the
   card applies to BOTH buttons; this is the button's own hover.) */
:root :where(.priovant-btn--resource:hover),
:root :where(.priovant-btn--resource:focus-visible) {
	background-color: var(--wp--preset--color--lisraya-blue);
	border-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
}
/* active: darker Brand Blue fill (#003d7a), white text + icon */
:root :where(.priovant-btn--resource:active) {
	background-color: var(--priovant-btn-active);
	border-color: var(--priovant-btn-active);
	color: var(--wp--preset--color--base);
}
/* disabled: white fill, Border Gray border (#d1d1d1), slate icon (#98a2b3) */
:root :where(.priovant-btn--resource[disabled]),
:root :where(.priovant-btn--resource[aria-disabled="true"]),
:root :where(.priovant-btn--resource:disabled) {
	background-color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--lisraya-rule-gray);
	color: var(--priovant-disabled-fg);
	pointer-events: none;
	cursor: default;
}

/* ── PRIMARY — default: Brand Blue fill, white text ── */
:root :where(.priovant-btn--primary) {
	background-color: var(--wp--preset--color--lisraya-blue);
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
/* hover: invert to white fill, Brand Blue border + text — the exact inverse of the
   Outline button (white/Brand-Blue → fills Brand Blue). Pivots on Brand Blue #00529b
   (was Navy #152b61) per 2026-07-13 review, so Primary ⇄ Outline are mirror images. */
:root :where(.priovant-btn--primary:hover),
:root :where(.priovant-btn--primary:focus-visible) {
	background-color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--lisraya-blue);
}
/* active: darker Brand Blue fill (#003d7a), white text */
:root :where(.priovant-btn--primary:active) {
	background-color: var(--priovant-btn-active);
	border-color: var(--priovant-btn-active);
	color: var(--wp--preset--color--base);
}
/* disabled: light slate fill (#e0e8f0), slate text (#98a2b3), not interactive */
:root :where(.priovant-btn--primary[disabled]),
:root :where(.priovant-btn--primary[aria-disabled="true"]),
:root :where(.priovant-btn--primary:disabled) {
	background-color: var(--priovant-btn-disabled-bg);
	border-color: var(--priovant-btn-disabled-bg);
	color: var(--priovant-disabled-fg);
	pointer-events: none;
	cursor: default;
}

/* ── OUTLINE (+ section "learn more" CTAs + wp:html outline button) ──
   default: white fill, Brand Blue border + text ── */
:root :where(.priovant-btn--outline),
:root :where(.priovant-link-cta),
:root :where(.priovant-form__submit),
:root :where(.priovant-btn-outline) {
	background-color: var(--wp--preset--color--base);
	border: 2px solid var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--lisraya-blue);
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
/* hover: Brand Blue fill, white text */
:root :where(.priovant-btn--outline:hover),
:root :where(.priovant-btn--outline:focus-visible),
:root :where(.priovant-link-cta:hover),
:root :where(.priovant-link-cta:focus-visible),
:root :where(.priovant-form__submit:hover),
:root :where(.priovant-form__submit:focus-visible),
:root :where(.priovant-btn-outline:hover),
:root :where(.priovant-btn-outline:focus-visible) {
	background-color: var(--wp--preset--color--lisraya-blue);
	border-color: var(--wp--preset--color--lisraya-blue);
	color: var(--wp--preset--color--base);
}
/* active: darker Brand Blue fill (#003d7a), white text */
:root :where(.priovant-btn--outline:active),
:root :where(.priovant-link-cta:active),
:root :where(.priovant-form__submit:active),
:root :where(.priovant-btn-outline:active) {
	background-color: var(--priovant-btn-active);
	border-color: var(--priovant-btn-active);
	color: var(--wp--preset--color--base);
}
/* disabled: white fill, Border Gray border (#d1d1d1), slate text (#98a2b3), not interactive */
:root :where(.priovant-btn--outline[disabled]),
:root :where(.priovant-btn--outline[aria-disabled="true"]),
:root :where(.priovant-btn--outline:disabled),
:root :where(.priovant-link-cta[aria-disabled="true"]),
:root :where(.priovant-form__submit[disabled]),
:root :where(.priovant-form__submit[aria-disabled="true"]),
:root :where(.priovant-form__submit:disabled),
:root :where(.priovant-btn-outline[aria-disabled="true"]) {
	background-color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--lisraya-rule-gray);
	color: var(--priovant-disabled-fg);
	pointer-events: none;
	cursor: default;
}

/* ============================================================================
   CANONICAL TEXT-LINK SYSTEM — brand "Text Links" chart.
   Underlined hyperlinks — distinct from buttons (.priovant-btn*) and from the
   section "learn more" CTAs (.priovant-link-cta). Base .priovant-link carries the
   4 states and INHERITS size/weight, so it can be used alone for inline links in
   running body copy (e.g. the Support enrollment paragraphs). The 3 size modifiers
   set the chart's fixed types:
     nav-link    13/700/-0.02em   class="priovant-link priovant-link--nav"
     body-link   14/700/-0.02em   class="priovant-link priovant-link--body"
     inline-link 12/400/0         class="priovant-link priovant-link--inline"
   The chart's 4th type — BODY TEXT LINK 16px/400 — is the base .priovant-link
   used ALONE (it inherits the paragraph's 16px at the chart's 400 weight), e.g.
   the Support enrollment links; no modifier needed.
   States (developer-confirmed 2026-06-11): Default = Brand Blue + underline ·
   Hover/Tap = Mid Blue #358ccb (lisraya-blue-mid) + underline · Visited/Active =
   Primary Navy #152b61 · Disabled = slate #98a2b3 (--priovant-disabled-fg, shared
   with buttons), not interactive (mark with aria-disabled="true").
   ========================================================================== */
:root {
	/* Make support light-blues — NOT in the brand chart (designer to tokenize).
	   Used by the section nav + resource cards (borders / active-row bg). */
	--priovant-border-blue: #cfe2f2;
	--priovant-tint-blue: #f0f7ff;
	/* Dark Gold — Make's divider/rule gold, darker than the palette golds (ffc60a → ffeabb);
	   used by the abandonment modal's 8px top rule + the 30/70 block's vertical divider. NOT
	   in the brand color chart (designer to tokenize into the palette later if desired). */
	--priovant-gold-dark: #faa31b;
	/* State colors from the developer-confirmed Button + Text-Link charts
	   (2026-06-11) — NOT in the brand color chart (designer to tokenize into the
	   palette later if desired). --priovant-btn-active = the darker Brand Blue
	   pressed state (navy moved up to the Primary hover). --priovant-disabled-fg
	   = the slate disabled text/icon, SHARED by buttons AND links (the Text-Link
	   chart confirms links use #98a2b3, same as buttons — not the old #767676). */
	--priovant-btn-active: #003d7a;
	--priovant-btn-disabled-bg: #e0e8f0;
	--priovant-disabled-fg: #98a2b3;
	/* Border-radius scale (developer-confirmed 2026-06-11 "Border Radius" chart) —
	   the single source of truth for corner rounding. Three tiers:
	     sharp  (0px) — ALL buttons (Primary/Outline/Resource), nav-bar elements,
	                    accordion panels, section dividers
	     subtle (2px) — cards, content blocks, image/video placeholders,
	                    chart containers, data-table cells
	     form   (6px) — form input fields + select dropdowns ONLY
	   Out of scale (kept as-is): the 50% FPO circle, the consent checkbox, the
	   temporary success-modal + close (slated for removal), the ISI tray chevron. */
	--priovant-radius-sharp: 0px;
	--priovant-radius-subtle: 2px;
	--priovant-radius-form: 6px;
	/* Dark video-placeholder bg (Make VideoPlayerPlaceholder) — not in the brand
	   palette; designer to tokenize. Shared by the Featured Video block + (later) the
	   Video 50/50 layouts. The testimonial video hardcodes the same #0f172b. */
	--priovant-video-bg: #0f172b;
	/* Accordion hairline (Make Site-Components-Library) — light slate separator
	   between accordion rows + under an open header. Not in the brand palette. */
	--priovant-accordion-line: #e0e8f0;
}
/* Default */
:root :where(.priovant-link) {
	color: var(--wp--preset--color--lisraya-blue);
	text-decoration: underline;
	text-underline-offset: 2px;
	transition: color 150ms ease;
}
/* Visited (color is all :visited can set) */
:root :where(.priovant-link:visited) {
	color: var(--wp--preset--color--lisraya-isi-border);
}
/* Hover / keyboard focus — after :visited so it wins (equal specificity) */
:root :where(.priovant-link:hover),
:root :where(.priovant-link:focus-visible) {
	color: var(--wp--preset--color--lisraya-blue-mid);
	text-decoration: underline;
}
/* Active */
:root :where(.priovant-link:active) {
	color: var(--wp--preset--color--lisraya-isi-border);
}
/* Disabled — not interactive */
:root :where(.priovant-link[aria-disabled="true"]) {
	color: var(--priovant-disabled-fg);
	pointer-events: none;
	cursor: default;
}
/* Size modifiers (the chart's 3 fixed types) */
:root :where(.priovant-link--nav) {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: -0.02em;
}
:root :where(.priovant-link--body) {
	font-size: 14px;
	font-weight: 700;
	letter-spacing: -0.02em;
}
:root :where(.priovant-link--inline) {
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0;
}

/* ============================================================================
   ACCORDION — reusable disclosure component (Make Site-Components-Library
   `LiveAccordionDemo`). Native <details>/<summary> (keyboard + screen-reader
   accessible, no JS). Navy 8px top bar; rows = eyebrow + 22px blue title + a
   40×40 blue +/− toggle; open body = 200×2 gold rule + 16/26 body copy. The
   markup's shared `name` makes the group exclusive where supported. Sharp (0)
   radius per the Border Radius chart ("accordion panels"). Global — reusable on
   any page (built first on the internal component-library page).
   ========================================================================== */
:root :where(.priovant-accordion) {
	background-color: var(--wp--preset--color--base);
	border-top: 8px solid var(--wp--preset--color--lisraya-isi-border);
	border-radius: var(--priovant-radius-sharp);
}
:root :where(.priovant-accordion__item) {
	border-bottom: 1px solid var(--priovant-accordion-line);
}
:root :where(.priovant-accordion__summary) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 24px 80px;
	cursor: pointer;
	list-style: none;                 /* hide the default disclosure marker */
	transition: background-color 150ms ease;
}
:root :where(.priovant-accordion__summary)::-webkit-details-marker { display: none; }
/* Hover only while closed (Make: hover bg suppressed when open). */
:root :where(.priovant-accordion__item:not([open]) > .priovant-accordion__summary:hover) {
	background-color: var(--wp--preset--color--lisraya-tint);
}
/* Open: NO hairline under the header (designer, 2026-07-31) — the open header flows straight into
   the body. (When CLOSED, the divider under the summary is the `.priovant-accordion__item`
   bottom rule above; when OPEN that same rule sits below the panel as the item divider.) */
:root :where(.priovant-accordion__eyebrow) {
	display: block;
	margin: 0 0 4px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-accordion__title) {
	display: block;
	font-size: 22px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-accordion__toggle) {
	flex-shrink: 0;
	width: 40px;
	height: 40px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background-color: var(--wp--preset--color--lisraya-blue);
	border-radius: var(--priovant-radius-sharp);
}
:root :where(.priovant-accordion__toggle)::after {
	content: "+";
	color: var(--wp--preset--color--base);
	font-size: 22px;
	line-height: 1;
	font-weight: 300;
}
:root :where(.priovant-accordion__item[open] > .priovant-accordion__summary .priovant-accordion__toggle)::after {
	content: "−";   /* U+2212 minus */
}
:root :where(.priovant-accordion__body) {
	padding: 40px 80px 56px;
}
:root :where(.priovant-accordion__rule) {
	display: block;
	width: 200px;
	height: 2px;
	margin-bottom: 20px;
	background-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-accordion__body p) {
	max-width: 720px;
	margin: 0;
	font-size: 16px;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}
/* Mobile: shrink the wide 80px lateral inset to the 24px gutter. */
@media (max-width: 1023px) {
	:root :where(.priovant-accordion__summary) { padding: 20px 24px; }
	:root :where(.priovant-accordion__body) { padding: 24px 24px 32px; }
}

/* ============================================================================
   COMPONENT LIBRARY / STYLE GUIDE — internal test-bench page chrome + demo-only
   decoration. ALL scoped under .priovant-styleguide so none of it leaks into
   production pages. (The real components it demos — e.g. .priovant-accordion —
   are styled globally above.)
   ========================================================================== */
:root :where(.priovant-styleguide__inner) {
	max-width: 1280px;
	margin: 0 auto;
	padding: 64px 24px 96px;
	box-sizing: border-box;
}
:root :where(.priovant-styleguide__intro) {
	padding-bottom: 24px;
	border-bottom: 2px solid var(--wp--preset--color--lisraya-isi-border);
	margin-bottom: 16px;
}
:root :where(.priovant-styleguide__intro h1) {
	margin: 0 0 12px;
	font-size: 36px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-ink);
}
:root :where(.priovant-styleguide__intro p) {
	max-width: 720px;
	margin: 0;
	font-size: 16px;
	line-height: 1.625;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-sg-specimen) {
	padding: 48px 0;
	border-bottom: 1px solid var(--wp--preset--color--lisraya-rule-gray);
}
:root :where(.priovant-sg-specimen__head) {
	display: flex;
	align-items: baseline;
	gap: 20px;
	margin-bottom: 32px;
}
:root :where(.priovant-sg-specimen__num) {
	font-size: 24px;
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-gray-mid);
	font-variant-numeric: tabular-nums;
}
:root :where(.priovant-sg-specimen__title) {
	margin: 0 0 8px;
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-ink);
}
:root :where(.priovant-sg-specimen__desc) {
	max-width: 720px;
	margin: 0;
	font-size: 15px;
	line-height: 1.6;
	color: var(--wp--preset--color--lisraya-gray-mid);
}
/* Archived components — a divider that groups deprecated/removed components
   (kept in the codebase for reference + revival) at the end of the styleguide. */
:root :where(.priovant-sg-archive-head) {
	margin-top: 32px;
	padding-top: 48px;
	border-top: 3px solid var(--wp--preset--color--lisraya-isi-border);
}
:root :where(.priovant-sg-archive-head__title) {
	margin: 0 0 8px;
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-ink);
}
:root :where(.priovant-sg-archive-head__note) {
	max-width: 720px;
	margin: 0;
	font-size: 15px;
	line-height: 1.6;
	color: var(--wp--preset--color--lisraya-gray-mid);
}
:root :where(.priovant-sg-block) { margin-top: 32px; }
/* /external-form-code bench only: preview the white #signing-message card on the enrollment
   page's blue band (the real band is .priovant-enrollment__band). Demo-only — this class
   appears only on the styleguide/bench pages, so it never leaks into production. */
:root :where(.priovant-sg-onblue) {
	padding: 40px;
	background-color: var(--wp--preset--color--lisraya-tint);
	border-radius: var(--priovant-radius-subtle);
}
:root :where(.priovant-sg-block__label) {
	margin: 0 0 16px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--lisraya-gray-mid);
}

/* ── Chart (priovant/chart, Make §09) ── chart.js draws an on-brand <canvas>
   into __canvas from the block's editable inner core/table. The table is the
   accessible / no-JS / print fallback — visually hidden on the front end (kept
   in the DOM for AT), shown when printing. */
/* Titled-block shell shared with the Data Table (Make §09): visible title (22/700
   blue) + description (16/400) above the canvas, footnote (12/400 muted) below. */
:root :where(.priovant-chartblock__title) {
	margin: 0 0 20px;   /* 20px below the chart title (Make) — the gap above the canvas */
	font-size: 22px;
	line-height: 1.2;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
/* Clinical charts: center the chart title (was left-aligned) so it corresponds with the
   centered axis titles (2026-07-30). Scoped to clinical chartblocks via :has() → the approved
   non-clinical dermatomyositis chart title stays left. */
:root :where(.priovant-chartblock:has(.priovant-chart[data-chart-style="clinical"]) .priovant-chartblock__title) {
	text-align: center;
}
:root :where(.priovant-chartblock__desc) {
	margin: 0 0 20px;
	font-size: 16px;
	line-height: 1.6;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-chartblock__note) {
	margin: 12px 0 0;
	font-size: 12px;
	line-height: 1.5;
	/* Make spec is #667085; we use lisraya-gray-mid to match the Data Table footnote —
	   the #667085 alignment is a pending designer call (see backlog Make-vs-build audit). */
	color: var(--wp--preset--color--lisraya-gray-mid);
}
/* Table-less chart (efficacy): the a11y_description prose. It's sr-only for JS users (the
   .priovant-visually-hidden class on the element clips it — screen readers still read it), and the
   chart's inline <noscript> un-clips it (+ hides the empty canvas) as the VISIBLE no-JS fallback.
   These props style it once revealed. */
:root :where(.priovant-chart__desc) {
	max-width: 720px;
	margin: 12px 0 0;
	font-size: 15px;
	line-height: 1.6;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-chart) {
	width: 100%;
}
:root :where(.priovant-chart__canvas) {
	position: relative;   /* chart.js responsive sizing; height set inline by chart-view.js */
	width: 100%;
	min-height: 240px;
}
/* Axis TITLES rendered as HTML by chart-view.js (not chart.js canvas text) so they
   stay 14/700 navy at every width — wrapping + text-zoom friendly (WCAG 1.4.4/1.4.10),
   unlike the fixed canvas bitmap. Layout: rotated Y title ┃ [canvas + centered X title].
   (2026-07-14; category names + bar value numbers stay on the canvas for now.) */
:root :where(.priovant-chart__plot) {
	display: flex;
	align-items: stretch;
	gap: 8px;
}
:root :where(.priovant-chart__area) {
	flex: 1;
	min-width: 0;
}
:root :where(.priovant-chart__ytitle) {
	margin: 0;
	align-self: center;
	writing-mode: vertical-rl;
	transform: rotate( 180deg );   /* reads bottom-to-top, like the chart.js y-title */
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	color: var(--wp--preset--color--lisraya-isi-border);   /* navy */
	text-align: center;
}
:root :where(.priovant-chart__xtitle) {
	margin: 6px 0 0;
	text-align: center;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--wp--preset--color--lisraya-isi-border);   /* navy */
}
/* Clinical figures: bump the HTML axis titles +4 (→18px) to sit above the larger clinical
   canvas ticks (2026-07-29). Scoped to the clinical wrapper so default charts keep 14px.
   Equal specificity to the base rules above → later source order wins. */
:root :where(.priovant-chart[data-chart-style="clinical"] .priovant-chart__ytitle),
:root :where(.priovant-chart[data-chart-style="clinical"] .priovant-chart__xtitle) {
	font-size: 18px;
}
/* Mobile: the 18px clinical axis titles are a touch large on a phone-width chart → 16px
   (designer 2026-07-31). HTML titles, so a viewport query is the right tool; the smaller
   y-title also frees a little horizontal room. Desktop/tablet keep 18px. */
@media (max-width: 1023px) {
	:root :where(.priovant-chart[data-chart-style="clinical"] .priovant-chart__ytitle),
	:root :where(.priovant-chart[data-chart-style="clinical"] .priovant-chart__xtitle) {
		font-size: 16px;
	}
}
/* Clinical legend — an HTML row below the canvas (built by chart-view.js buildLegend), NOT a
   chart.js canvas legend, so it stays a fixed size + wraps on narrow widths / text-zoom (like the
   HTML axis titles). Point-style: each marker is a short line matching its series (color + solid/
   dashed). Only the multi-series clinical LINE charts get it. */
:root :where(.priovant-chart__legend) {
	list-style: none;
	margin: 20px 0 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-start;   /* left-aligned (Make component), not centered */
	align-items: center;
	gap: 8px 28px;
}
:root :where(.priovant-chart__legend-item) {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	line-height: 1.3;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-chart__legend-marker) {
	display: inline-block;
	width: 26px;
	height: 0;
	/* color + solid/dashed set inline per series by buildLegend() */
	border-top: 3px solid transparent;
}
/* The significance note at the end of the legend row (no marker) — muted, matching the
   former on-canvas note. */
:root :where(.priovant-chart__legend-note) {
	color: #5c6070;
}
/* Front-end: the data table is the sr-only accessible fallback (not the visual). */
:root :where(.priovant-chart .wp-block-table) {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect( 0, 0, 0, 0 );
	white-space: nowrap;
	border: 0;
}
@media print {
	/* No canvas in print — fall back to the readable data table. */
	:root :where(.priovant-chart__canvas) { display: none; }
	:root :where(.priovant-chart .wp-block-table) {
		position: static;
		width: auto;
		height: auto;
		margin: 0;
		overflow: visible;
		clip: auto;
		white-space: normal;
	}
}
/* Editor only: style.css is also loaded via add_editor_style, so the front-end
   sr-only rule above would also hide the data table in wp-admin — un-hide it (and
   the canvas mount, which is empty in the editor) so authors can edit the data.
   Plain (non-:where) selector so it out-specifies the prefixed front-end rule. */
.editor-styles-wrapper .priovant-chart .wp-block-table {
	position: static;
	width: auto;
	height: auto;
	margin: 0;
	overflow: visible;
	clip: auto;
	white-space: normal;
}
.editor-styles-wrapper .priovant-chart__canvas { display: none; }

/* ============================================================================
   TABS — "Tabbed Section Navigation" (Make §02). Progressive enhancement: the
   static save() stacks each panel with a label (.priovant-tabs__panel-label) so
   the content is reachable with no JS; assets/tabs-view.js builds the strip +
   dropdown and adds .is-enhanced. Desktop = a tint band → centered white card of
   tab buttons (active = 700 #333 + 3px gold underline); mobile (≤1023) = a
   dropdown (trigger + menu, active = gold left border).
   ============================================================================ */

/* No-JS / pre-enhancement fallback: panels stacked, each labeled. */
:root :where(.priovant-tabs__panel-label) {
	margin: 0 0 16px;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: -0.014em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-tabs.is-enhanced .priovant-tabs__panel-label) { display: none; }
/* Editor note (edit() only; never in save()). */
:root :where(.priovant-tabs__editnote) {
	margin: 0 0 16px;
	font-size: 13px;
	font-style: italic;
	color: var(--wp--preset--color--lisraya-gray-mid);
}

/* Tab strip band + centered white card (desktop). */
:root :where(.priovant-tabs__bar) {
	background-color: var(--wp--preset--color--lisraya-tint);
	padding: 24px;
	display: flex;
	justify-content: center;
}
:root :where(.priovant-tabs__card) {
	display: flex;
	max-width: 100%;
	overflow-x: auto;
	background-color: var(--wp--preset--color--base);
	box-shadow: 0 2px 15px rgba(0, 82, 155, 0.1);
	border-radius: var(--priovant-radius-subtle);
}
:root :where(.priovant-tabs__tab) {
	flex-shrink: 0;
	height: 56px;
	padding: 0 28px;
	display: inline-flex;
	align-items: center;
	background: none;
	border: 0;
	border-bottom: 3px solid transparent;
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: -0.014em;
	color: var(--wp--preset--color--lisraya-blue);
	white-space: nowrap;
	cursor: pointer;
	transition: color 0.15s, border-color 0.15s;
}
:root :where(.priovant-tabs__tab:hover) { color: var(--wp--preset--color--lisraya-isi-border); }
:root :where(.priovant-tabs__tab.is-active) {
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-text);
	border-bottom-color: var(--wp--preset--color--lisraya-yellow);
}
:root :where(.priovant-tabs__tab:focus-visible) {
	outline: 2px solid var(--wp--preset--color--lisraya-blue);
	outline-offset: -2px;
}

/* Panels — white content area; only the active panel shows once enhanced. */
:root :where(.priovant-tabs__panels) { background-color: var(--wp--preset--color--base); }
:root :where(.priovant-tabs__panel[hidden]) { display: none; }

/* Mobile dropdown — built always, shown only ≤1023. */
:root :where(.priovant-tabs__dropdown) { display: none; }
@media (max-width: 1023px) {
	:root :where(.priovant-tabs.is-enhanced .priovant-tabs__card) { display: none; }
	:root :where(.priovant-tabs__bar) { padding: 20px 24px; }
	:root :where(.priovant-tabs__dropdown) {
		display: block;
		position: relative;
		width: 100%;
		max-width: 327px;
		background-color: var(--wp--preset--color--base);
		box-shadow: 0 2px 15px rgba(0, 82, 155, 0.1);
		border-radius: var(--priovant-radius-subtle);
	}
	:root :where(.priovant-tabs__trigger) {
		width: 100%;
		height: 52px;
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0 20px;
		background: none;
		border: 0;
		font-family: inherit;
		font-size: 14px;
		font-weight: 700;
		letter-spacing: -0.014em;
		color: var(--wp--preset--color--lisraya-text);
		cursor: pointer;
	}
	:root :where(.priovant-tabs__trigger[aria-expanded="true"]) {
		border-bottom: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	}
	:root :where(.priovant-tabs__chevron) {
		flex-shrink: 0;
		color: var(--wp--preset--color--lisraya-blue);
		transition: transform 0.15s;
	}
	:root :where(.priovant-tabs__trigger[aria-expanded="true"] .priovant-tabs__chevron) { transform: rotate(180deg); }
	:root :where(.priovant-tabs__menu) { background-color: var(--wp--preset--color--base); }
	:root :where(.priovant-tabs__menu-item) {
		width: 100%;
		height: 48px;
		display: flex;
		align-items: center;
		padding: 0 20px;
		background: none;
		border: 0;
		border-left: 3px solid transparent;
		border-bottom: 1px solid var(--wp--preset--color--lisraya-rule-gray);
		font-family: inherit;
		font-size: 14px;
		font-weight: 600;
		letter-spacing: -0.014em;
		color: var(--wp--preset--color--lisraya-blue);
		text-align: left;
		cursor: pointer;
	}
	:root :where(.priovant-tabs__menu-item:last-child) { border-bottom: 0; }
	:root :where(.priovant-tabs__menu-item:hover) {
		background-color: var(--wp--preset--color--lisraya-tint);
		color: var(--wp--preset--color--lisraya-isi-border);
	}
	:root :where(.priovant-tabs__menu-item.is-active) {
		background-color: var(--wp--preset--color--lisraya-tint);
		border-left-color: var(--wp--preset--color--lisraya-yellow);
		font-weight: 700;
		color: var(--wp--preset--color--lisraya-text);
	}
}

/* ============================================================================
   DATA TABLE — reusable, data-driven table (Make Site-Components-Library
   `DataTable` / `DataTableMobile` / `InteractiveDataTableMobile`). Title + intro
   + a semantic <table> + footnote. Header in Mid-Blue on a 2px navy underline;
   one highlight row (Light Blue); indented "sub" rows; 700 row-label / 200 data
   weight; 0.5px gray cell rules. Responsive: smaller type/padding ≤1023; the
   wrapper scrolls horizontally if the table outgrows its column. `--sticky` =
   the interactive variant (bounded scroll region + sticky header + sticky first
   column / frozen panes). Global — reusable on any page.
   ========================================================================== */
:root :where(.priovant-datatable) { width: 100%; }
:root :where(.priovant-datatable__title) {
	margin: 0 0 8px;
	font-size: 20px;
	font-weight: 400;
	line-height: 1.3;
	color: var(--wp--preset--color--lisraya-blue);
}
/* Editable data-table SECTION title (the data-table page renderer): an editable
   core heading whose TAG is chosen for the document outline (default H2, no skip)
   while the VISUAL stays the 28px data-table title size on any level — the heading
   rule (tag = outline, class = size). Brand Blue, matches the global H3 metrics. */
:root :where(.priovant-datatable__heading) {
	margin: 0 0 16px;
	font-size: 28px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}

/* ============================================================================
   PHASE-3 STANDALONE BLOCK SECTIONS (efficacy) — a chart / accordion / tabs dropped
   in as its own full-bleed section. Shared wrapper `.priovant-blocksection` (80/40
   vertical rhythm + 62px body gutter via the bleed token, capping content at wideSize)
   so ONE de-double + ONE gutter-check registration cover all three; `--<mod>` scopes
   per-component tweaks. All rules here are either the new wrapper class or efficacy-
   scoped, so existing pages stay VR-identical.
   ============================================================================ */
:root :where(.priovant-blocksection) {
	padding-block: 80px;
	padding-inline: calc( var( --priovant-bleed-gutter ) + var( --priovant-gutter-body ) );
}
@media (max-width: 1023px) {
	:root :where(.priovant-blocksection) { padding-block: 40px; padding-inline: 24px; }
}

/* Standalone full-width charts (efficacy `chart` sections) read too wide on large desktops —
   the designer caps them at 80% of the 1280 content cap, centered. DESKTOP ONLY; mobile keeps
   the full 24px-gutter width. Narrows the CHILD .priovant-chartblock (title + canvas + footnote
   travel together) rather than the section, so the section's own 62px body gutter — and thus
   gutter-check's `body`/blocksection measurement — is untouched; the extra room folds into the
   centering margin. Scoped to `--chart`, so the 70/30-embedded (#01) + tabbed (#07) charts keep
   their own layout. 0.8 is the designer's tested value → tweak here if it moves. */
@media (min-width: 1024px) {
	:root :where(.priovant-blocksection--chart .priovant-chartblock) {
		max-width: calc( 0.8 * var( --wp--style--global--wide-size ) );
		margin-inline: auto;
	}
}

/* Accordion "closer look" panels: the body already insets 40/80/56 (.priovant-accordion__body);
   these style its nested copy + the 3-up definition grid. Source-ordered AFTER
   `.priovant-accordion__body p {margin:0}` so the body-copy margins win; they match only the
   `.priovant-content-block__*` classes the accordion SECTION emits (the styleguide specimen
   uses a bare <p>, so it's untouched). */
:root :where(.priovant-accordion__body .priovant-content-block__text) { max-width: 720px; margin: 0 0 24px; }
:root :where(.priovant-accordion__body .priovant-content-block__text:last-child) { margin-bottom: 0; }
:root :where(.priovant-accordion__body .priovant-content-block__bullets) { margin: 0 0 24px; }
:root :where(.priovant-accordion__body .priovant-content-block__bullets:last-child) { margin-bottom: 0; }
:root :where(.priovant-accordion__defs) {
	display: grid;
	grid-template-columns: repeat( 3, 1fr );
	gap: 32px;
	margin: 8px 0 0;
}
:root :where(.priovant-accordion__def .priovant-content-block__heading) {
	margin: 0 0 16px;
	font-size: 22px;
	line-height: 1.3;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
@media (max-width: 1023px) {
	:root :where(.priovant-accordion__defs) { grid-template-columns: 1fr; gap: 28px; }
}

/* Tabs (efficacy): panel vertical breathing (scoped to the block-section so the styleguide
   tabs specimen is untouched) + the before/after image row (new classes → no VR impact). */
:root :where(.priovant-blocksection--tabs .priovant-tabs__panel) { padding: 32px 0; }
:root :where(.priovant-tabs__imgrow) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 32px;
}
:root :where(.priovant-tabs__img img) {
	width: 100%;
	height: auto;
	border-radius: var(--priovant-radius-subtle);
}
:root :where(.priovant-tabs__imgtitle) {
	margin: 16px 0 8px;
	font-size: 16px;
	line-height: 1.3;
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-tabs__imgcap) {
	margin: 0;
	font-size: 14px;
	line-height: 1.5;
	color: var(--wp--preset--color--lisraya-text);
}
@media (max-width: 1023px) {
	:root :where(.priovant-tabs__imgrow) { grid-template-columns: 1fr; gap: 24px; }
}

/* ── Stacked-section rhythm — GENERAL de-double ──────────────────────────────
   Full-bleed "section-pad" members carry their OWN top+bottom section padding
   (80/64/48px), so when two abut they DOUBLE into one oversized gap (e.g. data table
   pb80 + content block pt64 = 144). FIX: when one section-pad member immediately
   follows another, the lower drops its TOP padding — the upper's bottom padding owns
   a single-rhythm gap. Adjacency-based (the `+` combinator) so it re-evaluates on the
   ACTUAL block order — it just works when editors insert/reorder sections in wp-admin
   post-launch (no per-page patches). Placed after the section rules so source order
   wins at equal specificity; also overrides the ≤1023 mobile padding (→ 40px rhythm).
   EXCLUDES .priovant-statistics: its --bg-blue variant tints the SECTION background, so
   zeroing its top would crush its internal breathing (and it's normally embedded, not a
   standalone section). Tinted-background sections delineate themselves; they don't double.
   INCLUDES the patient testimonial variants (`--standard/--5050/--featured/--flipped`, added
   2026-07-20) so stacked stories (Patient Stories) collapse to ONE 80px gap (they were doubling
   to 160); the base `.priovant-testimonial` (homepage expert default) is omitted — it never
   stack-doubles. SCOPED to `main:not(.priovant-styleguide)` (real content pages — also where
   editors add sections post-launch) so it does NOT collapse the internal component-library,
   which shows each specimen in isolation. EXCLUDES `.priovant-moa-page` (the /moa page): its
   white cytokine table → tinted Featured Video → tinted CTA run must keep FULL per-section
   padding — collapsing crammed the video heading against its band top AND merged the two
   consecutive tinted bands. This is the designer's blue-on-blue exception (2026-07-28). */
:root main:not(.priovant-styleguide):not(.priovant-moa-page) :where(
	.priovant-section, .priovant-content-block, .priovant-5050, .priovant-7030,
	.priovant-3070, .priovant-imgblock, .priovant-content-columns, .priovant-cta-speedbump, .priovant-highlight, .priovant-blocksection,
	.priovant-testimonial--standard, .priovant-testimonial--5050, .priovant-testimonial--featured, .priovant-testimonial--flipped
) + :where(
	.priovant-section, .priovant-content-block, .priovant-5050, .priovant-7030,
	.priovant-3070, .priovant-imgblock, .priovant-content-columns, .priovant-cta-speedbump, .priovant-highlight, .priovant-blocksection,
	.priovant-testimonial--standard, .priovant-testimonial--5050, .priovant-testimonial--featured, .priovant-testimonial--flipped
) {
	padding-top: 0;
}
/* /moa blue-on-blue exception: the CTA speedbump follows the tinted Featured Video band. The
   speedbump SECTION is white with a tinted CARD but has NO top padding of its own (it normally
   borrows the gap from a preceding WHITE section). After a tinted band that leaves the two tinted
   blocks touching with no separation — so give it the default top padding here: since the section
   bg is white, that padding renders as the standard WHITE separating strip between the two bands. */
:root main.priovant-moa-page :where(.priovant-content-block--featured) + .priovant-cta-speedbump {
	padding-top: 80px;
}
@media (max-width: 1023px) {
	:root main.priovant-moa-page :where(.priovant-content-block--featured) + .priovant-cta-speedbump {
		padding-top: 40px;
	}
}
/* The in-page ISI is a separate template part after <main>, so the adjacency rule can't
   reach it — when a page ENDS in a SELF-SPACING section that section already provides the
   gap, so zero the ISI's own 80px top margin (+ the part wrapper's block-gap) to avoid
   80+80=160. THREE terminators qualify, each self-spacing (bottom padding ~80 / a rule): a
   padded cta-speedbump (pb 80), a footnotes references strip (own bottom padding + 1px rule),
   and the Resources grid (pb 80 — Support now closes on Resources after its page-wide
   footnotes were removed 2026-07-23). The footnotes strip is the homepage's footnotes→ISI
   treatment, shared by any page closing with references. The :not(--attached) guard excludes
   the section-level Terms & Conditions footnotes (Support's mid-page T&C — a different,
   standard-flow variant under separate designer review) so a future page ending in an attached
   T&C wouldn't get this tight treatment. :has(…:last-child) auto-targets every case (LP/derma
   close with the speedbump; homepage/safety close with references; support closes with
   Resources); the per-page homepage/enrollment rules above stay as explicit backups. */
:root :where(main:has(.priovant-cta-speedbump:last-child, .priovant-footnotes:not(.priovant-footnotes--attached):last-child, .priovant-support-resources:last-child)) + .wp-block-template-part,
:root :where(main:has(.priovant-cta-speedbump:last-child, .priovant-footnotes:not(.priovant-footnotes--attached):last-child, .priovant-support-resources:last-child)) + .wp-block-template-part .priovant-isi {
	margin-block-start: 0;
}
:root :where(.priovant-datatable__intro) {
	max-width: 720px;
	margin: 0 0 20px;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.6;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-datatable__scroll) { width: 100%; overflow-x: auto; }
:root :where(.priovant-datatable__table) {
	width: 100%;
	border-collapse: collapse;
}
:root :where(.priovant-datatable__th) {
	background-color: var(--wp--preset--color--base);
	/* Primary Navy (designer call 2026-06-15) — Make's Mid Blue #358ccb on white is
	   ~3.67:1 and fails WCAG AA for this 16px header text; Navy #152b61 is ~12.6:1
	   and matches the header's navy underline. (Replaces the earlier Brand-Blue swap.) */
	color: var(--wp--preset--color--lisraya-isi-border);
	font-size: 16px;
	font-weight: 400;
	padding: 10px 20px;
	text-align: center;
	white-space: nowrap;
	border-bottom: 2px solid var(--wp--preset--color--lisraya-isi-border);
}
:root :where(.priovant-datatable__th--label) { text-align: left; }
:root :where(.priovant-datatable__rowhead) {
	background-color: var(--wp--preset--color--base);
	padding: 12px 20px;
	font-size: 16px;
	font-weight: 700;
	text-align: left;
	white-space: nowrap;
	color: var(--wp--preset--color--lisraya-text);
	border-bottom: 0.5px solid var(--wp--preset--color--lisraya-gray-mid);
}
:root :where(.priovant-datatable__cell) {
	background-color: var(--wp--preset--color--base);
	padding: 12px 20px;
	font-size: 16px;
	font-weight: 200;
	text-align: center;
	color: var(--wp--preset--color--lisraya-text);
	border-bottom: 0.5px solid var(--wp--preset--color--lisraya-gray-mid);
}
/* Highlight row — Light Blue fill across head + cells. */
:root :where(.priovant-datatable__row.is-highlight .priovant-datatable__rowhead),
:root :where(.priovant-datatable__row.is-highlight .priovant-datatable__cell) {
	background-color: var(--wp--preset--color--lisraya-utility-bg);
}
/* Sub-rows — indented label, light weight. */
:root :where(.priovant-datatable__row.is-sub .priovant-datatable__rowhead) {
	padding-left: 28px;
	font-weight: 200;
}
:root :where(.priovant-datatable__note) {
	margin: 12px 0 0;
	font-size: 12px;
	line-height: 1.5;
	color: var(--wp--preset--color--lisraya-gray-mid);
}
/* Interactive (sticky) variant — frozen header row + first column. */
:root :where(.priovant-datatable--sticky .priovant-datatable__scroll) {
	max-height: 400px;
	overflow: auto;
}
:root :where(.priovant-datatable--sticky .priovant-datatable__th) {
	position: sticky;
	top: 0;
	z-index: 2;
	font-size: 11px;
	padding: 8px 10px;
	white-space: pre-line;   /* the <br>-split (n=…) headers wrap */
	min-width: 88px;
}
:root :where(.priovant-datatable--sticky .priovant-datatable__th--label) {
	left: 0;
	z-index: 3;
	min-width: 140px;
	box-shadow: 2px 0 4px rgba(0, 0, 0, 0.08);
}
:root :where(.priovant-datatable--sticky .priovant-datatable__rowhead) {
	position: sticky;
	left: 0;
	z-index: 1;
	min-width: 140px;
	font-size: 11px;
	padding: 8px 10px;
	box-shadow: 2px 0 4px rgba(0, 0, 0, 0.08);
}
:root :where(.priovant-datatable--sticky .priovant-datatable__row.is-sub .priovant-datatable__rowhead) { padding-left: 20px; }
:root :where(.priovant-datatable--sticky .priovant-datatable__cell) {
	font-size: 11px;
	padding: 8px 10px;
	min-width: 88px;
}
/* Mobile: scale the standard table down (Make DataTableMobile). */
@media (max-width: 1023px) {
	:root :where(.priovant-datatable__title) { font-size: 18px; }
	:root :where(.priovant-datatable__intro) { font-size: 14px; margin-bottom: 16px; }
	:root :where(.priovant-datatable:not(.priovant-datatable--sticky) .priovant-datatable__th) { font-size: 13px; padding: 8px 12px; }
	:root :where(.priovant-datatable:not(.priovant-datatable--sticky) .priovant-datatable__rowhead),
	:root :where(.priovant-datatable:not(.priovant-datatable--sticky) .priovant-datatable__cell) { font-size: 13px; padding: 9px 12px; }
	:root :where(.priovant-datatable:not(.priovant-datatable--sticky) .priovant-datatable__row.is-sub .priovant-datatable__rowhead) { padding-left: 20px; }
	:root :where(.priovant-datatable__note) { font-size: 11px; }
}

/* ============================================================================
   MoA CYTOKINE TABLE — the mechanism-of-action signaling matrix (priovant/moa-table,
   render.php). A static, one-off brochure figure: 4 cytokine columns (name + gray
   subhead) over a graphic row of signaling-pathway tiles (assets/moa/pathway-*.svg,
   butted so the membrane reads continuously), then color-coded circle-check rows.
   The kinase palette (mauve TYK2 · lavender JAK1 · navy covered + the tint/greys) is
   SCOPED to `.priovant-moatable` per the designer — it never enters the global palette.
   Frozen first column + horizontal scroll on narrow (keyboard-scrollable figure).
   ============================================================================ */
:root :where(.priovant-visually-hidden) {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
:root :where(.priovant-moatable-block) {
	padding-block: 80px;
}
:root :where(.priovant-moatable__inner) {
	box-sizing: border-box;
	max-width: 1056px;   /* Make "full width — 1056 centered"; the figure sits centered in the 1280 cap */
	margin-inline: auto;
	padding-inline: 24px;
}
/* Table title — moved into the top-left corner cell (left/top-aligned via the header-corner rule
   below), rendered at the H3 role treatment (28/400 Brand Blue) per team review 2026-07-29. The
   TAG is an <h2> (first section heading after the hero H1 → clean outline, no level skip); the
   size lives here, decoupled from the tag per the theme's heading convention. */
:root :where(.priovant-moatable__cornertitle) {
	margin: 0;
	font-size: 28px;
	line-height: 1.2;
	font-weight: 400;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-moatable__scroll) {
	margin: 0;
	/* Horizontal scroll box with a frozen first column (the min-width table below overflows on
	   narrow widths). The VERTICAL scroll + frozen header row is now MOBILE-ONLY — `max-height`
	   lives in the ≤767px media query below, so desktop + tablet render the table at its FULL
	   height with NO nested vertical scroll. The viewport-relative cap otherwise tripped a tiny
	   "little scroll" on short small-laptop screens (table taller than 85vh); dropped there per
	   the client (2026-07-30). */
	overflow: auto;
	-webkit-overflow-scrolling: touch;
	/* `contain: paint` isolates the min-width table's layout overflow to THIS scroll box.
	   Without it, Chromium leaks the wide table's width into the PAGE scroll width on narrow
	   screens (a table-in-overflow quirk that plain overflow/clip on ancestors can't fix) — which
	   showed as blank space to the right in full-page captures. Doesn't affect the in-figure
	   scroll or the frozen row/column position:sticky. */
	contain: paint;
}
/* Vertical scroll (with the frozen header row) is MOBILE-ONLY — phones cap the box at 85vh and
   scroll inside it; tablet + desktop show the full table height (no nested vertical scroll). */
@media (max-width: 767px) {
	:root :where(.priovant-moatable__scroll) {
		max-height: 85vh;
	}
}
:root :where(.priovant-moatable) {
	/* scoped kinase palette — DO NOT promote to the global palette */
	--moatable-tyk2: #deb0d2;
	--moatable-jak1: #bbb8dc;
	--moatable-covered: var(--wp--preset--color--lisraya-blue);
	--moatable-highlight: #ecf4fc;
	--moatable-sub: #58595b;
	--moatable-rule: #d1d3d4;
	width: 100%;
	min-width: 780px;   /* forces the horizontal scroll on narrow */
	border-collapse: collapse;
	table-layout: fixed;
}
/* table-layout:fixed → the FIRST row's cell widths set the columns (label 18% · 4 × 20.5%). */
:root :where(.priovant-moatable__corner) { width: 21%; }
:root :where(.priovant-moatable__colhead) { width: 19.75%; }
/* Header: cytokine name (blue) + optional gray subhead; navy rule under the whole row.
   Also the FROZEN TOP ROW — sticky-top within the scroll box so on short screens (where the
   table scrolls vertically inside its max-height) the cytokine headers stay visible. Opaque
   bg so scrolled rows don't bleed through; z-index above the body but below the corner. */
:root :where(.priovant-moatable thead th),
:root :where(.priovant-moatable thead td) {
	position: sticky;
	top: 0;
	z-index: 2;
	background: var(--wp--preset--color--base);
	border-bottom: 2px solid var(--moatable-covered);
}
:root :where(.priovant-moatable__colhead) {
	vertical-align: top;
	text-align: center;
	padding: 0 12px 20px;
}
:root :where(.priovant-moatable__colname) {
	display: block;
	margin-bottom: 8px;
	font-size: 20px;
	line-height: 1.2;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--lisraya-blue);
}
:root :where(.priovant-moatable__colsub) {
	display: block;
	font-size: 14px;
	line-height: 1.4;
	font-weight: 400;
	color: var(--moatable-sub);
}
/* Graphic row: tiles fill the column edge-to-edge (no side padding) so adjacent
   membranes connect into one continuous bilayer. */
:root :where(.priovant-moatable__gcell) {
	padding: 32px 0 28px;   /* breathing room above/below the pathway tiles (matches the reference) */
	vertical-align: bottom;
}
:root :where(.priovant-moatable__pathway) {
	display: block;
	width: 100%;
	height: auto;
}
/* Check rows: gray rule above each; colored circle-check by row tone; sr-only "Yes". */
:root :where(.priovant-moatable__row) > * {
	border-top: 1px solid var(--moatable-rule);
}
:root :where(.priovant-moatable__rowlabel) {
	text-align: left;
	vertical-align: middle;
	padding: 14px 20px 14px 16px;   /* indent labels from the left edge (Make styling) */
	font-size: 16px;
	line-height: 1.35;
	font-weight: 400;
	color: var(--wp--preset--color--lisraya-text);
}
:root :where(.priovant-moatable__cell) {
	text-align: center;
	vertical-align: middle;
	padding: 14px 8px;
}
:root :where(.priovant-moatable__check) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--moatable-jak1);
}
:root :where(.priovant-moatable__check)::before {
	content: "";
	width: 12px;
	height: 6px;
	border-left: 2.5px solid var(--wp--preset--color--base);
	border-bottom: 2.5px solid var(--wp--preset--color--base);
	transform: translateY(-1px) rotate(-45deg);
}
:root :where(.priovant-moatable__row--tyk2 .priovant-moatable__check) { background: var(--moatable-tyk2); }
:root :where(.priovant-moatable__row--jak1 .priovant-moatable__check) { background: var(--moatable-jak1); }
:root :where(.priovant-moatable__row--covered .priovant-moatable__check) { background: var(--moatable-covered); }
/* "Covered by LISRAYA" = the highlight row (pale-blue band + bold blue label). */
:root :where(.priovant-moatable__row--highlight) > * {
	background: var(--moatable-highlight);
}
:root :where(.priovant-moatable__row--highlight .priovant-moatable__rowlabel) {
	font-weight: 700;
	color: var(--wp--preset--color--lisraya-blue);
}
/* Frozen first column on horizontal scroll — sticky-left, opaque so scrolled cells
   don't bleed through; the highlight row's label keeps the band colour. */
:root :where(.priovant-moatable__corner),
:root :where(.priovant-moatable__rowlabel) {
	position: sticky;
	left: 0;
	z-index: 1;
	background: var(--wp--preset--color--base);
}
/* 2px Border-Gray divider on the frozen column's RIGHT edge — a scroll AFFORDANCE that shows
   ONLY while the table is scrolled horizontally (moatable-view.js toggles `.is-scrolled-x` on
   scrollLeft>0). So it never shows on desktop (the table fits → never scrolls) and appears on
   mobile only once the reader scrolls — out of a scroll context a static rule read as arbitrary.
   Drawn as an absolutely-positioned ::after bar, NOT a border or box-shadow: under
   border-collapse:collapse a cell border paints at table level + scrolls away, and Chromium
   doesn't paint box-shadow on collapsed-border cells. The sticky cell is the ::after's
   containing block, so the bar stays pinned to the column edge during scroll. */
:root :where(.priovant-moatable__corner)::after,
:root :where(.priovant-moatable__rowlabel)::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	right: 0;
	width: 2px;
	background: var(--wp--preset--color--lisraya-rule-gray);
	opacity: 0;
	transition: opacity 0.15s ease;
}
:root :where(.priovant-moatable__scroll.is-scrolled-x .priovant-moatable__corner)::after,
:root :where(.priovant-moatable__scroll.is-scrolled-x .priovant-moatable__rowlabel)::after {
	opacity: 1;
}
:root :where(.priovant-moatable__row--highlight .priovant-moatable__rowlabel) {
	background: var(--moatable-highlight);
}
/* Top-left corner is frozen on BOTH axes (sticky top + left). Stack it ABOVE both the header
   row (z2) and the first column (z1) so scrolling column headers slide BEHIND it — hidden to
   the left of the divider, like the data cells. Placed after the frozen-column rule so this
   z-index wins the source-order tie (all these rules are equal :where() specificity). */
:root :where(.priovant-moatable thead .priovant-moatable__corner) {
	z-index: 3;
	/* Top-align the title with the cytokine column names (same row) and left-indent it to the
	   row-label column's edge (16px), with the header's 20px bottom padding. */
	vertical-align: top;
	text-align: left;
	padding: 0 12px 20px 16px;
}
@media (max-width: 1023px) {
	:root :where(.priovant-moatable-block) {
		padding-block: 40px;
	}
}

/* Styleguide-only: a ~390px "phone" frame to demo mobile/interactive components
   (e.g. the sticky data table) at a realistic narrow width. Scoped demo chrome. */
:root :where(.priovant-sg-mobileframe) {
	max-width: 390px;
	border: 1px solid var(--wp--preset--color--lisraya-rule-gray);
	border-radius: var(--priovant-radius-subtle);
	overflow: hidden;
}

/* ============================================================================
   EDITABLE DATA TABLE — the core Table block (`core/table`) wearing the
   data-table look, so editors can edit cells + add/remove rows & columns in
   wp-admin (block style `is-style-priovant-datatable`, registered in
   functions.php). Per-row emphasis is editor-native (the block can't set a row
   class), read via CSS :has() on inline formats applied to the FIRST cell:
     • default row   → main: bold label (auto), normal indent
     • italic 1st cell (<em>, Cmd+I)        → sub-row: light + indented
     • Highlight 1st cell (<mark>, toolbar) → highlighted row band
   Mirrors the renderer's .priovant-datatable look. (Sticky/interactive +
   designed highlight/sub tables still use the renderer; this is the editable
   path.) :has() is widely supported (2023+); older browsers fall back to a
   flat, readable table.
   NOTE: these intentionally do NOT use the `:root :where()` low-specificity
   wrapper — they must beat core/table's own default cell rules
   (`.wp-block-table td/th`, ~0,1,1: a 1px border + 0.5em padding), so the
   selectors carry real specificity (the .is-style- class + element).
   ========================================================================== */
/* Horizontal frozen-pane scroll region: the FIGURE is the scroll container, so a wide
   table scrolls horizontally with the first column (row labels) frozen — responsive by
   nature (the scroll only engages when the table overflows its width; narrow tables show
   fully). Sticky cells need solid backgrounds + z-index layering (corner > header/column
   > body). Ports the renderer's `.priovant-datatable--sticky` technique onto the editable
   core/table block. NOTE: intentionally NO max-height — a tall clinical table renders in
   full on the page rather than scrolling inside a fixed-height box (designer call). The
   sticky-top header rule below stays harmless (nothing to scroll vertically), so it keeps
   working automatically if a max-height is ever reintroduced for a very long table. */
.wp-block-table.is-style-priovant-datatable {
	width: 100%;
	margin: 0;
	overflow: auto;
}
.wp-block-table.is-style-priovant-datatable table {
	width: 100%;
	/* separate (not collapse) so position:sticky cells keep their borders + opaque
	   backgrounds while scrolling; border-spacing:0 preserves the collapsed look. */
	border-collapse: separate;
	border-spacing: 0;
}
.wp-block-table.is-style-priovant-datatable thead th {
	position: sticky;
	top: 0;
	z-index: 2;
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--lisraya-isi-border);   /* Primary Navy (designer call); ~12.6:1 AA-safe */
	font-size: 16px;
	font-weight: 400;
	padding: 10px 20px;
	text-align: center;
	white-space: nowrap;
	border: none;
	border-bottom: 2px solid var(--wp--preset--color--lisraya-isi-border);
	/* top-align so a column WITH a subhead (two lines) and one without (the label
	   column) share the same top edge — Make DataTableCheck. No-op for single-line. */
	vertical-align: top;
}
/* Optional column subhead — a smaller gray second line under a column heading
   (Make DataTableCheck "VALOR Trial, n=284"). Editor-facing content, so it ships
   as a real <span> inside the editable header cell (not decoration). */
.wp-block-table.is-style-priovant-datatable thead th .priovant-datatable__subhead {
	display: block;
	margin-top: 2px;
	font-size: 12px;
	font-weight: 400;
	color: var(--wp--preset--color--lisraya-gray-mid);   /* #767676 */
	white-space: nowrap;
}
/* First column header = the frozen corner: stick on BOTH axes, above everything.
   (No frozen-column drop shadow — the label column reads flush with the others,
   per review 2026-07-13.) */
.wp-block-table.is-style-priovant-datatable thead th:first-child {
	text-align: left;
	left: 0;
	z-index: 3;
}
.wp-block-table.is-style-priovant-datatable tbody td {
	background-color: var(--wp--preset--color--base);
	padding: 12px 20px;
	font-size: 16px;
	font-weight: 200;
	text-align: center;
	color: var(--wp--preset--color--lisraya-text);
	border: none;
	border-bottom: 0.5px solid var(--wp--preset--color--lisraya-gray-mid);
}
/* First column = row label: bold (main row) + left-aligned, and FROZEN on
   horizontal scroll (sticky-left, opaque bg so scrolling cells pass under it). */
.wp-block-table.is-style-priovant-datatable tbody td:first-child {
	text-align: left;
	font-weight: 700;
	/* Desktop: labels WRAP so a long clinical label doesn't force the table wider
	   than its column and trip a needless scrollbar (auto-layout only wraps when
	   actually squeezed). Mobile re-adds nowrap below, where the frozen horizontal
	   scroll is the intended pattern. */
	white-space: normal;
	position: sticky;
	left: 0;
	z-index: 1;
}
/* Min column widths so a multi-column table stays legible and SCROLLS on narrow
   screens (instead of crushing columns) — this is what engages the frozen header
   + first-column panes on mobile. On desktop the width:100% table fills past these
   floors, so they have no effect there. */
.wp-block-table.is-style-priovant-datatable thead th,
.wp-block-table.is-style-priovant-datatable tbody td { min-width: 120px; }
.wp-block-table.is-style-priovant-datatable thead th:first-child,
.wp-block-table.is-style-priovant-datatable tbody td:first-child { min-width: 160px; }
/* 70/30 table embed (Safety AE table): keep this morning's AUTO-layout everywhere, and target
   ONLY the 1024–1279 band — below the 1280 container cap the 70% column is narrower, so the long
   "Lisraya 30 mg (n=81) %" headers (nowrap) hold the data columns wide and squeeze a long label
   ("AEs leading to treatment discontinuation") to 3 lines. Letting the headers WRAP there shrinks
   the data columns toward their content, reclaims that whitespace, and hands it to the label
   column → a tidy 2-line label (designer 2026-07-22). Bounded at 1279 so at the cap (1280+) the
   table stays exactly as before — full width, one-line headers, one-line label. Auto-layout kept
   (no fixed width). Mobile (≤1023) has its own fit-to-viewport rule further below. */
@media (min-width: 1024px) and (max-width: 1279px) {
	.priovant-7030 .wp-block-table.is-style-priovant-datatable thead th { white-space: normal; }
}
/* Sub-row marker = italic first cell (Cmd+I) → light + indented; the italic
   itself is suppressed (it's only the editor's "this is a sub-row" gesture). */
.wp-block-table.is-style-priovant-datatable tbody tr:has(td:first-child em) td {
	font-weight: 200;
}
.wp-block-table.is-style-priovant-datatable tbody tr:has(td:first-child em) td:first-child {
	padding-left: 28px;
}
.wp-block-table.is-style-priovant-datatable tbody td:first-child em {
	font-style: normal;
	font-weight: 200;
}
/* Second sub level (nested sub, e.g. Infection SAEs under Serious AEs) — marker = the
   Strikethrough format (<s>) on the first cell, with the strikethrough suppressed. Same
   light weight as a level-1 sub, indented one more step (group 20 → sub 28 → sub2 40px). */
.wp-block-table.is-style-priovant-datatable tbody tr:has(td:first-child s) td {
	font-weight: 200;
}
.wp-block-table.is-style-priovant-datatable tbody tr:has(td:first-child s) td:first-child {
	padding-left: 40px;
}
.wp-block-table.is-style-priovant-datatable tbody td:first-child s {
	text-decoration: none;
	font-weight: 200;
}
/* Highlight-row marker = Highlight format (<mark>) on the first cell → full-row
   band. Neutralize the mark's own inline color (the editor's pick is ignored). */
.wp-block-table.is-style-priovant-datatable tbody tr:has(td:first-child mark) td {
	background-color: var(--wp--preset--color--lisraya-utility-bg);
}
.wp-block-table.is-style-priovant-datatable mark {
	background-color: transparent !important;
	color: inherit !important;
}
/* Mobile: scale down (matches the renderer's responsive table). */
@media (max-width: 1023px) {
	.wp-block-table.is-style-priovant-datatable thead th { font-size: 13px; padding: 8px 12px; }
	.wp-block-table.is-style-priovant-datatable thead th .priovant-datatable__subhead { font-size: 11px; }
	.wp-block-table.is-style-priovant-datatable tbody td { font-size: 13px; padding: 9px 12px; }
	/* Mobile responsive strategy — AUTOMATIC by column count, mirroring Make's TWO mobile tables
	   (see docs/component-library.md #02):
	     • ≤4 columns → WRAP-TO-FIT the viewport (Make `DataTableMobile`): release the min-width
	       floors + wrap the headers (first-column labels already wrap from the desktop rule), so
	       the whole table reads with NO horizontal swipe. The `glueTrailingToken()` renderer rule
	       keeps a trailing "%" from orphaning as those headers wrap.
	     • ≥5 columns → keep the FROZEN-PANE horizontal scroll (Make `InteractiveDataTableMobile`):
	       the base min-width floors force the overflow + the sticky first column engages, labels
	       stay one-line. Detected via :has(thead th:nth-child(5)).
	   No per-table work — a table gets the right behavior from its column count alone. Was
	   previously frozen-scroll for ALL tables (the divergence traced 2026-07-22: we'd applied the
	   Interactive pattern universally; Make actually wraps narrow tables). */
	.wp-block-table.is-style-priovant-datatable:not(:has(thead th:nth-child(5))) thead th,
	.wp-block-table.is-style-priovant-datatable:not(:has(thead th:nth-child(5))) tbody td { min-width: 0; }
	.wp-block-table.is-style-priovant-datatable:not(:has(thead th:nth-child(5))) thead th { white-space: normal; }
	.wp-block-table.is-style-priovant-datatable:has(thead th:nth-child(5)) tbody td:first-child { white-space: nowrap; }
	.wp-block-table.is-style-priovant-datatable tbody tr:has(td:first-child em) td:first-child { padding-left: 20px; }
	/* Safety AE table (70/30 embed): only 3 short columns, so on a phone WRAP the label column
	   and fit the table to the viewport (table-layout:fixed + min-widths released) — the whole
	   table reads without a horizontal swipe (designer 2026-07-22). Scoped to .priovant-7030 so
	   the wide tables above keep their frozen scroll; higher specificity overrides the nowrap +
	   min-width defaults. */
	.priovant-7030 .wp-block-table.is-style-priovant-datatable table { table-layout: fixed; }
	.priovant-7030 .wp-block-table.is-style-priovant-datatable thead th,
	.priovant-7030 .wp-block-table.is-style-priovant-datatable tbody td { min-width: 0; }
	.priovant-7030 .wp-block-table.is-style-priovant-datatable thead th,
	.priovant-7030 .wp-block-table.is-style-priovant-datatable tbody td:first-child { white-space: normal; }
	.priovant-7030 .wp-block-table.is-style-priovant-datatable thead th:first-child,
	.priovant-7030 .wp-block-table.is-style-priovant-datatable tbody td:first-child { width: 42%; }
	/* Numeric columns: trim horizontal padding so short values (e.g. "73 (90%)") hold one
	   line at 320 instead of breaking after the number. First column keeps its indent pad. */
	.priovant-7030 .wp-block-table.is-style-priovant-datatable thead th:not(:first-child),
	.priovant-7030 .wp-block-table.is-style-priovant-datatable tbody td:not(:first-child) { padding-left: 4px; padding-right: 4px; }
}

/* ── Data Table — Check-icon variant (Make DataTableCheck) ────────────────────
   Opt-in via the extra class `priovant-datatable--check` on the editable core/table.
   Data cells (every column past the first/label) show a branded circle-check ICON
   instead of text: the importer emits ✓ in a checked cell and leaves an unchecked cell
   EMPTY, so an editor toggles a check by typing/clearing it (`:empty` → no icon). The ✓
   is a decorative signal — hidden (font-size:0), the icon drawn as a centered
   background-image (decoration, like the gold rules); the ✓ stays in the DOM so a screen
   reader announces "check mark" (a blank cell = nothing). Icon COLOR is row-based per Make:
   Brand Blue on the highlight row, light gray elsewhere — keyed off the SAME
   :has(td:first-child mark) the base highlight uses. */
.wp-block-table.is-style-priovant-datatable.priovant-datatable--check tbody td:not(:first-child) {
	font-size: 0;   /* hide the ✓ signal — the icon is a centered background-image below */
}
.wp-block-table.is-style-priovant-datatable.priovant-datatable--check tbody td:not(:first-child):not(:empty) {
	background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'><circle cx='10' cy='10' r='10' fill='%23D1D1D1'/><path d='M5.5 10.25 L8.5 13.25 L14.5 7.25' fill='none' stroke='white' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 20px 20px;
}
/* Highlight row → Brand Blue check icons (Make). */
.wp-block-table.is-style-priovant-datatable.priovant-datatable--check tbody tr:has(td:first-child mark) td:not(:first-child):not(:empty) {
	background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'><circle cx='10' cy='10' r='10' fill='%2300529B'/><path d='M5.5 10.25 L8.5 13.25 L14.5 7.25' fill='none' stroke='white' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
@media (max-width: 1023px) {
	.wp-block-table.is-style-priovant-datatable.priovant-datatable--check tbody td:not(:first-child):not(:empty) {
		background-size: 17px 17px;   /* Make DataTableCheckMobile */
	}
}

/* Styleguide-only wrapper for the editable specimen (real core blocks, so it
   sits outside the styleguide wp:html — give it the same frame). */
:root :where(.priovant-sg-editable) {
	max-width: 1280px;
	margin: 0 auto;
	padding: 48px 24px;
	box-sizing: border-box;
	border-top: 1px solid var(--wp--preset--color--lisraya-rule-gray);
}
:root :where(.priovant-sg-editable > h2) {
	margin: 0 0 8px;
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--lisraya-ink);
}
/* Data-table title: inherits the global H3 scale (28px/400/Brand Blue, 2026-06-15);
   only the styleguide spacing is kept here. */
:root :where(.priovant-sg-editable > h3) {
	margin: 24px 0 8px;
}

/* ============================================================================
   EDITOR-ONLY — Lever 2: labeled section bands in the block-editor CANVAS.
   Makes section boundaries obvious to minor-edit users: a dashed top divider + a
   name chip atop each section. EVERY rule here is scoped to `.editor-styles-wrapper`
   (which exists ONLY in the block editor, via add_editor_style) → it CANNOT touch
   the front end (nothing to fidelity-diff). Wrapper-free: sections are native named
   Groups, so we style each section's OWN class directly — no frame wrapper, no
   markup change, no inter-section-spacing compensation, and it applies on every
   page at once (homepage + Support). Labels are hardcoded per section class (a
   handful of rules). The `section-nav` (a wp:html block) is intentionally not
   banded — it's labeled in List View instead. (Replaces the reverted wrapper
   prototype; see docs/backlog.md → "Editor visibility / editability".)
   ========================================================================== */
/* Position context + a top gap for the band. Page sections + the component-library
   specimens (the Data Table group + the Accordion block). */
.editor-styles-wrapper :is(
	.priovant-hero, .priovant-evidence, .priovant-content-cards, .priovant-moa,
	.priovant-cta, .priovant-cta-speedbump, .priovant-signup, .priovant-testimonial,
	.priovant-footnotes, .priovant-lower-hero, .priovant-support-services,
	.priovant-support-enroll, .priovant-support-resources, .priovant-sg-editable,
	.priovant-accordion, .priovant-content-block, .priovant-5050, .priovant-7030,
	.priovant-3070, .priovant-imgblock, .priovant-statistics, .priovant-chart, .priovant-content-columns, .priovant-tabs
) {
	position: relative;
	margin-top: 32px;
}
/* Dashed divider — everything EXCEPT the Accordion (it has its own navy 8px top bar
   we don't want to clobber). */
.editor-styles-wrapper :is(
	.priovant-hero, .priovant-evidence, .priovant-content-cards, .priovant-moa,
	.priovant-cta, .priovant-cta-speedbump, .priovant-signup, .priovant-testimonial,
	.priovant-footnotes, .priovant-lower-hero, .priovant-support-services,
	.priovant-support-enroll, .priovant-support-resources, .priovant-sg-editable,
	.priovant-content-block, .priovant-5050, .priovant-7030, .priovant-3070,
	.priovant-imgblock, .priovant-statistics, .priovant-chart, .priovant-content-columns, .priovant-tabs
) {
	border-top: 2px dashed var(--wp--preset--color--lisraya-blue-muted);
}
.editor-styles-wrapper :is(
	.priovant-hero, .priovant-evidence, .priovant-content-cards, .priovant-moa,
	.priovant-cta, .priovant-cta-speedbump, .priovant-signup, .priovant-testimonial,
	.priovant-footnotes, .priovant-lower-hero, .priovant-support-services,
	.priovant-support-enroll, .priovant-support-resources, .priovant-sg-editable,
	.priovant-accordion, .priovant-content-block, .priovant-5050, .priovant-7030,
	.priovant-3070, .priovant-imgblock, .priovant-statistics, .priovant-chart, .priovant-content-columns, .priovant-tabs
)::before {
	content: "Section";
	position: absolute;
	top: -11px;
	left: 16px;
	z-index: 1;
	padding: 2px 10px;
	font-family: 'Public Sans', ui-sans-serif, system-ui, sans-serif;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--wp--preset--color--base);
	background-color: var(--wp--preset--color--lisraya-blue);
	border-radius: 2px;
}
/* Per-section label text. */
.editor-styles-wrapper .priovant-hero::before { content: "Hero"; }
.editor-styles-wrapper .priovant-evidence::before { content: "Evidence"; }
.editor-styles-wrapper .priovant-content-cards::before { content: "Content Cards"; }
.editor-styles-wrapper .priovant-moa::before { content: "Mechanism of Action"; }
.editor-styles-wrapper .priovant-cta::before { content: "CTA Speedbump"; }
.editor-styles-wrapper .priovant-cta-speedbump::before { content: "CTA Speedbump"; }
.editor-styles-wrapper .priovant-signup::before { content: "Sign Up"; }
.editor-styles-wrapper .priovant-testimonial::before { content: "Testimonial"; }
.editor-styles-wrapper .priovant-footnotes::before { content: "Footnotes"; }
.editor-styles-wrapper .priovant-lower-hero::before { content: "Lower Level Hero"; }
.editor-styles-wrapper .priovant-highlight::before { content: "Content Highlight"; }
.editor-styles-wrapper .priovant-support-services::before { content: "Support Services"; }
.editor-styles-wrapper .priovant-support-enroll::before { content: "Patient Enrollment"; }
.editor-styles-wrapper .priovant-support-resources::before { content: "Resources"; }
/* Component-library (internal) specimens. */
.editor-styles-wrapper .priovant-sg-editable::before { content: "Data Table"; }
.editor-styles-wrapper .priovant-accordion::before { content: "Accordion"; }
.editor-styles-wrapper .priovant-content-block::before { content: "Standard Content Block"; }
.editor-styles-wrapper .priovant-5050::before { content: "50/50 Layout"; }
.editor-styles-wrapper .priovant-7030::before { content: "70/30 Layout"; }
.editor-styles-wrapper .priovant-3070::before { content: "30/70 Text + Content Block"; }
.editor-styles-wrapper .priovant-imgblock::before { content: "Image Content Block"; }
.editor-styles-wrapper .priovant-imgblock--video::before { content: "Video Content Block"; }
.editor-styles-wrapper .priovant-content-columns::before { content: "Content Columns"; }
.editor-styles-wrapper .priovant-statistics::before { content: "Statistics Block"; }
.editor-styles-wrapper .priovant-moatable-block::before { content: "MoA Cytokine Table"; }
.editor-styles-wrapper .priovant-chart::before { content: "Chart"; }
.editor-styles-wrapper .priovant-tabs::before { content: "Tabs"; }
