/* Premium interaction layer: the core layout remains usable without JavaScript. */
html {
    --scroll-progress: 0;
}

body::before {
    position: fixed;
    z-index: 900;
    inset: 0;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.13'/%3E%3C/svg%3E");
    content: "";
    opacity: 0.025;
    pointer-events: none;
}

.site-shell {
    position: relative;
    isolation: isolate;
}

.scroll-progress {
    position: fixed;
    z-index: 1000;
    top: 0;
    right: 0;
    left: 0;
    height: 2px;
    pointer-events: none;
}

.scroll-progress span {
    display: block;
    width: calc(var(--scroll-progress) * 100%);
    height: 100%;
    background: linear-gradient(90deg, var(--color-bronze), #f3cf86, var(--color-gold));
    box-shadow: 0 0 14px rgba(243, 207, 134, 0.65);
    transform-origin: left;
}

.site-header,
.site-header.is-scrolled,
.inner-page .site-header {
    padding-top: max(0.55rem, env(safe-area-inset-top));
    background: transparent;
    border: 0;
    box-shadow: none;
    backdrop-filter: none;
}

.site-nav {
    min-height: calc(var(--header-height) - 0.75rem);
    padding-inline: clamp(0.9rem, 2vw, 1.4rem);
    border: 1px solid transparent;
    border-radius: 999px;
    transition: min-height 400ms var(--ease-premium), color 300ms ease, background 300ms ease, border-color 300ms ease, box-shadow 300ms ease, backdrop-filter 300ms ease;
}

.site-header.is-scrolled .site-nav,
.inner-page .site-header .site-nav {
    min-height: 4.25rem;
    color: var(--color-forest-dark);
    background: rgba(255, 249, 239, 0.86);
    border-color: rgba(183, 131, 47, 0.28);
    box-shadow: 0 16px 50px rgba(20, 48, 39, 0.12);
    backdrop-filter: blur(18px) saturate(1.2);
}

.wordmark {
    transition: transform 300ms var(--ease-premium);
}

.wordmark:hover {
    transform: translateY(-1px) scale(1.02);
}

.nav-panel > a:not(.button)::after {
    height: 2px;
    border-radius: 99px;
    transform-origin: right;
    transition: transform 380ms var(--ease-premium);
}

.nav-panel > a:hover::after,
.nav-panel > a.is-active::after {
    transform-origin: left;
}

.button {
    position: relative;
    gap: 0.6rem;
    overflow: hidden;
    isolation: isolate;
    transform: translate3d(var(--magnet-x, 0), var(--magnet-y, 0), 0);
    transition: color 250ms ease, background 250ms ease, border-color 250ms ease, box-shadow 350ms ease, transform 350ms var(--ease-premium);
}

.button::before {
    position: absolute;
    z-index: -1;
    inset: 0;
    background: linear-gradient(105deg, transparent 22%, rgba(255, 255, 255, 0.26) 48%, transparent 72%);
    content: "";
    transform: translateX(-130%);
    transition: transform 700ms var(--ease-premium);
}

.button:hover {
    transform: translate3d(var(--magnet-x, 0), calc(var(--magnet-y, 0) - 3px), 0);
}

.button:hover::before {
    transform: translateX(130%);
}

.button-arrow {
    font-size: 1rem;
    line-height: 0;
    transition: transform 300ms var(--ease-premium);
}

.button:hover .button-arrow {
    transform: translate(2px, -2px);
}

.hero {
    min-height: max(50rem, 100svh);
    background: #102e25;
}

.hero::before {
    position: absolute;
    z-index: 2;
    inset: 1rem;
    border: 1px solid rgba(233, 213, 182, 0.24);
    border-radius: 0.75rem;
    content: "";
    pointer-events: none;
}

.hero::after {
    z-index: -1;
    background:
        linear-gradient(90deg, rgba(10, 35, 28, 0.2), rgba(10, 35, 28, 0.01) 34%, transparent 68%, rgba(10, 35, 28, 0.14)),
        linear-gradient(0deg, rgba(9, 31, 25, 0.24), transparent 59%, rgba(9, 31, 25, 0.08));
}

.hero-backdrop {
    width: 100%;
    height: 104%;
    top: -2%;
    max-width: none;
    animation: hero-breathe 32s cubic-bezier(0.45, 0, 0.55, 1) infinite alternate;
    backface-visibility: hidden;
    transform-origin: center;
    will-change: transform;
}

@keyframes hero-breathe {
    from { transform: translate3d(-0.3%, -0.15%, 0) scale(1.022); }
    to { transform: translate3d(0.3%, 0.15%, 0) scale(1.04); }
}

.hero-spotlight {
    position: absolute;
    z-index: -1;
    inset: 0;
    background: radial-gradient(circle 34rem at var(--hero-x, 68%) var(--hero-y, 43%), rgba(255, 232, 181, 0.22), transparent 66%);
    opacity: 0.9;
    pointer-events: none;
    transition: opacity 400ms ease;
}

.hero-glow {
    --parallax-y: 0px;
    transform: translate3d(0, var(--parallax-y), 0);
}

.hero-content {
    width: min(calc(100% - 3rem), 940px);
    animation: none;
}

.hero-content > * {
    animation: premium-rise 1s var(--ease-premium) both;
}

.hero-content > :nth-child(1) { animation-delay: 80ms; }
.hero-content > :nth-child(2) { animation-delay: 160ms; }
.hero-content > :nth-child(3) { animation-delay: 240ms; }
.hero-content > :nth-child(4) { animation-delay: 340ms; }
.hero-content > :nth-child(5) { animation-delay: 460ms; }
.hero-content > :nth-child(6) { animation-delay: 580ms; }
.hero-content > :nth-child(7) { animation-delay: 690ms; }

@keyframes premium-rise {
    from { opacity: 0; transform: translateY(32px); filter: blur(6px); }
    to { opacity: 1; transform: none; filter: blur(0); }
}

.hero-overline {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.8rem;
    width: fit-content;
    max-width: 100%;
    margin-bottom: 1.4rem;
    margin-inline: auto;
    padding: 0.5rem 0.85rem;
    color: var(--color-ivory);
    background: linear-gradient(115deg, rgba(12, 43, 35, 0.62), rgba(23, 61, 50, 0.42));
    border: 1px solid rgba(255, 249, 239, 0.3);
    border-radius: 999px;
    box-shadow: inset 0 1px rgba(255, 255, 255, 0.12), 0 10px 30px rgba(8, 28, 22, 0.2);
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    line-height: 1.2;
    text-shadow: 0 2px 10px rgba(8, 28, 22, 0.72);
    text-transform: uppercase;
    -webkit-backdrop-filter: blur(12px) saturate(1.1);
    backdrop-filter: blur(12px) saturate(1.1);
}

.hero-overline span {
    color: #ffe8c4;
}

.hero-overline i {
    flex: 0 0 auto;
    width: 2rem;
    height: 1px;
    background: linear-gradient(90deg, transparent, #e5b765, transparent);
    box-shadow: 0 0 10px rgba(229, 183, 101, 0.38);
}

.hero .eyebrow {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.7rem;
    width: fit-content;
    max-width: 100%;
    margin-right: auto;
    margin-left: auto;
    padding: 0.46rem 0.8rem;
    color: var(--color-ivory);
    background: linear-gradient(115deg, rgba(12, 43, 35, 0.62), rgba(23, 61, 50, 0.45));
    border: 1px solid rgba(255, 249, 239, 0.25);
    border-radius: 999px;
    box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 9px 26px rgba(8, 28, 22, 0.18);
    line-height: 1.2;
    text-shadow: 0 2px 9px rgba(8, 28, 22, 0.76);
    -webkit-backdrop-filter: blur(10px) saturate(1.08);
    backdrop-filter: blur(10px) saturate(1.08);
}

.hero .eyebrow::before,
.hero .eyebrow::after {
    width: 1.15rem;
    height: 1px;
    background: linear-gradient(90deg, transparent, #e5b765);
    content: "";
}

.hero .eyebrow::after {
    transform: scaleX(-1);
}

.hero-title-lockup {
    isolation: isolate;
    position: relative;
    width: min(100%, 60rem);
    margin-inline: auto;
}

.hero-title-lockup::before {
    position: absolute;
    z-index: -1;
    inset: -2.1rem -4.6rem -1.35rem;
    border-radius: 50%;
    background: radial-gradient(ellipse at center, rgba(255, 250, 240, 0.8) 0%, rgba(255, 250, 240, 0.6) 40%, rgba(255, 250, 240, 0.2) 65%, transparent 78%);
    content: "";
    filter: blur(4px);
    pointer-events: none;
}

.hero-title-lockup::after {
    position: absolute;
    z-index: -1;
    bottom: 0.35rem;
    left: 50%;
    width: clamp(7rem, 17vw, 12rem);
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(196, 125, 34, 0.8), transparent);
    content: "";
    transform: translateX(-50%);
    pointer-events: none;
}

.hero .script-kicker {
    color: #9f3f36;
    paint-order: stroke fill;
    -webkit-text-stroke: 0.45px rgba(255, 250, 240, 0.9);
    text-shadow: 0 2px 0 rgba(255, 250, 240, 0.9), 0 6px 18px rgba(12, 35, 49, 0.26);
}

.hero .script-kicker span {
    color: #bf761b;
    -webkit-text-stroke-color: rgba(255, 247, 229, 0.92);
}

.hero h1 i {
    color: #c6503c;
    paint-order: stroke fill;
    -webkit-text-stroke: 0.45px rgba(255, 247, 229, 0.92);
    text-shadow: 0 2px 0 rgba(255, 250, 240, 0.88), 0 6px 16px rgba(12, 35, 49, 0.25);
}

@media (min-width: 561px) {
    .hero h1 .hero-ampersand {
        display: inline-block;
        flex: 0 0 auto;
        padding-inline: 0.13em;
        line-height: 0.76;
        letter-spacing: 0;
        white-space: nowrap;
        transform: translateY(0.01em);
    }
}

.hero h1 {
    letter-spacing: -0.045em;
    text-shadow: none;
}

.hero h1 > span {
    background: linear-gradient(105deg, #102d40 16%, #2d5a70 50%, #102d40 84%);
    background-size: 200% auto;
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    paint-order: stroke fill;
    -webkit-text-stroke: 0.55px rgba(255, 250, 240, 0.78);
    -webkit-text-fill-color: transparent;
    animation: name-shimmer 8s ease-in-out infinite alternate;
    filter: drop-shadow(0 2px 0 rgba(255, 250, 240, 0.86)) drop-shadow(0 7px 16px rgba(8, 33, 48, 0.28));
}

@keyframes name-shimmer {
    from { background-position: 0% center; }
    to { background-position: 100% center; }
}

.sun-emblem {
    isolation: isolate;
    filter: drop-shadow(0 5px 11px rgba(19, 52, 61, 0.2));
}

.sun-emblem::before {
    position: absolute;
    z-index: -1;
    inset: -0.75rem -1rem -0.4rem;
    border: 1px solid rgba(181, 111, 29, 0.18);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 249, 232, 0.72) 0%, rgba(255, 246, 219, 0.42) 54%, transparent 75%);
    content: "";
    pointer-events: none;
}

.sun-emblem__sun {
    border-color: #aa601d;
    border-width: 1.5px;
    box-shadow: inset 0 1px rgba(255, 250, 234, 0.72);
}

.sun-emblem__sun::before {
    background: repeating-conic-gradient(from -4deg, #bd7726 0 1.25deg, transparent 1.25deg 16deg);
    animation: sun-rays 28s linear infinite;
}

.sun-emblem__wave {
    border-top-color: #aa601d;
    border-top-width: 1.5px;
    box-shadow: 0 -1px rgba(255, 250, 234, 0.52);
}

@keyframes sun-rays {
    to { transform: rotate(360deg); }
}

.hero-facts {
    width: fit-content;
    max-width: 100%;
    margin-inline: auto;
    padding: 0.85rem 1.4rem;
    color: var(--color-ivory);
    background: linear-gradient(115deg, rgba(12, 43, 35, 0.64), rgba(23, 61, 50, 0.46));
    border: 1px solid rgba(255, 249, 239, 0.3);
    border-radius: 999px;
    box-shadow: inset 0 1px rgba(255, 255, 255, 0.12), 0 18px 50px rgba(8, 28, 22, 0.24);
    text-shadow: 0 2px 9px rgba(8, 28, 22, 0.72);
    -webkit-backdrop-filter: blur(14px) saturate(1.08);
    backdrop-filter: blur(14px) saturate(1.08);
}

.love-marquee {
    --marquee-duration: 54s;
    position: relative;
    z-index: 5;
    width: 100%;
    max-width: none;
    margin: clamp(0.65rem, 1.2vw, 1.15rem) 0 0;
    overflow: hidden;
    color: var(--color-champagne);
    background:
        radial-gradient(circle at 50% -210%, rgba(233, 213, 182, 0.28), transparent 61%),
        linear-gradient(105deg, #102f27, var(--color-forest) 46%, #14392e 70%, #102f27);
    border-block: 1px solid rgba(183, 131, 47, 0.48);
    border-radius: 0;
    box-shadow:
        inset 0 1px rgba(255, 249, 239, 0.06),
        inset 0 -1px rgba(8, 29, 23, 0.32),
        0 15px 42px rgba(18, 53, 43, 0.13),
        0 2px 8px rgba(156, 104, 31, 0.08);
}

.love-marquee::before,
.love-marquee::after {
    position: absolute;
    z-index: 4;
    top: 0;
    bottom: 0;
    width: clamp(2.5rem, 8vw, 9rem);
    content: "";
    pointer-events: none;
}

.love-marquee::before {
    left: 0;
    background: linear-gradient(90deg, #12352b 12%, rgba(18, 53, 43, 0));
}

.love-marquee::after {
    right: 0;
    background: linear-gradient(270deg, #12352b 12%, rgba(18, 53, 43, 0));
}

.love-marquee__track {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    width: max-content;
    padding-block: 0.92rem;
    animation: marquee-drift var(--marquee-duration) linear infinite;
    backface-visibility: hidden;
    transform: translate3d(0, 0, 0);
    will-change: transform;
}

.love-marquee__group {
    display: flex;
    flex: none;
    align-items: center;
    gap: clamp(1.35rem, 2.7vw, 3.3rem);
    padding-right: clamp(1.35rem, 2.7vw, 3.3rem);
}

.love-marquee__item {
    color: rgba(255, 249, 239, 0.78);
    font-family: var(--font-heading);
    font-size: clamp(0.7rem, 0.72vw, 0.86rem);
    font-weight: 600;
    letter-spacing: 0.22em;
    line-height: 1;
    text-transform: uppercase;
    white-space: nowrap;
}

.love-marquee__item.is-signature {
    color: var(--color-champagne);
    font-family: var(--font-script);
    font-size: clamp(1.3rem, 1.45vw, 1.72rem);
    font-weight: 400;
    letter-spacing: 0.045em;
    text-transform: none;
}

.love-marquee__item.is-emphasized {
    background: linear-gradient(100deg, var(--color-champagne), #f1c972 48%, var(--color-champagne));
    background-size: 220% auto;
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    font-size: clamp(0.66rem, 0.68vw, 0.8rem);
    letter-spacing: 0.17em;
    -webkit-text-fill-color: transparent;
    animation: marquee-type-glow 8s ease-in-out infinite alternate;
}

.love-marquee__item.is-venue {
    color: rgba(233, 213, 182, 0.9);
    font-size: clamp(0.68rem, 0.7vw, 0.82rem);
}

@keyframes marquee-type-glow {
    from { background-position: 0% center; }
    to { background-position: 100% center; }
}

.love-marquee__marker {
    position: relative;
    display: grid;
    flex: 0 0 auto;
    width: 1.55rem;
    height: 1.55rem;
    color: var(--color-gold);
    border: 1px solid rgba(183, 131, 47, 0.3);
    border-radius: 50%;
    place-items: center;
}

.love-marquee__marker i {
    display: block;
    font-family: var(--font-heading);
    font-size: 0.72rem;
    font-style: normal;
    line-height: 1;
    animation: marquee-marker 3.2s ease-in-out infinite;
}

.love-marquee__marker::before {
    position: absolute;
    width: 100%;
    height: 100%;
    border: 1px solid rgba(226, 185, 101, 0.16);
    border-radius: inherit;
    content: "";
    animation: marker-halo 3.2s ease-in-out infinite;
}

.love-marquee__marker:nth-of-type(4n) i {
    animation-delay: -1.6s;
}

@keyframes marquee-marker {
    0%, 100% { opacity: 0.62; transform: scale(0.78) rotate(-10deg); }
    50% { opacity: 1; text-shadow: 0 0 12px rgba(226, 185, 101, 0.7); transform: scale(1.04) rotate(8deg); }
}

@keyframes marker-halo {
    50% { opacity: 0; transform: scale(1.55); }
}

.love-marquee__rail {
    position: absolute;
    z-index: 3;
    right: clamp(3rem, 7vw, 8rem);
    left: clamp(3rem, 7vw, 8rem);
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(183, 131, 47, 0.38) 18%, rgba(233, 213, 182, 0.18) 50%, rgba(183, 131, 47, 0.38) 82%, transparent);
    pointer-events: none;
}

.love-marquee__rail--top {
    top: 0.28rem;
}

.love-marquee__rail--bottom {
    bottom: 0.28rem;
}

.love-marquee__sheen {
    position: absolute;
    z-index: 2;
    top: -100%;
    bottom: -100%;
    left: 0;
    width: 17%;
    background: linear-gradient(90deg, transparent, rgba(255, 244, 216, 0.075), transparent);
    pointer-events: none;
    transform: translate3d(-220%, 0, 0) skewX(-18deg);
    animation: marquee-sheen 12s var(--ease-premium) infinite;
}

@keyframes marquee-sheen {
    0%, 38% { transform: translate3d(-220%, 0, 0) skewX(-18deg); }
    72%, 100% { transform: translate3d(760%, 0, 0) skewX(-18deg); }
}

@keyframes marquee-drift {
    to { transform: translate3d(-50%, 0, 0); }
}

.beach-vibes {
    position: relative;
    isolation: isolate;
    padding-block: clamp(4.2rem, 7vw, 6.8rem);
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 18%, rgba(255, 199, 104, 0.34), transparent 22%),
        radial-gradient(circle at 91% 14%, rgba(74, 190, 194, 0.22), transparent 23%),
        radial-gradient(circle at 72% 100%, rgba(231, 128, 105, 0.18), transparent 29%),
        linear-gradient(145deg, #fff9ef 0%, #fff2df 48%, #edf9f5 100%);
}

.beach-vibes::before {
    position: absolute;
    z-index: -1;
    inset: 0;
    background-image: radial-gradient(circle, rgba(183, 131, 47, 0.2) 1.2px, transparent 1.4px);
    background-position: 0 0;
    background-size: 28px 28px;
    content: "";
    opacity: 0.28;
    -webkit-mask-image: linear-gradient(90deg, #000, transparent 22%, transparent 78%, #000);
    mask-image: linear-gradient(90deg, #000, transparent 22%, transparent 78%, #000);
}

.beach-vibes__sun {
    position: absolute;
    z-index: -1;
    top: -4.25rem;
    right: clamp(2rem, 8vw, 9rem);
    width: clamp(8rem, 13vw, 12rem);
    aspect-ratio: 1;
    background: rgba(255, 203, 99, 0.32);
    border: 1px solid rgba(220, 155, 54, 0.24);
    border-radius: 50%;
    box-shadow: 0 0 0 1.4rem rgba(255, 203, 99, 0.08), 0 0 0 2.8rem rgba(255, 203, 99, 0.045);
    animation: beach-sun-glow 6s ease-in-out infinite alternate;
}

.beach-vibes__sticker,
.happy-sticker {
    position: absolute;
    z-index: 2;
    display: block;
    width: clamp(4.8rem, 6.5vw, 7rem);
    pointer-events: none;
    filter: drop-shadow(0 13px 16px rgba(32, 55, 47, 0.14));
    animation: happy-sticker-float 5.6s ease-in-out infinite;
}

.beach-vibes__sticker img,
.happy-sticker img {
    display: block;
    width: 100%;
    height: auto;
}

.beach-vibes__sticker--palm {
    top: 16%;
    left: clamp(0.4rem, 2.8vw, 3rem);
    rotate: -9deg;
}

.beach-vibes__sticker--starfish {
    right: clamp(0.5rem, 3vw, 3.3rem);
    bottom: 8%;
    width: clamp(4.2rem, 5.5vw, 6rem);
    rotate: 9deg;
    animation-delay: -2.7s;
}

.happy-sticker--coconut {
    top: 46%;
    right: clamp(1.5rem, 4vw, 5rem);
    width: clamp(4.4rem, 5.8vw, 6.2rem);
    rotate: 10deg;
    animation-delay: -1.2s;
}

.happy-sticker--welcome-sun {
    top: clamp(2.5rem, 7vw, 6rem);
    right: clamp(1.5rem, 6vw, 7rem);
    width: clamp(5.2rem, 7vw, 7.5rem);
    rotate: 8deg;
}

.happy-sticker--welcome-ball {
    right: clamp(2rem, 12vw, 13rem);
    bottom: clamp(2.5rem, 6vw, 5.5rem);
    width: clamp(3.8rem, 5vw, 5.3rem);
    rotate: -10deg;
    animation-delay: -3s;
}

.happy-sticker--starfish {
    bottom: 7%;
    left: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.5rem));
    width: clamp(4.2rem, 5.5vw, 5.8rem);
    rotate: -8deg;
    animation-delay: -1.9s;
}

.happy-sticker--palm {
    right: max(1rem, calc((100vw - var(--content-width)) / 2 - 6rem));
    bottom: 6%;
    rotate: 7deg;
    animation-delay: -3.4s;
}

@keyframes happy-sticker-float {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(0, -10px, 0); }
}

.section-sticker-bridge {
    position: relative;
    z-index: 24;
    width: min(calc(100% - 2rem), var(--content-width));
    height: 0;
    margin: 0 auto;
    pointer-events: none;
}

.section-sticker-bridge__main,
.section-sticker-bridge__mini {
    position: absolute;
    top: 0;
    display: block;
    height: auto;
    filter: drop-shadow(0 14px 17px rgba(24, 57, 49, 0.2));
    transform: translateY(-50%);
    transform-origin: center;
}

.section-sticker-bridge__main {
    width: clamp(5.2rem, 7.3vw, 7.8rem);
    animation: bridge-sticker-bob 5.4s ease-in-out infinite;
}

.section-sticker-bridge__mini {
    z-index: -1;
    width: clamp(2.7rem, 3.7vw, 4rem);
    opacity: 0.95;
    animation: bridge-sticker-mini-bob 4.8s ease-in-out -2.2s infinite;
}

.section-sticker-bridge--left .section-sticker-bridge__main {
    left: clamp(0.2rem, 3.5vw, 3.8rem);
    rotate: -9deg;
}

.section-sticker-bridge--left .section-sticker-bridge__mini {
    left: clamp(4.4rem, 9.3vw, 9.2rem);
    rotate: 12deg;
}

.section-sticker-bridge--right .section-sticker-bridge__main {
    right: clamp(0.2rem, 3.5vw, 3.8rem);
    rotate: 8deg;
}

.section-sticker-bridge--right .section-sticker-bridge__mini {
    right: clamp(4.5rem, 9.2vw, 9rem);
    rotate: -12deg;
}

@keyframes bridge-sticker-bob {
    0%, 100% { translate: 0 0; }
    50% { translate: 0 -9px; }
}

@keyframes bridge-sticker-mini-bob {
    0%, 100% { translate: 0 0; }
    50% { translate: 3px -6px; }
}

.beach-vibes__wave {
    position: absolute;
    z-index: -1;
    bottom: -5.8rem;
    left: -8%;
    width: 116%;
    height: 8rem;
    border-top: 2px solid rgba(67, 174, 178, 0.22);
    border-radius: 50%;
    pointer-events: none;
}

.beach-vibes__wave--two {
    bottom: -7.1rem;
    left: -2%;
    width: 104%;
    border-color: rgba(67, 174, 178, 0.14);
}

.beach-vibes__heading {
    width: min(100%, 720px);
    margin: 0 auto clamp(2.5rem, 5vw, 4rem);
    text-align: center;
}

.beach-vibes__heading h2 {
    margin-bottom: 0.65rem;
    color: var(--color-forest-dark);
    font-size: clamp(2.8rem, 5.2vw, 5rem);
}

.beach-vibes__heading > p:last-child {
    max-width: 62ch;
    margin: 0 auto;
    color: rgba(32, 55, 47, 0.72);
}

.beach-vibes__list {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: clamp(0.7rem, 1.4vw, 1.1rem);
    margin: 0;
    padding: 0;
    list-style: none;
}

.beach-vibes__item {
    position: relative;
    display: flex;
    align-items: center;
    min-width: 0;
    padding: clamp(1.1rem, 2vw, 1.55rem) 0.9rem 1.25rem;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.66);
    border: 1px solid color-mix(in srgb, var(--joy-accent) 31%, transparent);
    border-radius: 1.5rem;
    box-shadow: 0 13px 34px rgba(35, 79, 69, 0.075), inset 0 1px rgba(255, 255, 255, 0.9);
    text-align: center;
    transition: border-color 350ms ease, box-shadow 450ms ease, transform 450ms var(--ease-premium);
}

.beach-vibes__item::after {
    position: absolute;
    right: -2.6rem;
    bottom: -3.1rem;
    width: 7rem;
    aspect-ratio: 1;
    background: var(--joy-wash);
    border-radius: 50%;
    content: "";
    opacity: 0.72;
    pointer-events: none;
}

.beach-vibes__item:hover {
    border-color: color-mix(in srgb, var(--joy-accent) 62%, transparent);
    box-shadow: 0 22px 48px rgba(35, 79, 69, 0.13), inset 0 1px rgba(255, 255, 255, 0.95);
    transform: translateY(-7px) rotate(-0.4deg);
}

.beach-vibes__icon {
    position: relative;
    z-index: 1;
    display: grid;
    width: 4.35rem;
    aspect-ratio: 1;
    margin-bottom: 0.9rem;
    color: var(--joy-accent);
    background: var(--joy-wash);
    border: 1px solid color-mix(in srgb, var(--joy-accent) 35%, transparent);
    border-radius: 50%;
    box-shadow: 0 9px 22px color-mix(in srgb, var(--joy-accent) 18%, transparent);
    place-items: center;
    animation: beach-icon-bob 4.8s ease-in-out infinite;
}

.beach-vibes__item:nth-child(2n) .beach-vibes__icon { animation-delay: -2.4s; }
.beach-vibes__item:nth-child(3n) .beach-vibes__icon { animation-delay: -1.2s; }

.beach-vibes__icon img {
    width: 3.35rem;
    height: 3.35rem;
    object-fit: contain;
}

.beach-vibes__item strong,
.beach-vibes__item > span:last-child {
    position: relative;
    z-index: 1;
    display: block;
}

.beach-vibes__item strong {
    margin-bottom: 0.28rem;
    color: var(--color-forest-dark);
    font-family: var(--font-heading);
    font-size: clamp(1.12rem, 1.35vw, 1.38rem);
    line-height: 1.1;
}

.beach-vibes__item > span:last-child {
    color: rgba(32, 55, 47, 0.68);
    font-size: 0.69rem;
    line-height: 1.5;
}

@keyframes beach-icon-bob {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(-2deg); }
    50% { transform: translate3d(0, -6px, 0) rotate(3deg); }
}

@keyframes beach-sun-glow {
    to { opacity: 0.8; transform: scale(1.04); }
}

.countdown-section {
    margin-top: -3.4rem;
}

.countdown-wrap {
    overflow: hidden;
    background: linear-gradient(125deg, rgba(255, 249, 239, 0.92), rgba(243, 231, 213, 0.79));
    box-shadow: var(--shadow-lifted);
    backdrop-filter: blur(22px) saturate(1.15);
}

.countdown-wrap::before {
    position: absolute;
    top: -50%;
    left: -12%;
    width: 40%;
    height: 200%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.44), transparent);
    content: "";
    transform: rotate(18deg);
    animation: glass-sweep 9s ease-in-out infinite;
}

