﻿:root {
    --lavender: #c7a7ff;
    --purple: #7b43d0;
    --deep: #25113f;
    --violet: #9b6cff;
    --pink: #ff8de1;
    --cyan: #8ff7ff;
    --cream: #fffaff;
    --text: #33233f;
    --muted: #75637f;
    --glass: rgba(255,255,255,.62);
    --shadow: 0 22px 70px rgba(74,39,112,.18);
    --radius: 28px;
}


/* =========================================================
   RESET
========================================================= */

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    font-family: "DM Sans", sans-serif;
    color: var(--text);
    background: radial-gradient( circle at 15% 10%, rgba(199,167,255,.34), transparent 30% ), radial-gradient( circle at 90% 30%, rgba(255,141,225,.18), transparent 28% ), linear-gradient( 180deg, #fffaff 0%, #f8efff 48%, #fff 100% );
    overflow-x: hidden;
}

button,
a {
    font: inherit;
}

button {
    border: 0;
    cursor: pointer;
}

a {
    text-decoration: none;
    color: inherit;
}

.hidden {
    display: none !important;
}


/* =========================================================
   AMBIENT PARTICLES
========================================================= */

.ambient {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

    .ambient span {
        position: absolute;
        width: 5px;
        height: 5px;
        border-radius: 50%;
        background: var(--violet);
        box-shadow: 0 0 15px var(--violet);
        opacity: .35;
        animation: ambientFloat 10s linear infinite;
    }

        .ambient span:nth-child(1) {
            left: 7%;
            top: 20%;
            animation-delay: -2s;
        }

        .ambient span:nth-child(2) {
            left: 22%;
            top: 65%;
            animation-delay: -7s;
        }

        .ambient span:nth-child(3) {
            left: 43%;
            top: 15%;
            animation-delay: -5s;
        }

        .ambient span:nth-child(4) {
            left: 58%;
            top: 78%;
            animation-delay: -3s;
        }

        .ambient span:nth-child(5) {
            left: 72%;
            top: 35%;
            animation-delay: -8s;
        }

        .ambient span:nth-child(6) {
            left: 86%;
            top: 72%;
            animation-delay: -1s;
        }

        .ambient span:nth-child(7) {
            left: 93%;
            top: 12%;
            animation-delay: -6s;
        }

        .ambient span:nth-child(8) {
            left: 31%;
            top: 88%;
            animation-delay: -4s;
        }

        .ambient span:nth-child(9) {
            left: 68%;
            top: 90%;
            animation-delay: -9s;
        }

        .ambient span:nth-child(10) {
            left: 13%;
            top: 48%;
            animation-delay: -2s;
        }

@keyframes ambientFloat {
    0%,100% {
        transform: translateY(0) scale(1);
        opacity: .2;
    }

    50% {
        transform: translateY(-35px) scale(1.6);
        opacity: .7;
    }
}


/* =========================================================
   MUSIC
========================================================= */

.music-toggle {
    position: fixed;
    right: 14px;
    top: 14px;
    z-index: 1000;
    padding: 9px 13px;
    border-radius: 99px;
    color: #fff;
    background: rgba(44,20,69,.82);
    backdrop-filter: blur(12px);
    box-shadow: 0 0 20px rgba(155,108,255,.3);
    font-size: 12px;
    font-weight: 700;
}

.music-icon {
    margin-right: 5px;
    color: var(--cyan);
}


/* =========================================================
   INTRO
========================================================= */

.intro-screen {
    min-height: 100svh;
    display: grid;
    place-items: center;
    text-align: center;
    position: relative;
    overflow: hidden;
    padding: 30px 20px;
    background: radial-gradient( circle at 50% 35%, rgba(155,108,255,.35), transparent 26% ), linear-gradient( 145deg, #1d0b35, #4e207d 48%, #211039 );
    color: #fff;
}

    .intro-screen::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient( rgba(255,255,255,.04) 1px, transparent 1px ), linear-gradient( 90deg, rgba(255,255,255,.04) 1px, transparent 1px );
        background-size: 45px 45px;
        mask-image: linear-gradient( to bottom, black, transparent );
    }

.intro-content {
    position: relative;
    z-index: 2;
    max-width: 500px;
}

.sparkle-line {
    color: var(--cyan);
    letter-spacing: 12px;
    font-size: 18px;
    margin-bottom: 18px;
}

.eyebrow {
    font-size: 11px;
    letter-spacing: 4px;
    color: #e7d7ff;
}

.big-two {
    font-family: "Playfair Display", serif;
    font-size: clamp( 130px, 35vw, 230px );
    line-height: .8;
    color: #fff;
    text-shadow: 0 0 20px rgba(255,141,225,.8), 0 0 70px rgba(155,108,255,.8);
    animation: neonPulse 3s ease-in-out infinite;
}

@keyframes neonPulse {
    50% {
        transform: scale(1.03);
        text-shadow: 0 0 30px rgba(255,141,225,.9), 0 0 90px rgba(155,108,255,.9);
    }
}

.intro-content h1 {
    font-family: "Playfair Display", serif;
    font-size: clamp(48px,14vw,80px);
    margin: 15px 0 10px;
}

.intro-copy {
    color: #e8dcf5;
    font-size: 14px;
    line-height: 1.7;
    margin-bottom: 30px;
}

.primary-btn,
.ghost-btn,
.whatsapp-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    border-radius: 99px;
    padding: 14px 21px;
    font-weight: 700;
    transition: .3s ease;
}

.primary-btn {
    color: #28103e;
    background: linear-gradient( 90deg, #e6caff, #a7fbff );
    box-shadow: 0 0 30px rgba(167,251,255,.25);
}

    .primary-btn:hover {
        transform: translateY(-3px);
    }

.intro-orbit {
    position: absolute;
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 50%;
    animation: spin 18s linear infinite;
}

.orbit-one {
    width: 500px;
    height: 500px;
}

.orbit-two {
    width: 750px;
    height: 750px;
    animation-direction: reverse;
    animation-duration: 30s;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}


/* =========================================================
   SECTIONS
========================================================= */

.section {
    position: relative;
    z-index: 1;
    padding: 82px 18px;
}


/* =========================================================
   HERO
========================================================= */

.hero {
    min-height: 100svh;
    display: grid;
    place-items: center;
    text-align: center;
    padding-top: 80px;
}

.hero-glow {
    position: absolute;
    width: 330px;
    height: 330px;
    border-radius: 50%;
    background: rgba(173,119,255,.25);
    filter: blur(80px);
    top: 90px;
}

.hero-inner {
    max-width: 560px;
}

.hero-badge,
.section-kicker {
    display: inline-block;
    font-size: 10px;
    letter-spacing: 3px;
    font-weight: 800;
    color: var(--purple);
}


/* =========================================================
   HERO PHOTO
========================================================= */

.hero-photo-wrap {
    position: relative;
    width: min(72vw, 300px);
    /* 12:16 portrait */
    aspect-ratio: 12 / 16;
    margin: 24px auto 30px;
}

.hero-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: relative;
    z-index: 2;
    border-radius: 34px;
    border: 7px solid rgba(255,255,255,.88);
    box-shadow: var(--shadow);
    display: block;
}

.hero-ring {
    position: absolute;
    inset: -14px;
    border: 1px solid rgba(123,67,208,.28);
    border-radius: 38px;
    transform: rotate(7deg);
}

