/* =========================================================
   RIANA & HASIFI
   WEDDING INVITATION
========================================================= */


/* =========================================================
   COLOUR PALETTE
========================================================= */

:root {
    --blue-dark: #405f76;
    --blue-mid: #8ba8bd;
    --blue-light: #dceaf3;

    --cream: #fffaf8;
    --white: #ffffff;

    --blush: #e9d8d5;

    --text-soft: #7690a5;
    --text-light: #9aafbf;

    --line:
        rgba(
            139,
            168,
            189,
            0.28
        );
}


/* =========================================================
   RESET
========================================================= */

* {
    margin: 0;
    padding: 0;

    box-sizing: border-box;
}


html,
body {
    width: 100%;
    min-height: 100%;
}


html {
    scroll-behavior: smooth;
}


body {
    background: #f8f8f6;

    color: #2f4153;

    font-family:
        "DM Sans",
        Arial,
        sans-serif;

    overflow-x: hidden;
}


button,
input,
textarea {
    font: inherit;
}


img {
    max-width: 100%;
}


/* =========================================================
   01 — FULL SCREEN ENVELOPE
========================================================= */

.opening-screen {
    position: fixed;

    inset: 0;

    width: 100%;
    height: 100svh;

    overflow: hidden;

    background: #ffffff;

    z-index: 9999;

    perspective: 1600px;

    transition:
        opacity 0.8s ease,
        visibility 0.8s ease;
}


/* =========================
   INVITATION UNDER ENVELOPE
========================= */

.opening-inner {
    position: absolute;

    inset: 0;

    display: flex;
    flex-direction: column;

    align-items: center;
    justify-content: center;

    padding:
        40px
        28px;

    text-align: center;

    background:
        linear-gradient(
            180deg,
            #f6fbff 0%,
            var(--cream) 100%
        );

    z-index: 1;

    transform:
        scale(0.96);

    opacity: 0.55;

    transition:
        transform 1.1s ease,
        opacity 1.1s ease;
}


.opening-eyebrow {
    margin-bottom: 22px;

    font-size: 7px;

    font-weight: 500;

    letter-spacing: 4px;

    color: #7e91a6;
}


.opening-names {
    margin: 0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size:
        clamp(
            58px,
            17vw,
            88px
        );

    line-height: 0.82;

    font-weight: 400;

    color: #2f4153;
}


.opening-names span {
    display: block;

    margin:
        16px
        0;

    font-size: 28px;

    font-style: italic;

    color: #9ab6cf;
}


.opening-date {
    margin-top: 28px;

    font-size: 8px;

    font-weight: 500;

    letter-spacing: 4px;

    color: #7e91a6;
}


.opening-venue {
    max-width: 260px;

    margin-top: 14px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 17px;

    line-height: 1.4;

    font-style: italic;

    color: #71879b;
}


/* =========================
   ENVELOPE PANELS
========================= */

.opening-panel {
    position: absolute;

    top: 0;

    width: 50%;
    height: 100%;

    background: #fffefd;

    z-index: 5;

    backface-visibility: hidden;

    transition:
        transform 1.2s
        cubic-bezier(
            0.76,
            0,
            0.24,
            1
        );
}


.opening-panel-left {
    left: 0;

    transform-origin:
        left center;
}


.opening-panel-right {
    right: 0;

    transform-origin:
        right center;
}


/* =========================
   CENTER SEAM
========================= */

.opening-center-line {
    position: absolute;

    left: 50%;
    top: 0;

    width: 1px;
    height: 100%;

    background:
        rgba(
            83,
            105,
            124,
            0.22
        );

    transform:
        translateX(-50%);

    z-index: 7;

    transition:
        opacity 0.35s ease;
}


/* =========================
   SEAL
========================= */

.opening-seal {
    position: absolute;

    left: 50%;
    top: 50%;

    transform:
        translate(
            -50%,
            -50%
        );

    width: 118px;
    height: 118px;

    display: flex;
    flex-direction: column;

    align-items: center;
    justify-content: center;

    gap: 8px;

    border:
        1px solid
        rgba(
            55,
            75,
            95,
            0.28
        );

    border-radius: 50%;

    background: #ffffff;

    color: #2f4153;

    box-shadow:
        0 11px 28px
        rgba(
            42,
            54,
            66,
            0.18
        );

    cursor: pointer;

    z-index: 10;

    transition:
        transform 0.4s ease,
        opacity 0.35s ease,
        box-shadow 0.3s ease;
}


.seal-name {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 20px;

    font-style: italic;
}


.seal-open {
    font-size: 8px;

    font-weight: 500;

    letter-spacing: 3px;
}


@media (hover: hover) {

    .opening-seal:hover {
        transform:
            translate(
                -50%,
                -50%
            )
            scale(1.05);

        box-shadow:
            0 15px 32px
            rgba(
                42,
                54,
                66,
                0.23
            );
    }

}


.opening-seal:active {
    transform:
        translate(
            -50%,
            -50%
        )
        scale(0.95);
}


/* =========================
   ENVELOPE OPENING
========================= */

.opening-screen.opening
.opening-seal {
    transform:
        translate(
            -50%,
            -50%
        )
        scale(0);

    opacity: 0;

    pointer-events: none;
}


.opening-screen.opening
.opening-center-line {
    opacity: 0;
}


.opening-screen.opening
.opening-panel-left {
    transform:
        translateX(-100%)
        rotateY(-8deg);
}


.opening-screen.opening
.opening-panel-right {
    transform:
        translateX(100%)
        rotateY(8deg);
}


.opening-screen.opening
.opening-inner {
    transform:
        scale(1);

    opacity: 1;
}


.opening-screen.finished {
    opacity: 0;

    visibility: hidden;

    pointer-events: none;
}


/* =========================================================
   MAIN CONTENT
========================================================= */

.main-content {
    width: 100%;

    background: #f6fbff;

    opacity: 0;

    transform:
        translateY(15px);

    transition:
        opacity 0.9s ease,
        transform 0.9s ease;
}


.main-content.show {
    opacity: 1;

    transform:
        translateY(0);
}


/* =========================================================
   DECORATIVE FLOWERS — SHARED
========================================================= */

.flower {
    position: absolute;

    z-index: 1;

    pointer-events: none;

    user-select: none;

    object-fit: contain;

    animation:
        flowerDrift
        7s
        ease-in-out
        infinite;
}


@keyframes flowerDrift {

    0%,
    100% {
        translate: 0 0;
    }

    50% {
        translate: 0 -8px;
    }

}


/* =========================================================
   02 — HERO
========================================================= */

.wedding-hero {
    position: relative;

    min-height: 100svh;

    display: flex;
    flex-direction: column;

    align-items: center;

    padding:
        60px
        26px
        45px;

    background:
        linear-gradient(
            180deg,
            #f7fbfe 0%,
            #ffffff 45%,
            var(--cream) 100%
        );

    text-align: center;

    overflow: hidden;
}


/* =========================
   HERO FLOWERS
========================= */

.flower-hero-left {
    width: 145px;

    left: -55px;
    top: 18%;

    opacity: 0.78;

    transform:
        rotate(25deg);
}


.flower-hero-right {
    width: 175px;

    right: -72px;
    top: 47%;

    opacity: 0.88;

    transform:
        rotate(-25deg);

    animation-delay:
        -2s;
}


