/* Herramentia · motion.css · 12/10/2026
   Fase 3: propuestas de movimiento 1 a 5 aprobadas y revelado a 240 ms (R1).
   Archivo único, idéntico en hub, blog y herramientas. Solo transform y opacity.
   Con «reducir movimiento» se conservan los fundidos y se quita el desplazamiento. */

:root{
  --ease-out:cubic-bezier(0.16,1,0.3,1);      /* la misma que ya define el styles.css heredado */
  --ease-drawer:cubic-bezier(0.32,0.72,0,1);
}

/* 1 · Respuesta al pulsar (botones, chips, tarjetas). No afecta al cuadro de carga. */
.hm-btn{transition:background .15s,border-color .15s,opacity .15s,transform 140ms var(--ease-out);}
.hm-pill-filter,.hm-guide-card{transition:transform 140ms var(--ease-out);}
.hm-tool-card{transition:border-color .15s,box-shadow .15s,transform 140ms var(--ease-out);}
.hm-btn:active,.hm-pill-filter:active,.btn:active{transform:scale(.98);}
.btn:active{transition-duration:140ms;}
.hm-tool-card:active,.hm-guide-card:active,.tool-link:active{transform:scale(.99);}

/* 4 · Estado de espera: barra de 3 px bajo el texto «Abriendo el documento…» */
.working-box:not([hidden]){position:relative;overflow:hidden;}
.working-box:not([hidden])::after{
  content:"";position:absolute;left:0;bottom:0;width:40%;height:3px;border-radius:3px;
  background:var(--accent,var(--color-primary,#1B4BD2));
  animation:hm-indeterminate 1.4s ease-in-out infinite,hm-fade-in 150ms ease-out 400ms backwards;
}
@keyframes hm-indeterminate{0%{transform:translateX(-100%);}100%{transform:translateX(250%);}}
@keyframes hm-fade-in{from{opacity:0;}}

/* 5 · Aparición del resultado: una sola vez al pasar de «idle» a «done».
   La animación cuelga del contenedor, que no se vuelve a crear cuando el usuario
   edita una cifra y el resultado se repinta, así que no parpadea. */
@keyframes hm-reveal{from{opacity:0;transform:translateY(6px);}}
[data-state="done"] [data-results]{animation:hm-reveal 200ms var(--ease-out) backwards;}
.result-actions:not([hidden]){animation:hm-reveal 200ms var(--ease-out) backwards;}

/* R1 · Revelado al hacer scroll del CSS heredado: de 700 ms y 22 px a 240 ms y 8 px, sin retrasos */
.js .reveal{transform:translateY(8px);transition:opacity 240ms var(--ease-out),transform 240ms var(--ease-out);}
.js .reveal.in-view{transform:translateY(0);}
.js .reveal.delay-1,.js .reveal.delay-2{transition-delay:0s;}

/* Movimiento reducido: sin desplazamiento ni escala, con fundidos */
@media (prefers-reduced-motion:reduce){
  .hm-btn:active,.hm-pill-filter:active,.btn:active,
  .hm-tool-card:active,.hm-guide-card:active,.tool-link:active{transform:none;opacity:.85;}
  .working-box:not([hidden])::after{animation:none;width:100%;opacity:.5;}
  @keyframes hm-reveal{from{opacity:0;}}
  .js .reveal{opacity:1;transform:none;transition:none;}
}

/* P1 fase 3: el CSS de .result-actions (display:flex) pisaba el atributo hidden y los botones de informe se veían antes de haber informe */
.result-actions[hidden]{display:none;}
