:root{--night:#101b21;--night2:#172326;--cream:#f9efe0;--gold:#d7ad64;--warm:#aa7a42;--olive:#4c5537;--maroon:#7a1a22;--foot:76px;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',system-ui,sans-serif;--script:'Great Vibes',cursive;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--night);color:var(--cream);font-family:var(--sans);overflow-x:hidden;padding-bottom:calc(var(--foot) + env(safe-area-inset-bottom));-webkit-font-smoothing:antialiased}body.modal-open{overflow:hidden}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:3px}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}#ambient{position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.27;background:radial-gradient(ellipse at 50% 15%,#c99c5b28,transparent 55%),url('data:image/svg+xml,%3Csvg viewBox=%220 0 180 180%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Cfilter id=%22n%22%3E%3CfeTurbulence type=%22fractalNoise%22 baseFrequency=%22.8%22 numOctaves=%223%22 stitchTiles=%22stitch%22/%3E%3C/filter%3E%3Crect width=%22100%25%22 height=%22100%25%22 filter=%22url(%23n)%22 opacity=%22.13%22/%3E%3C/svg%3E')}
.loading-screen{position:fixed;inset:0;z-index:99;background:#142021;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;transition:opacity 1s,visibility 1s}.loading-screen.is-gone{opacity:0;visibility:hidden;pointer-events:none}.loader-mark{font-size:38px;color:var(--gold);animation:rotateGlow 5s ease-in-out infinite}.loader-text{font:clamp(34px,8vw,70px) var(--script);color:#fce9c9}.loader-text em{font:italic 30px var(--serif);color:var(--gold)}.loading-screen span{font:500 10px var(--sans);letter-spacing:.34em;text-transform:uppercase;color:#cdbfa5}
.topbar{position:fixed;top:0;left:0;right:0;z-index:30;height:62px;padding:0 clamp(14px,4vw,34px);display:flex;justify-content:space-between;align-items:center;background:linear-gradient(#132023eb,#132023a8);border-bottom:1px solid #d6b27526;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.brand{display:flex;align-items:center;gap:9px;color:#f9e5c2;font:600 15px var(--serif);letter-spacing:.08em}.brand i{font-style:normal;color:var(--gold)}.brand-icon{font-size:27px;color:var(--gold)}.topbar-label{font-size:9px;letter-spacing:.2em;color:#d1c3ac}.music-toggle{border:1px solid #d7ad6447;background:#cba15c12;color:#f0dec1;border-radius:999px;padding:8px 13px;display:flex;align-items:center;gap:7px;font:600 10px var(--sans);white-space:nowrap}.music-icon{font-size:17px;color:var(--gold)}.progress-rail{position:fixed;left:0;top:62px;right:0;height:2px;background:#f7dca020;z-index:32}.progress-rail>div{height:100%;width:0;background:linear-gradient(90deg,#c59442,#ffebae);box-shadow:0 0 10px #f4d88d;transition:width .16s}
main{position:relative;z-index:1}.intro,.closing{min-height:100svh;position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:90px 18px 100px;overflow:hidden;isolation:isolate}.intro:before,.closing:before{content:'';position:absolute;inset:-15%;z-index:-2;background:radial-gradient(circle at 50% 32%,#a67a4633 0,transparent 34%),radial-gradient(circle at 70% 89%,#67735922 0,transparent 29%),linear-gradient(160deg,#222827,#0e191f 72%);animation:ambientPan 16s ease-in-out infinite alternate}.intro:after,.closing:after{content:'';position:absolute;inset:17px;border:1px solid #b18f5060;z-index:-1;pointer-events:none}.intro-flourish{font-size:26px;color:var(--gold);margin:16px 0 35px}.kicker,.eyebrow,.family{font-size:10px;letter-spacing:.23em;line-height:1.8;color:#ead6b5}.family{font-size:9px;opacity:.75;margin-top:10px}.intro h1{margin:18px 0 3px;line-height:.9;font:clamp(64px,13.5vw,118px) var(--script);color:#f4dcb6;text-shadow:0 3px 30px #e0b76c35;max-width:900px}.intro h1 span{font:italic clamp(36px,7vw,64px) var(--serif);color:var(--gold);margin:0 8px}.ornament{display:flex;align-items:center;gap:18px;margin:25px 0;color:var(--gold);font-size:21px}.ornament i{display:block;width:58px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.ornament i:last-child{transform:rotate(180deg)}.hero-date{font:600 19px var(--serif);letter-spacing:.18em;margin:2px 0 8px}.hero-copy{font:400 23px/1.2 var(--serif);max-width:560px;color:#e3d7c6;margin:13px 0 33px}.intro-actions,.closing-buttons{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.primary,.secondary{border-radius:3px;padding:14px 22px;text-transform:uppercase;font:600 11px var(--sans);letter-spacing:.12em;min-height:45px}.primary{color:#222019;background:linear-gradient(120deg,#eed39b,#c99c56);border:1px solid #f7e7be}.secondary{color:#f3dcba;background:transparent;border:1px solid #c6a36890}.intro-actions button span{margin-left:12px}.scroll-cue{position:absolute;bottom:calc(var(--foot) + 25px);margin:0;font:500 9px var(--sans);letter-spacing:.21em;text-transform:uppercase;color:#c6b899;display:flex;flex-direction:column;align-items:center;gap:6px}.scroll-cue span{font-size:18px;animation:bob 2.8s ease-in-out infinite}
.chapter{position:relative;min-height:100svh;display:grid;place-items:center;padding:84px 12px 125px;overflow:hidden;isolation:isolate}.chapter-night{background:#131d25}.chapter-day{background:#e4d3bb}.chapter::before{content:'';position:absolute;inset:-30px;z-index:-2;background-image:var(--chapter-image);background-size:cover;background-position:center;filter:blur(35px) brightness(.48) saturate(.8);transform:scale(1.06)}.chapter::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#141b1ee0 0,transparent 24%,transparent 72%,#141b1e90 100%);pointer-events:none;z-index:-1}.chapter-label{position:absolute;top:69px;left:50%;transform:translateX(-50%);z-index:6;border:1px solid #d7b67960;background:#172327d9;color:#f9e7c7;backdrop-filter:blur(8px);padding:8px 14px;white-space:nowrap;border-radius:30px;font:600 10px var(--sans);text-transform:uppercase;letter-spacing:.12em}.chapter-label b{color:#d7b679;font-size:12px;margin-right:8px}.art-stage{position:relative;width:min(100%,min(67svh,650px));aspect-ratio:3/4;background:#eadcc8;overflow:hidden;box-shadow:0 18px 90px #0008,0 0 0 8px #e0bb7950,0 0 0 9px #e0bb7970;isolation:isolate}.art-img,.art-clean{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.art-img{transform:scale(1.007);animation:slowPush 23s ease-in-out infinite alternate}.art-clean{opacity:0;pointer-events:none}.chapter.has-live-text .art-img{opacity:0}.chapter.has-live-text .art-clean{opacity:1}.chapter[data-page="10"] .art-img{animation:none}.art-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 42%,#523b1026 100%);mix-blend-mode:multiply}.light-sweep{position:absolute;inset:-40%;opacity:.0;pointer-events:none;background:linear-gradient(115deg,transparent 43%,#fff5d325 49%,transparent 57%);transform:translateX(-100%) rotate(-8deg);animation:sweep 12s ease-in-out infinite}.chapter-night .light-sweep{background:linear-gradient(115deg,transparent 43%,#ffedb935 49%,transparent 57%)}.sparkle-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:5}.sparkle-layer i{position:absolute;top:var(--t);left:var(--l);width:var(--s);height:var(--s);background:#f5d88a;border-radius:50%;opacity:0;animation:twinkle var(--d) ease-in-out var(--delay) infinite;box-shadow:0 0 12px #f9e2a9}.petal-layer{position:absolute;inset:0;pointer-events:none;z-index:8;overflow:hidden}.petal{position:absolute;top:-30px;left:var(--l);width:var(--s);height:calc(var(--s)*1.5);background:linear-gradient(#f7e4ab,#c9a05b);border-radius:80% 0 80% 0;opacity:.75;animation:petalFall var(--d) linear var(--delay) infinite}.chapter-content{position:relative;z-index:7;text-align:center;color:#f7dfb6;display:flex;flex-direction:column;align-items:center;gap:4px;max-width:720px;width:100%;padding:0 12px}.chapter-content h2{margin:0;font:600 20px var(--serif);letter-spacing:.14em}.chapter-content p{margin:0;font:400 16px var(--serif)}.chapter-under{position:absolute;bottom:calc(var(--foot) + 12px);left:0;right:0;display:flex;align-items:center;justify-content:center;gap:10px;padding:0 12px;z-index:8}.chapter-under button{border:1px solid #dfc08977;border-radius:22px;background:#172425e6;color:#f9e4c3;padding:10px 14px;font:600 10px var(--sans);text-transform:uppercase;letter-spacing:.075em;backdrop-filter:blur(9px)}.chapter-under button:hover{background:#354343}.chapter-under button:focus-visible{background:#354343}
.chapter[data-page="1"] .live-type,.chapter[data-page="9"] .live-type{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;text-align:center;color:#455035;font-family:var(--serif);padding:0 4%;pointer-events:none}.live-type>*{margin:0}.live-type .tiny{font-size:clamp(9px,2.2vw,17px);font-weight:600;line-height:1.22}.live-type .parents{font-size:clamp(18px,4vw,30px);line-height:1.08;font-weight:600}.live-type .script{font-family:var(--script);color:var(--maroon);font-size:clamp(43px,10.2vw,84px);line-height:.96;font-weight:400}.live-type .date{font-size:clamp(18px,4.2vw,32px);font-weight:600;line-height:1.06}.live-type .divider{font-size:clamp(11px,2.2vw,17px);color:#5d6141;line-height:1}.live-type .body{font-size:clamp(10px,2.24vw,18px);font-weight:600;line-height:1.16}.live-type .bottom{font:400 clamp(22px,5vw,38px) var(--script);color:var(--maroon)}.live-type.page1{justify-content:space-between;padding-top:20%;padding-bottom:7%}.live-type.page9{justify-content:space-between;padding-top:41%;padding-bottom:17%}.live-type.page9 .script{font-size:clamp(46px,11vw,88px)}.live-type.page9 .tiny{letter-spacing:.05em}.live-type.page9 .body{font-size:clamp(12px,2.8vw,22px)}.live-type.page9 .date{font-size:clamp(13px,2.8vw,22px)}.chapter.has-live-text .art-vignette{opacity:.25}
.gallery{position:relative;background:linear-gradient(145deg,#e6d5b7,#fff2d9);color:#26332d;padding:90px clamp(14px,4vw,40px) 100px}.gallery-head{text-align:center;margin:0 auto 35px;max-width:520px}.gallery-head .eyebrow{color:#88653a}.gallery h2{font:600 clamp(48px,9vw,86px)/1 var(--serif);margin:8px 0 14px}.gallery h2 i{font-family:var(--script);font-style:normal;color:#885122;font-weight:400}.gallery p{font:400 20px/1.25 var(--serif)}.photo-grid{width:min(100%,1050px);margin:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:start}.photo{margin:0;aspect-ratio:3/4;overflow:hidden;box-shadow:0 9px 30px #3028173b;border:5px solid #fff8eb}.photo:nth-child(even){margin-top:24px}.photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.2s}.photo:hover img{transform:scale(1.05)}.closing{min-height:90svh}.closing-sparkle{color:var(--gold);font-size:28px}.closing h2{font:500 clamp(43px,8vw,86px)/.95 var(--serif);max-width:810px;margin:26px 0 5px}.closing h2 em{font-family:var(--script);color:var(--gold);font-style:normal}.closing p:not(.eyebrow){font:400 clamp(19px,3vw,26px)/1.2 var(--serif);max-width:570px}.closing .signature{margin-top:24px}.closing .signature strong{font-weight:600;font-size:1.25em}.closing .tag{font:35px var(--script);color:var(--gold);margin-top:45px}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:50;height:calc(var(--foot) + env(safe-area-inset-bottom));padding:6px 8px calc(7px + env(safe-area-inset-bottom));background:#101b1ff5;border-top:1px solid #d9b67447;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;box-shadow:0 -10px 34px #0f171b55}.bottom-nav button{border:0;background:transparent;color:#e9dbc4;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;font:600 10px var(--sans)}.bottom-nav button svg{height:20px;width:20px}.bottom-nav .rsvp-btn{background:linear-gradient(145deg,#ecd2a0,#c69a50);color:#1b2322;border-radius:6px}.bottom-nav button:hover{color:#fff0bc}
.modal-shell[hidden]{display:none}.modal-shell{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:18px}.modal-backdrop{position:absolute;inset:0;background:#030c0dde;backdrop-filter:blur(7px)}.modal-content{position:relative;z-index:1;width:min(100%,460px);background:linear-gradient(160deg,#faf0de,#e6d3b0);color:#2c3730;border:1px solid #c6a36b;border-radius:14px;padding:31px 24px;box-shadow:0 30px 100px #0009}.modal-close{position:absolute;right:14px;top:8px;font-size:30px;background:none;border:0;color:#304137}.modal-content .eyebrow{color:#876a41;font-size:10px}.modal-content h2{font:600 50px/1 var(--serif);margin:11px 0 23px}.modal-content form{display:grid;gap:14px}.modal-content label{display:grid;gap:7px;font:600 12px var(--sans)}.modal-content input,.modal-content select{width:100%;height:44px;padding:8px 12px;border-radius:6px;border:1px solid #c3ae8e;background:#fffaf2;color:#182625;font:400 15px var(--sans)}.modal-submit{margin-top:6px}.modal-hint{color:#6b685b;font:400 12px/1.5 var(--sans)}.toast{position:fixed;z-index:90;bottom:calc(var(--foot) + 25px);left:50%;max-width:calc(100vw - 28px);width:max-content;transform:translate(-50%,15px);padding:13px 18px;border-radius:8px;background:#253637;color:#fff1d9;border:1px solid #d2b273;box-shadow:0 8px 30px #0007;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;font:500 12px var(--sans)}.toast.visible{opacity:1;transform:translate(-50%,0)}
@keyframes rotateGlow{50%{transform:rotate(25deg);filter:drop-shadow(0 0 15px #d2b16f)}}@keyframes slowPush{from{transform:scale(1.007)}to{transform:scale(1.035)}}@keyframes ambientPan{to{transform:translate(3%,-2%) scale(1.05)}}@keyframes bob{50%{transform:translateY(6px)}}@keyframes sweep{0%,12%,100%{opacity:0;transform:translateX(-110%) rotate(-8deg)}38%,52%{opacity:.65}65%{opacity:0;transform:translateX(110%) rotate(-8deg)}}@keyframes twinkle{0%,100%{opacity:0;transform:scale(.3)}40%,60%{opacity:.85;transform:scale(1.2)}}@keyframes petalFall{from{transform:translateY(-40px) rotate(0);opacity:0}10%{opacity:.74}90%{opacity:.8}to{transform:translateY(110svh) translateX(40px) rotate(420deg);opacity:0}}
@media(max-width:700px){.topbar-label{display:none}.intro{min-height:100svh}.intro-flourish{margin-bottom:20px}.kicker{font-size:9px;max-width:290px}.family{max-width:280px}.hero-copy{font-size:19px}.hero-date{font-size:15px}.intro h1{font-size:clamp(60px,16vw,100px)}.intro h1 span{display:block;font-size:38px;margin:0}.chapter{padding-top:92px;padding-bottom:122px;min-height:calc(100svh - 3px)}.art-stage{width:min(100%,min(68svh,650px))}.chapter-label{top:72px}.chapter-under{bottom:calc(var(--foot) + 19px)}.chapter-under button{font-size:9px}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.photo:nth-child(even){margin-top:20px}.gallery{padding-top:60px}.gallery h2{font-size:58px}.closing h2{font-size:49px}.closing{padding-left:26px;padding-right:26px}}
@media(max-height:720px){.art-stage{width:min(100%,min(63svh,610px))}.chapter-label{top:65px}.chapter{padding-top:65px}.intro{padding-top:70px}.intro-flourish{margin:3px 0 12px}.scroll-cue{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.art-img{transform:none}}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
