/* Platform Banner Block - unified sticky-device layout */
/* NOTE: overflow:hidden would break position:sticky on .pb-device-col.
   overflow-x:clip clips without creating a scroll container. */
.pb-section {
    --pb-sticky-top: 79px;
    --pb-toggle-overlap: 172px;
    position: relative;
    background-color: var(--pb-section-bg, #FFFFFF);
    overflow-x: clip;
}

.fixedSection:has(> .pb-section) {
    overflow: visible;
}

.pb-section::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: calc(100vh - var(--pb-sticky-top));
    background-color: var(--pb-banner-bg, #E8EEF5);
    background-image: var(--pb-banner-bg-image, none);
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    pointer-events: none;
    z-index: 0;
}

/* Extend only the hero background behind the role toggle when it sits directly above the banner. */
.user-role-toggle-section + .pb-section::before {
    top: calc(-1 * var(--pb-toggle-overlap));
    height: calc(100vh - var(--pb-sticky-top) + var(--pb-toggle-overlap));
}

/* Decorative X watermark images behind the steps area */
.pb-deco-x {
    position: absolute;
    width: 580px;
    max-width: 40vw;
    pointer-events: none;
    z-index: 0;
    opacity: 0.7;
}

.pb-deco-x--upper {
    top: 110vh;
    right: -2%;
}

.pb-deco-x--lower {
    top: calc(110vh + 900px);
    left: -2%;
}

.pb-grid {
    max-width: 1360px;
    margin: 0 auto;
    padding: 0 40px;
    box-sizing: border-box;
    display: flex;
    align-items: flex-start;
}

.pb-content {
    width: 55%;
    flex: 0 0 55%;
    position: relative;
    z-index: 1;
}

/* LEFT: scrolling rows */
.pb-row {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 80px 48px 80px 0;
    box-sizing: border-box;
    opacity: 1;
}

.pb-row--hero {
    min-height: calc(100vh - var(--pb-sticky-top));
    overflow: visible;
    margin-bottom: 51px;
}

.pb-row--step {
    min-height: 76vh;
    justify-content: flex-start;
    padding: 40px 48px 20px 0;
}

.pb-row.is-active { opacity: 1; }

.pb-hero-headline {
    font-size: clamp(2rem, 4vw, 3.2rem);
    font-weight: 700;
    color: #0F1B2C;
    line-height: 1.15;
    margin: 0 0 20px;
}

.pb-hero-sub {
    font-size: 1.05rem;
    color: #4A5568;
    line-height: 1.7;
    margin: 0 0 32px;
}

.pb-hero-sub p { margin: 0; }

.pb-ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: center;
}

.pb-cta {
    text-decoration: none;
}

.pb-section-heading {
    padding: 51px 48px 16px 0;
    box-sizing: border-box;
}

.pb-section-heading__title {
    font-size: clamp(1.5rem, 2.8vw, 2.2rem);
    font-weight: 700;
    color: #0F1B2C;
    margin: 0 0 12px;
}

.pb-section-heading__desc { font-size: 1rem; color: #4A5568; line-height: 1.7; }
.pb-section-heading__desc p { margin: 0; }

.pb-step-inner { display: flex; gap: 18px; align-items: flex-start; }

.pb-step-num {
    flex-shrink: 0;
    width: 31px;
    height: 31px;
    border-radius: 50%;
    background-color: #ffffff;
    border: 1px solid #1C355E;
    color: #1C355E;
    font-size: 16px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 2px;
}

.pb-step-body { flex: 1; }

.pb-step-title {
    font-size: 1.4rem;
    font-weight: 700;
    color: #0F1B2C;
    margin: 0 0 8px;
    line-height: 1.25;
}

.pb-step-desc { font-size: 0.975rem; color: #4A5568; line-height: 1.7; }
.pb-step-desc p { margin: 0; }

/* RIGHT: compositor-pinned iPad shell */
.pb-sticky-shell {
    width: 45%;
    flex: 0 0 45%;
    position: -webkit-sticky;
    position: sticky;
    top: var(--pb-sticky-top);
    height: calc(100vh - var(--pb-sticky-top));
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-left: 24px;
    box-sizing: border-box;
    align-self: flex-start;
    z-index: 3;
    pointer-events: none;
}

.pb-sticky-inner {
    width: 100%;
    height: 100%;
    padding: 20px 0;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    box-sizing: border-box;
    backface-visibility: hidden;
}

.pb-device-col {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-left: 0;
    box-sizing: border-box;
    pointer-events: auto;
}

.pb-device {
    position: relative;
    width: min(620px, 43vw);
    aspect-ratio: 670 / 523;
    transform: translate3d(0, -32px, 0);
    backface-visibility: hidden;
}

.pb-screen-window {
    position: absolute;
    top: 5.2%;
    left: 4.2%;
    right: 4.2%;
    bottom: 5.4%;
    overflow: hidden;
    border-radius: clamp(18px, 2.2vw, 24px);
    clip-path: inset(0 round clamp(18px, 2.2vw, 24px));
    background-color: #e8edf2;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
}

.pb-screen-stream {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    will-change: transform;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
}

.pb-screen { width: 100%; overflow: hidden; }

.pb-screen img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transform: translate3d(0, 0, 0) scale(1.01);
    backface-visibility: hidden;
}

.pb-frame-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: fill;
    z-index: 2;
    pointer-events: none;
    display: block;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
}