.ring-b {
    inset: -25px;
    transform: rotate(-8deg);
    border-color: rgba(255,141,225,.35);
}

.photo-star {
    position: absolute;
    z-index: 3;
    color: #fff;
    font-size: 24px;
    text-shadow: 0 0 15px var(--purple);
    animation: pulse 2s infinite;
}

.star-1 {
    left: -17px;
    top: 22%;
}

.star-2 {
    right: -18px;
    top: 12%;
    animation-delay: .5s;
}

.star-3 {
    right: 2%;
    bottom: 4%;
    animation-delay: 1s;
}

@keyframes pulse {
    50% {
        transform: scale(1.3) rotate(12deg);
    }
}

.mini-title {
    font-size: 10px;
    letter-spacing: 4px;
    color: var(--muted);
    font-weight: 800;
}

.hero h2,
.section-head h2 {
    font-family: "Playfair Display", serif;
    font-size: clamp( 39px, 10vw, 65px );
    line-height: 1.05;
    margin: 10px 0 16px;
    color: var(--deep);
}

    .hero h2 span {
        color: var(--purple);
        font-size: .65em;
    }

.hero-text {
    max-width: 460px;
    margin: auto;
    color: var(--muted);
    font-size: 14px;
    line-height: 1.8;
}

.date-pill {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    margin: 25px 0;
    padding: 10px 18px;
    border-radius: 18px;
    background: rgba(255,255,255,.75);
    box-shadow: 0 10px 35px rgba(86,47,120,.1);
}

    .date-pill > span {
        font-size: 34px;
        font-family: "Playfair Display", serif;
        color: var(--purple);
    }

    .date-pill strong,
    .date-pill small {
        display: block;
        text-align: left;
    }

    .date-pill strong {
        font-size: 12px;
        letter-spacing: 2px;
    }

    .date-pill small {
        font-size: 10px;
        color: var(--muted);
    }

.ghost-btn {
    border: 1px solid rgba(123,67,208,.25);
    color: var(--purple);
    font-size: 12px;
}


/* =========================================================
   SECTION HEAD
========================================================= */

.section-head {
    position: relative;
    text-align: center;
    margin-bottom: 35px;
}

    .section-head h2 em {
        color: var(--violet);
        font-style: normal;
    }

.gallery-intro {
    color: var(--muted);
    font-size: 13px;
}


/* =========================================================
   COUNTDOWN
========================================================= */

.countdown-section {
    background: #25113f;
    color: #fff;
    text-align: center;
    overflow: hidden;
}

    .countdown-section::before {
        content: "";
        position: absolute;
        width: 500px;
        height: 500px;
        border-radius: 50%;
        background: #7b43d0;
        filter: blur(150px);
        opacity: .25;
        left: -250px;
        top: 0;
    }

    .countdown-section .section-head h2 {
        color: #fff;
    }

    .countdown-section .section-kicker {
        color: var(--cyan);
    }

.countdown {
    display: grid;
    grid-template-columns: repeat(4,1fr);
    gap: 8px;
    max-width: 650px;
    margin: auto;
}

.time-card {
    padding: 18px 5px;
    border: 1px solid rgba(255,255,255,.13);
    border-radius: 20px;
    background: rgba(255,255,255,.07);
    backdrop-filter: blur(10px);
}

    .time-card strong {
        display: block;
        font-size: clamp( 27px, 8vw, 45px );
        line-height: 1;
        color: #fff;
    }

    .time-card span {
        display: block;
        margin-top: 8px;
        color: #cbbce0;
        font-size: 9px;
        text-transform: uppercase;
        letter-spacing: 1px;
    }


/* =========================================================
   DETAILS
========================================================= */

.details-section {
    background: linear-gradient( 180deg, #fff 0%, #f8f0ff 100% );
}

.detail-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
    max-width: 760px;
    margin: auto;
}

.glass-card {
    padding: 25px;
    border-radius: var(--radius);
    background: var(--glass);
    border: 1px solid rgba(255,255,255,.9);
    box-shadow: var(--shadow);
    backdrop-filter: blur(15px);
}

.card-icon {
    font-size: 28px;
    margin-bottom: 18px;
    color: var(--purple);
}

.glass-card small {
    font-size: 9px;
    letter-spacing: 2px;
    color: var(--purple);
    font-weight: 800;
}

.glass-card h3 {
    font-family: "Playfair Display", serif;
    font-size: 24px;
    margin: 7px 0;
}

.glass-card p {
    color: var(--muted);
    font-size: 13px;
    line-height: 1.7;
}

.text-link {
    display: inline-block;
    margin-top: 10px;
    color: var(--purple);
    font-size: 12px;
    font-weight: 800;
}

.map-wrap {
    max-width: 760px;
    margin: 20px auto 0;
    border-radius: 25px;
    overflow: hidden;
    box-shadow: var(--shadow);
}

    .map-wrap iframe {
        width: 100%;
        height: 300px;
        display: block;
        border: 0;
    }


/* =========================================================
   STORY
========================================================= */

.story-section {
    background: #fbf5ff;
}

.timeline {
    max-width: 650px;
    margin: auto;
    position: relative;
}

    .timeline::before {
        content: "";
        position: absolute;
        left: 18px;
        top: 0;
        bottom: 0;
        width: 1px;
        background: linear-gradient( var(--pink), var(--violet), var(--cyan) );
    }

.timeline-item {
    display: grid;
    grid-template-columns: 38px 1fr;
    gap: 16px;
    margin-bottom: 30px;
}

.timeline-dot {
    width: 37px;
    height: 37px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: #fff;
    box-shadow: 0 8px 25px rgba(86,47,120,.15);
    color: var(--purple);
    position: relative;
    z-index: 1;
}

.timeline-item small {
    font-size: 9px;
    letter-spacing: 2px;
    color: var(--purple);
    font-weight: 800;
}

.timeline-item h3 {
    font-family: "Playfair Display", serif;
    font-size: 22px;
    margin: 5px 0;
}

.timeline-item p {
    font-size: 13px;
    color: var(--muted);
    line-height: 1.7;
}


/* =========================================================
   PORTRAIT RUNNING GALLERY
========================================================= */

.gallery-section {
    background: #fff;
    overflow: hidden;
}

.gallery-decor {
    position: absolute;
    pointer-events: none;
    z-index: 0;
}

.decor-star-1 {
    left: 5%;
    top: 12%;
    color: var(--violet);
    font-size: 22px;
    animation: decorFloat 4s ease-in-out infinite;
}

.decor-star-2 {
    right: 8%;
    top: 20%;
    color: var(--pink);
    font-size: 25px;
    animation: decorFloat 4s ease-in-out infinite -.8s;
}

.decor-heart {
    right: 5%;
    bottom: 18%;
    font-size: 22px;
    animation: decorFloat 5s ease-in-out infinite;
}

.decor-butterfly {
    left: 5%;
    bottom: 15%;
    font-size: 25px;
    animation: butterflyFloat 5s ease-in-out infinite;
}

@keyframes decorFloat {
    50% {
        transform: translateY(-15px) rotate(10deg);
    }
}

@keyframes butterflyFloat {
    50% {
        transform: translateY(-18px) translateX(8px) rotate(-8deg);
    }
}


/* =========================================================
   GALLERY OUTER
========================================================= */

.portrait-gallery-wrapper {
    position: relative;
    width: 100%;
    max-width: 1100px;
    margin: 0 auto;
}