.flower-hero-small {
    width: 72px;

    left: 18px;
    bottom: 8%;

    opacity: 0.56;

    transform:
        rotate(42deg);

    animation-delay:
        -4s;
}


/* =========================
   HERO STARS
========================= */

/*
    These intentionally live in
    empty spaces rather than beside
    the names/headings.
*/

.hero-starburst {
    position: absolute;

    width: 29px;

    left: 9%;
    top: 35%;

    z-index: 2;

    opacity: 0.58;

    pointer-events: none;

    transform:
        rotate(11deg);

    animation:
        starPulse
        4.6s
        ease-in-out
        infinite;
}


.hero-double-star {
    position: absolute;

    width: 47px;

    right: 7%;
    left: auto;

    top: 69%;

    z-index: 2;

    opacity: 0.58;

    pointer-events: none;

    transform:
        rotate(-13deg);

    animation:
        starFloat
        5.4s
        ease-in-out
        infinite;
}


/* =========================
   HERO CONTENT LAYER
========================= */

.hero-eyebrow,
.hero-couple,
.hero-date,
.hero-photo-wrap,
.hero-message,
.hero-venue,
.hero-scroll {
    position: relative;

    z-index: 3;
}


/* =========================
   HERO EYEBROW
========================= */

.hero-eyebrow {
    font-size: 7px;

    font-weight: 500;

    letter-spacing: 4px;

    color: #8096aa;
}


/* =========================
   HERO NAMES
========================= */

.hero-couple {
    margin-top: 30px;
}


.hero-couple h1 {
    margin: 0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size:
        clamp(
            65px,
            19vw,
            92px
        );

    font-weight: 400;

    line-height: 0.72;

    color: #354b60;
}


.hero-and {
    display: block;

    margin:
        17px
        0
        15px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 27px;

    font-style: italic;

    color: #9bb9d0;
}


/* =========================
   HERO DATE
========================= */

.hero-date {
    width:
        min(
            85%,
            300px
        );

    display: flex;

    align-items: center;

    gap: 15px;

    margin-top: 31px;
}


.hero-date span {
    flex: 1;

    height: 1px;

    background:
        rgba(
            91,
            118,
            142,
            0.28
        );
}


.hero-date p {
    flex-shrink: 0;

    font-size: 8px;

    font-weight: 500;

    letter-spacing: 3px;

    color: #748ca2;
}


/* =========================
   HERO PHOTO
========================= */

.hero-photo-wrap {
    width:
        min(
            72vw,
            290px
        );

    margin-top: 42px;

    animation:
        heroPhotoFloat
        5s
        ease-in-out
        infinite;
}


.hero-photo-placeholder {
    width: 100%;

    aspect-ratio:
        4 / 5;

    display: flex;
    flex-direction: column;

    align-items: center;
    justify-content: center;

    gap: 10px;

    background:
        linear-gradient(
            145deg,
            var(--blue-light),
            #f3e9e7
        );

    border:
        8px solid
        #ffffff;

    box-shadow:
        0 12px 35px
        rgba(
            60,
            83,
            102,
            0.12
        );

    transform:
        rotate(-2deg);
}


.photo-monogram {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 35px;

    font-style: italic;

    color: #66859e;
}


.photo-label {
    font-size: 6px;

    letter-spacing: 4px;

    color: #8aa0b1;
}


.photo-sparkle {
    display: none;
}


@keyframes heroPhotoFloat {

    0%,
    100% {
        transform:
            translateY(0);
    }

    50% {
        transform:
            translateY(-7px);
    }

}


/* =========================
   HERO MESSAGE
========================= */

.hero-message {
    margin-top: 48px;
}


.hero-message-small {
    font-size: 6px;

    font-weight: 500;

    letter-spacing: 3px;

    color: #8499aa;
}


.hero-message-script {
    margin:
        8px
        0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 27px;

    font-style: italic;

    color: #4c687e;
}


/* =========================
   HERO VENUE
========================= */

.hero-venue {
    margin-top: 42px;
}


.venue-flower {
    display: none;
}


.hero-venue p {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 22px;

    color:
        var(--blue-dark);
}


.hero-venue > span:last-child {
    display: block;

    margin-top: 7px;

    font-size: 6px;

    letter-spacing: 3px;

    color: #8499aa;
}


/* =========================
   HERO SCROLL
========================= */

.hero-scroll {
    margin-top: 48px;

    display: flex;
    flex-direction: column;

    align-items: center;

    gap: 8px;

    color: #91a5b5;
}


.hero-scroll span:first-child {
    font-size: 5px;

    letter-spacing: 3px;
}


.hero-scroll span:last-child {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 18px;

    animation:
        scrollBounce
        1.8s
        ease-in-out
        infinite;
}


@keyframes scrollBounce {

    0%,
    100% {
        transform:
            translateY(0);
    }

    50% {
        transform:
            translateY(5px);
    }

}


/* =========================================================
   03 — FORMAL INVITATION
========================================================= */

.invitation-section {
    position: relative;

    padding:
        85px
        24px
        75px;

    background:
        var(--cream);

    color:
        var(--blue-dark);

    text-align: center;

    overflow: hidden;
}


.invitation-content {
    position: relative;

    max-width: 430px;

    margin: 0 auto;

    z-index: 3;
}


/* =========================
   INVITATION FLOWERS
========================= */

.flower-invitation-left {
    width: 150px;

    left: -78px;
    top: 9%;

    opacity: 0.48;

    transform:
        rotate(30deg);
}


.flower-invitation-right {
    width: 115px;

    right: -55px;
    bottom: 14%;

    opacity: 0.38;

    transform:
        rotate(-34deg);

    animation-delay:
        -3s;
}


/* =========================
   INVITATION STAR
========================= */

.invitation-double-star {
    position: absolute;

    width: 40px;

    left: 7%;
    right: auto;

    top: 46%;

    z-index: 2;

    opacity: 0.48;

    pointer-events: none;

    transform:
        rotate(16deg);

    animation:
        starFloat
        5.8s
        ease-in-out
        infinite;
}


.invitation-eyebrow {
    margin-bottom: 30px;

    font-size: 6px;

    font-weight: 500;

    letter-spacing: 4px;

    color:
        var(--text-light);
}


.invitation-intro {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 21px;

    line-height: 1.55;

    color: #6c879c;
}


.invitation-guests {
    width:
        min(
            95%,
            340px
        );

    margin:
        25px
        auto;

    padding:
        22px
        15px;

    display: flex;

    flex-direction: column;

    gap: 7px;

    border-top:
        1px solid
        rgba(
            116,
            150,
            174,
            0.25
        );

    border-bottom:
        1px solid
        rgba(
            116,
            150,
            174,
            0.25
        );
}


.invitation-guests span {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 17px;

    font-style: italic;

    color: #536f85;
}


.invitation-intro-bottom {
    margin-top: 4px;
}


/* =========================
   INVITATION COUPLE
========================= */

.invitation-couple {
    margin-top: 50px;
}


.invitation-couple h2 {
    margin: 0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size:
        clamp(
            55px,
            16vw,
            75px
        );

    font-weight: 400;

    line-height: 0.75;

    color: #3f5e75;
}


.invitation-couple > span {
    display: block;

    margin:
        17px
        0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 25px;

    font-style: italic;

    color: #a1bdd1;
}


/* =========================
   INVITATION DATE
========================= */

