/* AplicatuVisa · capa de movimiento · v1
   Vanilla CSS, sin dependencias. Colores del manual de identidad:
   azul #0F3057 · rojo #C52828 · gris #1D1D1D. Respeta prefers-reduced-motion. */
:root{--atv-navy:#0F3057;--atv-red:#C52828;--atv-ink:#1D1D1D;--atv-ease:cubic-bezier(.2,.7,.2,1)}

/* ---------- Barra de progreso de lectura ---------- */
.atv-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:2147483000;background:var(--atv-red);transform:scaleX(0);transform-origin:0 50%;pointer-events:none;will-change:transform}

/* ---------- Encabezado ---------- */
.atv-header{transition:box-shadow .35s var(--atv-ease),background-color .35s var(--atv-ease)}
.atv-header.atv-sticky{position:sticky;top:0;z-index:999}
.atv-header.atv-scrolled{box-shadow:0 8px 28px rgba(15,48,87,.14)}
.atv-header.atv-glass.atv-scrolled{background-color:rgba(255,255,255,.92);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px)}

/* ---------- Revelado al desplazar ---------- */
.atv-js .atv-reveal{opacity:0;transform:translate3d(0,30px,0);transition:opacity .85s var(--atv-ease),transform .85s var(--atv-ease);transition-delay:var(--atv-d,0ms);will-change:opacity,transform}
.atv-js .atv-reveal.atv-left{transform:translate3d(-36px,0,0)}
.atv-js .atv-reveal.atv-right{transform:translate3d(36px,0,0)}
.atv-js .atv-reveal.atv-zoom{transform:scale(.94)}
.atv-js .atv-reveal.atv-in{opacity:1;transform:none;will-change:auto}

/* ---------- Tarjetas ---------- */
.atv-card{transition:translate .4s var(--atv-ease),box-shadow .4s var(--atv-ease)}
@media (hover:hover){.atv-card:hover{translate:0 -7px;box-shadow:0 18px 40px rgba(15,48,87,.16)}}
.atv-card img{transition:transform .8s var(--atv-ease)}
@media (hover:hover){.atv-card:hover img{transform:scale(1.05)}}

/* ---------- Títulos H2 con acento ---------- */
.atv-h2{position:relative;padding-bottom:.6em}
.atv-h2::after{content:"";position:absolute;left:0;bottom:0;width:0;height:3px;border-radius:2px;background:var(--atv-red);transition:width .9s .3s var(--atv-ease)}
.atv-h2.atv-in::after{width:56px}
.atv-h2.atv-h2-c::after{left:50%;margin-left:-28px}
.atv-h2.atv-h2-c.atv-in::after{width:56px}