@keyframes glass-sweep {
    0%, 35% { transform: translateX(-150%) rotate(18deg); }
    62%, 100% { transform: translateX(420%) rotate(18deg); }
}

.countdown > div {
    position: relative;
}

.countdown strong {
    min-width: 1.7ch;
    text-shadow: 0 8px 24px rgba(156, 104, 31, 0.13);
}

.countdown strong.is-ticking {
    animation: premium-tick 420ms var(--ease-premium);
}

@keyframes premium-tick {
    0% { opacity: 0.35; filter: blur(3px); transform: translateY(-8px) scale(0.96); }
    100% { opacity: 1; filter: blur(0); transform: none; }
}

.image-frame,
.venue-image,
.palette-panel,
.detail-card,
.rsvp-aside {
    transform-style: preserve-3d;
    will-change: transform;
}

.image-frame img,
.venue-image img,
.palette-panel > *,
.detail-card > *,
.rsvp-aside > * {
    transform: translateZ(12px);
}

.image-frame {
    box-shadow: var(--shadow-lifted);
}

.welcome-section {
    isolation: isolate;
    background:
        radial-gradient(circle at 7% 16%, rgba(64, 185, 190, 0.2), transparent 24%),
        radial-gradient(circle at 91% 68%, rgba(255, 124, 98, 0.19), transparent 27%),
        radial-gradient(circle at 62% 8%, rgba(255, 200, 89, 0.18), transparent 20%),
        linear-gradient(145deg, #fffaf0 0%, #fff2df 50%, #eaf9f5 100%);
}

.welcome-section::before {
    top: -8rem;
    right: -5rem;
    width: clamp(18rem, 28vw, 29rem);
    height: auto;
    aspect-ratio: 1;
    border: 1px solid rgba(224, 155, 53, 0.28);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 205, 91, 0.36) 0 42%, rgba(255, 205, 91, 0.12) 43% 57%, transparent 58%);
    box-shadow: 0 0 0 2.4rem rgba(255, 210, 112, 0.06);
    transform: none;
}

.welcome-grid {
    position: relative;
    z-index: 2;
}

.welcome-section__wave {
    position: absolute;
    z-index: 0;
    right: -5%;
    bottom: -4.6rem;
    left: -5%;
    height: clamp(6rem, 10vw, 10rem);
    border-radius: 50% 50% 0 0 / 58% 58% 0 0;
    pointer-events: none;
}

.welcome-section__wave--back {
    bottom: -2.7rem;
    background: rgba(92, 191, 195, 0.18);
    rotate: -1.2deg;
}

.welcome-section__wave--front {
    background: rgba(40, 139, 151, 0.18);
    rotate: 1deg;
}

.welcome-art {
    position: relative;
}

.welcome-section .image-frame {
    width: min(100%, 28rem);
    max-width: none;
    padding: 0.65rem 0.65rem 0;
    overflow: visible;
    border: 1px solid rgba(202, 126, 38, 0.52);
    border-radius: 15rem 15rem 2rem 2rem;
    background: linear-gradient(180deg, #fffaf1 0%, #fff5e6 100%);
    box-shadow: 0 24px 48px rgba(23, 72, 70, 0.16), 0 8px 0 rgba(73, 177, 178, 0.1);
    transform: none;
}

.welcome-section .image-frame::before {
    inset: -0.55rem;
    border: 1px solid rgba(55, 170, 176, 0.42);
    border-radius: 15.5rem 15.5rem 2.35rem 2.35rem;
    transform: none;
}

.welcome-section .image-frame::after {
    display: none;
}

.welcome-section .image-frame__media {
    position: relative;
    overflow: hidden;
    aspect-ratio: 4 / 5;
    border: 1px solid rgba(255, 255, 255, 0.82);
    border-radius: 14.35rem 14.35rem 1.35rem 1.35rem;
    background: #d9f3ef;
    box-shadow: inset 0 0 0 1px rgba(27, 109, 111, 0.1);
}

.welcome-section .image-frame__media::after {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 68%, rgba(18, 74, 70, 0.12));
    content: "";
    pointer-events: none;
}

.welcome-section .image-frame__media img {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 0;
    object-fit: cover;
    transform: none;
}

.welcome-section .image-frame .image-note {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.65rem;
    min-height: 3.15rem;
    padding: 0.65rem 1rem 0.55rem;
    color: #a85a3f;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.035em;
    line-height: 1.3;
}

