:root{--sky:#d9edf7;--green:#182d09;--sage:#4c583e;--cream:#f2ede0;--wine:#590016;--sans:Arial,Helvetica,sans-serif;--serif:'Italianno',Georgia,'Times New Roman',serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;background:linear-gradient(180deg,#d9edf7 0%,#e6f2f7 40%,#d6eaf3 75%,#edf5f6 100%);color:var(--green);font-family:var(--serif);overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}a:focus-visible,button:focus-visible{outline:3px solid #9c5a72;outline-offset:7px}button{font:inherit}em{font-weight:400}h1,h2,h3,p{margin:0}a.paper{text-decoration:none}main{position:relative;z-index:2}#snow{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:8}.sky{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}.cloud{position:absolute;width:170px;height:44px;background:#fff;border-radius:90px;opacity:.55;filter:blur(1px);animation:drift 45s linear infinite}.cloud:before,.cloud:after{content:'';position:absolute;background:inherit;border-radius:50%;width:70px;height:70px;left:24px;bottom:8px}.cloud:after{width:100px;height:100px;left:65px;bottom:1px}.c1{top:19%;left:4%;transform:scale(.7);animation-duration:52s}.c2{top:62%;left:62%;transform:scale(.52);animation-delay:-22s}.c3{top:36%;left:77%;transform:scale(.8);animation-duration:66s;animation-delay:-32s}.c4{top:83%;left:18%;transform:scale(.45);animation-duration:61s;animation-delay:-5s}.c5{top:7%;left:44%;transform:scale(.35);animation-duration:70s;animation-delay:-15s}@keyframes drift{0%{translate:-220px 0}100%{translate:100vw 0}}.top{position:absolute;top:0;left:0;width:100%;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:27px 5.5%;font-family:var(--sans);font-size:12px}.monogram{text-decoration:none;font:italic 32px var(--serif);position:relative}.monogram span{font-size:12px;position:absolute;top:-3px;right:-16px;color:var(--sage)}nav{display:flex;gap:35px}nav a{text-decoration:none;border-bottom:1px solid transparent;padding-bottom:5px}nav a:hover{border-color:var(--wine)}.motion{border:0;background:transparent;font-family:var(--sans);font-size:11px;color:var(--sage);cursor:pointer;padding:10px}.motion span{margin-left:10px}.skip{position:fixed;top:-100px;z-index:50;background:var(--cream);padding:15px}.skip:focus{top:8px}.welcome{text-align:center;min-height:100vh;padding:140px 24px 65px;display:flex;flex-direction:column;align-items:center}.eyebrow{font:10px var(--sans);letter-spacing:3px;text-transform:uppercase;color:var(--sage)}h1{font-size:clamp(57px,7.2vw,99px);line-height:1.06;letter-spacing:-4px;margin:29px 0 20px}h1 em{color:var(--wine)}.intro{font-size:17px;color:var(--sage)}.envelope{position:relative;border:0;background:none;width:360px;height:232px;padding:0;margin:56px 0 18px;cursor:pointer;filter:drop-shadow(0 18px 18px #36526823);animation:bob 6s ease-in-out infinite}.envelope-body{position:absolute;inset:53px 0 0;background:var(--cream);border:1px solid #182d0920;border-radius:2px}.envelope-lining{position:absolute;inset:55px 6px 55px;background:url(assets/winter-forest.png) center 76%/100% auto}.flap{position:absolute;left:0;top:0;width:100%;height:135px;background:var(--wine);clip-path:polygon(50% 0,100% 40%,50% 100%,0 40%);transform-origin:center 40%;transition:transform .7s,opacity .6s}.seal{position:absolute;top:104px;left:calc(50% - 29px);width:58px;height:58px;background:var(--green);border:1px solid var(--cream);border-radius:50%;color:var(--cream);font:italic 35px var(--serif);display:grid;place-items:center;box-shadow:0 0 0 4px var(--green);transition:transform .6s,opacity .6s}.envelope-caption{position:absolute;bottom:17px;left:0;width:100%;font:italic 23px var(--serif)}.envelope-caption span{display:block;font:8px var(--sans);letter-spacing:1.5px;margin-top:9px}.envelope:hover{filter:drop-shadow(0 22px 21px #36526836)}.envelope.open .flap{transform:rotateX(165deg);opacity:.35}.envelope.open .seal{transform:scale(.8);opacity:0}.tap-hint{font:11px var(--sans);letter-spacing:.6px;color:var(--sage)}.tap-hint span{color:var(--wine);margin-left:8px;font-size:20px}.scroll-hint{margin-top:52px;text-decoration:none;font:10px var(--sans);letter-spacing:1.4px;text-transform:uppercase;color:var(--sage)}.scroll-hint span{display:block;font-size:24px;margin-top:13px;animation:nudge 2s infinite}@keyframes bob{50%{transform:translateY(-9px) rotate(-1deg)}}@keyframes nudge{50%{transform:translateY(6px)}}.chapter{width:min(1080px,88%);margin:auto;display:flex;gap:110px;align-items:center;justify-content:center;padding:120px 0}.chapter-copy{flex:1;max-width:420px}.chapter-copy h2,.center-copy h2{font-size:clamp(35px,4.3vw,58px);line-height:1.11;letter-spacing:-1.5px;margin:25px 0}.chapter-copy h2 em,.center-copy h2 em{color:var(--wine)}.chapter-copy>p:not(.eyebrow):not(.signature){font-size:17px;line-height:1.85;color:var(--sage);max-width:350px}.signature{font-style:italic;font-size:26px;margin-top:32px}.paper{display:block;position:relative;transition:transform .35s,filter .35s;filter:drop-shadow(0 16px 19px #36526825);will-change:transform}.paper:hover{filter:drop-shadow(0 23px 24px #36526839)}.paper .tiny{font:9px var(--sans);letter-spacing:1.8px;display:block}.invitation{flex:0 0 390px;background:var(--cream);text-align:center;padding:34px 29px 24px;clip-path:polygon(7% 0,93% 0,100% 5%,100% 95%,93% 100%,7% 100%,0 95%,0 5%)}.invitation:before{content:'';position:absolute;inset:10px;border:1px solid #59001655;clip-path:polygon(5% 0,95% 0,100% 4%,100% 96%,95% 100%,5% 100%,0 96%,0 4%);pointer-events:none}.invitation .tiny{color:var(--wine);font-size:8px}.invitation h3{font-size:51px;line-height:1.12;margin:28px 0 17px;font-weight:400}.invitation h3 span{font-size:32px}.rule{display:block;width:68px;height:1px;background:var(--wine);margin:20px auto}.muted{font-size:12px;color:var(--sage)}.parents{font-size:22px;margin:12px 0 28px}.date{font:10px var(--sans);letter-spacing:1px}.time{font-size:18px;margin:10px 0 23px}.venue{font-size:23px;color:var(--wine)}.address{font-size:14px;line-height:1.5;margin-top:10px}.forest-strip{height:78px;background:url(assets/winter-forest.png) center 88%/100% auto no-repeat;margin-top:25px}.card-cta{display:block;font:9px var(--sans);letter-spacing:1.5px;text-transform:uppercase;margin-top:20px;color:var(--wine)}.card-cta span{font-size:17px;padding-left:9px}.card-cta.light{color:var(--cream)}.registry{flex:0 0 350px;border-radius:175px 175px 0 0;background:var(--green);padding:50px 23px 42px;text-align:center;color:var(--cream)}.forest-medallion{display:block;width:69px;height:69px;border-radius:50%;background:url(assets/winter-forest.png) 28% 84%/190% auto;margin:auto}.registry .tiny{margin:24px 0 11px;font-size:8px}.registry h3{font-weight:400;font-size:54px}.registry-title{font-size:29px;margin-top:20px}.registry .rule{background:#f2ede064;margin:28px auto}.registry p:not(.registry-title){font-size:17px;line-height:1.6}.registry .card-cta{background:var(--wine);border:1px solid #f2ede076;padding:16px 7px;margin:32px 12px}.signed{display:block;font-style:italic;font-size:18px;margin-top:30px}.snow-mark{display:block;font-size:50px;font-weight:100;color:#4c583e70;margin-top:40px}.rsvp-section,.books-section{padding:110px 24px;text-align:center}.center-copy h2{margin:24px 0 52px}.rsvp{max-width:790px;margin:auto;display:flex;align-items:center;gap:40px;background:var(--wine);color:var(--cream);border-radius:100px;padding:49px 48px}.rsvp>.forest-medallion{width:200px;height:200px;flex-shrink:0;box-shadow:0 0 0 5px var(--wine),0 0 0 6px var(--cream);margin:0}.rsvp-copy{flex:1}.rsvp h3{font-size:55px;font-weight:400}.deadline{font-size:21px;margin:10px 0 29px}.rsvp-copy>p:not(.deadline){font-size:17px;line-height:1.5}.rsvp-copy p.small{font-size:14px;margin:18px 0}.rsvp .card-cta{border-top:1px solid #f2ede059;padding-top:20px;margin:20px 25px 0}.below-note{font-style:italic;font-size:16px;color:var(--sage);margin-top:30px}.ticket{width:520px;flex-shrink:0;display:flex;background:var(--sage);color:var(--cream);clip-path:polygon(0 0,100% 0,100% 39%,98% 40%,96% 44%,95% 50%,96% 56%,98% 60%,100% 61%,100% 100%,0 100%,0 61%,2% 60%,4% 56%,5% 50%,4% 44%,2% 40%,0 39%)}.ticket-main{flex:1;text-align:center;padding:34px 24px}.ticket-main .tiny{font-size:8px}.ticket h3{font-size:44px;line-height:1.1;font-weight:400;margin:22px 0}.ticket-main p{font-size:16px;line-height:1.5}.stub{width:138px;flex-shrink:0;background:var(--cream);color:var(--green);border-left:2px dashed var(--sage);padding:37px 16px 25px;text-align:center;margin-right:21px}.stub .forest-medallion{width:62px;height:62px;margin-bottom:30px}.stub>span:not(.forest-medallion){font-size:16px;line-height:1.5}.stub i{display:block;width:50px;height:1px;background:var(--wine);margin:23px auto}.stub small{font:9px var(--sans);letter-spacing:2px;color:var(--wine)}.book{display:flex;max-width:810px;margin:0 auto;background:var(--green);padding:14px;clip-path:polygon(0 4%,23% 0,50% 5%,77% 0,100% 4%,100% 96%,77% 92%,50% 100%,23% 92%,0 96%);text-align:center}.book-page{width:50%;background:var(--cream);padding:54px 33px 39px}.book-page:first-child{border-right:1px solid #4c583e67;clip-path:polygon(0 4%,47% 0,100% 5%,100% 100%,47% 93%,0 96%)}.book-page:last-child{clip-path:polygon(0 5%,53% 0,100% 4%,100% 96%,53% 93%,0 100%)}.book .tiny{font-size:8px}.book h3{font-size:46px;line-height:1.1;color:var(--wine);font-weight:400;margin:26px 0}.book-page>p:not(.book-message):not(.signed){font-size:19px;line-height:1.5}.book-message{font-size:21px;line-height:1.6;padding-top:20px}.book .signed{font-size:21px;line-height:1.5;color:var(--wine);margin:23px 0}.book .forest-strip{height:61px;margin-top:28px}.book .card-cta{font-size:8px}footer{text-align:center;padding:110px 24px 75px}footer>p:first-of-type{font-size:17px;color:var(--sage);margin-top:28px}footer h2{font-size:42px;line-height:1.4;font-weight:400;margin:21px 0 30px}footer h2 em{color:var(--wine)}.footer-star{font-size:35px;color:var(--sage)}.footer-date{font:9px var(--sans);letter-spacing:2px}footer a{display:inline-block;font:10px var(--sans);margin-top:48px;text-underline-offset:5px;color:var(--sage)}.reveal{opacity:1}.js .reveal{opacity:0;transform:translateY(55px) rotate(3deg);transition:opacity 1s,transform 1s cubic-bezier(.2,.8,.2,1)}.js .reveal.in{opacity:1;transform:translateY(0)}.js .tilt-right.in{transform:rotate(3deg)}.js .tilt-left.in{transform:rotate(-3deg)}.js .paper.in:hover{transform:translateY(-7px) rotate(0)}dialog{border:1px solid #4c583e40;border-radius:10px;background:var(--cream);color:var(--green);width:min(500px,90vw);padding:43px 37px;box-shadow:0 20px 80px #182d092f;max-height:85vh;overflow:auto}dialog::backdrop{background:#28445a55;backdrop-filter:blur(5px)}dialog h2{font-size:34px;line-height:1.2;margin:18px 0 24px;font-weight:400;color:var(--wine)}dialog p{font-size:17px;line-height:1.7;margin:15px 0}dialog a{display:inline-block;background:var(--green);color:var(--cream);padding:13px 19px;font:11px var(--sans);text-decoration:none;margin:14px 8px 0 0;border-radius:3px}.close{position:absolute;right:13px;top:9px;border:0;background:none;font-size:29px;color:var(--sage);cursor:pointer;padding:6px}.paused .cloud,.paused .envelope,.paused .scroll-hint span{animation-play-state:paused}@media(max-width:900px){.chapter{gap:50px}.invitation{flex-basis:350px}.ticket{width:460px}.chapter-copy h2{font-size:43px}.rsvp{max-width:720px}.rsvp>.forest-medallion{width:160px;height:160px}}@media(max-width:680px){.top{padding:22px 7%}nav{gap:17px;font-size:10px}nav a:first-child{display:none}.motion{font-size:9px;padding-right:0}.welcome{padding-top:125px;min-height:850px}.welcome .eyebrow{font-size:8px;letter-spacing:2px}h1{font-size:62px;letter-spacing:-2.8px}.intro{font-size:15px}.envelope{width:300px;height:210px;margin-top:42px}.flap{height:124px}.seal{top:95px}.envelope-caption{bottom:13px;font-size:21px}.chapter{flex-direction:column;width:85%;gap:47px;padding:83px 0}.chapter-copy{width:100%;max-width:400px;text-align:center}.chapter-copy>p:not(.eyebrow):not(.signature){margin:auto;font-size:16px}.chapter-copy h2,.center-copy h2{font-size:43px}.invitation{width:min(355px,100%);flex:auto}.registry-section .chapter-copy{order:-1}.registry{width:min(335px,100%);flex:auto}.snow-mark{display:none}.rsvp-section,.books-section{padding:80px 20px}.rsvp{flex-direction:column;gap:30px;border-radius:65px;padding:42px 24px;max-width:360px}.rsvp>.forest-medallion{width:126px;height:126px}.rsvp h3{font-size:49px}.deadline{font-size:20px}.rsvp-copy>p:not(.deadline){font-size:16px}.rsvp-copy p.small{font-size:13px}.below-note{font-size:14px;max-width:280px;margin:30px auto 0;line-height:1.6}.ticket{width:min(480px,108%)}.ticket-main{padding:32px 19px}.ticket-main h3{font-size:37px}.ticket-main .tiny{font-size:7px;letter-spacing:1px}.ticket-main p{font-size:14px}.stub{width:109px;padding:30px 8px;margin-right:16px}.stub>span:not(.forest-medallion){font-size:14px}.stub .forest-medallion{width:54px;height:54px}.card-cta{font-size:8px;letter-spacing:1px}.book{padding:8px;width:100%}.book-page{padding:41px 13px 29px}.book h3{font-size:32px}.book .tiny{font-size:6px;letter-spacing:.8px}.book-page>p:not(.book-message):not(.signed){font-size:15px}.book-message{font-size:15px;line-height:1.55;padding-top:0}.book .signed{font-size:15px;margin-top:16px}.book .card-cta{font-size:6px;letter-spacing:.5px}.book .card-cta span{font-size:12px;padding-left:3px}.book .forest-strip{height:45px}footer{padding-top:70px}footer h2{font-size:30px}.footer-date{font-size:8px;letter-spacing:1px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.cloud,.envelope,.scroll-hint span{animation:none}#snow{display:none}.js .reveal{opacity:1;transform:none;transition:none}.flap,.seal,.paper{transition:none}}
/* RSVP and private host dashboard */
#rsvp-dialog{width:min(600px,calc(100% - 32px));max-height:90vh;overflow:auto}form label{display:block;margin:18px 0;font-size:15px}form input,form select,form textarea{display:block;width:100%;box-sizing:border-box;margin-top:7px;padding:12px;border:1px solid #b7c1ac;border-radius:8px;background:#fffdf7;color:#182d09;font:inherit}form label span{font-size:12px}form [hidden],[hidden]{display:none!important}.honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.submit-rsvp,.admin-actions button{display:inline-block;border:0;border-radius:12px;padding:14px 22px;background:#182d09;color:#f2ede0;font:inherit;cursor:pointer;text-decoration:none!important}.submit-rsvp:disabled{opacity:.65;cursor:default}#rsvp-status{font-weight:600;line-height:1.5}.host-link{display:block;margin-top:24px;font-size:12px;opacity:.7}.admin-page{padding:40px 20px}.admin-panel{max-width:1100px;margin:auto;padding:32px;background:#f2ede0;border-radius:24px}.admin-panel h1{font-size:clamp(40px,8vw,70px);margin:30px 0}.admin-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.totals{padding:20px;background:#dce5d4;border-radius:12px;margin:20px 0;font-weight:600}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th,td{padding:14px;border-bottom:1px solid #c9d0c0;vertical-align:top;overflow-wrap:anywhere;min-width:90px}th{color:#4c583e;font-size:13px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #590016;outline-offset:3px}
/* Fixed storybook scenery, softened into the powder-blue sky. */
body{background:#d9edf7}
.winter-background{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:#d9edf7}
.winter-background img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:.72}
.winter-background::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,#d9edf7 0%,#d9edf78c 15%,#d9edf73d 45%,#d9edf75c 100%)}
.sky{z-index:1}
#shooting-stars{position:fixed;inset:0;z-index:12;pointer-events:none;overflow:hidden}
.shooting-star{position:absolute;top:7vh;left:8vw;width:clamp(65px,13vw,160px);height:2px;border-radius:99px;background:linear-gradient(to right,transparent,#fff5cd 78%,#fffdf3);filter:drop-shadow(0 0 5px #ffefac);transform-origin:right center}
.shooting-star::after{content:'';position:absolute;right:-3px;top:-2px;width:6px;height:6px;background:#fff9d9;border-radius:50%;box-shadow:0 0 9px 3px #fff4bf99}
@media(max-width:680px){.winter-background img{inset:auto 0 0;width:100%;height:76vw;object-fit:fill}.winter-background::after{background:linear-gradient(to bottom,#d9edf7 0%,#d9edf7 48%,#d9edf700 75%,#d9edf75c 100%)}}
@media(prefers-reduced-motion:reduce){#shooting-stars{display:none}}
@font-face{font-family:'Italianno';src:url('assets/fonts/italianno.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
/* Italianno is the main invitation face; utility labels stay clear. */
body{font-size:26px;font-synthesis:none}
h1,h2,h3,em,.signature,.signed,.below-note,.envelope-caption,.monogram,.seal{font-weight:400;font-style:normal;letter-spacing:0}
h1{line-height:1.04}.chapter-copy h2,.center-copy h2{letter-spacing:0;line-height:1.12}
.intro,.chapter-copy>p:not(.eyebrow):not(.signature),.registry p:not(.registry-title),.rsvp-copy>p:not(.deadline),.ticket-main p,dialog p,footer>p:first-of-type{font-size:28px;line-height:1.35}
.signature,.signed{font-size:34px}.envelope-caption{font-size:32px}.monogram{font-size:42px}.seal{font-size:44px}
.invitation h3{font-size:64px}.invitation h3 span{font-size:44px}.parents{font-size:34px}.muted{font-size:23px}.time{font-size:28px}.venue{font-size:34px}.address{font-size:25px;line-height:1.25}
.registry-title{font-size:40px}.registry .signed{font-size:30px}.deadline{font-size:31px}.rsvp-copy p.small{font-size:25px;line-height:1.3}.below-note{font-size:27px}.stub>span:not(.forest-medallion){font-size:25px}.book-message{font-size:29px;line-height:1.3}.book .signed{font-size:29px;line-height:1.2}.book-page>p:not(.book-message):not(.signed){font-size:28px}dialog h2{font-size:46px}
form,form input,form select,form textarea,.submit-rsvp,.admin-page{font-family:var(--sans);font-size:16px}form p.small{font-size:14px}#rsvp-status{font-size:16px;line-height:1.5}.admin-page h1{font-family:var(--serif)}
.shooting-star{width:var(--streak-length,120px);height:var(--streak-width,1.5px);background:linear-gradient(to right,transparent,var(--streak-color,#fff5cd) 80%,#fffdf3);filter:drop-shadow(0 0 4px var(--streak-color,#ffefac))}
.shooting-star::after{width:var(--star-size,3px);height:var(--star-size,3px);right:calc(var(--star-size,3px) / -2);top:calc((var(--streak-width,1.5px) - var(--star-size,3px)) / 2);box-shadow:0 0 7px 2px #fff4bf80}
@media(max-width:680px){.intro,.chapter-copy>p:not(.eyebrow):not(.signature),.registry p:not(.registry-title),.rsvp-copy>p:not(.deadline),.ticket-main p{font-size:26px}.book-message{font-size:23px}.book .signed,.book-page>p:not(.book-message):not(.signed){font-size:23px}.book h3{font-size:40px}.envelope-caption{font-size:30px}.deadline{font-size:29px}}
/* Opening the envelope unlocks the invitation below. */
html.envelope-locked,html.envelope-locked body{height:100%;overflow:hidden;overscroll-behavior:none}
.envelope-locked #invitation-contents{display:none}.envelope-locked .scroll-hint{visibility:hidden;pointer-events:none}.envelope-locked .top nav{visibility:hidden}
.welcome{min-height:100svh;padding-top:110px;padding-bottom:42px}
.envelope-stage{position:relative;width:clamp(300px,46vw,530px);height:clamp(205px,30vw,340px);margin:30px 0 16px;flex-shrink:0;perspective:900px}
.envelope-stage .envelope{width:100%;height:100%;margin:0;transform-origin:50% 65%;transition:transform .9s cubic-bezier(.2,.8,.2,1),filter .5s}
.envelope-stage .envelope-body{inset:23% 0 0}.envelope-stage .envelope-lining{inset:24% 6px 22%}.envelope-stage .flap{height:58%;backface-visibility:visible;z-index:3}.envelope-stage .seal{top:45%;z-index:4;width:70px;height:70px;left:calc(50% - 35px)}.envelope-stage .envelope-caption{bottom:7%;z-index:2}
.envelope-stage .envelope.open{animation:none}.envelope-stage .envelope.open .flap{opacity:1;transform:rotateX(170deg);z-index:0;background:var(--wine)}
.envelope-stage .envelope.unpacked{transform:scale(.52) rotate(-5deg);filter:drop-shadow(0 8px 10px #36526823)}
.envelope-opened .scroll-hint{margin-top:25px}.tap-hint{font-size:13px;line-height:1.5;max-width:320px}
.unwrapping-pieces{position:fixed;inset:0;z-index:6;pointer-events:none;overflow:hidden}.unwrapping-pieces .flying-paper{position:absolute;transform-origin:50% 0;pointer-events:none;will-change:transform,opacity}
@media(max-width:680px){.welcome{padding-top:95px}.welcome h1{margin:15px 0 10px;font-size:62px}.envelope-stage{width:min(88vw,430px);height:min(57vw,280px);margin-top:25px}.envelope-stage .seal{width:58px;height:58px;left:calc(50% - 29px)}}
@media(max-height:740px){.envelope-locked .welcome{padding-top:85px;padding-bottom:15px}.envelope-locked .welcome h1{font-size:clamp(44px,10vh,70px);margin:12px 0}.envelope-locked .envelope-stage{width:min(75vw,51vh);height:min(49vw,33vh);margin:18px 0 12px}.envelope-locked .intro{font-size:24px}.envelope-locked .scroll-hint{display:none}}
@media(prefers-reduced-motion:reduce){.envelope-stage .envelope,.envelope-stage .flap{transition:none}.unwrapping-pieces{display:none}}
.envelope-locked .scroll-hint{display:none}.envelope-locked .welcome{padding-top:clamp(75px,11vh,110px);padding-bottom:20px}.envelope-locked .welcome h1{font-size:clamp(46px,9vh,94px);margin:16px 0}.envelope-locked .envelope-stage{width:min(88vw,54vh,530px);height:min(57vw,35vh,340px)}

/* One continuous top hinge: the closed flap covers the mouth completely. */
.envelope-stage .envelope{animation:none;isolation:isolate;perspective:1200px}
.envelope-stage .envelope-body{z-index:1;background:var(--cream);overflow:hidden}
.envelope-stage .envelope-body::after{content:'';position:absolute;inset:0;background:linear-gradient(145deg,transparent 49.7%,#182d0912 50%,transparent 50.3%),linear-gradient(215deg,transparent 49.7%,#182d0912 50%,transparent 50.3%);pointer-events:none}
.envelope-stage .envelope-lining{z-index:2;inset:23% 1px 46%;border-radius:2px;background-position:center 76%}
.envelope-stage .flap{top:23%;height:45%;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;transform:rotateX(0deg);backface-visibility:visible;z-index:3;transition:none;background:linear-gradient(165deg,#faf7ee 0%,#f2ede0 56%,#e4dbc9 100%);opacity:1}
.envelope-stage .seal{top:calc(68% - 35px);transition:opacity .22s ease,transform .3s ease}
.envelope-stage .envelope-caption{z-index:4;bottom:6%}
.envelope-stage .envelope.open .flap{animation:none;transform:rotateX(180deg);z-index:0;background:linear-gradient(165deg,#faf7ee 0%,#f2ede0 56%,#e4dbc9 100%);opacity:1}
.envelope-stage .envelope.open .seal{opacity:0;transform:translateY(5px) scale(.92)}
.envelope-stage .envelope.unpacked{transform:scale(.52);filter:drop-shadow(0 8px 10px #36526823)}
@keyframes lift-envelope-flap{0%{transform:rotateX(0deg);z-index:4}49%{z-index:4}50%{z-index:0}100%{transform:rotateX(180deg);z-index:0}}
@media(max-width:680px){.envelope-stage .seal{top:calc(68% - 29px)}}
@media(prefers-reduced-motion:reduce){.envelope-stage .envelope.open .flap{animation:none;transform:rotateX(180deg);z-index:0}}

.envelope-stage .envelope-lining{opacity:0;transition:opacity .3s ease .45s}
.envelope-stage .envelope.open .envelope-lining{opacity:1}
@media(prefers-reduced-motion:reduce){.envelope-stage .envelope-lining{transition:none}}

/* Paper folds and a small embossed wax seal, retaining the original envelope. */
.envelope-stage .envelope-body{border-color:#b4a68c;border-radius:3px;background:linear-gradient(180deg,#d6cbb8 0%,#eee7d8 26%,#f2ede0 100%);box-shadow:inset 0 1px 2px #8b775c25,inset 0 -1px 1px #fff9ec}
.envelope-stage .envelope::before{content:'';position:absolute;inset:23% 0 0;z-index:3;border-radius:2px;clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%);background:linear-gradient(145deg,#fffaf0 0%,#f2ede0 48%,#ddd3c2 49.8%,#f7f2e7 50.4%,#ece4d4 100%);pointer-events:none;box-shadow:inset 0 -2px 3px #9e8d6c22}
.envelope-stage .flap{z-index:4;filter:drop-shadow(0 2px 1px #74624630)}
.envelope-stage .flap::after{content:'';position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 100%);background:repeating-linear-gradient(0deg,#ffffff0a 0 1px,#a3907105 1px 3px);box-shadow:inset 0 1px 1px #fffdf7}
.envelope-stage .envelope.open .flap{filter:drop-shadow(0 1px 1px #74624620)}
.envelope-stage .envelope-caption{z-index:5;color:#36452b;text-shadow:0 1px 0 #ffffff80}
.envelope-stage .seal{z-index:6;width:35px;height:35px;left:calc(50% - 17.5px);top:calc(68% - 17.5px);border:1px solid #718260;border-radius:47% 53% 49% 51% / 52% 46% 54% 48%;background:radial-gradient(circle at 33% 25%,#52663d,#243a16 68%,#17290d);box-shadow:0 2px 3px #403b343b,inset 0 0 0 2px #243917,inset 0 0 0 3px #69775266;font-size:17px;line-height:1;color:#e5e7d6;text-shadow:0 1px 1px #0d1d08}
@media(max-width:680px){.envelope-stage .seal{width:29px;height:29px;left:calc(50% - 14.5px);top:calc(68% - 14.5px);font-size:14px}}

/* The invitation is ready to explore immediately. */
.envelope-stage .envelope{cursor:default;transition:none}
.envelope-stage .envelope.open .flap{animation:none;transform:rotateX(180deg);z-index:0;transition:none}
.envelope-stage .envelope-lining{opacity:1;transition:none}
.envelope-stage .seal{display:none}

/* Smaller open envelope leaves the introduction unobstructed. */
.envelope-stage .envelope{transform:scale(.72);transform-origin:50% 50%}

/* Each clickable card gets one quiet handwritten pointer. */
.card-wrap{position:relative;min-width:0;margin-bottom:40px}
.invitation-wrap{flex:0 0 390px}.registry-wrap{flex:0 0 350px}
.ticket-wrap{flex:0 0 520px}
.rsvp-wrap{max-width:790px;margin:0 auto 40px}
.book-wrap{max-width:810px;margin:0 auto 40px}
.card-wrap>.paper{width:100%;max-width:100%;margin:0}
.tap-cue{position:absolute;right:12px;bottom:-43px;display:flex;align-items:center;gap:3px;color:var(--wine);font:32px/1 var(--serif);white-space:nowrap;pointer-events:none;text-shadow:0 1px 3px var(--cream);animation:tap-card-nudge 3.8s ease-in-out infinite}
.tap-cue svg{width:46px;height:36px;overflow:visible;flex:none}
.tap-cue path{stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.registry-wrap .tap-cue{animation-delay:-.6s}.rsvp-wrap .tap-cue{animation-delay:-1.2s}.ticket-wrap .tap-cue{animation-delay:-1.8s}.book-wrap .tap-cue{animation-delay:-2.4s}
@keyframes tap-card-nudge{0%,100%{transform:translateY(2px) rotate(-3deg)}50%{transform:translateY(-5px) rotate(-3deg)}}
.paused .tap-cue{animation-play-state:paused}
@media(max-width:900px){.invitation-wrap{flex-basis:350px}.ticket-wrap{flex-basis:460px}.rsvp-wrap{max-width:720px}}
@media(max-width:680px){.card-wrap{flex:auto;max-width:100%;margin-bottom:40px}.invitation-wrap{width:min(360px,100%)}.registry-wrap{width:min(340px,100%)}.ticket-wrap{width:min(380px,100%)}.rsvp-wrap{width:min(360px,100%);margin-left:auto;margin-right:auto}.book-wrap{width:min(440px,100%);margin-left:auto;margin-right:auto}.tap-cue{right:8px;font-size:30px;bottom:-40px}.tap-cue svg{width:40px;height:34px}}
@media(prefers-reduced-motion:reduce){.tap-cue{animation:none;transform:rotate(-3deg)}}
