:root{--ivory:#f7f3eb;--sand:#efe8dc;--paper:#fbf8f2;--sage:#9caf88;--olive:#6b7f5a;--eucalyptus:#7a9a86;--forest:#3f5346;--ink:#2c3329;--ink-soft:#4a5346;--muted:#6f766a;--gold:#c4a574;--gold-deep:#a6864a;--beige:#e8dfd0;--champagne:#d4c4a8;--line:color-mix(in srgb, var(--gold) 55%, var(--beige));--shadow:0 18px 50px #2c33291f;--radius:18px;--font-script:"Great Vibes", cursive;--font-serif:"Fraunces", "Times New Roman", serif;--font-sans:"Outfit", system-ui, sans-serif;--card:440px;--stage:var(--card);--pad:1.35rem}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}html,body{background:var(--sand);min-height:100%;color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.55}html:has([data-overlay]:not(.is-gone)),html:has([data-overlay]:not(.is-gone)) body{overscroll-behavior:none;height:100dvh;overflow:hidden}html:has([data-overlay]:not(.is-gone)) body{width:100%;padding:0;position:fixed;inset:0}body{background-image:radial-gradient(ellipse at top, #f7f3eb 0%, var(--sand) 55%, #e4dccb 100%)}body:after{content:"";z-index:70;pointer-events:none;opacity:.05;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px;position:fixed;inset:0}img{max-width:100%;height:auto;display:block}a{color:var(--forest)}button,input,select,textarea{font:inherit;color:inherit}.skip{z-index:80;background:var(--forest);color:var(--ivory);border-radius:999px;padding:.6rem 1rem;text-decoration:none;position:absolute;top:-4rem;left:.75rem}.skip:focus{top:.75rem}.stage{width:min(100%, var(--stage));background:var(--ivory);min-height:100dvh;box-shadow:var(--shadow);margin:0 auto;position:relative;overflow-x:hidden}.mute{top:.9rem;right:max(.9rem, calc(50% - (var(--stage) / 2) + .9rem));z-index:40;border:1px solid var(--gold);background:color-mix(in srgb, var(--ivory) 88%, transparent);backdrop-filter:blur(8px);width:48px;height:48px;color:var(--forest);cursor:pointer;border-radius:50%;place-items:center;display:grid;position:fixed;box-shadow:0 6px 18px #2c33291f}.mute:disabled{opacity:.45;cursor:not-allowed}.mute svg{grid-area:1/1;width:20px;height:20px}.mute [data-icon-off],.mute.is-muted [data-icon-on]{display:none}.mute.is-muted [data-icon-off]{display:block}.audio-hint{top:3.7rem;right:max(.9rem, calc(50% - (var(--stage) / 2) + .9rem));z-index:40;background:var(--ivory);border:1px solid var(--line);max-width:11rem;color:var(--muted);text-align:right;border-radius:8px;margin:0;padding:.35rem .55rem;font-size:.72rem;position:fixed}.overlay{z-index:50;background:linear-gradient(180deg, #f7f3ebf7, #efe8dcfa), var(--sand);overscroll-behavior:none;touch-action:none;place-items:center;padding:1.5rem;display:grid;position:fixed;inset:0;overflow:hidden}.envelope{z-index:0;pointer-events:none;perspective:1200px;position:absolute;inset:0}.envelope-flap-wrap{width:min(100%, var(--card));transform-origin:50% 0;height:36%;transform-style:preserve-3d;margin:0 auto;position:absolute;top:0;left:0;right:0}.envelope-lining,.envelope-flap{clip-path:polygon(0 0,100% 0,50% 100%);position:absolute;inset:0}.envelope-lining{opacity:.42;background:linear-gradient(#c4a574,#a6864a);transform:scale(1.015)}.envelope-flap{box-shadow:inset 0 -1px 0 color-mix(in srgb, var(--gold) 55%, transparent);background:linear-gradient(#fbf8f2 0%,#efe8dc 62%,#e6dcc8 100%)}.envelope-pocket{height:28%;width:min(100%, var(--card));background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--sand) 80%, #d9cfbc));border-top:1px solid color-mix(in srgb, var(--gold) 35%, transparent);margin:0 auto;position:absolute;bottom:0;left:0;right:0}.overlay .leaves{z-index:1}.overlay-card{text-align:center;z-index:2;width:min(100%,22rem);position:relative}html:has([data-overlay]:not(.is-gone)) .mute,html:has([data-overlay]:not(.is-gone)) .audio-hint{opacity:0;pointer-events:none}@media (prefers-reduced-motion:no-preference){[data-overlay]:not(.is-ready):not(.is-gone) .overlay-card>*{opacity:0}}.overlay.is-gone{opacity:0;visibility:hidden;pointer-events:none}.overlay-kicker,.kicker{font-family:var(--font-sans);letter-spacing:.28em;text-transform:uppercase;color:var(--olive);margin:0 0 .4rem;font-size:.72rem}.script{font-family:var(--font-script);letter-spacing:.01em;font-weight:400;line-height:1.05}.script .amp{color:var(--gold-deep);padding:0 .08em;font-size:.72em;font-weight:400}.overlay .script{color:var(--ink);margin:.15rem 0 .4rem;font-size:clamp(3.1rem,14vw,4.1rem)}.gold-line{transform-origin:50%;background:linear-gradient(90deg, transparent, var(--gold), var(--gold-deep), var(--gold), transparent);width:4.5rem;height:1px;margin:.7rem auto}.overlay-copy{font-family:var(--font-serif);color:var(--ink-soft);margin:0;font-size:1.2rem;font-style:italic}.overlay-welcome{font-family:var(--font-script);color:var(--olive);margin:.85rem 0 0;font-size:1.85rem}.overlay-actions{touch-action:manipulation;gap:.7rem;margin-top:1.6rem;display:grid}.btn{border:1px solid var(--gold);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:.75rem 1.15rem;text-decoration:none;transition:background .2s,color .2s,border-color .2s,transform .2s;display:inline-flex}.btn:hover{border-color:var(--gold-deep);transform:translateY(-1px)}.btn:focus-visible{outline:3px solid var(--gold-deep);outline-offset:3px}.btn-primary{background:var(--forest);color:var(--ivory);border-color:var(--forest)}.btn-primary:hover{color:var(--ivory);background:#32443a}.btn-ghost{color:var(--olive);background:0 0}.btn-row{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.hero{min-height:100dvh;color:var(--ivory);align-items:end;display:grid;position:relative;overflow:hidden}.hero picture,.hero-photo{width:100%;height:100%;position:absolute;inset:0}.hero-photo{object-fit:cover;object-position:center 30%}.hero-shade{background:linear-gradient(#3f534647 0%,#2c33292e 38%,#2c3329b8 100%),linear-gradient(#0000 60%,#f7f3eb1f);position:absolute;inset:0}.hero-inner{z-index:1;padding:2.2rem var(--pad) 2.4rem;text-align:center;position:relative}.hero .kicker{color:var(--champagne)}.hero .script{text-shadow:0 10px 28px #181c1673;margin:.15rem 0 .35rem;font-size:clamp(3.4rem,16vw,4.6rem)}.hero-phrase,.hero-date{margin:.2rem 0}.hero-phrase{font-family:var(--font-serif);color:#f3eee4;font-size:1.2rem;font-style:italic}.hero-date{letter-spacing:.08em;text-transform:uppercase;color:var(--champagne);font-size:.95rem}.countdown{grid-template-columns:repeat(3,1fr);gap:.45rem;margin:1.15rem 0 1.3rem;display:grid}.countdown-item{background:color-mix(in srgb, var(--ivory) 14%, transparent);border:1px solid color-mix(in srgb, var(--gold) 50%, transparent);backdrop-filter:blur(6px);border-radius:12px;padding:.55rem .2rem .45rem}.countdown-value{font-family:var(--font-serif);font-size:1.7rem;line-height:1;display:block}.countdown-label{letter-spacing:.12em;text-transform:uppercase;color:var(--beige);font-size:.68rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.section{padding:2.4rem var(--pad);position:relative}.section-title{font-family:var(--font-serif);text-align:center;color:var(--ink);margin:.35rem 0 .7rem;font-size:2.05rem;font-weight:500}.section-title.is-left{text-align:left;margin-top:0}.lede{text-align:center;color:var(--ink-soft);max-width:34ch;margin:0 auto 1.3rem}.lede.tight{margin-bottom:.6rem}.divider{color:var(--olive);justify-content:center;align-items:center;gap:.55rem;margin:.2rem 0 .4rem;display:flex}.divider svg{width:132px;height:28px}.story-list,.practical-list,.timeline{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.story-card,.practical-card,.place-card,.gift-box,.dress-card{background:var(--paper);border:1px solid color-mix(in srgb, var(--gold) 28%, var(--beige));border-radius:var(--radius);padding:1.05rem 1rem 1.1rem}@media (hover:hover){.story-card,.practical-card,.place-card,.gift-box,.dress-card{transition:transform .4s,box-shadow .4s,border-color .4s}.story-card:hover,.practical-card:hover,.place-card:hover,.gift-box:hover,.dress-card:hover{border-color:color-mix(in srgb, var(--gold) 55%, var(--beige));transform:translateY(-3px);box-shadow:0 14px 32px #2c332914}}.story-card h3,.practical-card h3,.place-card h3{font-family:var(--font-serif);margin:0 0 .3rem;font-size:1.45rem;font-weight:500}.story-card p,.practical-card p,.place-card p,.dress-card p{color:var(--ink-soft);margin:0}.timeline-item{grid-template-columns:3.2rem 1fr;align-items:center;gap:.75rem;padding:.35rem .15rem;display:grid}.timeline-icon{border:1px solid var(--gold);background:color-mix(in srgb, var(--sage) 22%, var(--ivory));width:48px;height:48px;color:var(--forest);border-radius:50%;place-items:center;display:grid}.timeline-icon svg{width:22px;height:22px}.timeline-time{font-family:var(--font-serif);margin:0;font-size:1.35rem}.timeline-label{color:var(--muted);margin:0;font-size:.92rem}.meta{gap:.15rem;margin:.85rem 0 1rem;font-size:.95rem;display:grid}.meta strong{font-weight:600;font-family:var(--font-serif);font-size:1.15rem}.swatches{grid-template-columns:repeat(5,1fr);gap:.45rem;margin:1rem 0 .85rem;padding:0;list-style:none;display:grid}.swatch{color:var(--muted);text-align:center;justify-items:center;gap:.3rem;font-size:.68rem;display:grid}.swatch i{aspect-ratio:1;border:1px solid color-mix(in srgb, var(--ink) 10%, transparent);width:100%;box-shadow:inset 0 0 0 3px var(--ivory);border-radius:50%}.note{color:var(--olive);margin:0;font-size:.9rem;font-style:italic}.gallery-track{scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 -var(--pad);padding:.2rem var(--pad) .6rem;gap:.7rem;display:flex;overflow-x:auto}.gallery-track::-webkit-scrollbar{display:none}.slide{scroll-snap-align:center;border:1px solid var(--line);border-radius:16px;flex:0 0 86%;overflow:hidden}.slide img{aspect-ratio:4/3;object-fit:cover;width:100%}.dots{justify-content:center;gap:.4rem;margin:.4rem 0 0;display:flex}.dot{background:var(--beige);cursor:pointer;border:0;border-radius:50%;width:8px;height:8px;padding:0}.dot.is-on{background:var(--olive);transform:scale(1.15)}.gift-details{margin-top:1rem}.gift-details summary{cursor:pointer;width:100%}.gift-details summary::-webkit-details-marker,.gift-details summary::marker{content:"";display:none}.gift-details [data-gift-open],.gift-details[open] [data-gift-closed]{display:none}.gift-details[open] [data-gift-open]{display:inline}.copy-row{gap:.55rem;margin-top:.85rem;display:grid}.copy-item{background:var(--ivory);border:1px solid var(--line);border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:.5rem;padding:.55rem .55rem .55rem .8rem;display:grid}.copy-item code{font-family:var(--font-sans);word-break:break-all;font-size:.88rem}.copy-item button{border:1px solid var(--gold);background:var(--sand);cursor:pointer;border-radius:999px;min-width:72px;min-height:48px}.holder{color:var(--muted);margin:.8rem 0 0;font-size:.9rem}.form{gap:.9rem;display:grid}.rsvp-card{background:var(--paper);border:1px solid color-mix(in srgb, var(--gold) 28%, var(--beige));border-radius:var(--radius);padding:1.15rem 1rem 1.2rem}.rsvp-progress{text-align:center;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);grid-template-columns:1fr 1fr 1fr;gap:.3rem;margin:0 0 1.25rem;padding:0;font-size:.64rem;list-style:none;display:grid}.rsvp-progress li span{border:1px solid var(--line);letter-spacing:0;border-radius:50%;place-items:center;width:22px;height:22px;margin:0 auto .35rem;font-size:.7rem;display:grid}.rsvp-progress li.is-on{color:var(--forest)}.rsvp-progress li.is-on span{border-color:var(--gold-deep);background:var(--forest);color:var(--ivory)}.rsvp-progress li.is-done span{border-color:var(--gold);background:var(--sage);color:var(--ivory)}.rsvp-pane{gap:.9rem;display:grid}.rsvp-pane[hidden],.form[hidden]{display:none!important}label span,.legend{color:var(--forest);margin-bottom:.3rem;font-size:.82rem;display:block}input[type=text],input[type=number],select,textarea{border:1px solid var(--line);background:var(--paper);border-radius:12px;width:100%;min-height:48px;padding:.7rem .85rem}textarea{resize:vertical;min-height:96px}.choices{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.choice{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:12px;place-items:center;min-height:48px;display:grid}.choice:has(input:checked){border-color:var(--gold-deep);background:color-mix(in srgb, var(--sage) 18%, var(--ivory))}.choice input{opacity:0;pointer-events:none;position:absolute}.hp{width:1px;height:1px;position:absolute;top:auto;left:-10000px;overflow:hidden}.form-status{min-height:1.2em;margin:.2rem 0 0;font-size:.9rem}.form-status.is-error{color:#8a3a32}.thanks{text-align:center}.thanks-mono{width:72px;height:72px;margin:0 auto .35rem}.thanks-script{font-family:var(--font-script);color:var(--ink);margin:.15rem 0 .55rem;font-size:clamp(2rem,8vw,2.55rem);line-height:1.12}.thanks-note{font-family:var(--font-serif);color:var(--ink-soft);margin:0 0 1rem;font-size:1.15rem}.footer{padding:2.2rem var(--pad) 3rem;text-align:center}.hashtag{font-family:var(--font-serif);color:var(--olive);margin:0 0 .5rem;font-size:1.4rem}.closing{font-family:var(--font-script);margin:.3rem 0 1.1rem;font-size:2rem;line-height:1.15}.brand{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.75rem}.brand a{color:inherit;text-decoration:none}.monogram{width:88px;height:88px;margin:0 auto .7rem}.leaves{pointer-events:none;position:absolute;inset:0;overflow:hidden}.leaf{background:var(--sage);opacity:.28;border-radius:80% 0;width:18px;height:28px;animation:16s linear infinite drift;position:absolute}.leaf:nth-child(2){background:var(--olive);animation-duration:19s;animation-delay:-4s;left:70%}.leaf:nth-child(3){background:var(--eucalyptus);animation-duration:22s;animation-delay:-8s;left:40%}.leaf:first-child{left:12%}@keyframes drift{0%{transform:translateY(-20px)rotate(0)}to{transform:translate(24px,110vh)rotate(120deg)}}.is-hidden{display:none}@media (width>=900px){:root{--stage:100%;--paper-wide:min(calc(100% - 3rem), 68rem);--pad:1.6rem}.stage{width:100%;box-shadow:none;background:0 0;overflow-x:clip}.sheet{width:var(--paper-wide);background:var(--ivory);margin-inline:auto;overflow-x:hidden;box-shadow:0 24px 64px #2c332929}main>.sheet:first-of-type{border-radius:0 0 var(--radius) var(--radius)}main>.sheet:last-of-type{border-radius:var(--radius);margin-bottom:2.5rem}.mute,.audio-hint{right:max(.9rem, calc(env(safe-area-inset-right,0px) + .9rem))}.invite-column{width:min(100%, var(--card));margin-inline:auto}.hero{justify-items:center;width:100%;min-height:100dvh}.hero-inner{width:min(100%,38rem);padding:3rem 1.5rem 3.5rem}.hero .script{font-size:clamp(4.2rem,6vw,6rem)}.hero-phrase{font-size:1.35rem}.countdown{gap:.6rem;max-width:22rem;margin-inline:auto}.countdown-value{font-size:1.95rem}.places-row{padding:2.4rem var(--pad) .2rem;grid-template-columns:1fr 1fr;align-items:stretch;gap:1.15rem;display:grid}.places-row .section{padding:0}.places-row .place-card{flex-direction:column;height:100%;display:flex}.places-row .place-card .btn{align-self:start;margin-top:auto}#fotos{width:min(100% - 2.5rem,86rem);margin-inline:auto;padding:2.8rem 0 3.4rem}#fotos .lede{margin-bottom:1.7rem}.gallery-track{scroll-snap-type:none;grid-template-rows:repeat(2,minmax(13.5rem,1fr));grid-template-columns:1.2fr 1fr 1fr;gap:1.05rem;min-height:38rem;margin:0;padding:0;display:grid;overflow:visible}.slide{border-radius:var(--radius);flex:none;min-width:0;height:100%;min-height:0}.slide picture{width:100%;height:100%;display:block}.slide:first-child{grid-area:1/1/3}.slide img{aspect-ratio:auto;object-fit:cover;width:100%;height:100%}.dots{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.leaf,.overlay,.btn{transition:none!important;animation:none!important}.leaf,.envelope-flap-wrap,.envelope-pocket{display:none}.story-card:hover,.practical-card:hover,.place-card:hover,.gift-box:hover,.dress-card:hover{box-shadow:none;transform:none}}
