.wedding-app {
    width: 100%;
    min-height: 100%;
    background: var(--color-background);
}

.invitation-hero {
    position: relative;
    isolation: isolate;
    display: grid;
    width: 100%;
    height: 100vh;
    height: 100svh;
    min-height: 0;
    padding:
        max(0.65rem, env(safe-area-inset-top))
        1rem
        max(0.65rem, env(safe-area-inset-bottom));
    place-items: center;
    overflow: hidden;
}

.invitation-hero__content {
    position: relative;
    z-index: 2;
    display: flex;
    width: min(100%, 48rem);
    height: 100%;
    min-height: 0;
    margin-inline: auto;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.invitation-hero__heading {
    position: relative;
    z-index: 20;
    display: flex;
    width: 100%;
    flex-direction: column;
    align-items: center;
    pointer-events: none;
    transition: transform 0.7s var(--ease-elegant);
    transform-origin: center bottom;
}

.invitation-hero__ornament {
    display: block;
    margin-bottom: clamp(0.25rem, 1vh, 0.75rem);
    color: var(--color-accent);
    font-size: clamp(0.65rem, 1.5vh, 0.95rem);
    line-height: 1;
    transition:
        transform 0.7s var(--ease-elegant);
    transform-origin: center;
}

.invitation-hero__eyebrow {
    max-width: 25rem;
    margin: 0;
    color: var(--color-primary);
    font-family: var(--font-body);
    font-size: clamp(0.57rem, 1.35vh, 0.78rem);
    font-weight: 500;
    letter-spacing: 0.24em;
    line-height: 1.45;
    text-transform: uppercase;
    transition:
        transform 0.7s var(--ease-elegant);
    transform-origin: center;
}

.invitation-hero__names {
    display: flex;
    margin: clamp(0.35rem, 1.1vh, 0.85rem) 0 0;
    flex-direction: column;
    align-items: center;
    color: var(--color-primary-dark);
    font-family: var(--font-script);
    font-size: clamp(2.75rem, 8.7vh, 6.8rem);
    font-weight: 400;
    line-height: 0.74;
    text-wrap: balance;
    transition:
        transform 0.7s var(--ease-elegant);
    transform-origin: center;
}

.invitation-hero__name {
    display: block;
}

.invitation-hero__ampersand {
    display: block;
    margin: 0.13em 0 0.1em;
    color: var(--color-accent);
    font-family: var(--font-heading);
    font-size: 0.35em;
    font-style: italic;
    line-height: 1;
}

.invitation-hero__date {
    display: flex;
    margin-top: clamp(0.45rem, 1.25vh, 1rem);
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    color: var(--color-text-muted);
    font-family: var(--font-heading);
    font-size: clamp(0.82rem, 1.8vh, 1.2rem);
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition:
        transform 0.7s var(--ease-elegant);
    transform-origin: center;
}

.invitation-hero.is-opening .invitation-hero__heading,
.invitation-hero.is-open .invitation-hero__heading {
    transform: translateY(-7rem) scale(0.78);
}

.invitation-hero.is-opening .invitation-hero__envelope-slot,
.invitation-hero.is-open .invitation-hero__envelope-slot {
    transform: translateY(3.5rem) !important;
}

.invitation-hero__date-separator {
    color: var(--color-accent);
    font-size: 0.7em;
}

.invitation-hero__envelope-slot {
    position: relative;
    display: grid;
    width: min(100%, 22.5rem, 44vh);
    margin: clamp(0.55rem, 1.5vh, 1.25rem) auto 0;
    place-items: center;
    perspective: 90rem;
    transition: transform 0.7s var(--ease-elegant);
}

.invitation-hero__instruction {
    display: block;
    width: 100%;
    max-width: 25rem;
    margin: clamp(0.4rem, 1.2vh, 0.9rem) auto 0;
    padding-inline: 0.75rem;
    color: var(--color-primary);
    font-family: var(--font-body);
    font-size: clamp(0.54rem, 1.2vh, 0.68rem);
    font-weight: 500;
    line-height: 1.4;
    letter-spacing: 0.11em;
    text-align: center;
    text-transform: uppercase;
}

.invitation-hero__instruction[hidden],
.invitation-hero.is-open .invitation-hero__instruction {
    display: none !important;
}

.invitation-hero__continue {
    position: absolute;
    z-index: 12;
    display: flex;
    width: min(90%, 18rem);
    left: 50%;
    bottom: max(0.7rem, env(safe-area-inset-bottom));
    padding: 0.35rem 1rem;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    border: 0;
    cursor: pointer;
    color: var(--olive-600);
    background: transparent;
    transform: translateX(-50%);
}

.invitation-hero__continue[hidden] {
    display: none !important;
}

.invitation-hero__continue-text {
    font-family: var(--font-body);
    font-size: 0.62rem;
    font-weight: 500;
    letter-spacing: 0.14em;
    line-height: 1.5;
    text-align: center;
    text-transform: uppercase;
}

.invitation-hero__continue-arrow {
    color: var(--gold-500);
    font-family: var(--font-heading);
    font-size: 1.4rem;
    line-height: 1;
}

.invitation-hero__continue:focus-visible {
    border-radius: var(--radius-pill);
    outline: 2px solid rgba(200, 162, 71, 0.55);
    outline-offset: 0.25rem;
}

.invitation-hero__rsvp-shortcut {
    position: absolute;
    z-index: 13;
    left: 50%;
    bottom: max(3.8rem, calc(env(safe-area-inset-bottom) + 3rem));
    padding: 0.65rem 1rem;
    border: 1px solid rgba(200, 162, 71, 0.5);
    border-radius: var(--radius-pill);
    color: var(--olive-700);
    font-family: var(--font-body);
    font-size: 0.58rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-decoration: none;
    text-transform: uppercase;
    background: rgba(248, 245, 238, 0.82);
    backdrop-filter: blur(0.45rem);
    transform: translateX(-50%);
}

.invitation-hero__rsvp-shortcut[hidden] {
    display: none !important;
}

.invitation-hero__rsvp-shortcut:focus-visible {
    outline: 2px solid rgba(200, 162, 71, 0.6);
    outline-offset: 0.25rem;
}

@media (min-width: 48rem) {
    .invitation-hero {
        padding-inline: 3rem;
    }

    .invitation-hero__envelope-slot {
        width: min(100%, 28rem, 48vh);
    }

}

@media (max-width: 30rem) {
    .invitation-hero__envelope-slot {
        width: min(88vw, 16.75rem);
    }

    .invitation-hero.is-opening .invitation-hero__envelope-slot,
    .invitation-hero.is-open .invitation-hero__envelope-slot {
        transform: translateY(1.25rem) !important;
    }

    .invitation-hero__rsvp-shortcut {
        padding: 0.55rem 0.9rem;
        font-size: 0.54rem;
    }
}

@media (max-height: 43.75rem) {
    .invitation-hero.is-opening .invitation-hero__heading,
    .invitation-hero.is-open .invitation-hero__heading {
        transform: translateY(-4.6rem) scale(0.76);
    }

    .invitation-hero.is-opening .invitation-hero__envelope-slot,
    .invitation-hero.is-open .invitation-hero__envelope-slot {
        transform: translateY(0.75rem) !important;
    }

    .invitation-hero__ornament {
        display: none;
    }

    .invitation-hero__eyebrow {
        font-size: 0.54rem;
        line-height: 1.3;
    }

    .invitation-hero__names {
        font-size: clamp(2.4rem, 7.8vh, 3.5rem);
    }

    .invitation-hero__date {
        margin-top: 0.4rem;
        font-size: 0.78rem;
    }

    .invitation-hero__envelope-slot {
        width: min(100%, 17rem, 40vh);
        margin-top: 0.45rem;
    }

    .invitation-hero__instruction {
        margin-top: 0.35rem;
        font-size: 0.52rem;
    }
}

@media (max-width: 30rem) and (max-height: 43.75rem) {
    .invitation-hero.is-opening .invitation-hero__envelope-slot,
    .invitation-hero.is-open .invitation-hero__envelope-slot {
        transform: translateY(1.25rem) !important;
    }

    .invitation-hero__rsvp-shortcut {
        bottom: max(
            3.6rem,
            calc(env(safe-area-inset-bottom) + 2.9rem)
        );
        padding: 0.55rem 0.9rem;
        font-size: 0.54rem;
    }

    .invitation-hero__continue {
        bottom: max(
            0.25rem,
            env(safe-area-inset-bottom)
        );
    }
}

@media (max-height: 34rem) and (orientation: landscape) {
    .invitation-hero__eyebrow,
    .invitation-hero__instruction {
        display: none;
    }

    .invitation-hero__names {
        font-size: 2.3rem;
    }

    .invitation-hero__envelope-slot {
        width: min(17rem, 49vh);
    }
}
