:root {
    --ink: #2b211c;
    --ivory: #f8f3eb;
    --paper: #eee4d6;
    --clay: #a9624c;
    --clay-soft: #c98e78;
    --olive: #7d8068;
    --gold: #c6a56c;
    --ease-film: cubic-bezier(.76, 0, .24, 1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body {
    margin: 0;
    color: var(--ink);
    background: var(--ivory);
    font-family: "DM Sans", sans-serif;
    font-weight: 300;
    overflow-x: hidden;
}
body.is-locked { overflow: hidden; }
button, a { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.scene { scroll-margin-top: 1rem; }
.scroll-progress { position: fixed; z-index: 80; top: 0; left: 0; width: 0; height: 2px; background: var(--gold); pointer-events: none; }

.film-grain {
    position: fixed;
    inset: -50%;
    z-index: 100;
    pointer-events: none;
    opacity: .035;
    background-image: repeating-radial-gradient(circle at 30% 40%, rgba(0,0,0,.8) 0 .45px, transparent .55px 2.5px);
    animation: grain .2s steps(2) infinite;
}

.opening {
    position: fixed;
    inset: 0;
    z-index: 90;
    display: grid;
    place-items: center;
    overflow: hidden;
    color: #f8f1e7;
    background: #261d18;
    transition: visibility 0s 2.2s;
}
.opening__glow {
    position: absolute;
    width: min(90vw, 850px);
    aspect-ratio: 1;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(170, 101, 73, .32), transparent 68%);
    filter: blur(10px);
    animation: breathe 5s ease-in-out infinite;
}
.opening__photo { position: absolute; inset: 0; background-position: center; background-size: cover; opacity: .13; filter: saturate(.6) contrast(1.08); transform: scale(1.05); transition: transform 2.2s var(--ease-film), opacity 1.2s ease; }
.opening__content {
    position: relative;
    z-index: 3;
    display: grid;
    justify-items: center;
    width: min(88vw, 620px);
    text-align: center;
    transition: opacity .45s ease, transform .8s var(--ease-film);
}
.opening__eyebrow,
.hero__kicker,
.section-label {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .32em;
    font-size: .67rem;
    font-weight: 500;
}
.opening__guest {
    margin: 1rem 0 2.25rem;
    font: 2.2rem/1.1 "Italiana", serif;
}
.seal {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .7rem;
    width: 94px;
    height: 94px;
    margin-bottom: 2.3rem;
    border: 1px solid rgba(223, 193, 146, .65);
    border-radius: 50%;
    color: #dfc192;
    font: 1.25rem "Italiana", serif;
    box-shadow: 0 0 0 7px rgba(223, 193, 146, .06);
}
.seal i { width: 1px; height: 28px; background: currentColor; transform: rotate(28deg); }
.opening__button {
    min-width: 210px;
    padding: 1rem 1.8rem .9rem;
    border: 1px solid rgba(248, 241, 231, .5);
    color: inherit;
    background: rgba(255,255,255,.035);
    border-radius: 999px;
    backdrop-filter: blur(8px);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: .2em;
    transition: color .3s ease, background .3s ease, transform .3s ease;
}
.opening__button:hover { color: var(--ink); background: var(--ivory); transform: translateY(-2px); }
.opening__button span, .opening__button small { display: block; }
.opening__button span { font: 500 .7rem "DM Sans", sans-serif; }
.opening__button small { margin-top: .35rem; opacity: .55; font: 300 .57rem "DM Sans", sans-serif; letter-spacing: .15em; }
.opening__curtain {
    position: absolute;
    z-index: 2;
    top: 0;
    bottom: 0;
    width: 51%;
    background: linear-gradient(105deg, #211915, #35251e 56%, #281d18);
    box-shadow: 0 0 80px rgba(0,0,0,.18);
    transition: transform 1.8s var(--ease-film) .25s;
}
.opening__curtain--left { left: 0; transform-origin: left; }
.opening__curtain--right { right: 0; transform: scaleX(-1); transform-origin: right; }
.opening.is-open .opening__content { opacity: 0; transform: scale(.92); }
.opening.is-open .opening__photo { opacity: .55; transform: scale(1); }
.opening.is-open .opening__curtain--left { transform: translateX(-100%); }
.opening.is-open .opening__curtain--right { transform: scaleX(-1) translateX(-100%); }
.opening.is-open { pointer-events: none; visibility: hidden; }

.hero {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 100svh;
    overflow: hidden;
    color: #fff9ef;
    text-align: center;
    background:
        linear-gradient(180deg, rgba(37,25,20,.22), rgba(37,25,20,.12) 45%, rgba(37,25,20,.7)),
        radial-gradient(circle at 70% 25%, rgba(225,181,140,.38), transparent 32%),
        var(--hero-image) center / cover no-repeat;
}
.hero::before {
    content: "";
    position: absolute;
    inset: 0;
    opacity: .35;
    background: linear-gradient(115deg, transparent 0 45%, rgba(255,244,220,.32) 50%, transparent 57%);
    transform: translateX(-50%);
    animation: lightSweep 8s ease-in-out infinite;
}
.topbar {
    position: absolute;
    z-index: 2;
    top: max(1.5rem, env(safe-area-inset-top));
    right: 1.8rem;
    display: flex;
    align-items: center;
    gap: .65rem;
}
.topbar a { display:grid; place-items:center; min-width:32px; min-height:32px; color: inherit; opacity: .5; text-decoration: none; font-size: .65rem; letter-spacing: .18em; }
.topbar a.active { opacity: 1; }
.topbar span { width: 18px; height: 1px; background: currentColor; opacity: .35; }
.hero__content { position: relative; z-index: 2; padding: 1.5rem; }
.hero__kicker { margin-bottom: 1.6rem; }
.hero h1 {
    display: grid;
    margin: 0;
    font: clamp(4rem, 12vw, 9.5rem)/.78 "Italiana", serif;
    letter-spacing: -.055em;
    text-shadow: 0 16px 65px rgba(24,15,12,.18);
}
.hero h1 em { margin: -.05em 0 -.04em; color: #e7c58f; font-size: .48em; font-weight: 400; }
.hero__rule { width: 1px; height: 44px; margin: 2rem auto 1.3rem; background: rgba(255,255,255,.65); }
.hero__date { margin: 0; font: 1.35rem "Italiana", serif; letter-spacing: .08em; }
.hero__place { margin: .65rem 0 0; opacity: .72; font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; }
.scroll-cue {
    position: absolute;
    z-index: 3;
    bottom: max(1.4rem, env(safe-area-inset-bottom));
    left: 50%;
    display: grid;
    justify-items: center;
    gap: .65rem;
    color: inherit;
    text-decoration: none;
    transform: translateX(-50%);
}
.scroll-cue span { font-size: .57rem; letter-spacing: .2em; text-transform: uppercase; white-space: nowrap; }
.scroll-cue i { position: relative; width: 1px; height: 32px; overflow: hidden; background: rgba(255,255,255,.25); }
.scroll-cue i::after { content: ""; position: absolute; inset: 0; background: #fff; animation: scrollLine 2s ease-in-out infinite; }

.intro {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 100svh;
    padding: 8rem 1.5rem;
    overflow: hidden;
    text-align: center;
    background: var(--ivory);
}
.intro__copy { position: relative; z-index: 2; width:min(100%,1080px); }
.intro h2.intro__guest-name { max-width:1050px; margin:1.25rem auto .6rem; font:clamp(3.7rem,9.2vw,8.4rem)/.91 "Italiana",serif; letter-spacing:-.055em; overflow-wrap:anywhere; text-wrap:balance; }
.intro__announcement { margin:0 0 2.1rem; color:var(--clay); font:clamp(2rem,4vw,3.5rem)/1.05 "Italiana",serif; letter-spacing:-.035em; }
.intro__announcement span { color:var(--clay); }
.intro__body { max-width:720px; margin:0 auto; color:#675b54; font:clamp(1rem,1.6vw,1.2rem)/1.75 "DM Sans",sans-serif; }
.intro__number { position: absolute; top: 2%; left: -2vw; color: rgba(169,98,76,.075); font: min(45vw, 34rem)/1 "Italiana", serif; }
.intro__number--right { top: auto; right: -2vw; bottom: -8%; left: auto; }

.memories { padding:clamp(7rem,12vw,11rem) max(1.25rem,7vw) clamp(9rem,14vw,13rem); overflow:hidden; background:radial-gradient(circle at 10% 15%,rgba(201,142,120,.13),transparent 25%),linear-gradient(180deg,#f8f3eb,#eee3d5); }
.memories__heading { max-width:920px; margin:0 auto clamp(4rem,8vw,7rem); text-align:center; }
.memories__heading h2 { margin:1rem 0 0; font:clamp(3.2rem,8vw,7.5rem)/.94 "Italiana",serif; letter-spacing:-.045em; text-wrap:balance; }
.memories__frames { width:min(100%,1180px); margin:0 auto; }
.memory-frame { width:82%; margin:0; }
.memory-frame:nth-child(even) { margin-left:auto; }
.memory-frame + .memory-frame { margin-top:clamp(3rem,8vw,7rem); }
.memory-frame__image { position:relative; aspect-ratio:16/10; overflow:hidden; border-radius:1.1rem; background:#d9cbbc; box-shadow:0 35px 100px rgba(60,43,34,.16); }
.memory-frame__image::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,transparent 55%,rgba(31,22,18,.2)); }
.memory-frame img { display:block; width:100%; height:100%; object-fit:cover; transform:scale(1.015); transition:transform 1.8s var(--ease-film); }
.memory-frame.is-visible img { transform:scale(1); }
.memory-frame figcaption { display:flex; align-items:center; gap:.85rem; margin-top:1rem; color:#75675e; font-size:.58rem; letter-spacing:.16em; text-transform:uppercase; }
.memory-frame figcaption i { width:42px; height:1px; background:currentColor; opacity:.45; }

.scene { position: relative; }
.reveal { opacity: 0; filter: blur(8px); transform: translateY(56px) scale(.988); transition: opacity 1.25s ease, filter 1.25s ease, transform 1.45s var(--ease-film); }
.reveal.is-visible { opacity: 1; filter: blur(0); transform: translateY(0) scale(1); }
.invited-note { margin:2.2rem auto 0; color:#675b54; font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; }

.countdown { z-index: 2; display: grid; place-items: center; min-height: 68svh; margin-top: -3.5rem; overflow: hidden; border-radius: 3.5rem 3.5rem 0 0; color: var(--ivory); background: #2b211c; box-shadow: 0 -24px 70px rgba(43,33,28,.12); }
.countdown__wash { position: absolute; inset: -30%; background: radial-gradient(circle at 30% 40%, rgba(169,98,76,.38), transparent 32%), radial-gradient(circle at 72% 72%, rgba(125,128,104,.25), transparent 30%); animation: breathe 8s ease-in-out infinite; }
.countdown__content { position: relative; z-index: 1; width: min(90%, 760px); padding: 5rem 1rem; text-align: center; }
.countdown__grid { display: grid; grid-template-columns: repeat(3,1fr); margin-top: 2.7rem; }
.countdown__grid div { display: grid; gap: .55rem; padding: 0 1rem; border-right: 1px solid rgba(255,255,255,.14); }
.countdown__grid div:last-child { border: 0; }
.countdown__grid strong { font: clamp(3rem, 9vw, 6.5rem)/1 "Italiana", serif; font-variant-numeric: tabular-nums; }
.countdown__grid span { opacity: .55; font-size: .62rem; letter-spacing: .2em; text-transform: uppercase; }

.day { min-height: 100svh; padding: clamp(7rem, 13vw, 11rem) max(1.5rem, 8vw); background: radial-gradient(circle at 90% 8%, rgba(201,142,120,.12), transparent 30%), linear-gradient(180deg,#f2e9dd,#ebe0d1); }
.day__heading { max-width: 880px; margin: 0 auto 5rem; }
.day h2, .stay h2, .rsvp h2, .faq h2 { margin: 1rem 0 0; font: clamp(3.2rem, 8vw, 7.4rem)/.95 "Italiana", serif; letter-spacing: -.045em; }
.timeline { max-width: 920px; margin: 0 auto; border-top: 1px solid rgba(43,33,28,.18); }
.timeline__item { display: grid; grid-template-columns: 90px 1fr; gap: 1rem; padding: 2.6rem 0; border-bottom: 1px solid rgba(43,33,28,.18); }
.timeline__index { color: var(--clay); font: 1.2rem "Italiana", serif; }
.timeline h3 { margin: 0 0 .8rem; font: clamp(2rem, 4vw, 3rem) "Italiana", serif; }
.timeline p { max-width: 620px; margin: 0; color: #695c54; line-height: 1.8; }
.day__note { max-width: 920px; margin: 2rem auto 0; color: #85766d; font-size: .68rem; letter-spacing: .08em; }

.location { display: grid; grid-template-columns: 1.25fr .75fr; min-height: 100svh; background: #1f1815; }
.location__image { min-height: 70svh; background-position: center 50%; background-size: cover; filter: saturate(.72) sepia(.05); transform: scale(1.045); will-change: background-position; }
.location__card { align-self: center; margin-left: -7vw; padding: clamp(3rem, 7vw, 6.5rem); border-radius: 1.4rem 0 0 1.4rem; background: rgba(248,243,235,.97); box-shadow: 0 40px 110px rgba(0,0,0,.2); backdrop-filter: blur(12px); }
.location__card h2 { margin: 1rem 0 .35rem; font: clamp(3rem, 6vw, 5.6rem)/1 "Italiana", serif; }
.location__place { margin: 0 0 2rem !important; color: var(--clay) !important; font-size: .67rem !important; letter-spacing: .18em; text-transform: uppercase; }
.location__card > p { color: #695c54; line-height: 1.75; }
.location__parking { display: flex; align-items: center; gap: .7rem; margin: 2rem 0 !important; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }
.location__parking span { display: grid; place-items: center; width: 25px; height: 25px; border: 1px solid var(--olive); border-radius: 50%; color: var(--olive); font-size: .74rem; }
.text-link { display: inline-flex; align-items: center; gap: 1rem; min-height:44px; padding:.55rem 0; border-bottom: 1px solid currentColor; color: var(--ink); text-decoration: none; font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; }

.travel { padding:clamp(7rem,12vw,11rem) max(1.5rem,7vw); overflow:hidden; background:radial-gradient(circle at 10% 15%,rgba(201,142,120,.12),transparent 28%),var(--ivory); }
.travel__heading { max-width:850px; margin:0 auto 4rem; text-align:center; }
.travel__heading h2 { margin:1rem 0 1.5rem; font:clamp(3.2rem,8vw,7rem)/.95 "Italiana",serif; letter-spacing:-.045em; }
.travel__heading>p:last-child { max-width:720px; margin:0 auto; color:#6e625a; font-size:1.02rem; line-height:1.8; }
.travel__choices { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:1.2rem; max-width:1120px; margin:0 auto; }
.travel-card { container-type:inline-size; position:relative; display:flex; flex-direction:column; min-width:0; min-height:580px; padding:clamp(2rem,7cqi,4.5rem); overflow:hidden; border-radius:1.5rem; }
.travel-card--bus { color:#f9f1e7; background:linear-gradient(145deg,#46352c,#2a211c 72%); box-shadow:0 30px 100px rgba(43,33,28,.17); }
.travel-card--stay { border:1px solid rgba(43,33,28,.1); background:linear-gradient(145deg,#eee4d7,#e5d7c5); }
.travel-card__mark { position:absolute; right:-.06em; top:-.16em; color:rgba(255,255,255,.045); font:clamp(9rem,20vw,17rem)/1 "Italiana",serif; letter-spacing:-.12em; }
.travel-card__moon { position:absolute; right:-55px; top:-55px; width:230px; height:230px; border-radius:50%; background:rgba(169,98,76,.1); box-shadow:-35px 28px 0 rgba(255,255,255,.25); }
.travel-card__kicker { position:relative; margin:0 0 1rem; color:var(--clay-soft); font-size:.62rem; font-weight:500; letter-spacing:.17em; text-transform:uppercase; }
.travel-card h3 { position:relative; max-width:100%; margin:0 0 1.5rem; font:clamp(2.5rem,12cqi,5rem)/.95 "Italiana",serif; letter-spacing:-.035em; text-wrap:balance; }
.travel-card--stay h3 { font-size:clamp(2.25rem,10cqi,4rem); }
.travel-card>p:not(.travel-card__kicker) { position:relative; max-width:590px; margin:0; opacity:.75; line-height:1.8; }
.bus-schedule { position:relative; display:grid; gap:.8rem; margin:2.2rem 0 1.3rem; }
.bus-schedule div { display:grid; grid-template-columns:90px 1fr; gap:1rem; padding-top:.85rem; border-top:1px solid rgba(255,255,255,.17); }
.bus-schedule span { color:var(--clay-soft); font-size:.6rem; letter-spacing:.14em; text-transform:uppercase; }
.bus-schedule strong { font-size:.77rem; font-weight:400; letter-spacing:.04em; }
.travel-card small { max-width:530px; opacity:.52; line-height:1.6; }
.travel-card>a,.travel-card>button { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:52px; margin-top:auto; padding:1rem 1.2rem; border:1px solid currentColor; border-radius:999px; color:inherit; background:transparent; cursor:pointer; text-decoration:none; font:500 .65rem "DM Sans",sans-serif; letter-spacing:.12em; text-transform:uppercase; transition:background .35s ease,color .35s ease; }
.travel-card--bus>a:hover { color:var(--ink); background:var(--ivory); }
.travel-card--stay>button:hover { color:#fff; background:var(--olive); }

.stay { isolation: isolate; display: grid; grid-template-columns: 1fr 1fr; align-items: center; min-height: 88svh; padding: clamp(6rem, 11vw, 11rem); overflow: hidden; color: #f7f1e8; background: linear-gradient(135deg,#777b67 0%,#686d59 52%,#5e624f 100%); }
.stay__halo { position:absolute; z-index:-1; left:-12vw; top:-25%; width:min(68vw,900px); aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,rgba(235,207,169,.18),transparent 68%); filter:blur(4px); }
.stay__ornament { justify-self: center; display: flex; align-items: center; gap: 1.4rem; color: rgba(255,255,255,.74); font: clamp(3rem, 8vw, 7rem) "Italiana", serif; }
.stay__ornament i { width: 1px; height: 100px; background: currentColor; transform: rotate(28deg); }
.stay__content { max-width: 620px; }
.stay__content > p:not(.section-label) { margin: 2rem 0; font-size: 1.1rem; line-height: 1.75; }
.stay__content small { display: block; padding-top: 1.5rem; border-top: 1px solid rgba(255,255,255,.28); opacity: .78; line-height: 1.75; }
.soft-button { display:inline-flex; align-items:center; gap:2rem; margin-top:2rem; padding:1rem 1.25rem; border:1px solid rgba(255,255,255,.48); border-radius:999px; color:inherit; background:rgba(255,255,255,.06); backdrop-filter:blur(8px); cursor:pointer; font:500 .67rem "DM Sans",sans-serif; letter-spacing:.14em; text-transform:uppercase; transition:background .35s ease,color .35s ease,transform .35s ease; }
.soft-button:hover { color:var(--ink); background:var(--ivory); transform:translateY(-2px); }

.rsvp { padding: clamp(6rem, 12vw, 11rem) 1.5rem; background: var(--ivory); }
.rsvp__heading { max-width: 700px; margin: 0 auto 4rem; text-align: center; }
.rsvp__heading > p:last-child { color: #6e625a; line-height: 1.7; }
.whatsapp-rsvp { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:1rem 2.5rem; width:min(100%,820px); margin:0 auto 2rem; padding:clamp(1.5rem,4vw,2.2rem); border:1px solid rgba(66,105,74,.2); border-radius:1.3rem; background:linear-gradient(145deg,rgba(229,238,226,.7),rgba(255,255,255,.58)); box-shadow:0 16px 50px rgba(43,55,39,.06); }
.whatsapp-rsvp__label { margin:0 0 .55rem!important; color:#5f7656!important; font-size:.6rem!important; font-weight:500; letter-spacing:.15em; text-transform:uppercase; }
.whatsapp-rsvp h3 { margin:0 0 .6rem; font:clamp(1.8rem,3.5vw,2.5rem)/1.05 "Italiana",serif; }
.whatsapp-rsvp div>p:last-child { max-width:520px; margin:0; color:#665f59; font-size:.9rem; line-height:1.65; }
.whatsapp-rsvp>a { display:flex; align-items:center; gap:.75rem; min-height:56px; padding:.85rem 1.15rem; border-radius:999px; color:#fff; background:#4f7657; text-decoration:none; white-space:nowrap; font-size:.67rem; font-weight:500; letter-spacing:.1em; text-transform:uppercase; transition:background .3s ease,transform .3s ease; }
.whatsapp-rsvp>a:hover { background:#3d6247; transform:translateY(-2px); }
.whatsapp-rsvp__mark { display:grid; place-items:center; width:27px; height:27px; border:1px solid rgba(255,255,255,.5); border-radius:50%; font:600 .65rem "DM Sans",sans-serif; }
.whatsapp-rsvp>a i { font:1rem sans-serif; }
.whatsapp-rsvp>small { grid-column:1/-1; padding-top:.9rem; border-top:1px solid rgba(66,105,74,.13); color:#718071; font-size:.68rem; line-height:1.55; }
.rsvp-form { width: min(100%, 820px); margin: 0 auto; }
.response-choice { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 3rem; }
.response-choice input, .guest-options input, .check-line input { position: absolute; opacity: 0; pointer-events: none; }
.response-choice label span { display: grid; place-items: center; min-height: 82px; padding: 1rem; border: 1px solid rgba(43,33,28,.18); border-radius:1rem; cursor: pointer; text-align: center; font-size: .75rem; letter-spacing: .09em; text-transform: uppercase; transition: .4s ease; }
.response-choice input:checked + span { border-color: var(--clay); color: #fff; background: var(--clay); }
.rsvp-form__details { display: none; }
.rsvp-form.has-response .rsvp-form__details { display: block; animation: formIn .6s ease both; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; }
.field { display: grid; gap: .55rem; margin-bottom: 1.25rem; }
.field > span, .guest-fieldset legend { font-size: .63rem; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.field input, .field textarea { width: 100%; padding: .9rem 0; border: 0; border-bottom: 1px solid rgba(43,33,28,.3); outline: 0; color: var(--ink); background: transparent; font: 1rem "DM Sans", sans-serif; border-radius: 0; }
.field input:focus, .field textarea:focus { border-color: var(--clay); }
.guest-fieldset { display: none; margin: 2rem 0; padding: 0; border: 0; }
.rsvp-form.is-attending .guest-fieldset { display: block; }
.attending-extras { display:none; }
.rsvp-form.is-attending .attending-extras { display:block; }
.guest-fieldset legend { margin-bottom: 1.2rem; }
.guest-row { position: relative; margin-bottom: 1rem; padding: 1.6rem; border: 1px solid rgba(43,33,28,.12); border-radius:1rem; background: rgba(255,255,255,.36); }
.guest-options { display: flex; flex-wrap: wrap; gap: .7rem; margin: .25rem 0 1.2rem; }
.guest-options label span, .check-line span { display: inline-block; padding: .62rem .85rem; border: 1px solid rgba(43,33,28,.18); cursor: pointer; font-size: .67rem; letter-spacing: .06em; transition: .25s ease; }
.guest-options input:checked + span, .check-line input:checked + span { border-color: var(--olive); color: #fff; background: var(--olive); }
.remove-guest { position: absolute; top: .55rem; right: .55rem; border: 0; color: #76675f; background: transparent; cursor: pointer; font-size: 1.3rem; }
.add-guest { display: inline-flex; align-items: center; gap: .55rem; min-height:44px; padding: .7rem 0; border: 0; color: var(--clay); background: transparent; cursor: pointer; font: 500 .67rem "DM Sans",sans-serif; letter-spacing: .1em; text-transform: uppercase; }
.check-line { display: block; margin: 2rem 0; }
.stay-info { display: none; margin: -1rem 0 2rem; padding: 1.2rem 1.35rem; border-left: 2px solid var(--olive); border-radius:0 .8rem .8rem 0; color: #6d625a; background: rgba(125,128,104,.08); font-size: .8rem; line-height: 1.65; }
.stay-info.is-visible { display: block; }
.stay-info button { min-height:44px; padding:.5rem 0;border:0;border-bottom:1px solid currentColor;color:var(--olive);background:transparent;cursor:pointer;font:500 .65rem "DM Sans",sans-serif;letter-spacing:.1em;text-transform:uppercase; }
.bus-info { display:none; margin:-1rem 0 1rem; padding:1.2rem 1.35rem; border-left:2px solid var(--clay); border-radius:0 .8rem .8rem 0; color:#6d625a; background:rgba(169,98,76,.07); font-size:.8rem; line-height:1.65; }
.bus-info.is-visible { display:grid; grid-template-columns:1fr minmax(120px,180px); gap:1.5rem; align-items:end; }
.bus-info p { margin:0; }
.field--compact { margin:0; }
.field--compact input { padding:.5rem 0; }
.submit-button { display: flex; align-items: center; justify-content: space-between; width: 100%; margin-top: 2rem; padding: 1.3rem 1.5rem; border: 0; border-radius:999px; color: #fff; background: var(--ink); cursor: pointer; font: 500 .7rem "DM Sans", sans-serif; letter-spacing: .16em; text-transform: uppercase; transition: background .35s ease,transform .35s ease; }
.submit-button:hover { background: var(--clay); }
.submit-button:disabled { opacity: .55; cursor: wait; }
.submit-button i { font: 1.2rem sans-serif; }
.form-message { min-height: 1.4rem; margin: 1rem 0 0; text-align: center; font-size: .78rem; }
.form-message.is-success { color: #526146; }
.form-message.is-error { color: #a34436; }

.faq { display: grid; grid-template-columns: .8fr 1.2fr; gap: 7vw; padding: clamp(6rem, 12vw, 11rem) max(1.5rem, 8vw); background: #e9dece; }
.faq h2 { font-size: clamp(3rem, 6vw, 6rem); }
.faq__list details { border-top: 1px solid rgba(43,33,28,.18); }
.faq__list details:last-child { border-bottom: 1px solid rgba(43,33,28,.18); }
.faq summary { display: flex; justify-content: space-between; gap: 1rem; padding: 1.5rem 0; cursor: pointer; list-style: none; font: 1.2rem "Italiana", serif; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary span { transition: transform .3s ease; }
.faq details[open] summary span { transform: rotate(45deg); }
.faq details p { max-width: 620px; margin: -.4rem 0 1.7rem; color: #6e625a; line-height: 1.7; }

.footer { min-height: 72svh; display: grid; place-content: center; justify-items: center; padding: 5rem 1.5rem; color: #f7eee2; text-align: center; background: #241b17; }
.seal--footer { margin-bottom: 2rem; }
.footer h2 { margin: 0; font: clamp(2.8rem, 8vw, 7rem) "Italiana", serif; }
.footer h2 em { color: var(--gold); font-weight: 400; }
.footer p { margin: 1.5rem 0 2rem; opacity: .72; }
.footer small { letter-spacing: .25em; }
.sound-control { position: fixed; z-index: 70; right: 1.2rem; bottom: 1.2rem; display: flex; align-items: center; justify-content: center; gap: 2px; width: 44px; height: 44px; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; color: #fff; background: rgba(37,27,23,.7); backdrop-filter: blur(8px); cursor: pointer; }
.sound-control span { width: 2px; height: 5px; background: currentColor; animation: audioBar .8s ease-in-out infinite alternate; }
.sound-control span:nth-child(2) { animation-delay: -.3s; }.sound-control span:nth-child(3) { animation-delay: -.55s; }.sound-control span:nth-child(4) { animation-delay: -.15s; }
.sound-control.is-muted span { animation-play-state: paused; height: 2px; }
.not-found { min-height: 100svh; display: grid; place-content: center; justify-items: center; padding: 2rem; color: #f7eee2; text-align: center; background: #241b17; }
.not-found h1 { max-width: 700px; font: clamp(2.5rem, 7vw, 6rem) "Italiana",serif; }
.not-found p { opacity: .7; }

@keyframes formIn { from { opacity: 0; transform: translateY(15px); } }
@keyframes audioBar { to { height: 14px; } }
.stay-dialog { width:min(94vw,1080px); max-width:none; max-height:92svh; padding:0; overflow:auto; border:0; border-radius:1.6rem; color:var(--ink); background:#f7f0e6; box-shadow:0 40px 130px rgba(23,16,13,.34); }
.stay-dialog::backdrop { background:rgba(28,21,17,.72); backdrop-filter:blur(10px); }
.stay-dialog[open] { animation:dialogIn .7s var(--ease-film) both; }
.stay-dialog__inner { position:relative; padding:clamp(2rem,5vw,5rem); }
.stay-dialog__close { position:absolute; z-index:2; top:1.2rem; right:1.3rem; display:grid; place-items:center; width:42px; height:42px; border:1px solid rgba(43,33,28,.18); border-radius:50%; color:var(--ink); background:rgba(255,255,255,.35); cursor:pointer; font-size:1.4rem; }
.stay-dialog header { max-width:740px; margin-bottom:3rem; }
.stay-dialog header h2 { margin:.8rem 0 1rem; font:clamp(3rem,7vw,6rem)/.95 "Italiana",serif; letter-spacing:-.04em; }
.stay-dialog header>p:not(.section-label) { color:#6d6159; line-height:1.7; }
.stay-dialog header>span { display:inline-block; margin-top:.6rem; padding:.5rem .75rem; border-radius:999px; color:#806b5d; background:rgba(169,98,76,.09); font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; }
.hotel-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; }
.hotel-card { position:relative; display:flex; flex-direction:column; min-height:430px; padding:clamp(1.5rem,3vw,2.4rem); overflow:hidden; border:1px solid rgba(43,33,28,.12); border-radius:1.2rem; background:rgba(255,255,255,.46); box-shadow:0 18px 60px rgba(43,33,28,.06); }
.hotel-card::before { content:""; position:absolute; right:-15%; top:-22%; width:240px; aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,rgba(201,142,120,.18),transparent 68%); }
.hotel-card__top { position:relative; display:grid; grid-template-columns:1fr auto; align-items:end; margin-bottom:2.5rem; }
.hotel-card__top p { grid-row:1 / 3; align-self:start; margin:0; color:var(--clay); font-size:.62rem; letter-spacing:.15em; text-transform:uppercase; }
.hotel-card__top strong { font:2.4rem "Italiana",serif; }
.hotel-card__top small { color:#81736a; font-size:.6rem; text-align:right; text-transform:uppercase; }
.hotel-card h3 { position:relative; margin:0 0 1rem; font:clamp(2rem,4vw,3.2rem)/1 "Italiana",serif; }
.hotel-card__contact { margin:0 0 .8rem; color:var(--clay); font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; }
.hotel-card__note { max-width:400px; margin:0 0 1.5rem; color:#74675e; font-size:.82rem; line-height:1.65; }
.hotel-card__contacts { display:grid; gap:.55rem; margin-bottom:2rem; }
.hotel-card__contacts a { width:max-content; max-width:100%; color:var(--ink); font-size:.78rem; text-decoration:none; border-bottom:1px solid rgba(43,33,28,.25); overflow-wrap:anywhere; }
.hotel-card__cta { display:flex; justify-content:space-between; align-items:center; margin-top:auto; padding:1rem 1.1rem; border-radius:999px; color:#fff; background:var(--olive); text-decoration:none; font-size:.65rem; font-weight:500; letter-spacing:.12em; text-transform:uppercase; }
@keyframes dialogIn { from { opacity:0; transform:translateY(35px) scale(.97); } }

@keyframes grain { 0% { transform: translate(0,0) } 25% { transform: translate(2%,-3%) } 50% { transform: translate(-3%,2%) } 75% { transform: translate(3%,4%) } 100% { transform: translate(-2%,-2%) } }
@keyframes breathe { 50% { opacity: .58; transform: scale(1.08); } }
@keyframes lightSweep { 0%, 20% { transform: translateX(-70%); opacity: 0; } 50% { opacity: .35; } 80%, 100% { transform: translateX(65%); opacity: 0; } }
@keyframes scrollLine { 0% { transform: translateY(-100%); } 55%, 100% { transform: translateY(100%); } }

@media (max-width: 900px) {
    .location { grid-template-columns: 1fr; padding-bottom: 4rem; }
    .location__image { min-height: 70svh; }
    .location__card { width:calc(100% - 3rem); max-width:680px; margin:-15vh auto 0; border-radius:1.4rem; }
    .travel__choices { grid-template-columns:1fr; width:min(100%,720px); }
    .travel-card { min-height:auto; }
    .travel-card>a,.travel-card>button { margin-top:3rem; }
    .stay, .faq { grid-template-columns:1fr; }
    .stay { gap:4rem; }
    .faq { gap:4rem; }
}

@media (max-width: 600px) {
    .film-grain { opacity:.025; }
    .opening__guest { font-size: 1.75rem; }
    .opening__content { width:calc(100% - 2rem); }
    .opening__button { min-width:0; width:min(100%,280px); min-height:54px; }
    .topbar { top:max(1.1rem, env(safe-area-inset-top)); right:1.1rem; padding:.65rem .75rem; border-radius:999px; background:rgba(28,20,17,.2); backdrop-filter:blur(10px); }
    .hero h1 { font-size: clamp(3.7rem, 19vw, 6rem); }
    .hero__place { max-width: 270px; margin-inline: auto; line-height: 1.55; }
    .intro { min-height:92svh; padding-block:6rem; }
    .intro h2.intro__guest-name { font-size:clamp(3.1rem,15vw,5rem); line-height:.95; }
    .intro__announcement { margin-bottom:1.7rem; font-size:clamp(1.8rem,9vw,2.7rem); }
    .intro__body { font-size:.96rem; line-height:1.7; }
    .invited-note { margin-top:1.8rem; font-size:.6rem; line-height:1.7; }
    .memories { padding:5.5rem 1rem 7.5rem; }
    .memories__heading { margin-bottom:3.2rem; padding-inline:.4rem; }
    .memories__heading h2 { font-size:clamp(2.8rem,14vw,4rem); }
    .memory-frame { width:100%; }
    .memory-frame + .memory-frame { margin-top:2.8rem; }
    .memory-frame__image { aspect-ratio:4/5; border-radius:1rem; }
    .countdown { min-height:54svh; margin-top:-2rem; border-radius:2rem 2rem 0 0; }
    .countdown__content { padding-block:4rem; }
    .countdown__grid div { padding: 0 .35rem; }
    .location__image { min-height: 72svh; }
    .location__card { width:auto; margin:-18vh 1rem 0; padding:2.4rem 1.6rem; }
    .location__card h2 { font-size:clamp(2.75rem,14vw,4rem); }
    .travel { padding:5.5rem 1rem; }
    .travel__heading { margin-bottom:2.6rem; padding-inline:.4rem; }
    .travel__heading h2 { font-size:clamp(2.8rem,14vw,4rem); }
    .travel__heading>p:last-child { font-size:.96rem; line-height:1.72; }
    .travel__choices { gap:1rem; }
    .travel-card { min-height:auto; padding:2.2rem 1.35rem; border-radius:1.25rem; }
    .travel-card h3 { margin-bottom:1.2rem; font-size:clamp(2.45rem,12cqi,3.4rem); }
    .travel-card--stay h3 { font-size:clamp(2.2rem,10cqi,2.8rem); white-space:nowrap; }
    .travel-card>p:not(.travel-card__kicker) { font-size:.95rem; line-height:1.7; }
    .travel-card__mark { right:-.02em; top:-.08em; font-size:clamp(9rem,48vw,12rem); }
    .travel-card__moon { right:-58px; top:-70px; width:190px; height:190px; }
    .bus-schedule { margin-top:2rem; }
    .bus-schedule div { grid-template-columns:74px minmax(0,1fr); gap:.65rem; }
    .bus-schedule strong { line-height:1.45; }
    .travel-card>a,.travel-card>button { margin-top:2.4rem; padding-inline:1rem; line-height:1.4; text-align:left; }
    .bus-info.is-visible { grid-template-columns:1fr; gap:.5rem; }
    .stay { min-height:auto; gap:3rem; padding:5.5rem 1.25rem; }
    .stay__ornament { font-size: 3.4rem; }
    .stay__ornament i { height: 65px; }
    .day, .rsvp, .faq { padding-block:5.5rem; }
    .day h2, .stay h2, .rsvp h2, .faq h2 { font-size:clamp(2.7rem,13vw,3.7rem); }
    .field-grid, .response-choice { grid-template-columns: 1fr; }
    .whatsapp-rsvp { grid-template-columns:1fr; gap:1.2rem; padding:1.35rem; }
    .whatsapp-rsvp>a { justify-content:center; width:100%; white-space:normal; text-align:center; }
    .whatsapp-rsvp>small { grid-column:auto; }
    .response-choice { gap: .65rem; }
    .response-choice label span { min-height: 64px; }
    .guest-options label span, .check-line span { min-height:44px; padding:.75rem .85rem; }
    .guest-row { padding: 1.5rem 1rem 1rem; }
    .faq { gap:3rem; padding-inline:1.25rem; }
    .faq summary { min-height:58px; align-items:center; padding:1.2rem 0; }
    .timeline__item { grid-template-columns: 45px 1fr; }
    .hotel-grid { grid-template-columns:1fr; }
    .hotel-card { min-height:auto; padding:1.4rem; }
    .hotel-card__cta { min-height:50px; }
    .hotel-card__contacts { gap:.15rem; }
    .hotel-card__contacts a { display:flex; align-items:center; min-height:44px; }
    .stay-dialog { width:calc(100vw - .75rem); max-height:calc(100dvh - .75rem); margin:auto; border-radius:1rem; }
    .stay-dialog__inner { padding:4rem .9rem 1rem; }
    .stay-dialog header { margin-bottom:2rem; }
    .stay-dialog header h2 { font-size:clamp(2.55rem,13vw,3.6rem); }
    .stay-dialog__close { position:fixed; top:max(.7rem, env(safe-area-inset-top)); right:.75rem; width:48px; height:48px; background:rgba(247,240,230,.9); backdrop-filter:blur(8px); }
    .sound-control { right:max(.9rem, env(safe-area-inset-right)); bottom:max(.9rem, env(safe-area-inset-bottom)); }
}

@media (max-width: 360px) {
    .hero h1 { font-size:3.55rem; }
    .travel-card--stay h3 { font-size:1.9rem; }
    .bus-schedule div { grid-template-columns:1fr; }
    .bus-schedule span { margin-bottom:-.25rem; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}
