:root{--bg: #FFF7F9;--pink: #F7B6C8;--accent: #FF7AAE;--text: #2B1B23;--card: #ffffff;--shadow: rgba(255, 122, 174, .16);--shadow-strong: rgba(255, 122, 174, .24);--ring: rgba(255, 122, 174, .45);--radius: 18px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:ui-rounded,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--text);background-color:var(--bg);background-image:url(/hearts-bg.svg),radial-gradient(1200px 700px at 15% 10%,rgba(247,182,200,.45),transparent 65%),radial-gradient(900px 600px at 85% 25%,rgba(255,122,174,.18),transparent 60%);background-repeat:repeat,no-repeat,no-repeat;background-size:260px 260px,auto,auto;background-attachment:fixed,fixed,fixed}.page{min-height:100%;overflow-x:clip}.skip-link{position:absolute;left:-9999px;top:10px;padding:10px 12px;border-radius:12px;background:var(--card);box-shadow:0 10px 30px var(--shadow);color:var(--text);z-index:50}.skip-link:focus{left:10px;outline:3px solid var(--ring)}.icon-btn{border:0;background:#ffffffd9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 12px 30px var(--shadow);border-radius:999px;width:44px;height:44px;display:grid;place-items:center;cursor:pointer}.icon-btn:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.music-btn{position:fixed;top:14px;right:14px;z-index:40}.music-btn[aria-pressed=true]{background:#ff7aae29}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;padding:14px 18px;font-weight:700;letter-spacing:.2px;cursor:pointer;box-shadow:0 14px 40px var(--shadow);transition:transform .14s ease,box-shadow .14s ease,background-color .14s ease}.btn:active{transform:translateY(1px) scale(.99)}.btn:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.btn-yes{background:linear-gradient(180deg,#ff7aaef2,#f7b6c8f2);color:#2b1b23}.btn-no{background:#ffffffe6;color:var(--text)}.hearts-layer{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;overflow:hidden}@media (prefers-reduced-motion: reduce){*{scroll-behavior:auto!important}}@keyframes pulseSoft{0%{transform:translateY(0) scale(1)}50%{transform:translateY(-1px) scale(1.04)}to{transform:translateY(0) scale(1)}}@keyframes pulseStrong{0%{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.08)}to{transform:translateY(0) scale(1)}}@keyframes popAway{0%{transform:translateY(0) rotate(0) scale(1);opacity:1}50%{transform:translateY(-10px) rotate(-4deg) scale(1.12);opacity:1}to{transform:translateY(6px) rotate(10deg) scale(.6);opacity:0}}@keyframes crackFlash{0%{opacity:0;transform:scale(.98)}15%{opacity:1;transform:scale(1)}60%{opacity:.5}to{opacity:0;transform:scale(1.02)}}@keyframes floatHeart{0%{transform:translate3d(var(--x0),var(--y0),0) rotate(var(--r0)) scale(var(--s));opacity:0}10%{opacity:1}to{transform:translate3d(var(--x1),var(--y1),0) rotate(var(--r1)) scale(var(--s));opacity:0}}.is-pulsing-soft{animation:pulseSoft 1.35s ease-in-out infinite}.is-pulsing-strong{animation:pulseStrong .95s ease-in-out infinite}.is-popping{animation:popAway .52s cubic-bezier(.2,.8,.2,1) forwards}.is-cracking{position:relative}.is-cracking:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:inherit;background:linear-gradient(115deg,transparent 35%,rgba(43,27,35,.18) 36%,rgba(43,27,35,.18) 38%,transparent 39%),linear-gradient(250deg,transparent 45%,rgba(43,27,35,.12) 46%,rgba(43,27,35,.12) 48%,transparent 49%);animation:crackFlash .52s ease-out forwards;pointer-events:none}.heart{position:absolute;left:0;top:0;width:var(--size);height:var(--size);will-change:transform,opacity;animation:floatHeart var(--dur) linear forwards;filter:drop-shadow(0 10px 18px rgba(255,122,174,.22))}.heart:before{content:"❤";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:calc(var(--size) * .85);color:#ff7aaee0}.heart.is-warm:before{color:#ff7aaefa}@media (prefers-reduced-motion: reduce){.is-pulsing-soft,.is-pulsing-strong{animation:none!important}.heart{display:none!important}.is-popping{animation-duration:.22s!important}}
