.bridegroom-section{
    position:relative;
    width:100%;
}

.bridegroom-groom,
.bridegroom-bride{
    position:relative;
    width:100%;
    min-height:100vh;
    overflow:hidden;
}

.bridegroom-image{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
}

.bridegroom-groom-content,
.bridegroom-bride-content{
    position:relative;
    z-index:2;
    width:100%;
    max-width:680px;
    min-height:100vh;
    margin:0 auto;
    padding:40px 28px;
    box-sizing:border-box;
    color:#fff;
}

.bridegroom-groom::before,
.bridegroom-bride::before{
    content:"";
    position:absolute;
    inset:0;
    background:rgba(0,0,0,.30); /* filter gelap */
    z-index:1;
}

.bridegroom-groom::after,
.bridegroom-bride::after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    height:45%;
    background:linear-gradient(
        to top,
        rgba(0,0,0,.90) 0%,
        rgba(0,0,0,.65) 35%,
        rgba(0,0,0,.25) 70%,
        transparent 100%
    );
    z-index:1;
}

.bridegroom-label{
    position:absolute;
    top:40px;
    left:24px;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:12px;
}

.bridegroom-label-text{
    writing-mode:vertical-rl;
    transform:rotate(180deg);
    font-size:14px;
    font-weight:600;
    letter-spacing:2px;
    text-transform:uppercase;
    opacity:.9;
}

.bridegroom-label-line{
    width:1px;
    height:130px;
    background:rgba(255,255,255,.6);
}

.bridegroom-profile{
    position:absolute;
    left:28px;
    right:28px;
    bottom:120px;
}

.bridegroom-nickname{
    font-family:var(--heading);
    font-size:4rem;
    font-weight:500;
    line-height:.9;
}

.bridegroom-fullname{
    margin-top:8px;
    font-size:1.2rem;
    font-weight:700;
}

.bridegroom-parent{
    margin-top:8px;
    font-size:.95rem;
    line-height:1.7;
}

.bridegroom-divider{
    width:100%;
    height:1px;
    margin-top:18px;
    background:rgba(255,255,255,.35);
}

.bridegroom-social{
    margin-top:20px;
}

.bridegroom-instagram{
    display:inline-flex;
    align-items:center;
    gap:10px;
    padding:10px 18px;
    border:1px solid rgba(255,255,255,.18);
    border-radius:999px;
    background:rgba(255,255,255,.08);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
    color:#fff;
    text-decoration:none;
    font-size:.9rem;
    font-weight:500;
    letter-spacing:.5px;
}

.bridegroom-instagram i{
    font-size:1.1rem;
}

@media (min-width:768px){
    .bridegroom-label{
        left: -20px;
    }

    .bridegroom-label-text{
        font-size:20px;
        font-weight:600;
    }

    .bridegroom-label-line{
        width:2px;

    }
}

@media (min-width:768px){
        .bridegroom-label{
        left: 10px;
    }
}

/* ========================================
   GROOM & BRIDE SNAP
======================================== */
.bridegroom-groom,
.bridegroom-bride{
    scroll-snap-align:start;
    scroll-snap-stop:always;
}

/* ========================================
   BRIDE & GROOM ANIMATION
======================================== */
.bridegroom-label,
.bridegroom-profile{
    opacity:0;
    transform:translateY(35px);
    transition:
        opacity 1.2s ease,
        transform 1.2s ease;
}

.bridegroom-groom.is-visible .bridegroom-label,
.bridegroom-bride.is-visible .bridegroom-label{
    opacity:1;
    transform:translateY(0);
    transition-delay:.2s;
}

.bridegroom-groom.is-visible .bridegroom-profile,
.bridegroom-bride.is-visible .bridegroom-profile{
    opacity:1;
    transform:translateY(0);
    transition-delay:.4s;
}