/* WPEX Framework 0.3 — native Gutenberg layout primitives. */
:root {
    --wpex-space-none: 0;
    --wpex-space-2xs: clamp(.35rem, .3rem + .2vw, .5rem);
    --wpex-space-xs: clamp(.55rem, .45rem + .35vw, .75rem);
    --wpex-space-s: clamp(.8rem, .65rem + .5vw, 1.25rem);
    --wpex-space-m: clamp(1.25rem, 1rem + .9vw, 2rem);
    --wpex-space-l: clamp(2rem, 1.5rem + 1.5vw, 3rem);
    --wpex-space-xl: clamp(3rem, 2rem + 3vw, 5.625rem);
    --wpex-space-2xl: clamp(4rem, 2.5rem + 5vw, 7.5rem);
    --wpex-space-3xl: clamp(5rem, 3rem + 7vw, 10rem);
    --wpex-width-text: 720px;
    --wpex-width-narrow: 960px;
    --wpex-width-content: 1240px;
    --wpex-width-wide: 1560px;
    --wpex-width-max: 1830px;
    --wpex-gutter: clamp(20px, 3vw, 55px);
}

.wpex-section {
    position: relative;
    width: 100%;
    display: flex;
    flex-direction: column;
}
.wpex-section--space-none { padding-block: 0; }
.wpex-section--space-2xs { padding-block: var(--wpex-space-2xs); }
.wpex-section--space-xs { padding-block: var(--wpex-space-xs); }
.wpex-section--space-s { padding-block: var(--wpex-space-s); }
.wpex-section--space-m { padding-block: var(--wpex-space-m); }
.wpex-section--space-l { padding-block: var(--wpex-space-l); }
.wpex-section--space-xl { padding-block: var(--wpex-space-xl); }
.wpex-section--space-2xl { padding-block: var(--wpex-space-2xl); }
.wpex-section--space-3xl { padding-block: var(--wpex-space-3xl); }
.wpex-section--min-50vh { min-height: 50vh; }
.wpex-section--min-75vh { min-height: 75vh; }
.wpex-section--min-100svh { min-height: 100svh; }
.wpex-section--valign-center { justify-content: center; }
.wpex-section--valign-end { justify-content: flex-end; }
.wpex-section--overflow-hidden { overflow: hidden; }
.wpex-section--overflow-clip { overflow: clip; }

.wpex-container {
    width: min(100% - (2 * var(--wpex-gutter)), var(--wpex-width-content));
    margin-inline: auto;
    container-type: inline-size;
}
.wpex-container--text { max-width: var(--wpex-width-text); }
.wpex-container--narrow { max-width: var(--wpex-width-narrow); }
.wpex-container--content { max-width: var(--wpex-width-content); }
.wpex-container--wide { max-width: var(--wpex-width-wide); }
.wpex-container--full { width: 100%; max-width: none; }

.wpex-stack {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}
.wpex-stack > * { margin-block: 0; }

.wpex-cluster {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}
.wpex-cluster--nowrap { flex-wrap: nowrap; }

