/* ── 50/50 Flex ────────────────────────────────────────────────────────────── */

.vio-fifty-fifty-flex .vio-fifty-fifty-flex__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--wp--preset--spacing--1250, 50px);
  align-items: start;
}

.vio-fifty-fifty-flex__col {
  min-width: 0;
}

/* Vertical alignment modifiers (mirrors fifty-fifty-accordion's --valign-*) */
@media (min-width: 1280px) {
  .vio-fifty-fifty-flex--valign-start .vio-fifty-fifty-flex__col { align-self: start; }
  .vio-fifty-fifty-flex--valign-center .vio-fifty-fifty-flex__col { align-self: center; }
  .vio-fifty-fifty-flex--valign-end .vio-fifty-fifty-flex__col { align-self: end; }

  .vio-fifty-fifty-flex--sticky-left .vio-fifty-fifty-flex__col--left {
    position: sticky;
    top: var(--vio-fixed-top, 96px);
    align-self: start;
  }
  .vio-fifty-fifty-flex--sticky-right .vio-fifty-fifty-flex__col--right {
    position: sticky;
    top: var(--vio-fixed-top, 96px);
    align-self: start;
  }
}

/* Mobile stacking order */
@media (max-width: 1279.98px) {
  .vio-fifty-fifty-flex .vio-fifty-fifty-flex__grid {
    grid-template-columns: 1fr;
  }
  .vio-fifty-fifty-flex--mobile-first-left .vio-fifty-fifty-flex__col--left { order: 1; }
  .vio-fifty-fifty-flex--mobile-first-left .vio-fifty-fifty-flex__col--right { order: 2; }
  .vio-fifty-fifty-flex--mobile-first-right .vio-fifty-fifty-flex__col--right { order: 1; }
  .vio-fifty-fifty-flex--mobile-first-right .vio-fifty-fifty-flex__col--left { order: 2; }
}

/* Media column — reuse the shared media object-fit rules from the sibling
   50/50 blocks' vocabulary. */
.vio-fifty-fifty-flex__media {
  position: relative;
  width: 100%;
  overflow: hidden;
  border-radius: var(--vio-img-radius, 12px);
}
.vio-fifty-fifty-flex__media picture,
.vio-fifty-fifty-flex__media img,
.vio-fifty-fifty-flex__media video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.vio-fifty-fifty-flex__col--media .vio-fifty-fifty-flex__media {
  aspect-ratio: 4 / 3;
}

/* Below this block's own stacking breakpoint (max-width: 1279.98px - see the
   mobile-order rules above), the two columns stack instead of sitting side
   by side, so there's no "match the taller column" problem for the image
   to solve - it should just render at its own natural aspect-ratio height
   (viomedspa-global.css's OWN full-bleed mobile rule already sets that:
   `height:auto !important; aspect-ratio:4/5` under max-width:767px).
   But a SEPARATE, unscoped legacy rule in that same global stylesheet -
   `.vio-section--media-full-bleed .vio-fifty-fifty__col--media { min-height:
   clamp(320px, 75vh, 720px); }`, written for the OTHER 50/50 blocks where
   the media div IS the grid item - also matches this block's media column
   (it carries that same shared class) at every width, including mobile.
   Confirmed via computed-style inspection at 390px: the column's min-height
   computed to 630px while the actual 4:5-ratio image only needed 465px,
   leaving ~165px of bare section background below it - the "big gap under
   the photo" bug. Zero it out here, for this block only. */
@media (max-width: 1279.98px) {
  .vio-section--media-full-bleed.vio-fifty-fifty-flex .vio-fifty-fifty__col--media {
    min-height: 0;
  }
}

/* ── Full-bleed media ─────────────────────────────────────────────────────
   `mediaFullBleed` is a framework-wide attribute (inc/blocks.php) that
   vio_render_section_shell() turns into a `vio-section--media-full-bleed`
   class on the section - this block DOES call that shell (render.php), so
   the class is already present whenever the toggle is on. But this block
   uses its own `.vio-fifty-fifty-flex__*` class names (not the sibling
   fifty-fifty-image-copy block's `.vio-fifty-fifty__*` ones), so none of
   that other block's full-bleed rules ever matched here - the media column
   just kept its fixed 4:3 box and `align-items:start` left it short
   whenever the opposite column was taller. Stretch the grid row and let
   the media column (and the element inside it) fill that full height. */