.welcome-section .image-frame .image-note::before,
.welcome-section .image-frame .image-note::after {
    width: 1.35rem;
    height: 1px;
    background: linear-gradient(90deg, transparent, #db9648);
    content: "";
}

.welcome-section .image-frame .image-note::after {
    transform: scaleX(-1);
}

.welcome-photo-sticker {
    position: absolute;
    z-index: 4;
    display: block;
    width: clamp(4.7rem, 6.5vw, 7rem);
    pointer-events: none;
    filter: drop-shadow(0 13px 17px rgba(21, 64, 59, 0.2));
    animation: happy-sticker-float 5.4s ease-in-out infinite;
}

.welcome-photo-sticker img {
    display: block;
    width: 100%;
    height: auto;
}

.welcome-photo-sticker--umbrella {
    top: 14%;
    left: clamp(-2.35rem, -2.5vw, -1.35rem);
    rotate: -12deg;
}

.welcome-photo-sticker--shell {
    right: clamp(-2.1rem, -2.3vw, -1.2rem);
    bottom: 10%;
    width: clamp(4.2rem, 5.5vw, 5.8rem);
    rotate: 12deg;
    animation-delay: -2.4s;
}

.welcome-copy {
    position: relative;
    padding: clamp(2rem, 4vw, 3.6rem);
    border: 1px solid rgba(44, 142, 148, 0.22);
    border-radius: 2.25rem 2.25rem 5rem 2.25rem;
    background: linear-gradient(145deg, rgba(255, 255, 250, 0.9), rgba(255, 244, 225, 0.84));
    box-shadow: 0 24px 55px rgba(40, 84, 73, 0.12), inset 0 1px rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(8px);
}

.welcome-copy::before {
    position: absolute;
    top: 1.15rem;
    right: 1.25rem;
    width: 0.75rem;
    aspect-ratio: 1;
    border-radius: 50%;
    background: #ef755f;
    box-shadow: -1.35rem 0 #50b8ba, -2.7rem 0 #efb642;
    content: "";
}

.welcome-copy h2 {
    max-width: 12ch;
    color: #164b47;
}

.welcome-copy .eyebrow {
    color: #cc623f;
}

.welcome-copy .gold-divider {
    justify-content: flex-start;
}

.welcome-copy .lead {
    color: #315e5b;
}

.welcome-moods {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin: 1.4rem 0 0;
    padding: 0;
    list-style: none;
}

.welcome-moods li {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 2.45rem;
    padding: 0.34rem 0.75rem 0.34rem 0.4rem;
    border: 1px solid rgba(44, 142, 148, 0.18);
    border-radius: 999px;
    background: rgba(231, 250, 246, 0.8);
    color: #1d625e;
    font-size: 0.73rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.welcome-moods li:nth-child(2) {
    border-color: rgba(234, 116, 91, 0.2);
    background: rgba(255, 234, 226, 0.82);
    color: #a54738;
}

.welcome-moods li:nth-child(3) {
    border-color: rgba(220, 155, 53, 0.22);
    background: rgba(255, 244, 210, 0.84);
    color: #98611d;
}

.welcome-moods img {
    width: 1.75rem;
    height: 1.75rem;
}

.welcome-copy .signature {
    margin-top: 1rem;
    color: #d26b42;
}

.image-frame--portrait img {
    aspect-ratio: 4 / 5;
    object-fit: cover;
}

.image-frame .image-note {
    color: #b96955;
    font-size: 1.08rem;
}

.image-frame::after {
    position: absolute;
    right: -1.4rem;
    bottom: 18%;
    width: 4.2rem;
    height: 4.2rem;
    background: var(--color-gold);
    border: 0.45rem solid var(--color-ivory);
    border-radius: 50%;
    box-shadow: var(--shadow-soft);
    content: "♡";
    color: var(--color-ivory);
    display: grid;
    font-size: 1.4rem;
    place-items: center;
}

.story-timeline {
    --line-progress: 0;
    gap: clamp(1.25rem, 3vw, 3rem);
    isolation: isolate;
}

.story-timeline::after {
    position: absolute;
    z-index: 0;
    top: 2.62rem;
    left: 16.6%;
    width: 66.8%;
    height: 2px;
    background: linear-gradient(90deg, var(--color-bronze), var(--color-gold));
    content: "";
    transform: scaleX(var(--line-progress));
    transform-origin: left;
    transition: transform 180ms linear;
}

.story-timeline::before {
    top: 2.62rem;
}

.story-timeline li {
    z-index: 1;
    display: grid;
    grid-template-rows: auto 1fr;
    padding-inline: 0;
}

.story-number {
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    width: 5.25rem;
    height: 5.25rem;
    margin-bottom: 2rem;
    background: linear-gradient(145deg, var(--color-ivory), #f4e3cb);
    border-color: rgba(183, 131, 47, 0.72);
    box-shadow: 0 0 0 0.75rem var(--color-parchment), 0 13px 34px rgba(32, 55, 47, 0.1), inset 0 0 0 0.28rem rgba(255, 249, 239, 0.72);
    transition: border-color 350ms ease, box-shadow 450ms ease, transform 500ms var(--ease-premium);
}

.story-number::before {
    position: absolute;
    inset: 0.38rem;
    border: 1px solid rgba(183, 131, 47, 0.22);
    border-radius: 50%;
    content: "";
}

.story-number small,
.story-number strong {
    position: relative;
    z-index: 1;
    display: block;
}

.story-number small {
    margin-bottom: 0.12rem;
    color: var(--color-sage);
    font-family: var(--font-body);
    font-size: 0.48rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    line-height: 1;
    text-transform: uppercase;
}

.story-number strong {
    color: var(--color-bronze);
    font-family: var(--font-heading);
    font-size: 1.35rem;
    font-weight: 600;
    line-height: 1;
}

.story-card {
    position: relative;
    display: flex;
    align-items: stretch;
    justify-content: flex-start;
    flex-direction: column;
    min-height: 15.5rem;
    height: 100%;
    padding: 0;
    overflow: hidden;
    background:
        radial-gradient(circle at 100% 0, rgba(227, 170, 141, 0.1), transparent 32%),
        linear-gradient(145deg, rgba(255, 249, 239, 0.82), rgba(255, 249, 239, 0.4));
    border: 1px solid rgba(183, 131, 47, 0.24);
    border-radius: 1.65rem;
    box-shadow: 0 13px 40px rgba(32, 55, 47, 0.06), inset 0 1px rgba(255, 255, 255, 0.72);
    text-align: center;
    transition: background 400ms ease, box-shadow 500ms ease, border-color 350ms ease;
}

.story-card__content {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    flex-direction: column;
    padding: 2.45rem clamp(1.45rem, 2.5vw, 2.35rem) 2rem;
}

.story-card__photo {
    position: relative;
    width: 100%;
    height: 11.75rem;
    margin: 0;
    overflow: hidden;
    background: var(--color-sand);
}

.story-card__photo::after {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 66%, rgba(23, 61, 50, 0.18));
    content: "";
    pointer-events: none;
}

.story-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(1.04) brightness(1.025);
    transition: transform 700ms var(--ease-premium), filter 500ms ease;
}

.story-card__photo figcaption {
    position: absolute;
    z-index: 1;
    right: 0.7rem;
    bottom: 0.55rem;
    left: 0.7rem;
    overflow: hidden;
    color: rgba(255, 249, 239, 0.86);
    font-size: 0.56rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.story-card::before {
    position: absolute;
    top: 0;
    left: 50%;
    width: 3.8rem;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--color-gold), transparent);
    content: "";
    transform: translateX(-50%) scaleX(0.55);
    transition: transform 500ms var(--ease-premium), width 500ms var(--ease-premium);
}

.story-card::after {
    position: absolute;
    right: -4rem;
    bottom: -5rem;
    width: 10rem;
    height: 10rem;
    border: 1px solid rgba(183, 131, 47, 0.09);
    border-radius: 50%;
    content: "";
    box-shadow: 0 0 0 1.7rem rgba(183, 131, 47, 0.025);
}

.story-card__mark {
    position: absolute;
    top: 1rem;
    right: 1.15rem;
    color: var(--color-gold);
    font-family: var(--font-heading);
    font-size: 1.15rem;
    line-height: 1;
    opacity: 0.42;
    transition: opacity 350ms ease, transform 500ms var(--ease-premium);
}

.story-card .eyebrow {
    margin-bottom: 0.75rem;
    color: var(--color-forest);
}

.story-card h3 {
    margin-bottom: 0.85rem;
    font-size: clamp(1.65rem, 2.4vw, 2.15rem);
}

.story-card p:last-child {
    max-width: 31ch;
    margin-bottom: 0;
    color: rgba(32, 55, 47, 0.76);
    line-height: 1.7;
}

.story-timeline li:hover .story-card {
    border-color: rgba(183, 131, 47, 0.42);
    box-shadow: 0 22px 58px rgba(32, 55, 47, 0.1), inset 0 1px rgba(255, 255, 255, 0.8);
}

.story-timeline li:hover .story-card::before {
    width: 7rem;
    transform: translateX(-50%) scaleX(1);
}

.story-timeline li:hover .story-card__mark {
    opacity: 0.9;
    transform: rotate(9deg) scale(1.12);
}

.story-timeline li:hover .story-card__photo img {
    filter: saturate(1.05);
    transform: scale(1.035);
}

.story-timeline li:hover .story-number {
    border-color: var(--color-gold);
    box-shadow: 0 0 0 0.75rem var(--color-parchment), 0 16px 38px rgba(32, 55, 47, 0.13), inset 0 0 0 0.28rem rgba(255, 249, 239, 0.82);
    transform: scale(1.035);
}

/* Joyful seaside story */
.story-section {
    isolation: isolate;
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 20%, rgba(78, 187, 191, 0.18), transparent 22%),
        radial-gradient(circle at 91% 14%, rgba(255, 194, 80, 0.22), transparent 20%),
        radial-gradient(circle at 80% 78%, rgba(239, 119, 94, 0.14), transparent 24%),
        linear-gradient(150deg, #fff9ed 0%, #fff2df 50%, #eaf9f5 100%);
}

.story-section .container {
    position: relative;
    z-index: 2;
}

.story-section .section-heading .eyebrow {
    color: #d16440;
}

.story-section .section-heading h2 {
    color: #164e4a;
}

.story-section .section-heading > p:last-child {
    color: #4d716d;
}

.story-section__wave {
    position: absolute;
    z-index: 0;
    right: -6%;
    bottom: -5.5rem;
    left: -6%;
    height: clamp(7rem, 11vw, 11rem);
    border-radius: 50% 50% 0 0 / 62% 62% 0 0;
    pointer-events: none;
}

.story-section__wave--back {
    bottom: -3.25rem;
    background: rgba(80, 186, 190, 0.17);
    rotate: 1.25deg;
}

.story-section__wave--front {
    background: rgba(31, 128, 142, 0.17);
    rotate: -0.8deg;
}

.happy-sticker--story-sun {
    top: 10%;
    right: clamp(1.5rem, 4.5vw, 5rem);
    width: clamp(5rem, 6.5vw, 7rem);
    rotate: 8deg;
    animation-delay: -1.4s;
}

.happy-sticker--story-camera {
    right: clamp(1.5rem, 3.5vw, 4rem);
    bottom: 11%;
    width: clamp(4.4rem, 5.8vw, 6.2rem);
    rotate: -8deg;
    animation-delay: -3.2s;
}

.story-timeline {
    gap: clamp(1.1rem, 2.5vw, 2.25rem);
}

.story-timeline::before,
.story-timeline::after {
    top: 2.7rem;
    height: 4px;
    border-radius: 999px;
}

.story-timeline::before {
    background: repeating-linear-gradient(90deg, rgba(66, 165, 170, 0.28) 0 1.6rem, transparent 1.6rem 2.15rem);
}

.story-timeline::after {
    background: linear-gradient(90deg, #e9a84a, #53b9bb 52%, #ed755f);
}

.story-timeline li {
    --story-accent: #e8a34a;
    --story-wash: #fff0d2;
    --story-ink: #96551e;
}

.story-timeline li:nth-child(2) {
    --story-accent: #52b8ba;
    --story-wash: #e4f8f4;
    --story-ink: #19625e;
}

.story-timeline li:nth-child(3) {
    --story-accent: #ef7964;
    --story-wash: #ffe8e1;
    --story-ink: #a34538;
}

.story-number {
    width: 5.45rem;
    height: 5.45rem;
    background: linear-gradient(145deg, #fffdf6, var(--story-wash));
    border: 2px solid color-mix(in srgb, var(--story-accent) 72%, white);
    box-shadow: 0 0 0 0.65rem rgba(255, 249, 237, 0.92), 0 13px 34px rgba(32, 91, 85, 0.13), inset 0 0 0 0.26rem rgba(255, 255, 255, 0.72);
}

.story-number::before {
    border: 1px dashed color-mix(in srgb, var(--story-accent) 48%, white);
}

.story-number > img {
    position: relative;
    z-index: 1;
    display: block;
    width: 3.65rem;
    height: 3.65rem;
    animation: story-marker-bob 4.8s ease-in-out infinite;
}

.story-timeline li:nth-child(2) .story-number > img {
    animation-delay: -1.6s;
}

.story-timeline li:nth-child(3) .story-number > img {
    animation-delay: -3.2s;
}

@keyframes story-marker-bob {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(-2deg); }
    50% { transform: translate3d(0, -5px, 0) rotate(3deg); }
}

.story-card {
    background: linear-gradient(160deg, rgba(255, 255, 250, 0.96), color-mix(in srgb, var(--story-wash) 72%, white));
    border-color: color-mix(in srgb, var(--story-accent) 42%, white);
    box-shadow: 0 16px 42px rgba(32, 82, 75, 0.1), 0 5px 0 color-mix(in srgb, var(--story-accent) 15%, transparent), inset 0 1px rgba(255, 255, 255, 0.82);
    transition: background 400ms ease, box-shadow 500ms ease, border-color 350ms ease, transform 500ms var(--ease-premium);
}

.story-card__content {
    padding-top: 2.3rem;
}

.story-card__photo::after {
    background: linear-gradient(180deg, transparent 60%, rgba(16, 75, 71, 0.2));
}

.story-card__photo::before {
    position: absolute;
    z-index: 2;
    right: 0;
    bottom: -1px;
    left: 0;
    height: 1.3rem;
    background: color-mix(in srgb, var(--story-wash) 76%, white);
    clip-path: polygon(0 56%, 12% 72%, 27% 44%, 43% 66%, 60% 40%, 77% 69%, 89% 49%, 100% 61%, 100% 100%, 0 100%);
    content: "";
    pointer-events: none;
}

.story-card__photo img {
    filter: saturate(1.12) brightness(1.035);
}

.story-card::before {
    background: linear-gradient(90deg, transparent, var(--story-accent), transparent);
}

.story-card::after {
    border-color: color-mix(in srgb, var(--story-accent) 16%, transparent);
    box-shadow: 0 0 0 1.7rem color-mix(in srgb, var(--story-accent) 5%, transparent);
}

.story-card__mark {
    top: 0.85rem;
    right: 0.9rem;
    display: grid;
    width: 2.8rem;
    height: 2.8rem;
    border: 1px solid color-mix(in srgb, var(--story-accent) 30%, white);
    border-radius: 50%;
    background: color-mix(in srgb, var(--story-wash) 82%, white);
    box-shadow: 0 7px 18px rgba(31, 85, 77, 0.1);
    opacity: 0.92;
    place-items: center;
}

.story-card__mark img {
    display: block;
    width: 2.15rem;
    height: 2.15rem;
}

.story-card .eyebrow {
    color: var(--story-ink);
}

.story-card h3 {
    color: #174f4b;
}

.story-timeline li:hover .story-card {
    border-color: var(--story-accent);
    box-shadow: 0 25px 60px rgba(32, 82, 75, 0.15), inset 0 1px rgba(255, 255, 255, 0.86);
    transform: translateY(-8px);
}

.story-timeline li:hover .story-number {
    border-color: var(--story-accent);
    box-shadow: 0 0 0 0.65rem rgba(255, 249, 237, 0.94), 0 17px 40px rgba(32, 91, 85, 0.16), inset 0 0 0 0.26rem rgba(255, 255, 255, 0.82);
}

.story-timeline li:hover .story-card__mark {
    opacity: 1;
    transform: rotate(8deg) scale(1.08);
}

.details-section {
    background:
        radial-gradient(circle at 82% 15%, rgba(183, 131, 47, 0.22), transparent 24%),
        radial-gradient(circle at 10% 85%, rgba(113, 128, 107, 0.2), transparent 28%),
        linear-gradient(135deg, #173d32, #0d2b23);
}

.detail-card {
    position: relative;
    overflow: hidden;
    transition: background 400ms ease, transform 500ms var(--ease-premium), box-shadow 400ms ease;
}

.detail-card:hover {
    z-index: 2;
    background: rgba(255, 249, 239, 0.055);
    box-shadow: 0 28px 70px rgba(5, 20, 16, 0.25);
}

.detail-card .line-icon {
    display: grid;
    width: 4.8rem;
    height: 4.8rem;
    margin: 0 auto 1.15rem;
    background: rgba(255, 249, 239, 0.92);
    border: 1px solid rgba(233, 213, 182, 0.42);
    border-radius: 50%;
    box-shadow: 0 12px 26px rgba(5, 20, 16, 0.18), inset 0 1px rgba(255, 255, 255, 0.9);
    place-items: center;
    animation: detail-icon-sway 5.2s ease-in-out infinite;
    transition: transform 500ms var(--ease-premium), color 300ms ease;
}

.detail-card:nth-child(2) .line-icon { animation-delay: -1.3s; }
.detail-card:nth-child(3) .line-icon { animation-delay: -2.6s; }
.detail-card:nth-child(4) .line-icon { animation-delay: -3.9s; }

.detail-card .line-icon img {
    width: 3.7rem;
    height: 3.7rem;
    object-fit: contain;
}

.detail-card:hover .line-icon {
    color: #e2b965;
    transform: translateY(-5px) scale(1.12) rotate(-3deg);
}

@keyframes detail-icon-sway {
    0%, 100% { translate: 0 0; rotate: -1deg; }
    50% { translate: 0 -5px; rotate: 2deg; }
}

/* Cheerful beach-day details */
.details-section {
    isolation: isolate;
    overflow: hidden;
    color: #174d49;
    background:
        radial-gradient(circle at 10% 14%, rgba(255, 211, 101, 0.48), transparent 20%),
        radial-gradient(circle at 91% 70%, rgba(255, 126, 100, 0.28), transparent 24%),
        linear-gradient(145deg, #167d80 0%, #299fa1 52%, #6bc9bd 100%);
}

.details-section::before {
    position: absolute;
    z-index: 0;
    top: -8rem;
    right: clamp(2rem, 9vw, 10rem);
    width: clamp(14rem, 22vw, 22rem);
    aspect-ratio: 1;
    border: 1px solid rgba(255, 229, 160, 0.28);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 218, 113, 0.22) 0 42%, rgba(255, 228, 148, 0.08) 43% 59%, transparent 60%);
    box-shadow: 0 0 0 2.5rem rgba(255, 225, 133, 0.035);
    content: "";
}

.details-section .container {
    position: relative;
    z-index: 2;
}

.details-section .section-heading--light .eyebrow {
    color: #ffe29b;
}

.details-section .section-heading--light h2 {
    color: #fffaf0;
    text-shadow: 0 4px 20px rgba(7, 75, 75, 0.2);
}

.details-section .section-heading--light > p:last-child {
    color: rgba(255, 252, 242, 0.9);
}

.details-section__wave {
    position: absolute;
    z-index: 0;
    right: -5%;
    bottom: -5rem;
    left: -5%;
    height: clamp(6.5rem, 10vw, 10rem);
    border-radius: 50% 50% 0 0 / 62% 62% 0 0;
    pointer-events: none;
}

.details-section__wave--back {
    bottom: -2.9rem;
    background: rgba(218, 249, 240, 0.16);
    rotate: -1.1deg;
}

.details-section__wave--front {
    background: rgba(8, 91, 100, 0.22);
    rotate: 0.85deg;
}

.happy-sticker--details-umbrella {
    top: 18%;
    left: clamp(1rem, 3vw, 3.5rem);
    width: clamp(4.8rem, 6vw, 6.5rem);
    rotate: -11deg;
    animation-delay: -1.6s;
}

.happy-sticker--details-sailboat {
    right: clamp(1rem, 3vw, 3.5rem);
    bottom: 13%;
    width: clamp(4.6rem, 5.8vw, 6.2rem);
    rotate: 9deg;
    animation-delay: -3.1s;
}

.details-grid {
    gap: clamp(0.85rem, 1.5vw, 1.25rem);
    border: 0;
}

.detail-card {
    --detail-accent: #efb342;
    --detail-wash: #fff2cc;
    --detail-ink: #955a17;
    min-height: 20rem;
    padding: clamp(2rem, 3vw, 2.7rem) clamp(1rem, 2vw, 1.65rem);
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--detail-accent) 46%, white);
    border-radius: 2rem;
    background:
        radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--detail-accent) 15%, transparent), transparent 35%),
        linear-gradient(160deg, rgba(255, 255, 250, 0.98), color-mix(in srgb, var(--detail-wash) 78%, white));
    box-shadow: 0 20px 42px rgba(7, 72, 72, 0.2), 0 6px 0 color-mix(in srgb, var(--detail-accent) 22%, transparent), inset 0 1px rgba(255, 255, 255, 0.9);
    transition: border-color 350ms ease, box-shadow 450ms ease, transform 500ms var(--ease-premium);
}