.invitation-date {
    width:
        min(
            95%,
            330px
        );

    margin:
        55px
        auto
        0;

    display: flex;

    align-items: center;

    gap: 18px;
}


.date-line {
    flex: 1;

    height: 1px;

    background:
        rgba(
            116,
            150,
            174,
            0.32
        );
}


.invitation-date > div {
    flex-shrink: 0;
}


.invitation-date small {
    display: block;

    margin-bottom: 10px;

    font-size: 6px;

    letter-spacing: 3px;

    color: #96aaba;
}


.invitation-date strong {
    display: block;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 90px;

    line-height: 0.75;

    font-weight: 400;

    color: #47677f;
}


.invitation-date p {
    margin-top: 14px;

    font-size: 7px;

    font-weight: 500;

    letter-spacing: 3px;

    color: #8098aa;
}


/* =========================
   COUNTDOWN
========================= */

.countdown-area {
    width:
        min(
            100%,
            420px
        );

    margin:
        75px
        auto
        0;

    padding:
        40px
        18px
        30px;

    border-top:
        1px solid
        var(--line);

    border-bottom:
        1px solid
        var(--line);

    position: relative;

    z-index: 3;
}


.countdown-eyebrow {
    font-size: 6px;

    letter-spacing: 4px;

    color:
        var(--text-light);
}


.countdown-script {
    margin-top: 7px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 24px;

    font-style: italic;

    color: #67849a;
}


.countdown {
    margin-top: 32px;

    display: grid;

    grid-template-columns:
        1fr auto
        1fr auto
        1fr auto
        1fr;

    align-items: start;

    gap: 5px;
}


.countdown-item {
    min-width: 0;
}


.countdown-item span {
    display: block;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size:
        clamp(
            34px,
            10vw,
            46px
        );

    line-height: 1;

    color:
        var(--blue-dark);
}


.countdown-item small {
    display: block;

    margin-top: 10px;

    font-size: 5px;

    letter-spacing: 1.5px;

    color:
        var(--text-light);
}


.countdown-divider {
    padding-top: 5px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 25px;

    color: #b0c5d4;
}


.countdown-star {
    width: 22px;

    margin-top: 28px;

    opacity: 0.58;

    transform:
        rotate(-8deg);

    animation:
        starPulse
        4.3s
        ease-in-out
        infinite;
}


/* =========================================================
   04 — VENUE
========================================================= */

.venue-section {
    position: relative;

    padding:
        82px
        26px;

    background: #f4f8fb;

    text-align: center;

    overflow: hidden;
}


.flower-venue {
    width: 170px;

    right: -92px;
    bottom: -38px;

    opacity: 0.52;

    transform:
        rotate(-25deg);
}


.venue-starburst {
    position: absolute;

    width: 28px;

    right: 10%;
    left: auto;

    top: auto;
    bottom: 13%;

    z-index: 2;

    opacity: 0.48;

    pointer-events: none;

    transform:
        rotate(-12deg);

    animation:
        starPulse
        4.8s
        ease-in-out
        infinite;
}


.venue-section > *:not(.flower):not(.venue-starburst) {
    position: relative;

    z-index: 3;
}


.venue-eyebrow {
    font-size: 7px;

    font-weight: 500;

    letter-spacing: 4px;

    color: #8ca2b3;
}


.venue-section h2 {
    margin-top: 18px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size:
        clamp(
            44px,
            13vw,
            62px
        );

    font-weight: 400;

    line-height: 0.92;

    color:
        var(--blue-dark);
}


.venue-city {
    margin-top: 15px;

    font-size: 7px;

    letter-spacing: 4px;

    text-transform: uppercase;

    color: #8ca2b3;
}


.venue-divider {
    width: 55px;
    height: 1px;

    margin:
        28px
        auto;

    background: #b5c9d7;
}


.venue-note {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 18px;

    font-style: italic;

    color:
        var(--text-soft);
}


.venue-buttons {
    margin-top: 30px;

    display: flex;

    justify-content: center;

    gap: 12px;

    flex-wrap: wrap;
}


/* =========================================================
   BUTTONS
========================================================= */

.venue-button,
.add-date-button,
.rsvp-open-button,
.guestbook-submit,
.rsvp-submit,
.calendar-modal-options button {
    transition:
        transform 0.25s ease,
        box-shadow 0.25s ease,
        background 0.25s ease,
        color 0.25s ease;
}


.venue-button,
.add-date-button {
    min-width: 135px;

    padding:
        12px
        18px;

    border:
        1px solid
        var(--blue-mid);

    border-radius: 999px;

    background:
        rgba(
            255,
            255,
            255,
            0.78
        );

    color:
        var(--blue-dark);

    text-decoration: none;

    font-family:
        "DM Sans",
        sans-serif;

    font-size: 8px;

    font-weight: 500;

    letter-spacing: 1.5px;

    cursor: pointer;
}


.add-date-button {
    margin-top: 16px;

    min-width: 170px;
}


.venue-button:hover,
.add-date-button:hover {
    background:
        var(--blue-mid);

    color: #ffffff;

    transform:
        translateY(-2px);
}


.venue-button:active,
.add-date-button:active,
.rsvp-open-button:active,
.guestbook-submit:active,
.rsvp-submit:active,
.calendar-modal-options button:active {
    transform:
        scale(0.97);
}


/* =========================================================
   05 — RSVP
========================================================= */

.rsvp-section {
    position: relative;

    padding:
        78px
        24px;

    background:
        var(--cream);

    text-align: center;

    overflow: hidden;
}


.flower-rsvp {
    width: 135px;

    left: -68px;
    top: -30px;

    opacity: 0.46;

    transform:
        rotate(30deg);
}


.rsvp-double-star {
    position: absolute;

    width: 40px;

    left: 8%;
    right: auto;

    top: 18%;
    bottom: auto;

    z-index: 2;

    opacity: 0.48;

    pointer-events: none;

    transform:
        rotate(-14deg);

    animation:
        starFloat
        5.2s
        ease-in-out
        infinite;
}


.rsvp-section > *:not(.flower):not(.rsvp-double-star) {
    position: relative;

    z-index: 3;
}


.rsvp-eyebrow,
.programme-eyebrow,
.guestbook-eyebrow {
    font-size: 7px;

    font-weight: 500;

    letter-spacing: 4px;

    color: #8ca2b3;
}


.rsvp-section h2,
.programme-section h2,
.guestbook-section h2 {
    margin-top: 16px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size:
        clamp(
            40px,
            12vw,
            56px
        );

    font-weight: 400;

    line-height: 1;

    color:
        var(--blue-dark);
}


.rsvp-text {
    margin-top: 18px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 19px;

    font-style: italic;

    line-height: 1.5;

    color:
        var(--text-soft);
}


.rsvp-open-button {
    margin-top: 28px;

    min-width: 150px;

    padding:
        13px
        24px;

    border:
        1px solid
        var(--blue-mid);

    border-radius: 999px;

    background: #ffffff;

    color:
        var(--blue-dark);

    font-family:
        "DM Sans",
        sans-serif;

    font-size: 8px;

    font-weight: 500;

    letter-spacing: 2px;

    cursor: pointer;
}


.rsvp-open-button:hover {
    background:
        var(--blue-mid);

    color: #ffffff;

    transform:
        translateY(-2px);
}