@media (min-width: 768px) {
  .vio-section--media-full-bleed.vio-fifty-fifty-flex .vio-fifty-fifty-flex__grid {
    align-items: stretch;
  }
  /* This block's own `contentVAlign` attribute (default "start") sets
     align-self: start/center/end on EVERY column via the --valign-* modifier
     below (line ~16) - which always wins over the grid's align-items:stretch
     above for whichever column it targets, full-bleed or not. A full-bleed
     media column must always stretch regardless of that setting (a
     non-stretched media box has no definite height for its image to fill,
     see the img/video rule below), so force it back to stretch here,
     specifically for the media column only - the copy column keeps
     whatever vertical alignment the editor picked. */
  .vio-section--media-full-bleed.vio-fifty-fifty-flex .vio-fifty-fifty__col--media {
    display: flex;
    align-self: stretch !important;
  }
  /* viomedspa-global.css ALREADY has full-bleed rules for THIS exact class
     (.vio-fifty-fifty-flex__media), but they assume a fixed-ish height
     (`height: auto !important; aspect-ratio: 4/5`, plus a
     `max-height: clamp(320px, 75vh, 720px)` cap on the div AND on its
     img/picture/video) - fine when the copy side is short, but capped the
     image well short of a taller copy side, leaving a gap of bare section
     background below it.
     Several approaches were tried and reverted here: removing the cap
     outright, a viewport-height cap, and a raised-but-still-fixed cap - all
     of them either left a gap (copy taller than whatever fixed number was
     picked) or stretched the photo far taller than the actual copy content
     needed. The real requirement is a FLOOR, not a ceiling: the image
     should default to a normal aspect-driven height, but GROW to match the
     copy column whenever copy is taller than that - no upper limit, since
     "taller than copy" should never happen by definition once this is
     wired correctly. min-height (not max-height) is that floor. */
  .vio-section--media-full-bleed.vio-fifty-fifty-flex .vio-fifty-fifty-flex__media {
    flex: 1;
    height: 100% !important;
    min-height: clamp(320px, 60vh, 600px);
    max-height: none !important;
    aspect-ratio: auto !important;
    border-radius: 0;
  }
  /* The img/video itself must be taken OUT of normal flow (absolute, filling
     the already-`position:relative` .media wrapper above) rather than sized
     via a plain height:100%. Confirmed via computed-style + grid-track
     inspection: an in-flow img with height:100% still contributes its OWN
     aspect-ratio-driven intrinsic height to the grid row's auto-sizing
     calculation (CSS Grid computes implicit row height from each item's own
     preferred size when not otherwise constrained) - so the row, and hence
     the "taller" column, ended up sized by whichever photo happened to be
     in use, NOT by the copy column's actual content height. That's why
     raising/removing the cap alone never produced "exactly matches copy":
     the image was competing with copy to set the row height instead of
     purely reacting to it. An absolutely-positioned img contributes nothing
     to its container's intrinsic size, so the row's auto height comes from
     the copy column alone; the media column then stretches (align-self,
     above) to match it, and the img just fills whatever height results. */
  .vio-section--media-full-bleed.vio-fifty-fifty-flex .vio-fifty-fifty-flex__media picture,
  .vio-section--media-full-bleed.vio-fifty-fifty-flex .vio-fifty-fifty-flex__media img,
  .vio-section--media-full-bleed.vio-fifty-fifty-flex .vio-fifty-fifty-flex__media video {
    position: absolute;
    inset: 0;
    max-height: none !important;
    height: 100%;
    width: 100%;
    object-fit: cover;
  }
}

/* ── Full-bleed media + sticky side: the photo pins and slides ────────────
   Full-bleed (above) forces the media column to stretch to the full row
   height, and a stretched column has nothing to slide within - so the
   "Sticky left/right side" setting did nothing on a full-bleed photo. When the
   sticky side IS the media column, let it stay a viewport-tall box instead:
   it pins just under the header while the (taller) copy column scrolls past,
   and stops at the bottom of the section. The photo fills the box, as before. */
@media (min-width: 1200px) {
  .vio-section--media-full-bleed.vio-fifty-fifty-flex.vio-fifty-fifty-flex--sticky-right .vio-fifty-fifty-flex__col--right.vio-fifty-fifty__col--media,
  .vio-section--media-full-bleed.vio-fifty-fifty-flex.vio-fifty-fifty-flex--sticky-left .vio-fifty-fifty-flex__col--left.vio-fifty-fifty__col--media {
    align-self: start !important;
    position: sticky;
    top: var(--vio-fixed-top, 96px);
    height: calc(100svh - var(--vio-fixed-top, 96px));
  }
}

/* Accordion column reuses .vio-accordion (global styles apply). */
.vio-fifty-fifty-flex .vio-accordion details {
  margin-bottom: 3px;
}
.vio-fifty-fifty-flex .vio-accordion details:last-child {
  margin-bottom: 0;
}

