/* summit-vault — layout, sizes, motion only (colours live in the template) */

.summit-vault {
    padding-top: 14.5rem;
    --summit-r: 37rem;
    --summit-lift: 9rem;
    --summit-bubble: 5.5rem;
}

.summit-vault__glow {
    width: 64rem;
    height: 40rem;
    transform: translate(-50%, -30%);
    filter: blur(90px);
}

.summit-vault__eyebrow {
    letter-spacing: 0.18em;
}

.summit-vault__title {
    letter-spacing: -0.03em;
    text-wrap: balance;
}

.summit-vault__cta {
    min-width: 12rem;
}

.summit-vault__dot {
    width: 0.25rem;
    height: 0.25rem;
}

/* dome stage: a full circle anchored above the text; lower half fades out */
.summit-vault__stage {
    top: calc(-1 * (var(--summit-lift) + var(--summit-bubble)));
    width: calc(2 * (var(--summit-r) + var(--summit-bubble)));
    height: calc(2 * (var(--summit-r) + var(--summit-bubble)));
    transform: translateX(-50%);
    -webkit-mask-image: linear-gradient(to bottom, black 0%, black 40%, transparent 60%);
    mask-image: linear-gradient(to bottom, black 0%, black 40%, transparent 60%);
}

.summit-vault__ring {
    inset: calc(var(--summit-bubble) + 12%);
}

.summit-vault__dome {
    inset: var(--summit-bubble);
}

/* bubbles placed on the circle: rotate → push out by radius → rotate back */
.summit-vault__slot {
    --summit-a: 0deg;
    width: var(--summit-bubble);
    height: var(--summit-bubble);
    transform: translate(-50%, -50%) rotate(var(--summit-a)) translateY(calc(-1 * var(--summit-r))) rotate(calc(-1 * var(--summit-a)));
}

.summit-vault__slot--p1  { --summit-a: -80deg; }
.summit-vault__slot--p2  { --summit-a: 80deg; }
.summit-vault__slot--p3  { --summit-a: -56deg; }
.summit-vault__slot--p4  { --summit-a: 56deg; }
.summit-vault__slot--p5  { --summit-a: -32deg; }
.summit-vault__slot--p6  { --summit-a: 32deg; }
.summit-vault__slot--p7  { --summit-a: 0deg; }
.summit-vault__slot--p8  { --summit-a: -68deg; }
.summit-vault__slot--p9  { --summit-a: 68deg; }
.summit-vault__slot--p10 { --summit-a: -44deg; }

.summit-vault__glyph {
    font-size: 1.75rem;
}

/* staggered "lighting up" loop */
.summit-vault__bubble {
    transform: scale(0.85);
    opacity: 0.45;
    animation: summit-vault-pop 10s ease-in-out infinite;
}

.summit-vault__bubble--d1  { animation-delay: 0s; }
.summit-vault__bubble--d2  { animation-delay: 1s; }
.summit-vault__bubble--d3  { animation-delay: 2s; }
.summit-vault__bubble--d4  { animation-delay: 3s; }
.summit-vault__bubble--d5  { animation-delay: 4s; }
.summit-vault__bubble--d6  { animation-delay: 5s; }
.summit-vault__bubble--d7  { animation-delay: 6s; }
.summit-vault__bubble--d8  { animation-delay: 7s; }
.summit-vault__bubble--d9  { animation-delay: 8s; }
.summit-vault__bubble--d10 { animation-delay: 9s; }

@keyframes summit-vault-pop {
    0%   { transform: scale(0.85); opacity: 0.45; }
    8%   { transform: scale(1);    opacity: 1; }
    40%  { transform: scale(1);    opacity: 1; }
    50%  { transform: scale(0.85); opacity: 0.45; }
    100% { transform: scale(0.85); opacity: 0.45; }
}

@media (max-width: 1023.98px) {
    .summit-vault {
        padding-top: 11.5rem;
        --summit-r: 25rem;
        --summit-lift: 7rem;
        --summit-bubble: 4.5rem;
    }

    .summit-vault__slot--p1,
    .summit-vault__slot--p2,
    .summit-vault__slot--p8,
    .summit-vault__slot--p9 {
        display: none;
    }

    .summit-vault__glyph {
        font-size: 1.4rem;
    }
}