/* =========================================================
   GALLERY VIEWPORT
========================================================= */

.portrait-gallery {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    cursor: grab;
    overscroll-behavior-x: contain;
    touch-action: pan-x;
    position: relative;
    z-index: 2;
}

    .portrait-gallery::-webkit-scrollbar {
        display: none;
    }

    .portrait-gallery:active {
        cursor: grabbing;
    }


/* =========================================================
   TRACK
========================================================= */

.portrait-track {
    display: flex;
    width: max-content;
    gap: 14px;
    padding: 12px 35px 20px;
}


/* =========================================================
   PORTRAIT CARD
========================================================= */

.portrait-photo {
    position: relative;
    display: block;
    /*
       EXACT 12:16 RATIO
    */

    width: 150px;
    height: 200px;
    flex: 0 0 150px;
    border-radius: 22px;
    overflow: hidden;
    background: #eadcff;
    box-shadow: 0 16px 45px rgba(75,39,112,.18);
    transform: translateZ(0);
    transition: transform .35s ease, box-shadow .35s ease;
}

    .portrait-photo:hover {
        transform: translateY(-7px) scale(1.02);
        box-shadow: 0 25px 55px rgba(75,39,112,.27);
    }


/* =========================================================
   IMAGE
========================================================= */

.portrait-image-wrap {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

    .portrait-image-wrap img {
        width: 100%;
        height: 100%;
        display: block;
        object-fit: cover;
        object-position: center;
        transition: transform .6s ease;
    }

.portrait-photo:hover img {
    transform: scale(1.06);
}


/* =========================================================
   IMAGE SHINE
========================================================= */

.photo-shine {
    position: absolute;
    inset: 0;
    background: linear-gradient( 120deg, transparent 20%, rgba(255,255,255,.28) 50%, transparent 80% );
    transform: translateX(-120%);
    transition: transform .8s ease;
    pointer-events: none;
}

.portrait-photo:hover .photo-shine {
    transform: translateX(120%);
}


/* =========================================================
   NUMBER
========================================================= */

.photo-number {
    position: absolute;
    right: 9px;
    bottom: 9px;
    min-width: 30px;
    padding: 6px 8px;
    text-align: center;
    border-radius: 99px;
    color: #fff;
    background: rgba(37,17,63,.72);
    backdrop-filter: blur(8px);
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 1px;
}


/* =========================================================
   SIDE FADE
========================================================= */

.gallery-fade {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 55px;
    z-index: 4;
    pointer-events: none;
}

.gallery-fade-left {
    left: 0;
    background: linear-gradient( 90deg, #fff, transparent );
}

.gallery-fade-right {
    right: 0;
    background: linear-gradient( 270deg, #fff, transparent );
}


/* =========================================================
   GALLERY STATUS
========================================================= */

.gallery-status {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    margin-top: 8px;
    color: var(--muted);
    font-size: 9px;
    letter-spacing: 1px;
    text-transform: uppercase;
}

.status-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--violet);
    box-shadow: 0 0 10px var(--violet);
    animation: statusPulse 1.5s ease-in-out infinite;
}

@keyframes statusPulse {
    50% {
        opacity: .35;
        transform: scale(.7);
    }
}


/* =========================================================
   GALLERY HINT
========================================================= */

.gallery-hint {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 12px;
    color: var(--muted);
    font-size: 10px;
    text-align: center;
}

    .gallery-hint span:first-child,
    .gallery-hint span:last-child {
        color: var(--purple);
        font-size: 15px;
    }


/* =========================================================
   RSVP
========================================================= */

.rsvp-section {
    background: #25113f;
    color: #fff;
}

.rsvp-card {
    max-width: 760px;
    margin: auto;
    padding: 55px 25px;
    text-align: center;
    border-radius: 35px;
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.12);
    background: linear-gradient( 145deg, rgba(123,67,208,.2), rgba(255,141,225,.08) );
}

    .rsvp-card h2 {
        font-family: "Playfair Display", serif;
        font-size: clamp( 38px, 10vw, 58px );
        margin: 10px 0;
    }

        .rsvp-card h2 em {
            color: var(--pink);
            font-style: normal;
        }

    .rsvp-card p {
        color: #d7cbe4;
        font-size: 13px;
        line-height: 1.7;
        max-width: 430px;
        margin: 0 auto 25px;
    }

