@font-face{font-family:Cormorant;src:url('assets/cormorant-regular.ttf') format('truetype');font-style:normal;font-weight:400 600;font-display:swap}
@font-face{font-family:Cormorant;src:url('assets/cormorant-italic.ttf') format('truetype');font-style:italic;font-weight:400 600;font-display:swap}
@font-face{font-family:Golos;src:url('assets/golos-regular.ttf') format('truetype');font-style:normal;font-weight:400 600;font-display:swap}
:root{--paper:#f7f4ed;--ink:#3f5870;--muted:#667c8e;--blue:#afc7d8;--light:#e5ecf0;--gold:#b4a17b;--line:#c7cfd2;--serif:Cormorant,Georgia,serif;--sans:Golos,Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:#dde5ea;color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.9;-webkit-font-smoothing:antialiased}body::before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 25%,#f8faf9 0,transparent 60%),repeating-linear-gradient(90deg,transparent 0,transparent 99px,#aabcc216 100px,#aabcc216 101px);z-index:-1}button,input,textarea{font:inherit}button,a,input,textarea,summary{-webkit-tap-highlight-color:transparent}button,a,summary{touch-action:manipulation}button,a{color:inherit}button{cursor:pointer}a{text-decoration:none}button{border:0}button:disabled{cursor:wait;opacity:.7}img{display:block;max-width:100%;height:auto}p,h1,h2,h3{margin:0}p+p{margin-top:15px}h2{font-family:var(--serif);font-size:clamp(36px,9.2vw,46px);line-height:1.08;font-weight:400;letter-spacing:-.6px;margin:21px 0 25px}h2 em{font-weight:400}h3{font-family:var(--serif);font-size:26px;font-weight:400;line-height:1.2}em{font-family:var(--serif)}[hidden]{display:none!important}*:focus-visible{outline:2px solid #4e7292;outline-offset:5px}.skip-link{position:fixed;top:-80px;left:20px;z-index:100;background:var(--paper);padding:12px 18px}.skip-link:focus{top:10px}.invitation-book{position:relative;width:100%;max-width:520px;margin:auto;background:var(--paper);box-shadow:0 0 80px #40597013;overflow:clip}.invitation-book::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;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='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23677a86' opacity='.5' filter='url(%23n)' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}.masthead{height:75px;margin:0 26px;border-bottom:1px solid #b2bfca60;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:3}.masthead>span{font-size:8px;letter-spacing:1.6px;margin-left:15px}.monogram{font-family:var(--serif);font-size:30px;letter-spacing:-3px;white-space:nowrap}.monogram span{font-style:italic;font-size:19px;padding:0 2px;color:var(--gold)}.replay{width:38px;height:44px;font-size:28px;background:none;font-family:var(--serif)}.eyebrow{font-size:9px;line-height:1.6;letter-spacing:2.5px;font-weight:400;text-align:center}.hero{text-align:center;position:relative;padding-top:37px}.hero-prelude{font-family:var(--serif);font-size:24px;line-height:1.15;margin-top:19px}.hero-prelude em{font-size:28px}.hero h1{font-family:var(--serif);font-weight:400;line-height:.93;margin:23px auto 19px;letter-spacing:-1.4px;position:relative;z-index:2;font-size:clamp(58px,14.6vw,75px)}.hero h1>span{display:block}.hero h1 i{font-size:31px;color:var(--gold);display:block;line-height:.94;margin:7px 0 9px}.hero-invite{font-size:11px;line-height:1.7;letter-spacing:.5px}.hero-art{position:relative;margin-top:-31px;aspect-ratio:1/.98;overflow:hidden;isolation:isolate;pointer-events:none}.hero-art img{width:100%;position:absolute;left:0;bottom:-2px;height:auto;mix-blend-mode:multiply}.hero-art::before{content:"";position:absolute;inset:0;background:linear-gradient(var(--paper),transparent 16%,transparent 89%,var(--paper));z-index:1}.scroll-invitation{display:flex;align-items:center;flex-direction:column;gap:7px;font-size:8px;letter-spacing:2px;margin:9px 0 0;position:relative;z-index:3}.scroll-line{height:27px;width:1px;background:#9caeba;margin-top:8px}.scroll-invitation>span:last-child{font-size:14px;line-height:1}.chapter{text-align:center;position:relative;padding:76px 34px}.intro-chapter{padding-top:52px;padding-bottom:65px}.ornament{color:var(--gold);font-family:var(--serif);font-size:36px;line-height:1.2}.intro-chapter h2{margin-top:20px;font-size:38px}.handwritten{font-family:var(--serif);font-size:25px;font-style:italic;margin-top:25px!important}.date-chapter{padding-top:25px;padding-bottom:68px}.date-frame{border:1px solid #aabbc6;margin-top:29px;padding:29px 20px 32px;position:relative}.date-frame::before{content:"";position:absolute;inset:7px;border:1px solid #b4a17b70;pointer-events:none}.frame-corner{width:15px;height:15px;border:1px solid var(--paper);position:absolute;background:var(--paper);transform:rotate(45deg)}.tl{left:-8px;top:-8px}.tr{right:-8px;top:-8px}.bl{left:-8px;bottom:-8px}.br{right:-8px;bottom:-8px}.small-star{font-size:32px;color:var(--gold);line-height:1}.date-frame h2{font-size:30px;margin:12px 0 13px}.date-number{font-family:var(--serif);font-size:92px;line-height:1.05;font-style:italic;letter-spacing:-4px}.date-month{font-size:11px;letter-spacing:4px;margin-top:9px}.tiny-divider{width:30px;height:1px;background:var(--gold);display:block;margin:22px auto 17px}.date-frame #date-caption{font-family:var(--serif);font-size:21px;line-height:1.4}.date-time{font-size:11px;margin-top:13px}.date-time strong{font-weight:400;letter-spacing:1px}.text-button{background:none;border-bottom:1px solid #889faf;font-size:11px;padding:6px 0;margin-top:24px}.text-button span{padding-left:14px}.location-chapter{background:linear-gradient(180deg,#e9eef170,#e7edf0bd 60%,#e8eef18c);padding-top:55px;padding-bottom:62px}.location-chapter::before{content:"";height:22px;position:absolute;top:-20px;left:0;right:0;background:#e9eef170;clip-path:polygon(0 70%,7% 45%,14% 78%,22% 35%,30% 68%,42% 46%,51% 80%,65% 40%,72% 71%,86% 38%,94% 60%,100% 40%,100% 100%,0 100%)}.palace-window{width:83%;aspect-ratio:1.18;overflow:hidden;margin:30px auto 24px;position:relative;border:1px solid #b7c5cd;border-radius:50% 50% 2px 2px;padding:6px}.palace-window::after{content:"";position:absolute;inset:5px;border:1px solid #a9b7c560;border-radius:50% 50% 0 0;pointer-events:none}.palace-window img{width:100%;height:210%;max-width:none;object-fit:cover;object-position:center;transform:translateY(-18%);mix-blend-mode:multiply}.window-star{position:absolute;top:7px;left:calc(50% - 12px);font-size:26px;background:var(--paper);width:24px;height:24px;line-height:24px;color:var(--gold)}.location-chapter h3{max-width:380px;margin:auto;font-size:32px}.location-chapter h3+p{margin:14px 0 22px;font-size:12px}.button{display:flex;justify-content:center;align-items:center;gap:19px;min-height:51px;padding:13px 22px;font-size:11px;letter-spacing:.3px;position:relative;z-index:3;transition:background .2s,transform .2s}.button:active{transform:translateY(1px)}.button-outline{border:1px solid #8aa1b2;max-width:260px;margin:0 auto}.button-outline:hover{background:#d4e0e9}.button span{font-size:17px;line-height:1}.little-note{font-family:var(--serif);font-style:italic;font-size:19px;line-height:1.3;color:#617689;margin-top:26px}.program-chapter{padding-top:71px}.section-caption{font-size:11px;margin-top:-11px}.timeline{list-style:none;padding:0;margin:43px 0 0;text-align:left}.timeline li{display:grid;grid-template-columns:60px 28px 1fr;gap:12px;position:relative;padding-bottom:38px}.timeline li:last-child{padding-bottom:0}.timeline li:not(:last-child)::before{content:"";position:absolute;left:85px;top:28px;bottom:1px;border-left:1px solid #b8c6cf}.timeline time{font-family:var(--serif);font-size:27px;line-height:1.3;font-style:italic;font-variant-numeric:tabular-nums}.timeline-mark{font-family:var(--serif);font-size:26px;text-align:center;line-height:1.2;color:#8aa4b7}.timeline h3{font-size:25px;line-height:1.3}.timeline p{font-size:11px;line-height:1.7;margin-top:6px;color:#5e7385}.program-chapter .little-note{margin-top:35px}.dress-chapter{border-top:1px solid #b7c6cd70;padding-top:65px;padding-bottom:58px}.dress-chapter>p:not(.eyebrow):not(.little-note){font-size:12px}.palette{display:flex;justify-content:space-between;gap:6px;margin:30px 0 21px}.palette>div{flex:1}.palette span{display:block;width:47px;height:47px;border-radius:50%;background:var(--swatch);margin:0 auto 8px;border:1px solid #5069801c;box-shadow:inset 0 0 0 3px #ffffff24}.palette small{font-size:8px;letter-spacing:.2px}.dress-image{margin:8px -23px 5px;overflow:hidden}.dress-image img{width:100%;mix-blend-mode:multiply}.dress-notes{display:grid;grid-template-columns:1fr 1fr;gap:15px}.dress-notes p{font-size:10px;line-height:1.8;margin:0}.dress-notes span{font-family:var(--serif);font-size:25px;display:block;margin-bottom:5px}.dress-chapter .little-note{font-size:17px}.details-chapter{background:#e7edf080;padding-top:57px;padding-bottom:57px}.details-chapter h2{margin-bottom:32px}.details-chapter details{text-align:left;border-top:1px solid #a5b8c670;padding:0 0 0}.details-chapter details:last-child{border-bottom:1px solid #a5b8c670}.details-chapter summary{list-style:none;display:flex;align-items:center;gap:13px;min-height:67px;font-family:var(--serif);font-size:27px;cursor:pointer}.details-chapter summary::-webkit-details-marker{display:none}.detail-icon{font-size:25px;color:#809aae;width:24px;display:inline-block;text-align:center}.detail-toggle{margin-left:auto;font-family:var(--serif);font-size:23px;transition:transform .2s}.details-chapter details[open] .detail-toggle{transform:rotate(45deg)}.details-chapter details>div{font-size:12px;line-height:1.85;padding:0 4px 25px 37px}.rsvp-chapter{padding-top:65px}.rsvp-ornament{font-family:var(--serif);font-size:38px;line-height:1.4;color:var(--gold);display:block;margin-bottom:15px}.rsvp-chapter h2{font-size:38px}.rsvp-chapter>p:not(.eyebrow){font-size:12px}.rsvp-chapter form{text-align:left;margin-top:35px}.field-label,fieldset legend{font-size:12px;display:block;line-height:1.5;margin-bottom:10px}.optional{color:#788b99;font-size:10px}input[type=text],textarea{width:100%;background:transparent;border:0;border-bottom:1px solid #a5b6c4;color:var(--ink);border-radius:0;min-height:48px;font-size:12px;padding:8px 0 11px;resize:vertical}input::placeholder,textarea::placeholder{color:#7e8f9b;opacity:1;font-size:11px}fieldset{border:0;padding:0;margin:26px 0 0;min-width:0}fieldset legend{padding:0}.radio-choice{display:flex;align-items:center;gap:12px;min-height:43px;cursor:pointer;font-size:12px}.radio-choice input{position:absolute;opacity:0;width:20px;height:20px}.choice-dot{display:block;width:18px;height:18px;border:1px solid #9aaebc;border-radius:50%;position:relative;flex-shrink:0}.radio-choice input:checked+.choice-dot::after{content:"";position:absolute;inset:4px;border-radius:50%;background:#6a879e}.radio-choice input:focus-visible+.choice-dot{outline:2px solid #4e7292;outline-offset:4px}.field-help{font-size:10px;color:#7d8d99;margin-top:-5px;margin-bottom:14px}.drink-options{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:27px}.drink-options label{position:relative;cursor:pointer}.drink-options input{position:absolute;opacity:0;width:100%;height:100%;inset:0;cursor:pointer;z-index:1;margin:0}.drink-options span{display:block;border:1px solid #afbdc7;padding:8px 14px;min-height:40px;font-size:10px;transition:.2s}.drink-options input:checked+span{background:#d9e5ed;border-color:#5f7e97}.drink-options input:checked+span::before{content:"✓ ";font-size:10px}.drink-options input:focus-visible+span{outline:2px solid #4e7292;outline-offset:3px}textarea{min-height:72px}.button-primary{background:#526f88;color:#fff;width:100%;margin-top:26px;border:1px solid #526f88}.button-primary:hover{background:#405e77}.form-note{text-align:center;font-size:9px;line-height:1.7;color:#788a97;margin-top:14px}.form-status{font-size:11px;line-height:1.7;background:#e4ecef;text-align:center}.form-status:not(:empty){padding:14px;margin-top:16px;border:1px solid #b9cad4}.countdown-chapter{padding-top:17px;padding-bottom:0}.countdown-chapter .ornament{margin-bottom:21px}.countdown-chapter h2{font-size:40px;margin-bottom:25px}.countdown{display:grid;grid-template-columns:1fr 8px 1fr 8px 1fr 8px 1fr;align-items:start;max-width:360px;margin:auto}.countdown>div{display:flex;flex-direction:column}.countdown span{font-family:var(--serif);font-size:48px;line-height:1.2;letter-spacing:-2px;font-variant-numeric:tabular-nums}.countdown b{font-family:var(--serif);font-size:31px;font-weight:400;color:#9daebb;line-height:1.6}.countdown small{font-size:8px;letter-spacing:1.7px;margin-top:7px}.countdown-chapter .little-note{font-size:18px}.farewell-chapter{padding:10px 30px 112px}.dancing-couple{width:88%;margin:0 auto -20px;mix-blend-mode:multiply;animation:waltz 9s ease-in-out infinite;transform-origin:50% 75%}.farewell-chapter>.eyebrow{font-size:8px;letter-spacing:1.9px}.farewell-chapter h2{font-size:36px;margin:16px 0 7px}.farewell-your{font-family:var(--serif);font-size:23px;font-style:italic}.signature{font-family:var(--serif);font-size:34px;line-height:1.4;font-style:italic;margin-top:2px}.signature span{color:var(--gold);font-size:25px}.footer-rule{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:20px}.footer-rule>span{height:1px;width:40px;background:#b7c5ce}.footer-rule i{font-style:normal;font-size:20px;color:#97adbe}.footer-note{font-size:9px;letter-spacing:.8px;margin-top:13px}.back-top{font-size:9px;color:#728897;display:inline-block;margin-top:23px;min-height:44px;padding:10px}.floating-nav{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%,100px);z-index:8;display:flex;align-items:center;gap:17px;background:#f7f4edf0;border:1px solid #b5c3cc;box-shadow:0 5px 24px #314f6720;border-radius:40px;padding:2px 22px;white-space:nowrap;backdrop-filter:blur(12px);transition:transform .4s,opacity .4s;opacity:0;visibility:hidden}.floating-nav.is-visible{transform:translate(-50%,0);opacity:1;visibility:visible}.floating-nav>a{font-size:10px;min-height:43px;display:flex;align-items:center;gap:20px}.floating-nav>span{width:1px;height:15px;background:#b7c4cd}.floating-nav .nav-rsvp{font-size:11px}.nav-rsvp span{font-size:17px}.desktop-note{position:fixed;top:50%;left:max(3vw,calc(50% - 505px));transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;width:210px;text-align:center;gap:21px;color:#748b9d;line-height:2;font-size:10px;letter-spacing:3px}.desktop-note i{font-family:var(--serif);font-size:23px;letter-spacing:0}.side-star{font-size:35px}.side-line{width:1px;height:80px;background:#aebdc9}.right-note{left:auto;right:max(3vw,calc(50% - 505px))}.snowfall{position:absolute;inset:0;z-index:2}.snowfall i{position:absolute;width:3px;height:3px;background:white;border-radius:50%;box-shadow:0 0 5px white;top:-10px;left:10%;animation:snow 9s linear infinite}.snowfall i:nth-child(2){left:25%;animation-delay:-4s;width:4px;height:4px}.snowfall i:nth-child(3){left:40%;animation-delay:-7s;animation-duration:12s}.snowfall i:nth-child(4){left:58%;animation-delay:-2s}.snowfall i:nth-child(5){left:75%;animation-delay:-9s;animation-duration:15s}.snowfall i:nth-child(6){left:90%;animation-delay:-1s;animation-duration:12s}.snowfall i:nth-child(7){left:15%;animation-delay:-6s;animation-duration:14s}.snowfall i:nth-child(8){left:48%;animation-delay:-2s;animation-duration:17s}.snowfall i:nth-child(9){left:69%;animation-delay:-3s;animation-duration:11s}.snowfall i:nth-child(10){left:84%;animation-delay:-6s;width:5px;height:5px}.curtain-scene{position:fixed;inset:0;z-index:30;max-width:520px;margin:auto;overflow:hidden;isolation:isolate;color:#f5f1e8;display:flex;align-items:center;justify-content:center}.curtain-panel{position:absolute;top:0;bottom:-10%;width:51%;z-index:-1;transition:transform 1.6s cubic-bezier(.65,0,.3,1);background:repeating-linear-gradient(90deg,#506b83 0%,#7290a8 9%,#91aabd 19%,#7391a8 29%,#506d86 37%,#65849e 45%,#4b6880 50%);box-shadow:inset -8px 0 19px #293e584d}.curtain-left{left:0;transform-origin:top left}.curtain-right{right:0;transform:scaleX(-1);transform-origin:center}.curtain-panel::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#233e5933,transparent 70%);border-right:3px solid #c4b38b80}.curtain-valance{position:absolute;top:-56px;left:-6%;width:112%;height:175px;border-radius:0 0 50% 50%;background:repeating-linear-gradient(100deg,#506b83 0%,#7290a8 7%,#8aa4b8 14%,#546f88 20%);border-bottom:3px solid #b6a783;box-shadow:0 8px 16px #1b385d22;transition:transform 1.1s}.curtain-welcome{text-align:center;margin-top:0;transition:opacity .4s,transform .6s}.curtain-welcome>.eyebrow{font-size:9px;letter-spacing:3px;opacity:.82}.curtain-title{font-family:var(--serif);font-size:38px;line-height:1.14;margin-top:31px;text-shadow:0 2px 10px #2f465626}.seal-button{width:100px;height:100px;border-radius:50%;margin:36px auto 24px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 28%,#eee4c7,#b6a581 75%);box-shadow:0 4px 13px #213c5460,inset 0 0 0 4px #b6a481,inset 0 0 0 6px #e8dabc;color:#76664e;position:relative;transition:transform .25s}.seal-button::after{content:"";position:absolute;inset:11px;border:1px solid #b19a73;border-radius:50%}.seal-button>span{font-family:var(--serif);font-size:43px;letter-spacing:-5px;margin-left:-4px;text-shadow:1px 1px 0 #f0e4c5}.seal-amp{font-size:26px;font-style:italic;margin:0 2px}.seal-button:hover{transform:scale(1.05)}.curtain-hint{font-size:11px;line-height:1.8;letter-spacing:.5px;opacity:.85}.curtain-bottom{position:absolute;bottom:max(35px,env(safe-area-inset-bottom));text-align:center;font-size:9px;letter-spacing:3px;transition:opacity .4s}.curtain-scene.is-open .curtain-left{transform:translateX(-104%) rotate(-5deg)}.curtain-scene.is-open .curtain-right{transform:translateX(104%) scaleX(-1) rotate(-5deg)}.curtain-scene.is-open .curtain-valance{transform:translateY(-105%)}.curtain-scene.is-open .curtain-welcome{opacity:0;transform:translateY(-10px);pointer-events:none}.curtain-scene.is-open .curtain-bottom{opacity:0}.curtain-scene.is-open{pointer-events:none}.reveal{transition:opacity .7s ease,transform .7s ease}.reveal.waiting{opacity:0;transform:translateY(16px)}
@keyframes snow{0%{transform:translate(0,-10px);opacity:0}10%{opacity:.8}95%{opacity:.6}100%{transform:translate(24px,550px);opacity:0}}@keyframes waltz{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(1deg)}}
@media(max-width:1000px){.desktop-note{display:none}}
@media(max-width:370px){.chapter{padding-left:24px;padding-right:24px}.hero h1{font-size:56px}.hero-prelude{font-size:22px}.hero{padding-top:30px}.eyebrow{font-size:8px;letter-spacing:2px}.masthead{margin:0 20px}.masthead>span{font-size:7px;letter-spacing:1px}.timeline li{grid-template-columns:54px 24px 1fr;gap:9px}.timeline li:not(:last-child)::before{left:75px}.timeline h3{font-size:24px}.timeline time{font-size:25px}.palette span{width:42px;height:42px}.palette small{font-size:7px}.signature{font-size:30px}.rsvp-chapter h2{font-size:35px}.date-number{font-size:83px}.countdown span{font-size:43px}.curtain-title{font-size:35px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal.waiting{opacity:1;transform:none}}
@media print{.curtain-scene,.floating-nav,.desktop-note,.masthead,.back-top,.scroll-invitation{display:none!important}.invitation-book{max-width:600px;box-shadow:none}.reveal.waiting{opacity:1;transform:none}.chapter{break-inside:avoid}body{background:var(--paper)}}