/* Carousel column reuses .vio-carousel-compare (global styles + this
   block's own track sizing, since carousel-compare's own CSS is scoped
   under .vio-fifty-fifty-cc which this block doesn't carry). */
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare {
  display: flex;
  flex-direction: column;
  min-width: 0;
  width: 100%;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__track-wrapper {
  overflow: hidden;
  width: calc(100% + 48px);
  margin-left: -24px;
  margin-right: -24px;
  padding-bottom: 20px;
  margin-bottom: -20px;
  cursor: grab;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__track-wrapper:active {
  cursor: grabbing;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__track {
  display: flex;
  gap: 0;
  transition: transform 0.4s ease;
  will-change: transform;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide {
  flex: 0 0 calc(100% - 48px);
  min-width: 0;
  position: relative;
  z-index: 0;
  border-radius: var(--vio-img-radius, 12px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.4s ease, opacity 0.4s ease;
  transform: scale(0.92);
  transform-origin: center top;
  opacity: 0.55;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide.is-next {
  transform-origin: left top;
  transform: translateY(20px) scale(0.92);
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide.is-prev {
  transform-origin: right top;
  transform: translateY(20px) scale(0.92);
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide.is-active {
  transform: scale(1);
  transform-origin: center top;
  opacity: 1;
  z-index: 2;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.10);
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide-image {
  border-radius: var(--vio-img-radius, 12px) var(--vio-img-radius, 12px) 0 0;
  aspect-ratio: 1;
  max-height: clamp(180px, 34.2vh, 360px);
  overflow: hidden;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide-image picture,
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide-content {
  flex: 1;
  padding: 24px;
  border-radius: 0 0 var(--vio-img-radius, 12px) var(--vio-img-radius, 12px);
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__controls {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 16px;
  margin-top: 4px;
  padding: 0 8px;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__controls[hidden] {
  display: none;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__arrow {
  position: relative;
  flex: 0 0 auto;
  background: none;
  border: none;
  padding: 4px;
  cursor: pointer;
  opacity: 0.85;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__arrow[disabled] {
  opacity: 0.35;
  pointer-events: none;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__progress {
  position: relative;
  flex: 1 1 auto;
  height: 4px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.12);
  min-width: 0;
}
.vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__progress-bar {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.55);
  transition: left 0.4s ease, width 0.4s ease;
}

/* Form column */
.vio-fifty-fifty-flex__form-embed {
  margin-top: 16px;
}
.vio-fifty-fifty-flex__form-embed iframe {
  width: 100%;
  border: none;
  display: block;
}
.vio-fifty-fifty-flex__no-form {
  opacity: 0.6;
  font-style: italic;
}

@media (max-width: 767px) {
  .vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__track-wrapper {
    width: calc(100% + 32px);
    margin-left: -16px;
    margin-right: -16px;
  }
  .vio-fifty-fifty-flex__carousel-col .vio-carousel-compare__slide {
    flex: 0 0 calc(100% - 32px);
  }
}

/* ── Inline CTAs (copy side, CopyCtasInline) ─────────────────────────────
   Base .vio-fifty-fifty__ctas flex-row rule lives in the shared
   viomedspa-global.css (used by every 50/50 block) - only the mobile
   stack override needs restating here, same as fifty-fifty-image-copy's
   own style.css does. */
@media (max-width: 767px) {
  .vio-fifty-fifty-flex .vio-fifty-fifty__ctas {
    flex-direction: column;
  }
  .vio-fifty-fifty-flex .vio-fifty-fifty__ctas .vio-btn {
    width: 100%;
  }
}

/* ── Callout line (copy side) ────────────────────────────────────────────
   Same markup/class as fifty-fifty-image-copy's calloutText - kept in
   sync so a callout looks identical on either block. */
.vio-ff-callout {
  border-left: 3px solid currentColor;
  padding-left: 1rem;
  opacity: 0.85;
}
.vio-ff-callout p:last-child {
  margin-bottom: 0;
}

/* Title Two "H3 look": lets an H2 (correct heading order under an H1) keep the
   Nunito Sans + 0.034em tracking the theme gives H3. Class beats the theme's
   per-tag element styles. */
.vio-section__title-alt.vio-section__title-alt--sans {
  font-family: var(--wp--preset--font-family--nunito-sans, 'Nunito Sans', sans-serif);
  letter-spacing: 0.034em;
}

/* ── Embedded Location Finder (copy side) ────────────────────────────────
   The standalone Location Finder renders as its own <section class="vio-
   section">; nested in a copy column it must shed that section's padding,
   background and centering so it sits flush under the copy. */
.vio-ff-locator {
  margin-top: clamp(24px, 3vw, 40px);
}
.vio-ff-locator .vio-location-finder,
.vio-ff-locator .vio-location-finder:not([class*="vio-bg--"]) {
  background: transparent;
  margin: 0;
  color: var(--wp--preset--color--vio-alabaster);
}
.vio-ff-locator .vio-location-finder .vio-section__inner,
.vio-ff-locator .vio-location-finder__inner {
  padding: 0;
  max-width: none;
  align-items: flex-start;
  text-align: left;
}
.vio-ff-locator .vio-location-finder__picker {
  align-items: flex-start;
  max-width: none;
}

/* Accent-colored run inside a title (e.g. the gold "VIO Med Spa" line). */
.vio-section__title .vio-ff-accent {
  color: var(--wp--preset--color--promo-bf-bronze);
}

/* ── Embedded Location Finder: "unlock" panel look ───────────────────────
   Gold-outlined panel on the dark hero: eyebrow, large title, big ZIP field
   + gold action button, text-link geolocation, and an alabaster results
   list (name, distance, arrow). Corners follow the site's own radius.
   Contrast (all >= WCAG AA): graphite on gold 5.4:1, graphite on alabaster
   11.9:1, ink-700 on alabaster/lotion >7:1, pale bronze on ink 9:1+. */
.vio-ff-locator {
  --vio-lf-gold: var(--wp--preset--color--promo-bf-bronze);
  --vio-lf-pale-gold: var(--wp--preset--color--promo-bf-pale-bronze);
  --vio-lf-alabaster: var(--wp--preset--color--vio-alabaster);
  --vio-lf-graphite: var(--wp--preset--color--vio-ink);
  --vio-lf-r: var(--vio-ui-radius, 12px);
  max-width: 680px;
}
.vio-ff-locator .vio-section.vio-location-finder {
  border: 1px solid var(--vio-lf-gold);
  border-radius: var(--vio-lf-r);
  padding: clamp(24px, 2.6vw, 36px);
}
/* Collapsed ("{location} selected. Change") - no panel, just the line. */
.vio-ff-locator .vio-section.vio-location-finder:has([data-vio-lf-selected]:not([hidden])) {
  border-color: transparent;
  padding: 0;
}
.vio-ff-locator .vio-location-finder__head {
  align-items: flex-start;
  gap: 0;
}
.vio-ff-locator .vio-section__eyebrow {
  margin: 0 0 16px;
  /* pale bronze: the site applies 85% opacity to eyebrows, which takes bronze on Ink to 4.28:1 (AA needs 4.5) */
  color: var(--vio-lf-pale-gold);
  font-family: var(--vio-bf-body, inherit);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.28em;
  text-transform: uppercase;
}
.vio-ff-locator .vio-location-finder .vio-location-finder__title.vio-section__title {
  margin: 0 0 24px;
  color: var(--vio-lf-alabaster);
  font-family: var(--vio-bf-display, inherit);
  font-weight: 500;
  font-size: clamp(30px, 3vw, 44px);
  line-height: 1.05;
  letter-spacing: -0.02em;
}
.vio-ff-locator .vio-location-finder__search-row {
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  gap: 14px;
  margin: 0;
}
.vio-ff-locator .vio-location-finder__zip-group {
  order: 1;
  flex-wrap: wrap;
  gap: 8px;
}
.vio-ff-locator .vio-location-finder__search-input {
  flex: 1 1 220px;
  width: auto;
  min-width: 0;
  height: 80px;
  padding: 0 24px;
  border: 0;
  border-radius: var(--vio-lf-r);
  background: var(--wp--preset--color--vio-lotion);
  color: var(--vio-lf-graphite);
  font-family: var(--vio-bf-body, inherit);
  font-size: 22px;
  font-weight: 500;
}
.vio-ff-locator .vio-location-finder__search-input::placeholder {
  color: var(--wp--preset--color--ink-700);
  opacity: 1;
}
.vio-ff-locator .vio-location-finder__pill--fill {
  flex: 1 1 200px;
  height: 80px;
  padding: 0 32px;
  border: 0;
  border-radius: var(--vio-lf-r);
  background: var(--vio-lf-gold);
  color: var(--vio-lf-graphite);
  font-family: var(--vio-bf-body, inherit);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: background-color 0.3s cubic-bezier(0.25, 0.1, 0.25, 1), transform 0.15s;
}
.vio-ff-locator .vio-location-finder__pill--fill:hover {
  background: var(--vio-lf-pale-gold);
}
.vio-ff-locator .vio-location-finder__pill--fill:active {
  transform: scale(0.98);
}
.vio-ff-locator .vio-location-finder__search-input:focus-visible,
.vio-ff-locator .vio-location-finder__pill:focus-visible,
.vio-ff-locator .vio-location-finder__result:focus-visible,
.vio-ff-locator .vio-location-finder__clear:focus-visible {
  outline: 3px solid var(--vio-lf-pale-gold);
  outline-offset: 3px;
}
/* "Use my location": a text link under the field, not a pill. */
.vio-ff-locator .vio-location-finder__pill[data-vio-lf-geo-btn] {
  order: 2;
  align-self: flex-start;
  /* 24px minimum target size (WCAG 2.2 AA 2.5.8): the text link alone was 18px tall */
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--vio-lf-pale-gold);
  font-family: var(--vio-bf-body, inherit);
  font-size: 15px;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.vio-ff-locator .vio-location-finder__pill[data-vio-lf-geo-btn]:hover {
  color: var(--vio-lf-alabaster);
}
.vio-ff-locator .vio-location-finder__status {
  margin: 12px 0 0;
  color: var(--vio-lf-alabaster);
  opacity: 0.85;
}
/* Results: alabaster panel, hairline-separated rows. */
.vio-ff-locator .vio-location-finder__results:not([hidden]) {
  gap: 0;
  margin-top: 20px;
  padding: 4px 12px;
  background: var(--vio-lf-alabaster);
  border-radius: var(--vio-lf-r);
}
.vio-ff-locator .vio-location-finder__result {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  column-gap: 12px;
  padding: 18px 8px;
  border: 0;
  border-radius: 0;
  border-bottom: 1px solid color-mix(in srgb, var(--vio-lf-graphite) 15%, transparent);
  background: transparent;
  color: var(--vio-lf-graphite);
  font-family: var(--vio-bf-display, inherit);
  font-size: 19px;
}
.vio-ff-locator .vio-location-finder__result:last-child {
  border-bottom: 0;
}
.vio-ff-locator .vio-location-finder__result:hover {
  background: color-mix(in srgb, var(--vio-lf-graphite) 6%, transparent);
  color: var(--vio-lf-graphite);
}
.vio-ff-locator .vio-location-finder__result > span:first-child::before {
  content: 'VIO ';
}
.vio-ff-locator .vio-location-finder__result-city {
  display: none;
}
.vio-ff-locator .vio-location-finder__result-dist {
  grid-column: 1;
  grid-row: 2;
  font-family: var(--vio-bf-body, inherit);
  font-size: 15px;
  font-style: normal;
  color: var(--wp--preset--color--ink-700);
  opacity: 1;
}
.vio-ff-locator .vio-location-finder__result::after {
  content: '\2192';
  grid-column: 2;
  grid-row: 1 / span 2;
  font-size: 22px;
  color: var(--wp--preset--color--vio-mouse-dark);
}
/* After a pick: the "{location} selected. Change" line on the dark hero. */
.vio-ff-locator .vio-location-finder__selected {
  color: var(--vio-lf-alabaster);
  font-family: var(--vio-bf-body, inherit);
  font-size: 16px;
}
.vio-ff-locator .vio-location-finder__clear {
  color: var(--vio-lf-pale-gold);
  font-size: 15px;
}

/* Date bands under the hero copy: capped width + breathing room. */
.vio-fifty-fifty-flex:has(.vio-ff-locator) .vio-cards__grid {
  max-width: 680px;
  margin-top: clamp(24px, 3vw, 40px);
}

/* The site-wide full-bleed rule (viomedspa-global.css: width:100vw plus a
   negative left margin on every .vio-section in post content) would drag the
   nested finder out of its column - cancel it for this wrapper only. */
body:not(.editor-styles-wrapper) .vio-ff-locator .vio-section.vio-location-finder:not(.wp-block-group),
.editor-styles-wrapper .vio-ff-locator .vio-section.vio-location-finder:not(.wp-block-group) {
  width: auto;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  box-sizing: border-box;
}

/* ── Lead form side (inline contact form) ────────────────────────────────
   Works on light or dark sections: labels and consent text follow the
   section's own text color (currentColor); fields are Lotion with Ink
   text; the button is BF Bronze with Ink text (AA); focus rings use BF Pale
   Bronze. Palette tokens only, no hex. The error line is shown as text plus
   a red edge bar (not red text), so it stays readable on dark sections. */
.vio-ff-leadform {
  --vio-lead-field-bg: var(--wp--preset--color--vio-lotion);
  --vio-lead-field-ink: var(--wp--preset--color--vio-ink);
  --vio-lead-accent: var(--wp--preset--color--promo-bf-bronze);
  --vio-lead-accent-hover: var(--wp--preset--color--promo-bf-pale-bronze);
  --vio-lead-error: var(--wp--preset--color--vio-red);
  /* Global UI radius unless the block sets its own (inline --vio-lead-radius). */
  --vio-lead-r: var(--vio-lead-radius, var(--vio-ui-radius, 12px));
  width: 100%;
}
.vio-ff-leadform__form {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.vio-ff-leadform__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.vio-ff-leadform__field {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
.vio-ff-leadform__field label {
  font-size: 0.95rem;
  line-height: 1.2;
}
.vio-ff-leadform__field input {
  width: 100%;
  min-height: 62px;
  padding: 0 16px;
  border: 0;
  border-radius: var(--vio-lead-r);
  background: var(--vio-lead-field-bg);
  color: var(--vio-lead-field-ink);
  font: inherit;
  font-size: 1.05rem;
}
.vio-ff-leadform__field input:focus-visible,
.vio-ff-leadform__submit:focus-visible,
.vio-ff-leadform__consent input:focus-visible {
  outline: 3px solid var(--vio-lead-accent-hover);
  outline-offset: 3px;
}
.vio-ff-leadform__consent {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 0.85rem;
  line-height: 1.5;
  cursor: pointer;
}
.vio-ff-leadform__consent input {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  margin: 2px 0 0;
  accent-color: var(--vio-lead-accent);
}
.vio-ff-leadform__consent a {
  color: inherit;
  text-decoration: underline;
}
.vio-ff-leadform__submit {
  width: 100%;
  min-height: 72px;
  border: 0;
  border-radius: var(--vio-lead-r);
  background: var(--vio-lead-accent);
  color: var(--vio-lead-field-ink);
  font: inherit;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color 0.3s cubic-bezier(0.25, 0.1, 0.25, 1), transform 0.15s;
}
.vio-ff-leadform__submit:hover {
  background: var(--vio-lead-accent-hover);
}
.vio-ff-leadform__submit:active {
  transform: scale(0.98);
}
.vio-ff-leadform__submit:disabled {
  opacity: 0.6;
  cursor: default;
}
.vio-ff-leadform__error {
  margin: 0;
  padding: 10px 14px;
  border-left: 4px solid var(--vio-lead-error);
  font-size: 0.95rem;
}
.vio-ff-leadform__error[hidden],
.vio-ff-leadform__success[hidden],
.vio-ff-leadform__form[hidden] {
  display: none;
}
.vio-ff-leadform__success:focus {
  outline: none;
}
.vio-ff-leadform__success-title {
  margin: 0 0 8px;
}
.vio-ff-leadform__success-text {
  margin: 0;
}
/* Honeypot: out of sight and out of the tab order, but still in the DOM. */
.vio-ff-leadform__hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
@media (max-width: 600px) {
  .vio-ff-leadform__row {
    grid-template-columns: 1fr;
  }
}

/* Privacy Policy | Terms of Service line under the consent checkboxes. */
.vio-ff-leadform__legal {
  margin: 0;
  font-size: 0.9rem;
}
.vio-ff-leadform__legal a {
  color: inherit;
  font-weight: 600;
  text-decoration: underline;
}

/* On phones the form can collapse to a single button that opens the popup. */
.vio-ff-leadform__mobile-cta {
  display: none;
}
@media (max-width: 767px) {
  .vio-ff-leadform--mobile-cta .vio-ff-leadform__form,
  .vio-ff-leadform--mobile-cta .vio-ff-leadform__success {
    display: none;
  }
  .vio-ff-leadform--mobile-cta .vio-ff-leadform__mobile-cta {
    display: block;
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   Additions: split ratio, mobile media height, hero title look, form slot,
   custom-CTA hover. Every rule below only matches markup that exists when the
   matching (opt-in) attribute is set, so existing pages render as before.
   ══════════════════════════════════════════════════════════════════════════ */

/* Split ratio - left / right share of the row on desktop (same breakpoint as the
   rest of this block: below 1280px the sides stack). Put the media on the
   smaller side. */
@media (min-width: 1280px) {
  .vio-fifty-fifty-flex.vio-fifty-fifty-flex--ratio-60-40 .vio-fifty-fifty-flex__grid { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
  .vio-fifty-fifty-flex.vio-fifty-fifty-flex--ratio-70-30 .vio-fifty-fifty-flex__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 3fr); }
  .vio-fifty-fifty-flex.vio-fifty-fifty-flex--ratio-40-60 .vio-fifty-fifty-flex__grid { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
  .vio-fifty-fifty-flex.vio-fifty-fifty-flex--ratio-30-70 .vio-fifty-fifty-flex__grid { grid-template-columns: minmax(0, 3fr) minmax(0, 7fr); }
}

/* Mobile media height cap (stacked layout only). */
@media (max-width: 1279.98px) {
  .vio-fifty-fifty-flex--mobile-mh-lg .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media,
  .vio-fifty-fifty-flex--mobile-mh-md .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media,
  .vio-fifty-fifty-flex--mobile-mh-sm .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media,
  .vio-fifty-fifty-flex--mobile-mh-xs .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media {
    aspect-ratio: auto !important;
    min-height: 0 !important;
    max-height: none !important;
  }
  .vio-fifty-fifty-flex--mobile-mh-lg .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media { height: 55vh !important; }
  .vio-fifty-fifty-flex--mobile-mh-md .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media { height: 40vh !important; }
  .vio-fifty-fifty-flex--mobile-mh-sm .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media { height: 30vh !important; }
  .vio-fifty-fifty-flex--mobile-mh-xs .vio-fifty-fifty__col--media .vio-fifty-fifty-flex__media { height: 22vh !important; }
}

/* "Hero" size token (title / title two / lead / content) + uppercase + eyebrow inside the heading. */
.vio-section__title.size-hero,
.vio-section__title-alt.size-hero { font-size: clamp(34px, 5.5vw, 60px); line-height: 1.1; }
.vio-section__title.size-hero .vio-section__title-main { font-weight: 600; }
.vio-section__lead.size-hero,
.vio-section__lead.size-hero > * { font-size: clamp(1rem, 2vw, 1.2rem); line-height: 1.4; }
.vio-section__content-copy.size-hero { font-size: 1rem; line-height: 1.55556; }
.vio-section__title--upper { text-transform: uppercase; }
.vio-section__title .vio-section__title-kicker {
  display: block;
  font-weight: 700;
  letter-spacing: 0.04em;
  font-size: clamp(1.8rem, 4.4vw, 2.7rem);
  line-height: 1.2;
}

/* Custom CTA hover / focus: only changes anything when hover colours are set. */
.vio-section .vio-btn.vio-btn--custom {
  --vio-btn-bg-hover: var(--vio-btn-custom-hover-bg, var(--vio-btn-bg));
  --vio-btn-fg-hover: var(--vio-btn-custom-hover-text, var(--vio-btn-fg));
  --vio-btn-bd-hover: var(--vio-btn-custom-hover-border-color, var(--vio-btn-bd));
}

/* ── Form slot (under the copy) ─────────────────────────────────────────── */
.vio-form-slot { margin-top: 24px; max-width: 100%; }
.vio-form-slot iframe { max-width: 100%; }
.vio-form-slot__placeholder { margin: 0; font-style: italic; opacity: 0.7; }

/* Hero lead card: cream card, field rows, inline question labels, full-width
   button. Colours are overridable custom properties. */
.vio-form-slot--hero-card {
  --vfs-card-bg: #F2F0E6;
  --vfs-field-bg: #FEFFF9;
  --vfs-ink: #141414;
  --vfs-ink-muted: #666666;
  --vfs-line: #9E9E9E;
  --vfs-btn-bg: #292929;
  --vfs-btn-fg: #FEFFF9;
  --vfs-btn-hover-bg: #5A7686;
  --vfs-radius: 12px;
  position: relative;
  padding: 20px;
  background: var(--vfs-card-bg);
  border-radius: var(--vfs-radius);
  color: var(--vfs-ink);
  font-family: "Nunito Sans", sans-serif;
  box-sizing: border-box;
}
.vio-form-slot--hero-card * { box-sizing: border-box; }
@media (min-width: 900px) { .vio-form-slot--hero-card { padding: 28px 32px; } }
.vio-form-slot--hero-card .gform_fields { display: grid; grid-template-columns: 1fr; gap: 14px; list-style: none; margin: 0; padding: 0; }
.vio-form-slot--hero-card .gfield_label { font-size: 0.85rem; font-weight: 700; color: var(--vfs-ink); margin-bottom: 4px; display: block; }
.vio-form-slot--hero-card .ginput_container input,
.vio-form-slot--hero-card .ginput_container select,
.vio-form-slot--hero-card .ginput_container textarea {
  width: 100%; min-height: 48px; padding: 14px; font-size: 1rem; font-family: "Nunito Sans", sans-serif;
  border: 1px solid var(--vfs-line); border-radius: 8px; background: var(--vfs-field-bg); color: var(--vfs-ink);
}
.vio-form-slot--hero-card .gform_footer { margin-top: 8px; }
.vio-form-slot--hero-card .gform_button {
  width: 100%; min-height: 48px; padding: 16px; background: var(--vfs-btn-bg); color: var(--vfs-btn-fg);
  border: none; border-radius: 0; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; font-size: 1rem; cursor: pointer;
}
.vio-form-slot--hero-card .gform_button:hover { background: var(--vfs-btn-hover-bg); color: var(--vfs-btn-fg); }
.vio-form-slot--hero-card .gfield_description,
.vio-form-slot--hero-card .gform_description { font-size: 0.7rem; color: var(--vfs-ink-muted); line-height: 1.4; }
.vio-form-slot--hero-card label { color: inherit; }
.vio-form-slot--hero-card .gfield_consent_label { color: var(--vfs-ink); margin: 0; font-weight: 700; font-size: 0.9rem; }
.vio-form-slot--hero-card .ginput_container_consent { display: flex; align-items: center; gap: 8px; }
.vio-form-slot--hero-card .ginput_container_consent input[type="checkbox"] { width: 20px; height: 20px; min-height: 0; flex-shrink: 0; margin: 0; }
.vio-form-slot--hero-card .gfield_radio { list-style: none; margin: 0; padding: 0; }
.vio-form-slot--hero-card .gchoice { display: flex; align-items: center; gap: 8px; }
.vio-form-slot--hero-card .gchoice input[type="radio"] { width: 20px; height: 20px; min-height: 0; flex-shrink: 0; margin: 0; }
.vio-form-slot--hero-card .gform-field-label--type-inline { margin: 0; font-weight: 700; font-size: 0.9rem; color: var(--vfs-ink); }
.vio-form-slot--hero-card .gfield.inline-question { display: block !important; }
.vio-form-slot--hero-card fieldset.gfield--type-multi_choice { margin: 0; padding: 0; }
.vio-form-slot--hero-card fieldset.gfield--type-multi_choice legend { margin: 0 0 4px; padding: 0; }
.vio-form-slot--hero-card fieldset.gfield--type-multi_choice legend .gform-field-label__text { font-size: 0.7rem; font-weight: 400; line-height: 1.15; }
@media (min-width: 900px) {
  .vio-form-slot--hero-card .gform_fields { grid-template-columns: repeat(3, 1fr); }
  .vio-form-slot--hero-card .gfield.full-width { grid-column: 1 / -1; }
}
.vio-form-slot--hero-card.vio-form-slot--custom iframe { display: block; width: 100%; border: 0; border-radius: 8px; }

/* ── Image with play button (video opens in a modal) ─────────────────────────── */
.vio-fifty-fifty-flex__media--modal { position: relative; }
.vio-fifty-fifty-flex .vio-ff-play {
  --vio-play-size: 80px;
  --vio-play-fg: var(--wp--preset--color--vio-lotion, #FEFFF9);
  --vio-play-bg: rgba(41, 41, 41, 0.65);
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 3;
  transform: translate(-50%, -50%);
  width: var(--vio-play-size);
  height: var(--vio-play-size);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--vio-play-bg);
  color: var(--vio-play-fg);
  text-decoration: none;
  transition: transform 0.2s ease, background-color 0.2s ease;
}
.vio-fifty-fifty-flex .vio-ff-play svg { margin-left: 6%; }
.vio-fifty-fifty-flex .vio-ff-play:hover { transform: translate(-50%, -50%) scale(1.06); }
.vio-fifty-fifty-flex .vio-ff-play:focus-visible { outline: 3px solid var(--vio-play-fg); outline-offset: 4px; }

.vio-video-modal { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.vio-video-modal[hidden] { display: none; }
.vio-video-modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.8); }
.vio-video-modal__panel { position: relative; width: min(960px, 100%); }
.vio-video-modal__stage { position: relative; width: 100%; aspect-ratio: 16 / 9; background: #000; }
.vio-video-modal__stage iframe, .vio-video-modal__stage video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.vio-video-modal__close {
  position: absolute; top: -44px; right: 0; width: 40px; height: 40px; padding: 0;
  background: none; border: 0; color: #fff; font-size: 32px; line-height: 1; cursor: pointer;
}
.vio-video-modal__close:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
body.vio-video-modal-open { overflow: hidden; }

/* ── Items as a checklist (CopyItemsLayout = checklist) ─────────────────────── */
.vio-fifty-fifty__items.vio-fifty-fifty__items--checklist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.vio-fifty-fifty__items--checklist .vio-fifty-fifty__item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.vio-fifty-fifty__items--checklist .vio-fifty-fifty__item-mark {
  flex: 0 0 auto;
  width: var(--vio-item-icon-size, 22px);
  height: var(--vio-item-icon-size, 22px);
  /* centre the icon on the first line of text (line-height 1.5em) */
  margin-top: max(0px, calc((1.5em - var(--vio-item-icon-size, 22px)) / 2));
  color: var(--vio-item-icon-color, currentColor);
  opacity: 1;
  font-size: 1rem;
  line-height: 1;
}
.vio-fifty-fifty__items--checklist .vio-fifty-fifty__item-mark svg { width: 100%; height: 100%; display: block; stroke: currentColor; }
.vio-fifty-fifty__items--checklist .vio-fifty-fifty__item-body { min-width: 0; line-height: 1.5; }
.vio-fifty-fifty__items--checklist .vio-fifty-fifty__item-title { margin: 0; font-size: inherit; }
.vio-fifty-fifty__items--checklist .vio-fifty-fifty__item-content { margin: 0; font-size: inherit; line-height: 1.5; opacity: 1; }

/* ── Accordion side: numbered items, hairline "lines" look, CTA below ───────── */
.vio-accordion__num { opacity: 0.6; font-family: var(--wp--preset--font-family--cormorant-garamond, serif); margin-right: 0.35em; }
.vio-accordion__label { display: inline; }
.vio-accordion.vio-accordion--lines { gap: 0; background: transparent; }
.vio-accordion.vio-accordion--lines details {
  background: transparent;
  border-radius: 0;
  padding: 18px 0;
  border-bottom: 1px solid var(--vio-accordion-divider-color, rgba(0, 0, 0, 0.15));
}
.vio-accordion.vio-accordion--lines .vio-accordion__body { font-size: 0.9em; }
.vio-accordion + .vio-accordion-cta { margin-top: 24px; }

/* Accordion item cards: optional radius / gap / border (vars set only when used) */
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--radius details { border-radius: var(--vio-accordion-item-radius); overflow: hidden; }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--gap { gap: var(--vio-accordion-gap); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--gap details { margin-bottom: 0; }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--border details { border: 1px solid var(--vio-accordion-item-border); }

/* Accordion item question / answer sizes (opt-in classes; empty = unchanged) */
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-xs .vio-accordion__item > summary,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-xs .vio-accordion__item-title { font-size: calc(var(--wp--preset--font-size--lg, 20px) * 0.7); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-xs .vio-accordion__body,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-xs .vio-accordion__body > * { font-size: calc(18px * 0.7); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-sm .vio-accordion__item > summary,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-sm .vio-accordion__item-title { font-size: calc(var(--wp--preset--font-size--lg, 20px) * 0.85); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-sm .vio-accordion__body,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-sm .vio-accordion__body > * { font-size: calc(18px * 0.85); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-lg .vio-accordion__item > summary,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-lg .vio-accordion__item-title { font-size: calc(var(--wp--preset--font-size--lg, 20px) * 1.2); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-lg .vio-accordion__body,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-lg .vio-accordion__body > * { font-size: calc(18px * 1.2); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-xl .vio-accordion__item > summary,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-xl .vio-accordion__item-title { font-size: calc(var(--wp--preset--font-size--lg, 20px) * 1.45); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-xl .vio-accordion__body,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-xl .vio-accordion__body > * { font-size: calc(18px * 1.45); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-xxl .vio-accordion__item > summary,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-xxl .vio-accordion__item-title { font-size: calc(var(--wp--preset--font-size--lg, 20px) * 1.8); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-xxl .vio-accordion__body,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-xxl .vio-accordion__body > * { font-size: calc(18px * 1.8); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-3xl .vio-accordion__item > summary,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--q-3xl .vio-accordion__item-title { font-size: calc(var(--wp--preset--font-size--lg, 20px) * 2.2); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-3xl .vio-accordion__body,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--a-3xl .vio-accordion__body > * { font-size: calc(18px * 2.2); }

/* Shortcode / plugin side */
.vio-fifty-fifty-flex__col:has(> .vio-ff-shortcode--align-center) { display: flex; flex-direction: column; justify-content: center; }
.vio-ff-shortcode { min-width: 0; max-width: 100%; box-sizing: border-box; }
.vio-ff-shortcode--placeholder { border: 1px dashed #c3c4c7; border-radius: 8px; padding: 60px 20px; text-align: center; color: #777; font-style: italic; min-height: 280px; display: flex; align-items: center; justify-content: center; }
.vio-ff-shortcode--placeholder p { margin: 0; }

/* Copy-side items: optional text size (relative to 16px) and colour; title / content override text. */
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-xs .vio-fifty-fifty__item-title,
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-xs .vio-fifty-fifty__item-content { font-size: calc(1rem * 0.64); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-sm .vio-fifty-fifty__item-title,
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-sm .vio-fifty-fifty__item-content { font-size: calc(1rem * 0.8); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-lg .vio-fifty-fifty__item-title,
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-lg .vio-fifty-fifty__item-content { font-size: calc(1rem * 1.25); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-xl .vio-fifty-fifty__item-title,
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-xl .vio-fifty-fifty__item-content { font-size: calc(1rem * 1.56); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-xxl .vio-fifty-fifty__item-title,
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-xxl .vio-fifty-fifty__item-content { font-size: calc(1rem * 1.95); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-3xl .vio-fifty-fifty__item-title,
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-3xl .vio-fifty-fifty__item-content { font-size: calc(1rem * 3.0); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--title-xs .vio-fifty-fifty__item-title { font-size: calc(1rem * 0.64); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--title-sm .vio-fifty-fifty__item-title { font-size: calc(1rem * 0.8); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--title-lg .vio-fifty-fifty__item-title { font-size: calc(1rem * 1.25); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--title-xl .vio-fifty-fifty__item-title { font-size: calc(1rem * 1.56); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--title-xxl .vio-fifty-fifty__item-title { font-size: calc(1rem * 1.95); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--title-3xl .vio-fifty-fifty__item-title { font-size: calc(1rem * 3.0); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--content-xs .vio-fifty-fifty__item-content { font-size: calc(1rem * 0.64); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--content-sm .vio-fifty-fifty__item-content { font-size: calc(1rem * 0.8); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--content-lg .vio-fifty-fifty__item-content { font-size: calc(1rem * 1.25); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--content-xl .vio-fifty-fifty__item-content { font-size: calc(1rem * 1.56); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--content-xxl .vio-fifty-fifty__item-content { font-size: calc(1rem * 1.95); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--content-3xl .vio-fifty-fifty__item-content { font-size: calc(1rem * 3.0); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-colored .vio-fifty-fifty__item-title,
.vio-fifty-fifty__items.vio-fifty-fifty__items--text-colored .vio-fifty-fifty__item-content { color: var(--vio-items-text-color); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--title-colored .vio-fifty-fifty__item-title { color: var(--vio-items-title-color); }
.vio-fifty-fifty__items.vio-fifty-fifty__items--content-colored .vio-fifty-fifty__item-content { color: var(--vio-items-content-color); }

/* Accordion: block-level question / answer colour (a per-item colour set inline still wins). */
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--qc summary,
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--qc .vio-accordion__item-title { color: var(--vio-accordion-q-color); }
.vio-fifty-fifty-flex .vio-accordion.vio-accordion--ac .vio-accordion__body { color: var(--vio-accordion-a-color); }

/* Note under a CTA button (CopyCtaNote / AccordionCtaNote). Default = 0.8rem, muted. */
.vio-fifty-fifty__cta-wrap { display: block; min-width: 0; max-width: 100%; }
.vio-section .vio-section__cta-note { margin: 8px 0 0; font-size: 0.8rem; line-height: 1.4; text-align: left; opacity: 0.75; overflow-wrap: anywhere; }
.vio-section .vio-section__cta-note.size-xs { font-size: calc(0.8rem * 0.64); }
.vio-section .vio-section__cta-note.size-sm { font-size: calc(0.8rem * 0.8); }
.vio-section .vio-section__cta-note.size-lg { font-size: calc(0.8rem * 1.25); }
.vio-section .vio-section__cta-note.size-xl { font-size: calc(0.8rem * 1.56); }
.vio-section .vio-section__cta-note.size-xxl { font-size: calc(0.8rem * 1.95); }
.vio-section .vio-section__cta-note.size-3xl { font-size: calc(0.8rem * 3.0); }