.detail-card:nth-child(2) {
    --detail-accent: #55c0c0;
    --detail-wash: #dff7f3;
    --detail-ink: #17615f;
}

.detail-card:nth-child(3) {
    --detail-accent: #89bf67;
    --detail-wash: #edf7d9;
    --detail-ink: #49772f;
}

.detail-card:nth-child(4) {
    --detail-accent: #ee7d67;
    --detail-wash: #ffe6df;
    --detail-ink: #a34637;
}

.detail-card::before {
    position: absolute;
    top: 0;
    left: 50%;
    width: 42%;
    height: 0.38rem;
    border-radius: 0 0 999px 999px;
    background: var(--detail-accent);
    content: "";
    transform: translateX(-50%);
    transition: width 450ms var(--ease-premium);
}

.detail-card::after {
    position: absolute;
    right: -3.8rem;
    bottom: -4.5rem;
    width: 9rem;
    aspect-ratio: 1;
    border: 1px dashed color-mix(in srgb, var(--detail-accent) 24%, transparent);
    border-radius: 50%;
    box-shadow: 0 0 0 1.4rem color-mix(in srgb, var(--detail-accent) 5%, transparent);
    content: "";
}

.detail-card + .detail-card {
    border-left: 1px solid color-mix(in srgb, var(--detail-accent) 46%, white);
}

.detail-card .line-icon {
    width: 5.65rem;
    height: 5.65rem;
    margin-bottom: 1.2rem;
    border: 2px solid color-mix(in srgb, var(--detail-accent) 48%, white);
    background: linear-gradient(145deg, #fffdf7, var(--detail-wash));
    box-shadow: 0 12px 25px rgba(17, 92, 85, 0.14), inset 0 0 0 0.32rem rgba(255, 255, 255, 0.72);
}

.detail-card .line-icon img {
    width: 4.3rem;
    height: 4.3rem;
}

.detail-card .eyebrow {
    display: inline-flex;
    min-height: 1.9rem;
    margin-bottom: 0.85rem;
    padding: 0.38rem 0.75rem;
    align-items: center;
    justify-content: center;
    border: 1px solid color-mix(in srgb, var(--detail-accent) 34%, white);
    border-radius: 999px;
    background: color-mix(in srgb, var(--detail-wash) 78%, white);
    color: var(--detail-ink);
}

.detail-card h3 {
    margin-bottom: 0.7rem;
    color: #164e4a;
    font-size: clamp(1.4rem, 1.9vw, 1.7rem);
}

.detail-card p:last-child {
    color: #4f6d68;
    font-size: 0.82rem;
    line-height: 1.55;
}

.detail-card:hover {
    z-index: 2;
    border-color: var(--detail-accent);
    background:
        radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--detail-accent) 18%, transparent), transparent 36%),
        linear-gradient(160deg, #fffffb, color-mix(in srgb, var(--detail-wash) 86%, white));
    box-shadow: 0 28px 60px rgba(7, 72, 72, 0.25), 0 7px 0 color-mix(in srgb, var(--detail-accent) 28%, transparent), inset 0 1px rgba(255, 255, 255, 0.94);
    transform: translateY(-8px);
}

.detail-card:hover::before {
    width: 68%;
}

.event-timeline {
    --line-progress: 0;
    position: relative;
}

.event-timeline::before,
.event-timeline::after {
    position: absolute;
    z-index: 0;
    top: 0.55rem;
    bottom: 1.5rem;
    left: 8.96rem;
    width: 2px;
    content: "";
}

.event-timeline::before {
    background: rgba(183, 131, 47, 0.18);
}

.event-timeline::after {
    bottom: auto;
    height: calc((100% - 2.05rem) * var(--line-progress));
    background: linear-gradient(var(--color-gold), var(--color-bronze));
    box-shadow: 0 0 14px rgba(183, 131, 47, 0.28);
    transition: height 180ms linear;
}

.event-timeline li {
    position: relative;
    z-index: 1;
}

.event-timeline li:not(:last-child) > span::after {
    display: none;
}

.event-timeline li > span {
    transition: background 350ms ease, box-shadow 350ms ease, transform 450ms var(--ease-premium);
}

.event-timeline li:hover > span {
    background: var(--color-forest);
    box-shadow: 0 0 0 7px rgba(183, 131, 47, 0.15);
    transform: scale(1.25);
}

.event-timeline li > div {
    transition: transform 400ms var(--ease-premium);
}

.event-timeline li:hover > div {
    transform: translateX(8px);
}

/* A cheerful day-by-the-sea timeline */
.schedule-section {
    isolation: isolate;
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 16%, rgba(81, 188, 192, 0.19), transparent 22%),
        radial-gradient(circle at 91% 18%, rgba(255, 197, 80, 0.24), transparent 21%),
        radial-gradient(circle at 84% 82%, rgba(239, 119, 94, 0.16), transparent 25%),
        linear-gradient(150deg, #fffaf0 0%, #fff1dc 52%, #e9f9f5 100%);
}

.schedule-section::before {
    position: absolute;
    z-index: 0;
    top: -7rem;
    right: clamp(2rem, 8vw, 9rem);
    width: clamp(14rem, 21vw, 21rem);
    aspect-ratio: 1;
    border: 1px solid rgba(222, 153, 45, 0.25);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 204, 88, 0.27) 0 43%, rgba(255, 215, 121, 0.09) 44% 59%, transparent 60%);
    box-shadow: 0 0 0 2.3rem rgba(255, 207, 96, 0.045);
    content: "";
}

.schedule-section .container {
    position: relative;
    z-index: 2;
}

.schedule-section .section-heading .eyebrow {
    color: #d16240;
}

.schedule-section .section-heading h2 {
    color: #164e4a;
}

.schedule-section .section-heading > p:last-child {
    color: #55746f;
}

.schedule-section__wave {
    position: absolute;
    z-index: 0;
    right: -6%;
    bottom: -5.2rem;
    left: -6%;
    height: clamp(6.5rem, 10vw, 10rem);
    border-radius: 50% 50% 0 0 / 62% 62% 0 0;
    pointer-events: none;
}

.schedule-section__wave--back {
    bottom: -3rem;
    background: rgba(75, 184, 189, 0.16);
    rotate: 1.1deg;
}

.schedule-section__wave--front {
    background: rgba(29, 129, 141, 0.16);
    rotate: -0.9deg;
}

.happy-sticker--schedule-palm {
    top: 18%;
    left: clamp(1rem, 3.5vw, 4rem);
    width: clamp(5rem, 6.3vw, 6.8rem);
    rotate: -9deg;
    animation-delay: -1.3s;
}

.happy-sticker--schedule-coconut {
    right: clamp(1rem, 3.5vw, 4rem);
    bottom: 12%;
    width: clamp(4.5rem, 5.8vw, 6.1rem);
    rotate: 10deg;
    animation-delay: -3.1s;
}

.event-timeline {
    max-width: 64rem;
    margin-inline: auto;
    padding: 0;
}

.event-timeline::before,
.event-timeline::after {
    top: 2rem;
    bottom: 2rem;
    left: 50%;
    width: 4px;
    border-radius: 999px;
    transform: translateX(-50%);
}

.event-timeline::before {
    background: repeating-linear-gradient(180deg, rgba(68, 166, 170, 0.28) 0 1.8rem, transparent 1.8rem 2.4rem);
}

.event-timeline::after {
    bottom: auto;
    height: calc((100% - 4rem) * var(--line-progress));
    background: linear-gradient(#53b9bb, #efb241 52%, #ed7862);
    box-shadow: 0 0 16px rgba(68, 166, 170, 0.24);
}

.event-timeline li {
    --event-accent: #55babc;
    --event-wash: #def7f4;
    --event-ink: #17615f;
    display: grid;
    grid-template-areas: "time marker content";
    grid-template-columns: minmax(0, 1fr) 5rem minmax(0, 1fr);
    align-items: center;
    gap: 1.25rem;
    min-height: 10rem;
}

.event-timeline li:nth-child(2) {
    --event-accent: #ee7b66;
    --event-wash: #ffe6df;
    --event-ink: #a24638;
    grid-template-areas: "content marker time";
}

.event-timeline li:nth-child(3) {
    --event-accent: #efb143;
    --event-wash: #fff1c9;
    --event-ink: #946019;
}

.event-timeline li:nth-child(4) {
    --event-accent: #87bd6d;
    --event-wash: #ebf6da;
    --event-ink: #497730;
    grid-template-areas: "content marker time";
}

.event-timeline li:nth-child(5) {
    --event-accent: #4295ab;
    --event-wash: #e1f2f5;
    --event-ink: #235f70;
}

.event-timeline time {
    grid-area: time;
    justify-self: end;
    min-width: 7.25rem;
    padding: 0.65rem 0.9rem;
    border: 1px solid color-mix(in srgb, var(--event-accent) 46%, white);
    border-radius: 999px;
    background: color-mix(in srgb, var(--event-wash) 86%, white);
    box-shadow: 0 8px 20px rgba(34, 91, 84, 0.1);
    color: var(--event-ink);
    font-size: 1.1rem;
    text-align: center;
}

.event-timeline li:nth-child(even) time {
    justify-self: start;
    text-align: center;
}

.event-timeline li > span {
    grid-area: marker;
    z-index: 2;
    display: grid;
    width: 4.7rem;
    height: 4.7rem;
    margin: 0 auto;
    border: 2px solid color-mix(in srgb, var(--event-accent) 58%, white);
    border-radius: 50%;
    background: linear-gradient(145deg, #fffdf7, var(--event-wash));
    box-shadow: 0 0 0 0.45rem rgba(255, 249, 237, 0.94), 0 12px 28px rgba(31, 93, 86, 0.15), inset 0 0 0 0.24rem rgba(255, 255, 255, 0.75);
    place-items: center;
}

.event-timeline li > span img {
    display: block;
    width: 3.35rem;
    height: 3.35rem;
    object-fit: contain;
    animation: schedule-icon-bob 4.8s ease-in-out infinite;
}

.event-timeline li:nth-child(2) > span img { animation-delay: -1s; }
.event-timeline li:nth-child(3) > span img { animation-delay: -2s; }
.event-timeline li:nth-child(4) > span img { animation-delay: -3s; }
.event-timeline li:nth-child(5) > span img { animation-delay: -4s; }

@keyframes schedule-icon-bob {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(-2deg); }
    50% { transform: translate3d(0, -5px, 0) rotate(3deg); }
}

.event-timeline li > div {
    position: relative;
    grid-area: content;
    justify-self: start;
    width: min(100%, 24rem);
    padding: 1.35rem 1.5rem;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--event-accent) 38%, white);
    border-radius: 1.45rem;
    background: linear-gradient(155deg, rgba(255, 255, 250, 0.96), color-mix(in srgb, var(--event-wash) 76%, white));
    box-shadow: 0 15px 34px rgba(31, 85, 78, 0.11), 0 4px 0 color-mix(in srgb, var(--event-accent) 15%, transparent);
    text-align: left;
    transition: border-color 350ms ease, box-shadow 450ms ease, transform 450ms var(--ease-premium);
}

.event-timeline li:nth-child(even) > div {
    justify-self: end;
    text-align: right;
}

.event-timeline li > div::before {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 0.3rem;
    border-radius: 0 999px 999px 0;
    background: var(--event-accent);
    content: "";
}

.event-timeline li:nth-child(even) > div::before {
    right: 0;
    left: auto;
    border-radius: 999px 0 0 999px;
}

.event-timeline h3 {
    margin-bottom: 0.35rem;
    color: #164e4a;
    font-size: clamp(1.45rem, 2vw, 1.8rem);
}

.event-timeline p {
    margin-bottom: 0;
    color: #58736e;
    font-size: 0.85rem;
    line-height: 1.6;
}

.event-timeline li:hover > span {
    border-color: var(--event-accent);
    background: linear-gradient(145deg, #fffffb, var(--event-wash));
    box-shadow: 0 0 0 0.45rem rgba(255, 249, 237, 0.96), 0 17px 34px rgba(31, 93, 86, 0.18), inset 0 0 0 0.24rem rgba(255, 255, 255, 0.82);
    transform: translateY(-4px) scale(1.05);
}

.event-timeline li:hover > div,
.event-timeline li:nth-child(even):hover > div {
    border-color: var(--event-accent);
    box-shadow: 0 21px 45px rgba(31, 85, 78, 0.16), 0 5px 0 color-mix(in srgb, var(--event-accent) 20%, transparent);
    transform: translateY(-5px);
}

.venue-image img {
    box-shadow: var(--shadow-lifted);
}

.venue-stamp {
    animation: stamp-float 5s ease-in-out infinite;
}

@keyframes stamp-float {
    0%, 100% { transform: rotate(-6deg) translateY(0); }
    50% { transform: rotate(-3deg) translateY(-9px); }
}

.venue-map {
    box-shadow: 0 18px 45px rgba(32, 55, 47, 0.15), inset 0 1px rgba(255, 255, 255, 0.72);
}

.venue-map::before {
    position: absolute;
    z-index: 2;
    inset: 0.42rem;
    border: 1px solid rgba(255, 249, 239, 0.7);
    border-radius: calc(var(--radius-medium) - 0.3rem);
    content: "";
    pointer-events: none;
}

.venue-map__label {
    backdrop-filter: blur(10px) saturate(1.1);
}

/* Cheerful seaside destination */
.venue-section {
    isolation: isolate;
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 18%, rgba(75, 188, 192, 0.2), transparent 23%),
        radial-gradient(circle at 92% 17%, rgba(255, 199, 81, 0.25), transparent 21%),
        radial-gradient(circle at 84% 80%, rgba(239, 120, 95, 0.16), transparent 25%),
        linear-gradient(145deg, #fffaf0 0%, #fff0da 49%, #e9f9f5 100%);
}

.venue-section::after {
    right: -6rem;
    bottom: -9rem;
    width: clamp(20rem, 31vw, 31rem);
    height: auto;
    aspect-ratio: 1;
    border-color: rgba(52, 160, 166, 0.2);
    box-shadow: 0 0 0 2.3rem rgba(53, 167, 170, 0.045);
}

.venue-grid {
    position: relative;
    z-index: 2;
    grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
    align-items: center;
    gap: clamp(2.5rem, 6vw, 6rem);
}

.venue-section__wave {
    position: absolute;
    z-index: 0;
    right: -6%;
    bottom: -5.2rem;
    left: -6%;
    height: clamp(6.5rem, 10vw, 10rem);
    border-radius: 50% 50% 0 0 / 62% 62% 0 0;
    pointer-events: none;
}

.venue-section__wave--back {
    bottom: -3rem;
    background: rgba(72, 184, 188, 0.16);
    rotate: -1.1deg;
}

.venue-section__wave--front {
    background: rgba(28, 128, 140, 0.16);
    rotate: 0.85deg;
}

.happy-sticker--venue-ball {
    top: 15%;
    left: clamp(1rem, 3vw, 3.5rem);
    width: clamp(4.7rem, 6vw, 6.5rem);
    rotate: -11deg;
    animation-delay: -1.5s;
}

.happy-sticker--venue-palm {
    right: clamp(1rem, 3vw, 3.5rem);
    bottom: 12%;
    width: clamp(5rem, 6.3vw, 6.8rem);
    rotate: 9deg;
    animation-delay: -3.2s;
}

.venue-image {
    width: min(100%, 37rem);
    margin-inline: auto;
    padding: 0.75rem 0.75rem 0;
    border: 1px solid rgba(214, 142, 47, 0.46);
    border-radius: 2.35rem;
    background: linear-gradient(160deg, #fffdf7, #fff0d7);
    box-shadow: 0 25px 52px rgba(35, 89, 81, 0.16), 0 7px 0 rgba(69, 177, 179, 0.1);
}

.venue-image::before {
    position: absolute;
    z-index: -1;
    inset: -0.55rem;
    border: 1px solid rgba(58, 169, 174, 0.36);
    border-radius: 2.7rem;
    content: "";
}

.venue-image__media {
    position: relative;
    overflow: hidden;
    aspect-ratio: 4 / 3;
    border-radius: 1.75rem;
    background: #dff5f1;
}

.venue-image__media::after {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 68%, rgba(17, 76, 72, 0.13));
    content: "";
    pointer-events: none;
}

.venue-image__media img {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 0;
    box-shadow: none;
    filter: saturate(1.1) brightness(1.03);
    object-fit: cover;
    transform: none;
}

.venue-image__caption {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    min-height: 3.65rem;
    padding: 0.65rem 4.8rem 0.55rem 0.8rem;
    color: #a85b3f;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.venue-image__caption i {
    width: 0.28rem;
    height: 0.28rem;
    border-radius: 50%;
    background: #4eb5b6;
}

.venue-stamp {
    right: -1.5rem;
    bottom: 0.7rem;
    width: 7.2rem;
    height: 7.2rem;
    background: linear-gradient(145deg, #17635f, #0e4745);
    border: 2px solid #efb143;
    box-shadow: 0 15px 34px rgba(26, 76, 70, 0.2);
}

.venue-image__sticker {
    position: absolute;
    z-index: 4;
    display: block;
    pointer-events: none;
    filter: drop-shadow(0 11px 15px rgba(28, 80, 73, 0.18));
    animation: happy-sticker-float 5.2s ease-in-out infinite;
}

.venue-image__sticker img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 0;
    box-shadow: none;
    transform: none;
}

.venue-image__sticker--sun {
    top: -2.1rem;
    right: 1.8rem;
    width: clamp(4.5rem, 5.6vw, 6rem);
    rotate: 9deg;
}

.venue-image__sticker--shell {
    bottom: 2.1rem;
    left: -2rem;
    width: clamp(4rem, 5vw, 5.3rem);
    rotate: -10deg;
    animation-delay: -2.6s;
}

.venue-copy {
    position: relative;
    padding: clamp(1.7rem, 3vw, 2.5rem);
    border: 1px solid rgba(58, 161, 164, 0.22);
    border-radius: 2.2rem 2.2rem 3.8rem 2.2rem;
    background: linear-gradient(150deg, rgba(255, 255, 250, 0.92), rgba(255, 243, 222, 0.86));
    box-shadow: 0 22px 52px rgba(35, 88, 80, 0.12), inset 0 1px rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(8px);
}

.venue-copy::before {
    position: absolute;
    top: 1.2rem;
    right: 1.3rem;
    width: 0.72rem;
    aspect-ratio: 1;
    border-radius: 50%;
    background: #ef7964;
    box-shadow: -1.3rem 0 #50b8ba, -2.6rem 0 #efb143;
    content: "";
}

.venue-copy .eyebrow {
    color: #ce6240;
}

.venue-copy h2 {
    max-width: 12ch;
    color: #164e4a;
}

.venue-location {
    color: #d16b44;
}

.venue-highlights {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
    margin: 1.1rem 0 0;
    padding: 0;
    list-style: none;
}

.venue-highlights li {
    display: inline-flex;
    align-items: center;
    gap: 0.38rem;
    min-height: 2.35rem;
    padding: 0.3rem 0.68rem 0.3rem 0.35rem;
    border: 1px solid rgba(71, 169, 171, 0.2);
    border-radius: 999px;
    background: rgba(226, 248, 244, 0.82);
    color: #21615e;
    font-size: 0.68rem;
    font-weight: 700;
}

.venue-highlights li:nth-child(2) {
    border-color: rgba(231, 162, 54, 0.22);
    background: rgba(255, 243, 207, 0.86);
    color: #95601b;
}

.venue-highlights li:nth-child(3) {
    border-color: rgba(128, 184, 98, 0.22);
    background: rgba(235, 247, 218, 0.86);
    color: #4d7635;
}

.venue-highlights img {
    width: 1.7rem;
    height: 1.7rem;
}

.venue-copy address {
    margin-block: 1.25rem;
    padding: 0.9rem 1rem;
    border: 1px solid rgba(72, 169, 171, 0.2);
    border-left: 0.3rem solid #4eb5b6;
    border-radius: 0 1rem 1rem 0;
    background: rgba(226, 248, 244, 0.62);
    color: #315e5a;
    font-size: 0.92rem;
}

.venue-actions .button--forest {
    background: #17635f;
    border-color: #17635f;
}

.venue-actions .button--waze {
    background: #3aa8a7;
    border-color: #3aa8a7;
}

.travel-note {
    border: 1px solid rgba(239, 121, 100, 0.18);
    background: linear-gradient(145deg, rgba(255, 247, 235, 0.94), rgba(255, 231, 223, 0.72));
    box-shadow: 0 10px 24px rgba(45, 89, 80, 0.08);
}

.venue-map {
    min-height: clamp(18rem, 28vw, 23rem);
    padding: 0.42rem;
    border: 2px solid rgba(78, 181, 182, 0.5);
    border-radius: 1.6rem;
    background: #fffaf0;
    box-shadow: 0 18px 42px rgba(32, 88, 81, 0.16), 0 5px 0 rgba(239, 177, 67, 0.15), inset 0 1px rgba(255, 255, 255, 0.82);
}

.venue-map iframe {
    inset: 0.42rem;
    width: calc(100% - 0.84rem);
    height: calc(100% - 0.84rem);
    border-radius: 1.15rem;
}

.venue-map__label {
    bottom: 1rem;
    left: 1rem;
    background: rgba(20, 92, 88, 0.92);
    border-color: rgba(255, 228, 164, 0.55);
}

.palette-panel {
    box-shadow: var(--shadow-lifted);
}

.dress-mood-image {
    width: calc(100% + clamp(4rem, 10vw, 7rem));
    height: clamp(10rem, 21vw, 15rem);
    margin: calc(clamp(2rem, 5vw, 3.5rem) * -1) calc(clamp(2rem, 5vw, 3.5rem) * -1) 2rem;
    max-width: none;
    object-fit: cover;
    border-radius: calc(50% - 0.5rem) calc(50% - 0.5rem) 0 0;
}

/* Cheerful coast-ready dress guide */
.dress-section {
    isolation: isolate;
    overflow: hidden;
    color: #fffaf0;
    background:
        radial-gradient(circle at 9% 16%, rgba(255, 207, 95, 0.38), transparent 21%),
        radial-gradient(circle at 91% 77%, rgba(255, 125, 99, 0.3), transparent 24%),
        linear-gradient(135deg, #126d70 0%, #187f80 48%, #4ab5aa 48%, #72cbb9 100%);
}

.dress-section::before {
    position: absolute;
    z-index: 0;
    top: -8rem;
    right: clamp(2rem, 8vw, 9rem);
    width: clamp(15rem, 23vw, 23rem);
    aspect-ratio: 1;
    border: 1px solid rgba(255, 225, 145, 0.26);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 211, 103, 0.22) 0 42%, rgba(255, 226, 145, 0.08) 43% 59%, transparent 60%);
    box-shadow: 0 0 0 2.5rem rgba(255, 216, 118, 0.04);
    content: "";
}

