/* ==========================================================
   GLIMAD · sistema de movimiento
   Tono: sereno, con carácter. Nada rebota, nada parpadea.
   Todo respeta prefers-reduced-motion.
   ========================================================== */

/* --- 1. Revelado al hacer scroll ------------------------- */
[data-rv]{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .55s cubic-bezier(.22,.7,.3,1), transform .55s cubic-bezier(.22,.7,.3,1);
  transition-delay:var(--rvd,0ms);
  will-change:opacity,transform;
}
[data-rv="fade"]{transform:none}
[data-rv="left"]{transform:translateX(-26px)}
[data-rv="right"]{transform:translateX(26px)}
[data-rv="zoom"]{transform:scale(.965)}
[data-rv="blur"]{filter:blur(9px);transform:translateY(16px)}
[data-rv].rv-in{opacity:1;transform:none;filter:none}

/* hijos en cascada: el padre marca data-rv-stagger */
[data-rv-stagger]>*{
  opacity:0;transform:translateY(18px);
  transition:opacity .5s cubic-bezier(.22,.7,.3,1), transform .5s cubic-bezier(.22,.7,.3,1);
}
[data-rv-stagger].rv-in>*{opacity:1;transform:none}

/* --- 2. Titular con barrido de luz ----------------------- */
.rv-shine{position:relative;background-size:200% 100% !important;animation:rvShine 2.6s cubic-bezier(.4,0,.2,1) .25s 1 both}
@keyframes rvShine{0%{background-position:130% 0}100%{background-position:0 0}}

/* --- 3. Subrayado que se dibuja -------------------------- */
.rv-underline{position:relative;display:inline-block}
.rv-underline::after{
  content:"";position:absolute;left:0;right:0;bottom:-.12em;height:.14em;border-radius:99px;
  background:linear-gradient(90deg,var(--oliva,#C2B65C),var(--coral,#D16E72));
  transform:scaleX(0);transform-origin:left;
  transition:transform .9s cubic-bezier(.22,.7,.3,1) .25s;
}
.rv-in .rv-underline::after,.rv-underline.rv-in::after{transform:scaleX(1)}

/* --- 4. Cifras que suben -------------------------------- */
.rv-count{font-variant-numeric:tabular-nums}

/* --- 5. CTA con pulso de luz ----------------------------- */
.rv-glow{position:relative;overflow:hidden;isolation:isolate}
.rv-glow::after{
  content:"";position:absolute;top:0;left:-140%;width:60%;height:100%;z-index:1;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.42),transparent);
  transform:skewX(-18deg);
}
.rv-glow:hover::after{animation:rvSweep .85s cubic-bezier(.3,0,.2,1) 1}
@keyframes rvSweep{to{left:150%}}

/* --- 6. Respiración muy leve del prototipo en foco ------- */
.rv-float{animation:rvFloat 7s ease-in-out infinite}
@keyframes rvFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}

/* --- 7. Borde vivo en tarjetas destacadas ---------------- */
.rv-edge{position:relative}
.rv-edge::before{
  content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;z-index:-1;
  background:linear-gradient(130deg,rgba(194,182,92,.55),rgba(209,110,114,.5),rgba(124,92,255,.45),rgba(194,182,92,.55));
  background-size:280% 280%;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  opacity:0;transition:opacity .4s ease;
}
.rv-edge:hover::before{opacity:1;animation:rvEdge 5s linear infinite}
@keyframes rvEdge{0%{background-position:0% 50%}100%{background-position:280% 50%}}

/* --- 8. Barra de progreso de lectura --------------------- */
#rv-progress{
  position:fixed;top:0;left:0;height:2px;width:0;z-index:9999;pointer-events:none;
  background:linear-gradient(90deg,var(--oliva,#C2B65C),var(--coral,#D16E72),var(--violeta,#7C5CFF));
  transition:width .12s linear;
}

/* --- accesibilidad -------------------------------------- */
@media (prefers-reduced-motion: reduce){
  [data-rv],[data-rv-stagger]>*{opacity:1 !important;transform:none !important;filter:none !important;transition:none !important}
  .rv-shine,.rv-float{animation:none !important}
  .rv-underline::after{transform:scaleX(1) !important;transition:none !important}
  .rv-glow:hover::after{animation:none !important}
  #rv-progress{display:none}
}
