:root{--bg-0: #0a0412;--bg-1: #120618;--bg-2: #1a0716;--red: #e0123c;--red-bright: #ff3b5c;--rose: #ff7aa0;--gold: #ffcf6b;--cream: #fff2f5;--ink: #2a0a10;--ink-soft: #6b2030;--font-serif: "Cormorant Garamond", "Times New Roman", serif;--font-hand: "Caveat", cursive;--font-display: "Playfair Display", var(--font-serif)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg-0);color:var(--cream);font-family:var(--font-serif);overflow:hidden}#app{position:relative;width:100%;height:100dvh;overflow:hidden}#app:before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(closest-side 42% 40% at 20% 26%,rgba(224,18,60,.18),transparent 72%),radial-gradient(closest-side 46% 42% at 82% 72%,rgba(150,24,80,.2),transparent 74%),radial-gradient(closest-side 50% 46% at 62% 14%,rgba(255,59,92,.1),transparent 72%),radial-gradient(ellipse 130% 100% at 50% 122%,#2a0712 0%,transparent 60%),linear-gradient(178deg,#0a0412,#120618 46%,#1a0716);animation:nebuladrift 28s ease-in-out infinite alternate;will-change:transform,filter}#app:after{content:"";position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse 78% 76% at 50% 44%,transparent 46%,rgba(5,2,10,.58) 100%)}@keyframes nebuladrift{0%{transform:translateZ(0) scale(1);filter:hue-rotate(0deg)}to{transform:translate3d(-2.5%,1.5%,0) scale(1.07);filter:hue-rotate(-10deg)}}.stars,.flowers,.hearts{position:fixed;inset:0;z-index:0;pointer-events:none}.fireworks{position:fixed;inset:0;z-index:5;pointer-events:none}.taunt-layer{position:fixed;inset:0;z-index:6;pointer-events:none}.stage{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(1.2rem,4vh,2.2rem);width:100%;height:100dvh;padding:max(1.5rem,env(safe-area-inset-top)) 1.25rem max(1.5rem,env(safe-area-inset-bottom));text-align:center}.line{font-family:var(--font-serif);font-size:clamp(1.4rem,6vw,2.2rem);line-height:1.35;margin:0;max-width:22ch;color:var(--cream);text-shadow:0 2px 16px rgba(224,18,60,.35),0 0 40px rgba(224,18,60,.12)}.line--big{font-family:var(--font-display);font-style:italic;font-weight:700;font-size:clamp(2.4rem,12vw,4.5rem);color:var(--gold);text-shadow:0 4px 28px rgba(255,59,92,.5),0 0 60px rgba(255,207,107,.25),0 1px 0 rgba(0,0,0,.5)}.line--name{font-family:var(--font-display);font-style:italic;font-weight:900;font-size:clamp(2.8rem,14vw,5.5rem);color:var(--red-bright);text-shadow:0 0 30px rgba(255,122,160,.6),0 0 70px rgba(224,18,60,.35),0 4px 18px rgba(0,0,0,.6);letter-spacing:.02em}.btn-row{display:flex;gap:.9rem;flex-wrap:wrap;justify-content:center}.btn{font-family:var(--font-serif);font-size:clamp(1.05rem,4.5vw,1.3rem);padding:.8rem 1.7rem;border-radius:40px;border:1px solid transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .2s ease,box-shadow .2s ease,filter .2s ease;letter-spacing:.015em}.btn--primary{color:var(--cream);background:linear-gradient(135deg,var(--red) 0%,var(--red-bright) 100%);box-shadow:0 10px 28px #e0123c80,0 2px 8px #0006,inset 0 1px #ffffff26}.btn--primary:hover{transform:translateY(-2px);box-shadow:0 14px 36px #e0123ca6,0 4px 12px #0006,inset 0 1px #ffffff26;filter:brightness(1.08)}.btn--primary:active{transform:translateY(0) scale(.97);box-shadow:0 6px 16px #e0123c73,0 1px 4px #0006,inset 0 1px #ffffff1a}.btn--ghost{color:var(--cream);background:#ffffff0f;border-color:#ff7aa080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.btn--ghost:hover{background:#ffffff1a;border-color:#ff7aa0cc;transform:translateY(-1px)}.btn--ghost:active{transform:translateY(0) scale(.97)}.btn--runaway{position:fixed;z-index:8;will-change:left,top,transform}.taunt{position:fixed;z-index:6;font-family:var(--font-hand);font-size:clamp(1.1rem,5vw,1.6rem);color:var(--gold);text-shadow:0 2px 10px rgba(0,0,0,.5);pointer-events:none;white-space:nowrap;will-change:transform,opacity}.mute-btn{position:fixed;top:max(1rem,env(safe-area-inset-top));right:1rem;z-index:9;width:2.75rem;height:2.75rem;border-radius:50%;border:1px solid rgba(255,207,107,.45);background:#1a0307a6;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--gold);display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 16px #0006,inset 0 1px #ffcf6b1f;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;-webkit-tap-highlight-color:transparent}.mute-btn:hover{transform:scale(1.08);box-shadow:0 6px 20px #00000080,0 0 12px #ffcf6b40,inset 0 1px #ffcf6b33}.mute-btn:active{transform:scale(.95)}.mute-btn__off,.mute-btn.is-muted .mute-btn__on{display:none}.mute-btn.is-muted .mute-btn__off{display:block}body.no-scroll{overflow:hidden}.selfie-modal{position:fixed;inset:0;z-index:30;display:none;align-items:center;justify-content:center;padding:1rem;opacity:0}.selfie-modal.is-open{display:flex}.selfie-modal__backdrop{position:absolute;inset:0;background:#0a0205e0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.selfie-modal__card{position:relative;max-width:32rem;width:100%;background:linear-gradient(180deg,#fff2f5,#ffe8ef);color:var(--ink);border-radius:16px;padding:2rem 1.75rem 1.5rem;box-shadow:0 30px 80px #0000008c,0 0 0 1px #ff7aa04d;max-height:90vh;overflow-y:auto}.selfie-modal__close{position:absolute;top:.6rem;right:.9rem;background:none;border:0;font-size:1.8rem;line-height:1;color:var(--ink-soft);cursor:pointer;padding:.3rem .5rem;border-radius:6px;transition:background .15s ease}.selfie-modal__close:hover{background:#e0123c14}.selfie-step{text-align:center}.selfie-step__title{font-family:"Playfair Display",var(--font-serif);font-weight:700;font-style:italic;font-size:clamp(1.5rem,3vw,2rem);color:var(--red);margin:0 0 1rem;line-height:1.2}.selfie-step__body{font-family:var(--font-serif);font-size:clamp(1rem,1.6vw,1.1rem);color:var(--ink);line-height:1.5;margin:0 0 .8rem}.selfie-step__body--small{font-style:italic;font-size:.95rem;color:var(--ink-soft)}.selfie-step__body strong{color:var(--red)}.selfie-step__hint{font-family:var(--font-serif);font-style:italic;font-size:.9rem;color:var(--ink-soft);opacity:.75;margin:.5rem 0 1.5rem}.selfie-step__actions{display:flex;gap:.75rem;justify-content:center;margin-top:1.5rem;flex-wrap:wrap}.selfie-step__loader{font-size:3rem;color:var(--red);margin:1.5rem 0;animation:spin 1.4s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.selfie-btn{padding:.65rem 1.3rem;font-family:var(--font-serif);font-size:1rem;border-radius:30px;border:1px solid transparent;cursor:pointer;transition:all .2s ease;letter-spacing:.01em}.selfie-btn--primary{background:linear-gradient(135deg,var(--red) 0%,var(--red-bright) 100%);color:var(--cream);box-shadow:0 6px 16px #e0123c59}.selfie-btn--primary:hover{transform:translateY(-1px);box-shadow:0 8px 20px #e0123c80}.selfie-btn--primary:disabled{opacity:.6;cursor:not-allowed}.selfie-btn--ghost{background:transparent;color:var(--ink-soft);border-color:#6b20304d}.selfie-btn--ghost:hover{background:#0000000a;border-color:var(--ink-soft)}.selfie-frame{position:relative;margin:1rem auto;width:min(20rem,100%);aspect-ratio:1 / 1;background:#0a0204;border-radius:12px;overflow:hidden;box-shadow:0 8px 24px #0000004d}.selfie-frame video,.selfie-frame img{width:100%;height:100%;object-fit:cover;display:block}.selfie-frame video{transform:scaleX(-1)}.selfie-frame__overlay{position:absolute;inset:0;pointer-events:none}.selfie-frame__corner{position:absolute;width:22px;height:22px;border:2px solid var(--gold)}.selfie-frame__corner--tl{top:10px;left:10px;border-right:0;border-bottom:0}.selfie-frame__corner--tr{top:10px;right:10px;border-left:0;border-bottom:0}.selfie-frame__corner--bl{bottom:10px;left:10px;border-right:0;border-top:0}.selfie-frame__corner--br{bottom:10px;right:10px;border-left:0;border-top:0}.selfie-countdown{position:absolute;inset:0;display:grid;place-items:center;font-family:Playfair Display,serif;font-weight:900;font-size:6rem;color:var(--gold);text-shadow:0 4px 18px rgba(0,0,0,.8);opacity:0;pointer-events:none}.selfie-countdown.is-active{opacity:1}.selfie-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
