@font-face{font-family:Montserrat;font-weight:400;font-display:swap;src:url(./montserrat-latin-400-normal-BLhwKU8k.woff2) format("woff2")}@font-face{font-family:Montserrat;font-weight:600;font-display:swap;src:url(./montserrat-latin-600-normal-UVxSCcoG.woff2) format("woff2")}@font-face{font-family:Montserrat;font-weight:700;font-display:swap;src:url(./montserrat-latin-700-normal-BdjcYUrC.woff2) format("woff2")}@font-face{font-family:Great Vibes;font-weight:400;font-display:swap;src:url(./great-vibes-latin-400-normal-q5-78SH_.woff2) format("woff2")}@font-face{font-family:Caveat;font-weight:600;font-display:swap;src:url(./caveat-latin-600-normal-zlTlWIYU.woff2) format("woff2")}:root{--white:#fff;--ivory:#FFF9F0;--gold:#D4AF37;--gold2:#AA7C24;--red:#C62845;--wine:#6D1028;--blush:#FCE7EB;--script:"Great Vibes","Segoe Script",cursive;--sans:"Montserrat",system-ui,sans-serif;--hand:"Caveat","Segoe Print",cursive}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{line-height:1.65;font-family:var(--sans);color:var(--wine);background:radial-gradient(120% 90% at 50% 0%,var(--white),var(--ivory) 45%,var(--blush));overflow:hidden;-webkit-tap-highlight-color:transparent}button{font-family:inherit}h1,h2{word-spacing:.12em;text-wrap:balance;font-family:var(--script);font-weight:400;margin:.15em 0 .45em;line-height:1.2;letter-spacing:.01em}h1{font-size:clamp(2.1rem,9.5vw,2.9rem)}h2{font-size:clamp(1.75rem,7.5vw,2.25rem)}.app{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:max(60px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));overflow-y:auto;z-index:2}.slide{animation:fade .7s both;width:100%;display:grid;place-items:center}.card{width:min(94vw,470px);padding:28px 22px;text-align:center;background:#ffffffbd;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--gold);border-radius:22px;box-shadow:0 12px 40px #6d102824,inset 0 0 0 4px #ffffffb3,inset 0 0 0 5px #d4af3759}.glow{box-shadow:0 0 40px #d4af3773,0 12px 40px #6d102824}.line{font-size:.95rem;margin:.45em 0;opacity:0;animation:rise .8s forwards}.small{font-size:.85rem;opacity:.8}.script{word-spacing:.12em;font-family:var(--script);font-size:1.7rem;line-height:1.25}.big{word-spacing:.12em;font-family:var(--script);font-size:1.65rem;line-height:1.25;margin:.7em 0 1em}.hint{min-height:1.4em}.clock{font:700 clamp(1.8rem,9vw,2.6rem) var(--sans);color:var(--red);margin:.4em 0;letter-spacing:.05em}.clock small{font-size:.9rem}.btn{border:1px solid var(--gold);background:linear-gradient(135deg,var(--red),var(--wine));color:#fff;border-radius:999px;padding:12px 26px;font-weight:600;font-size:1rem;min-height:46px;cursor:pointer;box-shadow:0 4px 14px #c6284559;transition:transform .25s}.btn.ghost{background:#fff;color:var(--wine);box-shadow:0 2px 10px #6d102826}.btn:active{filter:brightness(.95)}.row{display:flex;gap:18px;justify-content:center;align-items:center;min-height:180px}.dodge{transition:transform .3s cubic-bezier(.3,1.6,.5,1)}.pill{display:inline-block;font-size:.75rem;padding:3px 12px;border-radius:99px;background:var(--blush);border:1px solid var(--gold)}.quotes{display:grid;gap:8px;margin:14px 0}.quote{padding:10px 12px;border-radius:12px;background:var(--ivory);border:1px solid rgba(212,175,55,.6);font-size:.9rem;animation:rise .6s both}.fly{position:fixed;top:-9vh;z-index:5;border:0;background:none;font-size:2.4rem;padding:10px;cursor:pointer;animation:fall linear forwards;filter:hue-rotate(300deg) saturate(1.6)}.opts{display:grid;gap:10px;margin-top:14px}.opt{padding:13px;border-radius:14px;border:1px solid var(--gold);background:#fff;color:var(--wine);font-size:1rem;cursor:pointer;min-height:48px;transition:.2s}.opt:hover:not(:disabled){background:var(--blush)}.opt.good{background:linear-gradient(135deg,#FFF3C9,var(--gold));font-weight:600}.opt.bad{animation:shake .4s;background:var(--blush)}.opt:disabled:not(.good){opacity:.55}.hearts{display:flex;flex-wrap:wrap;gap:10px 20px;justify-content:center;align-items:flex-end;margin-top:10px}.hb{position:relative;width:112px;background:none;border:0;cursor:pointer;padding:0;color:var(--wine);display:flex;flex-direction:column;align-items:center}.hb .heart{width:100px;height:100px;filter:drop-shadow(0 4px 8px rgba(109,16,40,.25));animation:beat 1.6s ease-in-out infinite}.hb.main .heart{width:104px;height:104px;animation-duration:1.1s;filter:drop-shadow(0 0 12px rgba(198,40,69,.55))}.hb.white .heart{filter:drop-shadow(0 0 10px rgba(212,175,55,.7))}.hb em{font:600 .78rem var(--sans);font-style:normal;margin-top:4px}.hb.opening .heart{animation:openh .55s forwards}.sp{position:absolute;pointer-events:none;color:var(--gold);font-size:.9rem;animation:tw 2s infinite}.s1{top:2px;right:12px}.s2{top:30px;left:6px;animation-delay:.7s}.s3{top:8px;left:28px;animation-delay:1.3s}.bar{position:fixed;top:max(10px,env(safe-area-inset-top));right:12px;z-index:90;display:flex;gap:8px;align-items:center;background:#fffc;border:1px solid var(--gold);border-radius:99px;padding:4px 6px 4px 12px}.bar input{width:70px;accent-color:var(--red)}.mus{width:38px;height:38px;border-radius:50%;border:1px solid var(--gold);background:#fff;font-size:1.1rem;cursor:pointer}.toast{position:fixed;bottom:max(16px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:95;background:var(--wine);color:#fff;padding:10px 16px;border-radius:12px;font-size:.85rem;max-width:90vw;text-align:center}.ambient{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:1}.p{position:absolute;top:-6%;animation:drift linear infinite;opacity:.7}.p.k0,.p.k3{width:12px;height:12px;background:var(--red);border-radius:100% 0;opacity:.35}.p.k3{background:#e88aa0}.p.k1{color:var(--red)}.p.k2{color:var(--gold)}.burst{position:fixed;left:50%;top:45%;z-index:99;pointer-events:none}.burst i{position:absolute;font-style:normal;font-size:1.3rem;animation:pop 1.3s ease-out forwards}.ov{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#fff9f0f2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:max(56px,env(safe-area-inset-top)) 12px max(14px,env(safe-area-inset-bottom));touch-action:pan-y;animation:rise .5s both}.close{position:absolute;top:max(10px,env(safe-area-inset-top));left:12px;width:42px;height:42px;border-radius:50%;border:1px solid var(--gold);background:#fff;color:var(--wine);font-size:1.1rem;cursor:pointer;z-index:2}.stage{flex:1;min-height:0;width:100%;display:grid;place-items:center;animation:scalein .8s both}.stage figure{margin:0;max-height:100%;display:flex;flex-direction:column;align-items:center;gap:8px;min-height:0}.stage img{max-width:92vw;max-height:calc(100dvh - 190px);max-height:calc(100vh - 190px);object-fit:contain;border:2px solid var(--gold);border-radius:12px;box-shadow:0 10px 36px #6d102840;background:#fff}@supports (height:100dvh){.stage img{max-height:calc(100dvh - 190px)}}figcaption{font-family:var(--script);font-size:1.6rem;line-height:1.2}.final{max-height:70vh;overflow:auto}.final p{line-height:1.6}.ctl{display:flex;gap:10px;align-items:center}.ctl button{min-height:44px;min-width:44px;padding:0 16px;border-radius:99px;border:1px solid var(--gold);background:#fff;color:var(--wine);font-size:1rem;cursor:pointer}.ctl button:disabled{opacity:.35}.prog{width:min(80vw,300px);height:3px;background:#d4af374d;border-radius:2px}.prog i{display:block;height:100%;background:var(--gold);transition:width .5s}.grid-wrap{flex:1;min-height:0;width:100%;overflow-y:auto;text-align:center}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;max-width:760px;margin:auto}.grid button{padding:0;border:1px solid var(--gold);border-radius:10px;overflow:hidden;background:#fff;aspect-ratio:1;cursor:pointer}.grid img{width:100%;height:100%;object-fit:cover;display:block}@keyframes ring{0%{box-shadow:0 0 #d4af3799}80%,to{box-shadow:0 0 0 18px #d4af3700}}@keyframes fadeout{to{opacity:0}}@keyframes pulse{0%,to{transform:scale(1);box-shadow:0 0 14px #d4af3780}50%{transform:scale(1.07);box-shadow:0 0 28px #d4af37e6}}@keyframes up{to{transform:translateY(-115vh) rotate(20deg);opacity:0}}@keyframes ghopen{0%{transform:scale(1)}35%{transform:scale(.9)}to{transform:scale(2.4);opacity:0;filter:brightness(1.6) drop-shadow(0 0 40px #FFE9A0)}}@keyframes letin{0%{opacity:0;transform:translateY(26px) scale(.92)}to{opacity:1;transform:none}}@keyframes letout{to{opacity:0;transform:translateY(20px) scale(.94)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes scalein{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}@keyframes fall{to{transform:translateY(118vh) rotate(25deg)}}@keyframes drift{to{transform:translate3d(var(--sx),112vh,0) rotate(360deg)}}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.12)}30%{transform:scale(1)}45%{transform:scale(1.08)}}@keyframes openh{to{transform:scale(1.6);opacity:0}}@keyframes tw{0%,to{opacity:.2;transform:scale(.6)}50%{opacity:1;transform:scale(1.2)}}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes pop{0%{transform:translate(0) scale(.4);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.2) rotate(var(--r));opacity:0}}@media (prefers-reduced-motion:reduce){.ambient,.sp,.rain{display:none}*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hb .heart{animation:none}.fly{animation-duration:20s!important}}.msgwrap{display:flex;flex-direction:column;align-items:center;margin-top:24px;gap:8px}.msg{position:relative;width:78px;height:78px;border-radius:50%;border:1.5px solid var(--gold);background:radial-gradient(circle at 35% 30%,#fff,#fff3c9 72%);cursor:pointer;display:grid;place-items:center;padding:0;box-shadow:0 0 18px #d4af3799,0 4px 12px #6d102826}.msg:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:50%;pointer-events:none;animation:ring 2.2s ease-out infinite}.msg svg{animation:beat 2.2s ease-in-out infinite;width:44px;height:44px;filter:drop-shadow(0 0 4px rgba(212,175,55,.8))}.msg:active{filter:brightness(.95)}.msgwrap em{font:600 .85rem var(--sans);font-style:normal;color:var(--wine)}.gh{position:relative;display:block;margin:14px auto 4px;width:150px;height:150px;border:0;background:none;cursor:pointer;padding:0;transition:transform .15s}.gh .heart{width:100%;height:100%;animation:beat 1.6s ease-in-out infinite;filter:drop-shadow(0 0 16px rgba(212,175,55,.85)) drop-shadow(0 6px 10px rgba(109,16,40,.25))}.gh:active{transform:scale(.93)}.gh.opening .heart{animation:ghopen .9s ease-in forwards}.gh .sp{font-size:1.15rem}.gh .s1{top:8px;right:16px}.gh .s2{top:56px;left:4px}.gh .s3{top:4px;left:40px}.rain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3;overflow:hidden}.rain span{position:absolute;bottom:-8%;font-size:1.4rem;animation:up linear infinite}.lov{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#6d102852;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;padding:max(64px,env(safe-area-inset-top)) 14px max(16px,env(safe-area-inset-bottom));animation:fade .35s both}.lov.out{animation:fadeout .28s both}.letter{position:relative;width:min(100%,520px);max-height:calc(100vh - 90px);max-height:calc(100dvh - 90px);display:flex;flex-direction:column;background:linear-gradient(#fff,var(--ivory));border:1.5px solid var(--gold);border-radius:20px;box-shadow:0 18px 60px #6d102859,inset 0 0 0 5px #ffffffd9,inset 0 0 0 6px #d4af3766;animation:letin .45s cubic-bezier(.2,.9,.3,1) both}.lov.out .letter{animation:letout .28s both}.lbody{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:36px 24px 26px;font-family:var(--hand);font-weight:600;font-size:clamp(1.3rem,5.4vw,1.6rem);line-height:1.45;color:#4a0d20;border-radius:20px}.lbody h3{font-family:var(--script);font-weight:400;font-size:2.2rem;text-align:center;margin:0 0 .3em;color:var(--wine);line-height:1.2;padding:0 30px}.lbody p{margin:.75em 0}.lbody .li{margin:.1em 0 .1em 6px}.lbody .big2{font-size:1.2em;text-align:center;color:var(--red);margin:1em 0 .2em}.lbody .orn{text-align:center;margin-top:.8em;letter-spacing:.3em;color:var(--gold2)}.lclose{position:absolute;top:10px;right:10px;width:42px;height:42px;border-radius:50%;border:1px solid var(--gold);background:#fff;color:var(--wine);font-size:1.1rem;cursor:pointer;z-index:2}