.dress-grid {
    position: relative;
    z-index: 2;
    grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
    gap: clamp(2.5rem, 6vw, 6rem);
}

.dress-section__wave {
    position: absolute;
    z-index: 0;
    right: -6%;
    bottom: -5.2rem;
    left: -6%;
    height: clamp(6.5rem, 10vw, 10rem);
    border-radius: 50% 50% 0 0 / 62% 62% 0 0;
    pointer-events: none;
}

.dress-section__wave--back {
    bottom: -3rem;
    background: rgba(224, 250, 241, 0.16);
    rotate: 1.05deg;
}

.dress-section__wave--front {
    background: rgba(8, 89, 97, 0.2);
    rotate: -0.85deg;
}

.happy-sticker--dress-shell {
    top: 18%;
    left: clamp(1rem, 3vw, 3.5rem);
    width: clamp(4.6rem, 5.8vw, 6.2rem);
    rotate: -10deg;
    animation-delay: -1.4s;
}

.happy-sticker--dress-sunglasses {
    right: clamp(1rem, 3vw, 3.5rem);
    bottom: 13%;
    width: clamp(5rem, 6.3vw, 6.8rem);
    rotate: 9deg;
    animation-delay: -3.1s;
}

.dress-copy {
    position: relative;
    padding: clamp(2rem, 3.6vw, 3rem);
    border: 1px solid rgba(255, 236, 192, 0.22);
    border-radius: 2.2rem 2.2rem 4rem 2.2rem;
    background: linear-gradient(150deg, rgba(8, 77, 75, 0.82), rgba(15, 93, 88, 0.72));
    box-shadow: 0 24px 50px rgba(3, 66, 65, 0.22), inset 0 1px rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(8px);
}

.dress-copy::before {
    position: absolute;
    top: 1.2rem;
    right: 1.3rem;
    width: 0.72rem;
    aspect-ratio: 1;
    border-radius: 50%;
    background: #ff8a72;
    box-shadow: -1.3rem 0 #5dd0ca, -2.6rem 0 #f2b84a;
    content: "";
}

.dress-copy .eyebrow {
    color: #ffe09a;
}

.dress-copy h2 {
    color: #fffaf0;
    text-shadow: 0 4px 20px rgba(3, 56, 55, 0.22);
}

.dress-copy h3 {
    color: #ffdfa0;
}

.dress-copy > p:not(.restriction):not(.editable-note) {
    color: rgba(255, 252, 243, 0.9);
}

.dress-vibes {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
    margin: 1.25rem 0;
    padding: 0;
    list-style: none;
}

.dress-vibes li {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 2.4rem;
    padding: 0.3rem 0.7rem 0.3rem 0.35rem;
    border: 1px solid rgba(255, 236, 192, 0.22);
    border-radius: 999px;
    background: rgba(255, 250, 238, 0.12);
    color: #fff8e8;
    font-size: 0.68rem;
    font-weight: 700;
}

.dress-vibes img {
    width: 1.75rem;
    height: 1.75rem;
}

.restriction {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.9rem 1rem;
    border: 1px solid rgba(255, 177, 151, 0.48);
    border-left: 0.35rem solid #ff8a72;
    border-radius: 0 1.1rem 1.1rem 0;
    background: linear-gradient(145deg, rgba(255, 245, 231, 0.96), rgba(255, 220, 209, 0.91));
    color: #6d3c33;
    box-shadow: 0 12px 25px rgba(4, 62, 60, 0.14);
}

.restriction > img {
    flex: 0 0 auto;
    width: 2.6rem;
    height: 2.6rem;
}

.restriction strong {
    color: #9d4335;
}

.editable-note {
    margin-top: 0.85rem;
    padding: 0.8rem 1rem;
    border: 1px solid rgba(180, 241, 230, 0.2);
    border-radius: 1rem;
    background: rgba(216, 247, 240, 0.11);
    color: rgba(255, 252, 243, 0.82);
}

.editable-note span {
    color: #ffe4aa;
}

.palette-panel {
    position: relative;
    padding: clamp(2rem, 4vw, 3.25rem);
    overflow: visible;
    border: 1px solid rgba(221, 143, 49, 0.42);
    border-radius: 3rem 3rem 2rem 2rem;
    background:
        radial-gradient(circle at 92% 9%, rgba(255, 199, 81, 0.2), transparent 24%),
        linear-gradient(150deg, rgba(255, 255, 250, 0.98), rgba(255, 239, 215, 0.96));
    box-shadow: 0 26px 55px rgba(4, 67, 65, 0.22), 0 7px 0 rgba(255, 137, 111, 0.14), inset 0 1px rgba(255, 255, 255, 0.92);
}

.palette-panel::before {
    position: absolute;
    top: 0;
    left: 50%;
    width: 40%;
    height: 0.42rem;
    border-radius: 0 0 999px 999px;
    background: linear-gradient(90deg, #53bdba, #efb343, #ef806a);
    content: "";
    transform: translateX(-50%) translateZ(12px);
}

.palette-panel__heading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    margin-bottom: 1.5rem;
}

.palette-panel__heading > img {
    width: 2.7rem;
    height: 2.7rem;
}

.palette-panel__heading .eyebrow {
    margin: 0;
    color: #b35b39;
    text-align: left;
}

.palette-panel__sticker {
    position: absolute;
    z-index: 4;
    display: block;
    pointer-events: none;
    filter: drop-shadow(0 12px 16px rgba(28, 78, 71, 0.18));
    animation: happy-sticker-float 5.3s ease-in-out infinite;
}

.palette-panel__sticker img {
    display: block;
    width: 100%;
    height: auto;
}

.palette-panel__sticker--umbrella {
    top: -2.5rem;
    right: 1.8rem;
    width: clamp(4.5rem, 5.8vw, 6.2rem);
    rotate: 10deg;
}

.palette-panel__sticker--starfish {
    bottom: -2rem;
    left: -1.5rem;
    width: clamp(4rem, 5vw, 5.4rem);
    rotate: -9deg;
    animation-delay: -2.6s;
}

.palette-panel .swatches {
    gap: 0.85rem;
}

.palette-panel .swatches > div {
    width: 4.75rem;
    padding: 0.55rem 0.35rem 0.65rem;
    border: 1px solid rgba(61, 140, 137, 0.13);
    border-radius: 1.15rem;
    background: rgba(255, 255, 251, 0.62);
    box-shadow: 0 8px 18px rgba(35, 84, 77, 0.07);
}

.palette-panel .swatches span {
    width: 3.7rem;
    height: 3.7rem;
    margin-inline: auto;
    box-shadow: inset 0 0 0 4px rgba(255, 255, 255, 0.46), 0 7px 16px rgba(32, 79, 72, 0.13);
}

.palette-panel .swatches p {
    color: #315d59;
}

.palette-panel .dress-mood-image {
    width: calc(100% + clamp(4rem, 8vw, 6.5rem));
    height: clamp(10rem, 19vw, 14rem);
    border-radius: 2.4rem 2.4rem 1rem 1rem;
    filter: saturate(1.08) brightness(1.02);
}

.section-media-backdrop {
    position: absolute;
    z-index: 0;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    pointer-events: none;
}

.gift-section > .section-media-backdrop {
    opacity: 0.24;
    filter: saturate(0.75) sepia(0.12);
}

.gift-section > .container,
.rsvp-banner > .container,
.contact-section > .container {
    position: relative;
    z-index: 2;
}

.gift-section::after,
.rsvp-banner::after,
.contact-section::after {
    position: absolute;
    z-index: 1;
    inset: 0;
    content: "";
    pointer-events: none;
}

.gift-section::after {
    background: rgba(255, 249, 239, 0.7);
}

.rsvp-banner > .section-media-backdrop {
    opacity: 0.32;
    filter: saturate(0.75);
}

.rsvp-banner::after {
    background: linear-gradient(90deg, rgba(243, 231, 213, 0.86), rgba(233, 213, 182, 0.68));
}

.contact-section > .section-media-backdrop {
    opacity: 1;
}

.contact-section::after {
    background: linear-gradient(rgba(19, 51, 42, 0.78), rgba(19, 51, 42, 0.86));
}

.swatches span {
    transition: transform 450ms var(--ease-premium), box-shadow 450ms ease;
}

.swatches > div:hover span {
    box-shadow: inset 0 0 0 5px rgba(255, 255, 255, 0.4), 0 14px 30px rgba(15, 48, 39, 0.22);
    transform: translateY(-7px) scale(1.05);
}

.gift-card,
.rsvp-banner__inner,
.form-card,
.celebration-card {
    overflow: hidden;
    background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.22), transparent 58%);
    box-shadow: var(--shadow-lifted);
}

.gift-card {
    background-color: rgba(255, 249, 239, 0.88);
}

.gift-icon {
    animation: icon-float 4.5s ease-in-out infinite;
}

@keyframes icon-float {
    50% { transform: translateY(-8px) rotate(4deg); box-shadow: 0 14px 28px rgba(32, 55, 47, 0.18); }
}

/* Compact, cheerful gift note */
.gift-section {
    position: relative;
    isolation: isolate;
    min-height: 0;
    padding-block: clamp(3.75rem, 6vw, 5.5rem);
    background:
        radial-gradient(circle at 7% 20%, rgba(67, 174, 178, 0.2), transparent 24%),
        radial-gradient(circle at 92% 16%, rgba(255, 199, 104, 0.25), transparent 23%),
        linear-gradient(145deg, #fffaf0 0%, #fff1dd 54%, #eaf9f5 100%);
}

.gift-section > .section-media-backdrop {
    opacity: 0.12;
    filter: saturate(0.9);
}

.gift-section::after {
    background: linear-gradient(135deg, rgba(255, 250, 240, 0.84), rgba(234, 249, 245, 0.76));
}

.gift-section__wave {
    position: absolute;
    z-index: 1;
    right: -5%;
    bottom: -3.6rem;
    left: -5%;
    height: clamp(5rem, 8vw, 7rem);
    border-radius: 50% 50% 0 0 / 66% 66% 0 0;
    pointer-events: none;
}

.gift-section__wave--back {
    bottom: -1.9rem;
    background: rgba(88, 190, 192, 0.2);
    rotate: 0.8deg;
}

.gift-section__wave--front {
    background: rgba(247, 178, 80, 0.18);
    rotate: -0.65deg;
}

.happy-sticker--gift-ball,
.happy-sticker--gift-shell {
    z-index: 3;
}

.happy-sticker--gift-ball {
    top: 23%;
    left: clamp(1rem, 5vw, 5.5rem);
    width: clamp(4.6rem, 6vw, 6.5rem);
    rotate: -11deg;
    animation-delay: -1.2s;
}

.happy-sticker--gift-shell {
    right: clamp(1rem, 5vw, 5.5rem);
    bottom: 13%;
    width: clamp(4.3rem, 5.5vw, 5.8rem);
    rotate: 12deg;
    animation-delay: -3.1s;
}

.gift-card {
    width: min(calc(100% - 2rem), 680px);
    padding: clamp(2.1rem, 4vw, 3rem) clamp(1.4rem, 4vw, 3.5rem) clamp(2rem, 3.7vw, 2.7rem);
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 9%, rgba(255, 193, 91, 0.18), transparent 24%),
        radial-gradient(circle at 94% 86%, rgba(66, 180, 184, 0.16), transparent 27%),
        rgba(255, 252, 245, 0.94);
    border: 1px solid rgba(213, 145, 42, 0.5);
    border-radius: 2rem 2rem 3.6rem;
    box-shadow: 0 24px 55px rgba(37, 76, 64, 0.14), 0 7px 18px rgba(183, 131, 47, 0.08);
}

.gift-card::before,
.gift-card::after {
    width: 5.2rem;
    height: 5.2rem;
    opacity: 0.75;
}

.gift-card::before {
    border-color: #43aeb2;
}

.gift-card::after {
    border-color: #ef765f;
}

.gift-card > * {
    position: relative;
    z-index: 2;
}

