:root{--cream: #fbf5ea;--paper: #f6ecdb;--burgundy: #8b1a2b;--wine: #5a0f1c;--night: #2a0710;--gold: #d4af37;--gold-soft: #f5e08a;--ink: #3a1a1f;--red: #c8102e;--pink: #ff8fab;--sun: #ffd166;--display: "Anton", "Impact", sans-serif;--hand: "Caveat", cursive}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--night)}body{font-family:Cormorant Garamond,Georgia,serif;color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100svh;overflow-x:hidden}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}img,video{display:block}.script{font-family:Great Vibes,cursive;font-weight:400}.gift-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:radial-gradient(110% 70% at 50% 35%,#7a1527 0%,var(--wine) 45%,#16040a 100%);color:var(--cream);overflow:hidden;text-align:center}.twinkles span{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--gold-soft);box-shadow:0 0 6px var(--gold-soft);animation:twinkle 3s ease-in-out infinite}@keyframes twinkle{50%{opacity:.15;transform:scale(.5)}}.gift-to{font-size:15px;letter-spacing:.5em;text-transform:uppercase;color:var(--gold)}.gift-name{font-size:clamp(72px,22vw,120px);line-height:1;color:var(--cream);text-shadow:0 4px 30px rgba(212,175,55,.35);margin-bottom:26px}.gift-hint{margin-top:34px;font-size:16px;letter-spacing:.15em;text-transform:uppercase;color:var(--gold-soft)}.gift-from{margin-top:8px;font-family:var(--hand);font-size:22px;opacity:.7}.gift{position:relative;width:190px;height:190px;animation:wiggle 2.6s ease-in-out infinite}.gift.is-open{animation:none}@keyframes wiggle{0%,70%,to{transform:rotate(0) scale(1)}74%{transform:rotate(-7deg) scale(1.04)}78%{transform:rotate(6deg) scale(1.04)}82%{transform:rotate(-4deg)}86%{transform:rotate(2deg)}}.gift .box{position:absolute;left:10px;right:10px;bottom:0;height:130px;background:linear-gradient(160deg,#e0233f,var(--red) 60%,#9c0c24);border-radius:6px;box-shadow:0 24px 50px #00000080,inset 0 -10px 20px #0003}.gift .rib-v{position:absolute;top:0;bottom:0;left:34%;width:22px;background:#fff}.gift .rib-h{position:absolute;left:0;right:0;top:46%;height:22px;background:#fff}.gift .lid{position:absolute;left:0;right:0;top:34px;height:40px;z-index:2;background:linear-gradient(160deg,#ef3553,#b80f2a);border-radius:6px;box-shadow:0 6px 12px #0000004d}.gift .lid:before{content:"";position:absolute;top:0;bottom:0;left:calc(34% + 10px);width:22px;background:#fff}.gift .bow{position:absolute;left:calc(34% + 21px);top:-30px}.gift .bow i{position:absolute;width:44px;height:34px;border:9px solid #fff;border-radius:50%/60% 60% 40% 40%;top:0}.gift .bow i:first-child{right:2px;transform:rotate(-25deg)}.gift .bow i:last-child{left:2px;transform:rotate(25deg)}.gift .beams{position:absolute;left:50%;top:55%;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%) scale(0);background:repeating-conic-gradient(from 0deg,rgba(255,236,170,.75) 0 8deg,transparent 8deg 22deg);transition:transform 1.2s cubic-bezier(.2,.7,.2,1);pointer-events:none}.gift.is-open .beams{transform:translate(-50%,-50%) scale(140);animation:spin 6s linear infinite}.pop-out span{position:absolute;left:50%;top:45%;font-size:44px;z-index:3}.flash{position:fixed;top:0;right:0;bottom:0;left:0;background:#fff8e4;pointer-events:none;z-index:40}@keyframes spin{to{rotate:360deg}}.story{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;overflow:hidden;--ink-c: #fff;--hl: var(--gold-soft);color:var(--ink-c)}.story.k-v1{--ink-c: #3a1a1f;--hl: #c8102e}.bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.bg-intro{background:radial-gradient(120% 80% at 50% 30%,#9b1c33,var(--wine) 50%,#1a050b)}.bg-v1{background:linear-gradient(rgba(139,26,43,.06) 1px,transparent 1px) 0 0 / 100% 28px,linear-gradient(90deg,rgba(139,26,43,.06) 1px,transparent 1px) 0 0 / 28px 100%,linear-gradient(170deg,#fff9ee,#f3e3c6)}.bg-pre1{background:linear-gradient(170deg,#062a40,#0d5b84 60%,#39a7d6)}.bg-ch{background:radial-gradient(90% 70% at 50% 32%,#f7d774,#c8901c 28%,#7a1527 70%,#2a0710)}.bg-post{background:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 24px,transparent 24px 48px),radial-gradient(100% 80% at 50% 30%,#f35,#c8102e 55%,#7c0718)}.bg-v2{background:radial-gradient(circle at 25% 20%,rgba(255,255,255,.08) 0 2px,transparent 3px) 0 0 / 34px 34px,linear-gradient(170deg,#20235e,#4b4fb8 70%,#7d82e8)}.bg-pre2{background:radial-gradient(100% 80% at 50% 25%,#4b2a7a,#1a1033 60%,#07040f)}.bg-v3{background:linear-gradient(180deg,#ff7e5f,#feb47b 45%,#ffd6a5 75%,#fff1d6)}.story.k-v3{--ink-c: #4a1020;--hl: #b0102a}.k-v3 .line .w{text-shadow:none}.bg-bridge{background:radial-gradient(90% 70% at 50% 35%,#3b1a24,#140a0e 70%)}.bg-outro{background:radial-gradient(110% 80% at 50% 30%,#8a2f7a,#3d0f45 50%,#14041a)}.scene,.scene-inner{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.slideshow{position:absolute;left:0;right:0;margin:0 auto;top:calc(env(safe-area-inset-top) + 9svh);width:min(62vw,34svh,300px);aspect-ratio:4 / 5.6;z-index:3}.slide{position:absolute;top:0;right:0;bottom:0;left:0}.polaroid{background:#fff;padding:9px 9px 0;box-shadow:0 18px 40px #00000059,0 2px 6px #0003;transform:rotate(var(--tilt, 0deg));border-radius:2px}.slide .polaroid{width:100%}.polaroid .pic{position:relative;aspect-ratio:4 / 5;overflow:hidden;background:#222}.polaroid .pic img,.polaroid .pic video{width:100%;height:100%;object-fit:cover;object-position:50% 30%}.polaroid figcaption{font-family:var(--hand);font-weight:700;font-size:21px;line-height:1.1;color:#3a1a1f;text-align:center;padding:8px 4px 10px}.kenburns{animation:kenburns 9s ease-in-out infinite alternate}@keyframes kenburns{0%{transform:scale(1)}to{transform:scale(1.14) translate(-2%,-2%)}}.prop{position:absolute;z-index:6;pointer-events:none}.lyric{position:absolute;left:16px;right:16px;z-index:8;bottom:calc(env(safe-area-inset-bottom) + 92px);text-align:center;pointer-events:none}.line{position:relative;font-weight:700;font-size:clamp(25px,7.2vw,42px);line-height:1.12;text-shadow:0 2px 18px rgba(0,0,0,.35);max-width:640px;margin:0 auto}.k-v1 .line,.k-v3 .line{text-shadow:0 1px 0 rgba(255,255,255,.5)}.line .w{display:inline-block;margin:0 .13em;--lp: clamp(0, calc((var(--p, 0) - var(--s)) * var(--n)), 1);background:linear-gradient(90deg,var(--hl) calc(var(--lp) * 100%),var(--ink-c) calc(var(--lp) * 100%));-webkit-background-clip:text;background-clip:text;color:transparent}.line.shout{font-family:var(--display);font-weight:400;text-transform:uppercase;font-size:clamp(40px,13vw,84px);line-height:1;letter-spacing:.01em}.line.spoken{font-style:italic;font-weight:500}.line .pen{position:absolute;top:-18%;right:-6%;bottom:-18%;left:-6%;width:112%;height:136%;overflow:visible}.next{margin-top:12px;font-size:16px;opacity:.55;font-style:italic;min-height:1.3em}.sticker{position:absolute;z-index:9;top:calc(env(safe-area-inset-top) + 12px);left:12px;padding:6px 14px 4px;background:var(--sun);color:#3a1a1f;font-family:var(--display);font-size:20px;letter-spacing:.03em;text-transform:uppercase;border-radius:6px;box-shadow:3px 4px #00000040}.controls{position:absolute;z-index:10;left:12px;right:12px;bottom:calc(env(safe-area-inset-bottom) + 12px);display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:16px;background:#14060a8c;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#fff}.ctl{width:44px;height:44px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:var(--wine)}.ctl svg{width:22px;height:22px;fill:currentColor}.bar{position:relative;flex:1;height:22px;cursor:pointer;--pct: 0%}.bar:before{content:"";position:absolute;left:0;right:0;top:9px;height:4px;border-radius:4px;background:#fff3}.bar .fill{position:absolute;left:0;top:9px;height:4px;width:var(--pct);border-radius:4px;background:var(--gold-soft);box-shadow:0 0 10px var(--gold-soft)}.bar i{position:absolute;top:7px;width:2px;height:8px;background:#ffffff73;border-radius:1px}.time{font-size:13px;font-variant-numeric:tabular-nums;opacity:.8;white-space:nowrap}.skip{font-size:15px;font-weight:700;color:var(--gold-soft);white-space:nowrap}.bunting{position:absolute;top:0;left:0;right:0;height:60px;z-index:4}.bunting svg{width:100%;height:100%;display:block;overflow:visible}.pennant{transform-origin:10px 0;animation:flutter 1.4s ease-in-out infinite alternate}@keyframes flutter{0%{transform:rotate(-6deg)}to{transform:rotate(6deg)}}.balloons{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:2;pointer-events:none}.balloon{position:absolute;bottom:-120px;width:var(--size);height:calc(var(--size) * 1.2);border-radius:50% 50% 48% 52%/55% 55% 45% 45%;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.7) 0 8%,transparent 9%),var(--c);box-shadow:inset -6px -8px 12px #0000002e;animation:rise linear infinite}.balloon:after{content:"";position:absolute;left:50%;top:100%;width:1px;height:60px;background:#ffffff80}@keyframes rise{0%{transform:translate(0) rotate(-4deg)}50%{transform:translate(18px,-60vh) rotate(4deg)}to{transform:translate(-10px,-130vh) rotate(-4deg)}}.sparkles span{position:absolute;color:#fff6d0;animation:twinkle 2s ease-in-out infinite;text-shadow:0 0 10px #ffe9a0}.marquee{position:absolute;left:-10%;right:-10%;top:46%;z-index:1;opacity:.16;pointer-events:none}.marquee-row{white-space:nowrap;font-family:var(--display);font-size:92px;line-height:1;color:transparent;-webkit-text-stroke:2px #fff;animation:marquee 16s linear infinite}.marquee-row.rev{animation-direction:reverse}@keyframes marquee{to{transform:translate(-50%)}}.rays{position:absolute;left:50%;top:32%;width:180vmax;height:180vmax;margin:-90vmax 0 0 -90vmax;background:repeating-conic-gradient(rgba(255,240,190,.28) 0 7deg,transparent 7deg 18deg);animation:spin 30s linear infinite;z-index:0}.rays.fast{animation-duration:10s}.nothumb{right:7%;top:10%;font-size:84px}.nothumb span{display:block;filter:drop-shadow(0 6px 10px rgba(0,0,0,.4))}.nothumb i{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border:9px solid #ff2d3d;border-radius:50%}.nothumb i:after{content:"";position:absolute;left:50%;top:-4px;bottom:-4px;width:9px;margin-left:-4.5px;background:#ff2d3d;transform:rotate(45deg)}.badge{right:5%;top:0;width:118px;z-index:7;transform-origin:50% 0}.badge .strap{width:14px;height:70px;margin:0 auto;background:repeating-linear-gradient(0deg,var(--red) 0 10px,#fff 10px 20px)}.badge .card{background:#fff;border-radius:10px;padding:8px;text-align:center;box-shadow:0 10px 24px #0000004d;border-top:6px solid var(--burgundy)}.badge small{display:block;font-size:9px;letter-spacing:.1em;font-weight:700;color:var(--burgundy)}.badge img{width:64px;height:64px;object-fit:cover;border-radius:50%;margin:6px auto}.badge strong{display:block;font-family:var(--hand);font-size:22px;line-height:1}.badge span{font-size:12px;font-style:italic}.fizzbox{left:5%;top:40%}.glass{position:relative;width:74px;text-align:center}.glass .water{position:relative;height:104px;overflow:hidden;border:3px solid rgba(58,26,31,.45);border-top:0;border-radius:0 0 14px 14px;background:linear-gradient(180deg,transparent 18%,rgba(255,140,60,.65) 18%,rgba(255,190,80,.8))}.glass .water span{position:absolute;bottom:-10px;width:var(--s);height:var(--s);border-radius:50%;background:#ffffffd9;animation:bubble 1.6s ease-in infinite}@keyframes bubble{to{transform:translateY(-110px);opacity:0}}.glass .tablet{position:absolute;left:50%;bottom:6px;width:30px;height:10px;margin-left:-15px;border-radius:50%;background:#fff;animation:dissolve 4s ease-in forwards}@keyframes dissolve{to{transform:scale(.2);opacity:0}}.glass em{font-family:var(--display);font-style:normal;font-size:14px;color:var(--red);letter-spacing:.05em}.shoe{left:42%;top:47%;font-size:64px;z-index:7;text-align:center}.shoe small{display:block;font-family:var(--hand);font-size:20px;color:var(--burgundy);white-space:nowrap}.stamp{left:0;right:0;margin:0 auto;width:max-content;top:25%;padding:6px 16px;border:5px solid #e0242f;border-radius:8px;color:#e0242f;font-family:var(--display);font-size:52px;line-height:1;text-align:center;transform:rotate(-12deg);background:#ffffffbf;mix-blend-mode:multiply}.stamp small{display:block;font-size:15px;letter-spacing:.1em}.lanes{position:absolute;left:0;right:0;top:52%;height:22%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.25) 0 40px,transparent 40px 90px) 0 50% / 200% 4px no-repeat,repeating-linear-gradient(90deg,rgba(255,255,255,.15) 0 40px,transparent 40px 90px) 0 20% / 200% 3px no-repeat,repeating-linear-gradient(90deg,rgba(255,255,255,.15) 0 40px,transparent 40px 90px) 0 80% / 200% 3px no-repeat;animation:lanes .6s linear infinite}@keyframes lanes{to{background-position:-90px 50%,-90px 20%,-90px 80%}}.km{left:0;right:0;top:calc(9svh + min(62vw,34svh,300px)*.78);text-align:center;color:#fff;z-index:7}.km b{display:block;font-family:var(--display);font-weight:400;font-size:clamp(70px,22vw,110px);line-height:.9;text-shadow:0 6px 0 rgba(0,0,0,.35),0 0 30px rgba(0,0,0,.4)}.km span{font-family:var(--display);font-size:34px;letter-spacing:.3em;color:var(--sun)}.runner{position:absolute;top:55%;left:0;font-size:58px;z-index:6;animation:run 2.4s linear infinite;transform:scaleX(-1)}@keyframes run{0%{left:-20%}to{left:110%}}.frost{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none;box-shadow:inset 0 0 80px 30px #dcf5ffbf;background:#c8ebff1f}.ice{position:absolute;top:-60px;font-size:32px;animation:fall 2.6s linear infinite}@keyframes fall{to{transform:translateY(110svh) rotate(260deg)}}.seal{position:absolute;right:6%;top:50%;font-size:84px}.brr{position:absolute;right:10%;top:44%;font-family:var(--display);font-size:30px;color:#fff;animation:shiver .12s linear infinite}@keyframes shiver{50%{transform:translate(3px)}}.clock{position:absolute;right:8px;top:8px;padding:2px 10px;border-radius:8px;background:#000;color:#ff3b3b;font-family:var(--display);font-size:26px;letter-spacing:.05em;box-shadow:0 0 12px #ff3b3b99}.croissant{right:5%;top:38%;text-align:center;font-size:66px}.croissant span{display:block}.croissant small{font-family:var(--hand);font-size:20px;color:#fff}.zzz{position:absolute;top:-10px;right:-8px;font-family:var(--display);font-style:normal;font-size:22px;color:#fff;animation:zzz 2.4s ease-out infinite;opacity:0}.zzz:nth-child(3){animation-delay:.8s}.zzz:nth-child(4){animation-delay:1.6s}@keyframes zzz{0%{opacity:0;transform:translate(0) scale(.6)}30%{opacity:1}to{opacity:0;transform:translate(30px,-60px) scale(1.4)}}.crown{left:0;right:0;text-align:center;z-index:7;top:calc(env(safe-area-inset-top) + 9svh - 62px);font-size:82px;filter:drop-shadow(0 6px 12px rgba(0,0,0,.4))}.wink{right:8%;top:44%;font-size:72px}.flags{position:absolute;left:0;right:0;bottom:40%;height:0;z-index:5}.flagpole{position:absolute;bottom:-90px;width:4px;height:90px;background:linear-gradient(90deg,#d6d6d6,#8a8a8a);border-radius:2px}.flagpole .dk{position:absolute;left:4px;top:0;width:56px;height:42px;transform-origin:0 50%;animation:wave 1.1s ease-in-out infinite alternate;animation-delay:var(--d)}@keyframes wave{0%{transform:skewY(-6deg) scaleX(.92)}to{transform:skewY(6deg) scaleX(1.04)}}.cakebox{right:-8px;top:40%}.cake{position:relative;width:170px;margin:0 auto}.cake.small{width:120px}.cake .layer{height:30px;border-radius:6px;margin-top:-2px}.cake.small .layer{height:22px}.cake .l1{background:linear-gradient(#ffe9d6,#f6d1b0)}.cake .l2{background:linear-gradient(#ff8fab,#e75a7c);height:14px!important}.cake .l3{background:linear-gradient(#ffe9d6,#e9c29e);border-radius:6px 6px 14px 14px;box-shadow:0 10px 20px #0000004d}.cake .cream-top{position:relative;height:24px;background:#fffaf2;border-radius:16px 16px 6px 6px;display:flex;justify-content:space-around;align-items:flex-start;font-size:16px;line-height:1}.cake .cream-top span{margin-top:-8px}.cake .candles{display:flex;justify-content:space-around;padding:0 12px;height:46px;align-items:flex-end}.cake .candle{position:relative;width:9px;height:34px;background:repeating-linear-gradient(160deg,#fff 0 5px,var(--red) 5px 10px);border-radius:3px;padding:0}.cake.small .candle{height:24px;width:7px}.flame{position:absolute;left:50%;bottom:100%;width:12px;height:20px;margin-left:-6px;border-radius:50%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff 0,#fff,#ffd54a 40%,#ff8a00 75%);box-shadow:0 0 14px 4px #ffbe3c99;animation:flicker .25s ease-in-out infinite alternate;transform-origin:50% 100%}@keyframes flicker{0%{transform:scale(1) rotate(-3deg)}to{transform:scale(1.1,.92) rotate(3deg)}}.smoke{position:absolute;left:50%;bottom:100%;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:#c8c8c8cc;filter:blur(3px)}.cake .pick{position:absolute;width:26px;height:20px;top:10px}.cake .pick:after{content:""}.cake .p1{left:-6px;transform:rotate(-14deg)}.cake .p2{right:-6px;transform:rotate(14deg)}.dryer{position:relative;width:100%;aspect-ratio:4 / 5;margin-top:4%;background:linear-gradient(170deg,#fff,#dde1ee);border-radius:18px;box-shadow:0 20px 40px #00000059;--r: calc(min(62vw, 34svh, 300px)*.4) }.dryer .panel{height:16%;border-bottom:3px solid #c7cbe0;display:flex;align-items:center;gap:8px;padding:0 14px}.dryer .panel i{width:14px;height:14px;border-radius:50%;background:#9aa0c4}.dryer .panel b{margin-left:auto;width:40px;height:12px;border-radius:3px;background:#2f3570;box-shadow:inset 0 0 0 2px #6e74c9}.dryer .door{position:absolute;left:13%;right:13%;top:27%;aspect-ratio:1;border-radius:50%;border:10px solid #c7cbe0;background:radial-gradient(circle,#8fa0ff33,#2f3570);overflow:hidden;box-shadow:inset 0 0 30px #0006}.dryer .drum{position:absolute;top:0;right:0;bottom:0;left:0;animation:spin 1.4s linear infinite}.dryer .drum span{position:absolute;font-size:34px}.dryer .drum span:nth-child(1){left:14%;top:18%}.dryer .drum span:nth-child(2){right:14%;top:26%}.dryer .drum span:nth-child(3){left:30%;bottom:14%}.dryer .drum span:nth-child(4){right:22%;bottom:22%}.dryer{animation:rumble .18s linear infinite}@keyframes rumble{50%{transform:translate(1px,-1px) rotate(.4deg)}}.eu{position:absolute;left:50%;top:51%;width:0;height:0}.eu span{position:absolute;left:-12px;top:-14px;width:24px;text-align:center;font-size:26px;color:#ffd400;text-shadow:0 0 8px rgba(255,212,0,.8)}.rules{position:absolute;left:-8%;right:-8%;bottom:-12%;background:#ffd400;color:#20235e;padding:8px 12px;border-radius:8px;font-family:var(--hand);font-size:18px;line-height:1.15;text-align:left;box-shadow:0 8px 18px #0000004d}.granny{right:4%;top:34%;text-align:center;font-size:72px}.granny span{display:block}.granny b{display:inline-block;font-family:var(--display);font-weight:400;font-size:40px;color:#fff;background:var(--red);padding:0 12px;border-radius:6px;transform:rotate(-8deg)}.fcuk{left:0;right:0;top:calc(env(safe-area-inset-top) + 9svh + 10px);display:flex;justify-content:center;gap:6px;z-index:8}.fcuk span{font-family:var(--display);font-size:clamp(62px,18vw,96px);line-height:1;color:var(--red);-webkit-text-stroke:3px #fff;text-shadow:0 6px 0 rgba(0,0,0,.25)}.fcuk i{position:absolute;left:22%;right:22%;top:104%;padding:2px 0;background:#000;color:#fff;text-align:center;font-family:var(--display);font-style:normal;font-size:26px;letter-spacing:.2em;font-size:18px;transform-origin:0 50%}.double .twin{position:absolute;top:0;right:0;bottom:0;left:0}.x2{right:6%;top:14%;font-family:var(--display);font-size:84px;color:var(--sun);-webkit-text-stroke:3px #20235e;z-index:8}.stars-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(2px 2px at 20% 30%,#fff,transparent),radial-gradient(2px 2px at 70% 20%,#fff,transparent),radial-gradient(1px 1px at 40% 70%,#fff,transparent),radial-gradient(2px 2px at 85% 60%,#fff,transparent),radial-gradient(1px 1px at 10% 80%,#fff,transparent);opacity:.7}.phone{position:relative;width:82%;margin:0 auto;aspect-ratio:9 / 18;background:#111;border-radius:34px;padding:10px;box-shadow:0 0 0 3px #3a3a3a,0 30px 60px #0009}.phone .notch{position:absolute;z-index:3;left:50%;top:16px;width:70px;height:20px;margin-left:-35px;background:#000;border-radius:12px}.phone .screen{position:relative;width:100%;height:100%;border-radius:26px;overflow:hidden;background:#222}.phone .screen img{width:100%;height:100%;object-fit:cover;object-position:60% 20%;transition:filter .6s}.phone.is-focus .screen img{filter:brightness(.35) saturate(.6)}.phone .call{position:absolute;left:0;right:0;bottom:14%;text-align:center;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.6)}.phone .call small{display:block;font-size:13px;opacity:.8}.phone .call b{font-size:22px}.focus-pill{position:absolute;left:50%;top:18%;transform:translate(-50%);padding:8px 16px;border-radius:999px;background:#785affe6;color:#fff;font-weight:700;font-size:18px;white-space:nowrap}.missed{position:absolute;right:10px;top:46px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#ff3b30;color:#fff;font-weight:700;font-size:18px;animation:pulseb 1s ease-in-out infinite}@keyframes pulseb{50%{transform:scale(1.2)}}.wand{right:8%;top:18%;font-size:72px;transform-origin:80% 80%;filter:drop-shadow(0 0 12px #e9d5ff)}.hokus{left:0;right:0;top:calc(env(safe-area-inset-top) + 58px);text-align:center;font-family:var(--display);font-size:44px;color:var(--gold-soft);text-shadow:0 0 20px rgba(245,224,138,.8);z-index:8}.sun{position:absolute;left:50%;top:6%;width:120vw;height:120vw;margin-left:-60vw;background:radial-gradient(circle,#fff7c2 0 18%,rgba(255,215,120,.9) 26%,rgba(255,160,90,.4) 42%,transparent 62%);border-radius:50%;z-index:0}.bigheart{position:absolute;left:0;right:0;top:4%;text-align:center;font-size:min(90vw,420px);line-height:1;z-index:1;opacity:.9;animation:beat 1s ease-in-out infinite}@keyframes beat{15%{transform:scale(1.08)}30%{transform:scale(1)}45%{transform:scale(1.05)}}.trophy{right:4%;top:36%;font-size:78px;filter:drop-shadow(0 0 20px rgba(255,215,0,.9))}.glitter{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none;background-image:radial-gradient(2px 2px at 10% 20%,#ffe27a,transparent),radial-gradient(3px 3px at 30% 60%,#fff3b0,transparent),radial-gradient(2px 2px at 70% 30%,#ffd700,transparent),radial-gradient(3px 3px at 85% 75%,#fff3b0,transparent),radial-gradient(2px 2px at 50% 90%,#ffd700,transparent);background-size:200px 200px;animation:glit 1.2s linear infinite}@keyframes glit{to{background-position:0 200px,40px 200px,-30px 200px,20px 200px,0 200px}}.bokeh span{position:absolute;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle,rgba(255,200,120,.55),transparent 70%);animation:drift 8s ease-in-out infinite alternate}@keyframes drift{to{transform:translate(20px,-30px) scale(1.3);opacity:.4}}.chat{position:absolute;left:14px;right:14px;top:calc(env(safe-area-inset-top) + 9svh + min(62vw,34svh,300px)*1.08);z-index:7;display:flex;flex-direction:column;gap:8px}.bubble{max-width:78%;padding:8px 12px 18px;border-radius:14px;font-family:-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.3;position:relative;box-shadow:0 4px 12px #0000004d}.bubble small{display:block;font-size:12px;font-weight:700;color:#c8102e}.bubble time{position:absolute;right:10px;bottom:3px;font-size:11px;color:#34b7f1}.bubble.in{align-self:flex-start;background:#fff;color:#111;border-top-left-radius:4px}.bubble.out{align-self:flex-end;background:#dcf8c6;color:#111;border-top-right-radius:4px}.bubble.typing{display:flex;gap:5px;padding:12px 14px}.bubble.typing i{width:8px;height:8px;border-radius:50%;background:#999;animation:dots 1s infinite}.bubble.typing i:nth-child(2){animation-delay:.15s}.bubble.typing i:nth-child(3){animation-delay:.3s}@keyframes dots{50%{transform:translateY(-5px);background:#555}}.names{position:absolute;top:0;right:0;bottom:0;left:0;z-index:7;pointer-events:none}.names .tag{position:absolute;padding:6px 12px;border-radius:999px;background:var(--sun);color:#3a1a1f;font-family:var(--hand);font-weight:700;font-size:22px;box-shadow:0 6px 14px #00000059}.names .tag:nth-child(1){left:5%;top:14%}.names .tag:nth-child(2){right:5%;top:18%}.names .tag:nth-child(3){left:4%;top:32%}.names .tag:nth-child(4){right:6%;top:36%}.names .tag:nth-child(5){left:34%;top:6%}.haha{right:8%;top:12%;font-family:var(--display);font-size:64px;color:var(--sun);animation:bounce .5s ease-in-out infinite alternate}@keyframes bounce{to{transform:translateY(-14px) rotate(6deg)}}.crest{position:absolute;left:5%;top:calc(env(safe-area-inset-top) + 56px);width:74px;z-index:7;text-align:center}.crest svg{width:100%;filter:drop-shadow(0 6px 14px rgba(0,0,0,.4))}.crest span{position:absolute;left:0;right:0;top:-36px;font-size:38px}.floaters span{position:absolute;bottom:-60px;animation:floatup 4s ease-in infinite;z-index:6}@keyframes floatup{to{transform:translateY(-115svh) rotate(30deg);opacity:0}}.neon{position:absolute;left:0;right:0;z-index:8;text-align:center;top:calc(env(safe-area-inset-top) + 9svh + min(62vw,34svh,300px)/2);font-family:Great Vibes,cursive;font-size:clamp(46px,14vw,80px);line-height:1;color:#fff0f8;text-shadow:0 0 6px #fff,0 0 18px #ff4fa3,0 0 40px #ff4fa3,0 0 80px #ff2d7a;animation:neon 2.4s infinite;transform:rotate(-6deg)}@keyframes neon{0%,18%,22%,25%,53%,57%,to{opacity:1}20%,24%,55%{opacity:.35}}.finale{position:relative;max-width:600px;margin:0 auto;min-height:100svh;padding:0 16px 120px;background:linear-gradient(180deg,var(--cream),var(--paper));box-shadow:0 0 80px #00000080;overflow:hidden}.finale .balloons{position:fixed;opacity:.35;z-index:0}.finale>*:not(.balloons):not(.mini):not(.lightbox){position:relative;z-index:1}.finale .bunting{position:relative;margin:0 -16px}.hero{text-align:center;padding-top:6px}.kicker{font-size:13px;letter-spacing:.35em;text-transform:uppercase;color:var(--gold)}.big-script{font-size:clamp(70px,21vw,110px);color:var(--burgundy);line-height:.9}.rule{display:flex;align-items:center;gap:10px;justify-content:center;color:var(--gold);margin:12px auto 6px;width:70%}.rule:before,.rule:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.rule:after{transform:scaleX(-1)}.sub{font-size:25px;color:var(--burgundy);font-weight:600}.replay,.ghost{margin-top:16px;padding:10px 22px;border-radius:999px;border:2px solid var(--burgundy);color:var(--burgundy);font-weight:700;font-size:18px}.replay{background:var(--burgundy);color:var(--cream)}.script.small{font-size:52px;color:var(--burgundy);line-height:1;text-align:center}.memories{margin-top:36px}.deck{position:relative;height:min(118vw,560px);margin-top:14px}.deck-card{position:absolute;left:0;right:0;margin:0 auto;width:min(80vw,380px);cursor:grab;touch-action:pan-y}.deck-card:active{cursor:grabbing}.deck-hint{position:absolute;bottom:-6px;left:0;right:0;text-align:center;font-family:var(--hand);font-size:20px;color:var(--burgundy);opacity:.7}.play-badge{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;display:grid;place-items:center;background:#0000008c;color:#fff;font-size:26px;padding-left:4px}.hurra{text-align:center;margin-top:44px}.hurra-btn{padding:14px 40px;border-radius:999px;background:var(--red);color:#fff;font-family:var(--display);font-size:30px;letter-spacing:.06em;box-shadow:0 6px #8f0b20,0 12px 24px #c8102e59}.hurra-count{margin-top:12px;font-size:19px;font-style:italic;color:var(--burgundy);min-height:1.4em}.wall-wrap{margin-top:48px}.wall{display:grid;grid-template-columns:1fr 1fr;gap:18px 14px;margin-top:18px}.wall-card{cursor:pointer;padding:7px 7px 0}.wall-card figcaption{font-size:17px;padding:6px 2px 8px}.cake-game{margin-top:56px;text-align:center}.muted{font-style:italic;color:var(--burgundy);opacity:.75;font-size:18px;margin-top:4px}.cake.big{width:250px;margin-top:30px}.cake.big .layer{height:44px}.cake.big .l2{height:18px!important}.cake.big .candles{height:70px}.cake.big .candle{width:14px;height:52px;cursor:pointer}.cake.big .flame{width:18px;height:28px;margin-left:-9px}.cake.big .cream-top{height:34px;font-size:22px}.cake.big .pick{width:36px;height:27px}.wish{margin-top:20px}.wish .script{font-size:46px;color:var(--burgundy)}.lyrics{margin-top:56px;text-align:center}.verse{margin-top:24px;font-size:19px;line-height:1.45}.verse .label{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}.verse.is-chorus{color:var(--burgundy);font-weight:600}.verse.is-hurra{color:var(--red);font-style:italic}.verse .spoken{font-style:italic;opacity:.75}.footer{text-align:center;margin-top:56px;font-size:18px;color:var(--burgundy)}.footer p+p{margin-top:4px;font-style:italic}.mini{position:fixed;z-index:20;right:16px;bottom:calc(env(safe-area-inset-bottom) + 16px);display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:var(--wine);color:var(--cream);font-weight:700;font-size:16px;box-shadow:0 10px 24px #00000059}.eq{display:flex;gap:2px;align-items:flex-end;height:14px}.eq i{width:3px;height:4px;background:var(--gold-soft);border-radius:1px}.mini.is-playing .eq i{animation:eq .8s ease-in-out infinite alternate}.mini.is-playing .eq i:nth-child(2){animation-delay:.2s}.mini.is-playing .eq i:nth-child(3){animation-delay:.4s}@keyframes eq{to{height:14px}}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0e0307eb;display:grid;place-items:center;padding:16px}.lb-item{background:#fff;padding:10px 10px 0;max-width:min(92vw,520px);box-shadow:0 30px 60px #0009;touch-action:pan-y}.lb-item img,.lb-item video{max-height:72svh;max-width:100%;width:auto;margin:0 auto;object-fit:contain}.lb-item figcaption{font-family:var(--hand);font-weight:700;font-size:24px;text-align:center;padding:8px 0 12px;color:#3a1a1f}.lb-btn{position:fixed;top:50%;width:48px;height:48px;margin-top:-24px;border-radius:50%;background:#ffffff26;color:#fff;font-size:34px;line-height:1}.lb-btn.prev{left:10px}.lb-btn.next{right:10px}.lb-close{position:fixed;top:calc(env(safe-area-inset-top) + 12px);right:12px;width:44px;height:44px;border-radius:50%;background:#ffffff26;color:#fff;font-size:20px}@media (min-width: 700px){.slideshow{top:10svh}.lyric{bottom:104px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}.gift-stage{position:relative;display:grid;place-items:center;width:100%;height:240px}.orbit{position:absolute;left:50%;top:50%;width:0;height:0;perspective:900px;--R: min(42vw, 230px);pointer-events:none;transition:transform 1s cubic-bezier(.2,.7,.2,1),opacity 1s}.orbit .ring{position:absolute;transform-style:preserve-3d;animation:orbit 16s linear infinite}.orbit img{position:absolute;left:-36px;top:-48px;width:72px;height:96px;object-fit:cover;border:4px solid #fff;border-bottom-width:14px;border-radius:2px;box-shadow:0 10px 20px #00000073;backface-visibility:visible}@keyframes orbit{0%{transform:rotateX(-14deg) rotateY(0)}to{transform:rotateX(-14deg) rotateY(360deg)}}.orbit.burst{transform:scale(4);opacity:0}.gift{z-index:2}.mosaic{position:absolute;left:0;right:0;top:calc(env(safe-area-inset-top) + 4svh);height:58svh;z-index:3;--tile: min(14vw, 64px)}.mosaic .tile{position:absolute;width:var(--tile);height:var(--tile);margin:calc(var(--tile) / -2) 0 0 calc(var(--tile) / -2);object-fit:cover;border:3px solid #fff;border-radius:4px;box-shadow:0 6px 14px #00000073}.photorain{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;overflow:hidden}.photorain span{position:absolute;top:-160px;width:74px;padding:4px 4px 14px;background:#fff;box-shadow:0 8px 16px #0006;animation:prain linear infinite}.photorain img{width:100%;aspect-ratio:4/5;object-fit:cover}@keyframes prain{0%{transform:translateY(0) rotate(var(--rot))}to{transform:translateY(125svh) rotate(calc(var(--rot) * -2))}}.stats{margin-top:56px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}.stat{padding:18px 14px;border-radius:18px;color:#fff;box-shadow:0 12px 24px #3a1a1f40}.stat.c0{background:linear-gradient(150deg,#c8102e,#8b1a2b)}.stat.c1{background:linear-gradient(150deg,#d4af37,#a87d14)}.stat.c2{background:linear-gradient(150deg,#5a0f1c,#2a0710)}.stat-num{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.stat-num b{font-family:var(--display);font-weight:400;font-size:clamp(38px,12vw,58px);line-height:1}.stat-num span{font-family:var(--display);font-size:18px;opacity:.85;text-transform:uppercase}.stat p{margin-top:6px;font-size:16px;line-height:1.25;font-style:italic}.timeline{margin-top:60px}.tl{position:relative;margin-top:24px;padding:10px 0}.tl-line{position:absolute;left:50%;top:0;bottom:0;width:4px;margin-left:-2px;background:linear-gradient(var(--gold),var(--red),var(--gold));transform-origin:top;border-radius:2px}.tl-item{position:relative;width:50%;padding:0 18px 28px}.tl-item.left{margin-right:auto;text-align:right}.tl-item.right{margin-left:auto;text-align:left}.tl-item .polaroid{display:inline-block;width:100%;max-width:200px;padding:6px 6px 0}.tl-item .polaroid figcaption{font-size:18px;padding:4px 0 6px}.tl-item p{margin-top:6px;font-size:16px;line-height:1.25;color:var(--burgundy);font-style:italic}.tl-dot{position:absolute;top:40px;width:18px;height:18px;border-radius:50%;background:var(--red);border:3px solid var(--cream);box-shadow:0 0 0 3px var(--gold)}.tl-item.left .tl-dot{right:-9px}.tl-item.right .tl-dot{left:-9px}.tl-item.today .polaroid{box-shadow:0 0 0 4px var(--gold),0 0 40px #d4af37b3}.tl-item.today .tl-dot{width:26px;height:26px;top:36px;animation:beat 1s ease-in-out infinite}.tl-item.today.left .tl-dot{right:-13px}.tl-item.today.right .tl-dot{left:-13px}.trail{position:fixed;z-index:70;pointer-events:none;font-size:20px;transform:translate(-50%,-50%);animation:trail .9s ease-out forwards}@keyframes trail{to{opacity:0;transform:translate(calc(-50% + var(--dx)),-120%) scale(.4) rotate(40deg)}}