.wpex-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    align-items: stretch;
    container-type: inline-size;
}
.wpex-grid--fixed.wpex-grid-cols-1 { grid-template-columns: repeat(1,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-2 { grid-template-columns: repeat(2,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-3 { grid-template-columns: repeat(3,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-4 { grid-template-columns: repeat(4,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-5 { grid-template-columns: repeat(5,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-6 { grid-template-columns: repeat(6,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-7 { grid-template-columns: repeat(7,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-8 { grid-template-columns: repeat(8,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-9 { grid-template-columns: repeat(9,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-10 { grid-template-columns: repeat(10,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-11 { grid-template-columns: repeat(11,minmax(0,1fr)); }
.wpex-grid--fixed.wpex-grid-cols-12 { grid-template-columns: repeat(12,minmax(0,1fr)); }
.wpex-grid--auto-fit { grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wpex-grid-min,260px)), 1fr)); }

.wpex-gap-none { gap: 0; }
.wpex-gap-2xs { column-gap: var(--wpex-space-2xs); gap: var(--wpex-space-2xs); }
.wpex-gap-xs { column-gap: var(--wpex-space-xs); gap: var(--wpex-space-xs); }
.wpex-gap-s { column-gap: var(--wpex-space-s); gap: var(--wpex-space-s); }
.wpex-gap-m { column-gap: var(--wpex-space-m); gap: var(--wpex-space-m); }
.wpex-gap-l { column-gap: var(--wpex-space-l); gap: var(--wpex-space-l); }
.wpex-gap-xl { column-gap: var(--wpex-space-xl); gap: var(--wpex-space-xl); }
.wpex-gap-2xl { column-gap: var(--wpex-space-2xl); gap: var(--wpex-space-2xl); }
.wpex-gap-3xl { column-gap: var(--wpex-space-3xl); gap: var(--wpex-space-3xl); }
.wpex-row-gap-none { row-gap: 0; }
.wpex-row-gap-2xs { row-gap: var(--wpex-space-2xs); }
.wpex-row-gap-xs { row-gap: var(--wpex-space-xs); }
.wpex-row-gap-s { row-gap: var(--wpex-space-s); }
.wpex-row-gap-m { row-gap: var(--wpex-space-m); }
.wpex-row-gap-l { row-gap: var(--wpex-space-l); }
.wpex-row-gap-xl { row-gap: var(--wpex-space-xl); }
.wpex-row-gap-2xl { row-gap: var(--wpex-space-2xl); }
.wpex-row-gap-3xl { row-gap: var(--wpex-space-3xl); }

.wpex-grid-span-d-1 { grid-column-end: span 1; }.wpex-grid-span-d-2 { grid-column-end: span 2; }.wpex-grid-span-d-3 { grid-column-end: span 3; }.wpex-grid-span-d-4 { grid-column-end: span 4; }.wpex-grid-span-d-5 { grid-column-end: span 5; }.wpex-grid-span-d-6 { grid-column-end: span 6; }.wpex-grid-span-d-7 { grid-column-end: span 7; }.wpex-grid-span-d-8 { grid-column-end: span 8; }.wpex-grid-span-d-9 { grid-column-end: span 9; }.wpex-grid-span-d-10 { grid-column-end: span 10; }.wpex-grid-span-d-11 { grid-column-end: span 11; }.wpex-grid-span-d-12 { grid-column-end: span 12; }
.wpex-grid-start-d-1 { grid-column-start: 1; }.wpex-grid-start-d-2 { grid-column-start: 2; }.wpex-grid-start-d-3 { grid-column-start: 3; }.wpex-grid-start-d-4 { grid-column-start: 4; }.wpex-grid-start-d-5 { grid-column-start: 5; }.wpex-grid-start-d-6 { grid-column-start: 6; }.wpex-grid-start-d-7 { grid-column-start: 7; }.wpex-grid-start-d-8 { grid-column-start: 8; }.wpex-grid-start-d-9 { grid-column-start: 9; }.wpex-grid-start-d-10 { grid-column-start: 10; }.wpex-grid-start-d-11 { grid-column-start: 11; }.wpex-grid-start-d-12 { grid-column-start: 12; }
.wpex-grid-align-start { align-self: start; }.wpex-grid-align-center { align-self: center; }.wpex-grid-align-end { align-self: end; }.wpex-grid-align-stretch { align-self: stretch; }

.wpex-frame { position: relative; overflow: hidden; }
.wpex-frame > :is(img,picture,video,figure,.wp-block-image,.wp-block-video) { width: 100%; height: 100%; margin: 0; }
.wpex-frame img,.wpex-frame video,.wpex-frame .wp-block-image img { width:100%; height:100%; object-fit:cover; display:block; }
.wpex-frame--auto { aspect-ratio: auto; }.wpex-frame--1-1 { aspect-ratio:1/1; }.wpex-frame--4-3 { aspect-ratio:4/3; }.wpex-frame--3-2 { aspect-ratio:3/2; }.wpex-frame--16-9 { aspect-ratio:16/9; }.wpex-frame--21-9 { aspect-ratio:21/9; }.wpex-frame--3-4 { aspect-ratio:3/4; }
.wpex-frame--fit-contain img,.wpex-frame--fit-contain video { object-fit:contain; }
.wpex-frame--pos-top img,.wpex-frame--pos-top video { object-position:center top; }.wpex-frame--pos-bottom img,.wpex-frame--pos-bottom video { object-position:center bottom; }.wpex-frame--pos-left img,.wpex-frame--pos-left video { object-position:left center; }.wpex-frame--pos-right img,.wpex-frame--pos-right video { object-position:right center; }
.wpex-radius-none { border-radius:0; }.wpex-radius-s { border-radius:7px; }.wpex-radius-m { border-radius:10px; }.wpex-radius-l { border-radius:20px; }.wpex-radius-xl { border-radius:30px; }

/* Responsive grid item classes. Keep the grid itself twelve-column; children choose spans. */
@media (max-width: 1023px) {
    .wpex-grid-span-t-1 { grid-column-end:span 1; }.wpex-grid-span-t-2 { grid-column-end:span 2; }.wpex-grid-span-t-3 { grid-column-end:span 3; }.wpex-grid-span-t-4 { grid-column-end:span 4; }.wpex-grid-span-t-5 { grid-column-end:span 5; }.wpex-grid-span-t-6 { grid-column-end:span 6; }.wpex-grid-span-t-7 { grid-column-end:span 7; }.wpex-grid-span-t-8 { grid-column-end:span 8; }.wpex-grid-span-t-9 { grid-column-end:span 9; }.wpex-grid-span-t-10 { grid-column-end:span 10; }.wpex-grid-span-t-11 { grid-column-end:span 11; }.wpex-grid-span-t-12 { grid-column-end:span 12; }
    [class*="wpex-grid-start-d-"] { grid-column-start:auto; }
}
@media (max-width: 599px) {
    .wpex-grid-span-m-1 { grid-column-end:span 1; }.wpex-grid-span-m-2 { grid-column-end:span 2; }.wpex-grid-span-m-3 { grid-column-end:span 3; }.wpex-grid-span-m-4 { grid-column-end:span 4; }.wpex-grid-span-m-5 { grid-column-end:span 5; }.wpex-grid-span-m-6 { grid-column-end:span 6; }.wpex-grid-span-m-7 { grid-column-end:span 7; }.wpex-grid-span-m-8 { grid-column-end:span 8; }.wpex-grid-span-m-9 { grid-column-end:span 9; }.wpex-grid-span-m-10 { grid-column-end:span 10; }.wpex-grid-span-m-11 { grid-column-end:span 11; }.wpex-grid-span-m-12 { grid-column-end:span 12; }
}

/* Container-query enhancement: components collapse based on their available width, not only viewport width. */
@container (max-width: 720px) {
    .wpex-grid > :where([class*="wpex-grid-span-d-"]):not([class*="wpex-grid-span-m-"]) { grid-column: 1 / -1; }
    .wpex-cluster { row-gap: var(--wpex-space-xs); }
}

/* Stage 2 core block styles retained. */
.is-style-wpex-card { border:1px solid var(--wp--preset--color--border,#d0d0d0); border-radius:var(--wp--custom--radius--medium,10px); }
.is-style-wpex-primary .wp-block-button__link { background:var(--wp--preset--color--primary,#0ea5ff); color:#fff; }
.is-style-wpex-secondary .wp-block-button__link { background:var(--wp--preset--color--dark,#0b1f2a); color:#fff; }
.is-style-wpex-text-link .wp-block-button__link { background:transparent; color:currentColor; padding-inline:0; }
.is-style-wpex-rounded img { border-radius:var(--wp--custom--radius--medium,10px); }
.is-style-wpex-display { font-size:var(--wp--preset--font-size--display,clamp(3.5rem,7vw,7.5rem)); line-height:.95; }
.is-style-wpex-eyebrow { font-size:var(--wp--preset--font-size--small,.875rem); letter-spacing:.08em; text-transform:uppercase; }

/* --------------------------------------------------------------------------
   Stage 4 — Core Gutenberg design system
   -------------------------------------------------------------------------- */

:root {
    --wpex-primary: var(--wp--preset--color--primary, #0ea5ff);
    --wpex-dark: var(--wp--preset--color--dark, #0b1f2a);
    --wpex-ink: var(--wp--preset--color--ink, #23212f);
    --wpex-body: var(--wp--preset--color--body, #444);
    --wpex-light: var(--wp--preset--color--light, #f2f7fa);
    --wpex-border: var(--wp--preset--color--border, #d0d0d0);
    --wpex-white: #fff;
    --wpex-radius-s: 7px;
    --wpex-radius-m: 10px;
    --wpex-radius-l: 20px;
    --wpex-radius-xl: 30px;
    --wpex-shadow-soft: 0 18px 55px rgba(11,31,42,.09);
    --wpex-shadow-card: 0 12px 34px rgba(11,31,42,.08);
    --wpex-transition: 280ms cubic-bezier(.2,.7,.2,1);
}

/* 4.1 Heading styles ------------------------------------------------------- */
.wp-block-heading.is-style-wpex-display,
.is-style-wpex-display.wp-block-heading {
    margin-block-start: 0;
    font-size: clamp(3.5rem, 7vw, 7.5rem);
    line-height: .93;
    letter-spacing: -.055em;
    font-weight: 500;
    text-wrap: balance;
}

.wp-block-heading.is-style-wpex-editorial {
    max-width: 18ch;
    margin-block-start: 0;
    font-size: clamp(2.5rem, 5vw, 5.75rem);
    line-height: .98;
    letter-spacing: -.045em;
    font-weight: 500;
    text-wrap: balance;
}

.wp-block-heading.is-style-wpex-outline {
    color: transparent;
    -webkit-text-stroke: 1.5px currentColor;
    -webkit-text-stroke-color: var(--wpex-ink);
    paint-order: stroke fill;
}

.wp-block-heading.is-style-wpex-gradient {
    color: transparent;
    background: linear-gradient(110deg, var(--wpex-primary), #7fd7ff 48%, var(--wpex-dark));
    -webkit-background-clip: text;
    background-clip: text;
}

.wp-block-heading.is-style-wpex-eyebrow,
.is-style-wpex-eyebrow.wp-block-heading {
    margin-block: 0 var(--wpex-space-s);
    font-size: .875rem;
    line-height: 1.5;
    letter-spacing: .08em;
    text-transform: uppercase;
    font-weight: 600;
}

/* 4.2 Button styles -------------------------------------------------------- */
.wp-block-button[class*="is-style-wpex-"] .wp-block-button__link {
    position: relative;
    display: inline-flex;
    gap: .65em;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    border: 1px solid transparent;
    border-radius: var(--wpex-radius-m);
    padding: .72rem 1.25rem;
    font-size: .9375rem;
    line-height: 1.4;
    font-weight: 600;
    text-decoration: none;
    transition: transform var(--wpex-transition), background-color var(--wpex-transition), color var(--wpex-transition), border-color var(--wpex-transition), box-shadow var(--wpex-transition);
}

.wp-block-button[class*="is-style-wpex-"] .wp-block-button__link:hover {
    transform: translateY(-2px);
}

.wp-block-button.is-style-wpex-primary .wp-block-button__link {
    color: var(--wpex-white);
    background: var(--wpex-primary);
    box-shadow: 0 8px 24px rgba(14,165,255,.2);
}
.wp-block-button.is-style-wpex-primary .wp-block-button__link:hover { box-shadow: 0 12px 30px rgba(14,165,255,.28); }

.wp-block-button.is-style-wpex-secondary .wp-block-button__link {
    color: var(--wpex-dark);
    background: transparent;
    border-color: color-mix(in srgb, var(--wpex-dark) 28%, transparent);
}
.wp-block-button.is-style-wpex-secondary .wp-block-button__link:hover { border-color: var(--wpex-dark); }

.wp-block-button.is-style-wpex-dark .wp-block-button__link {
    color: var(--wpex-white);
    background: var(--wpex-dark);
}

.wp-block-button.is-style-wpex-light .wp-block-button__link {
    color: var(--wpex-dark);
    background: var(--wpex-white);
    border-color: rgba(11,31,42,.1);
}

.wp-block-button.is-style-wpex-text-link .wp-block-button__link {
    min-height: 0;
    padding: .2rem 0;
    color: currentColor;
    background: transparent;
    border-radius: 0;
    border-bottom: 1px solid currentColor;
}
.wp-block-button.is-style-wpex-text-link .wp-block-button__link:hover { transform: translateX(4px); }

/* 4.3 Image styles --------------------------------------------------------- */
.wp-block-image.is-style-wpex-rounded img { border-radius: var(--wpex-radius-l); }

.wp-block-image.is-style-wpex-full-bleed {
    width: 100vw;
    max-width: 100vw;
    margin-inline: calc(50% - 50vw);
}
.wp-block-image.is-style-wpex-full-bleed img { width: 100%; display: block; }

.wp-block-image.is-style-wpex-portrait { aspect-ratio: 4 / 5; overflow: hidden; border-radius: var(--wpex-radius-l); }
.wp-block-image.is-style-wpex-portrait img { width: 100%; height: 100%; object-fit: cover; }

.wp-block-image.is-style-wpex-editorial-media {
    position: relative;
    overflow: hidden;
    border-radius: var(--wpex-radius-xl);
    box-shadow: var(--wpex-shadow-soft);
}
.wp-block-image.is-style-wpex-editorial-media img { width: 100%; display: block; }

/* 4.4 Group / card styles -------------------------------------------------- */
.wp-block-group.is-style-wpex-card,
.is-style-wpex-card.wp-block-group {
    padding: clamp(1.25rem, 2.5vw, 2.5rem);
    border: 1px solid var(--wpex-border);
    border-radius: var(--wpex-radius-l);
    background: var(--wpex-white);
    box-shadow: var(--wpex-shadow-card);
}

.wp-block-group.is-style-wpex-surface {
    padding: clamp(1.25rem, 2.5vw, 2.75rem);
    border-radius: var(--wpex-radius-l);
    background: var(--wpex-light);
}

.wp-block-group.is-style-wpex-dark-panel {
    padding: clamp(1.5rem, 3vw, 3.5rem);
    border-radius: var(--wpex-radius-l);
    color: rgba(255,255,255,.88);
    background: var(--wpex-dark);
}
.wp-block-group.is-style-wpex-dark-panel :is(h1,h2,h3,h4,h5,h6,a) { color: var(--wpex-white); }

.wp-block-group.is-style-wpex-glass {
    padding: clamp(1.25rem, 2.5vw, 2.5rem);
    border: 1px solid rgba(255,255,255,.26);
    border-radius: var(--wpex-radius-l);
    background: rgba(255,255,255,.12);
    -webkit-backdrop-filter: blur(18px);
    backdrop-filter: blur(18px);
}

/* 4.5 Quotes / testimonials ------------------------------------------------ */
.wp-block-quote.is-style-wpex-editorial-quote {
    margin-inline: 0;
    padding: 0 0 0 clamp(1rem, 2vw, 2rem);
    border-left: 3px solid var(--wpex-primary);
    font-size: clamp(1.5rem, 2.8vw, 2.75rem);
    line-height: 1.15;
    letter-spacing: -.025em;
}
.wp-block-quote.is-style-wpex-editorial-quote p { font: inherit; }

.wp-block-quote.is-style-wpex-testimonial {
    margin: 0;
    padding: clamp(1.35rem, 2.5vw, 2.6rem);
    border: 0;
    border-radius: var(--wpex-radius-l);
    background: var(--wpex-light);
    box-shadow: none;
}
.wp-block-quote.is-style-wpex-testimonial p {
    margin-bottom: 1.5rem;
    font-size: clamp(1.125rem, 1.4vw, 1.45rem);
    line-height: 1.45;
}
.wp-block-quote.is-style-wpex-testimonial cite { font-size: .875rem; font-style: normal; font-weight: 600; }

.wp-block-quote.is-style-wpex-pull-quote {
    margin-inline: 0;
    padding: 0;
    border: 0;
    font-size: clamp(2rem, 4vw, 4.5rem);
    line-height: 1.04;
    letter-spacing: -.04em;
}
.wp-block-quote.is-style-wpex-pull-quote p { font: inherit; }

/* 4.6 Navigation styles ---------------------------------------------------- */
.wp-block-navigation.is-style-wpex-minimal-nav { gap: clamp(.65rem, 1.2vw, 1.4rem); }
.wp-block-navigation.is-style-wpex-minimal-nav .wp-block-navigation-item__content {
    position: relative;
    font-size: .875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .02em;
}
.wp-block-navigation.is-style-wpex-minimal-nav .wp-block-navigation-item__content::after {
    content: '';
    position: absolute;
    left: 0; right: 100%; bottom: -.25rem;
    height: 1px;
    background: currentColor;
    transition: right var(--wpex-transition);
}
.wp-block-navigation.is-style-wpex-minimal-nav .wp-block-navigation-item__content:hover::after { right: 0; }

.wp-block-navigation.is-style-wpex-pill-nav {
    width: fit-content;
    padding: .35rem;
    border-radius: 999px;
    background: rgba(255,255,255,.75);
    box-shadow: 0 8px 24px rgba(11,31,42,.08);
    -webkit-backdrop-filter: blur(16px);
    backdrop-filter: blur(16px);
}
.wp-block-navigation.is-style-wpex-pill-nav .wp-block-navigation-item__content {
    border-radius: 999px;
    padding: .6rem .9rem;
    font-size: .875rem;
    font-weight: 600;
}

.wp-block-navigation.is-style-wpex-overlay-nav {
    color: var(--wpex-white);
}
.wp-block-navigation.is-style-wpex-overlay-nav .wp-block-navigation-item__content { color: inherit; font-weight: 600; }

/* 4.7 Query / post-template styling --------------------------------------- */
.wp-block-query.is-style-wpex-query-cards .wp-block-post-template,
.wp-block-post-template.is-style-wpex-post-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr));
    gap: var(--wpex-space-l);
}
.wp-block-query.is-style-wpex-query-cards .wp-block-post,
.wp-block-post-template.is-style-wpex-post-grid > .wp-block-post {
    min-width: 0;
    padding: clamp(1rem, 2vw, 1.5rem);
    border: 1px solid var(--wpex-border);
    border-radius: var(--wpex-radius-l);
    background: var(--wpex-white);
}

.wp-block-query.is-style-wpex-query-editorial .wp-block-post-template {
    display: grid;
    gap: 0;
}
.wp-block-query.is-style-wpex-query-editorial .wp-block-post {
    display: grid;
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    gap: var(--wpex-space-l);
    align-items: center;
    padding-block: var(--wpex-space-l);
    border-bottom: 1px solid var(--wpex-border);
}

.wp-block-query.is-style-wpex-query-minimal .wp-block-post-template,
.wp-block-post-template.is-style-wpex-post-list { display: grid; gap: 0; }
.wp-block-query.is-style-wpex-query-minimal .wp-block-post,
.wp-block-post-template.is-style-wpex-post-list > .wp-block-post {
    padding-block: var(--wpex-space-s);
    border-bottom: 1px solid var(--wpex-border);
}

@media (max-width: 767px) {
    .wp-block-query.is-style-wpex-query-editorial .wp-block-post { grid-template-columns: 1fr; }
    .wp-block-image.is-style-wpex-full-bleed { width: 100%; max-width: 100%; margin-inline: 0; }
}

/* --------------------------------------------------------------------------
   Stage 7 — advanced components
   -------------------------------------------------------------------------- */

/* 7.1 Marquee ------------------------------------------------------------- */
.wpex-marquee {
    position: relative;
    display: flex;
    width: 100%;
    overflow: hidden;
    contain: layout paint;
}
.wpex-marquee__track {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    width: max-content;
    min-width: 100%;
    gap: var(--wpex-marquee-gap, var(--wpex-space-l));
    padding-inline-end: var(--wpex-marquee-gap, var(--wpex-space-l));
    will-change: transform;
}
.wpex-marquee__track > * { flex: 0 0 auto; margin-block: 0; }

/* 7.2 Image reveal -------------------------------------------------------- */
[data-wpex-motion="image-reveal"],
.wpex-image-reveal {
    overflow: hidden;
}
[data-wpex-motion="image-reveal"] img,
.wpex-image-reveal img {
    transform-origin: center center;
}

/* 7.3 Text reveal --------------------------------------------------------- */
[data-wpex-motion="text-reveal"],
.wpex-text-reveal {
    overflow: clip;
}

/* 7.4 Parallax media ------------------------------------------------------ */
.wpex-parallax {
    position: relative;
    overflow: hidden;
}
.wpex-parallax :is(img, video, .wp-block-image img) {
    display: block;
    width: 100%;
    height: 112%;
    max-width: none;
    object-fit: cover;
    transform-origin: center center;
}

/* 7.5 Sticky / pinned section -------------------------------------------- */
.wpex-pinned-section {
    position: relative;
    min-height: 120vh;
}
.wpex-pinned-section__sticky {
    position: relative;
    width: 100%;
}

/* 7.6 Horizontal scrolling section --------------------------------------- */
.wpex-horizontal-scroll {
    position: relative;
    width: 100%;
    min-height: 100svh;
    overflow: hidden;
}
.wpex-horizontal-scroll__track {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    width: max-content;
    min-width: 100%;
    gap: var(--wpex-horizontal-gap, var(--wpex-space-m));
    will-change: transform;
}
.wpex-horizontal-scroll__track > * {
    flex: 0 0 min(82vw, 860px);
    margin-block: 0;
}
.wpex-horizontal-scroll--static {
    min-height: 0;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
}
.wpex-horizontal-scroll--static .wpex-horizontal-scroll__track {
    width: max-content;
    transform: none !important;
}

/* 7.7 Animated project cards --------------------------------------------- */
.wpex-project-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--wpex-space-s);
}
.wpex-project-card .wp-block-image {
    overflow: hidden;
    margin-block: 0;
    border-radius: var(--wpex-radius-l);
}
.wpex-project-card .wp-block-image img {
    width: 100%;
    transition: none;
    transform-origin: center center;
}
.wpex-project-card__arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    will-change: transform;
}

/* 7.8 Functional interaction primitives --------------------------------- */
.wpex-disclosure {
    border-top: 1px solid var(--wpex-border);
}
.wpex-disclosure:last-child { border-bottom: 1px solid var(--wpex-border); }
.wpex-disclosure [data-wpex-disclosure-trigger] {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    gap: var(--wpex-space-s);
    cursor: pointer;
}
.wpex-disclosure [data-wpex-disclosure-panel][hidden] { display: none; }

@media (max-width: 767px) {
    .wpex-pinned-section { min-height: 0; }
    .wpex-horizontal-scroll { min-height: 0; overflow-x: auto; }
    .wpex-horizontal-scroll__track > * { flex-basis: min(88vw, 620px); }
    .wpex-parallax :is(img, video, .wp-block-image img) { height: 100%; transform: none !important; }
}

@media (prefers-reduced-motion: reduce) {
    .wpex-marquee { overflow-x: auto; }
    .wpex-marquee__track,
    .wpex-horizontal-scroll__track,
    .wpex-parallax :is(img,video,.wp-block-image img),
    .wpex-project-card .wp-block-image img,
    .wpex-project-card__arrow {
        transform: none !important;
    }
}

/* Native Details block enhancement for Stage 7.8. */
.wp-block-details.is-style-wpex-disclosure {
    border-top: 1px solid var(--wpex-border);
    padding-block: 0;
}
.wp-block-details.is-style-wpex-disclosure:last-child { border-bottom: 1px solid var(--wpex-border); }
.wp-block-details.is-style-wpex-disclosure > summary {
    cursor: pointer;
    padding-block: var(--wpex-space-s);
    font-family: var(--wp--preset--font-family--heading, inherit);
    font-weight: 600;
    list-style-position: outside;
}
.wp-block-details.is-style-wpex-disclosure > :not(summary) {
    margin-inline-start: 0;
}
.wp-block-details.is-style-wpex-disclosure[open] > summary { color: var(--wpex-primary); }


/* Stage 8 reusable carousel primitive. */
.wpex-carousel { position:relative; }
.wpex-carousel__viewport { position:relative; overflow:hidden; }
.wpex-carousel__slide { position:absolute !important; inset:0; width:100%; opacity:0; visibility:hidden; pointer-events:none; }
.wpex-carousel__slide.is-active { position:relative !important; opacity:1; visibility:visible; pointer-events:auto; }
.editor-styles-wrapper .wpex-carousel__slide { position:relative !important; opacity:1 !important; visibility:visible !important; pointer-events:auto !important; }
@media (prefers-reduced-motion: reduce) { .wpex-carousel__slide { transition:none !important; } }