@media (max-width: 767.98px) {
    .summit-vault {
        padding-top: 8.5rem;
        --summit-r: 12.5rem;
        --summit-lift: 5.5rem;
        --summit-bubble: 3.25rem;
    }

    .summit-vault__glow {
        width: 28rem;
        height: 24rem;
    }

    .summit-vault__slot--p10 {
        display: none;
    }

    .summit-vault__glyph {
        font-size: 1.1rem;
    }
}

@media (max-width: 639.98px) {
    .summit-vault__dot {
        display: none !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .summit-vault__bubble {
        animation: none;
        transform: none;
        opacity: 1;
    }
}


.process__hover-lift {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.process__hover-lift:hover {
    transform: scale(1.04);
}

.process__step-group:hover .process__badge-rise,
.process__step-group:hover .process__icon-rise {
    transform: scale(1.08);
}

/* Менш «важка» анімація (soft / fluid варіанти) */
.process--hover-soft .process__hover-lift:hover,
.process--hover-fluid .process__hover-lift:hover {
    transform: translateY(-3px);
}

.process--hover-soft .process__step-group:hover .process__badge-rise,
.process--hover-soft .process__step-group:hover .process__icon-rise,
.process--hover-fluid .process__step-group:hover .process__badge-rise {
    transform: scale(1.025);
}

.process--hover-fluid .process__hover-lift {
    transition:
        transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.process--hover-fluid .process__badge-rise,
.process--hover-fluid .process__deco-rise {
    transition:
        transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
        opacity 0.35s ease;
}

.process.process--timeline-compact .process__hover-lift:hover {
    transform: translateY(-2px);
}

/* process--timeline-compact: один відступ від осі лінії (TW/BS); картка на всю ширину ряду */
.process.process--timeline-compact .process__step {
    padding-left: 5rem;
}

@media (min-width: 768px) {
    .process.process--timeline-compact .process__step {
        padding-left: 5.5rem;
    }
}

.process.process--timeline-compact .process__card {
    max-width: none;
    width: 100%;
    box-sizing: border-box;
}


/* Лише тінь на картці, без scale (soft) */
.process--hover-soft .process__card.process__hover-lift:hover {
    transform: none;
}

/* Контраст цифр на світлому / градієнті */
.process__num-pop {
    box-shadow:
        0 0 0 3px var(--bs-body-bg, #fff),
        0 4px 14px rgba(0, 0, 0, 0.18);
}

.process__meta-on-primary {
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}

/* Вертикальна лінія: видима ширина (BS) + центр під колом w-12 (3rem) */
.process__vline--through-12 {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 1.5rem;
    width: 0.25rem;
    margin-left: -0.125rem;
    border-radius: 9999px;
    pointer-events: none;
    z-index: 0;
}

/* Центр під колом w-16 (4rem) — v2 таймлайн */
.process__vline--through-16 {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 2rem;
    width: 0.25rem;
    margin-left: -0.125rem;
    border-radius: 9999px;
    pointer-events: none;
    z-index: 0;
}

/* Вузол w-8, left 1.25rem → центр 2.25rem */
.process__vline--through-node-sm {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 2.25rem;
    width: 0.25rem;
    margin-left: -0.125rem;
    border-radius: 9999px;
    pointer-events: none;
    z-index: 0;
}

/* Горизонтальна лінія таймлайну (v19) */
.process__hline--bar {
    position: absolute;
    left: 0;
    right: 0;
    height: 0.25rem;
    top: 1.5rem;
    margin-top: -0.125rem;
    border-radius: 9999px;
    pointer-events: none;
    z-index: 0;
}

/* v3: номер над карточкою (BS/TW) */
.process__float-num-fix {
    top: -1.5rem;
}

.process__float--lifted {
    top: -1.35rem;
    left: 0.75rem;
}

/* Легкий блюр + темний шар (білий заголовок на світлому фото) */
.process__overlay-blur {
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    background-color: rgba(15, 23, 42, 0.62);
}

.process__head-glass {
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.45);
}

/* Відступ під «літаючий» номер (BS часто потребує більше) */
.process__card--float-gap {
    padding-top: 6.75rem;
}

/* v6: центральна вісь на всю висоту */
.process__vline--center-md {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 0.25rem;
    margin-left: -0.125rem;
    border-radius: 9999px;
    pointer-events: none;
    z-index: 0;
}

@media (min-width: 768px) {
    .process__step-row > .process__dot--center-line {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }
}

.process__badge-rise,
.process__icon-rise {
    transition: transform 0.3s ease;
}

.process__decor-dot {
    opacity: 0.45;
    transition: opacity 0.3s ease;
}

.process__step-group:hover .process__decor-dot {
    opacity: 1;
}

.process__decor-dot--subtle {
    opacity: 0.28;
}

.process__step-group:hover .process__decor-dot--subtle {
    opacity: 0.7;
}

.process__step-group:hover .process__deco-rise {
    opacity: 0.45;
}

.process__deco-rise {
    transition: opacity 0.3s ease;
}

/* Кола з цифрами — синхрон з Tailwind w-* h-* */
.process__num-fixed--8 {
    width: 2rem;
    height: 2rem;
    min-width: 2rem;
    min-height: 2rem;
    box-sizing: border-box;
    flex-shrink: 0;
}

.process__num-fixed--10 {
    width: 2.5rem;
    height: 2.5rem;
    min-width: 2.5rem;
    min-height: 2.5rem;
    box-sizing: border-box;
    flex-shrink: 0;
}

.process__num-fixed--12 {
    width: 3rem;
    height: 3rem;
    min-width: 3rem;
    min-height: 3rem;
    box-sizing: border-box;
    flex-shrink: 0;
}

.process__num-fixed--16 {
    width: 4rem;
    height: 4rem;
    min-width: 4rem;
    min-height: 4rem;
    box-sizing: border-box;
    flex-shrink: 0;
}

.process__num-fixed--20 {
    width: 5rem;
    height: 5rem;
    min-width: 5rem;
    min-height: 5rem;
    box-sizing: border-box;
    flex-shrink: 0;
}

.process__num-fixed--24 {
    width: 6rem;
    height: 6rem;
    min-width: 6rem;
    min-height: 6rem;
    box-sizing: border-box;
    flex-shrink: 0;
}

.process__num-fixed--32 {
    width: 8rem;
    height: 8rem;
    min-width: 8rem;
    min-height: 8rem;
    box-sizing: border-box;
    flex-shrink: 0;
}

/* v2 аватар: квадратне поле + cover → рівне коло з rounded-circle */
.process__avatar-img {
    width: 6rem;
    height: 6rem;
    min-width: 6rem;
    min-height: 6rem;
    object-fit: cover;
    display: block;
    margin-left: auto;
    margin-right: auto;
}

/* v1 @ifRandom декор: якір + розмір (щоб не «літав» у BS) */
.process__decor-blob-fix {
    position: absolute;
    width: 10rem;
    height: 10rem;
    top: -2.5rem;
    right: 1rem;
    z-index: -1;
    pointer-events: none;
}

/* v5 декор тло */
.process__decor-faint-fix {
    position: absolute;
    width: 6rem;
    height: 6rem;
    top: 25%;
    left: 0;
    z-index: -1;
    pointer-events: none;
}

/* v14 glow */
.process__glow-fix {
    position: absolute;
    width: 16rem;
    height: 16rem;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: -1;
    pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
    .process__hover-lift,
    .process__badge-rise,
    .process__icon-rise,
    .process__decor-dot,
    .process__decor-dot--subtle,
    .process__deco-rise {
        transition: none;
    }

    .process__hover-lift:hover,
    .process--hover-soft .process__hover-lift:hover,
    .process--hover-fluid .process__hover-lift:hover,
    .process.process--timeline-compact .process__hover-lift:hover {
        transform: none;
    }

    .process__step-group:hover .process__badge-rise,
    .process__step-group:hover .process__icon-rise {
        transform: none;
    }

    .process__step-group:hover .process__decor-dot,
    .process__step-group:hover .process__decor-dot--subtle,
    .process__step-group:hover .process__deco-rise {
        opacity: unset;
    }
}

/* v22 tabs — button transition (active colors via TW/BS classes in blade + JS) */
.perks-tab-filter__btn {
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

/* whyus v16 — ransom-note table layout: pulse rings, scrim, giant row numbers, scroll-snap track */
/* No colors below: only white/black shade-as-opacity for the scrim (per project exception), everything else is layout/size/animation/transform. */

/* Geometry shared by both CSS frameworks (Bootstrap has no utilities for it) */
.whyus-ransom__section--py {
    padding-top: 6rem;
    padding-bottom: 6rem;
}

.mxw-3xl {
    max-width: 48rem !important;
}

.mxw-md {
    max-width: 28rem !important;
}

.whyus-ransom__head,
.whyus-ransom__media {
    margin-bottom: 4rem;
}

.whyus-ransom__note {
    margin-top: 4rem;
}

.whyus-ransom__foot {
    margin-top: 4rem;
}

.whyus-ransom__title {
    font-size: 1.875rem;
    letter-spacing: 0.025em;
}

.whyus-ransom__subtitle {
    font-size: 1rem;
}

.whyus-ransom__caption {
    font-size: 0.75rem;
    letter-spacing: 0.1em;
}

.whyus-ransom__icon {
    font-size: 1.875rem;
}

.whyus-ransom__item-title {
    font-size: 1.125rem;
    transition: letter-spacing 300ms ease;
}

.whyus-ransom__item-title:hover {
    letter-spacing: 0.025em;
}

.whyus-ransom__cta {
    padding: 1rem 2.5rem;
    letter-spacing: 0.025em;
    transition: transform 300ms ease;
}

.whyus-ransom__cta--hover:hover {
    transform: scale(1.05);
}

.whyus-ransom__decor {
    contain: layout style;
}

.whyus-ransom__pulse-ring {
    top: 50%;
    left: 50%;
    width: 12rem;
    height: 12rem;
    transform: translate(-50%, -50%) scale(0.6);
    opacity: 0;
    --bs-border-opacity: 0.2;
    animation: whyus-ransom-pulse 4s ease-out infinite;
}

/* content-first: rings start after the heading's fade-in has already begun */
.whyus-ransom__pulse-ring--1 {
    --bs-border-opacity: 0.3;
    animation-delay: 0.8s;
}

.whyus-ransom__pulse-ring--2 {
    width: 20rem;
    height: 20rem;
    animation-delay: 1.6s;
}

.whyus-ransom__pulse-ring--3 {
    width: 28rem;
    height: 28rem;
    animation-delay: 2.4s;
}

@keyframes whyus-ransom-pulse {
    0% {
        transform: translate(-50%, -50%) scale(0.6);
        opacity: 0.6;
    }
    70% {
        opacity: 0;
    }
    100% {
        transform: translate(-50%, -50%) scale(1.4);
        opacity: 0;
    }
}

.whyus-ransom__fade-in {
    animation: whyus-ransom-fade-in 0.5s ease-out both;
}

@keyframes whyus-ransom-fade-in {
    from {
        opacity: 0;
        transform: translateY(0.75rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* radial vignette over the hero illustration only — pure lightness/opacity fade, not a hue */
.whyus-ransom__scrim {
    background: radial-gradient(circle at center, rgba(255, 255, 255, 0.35), rgba(255, 255, 255, 0) 70%);
}

@media (prefers-color-scheme: dark) {
    .whyus-ransom__scrim {
        background: radial-gradient(circle at center, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0) 70%);
    }
}

.whyus-ransom__accent {
    display: block;
    font-size: 2.25rem;
    font-weight: 900;
    letter-spacing: -0.025em;
    transform: rotate(-1deg);
}

.whyus-ransom__row-group {
    overflow: hidden;
}

.whyus-ransom__row-number {
    top: -1.5rem;
    right: 0;
    font-size: 6rem;
    font-weight: 900;
    line-height: 1;
    z-index: 0;
    --bs-text-opacity: 0.05;
}

.whyus-ransom__row-track {
    flex-direction: column;
    gap: 2rem;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
}

.whyus-ransom__row-item {
    padding-inline-start: 1.5rem;
    scroll-snap-align: start;
}

.whyus-ransom__row-item:first-child {
    border-inline-start-width: 0;
}

.whyus-ransom__snippet pre {
    white-space: pre-wrap;
}

@media (min-width: 768px) {
    .whyus-ransom__section--py {
        padding-top: 8rem;
        padding-bottom: 8rem;
    }

    .whyus-ransom__head,
    .whyus-ransom__media {
        margin-bottom: 6rem;
    }

    .whyus-ransom__note {
        margin-top: 6rem;
    }

    .whyus-ransom__foot {
        margin-top: 5rem;
    }

    .whyus-ransom__title {
        font-size: 3rem;
    }

    .whyus-ransom__accent {
        display: inline;
        font-size: 3.75rem;
    }

    .whyus-ransom__subtitle {
        font-size: 1.125rem;
    }

    .whyus-ransom__row-number {
        font-size: 8rem;
    }

    .whyus-ransom__row-track {
        flex-direction: row;
        gap: 1.5rem;
    }

    .whyus-ransom__row-item {
        flex: 1 1 0%;
        padding-inline-start: 2rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .whyus-ransom__cta--hover:hover {
        transform: none;
    }
}

/* cta v38 — surge band: rising area chart + staggered copy reveal (no colors) */
.cta-surge__band { isolation: isolate; }
.cta-surge__chart { pointer-events: none; top: auto !important; bottom: 0 !important; height: 55% !important; }
.cta-surge__rise { transform-box: view-box; transform-origin: 50% 100%; transform: scaleY(0); transition: transform 1400ms cubic-bezier(.2, .8, .2, 1); }
.cta-surge__rise path[data-line] { transition: stroke-dashoffset 2200ms ease 300ms; }
[data-surge].is-visible .cta-surge__rise { transform: scaleY(1); }

.cta-surge__pulse { width: .875rem; height: .875rem; opacity: 0; transform: translate(-50%, -50%); transition: opacity 400ms ease 1800ms; }
.cta-surge__pulse::after { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 2px solid; animation: cta-surge-ping 2s ease-out infinite; }
[data-surge].is-visible .cta-surge__pulse { opacity: 1; }

.cta-surge__eyebrow { backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.cta-surge__fade { opacity: 0; transform: translateY(1.25rem); transition: opacity 700ms ease, transform 700ms cubic-bezier(.2, .8, .2, 1); }
.cta-surge__fade--2 { transition-delay: 120ms; }
.cta-surge__fade--3 { transition-delay: 240ms; }
[data-surge].is-visible .cta-surge__fade { opacity: 1; transform: none; }

.cta-surge__stat { opacity: 0; transform: translateY(1rem); transition: opacity 600ms ease, transform 600ms ease; }
[data-surge].is-visible .cta-surge__stat { opacity: 1; transform: none; }
[data-surge].is-visible li:nth-child(2) .cta-surge__stat { transition-delay: 150ms; }
[data-surge].is-visible li:nth-child(3) .cta-surge__stat { transition-delay: 300ms; }

@keyframes cta-surge-ping { 0% { transform: scale(1); opacity: .6; } 100% { transform: scale(3.2); opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
    .cta-surge__rise, .cta-surge__fade, .cta-surge__stat { transition: none; transform: none; opacity: 1; }
    .cta-surge__rise path[data-line] { transition: none; }
    .cta-surge__pulse { transition: none; }
    .cta-surge__pulse::after { animation: none; }
}

/* wpg-hidden: utility classes are renamed in production builds, so hidden states must not rely on .hidden / .d-none alone */
.cta-surge[hidden], .cta-surge [hidden], .cta-surge .hidden.d-none { display: none !important; }