/* ---------- Hero ---------- */
.atv-hero{position:relative;overflow:hidden;isolation:isolate}
.atv-hero .atv-lift{position:relative;z-index:1}
.atv-art{position:absolute;z-index:0;top:50%;right:-3%;width:min(54vw,640px);aspect-ratio:1/1;transform:translateY(-50%);pointer-events:none;
  --atv-line:#0F3057;--atv-glow:#0F3057;--atv-ink:#0F3057;--atv-lo:.30;--atv-red-art:#C52828;--atv-halo:rgba(255,255,255,.88)}
.atv-dark .atv-art{--atv-line:#FFFFFF;--atv-glow:#7FA6DA;--atv-ink:#FFFFFF;--atv-lo:.38;--atv-red-art:#EE5B5B;--atv-halo:rgba(10,34,64,.88)}
.atv-art-svg{display:block;width:100%;height:100%;overflow:visible;
  transform:translate3d(calc(var(--mx,0)*-16px),calc(var(--my,0)*-16px + var(--sy,0)*1px),0);transition:transform .25s ease-out}
.atv-js .atv-art{opacity:0;transition:opacity 1.2s .15s var(--atv-ease)}
.atv-js .atv-art.atv-in{opacity:1}

.atv-globe{fill:url(#atvG);stroke:var(--atv-line);stroke-opacity:.5;stroke-width:1.4}
.atv-lines ellipse,.atv-lines line{fill:none;stroke:var(--atv-line);stroke-opacity:var(--atv-lo);stroke-width:1}
.atv-orbit{fill:none;stroke:var(--atv-line);stroke-opacity:.35;stroke-width:1;stroke-dasharray:2 9}
.atv-orbit-dot{fill:var(--atv-red-art)}
.atv-spin-slow{transform-origin:300px 300px;animation:atv-spin 140s linear infinite}

.atv-arc{stroke:var(--atv-red-art);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:atv-draw 1.8s calc(.5s + var(--i)*.2s) var(--atv-ease) forwards}
.atv-dots circle{fill:#fff;stroke:var(--atv-red-art);stroke-width:1.8}
.atv-nodes circle{fill:var(--atv-red-art);stroke:#fff;stroke-width:2}
.atv-origin-dot{fill:var(--atv-red-art);stroke:#fff;stroke-width:2.5}
.atv-pulse{fill:none;stroke:var(--atv-red-art);stroke-width:1.6;transform-box:fill-box;transform-origin:center;animation:atv-ping 3.6s calc(var(--i)*1.2s) ease-out infinite}
.atv-labels text{font:600 12.5px/1 "Montserrat","Open Sans",system-ui,sans-serif;fill:var(--atv-ink);letter-spacing:.02em;paint-order:stroke;stroke:var(--atv-halo);stroke-width:4px;stroke-linejoin:round}
.atv-labels .atv-origin-label{font-weight:800;fill:var(--atv-red-art);font-size:14px}

.atv-stamp-ring{fill:none;stroke:var(--atv-red-art);stroke-width:1.6;stroke-dasharray:3 4}
.atv-stamp-ring2{fill:none;stroke:var(--atv-red-art);stroke-width:1.2;stroke-opacity:.8}
.atv-stamp-text{font:700 10.5px "Montserrat",system-ui,sans-serif;letter-spacing:.16em;fill:var(--atv-red-art)}
.atv-stamp-num{font:800 26px "Montserrat",system-ui,sans-serif;fill:var(--atv-ink)}
.atv-stamp-sub{font:700 9.5px "Montserrat",system-ui,sans-serif;letter-spacing:.3em;fill:var(--atv-red-art)}
.atv-spin-stamp{transform-box:fill-box;transform-origin:center;animation:atv-spin 60s linear infinite}

.atv-paused .atv-spin-slow,.atv-paused .atv-spin-stamp,.atv-paused .atv-pulse{animation-play-state:paused}

@keyframes atv-spin{to{transform:rotate(360deg)}}
@keyframes atv-draw{to{stroke-dashoffset:0}}
@keyframes atv-ping{0%{transform:scale(1);opacity:.7}100%{transform:scale(4.2);opacity:0}}

/* Páginas interiores: globo solo ambiental (sin textos que choquen con el título) */
.page-hero .atv-labels,.page-hero .atv-stamp{display:none}
.page-hero .atv-art-svg{opacity:.6}

/* Globo dentro de su columna (home): totalmente visible, sin tapar ni ser tapado */
@media (min-width:821px){
  .hero-visual{position:relative;align-self:stretch;display:flex;align-items:center;justify-content:center;margin:-24px -18px -24px 0}
  .atv-art.atv-slot{position:relative;top:auto;right:auto;transform:none;width:100%;max-width:580px}
}

@media (max-width:820px){
  .hero-visual{display:contents}
  .atv-art{width:118vw;right:-42%;top:auto;bottom:-12%;transform:none}
  .atv-art-svg{opacity:.4}
  .atv-labels,.atv-stamp{display:none}   /* en móvil el globo es solo ambiente: sin textos que choquen con el contenido */
}

/* ---------- WhatsApp flotante ---------- */
.atv-wa{animation:atv-pop .6s 1.2s var(--atv-ease) both,atv-wa-pulse 2.8s 2.4s ease-out infinite}
@media (hover:hover){.atv-wa:hover{scale:1.08}}
@keyframes atv-pop{from{opacity:0;scale:.5}to{opacity:1;scale:1}}
@keyframes atv-wa-pulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,.55)}70%{box-shadow:0 0 0 20px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}

/* ---------- Accesibilidad: sin movimiento ---------- */
@media (prefers-reduced-motion:reduce){
  .atv-js .atv-reveal{opacity:1!important;transform:none!important;transition:none!important}
  .atv-js .atv-art{opacity:1!important;transition:none!important}
  .atv-arc{animation:none!important;stroke-dashoffset:0!important}
  .atv-spin-slow,.atv-spin-stamp,.atv-pulse,.atv-wa{animation:none!important}
  .atv-art-svg{transform:none!important;transition:none!important}
  .atv-dots,.atv-orbit-dot{display:none}
  .atv-card,.atv-card img{transition:none!important}
  .atv-progress{display:none}
}
