:root{
  --ivory:#F7F2EA;
  --paper:#EFE6DA;
  --champagne:#D9C5A8;
  --blush:#E5D1C7;
  --taupe:#BBAA98;
  --gold:#B28B55;
  --sage:#A5A28B;
  --ink:#27231F;
  --muted:#6E655D;
  --highlight:#FFFDF9;
  --serif-ka:"Noto Serif Georgian",serif;
  --sans-ka:"Noto Sans Georgian",sans-serif;
  --editorial:"Cormorant Garamond",serif;
  --script:"Allura",cursive;
  --page-pad:clamp(20px,6vw,72px);
  --header-h:72px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--ivory)}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--serif-ka);font-weight:300;overflow-x:hidden;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:100;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.055'/%3E%3C/svg%3E");mix-blend-mode:multiply;opacity:.45}
img{display:block;width:100%;height:100%;object-fit:cover}
button,a,input,textarea{font:inherit}
a{color:inherit;text-decoration:none}
button{color:inherit}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:1px solid var(--gold);outline-offset:4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:16px;top:-80px;z-index:300;background:var(--ink);color:var(--ivory);padding:12px 16px;transition:.2s}
.skip-link:focus{top:16px}

.monogram{font-family:var(--editorial);font-size:23px;letter-spacing:.24em;font-weight:500;white-space:nowrap}
.tiny-label,.eyebrow{font-family:var(--sans-ka);font-size:10px;letter-spacing:.22em;text-transform:uppercase;font-weight:400;color:var(--muted)}
.script{font-family:var(--script);font-weight:400}
.hairline{width:42px;height:1px;background:rgba(178,139,85,.58);display:block}