/* =========================================================
   ATUR CARA MAJLIS — COMPACT CENTERED TIMELINE
========================================================= */

.programme-section {
    position: relative;

    padding:
        82px
        24px;

    background: #f4f8fb;

    text-align: center;

    overflow: hidden;
}


/* =========================
   TITLE DIVIDER
========================= */

.programme-line {
    width: 42px;
    height: 1px;

    margin:
        24px
        auto
        36px;

    background:
        rgba(
            139,
            168,
            189,
            0.42
        );
}


/* =========================
   EVENT ROW
========================= */

.programme-item {
    width: min(
        100%,
        285px
    );

    margin: 0 auto;

    display: grid;

    grid-template-columns:
        78px
        34px
        1fr;

    align-items: center;

    column-gap: 0;
}


/* =========================
   TIME
========================= */

.programme-time {
    text-align: right;

    padding-right: 10px;
}


.programme-time strong {
    display: block;

    margin: 0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 30px;

    font-weight: 400;

    line-height: 1;

    color: #47677f;
}


.programme-time small {
    display: block;

    margin-top: 5px;

    font-size: 5px;

    letter-spacing: 2px;

    color: #8ca2b3;
}


/* =========================
   STAR
========================= */

/*
   programme-star is the actual PNG <img>
*/

.programme-star {
    display: block;

    width: 18px;
    height: auto;

    justify-self: center;

    margin: 0;

    opacity: 0.58;

    object-fit: contain;

    animation:
        programmeStarPulse
        4.5s
        ease-in-out
        infinite;
}


.programme-star-small {
    width: 16px;

    opacity: 0.48;
}


/* =========================
   DESCRIPTION
========================= */

.programme-details {
    text-align: left;

    padding-left: 8px;
}


.programme-details p {
    margin: 0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 16px;

    line-height: 1.2;

    white-space: nowrap;

    color: #67849a;
}


/* =========================
   CONNECTING LINE
========================= */

/*
   The connector uses the EXACT
   same grid as the event rows.

   This makes the vertical line
   perfectly align with both stars.
*/

.programme-connector {
    width: min(
        100%,
        285px
    );

    height: 48px;

    margin:
        4px
        auto;

    display: grid;

    grid-template-columns:
        78px
        34px
        1fr;

    background: none;
}


.programme-connector::before {
    content: "";

    grid-column: 2;

    justify-self: center;

    width: 1px;
    height: 100%;

    background:
        rgba(
            139,
            168,
            189,
            0.30
        );
}


/* =========================
   STAR MOVEMENT
========================= */

@keyframes programmeStarPulse {

    0%,
    100% {
        transform:
            scale(1);

        opacity: 0.52;
    }

    50% {
        transform:
            scale(1.08);

        opacity: 0.72;
    }

}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 600px) {

    .programme-item,
    .programme-connector {
        width: min(
            100%,
            270px
        );

        grid-template-columns:
            72px
            30px
            1fr;
    }


    .programme-time {
        padding-right: 8px;
    }


    .programme-time strong {
        font-size: 28px;
    }


    .programme-star {
        width: 16px;
    }


    .programme-star-small {
        width: 15px;
    }


    .programme-details {
        padding-left: 7px;
    }


    .programme-details p {
        font-size: 15px;
    }


    .programme-connector {
        height: 42px;
    }

}


/* =========================================================
   07 — GUESTBOOK
========================================================= */

.guestbook-section {
    position: relative;

    padding:
        82px
        24px;

    background:
        var(--cream);

    text-align: center;

    overflow: hidden;
}


.flower-guestbook-left {
    width: 130px;

    left: -72px;
    top: 12%;

    opacity: 0.36;

    transform:
        rotate(25deg);
}


.flower-guestbook-right {
    width: 105px;

    right: -55px;
    bottom: 7%;

    opacity: 0.31;

    transform:
        rotate(-30deg);

    animation-delay:
        -3.5s;
}


.guestbook-double-star {
    position: absolute;

    width: 39px;

    right: 8%;
    top: auto;
    bottom: 5%;

    z-index: 2;

    opacity: 0.42;

    pointer-events: none;

    transform:
        rotate(14deg);

    animation:
        starFloat
        5.7s
        ease-in-out
        infinite;
}


.guestbook-section > *:not(.flower):not(.guestbook-double-star) {
    position: relative;

    z-index: 3;
}


.guestbook-intro {
    margin-top: 16px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 19px;

    font-style: italic;

    line-height: 1.5;

    color:
        var(--text-soft);
}


.guestbook-form {
    width:
        min(
            100%,
            430px
        );

    margin:
        38px
        auto
        0;

    padding:
        30px
        24px;

    background:
        rgba(
            255,
            255,
            255,
            0.86
        );

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.22
        );

    border-radius: 24px;

    text-align: left;

    backdrop-filter:
        blur(4px);
}


.guestbook-form label,
#rsvpForm label,
.rsvp-form-label {
    display: block;

    margin-bottom: 8px;

    font-size: 7px;

    font-weight: 500;

    letter-spacing: 2px;

    text-transform: uppercase;

    color: #8ca2b3;
}


.guestbook-form input,
.guestbook-form textarea,
#rsvpForm input[type="text"] {
    width: 100%;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.30
        );

    border-radius: 14px;

    background: #ffffff;

    padding:
        13px
        14px;

    font-family:
        "DM Sans",
        sans-serif;

    font-size: 14px;

    color:
        var(--blue-dark);

    outline: none;
}


.guestbook-form input,
#rsvpForm input[type="text"] {
    height: 46px;
}


.guestbook-form textarea {
    min-height: 120px;

    resize: vertical;
}


.guestbook-form label:not(:first-child) {
    margin-top: 20px;
}


.guestbook-submit,
.rsvp-submit {
    display: block;

    margin:
        24px
        auto
        0;

    min-width: 145px;

    padding:
        12px
        20px;

    border:
        1px solid
        var(--blue-mid);

    border-radius: 999px;

    background:
        var(--blue-mid);

    color: #ffffff;

    font-family:
        "DM Sans",
        sans-serif;

    font-size: 8px;

    letter-spacing: 1.5px;

    cursor: pointer;
}


.guestbook-list {
    width:
        min(
            100%,
            520px
        );

    margin:
        26px
        auto
        0;

    display: grid;

    gap: 12px;
}


/* =========================================================
   GUESTBOOK SCROLL AREA
========================================================= */

.guestbook-list {
    width: min(
        100%,
        520px
    );

    max-height: 340px;

    margin:
        26px
        auto
        0;

    padding-right: 6px;

    display: grid;

    gap: 12px;

    overflow-y: auto;

    overscroll-behavior: contain;

    scroll-behavior: smooth;
}

/* =========================================================
   GUESTBOOK — SCROLLABLE WISHES
========================================================= */

.guestbook-list {
    width: min(100%, 520px);

    /* Fixed visible area */
    height: 230px;

    margin:
        28px
        auto
        0;

    padding:
        4px
        8px
        18px
        4px;

    display: flex;
    flex-direction: column;

    gap: 12px;

    overflow-y: auto;
    overflow-x: hidden;

    scroll-behavior: smooth;

    overscroll-behavior-y: contain;

    -webkit-overflow-scrolling: touch;

    scrollbar-width: thin;

    scrollbar-color:
        rgba(139, 168, 189, 0.48)
        transparent;
}


