:root{--bg-from: #fff0f3;--bg-to: #ffd6e0;--bg-mid: #ffe0ec;--primary: #ff69b4;--primary-hover: #ff1493;--text-color: #5a3e3e;--card-bg: rgba(255, 255, 255, .7);--font-body: "Nunito", sans-serif;--font-heading: "Pacifico", cursive;--accent-coral: #ff7f7f;--accent-lavender: #e6e6fa;--accent-coral-soft: rgba(255, 127, 127, .15);--accent-lavender-soft: rgba(230, 230, 250, .2);--anim-fast: .2s;--anim-normal: .35s;--anim-slow: .7s;--blur-card: 16px;--blur-toggle: 10px;--card-radius: 28px;--card-border: rgba(255, 255, 255, .5);--card-shadow: 0 8px 32px rgba(255, 105, 180, .15), 0 2px 8px rgba(0, 0, 0, .04);--card-glow: none}:root[data-theme=dark]{--bg-from: #1a0a1e;--bg-to: #2d1b36;--bg-mid: #231028;--primary: #ff69b4;--primary-hover: #ff85c8;--text-color: #faf0f5;--card-bg: rgba(255, 255, 255, .12);--accent-coral: #ff9999;--accent-lavender: #c5b3e6;--accent-coral-soft: rgba(255, 153, 153, .1);--accent-lavender-soft: rgba(197, 179, 230, .1);--card-border: rgba(255, 105, 180, .18);--card-shadow: 0 8px 32px rgba(255, 105, 180, .1), 0 2px 8px rgba(0, 0, 0, .2);--card-glow: 0 0 40px rgba(255, 105, 180, .15), 0 0 80px rgba(255, 105, 180, .05)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100vh;height:100dvh;overflow:hidden;font-family:var(--font-body);color:var(--text-color);letter-spacing:.02em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;position:relative;overflow:hidden;background:var(--bg-from)}body:before{content:"";position:fixed;inset:0;z-index:-1;background:linear-gradient(135deg,var(--bg-from) 0%,var(--bg-mid) 33%,var(--bg-to) 66%,var(--bg-from) 100%);background-size:400% 400%;animation:gradientShift 15s ease infinite;transition:background .5s ease}#app{display:flex;align-items:center;justify-content:center;width:100%;height:100vh;height:100dvh;position:relative;z-index:1;padding:calc(20px + env(safe-area-inset-top,0px)) calc(20px + env(safe-area-inset-right,0px)) calc(20px + env(safe-area-inset-bottom,0px)) calc(20px + env(safe-area-inset-left,0px));overflow:hidden}@keyframes gradientShift{0%{background-position:0% 50%}25%{background-position:50% 0%}50%{background-position:100% 50%}75%{background-position:50% 100%}to{background-position:0% 50%}}@keyframes headBob{0%,to{transform:rotate(0) translateY(0)}25%{transform:rotate(-5deg) translateY(2px)}75%{transform:rotate(5deg) translateY(2px)}}@keyframes earLeft{0%,to{transform:rotate(0)}25%{transform:rotate(-4deg)}50%{transform:rotate(0)}75%{transform:rotate(-2deg)}}@keyframes earRight{0%,to{transform:rotate(0)}25%{transform:rotate(2deg)}50%{transform:rotate(0)}75%{transform:rotate(4deg)}}@keyframes blink{0%,48%,52%,to{transform:scaleY(1)}50%{transform:scaleY(.1)}}@keyframes tongueWag{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes hairBounce{0%,to{transform:rotate(0)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}@keyframes pulseText{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}@keyframes staggerFadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes btnReveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes musicPulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(40px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.3)}60%{opacity:1;transform:scale(1.08)}80%{transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95) translateY(-10px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes floatUp{0%{transform:translateY(100vh) rotate(0);opacity:0}10%{opacity:.15}90%{opacity:.15}to{transform:translateY(-100px) rotate(360deg);opacity:0}}@keyframes confettiEmojiFall{0%{transform:translateY(0) rotate(0) scale(1);opacity:1}25%{transform:translateY(25vh) rotate(90deg) translate(30px) scale(1.1)}50%{transform:translateY(50vh) rotate(180deg) translate(-30px) scale(.9)}75%{transform:translateY(75vh) rotate(270deg) translate(20px) scale(1);opacity:.8}to{transform:translateY(105vh) rotate(360deg) scale(.6);opacity:0}}@keyframes trailFade{0%{opacity:.7;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.3) translateY(-20px)}}@keyframes messageFloat{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}10%{opacity:1;transform:translate(-50%) scale(1)}80%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-30px) scale(.95)}}@keyframes puppyBounceIn{0%{transform:scale(0);opacity:0}50%{transform:scale(1.15);opacity:1}70%{transform:scale(.95)}to{transform:scale(1);opacity:1}}@keyframes btnHeartbeat{0%,to{transform:scale(1)}14%{transform:scale(1.06)}28%{transform:scale(1)}42%{transform:scale(1.04)}56%{transform:scale(1)}}.anim-fadeSlideUp{animation:fadeSlideUp .7s cubic-bezier(.22,1,.36,1) forwards}.anim-scaleIn{animation:scaleIn .8s cubic-bezier(.22,1,.36,1) forwards}.anim-fadeIn{animation:fadeIn .6s ease forwards}.anim-fadeOut{animation:fadeOut .35s ease forwards}::view-transition-old(root){animation:fadeOut .3s ease forwards}::view-transition-new(root){animation:fadeSlideUp .4s cubic-bezier(.22,1,.36,1) forwards}#loading-screen{position:fixed;inset:0;background:var(--bg-from);z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .5s ease}.puppy-loader{width:180px;height:180px;margin-bottom:20px;overflow:visible}.puppy-head-group{transform-origin:50% 80%;animation:headBob 3s ease-in-out infinite}.puppy-ear-left{transform-origin:45px 85px;animation:earLeft 3s ease-in-out infinite}.puppy-ear-right{transform-origin:155px 85px;animation:earRight 3s ease-in-out infinite}.puppy-eye-group{transform-origin:50% 45%;animation:blink 4s infinite}.puppy-tongue{animation:tongueWag 1.2s ease-in-out infinite}.puppy-hair{transform-origin:100px 62px;animation:hairBounce 3s ease-in-out infinite}.puppy-tail{transform-origin:20% 80%;animation:tailWag .5s ease-in-out infinite alternate}.loading-text{font-family:var(--font-heading);color:var(--primary);font-size:28px;animation:pulseText 2s ease-in-out infinite}.loading-progress{width:200px;height:4px;background:#ff69b426;border-radius:2px;margin-top:16px;overflow:hidden}.loading-progress-bar{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent-coral));border-radius:2px;width:0%;transition:width .3s ease}.card{position:relative;background:var(--card-bg);backdrop-filter:blur(var(--blur-card));-webkit-backdrop-filter:blur(var(--blur-card));border:1px solid var(--card-border);border-radius:var(--card-radius);padding:clamp(32px,6vw,56px) clamp(24px,5vw,48px);max-width:460px;width:100%;text-align:center;box-shadow:var(--card-shadow);transform-style:preserve-3d;transition:transform .15s ease-out;overflow:hidden}@supports not (backdrop-filter: blur(1px)){.card{background:#ffffffeb}}@supports not (backdrop-filter: blur(1px)){:root[data-theme=dark] .card{background:#1e0f23f2}}.card:before{content:"";position:absolute;inset:-1px;border-radius:var(--card-radius);padding:1px;background:conic-gradient(from var(--card-border-angle, 0deg),transparent 0%,var(--primary) 10%,var(--accent-coral) 20%,var(--accent-lavender) 30%,transparent 40%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:source-out;mask-composite:exclude;opacity:.5;animation:rotateBorder 6s linear infinite;pointer-events:none}@keyframes rotateBorder{to{--card-border-angle: 360deg}}@property --card-border-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}@supports not (font-size: 1cap){.card:before{animation:rotateBorderFallback 6s linear infinite}@keyframes rotateBorderFallback{to{transform:rotate(360deg)}}}.card:after{content:"";position:absolute;inset:0;border-radius:var(--card-radius);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");pointer-events:none;opacity:.4}:root[data-theme=dark] .card{box-shadow:var(--card-shadow),var(--card-glow)}.card-emoji{font-size:clamp(48px,12vw,80px);line-height:1;margin-bottom:16px;animation:pulse 2s ease-in-out infinite,floatGentle 3s ease-in-out infinite;display:block}@keyframes floatGentle{0%,to{transform:scale(1) translateY(0)}50%{transform:scale(1.1) translateY(-4px)}}.card-puppy-svg{width:clamp(80px,20vw,120px);height:clamp(80px,20vw,120px);margin:0 auto 16px;display:block;animation:puppyBounceIn .7s cubic-bezier(.22,1,.36,1) forwards}.card-puppy-svg svg{width:100%;height:100%}.card-heading{font-family:var(--font-heading);font-size:clamp(24px,6vw,40px);color:var(--text-color);margin-bottom:12px;line-height:1.3;white-space:pre-line}.card-heading--alt{font-family:var(--font-body);font-weight:800;text-shadow:0 2px 4px rgba(0,0,0,.06)}.typewriter-cursor{display:inline-block;width:2px;height:1em;background:var(--primary);margin-left:2px;vertical-align:text-bottom;animation:cursorBlink .7s step-end infinite}.card-image{max-width:100%;height:auto;margin-bottom:16px;border-radius:12px;display:block;margin-left:auto;margin-right:auto}.card-subtext{font-size:clamp(14px,3.5vw,18px);color:var(--text-color);opacity:.8;margin-bottom:28px;font-weight:600;line-height:1.7}.envelope{position:relative;width:clamp(240px,65vw,320px);height:clamp(160px,43vw,210px);cursor:pointer;perspective:800px;opacity:0;transform:scale(.8) translateY(20px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,1,.36,1);z-index:5;-webkit-tap-highlight-color:transparent}.envelope--enter{opacity:1;transform:scale(1) translateY(0)}.envelope-back{position:absolute;inset:0;background:linear-gradient(135deg,#ffb6c1,#ff69b4);border-radius:4px 4px 8px 8px;box-shadow:0 8px 32px #ff69b440,0 2px 8px #00000014}.envelope-front{position:absolute;bottom:0;left:0;right:0;height:65%;background:linear-gradient(180deg,#ffd6e0,#ffb6c1);clip-path:polygon(0 30%,50% 0%,100% 30%,100% 100%,0% 100%);border-radius:0 0 8px 8px;z-index:3}.envelope-flap{position:absolute;top:0;left:0;right:0;height:55%;background:linear-gradient(180deg,#ff85a2,#ffb6c1);clip-path:polygon(0 0,50% 100%,100% 0);transform-origin:top center;transition:transform .6s cubic-bezier(.22,1,.36,1);z-index:4}.envelope-letter{position:absolute;top:15%;left:10%;right:10%;height:70%;background:#fff;border-radius:4px;z-index:2;box-shadow:0 2px 8px #0000000d;transition:transform .6s cubic-bezier(.22,1,.36,1) .3s}.envelope-letter:after{content:"";position:absolute;top:20%;left:15%;right:15%;height:50%;background:repeating-linear-gradient(to bottom,rgba(255,105,180,.15) 0px,rgba(255,105,180,.15) 2px,transparent 2px,transparent 12px)}.envelope-seal{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%);font-size:28px;z-index:5;filter:drop-shadow(0 2px 4px rgba(0,0,0,.15));transition:opacity .3s ease,transform .3s ease;animation:envelopeSealPulse 2s ease-in-out infinite}@keyframes envelopeSealPulse{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.12)}}.envelope-tap-hint{position:absolute;bottom:-32px;left:50%;transform:translate(-50%);font-family:var(--font-body);font-size:12px;font-weight:700;color:var(--text-color);opacity:.5;white-space:nowrap;animation:envelopeTapPulse 2s ease-in-out infinite}@keyframes envelopeTapPulse{0%,to{opacity:.5}50%{opacity:.8}}.envelope:hover{transform:scale(1.03) translateY(-2px)}.envelope:hover .envelope-back{box-shadow:0 12px 40px #ff69b44d,0 4px 12px #0000001a}.envelope--opening .envelope-flap{transform:rotateX(180deg)}.envelope--opening .envelope-seal{opacity:0;transform:translate(-50%,-50%) scale(.5)}.envelope--opening .envelope-tap-hint{opacity:0}.envelope--opened .envelope-letter{transform:translateY(-60%)}:root[data-theme=dark] .envelope-back{background:linear-gradient(135deg,#8b3a62,#a84080)}:root[data-theme=dark] .envelope-front{background:linear-gradient(180deg,#6b2a4a,#8b3a62)}:root[data-theme=dark] .envelope-flap{background:linear-gradient(180deg,#7b3058,#8b3a62)}:root[data-theme=dark] .envelope-letter{background:#ffffff1a}:root[data-theme=dark] .envelope-letter:after{background:repeating-linear-gradient(to bottom,rgba(255,105,180,.1) 0px,rgba(255,105,180,.1) 2px,transparent 2px,transparent 12px)}.stagger-item{opacity:0;transform:translateY(20px);animation:staggerFadeUp .5s cubic-bezier(.22,1,.36,1) forwards}.btn-group{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;align-items:center}.btn--awaiting{opacity:0;transform:translateY(12px);pointer-events:none}.btn--reveal{pointer-events:auto;animation:btnReveal .45s cubic-bezier(.22,1,.36,1) forwards}.btn{display:inline-flex;align-items:center;justify-content:center;padding:14px 36px;border-radius:50px;font-family:var(--font-body);font-size:clamp(15px,3.5vw,18px);font-weight:700;cursor:pointer;border:none;outline:none;transition:transform var(--anim-fast) ease,box-shadow var(--anim-fast) ease,background var(--anim-fast) ease;touch-action:manipulation;min-height:48px;min-width:100px;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;position:relative;overflow:hidden}.btn:focus-visible{outline:3px solid var(--primary);outline-offset:3px}.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-hover) 100%);color:#fff;box-shadow:0 4px 20px #ff69b466;transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow var(--anim-fast) ease,background var(--anim-fast) ease}.btn-primary:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,0) 30%,rgba(255,255,255,.3) 50%,rgba(255,255,255,0) 70%,transparent 100%);transition:left .6s ease;pointer-events:none}.btn-primary:hover:before{left:100%}.btn-primary:hover{transform:scale(1.06);box-shadow:0 6px 28px #ff69b48c}.btn-primary:active{transform:scale(.97)}:root[data-theme=dark] .btn-primary:hover{box-shadow:0 6px 28px #ff69b48c,0 0 20px #ff69b44d}.btn-secondary{background:#fff9;color:var(--text-color);border:2px dashed rgba(255,105,180,.35);box-shadow:0 2px 10px #0000000d}:root[data-theme=dark] .btn-secondary{background:#ffffff1a;border-color:#ff69b466}.btn-secondary:hover{background:#ffffffd9;border-color:var(--primary);border-style:solid}:root[data-theme=dark] .btn-secondary:hover{background:#ffffff26;box-shadow:0 0 15px #ff69b433}.btn-runaway{position:fixed!important;z-index:100;transform-origin:top left;transition:none;max-width:none!important;white-space:nowrap;contain:layout}.btn-dart-land{animation:dartLand .35s cubic-bezier(.34,1.56,.64,1)}@keyframes dartLand{0%{filter:blur(2px)}30%{filter:blur(0)}50%{filter:blur(0)}to{filter:blur(0)}}.wind-trail{position:fixed;z-index:99;height:3px;background:linear-gradient(90deg,rgba(255,105,180,.9) 0%,rgba(255,182,193,.7) 30%,rgba(255,105,180,.4) 60%,transparent 100%);border-radius:3px;pointer-events:none;animation:windTrailFade .7s ease-out forwards;opacity:1;box-shadow:0 0 4px #ff69b466}.wind-swoosh{position:fixed;z-index:99;width:60px;height:4px;pointer-events:none;border-radius:50%;background:linear-gradient(90deg,transparent 0%,rgba(255,182,193,.8) 20%,rgba(255,255,255,.85) 50%,rgba(255,182,193,.6) 80%,transparent 100%);animation:windSwooshFade .8s ease-out forwards;opacity:.9;box-shadow:0 0 6px #ff69b44d}@keyframes windTrailFade{0%{opacity:1;transform:rotate(var(--wind-angle, 0deg)) scaleX(1)}40%{opacity:.7}to{opacity:0;transform:rotate(var(--wind-angle, 0deg)) scaleX(.4) translate(15px)}}@keyframes windSwooshFade{0%{opacity:.9;transform:scaleX(1) scaleY(1)}30%{opacity:.7;transform:scaleX(1.6) scaleY(.7)}to{opacity:0;transform:scaleX(.3) scaleY(.2)}}:root[data-theme=dark] .wind-trail{background:linear-gradient(90deg,rgba(255,105,180,.7) 0%,rgba(255,182,193,.5) 30%,rgba(255,105,180,.3) 60%,transparent 100%);box-shadow:0 0 6px #ff69b480}:root[data-theme=dark] .wind-swoosh{background:linear-gradient(90deg,transparent 0%,rgba(255,182,193,.6) 20%,rgba(255,255,255,.6) 50%,rgba(255,182,193,.4) 80%,transparent 100%);box-shadow:0 0 8px #ff69b466}.btn-heartbeat{animation:btnHeartbeat 1.5s ease-in-out infinite}.btn-wiggle{animation:wiggleHint .5s ease-in-out}@keyframes wiggleHint{0%,to{transform:translate(0)}20%{transform:translate(-4px) rotate(-2deg)}40%{transform:translate(4px) rotate(2deg)}60%{transform:translate(-3px) rotate(-1deg)}80%{transform:translate(3px) rotate(1deg)}}#particles{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden;contain:layout style paint;transition:transform .3s ease-out}.particle{position:absolute;font-size:clamp(14px,3vw,28px);opacity:.15;animation:floatUp linear infinite}#confetti-canvas{position:fixed;inset:0;pointer-events:none;z-index:200}#confetti-container{position:fixed;inset:0;pointer-events:none;z-index:200;overflow:hidden}.confetti-emoji{position:absolute;top:-40px;font-size:24px;animation:confettiEmojiFall linear forwards;pointer-events:none}.cursor-trail{position:fixed;pointer-events:none;z-index:9998;font-size:14px;opacity:0;transition:none}.cursor-trail--active{animation:trailFade .8s ease forwards}.liquid-overlay{position:fixed;inset:0;z-index:498;pointer-events:none}.scratch-overlay{position:absolute;inset:0;z-index:10;border-radius:var(--card-radius);cursor:crosshair;touch-action:none}.scratch-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-size:clamp(18px,4vw,24px);color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.3);pointer-events:none;z-index:11;animation:pulseText 2s ease-in-out infinite;white-space:nowrap}.scratch-keyboard-fallback{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:14;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-hover) 100%);color:#fff;border:none;border-radius:50px;padding:12px 24px;font-family:var(--font-body);font-size:14px;font-weight:700;cursor:pointer;clip:rect(0,0,0,0);clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}.scratch-keyboard-fallback:focus-visible{clip:auto;clip-path:none;width:auto;height:auto;outline:3px solid var(--primary);outline-offset:3px}.scratch-hand-hint{position:absolute;top:50%;left:50%;z-index:13;pointer-events:none;opacity:.85;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4));animation:scratchHandDemo 1.8s ease-in-out infinite}@keyframes scratchHandDemo{0%{transform:translate(-70%,-30%)}25%{transform:translate(-30%,-50%)}50%{transform:translate(-60%,-40%)}75%{transform:translate(-20%,-60%)}to{transform:translate(-70%,-30%)}}.scratch-progress-wrap{position:absolute;bottom:12px;left:50%;transform:translate(-50%);width:60%;max-width:220px;height:6px;background:#ffffff40;border-radius:3px;z-index:12;overflow:hidden;pointer-events:none;backdrop-filter:blur(4px);box-shadow:0 1px 4px #00000026;transition:opacity .3s ease}.scratch-progress-bar{height:100%;width:0%;background:linear-gradient(90deg,#ff69b4,#ff1493,#ff69b4);background-size:200% 100%;border-radius:3px;transition:width .2s ease-out;animation:scratchProgressShimmer 1.5s ease-in-out infinite}.scratch-progress--close .scratch-progress-bar{animation:scratchProgressShimmer 1.5s ease-in-out infinite,scratchProgressPulse .6s ease-in-out infinite}@keyframes scratchProgressShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes scratchProgressPulse{0%,to{box-shadow:0 0 4px #ff69b466}50%{box-shadow:0 0 12px #ff69b4cc}}.theme-toggle{position:fixed;top:16px;left:16px;z-index:500;background:var(--card-bg);backdrop-filter:blur(var(--blur-toggle));-webkit-backdrop-filter:blur(var(--blur-toggle));border:1px solid rgba(255,255,255,.3);border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;transition:transform .3s ease,background .3s ease;box-shadow:0 2px 10px #0000001a}.theme-toggle:hover{transform:scale(1.1) rotate(15deg)}.theme-toggle:focus-visible{outline:3px solid var(--primary);outline-offset:3px}@supports not (backdrop-filter: blur(1px)){.theme-toggle{background:#ffffffe6}}@supports not (backdrop-filter: blur(1px)){:root[data-theme=dark] .theme-toggle{background:#1e0f23e6}}.music-toggle{position:fixed;top:16px;right:16px;z-index:500;background:var(--card-bg);backdrop-filter:blur(var(--blur-toggle));-webkit-backdrop-filter:blur(var(--blur-toggle));border:1px solid rgba(255,255,255,.3);border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;transition:transform .3s ease,background .3s ease;box-shadow:0 2px 10px #0000001a}.music-toggle:hover{transform:scale(1.1)}.music-toggle:focus-visible{outline:3px solid var(--primary);outline-offset:3px}@supports not (backdrop-filter: blur(1px)){.music-toggle{background:#ffffffe6}}@supports not (backdrop-filter: blur(1px)){:root[data-theme=dark] .music-toggle{background:#1e0f23e6}}.music-toggle.playing{animation:musicPulse 1s ease-in-out infinite}.music-prompt-overlay{position:fixed;inset:0;z-index:600;display:flex;align-items:center;justify-content:center;background:#0000;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);transition:background .4s ease,backdrop-filter .4s ease,-webkit-backdrop-filter .4s ease;padding:24px}.music-prompt-overlay--active{background:#0006;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.music-prompt-overlay--exit{background:#0000!important;backdrop-filter:blur(0px)!important;-webkit-backdrop-filter:blur(0px)!important;pointer-events:none}.music-prompt-overlay--exit .music-prompt{opacity:0;transform:scale(.9) translateY(10px)}.music-prompt{background:var(--card-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,105,180,.25);border-radius:var(--card-radius);padding:36px 32px 28px;max-width:340px;width:100%;text-align:center;box-shadow:0 16px 48px #ff69b426,0 4px 16px #0000001a;color:var(--text-color);font-family:var(--font-body);opacity:0;transform:scale(.9) translateY(10px);transition:opacity .4s ease,transform .4s cubic-bezier(.22,1,.36,1)}.music-prompt-overlay--active .music-prompt{opacity:1;transform:scale(1) translateY(0)}.music-prompt-icon{font-size:48px;margin-bottom:12px;animation:musicPromptPulse 1.5s ease-in-out infinite}@keyframes musicPromptPulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.music-prompt-title{font-family:var(--font-heading);font-size:clamp(18px,4.5vw,22px);color:var(--text-color);margin-bottom:6px}.music-prompt-subtitle{font-size:13px;opacity:.7;margin-bottom:24px;font-weight:600}.music-prompt-buttons{display:flex;flex-direction:column;gap:10px}.music-prompt-btn{display:flex;align-items:center;justify-content:center;padding:12px 24px;border-radius:50px;font-family:var(--font-body);font-size:15px;font-weight:700;cursor:pointer;border:none;outline:none;min-height:48px;transition:transform .2s ease,box-shadow .2s ease;-webkit-tap-highlight-color:transparent}.music-prompt-btn:focus-visible{outline:3px solid var(--primary);outline-offset:3px}.music-prompt-btn--yes{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-hover) 100%);color:#fff;box-shadow:0 4px 20px #ff69b466}.music-prompt-btn--yes:hover{transform:scale(1.04);box-shadow:0 6px 28px #ff69b48c}.music-prompt-btn--no{background:transparent;color:var(--text-color);opacity:.7;font-weight:600}.music-prompt-btn--no:hover{opacity:1}:root[data-theme=dark] .music-prompt{box-shadow:0 16px 48px #0000004d,0 0 40px #ff69b41a}:root[data-theme=dark] .music-prompt-btn--yes:hover{box-shadow:0 6px 28px #ff69b48c,0 0 20px #ff69b44d}.relationship-timer{margin-top:20px;padding:12px 20px;background:var(--accent-coral-soft);border-radius:16px;border:1px solid rgba(255,105,180,.15);font-size:clamp(11px,2.5vw,14px);color:var(--text-color);opacity:.9;line-height:1.6}:root[data-theme=dark] .relationship-timer{background:#ff69b40f;border-color:#ff69b41f}.timer-label{font-family:var(--font-heading);color:var(--primary);font-size:clamp(13px,3vw,16px);display:block;margin-bottom:4px}.valentine-countdown{margin-top:8px;font-size:clamp(10px,2.2vw,12px);color:var(--accent-coral);opacity:.8}.share-btn{display:inline-flex;align-items:center;gap:6px;margin-top:16px;padding:10px 24px;border-radius:50px;background:var(--accent-lavender-soft);border:1px solid rgba(255,105,180,.25);color:var(--primary);font-family:var(--font-body);font-size:14px;font-weight:700;cursor:pointer;transition:transform var(--anim-fast) ease,background var(--anim-fast) ease}.share-btn:hover{transform:scale(1.05);background:#ff69b433}.share-btn:focus-visible{outline:3px solid var(--primary);outline-offset:3px}.page-indicator{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:100;display:flex;gap:10px;align-items:center;pointer-events:none}.page-indicator-dot{width:8px;height:8px;border-radius:50%;background:var(--text-color);opacity:.2;transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s ease,background .3s ease}.page-indicator-dot--active{opacity:1;background:var(--primary);transform:scale(1.3)}.cheeky-message{position:fixed;bottom:10%;left:50%;transform:translate(-50%);background:#fffffff2;padding:12px 24px;border-radius:50px;color:var(--primary);font-family:var(--font-heading);font-weight:400;font-size:clamp(18px,5vw,24px);pointer-events:none;z-index:1000;white-space:nowrap;box-shadow:0 8px 20px #ff69b440;border:2px solid rgba(255,105,180,.2);animation:messageFloat 2.5s cubic-bezier(.22,1,.36,1) forwards}:root[data-theme=dark] .cheeky-message{background:#281432f2}.reaction-bar{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}.reaction-btn{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,105,180,.2);background:var(--accent-lavender-soft);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s ease,box-shadow .2s ease;-webkit-tap-highlight-color:transparent}.reaction-btn:hover{transform:scale(1.2);box-shadow:0 4px 12px #ff69b433}.reaction-btn:active{transform:scale(.9)}.love-letter{margin-top:20px;text-align:center;font-size:clamp(13px,3vw,16px);line-height:1.8;color:var(--text-color);opacity:.85}.love-letter-line{opacity:0;transform:translateY(8px);animation:letterLineIn .6s ease forwards}@keyframes letterLineIn{to{opacity:1;transform:translateY(0)}}.memories-label{font-family:var(--font-heading);font-size:clamp(14px,3.5vw,18px);color:var(--primary);margin-top:24px;margin-bottom:-8px;text-align:center;opacity:.8}.fairy-light-wall{position:relative;margin-top:24px;margin-left:calc(-1*clamp(24px,5vw,48px));margin-right:calc(-1*clamp(24px,5vw,48px));padding:14px 0 12px;overflow-x:auto;overflow-y:hidden;overflow-y:clip;-webkit-overflow-scrolling:touch;scrollbar-width:none}.fairy-light-wall::-webkit-scrollbar{display:none}.fairy-light-string{position:relative;display:flex;align-items:flex-start;gap:0;min-width:max-content;padding:0 20px}.fairy-light-string:before{content:"";position:absolute;top:18px;left:10px;right:10px;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(180,140,100,.5) 5%,rgba(180,140,100,.6) 50%,rgba(180,140,100,.5) 95%,transparent 100%);border-radius:1px;z-index:0}:root[data-theme=dark] .fairy-light-string:before{background:linear-gradient(90deg,transparent 0%,rgba(255,220,180,.25) 5%,rgba(255,220,180,.35) 50%,rgba(255,220,180,.25) 95%,transparent 100%)}.fairy-light-item{display:flex;flex-direction:column;align-items:center;flex-shrink:0;position:relative;z-index:1;padding:0 6px}.fairy-bulb{width:10px;height:14px;border-radius:50%/40% 40% 60% 60%;position:relative;z-index:2;animation:bulbGlow 2s ease-in-out infinite alternate}.fairy-bulb:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);width:6px;height:5px;background:#b48c64b3;border-radius:2px 2px 0 0}.fairy-bulb--gold{background:#faff00;box-shadow:0 0 8px 3px #faff0066}:root[data-theme=dark] .fairy-bulb--gold{background:#faff00;box-shadow:0 0 12px 5px #faff0080}.fairy-clip{width:2px;height:14px;background:#b48c6480;position:relative}:root[data-theme=dark] .fairy-clip{background:#ffdcb44d}.fairy-clip:after{content:"";position:absolute;bottom:-2px;left:50%;transform:translate(-50%);width:12px;height:6px;background:#b48c6499;border-radius:0 0 3px 3px;box-shadow:0 1px 2px #0000001a}:root[data-theme=dark] .fairy-clip:after{background:#ffdcb459}.polaroid{flex-shrink:0;width:180px;background:#fff;padding:8px 8px 28px;border-radius:2px;box-shadow:0 2px 8px #0000001a,0 1px 3px #0000000f;transition:box-shadow .4s cubic-bezier(.22,1,.36,1);transform-origin:top center;margin-top:2px;cursor:zoom-in}.polaroid:hover{transform:rotate(0) scale(1.08)!important;transition:transform .4s cubic-bezier(.22,1,.36,1),box-shadow .4s cubic-bezier(.22,1,.36,1);box-shadow:0 8px 24px #00000026,0 2px 6px #00000014;z-index:10}:root[data-theme=dark] .polaroid{background:#28232de6;box-shadow:0 2px 8px #0000004d,0 0 1px #ffffff1a inset}:root[data-theme=dark] .polaroid:hover{box-shadow:0 8px 24px #0006,0 0 1px #ffffff26 inset}.polaroid img{width:100%;height:135px;object-fit:cover;border-radius:1px;display:block}.polaroid-caption{font-family:var(--font-heading);font-size:14px;color:var(--text-color);text-align:center;margin-top:6px;opacity:.7;line-height:1.3}.fairy-light-item:nth-child(odd) .polaroid{animation:polaroidSwing 4s ease-in-out infinite alternate}.fairy-light-item:nth-child(2n) .polaroid{animation:polaroidSwing 4.5s ease-in-out infinite alternate-reverse}@keyframes polaroidSwing{0%{transform:rotate(var(--hang-angle))}50%{transform:rotate(var(--hang-angle)) translate(3px) rotate(4deg)}to{transform:rotate(var(--hang-angle)) translate(-2px) rotate(-3deg)}}.fairy-light-item .polaroid.polaroid--drift{animation-play-state:paused!important;transition:none!important}.fairy-light-item .polaroid.polaroid--settling{animation-play-state:paused!important;transition:transform .45s cubic-bezier(.22,1,.36,1)!important}@keyframes bulbGlow{0%{opacity:1;filter:brightness(1)}to{opacity:1;filter:brightness(1.4)}}.fairy-light-item:nth-child(1) .fairy-bulb{animation-delay:0s}.fairy-light-item:nth-child(2) .fairy-bulb{animation-delay:.4s}.fairy-light-item:nth-child(3) .fairy-bulb{animation-delay:.9s}.fairy-light-item:nth-child(4) .fairy-bulb{animation-delay:.2s}.fairy-light-item:nth-child(5) .fairy-bulb{animation-delay:.7s}.fairy-light-item:nth-child(6) .fairy-bulb{animation-delay:1.1s}.fairy-light-item:nth-child(7) .fairy-bulb{animation-delay:.3s}.fairy-light-item:nth-child(8) .fairy-bulb{animation-delay:.8s}.lightbox-overlay{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;background:#0000;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);transition:background .35s ease,backdrop-filter .35s ease,-webkit-backdrop-filter .35s ease;cursor:zoom-out;-webkit-tap-highlight-color:transparent;padding:24px}.lightbox-overlay.lightbox--active{background:#000000d9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.lightbox-overlay img{max-width:calc(100% - 32px);max-height:calc(100% - 32px);object-fit:contain;border-radius:6px;box-shadow:0 16px 60px #00000080;transform:scale(.85);opacity:0;transition:transform .4s cubic-bezier(.22,1,.36,1),opacity .35s ease;user-select:none;-webkit-user-select:none}.lightbox-overlay.lightbox--active img{transform:scale(1);opacity:1}.lightbox-close-hint{position:absolute;top:16px;right:20px;color:#ffffffb3;font-size:32px;font-weight:300;line-height:1;pointer-events:none;opacity:0;transition:opacity .3s ease .15s}.lightbox-overlay.lightbox--active .lightbox-close-hint{opacity:1}@media(max-width:480px){.polaroid{width:150px;padding:7px 7px 26px}.polaroid img{height:110px}.polaroid-caption{font-size:14px}.fairy-light-item{padding:0 4px}}@media(max-width:768px){:root{--blur-card: 10px;--blur-toggle: 6px}}@media(max-width:480px){.btn-group{flex-direction:column;width:100%}.btn-group .btn{width:100%}.btn-runaway{width:auto!important}}@media(prefers-reduced-motion:reduce){.particle{animation:none!important;display:none}body:before{animation:none!important}.card{animation:fadeIn .3s ease forwards!important}.card:before{animation:none!important;opacity:0!important}.card-emoji{animation:none!important}.btn-runaway{transition:none!important}.wind-trail,.wind-swoosh{display:none!important}.btn-dart-land{animation:none!important}.cursor-trail,.cursor-trail--active{display:none}.stagger-item{animation:none!important;opacity:1!important;transform:none!important}.btn--awaiting{opacity:1!important;transform:none!important;pointer-events:auto!important}.btn--reveal{animation:none!important;opacity:1!important;transform:none!important}.btn-primary:before{display:none}.card,.theme-toggle,.music-toggle{backdrop-filter:none;-webkit-backdrop-filter:none}.fairy-bulb{animation:none!important;opacity:1!important}.polaroid{animation:none!important}}
