.brin-project-showcase {
    --brin-project-sticky-top: 80px;
    --brin-project-stack-offset: 10px;
    --brin-project-card-gap: 90px;
    --brin-project-overlay-color: #060606;
    --brin-project-overlay-strength: 78%;
    --brin-project-overlay-start: 42%;
    --brin-project-image-x: 50%;
    --brin-project-image-y: 50%;
    --brin-project-nav-offset: 18px;
    --brin-project-nav-dot: 8px;
    --brin-project-nav-active: var(--e-global-color-primary, #1f4fff);
    --brin-project-button-bg: var(--e-global-color-primary, #1f4fff);
    --brin-project-cta-icon-shift: 4px;
    --brin-project-cta-transition: 180ms;
    position: relative;
    width: 100%;
    min-width: 0;
    isolation: isolate;
}

.brin-project-showcase__cards {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--brin-project-card-gap);
    width: 100%;
    min-width: 0;
}

.brin-project-showcase__card {
    position: relative;
    scroll-margin-top: calc(var(--brin-project-sticky-top) + 12px);
    width: 100%;
    min-width: 0;
    z-index: calc(10 + var(--brin-project-index, 0));
    perspective: 1400px;
}

.brin-project-showcase.is-sticky .brin-project-showcase__card {
    position: sticky;
    top: var(--brin-project-card-top, var(--brin-project-sticky-top));
}

.brin-project-showcase__motion {
    position: relative;
    width: 100%;
    min-width: 0;
    transform: rotate(var(--brin-project-base-rotation, 0deg));
    transform-origin: center center;
    backface-visibility: hidden;
}

/* Keep compositor hints short-lived. Large sticky stacks can otherwise keep every
   artwork layer promoted for the full page lifetime. */
.brin-project-showcase.is-motion-ready .brin-project-showcase__card.is-active .brin-project-showcase__motion,
.brin-project-showcase.is-motion-ready .brin-project-showcase__card.is-active .brin-project-showcase__image,
.brin-project-showcase.is-motion-ready .brin-project-showcase__card:focus-within .brin-project-showcase__motion,
.brin-project-showcase.is-motion-ready .brin-project-showcase__card:focus-within .brin-project-showcase__image {
    will-change: transform, opacity;
}

@media (hover: hover) and (pointer: fine) {
    .brin-project-showcase.is-motion-ready .brin-project-showcase__surface:hover .brin-project-showcase__image {
        will-change: transform;
    }
}

.brin-project-showcase__surface {
    position: relative;
    display: grid;
    align-items: end;
    width: 100%;
    min-height: 620px;
    overflow: hidden;
    color: var(--e-global-color-rfwhite, #fff);
    background: var(--e-global-color-secondary, #0d0d0d);
    border-radius: 24px;
    transform-style: preserve-3d;
    transform-origin: center center;
    backface-visibility: hidden;
}

.brin-project-showcase__media,
.brin-project-showcase__picture,
.brin-project-showcase__overlay,
.brin-project-showcase__hover-sheen,
.brin-project-showcase__image,
.brin-project-showcase__image-placeholder {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.brin-project-showcase__media {
    overflow: hidden;
    border-radius: inherit;
    pointer-events: none;
}

.brin-project-showcase__picture {
    display: block;
}

.brin-project-showcase__image {
    display: block;
    object-fit: cover;
    object-position:
        var(--brin-project-card-focus-x, var(--brin-project-image-x))
        var(--brin-project-card-focus-y, var(--brin-project-image-y));
    transform: scale(var(--brin-project-base-image-scale, 1.03));
    transform-origin: center center;
}

.brin-project-showcase__image-placeholder {
    background:
        radial-gradient(circle at 78% 24%, rgb(31 79 255 / 20%), transparent 34%),
        linear-gradient(145deg, #151515 0%, #080808 72%);
}

.brin-project-showcase__overlay {
    z-index: 2;
    background: linear-gradient(
        180deg,
        transparent 8%,
        color-mix(in srgb, var(--brin-project-overlay-color) 18%, transparent) var(--brin-project-overlay-start),
        var(--brin-project-overlay-color) 100%
    );
    opacity: var(--brin-project-overlay-strength);
}

@supports not (background: color-mix(in srgb, black 20%, transparent)) {
    .brin-project-showcase__overlay {
        background: linear-gradient(180deg, transparent 8%, rgb(6 6 6 / 22%) 44%, rgb(6 6 6 / 98%) 100%);
    }
}

.brin-project-showcase__hover-sheen {
    z-index: 2;
    opacity: 0;
    background: radial-gradient(
        circle at var(--brin-project-pointer-x, 50%) var(--brin-project-pointer-y, 50%),
        rgb(255 255 255 / 12%) 0,
        rgb(255 255 255 / 4%) 18%,
        transparent 44%
    );
    transition: opacity 220ms ease;
}

.brin-project-showcase__content {
    position: relative;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: start;
    width: 100%;
    max-width: 78%;
    padding: 40px;
    color: var(--e-global-color-rfwhite, #fff);
    transform: translateZ(1px);
}

.brin-project-showcase__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px 18px;
    width: 100%;
    min-width: 0;
}

.brin-project-showcase__meta-group {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
    min-width: 0;
}

.brin-project-showcase__market-label,
.brin-project-showcase__market,
.brin-project-showcase__counter {
    font-family: var(--e-global-typography-text-font-family, inherit);
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.brin-project-showcase__market-label {
    color: rgb(255 255 255 / 74%);
}

.brin-project-showcase__market {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 6px 15px;
    color: #fff;
    background: rgb(10 10 10 / 30%);
    border: 1px solid rgb(255 255 255 / 65%);
    border-radius: 999px;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.brin-project-showcase__counter {
    flex: 0 0 auto;
    margin-inline-start: auto;
    color: rgb(255 255 255 / 62%);
    font-variant-numeric: tabular-nums;
}

.brin-project-showcase__headline {
    width: 100%;
    margin: 18px 0 0;
    color: var(--e-global-color-rfwhite, #fff);
    font-family: var(--e-global-typography-primary-font-family, inherit);
    font-size: clamp(30px, 4.4vw, 76px);
    font-weight: 700;
    line-height: .98;
    letter-spacing: -.035em;
    text-wrap: wrap;
}

.brin-project-showcase__excerpt {
    width: 100%;
    max-width: 100%;
    margin-top: 16px;
    color: rgb(255 255 255 / 82%);
    font-family: var(--e-global-typography-text-font-family, inherit);
    line-height: 1.55;
}

.brin-project-showcase__excerpt > :first-child {
    margin-top: 0;
}

.brin-project-showcase__excerpt > :last-child {
    margin-bottom: 0;
}

.brin-project-showcase__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin-top: 26px;
    min-height: 48px;
    padding: 16px 22px;
    color: #fff;
    background: var(--brin-project-item-accent, var(--brin-project-button-bg, var(--e-global-color-primary, #1f4fff)));
    border-radius: 10px;
    text-decoration: none;
    font-family: var(--e-global-typography-accent-font-family, inherit);
    font-weight: 700;
    line-height: 1;
    transition: background-color var(--brin-project-cta-transition, 180ms) ease, color var(--brin-project-cta-transition, 180ms) ease, border-color var(--brin-project-cta-transition, 180ms) ease, box-shadow var(--brin-project-cta-transition, 180ms) ease;
    touch-action: manipulation;
}

.brin-project-showcase__cta:hover,
.brin-project-showcase__cta:focus-visible {
    color: #fff;
    background: var(--e-global-color-secondary, #0d0d0d);
}

.brin-project-showcase__cta:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 4px;
}

.brin-project-showcase__cta-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    transition: transform 220ms ease;
}

.brin-project-showcase__cta-icon svg,
.brin-project-showcase__cta-icon i {
    width: 1em;
    height: 1em;
    fill: currentColor;
    color: currentColor;
}

@media (hover: hover) and (pointer: fine) {
    .brin-project-showcase__surface:hover .brin-project-showcase__hover-sheen {
        opacity: 1;
    }

    .brin-project-showcase__cta:hover .brin-project-showcase__cta-icon,
    .brin-project-showcase__cta:focus-visible .brin-project-showcase__cta-icon {
        transform: translateX(var(--brin-project-cta-icon-shift, 4px));
    }
}

.brin-project-showcase__empty {
    padding: 18px 20px;
    color: #5f6368;
    background: #f5f5f7;
    border: 1px dashed #c8c8ce;
    border-radius: 10px;
    font-size: 14px;
}

.brin-project-showcase.is-reduced-motion .brin-project-showcase__motion,
.brin-project-showcase.is-reduced-motion .brin-project-showcase__surface,
.brin-project-showcase.is-static .brin-project-showcase__motion,
.brin-project-showcase.is-static .brin-project-showcase__surface {
    will-change: auto;
}

@media (min-width: 768px) and (max-width: 1024px) {
    .brin-project-showcase.is-sticky:not(.is-sticky-tablet) .brin-project-showcase__card {
        position: relative;
        top: auto;
    }
}

@media (max-width: 1024px) {
    .brin-project-showcase__content {
        max-width: 86%;
    }

    .brin-project-showcase__headline {
        font-size: clamp(30px, 6.8vw, 58px);
    }
}

@media (max-width: 767px) {
    .brin-project-showcase.is-sticky:not(.is-sticky-mobile) .brin-project-showcase__card {
        position: relative;
        top: auto;
    }

    .brin-project-showcase__cards {
        gap: max(34px, var(--brin-project-card-gap));
    }

    .brin-project-showcase__image {
        object-position:
            var(--brin-project-card-mobile-focus-x, var(--brin-project-card-focus-x, var(--brin-project-image-x)))
            var(--brin-project-card-mobile-focus-y, var(--brin-project-card-focus-y, var(--brin-project-image-y)));
    }

    .brin-project-showcase__content {
        max-width: 100%;
        padding: 26px 22px;
    }

    .brin-project-showcase__surface {
        min-height: 500px;
    }

    .brin-project-showcase__headline {
        font-size: clamp(28px, 9.5vw, 44px);
        line-height: 1;
    }

    .brin-project-showcase__meta {
        align-items: flex-start;
        gap: 8px;
    }

    .brin-project-showcase__market-label,
    .brin-project-showcase__market,
    .brin-project-showcase__counter {
        font-size: 10px;
    }

    .brin-project-showcase__cta {
        width: 100%;
        min-height: 48px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .brin-project-showcase__motion,
    .brin-project-showcase__surface,
    .brin-project-showcase__image,
    .brin-project-showcase__cta-icon,
    .brin-project-showcase__hover-sheen {
        transition: none !important;
        animation: none !important;
    }
}


/* Optional sticky project navigation. It has zero layout height so it does not shift the card stack. */
.brin-project-showcase__nav {
    position: sticky;
    top: 50%;
    z-index: 200;
    height: 0;
    width: 100%;
    pointer-events: none;
    transform: translateY(-50%);
}

.brin-project-showcase__nav-inner {
    position: absolute;
    top: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    max-width: min(240px, 32vw);
    padding: 8px;
    border: 1px solid rgb(255 255 255 / 12%);
    border-radius: 14px;
    background: rgb(13 13 13 / 68%);
    box-shadow: 0 12px 32px rgb(0 0 0 / 16%);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
    pointer-events: auto;
}

.brin-project-showcase.nav-right .brin-project-showcase__nav-inner {
    right: var(--brin-project-nav-offset);
}

.brin-project-showcase.nav-left .brin-project-showcase__nav-inner {
    left: var(--brin-project-nav-offset);
}

.brin-project-showcase__nav-button {
    --brin-project-nav-color: rgb(255 255 255 / 34%);
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    min-width: 0;
    min-height: 34px;
    padding: 6px 8px;
    color: var(--brin-project-nav-color);
    background: transparent;
    border: 0;
    border-radius: 9px;
    cursor: pointer;
    font: inherit;
    text-align: start;
    transition: color 180ms ease, background-color 180ms ease, transform 180ms ease;
}

.brin-project-showcase__nav-button:hover,
.brin-project-showcase__nav-button:focus-visible {
    color: #fff;
    background: rgb(255 255 255 / 7%);
}

.brin-project-showcase__nav-button:focus-visible {
    outline: 2px solid var(--brin-project-item-accent, var(--brin-project-nav-active));
    outline-offset: 2px;
}

.brin-project-showcase__nav-dot {
    position: relative;
    flex: 0 0 var(--brin-project-nav-dot);
    width: var(--brin-project-nav-dot);
    height: var(--brin-project-nav-dot);
    border: 1px solid currentColor;
    border-radius: 999px;
    background: transparent;
    transition: transform 180ms ease, background-color 180ms ease, border-color 180ms ease;
}

.brin-project-showcase__nav-button.is-active {
    color: #fff;
}

.brin-project-showcase__nav-button.is-active .brin-project-showcase__nav-dot {
    border-color: var(--brin-project-item-accent, var(--brin-project-nav-active));
    background: var(--brin-project-item-accent, var(--brin-project-nav-active));
    transform: scale(1.28);
}

.brin-project-showcase__nav-label {
    display: none;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.brin-project-showcase.has-navigation-labels .brin-project-showcase__nav-label {
    display: block;
}

:where(.brin-project-showcase.has-navigation-labels) .brin-project-showcase__nav-inner {
    min-width: 190px;
}

.brin-project-showcase__content-item {
    min-width: 0;
}

.brin-project-showcase.is-motion-ready .brin-project-showcase__card.is-active .brin-project-showcase__content-item,
.brin-project-showcase.is-motion-ready .brin-project-showcase__card:focus-within .brin-project-showcase__content-item {
    will-change: transform, opacity;
}


@media (max-width: 767px) {
    .brin-project-showcase__nav {
        display: none;
    }

    .brin-project-showcase.has-navigation-mobile .brin-project-showcase__nav {
        display: block;
    }

    .brin-project-showcase.has-navigation-mobile .brin-project-showcase__nav-inner {
        max-width: 44px;
        min-width: 0;
        padding: 6px 5px;
    }

    .brin-project-showcase.has-navigation-mobile .brin-project-showcase__nav-label {
        display: none;
    }

    .brin-project-showcase.has-navigation-mobile .brin-project-showcase__nav-button {
        justify-content: center;
        min-height: 32px;
        padding: 5px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .brin-project-showcase__nav-button,
    .brin-project-showcase__nav-dot {
        transition: none !important;
    }
}

.brin-project-showcase__editor-warning {
    position: relative;
    z-index: 500;
    margin: 0 0 14px;
    padding: 10px 12px;
    color: #8a4b00;
    background: #fff8e5;
    border: 1px solid #dba617;
    border-radius: 8px;
    font: 600 12px/1.45 system-ui, sans-serif;
}

.brin-project-showcase__answer {
    max-width: 100%;
    margin: 0;
    color: var(--brin-project-excerpt-color, rgb(255 255 255 / 82%));
    font: inherit;
    line-height: 1.55;
}

/* Performance profiles intentionally reduce persistent compositing on lower-cost modes. */
.brin-project-showcase.performance-minimal .brin-project-showcase__motion,
.brin-project-showcase.performance-minimal .brin-project-showcase__surface,
.brin-project-showcase.performance-minimal .brin-project-showcase__image {
    will-change: auto;
}

.brin-project-showcase.performance-minimal .brin-project-showcase__hover-sheen {
    display: none;
}

.brin-project-showcase.performance-balanced .brin-project-showcase__market,
.brin-project-showcase.performance-minimal .brin-project-showcase__market {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

.brin-project-showcase__context {
    margin: 10px 0 0;
    color: rgb(255 255 255 / 68%);
    font-size: .75rem;
    line-height: 1.45;
    letter-spacing: .04em;
}

.brin-project-showcase__evidence {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin: 10px 0 0;
    padding: 5px 9px;
    color: #fff;
    background: rgb(13 13 13 / 52%);
    border: 1px solid rgb(255 255 255 / 18%);
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.brin-project-showcase.performance-minimal .brin-project-showcase__content-item {
    will-change: auto;
}

.brin-project-showcase.performance-balanced .brin-project-showcase__nav-inner,
.brin-project-showcase.performance-minimal .brin-project-showcase__nav-inner {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

.brin-project-showcase.performance-minimal .brin-project-showcase__nav-inner {
    box-shadow: none;
}

/* --------------------------------------------------------------------------
 * RenForge Reference Overlay
 * Full-bleed artwork + lower-left information hierarchy based on the studio
 * reference. Native sticky remains transform-free; GSAP owns inner layers.
 *
 * IMPORTANT: visual preset defaults for user-editable elements use :where()
 * so Elementor's generated {{WRAPPER}} control CSS always wins. Do not raise
 * specificity on CTA/label/headline defaults or Style controls will appear
 * broken in the editor.
 * -------------------------------------------------------------------------- */
.brin-project-showcase.layout-reference {
    --brin-project-reference-ratio: 1.25;
    --brin-project-reference-content-width: 100%;
    --brin-project-reference-headline-width: 100%;
    --brin-project-reference-overlay-start: 28%;
    --brin-project-reference-side-shade: 58%;
    --brin-project-reference-vignette: 46%;
    --brin-project-reference-viewport-margin: 56px;
    --brin-project-fit-max-width: 100%;
}

.brin-project-showcase.layout-reference.is-reference-viewport-fit .brin-project-showcase__card {
    width: min(100%, var(--brin-project-fit-max-width, 100%));
}

.brin-project-showcase.layout-reference .brin-project-showcase__motion {
    transform-origin: center top;
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
    aspect-ratio: var(--brin-project-reference-ratio);
    min-height: 0;
    align-items: end;
    background-color: #090909;
    border: 1px solid rgb(255 255 255 / 16%);
    box-shadow: 0 28px 72px rgb(0 0 0 / 24%);
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__media {
    contain: paint;
    background: #090909;
}

.brin-project-showcase.layout-reference .brin-project-showcase__image {
    object-fit: cover;
    user-select: none;
    -webkit-user-drag: none;
}

.brin-project-showcase.layout-reference .brin-project-showcase__overlay {
    z-index: 2;
    opacity: 1;
    background:
        linear-gradient(
            180deg,
            transparent 0%,
            transparent var(--brin-project-reference-overlay-start),
            rgb(6 6 6 / 14%) 43%,
            rgb(6 6 6 / 70%) 69%,
            rgb(6 6 6 / 95%) 91%,
            #060606 100%
        ),
        linear-gradient(
            90deg,
            rgb(6 6 6 / 50%) 0%,
            rgb(6 6 6 / 22%) var(--brin-project-reference-side-shade),
            transparent 88%
        );
}

.brin-project-showcase.layout-reference .brin-project-showcase__overlay::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(
        ellipse at 52% 40%,
        transparent 36%,
        rgb(0 0 0 / 10%) 68%,
        rgb(0 0 0 / 34%) 100%
    );
    opacity: var(--brin-project-reference-vignette);
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
    position: absolute;
    inset: auto auto 0 0;
    z-index: 3;
    width: min(100%, var(--brin-project-reference-content-width, 100%));
    max-width: 100%;
    justify-content: flex-end;
    transform: translateZ(1px);
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta {
    justify-content: flex-start;
    width: auto;
    max-width: 100%;
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta-group {
    gap: 10px 18px;
    max-width: 100%;
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label,
:where(.brin-project-showcase.layout-reference) .brin-project-showcase__market {
    min-height: 36px;
    padding: 9px 24px;
    border-radius: 999px;
    font-size: clamp(10px, 1.05cqw, 14px);
    font-weight: 700;
    line-height: 1;
    letter-spacing: .025em;
    white-space: nowrap;
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label {
    display: inline-flex;
    align-items: center;
    color: #fff;
    background: #0b0b0b;
    border: 1px solid rgb(255 255 255 / 12%);
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__market {
    width: fit-content;
    min-width: 0;
    max-width: 100%;
    flex: 0 0 auto;
    justify-content: center;
    color: #fff;
    background: rgb(10 10 10 / 24%);
    border: 1px solid rgb(255 255 255 / 82%);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline {
    width: min(100%, var(--brin-project-reference-headline-width, 100%));
    max-width: 100%;
    margin-top: 22px;
    overflow-wrap: break-word;
    font-family: var(--e-global-typography-primary-font-family, "Arial Narrow", Impact, sans-serif);
    font-size: clamp(34px, 5.25cqw, 78px);
    font-weight: 800;
    line-height: .94;
    letter-spacing: -.035em;
    text-transform: uppercase;
    text-wrap: wrap;
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
    width: fit-content;
    max-width: 100%;
    min-width: 0;
    min-height: 0;
    margin-top: 30px;
    padding: 18px 30px;
    border-radius: 13px;
    font-family: var(--e-global-typography-accent-font-family, inherit);
    font-size: clamp(12px, 1.15cqw, 16px);
    font-weight: 750;
    letter-spacing: .015em;
    text-transform: uppercase;
    box-shadow: 0 12px 30px color-mix(in srgb, var(--brin-project-item-accent, var(--brin-project-button-bg, #1f4fff)) 24%, transparent);
}

@supports not (box-shadow: 0 0 1px color-mix(in srgb, blue 20%, transparent)) {
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
        box-shadow: 0 12px 30px rgb(31 79 255 / 24%);
    }
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta-icon {
    font-size: 1.18em;
}

:where(.brin-project-showcase.layout-reference) .brin-project-showcase__counter {
    margin-inline-start: 14px;
}

/* Extended mode remains available for answer-oriented/search-rich cards without
   changing the focused reference composition used by default. */
:where(.brin-project-showcase.layout-reference.is-reference-extended) .brin-project-showcase__context,
:where(.brin-project-showcase.layout-reference.is-reference-extended) .brin-project-showcase__answer,
:where(.brin-project-showcase.layout-reference.is-reference-extended) .brin-project-showcase__excerpt {
    max-width: 100%;
}

@media (hover: hover) and (pointer: fine) {
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        transition: border-color 220ms ease, box-shadow 220ms ease;
    }

    .brin-project-showcase.layout-reference .brin-project-showcase__card.is-active .brin-project-showcase__surface,
    .brin-project-showcase.layout-reference .brin-project-showcase__card:focus-within .brin-project-showcase__surface,
    .brin-project-showcase.layout-reference .brin-project-showcase__surface:hover {
        border-color: rgb(255 255 255 / 24%);
        box-shadow: 0 34px 88px rgb(0 0 0 / 32%);
    }
}

@media (max-width: 1024px) {
    .brin-project-showcase.layout-reference {
        --brin-project-reference-viewport-margin: 40px;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market {
        min-height: 32px;
        padding: 8px 18px;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline {
        font-size: clamp(32px, 6.8cqw, 62px);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
        min-height: 52px;
        padding: 16px 24px;
    }
}

@media (max-width: 767px) {
    .brin-project-showcase.layout-reference {
        --brin-project-reference-viewport-margin: 24px;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        aspect-ratio: var(--brin-project-reference-ratio);
        min-height: 0;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
        max-width: 100%;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta-group {
        gap: 8px;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market {
        min-width: 0;
        min-height: 28px;
        padding: 7px 12px;
        font-size: 9px;
        white-space: normal;
        text-align: center;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline {
        margin-top: 16px;
        font-size: clamp(28px, 10cqw, 48px);
        line-height: .96;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
        width: auto;
        max-width: 100%;
        min-width: 0;
        min-height: 48px;
        margin-top: 20px;
        padding: 14px 18px;
        font-size: 11px;
    }
}

@media (prefers-reduced-motion: reduce) {
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        transition: none !important;
    }
}

/* v0.74 rendering/runtime polish -------------------------------------------------
 * When Project Showcase is used as a normal flow list (not sticky and without the
 * navigation rail), let modern browsers skip off-screen paint/layout work. Sticky
 * stacks are deliberately excluded because their geometry must stay continuously
 * measurable for native sticky positioning and ScrollTrigger.
 */
@supports (content-visibility: auto) {
    .brin-project-showcase.is-flow:not(.has-project-navigation) .brin-project-showcase__card {
        content-visibility: auto;
        contain-intrinsic-size: auto 720px;
    }
}

/* Honor the browser's explicit reduced-data preference when the Network
 * Information API is available. JS disables decorative motion; these rules also
 * remove the costliest visual effects even if the widget was configured as Full.
 */
.brin-project-showcase.is-data-saver .brin-project-showcase__motion,
.brin-project-showcase.is-data-saver .brin-project-showcase__surface,
.brin-project-showcase.is-data-saver .brin-project-showcase__image {
    will-change: auto !important;
}

.brin-project-showcase.is-data-saver .brin-project-showcase__hover-sheen {
    display: none;
}

.brin-project-showcase.is-data-saver .brin-project-showcase__market,
.brin-project-showcase.is-data-saver .brin-project-showcase__nav-inner {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

.brin-project-showcase.is-data-saver .brin-project-showcase__surface,
.brin-project-showcase.is-data-saver.layout-reference .brin-project-showcase__surface {
    box-shadow: none !important;
}

/* At breakpoints where sticky is intentionally disabled, the cards can receive
 * the same off-screen rendering optimization as Flow mode. Navigation is excluded
 * so direct project jumps always resolve against fully measured card geometry. */
@supports (content-visibility: auto) {
    @media (min-width: 768px) and (max-width: 1024px) {
        .brin-project-showcase.is-sticky:not(.is-sticky-tablet):not(.has-project-navigation) .brin-project-showcase__card {
            content-visibility: auto;
            contain-intrinsic-size: auto 680px;
        }
    }

    @media (max-width: 767px) {
        .brin-project-showcase.is-sticky:not(.is-sticky-mobile):not(.has-project-navigation) .brin-project-showcase__card {
            content-visibility: auto;
            contain-intrinsic-size: auto 560px;
        }
    }
}

/* Keep every card fully rendered while editing so Elementor's navigator, drag
 * handles, inline controls, and measurements always see the complete showcase. */
.elementor-editor-active .brin-project-showcase .brin-project-showcase__card {
    content-visibility: visible;
    contain-intrinsic-size: none;
}

/* Keep frontend/editor CTA output honest. When no usable destination exists we do
 * not render a fake CTA in the editor; instead show a small non-layout warning so
 * the published composition and editor composition stay in parity. */
.elementor-editor-active .brin-project-showcase__editor-cta-warning,
.elementor-edit-area .brin-project-showcase__editor-cta-warning {
    position: absolute;
    right: 0;
    bottom: 0;
    z-index: 8;
    max-width: min(320px, 88%);
    padding: 8px 10px;
    border: 1px dashed rgb(255 255 255 / 35%);
    border-radius: 7px;
    color: #fff;
    background: rgb(20 20 20 / 88%);
    font: 500 11px/1.35 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    letter-spacing: 0;
    text-transform: none;
    pointer-events: none;
}


/* --------------------------------------------------------------------------
 * v0.83 Responsive hardening
 * Internal Project Showcase composition responds to the widget's rendered width
 * rather than assuming viewport width equals available Elementor container width.
 * Elementor {{WRAPPER}} control selectors remain more specific and authoritative.
 * -------------------------------------------------------------------------- */
.brin-project-showcase {
    container-name: brin-project-showcase;
    container-type: inline-size;
    display: flow-root;
    max-width: 100%;
}

.brin-project-showcase,
.brin-project-showcase *,
.brin-project-showcase *::before,
.brin-project-showcase *::after {
    box-sizing: border-box;
}

.brin-project-showcase__cards,
.brin-project-showcase__card,
.brin-project-showcase__motion,
.brin-project-showcase__surface,
.brin-project-showcase__content,
.brin-project-showcase__meta,
.brin-project-showcase__meta-group,
.brin-project-showcase__headline,
.brin-project-showcase__excerpt,
.brin-project-showcase__answer,
.brin-project-showcase__context {
    min-width: 0;
    max-width: 100%;
}

@container brin-project-showcase (max-width: 900px) {
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
        padding: clamp(24px, 4.6cqw, 36px);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta-group {
        flex-wrap: wrap;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market {
        font-size: clamp(9px, 1.35cqw, 12px);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline {
        font-size: clamp(32px, 7.2cqw, 58px);
        line-height: .96;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
        font-size: clamp(11px, 1.45cqw, 14px);
    }
}

/* Compact reference cards keep their overlay content in normal flow. The image
   stays absolutely positioned as a background, but labels/headline/CTA now
   contribute to surface height, preventing the next Elementor section from
   entering the card when content wraps on phones or narrow nested containers. */
@container brin-project-showcase (max-width: 720px) {
    .brin-project-showcase__card {
        perspective: none;
    }

    .brin-project-showcase.layout-reference .brin-project-showcase__motion {
        transform: none;
        transform-origin: center center;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
        aspect-ratio: var(--brin-project-reference-ratio, .82);
        min-height: clamp(500px, 128cqw, 720px);
        transform-style: flat;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
        position: relative;
        inset: auto;
        flex: 0 0 auto;
        width: min(100%, var(--brin-project-reference-content-width, 100%));
        margin-top: auto;
        padding: clamp(20px, 5.5cqw, 28px);
        transform: none;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta {
        align-items: flex-start;
        width: 100%;
        gap: 8px;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta-group {
        width: 100%;
        gap: 7px 9px;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market {
        max-width: 100%;
        min-height: 0;
        padding: 7px 11px;
        font-size: clamp(9px, 2.6cqw, 11px);
        line-height: 1.15;
        white-space: normal;
        overflow-wrap: anywhere;
        text-align: center;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline {
        width: min(100%, var(--brin-project-reference-headline-width, 100%));
        margin-top: clamp(13px, 3.8cqw, 18px);
        font-size: clamp(28px, 9.5cqw, 44px);
        line-height: .97;
        letter-spacing: -.025em;
        overflow-wrap: anywhere;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
        max-width: 100%;
        margin-top: clamp(16px, 4.8cqw, 22px);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta-text {
        min-width: 0;
        overflow-wrap: anywhere;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__overlay {
        background:
            linear-gradient(180deg, transparent 0%, transparent 18%, rgb(6 6 6 / 18%) 37%, rgb(6 6 6 / 76%) 63%, rgb(6 6 6 / 97%) 88%, #060606 100%),
            linear-gradient(90deg, rgb(6 6 6 / 36%) 0%, transparent 86%);
    }
}

@container brin-project-showcase (max-width: 480px) {
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        min-height: clamp(500px, 142cqw, 660px);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
        padding: clamp(17px, 5cqw, 22px);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline {
        font-size: clamp(27px, 10.2cqw, 39px);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
        min-height: 44px;
    }
}

/* Transforms/rotation must not create page-level horizontal scrolling. `clip`
   avoids introducing a scrolling ancestor, preserving CSS sticky behavior. */
@supports (overflow: clip) {
    .brin-project-showcase__cards {
        overflow-x: clip;
        overflow-y: visible;
    }
}

/* --------------------------------------------------------------------------
 * v0.84 Cross-device responsive polish
 * Container-query tiers are the layout source of truth for the Reference preset.
 * Elementor's generated {{WRAPPER}} selectors remain more specific and can
 * override all user-facing dimensions, typography, padding, and widths.
 * -------------------------------------------------------------------------- */
.brin-project-showcase {
    --brin-project-compact-min-height: 620px;
}

/* Avoid the older viewport-only mobile CTA fallback forcing a full-width button
   when the component is compact. Elementor's Width control can still override. */
@container brin-project-showcase (max-width: 720px) {
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        min-height: var(--brin-project-compact-min-height, 500px);
        height: auto;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
        min-height: 0;
        overflow: visible;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__image {
        object-position:
            var(--brin-project-card-mobile-focus-x, var(--brin-project-card-focus-x, var(--brin-project-image-x)))
            var(--brin-project-card-mobile-focus-y, var(--brin-project-card-focus-y, var(--brin-project-image-y)));
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta-text {
        word-break: normal;
        overflow-wrap: break-word;
        hyphens: none;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
        width: fit-content;
        max-width: 100%;
        min-width: 0;
    }
}

/* Very small phones get a predictable stacked metadata row and safe text measure.
   These are only low-specificity fallback rules; Elementor controls still win. */
@container brin-project-showcase (max-width: 360px) {
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
        padding-inline: max(16px, 5cqw);
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__meta-group {
        flex-direction: column;
        align-items: flex-start;
        width: 100%;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market-label,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__market {
        width: fit-content;
        max-width: 100%;
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__headline {
        font-size: clamp(26px, 10.4cqw, 36px);
        line-height: .98;
    }
}

/* Container-query-capable browsers use the component width for composition.
   Keep only sticky enable/disable semantics in viewport media queries; reference
   visual sizing is handled by the @container tiers above. */
@supports (container-type: inline-size) {
    @media (max-width: 767px) {
        :where(.brin-project-showcase.layout-reference) .brin-project-showcase__cta {
            width: fit-content;
        }
    }
}

/* Let the Elementor widget flex item shrink cleanly inside nested row containers. */
.elementor-widget-brin-project-showcase {
    min-width: 0;
    max-width: 100%;
}

/* Conservative fallback for browsers without size container queries. Modern
   browsers use the component-width rules above. */
@supports not (container-type: inline-size) {
    @media (max-width: 767px) {
        .brin-project-showcase.layout-reference .brin-project-showcase__motion {
            transform: none;
        }

        :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
            display: flex;
            flex-direction: column;
            justify-content: flex-end;
            min-height: var(--brin-project-compact-min-height, 500px);
        }

        :where(.brin-project-showcase.layout-reference) .brin-project-showcase__content {
            position: relative;
            inset: auto;
            margin-top: auto;
            max-width: 100%;
            transform: none;
        }
    }
}


/* --------------------------------------------------------------------------
 * v0.85 Mobile intrinsic-height guard
 * Reference cards below the compact threshold must always reserve real document
 * flow height. A stale Elementor responsive value of 0 must never collapse the
 * Project Showcase and allow the following section to paint through it.
 * -------------------------------------------------------------------------- */
.brin-project-showcase {
    --brin-project-compact-safety-floor: 360px;
    --brin-project-runtime-min-height: 0px;
}

@container brin-project-showcase (max-width: 720px) {
    /* Sticky enable/disable follows the component tier too. This prevents a
       compact showcase inside a wide Elementor canvas from staying sticky just
       because the browser viewport itself is desktop-sized. */
    .brin-project-showcase.is-sticky:not(.is-sticky-mobile) .brin-project-showcase__card {
        position: relative;
        top: auto;
    }

    /* Mobile/compact cards are content-driven. Disable the desktop preferred
       aspect-ratio so intrinsic content + the responsive minimum height own the
       block size. Artwork remains absolute/full-bleed inside the surface. */
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        aspect-ratio: auto;
        height: auto;
    }

    /* Guard every structural layer. `max()` preserves Elementor's responsive
       Compact Card Minimum Height while rejecting legacy/stale 0px values. */
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__card,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__motion,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        min-block-size: max(
            var(--brin-project-compact-safety-floor, 360px),
            var(--brin-project-compact-min-height, 500px),
            var(--brin-project-runtime-min-height, 0px)
        );
    }

    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__motion,
    :where(.brin-project-showcase.layout-reference) .brin-project-showcase__surface {
        block-size: auto;
    }

    /* Compact cards need exact intrinsic geometry for Elementor and for the next
       section's flow position, so do not let content-visibility skip their layout. */
    .brin-project-showcase.layout-reference .brin-project-showcase__card {
        content-visibility: visible;
        contain-intrinsic-size: none;
    }
}