/* =========================
   WISH CARD
========================= */

.guestbook-card {
    flex: 0 0 auto;

    width: 100%;

    padding:
        20px
        18px;

    background:
        rgba(
            255,
            255,
            255,
            0.88
        );

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.22
        );

    border-radius: 18px;

    text-align: left;
}


.guestbook-card p {
    margin: 0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 17px;

    line-height: 1.4;

    color: #58748a;
}


.guestbook-card span {
    display: block;

    margin-top: 10px;

    font-size: 7px;

    letter-spacing: 1.3px;

    color: #94a9b8;
}


/* =========================
   CHROME / EDGE / SAFARI
   SCROLLBAR
========================= */

.guestbook-list::-webkit-scrollbar {
    width: 5px;
}


.guestbook-list::-webkit-scrollbar-track {
    background: transparent;
}


.guestbook-list::-webkit-scrollbar-thumb {
    background:
        rgba(
            139,
            168,
            189,
            0.48
        );

    border-radius: 999px;
}


.guestbook-list::-webkit-scrollbar-thumb:hover {
    background:
        rgba(
            139,
            168,
            189,
            0.72
        );
}
/* =========================================================
   08 — CLOSING
========================================================= */

.closing-section {
    position: relative;

    padding:
        90px
        24px
        45px;

    background:
        var(--blue-dark);

    color: #ffffff;

    text-align: center;

    overflow: hidden;
}


.flower-closing {
    width: 220px;

    left: -95px;
    bottom: -90px;

    opacity: 0.11;

    transform:
        rotate(25deg);

    filter:
        brightness(1.8);
}


.closing-double-star {
    position: absolute;

    width: 48px;

    right: 8%;
    top: 17%;

    z-index: 2;

    opacity: 0.16;

    pointer-events: none;

    transform:
        rotate(-12deg);

    filter:
        brightness(1.8);

    animation:
        starFloat
        6s
        ease-in-out
        infinite;
}


.closing-section > *:not(.flower):not(.closing-double-star) {
    position: relative;

    z-index: 3;
}


.closing-section > p:first-of-type {
    font-size: 7px;

    letter-spacing: 4px;

    color: #d7e5ee;
}


.closing-section h2 {
    margin-top: 24px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size:
        clamp(
            52px,
            15vw,
            74px
        );

    font-weight: 400;

    line-height: 0.82;
}


.closing-section h2 span {
    display: block;

    margin:
        14px
        0;

    font-size: 24px;

    font-style: italic;

    color: #bfd4e2;
}


.closing-message {
    max-width: 300px;

    margin:
        26px
        auto
        0;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 18px;

    font-style: italic;

    line-height: 1.5;

    color: #e5eef4;
}


.closing-date {
    margin-top: 22px;

    font-size: 7px;

    letter-spacing: 3px;

    color: #d7e5ee;
}


.closing-section small {
    display: block;

    margin-top: 50px;

    font-size: 5px;

    letter-spacing: 2px;

    opacity: 0.55;
}


/* =========================================================
   CALENDAR + RSVP MODALS
========================================================= */

.calendar-modal,
.rsvp-modal {
    position: fixed;

    inset: 0;

    display: flex;

    align-items: flex-end;
    justify-content: center;

    padding: 18px;

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    z-index: 10000;

    transition:
        opacity 0.3s ease,
        visibility 0.3s ease;
}


.calendar-modal.show,
.rsvp-modal.show {
    opacity: 1;

    visibility: visible;

    pointer-events: auto;
}


.calendar-modal-overlay,
.rsvp-modal-overlay {
    position: absolute;

    inset: 0;

    background:
        rgba(
            36,
            52,
            66,
            0.38
        );

    backdrop-filter:
        blur(4px);

    -webkit-backdrop-filter:
        blur(4px);
}


.calendar-modal-card,
.rsvp-modal-card {
    position: relative;

    width:
        min(
            100%,
            430px
        );

    max-height:
        calc(
            100svh - 36px
        );

    overflow-y: auto;

    padding:
        36px
        24px
        28px;

    border-radius:
        28px
        28px
        18px
        18px;

    background:
        var(--cream);

    color:
        var(--blue-dark);

    text-align: center;

    z-index: 2;

    transform:
        translateY(25px);

    transition:
        transform 0.3s ease;
}


.calendar-modal.show
.calendar-modal-card,

.rsvp-modal.show
.rsvp-modal-card {
    transform:
        translateY(0);
}


.calendar-close,
.rsvp-close {
    position: absolute;

    top: 14px;
    right: 16px;

    width: 36px;
    height: 36px;

    border: 0;

    border-radius: 50%;

    background: #f4f8fb;

    color:
        var(--blue-dark);

    font-size: 20px;

    cursor: pointer;
}


.calendar-modal-eyebrow,
.rsvp-modal-eyebrow {
    font-size: 6px;

    letter-spacing: 3px;

    color: #8ca2b3;
}


.calendar-modal-card h3,
.rsvp-modal-card h3 {
    margin-top: 12px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 34px;

    font-weight: 400;
}


.calendar-modal-card
> p:not(.calendar-modal-eyebrow) {
    margin-top: 8px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 18px;

    font-style: italic;

    color:
        var(--text-soft);
}


.calendar-modal-options {
    margin-top: 26px;

    display: grid;

    gap: 10px;
}


.calendar-modal-options button {
    width: 100%;

    padding:
        13px
        18px;

    border:
        1px solid
        var(--blue-mid);

    border-radius: 999px;

    background: #ffffff;

    color:
        var(--blue-dark);

    font-family:
        "DM Sans",
        sans-serif;

    font-size: 8px;

    letter-spacing: 1.3px;

    cursor: pointer;
}


/* =========================================================
   RSVP MODAL FORM
========================================================= */

#rsvpForm {
    margin-top: 28px;

    text-align: left;
}


.rsvp-form-label {
    margin-top: 22px;
}


.attendance-options {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 10px;
}


.attendance-card {
    min-height: 110px;

    padding:
        18px
        12px;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.30
        );

    border-radius: 18px;

    background: #ffffff;

    color:
        var(--blue-dark);

    display: flex;
    flex-direction: column;

    align-items: center;
    justify-content: center;

    gap: 8px;

    cursor: pointer;

    transition:
        background 0.3s ease,
        color 0.3s ease,
        border-color 0.3s ease,
        transform 0.25s ease;
}


.attendance-card:hover {
    transform:
        translateY(-2px);
}


.attendance-card span {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 22px;
}


.attendance-card strong {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 17px;

    font-weight: 400;
}


.attendance-card.selected {
    background:
        var(--blue-mid);

    color: #ffffff;

    border-color:
        var(--blue-mid);
}


.guest-count-wrapper {
    display: none;

    margin-top: 24px;

    text-align: center;
}


.guest-count-wrapper.show {
    display: block;
}


.guest-count-wrapper > p {
    font-size: 7px;

    letter-spacing: 2px;

    text-transform: uppercase;

    color: #8ca2b3;
}


.guest-counter {
    width:
        fit-content;

    margin:
        12px
        auto
        0;

    padding: 6px;

    display: flex;

    align-items: center;

    gap: 20px;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.30
        );

    border-radius: 999px;

    background: #ffffff;
}