.gift-icon {
    width: 4.75rem;
    height: 4.75rem;
    margin-bottom: 1rem;
    background: linear-gradient(145deg, #fff0b7, #bceceb);
    border: 1px solid rgba(23, 88, 79, 0.2);
    box-shadow: 0 12px 24px rgba(36, 96, 83, 0.14);
}

.gift-icon img {
    width: 3.65rem;
    height: 3.65rem;
    object-fit: contain;
}

.gift-card .eyebrow {
    margin-bottom: 0.7rem;
    color: #c55743;
}

.gift-card h2 {
    max-width: 610px;
    margin: 0 auto 0.9rem;
    color: #155449;
    font-size: clamp(2.15rem, 4vw, 3.45rem);
    line-height: 1.02;
}

.gift-card > p:not(.eyebrow) {
    color: rgba(27, 73, 64, 0.82);
    line-height: 1.68;
}

.gift-reassurance {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.7rem;
    margin: 1.15rem auto 1rem;
    padding: 0.55rem 0.8rem;
    color: #185b52;
    background: rgba(232, 249, 244, 0.8);
    border: 1px solid rgba(67, 174, 178, 0.28);
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
}

.gift-reassurance span {
    display: inline-flex;
    align-items: center;
    gap: 0.38rem;
    white-space: nowrap;
}

.gift-reassurance img {
    width: 1.65rem;
    height: 1.65rem;
    object-fit: contain;
}

.gift-reassurance i {
    width: 1px;
    height: 1.7rem;
    background: rgba(183, 131, 47, 0.3);
}

.gift-card .privacy-note {
    max-width: 600px;
    margin-top: 0;
    padding: 0.75rem 1rem;
    color: rgba(27, 73, 64, 0.68);
    background: rgba(255, 239, 209, 0.56);
    border: 0;
    border-radius: 0.85rem;
    font-size: 0.72rem;
    line-height: 1.55;
}

.gallery-section {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    background:
        radial-gradient(circle at 7% 10%, rgba(255, 192, 76, 0.27), transparent 25%),
        radial-gradient(circle at 91% 78%, rgba(66, 188, 190, 0.23), transparent 29%),
        radial-gradient(circle at 74% 18%, rgba(245, 119, 96, 0.12), transparent 19%),
        linear-gradient(150deg, #fff4dc 0%, #fffaf1 45%, #eefbf7 100%);
}

.gallery-section::before {
    position: absolute;
    z-index: 0;
    inset: 0;
    background-image:
        radial-gradient(circle, rgba(26, 103, 94, 0.12) 1px, transparent 1.5px),
        linear-gradient(118deg, transparent 28%, rgba(255, 255, 255, 0.38) 47%, transparent 66%);
    background-position: 0 0, center;
    background-size: 22px 22px, cover;
    content: "";
    opacity: 0.42;
    pointer-events: none;
}

.gallery-section > .container {
    position: relative;
    z-index: 2;
}

.gallery-section__wave {
    position: absolute;
    z-index: 1;
    right: -6%;
    bottom: -4.7rem;
    left: -6%;
    height: clamp(6rem, 9vw, 8.5rem);
    border-radius: 50% 50% 0 0 / 68% 68% 0 0;
    pointer-events: none;
}

.gallery-section__wave--back {
    bottom: -2.6rem;
    background: rgba(96, 203, 191, 0.22);
    rotate: 0.85deg;
}

.gallery-section__wave--front {
    background: rgba(255, 187, 71, 0.2);
    rotate: -0.7deg;
}

.happy-sticker--gallery-camera {
    top: 16%;
    left: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.5rem));
    width: clamp(4.8rem, 6.2vw, 6.8rem);
    rotate: -10deg;
    animation-delay: -0.8s;
}

.happy-sticker--gallery-starfish {
    top: 48%;
    right: max(1rem, calc((100vw - var(--content-width)) / 2 - 5rem));
    width: clamp(4.4rem, 5.7vw, 6rem);
    rotate: 11deg;
    animation-delay: -2.1s;
}

.gallery-section .happy-sticker--palm {
    z-index: 3;
    right: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.5rem));
    bottom: 7%;
    width: clamp(4.8rem, 6.3vw, 6.8rem);
}

.gallery-heading {
    position: relative;
    max-width: 760px;
    margin-bottom: clamp(2.8rem, 5vw, 4.5rem);
}

.gallery-heading::before {
    position: absolute;
    z-index: -1;
    top: -2.6rem;
    left: 50%;
    width: clamp(8rem, 14vw, 12rem);
    aspect-ratio: 1;
    background: radial-gradient(circle, rgba(255, 210, 95, 0.3) 0 42%, rgba(255, 224, 145, 0.12) 43% 60%, transparent 61%);
    border-radius: 50%;
    content: "";
    transform: translateX(-50%);
}

.gallery-heading h2 {
    color: #164f48;
}

.gallery-heading > p:last-of-type {
    max-width: 650px;
    margin-inline: auto;
    color: rgba(26, 77, 68, 0.76);
}

.gallery-moods {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    margin-top: 1.35rem;
}

.gallery-moods span {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.38rem 0.72rem 0.38rem 0.45rem;
    color: #185b52;
    background: rgba(255, 253, 246, 0.84);
    border: 1px solid rgba(67, 174, 178, 0.28);
    border-radius: 999px;
    box-shadow: 0 7px 17px rgba(32, 91, 81, 0.08);
    font-size: 0.68rem;
    font-weight: 750;
}

.gallery-moods span:nth-child(2) {
    border-color: rgba(239, 118, 95, 0.3);
}

.gallery-moods span:nth-child(3) {
    border-color: rgba(213, 145, 42, 0.34);
}

.gallery-moods img {
    width: 1.65rem;
    height: 1.65rem;
    object-fit: contain;
}

.gallery-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    grid-auto-flow: dense;
    grid-auto-rows: clamp(11rem, 12vw, 13.5rem);
    gap: clamp(0.9rem, 1.5vw, 1.3rem);
    width: min(100%, 1120px);
    margin-inline: auto;
    perspective: 1200px;
}

.gallery-item {
    --gallery-accent: #51b9b6;
    box-sizing: border-box;
    min-height: 0;
    padding: 0.48rem 0.48rem 3rem;
    overflow: hidden;
    background: linear-gradient(145deg, #fffef9, color-mix(in srgb, var(--gallery-accent) 12%, #fffaf0));
    border: 1px solid color-mix(in srgb, var(--gallery-accent) 45%, white);
    border-radius: 1.45rem;
    box-shadow: 0 15px 32px rgba(32, 76, 66, 0.1), 0 3px 0 rgba(255, 255, 255, 0.72) inset;
    transition: box-shadow 500ms ease, transform 550ms var(--ease-premium), border-radius 500ms ease;
}

.gallery-item:nth-child(6n + 1) {
    --gallery-accent: #ef765f;
    grid-column: span 5;
    grid-row: span 2;
    border-radius: 7rem 7rem 1.45rem 1.45rem;
    rotate: -0.55deg;
}

.gallery-item:nth-child(6n + 2) {
    --gallery-accent: #e3a833;
    grid-column: span 7;
    grid-row: span 1;
    rotate: 0.45deg;
}

.gallery-item:nth-child(6n + 3) {
    --gallery-accent: #54beba;
    grid-column: span 4;
    grid-row: span 1;
    rotate: -0.35deg;
}

.gallery-item:nth-child(6n + 4) {
    --gallery-accent: #f08b75;
    grid-column: span 3;
    grid-row: span 1;
    rotate: 0.5deg;
}

.gallery-item:nth-child(6n + 5) {
    --gallery-accent: #77b59c;
    grid-column: span 5;
    grid-row: span 1;
    rotate: -0.4deg;
}

.gallery-item:nth-child(6n + 6) {
    --gallery-accent: #f0ba4f;
    grid-column: span 7;
    grid-row: span 1;
    rotate: 0.3deg;
}

.gallery-item::before {
    position: absolute;
    z-index: 5;
    top: -0.2rem;
    left: 50%;
    width: 4.2rem;
    height: 1.05rem;
    background: rgba(255, 226, 164, 0.8);
    border: 1px solid rgba(194, 139, 46, 0.16);
    box-shadow: 0 3px 8px rgba(41, 72, 63, 0.1);
    content: "";
    opacity: 0.82;
    transform: translateX(-50%) rotate(-2deg);
}

.gallery-item img {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 1rem;
    filter: saturate(1.07) brightness(1.025);
    object-fit: cover;
}

.gallery-item:nth-child(6n + 1) img {
    border-radius: 6.45rem 6.45rem 1rem 1rem;
}

.gallery-item:hover {
    z-index: 2;
    box-shadow: 0 28px 58px rgba(32, 76, 66, 0.2);
    transform: translateY(-8px) scale(1.015);
}

.gallery-item::after {
    position: absolute;
    z-index: 2;
    inset: 0.48rem 0.48rem 3rem;
    background: linear-gradient(135deg, rgba(255, 249, 239, 0.07), transparent 42%, rgba(23, 61, 50, 0.14));
    border-radius: 1rem;
    content: "";
    pointer-events: none;
}

.gallery-item:nth-child(6n + 1)::after {
    border-radius: 6.45rem 6.45rem 1rem 1rem;
}

.gallery-item > .gallery-item__caption {
    position: absolute;
    z-index: 4;
    right: 0.55rem;
    bottom: 0.38rem;
    left: 0.55rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.6rem;
    min-height: 2.2rem;
    padding: 0.35rem 0.55rem;
    color: #164f48;
    background: transparent;
    border-radius: 0.75rem;
    font-family: var(--font-heading);
    font-size: 1.02rem;
    line-height: 1.15;
    text-align: left;
    transform: none;
}

.gallery-item__caption strong {
    display: inline-flex;
    align-items: center;
    gap: 0.42rem;
    min-width: 0;
    font-weight: 600;
}

.gallery-item__caption strong::before {
    flex: 0 0 auto;
    width: 0.55rem;
    height: 0.55rem;
    background: var(--gallery-accent);
    border-radius: 50%;
    box-shadow: 0 0 0 0.18rem color-mix(in srgb, var(--gallery-accent) 16%, transparent);
    content: "";
}

.gallery-item__caption small {
    flex: 0 0 auto;
    color: color-mix(in srgb, var(--gallery-accent) 76%, #174c44);
    font-family: var(--font-body);
    font-size: 0.58rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.gallery-item > .interactive-glow {
    width: 17rem;
    height: 17rem;
    margin: 0;
    padding: 0;
    color: transparent;
    background: radial-gradient(circle, rgba(255, 235, 193, 0.32), transparent 68%);
    border: 0;
    border-radius: 50%;
    font-size: 0;
    transform: translate(-50%, -50%);
}

/* Joyful beach invitation */
.rsvp-banner {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding-block: clamp(5rem, 8vw, 7.5rem);
    background:
        radial-gradient(circle at 9% 19%, rgba(255, 193, 80, 0.3), transparent 25%),
        radial-gradient(circle at 89% 78%, rgba(63, 187, 187, 0.27), transparent 28%),
        linear-gradient(135deg, #ffe5b6 0%, #fff2de 48%, #dff5ef 100%);
}

.rsvp-banner > .section-media-backdrop {
    opacity: 0.17;
    filter: saturate(0.92) brightness(1.05);
}

.rsvp-banner::after {
    background: linear-gradient(110deg, rgba(255, 240, 211, 0.82), rgba(230, 249, 242, 0.74));
}

.rsvp-banner__wave {
    position: absolute;
    z-index: 1;
    right: -6%;
    bottom: -4.5rem;
    left: -6%;
    height: clamp(6rem, 9vw, 8.5rem);
    border-radius: 50% 50% 0 0 / 68% 68% 0 0;
    pointer-events: none;
}

.rsvp-banner__wave--back {
    bottom: -2.4rem;
    background: rgba(64, 181, 181, 0.22);
    rotate: 0.8deg;
}

.rsvp-banner__wave--front {
    background: rgba(255, 167, 88, 0.21);
    rotate: -0.7deg;
}

.happy-sticker--rsvp-coconut {
    z-index: 3;
    top: 21%;
    left: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.7rem));
    width: clamp(4.7rem, 6.2vw, 6.7rem);
    rotate: -11deg;
    animation-delay: -1.4s;
}

.happy-sticker--rsvp-sunglasses {
    z-index: 3;
    right: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.3rem));
    bottom: 15%;
    width: clamp(4.8rem, 6.4vw, 7rem);
    rotate: 9deg;
    animation-delay: -3.2s;
}

.rsvp-banner__inner {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(16.5rem, 0.75fr);
    align-items: stretch;
    gap: clamp(1rem, 2vw, 1.6rem);
    width: min(calc(100% - 3rem), 1120px);
    padding: 0.72rem;
    text-align: left;
    background:
        radial-gradient(circle at 6% 10%, rgba(255, 198, 83, 0.13), transparent 26%),
        linear-gradient(145deg, rgba(255, 254, 249, 0.96), rgba(247, 255, 251, 0.92));
    border: 1px solid rgba(29, 125, 113, 0.34);
    border-radius: 2.5rem;
    box-shadow: 0 27px 65px rgba(40, 88, 76, 0.16), 0 9px 22px rgba(192, 128, 36, 0.08);
}

.rsvp-banner__inner::before {
    z-index: 1;
    inset: 0.55rem;
    border-color: rgba(226, 158, 52, 0.31);
    border-radius: 2.05rem;
}

.rsvp-banner__inner > * {
    position: relative;
    z-index: 2;
}

.rsvp-banner__copy {
    align-self: center;
    padding: clamp(2.2rem, 5vw, 4.5rem);
}

.rsvp-flourish {
    display: grid;
    width: 4.8rem;
    height: 4.8rem;
    margin: 0 0 1rem;
    background: linear-gradient(145deg, #fff0b7, #c9f0e9);
    border: 1px solid rgba(34, 121, 109, 0.2);
    border-radius: 50%;
    box-shadow: 0 11px 24px rgba(35, 99, 86, 0.12);
    place-items: center;
}

.rsvp-flourish img {
    width: 3.65rem;
    height: 3.65rem;
    object-fit: contain;
}

.rsvp-banner .rsvp-banner__copy .eyebrow {
    margin-bottom: 0.6rem;
    color: #c25845;
}

.rsvp-banner h2 {
    max-width: 640px;
    margin: 0 0 0.85rem;
    color: #15544a;
    font-size: clamp(2.75rem, 5vw, 4.7rem);
    line-height: 0.98;
}

.rsvp-banner .rsvp-banner__copy > p:not(.eyebrow) {
    max-width: 570px;
    margin: 0;
    color: rgba(25, 75, 66, 0.8);
    font-size: 0.98rem;
    line-height: 1.7;
}

.rsvp-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-top: 1.55rem;
}

.rsvp-actions .button {
    box-shadow: 0 12px 25px rgba(191, 126, 29, 0.24);
}

.rsvp-quick-note {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.42rem 0.7rem 0.42rem 0.48rem;
    color: #1a6258;
    background: rgba(229, 249, 243, 0.85);
    border: 1px solid rgba(67, 174, 178, 0.28);
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 750;
}

.rsvp-quick-note img {
    width: 1.6rem;
    height: 1.6rem;
    object-fit: contain;
}

.rsvp-postcard {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    min-width: 0;
    min-height: 26rem;
    padding: 3rem 1.8rem 1.6rem;
    overflow: hidden;
    text-align: center;
    background:
        radial-gradient(circle at 84% 14%, rgba(255, 202, 82, 0.34) 0 12%, transparent 12.5%),
        radial-gradient(circle at 12% 86%, rgba(75, 187, 187, 0.22), transparent 26%),
        linear-gradient(150deg, #fff0d0, #ffe8dc 53%, #e5f8f3);
    border: 1px solid rgba(234, 132, 105, 0.34);
    border-radius: 8rem 2rem 2rem 2rem;
    box-shadow: 0 16px 38px rgba(45, 91, 80, 0.13), inset 0 0 0 0.45rem rgba(255, 255, 255, 0.34);
}

.rsvp-postcard__tape {
    position: absolute;
    z-index: 3;
    top: 0.4rem;
    left: 50%;
    width: 4.7rem;
    height: 1.15rem;
    background: rgba(255, 221, 142, 0.8);
    border: 1px solid rgba(190, 132, 38, 0.14);
    box-shadow: 0 3px 8px rgba(55, 84, 74, 0.09);
    transform: translateX(-50%) rotate(2deg);
}

.rsvp-postcard__illustration {
    width: clamp(6.2rem, 8vw, 8rem);
    height: auto;
    margin-bottom: 0.45rem;
    filter: drop-shadow(0 11px 15px rgba(31, 91, 79, 0.14));
    animation: rsvp-sail 5s ease-in-out infinite;
}

@keyframes rsvp-sail {
    50% { transform: translateY(-7px) rotate(2deg); }
}

.rsvp-postcard .eyebrow {
    margin-bottom: 0.45rem;
    color: #bd604b;
}

.rsvp-postcard h3 {
    margin: 0 0 0.55rem;
    color: #17574e;
    font-size: clamp(1.75rem, 3vw, 2.35rem);
    line-height: 1.05;
}

.rsvp-banner .rsvp-postcard > p:not(.eyebrow) {
    max-width: 280px;
    margin: 0;
    color: rgba(25, 75, 66, 0.72);
    font-size: 0.78rem;
    line-height: 1.55;
}

.rsvp-postcard .qr-placeholder {
    position: relative;
    right: auto;
    bottom: auto;
    display: grid;
    grid-template-columns: 2.7rem minmax(0, 1fr);
    grid-template-rows: auto auto;
    align-items: center;
    gap: 0.05rem 0.55rem;
    width: min(100%, 15rem);
    aspect-ratio: auto;
    margin: 1.15rem auto 0;
    padding: 0.65rem 0.75rem;
    color: #195d54;
    background: rgba(255, 253, 246, 0.72);
    border: 1px dashed rgba(199, 124, 35, 0.7);
    border-radius: 1rem;
    text-align: left;
    transform: none;
}

.rsvp-postcard .qr-placeholder img {
    grid-row: 1 / 3;
    width: 2.7rem;
    height: 2.7rem;
    object-fit: contain;
}

.rsvp-postcard .qr-placeholder span {
    color: #176057;
    font-family: var(--font-body);
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    line-height: 1.1;
    text-transform: uppercase;
}

.rsvp-postcard .qr-placeholder small {
    color: rgba(25, 75, 66, 0.64);
    font-size: 0.58rem;
    line-height: 1.2;
}

.lightbox {
    animation: lightbox-enter 350ms ease both;
}

.lightbox figure {
    animation: lightbox-figure 600ms var(--ease-premium) both;
}

@keyframes lightbox-enter { from { opacity: 0; } }
@keyframes lightbox-figure { from { opacity: 0; transform: translateY(20px) scale(0.97); } }

/* Cheerful beach FAQ */
.faq-section {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 16%, rgba(255, 194, 76, 0.26), transparent 24%),
        radial-gradient(circle at 92% 76%, rgba(66, 189, 190, 0.23), transparent 28%),
        radial-gradient(circle at 76% 10%, rgba(239, 118, 95, 0.11), transparent 18%),
        linear-gradient(145deg, #fff2d8 0%, #fffaf0 47%, #e9faf5 100%);
}

.faq-section::before {
    position: absolute;
    z-index: 0;
    inset: 0;
    background-image: radial-gradient(circle, rgba(27, 102, 91, 0.11) 1px, transparent 1.5px);
    background-size: 24px 24px;
    content: "";
    opacity: 0.4;
    pointer-events: none;
}

.faq-section > .container {
    position: relative;
    z-index: 2;
}

.faq-section__wave {
    position: absolute;
    z-index: 1;
    right: -6%;
    bottom: -4.6rem;
    left: -6%;
    height: clamp(6rem, 9vw, 8.5rem);
    border-radius: 50% 50% 0 0 / 68% 68% 0 0;
    pointer-events: none;
}

.faq-section__wave--back {
    bottom: -2.4rem;
    background: rgba(77, 193, 186, 0.21);
    rotate: 0.75deg;
}

.faq-section__wave--front {
    background: rgba(255, 185, 76, 0.19);
    rotate: -0.65deg;
}

.happy-sticker--faq-ball {
    z-index: 3;
    top: 15%;
    left: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.4rem));
    width: clamp(4.6rem, 6vw, 6.5rem);
    rotate: -11deg;
    animation-delay: -1.1s;
}

