*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:#0d0d0d;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;user-select:none;-webkit-user-select:none}.hint{color:#ffffff59;font-size:13px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:28px}.card{position:relative;width:min(320px,80vw);aspect-ratio:3 / 4;border-radius:24px;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s ease}.card:active{transform:scale(.96)}@keyframes pulse-ring{0%{box-shadow:0 0 #e879a0b3}70%{box-shadow:0 0 0 28px #e879a000}to{box-shadow:0 0 #e879a000}}.card.tapped{animation:pulse-ring .9s ease-out}.card-img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;background:linear-gradient(160deg,#f9a8d4,#e879a0 35%,#be185d 65%,#831843)}.ripple{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at var(--rx, 50%) var(--ry, 50%),rgba(255,255,255,.38) 0%,transparent 65%);opacity:0;transition:opacity .05s}.card.tapped .ripple{opacity:1}.label{margin-top:22px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#fff3;transition:color .3s}.label.active{color:#e879a0cc}.vibe-icon{display:inline-block;margin-right:5px}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}.label.active .vibe-icon{animation:shake .5s ease-in-out}.splash-root{position:absolute;left:var(--sx);top:var(--sy);width:0;height:0;pointer-events:none}@keyframes fly{0%{transform:rotate(var(--angle)) translate(0) scale(1);opacity:1}80%{transform:rotate(var(--angle)) translate(var(--dist)) scale(.6);opacity:.7}to{transform:rotate(var(--angle)) translate(calc(var(--dist) * 1.2)) scale(0);opacity:0}}.particle{position:absolute;width:var(--size);height:var(--size);border-radius:50%;background:radial-gradient(circle,#fff 0%,rgba(232,121,160,.9) 60%,transparent 100%);transform-origin:center center;animation:fly .55s cubic-bezier(.22,.61,.36,1) var(--delay) both;top:calc(var(--size) / -2);left:calc(var(--size) / -2)}
