/* Styles are limited to the animation widget. */
.acc-stack {
    width: 100%;
    color: #fff;
    font-family: "Britti Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
    line-height: 1.4;
    isolation: isolate;
}

.acc-stack,
.acc-stack * {
    box-sizing: border-box;
}

.acc-stack .device {
    position: relative;
    width: 100%;
    height: var(--acc-height, min(900px, 100svh));
    min-height: 480px;
    overflow-y: auto;
    overflow-x: hidden;
    container-type: inline-size;
    scrollbar-width: none;
    scroll-snap-type: y proximity;
    scroll-behavior: auto;
    overscroll-behavior-y: auto;
}

.acc-stack button {
    font: inherit;
    padding: 0;
    box-shadow: none;
    text-transform: none;
    letter-spacing: normal;
}

.acc-stack button:focus-visible,
.acc-stack a:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 4px;
}

.acc-stack * {
    box-sizing: border-box;
}

.acc-stack .hero {
    height: calc(var(--dh) * 7);
    position: relative;
}

.acc-stack .snap {
    position: absolute;
    left: 0;
    height: 1px;
    width: 1px;
    scroll-snap-align: start;
}

.acc-stack .pin {
    position: sticky;
    top: 0;
    height: var(--dh);
    display: flex;
    flex-direction: column;
    align-items: center;
    overflow: hidden;
    background: linear-gradient(135deg, #0a5cff 0%, #0636b8 22%, #031f78 50%, #02134a 75%, #000 100%);
}

.acc-stack .acc-title {
    font-weight: 400;
    text-align: center;
    margin: calc(var(--dh) * 0.045) 16px clamp(20px, 3cqi, 40px);
    flex-shrink: 0;
    color: #fff;
    padding: 0;
    font-size: clamp(24px, 3.6cqi, 46px);
    line-height: 1.12;
}

.acc-stack .scene {
    position: relative;
    flex: 1;
    width: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.acc-stack .stage {
    position: relative;
    flex: none;
}

.acc-stack .acc-title {
    transition: translate 0.5s ease-out;
}

.acc-stack .grp {
    pointer-events: none;
    position: absolute;
    inset: 0;
    transition: translate 0.5s ease-out;
}

.acc-stack .float .grp {
    animation: acc-bob 6s ease-in-out infinite;
    animation-delay: var(--ph);
}

@keyframes acc-bob {
0%, 100% {
        transform: translateY(0);
    }

50% {
        transform: translateY(calc(var(--amp) * -1));
    }

}

.acc-stack .layer {
    position: absolute;
    opacity: 0;
    transition:
        opacity var(--dur, 0.5s) ease var(--d, 0s),
        visibility 0s linear var(--hide-delay, 0s);
    pointer-events: none;
}

.acc-stack .layer img {
    width: 100%;
    height: 100%;
    display: block;
}

.acc-stack .glow .pulse img {
    animation: acc-pulse 3.4s ease-in-out infinite;
}

.acc-stack .glow .flow img {
    animation: acc-pulse 3.4s ease-in-out infinite, acc-flow 3.2s linear infinite;
    -webkit-mask-image: linear-gradient(to top, #0008 0%, #000 25%, #0008 50%, #000 75%, #0008 100%);
    mask-image: linear-gradient(to top, #0008 0%, #000 25%, #0008 50%, #000 75%, #0008 100%);
    -webkit-mask-size: 100% 200%;
    mask-size: 100% 200%;
}

@keyframes acc-pulse {
0%, 100% {
        opacity: .65;
        filter: brightness(1);
    }

50% {
        opacity: 1;
        filter: brightness(1.35);
    }

}

@keyframes acc-flow {
from {
        -webkit-mask-position: 0 0%;
        mask-position: 0 0%;
    }

to {
        -webkit-mask-position: 0 100%;
        mask-position: 0 100%;
    }

}

.acc-stack svg.lines {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
}

.acc-stack svg.lines path,
.acc-stack svg.mlines path {
    fill: none;
    stroke: #1aa3ff;
    stroke-width: 1.2;
    vector-effect: non-scaling-stroke;
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
    transition: stroke-dashoffset 0.5s ease var(--d, 0s);
}

.acc-stack svg.lines path.on,
.acc-stack svg.mlines path.on {
    stroke-dashoffset: 0;
}

.acc-stack .lab {
    position: absolute;
    width: 270px;
    font-size: 13px;
    line-height: 1.35;
    opacity: 0;
    transition: opacity 0.5s ease, transform 0.5s ease;
}

.acc-stack .lab.L {
    text-align: right;
    transform: translateX(-100%) translateX(-8px);
}

.acc-stack .lab.R {
    transform: translateX(8px);
}

.acc-stack .lab.on.L {
    transform: translateX(-100%);
    opacity: 1;
}

.acc-stack .lab.on.R {
    transform: none;
    opacity: 1;
}

.acc-stack .lab b,
.acc-stack .cap b {
    display: block;
    font-weight: 400;
    color: #1aa3ff;
}

.acc-stack .lab b {
    white-space: normal;
}

.acc-stack .lab .btn {
    position: static;
    margin-top: 12px;
}

.acc-stack .lab.L .btn {
    right: 0;
}

.acc-stack .btn {
    display: inline-block;
    border: 1px solid #1aa3ff;
    border-radius: 999px;
    padding: 5px 12px;
    font-size: 12px;
    letter-spacing: .02em;
    color: #fff;
    text-decoration: none;
}

.acc-stack .nav {
    position: absolute;
    top: 50%;
    width: 58px;
    height: 58px;
    margin-top: -29px;
    border-radius: 50%;
    border: 0;
    background: #1aa3ff;
    color: #fff;
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: background .3s, opacity .3s;
}

.acc-stack .nav svg {
    width: 22px;
    height: 22px;
}

.acc-stack .nav:disabled {
    background: #1aa3ff30;
    color: #ffffff60;
    cursor: default;
}

.acc-stack .nav.prev {
    left: 4cqi;
}

.acc-stack .nav.next {
    right: 4cqi;
}

.acc-stack .sub {
    text-align: center;
    margin: clamp(20px, 3cqi, 40px) 16px calc(var(--dh) * 0.05);
    flex-shrink: 0;
    color: #fff;
    font-size: clamp(15px, 1.6cqi, 20px);
    line-height: 1.25;
    max-width: 520px;
}

.acc-stack .dots {
    position: absolute;
    bottom: 14px;
    display: flex;
    gap: 2px;
}

.acc-stack .dots button {
    width: 19px;
    height: 19px;
    border: 0;
    padding: 0;
    background: none;
    cursor: pointer;
    display: grid;
    place-items: center;
}

.acc-stack .dots button::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #ffffff40;
    transition: background .3s;
}

.acc-stack .dots button.on::before {
    background: #1aa3ff;
}

.acc-stack .cap,
.acc-stack svg.mlines {
    display: none;
}

@container (max-width: 899px) {
.acc-stack .lab,
.acc-stack svg.lines,
.acc-stack .pin > .sub,
.acc-stack .dots,
.acc-stack .pin > .nav {
        display: none;
    }

.acc-stack .acc-title {
        font-size: 26px;
        margin-top: 28px;
        margin-bottom: clamp(16px, 3cqi, 24px);
    }

.acc-stack .cap {
        position: relative;
        z-index: 2;
        flex: none;
        display: block;
        width: 100%;
        padding: 0 24px 0 44px;
        min-height: 170px;
        font-size: 16px;
        line-height: 1.4;
        margin-top: 10px;
    }

.acc-stack .mnav {
        display: flex;
        align-items: center;
        gap: 12px;
        margin-bottom: 8px;
        font-size: 12px;
        color: #ffffff90;
        letter-spacing: .08em;
    }

.acc-stack .mnav button {
        width: 34px;
        height: 34px;
        border-radius: 50%;
        border: 0;
        background: #1aa3ff;
        color: #fff;
        display: grid;
        place-items: center;
        cursor: pointer;
    }

.acc-stack .mnav button:disabled {
        background: #1aa3ff30;
        color: #ffffff60;
    }

.acc-stack .mnav svg {
        width: 14px;
        height: 14px;
    }

.acc-stack .cap .inner {
        transition: opacity .25s ease, transform .25s ease;
    }

.acc-stack .cap .inner.swap {
        opacity: 0;
        transform: translateY(8px);
    }

.acc-stack .cap .btn {
        margin-top: 12px;
    }

.acc-stack .cap .hint {
        color: #ffffffa0;
    }

.acc-stack svg.mlines {
        display: block;
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        pointer-events: none;
        overflow: visible;
    }

}

@media (prefers-reduced-motion: reduce) {
.acc-stack .grp,
.acc-stack .layer img {
        animation: none !important;
    }

}

.acc-stack .layer img {
    object-fit: contain;
}

@media (prefers-reduced-motion: reduce) {
.acc-stack *,
.acc-stack *::before,
.acc-stack *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
    }

}

/* Stop effects on invisible artwork, including on desktop. */
.acc-stack .layer.is-hidden img {
    animation-play-state: paused;
}

/* Safari/iPhone: reduce large composited SVG surfaces and repeated repainting.
   Keep artwork, opening transitions and crossfades; omit continuous effects. */
.acc-stack[data-acc-mobile="true"] .device {
    scroll-snap-type: none;
    overscroll-behavior-y: auto;
}

/* End the inner scroll at the last mobile landing point, without the
   prototype's extra pause. Allow following gestures to continue on the page. */
.acc-stack[data-acc-mobile="true"] .hero {
    height: calc(var(--dh) * var(--acc-mobile-screens, 5.7));
}

.acc-stack[data-acc-mobile="true"] .grp {
    animation: none;
}

.acc-stack[data-acc-mobile="true"] .layer img {
    animation: none;
    filter: none;
    -webkit-mask-image: none;
    mask-image: none;
}

/* Product titles and descriptions reduced by 3 px from the previous version. */
.acc-stack .lab.emphasis {
    font-size: 15px;
}

.acc-stack .lab.emphasis b {
    font-size: 16px;
    white-space: normal;
}

/* Mobile keeps the previous 16 px product titles and descriptions. */
.acc-stack .cap .emphasis-title,
.acc-stack .cap .emphasis-description {
    font-size: 16px;
}

.acc-stack .acc-title,
.acc-stack .sub,
.acc-stack .lab .btn,
.acc-stack .dots,
.acc-stack .mnav > span {
    transition: opacity 0.5s ease, visibility 0s linear var(--text-hide-delay, 0s), translate 0.5s ease-out;
}

/* Preserve the scene geometry while fading away non-highlighted text. */
.acc-stack[data-acc-final="true"] {
    --text-hide-delay: 0.5s;
}

.acc-stack[data-acc-final="true"] .dots,
.acc-stack[data-acc-final="true"] .mnav > span {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.acc-stack .final-description + .final-description {
    margin-top: 18px;
}

/* Hide only the widget scrollbar; wheel and touch scrolling stay enabled. */
.acc-stack .device::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
}

/* Desktop arrows are direct children of the pinned scene.
   Mobile arrows live inside .mnav and remain available. */
.acc-stack .pin > .nav {
    display: none;
}

/* Mobile restores the former final overview: only the two descriptions,
   the artwork and their CTA buttons. Desktop retains heading and subtitle. */
.acc-stack[data-acc-mobile="true"][data-acc-final="true"] .acc-title,
.acc-stack[data-acc-mobile="true"][data-acc-final="true"] .sub {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* Text columns are measured as full blocks, including their CTA. */
.acc-stack .lab {
    overflow-wrap: anywhere;
}

.acc-stack .lab .t {
    transform: none;
}

.acc-stack .cap .inner {
    overflow-wrap: anywhere;
}

/* Last-resort text-only layout for unusually constrained Elementor containers.
   The SVG artboard, scaling factor and group transforms remain proportional. */
.acc-stack[data-acc-text-layout="caption"] .lab,
.acc-stack[data-acc-text-layout="caption"] svg.lines {
    display: none;
}

.acc-stack[data-acc-text-layout="caption"] .cap {
    display: block;
    position: relative;
    z-index: 2;
    flex: none;
    width: 100%;
    padding: 0 24px;
    margin-top: 10px;
    max-height: 60%;
    overflow-y: auto;
    overscroll-behavior-y: auto;
    scrollbar-width: none;
    font-size: 16px;
    line-height: 1.4;
}

.acc-stack[data-acc-text-layout="caption"] .mnav {
    display: none;
}

.acc-stack[data-acc-text-layout="caption"] .cap .btn {
    margin-top: 12px;
}

.acc-stack[data-acc-text-layout="caption"] .cap .emphasis-title {
    font-size: 16px;
}

.acc-stack[data-acc-text-layout="caption"] .cap .emphasis-description {
    font-size: 15px;
}

.acc-stack[data-acc-text-layout="caption"] .cap::-webkit-scrollbar {
    display: none;
}

/* No final snap point may pull the scroll away from the actual lower edge. */
.acc-stack[data-acc-final="true"] .device {
    scroll-snap-type: none;
}