.guest-counter button {
    width: 34px;
    height: 34px;

    border: 0;

    border-radius: 50%;

    background: #eaf2f7;

    color:
        var(--blue-dark);

    font-size: 18px;

    cursor: pointer;
}


#guestCountDisplay {
    min-width: 20px;

    text-align: center;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 23px;
}


/* =========================================================
   SECTION DIVIDERS
========================================================= */

.invitation-section::before,
.venue-section::before,
.rsvp-section::before,
.programme-section::before,
.guestbook-section::before {
    content: "";

    position: absolute;

    left: 50%;
    top: 0;

    width: 52px;
    height: 1px;

    transform:
        translateX(-50%);

    background:
        var(--line);

    z-index: 4;
}


/* =========================================================
   STAR ANIMATIONS
========================================================= */

@keyframes starFloat {

    0%,
    100% {
        translate:
            0 0;
    }

    50% {
        translate:
            0 -6px;
    }

}


@keyframes starPulse {

    0%,
    100% {
        scale: 1;

        opacity: 0.48;
    }

    50% {
        scale: 1.09;

        opacity: 0.76;
    }

}


/* =========================================================
   SCROLL REVEAL
========================================================= */

.reveal {
    opacity: 0;

    transform:
        translateY(28px);

    transition:
        opacity 0.9s ease,
        transform 0.9s
        cubic-bezier(
            0.22,
            1,
            0.36,
            1
        );
}


.reveal.visible {
    opacity: 1;

    transform:
        translateY(0);
}


.reveal-delay-1 {
    transition-delay:
        0.12s;
}


.reveal-delay-2 {
    transition-delay:
        0.22s;
}


.reveal-delay-3 {
    transition-delay:
        0.32s;
}


/* =========================================================
   FOCUS STATES
========================================================= */

button:focus-visible,
a:focus-visible,
input:focus-visible,
textarea:focus-visible {
    outline:
        2px solid
        #9bb9d0;

    outline-offset:
        3px;
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 600px) {

    /* ENVELOPE */

    .opening-inner {
        padding:
            35px
            24px;
    }


    .opening-seal {
        width: 112px;
        height: 112px;
    }


    .seal-name {
        font-size: 19px;
    }


    .opening-venue {
        font-size: 16px;
    }


    /* =========================
       HERO
    ========================= */

    .wedding-hero {
        padding:
            52px
            22px
            40px;
    }


    .hero-photo-wrap {
        width:
            min(
                70vw,
                270px
            );
    }


    .flower-hero-left {
        width: 112px;

        left: -54px;

        top: 20%;
    }


    .flower-hero-right {
        width: 140px;

        right: -64px;

        top: 48%;
    }


    .flower-hero-small {
        width: 57px;

        left: 12px;
    }


    .hero-starburst {
        width: 24px;

        left: 6%;

        top: 37%;
    }


    .hero-double-star {
        width: 39px;

        right: 5%;

        top: 70%;
    }


    /* =========================
       INVITATION
    ========================= */

    .invitation-section {
        padding:
            75px
            20px
            65px;
    }


    .invitation-intro {
        font-size: 20px;
    }


    .invitation-guests span {
        font-size: 16px;
    }


    .invitation-date strong {
        font-size: 84px;
    }


    .flower-invitation-left {
        width: 112px;

        left: -65px;
    }


    .flower-invitation-right {
        width: 92px;

        right: -48px;
    }


    .invitation-double-star {
        width: 33px;

        left: 5%;

        top: 47%;
    }


    /* =========================
       COUNTDOWN
    ========================= */

    .countdown-area {
        margin-top: 65px;

        padding-left: 5px;
        padding-right: 5px;
    }


    .countdown {
        gap: 3px;
    }


    .countdown-divider {
        font-size: 21px;
    }


    /* =========================
       VENUE
    ========================= */

    .venue-section {
        padding-left: 20px;
        padding-right: 20px;
    }


    .flower-venue {
        width: 135px;

        right: -72px;
    }


    .venue-starburst {
        width: 23px;

        right: 8%;

        bottom: 10%;
    }


    /* =========================
       RSVP
    ========================= */

    .rsvp-section {
        padding-left: 20px;
        padding-right: 20px;
    }


    .flower-rsvp {
        width: 105px;

        left: -57px;
    }


    .rsvp-double-star {
        width: 33px;

        left: 5%;
    }


    /* =========================
       PROGRAMME
    ========================= */

    .programme-section {
        padding-left: 20px;
        padding-right: 20px;
    }


    .programme-item {
        grid-template-columns:
            78px
            28px
            1fr;
    }


    .flower-programme {
        width: 112px;

        right: -60px;
    }


    /* =========================
       GUESTBOOK
    ========================= */

    .guestbook-section {
        padding-left: 20px;
        padding-right: 20px;
    }


    .flower-guestbook-left {
        width: 102px;

        left: -58px;
    }


    .flower-guestbook-right {
        width: 85px;

        right: -47px;
    }


    .guestbook-double-star {
        width: 31px;

        right: 5%;

        bottom: 4%;
    }


    /* =========================
       CLOSING
    ========================= */

    .flower-closing {
        width: 175px;

        left: -80px;

        bottom: -75px;
    }


    .closing-double-star {
        width: 39px;

        right: 6%;

        top: 15%;
    }


    /* =========================
       RSVP MODAL
    ========================= */

    .attendance-options {
        grid-template-columns:
            1fr;
    }

}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (
    prefers-reduced-motion:
    reduce
) {

    *,
    *::before,
    *::after {
        transition-duration:
            0.01ms !important;

        animation-duration:
            0.01ms !important;

        animation-iteration-count:
            1 !important;
    }


    .reveal {
        opacity: 1 !important;

        transform:
            none !important;
    }


    .flower,
    .hero-starburst,
    .hero-double-star,
    .invitation-double-star,
    .venue-starburst,
    .rsvp-double-star,
    .programme-star,
    .guestbook-double-star,
    .closing-double-star,
    .countdown-star,
    .hero-photo-wrap {
        animation:
            none !important;
    }

}

/* =========================================================
   BOTTOM WEDDING NAVIGATION
========================================================= */

.wedding-nav {
    position: fixed;

    left: 50%;
    bottom: 0;

    width: min(100%, 430px);

    min-height: 72px;

    display: grid;

    grid-template-columns:
        repeat(4, 1fr);

    align-items: center;

    padding:
        7px
        10px
        calc(
            7px + env(safe-area-inset-bottom)
        );

    background:
        rgba(
            255,
            250,
            248,
            0.96
        );

    border-top:
        1px solid
        rgba(
            139,
            168,
            189,
            0.25
        );

    box-shadow:
        0 -8px 30px
        rgba(
            64,
            95,
            118,
            0.08
        );

    backdrop-filter:
        blur(14px);

    -webkit-backdrop-filter:
        blur(14px);

    z-index: 9000;


    /* Hidden while envelope is closed */

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    transform:
        translate(
            -50%,
            110%
        );

    transition:
        transform 0.75s
        cubic-bezier(
            0.22,
            1,
            0.36,
            1
        ),
        opacity 0.5s ease,
        visibility 0.5s ease;
}


/* =========================
   NAVIGATION APPEARS
========================= */

.wedding-nav.show {
    opacity: 1;

    visibility: visible;

    pointer-events: auto;

    transform:
        translate(
            -50%,
            0
        );
}


/* =========================
   NAV ITEM
========================= */

