﻿/* =====================================================
   Animaciones extra, fondo dinámico y asistente guía
===================================================== */

/* ---------- fondo vivo ---------- */
body::before{content:"";position:fixed;inset:-25%;z-index:0;pointer-events:none;opacity:.3;mix-blend-mode:screen;filter:blur(70px);
  background:conic-gradient(from 0deg at 50% 50%,#3b82f600,#a855f766,#f5c54233,#22d3ee55,#ec489944,#3b82f600);animation:aurora 50s linear infinite}
@keyframes aurora{to{transform:rotate(360deg)}}
#spot{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(280px circle at var(--mx,50%) var(--my,30%),#ffffff18,transparent 70%)}
#sky{transition:transform .4s ease-out}

/* ---------- entradas escalonadas ---------- */
.grid .gcard,.invgrid .icard,.offer{animation:cardIn .6s cubic-bezier(.2,.9,.3,1.15) both;animation-delay:calc(var(--i,0)*55ms)}
@keyframes cardIn{from{opacity:0;transform:translateY(34px) scale(.82) rotate(-3deg)}}
.gcard.done .frame,.gcard.new .frame{animation:idle 5.5s ease-in-out infinite;animation-delay:calc(var(--i,0)*-.45s)}
@keyframes idle{50%{translate:0 -5px}}
.screen.active .maphead h2,.screen.active .hero .title{animation:titleIn .7s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes titleIn{from{opacity:0;transform:translateY(-18px) scale(.94)}}
.pickers .pick,.themes .theme{animation:popin .45s backwards}
.pickers .pick:nth-child(2n),.themes .theme:nth-child(2){animation-delay:.08s}
.pickers .pick:nth-child(3n),.themes .theme:nth-child(3){animation-delay:.16s}

/* ---------- botones con vida ---------- */
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,#ffffff70 50%,transparent 70%);transform:translateX(-130%);transition:transform .7s;pointer-events:none}
.btn:hover::after{transform:translateX(130%)}
.pick{position:relative;overflow:hidden}
.rip{position:absolute;border-radius:50%;background:#ffffff77;transform:scale(0);animation:ripple .65s ease-out forwards;pointer-events:none}
@keyframes ripple{to{transform:scale(2.6);opacity:0}}
.chip.pop,.iconbtn.pop{animation:chipPop .55s}
@keyframes chipPop{40%{transform:scale(1.28);box-shadow:0 0 20px var(--gold)}}

/* ---------- juego ---------- */
.dots i.done{animation:dotpop .55s}
@keyframes dotpop{40%{transform:scaleY(2.4)}}
.opt.ok::after{content:"";position:absolute;inset:-2px;border-radius:inherit;border:4px solid #4ade80;animation:ring .8s ease-out forwards;pointer-events:none}
@keyframes ring{from{transform:scale(1);opacity:1}to{transform:scale(1.4,1.7);opacity:0}}
.opt{animation-fill-mode:backwards}
.scorebar span.hot{border-color:#fb923c;box-shadow:0 0 16px #fb923c;animation:hotpulse 1s ease-in-out infinite}
@keyframes hotpulse{50%{box-shadow:0 0 26px #fb923c;transform:scale(1.07)}}
.lives.danger{animation:heart .8s ease-in-out infinite}
@keyframes heart{50%{transform:scale(1.15)}}
.qcard{transition:box-shadow .3s}
.qcard:hover{box-shadow:0 14px 38px #000a,0 0 22px #f5c54233}
.hintbtn{border:2px solid var(--gold);background:linear-gradient(#fff4d6,#f5c542);color:#3a2606;font-weight:700;border-radius:999px;padding:4px 14px;font-size:15px;transition:.15s;animation:pulse 2.4s infinite}
.hintbtn:hover{transform:translateY(-2px) scale(1.05)}
.hintbtn:disabled{filter:grayscale(1);opacity:.6;animation:none}
.scorebar .hintwrap{background:none;border:0;padding:0}

/* ---------- asistente guía ---------- */
#guide{position:fixed;right:14px;bottom:14px;z-index:36;display:flex;flex-direction:column;align-items:flex-end;gap:10px;pointer-events:none}
#guide>*{pointer-events:auto}
#gAvatar{width:74px;height:74px;border:0;padding:0;background:none;position:relative;cursor:pointer;animation:gbob 3.4s ease-in-out infinite;filter:drop-shadow(0 6px 12px #000a)}
@keyframes gbob{50%{transform:translateY(-7px)}}
#gAvatar:hover{animation-play-state:paused;transform:scale(1.08)}
.gav{width:100%;height:100%;border-radius:50%;overflow:hidden;border:4px solid var(--gold);background:#1c2272;position:relative;box-shadow:0 0 0 3px #0a1030,0 0 22px #f5c54288}
.gav-in{position:absolute;width:150%;left:-25%;top:-5%}
body[data-theme=gods] .gav-in{width:150%;left:-25%;top:-2%}
body[data-theme=transformers] .gav-in{width:175%;left:-37%;top:-55%}
body[data-theme=pokemon] .gav-in{width:190%;left:-45%;top:-160%}
.gav .sprite{border-radius:0;box-shadow:none}
#gAvatar .gq{position:absolute;right:-4px;top:-4px;width:26px;height:26px;border-radius:50%;background:var(--gold);color:#3a2606;font-weight:700;display:grid;place-items:center;font-size:16px;box-shadow:0 2px 6px #000a;animation:pulse 2s infinite}
#gAvatar.talk .gav{animation:talk .5s ease-in-out infinite}
@keyframes talk{50%{transform:scale(1.07) rotate(-3deg)}}
#gBubble{position:relative;max-width:min(310px,76vw);background:var(--parch);color:var(--ink);border:3px solid var(--gold);border-radius:18px 18px 4px 18px;padding:12px 16px 12px 14px;font-weight:600;font-size:15px;line-height:1.35;box-shadow:0 8px 22px #000a;animation:gpop .4s cubic-bezier(.2,.9,.3,1.3)}
@keyframes gpop{from{opacity:0;transform:translateY(14px) scale(.85)}}
#gBubble b{color:#7a4a00}
#gBubble .gx{position:absolute;top:-11px;left:-11px;width:24px;height:24px;border-radius:50%;border:2px solid var(--gold);background:#1c2272;color:#fff;font-size:13px;line-height:1;cursor:pointer}
.gacts{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.gacts button,.gp-chips button,.gp-foot button{border:2px solid var(--gold);background:linear-gradient(#fff4d6,#ffe08a);color:#3a2606;font-weight:700;border-radius:999px;padding:5px 12px;font-size:13px;cursor:pointer;transition:.15s}
.gacts button:hover,.gp-chips button:hover,.gp-foot button:hover{transform:translateY(-2px);filter:brightness(1.08)}
.gacts button.alt{background:#ffffff22;color:#fff}
#gPanel{width:min(350px,92vw);max-height:min(72vh,540px);display:flex;flex-direction:column;background:linear-gradient(#2a2f94,#141a5c);border:3px solid var(--gold);border-radius:22px;box-shadow:0 14px 40px #000b,0 0 30px #f5c54244;overflow:hidden;animation:gpop .35s cubic-bezier(.2,.9,.3,1.3);transform-origin:100% 100%}
.gp-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#0007;font-weight:700}
.gp-head .gav{width:40px;height:40px;border-width:3px;flex:none}
.gp-head .gname{flex:1;line-height:1.1}
.gp-head .gname small{display:block;font-weight:400;opacity:.8;font-size:12px}
.gp-head button{background:#ffffff22;border:0;color:#fff;width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:15px}
.gp-msgs{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:8px;min-height:120px}
.gm{max-width:90%;padding:8px 12px;border-radius:14px;font-size:14px;line-height:1.38;animation:gpop .3s}
.gm.bot{background:var(--parch);color:var(--ink);align-self:flex-start;border-bottom-left-radius:4px}
.gm.me{background:var(--gold);color:var(--ink);align-self:flex-end;font-weight:600;border-bottom-right-radius:4px}
.gm b{color:#7a4a00}
.gp-chips{padding:8px 10px;display:flex;flex-wrap:wrap;gap:6px;border-top:1px solid #ffffff22;max-height:150px;overflow:auto}
.gp-foot{display:flex;gap:6px;padding:8px 10px;border-top:1px solid #ffffff22;background:#0005;align-items:center}
.gp-foot button.alt{background:#ffffff22;color:#fff;border-color:#ffffff55}
.gp-foot .sp{flex:1}
@media(max-width:640px){#gAvatar{width:56px;height:56px}#guide{right:8px;bottom:8px}}

/* ---------- guía hacia el alias ---------- */
.nudge{animation:nudge 1s ease-in-out 3}
@keyframes nudge{0%,100%{box-shadow:0 0 0 0 #f5c54200;transform:scale(1)}50%{box-shadow:0 0 0 14px #f5c54255,0 0 30px 6px #f5c542aa;transform:scale(1.04)}}

/* ---------- recorrido guiado ---------- */
#tourRing{position:fixed;z-index:58;border-radius:16px;box-shadow:0 0 0 9999px #050818c4,0 0 0 4px var(--gold),0 0 28px 8px #f5c542aa;pointer-events:none;transition:all .4s cubic-bezier(.2,.8,.2,1)}
#tourBox{position:fixed;z-index:59;left:50%;bottom:22px;translate:-50% 0;width:min(480px,94vw);display:flex;gap:12px;align-items:flex-start;background:var(--parch);color:var(--ink);border:4px solid var(--gold);border-radius:20px;padding:12px 14px;box-shadow:0 12px 40px #000c;animation:gpop .35s}
#tourBox .gav{width:56px;height:56px;flex:none}
#tourBox .tt{flex:1;font-weight:600;font-size:15px;line-height:1.35}
#tourBox .tn{font-size:12px;opacity:.7;font-weight:500}
#tourBox .gacts{margin-top:8px}

@media (prefers-reduced-motion:reduce){
  body::before,#gAvatar,.gcard .frame,.hintbtn,.btn.pulse{animation:none!important}
  .grid .gcard,.invgrid .icard,.offer{animation:none!important}
}
@media print{#guide,#spot,#tourRing,#tourBox{display:none!important}}
