.sparkles{position:fixed;inset:0;z-index:45;pointer-events:none;overflow:hidden}.sparkles i{position:absolute;left:var(--x);top:110%;width:var(--size);height:var(--size);border-radius:50%;background:#fff;box-shadow:0 0 8px #fff,0 0 15px var(--accent2);animation:starFly var(--d) var(--delay) linear infinite}.gallery-card{animation:photoFloat 4.5s var(--delay) ease-in-out infinite}.series-card:nth-child(odd){animation:cardSway 5s ease-in-out infinite}.heart-game{position:relative}.game-top{display:flex;justify-content:space-between;gap:15px;align-items:center}.game-top p{color:#aaa}.heart-arena{height:340px;position:relative;border:1px solid #ffffff15;border-radius:14px;overflow:hidden;background:radial-gradient(circle,#3a0c14,#100d0e);display:grid;place-items:center}.catch-heart{position:absolute;border:0;background:transparent;color:var(--accent2);font-size:2.4rem;filter:drop-shadow(0 0 9px #ff365c);cursor:pointer;animation:heartPop .35s both,heartBeat .7s .35s infinite}.catch-heart.caught{transform:scale(2);opacity:0;transition:.18s}#player{position:fixed;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}.intro-mark,.brand{color:var(--accent)}@keyframes starFly{to{transform:translate(16vw,-125vh) rotate(180deg);opacity:0}}@keyframes photoFloat{50%{transform:translateY(-8px) rotate(.5deg)}}@keyframes cardSway{50%{transform:translateY(-5px)}}@keyframes heartPop{from{transform:scale(0)}}@keyframes heartBeat{50%{transform:scale(1.18)}}@media(max-width:720px){.heart-arena{height:300px}.game-top{font-size:.78rem}.sparkles i:nth-child(even){display:none}}