.wedding-nav-item {
    width: 100%;
    height: 58px;

    display: flex;
    flex-direction: column;

    align-items: center;
    justify-content: center;

    gap: 4px;

    padding: 0;

    border: 0;

    background: transparent;

    color:
        var(--blue-dark);

    text-decoration: none;

    cursor: pointer;

    -webkit-tap-highlight-color:
        transparent;

    transition:
        transform 0.2s ease,
        color 0.2s ease,
        opacity 0.2s ease;
}


.wedding-nav-item:hover {
    color:
        var(--blue-mid);
}


.wedding-nav-item:active {
    transform:
        scale(0.92);
}


/* =========================
   NAV ICON
========================= */

.nav-icon {
    min-height: 25px;

    display: flex;

    align-items: center;
    justify-content: center;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 23px;

    line-height: 1;

    color:
        currentColor;
}


/* =========================
   NAV LABEL
========================= */

.nav-label {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 11px;

    line-height: 1;

    color:
        currentColor;
}


/* =========================
   CONTENT CLEARANCE
========================= */

body {
    padding-bottom:
        calc(
            82px +
            env(safe-area-inset-bottom)
        );
}


/* =========================
   MOBILE NAVIGATION
========================= */

@media (max-width: 600px) {

    .wedding-nav {
        width: 100%;

        min-height: 70px;

        padding-left: 6px;
        padding-right: 6px;
    }


    .wedding-nav-item {
        height: 56px;
    }


    .nav-icon {
        font-size: 22px;
    }


    .nav-label {
        font-size: 10px;
    }

}


/* =========================
   REDUCED MOTION
========================= */

@media (
    prefers-reduced-motion:
    reduce
) {

    .wedding-nav {
        transition:
            opacity 0.01ms linear !important;
    }

}

/* =========================
   OVERLAY
========================= */

.location-modal-overlay {
    position: absolute;

    inset: 0;

    background:
        rgba(
            40,
            56,
            70,
            0.42
        );

    backdrop-filter:
        blur(7px);

    -webkit-backdrop-filter:
        blur(7px);
}


/* =========================
   MODAL CARD
========================= */

.location-modal-card {
    position: relative;

    width:
        min(
            92vw,
            390px
        );

    overflow: hidden;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.18
        );

    border-radius: 24px;

    background:
        var(--cream);

    box-shadow:
        0 20px 60px
        rgba(
            36,
            52,
            66,
            0.22
        );

    text-align: center;

    z-index: 2;

    transform:
        translateY(24px)
        scale(0.98);

    transition:
        transform 0.35s
        cubic-bezier(
            0.22,
            1,
            0.36,
            1
        );
}


.location-modal.show
.location-modal-card {
    transform:
        translateY(0)
        scale(1);
}


/* =========================
   CLOSE BUTTON
========================= */

.location-close {
    position: absolute;

    top: 12px;
    right: 14px;

    width: 34px;
    height: 34px;

    display: flex;

    align-items: center;
    justify-content: center;

    border: 0;

    border-radius: 50%;

    background:
        rgba(
            255,
            255,
            255,
            0.90
        );

    color:
        var(--blue-dark);

    box-shadow:
        0 4px 14px
        rgba(
            64,
            95,
            118,
            0.08
        );

    font-size: 18px;

    cursor: pointer;

    z-index: 5;
}


/* =========================
   LOCATION HEADER
========================= */

.location-modal-eyebrow {
    padding-top: 18px;

    font-size: 5px;

    font-weight: 500;

    letter-spacing: 3px;

    color:
        var(--text-light);
}


.location-modal-card h3 {
    margin:
        4px
        0
        14px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 29px;

    font-weight: 400;

    line-height: 1;

    color:
        var(--blue-dark);
}


/* =========================
   MAP WINDOW
========================= */




/*
   Google embeds cannot be restyled internally,
   so we enlarge and crop the iframe slightly
   to keep the venue pin visible while reducing
   the oversized Google UI.
*/




/* =========================
   MAP ACTIONS
========================= */

.location-actions {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 10px;

    padding:
        14px
        14px
        15px;

    background:
        var(--cream);
}


.location-action {
    min-height: 40px;

    display: flex;

    align-items: center;
    justify-content: center;

    padding:
        10px
        9px;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.42
        );

    border-radius: 999px;

    background:
        rgba(
            255,
            255,
            255,
            0.92
        );

    color:
        var(--blue-dark);

    text-decoration: none;

    font-family:
        "DM Sans",
        sans-serif;

    font-size: 8px;

    font-weight: 500;

    letter-spacing: 0.5px;

    box-shadow:
        0 3px 12px
        rgba(
            64,
            95,
            118,
            0.04
        );

    transition:
        transform 0.2s ease,
        background 0.2s ease,
        color 0.2s ease;
}


.location-action:hover {
    background:
        var(--blue-light);
}


.location-action:active {
    transform:
        scale(0.96);
}


/* =========================
   MOBILE LOCATION MODAL
========================= */

@media (max-width: 600px) {

    .location-modal {
        align-items: center;

        padding:
            16px
            12px
            88px;
    }


    .location-modal-card {
        width: 100%;

        max-width: 360px;

        border-radius: 22px;
    }


    


/* =========================
   CLOSE BUTTON
========================= */

.location-close {
    position: absolute;

    top: 12px;
    right: 14px;

    width: 34px;
    height: 34px;

    border: 0;

    border-radius: 50%;

    background:
        rgba(
            255,
            255,
            255,
            0.88
        );

    color:
        var(--blue-dark);

    font-size: 20px;

    cursor: pointer;

    z-index: 5;
}


/* =========================
   HEADER
========================= */

.location-modal-eyebrow {
    padding-top: 20px;

    font-size: 6px;

    letter-spacing: 3px;

    color:
        var(--text-light);
}


.location-modal-card h3 {
    margin:
        4px
        0
        14px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 30px;

    font-weight: 400;

    color:
        var(--blue-dark);
}


/* =========================
   MAP
========================= */







/* =========================
   WAZE + GOOGLE MAPS
========================= */

.location-actions {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 10px;

    padding:
        14px
        18px
        18px;

    background:
        var(--cream);
}


.location-action {
    padding:
        12px
        10px;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.45
        );

    border-radius: 12px;

    background:
        #ffffff;

    color:
        var(--blue-dark);

    text-decoration: none;

    font-size: 9px;

    font-weight: 500;

    letter-spacing: 0.5px;

    transition:
        transform 0.2s ease,
        background 0.2s ease;
}


.location-action:active {
    transform:
        scale(0.96);
}


/* =========================
   MOBILE
========================= */