.whatsapp-btn {
    background: linear-gradient( 90deg, #cba5ff, #ff9fe7 );
    color: #28103e;
    box-shadow: 0 0 35px rgba(203,165,255,.2);
}

    .whatsapp-btn:hover {
        transform: translateY(-3px);
    }

    .whatsapp-btn i {
        font-size: 20px;
    }

.neon-orb {
    position: absolute;
    width: 170px;
    height: 170px;
    border-radius: 50%;
    filter: blur(50px);
    opacity: .25;
}

.orb-left {
    left: -80px;
    top: -70px;
    background: #9b6cff;
}

.orb-right {
    right: -80px;
    bottom: -70px;
    background: #ff8de1;
}


/* =========================================================
   PARENTS
========================================================= */

.parents-section {
    padding-top: 50px;
    padding-bottom: 50px;
    background: #fff;
}

.parents-card {
    text-align: center;
}

    .parents-card > span {
        font-size: 9px;
        letter-spacing: 3px;
        color: var(--muted);
    }

    .parents-card h2 {
        font-family: "Playfair Display", serif;
        font-size: clamp( 30px, 8vw, 48px );
        margin: 10px 0;
    }

        .parents-card h2 b {
            color: var(--pink);
        }

    .parents-card p {
        font-size: 12px;
        color: var(--muted);
    }


/* =========================================================
   FOOTER
========================================================= */

.footer {
    text-align: center;
    padding: 60px 20px 35px;
    background: #170a27;
    color: #fff;
}

.footer-star {
    color: var(--cyan);
    font-size: 30px;
}

.footer h2 {
    font-family: "Playfair Display", serif;
    font-size: 27px;
    margin: 12px 0;
}

.footer p {
    color: #d7c6ec;
    font-size: 12px;
    letter-spacing: 3px;
}

.footer small {
    display: block;
    color: #8d7ba3;
    margin-top: 28px;
    font-size: 9px;
}


/* =========================================================
   SCROLL REVEAL
========================================================= */

.reveal {
    opacity: 0;
    transform: translateY(25px);
    transition: opacity .8s ease, transform .8s ease;
}

    .reveal.show {
        opacity: 1;
        transform: none;
    }


/* =========================================================
   CHILD FLOATING DECORATIONS
========================================================= */

.kids-decoration {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 2;
    overflow: hidden;
}

.floating-balloon {
    position: absolute;
    font-size: 28px;
    filter: drop-shadow( 0 8px 12px rgba(80,30,120,.15) );
    animation: balloonFloat 7s ease-in-out infinite;
}

.balloon-1 {
    left: 3%;
    top: 28%;
    animation-delay: -2s;
}

.balloon-2 {
    right: 3%;
    top: 45%;
    animation-delay: -5s;
    font-size: 22px;
}

.balloon-3 {
    left: 85%;
    top: 10%;
    animation-delay: -1s;
    font-size: 20px;
}

@keyframes balloonFloat {
    0%,100% {
        transform: translateY(0) rotate(-5deg);
    }

    50% {
        transform: translateY(-25px) rotate(5deg);
    }
}

.floating-cloud {
    position: absolute;
    color: rgba(255,255,255,.8);
    font-size: 35px;
    animation: cloudMove 16s linear infinite;
}

.cloud-1 {
    top: 17%;
    left: -50px;
}

.cloud-2 {
    top: 67%;
    left: -100px;
    animation-delay: -8s;
}

@keyframes cloudMove {
    from {
        transform: translateX(-80px);
    }

    to {
        transform: translateX( calc(100vw + 150px) );
    }
}

.floating-star {
    position: absolute;
    color: var(--violet);
    animation: starTwinkle 2.5s ease-in-out infinite;
}

.child-star-1 {
    top: 35%;
    right: 7%;
    font-size: 16px;
}

.child-star-2 {
    bottom: 25%;
    left: 7%;
    font-size: 18px;
    animation-delay: -1.2s;
}

@keyframes starTwinkle {
    0%,100% {
        opacity: .3;
        transform: scale(.8) rotate(0);
    }

    50% {
        opacity: 1;
        transform: scale(1.3) rotate(25deg);
    }
}

.floating-heart {
    position: absolute;
    right: 10%;
    bottom: 20%;
    font-size: 18px;
    animation: heartFloatGlobal 5s ease-in-out infinite;
}

@keyframes heartFloatGlobal {
    0%,100% {
        transform: translateY(0) scale(1);
    }

    50% {
        transform: translateY(-20px) scale(1.15);
    }
}

.floating-butterfly {
    position: absolute;
    font-size: 18px;
    opacity: .7;
    animation: butterflyMove 8s ease-in-out infinite;
}

.butterfly-1 {
    left: 12%;
    top: 72%;
}

.butterfly-2 {
    right: 12%;
    top: 25%;
    animation-delay: -4s;
}

@keyframes butterflyMove {
    0%,100% {
        transform: translate(0,0) rotate(-5deg);
    }

    50% {
        transform: translate(15px,-25px) rotate(8deg);
    }
}


/* =========================================================
   TABLET
========================================================= */

@media (min-width: 700px) {

    .section {
        padding: 110px 30px;
    }

    .detail-grid {
        grid-template-columns: 1fr 1fr;
    }

    .hero {
        padding-top: 100px;
    }

    .portrait-photo {
        width: 180px;
        height: 240px;
        flex-basis: 180px;
    }

    .portrait-track {
        gap: 18px;
        padding-left: 60px;
        padding-right: 60px;
    }

    .gallery-fade {
        width: 90px;
    }
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 600px) {

    .hero-photo-wrap {
        width: min(72vw, 280px);
        aspect-ratio: 12 / 16;
    }

    .portrait-photo {
        width: 135px;
        height: 180px;
        flex-basis: 135px;
        border-radius: 19px;
    }

    .portrait-track {
        gap: 12px;
        padding: 10px 25px 18px;
    }

    .gallery-fade {
        width: 35px;
    }

    .gallery-hint {
        padding: 0 10px;
    }

        .gallery-hint span:nth-child(2) {
            font-size: 9px;
        }
}


/* =========================================================
   SMALL MOBILE
========================================================= */

@media (max-width: 380px) {

    .countdown {
        gap: 5px;
    }

    .time-card {
        padding: 14px 3px;
    }

        .time-card strong {
            font-size: 24px;
        }

    .portrait-photo {
        width: 125px;
        height: 166.67px;
        flex-basis: 125px;
    }
}


/* =========================================================
   ACCESSIBILITY
========================================================= */

@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation: none !important;
        transition: none !important;
    }
}
.portrait-photo img {
    user-select: none;
    -webkit-user-drag: none;
}

/* =========================================================
   RSVP CHOICES
========================================================= */

.rsvp-buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: 100%;
    max-width: 440px;
    margin: 28px auto 12px;
}


/* =========================================================
   RSVP BUTTON
========================================================= */

.rsvp-choice {
    position: relative;
    width: 100%;
    min-height: 68px;
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 10px 14px;
    border-radius: 20px;
    color: #fff;
    cursor: pointer;
    text-align: left;
    overflow: hidden;
    transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}


    .rsvp-choice::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient( 110deg, transparent 20%, rgba(255,255,255,.18), transparent 80% );
        transform: translateX(-120%);
        transition: transform .7s ease;
    }


    .rsvp-choice:hover::before {
        transform: translateX(120%);
    }


    .rsvp-choice:hover {
        transform: translateY(-3px);
    }


/* =========================================================
   YES BUTTON
========================================================= */

