/* ===== Rodemsa — capa de movimiento global ===== */
@media (prefers-reduced-motion: no-preference){
  /* scroll reveal (aplicado por JS a componentes que no lo tenían) */
  .rm-reveal{opacity:0;transform:translateY(26px);transition:opacity .72s cubic-bezier(.22,1,.36,1),transform .72s cubic-bezier(.22,1,.36,1)}
  .rm-reveal.rm-in{opacity:1;transform:none}

  /* ===== Reveal universal al hacer scroll (títulos, textos, tarjetas, listas) ===== */
  .rm-up{opacity:0;transform:translateY(32px);transition:opacity .78s cubic-bezier(.22,1,.36,1),transform .78s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}
  .rm-up.rm-in{opacity:1;transform:none}
  /* títulos: movimiento un poco mayor + micro-escala */
  .rm-title{opacity:0;transform:translateY(42px) scale(.985);transition:opacity .85s cubic-bezier(.22,1,.36,1),transform .85s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}
  .rm-title.rm-in{opacity:1;transform:none}
  /* la palabra en acento del título entra con un realce */
  .rm-title em{display:inline-block;opacity:0;transform:translateY(10px);transition:opacity .6s ease .18s,transform .6s cubic-bezier(.22,1,.36,1) .18s}
  .rm-title.rm-in em{opacity:1;transform:none}
  /* parallax suave ligado al scroll (JS setea --rmp) */
  .rm-parallax{transform:translate3d(0,var(--rmp,0px),0);will-change:transform}
  /* barra de progreso de scroll */
  #rm-progress{position:fixed;top:0;left:0;height:3px;width:100%;transform:scaleX(var(--rmsp,0));transform-origin:0 50%;background:linear-gradient(90deg,var(--primary,#0E5BAA),var(--accent,#3FA9F5));z-index:9999;pointer-events:none}

  /* gradientes animados en secciones oscuras */
  .rm-shimmer{background-size:230% 230% !important;animation:rmShimmer 20s ease infinite}
  @keyframes rmShimmer{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}

  /* flotación sutil de marcas/iconos */
  .rm-float{animation:rmFloat 6s ease-in-out infinite}
  @keyframes rmFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}

  /* hover con vida en tarjetas y botones */
  .card,.csec-card,.service{transition:transform .38s cubic-bezier(.22,1,.36,1),box-shadow .38s cubic-bezier(.22,1,.36,1)}
  .card:hover,.csec-card:hover{transform:translateY(-6px);box-shadow:0 22px 48px rgba(10,37,64,.13)}
  .btn,.rx-map__cta,.ai-btn,.nav__cta .btn,.service__arrow{transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s cubic-bezier(.22,1,.36,1),gap .3s}
  .btn:hover{transform:translateY(-2px)}
  a.service:hover .service__arrow{gap:.9rem}

  /* enlaces del nav con subrayado animado */
  header .nav__menu a{position:relative}
  header .nav__menu a::after{content:'';position:absolute;left:0;right:100%;bottom:-4px;height:2px;background:var(--accent);transition:right .3s cubic-bezier(.22,1,.36,1);border-radius:2px}
  header .nav__menu a:hover::after{right:0}
}

/* botón IA: se compacta al llegar al footer para no solaparse */
.ai-btn.rm-tuck{padding:.8rem !important}
.ai-btn.rm-tuck .ai-btn__label{display:none !important}

/* colchón inferior para que el botón flotante nunca tape el texto del footer */
.footer__bottom{padding-bottom:3.5rem}
@media(min-width:768px){.footer__bottom{padding-bottom:2.25rem}}

/* ===== Animación universal de TEXTOS (todos) — flash-free vía html.rm-pre ===== */
html.rm-pre :is(main,section,.page-hero,.hero,footer) :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,figcaption,dd,dt,td,th,label,.rx-eyebrow,.eyebrow,.spec-chip,.stat,.btn){
  opacity:0;transform:translateY(30px);
  transition:opacity .72s cubic-bezier(.22,1,.36,1) var(--rmd,0ms),transform .72s cubic-bezier(.22,1,.36,1) var(--rmd,0ms);
  will-change:opacity,transform;
}
html.rm-pre .rm-in{opacity:1 !important;transform:none !important}
/* la palabra en acento del título hace un realce secundario */
html.rm-pre :is(h1,h2,h3) em{opacity:0;transform:translateY(7px);transition:opacity .55s ease .16s,transform .55s cubic-bezier(.22,1,.36,1) .16s}
html.rm-pre :is(h1,h2,h3).rm-in em{opacity:1;transform:none}
/* red de seguridad: si algo falla, todo visible */
html.rm-loaded :is(main,section,.page-hero,.hero,footer) :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,figcaption,dd,dt,td,th,label,.rx-eyebrow,.eyebrow,.spec-chip,.stat,.btn),
html.rm-loaded :is(h1,h2,h3) em{opacity:1 !important;transform:none !important}

/* breadcrumb en su propia línea (el eyebrow baja debajo) */
.page-hero .breadcrumb{display:flex}

/* cursor personalizado deshabilitado (usar cursor nativo) */
.cursor-dot,.cursor-ring{display:none !important}

/* contenido colapsable (FAQ <details>) nunca se pre-oculta */
html.rm-pre details :is(h1,h2,h3,h4,h5,h6,p,li,label,.btn){opacity:1 !important;transform:none !important}


/* ===== Ajustes responsivos globales ===== */
body{overflow-x:hidden}
@media(max-width:1024px){.why__badge{right:0 !important}}
/* RESPONSIVE GLOBAL: formularios/grids de 2 columnas colapsan en móvil */
@media(max-width:560px){
  [style*="grid-template-columns: 1fr 1fr"]{grid-template-columns:1fr !important}
  [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr !important}
}
/* app: tarjetas flotantes más contenidas en móvil */
@media(max-width:560px){
  .app-stage{min-height:480px}
  .fcard{transform:scale(.82)}
  .fcard--notif{left:-2%;top:4%;max-width:210px}
  .fcard--track{left:-2%;bottom:4%}
  .fcard--stat{display:none}
}