.opening{position:fixed;inset:0;z-index:500;background:
  radial-gradient(circle at 18% 18%,rgba(229,209,199,.38),transparent 30%),
  radial-gradient(circle at 82% 76%,rgba(217,197,168,.30),transparent 34%),
  linear-gradient(145deg,#fbf7f0 0%,#f5eee5 55%,#eee2d4 100%);
  display:grid;place-items:center;overflow:hidden;transition:opacity .72s cubic-bezier(.2,.7,.2,1),visibility .72s ease}
.opening::before{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140' viewBox='0 0 140 140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.075'/%3E%3C/svg%3E");mix-blend-mode:multiply;opacity:.5;pointer-events:none}
.opening::after{content:"";position:absolute;inset:18px;border:1px solid rgba(178,139,85,.17);pointer-events:none}
.opening.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.opening__ambient{position:absolute;border-radius:50%;filter:blur(2px);opacity:.55;pointer-events:none;animation:ambientDrift 9s ease-in-out infinite alternate}
.opening__ambient--one{width:52vw;height:52vw;max-width:560px;max-height:560px;left:-18vw;top:-13vw;background:radial-gradient(circle,rgba(229,209,199,.44),rgba(229,209,199,0) 68%)}
.opening__ambient--two{width:46vw;height:46vw;max-width:500px;max-height:500px;right:-15vw;bottom:-15vw;background:radial-gradient(circle,rgba(165,162,139,.2),rgba(165,162,139,0) 70%);animation-delay:-3s}
.opening__stage{position:relative;z-index:2;width:min(94vw,520px);display:flex;flex-direction:column;align-items:center;perspective:1400px;padding:42px 18px 46px}
.opening__intro{display:flex;align-items:center;justify-content:space-between;width:min(82vw,390px);margin-bottom:22px;color:var(--muted);animation:openingIntro .85s .1s both}
.opening__date{font-family:var(--editorial);font-size:13px;letter-spacing:.18em;color:#877768}
.envelope{position:relative;width:min(82vw,390px);aspect-ratio:1.42;transform-style:preserve-3d;animation:envelopeArrive .95s cubic-bezier(.16,.8,.2,1) both;filter:drop-shadow(0 24px 24px rgba(72,55,42,.12))}
.envelope__shadow{position:absolute;left:8%;right:8%;bottom:-10%;height:18%;border-radius:50%;background:rgba(73,53,38,.14);filter:blur(22px);transform:scaleX(.84);transition:opacity .8s ease,transform .8s ease}
.envelope__back{position:absolute;inset:0;background:linear-gradient(165deg,#f8efe2,#e9dccb 75%);border:1px solid rgba(95,74,54,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.5);clip-path:polygon(0 0,100% 0,100% 100%,0 100%);z-index:0}
.envelope__back::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 40%,rgba(255,252,246,.55),rgba(214,195,172,.18));opacity:.8}
.envelope__letter{position:absolute;left:7.5%;right:7.5%;top:8%;height:82%;background:linear-gradient(180deg,#fffdf9 0%,#f8f0e7 100%);border:1px solid rgba(109,83,60,.13);box-shadow:0 3px 10px rgba(61,47,34,.06);z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;overflow:hidden;padding:7% 8% 0;transform:translate3d(0,9%,0) scale(.965);transition:transform .92s cubic-bezier(.16,.8,.2,1),box-shadow .92s ease;will-change:transform}
.envelope__letter::after{content:"";position:absolute;inset:8px;border:1px solid rgba(178,139,85,.12);pointer-events:none}
.envelope__botanical{position:absolute;left:-2px;bottom:-12px;width:92px;color:var(--sage);opacity:.46;transform:rotate(-4deg)}
.envelope__botanical path{stroke:currentColor;stroke-width:.85;stroke-linecap:round;stroke-dasharray:230;stroke-dashoffset:230;animation:drawLine 1.5s .5s ease forwards}
.envelope__monogram{font-size:17px;color:#8c7258;margin-bottom:12px}
.envelope__letter p{font-size:24px;letter-spacing:.035em;margin:0 0 8px}
.envelope__letter>span:not(.monogram){font-family:var(--sans-ka);font-size:8px;letter-spacing:.13em;color:var(--muted)}
.envelope__letter i{display:block;width:34px;height:1px;background:rgba(178,139,85,.45);margin:16px 0 12px}
.envelope__letter small{font-family:var(--serif-ka);font-size:10px;color:#7b6e62;font-weight:300}
.envelope__side{position:absolute;inset:0;z-index:3;pointer-events:none}
.envelope__side--left{background:linear-gradient(105deg,#f6ecdf,#e9dac8);clip-path:polygon(0 0,50.4% 50%,0 100%)}
.envelope__side--right{background:linear-gradient(255deg,#f4e9db,#e6d6c3);clip-path:polygon(100% 0,49.6% 50%,100% 100%)}
.envelope__side::after{content:"";position:absolute;inset:0;clip-path:inherit;background:linear-gradient(180deg,rgba(255,255,255,.28),rgba(120,94,69,.07))}
.envelope__front{position:absolute;inset:0;background:linear-gradient(148deg,#f0e5d6,#e4d4c1);clip-path:polygon(0 100%,50% 43.5%,100% 100%);z-index:4;pointer-events:none}
.envelope__front::after{content:"";position:absolute;inset:0;clip-path:inherit;background:linear-gradient(180deg,rgba(255,255,255,.3),rgba(118,90,64,.08));opacity:.9}
.envelope__flap{position:absolute;left:0;right:0;top:0;height:60%;z-index:5;background:linear-gradient(180deg,#f5eadc,#e9dbc9);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0%;transform:rotateX(0deg);transition:transform 1s cubic-bezier(.2,.75,.2,1);backface-visibility:visible;box-shadow:0 1px 0 rgba(102,76,54,.1);transform-style:preserve-3d}
.envelope__flap::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#eadbc9,#f7ede1);clip-path:inherit;transform:rotateX(180deg) translateZ(1px);backface-visibility:hidden}
.envelope__flap-lines{position:absolute;inset:12% 11% 18%;opacity:.16;background:repeating-linear-gradient(106deg,transparent 0 18px,rgba(91,69,50,.18) 18px 19px);clip-path:polygon(0 0,100% 0,50% 100%)}
.wax-seal{position:absolute;left:50%;top:55%;z-index:8;width:78px;height:78px;border:0;padding:0;transform:translate(-50%,-50%) rotate(-4deg);background:radial-gradient(circle at 34% 28%,#9a6654 0 8%,#825141 28%,#6e4035 74%,#573229 100%);border-radius:48% 52% 46% 54% / 54% 45% 55% 46%;box-shadow:0 8px 18px rgba(70,41,32,.28),inset 2px 3px 6px rgba(255,235,220,.18),inset -5px -6px 9px rgba(55,27,21,.26);cursor:pointer;transition:transform .24s ease,filter .24s ease,opacity .35s ease;animation:sealBreathe 2.8s 1.1s ease-in-out infinite}
.wax-seal:hover{transform:translate(-50%,-50%) rotate(-2deg) scale(1.045);filter:brightness(1.03)}
.wax-seal:active{transform:translate(-50%,-49%) rotate(-3deg) scale(.98)}
.wax-seal::before,.wax-seal::after{content:"";position:absolute;inset:6px;border-radius:50%;border:1px solid rgba(246,221,200,.32);box-shadow:inset 0 0 0 1px rgba(48,24,19,.18)}
.wax-seal::after{inset:13px;border-color:rgba(247,226,209,.25);box-shadow:none}
.wax-seal__rim{position:absolute;inset:-4px;border-radius:50%;border:1px solid rgba(93,48,38,.24);filter:blur(.1px)}
.wax-seal__mark{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;height:100%;font-family:var(--editorial);font-size:24px;letter-spacing:.08em;color:#edd7c3;text-shadow:0 1px 1px rgba(59,29,23,.45)}
.wax-seal__mark span{font-size:14px;margin:0 2px;opacity:.78}
.opening__prompt{margin-top:30px;border:0;background:transparent;min-height:48px;padding:10px 18px;display:flex;flex-direction:column;align-items:center;gap:10px;font-family:var(--sans-ka);font-size:11px;letter-spacing:.08em;color:#6c5c50;cursor:pointer;animation:openingPrompt 1s .7s both}
.opening__prompt i{width:38px;height:1px;background:rgba(178,139,85,.52);position:relative;overflow:visible;transition:width .3s ease}
.opening__prompt i::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-right:1px solid rgba(178,139,85,.72);border-bottom:1px solid rgba(178,139,85,.72);transform:rotate(-45deg)}
.opening__prompt:hover i{width:54px}
.opening__whisper{margin:6px 0 0;font-size:25px;color:#927762;transform:rotate(-4deg);opacity:.82;animation:openingPrompt 1s .95s both}
.opening__skip{position:absolute;right:calc(18px + env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));z-index:10;border:0;background:none;font-family:var(--sans-ka);font-size:9px;letter-spacing:.14em;color:#8c8177;padding:12px;cursor:pointer;opacity:.78}
.opening.is-opening .wax-seal{animation:none;transform:translate(-50%,-50%) rotate(9deg) scale(.72);opacity:0;filter:blur(1px)}
.opening.is-opening .envelope__flap{transform:translateZ(-16px) rotateX(178deg);transition-delay:.08s;z-index:0}
.opening.is-opening .envelope__letter{transform:translate3d(0,-66%,0) scale(1.03);box-shadow:0 26px 46px rgba(70,52,38,.2);transition-delay:.3s}
.opening.is-opening .envelope__shadow{opacity:.42;transform:scaleX(.66) translateY(12px)}
.opening.is-opening .opening__prompt,.opening.is-opening .opening__whisper,.opening.is-opening .opening__intro{opacity:0;transform:translateY(10px);animation:none;transition:opacity .32s ease,transform .32s ease}
.opening.is-opening .envelope{animation:envelopeDepart .95s 1s cubic-bezier(.35,.05,.2,1) both}
.opening.is-revealing{opacity:0;pointer-events:none}
body.opening-active{overflow:hidden}
body.opening-active main,body.opening-active .site-header{opacity:.22;transform:translateY(28px) scale(.992);filter:blur(5px);pointer-events:none}
main,.site-header{transition:opacity .95s cubic-bezier(.2,.72,.2,1),transform 1.05s cubic-bezier(.2,.72,.2,1),filter .95s ease}
body.invitation-opened .hero__image{animation:heroPhotoSettle 1.25s cubic-bezier(.2,.75,.2,1) both}
body.invitation-opened .hero__annotation{animation:annotationIn 1s .35s cubic-bezier(.2,.75,.2,1) both}
body.invitation-opened .hero__botanical--left{animation:botanicalFloat 6s 1s ease-in-out infinite alternate}
@keyframes openingIntro{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes openingPrompt{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes envelopeArrive{0%{opacity:0;transform:translateY(38px) rotateX(8deg) rotateZ(-1deg) scale(.96)}100%{opacity:1;transform:none}}
@keyframes envelopeDepart{0%{transform:translateY(0) scale(1);opacity:1}100%{transform:translateY(34vh) scale(.92);opacity:0}}
@keyframes sealBreathe{0%,100%{box-shadow:0 8px 18px rgba(70,41,32,.28),0 0 0 0 rgba(127,78,61,.08),inset 2px 3px 6px rgba(255,235,220,.18),inset -5px -6px 9px rgba(55,27,21,.26)}50%{box-shadow:0 9px 22px rgba(70,41,32,.3),0 0 0 8px rgba(127,78,61,0),inset 2px 3px 6px rgba(255,235,220,.18),inset -5px -6px 9px rgba(55,27,21,.26)}}
@keyframes ambientDrift{from{transform:translate3d(-2%,0,0) scale(1)}to{transform:translate3d(4%,3%,0) scale(1.08)}}
@keyframes drawLine{to{stroke-dashoffset:0}}
@keyframes heroPhotoSettle{from{transform:scale(1.035);opacity:.5}to{transform:scale(1);opacity:1}}
@keyframes annotationIn{from{opacity:0;transform:translateY(14px) rotate(-12deg)}to{opacity:1;transform:rotate(-8deg)}}
@keyframes botanicalFloat{from{transform:rotate(-5deg) translateY(0)}to{transform:rotate(-3deg) translateY(-7px)}}

.site-header{position:fixed;top:0;left:0;right:0;height:calc(var(--header-h) + env(safe-area-inset-top));padding:calc(18px + env(safe-area-inset-top)) var(--page-pad) 10px;display:flex;align-items:flex-start;justify-content:space-between;z-index:200;mix-blend-mode:multiply;transition:background .35s,backdrop-filter .35s}
.site-header.scrolled{background:rgba(247,242,234,.72);backdrop-filter:blur(12px);mix-blend-mode:normal;border-bottom:1px solid rgba(39,35,31,.06)}
.menu-button{width:48px;height:48px;border:0;background:transparent;display:grid;place-content:center;gap:7px;cursor:pointer;margin-top:-8px;position:relative;z-index:230}
.menu-button span{display:block;width:28px;height:1px;background:var(--ink);transition:transform .35s ease,width .35s ease}
body.menu-open .menu-button span:first-child{transform:translateY(4px) rotate(45deg)}
body.menu-open .menu-button span:last-child{transform:translateY(-4px) rotate(-45deg)}

.menu-overlay{position:fixed;inset:0;z-index:190;background:var(--ivory);padding:max(100px,calc(88px + env(safe-area-inset-top))) var(--page-pad) max(36px,calc(24px + env(safe-area-inset-bottom)));display:flex;flex-direction:column;opacity:0;visibility:hidden;transform:translateY(-10px);transition:.42s cubic-bezier(.2,.7,.2,1);overflow:hidden}
.menu-overlay[aria-hidden="false"]{opacity:1;visibility:visible;transform:none}
.menu-overlay__grain{position:absolute;inset:0;background:radial-gradient(circle at 80% 18%,rgba(217,197,168,.34),transparent 32%),radial-gradient(circle at 14% 74%,rgba(229,209,199,.32),transparent 31%);pointer-events:none}
.menu-overlay__top{position:relative;display:flex;justify-content:space-between}
.menu-overlay__links{position:relative;margin:auto 0;display:flex;flex-direction:column;gap:18px}
.menu-overlay__links a{font-size:clamp(32px,9vw,64px);line-height:1.22;letter-spacing:-.03em;transform:translateY(18px);opacity:0;transition:.45s ease}
.menu-overlay[aria-hidden="false"] .menu-overlay__links a{opacity:1;transform:none}
.menu-overlay[aria-hidden="false"] .menu-overlay__links a:nth-child(2){transition-delay:.05s}.menu-overlay[aria-hidden="false"] .menu-overlay__links a:nth-child(3){transition-delay:.1s}.menu-overlay[aria-hidden="false"] .menu-overlay__links a:nth-child(4){transition-delay:.15s}.menu-overlay[aria-hidden="false"] .menu-overlay__links a:nth-child(5){transition-delay:.2s}
.menu-overlay__note{position:relative;font-family:var(--editorial);font-style:italic;color:var(--muted);font-size:15px}
body.menu-open{overflow:hidden}

.hero{min-height:100svh;padding:calc(var(--header-h) + env(safe-area-inset-top) + 8px) var(--page-pad) max(74px,calc(62px + env(safe-area-inset-bottom)));position:relative;display:grid;grid-template-rows:minmax(310px,45svh) auto;align-content:start;background:linear-gradient(160deg,#fbf8f2 0%,var(--ivory) 58%,#f1e7d9 100%);overflow:hidden}
.hero::after{content:"";position:absolute;right:-10vw;top:34%;width:58vw;height:38vw;background:radial-gradient(circle,rgba(229,209,199,.42),transparent 68%);pointer-events:none}
.hero__visual{position:relative;z-index:2;max-width:640px;width:100%;margin:0 auto;align-self:center}
.hero__image{height:min(45svh,530px);min-height:310px;position:relative;overflow:hidden;box-shadow:0 28px 70px rgba(64,51,38,.14)}
.hero__image img{object-position:50% 45%;filter:saturate(.82) sepia(.06) contrast(.98) brightness(1.02)}
.deckle-mask{clip-path:polygon(1.8% 2.3%,11% .6%,21% 2%,34% .8%,46% 2.2%,58% .7%,72% 1.8%,86% .3%,98.4% 2.1%,99.2% 15%,98.2% 28%,99.4% 43%,98.4% 57%,99.2% 72%,97.8% 87%,98.4% 98%,85% 99.3%,72% 98.4%,57% 99.5%,43% 98.3%,29% 99.4%,14% 98.2%,1.3% 99%,2.1% 84%,.8% 70%,2% 55%,.7% 40%,1.9% 25%)}
.hero__paper-shadow{position:absolute;inset:8px -7px -9px 8px;background:#e6dbcd;transform:rotate(1deg);clip-path:inherit;opacity:.68}
.image-warmth{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,248,236,.04),rgba(114,69,42,.10));mix-blend-mode:soft-light}
.hero__annotation{position:absolute;right:-2px;bottom:-20px;font-size:32px;transform:rotate(-8deg);color:#6f5d4b;z-index:3}
.hero__caption{position:absolute;right:12px;top:14px;background:rgba(255,253,249,.78);padding:7px 9px;color:#7e6e5f}
.hero__botanical{position:absolute;z-index:3;pointer-events:none;color:var(--sage);opacity:.68}
.hero__botanical svg path,.botanical-draw path{stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.hero__botanical--left{left:-14px;top:23%;width:112px;transform:rotate(-5deg)}
.hero__copy{position:relative;z-index:4;padding-top:34px;text-align:center;display:flex;flex-direction:column;align-items:center}
.hero__copy .eyebrow{margin:0 0 10px}
.hero__names{font-weight:400;margin:0;font-size:clamp(42px,12.2vw,84px);line-height:1.04;letter-spacing:-.055em;display:flex;flex-wrap:wrap;max-width:100%;justify-content:center;align-items:baseline;gap:0 .12em}
.hero__names em{font-family:var(--editorial);font-weight:400;color:var(--gold);font-size:.8em;font-style:italic}
.hero__meta{display:flex;align-items:center;gap:14px;margin-top:18px;font-size:13px;color:var(--muted)}
.hero__meta time{white-space:nowrap}.hero__meta p{margin:0}
.hero__phrase{font-size:15px;margin:20px 0 18px;color:#5d544d}
.pill-button{min-height:52px;border-radius:999px;border:1px solid rgba(121,91,53,.22);background:linear-gradient(90deg,#b99a70,#a87d50);color:#fffdf9;padding:0 22px;display:inline-flex;align-items:center;justify-content:center;gap:24px;box-shadow:0 10px 24px rgba(100,74,47,.14);font-family:var(--sans-ka);font-size:12px;letter-spacing:.04em;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease}
.pill-button:hover{box-shadow:0 12px 28px rgba(100,74,47,.19)}.pill-button:active{transform:translateY(1.5px)}
.pill-button b,.text-button b{font-weight:300;transition:transform .25s ease}.pill-button:hover b,.text-button:hover b{transform:translateX(4px)}
.scroll-cue{position:absolute;bottom:max(14px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:8px;font-family:var(--sans-ka);font-size:8px;letter-spacing:.24em;white-space:nowrap;color:var(--muted);z-index:4}
.scroll-cue i{width:13px;height:13px;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);transform:rotate(45deg);animation:scrollBob 1.8s ease-in-out infinite}
@keyframes scrollBob{0%,100%{transform:translateY(0) rotate(45deg)}50%{transform:translateY(5px) rotate(45deg)}}

.paper-section{position:relative;background:var(--paper)}
.paper-section::before{content:"";position:absolute;top:-20px;left:0;right:0;height:30px;background:var(--paper);clip-path:polygon(0 45%,7% 30%,14% 56%,22% 35%,31% 58%,39% 28%,49% 54%,59% 31%,70% 60%,80% 33%,91% 56%,100% 38%,100% 100%,0 100%)}
.paper-section__inner{padding:92px var(--page-pad)}
.story-layout{display:grid;gap:36px;position:relative;overflow:hidden}
.editorial-kicker{position:relative;min-height:80px}.editorial-kicker .tiny-label{display:block;max-width:110px;line-height:1.7}.editorial-kicker .script{font-size:48px;color:#735f4d;position:absolute;left:50px;top:16px;transform:rotate(-8deg)}
.story-copy h2,.schedule-heading h2,.gallery-header h2{font-weight:400;letter-spacing:-.04em;line-height:1.18;font-size:clamp(34px,10vw,62px);margin:8px 0 20px}
.story-copy>p:last-child,.schedule-heading>p:last-child{font-size:15px;line-height:1.85;color:var(--muted);margin:0;max-width:600px}
.story-photo{height:430px;max-width:540px;width:88%;justify-self:end;box-shadow:0 18px 45px rgba(63,52,39,.12);transform:rotate(1.3deg)}
.story-photo img{filter:saturate(.76) contrast(.98)}

.countdown-section{padding:64px var(--page-pad) 82px;background:var(--ivory);position:relative}
.countdown-paper{max-width:820px;margin:auto;background:rgba(255,253,249,.58);border:1px solid rgba(119,98,76,.18);padding:34px 18px 28px;text-align:center;position:relative;box-shadow:0 14px 40px rgba(81,65,49,.06)}
.countdown-paper::before{content:"";position:absolute;inset:7px;border:1px solid rgba(178,139,85,.12);pointer-events:none}
.countdown-paper .eyebrow{margin:0 0 22px}
.countdown{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:start;gap:5px}
.countdown div{min-width:0}.countdown strong{display:block;font-family:var(--editorial);font-size:clamp(32px,9vw,58px);font-weight:400;line-height:1;transition:transform .26s ease,opacity .26s ease}.countdown strong.is-rolling{transform:translateY(-7px);opacity:.2}.countdown span{display:block;font-family:var(--sans-ka);font-size:9px;color:var(--muted);margin-top:9px}.countdown i{font-family:var(--editorial);font-size:34px;font-style:normal;color:#9f8c77;line-height:.9}.countdown-note{margin:22px 0 0;font-size:11px;color:var(--muted);letter-spacing:.06em}.countdown-leaf{position:absolute;width:95px;right:-12px;bottom:-32px;color:var(--sage);opacity:.65}
.botanical-draw path{stroke-dasharray:400;stroke-dashoffset:400}.botanical-draw.is-visible path{animation:drawLine 1.5s ease forwards}

.schedule-section{background:#f0e8dc}.schedule-wrap{display:grid;gap:46px}.schedule-heading .eyebrow{margin:0}.timeline{position:relative;padding-left:8px}.timeline__track{position:absolute;left:27px;top:38px;bottom:38px;width:1px;background:rgba(104,87,69,.18)}.timeline__track span{display:block;width:100%;height:0;background:var(--gold);transition:height .08s linear}
.timeline-item{display:grid;grid-template-columns:56px 1fr;gap:20px;align-items:center;position:relative;padding:18px 0 26px;min-height:118px}
.timeline-icon{width:54px;height:54px;border-radius:50%;background:#f7f0e5;border:1px solid rgba(178,139,85,.2);display:grid;place-items:center;position:relative;z-index:2}.timeline-icon svg{width:27px;height:27px;stroke:#987448;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}
.timeline-copy time{font-family:var(--editorial);font-size:24px;letter-spacing:.03em}.timeline-copy h3{font-size:17px;font-weight:400;margin:3px 0 4px}.timeline-copy p{margin:0;font-size:11px;color:var(--muted);font-family:var(--sans-ka)}

.love-note{min-height:72svh;padding:120px var(--page-pad);display:grid;place-content:center;text-align:center;background:var(--highlight);position:relative;overflow:hidden}.love-note::before{content:"“";font-family:var(--editorial);font-size:260px;line-height:.7;position:absolute;left:-10px;top:70px;color:rgba(229,209,199,.25)}.love-note blockquote{font-size:clamp(31px,8.5vw,66px);line-height:1.4;letter-spacing:-.045em;margin:0 auto;max-width:1050px;font-weight:300}.love-note>.tiny-label{margin-top:34px}.love-note__scribble{position:absolute;right:5%;bottom:12%;font-size:40px;transform:rotate(-8deg);color:rgba(112,90,70,.54)}

.location-section{height:82svh;min-height:600px;position:relative;overflow:hidden;background:#8f7b67}.location-media{position:absolute;inset:-8% 0}.location-media img{filter:saturate(.72) sepia(.12) brightness(.9);transform:scale(1.08);will-change:transform}.location-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(39,29,23,.08),rgba(35,28,23,.34))}
.location-card{position:absolute;left:var(--page-pad);right:var(--page-pad);bottom:34px;background:rgba(255,253,249,.93);backdrop-filter:blur(8px);padding:26px 24px 22px;box-shadow:0 18px 50px rgba(24,20,17,.18);max-width:550px}
.location-card h2{font-size:clamp(30px,8vw,50px);font-weight:400;letter-spacing:-.035em;margin:7px 0 10px}.location-card p{font-size:14px;line-height:1.7;color:var(--muted);margin:0 0 18px}.text-button{min-height:48px;display:inline-flex;align-items:center;gap:16px;font-family:var(--sans-ka);font-size:11px;letter-spacing:.06em;background:none;border:0;padding:0;color:#5d4833;cursor:pointer}

.gallery-section{background:var(--ivory)}.gallery-section::before{background:var(--ivory)}.gallery-inner{padding-top:100px;padding-bottom:92px}.gallery-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:34px}.gallery-header h2{margin-bottom:0}.gallery-header .eyebrow{margin:0}.gallery-header .script{font-size:32px;color:#795f4a;transform:rotate(-6deg);white-space:nowrap}
.gallery-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px var(--page-pad) 22px;margin:0 calc(var(--page-pad) * -1);scrollbar-width:none;-webkit-overflow-scrolling:touch}.gallery-track::-webkit-scrollbar{display:none}.gallery-item{border:0;padding:0;background:none;flex:0 0 74vw;height:62vw;max-height:440px;scroll-snap-align:center;overflow:hidden;cursor:zoom-in;position:relative;box-shadow:0 16px 38px rgba(68,56,43,.11);transition:transform .35s ease}.gallery-item img{filter:saturate(.78) contrast(.98)}.gallery-item--narrow{flex-basis:54vw}.gallery-item--small{flex-basis:58vw}.gallery-item--wide{flex-basis:84vw}.gallery-item--walk{flex-basis:70vw}.gallery-hint{text-align:center;margin:10px 0 0}

.rsvp-section{padding:94px var(--page-pad) 110px;background:linear-gradient(180deg,#f4ece1,#eee2d4)}.rsvp-card{max-width:640px;margin:auto;background:rgba(255,253,249,.78);border:1px solid rgba(92,72,54,.16);box-shadow:0 22px 60px rgba(85,65,48,.11);padding:36px 22px 28px;position:relative}.rsvp-card::before,.rsvp-card::after{content:"";position:absolute;width:22px;height:22px;background:#eee2d4;border-radius:50%;top:50%;transform:translateY(-50%)}.rsvp-card::before{left:-12px}.rsvp-card::after{right:-12px}.rsvp-card__ornament{text-align:center;color:var(--gold);opacity:.7;font-size:12px;margin-bottom:10px}.rsvp-card>.eyebrow{text-align:center;margin:0}.rsvp-card>h2{font-family:var(--editorial);font-size:58px;font-weight:400;text-align:center;margin:5px 0 8px}.rsvp-intro{text-align:center;color:var(--muted);line-height:1.7;font-size:13px;max-width:500px;margin:0 auto 26px}
.rsvp-options{border:0;padding:0;margin:0;display:grid;gap:10px}.rsvp-options label{display:grid;grid-template-columns:28px 1fr;gap:13px;align-items:center;border:1px solid rgba(80,66,53,.14);padding:14px;border-radius:3px;cursor:pointer;transition:.25s ease;background:rgba(255,253,249,.4)}.rsvp-options label:has(input:checked){background:rgba(229,209,199,.62);border-color:rgba(178,139,85,.22)}.rsvp-options input{position:absolute;opacity:0}.radio-mark{width:25px;height:25px;border-radius:50%;border:1px solid #857463;display:grid;place-items:center}.rsvp-options input:checked+.radio-mark{background:#ad8560;border-color:#ad8560}.rsvp-options input:checked+.radio-mark::after{content:"✓";color:#fff;font-family:var(--sans-ka);font-size:13px}.rsvp-options b{display:block;font-weight:400;font-size:13px}.rsvp-options small{display:block;margin-top:3px;color:var(--muted);font-family:var(--editorial);font-size:12px;letter-spacing:.04em}
.guest-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:24px 0 18px}.guest-row label{font-size:13px}.guest-row .tiny-label{display:block;font-size:8px;margin-top:4px}.stepper{display:flex;align-items:center;border:1px solid rgba(80,66,53,.16);border-radius:999px;height:44px}.stepper button{width:42px;height:42px;border:0;background:none;font-size:21px;cursor:pointer}.stepper output{min-width:30px;text-align:center;font-family:var(--editorial);font-size:21px}.message-field{display:block}.message-field>span{font-size:12px}.message-field small{color:var(--muted)}.message-field textarea{width:100%;resize:vertical;min-height:112px;border:1px solid rgba(80,66,53,.15);background:rgba(255,253,249,.55);padding:14px;margin-top:8px;border-radius:3px;color:var(--ink);font-size:13px}.message-field textarea::placeholder{color:#9a8d81}.pill-button--submit{width:100%;margin-top:18px;border:0}.rsvp-confirmation{display:none;text-align:center;padding:44px 12px 26px}.rsvp-confirmation.is-visible{display:block;animation:confirmationIn .55s ease both}.rsvp-confirmation .script{font-size:44px;color:#9a7654}.rsvp-confirmation h3{font-weight:400;font-size:34px;margin:0}.rsvp-confirmation p{color:var(--muted);font-size:14px}.rsvp-confirmation .text-button{margin-top:10px}@keyframes confirmationIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.site-footer{padding:64px var(--page-pad) max(40px,calc(28px + env(safe-area-inset-bottom)));text-align:center;background:var(--ivory)}.site-footer .monogram{font-size:26px}.site-footer p{font-size:14px;color:var(--muted);margin:18px 0 16px}

.lightbox{position:fixed;inset:0;background:rgba(31,27,23,.96);z-index:600;display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .3s ease}.lightbox[aria-hidden="false"]{opacity:1;visibility:visible}.lightbox__figure{width:min(92vw,1100px);height:min(78svh,760px);margin:0;display:grid;place-items:center}.lightbox__figure img{width:100%;height:100%;object-fit:contain;transform:scale(.96);opacity:.7;transition:.35s ease}.lightbox[aria-hidden="false"] .lightbox__figure img{transform:scale(1);opacity:1}.lightbox__close{position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;width:50px;height:50px;border:0;background:rgba(255,255,255,.05);color:#fff;font-family:var(--editorial);font-size:35px;cursor:pointer}.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);color:#fff;font-family:var(--editorial);font-size:26px;cursor:pointer}.lightbox__nav--prev{left:12px}.lightbox__nav--next{right:12px}.lightbox__counter{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));font-family:var(--sans-ka);font-size:10px;letter-spacing:.16em;color:rgba(255,255,255,.7)}

.reveal{opacity:0;transform:translateY(12px);transition:opacity .75s ease,transform .75s ease}.reveal.is-visible{opacity:1;transform:none}.reveal-mask{clip-path:inset(0 0 100% 0);transition:clip-path 1s cubic-bezier(.2,.7,.2,1)}.reveal-mask.is-visible{clip-path:inset(0 0 0 0)}

/* Editorial motion language: slow paper movement, masked photography and restrained stagger. */
body.invitation-opened .hero__image img{animation:heroBreath 14s 1.1s ease-in-out infinite alternate;transform-origin:50% 48%}
.timeline-item .timeline-icon{transform:scale(.88) rotate(-3deg);opacity:.45;transition:transform .72s cubic-bezier(.2,.75,.2,1),opacity .72s ease,background .35s ease}
.timeline-item.is-visible .timeline-icon{transform:scale(1) rotate(0);opacity:1}
.timeline-item.is-visible .timeline-copy h3{animation:softLetterRise .7s .08s both}
.timeline-item.is-visible .timeline-copy p{animation:softLetterRise .7s .16s both}
.countdown-paper.is-visible{animation:paperSettle .95s cubic-bezier(.18,.75,.2,1) both}
.countdown-paper.is-visible .countdown>div:nth-of-type(1){animation:softLetterRise .65s .08s both}
.countdown-paper.is-visible .countdown>div:nth-of-type(2){animation:softLetterRise .65s .14s both}
.countdown-paper.is-visible .countdown>div:nth-of-type(3){animation:softLetterRise .65s .20s both}
.countdown-paper.is-visible .countdown>div:nth-of-type(4){animation:softLetterRise .65s .26s both}
.gallery-item{--paper-tilt:0deg;opacity:0;transform:translateY(20px) rotate(var(--paper-tilt)) scale(.985);transition:opacity .8s ease,transform .9s cubic-bezier(.2,.74,.2,1),filter .35s ease,box-shadow .35s ease}
.gallery-item:nth-child(2),.gallery-item:nth-child(5){--paper-tilt:.65deg}.gallery-item:nth-child(3),.gallery-item:nth-child(6){--paper-tilt:-.55deg}
.gallery-item.is-visible{opacity:1;transform:translateY(0) rotate(var(--paper-tilt)) scale(1)}
.gallery-item.is-visible img{animation:photoReveal 1.15s cubic-bezier(.2,.75,.2,1) both}
.location-card.is-visible{animation:paperLabelIn .9s cubic-bezier(.18,.76,.2,1) both}
.rsvp-card.is-visible{animation:paperSettle 1s cubic-bezier(.18,.75,.2,1) both}
.pill-button{position:relative;overflow:hidden}
.pill-button::after{content:"";position:absolute;top:-50%;bottom:-50%;width:28px;left:-45px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.19),transparent);transform:rotate(18deg);transition:left .75s cubic-bezier(.2,.7,.2,1);pointer-events:none}
.pill-button:hover::after{left:calc(100% + 30px)}
@keyframes heroBreath{from{transform:scale(1)}to{transform:scale(1.025)}}
@keyframes softLetterRise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes paperSettle{0%{opacity:0;transform:translateY(18px) rotate(-.35deg) scale(.99)}100%{opacity:1;transform:none}}
@keyframes photoReveal{0%{filter:saturate(.65) contrast(.96);transform:scale(1.035)}100%{transform:scale(1);}}
@keyframes paperLabelIn{0%{opacity:0;transform:translateY(16px) rotate(.6deg)}100%{opacity:1;transform:none}}

@media (hover:hover){.gallery-item.is-visible:hover{transform:translateY(-2px) rotate(var(--paper-tilt)) scale(1.015);box-shadow:0 20px 44px rgba(68,56,43,.15)}.menu-overlay__links a:hover{font-style:italic;color:#715c47}}

@media (min-width:760px){
  :root{--header-h:82px}
  .hero{grid-template-columns:minmax(290px,1.05fr) minmax(280px,.95fr);grid-template-rows:1fr;align-items:center;gap:clamp(30px,6vw,90px);padding-top:calc(var(--header-h) + 34px);padding-bottom:60px;min-height:100svh}
  .hero__visual{grid-column:1;max-width:720px;margin:0}.hero__image{height:min(72svh,760px);min-height:560px}.hero__copy{grid-column:2;padding:0;text-align:left;align-items:flex-start}.hero__names{justify-content:flex-start;font-size:clamp(44px,5.6vw,96px)}.hero__meta{font-size:15px}.hero__phrase{font-size:17px}.scroll-cue{bottom:18px}.hero__annotation{font-size:44px;right:0;bottom:10px}.hero__botanical--left{width:150px;left:-28px;top:27%}
  .story-layout{grid-template-columns:.7fr 1.1fr .9fr;align-items:center;gap:clamp(28px,5vw,80px)}.editorial-kicker{align-self:start}.story-photo{width:100%;height:560px;justify-self:stretch}.story-copy h2{font-size:clamp(46px,4.6vw,72px)}
  .countdown-section{padding:90px var(--page-pad) 110px}.countdown-paper{padding:42px 40px 36px}.countdown{gap:18px}.countdown span{font-size:10px}
  .schedule-wrap{grid-template-columns:.8fr 1.2fr;gap:90px;align-items:start}.schedule-heading{position:sticky;top:120px}.timeline-item{grid-template-columns:64px 1fr;gap:26px;min-height:132px}.timeline__track{left:31px}
  .location-section{height:86svh}.location-card{left:auto;right:7vw;bottom:7vw;width:min(500px,40vw);padding:34px}
  .gallery-track{display:grid;grid-template-columns:1.25fr .72fr .72fr;grid-template-rows:290px 240px 310px;overflow:visible;gap:18px;padding:0;margin:0}.gallery-item{height:auto;max-height:none;min-width:0;flex:none}.gallery-item--hero{grid-column:1;grid-row:1 / span 2}.gallery-item--narrow{grid-column:2;grid-row:1}.gallery-item--small{grid-column:3;grid-row:1}.gallery-item--wide{grid-column:2 / span 2;grid-row:2}.gallery-item:nth-of-type(5){grid-column:1;grid-row:3}.gallery-item--walk{grid-column:2 / span 2;grid-row:3}.gallery-hint{display:none}.gallery-header .script{font-size:46px}
  .rsvp-card{padding:48px 46px 38px}.rsvp-card>h2{font-size:72px}.rsvp-options label{padding:16px 18px}.rsvp-options b{font-size:14px}
}

@media (min-width:1180px){
  :root{--page-pad:clamp(64px,7vw,120px)}
  .site-header{padding-left:56px;padding-right:56px}.hero{padding-left:7vw;padding-right:7vw}.hero__visual{margin-left:2vw}.hero__copy{max-width:720px}.hero__image{height:min(76svh,800px)}
  .paper-section__inner{padding-top:130px;padding-bottom:130px}.story-layout{min-height:700px}.story-photo{height:640px}
  .gallery-track{grid-template-rows:330px 280px 350px}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .reveal,.reveal-mask{opacity:1;transform:none;clip-path:none}.location-media img{transform:none!important}
}
