/* =====================================================================
   Casa Gobelas · sistema de movimiento comun (lo monta assets/js/motion.js)
   Todo cuelga de html.has-motion, que solo pone motion.js: si el script
   falla o no llega, la pagina se ve y se lee tal cual, sin nada oculto.
   Calma: una familia de curvas de salida (expo y quint, nunca rebote),
   duraciones de 1,2 a 1,8 s, pasos de 120 a 160 ms entre piezas, sin
   desenfoques, sin iman y sin contadores que ruedan.
   El estado final de cada pieza es identico al de la pagina sin script.
   ===================================================================== */
:root{
  --mo-e:cubic-bezier(.16,1,.3,1);     /* expo de salida: lo que se desplaza */
  --mo-q:cubic-bezier(.22,1,.36,1);    /* quint de salida: opacidad */
  --mo-lift:cubic-bezier(.5,0,.1,1);   /* respaldo de la curva de masa (abajo) */
}
/* curva de masa: arranca desde el reposo y frena largo. Para hairlines y trazos */
@supports (transition-timing-function:linear(0,1)){
  :root{--mo-lift:linear(0, .0043 2%, .0187 4%, .0423 6%, .0736 8%, .1109 10%, .1525 12%, .2202 15%, .2908 18%, .3613 21%, .4518 25%, .5353 29%, .6278 34%, .7203 40%, .8041 47%, .8735 55%, .9258 64%, .9619 74%, .9861 86%, 1)}
}

/* los .rv que gestiona motion.js dejan de hacer el fundido comun */
html.has-motion :where(.rv[data-mo]){opacity:1;transform:none;transition:none}

/* ---------- titulares por lineas ---------- */
/* hasta que se parten (tras cargar las fuentes) no se ven, para no saltar */
html.has-motion [data-mo~=lines]:not(.mo-split){visibility:hidden}
/* la mascara es un clip-path ampliado: no toca la caja y deja sitio a descendentes y cursivas */
.mo-l{display:block;white-space:nowrap;clip-path:inset(-.42em -.7em -.36em -.4em)}
.mo-li{display:block;transform:translate3d(0,calc(100% + .52em),0);opacity:0;
  transition:transform 1.7s var(--mo-e) calc(var(--d,0ms) + var(--i,0) * 140ms),
             opacity 1.3s var(--mo-q) calc(var(--d,0ms) + var(--i,0) * 140ms)}
html.has-motion [data-mo~=lines].mo-in .mo-li{transform:none;opacity:1}

/* ---------- rotulos: aparecen y el tracking se asienta ---------- */
html.has-motion [data-mo~=wipe]{opacity:0;letter-spacing:calc(var(--ls,0px) + .1em);
  transition:opacity 1.3s var(--mo-q) var(--d,0ms),letter-spacing 1.8s var(--mo-e) var(--d,0ms)}
html.has-motion [data-mo~=wipe].mo-in{opacity:1;letter-spacing:var(--ls,0px)}

/* ---------- texto corrido: sube muy poco y aparece ---------- */
html.has-motion [data-mo~=soft]{opacity:0;transform:translate3d(0,12px,0);
  transition:opacity 1.3s var(--mo-q) var(--d,0ms),transform 1.5s var(--mo-e) var(--d,0ms)}
html.has-motion [data-mo~=soft].mo-in{opacity:1;transform:none}

/* ---------- barra: se recoge al bajar y vuelve al subir (con las transiciones de gobelas.css) ---------- */
html.has-motion .nav.is-on.mo-tuck{opacity:0;transform:translate3d(0,-72%,0);pointer-events:none}

/* ---------- movimiento reducido: solo fundidos cortos, sin desplazamientos ---------- */
html.mo-reduced [data-mo~=soft]{transform:none;transition:opacity .6s ease var(--d,0ms)!important}
html.mo-reduced [data-mo~=wipe]{letter-spacing:var(--ls,normal);transition:opacity .6s ease var(--d,0ms)!important}