.happy-sticker--faq-flip-flops {
    z-index: 3;
    right: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.2rem));
    bottom: 13%;
    width: clamp(4.6rem, 6.1vw, 6.6rem);
    rotate: 10deg;
    animation-delay: -3s;
}

.faq-layout {
    grid-template-columns: minmax(17rem, 0.72fr) minmax(0, 1.28fr);
    gap: clamp(2.5rem, 6vw, 5.5rem);
}

.faq-intro {
    top: calc(var(--header-height) + 1.5rem);
    padding: clamp(2rem, 4vw, 3rem);
    overflow: hidden;
    background:
        radial-gradient(circle at 88% 12%, rgba(255, 200, 83, 0.27), transparent 23%),
        linear-gradient(145deg, rgba(255, 254, 247, 0.96), rgba(235, 250, 245, 0.93));
    border: 1px solid rgba(59, 166, 158, 0.34);
    border-radius: 6rem 2rem 2rem 2rem;
    box-shadow: 0 24px 55px rgba(39, 88, 76, 0.14), inset 0 0 0 0.48rem rgba(255, 255, 255, 0.34);
}

.faq-intro::before {
    position: absolute;
    z-index: 0;
    top: -3.5rem;
    right: -3rem;
    width: 10rem;
    aspect-ratio: 1;
    background: radial-gradient(circle, rgba(255, 205, 91, 0.3) 0 43%, rgba(255, 224, 151, 0.12) 44% 60%, transparent 61%);
    border-radius: 50%;
    content: "";
}

.faq-intro > * {
    position: relative;
    z-index: 1;
}

.faq-intro__icon {
    display: grid;
    width: 5.8rem;
    height: 5.8rem;
    margin-bottom: 1.15rem;
    background: linear-gradient(145deg, #fff0b5, #c8efea);
    border: 1px solid rgba(45, 143, 133, 0.22);
    border-radius: 50%;
    box-shadow: 0 12px 25px rgba(37, 99, 86, 0.12);
    place-items: center;
}

.faq-intro__icon img {
    width: 4.5rem;
    height: 4.5rem;
    object-fit: contain;
    animation: icon-float 5s ease-in-out infinite;
}

.faq-intro .eyebrow {
    color: #c05a45;
}

.faq-intro h2 {
    max-width: 8ch;
    margin-bottom: 1rem;
    color: #16534a;
    font-size: clamp(2.65rem, 4.8vw, 4.15rem);
    line-height: 0.98;
}

.faq-intro > p:not(.eyebrow) {
    max-width: 350px;
    margin: 0;
    color: rgba(26, 76, 67, 0.78);
    line-height: 1.7;
}

.faq-help-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-top: 1.15rem;
}

.faq-help-chips span {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.34rem 0.62rem 0.34rem 0.4rem;
    color: #1a6057;
    background: rgba(255, 253, 246, 0.8);
    border: 1px solid rgba(69, 177, 169, 0.25);
    border-radius: 999px;
    font-size: 0.64rem;
    font-weight: 750;
}

.faq-help-chips span:last-child {
    border-color: rgba(239, 118, 95, 0.26);
}

.faq-help-chips img {
    width: 1.55rem;
    height: 1.55rem;
    object-fit: contain;
}

.faq-contact-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1.25rem;
    padding: 0.52rem 0.7rem 0.52rem 0.5rem;
    color: #fffaf0;
    background: #17645b;
    border: 1px solid rgba(20, 82, 74, 0.2);
    border-radius: 999px;
    box-shadow: 0 10px 22px rgba(29, 94, 83, 0.17);
    letter-spacing: 0.06em;
    transition: transform 300ms ease, background 300ms ease, box-shadow 300ms ease;
}

.faq-contact-link:hover {
    color: #fffaf0;
    background: #217a6f;
    box-shadow: 0 14px 28px rgba(29, 94, 83, 0.22);
    transform: translateY(-3px);
}

.faq-contact-link img {
    width: 1.9rem;
    height: 1.9rem;
    object-fit: contain;
}

.faq-contact-link i {
    color: #ffd17a;
    font-style: normal;
}

.accordion {
    display: grid;
    gap: 0.7rem;
}