.rsvp-yes {
    background: linear-gradient( 135deg, #8d5be8, #b477ff );
    border: 1px solid rgba(219,190,255,.55);
    box-shadow: 0 12px 35px rgba(139,91,232,.25);
}


    .rsvp-yes:hover {
        box-shadow: 0 18px 45px rgba(139,91,232,.4);
    }


/* =========================================================
   NO BUTTON
========================================================= */

.rsvp-no {
    background: linear-gradient( 135deg, #49375e, #6e526f );
    border: 1px solid rgba(255,196,229,.22);
    box-shadow: 0 12px 35px rgba(49,30,65,.25);
}


    .rsvp-no:hover {
        background: linear-gradient( 135deg, #62466f, #805a78 );
    }


/* =========================================================
   RSVP ICON
========================================================= */

.rsvp-icon {
    width: 45px;
    height: 45px;
    flex: 0 0 45px;
    display: grid;
    place-items: center;
    border-radius: 15px;
    background: rgba(255,255,255,.15);
    font-size: 20px;
    backdrop-filter: blur(8px);
}


/* =========================================================
   RSVP TEXT
========================================================= */

.rsvp-button-text {
    flex: 1;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: .1px;
}


.rsvp-arrow {
    width: 32px;
    height: 32px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255,255,255,.12);
    font-size: 17px;
    transition: transform .3s ease;
}


.rsvp-choice:hover .rsvp-arrow {
    transform: translateX(4px);
}


/* =========================================================
   RSVP NOTE
========================================================= */

.rsvp-note {
    color: rgba(255,255,255,.5);
    font-size: 9px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    margin-top: 14px;
}


/* =========================================================
   RSVP POPUP OVERLAY
========================================================= */

.rsvp-popup-overlay {
    position: fixed;
    inset: 0;
    z-index: 5000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(22,8,36,.55);
    backdrop-filter: blur(12px);
    opacity: 0;
    visibility: hidden;
    transition: opacity .35s ease, visibility .35s ease;
}


    .rsvp-popup-overlay.active {
        opacity: 1;
        visibility: visible;
    }


/* =========================================================
   POPUP CARD
========================================================= */

.rsvp-popup {
    width: min(100%, 390px);
    position: relative;
    padding: 35px 25px 30px;
    text-align: center;
    border-radius: 30px;
    transform: translateY(25px) scale(.92);
    opacity: 0;
    transition: transform .45s cubic-bezier(.2,.8,.2,1), opacity .35s ease;
    overflow: hidden;
}


.rsvp-popup-overlay.active .rsvp-popup {
    transform: translateY(0) scale(1);
    opacity: 1;
}


/* =========================================================
   YES POPUP
========================================================= */

.rsvp-popup.yes-popup {
    background: linear-gradient( 145deg, #fffaff, #f2e6ff );
    border: 2px solid rgba(155,108,255,.35);
    box-shadow: 0 30px 90px rgba(123,67,208,.35);
}


/* =========================================================
   NO POPUP
========================================================= */

.rsvp-popup.no-popup {
    background: linear-gradient( 145deg, #fffafd, #f8e8f4 );
    border: 2px solid rgba(255,141,225,.3);
    box-shadow: 0 30px 90px rgba(153,75,128,.25);
}


/* =========================================================
   POPUP ICON
========================================================= */

.popup-icon {
    width: 72px;
    height: 72px;
    display: grid;
    place-items: center;
    margin: 0 auto 18px;
    border-radius: 50%;
    font-size: 32px;
    animation: popupIconFloat 2s ease-in-out infinite;
}


.yes-popup .popup-icon {
    background: linear-gradient( 135deg, #e4d0ff, #f8c9ee );
    box-shadow: 0 0 35px rgba(155,108,255,.25);
}


.no-popup .popup-icon {
    background: linear-gradient( 135deg, #ead9ef, #ffd8ec );
}


@keyframes popupIconFloat {

    50% {
        transform: translateY(-6px) rotate(3deg);
    }
}


/* =========================================================
   POPUP TEXT
========================================================= */

.rsvp-popup h3 {
    font-family: "Playfair Display", serif;
    font-size: 29px;
    color: var(--deep);
    margin-bottom: 10px;
}


.rsvp-popup p {
    color: var(--muted);
    font-size: 13px;
    line-height: 1.7;
    margin: 0 auto;
    max-width: 310px;
}


.popup-date {
    display: inline-block;
    margin-top: 18px;
    padding: 9px 15px;
    border-radius: 99px;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 1px;
}


.yes-popup .popup-date {
    color: #7040ad;
    background: rgba(155,108,255,.12);
}


.no-popup .popup-date {
    color: #9c557d;
    background: rgba(255,141,225,.12);
}


/* =========================================================
   POPUP PROGRESS
========================================================= */

.popup-progress {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 4px;
    width: 100%;
    transform-origin: left;
    animation: popupProgress 4.5s linear forwards;
}


.yes-popup .popup-progress {
    background: linear-gradient( 90deg, #8d5be8, #ff8de1 );
}


.no-popup .popup-progress {
    background: linear-gradient( 90deg, #b579a0, #e9a9cc );
}


@keyframes popupProgress {

    from {
        transform: scaleX(1);
    }

    to {
        transform: scaleX(0);
    }
}


/* =========================================================
   WHATSAPP FLOATING WIDGET
========================================================= */

.whatsapp-widget {
    position: fixed;
    right: 17px;
    bottom: 18px;
    width: 57px;
    height: 57px;
    z-index: 3000;
    display: grid;
    place-items: center;
    border-radius: 50%;
    color: #fff;
    background: linear-gradient( 145deg, #25d366, #0ba94b );
    box-shadow: 0 10px 30px rgba(18,150,75,.35);
    transition: transform .3s ease;
}


    .whatsapp-widget:hover {
        transform: scale(1.08);
    }


.whatsapp-icon {
    position: relative;
    z-index: 3;
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255,255,255,.12);
    font-size: 25px;
    animation: whatsappBreath 2.2s ease-in-out infinite;
}


/* =========================================================
   WHATSAPP RINGS
========================================================= */

.whatsapp-ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid rgba(37,211,102,.6);
    animation: whatsappRing 2.5s ease-out infinite;
    pointer-events: none;
}


.ring-two {
    animation-delay: 1.25s;
}


@keyframes whatsappRing {

    0% {
        transform: scale(1);
        opacity: .75;
    }

    80% {
        transform: scale(1.8);
        opacity: 0;
    }

    100% {
        transform: scale(1.8);
        opacity: 0;
    }
}


@keyframes whatsappBreath {

    0%,100% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.12);
    }
}


/* =========================================================
   WHATSAPP TOOLTIP
========================================================= */

.whatsapp-tooltip {
    position: absolute;
    right: 67px;
    top: 50%;
    transform: translateY(-50%) translateX(5px);
    padding: 8px 12px;
    white-space: nowrap;
    border-radius: 10px;
    color: #fff;
    background: rgba(37,17,63,.92);
    font-size: 10px;
    font-weight: 700;
    opacity: 0;
    visibility: hidden;
    transition: .25s ease;
    box-shadow: 0 8px 25px rgba(37,17,63,.2);
}


    .whatsapp-tooltip::after {
        content: "";
        position: absolute;
        right: -5px;
        top: 50%;
        width: 10px;
        height: 10px;
        transform: translateY(-50%) rotate(45deg);
        background: rgba(37,17,63,.92);
    }


.whatsapp-widget:hover
.whatsapp-tooltip {
    opacity: 1;
    visibility: visible;
    transform: translateY(-50%) translateX(0);
}

/* =========================================================
   SHRiTVI GROWING-UP JOURNEY
========================================================= */

.journey-section {
    position: relative;
    background: radial-gradient( circle at 10% 20%, rgba(199,167,255,.18), transparent 28% ), radial-gradient( circle at 90% 75%, rgba(255,141,225,.13), transparent 28% ), #fbf7ff;
    overflow: hidden;
}


/* =========================================================
   JOURNEY INTRO
========================================================= */

.journey-intro {
    max-width: 430px;
    margin: 0 auto;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.8;
}


/* =========================================================
   DECORATIONS
========================================================= */

.journey-decor {
    position: absolute;
    pointer-events: none;
    z-index: 0;
}

.journey-star-1 {
    left: 5%;
    top: 12%;
    color: var(--violet);
    font-size: 22px;
    animation: journeyFloat 4s ease-in-out infinite;
}

.journey-star-2 {
    right: 7%;
    top: 22%;
    color: var(--pink);
    font-size: 25px;
    animation: journeyFloat 4s ease-in-out infinite -.8s;
}

.journey-heart {
    right: 6%;
    bottom: 18%;
    font-size: 22px;
    animation: journeyFloat 5s ease-in-out infinite;
}

.journey-butterfly {
    left: 5%;
    bottom: 16%;
    font-size: 25px;
    animation: journeyButterfly 5s ease-in-out infinite;
}


@keyframes journeyFloat {

    50% {
        transform: translateY(-14px) rotate(10deg);
    }
}


@keyframes journeyButterfly {

    50% {
        transform: translateY(-18px) translateX(8px) rotate(-8deg);
    }
}


/* =========================================================
   JOURNEY GALLERY WRAPPER
========================================================= */

.journey-gallery-wrapper {
    position: relative;
    width: 100%;
    max-width: 1100px;
    margin: 0 auto;
}


/* =========================================================
   JOURNEY VIEWPORT
========================================================= */

.journey-gallery {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    cursor: grab;
    touch-action: pan-x;
    overscroll-behavior-x: contain;
    user-select: none;
    position: relative;
    z-index: 2;
}


    .journey-gallery::-webkit-scrollbar {
        display: none;
    }


    .journey-gallery:active {
        cursor: grabbing;
    }


/* =========================================================
   JOURNEY TRACK
========================================================= */

.journey-track {
    display: flex;
    width: max-content;
    gap: 15px;
    padding: 15px 35px 22px;
}


/* =========================================================
   JOURNEY PHOTO
========================================================= */

.journey-photo {
    position: relative;
    display: block;
    width: 150px;
    height: 200px;
    flex: 0 0 150px;
    border-radius: 22px;
    overflow: hidden;
    background: linear-gradient( 145deg, #eadcff, #f8dff1 );
    box-shadow: 0 18px 45px rgba(75,39,112,.17);
    transform: translateZ(0);
    transition: transform .35s ease, box-shadow .35s ease;
}


    .journey-photo:hover {
        transform: translateY(-7px) scale(1.02);
        box-shadow: 0 25px 55px rgba(75,39,112,.27);
    }


/* =========================================================
   IMAGE
========================================================= */

.journey-image-wrap {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
}


    .journey-image-wrap img {
        width: 100%;
        height: 100%;
        display: block;
        object-fit: cover;
        object-position: center;
        user-select: none;
        -webkit-user-drag: none;
        transition: transform .6s ease;
    }


.journey-photo:hover
.journey-image-wrap img {
    transform: scale(1.06);
}


/* =========================================================
   IMAGE SHINE
========================================================= */

.journey-image-shine {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient( 120deg, transparent 20%, rgba(255,255,255,.28) 50%, transparent 80% );
    transform: translateX(-120%);
    transition: transform .8s ease;
}


.journey-photo:hover
.journey-image-shine {
    transform: translateX(120%);
}


/* =========================================================
   AGE / MONTH BADGE
========================================================= */

.journey-age {
    position: absolute;
    left: 10px;
    bottom: 10px;
    max-width: calc(100% - 20px);
    padding: 7px 11px;
    border-radius: 12px;
    color: #fff;
    background: rgba(37,17,63,.76);
    backdrop-filter: blur(10px);
    box-shadow: 0 7px 20px rgba(0,0,0,.15);
}


    .journey-age span {
        display: block;
        font-size: 9px;
        font-weight: 800;
        letter-spacing: 1.3px;
        white-space: nowrap;
    }


    .journey-age small {
        display: block;
        margin-top: 2px;
        font-size: 8px;
        color: rgba(255,255,255,.72);
        white-space: nowrap;
    }


/* =========================================================
   SPECIAL BADGES
========================================================= */

.journey-age-special {
    background: linear-gradient( 135deg, rgba(110,64,176,.9), rgba(169,92,190,.84) );
}


.journey-age-sister {
    background: linear-gradient( 135deg, rgba(214,103,168,.9), rgba(126,76,178,.9) );
}


.journey-age-finale {
    background: linear-gradient( 135deg, rgba(92,58,152,.9), rgba(220,111,187,.88) );
}


/* =========================================================
   PHOTO NUMBER
========================================================= */

.journey-photo-number {
    position: absolute;
    right: 9px;
    top: 9px;
    min-width: 28px;
    padding: 5px 7px;
    border-radius: 99px;
    text-align: center;
    color: #fff;
    background: rgba(37,17,63,.58);
    backdrop-filter: blur(8px);
    font-size: 8px;
    font-weight: 800;
}


/* =========================================================
   SIDE FADES
========================================================= */

.journey-fade {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 60px;
    z-index: 4;
    pointer-events: none;
}


.journey-fade-left {
    left: 0;
    background: linear-gradient( 90deg, #fbf7ff, transparent );
}


.journey-fade-right {
    right: 0;
    background: linear-gradient( 270deg, #fbf7ff, transparent );
}


/* =========================================================
   STATUS
========================================================= */

.journey-status {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    margin-top: 8px;
    color: var(--muted);
    font-size: 9px;
    letter-spacing: 1px;
    text-transform: uppercase;
}


.journey-status-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--violet);
    box-shadow: 0 0 10px var(--violet);
    animation: journeyStatusPulse 1.5s ease-in-out infinite;
}


@keyframes journeyStatusPulse {

    50% {
        opacity: .35;
        transform: scale(.7);
    }
}


/* =========================================================
   HINT
========================================================= */

.journey-hint {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 12px;
    color: var(--muted);
    font-size: 10px;
    text-align: center;
}


    .journey-hint span:first-child,
    .journey-hint span:last-child {
        color: var(--purple);
        font-size: 15px;
    }


/* =========================================================
   TABLET / DESKTOP
========================================================= */

@media (min-width: 700px) {

    .journey-track {
        gap: 18px;
        padding-left: 60px;
        padding-right: 60px;
    }


    .journey-photo {
        width: 180px;
        height: 240px;
        flex-basis: 180px;
    }


    .journey-fade {
        width: 90px;
    }
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 600px) {

    .journey-track {
        gap: 12px;
        padding: 10px 25px 18px;
    }


    .journey-photo {
        width: 135px;
        height: 180px;
        flex-basis: 135px;
        border-radius: 19px;
    }


    .journey-fade {
        width: 35px;
    }


    .journey-hint {
        padding: 0 10px;
    }


        .journey-hint span:nth-child(2) {
            font-size: 9px;
        }
}


/* =========================================================
   SMALL MOBILE
========================================================= */

@media (max-width: 380px) {

    .journey-photo {
        width: 125px;
        height: 166.67px;
        flex-basis: 125px;
    }
}
.footer-love {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 12px;
    padding: 9px 16px;
    border-radius: 50px;
    background: linear-gradient( 135deg, rgba(155,108,255,.14), rgba(255,141,225,.12) );
    border: 1px solid rgba(155,108,255,.25);
    color: #7040ad;
    font-size: 12px;
    box-shadow: 0 6px 20px rgba(112,64,173,.08);
    animation: footerLoveGlow 3s ease-in-out infinite;
}

    .footer-love strong {
        font-weight: 700;
    }

    .footer-love small {
        font-size: 11px;
        font-weight: 600;
        color: #9a659c;
    }

    .footer-love span {
        font-size: 12px;
    }


@keyframes footerLoveGlow {

    50% {
        box-shadow: 0 8px 28px rgba(155,108,255,.18);
    }
}
/* =========================================================
   DETAILS SECTION
   HOTEL BACKGROUND
========================================================= */

.details-section {
    position: relative;
    overflow: hidden;
    min-height: 900px;
    padding: 100px 20px;
    isolation: isolate;
    background: #241333;
}


/* =========================================================
   HOTEL BACKGROUND IMAGE
========================================================= */

.details-bg {
    position: absolute;
    inset: 0;
    z-index: -3;
    background-image: url("../image/hotel.png");
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    transform: scale(1.03);
}


/* =========================================================
   LAVENDER / PURPLE OVERLAY
========================================================= */

.details-overlay {
    position: absolute;
    inset: 0;
    z-index: -2;
    background: linear-gradient( 180deg, rgba(35, 15, 60, .70) 0%, rgba(54, 22, 82, .58) 45%, rgba(28, 12, 45, .82) 100% );
}


/* =========================================================
   SOFT LAVENDER GLOW
========================================================= */

.details-section::before {
    content: "";
    position: absolute;
    width: 450px;
    height: 450px;
    top: -180px;
    left: -150px;
    border-radius: 50%;
    background: rgba(183, 139, 255, .20);
    filter: blur(80px);
    z-index: -1;
    pointer-events: none;
}


.details-section::after {
    content: "";
    position: absolute;
    width: 400px;
    height: 400px;
    right: -150px;
    bottom: -150px;
    border-radius: 50%;
    background: rgba(255, 118, 220, .16);
    filter: blur(80px);
    z-index: -1;
    pointer-events: none;
}


/* =========================================================
   CONTENT
========================================================= */

.details-content {
    position: relative;
    max-width: 1100px;
    margin: 0 auto;
    z-index: 2;
}


/* =========================================================
   SECTION HEADING
========================================================= */

.details-section .section-head {
    text-align: center;
    color: #fff;
    max-width: 850px;
    margin: 0 auto 50px;
}


.details-section .section-kicker {
    color: #e5c7ff;
    text-shadow: 0 0 15px rgba(203, 151, 255, .55);
}


.details-section .section-head h2 {
    color: #fff;
    margin-top: 12px;
    text-shadow: 0 4px 30px rgba(0, 0, 0, .35);
}


    .details-section .section-head h2 em {
        color: #e9a4ff;
        font-style: normal;
    }


.details-intro {
    max-width: 650px;
    margin: 18px auto 0;
    color: rgba(255,255,255,.88);
    line-height: 1.7;
    font-size: 15px;
}


/* =========================================================
   DETAIL GRID
========================================================= */

.detail-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
    max-width: 850px;
    margin: 0 auto 30px;
}


/* =========================================================
   GLASS CARDS
========================================================= */

.details-section .glass-card {
    position: relative;
    padding: 32px 28px;
    text-align: center;
    border-radius: 28px;
    background: rgba(255,255,255,.14);
    border: 1px solid rgba(255,255,255,.28);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    box-shadow: 0 20px 60px rgba(17, 5, 30, .30), inset 0 1px 0 rgba(255,255,255,.18);
    color: #fff;
    transition: transform .35s ease, box-shadow .35s ease, background .35s ease;
}


    .details-section .glass-card:hover {
        transform: translateY(-7px);
        background: rgba(255,255,255,.19);
        box-shadow: 0 28px 70px rgba(17, 5, 30, .40), 0 0 35px rgba(190,130,255,.16);
    }


/* =========================================================
   CARD ICON
========================================================= */

.details-section .card-icon {
    width: 58px;
    height: 58px;
    margin: 0 auto 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 18px;
    background: linear-gradient( 135deg, #9b6cff, #d989ff );
    color: #fff;
    font-size: 22px;
    box-shadow: 0 10px 30px rgba(155,108,255,.35);
}


/* =========================================================
   CARD TEXT
========================================================= */

.details-section .glass-card small {
    display: block;
    margin-bottom: 8px;
    font-size: 11px;
    letter-spacing: 3px;
    font-weight: 700;
    color: #e5c7ff;
}


.details-section .glass-card h3 {
    margin: 0 0 10px;
    color: #fff;
    font-size: 21px;
}


.details-section .glass-card p {
    margin: 0 0 15px;
    color: rgba(255,255,255,.82);
    line-height: 1.6;
}


/* =========================================================
   GOOGLE MAP LINK
========================================================= */

.details-section .text-link {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: #f0b9ff;
    font-weight: 600;
    text-decoration: none;
    transition: .3s ease;
}


    .details-section .text-link:hover {
        color: #fff;
        text-shadow: 0 0 15px rgba(230,160,255,.8);
    }


/* =========================================================
   MAP
========================================================= */

.details-section .map-wrap {
    width: 100%;
    max-width: 1050px;
    height: 380px;
    margin: 0 auto;
    overflow: hidden;
    border-radius: 30px;
    border: 1px solid rgba(255,255,255,.30);
    background: rgba(255,255,255,.10);
    box-shadow: 0 25px 70px rgba(10, 3, 20, .40), 0 0 40px rgba(155,108,255,.12);
}


    /* =========================================================
   IFRAME
========================================================= */

    .details-section .map-wrap iframe {
        width: 100%;
        height: 100%;
        display: block;
        border: 0;
        filter: saturate(.85) contrast(.95);
    }


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 767px) {

    .details-section {
        min-height: auto;
        padding: 75px 16px;
    }


    .details-bg {
        background-position: 58% center;
    }


    .details-overlay {
        background: linear-gradient( 180deg, rgba(35, 15, 60, .76), rgba(42, 18, 62, .72) 50%, rgba(28, 12, 45, .88) );
    }


    .details-section .section-head {
        margin-bottom: 32px;
    }


    .details-intro {
        font-size: 14px;
        padding: 0 8px;
    }


    .detail-grid {
        grid-template-columns: 1fr;
        gap: 15px;
        margin-bottom: 20px;
    }


    .details-section .glass-card {
        padding: 25px 20px;
        border-radius: 23px;
    }


        .details-section .glass-card h3 {
            font-size: 19px;
        }


    .details-section .map-wrap {
        height: 300px;
        border-radius: 23px;
    }
}
/* =========================================================
   GET DIRECTIONS BUTTON
========================================================= */

.direction-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    margin-top: 8px;
    padding: 12px 20px;
    border-radius: 50px;
    background: linear-gradient( 135deg, #9b6cff, #c978ff );
    border: 1px solid rgba(255,255,255,.35);
    color: #fff !important;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    box-shadow: 0 8px 25px rgba(155,108,255,.35);
    transition: transform .3s ease, box-shadow .3s ease, background .3s ease;
}


    /* Main direction icon */

    .direction-btn > i:first-child {
        font-size: 14px;
    }


    /* External link icon */

    .direction-btn .direction-external {
        font-size: 11px;
        opacity: .8;
    }


    /* Hover */

    .direction-btn:hover {
        transform: translateY(-3px);
        color: #fff !important;
        background: linear-gradient( 135deg, #aa78ff, #db8bff );
        box-shadow: 0 12px 32px rgba(155,108,255,.50);
    }


    /* Click */

    .direction-btn:active {
        transform: translateY(0) scale(.97);
    }


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 767px) {

    .direction-btn {
        padding: 11px 18px;
        font-size: 12px;
    }
}
/* =========================================================
   PHOTO ALBUM WIDGET
   ICON ONLY → EXPAND ON HOVER
========================================================= */

.album-widget {
    position: fixed;
    left: 18px;
    bottom: 20px;
    z-index: 9999;
    display: flex;
    align-items: center;
    width: 52px;
    height: 52px;
    padding: 5px;
    border-radius: 50px;
    overflow: hidden;
    text-decoration: none;
    color: #fff;
    background: linear-gradient( 135deg, rgba(103, 60, 160, .96), rgba(170, 105, 225, .96) );
    border: 1px solid rgba(255,255,255,.35);
    box-shadow: 0 10px 35px rgba(72, 30, 110, .35);
    backdrop-filter: blur(12px);
    /* Hidden initially */
    opacity: 0;
    visibility: hidden;
    transform: translateY(30px) scale(.85);
    pointer-events: none;
    transition: opacity .45s ease, transform .45s ease, width .45s cubic-bezier(.22,1,.36,1), box-shadow .3s ease;
}


    /* =========================================================
   SHOW WIDGET
========================================================= */

    .album-widget.show {
        opacity: 1;
        visibility: visible;
        transform: translateY(0) scale(1);
        pointer-events: auto;
    }


/* =========================================================
   ICON
========================================================= */

.album-widget-icon {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255,255,255,.20);
    font-size: 18px;
    transition: background .3s ease, transform .3s ease;
}


/* =========================================================
   TEXT
========================================================= */

.album-widget-text {
    display: flex;
    flex-direction: column;
    white-space: nowrap;
    margin-left: 10px;
    opacity: 0;
    transform: translateX(-15px);
    transition: opacity .3s ease, transform .4s ease;
}


    .album-widget-text strong {
        font-size: 12px;
        font-weight: 700;
    }


    .album-widget-text small {
        margin-top: 3px;
        font-size: 9px;
        color: rgba(255,255,255,.78);
    }


/* =========================================================
   HOVER → SLIDE TEXT INTO WIDGET
========================================================= */

.album-widget:hover {
    width: 220px;
    box-shadow: 0 12px 40px rgba(72, 30, 110, .48);
}


    .album-widget:hover .album-widget-text {
        opacity: 1;
        transform: translateX(0);
    }


    .album-widget:hover .album-widget-icon {
        background: rgba(255,255,255,.28);
        transform: rotate(-5deg) scale(1.05);
    }


/* =========================================================
   MOBILE
   No hover required — keep icon only
========================================================= */

@media (max-width: 767px) {

    .album-widget {
        left: 14px;
        bottom: 15px;
        width: 50px;
        height: 50px;
    }

        .album-widget:hover {
            width: 50px;
        }

            .album-widget:hover .album-widget-text {
                opacity: 0;
                transform: translateX(-15px);
            }
}
.parents-name {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px;
}

    .parents-name > span {
        color: #f17bd0;
    }

.parent-call-btn {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-left: 4px;
    border-radius: 50%;
    color: #fff;
    background: linear-gradient( 135deg, #9b5de5, #d86bc7 );
    text-decoration: none;
    font-size: 13px;
    box-shadow: 0 0 15px rgba(174, 99, 229, .35);
    transition: transform .3s ease, box-shadow .3s ease;
}

    .parent-call-btn:hover {
        color: #fff;
        transform: scale(1.12);
        box-shadow: 0 0 25px rgba(214, 113, 220, .6);
    }

    /* Ring animation */
    .parent-call-btn::before {
        content: "";
        position: absolute;
        width: 34px;
        height: 34px;
        border-radius: 50%;
        border: 1px solid rgba(207, 137, 255, .55);
        animation: parentCallRing 2s ease-out infinite;
    }

@keyframes parentCallRing {

    0% {
        transform: scale(1);
        opacity: .8;
    }

    70% {
        transform: scale(1.6);
        opacity: 0;
    }

    100% {
        transform: scale(1.6);
        opacity: 0;
    }
}
/* =========================================================
   RSVP / PARENTS CALL CTA
========================================================= */

.parents-name {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px;
}


    .parents-name > span {
        color: #f17bd0;
    }


/* Call CTA */

.parent-call-cta {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-top: 18px;
    padding: 7px 16px 7px 7px;
    border-radius: 30px;
    color: #fff;
    text-decoration: none;
    background: linear-gradient( 135deg, #7d4bb0, #cf65b8 );
    border: 1px solid rgba(226,184,255,.35);
    box-shadow: 0 8px 25px rgba(126,65,163,.20);
    transition: transform .3s ease, box-shadow .3s ease;
}


    .parent-call-cta:hover {
        color: #fff;
        transform: translateY(-2px);
        box-shadow: 0 12px 35px rgba(174,91,213,.40);
    }


/* Icon */

.parent-call-icon {
    width: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255,255,255,.16);
    font-size: 14px;
}


/* Text */

.parent-call-info {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
}


    .parent-call-info strong {
        font-size: 10px;
        letter-spacing: 1.2px;
    }


    .parent-call-info small {
        color: #eacff5;
        font-size: 9px;
    }


/* Ring */

.parent-call-cta::before {
    content: "";
    position: absolute;
    left: 7px;
    top: 7px;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid rgba(220,160,255,.6);
    animation: parentCallRing 2s ease-out infinite;
}


@keyframes parentCallRing {

    0% {
        transform: scale(1);
        opacity: .8;
    }

    70% {
        transform: scale(1.6);
        opacity: 0;
    }

    100% {
        transform: scale(1.6);
        opacity: 0;
    }
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 480px) {

    .parent-call-cta {
        margin-top: 15px;
        padding-right: 14px;
    }
}
/* =========================================================
   SHRiTVI LITTLE FACTS
========================================================= */

.shritvi-facts-section {
    position: relative;
    overflow: hidden;
}


    .shritvi-facts-section .section-head {
        text-align: center;
        max-width: 650px;
        margin: 0 auto 45px;
    }


        .shritvi-facts-section .section-head p {
            margin-top: 15px;
            color: #887692;
            font-size: 14px;
            line-height: 1.7;
        }


/* =========================================================
   FACTS GRID
========================================================= */

.shritvi-facts-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 18px;
    max-width: 950px;
    margin: 0 auto;
}


/* =========================================================
   FACT CARD
========================================================= */

.shritvi-fact-card {
    position: relative;
    display: flex;
    align-items: center;
    gap: 18px;
    min-height: 145px;
    padding: 24px;
    overflow: hidden;
    border-radius: 24px;
    border: 1px solid rgba(177, 128, 220, .20);
    background: linear-gradient( 135deg, rgba(255,255,255,.72), rgba(245,235,255,.58) );
    box-shadow: 0 15px 45px rgba(89, 52, 112, .08);
    backdrop-filter: blur(12px);
    transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}


    .shritvi-fact-card::before {
        content: "";
        position: absolute;
        width: 100px;
        height: 100px;
        right: -45px;
        top: -45px;
        border-radius: 50%;
        background: rgba(190, 132, 244, .12);
        filter: blur(5px);
    }


    .shritvi-fact-card:hover {
        transform: translateY(-6px);
        border-color: rgba(170, 104, 224, .40);
        box-shadow: 0 22px 55px rgba(102, 53, 135, .14);
    }


/* =========================================================
   ICON
========================================================= */

.shritvi-fact-icon {
    position: relative;
    flex-shrink: 0;
    width: 58px;
    height: 58px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 18px;
    background: linear-gradient( 135deg, #e6caff, #f5c5eb );
    font-size: 25px;
    box-shadow: 0 8px 25px rgba(156, 91, 202, .16);
}


/* =========================================================
   CONTENT
========================================================= */

.shritvi-fact-content {
    position: relative;
    z-index: 1;
}


    .shritvi-fact-content > span {
        display: block;
        margin-bottom: 6px;
        color: #9a68b6;
        font-size: 8px;
        font-weight: 700;
        letter-spacing: 2px;
    }


    .shritvi-fact-content h3 {
        margin: 0 0 5px;
        color: #382247;
        font-family: "Playfair Display", Georgia, serif;
        font-size: 20px;
    }


    .shritvi-fact-content p {
        margin: 0;
        color: #75647d;
        font-size: 12px;
        line-height: 1.6;
    }


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 700px) {

    .shritvi-facts-grid {
        grid-template-columns: 1fr;
        gap: 12px;
    }


    .shritvi-fact-card {
        min-height: 125px;
        padding: 19px;
        border-radius: 20px;
    }


    .shritvi-fact-icon {
        width: 52px;
        height: 52px;
        border-radius: 16px;
        font-size: 22px;
    }


    .shritvi-fact-content h3 {
        font-size: 18px;
    }
}


@media (max-width: 400px) {

    .shritvi-fact-card {
        gap: 14px;
        padding: 16px;
    }


    .shritvi-fact-icon {
        width: 47px;
        height: 47px;
        font-size: 20px;
    }


    .shritvi-fact-content h3 {
        font-size: 16px;
    }


    .shritvi-fact-content p {
        font-size: 11px;
    }
}