.pb-float-stream {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    will-change: transform;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
    z-index: 3;
    pointer-events: none;
}

.pb-float-screen {
    position: relative;
    width: 100%;
    overflow: visible;
}

/* Floating card images */
.pb-float {
    position: absolute;
    width: 48%;
    border-radius: 12px;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);
    opacity: 1;
    transform: none;
    transition: none;
    pointer-events: none;
    display: block;
}

.pb-float--left  { top: 48%; left:  -4%; }
.pb-float--right { top: 48%; right: -4%; }

.pb-mobile-media,
.pb-mobile-device,
.pb-mobile-screen-window,
.pb-mobile-img,
.pb-mobile-frame-img { display: none; }

@media (max-width: 991px) {
    .pb-section     { --pb-sticky-top: 0px; }
    .pb-section::before { display: none; }
    .pb-deco-x       { display: none; }
    .pb-grid        { padding: 0 24px; display: block; }
    .pb-content     { width: 100%; }
    .pb-sticky-shell { display: none; }
    .pb-device-col  { display: none; }
    .pb-float       { display: none !important; }
    .pb-row         { min-height: auto; opacity: 1; padding: 40px 0; }
    .pb-row--hero {
        min-height: auto;
        margin: 0 -24px 8px;
        padding: 40px 24px 36px;
        background-color: var(--pb-banner-bg, #E8EEF5);
        background-image: var(--pb-banner-bg-image, none);
        background-size: cover;
        background-position: center center;
        background-repeat: no-repeat;
        border-radius: 0 0 24px 24px;
    }
    .pb-ctas {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
        align-items: stretch;
    }
    .pb-cta {
        width: 100%;
        min-width: 0;
        margin-bottom: 0;
        padding-left: 0.75rem;
        padding-right: 0.75rem;
        font-size: 0.95rem;
        letter-spacing: 0.02rem;
    }
    .pb-row--step   { padding: 24px 0 12px; }
    .pb-section-heading { padding: 32px 0; }
    .pb-mobile-media {
        display: block;
        position: relative;
        width: 100%;
        max-width: 430px;
        margin: 24px auto 0;
        padding-bottom: 14%;
    }
    .pb-row--hero .pb-mobile-media {
        margin-top: 28px;
        padding-bottom: 0;
    }
    .pb-mobile-device {
        display: block;
        position: relative;
        width: 100%;
        aspect-ratio: 670 / 523;
        box-sizing: border-box;
    }
    .pb-mobile-screen-window {
        display: block;
        position: absolute;
        top: 5.2%;
        left: 4.2%;
        right: 4.2%;
        bottom: 5.4%;
        overflow: hidden;
        border-radius: 16px;
        clip-path: inset(0 round 16px);
        background-color: #e8edf2;
        z-index: 1;
    }
    .pb-mobile-img {
        display: block;
        width: 100%;
        height: 100%;
    }
    .pb-mobile-img img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
        transform: scale(1.01);
    }
    .pb-mobile-frame-img {
        display: block;
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: fill;
        z-index: 2;
        pointer-events: none;
    }
    .pb-mobile-float {
        position: absolute;
        display: block;
        width: 46%;
        bottom: -8%;
        right: 0%;
        border-radius: 12px;
        box-shadow: 0 12px 32px rgba(0, 0, 0, 0.22);
        pointer-events: none;
        z-index: 4;
    }
    .pb-mobile-float--left {
        left: 0%;
        right: auto;
    }
}
