:root{--ivory:#f7f4eb;--paper:#fffdf6;--gold:#a7823f;--gold-light:#dac58c;--ink:#39362d;--muted:#827c6e;--line:#d9cdb3}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--ivory);color:var(--ink);margin:0;font-family:Georgia,Times New Roman,serif}button{font:inherit;cursor:pointer}button:focus-visible{outline:3px solid var(--gold);outline-offset:6px}button{color:inherit}[hidden]{display:none!important}.intro{z-index:20;perspective:1200px;background:#e5dbc4;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.satin{filter:blur(5px);background:repeating-linear-gradient(133deg,#8d79564a 0%,#d9cbaa 9%,#faf3e1 17%,#d8c8a4 22%,#baa780 27%,#eee3c9 33%,#fffae9 37%,#c2ae88 43%);position:absolute;inset:-20%;transform:rotate(-8deg)scale(1.25)}.satin:after{content:"";background:radial-gradient(at 45% 45%,#0000 20%,#58442444 100%);position:absolute;inset:0}.intro-note{z-index:2;color:#665436;text-shadow:0 1px #fff9;font-size:clamp(15px,2.5vw,20px);font-style:italic;position:absolute;top:9%}.envelope-scene{perspective:1200px;filter:drop-shadow(0 22px 25px #4a381c44);width:min(77vw,440px);height:min(51vw,290px);margin-top:25px;position:relative}.envelope-back{background:linear-gradient(145deg,#d2c4a9,#f5efdf 70%);border:1px solid #b5a17b;border-radius:4px;position:absolute;inset:0}.envelope-front{z-index:4;clip-path:polygon(0 0,50% 51%,100% 0,100% 100%,0 100%);pointer-events:none;background:linear-gradient(33deg,#0000 49.6%,#b9a582 49.9%,#e9dfca 50.2%) 0/50% 100% no-repeat,linear-gradient(-33deg,#0000 49.6%,#b9a582 49.9%,#f2ead9 50.2%) 100%/50% 100% no-repeat;position:absolute;inset:0}.envelope-front:after{content:"";clip-path:polygon(0 100%,50% 48%,100% 100%);background:linear-gradient(165deg,#fff9ec,#e7dcc6);border-bottom:1px solid #b5a17b;position:absolute;inset:0}.flap{z-index:6;transform-origin:top;transform-style:preserve-3d;transition:transform 1.2s cubic-bezier(.4,0,.2,1);position:absolute;inset:0}.flap-face{clip-path:polygon(0 0,100% 0,50% 55%);background:linear-gradient(175deg,#fffcf2,#e5dac1);position:absolute;inset:0}.flap-face:after{content:"";clip-path:polygon(0 0,100% 0,50% 55%,50% 54%);background:#b5a17b;position:absolute;inset:0}.seal{z-index:7;background:radial-gradient(circle at 30% 25%,#fae0a2,#b48a43 60%,#80561f);border:2px solid #9a6c2c;border-radius:49% 46% 50% 44%;width:73px;height:73px;transition:opacity .3s,transform .5s;position:absolute;top:51%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 8px #5c3c3655,inset 0 0 0 4px #d6b270,inset 0 0 0 6px #977035}.seal span{letter-spacing:-5px;color:#61451c;text-shadow:0 1px #f9e0a0;padding-right:4px;font-size:26px}.tap-note{text-align:center;transition:opacity .3s;position:absolute;top:76%}.tap-note p{margin:8px 0 13px;font-size:18px;font-style:italic}.tap-note>span:last-child{letter-spacing:3px;color:#7b694d;font:9px Arial,sans-serif}.small-star{color:#937036;font-size:25px}.skip{color:#766448;background:0 0;border:0;border-bottom:1px solid #8d795666;padding:6px;font-size:12px;position:absolute;bottom:22px}.letter{z-index:2;background:var(--paper);border:1px solid var(--gold);outline-offset:-10px;transform-origin:bottom;opacity:0;outline:1px solid #c4ab72;flex-direction:column;justify-content:center;align-items:center;width:84%;height:120%;transition:transform 1.5s cubic-bezier(.25,.1,.2,1),height 1.5s;display:flex;position:absolute;bottom:5%;left:8%;transform:translateY(0)scaleY(.72);box-shadow:0 8px 30px #6b542328}.letter:after{content:"";pointer-events:none;border:1px solid #d8c69f;position:absolute;inset:15px}.letter-logo{mix-blend-mode:multiply;width:48%}.letter-kicker{letter-spacing:2px;margin:8px 0;font:7px Arial,sans-serif}.letter-tag{color:var(--gold);font-size:clamp(13px,2.8vw,20px);font-style:italic}.ornament{color:var(--gold);background:var(--paper);z-index:1;padding:0 10px;font-size:22px;position:absolute;left:50%;transform:translate(-50%)}.ornament.bottom{bottom:0;transform:translate(-50%)rotate(180deg)}.opening .seal{opacity:0;pointer-events:none;transform:translate(-50%,-50%)scale(.8)}.opening .tap-note{opacity:0}.flap-behind .flap{z-index:1}.opening .letter{opacity:1}.paper-focus .letter{z-index:8;height:160%;transform:translateY(-22%)scale(1.35)}.intro.leaving{opacity:0;pointer-events:none;transition:opacity .85s}.masthead{border-bottom:1px solid var(--line);letter-spacing:2px;justify-content:space-between;max-width:1040px;margin:auto;padding:25px 30px;font:10px Arial,sans-serif;display:flex}.masthead i{color:var(--gold);margin:0 7px;font:italic 16px Georgia}.masthead button{letter-spacing:1px;color:var(--muted);background:0 0;border:0;font:10px Arial,sans-serif}.welcome{text-align:center;padding:58px 20px 24px}.eyebrow{letter-spacing:3px;color:var(--muted);font:9px/1.8 Arial,sans-serif}.hero-logo{object-fit:cover;mix-blend-mode:multiply;width:110px;height:145px;margin:7px 0 0}h1{letter-spacing:-1.5px;margin:12px 0 10px;font-size:clamp(36px,6vw,62px);font-weight:400}.hero-tag{color:var(--gold);font-size:18px;font-style:italic}.fine-rule{color:var(--gold);justify-content:center;align-items:center;gap:15px;max-width:220px;margin:28px auto 0;display:flex}.fine-rule:before,.fine-rule:after{content:"";background:var(--line);flex:1;height:1px}.portrait{max-width:780px;margin:16px auto 0;padding:0 28px;position:relative}.portrait>img{object-fit:cover;object-position:center 45%;filter:grayscale();border:7px solid var(--paper);outline:1px solid var(--line);width:100%;max-height:680px;display:block}.portrait figcaption{text-align:center;color:#6d6555;padding:24px 5px 0;font-size:clamp(17px,2.5vw,23px);font-style:italic}.scratch-section{text-align:center;max-width:680px;margin:70px auto 0;padding:0 24px}h2{margin:12px 0 14px;font-size:clamp(29px,4vw,42px);font-weight:400;line-height:1.2}.scratch-instructions{color:var(--muted);margin-bottom:27px;font-size:13px;line-height:1.6}.scratch-card{isolation:isolate;background:var(--paper);border-radius:3px;position:relative;overflow:hidden;box-shadow:0 10px 35px #7c6a3e14}.reveal-content{border:1px solid var(--line);outline:1px solid var(--line);outline-offset:-12px;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:525px;padding:30px 25px 25px;display:flex}.reveal-content p{margin:0}.card-flourish{color:var(--gold);font-size:22px}.save-date{color:var(--gold);font-size:clamp(36px,6vw,49px);font-style:italic;line-height:1.1}.reveal-content h3{max-width:340px;margin:5px 0;font-size:clamp(23px,4vw,30px);font-weight:400;line-height:1.3}.tiny-rule{background:var(--line);width:50px;height:1px;margin:3px 0}.card-quote{font-size:15px;font-style:italic;line-height:1.5}.card-prompt{color:var(--muted);max-width:250px;font-size:12px;line-height:1.6}.wedding-date{color:var(--gold);font-size:clamp(17px,3vw,23px);line-height:1.5}.with-love{font-size:15px;font-style:italic}.scratch-card canvas{touch-action:none;cursor:crosshair;width:100%;height:100%;transition:opacity .8s;position:absolute;inset:0}.scratch-card.revealed canvas{opacity:0;pointer-events:none}.scratch-actions{color:var(--muted);justify-content:space-between;align-items:center;gap:15px;margin:17px 0;font:10px/1.6 Arial,sans-serif;display:flex}.scratch-actions button{border:0;border-bottom:1px solid var(--line);background:0 0;padding:7px 0;font-size:10px}.scratch-actions button span{color:var(--gold);margin-left:5px}.countdown-section{text-align:center;border-top:1px solid var(--line);max-width:650px;margin:55px auto 0;padding:60px 20px 48px}.section-star{color:var(--gold);font-size:30px}.countdown-section h2{color:var(--gold);font-style:italic}.countdown{justify-content:center;gap:14px;margin:30px auto;display:flex}.countdown>div{width:90px}.countdown strong{border:1px solid var(--line);background:var(--paper);color:var(--gold);padding:18px 7px;font-size:36px;font-weight:400;display:block}.countdown span{letter-spacing:2px;color:var(--muted);margin-top:13px;font:8px Arial,sans-serif;display:block}.countdown-note{color:var(--muted);font-size:14px;font-style:italic}footer{text-align:center;border-top:1px solid var(--line);margin-top:65px;padding:42px 20px 35px}footer p{color:var(--gold);font-size:24px;font-style:italic}footer>span{letter-spacing:2px;font:8px/2 Arial,sans-serif}footer button{color:var(--muted);text-underline-offset:4px;background:0 0;border:0;margin:26px auto 0;font-size:11px;text-decoration:underline;display:block}#confetti{pointer-events:none;z-index:30;position:fixed;inset:0;overflow:hidden}.confetto{background:var(--gold);width:6px;height:10px;animation:3.5s ease-in forwards fall;position:absolute;top:-20px}@keyframes fall{to{transform:translate(var(--drift), 105vh) rotate(750deg);opacity:0}}.noscript{z-index:50;background:var(--ivory);padding:60px;line-height:2;position:fixed;inset:0}@media (width>=900px){.welcome{padding-top:65px}.portrait>img{max-height:720px}.scratch-section{margin-top:85px}}@media (width<=480px){.masthead{padding:20px}.masthead button span{display:none}.welcome{padding-top:38px}.eyebrow{letter-spacing:2.4px;font-size:8px}.hero-logo{width:90px;height:120px}.portrait{padding:0 20px}.scratch-section{margin-top:52px;padding:0 18px}.reveal-content{gap:14px;min-height:535px;padding:26px 22px}.scratch-actions,.scratch-actions button{font-size:9px}.countdown{gap:10px}.countdown>div{width:68px}.countdown strong{font-size:29px}.countdown span{letter-spacing:1.3px;font-size:7px}.intro-note{top:13%}.tap-note{top:73%}.letter-kicker{letter-spacing:1px;font-size:6px}}.flap-face:after{display:none}.flap-face{filter:drop-shadow(0 2px 1px #9b835b)}.hero-logo,.letter-logo{filter:grayscale()contrast(2);mix-blend-mode:multiply}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.confetto{display:none}}.envelope-scene{filter:none;isolation:isolate;transition:transform 1.9s cubic-bezier(.22,.61,.36,1);transform:translateZ(0)}.envelope-back{box-shadow:0 20px 38px #49371c35,inset 0 0 25px #a18a5830}.paper-pocket{z-index:2;visibility:hidden;clip-path:polygon(0 -400%,100% -400%,100% 95%,0 95%);position:absolute;inset:0}.letter{opacity:0;transform-origin:50%;will-change:transform;backface-visibility:hidden;height:140%;transition:transform 2s cubic-bezier(.22,.61,.36,1),opacity .25s;transform:translateY(45%)}.letter:before{content:"";opacity:.3;pointer-events:none;background:repeating-linear-gradient(24deg,#0000 0 3px,#bcb49b0b 3px 4px);position:absolute;inset:0}.opening .letter{opacity:0;transform:translateY(45%)}.flap-behind .paper-pocket{visibility:visible}.flap-behind .letter{opacity:1}.flap{will-change:transform;transition:transform 1.4s cubic-bezier(.45,.05,.22,1)}.opening .flap{transform:rotateX(180deg)}.seal{transition:opacity .45s,transform .6s cubic-bezier(.22,.61,.36,1)}.opening .seal{opacity:0;transform:translate(-50%,-50%)scale(.9)}.intro-note,.tap-note,.skip{transition:opacity .5s}.opening .intro-note,.opening .skip{opacity:0;pointer-events:none}.paper-focus .letter{height:140%;transform:translate3d(0, var(--paper-lift,-150px), 0) scale(var(--paper-zoom,1.2));box-shadow:0 24px 80px #57411b22}.paper-focus .envelope-back,.paper-focus .envelope-front{opacity:0;translate:0 55px}.paper-focus .flap{opacity:0;transition:opacity 1.3s,transform 1.4s}.envelope-front{background:linear-gradient(110deg,#e6ddca,#fbf6e9 49%,#e7ddc6);box-shadow:inset 0 -6px 14px #9c84551c}@media (prefers-reduced-motion:reduce){.letter,.flap,.envelope-front,.envelope-back,.intro.leaving{will-change:auto;transition:none!important}}.envelope-scene:after{content:"";z-index:5;border:1px solid var(--gold);pointer-events:none;border-radius:3px;transition:opacity 1.2s;position:absolute;inset:0;box-shadow:inset 0 0 0 3px #dfc99355}.paper-focus .envelope-scene:after{opacity:0}.welcome{border:1px solid var(--line);outline-offset:-8px;background:var(--paper);outline:1px solid #ded2b844;max-width:600px;margin:38px auto 30px;padding:30px 24px 24px}.welcome h1{margin:5px 0 8px;font-size:clamp(34px,5.5vw,50px)}.welcome-line{color:var(--muted);margin:0 0 18px;font-size:15px;font-style:italic}.portrait{max-width:660px}.portrait>img{filter:none;max-height:630px}.scratch-section{max-width:496px;margin-top:48px}.scratch-section h2{font-size:clamp(27px,4vw,33px)}.scratch-instructions{margin-bottom:20px}.scratch-card{max-width:440px;margin-inline:auto}.reveal-content{outline-offset:-9px;gap:8px;min-height:390px;padding:23px 24px}.card-flourish{font-size:17px}.save-date{font-size:35px}.reveal-content h3{max-width:320px;margin:3px 0;font-size:23px;line-height:1.25}.card-quote{font-size:13px}.card-prompt{font-size:11px;line-height:1.45}.wedding-date{font-size:19px;line-height:1.4}.with-love{font-size:13px}.families{font-size:20px}.tiny-rule{margin:2px 0}.countdown-section{margin-top:35px;padding-top:35px}@media (width<=640px){.welcome{margin:25px 20px}.welcome .eyebrow{letter-spacing:1.8px;font-size:7px}.portrait{padding:0 20px}.scratch-section{margin-top:38px;padding:0 20px}.reveal-content{gap:8px;min-height:380px;padding:22px 19px}.save-date{font-size:32px}.reveal-content h3{font-size:21px}.card-quote{font-size:12px}.wedding-date{font-size:17px}.families{font-size:19px}}@media (prefers-reduced-motion:reduce){.envelope-scene:after{transition:none}}.reveal-content{gap:22px;min-height:205px;padding:32px 20px}.scratch-section h2{font-size:clamp(23px,3.5vw,29px);line-height:1.35}.closing-message{border-top:1px solid var(--line);max-width:420px;margin:32px auto 0;padding-top:25px}.closing-announcement{font-size:22px;line-height:1.5}.closing-quote{color:var(--muted);margin-bottom:28px;font-size:15px;font-style:italic;line-height:1.6}.closing-message .with-love{margin:0 0 9px}.closing-message .families{margin:0;font-size:23px}.envelope-back{background:linear-gradient(135deg,#bfae8b,#eee6d4 32%,#f6f0e2 65%,#c8b795);border-color:#ae8b4b}.envelope-front{background:linear-gradient(33deg,#0000 49.55%,#ac8c53 49.9%,#e9e0cf 50.3%) 0/50% 100% no-repeat,linear-gradient(-33deg,#0000 49.55%,#ac8c53 49.9%,#f5efdf 50.3%) 100%/50% 100% no-repeat,linear-gradient(110deg,#e6ddca,#fbf6e9 49%,#e7ddc6)}.envelope-front:after{filter:drop-shadow(0 -1px #af915b);background:linear-gradient(160deg,#fcf8ed,#eee5d1)}.flap-face{filter:drop-shadow(0 1.5px #aa884c);background:linear-gradient(175deg,#fffdf5,#f3eddf 72%,#d9c9a7)}.seal{border-color:#9c712d;border-radius:47% 50% 46% 49%;box-shadow:0 5px 9px #59402155,inset 0 0 0 3px #dfbf7c,inset 0 0 0 5px #99702d}.envelope-scene:after{border-color:#aa884c;box-shadow:inset 0 0 0 2px #e5d4ae66}.letter{outline-offset:-9px}.letter:after{border-color:#b89a5f;inset:16px}.ornament{font-size:28px}.ornament.top{top:-3px}.ornament.bottom{bottom:-3px}@media (width<=640px){.reveal-content{gap:19px;min-height:190px;padding:28px 17px}.save-date{font-size:34px}.wedding-date{font-size:17px}}@font-face{font-family:Great Vibes;src:url(/assets/fonts/GreatVibes-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}.welcome h1{letter-spacing:0;color:#ac8749;margin:10px 0 8px;font-family:Great Vibes,Brush Script MT,cursive;font-size:clamp(43px,8vw,68px);font-weight:400;line-height:1.3}footer .creator-credit{letter-spacing:1px;color:var(--muted);margin:32px auto 0;font:10px/1.6 Arial,sans-serif}.creator-credit span{color:var(--gold)}.creator-credit a{color:var(--gold);text-underline-offset:3px;text-decoration:none}.creator-credit a:hover,.creator-credit a:focus-visible{text-decoration:underline}.scratch-card canvas{cursor:url(/assets/airbrush-cursor.svg) 16 16,crosshair;transition:opacity 1.15s}.scratch-card:after{content:"";z-index:2;pointer-events:none;opacity:.38;background:linear-gradient(90deg,#0000,#fffce51a 34%,#fffde68c 50%,#fffce51a 66%,#0000);width:60%;animation:6s ease-in-out infinite gold-glint;position:absolute;inset:-25% auto -25% 0;transform:translate(-180%)skew(-18deg)}.scratch-card.has-scratched:after,.scratch-card.revealed:after{opacity:0;animation:none}@keyframes gold-glint{0%,15%{transform:translate(-180%)skew(-18deg)}48%,to{transform:translate(280%)skew(-18deg)}}@media (prefers-reduced-motion:reduce){.scratch-card:after{display:none}}.brand-lockup-wrapper{flex-direction:column;align-items:center;margin:0 auto;display:inline-flex;position:relative}.tap-tooltip{z-index:25;letter-spacing:1.4px;text-transform:uppercase;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font:600 9.5px/1 Arial,sans-serif;transition:opacity .4s cubic-bezier(.2,.8,.2,1),transform .4s cubic-bezier(.2,.8,.2,1),visibility .4s;animation:2.6s ease-in-out infinite tooltip-bounce;display:inline-flex;position:absolute;box-shadow:0 4px 14px #00000014}.tap-tooltip:hover{transform:translateY(-2px)scale(1.03)}.logo-tooltip{color:#8c6a2c;background:#fffdf6f5;border:1px solid #ac874973;top:6px;left:calc(50% + 46px);box-shadow:0 4px 14px #ac874929,0 1px 3px #0000000d}.logo-tooltip:after{content:"";background:#fffdf6f5;border-bottom:1px solid #ac874973;border-left:1px solid #ac874973;width:8px;height:8px;position:absolute;top:50%;left:-5px;transform:translateY(-50%)rotate(45deg)}.photo-tooltip{color:#3f4248;-webkit-backdrop-filter:blur(8px);background:#fffdf6eb;border:1px solid #6e727a59;top:22px;right:46px;box-shadow:0 6px 18px #0000002e}.tooltip-icon{color:#ac8749;font-size:11px;line-height:1;display:inline-block}.photo-tooltip .tooltip-icon{color:#72757d}@keyframes tooltip-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.tap-tooltip.is-hidden{visibility:hidden;opacity:0!important;pointer-events:none!important;transform:translateY(-8px)scale(.9)!important}@media (width<=600px){.logo-tooltip{letter-spacing:1px;padding:4px 9px;font-size:8.5px;top:4px;left:calc(50% + 36px)}.photo-tooltip{letter-spacing:1px;padding:4px 9px;font-size:8.5px;top:16px;right:32px}}@media (prefers-reduced-motion:reduce){.tap-tooltip{animation:none}}.hero-brand{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;outline:none;flex-direction:column;justify-content:center;align-items:center;width:fit-content;max-width:100%;margin:0 auto;padding:4px 24px;transition:transform .25s cubic-bezier(.2,.8,.2,1);display:inline-flex;position:relative;overflow:hidden}.hero-brand:focus-visible{outline:2px solid var(--gold);outline-offset:4px}.hero-brand:hover{transform:translateY(-1px)scale(1.01)}.hero-brand:active{transform:translateY(0)scale(.99)}.hero-brand:after{content:"";z-index:5;pointer-events:none;opacity:0;background:linear-gradient(90deg,#0000 0%,#fffce526 28%,#ffffffd9 48%,#fffde6 50%,#ffffffd9 52%,#fffce526 72%,#0000 100%);width:65%;position:absolute;inset:-45% auto -45% 0;transform:translate(-140%)skew(-18deg)}.hero-brand.shining:after{animation:1.5s ease-in-out forwards hero-mirror-glint}@keyframes hero-mirror-glint{0%{opacity:0;transform:translate(-140%)skew(-18deg)}12%{opacity:.95}88%{opacity:.95}to{opacity:0;transform:translate(210%)skew(-18deg)}}.hero-brand.shining .hero-logo{animation:1.5s ease-in-out logo-specular-flash}@keyframes logo-specular-flash{0%,to{filter:sepia(.16)saturate(.72)hue-rotate(-15deg)brightness(1.08)contrast(.88)}45%,55%{filter:sepia(.12)saturate(1.15)hue-rotate(-8deg)brightness(1.36)contrast(1.05)drop-shadow(0 0 14px #dcc48bbf)}}.hero-brand.shining h1{animation:1.5s ease-in-out text-gold-gleam}@keyframes text-gold-gleam{0%,to{color:#ac8749;text-shadow:none}45%,55%{color:#cca45b;text-shadow:0 0 16px #dcc48bd9,0 0 28px #fff8e1b3}}.letter-logo{cursor:pointer;transition:transform .25s}.letter-logo:hover{transform:scale(1.04)}.letter-logo.shining{animation:1.5s ease-in-out logo-specular-flash}.portrait{cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;transition:transform .3s cubic-bezier(.2,.8,.2,1)}.portrait:focus-visible{outline:2px solid var(--gold);outline-offset:6px}.portrait>img{transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s}.portrait:hover>img{transform:scale(1.006);box-shadow:0 10px 28px #322d261f}.portrait:active>img{transform:scale(.996)}.portrait.photo-popped>img{animation:.45s ease-out portrait-pulse}@keyframes portrait-pulse{0%{transform:scale(1)}40%{filter:grayscale()contrast(1.08)brightness(1.06);transform:scale(1.015)}to{filter:grayscale();transform:scale(1)}}#petal-shower{pointer-events:none;z-index:45;perspective:900px;position:fixed;inset:0;overflow:hidden}.petal{pointer-events:none;will-change:transform, opacity;animation:petal-fall var(--fall-duration,3.8s) cubic-bezier(.25, .46, .45, .94) forwards;position:absolute;top:-45px}.petal-inner{transform-style:preserve-3d;filter:drop-shadow(0 4px 6px #23232838);animation:petal-tumble var(--tumble-duration,2.8s) ease-in-out infinite alternate;transform-origin:50%;will-change:transform;display:block;box-shadow:inset 1px 1px 2px #ffffffbf,inset -1px -1px 2px #00000024}@keyframes petal-fall{0%{opacity:0;transform:translate(0,0)}10%{opacity:.92}80%{opacity:.9}to{transform:translate3d(var(--drift,60px), 112vh, 0);opacity:0}}@keyframes petal-tumble{0%{transform:rotateX(0deg) rotateY(0deg) rotateZ(var(--rot-start,0deg))}50%{transform:rotateX(140deg) rotateY(180deg) rotateZ(calc(var(--rot-start,0deg) + 90deg))}to{transform:rotateX(280deg) rotateY(360deg) rotateZ(calc(var(--rot-start,0deg) + 180deg))}}@media (prefers-reduced-motion:reduce){.hero-brand.shining:after,.hero-brand.shining .hero-logo,.hero-brand.shining h1,.portrait.photo-popped>img{animation:none}.petal{animation:2.5s ease-out forwards petal-fall-reduced}.petal-inner{animation:none}@keyframes petal-fall-reduced{0%{opacity:0;transform:translateY(0)}30%{opacity:.8}to{opacity:0;transform:translateY(50vh)}}}.envelope-scene{aspect-ratio:440/290;width:min(78vw,440px,50svh);height:auto}.envelope-front{clip-path:none;box-shadow:none;background:url(/assets/envelope-front.svg) 50%/100% 100% no-repeat}.envelope-front:after,.envelope-scene:after{display:none}.flap-face{clip-path:none;filter:drop-shadow(0 2px 2px #6b54232b);background:url(/assets/envelope-flap.svg) 50%/100% 100% no-repeat}.envelope-back{background:linear-gradient(155deg,#e1d5bf,#f8f2e4 48%,#d3c29f);border:1px solid #ab8b50;border-radius:1px;box-shadow:0 22px 35px #4f3b1d38}.letter,.paper-focus .letter{background-color:#fffdf5;background-image:url(/assets/card-border.svg?v=heirloom-20H);background-size:100% 100%;border:none;outline:none;width:72%;height:152%;left:14%}.paper-focus .paper-pocket{z-index:9;clip-path:none}.envelope-back,.envelope-front{transition:opacity .85s}.paper-focus .envelope-back,.paper-focus .envelope-front{translate:none}.envelope-away .envelope-back,.envelope-away .envelope-front,.envelope-away .flap{opacity:0;transition:opacity .85s}.paper-out .letter{transform:translate3d(0, var(--paper-exit,-20%), 0)}.paper-out .envelope-scene{transform:translate3d(0, var(--envelope-drop,0px), 0)}.paper-out .envelope-back,.paper-out .envelope-front,.paper-out .flap{opacity:1}.paper-focus .letter{transform:translate3d(0, var(--paper-lift,0px), 0) scale(var(--paper-zoom,1))}.letter-logo{object-fit:contain;width:44%;max-height:52%}.hero-logo,.letter-logo{filter:sepia(.16)saturate(.72)hue-rotate(-15deg)brightness(1.08)contrast(.88);mix-blend-mode:normal;object-fit:contain}.welcome .hero-logo{width:116px;height:116px;margin:6px 0 4px}.letter:after,.letter .ornament{display:none}.seal{background:radial-gradient(at 30% 20%,#ffe8aa,#c69b4c 48%,#996822 80%,#dfbd72);width:68px;height:68px;top:53%;box-shadow:0 5px 8px #44301855,inset 0 0 0 3px #e6c580,inset 0 0 0 5px #a87c36}.seal span{color:#74501f;text-shadow:0 1px #ffe4a3;font-size:25px;display:block}.satin{filter:blur(4px);background:radial-gradient(at 22% 12%,#fffbeddd,#0000 29%),repeating-linear-gradient(139deg,#b09b76 0%,#e2d3b4 8%,#fff8e7 15%,#e8d9bc 18%,#b8a07a 23%,#eadfc7 29%,#fffbed 34%,#baa581 41%)}.paper-stage{z-index:30;pointer-events:none;position:absolute;inset:0}.paper-detached .paper-pocket{visibility:hidden}.intro.leaving{transition:opacity .55s}:root{--page-gutter:20px;--content-width:600px;--section-gap:clamp(44px, 7vw, 64px);--muted:#6b6558}.masthead{max-width:720px;padding:20px var(--page-gutter);align-items:center;gap:16px}.welcome,.portrait{width:min(calc(100% - var(--page-gutter) * 2), var(--content-width));max-width:var(--content-width);margin-inline:auto}.welcome{margin-top:24px;margin-bottom:var(--section-gap);padding:32px 20px}.welcome .eyebrow{margin:0 0 10px}.welcome .hero-logo{margin:0 auto 8px;display:block}.welcome h1{margin:0 0 4px}.welcome-line{margin:0 0 16px}.hero-tag{margin:0}.welcome .fine-rule{margin-top:20px}.portrait{margin-top:0;margin-bottom:0;padding:0}.portrait figcaption{padding:24px 8px 0;line-height:1.5}.scratch-section{width:min(calc(100% - var(--page-gutter) * 2), 460px);max-width:460px;margin:var(--section-gap) auto 0;padding:0}.scratch-section .eyebrow{margin:0 0 8px}.scratch-section h2{margin:0 0 12px}.scratch-instructions{margin:0 0 20px}.scratch-actions{flex-wrap:wrap;gap:8px 16px;margin:12px 0 0}.countdown-section{width:min(calc(100% - var(--page-gutter) * 2), 460px);max-width:460px;margin:var(--section-gap) auto 0;padding:36px 0 0}.countdown-section .section-star{margin-bottom:12px;line-height:1;display:block}.countdown-section .eyebrow{margin:0 0 8px}.countdown-section h2{margin:0 0 22px}.countdown{gap:clamp(8px,2vw,14px);margin:0 auto 20px}.countdown>div{flex:1;min-width:0;max-width:90px}.countdown-note{margin:0;line-height:1.5}.closing-message{border-top:none;margin-top:24px;padding-top:22px}.closing-message .with-love{margin-bottom:8px}footer{width:min(calc(100% - var(--page-gutter) * 2), var(--content-width));margin:var(--section-gap) auto 0;border-top:none;padding:26px 0 24px;position:relative}footer:before{content:"";background:var(--line);width:min(50%,220px);height:1px;position:absolute;top:0;left:50%;transform:translate(-50%)}footer>p:first-child{margin:0 0 12px}footer button{margin-top:20px}footer .creator-credit{margin-top:24px}@media (width<=400px){:root{--page-gutter:16px}.welcome{padding:22px 14px}.welcome h1{font-size:clamp(36px,11vw,44px)}.scratch-actions{text-align:center;justify-content:center}}.countdown-section h2{font-family:Great Vibes,Brush Script MT,cursive;font-size:46px;font-style:normal;line-height:1.2}.countdown strong{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";background:linear-gradient(145deg,#fffdf6,#f9f4e9);border-color:#d5c49f;border-radius:3px;place-items:center;min-height:78px;padding:14px 5px;line-height:1;display:grid;box-shadow:inset 0 0 0 3px #fffdf6,0 4px 12px #8e753b08}.countdown span{margin-top:10px;line-height:1.5}.scratch-card{border-radius:4px;box-shadow:0 7px 24px #7c6a3e12}.scratch-actions button{min-height:38px;padding:8px 0}.masthead button{min-height:30px;padding:6px 0}.creator-credit a{padding:6px 2px;display:inline-block}.welcome{box-shadow:0 4px 18px #7c6a3e05}.save-date{font-size:clamp(40px,7vw,49px);line-height:1.15}.wedding-date{color:#88672f}.scratch-card.resetting canvas{transition:none}.reveal-content:focus-visible{outline-offset:-9px;outline:2px solid #88672f}@media (width<=400px){.countdown strong{min-height:68px;font-size:29px}.countdown span{letter-spacing:1px}}.eyebrow,.welcome .eyebrow{letter-spacing:1.7px;font-size:10px}.masthead{text-transform:uppercase;letter-spacing:1.7px;font-size:11px}.countdown span{letter-spacing:1px;font-size:10px}.scratch-actions,.scratch-actions button,footer button,footer .creator-credit{font-size:12px}footer>span{letter-spacing:1.4px;font-size:10px}.creator-credit a,.hero-tag,.letter-tag,footer>p:first-child{color:#88672f}.letter-kicker{letter-spacing:1.3px;text-align:center;font-size:8px}.creator-credit a:focus-visible{outline-offset:3px;outline:2px solid #88672f}@media (width<=400px){.welcome .eyebrow{letter-spacing:1.2px;font-size:10px}.countdown span{letter-spacing:.8px;font-size:9px}}
