/* ---------- 09/10 · Animações de entrada do Connect — ver animacoes-connect.js
   Só transform/opacity. A classe é colocada só na ENTRADA e tirada logo depois. */
@keyframes aniSubir{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes aniItem{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.ani-subir{animation:aniSubir .45s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--ai, 0) * 35ms)}
.ani-item{animation:aniItem .3s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--ai, 0) * 18ms + 60ms)}

/* módulos: robô "acordando" */
@keyframes aniAcordarFoto{0%{opacity:0;transform:translateY(14px) scale(.9);filter:brightness(2.2) drop-shadow(0 0 30px rgba(247,255,63,.7))}55%{opacity:1;filter:brightness(1.35) drop-shadow(0 0 24px rgba(247,255,63,.45))}100%{opacity:1;transform:none}}
@keyframes aniAcordarLuz{0%{opacity:0;transform:translateX(-50%) scaleX(.4)}40%{opacity:1;transform:translateX(-50%) scaleX(1.25)}100%{transform:translateX(-50%) scaleX(1)}}
.ec-card.ani-acordar .ec-palco img{animation:aniAcordarFoto .9s cubic-bezier(.2,.8,.2,1) var(--ani-dec, 0ms) both}
.ec-card.ani-acordar .ec-luz{animation:aniAcordarLuz 1s cubic-bezier(.2,.8,.2,1) var(--ani-dec, 0ms) both}
.ani-rostinho{position:absolute;top:14px;right:16px;width:46px;height:auto;color:#F7FF3F;filter:drop-shadow(0 0 6px rgba(247,255,63,.7));opacity:0;
  animation:aniRostinho 2.1s ease var(--ani-dec, 0ms) both}
.ani-rostinho .ani-olhos{transform-box:fill-box;transform-origin:center;animation:aniPiscar .24s ease calc(.75s + var(--ani-dec, 0ms))}
@keyframes aniRostinho{0%{opacity:0;transform:scale(.6)}15%{opacity:1;transform:scale(1)}75%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.9)}}
@keyframes aniPiscar{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.08)}}

/* tarefa enviada: check neon */
.ani-enviado{position:fixed;left:50%;top:44%;z-index:900;display:grid;justify-items:center;gap:14px;padding:26px 34px;transform:translate(-50%,-50%);
  background:rgba(8,8,8,.86);border:1px solid rgba(247,255,63,.35);box-shadow:0 20px 60px rgba(0,0,0,.5);pointer-events:none;
  animation:aniEnviado 1.9s cubic-bezier(.2,.8,.2,1) both}
.ani-enviado svg{width:84px;height:84px;color:#F7FF3F;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 10px rgba(247,255,63,.6))}
.ani-enviado .ani-c{stroke-width:6;stroke-dasharray:1;stroke-dashoffset:1;animation:aniTraco .55s cubic-bezier(.6,0,.2,1) .1s forwards}
.ani-enviado .ani-v{stroke-width:8;stroke-dasharray:1;stroke-dashoffset:1;animation:aniTraco .4s cubic-bezier(.6,0,.2,1) .55s forwards}
.ani-enviado span{font-family:'Plus Jakarta Sans',sans-serif;font-size:15px;font-weight:700;color:#fff;letter-spacing:.01em}
@keyframes aniTraco{to{stroke-dashoffset:0}}
@keyframes aniEnviado{0%{opacity:0;transform:translate(-50%,-46%) scale(.92)}14%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-54%) scale(.98)}}

/* quem liga "Reduzir animações" no Connect não vê nada disso */
html.tc-reduzir-anim .ani-subir,html.tc-reduzir-anim .ani-item,html.tc-reduzir-anim .ani-acordar *{animation:none !important}
