:root{--ink:#4b2a7a;--ink-soft:#7856a8;--purple-50:#faf6ff;--purple-100:#f1e8ff;--purple-200:#e2d1ff;--purple-300:#c9adff;--purple-400:#a97cf5;--purple-500:#8b55e6;--purple-600:#6f3bc9;--cream:#fdfaff;--butter:#ffeaa6;--mint:#c4efdf;--env:#dcc8ff;--env-side:#cfb5fc;--env-back:#ac87e6;--env-flap:#e6d8ff;--f-display:"Pacifico", "Brush Script MT", cursive;--f-ui:"Fredoka", "Trebuchet MS", system-ui, sans-serif;--f-hand:"Caveat", "Segoe Print", cursive;--shadow-pop:0 5px 0 var(--purple-300), 0 14px 24px -10px #6f3bc973;--ease-out:cubic-bezier(.2, .8, .2, 1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;touch-action:manipulation}button,label,a{touch-action:manipulation}body{min-height:100vh;font-family:var(--f-ui);color:var(--ink);background-color:#efe8ff;background-image:linear-gradient(90deg,#b496ff33 50%,#0000 50%),linear-gradient(#b496ff33 50%,#0000 50%);background-size:46px 46px;margin:0;overflow-x:hidden}body.is-unlocked,.invite{background-color:var(--purple-50);background-image:radial-gradient(var(--purple-200) 2.5px, transparent 3px), radial-gradient(var(--purple-200) 2.5px, transparent 3px);background-position:0 0,17px 17px;background-size:34px 34px}[hidden]{display:none!important}img{max-width:100%;display:block}button{font:inherit;color:inherit}.sky{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.sky span{left:var(--x);color:var(--purple-300);opacity:.8;animation:drift var(--d) linear var(--t) infinite;font-size:22px;position:absolute;bottom:-40px}.sky span:nth-child(3n){color:#f3b6f0;font-size:16px}.sky span:nth-child(4n){font-size:30px}@keyframes drift{0%{transform:translate(0)rotate(0)}50%{transform:translate(24px,-55vh)rotate(20deg)}to{transform:translate(-12px,-112vh)rotate(-10deg)}}.lock{z-index:1;text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:28px 16px 36px;display:flex;position:relative}.lock-kicker{letter-spacing:.18em;text-transform:uppercase;color:var(--purple-500);margin:0;font-size:13px;font-weight:600}.lock-title{font-family:var(--f-display);color:var(--ink);text-shadow:3px 3px #fff;margin:6px 0 0;font-size:clamp(28px,7vw,40px);font-weight:400;line-height:1.25}.envelope{aspect-ratio:3/2;perspective:900px;width:min(330px,84vw);margin:34px auto 10px;animation:3.2s ease-in-out infinite bob;position:relative}@keyframes bob{0%,to{transform:translateY(0)rotate(-1.5deg)}50%{transform:translateY(-8px)rotate(1.5deg)}}.app.is-opening .envelope{animation-play-state:paused}.env-back{background:var(--env-back);border-radius:14px;position:absolute;inset:0;box-shadow:0 22px 40px -18px #6432b48c}.env-letter{z-index:2;background:repeating-linear-gradient(transparent 0 17px, var(--purple-100) 17px 18px), var(--cream);border-radius:10px;flex-direction:column;justify-content:flex-start;align-items:center;gap:4px;padding-top:9%;transition:transform 1.4s cubic-bezier(.45,.05,.25,1) .55s;display:flex;position:absolute;inset:7% 6% 6%;box-shadow:0 -4px 14px -6px #4b2a7a2e}.env-letter-script{font-family:var(--f-display);color:var(--purple-500);font-size:clamp(18px,5vw,24px)}.env-letter-small{font-family:var(--f-hand);color:var(--ink-soft);font-size:19px;font-weight:700}.env-pocket{z-index:3;background:var(--env);clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);border-radius:14px;position:absolute;inset:0}.env-pocket:before,.env-pocket:after{content:"";background:var(--env-side);position:absolute;inset:0}.env-pocket:before{clip-path:polygon(0 0,50% 54%,0 100%)}.env-pocket:after{clip-path:polygon(100% 0,50% 54%,100% 100%)}.env-to{z-index:1;font-family:var(--f-hand);color:var(--ink);margin:0;font-size:clamp(18px,5vw,23px);font-weight:700;position:absolute;bottom:10%;right:9%;transform:rotate(-4deg)}.env-flap{z-index:4;background:linear-gradient(var(--env-flap), #d3bcff);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;border-radius:14px 14px 0 0;height:60%;transition:transform .65s ease-in-out .15s,z-index 0s .45s;position:absolute;top:0;left:0;right:0}.env-seal{z-index:5;background:radial-gradient(circle at 35% 30%, #b48aff, var(--purple-600) 70%);border-radius:50%;place-items:center;width:50px;height:50px;transition:transform .35s,opacity .35s;display:grid;position:absolute;top:60%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 4px #6f3bc940,0 6px 10px -4px #3c146e80}.env-seal svg{fill:#efe4ff;width:24px;height:24px}.env-photo{z-index:6;width:30%;transition:transform .6s var(--ease-out), opacity .5s ease;background:#fff;border-radius:4px;margin:0;padding:6px 6px 20px;position:absolute;bottom:-10%;left:-6%;transform:rotate(-10deg);box-shadow:0 8px 16px -6px #4b2a7a59}.env-photo:before{content:"";background:repeating-linear-gradient(45deg,#c4a8ffd9 0 6px,#eae0ffd9 6px 12px);width:46px;height:16px;position:absolute;top:-9px;left:50%;transform:translate(-50%)rotate(4deg)}.env-photo img{aspect-ratio:5/6;object-fit:cover;width:100%}.app.is-opening .env-seal{opacity:0;transform:translate(-50%,-50%)scale(0)rotate(-40deg)}.app.is-opening .env-flap{z-index:1;transform:rotateX(180deg)}.app.is-opening .env-photo{opacity:0;transform:translate(-30%,40%)rotate(-30deg)}.app.is-opening .env-letter{transform:translateY(-68%)}.app.is-lifting .env-back,.app.is-lifting .env-pocket{opacity:0;transition:transform .8s cubic-bezier(.5,0,.75,0),opacity .5s .25s;transform:translateY(120px)rotate(5deg)}.app.is-lifting .env-flap{opacity:0;transition:transform .8s cubic-bezier(.5,0,.75,0),opacity .5s .25s;transform:translateY(120px)rotate(5deg)rotateX(180deg)}.app.is-lifting .env-letter{z-index:7;transition:transform 1.2s cubic-bezier(.45,0,.2,1),box-shadow .6s,z-index 0s .75s;animation:1s ease-in-out .5s infinite alternate glow;transform:translateY(-40%)scale(1.3)rotate(-2deg);box-shadow:0 0 0 5px #ffffffb3,0 24px 44px -14px #6f3bc98c}@keyframes glow{to{box-shadow:0 0 0 8px #ffffffe6,0 0 40px 10px #a97cf58c}}.app.is-opening .lock-kicker,.app.is-opening .lock-title{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(-20px)}.sheet{z-index:25;background:repeating-linear-gradient(transparent 0 22px, var(--purple-100) 22px 23.5px), var(--cream);pointer-events:none;border-radius:14px;position:fixed;overflow:hidden;box-shadow:0 0 0 6px #ffffffd9,0 30px 60px -20px #6f3bc98c}.sheet-inner{transform-origin:top;flex-direction:column;align-items:center;gap:4px;display:flex;transform:scale(1.3)}.burst{z-index:30;pointer-events:none;width:0;height:0;position:fixed}.burst i{font-style:normal;font-size:var(--size,18px);color:var(--c,var(--purple-500));animation:.95s cubic-bezier(.2,.8,.3,1) forwards burst;position:absolute;top:0;left:0}@keyframes burst{0%{transform:translate(-50%, -50%) rotate(var(--a)) translateY(0) scale(.3);opacity:1}to{transform:translate(-50%, -50%) rotate(var(--a)) translateY(calc(var(--dist) * -1)) scale(1);opacity:0}}.pin{width:min(300px,100%);margin-top:22px}.pin-label{margin:0 0 12px;font-size:17px;font-weight:600}.pin-dots{justify-content:center;gap:8px;margin-bottom:18px;display:flex}.pin-dot{fill:#fff;width:22px;height:22px;stroke:var(--purple-400);stroke-width:2px;transition:transform .2s var(--ease-out), fill .2s}.pin-dot.is-filled{fill:var(--purple-500);stroke:var(--purple-500);transform:scale(1.2)}.pin.is-wrong .pin-dots{animation:.45s shake}.pin.is-wrong .pin-dot{fill:#ff9a9a;stroke:#e05050}.pin.is-right .pin-dot{animation:hop .5s ease calc(var(--n,0) * 80ms)}@keyframes shake{20%,60%{transform:translate(-9px)}40%,80%{transform:translate(9px)}}@keyframes hop{50%{transform:translateY(-10px)scale(1.3)}}.keypad{grid-template-columns:repeat(3,1fr);gap:12px 14px;display:grid}.keypad button{background:linear-gradient(#fff, var(--purple-50));height:54px;color:var(--ink);cursor:pointer;box-shadow:var(--shadow-pop);-webkit-tap-highlight-color:transparent;border:2px solid #fff;border-radius:999px;font-size:22px;font-weight:600;transition:transform 80ms,box-shadow 80ms}.keypad button:hover{background:#fff}.keypad button:active,.keypad button.is-pressed{box-shadow:0 1px 0 var(--purple-300), 0 4px 10px -6px #6f3bc973;transform:translateY(4px)}.keypad button:focus-visible{outline:3px solid var(--purple-500);outline-offset:3px}.keypad .key-soft{color:var(--purple-500);font-size:18px}.pin-msg{min-height:1.5em;font-family:var(--f-hand);color:var(--ink-soft);margin:18px 0 0;font-size:21px;font-weight:700}.lock{transition:opacity .5s}.app.is-opening .pin{opacity:0;pointer-events:none;transition:opacity .4s .1s,transform .4s .1s;transform:translateY(16px)}.invite{z-index:20;visibility:hidden;opacity:0;padding:0 16px 40px;position:fixed;inset:0;overflow-y:auto}.invite.is-visible{visibility:visible}.invite.is-open{opacity:1;transition:opacity .5s}.invite.is-open .tabs,.invite.is-open .panels{animation:settle 1.3s var(--ease-out) both;animation-delay:.75s}.invite.is-open .panels{animation-delay:.9s}@keyframes settle{0%{opacity:0;filter:blur(6px);transform:translateY(46px)scale(.96)}}.invite.is-done{z-index:1;background:0 0;min-height:100vh;position:relative;inset:auto;overflow:visible}.hero{text-align:center;max-width:760px;margin:0 auto;padding:56px 0 26px}.hero>*{margin:0}.invite.is-open .hero>*{animation:rise .8s var(--ease-out) both;animation-delay:calc(.4s + var(--i) * .15s)}.invite.is-open .hero-title{animation-name:title-pop;animation-duration:1s}@keyframes rise{0%{opacity:0;transform:translateY(18px)}}@keyframes title-pop{0%{opacity:0;transform:scale(.55)rotate(-5deg)}60%{opacity:1;transform:scale(1.07)rotate(1.5deg)}to{transform:none}}.hero-kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--purple-500);font-size:13px;font-weight:600}.hero-title{font-family:var(--f-display);color:var(--ink);text-shadow:4px 4px 0 #fff, 7px 7px 0 var(--purple-200);margin-top:6px;font-size:clamp(46px,13vw,88px);font-weight:400;line-height:1.15}.hero-title span{color:var(--purple-500)}.hero-sub{font-family:var(--f-hand);color:var(--ink-soft);margin-top:4px;font-size:clamp(22px,5vw,28px);font-weight:700}.hero-date{background:var(--purple-100);box-shadow:0 4px 0 var(--purple-200);border:2px solid #fff;border-radius:999px;align-items:center;gap:8px;margin-top:16px;padding:8px 18px;font-size:15px;font-weight:600;display:inline-flex}.hero-date svg{width:16px;height:16px;fill:var(--purple-500)}.tabs{z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f6efffd1;border:2px solid #fff;border-radius:34px;flex-wrap:wrap;justify-content:center;gap:10px;width:fit-content;max-width:100%;margin:0 auto 22px;padding:8px 10px 12px;display:flex;position:sticky;top:12px;box-shadow:0 10px 24px -14px #5a2da566}.tab{background:linear-gradient(#fff, var(--purple-50));color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;box-shadow:var(--shadow-pop);-webkit-tap-highlight-color:transparent;border:2px solid #fff;border-radius:999px;align-items:center;gap:8px;padding:10px 18px 10px 14px;font-size:16px;font-weight:600;transition:transform .12s,box-shadow .12s,background .2s,color .2s;display:inline-flex}.tab:hover{transform:translateY(-2px)}.tab-icon{font-size:18px;line-height:1}.tab.is-active{background:linear-gradient(var(--purple-400), var(--purple-500));color:#fff;box-shadow:0 1px 0 var(--purple-600), 0 6px 12px -6px #6f3bc999;transform:translateY(4px)}.tab:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.panel{animation:pop-in .45s var(--ease-out)}@keyframes pop-in{0%{opacity:0;transform:translateY(14px)scale(.98)}}.panels{max-width:760px;margin:0 auto}.window{box-shadow:0 7px 0 var(--purple-200), 0 30px 50px -28px #5a2da573;background:#fff;border:2px solid #fff;border-radius:22px;overflow:hidden}.window-bar{border-bottom:2px dashed var(--purple-200);background:linear-gradient(var(--purple-100), #f6f0ff);align-items:center;gap:12px;padding:11px 16px;display:flex}.window-dots{gap:6px;display:flex}.window-dots i{background:var(--purple-400);border-radius:50%;width:12px;height:12px}.window-dots i:nth-child(2){background:#ffd36e}.window-dots i:nth-child(3){background:#7fdcb7}.window-title{text-align:center;white-space:nowrap;text-overflow:ellipsis;color:var(--ink-soft);flex:1;font-size:14px;font-weight:600;overflow:hidden}.window-heart{width:18px;height:18px;fill:var(--purple-300)}.window-body{padding:clamp(18px,4vw,34px)}.panel-intro{font-family:var(--f-hand);color:var(--ink-soft);text-align:center;margin:0 0 8px;font-size:22px;font-weight:700;line-height:1.3}.group{margin-top:26px}.group-title{align-items:center;gap:10px;margin:0 0 16px;font-size:19px;font-weight:600;display:flex}.group-title:after{content:"";background:repeating-linear-gradient(90deg, var(--purple-200) 0 8px, transparent 8px 14px);flex:1;height:2px}.group-title span{background:var(--purple-100);border-radius:50%;place-items:center;width:36px;height:36px;font-size:18px;display:grid}.polaroid{text-align:center;background:#fff;border:0;border-radius:4px;margin:0;padding:10px 10px 0;display:block;position:relative;box-shadow:0 2px #4b2a7a0f,0 12px 22px -10px #4b2a7a59}.polaroid img{aspect-ratio:1;object-fit:cover;border-radius:2px;width:100%}.polaroid>span,.polaroid figcaption{font-family:var(--f-hand);color:var(--ink);padding:8px 4px 10px;font-size:20px;font-weight:700;line-height:1.1;display:block}.letter{background:linear-gradient(90deg, transparent 38px, #a97cf559 38px 40px, transparent 40px), repeating-linear-gradient(transparent 0 33px, var(--purple-100) 33px 34px), var(--cream);font-family:var(--f-hand);color:#3d2463;border-radius:14px;padding:26px clamp(18px,4vw,34px) 30px;font-size:23px;font-weight:500;line-height:34px;position:relative}.letter:after{content:"";clear:both;display:block}.letter p{margin:0 0 17px;padding-left:26px}.letter strong{color:var(--purple-600);font-weight:700}.letter-greet{font-size:28px;font-weight:700}.letter-sign{margin-top:26px!important}.letter-sign span{font-family:var(--f-display);color:var(--purple-500);font-size:32px;line-height:1.6;display:block}.letter-photo{float:right;width:clamp(130px,32%,200px);margin:-6px -4px 14px 18px;transform:rotate(4deg)}.letter-photo img{aspect-ratio:5/6}.letter-photo:before{content:"";z-index:1;background:repeating-linear-gradient(45deg,#c4a8ffd9 0 7px,#ece2ffd9 7px 14px);width:64px;height:20px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-5deg)}.details{grid-template-columns:1fr;gap:12px;margin-top:26px;display:grid}.detail{border:2px solid var(--c);background:color-mix(in srgb, var(--c) 30%, #fff);border-radius:18px;grid-template-columns:42px 1fr;align-items:center;column-gap:14px;padding:14px 16px;display:grid}.detail-icon{background:var(--c);border-radius:14px;grid-row:span 2;place-items:center;width:42px;height:42px;font-size:21px;display:grid}.detail h3{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 2px;font-size:13px;font-weight:600}.detail p{margin:0;font-size:17px;font-weight:500;line-height:1.35}.gallery{grid-template-columns:repeat(3,1fr);gap:clamp(12px,3vw,24px);display:grid}.gallery .polaroid{cursor:zoom-in;transition:transform .25s var(--ease-out), box-shadow .25s;transform:rotate(-2.5deg)}.gallery .polaroid:nth-child(2){transform:rotate(2deg)translateY(6px)}.gallery .polaroid:nth-child(3){transform:rotate(-1deg)}.gallery .polaroid:hover,.gallery .polaroid:focus-visible{z-index:1;transform:rotate(0)scale(1.05);box-shadow:0 20px 30px -14px #4b2a7a73}.gallery .polaroid:focus-visible{outline:3px solid var(--purple-500);outline-offset:4px}.wishes{grid-template-columns:repeat(2,1fr);gap:16px;margin:0;padding:0;list-style:none;display:grid}.wish{border:2px solid var(--purple-100);background:var(--purple-50);transition:transform .2s var(--ease-out), box-shadow .2s;border-radius:18px;position:relative;overflow:hidden}.wish:hover{box-shadow:0 6px 0 var(--purple-200);transform:translateY(-3px)}.wish img{aspect-ratio:4/3;object-fit:cover;width:100%}.wish-body{padding:12px 16px 16px}.wish h3{margin:0;font-size:18px;font-weight:600}.wish p{font-family:var(--f-hand);color:var(--ink-soft);margin:2px 0 0;font-size:20px;font-weight:700}.wish{cursor:pointer;flex-direction:column;display:flex}.wish-body{flex:1}.wish-open{background:linear-gradient(#fff, var(--purple-100));color:var(--purple-600);cursor:pointer;box-shadow:0 4px 0 var(--purple-300), 0 10px 18px -10px #6f3bc980;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;gap:8px;margin:0 14px 14px;padding:13px 16px;font-size:16px;font-weight:600;transition:transform .1s,box-shadow .1s,background .2s;display:flex}.wish-open svg{width:16px;height:16px;fill:var(--purple-400)}.wish:hover .wish-open{background:linear-gradient(var(--purple-50), var(--purple-200))}.wish-open:active{box-shadow:0 1px 0 var(--purple-300);transform:translateY(3px)}.wish-open:focus-visible{outline:3px solid var(--purple-500);outline-offset:3px}.wish-tag{z-index:1;background:var(--purple-500);letter-spacing:.08em;text-align:center;text-transform:uppercase;color:#fff;width:130px;padding:4px 0;font-size:12px;font-weight:600;position:absolute;top:12px;right:-34px;transform:rotate(35deg);box-shadow:0 2px 6px #4b2a7a4d}.footer{text-align:center;color:var(--ink-soft);margin-top:40px;font-weight:500}.footer p{margin:0 0 12px}.footer svg{width:14px;height:14px;fill:var(--purple-500);vertical-align:-1px}.relock{border:2px dashed var(--purple-300);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:999px;padding:8px 16px;font-size:14px;font-weight:500}.relock:hover{background:var(--purple-100)}.lightbox,.wish-modal{color:var(--ink);background:0 0;border:0;padding:0;overflow:visible}.lightbox{max-width:min(520px,90vw)}.wish-modal{width:min(440px,100vw - 32px);max-width:none}.lightbox::backdrop,.wish-modal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#4b2a7a8c;animation:.3s fade-in}@keyframes fade-in{0%{opacity:0}}body:has(dialog[open]){overflow:hidden}.lightbox-card{padding:14px 14px 0}.lightbox-card figcaption{padding:12px 4px 16px;font-size:26px}.wish-modal-card{background:var(--purple-50);max-height:calc(100vh - 48px);box-shadow:0 8px 0 var(--purple-200), 0 30px 60px -20px #28145099;border:3px solid #fff;border-radius:24px;overflow:hidden auto}.wish-modal-card>img{aspect-ratio:4/3;object-fit:cover;width:100%}.wish-modal-body{padding:18px 22px 22px}.wish-modal-chips{flex-wrap:wrap;gap:8px;margin:0 0 8px;display:flex}.wish-modal-chips span{background:var(--purple-100);color:var(--ink-soft);border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}.wish-modal-chips .is-top{background:var(--purple-500);color:#fff}.wish-modal h2{margin:0;font-size:26px;font-weight:700;line-height:1.2}.wish-modal-note{font-family:var(--f-hand);color:var(--purple-600);margin:2px 0 12px;font-size:23px;font-weight:700}.wish-modal-desc{margin:0 0 14px;font-size:17px;line-height:1.5}.wish-facts{gap:8px;margin:0;padding:0;list-style:none;display:grid}.wish-facts li{border:2px dashed var(--purple-200);background:#fff;border-radius:14px;gap:10px;padding:10px 14px;font-size:16px;display:flex}.wish-facts b{letter-spacing:.1em;text-transform:uppercase;min-width:78px;color:var(--ink-soft);font-size:12px;font-weight:600;line-height:1.9}.modal-close{background:var(--purple-500);color:#fff;cursor:pointer;width:42px;height:42px;box-shadow:0 4px 0 var(--purple-600);border:2px solid #fff;border-radius:50%;font-size:18px;position:absolute;top:-14px;right:-14px}.modal-close:focus-visible{outline-offset:2px;outline:3px solid #fff}.music-toggle{z-index:15;background:linear-gradient(#fff, var(--purple-50));cursor:pointer;height:52px;box-shadow:var(--shadow-pop);animation:rise .6s var(--ease-out) both;border:2px solid #fff;border-radius:999px;align-items:center;gap:8px;padding:0 16px 0 8px;display:flex;position:fixed;bottom:16px;right:16px}.music-toggle:active{box-shadow:0 1px 0 var(--purple-300);transform:translateY(4px)}.music-toggle:focus-visible{outline:3px solid var(--purple-500);outline-offset:3px}.music-disc{background:radial-gradient(circle, #fff 0 5px, var(--purple-500) 6px 9px, var(--purple-400) 10px);border-radius:50%;place-items:center;width:36px;height:36px;font-size:0;animation:3s linear infinite spin;display:grid}.music-bars{align-items:flex-end;gap:3px;height:18px;display:flex}.music-bars i{background:var(--purple-500);transform-origin:bottom;border-radius:2px;width:4px;height:100%;animation:.9s ease-in-out infinite alternate eq}.music-bars i:nth-child(2){animation-delay:-.3s}.music-bars i:nth-child(3){animation-delay:-.6s}.music-toggle[aria-pressed=false] .music-disc,.music-toggle[aria-pressed=false] .music-bars i{animation-play-state:paused}.music-toggle[aria-pressed=false] .music-bars i{background:var(--purple-300);transform:scaleY(.25)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes eq{0%{transform:scaleY(.25)}to{transform:scaleY(1)}}.confetti{z-index:50;pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti i{top:-20px;left:var(--x);width:var(--s);height:var(--s);background:var(--c);border-radius:var(--r);animation:fall var(--d) cubic-bezier(.3, .6, .5, 1) var(--t) forwards;position:absolute}@keyframes fall{to{transform:translate(var(--dx), 110vh) rotate(var(--rot))}}@media (width<=560px){.tabs{flex-wrap:nowrap;gap:6px;padding:6px 7px 10px}.tab{gap:6px;padding:8px 12px 8px 10px;font-size:14px}.tab-icon{font-size:16px}.gallery{grid-template-columns:repeat(2,1fr)}.gallery .polaroid>span{font-size:17px}.wishes{grid-template-columns:1fr;gap:12px}.wish{grid-template-columns:112px 1fr;align-items:center;display:grid}.wish img{aspect-ratio:auto;height:100%;min-height:112px}.wish-body{padding:12px 14px}.wish-open{grid-column:1/-1;margin:12px}.wish-modal-body{padding:16px 18px 20px}.wish-tag{width:120px;font-size:10px;top:10px;left:-38px;right:auto;transform:rotate(-35deg)}.letter{font-size:21px}.letter p{padding-left:18px}.letter{background:linear-gradient(90deg, transparent 26px, #a97cf559 26px 28px, transparent 28px), repeating-linear-gradient(transparent 0 33px, var(--purple-100) 33px 34px), var(--cream)}.letter-photo{width:120px;margin-left:12px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.sky{display:none}}
