/*
 * Builder V2 shared presentation contract.
 *
 * This file owns only geometry, responsive behaviour and the meaning of saved
 * design tokens. Theme-scoped styles remain responsible for visual identity.
 * Keeping the contract shared prevents a setting from working in Default but
 * silently becoming inert when the active theme changes.
 */

.builder-v2-block,
.builder-foundation {
    box-sizing: border-box;
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.builder-v2-block *,
.builder-v2-block *::before,
.builder-v2-block *::after,
.builder-foundation *,
.builder-foundation *::before,
.builder-foundation *::after {
    box-sizing: border-box;
}

/* Structured cards and visual components. */
.builder-v2-block {
    --bv2-align: left;
    --bv2-columns: 3;
    --bv2-gap: clamp(14px, 2.2vw, 28px);
    --bv2-item-pad: clamp(18px, 2.5vw, 32px);
    --bv2-space: clamp(56px, 7vw, 96px);
    --bv2-radius: var(--radius-md, 12px);
    --bv2-shadow: var(--shadow-sm, 0 8px 24px rgba(0, 0, 0, .08));
    padding: var(--bv2-space) clamp(20px, 4vw, 56px);
    overflow: hidden;
    color: var(--color-text);
    background: var(--color-bg);
}

.builder-v2-block.is-spacing-none { --bv2-space: 0; }
.builder-v2-block.is-spacing-xs { --bv2-space: 20px; }
.builder-v2-block.is-spacing-sm { --bv2-space: 32px; }
.builder-v2-block.is-spacing-md { --bv2-space: 48px; }
.builder-v2-block.is-spacing-lg { --bv2-space: clamp(56px, 7vw, 96px); }
.builder-v2-block.is-spacing-xl { --bv2-space: clamp(80px, 10vw, 140px); }

.builder-v2-block.is-density-compact { --bv2-gap: 12px; --bv2-item-pad: 16px; }
.builder-v2-block.is-density-spacious { --bv2-gap: clamp(28px, 4vw, 52px); --bv2-item-pad: clamp(28px, 4vw, 48px); }

.builder-v2-block:is(.is-background-subtle, .is-subtle) { background: var(--color-surface-muted); }
.builder-v2-block:is(.is-background-contrast, .is-contrast) { color: var(--color-bg); background: var(--color-text); }
.builder-v2-block:is(.is-background-accent, .is-accent) { background: color-mix(in srgb, var(--color-primary) 12%, var(--color-bg)); }

.builder-v2-block__inner {
    width: min(100%, var(--container, 1200px));
    min-width: 0;
    margin-inline: auto;
    text-align: var(--bv2-align);
}
.builder-v2-block:is(.is-align-center, .is-center) { --bv2-align: center; }
.builder-v2-block:is(.is-align-right, .is-right) { --bv2-align: right; }

.builder-v2-card-grid,
.builder-v2-compare,
.builder-v2-process,
.builder-v2-metrics {
    display: grid;
    grid-template-columns: repeat(var(--bv2-columns), minmax(0, 1fr));
    gap: var(--bv2-gap);
    min-width: 0;
}
.builder-v2-block.has-1-columns { --bv2-columns: 1; }
.builder-v2-block.has-2-columns { --bv2-columns: 2; }
.builder-v2-block.has-3-columns { --bv2-columns: 3; }
.builder-v2-block.has-4-columns { --bv2-columns: 4; }

.builder-v2-block.is-layout-stack :is(.builder-v2-card-grid, .builder-v2-compare, .builder-v2-process, .builder-v2-metrics) {
    grid-template-columns: minmax(0, 1fr);
}
.builder-v2-block.is-layout-inline :is(.builder-v2-card-grid, .builder-v2-compare, .builder-v2-process, .builder-v2-metrics) {
    display: flex;
    max-width: 100%;
    padding-bottom: 12px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    scrollbar-gutter: stable;
}
.builder-v2-block.is-layout-inline :is(.builder-v2-card, .builder-v2-compare article, .builder-v2-process li, .builder-v2-metrics > div) {
    flex: 0 0 min(82vw, 420px);
    scroll-snap-align: start;
}
.builder-v2-block.is-layout-masonry .builder-v2-card-grid {
    display: block;
    columns: var(--bv2-columns) 240px;
    column-gap: var(--bv2-gap);
}
.builder-v2-block.is-layout-masonry .builder-v2-card {
    break-inside: avoid;
    margin-bottom: var(--bv2-gap);
}

.builder-v2-card,
.builder-v2-compare article,
.builder-v2-process li {
    min-width: 0;
    /* A valid narrow-parent + four-column + spacious combination must not
       spend the entire card width on padding. Keep a readable text box while
       preserving the selected density on ordinary widths. */
    padding: min(var(--bv2-item-pad), 12%);
    border: 1px solid var(--color-border);
    border-radius: var(--bv2-radius);
    background: var(--color-surface);
    box-shadow: var(--bv2-shadow);
}
.builder-v2-block :where(h2, p, dt, dd, summary, a, th, td) { overflow-wrap: anywhere; }
.builder-v2-block h2 { margin: 0 0 .6em; font-size: clamp(1.2rem, 1rem + .7vw, 1.75rem); line-height: 1.35; }
.builder-v2-block p { margin: .4em 0 0; }
.builder-v2-card__meta,
.builder-v2-eyebrow { color: var(--color-primary); font-size: .76rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.builder-v2-link { display: inline-flex; align-items: center; min-height: 44px; margin-top: 18px; color: var(--color-primary); font-weight: 800; text-underline-offset: 4px; }

.builder-v2-metrics { margin: 0; }
.builder-v2-metrics > div { min-width: 0; padding: min(var(--bv2-item-pad), 12%); border-block: 1px solid var(--color-border); }
.builder-v2-metrics dd { margin: .15em 0; color: var(--color-primary); font-size: clamp(2rem, 5vw, 4.5rem); font-weight: 800; line-height: 1; }
.builder-v2-timeline,
.builder-v2-process { display: grid; gap: var(--bv2-gap); margin: 0; padding: 0; list-style: none; }
.builder-v2-timeline li,
.builder-v2-process li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 18px; min-width: 0; align-items: start; }
.builder-v2-index { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 4px; border-radius: 999px; color: var(--color-bg); background: var(--color-primary); font-weight: 900; }
.builder-v2-process li { grid-template-columns: minmax(0, 1fr); }
.builder-v2-block.is-direction-horizontal :is(.builder-v2-timeline, .builder-v2-process) { grid-template-columns: repeat(var(--bv2-columns), minmax(0, 1fr)); }
.builder-v2-block.is-direction-vertical :is(.builder-v2-timeline, .builder-v2-process) { grid-template-columns: minmax(0, 1fr); }
.builder-v2-block.is-direction-reverse .builder-v2-block__inner { direction: rtl; }
.builder-v2-block.is-direction-reverse .builder-v2-block__inner > * { direction: ltr; }

.builder-v2-branch__scroll,
.builder-v2-table-wrap { max-width: 100%; overflow: auto; scrollbar-gutter: stable; }
.builder-v2-branch__level { display: flex; gap: var(--bv2-gap); min-width: max-content; margin: 0; padding: 20px; list-style: none; }
.builder-v2-branch__level .builder-v2-branch__level { border-top: 2px solid var(--color-border); }
.builder-v2-branch__node { width: min(280px, 72vw); padding: var(--bv2-item-pad); border: 1px solid var(--color-border); border-radius: var(--bv2-radius); background: var(--color-surface); }
.builder-v2-compare-table { width: 100%; min-width: 560px; border-collapse: collapse; }
.builder-v2-compare-table :is(th, td) { padding: 14px; border: 1px solid var(--color-border); text-align: var(--bv2-align); }
.builder-v2-compare-table thead { background: var(--color-surface-muted); }

.builder-v2-tabs { display: grid; grid-template-columns: minmax(160px, .35fr) minmax(0, 1fr); gap: var(--bv2-gap); min-width: 0; }
.builder-v2-tabs ol { margin: 0; padding: 0; list-style: none; }
.builder-v2-tabs a { display: flex; align-items: center; min-height: 44px; border-bottom: 1px solid var(--color-border); color: inherit; }
.builder-v2-tabs article { min-width: 0; padding: var(--bv2-item-pad); border-left: 3px solid var(--color-primary); }
.builder-v2-disclosures { display: grid; gap: max(10px, calc(var(--bv2-gap) / 2)); }
.builder-v2-disclosures details { min-width: 0; border: 1px solid var(--color-border); border-radius: var(--bv2-radius); background: var(--color-surface); }
.builder-v2-disclosures summary { display: flex; align-items: center; min-height: 52px; padding: 12px 18px; font-weight: 800; cursor: pointer; }
.builder-v2-disclosures details > div { padding: 0 18px 18px; }

.builder-v2-cta .builder-v2-block__inner,
.builder-v2-map .builder-v2-block__inner { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(180px, .6fr); gap: var(--bv2-gap); align-items: center; }
.builder-v2-block.is-layout-stack:is(.builder-v2-cta, .builder-v2-map) .builder-v2-block__inner { grid-template-columns: minmax(0, 1fr); }
.builder-v2-block.is-layout-inline:is(.builder-v2-cta, .builder-v2-map) .builder-v2-block__inner { display: flex; flex-wrap: wrap; }
.builder-v2-block.is-layout-inline:is(.builder-v2-cta, .builder-v2-map) .builder-v2-block__inner > * { flex: 1 1 260px; }
.builder-v2-cta__action .builder-v2-link { justify-content: center; min-width: 160px; padding: 10px 18px; border-radius: var(--bv2-radius); color: var(--color-bg); background: var(--color-primary); text-align: center; text-decoration: none; }
.builder-v2-block.is-align-center .builder-v2-cta__action { justify-self: center; }
.builder-v2-block.is-align-right .builder-v2-cta__action { justify-self: end; }
.builder-v2-map__visual { position: relative; min-width: 0; min-height: 220px; border: 1px solid var(--color-border); border-radius: var(--bv2-radius); background: linear-gradient(135deg, var(--color-surface-muted), var(--color-surface)); overflow: hidden; }
.builder-v2-map__visual::before,
.builder-v2-map__visual::after { content: ""; position: absolute; background: var(--color-border); }
.builder-v2-map__visual::before { inset: 0 35% 0 auto; width: 2px; transform: rotate(17deg); }
.builder-v2-map__visual::after { inset: 52% 0 auto; height: 2px; transform: rotate(-8deg); }
.builder-v2-map__visual span { position: absolute; top: 38%; left: 58%; width: 28px; height: 28px; border: 8px solid var(--color-primary); border-radius: 50% 50% 50% 0; transform: rotate(-45deg); }

.builder-v2-block.is-semantic-variant-featured { box-shadow: inset 0 0 0 2px var(--color-primary); }
.builder-v2-block.is-semantic-variant-editorial .builder-v2-block__inner { border-inline-start: 4px solid var(--color-primary); padding-inline-start: clamp(16px, 3vw, 36px); }
.builder-v2-block.is-semantic-variant-quiet { opacity: .88; }
.builder-v2-block.is-semantic-variant-emphasis .builder-v2-block__inner { font-size: 1.075em; }

/* "Never stack" preserves the requested column count without crushing its
   content. When the containing section is narrower than that composition,
   the component owns a bounded horizontal scroll region. */
.builder-v2-block.is-stack-never:not(.is-layout-stack) :is(.builder-v2-card-grid, .builder-v2-compare, .builder-v2-process, .builder-v2-metrics) {
    grid-template-columns: repeat(var(--bv2-columns), minmax(180px, 1fr));
    overflow-x: auto;
    scrollbar-gutter: stable;
}

/*
 * Root sections intentionally reuse the component type class. Reset the root
 * itself so layout rules apply to the semantic child (<ol>, <dl>, <div>) and
 * never turn the whole section into an extra, accidental grid column.
 */
.builder-v2-block.builder-v2-timeline,
.builder-v2-block.builder-v2-process,
.builder-v2-block.builder-v2-compare,
.builder-v2-block.builder-v2-tabs,
.builder-v2-block.builder-v2-metrics {
    display: block;
    grid-template-columns: none;
}

/* Custom theme styles load after this shared contract and historically target
   the same class name on both the root section and its semantic child list.
   Keep the list rules, but prevent them from zeroing the root section padding
   (timeline/process were visibly colliding with theme labels on production). */
.builder-v2-block.builder-v2-timeline[data-builder-theme-recipe],
.builder-v2-block.builder-v2-process[data-builder-theme-recipe],
.builder-v2-block.builder-v2-compare[data-builder-theme-recipe],
.builder-v2-block.builder-v2-tabs[data-builder-theme-recipe],
.builder-v2-block.builder-v2-metrics[data-builder-theme-recipe] {
    display: block;
    grid-template-columns: none;
    padding: var(--bv2-space) clamp(20px, 4vw, 56px);
}

/* A theme ornament must never occupy content space when the editor explicitly
   requests no/tiny section spacing. The component keeps its theme typography,
   material and layout; only the unsafe root decoration is suppressed. */
body :is(.builder-v2-block.builder-v2-block, .builder-foundation.builder-foundation)[data-builder-theme-recipe]:is(.is-spacing-none, .is-spacing-xs)::before,
body :is(.builder-v2-block.builder-v2-block, .builder-foundation.builder-foundation)[data-builder-theme-recipe]:is(.is-spacing-none, .is-spacing-xs)::after {
    content: none;
}

/* Foundation layout, text and media components. */
/* Nested blocks share their parent's section decoration. Repeating a root
   label inside every zero-padding child would paint over authored content. */
body :is(.builder-foundation--section, .builder-foundation--columns) :is(.builder-v2-block, .builder-foundation)[data-builder-theme-recipe]::before,
body :is(.builder-foundation--section, .builder-foundation--columns) :is(.builder-v2-block, .builder-foundation)[data-builder-theme-recipe]::after {
    content: none;
}

/* Native player controls need an unmasked rectangular hit area. */
body .builder-foundation.builder-foundation video[controls] {
    clip-path: none;
    border-radius: 4px;
}

.builder-foundation {
    --bf-columns: 2;
    --bf-gap: clamp(18px, 3vw, 40px);
    --bf-pad: clamp(44px, 7vw, 96px);
    padding-block: var(--bf-pad);
    color: var(--color-text);
}
.builder-foundation.is-spacing-none { --bf-pad: 0; }
.builder-foundation.is-spacing-xs { --bf-pad: 20px; }
.builder-foundation.is-spacing-sm { --bf-pad: 32px; }
.builder-foundation.is-spacing-md { --bf-pad: 48px; }
.builder-foundation.is-spacing-lg { --bf-pad: clamp(56px, 7vw, 96px); }
.builder-foundation.is-spacing-xl { --bf-pad: clamp(80px, 10vw, 144px); }
.builder-foundation.is-density-compact { --bf-gap: 14px; }
.builder-foundation.is-density-spacious { --bf-gap: clamp(28px, 4vw, 56px); }
.builder-foundation.is-background-subtle { background: var(--color-bg-alt, var(--color-surface-muted)); }
.builder-foundation.is-background-contrast { color: var(--color-bg); background: var(--color-text); }
.builder-foundation.is-background-accent { background: color-mix(in srgb, var(--color-primary) 12%, var(--color-bg)); }
.builder-foundation.is-align-left { text-align: left; }
.builder-foundation.is-align-center { text-align: center; }
.builder-foundation.is-align-right { text-align: right; }

.builder-foundation__inner,
.builder-foundation:not(.builder-foundation--section):not(.builder-foundation--columns) {
    width: min(calc(100% - 40px), var(--container, 1200px));
    min-width: 0;
    margin-inline: auto;
}
.builder-foundation.is-width-narrow .builder-foundation__inner,
.builder-foundation.is-width-narrow:not(.builder-foundation--section):not(.builder-foundation--columns) { max-width: 760px; }
.builder-foundation.is-width-full .builder-foundation__inner,
.builder-foundation.is-width-full:not(.builder-foundation--section):not(.builder-foundation--columns) { width: 100%; max-width: none; }

.builder-foundation.has-1-columns { --bf-columns: 1; }
.builder-foundation.has-2-columns { --bf-columns: 2; }
.builder-foundation.has-3-columns { --bf-columns: 3; }
.builder-foundation.has-4-columns { --bf-columns: 4; }
.builder-foundation--section.is-layout-stack > .builder-foundation__inner {
    display: flex;
    flex-direction: column;
    gap: var(--bf-gap);
}
.builder-foundation--section.is-layout-grid .builder-foundation__inner,
.builder-foundation--section.is-layout-split .builder-foundation__inner {
    display: grid;
    grid-template-columns: repeat(var(--bf-columns), minmax(0, 1fr));
    gap: var(--bf-gap);
}
.builder-foundation--section.is-layout-inline .builder-foundation__inner {
    display: flex;
    flex-wrap: wrap;
    gap: var(--bf-gap);
}
.builder-foundation--section.is-layout-inline .builder-foundation__inner > * { flex: 1 1 280px; }
.builder-foundation--section.is-layout-masonry .builder-foundation__inner {
    display: block;
    columns: var(--bf-columns) 280px;
    column-gap: var(--bf-gap);
}
.builder-foundation--section.is-layout-masonry .builder-foundation__inner > * { break-inside: avoid; margin-bottom: var(--bf-gap); }
.builder-foundation--columns {
    display: grid;
    grid-template-columns: repeat(var(--bf-columns), minmax(0, 1fr));
    gap: var(--bf-gap);
    width: min(calc(100% - 40px), var(--container, 1200px));
    margin-inline: auto;
    align-items: start;
}
.builder-foundation--columns.builder-foundation--two { --bf-columns: 2; }
.builder-foundation--columns.builder-foundation--three { --bf-columns: 3; }
.builder-foundation--columns.builder-foundation--asymmetric { grid-template-columns: minmax(0, 1.35fr) minmax(0, .65fr); }
.builder-foundation--columns.is-width-narrow { max-width: 760px; }
.builder-foundation--columns.is-width-full { width: 100%; max-width: none; }
.builder-foundation__column { min-width: 0; }
.builder-foundation--divider { width: min(calc(100% - 40px), var(--container, 1200px)); height: auto; padding: 0; border: 0; border-top: 1px solid var(--color-border); }
.builder-foundation--divider.builder-foundation--space { height: var(--bf-pad); border: 0; }
.builder-foundation--spacer { height: var(--bf-pad); padding: 0; }

.builder-foundation__heading,
.builder-foundation__title,
.builder-foundation__copy h2 { margin: 0; line-height: 1.16; letter-spacing: -.025em; overflow-wrap: anywhere; }
.builder-foundation__heading { font-size: clamp(1.5rem, 3.4vw, 3.6rem); }
.builder-foundation__title,
.builder-foundation__copy h2 { font-size: clamp(1.6rem, 3vw, 3rem); }
.builder-foundation__eyebrow { margin: 0 0 10px; color: var(--color-primary); font-size: .76rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.builder-foundation__body { max-width: 68ch; margin: 18px 0 0; }
.builder-foundation.is-density-compact :is(.builder-foundation__body, .builder-foundation__copy p) { margin-top: 10px; }
.builder-foundation.is-density-spacious :is(.builder-foundation__body, .builder-foundation__copy p) { margin-top: 28px; }
.builder-foundation.is-align-center :is(.builder-foundation__heading, .builder-foundation__title, .builder-foundation__body, .builder-foundation__rich-text, .builder-foundation__quote, .builder-foundation__figure, .builder-foundation__video) { margin-inline: auto; }
.builder-foundation.is-align-right :is(.builder-foundation__heading, .builder-foundation__title, .builder-foundation__body, .builder-foundation__rich-text, .builder-foundation__quote, .builder-foundation__figure, .builder-foundation__video) { margin-left: auto; }
.builder-foundation__rich-text { max-width: 76ch; }
.builder-foundation__rich-text > :first-child { margin-top: 0; }
.builder-foundation__rich-text > :last-child { margin-bottom: 0; }
.builder-foundation__rich-text :where(h2, h3, h4, h5, h6) { margin: 1.5em 0 .55em; line-height: 1.25; }
.builder-foundation__rich-text :where(p, ul, ol, blockquote, pre, table) { max-width: 100%; margin: 0 0 1em; overflow-wrap: anywhere; }
.builder-foundation__rich-text :where(ul, ol) { padding-inline-start: 1.35em; }
.builder-foundation__rich-text ul { list-style: disc; }
.builder-foundation__rich-text ol { list-style: decimal; }
.builder-foundation__quote { max-width: 880px; margin: 0; }
.builder-foundation__quote blockquote { margin: 0; padding: clamp(20px, 4vw, 42px); border-left: 4px solid var(--color-primary); background: var(--color-bg-alt, var(--color-surface-muted)); font-size: clamp(1.25rem, 2.4vw, 2rem); line-height: 1.45; }
.builder-foundation__quote figcaption { margin-top: 12px; color: var(--color-text-muted); font-weight: 750; }
.builder-foundation__list { display: grid; gap: 12px; max-width: 72ch; margin: 0; padding-inline-start: 1.35em; text-align: inherit; }
.builder-foundation.is-align-center .builder-foundation__list { margin-inline: auto; list-style-position: inside; }
.builder-foundation.is-align-right .builder-foundation__list { margin-left: auto; list-style-position: inside; }
.builder-foundation--bullets .builder-foundation__list { list-style: disc; }
.builder-foundation--numbered .builder-foundation__list { list-style: decimal; }
.builder-foundation__tagline { margin: 0; font-size: clamp(1.2rem, 2vw, 1.75rem); font-weight: 750; line-height: 1.45; }
.builder-foundation__cta { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; max-width: 100%; margin-top: 24px; padding: 10px 20px; border-radius: var(--radius, 8px); color: #fff; background: var(--color-primary); font-weight: 800; overflow-wrap: anywhere; text-align: center; text-decoration: none; }

.builder-foundation__figure,
.builder-foundation__media-copy figure,
.builder-foundation__media-list figure,
.builder-foundation__video { min-width: 0; margin: 0; }
.builder-foundation :where(img, video) { display: block; width: 100%; max-width: 100%; height: auto; border-radius: var(--radius-lg, 12px); object-fit: cover; }
.builder-foundation__figure figcaption,
.builder-foundation__media-copy figcaption,
.builder-foundation__media-list figcaption,
.builder-foundation__video > figcaption { margin-top: 10px; color: var(--color-text-muted); font-size: .86rem; overflow-wrap: anywhere; }
.builder-foundation--portrait .builder-foundation__figure { max-width: 720px; }
.builder-foundation.is-aspect-ratio-1-1 :where(img, video) { aspect-ratio: 1 / 1; }
.builder-foundation.is-aspect-ratio-4-3 :where(img, video) { aspect-ratio: 4 / 3; }
.builder-foundation.is-aspect-ratio-3-2 :where(img, video) { aspect-ratio: 3 / 2; }
.builder-foundation.is-aspect-ratio-16-9 :where(img, video) { aspect-ratio: 16 / 9; }
.builder-foundation.is-aspect-ratio-portrait :where(img, video) { aspect-ratio: 4 / 5; }

.builder-foundation__media-copy { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: var(--bf-gap); min-width: 0; align-items: center; }
.builder-foundation.is-layout-stack .builder-foundation__media-copy { grid-template-columns: minmax(0, 1fr); }
.builder-foundation.is-direction-horizontal .builder-foundation__media-copy figure { order: 0; }
.builder-foundation.is-direction-reverse .builder-foundation__media-copy figure,
.builder-foundation--media_right .builder-foundation__media-copy figure { order: 2; }
.builder-foundation.is-direction-reverse .builder-foundation__before-after { direction: rtl; }
.builder-foundation.is-direction-reverse .builder-foundation__before-after > * { direction: ltr; }
.builder-foundation__copy { min-width: 0; }
.builder-foundation__copy p { margin: 16px 0 0; }

.builder-foundation__media-list { display: grid; grid-template-columns: repeat(var(--bf-columns), minmax(0, 1fr)); gap: var(--bf-gap); min-width: 0; }
.builder-foundation.is-layout-stack .builder-foundation__media-list { grid-template-columns: minmax(0, 1fr); }
.builder-foundation.is-layout-masonry .builder-foundation__media-list { display: block; columns: var(--bf-columns) 260px; column-gap: var(--bf-gap); }
.builder-foundation.is-layout-masonry .builder-foundation__media-list figure { break-inside: avoid; margin-bottom: var(--bf-gap); }
.builder-foundation--masonry .builder-foundation__media-list figure:nth-child(3n + 1) img { aspect-ratio: 4 / 5; }
.builder-foundation--masonry .builder-foundation__media-list figure:nth-child(3n + 2) img { aspect-ratio: 4 / 3; }
.builder-foundation--carousel .builder-foundation__media-list,
.builder-foundation.is-layout-inline .builder-foundation__media-list { display: flex; max-width: 100%; gap: var(--bf-gap); padding: 0 0 14px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-gutter: stable; }
.builder-foundation--carousel .builder-foundation__media-list figure,
.builder-foundation.is-layout-inline .builder-foundation__media-list figure { flex: 0 0 min(82vw, 760px); scroll-snap-align: start; }
.builder-foundation--featured .builder-foundation__media-list figure { flex-basis: min(88vw, 920px); }
.builder-foundation__video video { aspect-ratio: 16 / 9; background: #111; }
.builder-foundation__video details { margin-top: 12px; }
.builder-foundation__video summary { display: flex; align-items: center; min-height: 44px; cursor: pointer; font-weight: 750; }
.builder-foundation__before-after { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--bf-gap); }
.builder-foundation.is-layout-stack .builder-foundation__before-after { grid-template-columns: minmax(0, 1fr); }
.builder-foundation__before-after figure { position: relative; min-width: 0; margin: 0; }
.builder-foundation__before-after img { aspect-ratio: 4 / 3; }
.builder-foundation__before-after figcaption { position: absolute; bottom: 12px; left: 12px; max-width: calc(100% - 24px); margin: 0; padding: 6px 10px; border-radius: 999px; color: #fff; background: rgba(0, 0, 0, .74); font-size: .78rem; font-weight: 800; }

.builder-foundation.is-semantic-variant-featured { box-shadow: inset 0 0 0 2px var(--color-primary); }
.builder-foundation.is-semantic-variant-editorial { border-inline-start: 4px solid var(--color-primary); }
.builder-foundation.is-semantic-variant-quiet { opacity: .88; }
.builder-foundation.is-semantic-variant-emphasis { font-size: 1.075em; }

:is(.builder-v2-link, .builder-v2-tabs a, .builder-v2-disclosures summary, .builder-v2-branch__scroll, .builder-v2-table-wrap, .builder-foundation__cta, .builder-foundation__video summary):focus-visible {
    outline: 3px solid color-mix(in srgb, var(--color-primary) 48%, #fff);
    outline-offset: 3px;
}

@media (min-width: 1025px) {
    .builder-v2-block.is-hidden-desktop,
    .builder-foundation.is-hidden-desktop { display: none; }
}

@media (min-width: 769px) and (max-width: 1024px) {
    .builder-v2-block.is-hidden-tablet,
    .builder-foundation.is-hidden-tablet { display: none; }
    .builder-foundation.is-stack-tablet.builder-foundation--columns,
    .builder-v2-block.is-stack-tablet :is(.builder-v2-card-grid, .builder-v2-compare, .builder-v2-process, .builder-v2-metrics) { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 768px) {
    .builder-v2-block.is-hidden-mobile,
    .builder-foundation.is-hidden-mobile { display: none; }
    .builder-v2-block:not(.is-stack-never) :is(.builder-v2-card-grid, .builder-v2-compare, .builder-v2-process, .builder-v2-metrics, .builder-v2-timeline),
    .builder-foundation--columns:not(.is-stack-never),
    .builder-foundation__media-copy,
    .builder-foundation__before-after { grid-template-columns: minmax(0, 1fr); }
    .builder-foundation--columns.is-stack-never { grid-template-columns: repeat(var(--bf-columns), minmax(180px, 1fr)); overflow-x: auto; }
    .builder-foundation--columns.is-stack-never.builder-foundation--asymmetric { grid-template-columns: minmax(220px, 1.35fr) minmax(180px, .65fr); }
    .builder-foundation.is-direction-reverse .builder-foundation__media-copy figure,
    .builder-foundation--media_right .builder-foundation__media-copy figure { order: 0; }
    .builder-foundation:not(.builder-foundation--carousel):not(.is-layout-inline) .builder-foundation__media-list { grid-template-columns: minmax(0, 1fr); }
    .builder-v2-tabs,
    .builder-v2-cta .builder-v2-block__inner,
    .builder-v2-map .builder-v2-block__inner { grid-template-columns: minmax(0, 1fr); }
    .builder-v2-tabs article { border-top: 3px solid var(--color-primary); border-left: 0; }
}

@media (forced-colors: active) {
    .builder-v2-card,
    .builder-v2-process li,
    .builder-v2-branch__node,
    .builder-v2-disclosures details,
    .builder-foundation__quote blockquote,
    .builder-foundation :where(img, video),
    .builder-foundation__cta { border: 1px solid CanvasText; }
}

@media (prefers-reduced-motion: reduce) {
    .builder-v2-block *,
    .builder-v2-block *::before,
    .builder-v2-block *::after,
    .builder-foundation *,
    .builder-foundation *::before,
    .builder-foundation *::after { scroll-behavior: auto; transition: none; animation: none; }
}

/* P18 advanced components: semantic tokens, progressive enhancement, 320px floor. */
.builder-v2-advanced { overflow-x: clip; }
.builder-v2-advanced * { box-sizing: border-box; min-width: 0; }
.builder-v2-advanced .builder-v2-block__inner { display: grid; gap: var(--bv2-gap); }
.builder-v2-advanced.is-width-narrow .builder-v2-block__inner { max-width: 760px; }
.builder-v2-advanced.is-width-wide .builder-v2-block__inner { width: min(100%, var(--container, 1200px)); max-width: 1200px; }
.builder-v2-advanced.is-width-full .builder-v2-block__inner { width: 100%; max-width: none; }
.builder-v2-advanced.is-background-subtle { background: color-mix(in srgb, var(--color-text) 5%, var(--color-bg)); }
.builder-v2-advanced.is-align-left .builder-advanced-heading { margin-right: auto; text-align: left; }
.builder-v2-advanced.is-align-center .builder-advanced-heading { margin-inline: auto; text-align: center; }
.builder-v2-advanced.is-align-right .builder-advanced-heading { margin-left: auto; text-align: right; }
.builder-v2-advanced.is-direction-reverse .builder-v2-block__inner { direction: ltr; }

.builder-advanced-heading { max-width: 72ch; }
.builder-advanced-heading h2 { font-size: clamp(1.8rem, 1.15rem + 2.5vw, 4.5rem); line-height: 1.04; letter-spacing: -.035em; overflow-wrap: anywhere; }
.builder-v2-eyebrow { font-size: .78rem; line-height: 1.5; letter-spacing: .16em; text-transform: uppercase; }
.builder-chapter-mark { align-self: start; justify-self: end; font-size: clamp(3rem, 12vw, 10rem); line-height: .8; color: var(--color-primary); opacity: .24; }

.builder-v2-chapter_intro.is-direction-horizontal .builder-v2-block__inner { grid-template-columns: minmax(0, 1fr) auto; }
.builder-v2-chapter_intro.is-direction-reverse .builder-v2-block__inner { grid-template-columns: auto minmax(0, 1fr); }
.builder-v2-chapter_intro.is-direction-reverse .builder-chapter-mark { order: -1; justify-self: start; }
.builder-v2-chapter_intro.is-direction-vertical .builder-v2-block__inner { grid-template-columns: minmax(0, 1fr); }
.builder-v2-chapter_intro.is-direction-vertical .builder-chapter-mark { justify-self: start; }

.builder-advanced-collection { gap: var(--bv2-gap); }
.builder-v2-advanced.is-layout-grid .builder-advanced-collection { display: grid; grid-template-columns: repeat(var(--bv2-columns), minmax(0, 1fr)); }
.builder-v2-advanced.is-layout-stack .builder-advanced-collection { display: grid; grid-template-columns: minmax(0, 1fr); }
.builder-v2-advanced.is-layout-split .builder-advanced-collection { display: grid; }
.builder-v2-advanced.is-layout-split.has-1-columns .builder-advanced-collection { grid-template-columns: minmax(0, 1fr); }
.builder-v2-advanced.is-layout-split.has-2-columns .builder-advanced-collection { grid-template-columns: minmax(0, 1.35fr) minmax(0, .65fr); }
.builder-v2-advanced.is-layout-split.has-3-columns .builder-advanced-collection { grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, .8fr)); }
.builder-v2-advanced.is-layout-split.has-4-columns .builder-advanced-collection { grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, .8fr)); }
.builder-v2-advanced.is-layout-inline .builder-advanced-collection { display: flex; max-width: 100%; padding-bottom: 12px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-gutter: stable; }
.builder-v2-advanced.is-layout-inline .builder-advanced-collection > * { flex: 0 0 min(82vw, 420px); scroll-snap-align: start; }
.builder-v2-advanced.is-layout-inline.has-1-columns .builder-advanced-collection > * { flex-basis: 100%; }
.builder-v2-advanced.is-layout-inline.has-2-columns .builder-advanced-collection > * { flex-basis: calc(50% - var(--bv2-gap) / 2); }
.builder-v2-advanced.is-layout-inline.has-3-columns .builder-advanced-collection > * { flex-basis: calc(33.333% - var(--bv2-gap) * .667); }
.builder-v2-advanced.is-layout-inline.has-4-columns .builder-advanced-collection > * { flex-basis: calc(25% - var(--bv2-gap) * .75); }
.builder-v2-advanced.is-layout-masonry .builder-advanced-collection { display: block; columns: var(--bv2-columns) 240px; column-gap: var(--bv2-gap); }
.builder-v2-advanced.is-layout-masonry .builder-advanced-collection > * { break-inside: avoid; margin-bottom: var(--bv2-gap); }

.builder-editorial-cards,
.builder-offers,
.builder-dynamic-grid { display: grid; grid-template-columns: repeat(var(--bv2-columns, 3), minmax(0, 1fr)); }
.builder-editorial-cards article,
.builder-offers article,
.builder-dynamic-grid article,
.builder-advanced-empty { padding: min(var(--bv2-item-pad), 12%); border: 1px solid var(--color-border); background: var(--color-surface); overflow: hidden; }
.builder-editorial-cards h3,
.builder-offers h3,
.builder-dynamic-grid h3 { overflow-wrap: anywhere; }
.builder-quote-mark { display: block; font-size: 3.75rem; line-height: .7; color: var(--color-primary); }
.builder-offers__price { font-size: clamp(1.5rem, 3vw, 2.8rem); font-weight: 700; }
.builder-offers [data-featured=true] { border-color: var(--color-primary); transform: translateY(-8px); }
.builder-dynamic-grid img { display: block; width: calc(100% + 2px); max-width: none; aspect-ratio: 4 / 3; object-fit: cover; margin: -1px -1px 0; }
.builder-dynamic-grid article > div { padding-top: min(var(--bv2-item-pad), 12%); }
.builder-dynamic-grid time { display: block; margin-bottom: 8px; color: var(--color-text-muted); font-size: .82rem; }

.builder-logo-cloud { display: grid; grid-template-columns: repeat(var(--bv2-columns, 3), minmax(0, 1fr)); padding: 0; margin: 0; list-style: none; }
.builder-logo-cloud li { display: grid; place-items: center; min-height: 120px; padding: min(var(--bv2-item-pad), 12%); border: 1px solid var(--color-border); background: var(--color-surface); }
.builder-logo-cloud a { display: grid; place-items: center; gap: 8px; min-height: 44px; color: inherit; text-decoration: none; }
.builder-logo-cloud img { display: block; max-width: 150px; max-height: 64px; object-fit: contain; }
.builder-v2-logo_cloud--marquee.is-layout-inline .builder-logo-cloud { width: max-content; animation: builder-logo-drift 24s linear infinite; }
.builder-v2-advanced.builder-v2-logo_cloud--marquee.is-layout-inline .builder-logo-cloud > li { width: 220px; flex: 0 0 220px; }
@keyframes builder-logo-drift { to { transform: translateX(-12.5%); } }

.builder-announcement { display: flex; gap: var(--bv2-gap); align-items: center; justify-content: space-between; padding: min(var(--bv2-item-pad), 12%) 0; border-block: 1px solid var(--color-border); }
.builder-announcement > summary { order: 3; display: grid; place-items: center; min-width: 44px; min-height: 44px; cursor: pointer; border: 1px solid var(--color-border); border-radius: 50%; list-style: none; }
.builder-announcement > summary::-webkit-details-marker { display: none; }
.builder-announcement:not([open]) > summary { margin-inline-start: auto; }
.builder-announcement:not([open]) > *:not(summary) { display: none; }
.builder-announcement strong { font-size: 1.1rem; }
.builder-announcement p { margin: .25em 0; }

.builder-annotated { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(260px, .6fr); gap: var(--bv2-gap); align-items: start; }
.builder-v2-annotated_media.is-direction-vertical .builder-annotated { grid-template-columns: minmax(0, 1fr); }
.builder-v2-annotated_media.is-direction-reverse .builder-annotated { grid-template-columns: minmax(260px, .6fr) minmax(0, 1.4fr); }
.builder-v2-annotated_media.is-direction-reverse .builder-annotated figure { order: 2; }
.builder-annotated figure { position: relative; margin: 0; }
.builder-annotated figure img { display: block; width: 100%; height: auto; object-fit: cover; }
.builder-hotspot { position: absolute; left: var(--hotspot-x); top: var(--hotspot-y); translate: -50% -50%; display: grid; place-items: center; width: 44px; height: 44px; cursor: pointer; border: 2px solid var(--color-bg); border-radius: 50%; background: var(--color-primary); color: var(--on-accent, #fff); font: inherit; font-weight: 700; box-shadow: 0 0 0 4px color-mix(in srgb, var(--color-primary) 30%, transparent); }
.builder-hotspot:focus-visible { outline: 3px solid var(--color-text); outline-offset: 4px; }
.builder-annotated__legend { display: grid; gap: var(--bv2-gap); padding: 0; margin: 0; list-style: none; }
.builder-annotated__legend li { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 12px; padding-top: 14px; border-top: 1px solid var(--color-border); }
.builder-annotated__legend > li > span { color: var(--color-primary); font-weight: 700; }

.builder-story { display: grid; gap: calc(var(--bv2-gap) * 2); }
.builder-story article { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr); gap: var(--bv2-gap); align-items: center; }
.builder-story article:nth-child(even) { grid-template-columns: minmax(280px, .85fr) minmax(0, 1.15fr); }
.builder-story article:nth-child(even) figure { order: 2; }
.builder-v2-story_chapters.is-direction-vertical .builder-story article,
.builder-v2-story_chapters.is-direction-vertical .builder-story article:nth-child(even) { grid-template-columns: minmax(0, 1fr); }
.builder-v2-story_chapters.is-direction-vertical .builder-story article:nth-child(even) figure { order: 0; }
.builder-v2-story_chapters.is-direction-reverse .builder-story article { grid-template-columns: minmax(280px, .85fr) minmax(0, 1.15fr); }
.builder-v2-story_chapters.is-direction-reverse .builder-story article figure { order: 2; }
.builder-v2-story_chapters.is-direction-reverse .builder-story article:nth-child(even) { grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr); }
.builder-v2-story_chapters.is-direction-reverse .builder-story article:nth-child(even) figure { order: 0; }
.builder-story figure { margin: 0; }
.builder-story img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.builder-v2-story_chapters--scrollytelling .builder-story article { min-height: 70vh; }
.builder-v2-story_chapters--scrollytelling .builder-story figure { position: sticky; top: calc(var(--header-height, 72px) + 20px); }

.builder-v2-advanced.is-aspect-ratio-auto :where(.builder-dynamic-grid, .builder-logo-cloud, .builder-annotated, .builder-story) img { aspect-ratio: auto; }
.builder-v2-advanced.is-aspect-ratio-1-1 :where(.builder-dynamic-grid, .builder-logo-cloud, .builder-annotated, .builder-story) img { aspect-ratio: 1 / 1; }
.builder-v2-advanced.is-aspect-ratio-4-3 :where(.builder-dynamic-grid, .builder-logo-cloud, .builder-annotated, .builder-story) img { aspect-ratio: 4 / 3; }
.builder-v2-advanced.is-aspect-ratio-3-2 :where(.builder-dynamic-grid, .builder-logo-cloud, .builder-annotated, .builder-story) img { aspect-ratio: 3 / 2; }
.builder-v2-advanced.is-aspect-ratio-16-9 :where(.builder-dynamic-grid, .builder-logo-cloud, .builder-annotated, .builder-story) img { aspect-ratio: 16 / 9; }
.builder-v2-advanced.is-aspect-ratio-portrait :where(.builder-dynamic-grid, .builder-logo-cloud, .builder-annotated, .builder-story) img { aspect-ratio: 4 / 5; }

.builder-v2-link { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin-top: 18px; padding: 9px 16px; border: 1px solid currentColor; color: inherit; text-decoration: none; }
.builder-v2-link:focus-visible,
.builder-logo-cloud a:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }

@media (min-width: 769px) and (max-width: 1024px) {
    .builder-v2-advanced.is-stack-tablet .builder-advanced-collection { display: grid; grid-template-columns: minmax(0, 1fr); columns: auto; width: 100%; animation: none; }
    .builder-v2-advanced.is-layout-split.is-stack-tablet .builder-advanced-collection { grid-template-columns: minmax(0, 1fr); }
    .builder-v2-advanced.is-stack-tablet .builder-advanced-collection > * { width: auto; margin-bottom: 0; }
}

@media (max-width: 768px) {
    .builder-v2-advanced:is(.is-stack-mobile, .is-stack-tablet) .builder-advanced-collection { display: grid; grid-template-columns: minmax(0, 1fr); columns: auto; width: 100%; animation: none; }
    .builder-v2-advanced.is-layout-split:is(.is-stack-mobile, .is-stack-tablet) .builder-advanced-collection { grid-template-columns: minmax(0, 1fr); }
    .builder-v2-advanced:is(.is-stack-mobile, .is-stack-tablet) .builder-advanced-collection > * { width: auto; margin-bottom: 0; }
    .builder-v2-advanced.is-stack-never .builder-advanced-collection { width: 100%; min-width: 0; max-width: 100%; grid-template-columns: repeat(var(--bv2-columns), minmax(180px, 1fr)); overflow-x: auto; overscroll-behavior-inline: contain; }
    .builder-v2-advanced.is-layout-inline.is-stack-never .builder-advanced-collection > * { flex-basis: min(82vw, 420px); }
    .builder-v2-advanced.is-layout-split.is-stack-never .builder-advanced-collection { grid-template-columns: repeat(var(--bv2-columns), minmax(180px, 1fr)); }
    .builder-offers [data-featured=true] { transform: none; }
    .builder-annotated,
    .builder-story article,
    .builder-story article:nth-child(even) { grid-template-columns: minmax(0, 1fr); }
    .builder-v2-annotated_media.is-direction-reverse .builder-annotated figure,
    .builder-v2-story_chapters.is-direction-reverse .builder-story article figure,
    .builder-story article:nth-child(even) figure { order: 0; }
    .builder-v2-story_chapters--scrollytelling .builder-story article { min-height: 0; }
    .builder-v2-story_chapters--scrollytelling .builder-story figure { position: static; }
    .builder-announcement { align-items: flex-start; flex-wrap: wrap; }
    .builder-v2-logo_cloud--marquee .builder-logo-cloud { animation: none; }
}

@media (prefers-reduced-motion: reduce) {
    .builder-v2-logo_cloud--marquee .builder-logo-cloud { animation: none; }
    .builder-v2-story_chapters--scrollytelling .builder-story figure { position: static; }
}

/* Full Firefox UAT — protect content and interactive controls. */
body :is(.builder-foundation--section, .builder-foundation--columns) :is(.builder-v2-block, .builder-foundation)[data-builder-theme-recipe] { background-image:none; }
body .builder-v2-advanced.builder-v2-advanced .builder-advanced-heading { min-width:0; }
@media(max-width:768px) {
 body .builder-v2-advanced.builder-v2-advanced .builder-advanced-heading { display:flex; flex-direction:column; align-items:stretch; gap:12px; }
 body .builder-v2-advanced.builder-v2-advanced:not(.is-stack-never) .builder-story article { grid-template-columns:minmax(0,1fr); }
}
body.theme-ribbon-parlour .builder-v2-block .builder-v2-index { width:fit-content; justify-self:start; }


/* Shared accessible tabs and comparison controls in every theme edition. */
html body .builder-v2-block [data-r26-tabs] [role=tabpanel][hidden] {display:none!important}
html body .builder-v2-block [data-r26-tabs] [role=tab][aria-selected=true] {border-bottom:3px solid var(--color-primary);font-weight:800}
html body .builder-foundation [data-r26-comparison][data-r26-ready] {display:grid;grid-template-columns:minmax(0,1fr);position:relative;isolation:isolate}
html body .builder-foundation [data-r26-comparison][data-r26-ready] figure {grid-area:1/1;margin:0;position:relative;min-width:0}
html body .builder-foundation [data-r26-comparison][data-r26-ready] figure:first-child {z-index:2;clip-path:inset(0 calc(100% - var(--r26-compare-position,50%)) 0 0)}
html body .builder-foundation [data-r26-comparison][data-r26-ready] img {display:block;width:100%;height:100%;object-fit:cover}
html body .builder-foundation [data-r26-comparison][data-r26-ready]::after {content:'';position:absolute;inset-block:0;left:var(--r26-compare-position,50%);border-left:3px solid var(--color-primary);z-index:3;pointer-events:none}
html body .builder-foundation [data-r26-comparison][data-r26-ready] figure:last-child figcaption {left:auto;right:12px}
html body .builder-foundation .r26-comparison-control {padding-block:16px;max-width:100%}
html body .builder-foundation .r26-comparison-control label,html body .builder-foundation .r26-comparison-control output {display:block}
html body .builder-foundation .r26-comparison-control input {display:block;width:100%;min-height:44px;accent-color:var(--color-primary)}
html body .builder-foundation .r26-comparison-control[hidden] {display:none!important}