@media (max-width: 600px) {

    .location-modal {
        padding:
            18px
            14px
            88px;
    }


    .location-modal-card {
        width: 100%;

        border-radius: 22px;
    }

/* =========================================================
   LOCATION MODAL — SIMPLE VENUE POPUP
========================================================= */

.location-modal {
    position: fixed;

    inset: 0;

    display: flex;

    align-items: center;
    justify-content: center;

    padding:
        20px
        16px
        92px;

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    z-index: 10001;

    transition:
        opacity 0.3s ease,
        visibility 0.3s ease;
}


.location-modal.show {
    opacity: 1;

    visibility: visible;

    pointer-events: auto;
}


/* =========================
   BACKDROP
========================= */

.location-modal-overlay {
    position: absolute;

    inset: 0;

    background:
        rgba(
            40,
            56,
            70,
            0.42
        );

    backdrop-filter:
        blur(7px);

    -webkit-backdrop-filter:
        blur(7px);
}


/* =========================
   CARD
========================= */

.location-modal-card {
    position: relative;

    width:
        min(
            92vw,
            360px
        );

    padding:
        34px
        24px
        24px;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.18
        );

    border-radius: 26px;

    background:
        var(--cream);

    box-shadow:
        0 20px 60px
        rgba(
            36,
            52,
            66,
            0.18
        );

    text-align: center;

    z-index: 2;

    transform:
        translateY(20px)
        scale(0.98);

    transition:
        transform 0.35s
        cubic-bezier(
            0.22,
            1,
            0.36,
            1
        );
}


.location-modal.show
.location-modal-card {
    transform:
        translateY(0)
        scale(1);
}


/* =========================
   CLOSE BUTTON
========================= */

.location-close {
    position: absolute;

    top: 12px;
    right: 14px;

    width: 34px;
    height: 34px;

    display: flex;

    align-items: center;
    justify-content: center;

    border: 0;

    border-radius: 50%;

    background:
        #f4f8fb;

    color:
        var(--blue-dark);

    font-size: 18px;

    cursor: pointer;

    transition:
        transform 0.2s ease,
        background 0.2s ease;
}


.location-close:hover {
    background:
        var(--blue-light);
}


.location-close:active {
    transform:
        scale(0.94);
}


/* =========================
   TEXT
========================= */

.location-modal-eyebrow {
    font-size: 6px;

    font-weight: 500;

    letter-spacing: 3px;

    color:
        var(--text-light);
}


.location-modal-card h3 {
    margin-top: 13px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 39px;

    font-weight: 400;

    line-height: 0.95;

    color:
        var(--blue-dark);
}


.location-modal-city {
    margin-top: 14px;

    font-size: 7px;

    letter-spacing: 3px;

    text-transform: uppercase;

    color:
        #8ca2b3;
}


.location-modal-divider {
    width: 44px;
    height: 1px;

    margin:
        24px
        auto;

    background:
        rgba(
            139,
            168,
            189,
            0.35
        );
}


.location-modal-note {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 18px;

    font-style: italic;

    line-height: 1.45;

    color:
        var(--text-soft);
}


/* =========================
   ACTION BUTTONS
========================= */

.location-actions {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 10px;

    margin-top: 26px;
}


.location-action {
    min-height: 42px;

    display: flex;

    align-items: center;
    justify-content: center;

    padding:
        10px
        12px;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.42
        );

    border-radius: 999px;

    background:
        #ffffff;

    color:
        var(--blue-dark);

    text-decoration: none;

    font-family:
        "DM Sans",
        sans-serif;

    font-size: 8px;

    font-weight: 500;

    letter-spacing: 0.7px;

    transition:
        transform 0.2s ease,
        background 0.2s ease,
        color 0.2s ease;
}


.location-action:hover {
    background:
        var(--blue-light);
}


.location-action:active {
    transform:
        scale(0.96);
}


/* =========================
   MOBILE
========================= */

@media (max-width: 600px) {

    .location-modal {
        padding:
            16px
            12px
            88px;
    }


    .location-modal-card {
        width: 100%;

        max-width: 340px;

        padding:
            32px
            20px
            22px;

        border-radius: 24px;
    }


    .location-modal-card h3 {
        font-size: 36px;
    }


    .location-actions {
        gap: 8px;

        margin-top: 24px;
    }


    .location-action {
        min-height: 40px;

        font-size: 7.5px;
    }

}

/* =========================================================
   CONTACT MODAL — PIC POPUP
========================================================= */

.contact-modal {
    position: fixed;

    inset: 0;

    display: flex;

    align-items: center;
    justify-content: center;

    padding:
        20px
        16px
        92px;

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    z-index: 10001;

    transition:
        opacity 0.3s ease,
        visibility 0.3s ease;
}


.contact-modal.show {
    opacity: 1;

    visibility: visible;

    pointer-events: auto;
}


/* =========================
   BACKDROP
========================= */

.contact-modal-overlay {
    position: absolute;

    inset: 0;

    background:
        rgba(
            40,
            56,
            70,
            0.42
        );

    backdrop-filter:
        blur(7px);

    -webkit-backdrop-filter:
        blur(7px);
}


/* =========================
   CARD
========================= */

.contact-modal-card {
    position: relative;

    width:
        min(
            92vw,
            350px
        );

    padding:
        34px
        24px
        26px;

    border:
        1px solid
        rgba(
            139,
            168,
            189,
            0.18
        );

    border-radius: 26px;

    background:
        var(--cream);

    box-shadow:
        0 20px 60px
        rgba(
            36,
            52,
            66,
            0.18
        );

    text-align: center;

    z-index: 2;

    transform:
        translateY(20px)
        scale(0.98);

    transition:
        transform 0.35s
        cubic-bezier(
            0.22,
            1,
            0.36,
            1
        );
}


.contact-modal.show
.contact-modal-card {
    transform:
        translateY(0)
        scale(1);
}


/* =========================
   CLOSE BUTTON
========================= */

.contact-close {
    position: absolute;

    top: 12px;
    right: 14px;

    width: 34px;
    height: 34px;

    display: flex;

    align-items: center;
    justify-content: center;

    border: 0;

    border-radius: 50%;

    background:
        #f4f8fb;

    color:
        var(--blue-dark);

    font-size: 18px;

    cursor: pointer;

    transition:
        transform 0.2s ease,
        background 0.2s ease;
}


.contact-close:hover {
    background:
        var(--blue-light);
}


.contact-close:active {
    transform:
        scale(0.94);
}


/* =========================
   CONTACT TEXT
========================= */

.contact-modal-eyebrow {
    font-size: 6px;

    font-weight: 500;

    letter-spacing: 3px;

    color:
        var(--text-light);
}


.contact-modal-card h3 {
    margin-top: 12px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 31px;

    font-weight: 400;

    line-height: 1;

    color:
        var(--blue-dark);
}


.contact-modal-divider {
    width: 44px;
    height: 1px;

    margin:
        22px
        auto;

    background:
        rgba(
            139,
            168,
            189,
            0.35
        );
}


.contact-pic-name {
    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 30px;

    font-style: italic;

    line-height: 1;

    color:
        var(--blue-dark);
}


.contact-pic-number {
    margin-top: 10px;

    font-size: 11px;

    font-weight: 500;

    letter-spacing: 1px;

    color:
        var(--text-soft);
}


.contact-modal-note {
    margin-top: 20px;

    font-family:
        "Instrument Serif",
        Georgia,
        serif;

    font-size: 17px;

    font-style: italic;

    line-height: 1.45;

    color:
        var(--text-soft);
}


/* =========================
   MOBILE
========================= */

@media (max-width: 600px) {

    .contact-modal {
        padding:
            16px
            12px
            88px;
    }


    .contact-modal-card {
        width: 100%;

        max-width: 330px;

        padding:
            32px
            20px
            24px;

        border-radius: 24px;
    }


    .contact-modal-card h3 {
        font-size: 29px;
    }


    .contact-pic-name {
        font-size: 28px;
    }


    .contact-pic-number {
        font-size: 10px;
    }
}
}
}