.accordion-item {
    --faq-accent: #49b8b2;
    overflow: hidden;
    background: linear-gradient(145deg, rgba(255, 255, 251, 0.93), color-mix(in srgb, var(--faq-accent) 9%, #fffaf0));
    border: 1px solid color-mix(in srgb, var(--faq-accent) 38%, white);
    border-radius: 1.35rem;
    box-shadow: 0 10px 25px rgba(38, 84, 73, 0.08);
    transition: border-color 300ms ease, box-shadow 350ms ease, translate 350ms var(--ease-premium);
}

.accordion-item:nth-child(4n + 1) { --faq-accent: #4bb9b4; }
.accordion-item:nth-child(4n + 2) { --faq-accent: #ef7b64; }
.accordion-item:nth-child(4n + 3) { --faq-accent: #e9ae3e; }
.accordion-item:nth-child(4n + 4) { --faq-accent: #76b79a; }

.accordion-item:hover,
.accordion-item:has(button[aria-expanded="true"]) {
    border-color: color-mix(in srgb, var(--faq-accent) 64%, white);
    box-shadow: 0 17px 34px rgba(38, 84, 73, 0.13);
    translate: 0 -2px;
}

.accordion-item button {
    gap: 1rem;
    padding: 0.8rem 0.9rem 0.8rem 0.75rem;
    transition: background 300ms ease;
}

.accordion-item button:hover,
.accordion-item button[aria-expanded="true"] {
    background: color-mix(in srgb, var(--faq-accent) 7%, transparent);
}

.accordion-question {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    min-width: 0;
}

.accordion-question > img {
    flex: 0 0 auto;
    width: 3.55rem;
    height: 3.55rem;
    padding: 0.22rem;
    object-fit: contain;
    background: rgba(255, 253, 246, 0.84);
    border: 1px solid color-mix(in srgb, var(--faq-accent) 31%, white);
    border-radius: 50%;
    box-shadow: 0 7px 16px rgba(38, 84, 73, 0.09);
    transition: transform 350ms var(--ease-premium);
}

.accordion-question__text {
    color: #194f47;
    line-height: 1.15;
    transition: color 250ms ease, transform 350ms var(--ease-premium);
}

.accordion-item button:hover .accordion-question__text,
.accordion-item button[aria-expanded="true"] .accordion-question__text {
    color: color-mix(in srgb, var(--faq-accent) 76%, #174b43);
    transform: translateX(4px);
}

.accordion-item button:hover .accordion-question > img,
.accordion-item button[aria-expanded="true"] .accordion-question > img {
    transform: rotate(-5deg) scale(1.06);
}

.accordion-item button i {
    display: block;
    flex: 0 0 2.25rem;
    width: 2.25rem;
    height: 2.25rem;
    margin-left: auto;
    background: color-mix(in srgb, var(--faq-accent) 15%, white);
    border: 1px solid color-mix(in srgb, var(--faq-accent) 48%, white);
    border-radius: 50%;
    transition: background 300ms ease, transform 350ms var(--ease-premium);
}

.accordion-item button i::before,
.accordion-item button i::after {
    right: 0.62rem;
    left: 0.62rem;
    background: color-mix(in srgb, var(--faq-accent) 82%, #174b43);
}

.accordion-item button[aria-expanded="true"] i {
    background: color-mix(in srgb, var(--faq-accent) 28%, white);
    transform: scale(1.05);
}

.accordion-panel p {
    margin: 0;
    padding: 0.05rem 4.25rem 1.2rem 5.15rem;
    color: rgba(27, 76, 67, 0.75);
    font-size: 0.86rem;
    line-height: 1.65;
}

/* Tropical contact send-off */
.contact-section {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding-block: clamp(5.5rem, 9vw, 8rem);
    background:
        radial-gradient(circle at 13% 22%, rgba(255, 192, 76, 0.34), transparent 25%),
        radial-gradient(circle at 88% 74%, rgba(239, 118, 95, 0.22), transparent 26%),
        linear-gradient(135deg, #0b716e 0%, #177d76 47%, #43a58f 100%);
}

.contact-section > .section-media-backdrop {
    opacity: 0.28;
    filter: saturate(1.04) brightness(1.03);
}

.contact-section::after {
    background: linear-gradient(130deg, rgba(8, 74, 70, 0.72), rgba(18, 116, 106, 0.58) 55%, rgba(18, 88, 78, 0.68));
}

.contact-section::before {
    position: absolute;
    z-index: 1;
    inset: 0;
    background:
        radial-gradient(circle at 50% 5%, rgba(255, 215, 122, 0.25), transparent 28%),
        radial-gradient(circle, rgba(255, 249, 235, 0.17) 1px, transparent 1.5px),
        linear-gradient(110deg, transparent 35%, rgba(255, 229, 174, 0.11) 50%, transparent 65%);
    background-size: auto, 28px 28px, cover;
    content: "";
    animation: contact-shimmer 11s ease-in-out infinite;
    pointer-events: none;
}

@keyframes contact-shimmer {
    0%, 100% { background-position: center, 0 0, -30vw 0; }
    50% { background-position: center, 14px 14px, 30vw 0; }
}

.contact-section__wave {
    position: absolute;
    z-index: 1;
    right: -6%;
    bottom: -4.8rem;
    left: -6%;
    height: clamp(6rem, 10vw, 9rem);
    border-radius: 50% 50% 0 0 / 68% 68% 0 0;
    pointer-events: none;
}

.contact-section__wave--back {
    bottom: -2.4rem;
    background: rgba(255, 215, 126, 0.18);
    rotate: 0.75deg;
}

.contact-section__wave--front {
    background: rgba(7, 82, 77, 0.38);
    rotate: -0.6deg;
}

.happy-sticker--contact-sailboat {
    z-index: 3;
    top: 19%;
    left: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.6rem));
    width: clamp(4.8rem, 6.3vw, 6.9rem);
    rotate: -10deg;
    animation-delay: -1.2s;
}

.happy-sticker--contact-starfish {
    z-index: 3;
    right: max(1rem, calc((100vw - var(--content-width)) / 2 - 5.3rem));
    bottom: 14%;
    width: clamp(4.7rem, 6vw, 6.5rem);
    rotate: 11deg;
    animation-delay: -3.1s;
}

.contact-inner {
    width: min(calc(100% - 3rem), 1080px);
    padding: clamp(2.8rem, 6vw, 5rem);
    overflow: hidden;
    text-align: center;
    background:
        radial-gradient(circle at 84% 14%, rgba(255, 203, 89, 0.18), transparent 22%),
        linear-gradient(145deg, rgba(7, 77, 72, 0.78), rgba(13, 104, 95, 0.72));
    border: 1px solid rgba(255, 238, 202, 0.35);
    border-radius: 3rem;
    box-shadow: 0 30px 70px rgba(3, 54, 51, 0.3), inset 0 0 0 0.6rem rgba(255, 255, 255, 0.035);
    backdrop-filter: blur(8px);
}

.contact-inner::before {
    position: absolute;
    z-index: 0;
    top: -8rem;
    left: 50%;
    width: 20rem;
    aspect-ratio: 1;
    background: radial-gradient(circle, rgba(255, 217, 124, 0.23) 0 38%, rgba(255, 222, 141, 0.08) 39% 58%, transparent 59%);
    border-radius: 50%;
    content: "";
    transform: translateX(-50%);
}

.contact-inner > * {
    position: relative;
    z-index: 1;
}

.contact-badge {
    display: grid;
    width: 5.8rem;
    height: 5.8rem;
    margin: 0 auto 0.9rem;
    background: linear-gradient(145deg, #fff0b3, #c9f1ea);
    border: 1px solid rgba(255, 249, 235, 0.42);
    border-radius: 50%;
    box-shadow: 0 13px 26px rgba(2, 58, 54, 0.2);
    place-items: center;
}

.contact-badge img {
    width: 4.5rem;
    height: 4.5rem;
    object-fit: contain;
    animation: icon-float 5.2s ease-in-out infinite;
}

.contact-inner > .eyebrow {
    margin-bottom: 0.55rem;
    color: #ffd078;
}

.contact-inner .script-kicker {
    margin-bottom: 0.3rem;
    color: #ffe4b3;
    font-size: clamp(2.7rem, 5.5vw, 5.25rem);
    line-height: 0.95;
    text-shadow: 0 4px 18px rgba(2, 53, 49, 0.24);
}

.contact-inner h2 {
    max-width: 840px;
    margin: 0 auto 0.7rem;
    color: #fffaf0;
    font-size: clamp(2.4rem, 5vw, 4.4rem);
    line-height: 1;
}

.contact-lede {
    max-width: 560px;
    margin: 0 auto;
    color: rgba(255, 250, 240, 0.82);
    font-size: 0.92rem;
    line-height: 1.65;
}

.contact-links {
    display: grid;
    grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
    gap: 0.85rem;
    width: min(100%, 900px);
    margin: 1.8rem auto 0;
}

.contact-links a.contact-link-card {
    display: grid;
    grid-template-columns: 3.8rem minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
    padding: 0.78rem 0.9rem 0.78rem 0.72rem;
    color: #16554d;
    background: linear-gradient(145deg, #fff9ed, #fff0d6);
    border: 1px solid rgba(255, 239, 205, 0.54);
    border-radius: 1.35rem;
    box-shadow: 0 13px 30px rgba(2, 55, 51, 0.18);
    font-family: var(--font-body);
    font-size: 1rem;
    text-align: left;
    transition: box-shadow 350ms ease, translate 350ms var(--ease-premium);
}

.contact-links a.contact-link-card--email {
    background: linear-gradient(145deg, #effcf7, #dff4ee 54%, #ffe6dc);
}

.contact-links a.contact-link-card:hover {
    color: #16554d;
    box-shadow: 0 19px 39px rgba(2, 55, 51, 0.25);
    translate: 0 -5px;
}

.contact-links a.contact-link-card > span {
    color: inherit;
}

.contact-link-card__icon {
    display: grid;
    width: 3.8rem;
    height: 3.8rem;
    background: rgba(255, 255, 250, 0.78);
    border: 1px solid rgba(39, 130, 118, 0.18);
    border-radius: 50%;
    place-items: center;
}

.contact-link-card__icon img {
    width: 3rem;
    height: 3rem;
    object-fit: contain;
}

.contact-link-card__copy {
    display: grid;
    min-width: 0;
    gap: 0.1rem;
}

.contact-link-card__copy small {
    color: #c05b47;
    font-size: 0.6rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    line-height: 1.1;
    text-transform: uppercase;
}

.contact-link-card__copy strong {
    min-width: 0;
    color: #17584f;
    font-family: var(--font-heading);
    font-size: clamp(0.95rem, 1.5vw, 1.2rem);
    font-weight: 600;
    line-height: 1.2;
    overflow-wrap: anywhere;
}

.contact-link-card > i {
    display: grid;
    width: 2rem;
    height: 2rem;
    color: #fff9ed;
    background: #188076;
    border-radius: 50%;
    font-size: 0.78rem;
    font-style: normal;
    place-items: center;
}

.contact-signoff {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    margin-top: 1.4rem;
    padding: 0.38rem 0.75rem;
    color: #ffe2a7;
    background: rgba(255, 255, 247, 0.08);
    border: 1px solid rgba(255, 238, 203, 0.18);
    border-radius: 999px;
    font-family: var(--font-heading);
    font-size: 0.95rem;
}

.contact-signoff img {
    width: 1.75rem;
    height: 1.75rem;
    object-fit: contain;
}

/* Full-bleed cheerful footer */
.site-footer {
    position: relative;
    isolation: isolate;
    width: 100vw;
    max-width: none;
    margin-inline: calc(50% - 50vw);
    padding: 0 0 max(1.35rem, env(safe-area-inset-bottom));
    overflow: hidden;
    color: rgba(255, 249, 239, 0.8);
    background: var(--color-forest-dark);
}

.site-footer::before {
    position: absolute;
    z-index: 0;
    inset: 0;
    background:
        radial-gradient(circle at 50% -9%, rgba(255, 206, 105, 0.16), transparent 28%),
        radial-gradient(circle at 9% 68%, rgba(60, 157, 141, 0.13), transparent 24%),
        radial-gradient(circle, rgba(255, 245, 221, 0.09) 1px, transparent 1.5px);
    background-size: auto, auto, 28px 28px;
    content: "";
    pointer-events: none;
}

.footer-ticker {
    position: relative;
    z-index: 3;
    width: 100%;
    overflow: hidden;
    color: #ffe2a4;
    background: linear-gradient(90deg, rgba(68, 166, 148, 0.16), rgba(255, 194, 75, 0.11), rgba(68, 166, 148, 0.16));
    border-top: 1px solid rgba(255, 218, 142, 0.24);
    border-bottom: 1px solid rgba(255, 218, 142, 0.2);
}

.footer-ticker__track {
    display: flex;
    width: max-content;
    animation: footer-ticker-scroll 28s linear infinite;
    will-change: transform;
}

.footer-ticker__group {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: clamp(2rem, 5vw, 5rem);
    padding: 0.65rem clamp(1rem, 2.5vw, 2.5rem);
}

.footer-ticker__group span {
    display: inline-flex;
    align-items: center;
    gap: 0.48rem;
    white-space: nowrap;
    font-size: 0.65rem;
    font-weight: 750;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.footer-ticker__group img {
    width: 2rem;
    height: 2rem;
    object-fit: contain;
}

@keyframes footer-ticker-scroll {
    to { transform: translate3d(-50%, 0, 0); }
}

.footer-sticker {
    position: absolute;
    z-index: 4;
    display: block;
    pointer-events: none;
    filter: drop-shadow(0 13px 17px rgba(2, 35, 32, 0.28));
    animation: happy-sticker-float 5.8s ease-in-out infinite;
}

.footer-sticker img {
    width: 100%;
    height: auto;
}

.footer-sticker--ball {
    top: 5.4rem;
    left: clamp(0.6rem, 2.8vw, 3rem);
    width: clamp(4rem, 5.2vw, 5.7rem);
    rotate: -10deg;
    animation-delay: -1.4s;
}

.footer-sticker--sunglasses {
    top: 5.1rem;
    right: clamp(0.6rem, 2.8vw, 3rem);
    width: clamp(4.5rem, 5.7vw, 6.2rem);
    rotate: 9deg;
    animation-delay: -3.2s;
}

.footer-shoreline {
    position: absolute;
    z-index: 0;
    right: -6%;
    bottom: -5rem;
    left: -6%;
    height: clamp(7rem, 10vw, 10rem);
    border-radius: 50% 50% 0 0 / 70% 70% 0 0;
    pointer-events: none;
}

.footer-shoreline--back {
    bottom: -2.9rem;
    background: rgba(75, 159, 143, 0.13);
    rotate: 0.7deg;
}

.footer-shoreline--front {
    background: rgba(7, 48, 43, 0.28);
    rotate: -0.55deg;
}

.site-footer .footer-grid,
.site-footer .footer-bottom {
    position: relative;
    z-index: 2;
    width: min(calc(100% - clamp(2rem, 6vw, 7rem)), 1600px);
    max-width: none;
}

.footer-grid {
    grid-template-columns: minmax(0, 1.25fr) minmax(15rem, 0.8fr) minmax(16rem, 0.9fr);
    gap: clamp(0.8rem, 1.5vw, 1.25rem);
    padding-block: clamp(2.8rem, 5vw, 4.5rem) 2.5rem;
}

.footer-card {
    min-width: 0;
    padding: clamp(1.4rem, 2.5vw, 2rem);
    background: linear-gradient(145deg, rgba(255, 255, 247, 0.055), rgba(255, 255, 247, 0.025));
    border: 1px solid rgba(255, 235, 196, 0.14);
    border-radius: 1.6rem;
    box-shadow: inset 0 0 0 0.35rem rgba(255, 255, 255, 0.012), 0 18px 35px rgba(1, 29, 26, 0.12);
}

.footer-brand-card {
    background:
        radial-gradient(circle at 90% 12%, rgba(255, 202, 91, 0.12), transparent 28%),
        linear-gradient(145deg, rgba(255, 255, 247, 0.065), rgba(56, 144, 127, 0.08));
}

.footer-wordmark {
    margin-bottom: 0.7rem;
    background: linear-gradient(100deg, var(--color-ivory), var(--color-champagne));
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    font-size: clamp(2.35rem, 3vw, 3.25rem);
    -webkit-text-fill-color: transparent;
}

.footer-brand-card > p {
    max-width: 340px;
    margin: 0;
    color: rgba(255, 249, 239, 0.7);
}

.footer-brand-icons {
    display: flex;
    align-items: center;
    gap: 0.42rem;
    margin-top: 1rem;
}

.footer-brand-icons img {
    width: 2.45rem;
    height: 2.45rem;
    object-fit: contain;
}

.footer-brand-icons span {
    color: rgba(255, 210, 124, 0.66);
    font-size: 0.75rem;
}

.footer-card__heading {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin-bottom: 0.8rem;
}

.footer-card__heading img {
    width: 2.4rem;
    height: 2.4rem;
    object-fit: contain;
}

.footer-card .footer-label {
    margin: 0;
    color: #f2b750;
}

.footer-date-card > strong {
    display: block;
    margin-bottom: 0.25rem;
    color: #fff5df;
    font-family: var(--font-heading);
    font-size: 1.35rem;
    font-weight: 600;
    line-height: 1.2;
}

.footer-date-card > p {
    margin: 0 0 0.25rem;
    color: rgba(255, 249, 239, 0.76);
}

.footer-location {
    display: inline-flex;
    margin-top: 0.45rem;
    padding: 0.28rem 0.55rem;
    color: #bde8de;
    background: rgba(75, 164, 146, 0.12);
    border: 1px solid rgba(128, 205, 190, 0.16);
    border-radius: 999px;
    font-size: 0.64rem;
    font-weight: 700;
}

.footer-grid > .footer-links-card {
    display: block;
}

.footer-links {
    display: grid;
    gap: 0.42rem;
}

.footer-links a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    min-width: 0;
    margin: 0;
    padding: 0.48rem 0.62rem;
    color: rgba(255, 249, 239, 0.82);
    background: rgba(255, 255, 247, 0.045);
    border: 1px solid rgba(255, 235, 196, 0.1);
    border-radius: 0.85rem;
    font-size: 0.78rem;
    text-decoration: none;
    transition: background 280ms ease, border-color 280ms ease, translate 280ms ease;
}

.footer-links a:hover {
    color: #fff9ed;
    background: rgba(72, 167, 149, 0.16);
    border-color: rgba(255, 210, 126, 0.28);
    translate: 4px 0;
}

.footer-links i {
    display: grid;
    flex: 0 0 auto;
    width: 1.65rem;
    height: 1.65rem;
    color: #ffe0a1;
    background: rgba(255, 195, 83, 0.1);
    border-radius: 50%;
    font-size: 0.65rem;
    font-style: normal;
    place-items: center;
}

.footer-bottom {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 1rem;
    padding-top: 1.1rem;
    color: rgba(255, 249, 239, 0.64);
    border-top-color: rgba(255, 227, 173, 0.16);
}

.footer-bottom__note {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    margin: 0;
    color: #efd197;
    font-family: var(--font-heading);
    font-size: 0.86rem;
}

.footer-bottom__note img {
    width: 1.6rem;
    height: 1.6rem;
    object-fit: contain;
}

.footer-back-to-top {
    display: inline-flex;
    align-items: center;
    justify-self: end;
    gap: 0.45rem;
    color: rgba(255, 249, 239, 0.78);
    text-decoration: none;
}

.footer-back-to-top i {
    display: grid;
    width: 1.8rem;
    height: 1.8rem;
    color: #173d32;
    background: #f0bc58;
    border-radius: 50%;
    font-size: 0.7rem;
    font-style: normal;
    place-items: center;
    transition: transform 280ms ease;
}

.footer-back-to-top:hover i {
    transform: translateY(-4px);
}

/* Editorial footer redesign */
.footer-horizon {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 0.8rem;
    width: min(calc(100% - clamp(2rem, 6vw, 7rem)), 1600px);
    margin-inline: auto;
    padding-top: 1.15rem;
}

.footer-horizon span {
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255, 212, 132, 0.32));
}

.footer-horizon span:last-child {
    background: linear-gradient(90deg, rgba(255, 212, 132, 0.32), transparent);
}

.footer-horizon img {
    width: 3.4rem;
    height: 3.4rem;
    object-fit: contain;
}

.footer-sticker--palm {
    top: 3.7rem;
    left: clamp(0.5rem, 2.2vw, 2.5rem);
    width: clamp(3.8rem, 4.8vw, 5.2rem);
    rotate: -9deg;
    animation-delay: -1.2s;
}

.footer-sticker--starfish {
    right: clamp(0.5rem, 2.2vw, 2.5rem);
    bottom: 6.2rem;
    width: clamp(3.7rem, 4.6vw, 5rem);
    rotate: 10deg;
    animation-delay: -3s;
}

.site-footer .footer-grid {
    grid-template-columns: minmax(0, 1.15fr) minmax(17rem, 1fr) minmax(15rem, 0.85fr);
    gap: 0;
    padding-block: clamp(2rem, 4vw, 3.4rem);
}

.footer-brand,
.footer-details,
.footer-nav {
    min-width: 0;
    padding: 0 clamp(1.5rem, 3vw, 3.5rem);
}

.footer-brand {
    padding-left: 0;
}

.footer-details,
.footer-nav {
    border-left: 1px solid rgba(255, 226, 169, 0.15);
}

.footer-nav {
    padding-right: 0;
}

.footer-brand .footer-wordmark {
    margin-bottom: 0.8rem;
    font-size: clamp(2.6rem, 3.7vw, 4rem);
}

.footer-brand > p {
    max-width: 410px;
    margin: 0;
    color: rgba(255, 249, 239, 0.68);
    line-height: 1.6;
}

.footer-brand__date {
    display: inline-flex;
    align-items: center;
    margin-top: 1.15rem;
    padding: 0.35rem 0.65rem;
    color: #f3d39a;
    background: rgba(255, 201, 95, 0.08);
    border: 1px solid rgba(255, 211, 126, 0.15);
    border-radius: 999px;
    font-size: 0.65rem;
    font-weight: 750;
    letter-spacing: 0.09em;
    text-transform: uppercase;
}

.footer-details > .footer-label,
.footer-nav > .footer-label {
    margin: 0 0 1.1rem;
}

.footer-fact + .footer-fact {
    margin-top: 1.1rem;
}

.footer-fact span,
.footer-fact small {
    display: block;
    color: rgba(255, 249, 239, 0.52);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    line-height: 1.4;
    text-transform: uppercase;
}

.footer-fact strong {
    display: block;
    margin-block: 0.2rem;
    color: #fff3da;
    font-family: var(--font-heading);
    font-size: 1.18rem;
    font-weight: 600;
    line-height: 1.25;
}

.footer-nav > div {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.55rem 1.1rem;
}

.footer-nav a {
    position: relative;
    width: fit-content;
    color: rgba(255, 249, 239, 0.74);
    font-size: 0.76rem;
    text-decoration: none;
    transition: color 250ms ease, translate 250ms ease;
}

.footer-nav a::before {
    position: absolute;
    top: 50%;
    left: -0.8rem;
    width: 0.32rem;
    height: 0.32rem;
    background: #e9b754;
    border-radius: 50%;
    content: "";
    opacity: 0;
    transform: translateY(-50%);
    transition: opacity 250ms ease;
}

.footer-nav a:hover {
    color: #ffe0a3;
    translate: 0.65rem 0;
}

.footer-nav a:hover::before {
    opacity: 1;
}

.footer-contact-band {
    position: relative;
    z-index: 2;
    width: 100%;
    background: rgba(255, 255, 247, 0.045);
    border-top: 1px solid rgba(255, 226, 169, 0.12);
    border-bottom: 1px solid rgba(255, 226, 169, 0.12);
}

.footer-contact-band__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    width: min(calc(100% - clamp(2rem, 6vw, 7rem)), 1600px);
    max-width: none;
    padding-block: 0.85rem;
}

.footer-contact-band__inner > p {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    margin: 0;
    color: #f4d9a5;
    font-family: var(--font-heading);
    font-size: 1rem;
}

.footer-contact-band__inner > p img {
    width: 2.65rem;
    height: 2.65rem;
    object-fit: contain;
}

.footer-contact-band__inner > p small {
    display: block;
    color: rgba(255, 249, 239, 0.5);
    font-family: var(--font-body);
    font-size: 0.56rem;
    font-weight: 750;
    letter-spacing: 0.12em;
    line-height: 1.2;
    text-transform: uppercase;
}

.footer-contact-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.55rem;
}

.footer-contact-actions a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.4rem;
    padding: 0.45rem 0.75rem;
    color: rgba(255, 249, 239, 0.8);
    background: rgba(255, 255, 247, 0.045);
    border: 1px solid rgba(255, 232, 190, 0.12);
    border-radius: 999px;
    font-size: 0.7rem;
    text-decoration: none;
    transition: background 250ms ease, border-color 250ms ease, translate 250ms ease;
}

.footer-contact-actions a:hover {
    color: #fff8e9;
    background: rgba(82, 172, 154, 0.14);
    border-color: rgba(255, 215, 137, 0.24);
    translate: 0 -2px;
}

.footer-contact-actions .footer-rsvp-link {
    gap: 0.4rem;
    color: #183f36;
    background: #eeb94f;
    border-color: #eeb94f;
    font-weight: 800;
    text-transform: uppercase;
}

.footer-contact-actions .footer-rsvp-link:hover {
    color: #183f36;
    background: #ffd275;
}

.site-footer .footer-bottom {
    grid-template-columns: 1fr auto 1fr;
    padding-block: 1.2rem 0;
}

.reveal {
    filter: none;
}

.has-js .reveal {
    filter: blur(5px);
    transition: opacity 800ms ease, transform 900ms var(--ease-premium), filter 800ms ease;
    transition-delay: var(--reveal-delay, 0ms);
}

.has-js .reveal.is-visible {
    filter: blur(0);
}

.has-js .reveal[data-tilt] {
    transform: perspective(1100px) translateY(28px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
}

.has-js .reveal.is-visible[data-tilt] {
    transform: perspective(1100px) translateY(0) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
}

[data-tilt]:not(.reveal) {
    transform: perspective(1100px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
    transition: transform 500ms var(--ease-premium);
}

[data-glow] {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

.interactive-glow {
    position: absolute !important;
    z-index: 3;
    top: var(--glow-y, 50%);
    left: var(--glow-x, 50%);
    width: 17rem;
    height: 17rem;
    background: radial-gradient(circle, rgba(255, 223, 160, 0.2), transparent 68%);
    border-radius: 50%;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -50%);
    transition: opacity 300ms ease;
}

[data-glow]:hover > .interactive-glow {
    opacity: 1;
}

.details-grid .reveal:nth-child(2),
.story-timeline .reveal:nth-child(2),
.gallery-grid .reveal:nth-child(2) { --reveal-delay: 90ms; }
.details-grid .reveal:nth-child(3),
.story-timeline .reveal:nth-child(3),
.gallery-grid .reveal:nth-child(3) { --reveal-delay: 180ms; }
.details-grid .reveal:nth-child(4),
.gallery-grid .reveal:nth-child(4) { --reveal-delay: 270ms; }
.gallery-grid .reveal:nth-child(5) { --reveal-delay: 360ms; }
.gallery-grid .reveal:nth-child(6) { --reveal-delay: 450ms; }

.inner-hero {
    min-height: 35rem;
    background:
        radial-gradient(circle at var(--hero-x, 74%) var(--hero-y, 38%), rgba(227, 170, 141, 0.4), transparent 27%),
        linear-gradient(125deg, #ead5b5, var(--color-ivory) 52%, #edd4c4);
}

.inner-hero .container > * {
    animation: premium-rise 900ms var(--ease-premium) both;
}

.inner-hero .container > :nth-child(2) { animation-delay: 100ms; }
.inner-hero .container > :nth-child(3) { animation-delay: 200ms; }
.inner-hero .container > :nth-child(4) { animation-delay: 300ms; }

.rsvp-aside {
    overflow: hidden;
    box-shadow: var(--shadow-lifted);
}

.rsvp-aside::after {
    position: absolute;
    right: -7rem;
    bottom: -7rem;
    width: 18rem;
    height: 18rem;
    border: 1px solid rgba(233, 213, 182, 0.16);
    border-radius: 50%;
    content: "";
    box-shadow: 0 0 0 2.8rem rgba(233, 213, 182, 0.025), 0 0 0 5.8rem rgba(233, 213, 182, 0.02);
}

.form-card {
    background-color: rgba(255, 249, 239, 0.88);
    backdrop-filter: blur(16px);
}

.field input,
.field select,
.field textarea {
    background: rgba(255, 255, 255, 0.72);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
    transition: border-color 250ms ease, box-shadow 250ms ease, background 250ms ease, transform 250ms var(--ease-premium);
}

.field input:hover,
.field select:hover,
.field textarea:hover {
    background: var(--color-white);
    border-color: rgba(183, 131, 47, 0.55);
}

.field input:focus,
.field select:focus,
.field textarea:focus {
    background: var(--color-white);
    box-shadow: 0 0 0 4px rgba(183, 131, 47, 0.12), 0 10px 24px rgba(32, 55, 47, 0.07);
    transform: translateY(-1px);
}

.attendance-choice label > span {
    transition: border-color 300ms ease, background 300ms ease, box-shadow 300ms ease, transform 400ms var(--ease-premium);
}

.attendance-choice label:hover > span {
    border-color: rgba(183, 131, 47, 0.55);
    transform: translateY(-4px);
}

.celebration-icon {
    animation: icon-float 4s ease-in-out infinite;
}

@media (hover: none), (pointer: coarse) {
    [data-tilt],
    .reveal[data-tilt],
    .reveal.is-visible[data-tilt] {
        --tilt-x: 0deg !important;
        --tilt-y: 0deg !important;
    }

    .interactive-glow {
        display: none;
    }

    .button {
        --magnet-x: 0px !important;
        --magnet-y: 0px !important;
    }

    .gallery-item:hover,
    .story-timeline li:hover > div,
    .event-timeline li:hover > div {
        transform: none;
    }

    .story-timeline li:hover .story-number {
        transform: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .hero-backdrop,
    .sun-emblem__sun::before,
    .love-marquee__track,
    .love-marquee__marker i,
    .love-marquee__marker::before,
    .love-marquee__item.is-emphasized,
    .love-marquee__sheen,
    .countdown-wrap::before,
    .venue-stamp,
    .gift-icon,
    .contact-section::before,
    .celebration-icon,
    .hero-content > *,
    .inner-hero .container > * {
        animation: none !important;
    }

    .love-marquee__track {
        justify-content: center;
        width: 100%;
    }

    .love-marquee__group {
        display: none;
    }

    .love-marquee__group:first-child {
        display: flex;
        justify-content: center;
        width: 100%;
        padding-right: 0;
    }

    .love-marquee__group:first-child > :not(:first-child) {
        display: none;
    }

    .hero-glow {
        --parallax-y: 0px !important;
    }

    .has-js .reveal {
        filter: none;
    }
}
