:root{--forest:#092d28;--deep:#06221f;--near-black:#061914;--cream:#f7f1e7;--ivory:#fff9ee;--sand:#d5c1a7;--gold:#c6a678;--muted-gold:#d7bd96;--blush:#dfb0a3;--serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;--sans:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--forest);font-family:var(--sans);-webkit-font-smoothing:antialiased}
body.is-closed{overflow:hidden}
button,a{-webkit-tap-highlight-color:transparent}
button{font:inherit;cursor:pointer}
a{text-decoration:none;color:inherit}
button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}
img{max-width:100%;display:block}
.grain{pointer-events:none;position:fixed;inset:-50%;z-index:100;opacity:.09;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.81' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E");mix-blend-mode:multiply}
.eyebrow{margin:0;font-size:10px;line-height:1.6;font-weight:700;letter-spacing:.26em;text-transform:uppercase}
.invitation-gate{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--cream);background:var(--deep);transition:opacity 1.15s ease,visibility 1.15s ease,transform 1.15s ease}
.invitation-gate.gate-leaving{opacity:0;visibility:hidden;transform:scale(1.035)}
.gate-ambient{position:absolute;inset:0;background:radial-gradient(ellipse at 45% 12%,rgba(88,120,96,.23),transparent 38%),radial-gradient(ellipse at 50% 95%,rgba(206,140,104,.12),transparent 35%),linear-gradient(125deg,#071c1c,#0b3932 54%,#092620);animation:gate-breathe 9s ease-in-out infinite alternate}
.gate-ambient:before,.gate-ambient:after{content:'';position:absolute;inset:22px;border:1px solid rgba(221,183,132,.22);pointer-events:none}.gate-ambient:after{inset:27px;border-color:rgba(221,183,132,.08)}
.gate-floral{position:absolute;bottom:-24px;width:min(29vw,190px);height:auto;fill:none;stroke:#bcae80;stroke-width:1.1;opacity:.35}
.gate-floral-left{left:-35px}.gate-floral-right{right:-35px;transform:scaleX(-1)}
.gate-inner{position:relative;z-index:2;max-width:490px;width:100%;padding:28px;text-align:center;display:flex;flex-direction:column;align-items:center;min-height:min(760px,100svh);justify-content:center}
.gate-eyebrow{color:var(--muted-gold);font-size:9px;letter-spacing:.31em}
.gate-monogram{font-family:var(--serif);font-size:56px;line-height:1;margin:33px 0 26px;letter-spacing:-.09em}.gate-monogram span{font-style:italic;font-size:34px;color:var(--blush);padding:0 .16em}
.small-ornament{color:var(--muted-gold);font-size:26px;margin-bottom:13px}
.gate-heading{margin:0;font:400 clamp(58px,13vw,94px)/.93 var(--serif);letter-spacing:-.055em}.gate-heading em{font-weight:400;color:#e5b5a8}
.gate-description{max-width:275px;margin:23px auto 30px;color:rgba(248,235,213,.75);font-size:12px;line-height:1.9;font-weight:400}
.gate-actions{display:flex;flex-direction:column;align-items:center;gap:19px}
.button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:13px;padding:17px 25px;min-height:52px;font-size:10px;letter-spacing:.18em;font-weight:700;text-transform:uppercase;transition:transform .25s,background-color .25s,color .25s}
.button:hover{transform:translateY(-2px)}.button svg,.sound-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.button-light{color:var(--deep);background:var(--cream);min-width:215px}.button-light:hover{background:#f5dfc7}
.text-button{border:0;background:none;color:rgba(249,236,210,.67);padding:6px;font-size:11px;letter-spacing:.07em;text-decoration:underline;text-underline-offset:5px;text-decoration-color:rgba(232,204,167,.5)}
.text-button:hover{color:white}
.gate-bottom{position:absolute;bottom:40px;font-size:9px;letter-spacing:.3em;color:var(--muted-gold)}.gate-bottom span{padding:0 8px;font-size:7px}
.hero{height:100svh;min-height:640px;position:relative;overflow:hidden;color:#fffbf4;isolation:isolate;background:#30534c}
.hero-art{position:absolute;inset:-3%;background-image:linear-gradient(180deg,rgba(4,25,26,.16),rgba(11,41,36,.02) 40%,rgba(7,26,28,.4)),url('assets/hero.webp');background-position:center center;background-size:cover;filter:saturate(.91);transform:scale(1.08)}
.experience-started .hero-art{animation:hero-drift 23s cubic-bezier(.1,.4,.3,1) both}
.hero-vignette{position:absolute;inset:0;background:linear-gradient(180deg,rgba(3,23,21,.39) 0,rgba(12,47,42,.08) 23%,rgba(20,30,27,.16) 48%,rgba(4,20,21,.57) 100%),radial-gradient(ellipse at center,rgba(15,39,39,.11) 0,rgba(3,29,26,.25) 90%)}
.topbar{position:absolute;top:0;left:0;right:0;z-index:8;display:flex;align-items:center;justify-content:space-between;padding:calc(23px + env(safe-area-inset-top)) max(25px,5vw) 12px}
.logo{display:flex;align-items:center;font:400 29px/1 var(--serif);letter-spacing:-.13em;color:#fff9eb}.logo>span:first-child{color:#f0d2bd;font-style:italic;font-size:21px;margin:0 .15em}.logo-flower{font-family:var(--sans);font-size:8px;color:#e8b9a0;align-self:flex-start;margin:1px 0 0 10px}
.top-actions{display:flex;align-items:center;gap:18px}.lang-switch{display:flex;gap:7px;align-items:center;color:rgba(255,255,255,.56);font-size:10px}.lang-button{padding:7px 2px;border:0;background:none;color:rgba(255,255,255,.54);font-size:10px;font-weight:700;letter-spacing:.05em}.lang-button.active{color:#fff;border-bottom:1px solid #fff}
.sound-toggle{height:32px;width:32px;border:1px solid rgba(255,249,235,.62);border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;background:rgba(5,38,33,.1);color:#fff}.sound-toggle svg{width:14px;height:14px}.sound-indicator{position:absolute;width:15px;height:1px;background:#f4d3c8;transform:rotate(-42deg);transition:opacity .2s}.sound-toggle.is-on .sound-indicator{opacity:0}
.hero-content{position:absolute;z-index:3;left:0;right:0;top:46.5%;transform:translateY(-50%);padding:0 20px;text-align:center;text-shadow:0 1px 15px rgba(4,29,25,.22)}
.hero-kicker{font-size:9px;letter-spacing:.36em;color:#fff1df}.hero-mini-flower{display:block;margin-top:16px;color:#f7ded1;font-size:24px;text-shadow:none}
.hero-title{margin:12px 0 9px;font:400 clamp(66px,13.5vw,132px)/.77 var(--serif);letter-spacing:-.045em;display:flex;flex-direction:column;align-items:center;gap:0}.hero-title span{display:block}.hero-title em{font-size:.57em;line-height:1.16;color:#ffe0cd;font-weight:400}
.hero-rule{display:flex;align-items:center;justify-content:center;gap:10px;margin:27px auto 17px;color:#ffe8ce;font-size:8px}.hero-rule span{height:1px;width:63px;background:rgba(255,249,235,.65)}
.hero-invite{max-width:280px;margin:0 auto;font:italic 400 19px/1.35 var(--serif)}
.hero-date{display:flex;flex-direction:column;align-items:center;gap:9px;margin-top:36px}.hero-date>span{font-size:11px;letter-spacing:.38em;font-weight:700}.hero-date strong{font-size:10px;letter-spacing:.22em;font-weight:500}.hero-date small{margin-top:3px;font-size:9px;letter-spacing:.12em;opacity:.93}
.scroll-prompt{position:absolute;bottom:calc(28px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:5;display:flex;align-items:center;flex-direction:column;gap:10px;white-space:nowrap}.scroll-prompt span{font-size:8px;font-weight:700;letter-spacing:.22em}.scroll-prompt svg{width:11px;height:22px;stroke:#f9e9db;fill:none;stroke-width:1.3;animation:scroll-bounce 2.7s ease-in-out infinite}
.hero-edge-label{position:absolute;right:24px;bottom:33px;transform:rotate(-90deg) translateX(100%);transform-origin:right bottom;font-size:8px;letter-spacing:.14em;opacity:.7}
.hero-stars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff7e6;box-shadow:0 0 8px #fff;animation:twinkle 3.5s infinite alternate}.hero-stars i:nth-child(1){left:15%;top:21%;animation-delay:.2s}.hero-stars i:nth-child(2){left:72%;top:16%;animation-delay:1.5s}.hero-stars i:nth-child(3){left:85%;top:28%;animation-delay:2s}.hero-stars i:nth-child(4){left:27%;top:13%;animation-delay:.8s}.hero-stars i:nth-child(5){left:60%;top:35%;animation-delay:1.1s}.hero-stars i:nth-child(6){left:93%;top:45%;animation-delay:.4s}.hero-stars i:nth-child(7){left:9%;top:40%;animation-delay:2.7s}
.reveal-1,.reveal-2,.reveal-3,.reveal-4{opacity:0;transform:translateY(19px)}.experience-started .reveal-1{animation:reveal-in 1.2s 1s both}.experience-started .reveal-2{animation:reveal-in 1.45s 1.55s both}.experience-started .reveal-3{animation:reveal-in 1.3s 2.25s both}.experience-started .reveal-4{animation:reveal-in 1.3s 2.9s both}
.story{text-align:center;padding:118px 25px 105px;background:#f7f1e6;position:relative;overflow:hidden}.story-deco{position:absolute;left:-48px;top:20px;font-family:var(--serif);font-size:200px;line-height:1;color:rgba(163,131,97,.07);pointer-events:none}.dark-eyebrow{color:#a87961;font-size:9px}.story-title{margin:23px auto 24px;font:400 clamp(43px,9.5vw,69px)/1.05 var(--serif);letter-spacing:-.028em;max-width:680px}.story-title em{color:#b4726d;font-weight:400}.story-description{margin:0 auto;max-width:410px;color:#587268;font-size:12px;line-height:2}.story-bottom-mark{margin-top:39px;color:#c39a81;font-size:11px}.story-bottom-mark span{padding:0 22px;color:#a88d72;font-size:9px;letter-spacing:.24em}
.weekend{background:#f1e8d9;padding:90px 22px 116px}.section-heading{text-align:center;max-width:720px;margin:0 auto 58px}.section-heading .eyebrow{color:#af826b;font-size:9px}.section-heading h2{font:400 clamp(49px,11vw,76px)/1 var(--serif);letter-spacing:-.035em;margin:15px 0 11px}.section-heading h2 em{font-weight:400;color:#a96d69}.section-heading>p:last-child{font-size:12px;line-height:1.8;color:#6d8075;margin:0}
.event-card{max-width:950px;margin:0 auto 24px;display:grid;grid-template-columns:1fr;background:var(--cream);overflow:hidden;box-shadow:0 7px 34px rgba(35,46,30,.055)}.event-media{height:295px;position:relative;overflow:hidden;background:#b1b5a4}.event-media img{height:100%;width:100%;object-fit:cover;transition:transform 1s cubic-bezier(.18,.66,.2,1)}.event-card:hover .event-media img{transform:scale(1.04)}.event-index{position:absolute;top:20px;left:21px;background:rgba(4,36,31,.67);color:#f9edda;padding:9px 10px;font-size:9px;letter-spacing:.16em;backdrop-filter:blur(9px)}
.event-copy{min-height:330px;display:flex;align-items:center;flex-direction:column;justify-content:center;text-align:center;padding:35px 25px 38px}.event-day{margin:0;font-size:9px;font-weight:700;letter-spacing:.21em;color:#aa866b}.event-tiny-flower{font-size:17px;color:#cf9a87;margin-top:15px}.event-copy h3{font:400 clamp(43px,9vw,58px)/.94 var(--serif);margin:13px 0 19px;letter-spacing:-.032em}.event-copy h3 em{font-weight:400;color:#b47670}.event-location{font-size:9px;letter-spacing:.18em;font-weight:700;color:#426960;margin:0}.event-description{max-width:315px;color:#6c7f74;font-size:12px;line-height:1.85;margin:20px 0 15px}.event-detail{font:italic 16px var(--serif);color:#b49b7f;margin:0}
.closing{position:relative;min-height:690px;background:radial-gradient(ellipse at 50% 0%,#164f42,#0b342c 54%,#07251f);color:#f6eee0;overflow:hidden;text-align:center;padding:105px 28px 0;display:flex;flex-direction:column;align-items:center}.closing-shape{position:absolute;width:640px;height:640px;border-radius:50%;border:1px solid rgba(213,183,140,.085);pointer-events:none}.closing-shape-one{top:-420px;left:calc(50% - 320px)}.closing-shape-two{bottom:-520px;left:calc(50% - 320px)}.closing-flower{color:#dfaf97;font-size:31px;margin-bottom:18px}.closing>.eyebrow{font-size:9px;color:#cbb894}.closing h2{font:400 clamp(48px,10vw,79px)/.99 var(--serif);letter-spacing:-.035em;margin:23px 0 24px}.closing h2 em{color:#e7b6a5;font-weight:400}.closing-copy{font-size:12px;line-height:1.95;color:#c6d1be;max-width:400px;margin:0 auto}.provisional-note{font-size:9px;letter-spacing:.13em;color:#dfb8a9;margin:26px 0 0}.closing-actions{display:flex;flex-direction:column;align-items:center;gap:14px;margin:33px 0 41px}.button-outline{border:1px solid #d5b797;color:#f9e9db;background:transparent;min-width:225px}.button-outline:hover{background:rgba(255,255,255,.08)}.text-button-gold{color:#dbc1a0}.closing-signature{display:flex;flex-direction:column;gap:1px;color:#e3cab2}.closing-signature span{font:italic 18px var(--serif)}.closing-signature strong{font:400 35px var(--serif)}.closing-footer{width:100%;max-width:1100px;display:flex;justify-content:space-between;gap:12px;margin-top:auto;padding:46px 0 calc(23px + env(safe-area-inset-bottom));font-size:8px;letter-spacing:.18em;color:#b8b998}.closing-footer span span{font-size:6px;margin-left:5px}
.toast{position:fixed;z-index:120;bottom:calc(25px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%,15px);background:#fff8e8;color:#163c33;padding:14px 20px;box-shadow:0 10px 40px rgba(0,0,0,.2);font-size:12px;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;white-space:nowrap}.toast.visible{opacity:1;transform:translate(-50%,0)}
.in-view{opacity:0;transform:translateY(25px);transition:opacity 1s,transform 1s}.in-view.is-visible{opacity:1;transform:translateY(0)}
@keyframes gate-breathe{from{transform:scale(1)}to{transform:scale(1.09)}}@keyframes hero-drift{from{transform:scale(1.1)}to{transform:scale(1.025)}}@keyframes reveal-in{to{opacity:1;transform:translateY(0)}}@keyframes scroll-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(7px)}}@keyframes twinkle{from{opacity:.13;transform:scale(.8)}to{opacity:.9;transform:scale(1.35)}}
@media(min-width:700px){.gate-floral{width:190px;bottom:0}.hero{min-height:720px}.hero-content{top:46%}.hero-title{gap:2px}.hero-art{background-position:center 48%}.hero-invite{font-size:24px}.hero-date{margin-top:27px}.story{padding:150px 25px 140px}.weekend{padding:120px 35px 140px}.event-card{grid-template-columns:1fr 1fr;margin-bottom:32px;min-height:390px}.event-media{height:100%;min-height:390px}.event-copy{min-height:390px;padding:30px}.event-card-reverse .event-media{grid-column:2;grid-row:1}.event-card-reverse .event-copy{grid-column:1;grid-row:1}.event-copy h3{font-size:61px}.closing{min-height:730px;padding-top:120px}}
@media(max-width:375px){.hero-title{font-size:66px}.hero-date{margin-top:24px}.hero-content{top:47%}.gate-heading{font-size:60px}.gate-monogram{margin-top:23px;margin-bottom:14px}.gate-description{margin-top:18px;margin-bottom:22px}.event-media{height:255px}.event-copy{min-height:315px}.topbar{padding-left:20px;padding-right:20px}}
@media(max-height:740px){.hero{min-height:590px}.hero-content{top:46%}.hero-mini-flower{margin-top:7px}.hero-rule{margin-top:19px}.hero-date{margin-top:24px}.gate-monogram{margin-top:17px;margin-bottom:14px}.gate-heading{font-size:clamp(50px,12vw,78px)}.gate-description{margin:17px auto 19px}.gate-bottom{bottom:29px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal-1,.reveal-2,.reveal-3,.reveal-4,.in-view{opacity:1;transform:none}}

/* Emerald invitation art direction, matching the couple's floral reference. */
.invitation-gate{background:#09251e}
.gate-ambient{background-image:linear-gradient(180deg,rgba(4,19,17,.65),rgba(5,24,21,.80)),url('assets/hero.webp');background-size:100% 100%;background-position:center}
.gate-ambient:before,.gate-ambient:after{display:none}
.gate-floral{opacity:.12}
.hero{background:#07241f}
.hero-art{inset:0;background-image:url('assets/hero.webp');background-size:100% 100%;background-position:center;background-repeat:no-repeat;filter:none}
.hero-vignette{background:linear-gradient(180deg,rgba(2,23,19,.12),transparent 21%,rgba(4,23,20,.05) 65%,rgba(4,20,16,.24))}
.hero-title{font-weight:400;font-size:clamp(51px,8vw,82px);gap:1px;text-shadow:0 2px 9px rgba(0,0,0,.4)}
.hero-title span{font-variant:small-caps;text-transform:uppercase;letter-spacing:.045em;color:#d8b584}
.hero-title em{color:#e1a68e;text-shadow:none}
.hero-kicker,.hero-date>span,.hero-date strong,.hero-date small,.scroll-prompt span{color:#e6c69c}
.hero-invite{color:#e8d5bd}.hero-rule{color:#d4aa7c}.hero-rule span{background:#b79466}.hero-mini-flower{color:#d9b48e}
.hero-edge-label{color:#ddbd98}
@media(min-width:700px){.hero-art{background-size:auto 100%;background-color:#09241f}.gate-ambient{background-size:auto 100%;background-repeat:no-repeat;background-color:#09241f}}
@media(max-width:699px){.hero-title{font-size:clamp(50px,13vw,76px)}.hero-edge-label{display:none}}
