:root{--bg:#0a0f24;--panel:#121a3a;--mint:#5fffc8;--pink:#ff5fa8;--vio:#9b7bff;--ink:#e8ecff;}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Fredoka',sans-serif;min-height:100vh;
background-image:radial-gradient(circle at 15% 10%,rgba(95,255,200,.12),transparent 40%),radial-gradient(circle at 85% 80%,rgba(255,95,168,.12),transparent 40%),
linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
background-size:auto,auto,32px 32px,32px 32px;background-attachment:fixed}
.mono{font-family:'Martian Mono',monospace}
.panel{background:rgba(18,26,58,.85);border:1px solid rgba(155,123,255,.25);border-radius:18px;backdrop-filter:blur(6px)}
.btn{border-radius:999px;padding:.6rem 1.2rem;font-weight:700;transition:transform .15s,opacity .15s}
.btn:hover{transform:translateY(-2px)}.btn:disabled{opacity:.35;transform:none;cursor:not-allowed}
.btn-main{background:linear-gradient(90deg,var(--mint),var(--vio));color:#0a0f24}
.btn-pink{background:var(--pink);color:#0a0f24}
.btn-ghost{border:1px solid rgba(232,236,255,.25)}
.card{position:relative;aspect-ratio:1;border-radius:16px;overflow:hidden;cursor:pointer;background:#1a2350;transition:transform .2s,box-shadow .2s;animation:pop .4s both}
.card.sel{transform:scale(1.03);box-shadow:0 0 0 4px var(--mint),0 0 30px rgba(95,255,200,.5)}
.card img{width:100%;height:100%;object-fit:cover;display:block}
.shimmer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:1rem;
background:linear-gradient(110deg,#1a2350 30%,#2a3570 50%,#1a2350 70%);background-size:200% 100%;animation:sh 1.4s infinite linear;color:#9aa5d8}
@keyframes sh{to{background-position:-200% 0}}
@keyframes pop{from{opacity:0;transform:scale(.9)}}
.chip{display:inline-flex;gap:.3rem;align-items:center;font-size:.7rem;padding:.2rem .6rem;border-radius:999px;background:rgba(155,123,255,.2);border:1px solid rgba(155,123,255,.4)}
.wob{display:inline-block;animation:wob 2.5s ease-in-out infinite}
@keyframes wob{50%{transform:rotate(20deg) scale(1.1)}}
input[type=range]{accent-color:var(--mint)}
.confetti{position:fixed;top:-10px;width:10px;height:14px;animation:fall 2.2s linear forwards;z-index:99}
@keyframes fall{to{transform:translateY(105vh) rotate(720deg)}}