@font-face{font-family:Good Vibes;src:url(/assets/GoodVibesCyr-DxVyUp50.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Allegretto Script;src:url(/assets/Allegretto_Script_One_Regular-POt9_HDH.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--paper: #f5ecd9;--ink: #2a3a32;--ink-soft: #4a5a52;--olive: #6b7c5a;--olive-dark: #38472e;--gold: #c9a44a;--gold-light: #e8c870}html{height:100%;overflow-x:hidden}body{min-height:100%;overflow:hidden;overflow-x:hidden;font-family:Cormorant Garamond,serif;color:var(--ink);-webkit-font-smoothing:antialiased}body.details-mode{overflow-y:auto;overflow-x:hidden}.invitation-panel{position:relative;height:100vh;height:100dvh;overflow:hidden;background:#fff}.stage{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.env-stack{position:relative;width:min(540px,88vw);cursor:pointer;transition:transform .9s cubic-bezier(.4,0,.6,1),opacity .85s ease}.env-stack:hover{transform:translateY(-8px) scale(1.01)}.env-stack:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(to bottom,#fff 0%,transparent 12%,transparent 88%,#fff 100%),linear-gradient(to right,#fff 0%,transparent 8%,transparent 92%,#fff 100%);pointer-events:none;z-index:10}.env-stack img{display:block;width:100%;height:auto}.img-open-back{position:relative;opacity:0;transition:opacity .55s ease;z-index:1}.img-open-front{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;transition:opacity .55s ease;z-index:3;pointer-events:none}.img-close{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:1;transition:opacity .6s ease;z-index:4}body.opening .img-close{opacity:0}body.opening .img-open-back,body.opening .img-open-front{opacity:1}body.revealing .env-stack{transform:translateY(70px) scale(.92);opacity:0;pointer-events:none;transition:transform 1s cubic-bezier(.4,0,.6,1),opacity .8s ease}body.open .env-stack{display:none}.letter-peek{display:block;position:absolute;left:8%;right:8%;bottom:28%;height:0;background:url(/letter-bg.jpg) top center / 100% 100% no-repeat;border-radius:5px 5px 0 0;z-index:2;box-shadow:0 1px #ffffffb3 inset,0 14px 20px -4px #00000073,0 4px #0000001f;overflow:hidden;pointer-events:none;transition:height 1s cubic-bezier(.4,.1,.25,1),bottom 1s cubic-bezier(.4,.1,.25,1)}.letter-peek:after{content:"";position:absolute;left:0;right:0;top:0;height:16px;background:linear-gradient(180deg,rgba(255,255,255,.5),transparent)}body.opening .letter-peek{height:52%;bottom:10%}body.revealing .letter-peek{opacity:0;transition:opacity .35s ease}.letter{position:absolute;left:50%;top:50%;width:min(560px,92vw,calc(92dvh * 1240 / 1748));aspect-ratio:1240 / 1748;height:auto;background:url(/invite.png) center / cover no-repeat;border-radius:4px;box-shadow:20px 26px 52px #281e0a47,36px 42px 72px #141e1629,6px 8px 14px #00000024;opacity:0;transform:translate(-50%,-50%) scale(.22);z-index:2;pointer-events:none;overflow:hidden;transition:none}.letter:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;z-index:0;pointer-events:none}.letter:after{display:none}body.revealing .letter,body.open .letter{opacity:1;transform:translate(-50%,-50%) scale(1);z-index:20;pointer-events:auto;transition:transform 1.5s cubic-bezier(.25,0,.15,1),opacity .4s ease}.letter-inner{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;padding:clamp(72px,18.9vw,115px) clamp(24px,8.5vw,52px) 50px;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:hidden}.letter-inner>*{opacity:0;transform:translateY(8px);transition:opacity .7s ease,transform .7s ease}body.revealing .letter-inner>*,body.open .letter-inner>*{opacity:1;transform:translateY(0)}body.revealing .letter-inner>*:nth-child(1),body.open .letter-inner>*:nth-child(1){transition-delay:1.05s}body.revealing .letter-inner>*:nth-child(2),body.open .letter-inner>*:nth-child(2){transition-delay:1.2s}body.revealing .letter-inner>*:nth-child(3),body.open .letter-inner>*:nth-child(3){transition-delay:1.35s}body.revealing .letter-inner>*:nth-child(4),body.open .letter-inner>*:nth-child(4){transition-delay:1.5s}body.revealing .letter-inner>*:nth-child(5),body.open .letter-inner>*:nth-child(5){transition-delay:1.65s}body.revealing .letter-inner>*:nth-child(6),body.open .letter-inner>*:nth-child(6){transition-delay:1.8s}body.revealing .letter-inner>*:nth-child(7),body.open .letter-inner>*:nth-child(7){transition-delay:1.95s}body.revealing .letter-inner>*:nth-child(8),body.open .letter-inner>*:nth-child(8){transition-delay:2.1s}body.revealing .letter-inner>*:nth-child(9),body.open .letter-inner>*:nth-child(9){transition-delay:2.25s}.ornament{display:flex;align-items:center;gap:14px;margin-top:4px}.ornament .line{width:58px;height:1px;background:var(--ink);opacity:.35}.ornament .glyph{font-family:Pinyon Script,cursive;font-size:30px;line-height:1;opacity:.85;transform:translateY(-2px)}.eyebrow{text-align:center;font-family:Cormorant Garamond;font-weight:600;font-size:clamp(10px,1.81vw,15px);color:var(--ink);line-height:0;text-transform:uppercase}.eyebrow .script{font-family:Allegretto Script;font-style:normal;font-size:clamp(23px,5.9vw,44px);text-transform:none;line-height:1.2;color:#979123df}.invite-line{font-style:italic;font-weight:400;font-size:clamp(13px,3.12vw,19px);line-height:1.75;color:var(--ink);max-width:36ch;margin-top:clamp(10px,2.96vw,18px);text-wrap:pretty}.couple{margin-top:clamp(10px,2.63vw,16px);font-family:Great Vibes,cursive;font-size:clamp(46px,12.5vw,76px);font-weight:400;line-height:1.05;color:var(--ink)}.couple .amp{display:inline-block;margin:0 .06em;font-size:.55em;font-style:normal;font-weight:400;transform:translateY(-.05em);opacity:.7}.date-row{margin-top:clamp(10px,2.63vw,16px);display:flex;align-items:stretch;gap:clamp(12px,3.29vw,20px);font-family:Marcellus,serif;color:var(--ink)}.date-row .piece{text-align:center}.date-row .lbl{font-size:clamp(9px,1.97vw,12px);letter-spacing:.4em;text-transform:uppercase;color:var(--ink);margin-bottom:6px}.date-row .big{font-size:clamp(26px,6.9vw,42px);line-height:1}.date-row .sub{font-size:clamp(11px,2.46vw,15px);letter-spacing:.3em;text-transform:uppercase;color:var(--ink);margin-top:6px}.date-row .div{width:1px;background:#2a3a3247;align-self:stretch}.venue{margin-top:clamp(10px,2.63vw,16px)}.venue .vlbl{font-family:Marcellus,serif;font-size:clamp(8px,1.64vw,10px);letter-spacing:.45em;text-transform:uppercase;color:var(--ink-soft)}.venue .vname{font-size:clamp(18px,4.11vw,25px);font-weight:400;margin-top:8px}.venue .vaddr{font-style:italic;font-weight:400;font-size:clamp(13px,2.96vw,18px);color:var(--ink);margin-top:4px}.schedule{margin-top:24px;display:grid;grid-template-columns:auto auto;gap:5px 16px}.schedule .t{font-family:Marcellus,serif;font-size:12px;letter-spacing:.06em;text-align:right;color:var(--ink-soft)}.schedule .e{font-size:15px;font-style:italic;font-weight:300;text-align:left}.letter-footer{margin-top:auto;padding-top:clamp(12px,3.62vw,22px);display:flex;flex-direction:column;align-items:center;gap:clamp(10px,2.96vw,18px);width:100%}.signoff{font-style:italic;font-weight:400;font-size:clamp(13px,2.96vw,18px);color:var(--ink);line-height:1.65;max-width:38ch}.details-btn{background:transparent;border:1.5px solid rgba(138,98,32,.55);color:#8a6220;font-family:Marcellus,serif;font-size:clamp(10px,2.14vw,13px);letter-spacing:.42em;text-indent:.42em;text-transform:uppercase;padding:clamp(7px,1.48vw,9px) clamp(16px,4.6vw,28px);cursor:pointer;transition:border-color .3s ease,color .3s ease,box-shadow .3s ease}.details-btn:hover{border-color:#8a6220;box-shadow:0 0 0 2px #8a622026}@keyframes details-pulse{0%,to{border-color:#8a62208c;box-shadow:none}50%{border-color:#8a6220;box-shadow:0 0 0 4px #8a62202e,0 0 12px #8a62201f}}body.open .details-btn{animation:details-pulse 2.2s ease-in-out 5s infinite}.hint{position:absolute;bottom:7vh;left:50%;transform:translate(-50%);font-family:Cormorant Garamond,serif;font-style:italic;font-weight:400;font-size:19px;letter-spacing:.22em;color:var(--ink-soft);text-transform:uppercase;text-align:center;white-space:nowrap;pointer-events:none;animation:hint-appear .8s ease 3s both}@media(max-width:480px){.hint{font-size:14px;letter-spacing:.12em;white-space:normal;width:80%}}@keyframes hint-appear{0%{opacity:0}to{opacity:1}}body.opening .hint,body.revealing .hint,body.open .hint{animation:none;opacity:0}.reset-btn{position:absolute;top:20px;right:22px;background:transparent;border:1px solid rgba(42,58,50,.32);color:var(--ink-soft);font-family:Marcellus,serif;font-size:11px;letter-spacing:.3em;padding:8px 14px;text-transform:uppercase;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .5s ease;z-index:30}.reset-btn:hover{color:var(--ink);border-color:var(--ink)}body.open .reset-btn{opacity:.75;pointer-events:auto;transition-delay:2.2s}.ambient{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.ambient span{position:absolute;width:3px;height:3px;border-radius:50%;background:#2a3a3224;animation:floatup linear infinite}@keyframes floatup{0%{transform:translateY(0) translate(0);opacity:0}10%{opacity:1}90%{opacity:.5}to{transform:translateY(-110vh) translate(30px);opacity:0}}.countdown-wrap{text-align:center;margin:0;padding:clamp(44px,5.625vw,72px) clamp(16px,1.875vw,24px) clamp(42px,5.3vw,68px);background:#6e7e63}.countdown-eyebrow{font-family:"Marcellus",serif bold;font-weight:900;font-size:clamp(11px,1.25vw,16px);letter-spacing:.5em;text-indent:.5em;text-transform:uppercase;color:var(--gold-light);margin-bottom:clamp(22px,2.8vw,36px)}.countdown-row{display:flex;align-items:flex-start;justify-content:center;gap:6px}.cd-unit{display:flex;flex-direction:column;align-items:center;width:clamp(52px,6.25vw,80px)}.cd-num{font-family:Cormorant Garamond,serif;font-size:clamp(30px,6.5vw,60px);font-weight:300;line-height:1;color:var(--gold-light);letter-spacing:-.02em}.cd-lbl{font-family:Marcellus,serif;font-size:clamp(8px,.86vw,11px);letter-spacing:.4em;text-indent:.4em;text-transform:uppercase;color:var(--gold-light);margin-top:clamp(6px,.78vw,10px)}.cd-sep{font-family:Cormorant Garamond,serif;font-size:clamp(30px,6vw,62px);font-weight:300;line-height:1;color:var(--gold);opacity:.45;padding-top:2px}.countdown-date{font-family:Marcellus,serif;font-size:clamp(11px,1.17vw,15px);letter-spacing:.45em;text-indent:.45em;text-transform:uppercase;color:var(--gold-light);margin-top:clamp(20px,2.5vw,32px);font-weight:900}.details-page{background:#e6dfd4;padding:0}.details-section{padding:clamp(44px,5.625vw,72px) clamp(16px,1.875vw,24px) clamp(52px,6.25vw,80px);margin:0;max-width:none}.details-page>*:nth-child(odd){background:#6e7e63}.details-page>*:nth-child(2n){background:#f2ede8}.details-page>*:nth-child(odd) .s-title{color:#ede0cc}.details-page>*:nth-child(odd) .s-line{background:linear-gradient(90deg,transparent,rgba(220,200,155,.5),transparent);opacity:1}.details-page>*:nth-child(odd) .vc-name{color:#f5ede0}.details-page>*:nth-child(odd) .vc-addr{color:#f5ede0cc}.details-page>*:nth-child(odd) .outline-btn{border-color:#dcc89b8c;color:#e8d4a8}.details-page>*:nth-child(odd) .dresscode-note{color:#f5ede0e6}.details-page>*:nth-child(odd) .moment-time{color:var(--gold-light)}.details-page>*:nth-child(odd) .moment-dot{border-color:#e8c87066;color:var(--gold-light)}.details-page>*:nth-child(odd) .moment-title{color:#f0e8d8}.details-page>*:nth-child(odd) .moment-sub{color:#f0e8d8bf}.details-section:nth-child(4){padding:clamp(44px,5.625vw,72px) clamp(16px,1.875vw,24px) clamp(52px,6.25vw,80px)}.section-header{max-width:780px;margin-left:auto;margin-right:auto;margin-bottom:clamp(28px,3.44vw,44px)}.venue-card,.dresscode-body{max-width:780px;margin-left:auto;margin-right:auto}.section-header{display:flex;align-items:center;gap:16px;margin-bottom:clamp(28px,3.44vw,44px)}.section-header .s-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.5}.section-header .s-title{font-family:Marcellus,serif;font-size:clamp(13px,1.484vw,19px);letter-spacing:.4em;text-indent:.4em;text-transform:uppercase;color:#262c24;white-space:normal;text-align:center}.venue-card{text-align:center}.vc-photo-wrap{width:100%;max-width:720px;margin:0 auto 36px;border-radius:4px;overflow:hidden;box-shadow:0 12px 40px #141e162e,0 4px 12px #141e161a}.vc-photo{display:block;width:100%;height:clamp(180px,26.5vw,340px);object-fit:cover;object-position:center 30%}.venue-card .vc-name{font-family:Pinyon Script,cursive;font-size:clamp(38px,6vw,56px)}.venue-card .vc-name--sm{font-size:clamp(28px,4.5vw,42px);color:var(--ink);line-height:1.1;margin-bottom:4px}.venue-card .vc-sub{font-family:Marcellus,serif;font-size:12px;letter-spacing:.45em;text-indent:.45em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}.venue-card .vc-addr{font-family:Marcellus,serif;font-size:clamp(11px,1.015vw,13px);letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}.venue-card .vc-time{font-family:Cormorant Garamond,serif;font-style:italic;font-weight:400;font-size:18px;color:var(--ink-soft);margin-bottom:24px;letter-spacing:.08em}.venue-card .vc-desc{font-style:italic;font-weight:400;font-size:19px;line-height:1.8;color:var(--ink-soft);max-width:52ch;margin:0 auto 32px}.outline-btn{display:inline-block;background:#fff!important;border:1.5px solid rgba(42,58,50,.55);color:var(--ink)!important;font-family:Marcellus,serif;font-size:13px;letter-spacing:.42em;text-indent:.42em;text-transform:uppercase;text-decoration:none;padding:10px 30px;cursor:pointer;transition:border-color .3s ease,color .3s ease,box-shadow .3s ease;animation:details-pulse 2.2s ease-in-out 1s infinite}.outline-btn:hover{border-color:var(--ink);box-shadow:0 0 0 2px #2a3a3226}.hotel-notice{max-width:520px;margin:0 auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:24px}.hn-icon{width:56px;height:56px;border-radius:50%;border:1px solid rgba(201,164,74,.4);display:flex;align-items:center;justify-content:center;color:var(--gold)}.hn-icon svg{width:24px;height:24px}.hn-main{font-style:italic;font-weight:400;font-size:clamp(15px,1.484vw,19px);line-height:1.8;color:var(--ink-soft)}.hn-deadline{display:flex;align-items:center;gap:14px;width:100%}.hn-deadline-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(201,164,74,.45))}.hn-deadline-line:last-child{background:linear-gradient(270deg,transparent,rgba(201,164,74,.45))}.hn-deadline-text{font-family:Marcellus,serif;font-size:13px;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}.hn-deadline-text strong{color:var(--olive);font-weight:400}.hn-sub{font-style:italic;font-weight:400;font-size:17px;line-height:1.7;color:var(--ink-soft);opacity:.75;margin-top:-8px}.dresscode-body{text-align:center}.dress-scroll-wrap{position:relative;margin:0 -24px 24px}.dress-scroll{display:flex;gap:10px;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;padding:4px 24px 16px}.dress-scroll::-webkit-scrollbar{display:none}.scroll-hint{display:none}@media(max-width:600px){.scroll-hint{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;pointer-events:none;font-family:Marcellus,serif;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);animation:hint-slide 1.4s ease-in-out infinite;transition:opacity .6s ease}.scroll-hint.hidden{opacity:1;animation:hint-slide 1.4s ease-in-out infinite}}@keyframes hint-slide{0%,to{transform:translate(0);opacity:.5}50%{transform:translate(7px);opacity:1}}.dress-img{flex:0 0 auto;height:260px;width:auto;border-radius:8px;object-fit:cover;scroll-snap-align:start}.pallet-img{display:block;width:100%;max-width:480px;height:auto;margin:0 auto 28px;border-radius:8px}.dresscode-note{font-style:italic;font-weight:500;font-size:clamp(19px,1.875vw,24px);line-height:1.8;color:var(--ink-soft);max-width:48ch;margin:0 auto 12px}.dresscode-warn{font-family:Marcellus,serif;font-size:12px;letter-spacing:.4em;text-transform:uppercase;color:var(--olive);opacity:.8}.two-moments{max-width:480px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:0}.moment{text-align:center;padding:clamp(24px,3.125vw,40px) clamp(16px,1.875vw,24px);width:100%}.moment-time{font-family:Cormorant Garamond,serif;font-size:clamp(30px,8vw,56px);font-weight:300;letter-spacing:.04em;color:var(--gold);line-height:1;margin-bottom:20px}.moment-dot{width:52px;height:52px;border-radius:50%;border:1px solid rgba(201,164,74,.45);display:flex;align-items:center;justify-content:center;margin:0 auto 20px;color:var(--gold)}.moment-dot svg{width:22px;height:22px}.moment-title{font-family:Cormorant Garamond,serif;font-size:clamp(22px,5vw,34px);font-weight:400;color:var(--ink);line-height:1.2;margin-bottom:10px}.moment-sub{font-style:italic;font-weight:400;font-size:clamp(14px,1.328vw,17px);color:var(--ink-soft);line-height:1.5}.moment-divider{display:flex;align-items:center;gap:16px;width:100%;padding:0 24px}.moment-divider-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(201,164,74,.4),transparent)}.moment-divider-glyph{font-size:14px;color:var(--gold);opacity:.6;flex-shrink:0}.timing-section{text-align:center}.timing-img{display:block;width:100%;max-width:680px;height:auto;margin:0 auto;border-radius:6px}.important-section{text-align:center}.important-img{display:block;width:100%;max-width:680px;height:auto;margin:0 auto}.yin-yang-section{background:#e6dfd4!important;padding:clamp(52px,5.625vw,72px) 0 clamp(64px,7vw,88px)}.yy-wrap{position:relative;width:min(460px,92vw);height:min(400px,88vw);margin:0 auto}.yy-circle{position:absolute;border-radius:50%;overflow:hidden}.yy-green{width:73%;aspect-ratio:1;top:0;left:0;background:#6b7c5a;z-index:1}.yy-green-inner{position:absolute;top:0;right:0;bottom:0;left:0;display:block;text-align:center;padding:clamp(20px,5.5vw,36px);overflow:hidden}.yy-shape-blocker{float:right;width:50%;height:100%;shape-outside:circle(50% at 94% 91%);shape-margin:clamp(6px,1.5vw,10px);pointer-events:none}.yy-white{width:58%;aspect-ratio:1;bottom:-2px;right:68px;background:#fff;padding:clamp(16px,4.5vw,28px);z-index:2;box-shadow:0 4px 28px #00000017;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.yy-title{font-family:Good Vibes,cursive;font-size:clamp(26px,6.5vw,36px);color:#fff;line-height:1;margin-bottom:clamp(8px,2vw,14px);display:block}.yy-green .yy-text{font-style:italic;font-weight:400;font-size:clamp(11px,2.8vw,16px);line-height:1.6;color:#ffffffe6}.yy-white .yy-text{font-style:italic;font-weight:400;font-size:clamp(10px,2.6vw,16px);line-height:1.6;color:var(--ink)}.details-footer{text-align:center;padding:60px 0;background:#fff!important;border-top:none;display:flex;flex-direction:column;align-items:center}.df-signoff{font-family:Great Vibes,cursive;font-size:clamp(42px,7vw,62px);font-weight:400;color:var(--ink);margin-bottom:32px}.df-image{display:block;width:100%;max-width:600px;height:auto}.back-btn{display:block;margin:32px auto 0;background:transparent;border:none;font-family:Cormorant Garamond,serif;font-style:italic;font-weight:300;font-size:14px;letter-spacing:.22em;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;transition:color .3s;padding-bottom:40px}.back-btn:hover{color:var(--ink)}@media(max-width:600px){.env-stack,.letter{width:94vw}.letter-inner{padding-top:100px}.venue{margin-top:14px}.letter-footer{margin-top:auto}.details-page{padding:0}.df-image{max-width:88vw}}
