/* ==========================================================================
   G-Medical Marketing 2026 — hoja principal
   Paleta validada WCAG AA (16/16 combinaciones ≥ 4.5:1)
   ========================================================================== */

:root{
  /* --- Color funcional (apto para texto) --- */
  --gm-azul:        #0068D1;   /* 5.38:1 sobre blanco */
  --gm-azul-fuerte: #005AB8;   /* 6.66:1 */
  --gm-azul-tinta:  #00468F;   /* 9.24:1 */
  --gm-tinta:       #071528;   /* 18.31:1 */
  --gm-gris:        #566173;   /* 6.26:1 — texto secundario */
  --gm-gris-suave:  #7B8798;   /* solo ≥19px o decorativo */

  /* --- Color decorativo (fondos, iconos, texto grande sobre oscuro) --- */
  --gm-cian:        #22A7E0;
  --gm-cian-claro:  #5CCBF5;
  --gm-noche:       #04101F;
  --gm-noche-2:     #08203A;

  /* --- Superficies --- */
  --gm-blanco:      #FFFFFF;
  --gm-niebla:      #F4F8FC;
  --gm-niebla-2:    #EAF2FA;
  --gm-linea:       #DCE7F3;
  --gm-linea-osc:   rgba(255,255,255,.14);

  /* --- Degradados --- */
  --gm-grad:        linear-gradient(115deg, #005AB8 0%, #0068D1 45%, #22A7E0 100%);
  --gm-grad-hover:  linear-gradient(115deg, #00468F 0%, #005AB8 45%, #1B93C9 100%);
  --gm-grad-cian:   linear-gradient(115deg, #22A7E0 0%, #5CCBF5 100%);
  --gm-grad-noche:  linear-gradient(160deg, #04101F 0%, #08203A 55%, #062B4D 100%);

  /* --- Sombras --- */
  --gm-sombra-s:  0 2px 8px rgba(7,21,40,.06);
  --gm-sombra:    0 12px 32px -12px rgba(7,21,40,.16), 0 2px 6px rgba(7,21,40,.05);
  --gm-sombra-l:  0 32px 72px -24px rgba(7,21,40,.28), 0 4px 12px rgba(7,21,40,.06);
  --gm-sombra-az: 0 20px 48px -18px rgba(0,104,209,.45);

  /* --- Métrica --- */
  --gm-radio:     18px;
  --gm-radio-s:   12px;
  --gm-radio-xl:  28px;
  --gm-container: 1240px;
  --gm-ancho:     1400px;
  --gm-nav-h:     84px;

  /* --- Tipografía --- */
  --gm-display: 'Sora', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --gm-texto:   'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;

  /* --- Curvas --- */
  --gm-ease:     cubic-bezier(.22,.61,.36,1);
  --gm-ease-out: cubic-bezier(.16,.84,.28,1);
  --gm-spring:   cubic-bezier(.34,1.36,.44,1);
}

/* ==========================================================================
   1. Base
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--gm-blanco); color:var(--gm-tinta);
  font-family:var(--gm-texto); font-size:17px; line-height:1.72;
  font-weight:400; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
body.gm-nav-abierto{ overflow:hidden; }
img,svg,video{ max-width:100%; height:auto; display:block; }
a{ color:var(--gm-azul-fuerte); text-decoration:none; transition:color .25s var(--gm-ease); }
a:hover{ color:var(--gm-azul-tinta); }
button{ font:inherit; }
:focus-visible{ outline:3px solid var(--gm-azul); outline-offset:3px; border-radius:4px; }

h1,h2,h3,h4,h5{
  font-family:var(--gm-display); color:var(--gm-tinta);
  line-height:1.12; letter-spacing:-.022em; font-weight:700; margin:0 0 .5em;
  text-wrap:balance;
}
h1{ font-size:clamp(2.4rem, 5.4vw, 4.05rem); letter-spacing:-.032em; }
h2{ font-size:clamp(1.95rem, 3.7vw, 2.95rem); letter-spacing:-.028em; }
h3{ font-size:clamp(1.28rem, 2vw, 1.6rem); }
h4{ font-size:1.12rem; }
p{ margin:0 0 1.15em; }
p:last-child{ margin-bottom:0; }
strong,b{ font-weight:650; color:var(--gm-tinta); }

/* ==========================================================================
   2. Rejilla
   ========================================================================== */
.gm-container{ width:min(100% - 2.6rem, var(--gm-container)); margin-inline:auto; }
.gm-container--ancho{ width:min(100% - 2.6rem, var(--gm-ancho)); margin-inline:auto; }
.gm-seccion{ padding:clamp(4.2rem, 8.5vw, 7.5rem) 0; position:relative; }
.gm-seccion--compacta{ padding:clamp(3rem, 5.5vw, 4.5rem) 0; }
.gm-seccion--niebla{ background:var(--gm-niebla); }
.gm-seccion--niebla2{ background:linear-gradient(180deg,var(--gm-niebla) 0%,var(--gm-blanco) 100%); }

/* Bandas oscuras: overflow:clip (NO hidden) para no romper position:sticky */
.gm-oscura{
  background:var(--gm-grad-noche); color:#D6E4F2;
  position:relative; overflow:clip;
}
@supports not (overflow:clip){ .gm-oscura{ overflow:hidden; } }
.gm-oscura h1,.gm-oscura h2,.gm-oscura h3,.gm-oscura h4{ color:#fff; }
.gm-oscura strong{ color:#fff; }
.gm-oscura a{ color:var(--gm-cian-claro); }
.gm-oscura::before{
  content:''; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(60% 80% at 12% 0%, rgba(34,167,224,.22), transparent 62%),
    radial-gradient(50% 70% at 92% 100%, rgba(0,104,209,.28), transparent 60%);
}
.gm-oscura > *{ position:relative; z-index:1; }

/* ==========================================================================
   3. Encabezados de sección
   ========================================================================== */
.gm-head{ max-width:820px; margin:0 auto clamp(2.4rem,4vw,3.6rem); text-align:center; }
.gm-head--izq{ margin-inline:0; text-align:left; }
.gm-head p{ color:var(--gm-gris); font-size:1.09rem; }
.gm-oscura .gm-head p{ color:#B9CFE4; }

.gm-etiqueta{
  display:inline-flex; align-items:center; gap:.5rem;
  font-family:var(--gm-display); font-size:.775rem; font-weight:650;
  letter-spacing:.16em; text-transform:uppercase; color:var(--gm-azul-tinta);
  background:var(--gm-niebla-2); border:1px solid var(--gm-linea);
  padding:.42rem .95rem; border-radius:99px; margin-bottom:1.15rem;
}
.gm-etiqueta::before{
  content:''; width:6px; height:6px; border-radius:50%;
  background:var(--gm-azul); box-shadow:0 0 0 3px rgba(0,104,209,.18);
}
.gm-oscura .gm-etiqueta{
  color:var(--gm-cian-claro); background:rgba(34,167,224,.12);
  border-color:rgba(92,203,245,.32);
}
.gm-oscura .gm-etiqueta::before{ background:var(--gm-cian-claro); box-shadow:0 0 0 3px rgba(92,203,245,.2); }

/* Texto con degradado — se aplica a un <span> propio, nunca a un bloque
   que pueda partir en varias líneas con palabras sueltas */
.gm-grad-txt{
  background:var(--gm-grad); -webkit-background-clip:text; background-clip:text;
  color:transparent; -webkit-text-fill-color:transparent;
  display:inline-block; padding-bottom:.06em;
}
.gm-oscura .gm-grad-txt{ background:var(--gm-grad-cian); -webkit-background-clip:text; background-clip:text; }

/* ==========================================================================
   4. Botones
   ========================================================================== */
.gm-btn{
  --gm-btn-bg: var(--gm-grad);
  display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  font-family:var(--gm-display); font-size:.985rem; font-weight:650; letter-spacing:-.01em;
  color:#fff; background:var(--gm-btn-bg);
  padding:1.02rem 1.9rem; border-radius:99px; border:2px solid transparent;
  cursor:pointer; position:relative; overflow:hidden; isolation:isolate;
  box-shadow:var(--gm-sombra-az);
  transition:transform .32s var(--gm-spring), box-shadow .32s var(--gm-ease), background .3s var(--gm-ease);
  text-align:center;
}
.gm-btn::after{
  content:''; position:absolute; inset:0; z-index:-1; opacity:0;
  background:var(--gm-grad-hover); transition:opacity .3s var(--gm-ease);
}
.gm-btn:hover{ color:#fff; transform:translateY(-3px); box-shadow:0 26px 56px -18px rgba(0,104,209,.6); }
.gm-btn:hover::after{ opacity:1; }
.gm-btn:active{ transform:translateY(-1px); }
.gm-btn svg{ width:18px; height:18px; flex:none; }

/* Secundario: anillo de degradado con doble fondo (visible sobre blanco) */
.gm-btn--fantasma{
  color:var(--gm-azul-tinta); box-shadow:none;
  background:linear-gradient(#fff,#fff) padding-box, var(--gm-grad) border-box;
}
.gm-btn--fantasma::after{ display:none; }
.gm-btn--fantasma:hover{
  color:#fff; box-shadow:var(--gm-sombra-az);
  background:var(--gm-grad) padding-box, var(--gm-grad) border-box;
}
/* Sobre fondo oscuro NO sirve el anillo de doble fondo: la capa padding-box
   tiene que ser opaca y aquí se necesita translúcida, así que el degradado se
   filtraba al relleno y dejaba texto blanco sobre cian (1.86:1). Borde sólido. */
.gm-oscura .gm-btn--fantasma,
.gm-cta .gm-btn--fantasma,
.gm-hero .gm-btn--fantasma{
  color:#fff;
  background:rgba(255,255,255,.10);
  border-color:rgba(255,255,255,.38);
  backdrop-filter:blur(8px);
}
.gm-oscura .gm-btn--fantasma:hover,
.gm-cta .gm-btn--fantasma:hover,
.gm-hero .gm-btn--fantasma:hover{
  color:var(--gm-tinta);
  background:var(--gm-grad-cian);
  border-color:transparent;
}
.gm-btn--wa{ --gm-btn-bg:linear-gradient(115deg,#128C4B 0%,#1EA85C 100%); box-shadow:0 20px 48px -18px rgba(18,140,75,.5); }
.gm-btn--wa::after{ background:linear-gradient(115deg,#0E7440 0%,#178F4D 100%); }
.gm-btn--wa:hover{ box-shadow:0 26px 56px -18px rgba(18,140,75,.6); }
.gm-btn--bloque{ width:100%; }
.gm-btn--sm{ padding:.72rem 1.35rem; font-size:.9rem; }

/* Enlace con flecha */
.gm-link{
  display:inline-flex; align-items:center; gap:.45rem;
  font-family:var(--gm-display); font-weight:650; font-size:.95rem;
  color:var(--gm-azul-fuerte);
}
.gm-link svg{ width:16px; height:16px; transition:transform .3s var(--gm-ease); }
.gm-link:hover svg{ transform:translateX(5px); }

/* ==========================================================================
   5. Cabecera + navegación
   ========================================================================== */
.gm-nav{
  position:fixed; inset:0 0 auto 0; z-index:900; height:var(--gm-nav-h);
  display:flex; align-items:center;
  transition:background .45s var(--gm-ease), box-shadow .45s var(--gm-ease),
             height .45s var(--gm-ease), backdrop-filter .45s var(--gm-ease);
}
.gm-nav__in{
  width:min(100% - 2.6rem, var(--gm-ancho)); margin-inline:auto;
  display:flex; align-items:center; gap:1.6rem;
}
.gm-nav__marca{ display:flex; align-items:center; gap:.7rem; flex:none; margin-right:auto; }
.gm-nav__marca img{ height:46px; width:auto; transition:height .45s var(--gm-ease); }
.gm-nav__marca .gm-logo-claro{ display:none; }

/* Estado sobre hero oscuro */
.gm-nav--sobre-oscuro{ background:transparent; }
.gm-nav--sobre-oscuro .gm-menu > li > a{ color:#EAF3FB; }
.gm-nav--sobre-oscuro .gm-nav__tel{ color:#EAF3FB; }
.gm-nav--sobre-oscuro .gm-burger span{ background:#fff; }
.gm-nav--sobre-oscuro .gm-nav__marca .gm-logo-claro{ display:block; }
.gm-nav--sobre-oscuro .gm-nav__marca .gm-logo-color{ display:none; }

/* Estado pegado */
.gm-nav.is-fija{
  background:rgba(255,255,255,.92); backdrop-filter:blur(18px) saturate(1.5);
  box-shadow:0 1px 0 var(--gm-linea), 0 10px 34px -22px rgba(7,21,40,.4);
  height:72px;
}
.gm-nav.is-fija .gm-nav__marca img{ height:40px; }
.gm-nav.is-fija .gm-menu > li > a{ color:var(--gm-tinta); }
.gm-nav.is-fija .gm-nav__tel{ color:var(--gm-azul-tinta); }
.gm-nav.is-fija .gm-burger span{ background:var(--gm-tinta); }
.gm-nav.is-fija .gm-nav__marca .gm-logo-claro{ display:none; }
.gm-nav.is-fija .gm-nav__marca .gm-logo-color{ display:block; }
.gm-nav.is-oculta{ transform:translateY(-104%); }

.gm-menu{ display:flex; align-items:center; gap:.15rem; list-style:none; margin:0; padding:0; }
.gm-menu > li{ position:relative; }
.gm-menu > li > a{
  display:flex; align-items:center; gap:.35rem;
  font-family:var(--gm-display); font-size:.935rem; font-weight:550;
  color:var(--gm-tinta); padding:.62rem .88rem; border-radius:99px;
  position:relative; transition:color .25s var(--gm-ease), background .25s var(--gm-ease);
}
.gm-menu > li > a::after{
  content:''; position:absolute; left:.88rem; right:.88rem; bottom:.34rem; height:2px;
  background:var(--gm-grad); border-radius:2px;
  transform:scaleX(0); transform-origin:left; transition:transform .38s var(--gm-ease-out);
}
.gm-menu > li:hover > a::after,
.gm-menu > li.current-menu-item > a::after{ transform:scaleX(1); }
.gm-menu > li.menu-item-has-children > a .gm-caret{
  width:11px; height:11px; transition:transform .3s var(--gm-ease); opacity:.7;
}
.gm-menu > li.menu-item-has-children:hover > a .gm-caret{ transform:rotate(180deg); }

/* Mega menú de servicios (3 columnas × 3 filas = 9 servicios exactos) */
.gm-mega{
  position:absolute; top:calc(100% + .5rem); left:50%; translate:-50% 0;
  width:min(92vw, 860px); padding:1.4rem; border-radius:var(--gm-radio-xl);
  background:#fff; border:1px solid var(--gm-linea); box-shadow:var(--gm-sombra-l);
  display:grid; grid-template-columns:repeat(3,1fr); gap:.35rem;
  opacity:0; visibility:hidden; transform:translateY(10px);
  transition:opacity .3s var(--gm-ease), transform .3s var(--gm-ease-out), visibility .3s;
}
/* El ancla es .gm-menu (position:static en el <li>) para que no se salga por la derecha */
.gm-menu > li.menu-item-has-children{ position:static; }
.gm-menu > li.menu-item-has-children:hover .gm-mega,
.gm-menu > li.menu-item-has-children:focus-within .gm-mega{
  opacity:1; visibility:visible; transform:translateY(0);
}
.gm-mega__item{
  display:flex; gap:.8rem; padding:.85rem; border-radius:var(--gm-radio-s);
  transition:background .25s var(--gm-ease); color:var(--gm-tinta);
}
.gm-mega__item:hover{ background:var(--gm-niebla); color:var(--gm-tinta); }
.gm-mega__ico{
  flex:none; width:40px; height:40px; border-radius:11px;
  display:grid; place-items:center; background:var(--gm-niebla-2); color:var(--gm-azul-fuerte);
  transition:background .28s var(--gm-ease), color .28s var(--gm-ease);
}
.gm-mega__item:hover .gm-mega__ico{ background:var(--gm-grad); color:#fff; }
.gm-mega__ico svg{ width:20px; height:20px; }
.gm-mega__tit{ font-family:var(--gm-display); font-weight:650; font-size:.94rem; display:block; margin-bottom:.1rem; }
.gm-mega__item > span:last-child{ display:block; min-width:0; }
.gm-mega__desc{ display:block; font-size:.815rem; line-height:1.45; color:var(--gm-gris); }

.gm-nav__tel{
  display:flex; align-items:center; gap:.45rem;
  font-family:var(--gm-display); font-weight:650; font-size:.93rem;
  color:var(--gm-azul-tinta); white-space:nowrap;
}
.gm-nav__tel svg{ width:16px; height:16px; }
.gm-nav__acciones{ display:flex; align-items:center; gap:.9rem; flex:none; }

/* Hamburguesa — flex, NO grid (grid reparte el alto y rompe el cálculo de la X) */
.gm-burger{
  display:none; flex-direction:column; justify-content:center; align-items:center;
  width:44px; height:44px; padding:0; background:none; border:0; cursor:pointer;
}
.gm-burger span{
  display:block; width:24px; height:2px; border-radius:2px; background:var(--gm-tinta);
  transition:transform .38s var(--gm-spring), opacity .2s var(--gm-ease), background .3s;
}
.gm-burger span + span{ margin-top:5px; }
.gm-burger.is-open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.gm-burger.is-open span:nth-child(2){ opacity:0; transform:scaleX(.3); }
.gm-burger.is-open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* Cajón móvil */
.gm-cajon{
  position:fixed; inset:0; z-index:890; background:#fff;
  padding:calc(var(--gm-nav-h) + 1.4rem) 1.6rem 2.4rem;
  overflow-y:auto; opacity:0; visibility:hidden; transform:translateY(-14px);
  transition:opacity .38s var(--gm-ease), transform .42s var(--gm-ease-out), visibility .38s;
}
.gm-cajon.is-open{ opacity:1; visibility:visible; transform:translateY(0); }
.gm-cajon ul{ list-style:none; margin:0; padding:0; }
.gm-cajon > ul > li{ border-bottom:1px solid var(--gm-linea); }
.gm-cajon > ul > li > a{
  display:block; padding:1.05rem .2rem; font-family:var(--gm-display);
  font-size:1.22rem; font-weight:650; color:var(--gm-tinta);
}
.gm-cajon .sub-menu{ padding:0 0 1rem .2rem; }
.gm-cajon .sub-menu a{
  display:flex; align-items:center; gap:.65rem; padding:.5rem 0;
  font-size:.97rem; color:var(--gm-gris);
}
.gm-cajon .sub-menu a svg{ width:17px; height:17px; color:var(--gm-azul); flex:none; }
.gm-cajon__pie{ margin-top:1.8rem; display:grid; gap:.8rem; }

/* ==========================================================================
   6. HERO PANORÁMICO 3D
   ========================================================================== */
.gm-hero{
  position:relative; min-height:min(100svh, 940px);
  display:flex; align-items:center;
  padding:calc(var(--gm-nav-h) + 3.2rem) 0 clamp(3.5rem,7vw,6rem);
  background:var(--gm-noche); color:#fff; overflow:clip;
  isolation:isolate;
}
@supports not (overflow:clip){ .gm-hero{ overflow:hidden; } }

/* Escenario 3D: la perspectiva vive aquí y SOLO afecta a la media.
   El texto queda fuera del contexto 3D (translateZ recorta las cajas de texto). */
.gm-hero__escena{
  position:absolute; inset:0; z-index:0;
  perspective:1400px; perspective-origin:50% 50%;
}
.gm-hero__deck{
  position:absolute; inset:-4%;
  transform-style:preserve-3d;
  transform:
    rotateY(calc(var(--gm-px, 0) * 4.2deg))
    rotateX(calc(var(--gm-py, 0) * -2.6deg));
  transition:transform .9s var(--gm-ease-out);
  will-change:transform;
}
.gm-hero__slide{
  position:absolute; inset:0;
  opacity:0; visibility:hidden;
  transform:rotateY(16deg) scale(1.08);
  transform-origin:70% 50%;
  transition:opacity 1s var(--gm-ease), transform 1.35s var(--gm-ease-out), visibility 1s;
}
.gm-hero__slide.is-activa{
  opacity:1; visibility:visible; transform:rotateY(0deg) scale(1); z-index:2;
}
.gm-hero__slide.is-saliendo{
  opacity:0; visibility:visible; transform:rotateY(-16deg) scale(1.08); z-index:1;
}
/* La foto es más ancha que el marco y va derivando: eso da el barrido panorámico */
.gm-hero__foto{
  position:absolute; top:-4%; left:-9%; width:118%; height:108%;
  object-fit:cover; object-position:center;
  transform:translate3d(calc(var(--gm-px, 0) * -18px), calc(var(--gm-py, 0) * -12px), 0) scale(1.02);
  transition:transform 1.1s var(--gm-ease-out);
}
.gm-hero__slide.is-activa .gm-hero__foto{ animation:gmPanoramica 19s linear both; }
@keyframes gmPanoramica{
  from{ translate:0 0; scale:1.02; }
  to  { translate:-4.4% 0; scale:1.11; }
}
/* Velo: legibilidad del texto sobre cualquier foto */
.gm-hero__velo{
  position:absolute; inset:0; z-index:3; pointer-events:none;
  background:
    linear-gradient(100deg, rgba(4,16,31,.95) 0%, rgba(4,16,31,.82) 34%, rgba(4,16,31,.42) 60%, rgba(4,16,31,.22) 100%),
    linear-gradient(0deg, rgba(4,16,31,.72) 0%, transparent 42%),
    radial-gradient(70% 90% at 78% 22%, rgba(34,167,224,.26), transparent 66%);
}
/* Retícula técnica sutil */
.gm-hero__malla{
  position:absolute; inset:0; z-index:4; pointer-events:none; opacity:.36;
  background-image:
    linear-gradient(rgba(255,255,255,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.055) 1px, transparent 1px);
  background-size:78px 78px;
  mask-image:radial-gradient(88% 78% at 50% 45%, #000 25%, transparent 78%);
  -webkit-mask-image:radial-gradient(88% 78% at 50% 45%, #000 25%, transparent 78%);
}

/* Contenido del hero — capa 2D limpia, sin translateZ */
.gm-hero__cuerpo{ position:relative; z-index:6; width:100%; }
.gm-hero__panel{ max-width:790px; }
.gm-hero .gm-etiqueta{
  color:var(--gm-cian-claro); background:rgba(34,167,224,.14);
  border-color:rgba(92,203,245,.34); backdrop-filter:blur(8px);
}
.gm-hero .gm-etiqueta::before{ background:var(--gm-cian-claro); box-shadow:0 0 0 3px rgba(92,203,245,.22); }
.gm-hero h1{
  color:#fff; font-size:clamp(2.5rem, 5.6vw, 4.4rem);
  line-height:1.04; letter-spacing:-.036em; margin-bottom:1.15rem;
  text-shadow:0 2px 30px rgba(4,16,31,.55);
}
.gm-hero__bajada{
  font-size:clamp(1.06rem, 1.5vw, 1.24rem); color:#CFE1F2; max-width:600px;
  margin-bottom:2rem; text-shadow:0 1px 16px rgba(4,16,31,.6);
}
.gm-hero__acciones{ display:flex; flex-wrap:wrap; gap:.9rem; align-items:center; }

/* Revelado por palabra del titular */
.gm-palabra{ display:inline-block; overflow:hidden; vertical-align:top; }
.gm-palabra > span{
  display:inline-block;
  transform:translateY(105%) rotate(3deg); opacity:0;
  transition:transform .95s var(--gm-ease-out), opacity .7s var(--gm-ease);
  transition-delay:var(--gm-d, 0s);
}
.gm-hero__slide-txt.is-activa .gm-palabra > span{ transform:translateY(0) rotate(0); opacity:1; }
html:not(.gm-js) .gm-palabra > span{ transform:none; opacity:1; }

/* Texto por slide */
.gm-hero__slide-txt{
  display:none;
}
.gm-hero__slide-txt.is-activa{ display:block; }
.gm-hero__slide-txt > *{
  opacity:0; transform:translateY(22px);
  animation:gmSubeHero .85s var(--gm-ease-out) forwards;
}
.gm-hero__slide-txt.is-activa .gm-etiqueta{ animation-delay:.05s; }
.gm-hero__slide-txt.is-activa .gm-hero__bajada{ animation-delay:.42s; }
.gm-hero__slide-txt.is-activa .gm-hero__acciones{ animation-delay:.56s; }
.gm-hero__slide-txt.is-activa h1{ opacity:1; transform:none; animation:none; }
@keyframes gmSubeHero{ to{ opacity:1; transform:translateY(0); } }
html:not(.gm-js) .gm-hero__slide-txt > *{ opacity:1; transform:none; animation:none; }

/* Tarjetas flotantes de profundidad (decorativas: aquí SÍ se puede usar Z) */
.gm-hero__flotantes{
  position:absolute; right:3%; top:50%; translate:0 -50%; z-index:5;
  display:grid; gap:.9rem; width:270px;
}
.gm-hero__chip{
  display:flex; align-items:center; gap:.85rem;
  padding:.95rem 1.1rem; border-radius:16px;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2);
  backdrop-filter:blur(16px) saturate(1.4);
  box-shadow:0 20px 50px -22px rgba(0,0,0,.7);
  transform:translate3d(calc(var(--gm-px, 0) * 16px), calc(var(--gm-py, 0) * 12px), 0);
  transition:transform .8s var(--gm-ease-out);
  opacity:0; animation:gmChipEntra .9s var(--gm-ease-out) forwards;
}
.gm-hero__chip:nth-child(1){ animation-delay:.75s; }
.gm-hero__chip:nth-child(2){ animation-delay:.9s;  margin-left:1.6rem; }
.gm-hero__chip:nth-child(3){ animation-delay:1.05s; }
@keyframes gmChipEntra{ from{ opacity:0; translate:26px 0; } to{ opacity:1; translate:0 0; } }
html:not(.gm-js) .gm-hero__chip{ opacity:1; animation:none; }
.gm-hero__chip-ico{
  flex:none; width:38px; height:38px; border-radius:11px; display:grid; place-items:center;
  background:var(--gm-grad-cian); color:var(--gm-tinta);
}
.gm-hero__chip-ico svg{ width:19px; height:19px; }
.gm-hero__chip > span:last-child{ display:block; min-width:0; }
.gm-hero__chip-num{
  display:block;
  font-family:var(--gm-display); font-size:1.3rem; font-weight:700; color:#fff; line-height:1;
}
.gm-hero__chip-txt{ display:block; font-size:.78rem; color:#B9CFE4; line-height:1.35; margin-top:.2rem; }

/* Controles */
.gm-hero__ctrl{
  position:absolute; left:0; right:0; bottom:clamp(1.6rem,3.4vw,2.6rem); z-index:7;
}
.gm-hero__ctrl-in{
  width:min(100% - 2.6rem, var(--gm-ancho)); margin-inline:auto;
  display:flex; align-items:center; gap:1.4rem; flex-wrap:wrap;
}
.gm-hero__pastillas{ display:flex; gap:.7rem; flex:1 1 auto; max-width:640px; }
.gm-hero__pastilla{
  flex:1 1 0; min-width:0; background:none; border:0; padding:0; cursor:pointer;
  text-align:left; color:#9FBAD4; font-family:var(--gm-display);
  font-size:.775rem; font-weight:600; letter-spacing:.02em;
  transition:color .3s var(--gm-ease);
}
.gm-hero__pastilla:hover,.gm-hero__pastilla.is-activa{ color:#fff; }
.gm-hero__barra{
  display:block; height:3px; border-radius:3px; margin-bottom:.6rem;
  background:rgba(255,255,255,.22); overflow:hidden; position:relative;
}
.gm-hero__barra::after{
  content:''; position:absolute; inset:0; transform-origin:left; transform:scaleX(0);
  background:var(--gm-grad-cian); border-radius:3px;
}
.gm-hero__pastilla.is-activa .gm-hero__barra::after{
  animation:gmAvance var(--gm-dur, 7s) linear forwards;
}
.gm-hero.is-pausado .gm-hero__pastilla.is-activa .gm-hero__barra::after{ animation-play-state:paused; }
@keyframes gmAvance{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
.gm-hero__pastilla-txt{ display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.gm-hero__flechas{ display:flex; gap:.55rem; margin-left:auto; }
.gm-hero__flecha{
  width:48px; height:48px; border-radius:50%; cursor:pointer;
  background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.24);
  color:#fff; display:grid; place-items:center; backdrop-filter:blur(10px);
  transition:background .28s var(--gm-ease), transform .28s var(--gm-spring), border-color .28s;
}
.gm-hero__flecha:hover{ background:var(--gm-grad-cian); color:var(--gm-tinta); border-color:transparent; transform:scale(1.08); }
.gm-hero__flecha svg{ width:19px; height:19px; }

.gm-hero__scroll{
  position:absolute; left:50%; translate:-50% 0; bottom:.5rem; z-index:7;
  color:#8FAECB; font-size:.7rem; letter-spacing:.22em; text-transform:uppercase;
  font-family:var(--gm-display); display:flex; flex-direction:column; align-items:center; gap:.5rem;
}
.gm-hero__scroll::after{
  content:''; width:1px; height:34px;
  background:linear-gradient(180deg, var(--gm-cian-claro), transparent);
  animation:gmScrollLinea 2.4s var(--gm-ease) infinite;
}
@keyframes gmScrollLinea{ 0%,100%{ opacity:.3; height:20px; } 50%{ opacity:1; height:38px; } }

/* ==========================================================================
   7. Revelado al hacer scroll
   ========================================================================== */
html.gm-js [data-reveal]{
  opacity:0; transform:translateY(30px);
  transition:opacity .85s var(--gm-ease), transform .95s var(--gm-ease-out);
  transition-delay:var(--gm-d, 0s);
}
html.gm-js [data-reveal="izq"]{ transform:translateX(-34px); }
html.gm-js [data-reveal="der"]{ transform:translateX(34px); }
html.gm-js [data-reveal="escala"]{ transform:scale(.94); }
html.gm-js [data-reveal].is-visible{ opacity:1; transform:none; }

/* ==========================================================================
   8. Banda de cifras
   ========================================================================== */
.gm-cifras{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:1px; background:var(--gm-linea-osc); border-radius:var(--gm-radio-xl); overflow:hidden;
}
.gm-cifra{ background:rgba(255,255,255,.03); padding:2.1rem 1.5rem; text-align:center; }
.gm-cifra__num{
  font-family:var(--gm-display); font-size:clamp(2.3rem,4vw,3.2rem); font-weight:700;
  line-height:1; letter-spacing:-.04em; margin-bottom:.45rem;
}
.gm-cifra__num span{
  background:var(--gm-grad-cian); -webkit-background-clip:text; background-clip:text;
  color:transparent; -webkit-text-fill-color:transparent;
}
.gm-cifra__txt{ font-size:.86rem; color:#A8C3DC; line-height:1.45; }

/* Versión clara */
.gm-cifras--clara{ background:var(--gm-linea); }
.gm-cifras--clara .gm-cifra{ background:#fff; }
.gm-cifras--clara .gm-cifra__num span{ background:var(--gm-grad); -webkit-background-clip:text; background-clip:text; }
.gm-cifras--clara .gm-cifra__txt{ color:var(--gm-gris); }

/* ==========================================================================
   9. Tarjetas
   ========================================================================== */
.gm-rejilla{ display:grid; gap:1.5rem; }
/* Columnas explícitas: con auto-fit el contenedor ancho metía una columna de más */
.gm-rejilla--2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.gm-rejilla--3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.gm-rejilla--4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
@media (max-width:1060px){
  .gm-rejilla--3,.gm-rejilla--4{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:680px){
  .gm-rejilla--2,.gm-rejilla--3,.gm-rejilla--4{ grid-template-columns:1fr; }
}

.gm-card{
  position:relative; display:flex; flex-direction:column;
  background:#fff; border:1px solid var(--gm-linea); border-radius:var(--gm-radio-xl);
  padding:2.05rem 1.85rem; overflow:hidden; isolation:isolate;
  box-shadow:var(--gm-sombra-s);
  transition:transform .45s var(--gm-ease-out), box-shadow .45s var(--gm-ease), border-color .45s var(--gm-ease);
}
.gm-card::before{
  content:''; position:absolute; inset:0; z-index:-1; opacity:0;
  background:radial-gradient(420px 320px at var(--gm-gx,50%) var(--gm-gy,0%), rgba(0,104,209,.09), transparent 68%);
  transition:opacity .45s var(--gm-ease);
}
.gm-card::after{
  content:''; position:absolute; inset:auto 0 0 0; height:3px; z-index:1;
  background:var(--gm-grad); transform:scaleX(0); transform-origin:left;
  transition:transform .55s var(--gm-ease-out);
}
.gm-card:hover{ transform:translateY(-7px); box-shadow:var(--gm-sombra-l); border-color:transparent; }
.gm-card:hover::before{ opacity:1; }
.gm-card:hover::after{ transform:scaleX(1); }
.gm-card h3{ margin-bottom:.6rem; }
.gm-card p{ color:var(--gm-gris); font-size:.965rem; }
.gm-card .gm-link{ margin-top:auto; padding-top:1.15rem; }

.gm-card__ico{
  width:56px; height:56px; border-radius:16px; margin-bottom:1.3rem;
  display:grid; place-items:center; color:#fff; background:var(--gm-grad);
  box-shadow:var(--gm-sombra-az);
  transition:transform .5s var(--gm-spring);
}
.gm-card:hover .gm-card__ico{ transform:translateY(-3px) rotate(-6deg) scale(1.06); }
.gm-card__ico svg{ width:26px; height:26px; }
.gm-card__num{
  position:absolute; top:1.3rem; right:1.5rem; z-index:0;
  font-family:var(--gm-display); font-size:3.4rem; font-weight:700;
  color:var(--gm-niebla-2); line-height:1; letter-spacing:-.05em;
  transition:color .45s var(--gm-ease);
}
.gm-card:hover .gm-card__num{ color:rgba(0,104,209,.12); }

/* Tarjeta con fotografía — SIN preserve-3d ni will-change (la foto deja de pintarse) */
.gm-card--foto{ padding:0; }
.gm-card--foto .gm-card__media{
  position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--gm-niebla-2);
}
.gm-card--foto .gm-card__media img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transition:transform 1s var(--gm-ease-out), filter .6s var(--gm-ease);
}
.gm-card--foto:hover .gm-card__media img{ transform:scale(1.07); }
.gm-card--foto .gm-card__cuerpo{ padding:1.7rem 1.7rem 1.9rem; display:flex; flex-direction:column; flex:1; }
.gm-card--foto .gm-card__media::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 45%, rgba(7,21,40,.5) 100%);
}

/* Píldora sobre foto */
.gm-pill{
  position:absolute; left:1rem; top:1rem; z-index:2;
  display:inline-flex; align-items:center; gap:.4rem;
  font-family:var(--gm-display); font-size:.73rem; font-weight:650;
  letter-spacing:.08em; text-transform:uppercase;
  padding:.4rem .8rem; border-radius:99px;
  background:rgba(255,255,255,.92); color:var(--gm-azul-tinta);
  backdrop-filter:blur(8px);
}

/* Tarjeta oscura */
.gm-oscura .gm-card{
  background:rgba(255,255,255,.045); border-color:var(--gm-linea-osc); box-shadow:none;
}
.gm-oscura .gm-card p{ color:#B9CFE4; }
.gm-oscura .gm-card:hover{ background:rgba(255,255,255,.07); border-color:rgba(92,203,245,.3); }
.gm-oscura .gm-card__num{ color:rgba(255,255,255,.07); }
.gm-oscura .gm-card:hover .gm-card__num{ color:rgba(92,203,245,.16); }

/* ==========================================================================
   10. Método — línea de pasos
   ========================================================================== */
.gm-pasos{ display:grid; gap:1.4rem; grid-template-columns:repeat(4,minmax(0,1fr)); position:relative; }
@media (max-width:1060px){ .gm-pasos{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:680px){ .gm-pasos{ grid-template-columns:1fr; } }
.gm-paso{
  position:relative; padding:2rem 1.6rem; border-radius:var(--gm-radio-xl);
  background:rgba(255,255,255,.045); border:1px solid var(--gm-linea-osc);
  transition:background .45s var(--gm-ease), transform .45s var(--gm-ease-out);
}
.gm-paso:hover{ background:rgba(255,255,255,.08); transform:translateY(-6px); }
.gm-paso__num{
  width:46px; height:46px; border-radius:14px; display:grid; place-items:center;
  font-family:var(--gm-display); font-weight:700; font-size:1.1rem;
  background:var(--gm-grad-cian); color:var(--gm-tinta); margin-bottom:1.15rem;
}
.gm-paso h3{ font-size:1.16rem; margin-bottom:.5rem; }
.gm-paso p{ font-size:.93rem; color:#B9CFE4; }

/* ==========================================================================
   11. Track horizontal anclado
   ========================================================================== */
.gm-track{ position:relative; }
.gm-track__pegado{ position:sticky; top:0; height:100svh; display:flex; align-items:center; overflow:clip; }
@supports not (overflow:clip){ .gm-track__pegado{ overflow:hidden; } }
.gm-track__riel{
  display:flex; gap:1.6rem; padding-inline:max(2.6rem, calc((100vw - var(--gm-ancho))/2));
  transform:translate3d(calc(var(--gm-track, 0) * -1px),0,0);
  will-change:transform;
}
.gm-track__item{ flex:none; width:min(78vw, 360px); }
.gm-track__avance{
  position:absolute; bottom:2.4rem; left:50%; translate:-50% 0; z-index:3;
  width:min(60vw,320px); height:3px; border-radius:3px; background:rgba(255,255,255,.2);
}
.gm-track__avance i{
  display:block; height:100%; border-radius:3px; background:var(--gm-grad-cian);
  transform-origin:left; transform:scaleX(var(--gm-track-p, 0));
}

/* ==========================================================================
   12. Paquetes
   ========================================================================== */
.gm-precios{ display:grid; gap:1.6rem; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:stretch; }
@media (max-width:1180px){ .gm-precios{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:680px){ .gm-precios{ grid-template-columns:1fr; } }
.gm-precio{
  display:flex; flex-direction:column; position:relative;
  background:#fff; border:1px solid var(--gm-linea); border-radius:var(--gm-radio-xl);
  padding:3.4rem 1.9rem 2rem; box-shadow:var(--gm-sombra-s);
  transition:transform .45s var(--gm-ease-out), box-shadow .45s var(--gm-ease);
}
.gm-precio:hover{ transform:translateY(-6px); box-shadow:var(--gm-sombra-l); }
.gm-precio--destacado{
  border:0; color:#fff; background:var(--gm-grad-noche);
  box-shadow:var(--gm-sombra-l); overflow:hidden;
}
.gm-precio--destacado::before{
  content:''; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(70% 60% at 80% 0%, rgba(34,167,224,.34), transparent 62%);
}
.gm-precio--destacado > *{ position:relative; z-index:1; }
.gm-precio--destacado h3{ color:#fff; }
.gm-precio--destacado .gm-precio__lista li{ color:#CFE1F2; }
.gm-precio--destacado .gm-precio__desde{ color:#9FBAD4; }
.gm-precio__sello{
  position:absolute; top:1.15rem; right:1.15rem; z-index:2;
  font-family:var(--gm-display); font-size:.7rem; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase;
  padding:.36rem .8rem; border-radius:99px;
  background:var(--gm-grad-cian); color:var(--gm-tinta);
}
.gm-precio h3{ font-size:1.24rem; margin-bottom:.35rem; }
.gm-precio__desde{ font-size:.82rem; color:var(--gm-gris); margin-bottom:.35rem; }
.gm-precio__cifra{
  font-family:var(--gm-display); font-size:2.65rem; font-weight:700;
  letter-spacing:-.04em; line-height:1; margin-bottom:.25rem;
}
.gm-precio--destacado .gm-precio__cifra{ color:#fff; }
.gm-precio__moneda{ font-size:.88rem; color:var(--gm-gris); margin-bottom:1.5rem; }
.gm-precio--destacado .gm-precio__moneda{ color:#9FBAD4; }
.gm-precio__lista{ list-style:none; margin:0 0 1.8rem; padding:0; display:grid; gap:.7rem; }
.gm-precio__lista li{
  display:flex; gap:.65rem; align-items:flex-start;
  font-size:.94rem; color:var(--gm-gris); line-height:1.5;
}
.gm-precio__lista svg{ width:17px; height:17px; flex:none; margin-top:.28rem; color:var(--gm-azul); }
.gm-precio--destacado .gm-precio__lista svg{ color:var(--gm-cian-claro); }
.gm-precio .gm-btn{ margin-top:auto; }

/* ==========================================================================
   13. Casos de éxito
   ========================================================================== */
.gm-caso{
  position:relative; display:block; border-radius:var(--gm-radio-xl);
  overflow:hidden; background:var(--gm-noche); aspect-ratio:4/3; color:#fff;
}
.gm-caso img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transition:transform 1.1s var(--gm-ease-out), filter .6s;
}
.gm-caso::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg,
    rgba(4,16,31,0) 18%,
    rgba(4,16,31,.42) 48%,
    rgba(4,16,31,.82) 76%,
    rgba(4,16,31,.96) 100%);
}
.gm-caso:hover img{ transform:scale(1.08); }
.gm-caso__txt{ position:absolute; inset:auto 0 0 0; z-index:2; padding:1.7rem; }
.gm-caso__txt h3{ color:#fff; font-size:1.22rem; margin-bottom:.3rem; text-shadow:0 1px 12px rgba(4,16,31,.8); }
.gm-caso__esp{ margin:0 0 .25rem; font-size:.8rem; color:var(--gm-cian-claro); font-family:var(--gm-display); font-weight:650; letter-spacing:.08em; text-transform:uppercase; text-shadow:0 1px 10px rgba(4,16,31,.9); }
.gm-caso__dato{
  display:inline-flex; align-items:center; gap:.4rem; margin-top:.85rem;
  font-family:var(--gm-display); font-size:.85rem; font-weight:650;
  padding:.4rem .85rem; border-radius:99px;
  background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.24);
  backdrop-filter:blur(8px);
}

/* Logos de clientes */
.gm-logos{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:1.6rem 2.4rem; align-items:center;
}
.gm-logos img{
  width:100%; height:auto; max-height:52px; object-fit:contain;
  filter:grayscale(1) opacity(.55); transition:filter .45s var(--gm-ease);
}
.gm-logos img:hover{ filter:grayscale(0) opacity(1); }

/* ==========================================================================
   14. Testimonios
   ========================================================================== */
.gm-voces{ display:grid; gap:1.6rem; grid-template-columns:1.55fr 1fr; align-items:stretch; }
.gm-voz-dest{
  position:relative; display:grid; grid-template-columns:300px 1fr;
  border-radius:var(--gm-radio-xl); overflow:hidden;
  background:#fff; border:1px solid var(--gm-linea); box-shadow:var(--gm-sombra);
  min-height:340px;
}
.gm-voz-dest__foto{ position:relative; min-height:280px; background:var(--gm-niebla-2); }
.gm-voz-dest__foto img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.gm-voz-dest__txt{ padding:2.2rem 2.1rem; display:flex; flex-direction:column; justify-content:center; }
.gm-voz-dest blockquote{
  margin:0 0 1.4rem; font-family:var(--gm-display); font-size:clamp(1.15rem,1.7vw,1.5rem);
  line-height:1.42; letter-spacing:-.02em; color:var(--gm-tinta); font-weight:600;
}
.gm-voz-dest blockquote::before{ content:'“'; color:var(--gm-azul); }
.gm-voz-dest blockquote::after{ content:'”'; color:var(--gm-azul); }
.gm-voz__quien{ font-family:var(--gm-display); font-weight:650; font-size:.98rem; }
.gm-voz__rol{ font-size:.86rem; color:var(--gm-gris); }
.gm-voz-col{ display:grid; gap:1.6rem; }
.gm-voz{
  background:#fff; border:1px solid var(--gm-linea); border-radius:var(--gm-radio-xl);
  padding:1.7rem; box-shadow:var(--gm-sombra-s); display:flex; flex-direction:column; gap:.9rem;
}
.gm-voz p{ font-size:.96rem; color:var(--gm-gris); }
.gm-estrellas{ display:flex; gap:.15rem; color:#F5A623; }
.gm-estrellas svg{ width:16px; height:16px; }
.gm-chips{ display:flex; flex-wrap:wrap; gap:.45rem; }
.gm-chip{
  font-family:var(--gm-display); font-size:.76rem; font-weight:600;
  padding:.3rem .7rem; border-radius:99px;
  background:var(--gm-niebla-2); color:var(--gm-azul-tinta);
}

/* ==========================================================================
   15. Marquesina
   ========================================================================== */
.gm-marquesina{ overflow:clip; padding:1.4rem 0; }
@supports not (overflow:clip){ .gm-marquesina{ overflow:hidden; } }
.gm-marquesina__riel{ display:flex; width:max-content; animation:gmMarq 42s linear infinite; }
.gm-marquesina:hover .gm-marquesina__riel{ animation-play-state:paused; }
@keyframes gmMarq{ to{ transform:translateX(-50%); } }
.gm-marquesina__item{
  display:flex; align-items:center; gap:1.6rem; padding-inline:1.6rem;
  font-family:var(--gm-display); font-size:clamp(1.6rem,3.4vw,2.8rem);
  font-weight:700; letter-spacing:-.03em; white-space:nowrap;
  color:transparent; -webkit-text-stroke:1px rgba(255,255,255,.3);
}
.gm-marquesina__item::after{ content:''; width:9px; height:9px; border-radius:50%; background:var(--gm-cian); -webkit-text-stroke:0; flex:none; }
.gm-marquesina__item:nth-child(even){ color:#fff; -webkit-text-stroke:0; }

/* ==========================================================================
   16. Acordeón de preguntas
   ========================================================================== */
.gm-faq{ max-width:840px; margin-inline:auto; display:grid; gap:.75rem; }
.gm-faq__item{
  background:#fff; border:1px solid var(--gm-linea); border-radius:var(--gm-radio);
  overflow:hidden; transition:border-color .35s var(--gm-ease), box-shadow .35s var(--gm-ease);
}
.gm-faq__item.is-abierto{ border-color:rgba(0,104,209,.35); box-shadow:var(--gm-sombra); }
.gm-faq__btn{
  width:100%; display:flex; align-items:center; gap:1rem; justify-content:space-between;
  padding:1.25rem 1.5rem; background:none; border:0; cursor:pointer; text-align:left;
  font-family:var(--gm-display); font-size:1.03rem; font-weight:650; color:var(--gm-tinta);
}
.gm-faq__mas{
  flex:none; width:30px; height:30px; border-radius:50%; display:grid; place-items:center;
  background:var(--gm-niebla-2); color:var(--gm-azul-fuerte);
  transition:transform .4s var(--gm-spring), background .3s, color .3s;
}
.gm-faq__item.is-abierto .gm-faq__mas{ transform:rotate(135deg); background:var(--gm-grad); color:#fff; }
.gm-faq__mas svg{ width:15px; height:15px; }
.gm-faq__cuerpo{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .45s var(--gm-ease-out); }
.gm-faq__item.is-abierto .gm-faq__cuerpo{ grid-template-rows:1fr; }
.gm-faq__cuerpo > div{ overflow:hidden; }
.gm-faq__cuerpo p{ padding:0 1.5rem 1.4rem; color:var(--gm-gris); font-size:.98rem; margin:0; }

/* ==========================================================================
   17. Banda CTA
   ========================================================================== */
.gm-cta{ position:relative; overflow:clip; color:#fff; }
@supports not (overflow:clip){ .gm-cta{ overflow:hidden; } }
.gm-cta__fondo{ position:absolute; inset:0; }
.gm-cta__fondo img{ width:100%; height:100%; object-fit:cover; }
.gm-cta__fondo::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(0,52,105,.96) 0%, rgba(4,16,31,.86) 55%, rgba(0,90,184,.72) 100%);
}
.gm-cta__in{ position:relative; z-index:1; text-align:center; padding:clamp(4rem,8vw,6.5rem) 0; }
.gm-cta h2{ color:#fff; max-width:840px; margin-inline:auto; }
.gm-cta p{ color:#CFE1F2; max-width:640px; margin-inline:auto; font-size:1.09rem; }
.gm-cta__acciones{ display:flex; flex-wrap:wrap; gap:.9rem; justify-content:center; margin-top:2rem; }

/* ==========================================================================
   18. Contacto
   ========================================================================== */
.gm-contacto{ display:grid; gap:2.4rem; grid-template-columns:1fr 1.15fr; align-items:start; }
.gm-datos{ display:grid; gap:1rem; }
.gm-dato{
  display:flex; gap:1rem; align-items:flex-start;
  padding:1.25rem 1.35rem; border-radius:var(--gm-radio);
  background:#fff; border:1px solid var(--gm-linea); box-shadow:var(--gm-sombra-s);
  transition:transform .4s var(--gm-ease-out), box-shadow .4s var(--gm-ease);
}
.gm-dato:hover{ transform:translateX(5px); box-shadow:var(--gm-sombra); }
.gm-dato__ico{
  flex:none; width:44px; height:44px; border-radius:13px; display:grid; place-items:center;
  background:var(--gm-grad); color:#fff;
}
.gm-dato__ico svg{ width:20px; height:20px; }
.gm-dato > span:last-child{ display:block; min-width:0; }
.gm-dato__et{ display:block; font-family:var(--gm-display); font-size:.78rem; font-weight:650; letter-spacing:.1em; text-transform:uppercase; color:var(--gm-gris); margin-bottom:.2rem; }
.gm-dato__val{ display:block; font-family:var(--gm-display); font-weight:650; font-size:1.02rem; color:var(--gm-tinta); line-height:1.45; word-break:break-word; }
.gm-dato__val a{ color:var(--gm-tinta); }
.gm-dato__val a:hover{ color:var(--gm-azul-fuerte); }

.gm-form{
  background:#fff; border:1px solid var(--gm-linea); border-radius:var(--gm-radio-xl);
  padding:clamp(1.8rem,3vw,2.6rem); box-shadow:var(--gm-sombra);
}
.gm-form__fila{ display:grid; gap:1.1rem; grid-template-columns:1fr 1fr; margin-bottom:1.1rem; }
.gm-campo{ display:flex; flex-direction:column; gap:.4rem; }
.gm-campo--ancho{ grid-column:1/-1; }
.gm-campo label{ font-family:var(--gm-display); font-size:.85rem; font-weight:600; color:var(--gm-tinta); }
.gm-campo label .req{ color:#C0392B; }
.gm-campo input,.gm-campo select,.gm-campo textarea{
  font-family:var(--gm-texto); font-size:.98rem; color:var(--gm-tinta);
  padding:.88rem 1.05rem; border-radius:var(--gm-radio-s);
  border:1.5px solid var(--gm-linea); background:var(--gm-niebla);
  transition:border-color .3s var(--gm-ease), background .3s var(--gm-ease), box-shadow .3s var(--gm-ease);
  width:100%;
}
.gm-campo textarea{ min-height:130px; resize:vertical; }
.gm-campo input:focus,.gm-campo select:focus,.gm-campo textarea:focus{
  outline:0; border-color:var(--gm-azul); background:#fff;
  box-shadow:0 0 0 4px rgba(0,104,209,.13);
}
.gm-form__aviso{ font-size:.82rem; color:var(--gm-gris); margin-top:1rem; text-align:center; }
.gm-form__ok,.gm-form__err{
  padding:1rem 1.2rem; border-radius:var(--gm-radio-s); margin-bottom:1.2rem; font-size:.95rem;
}
.gm-form__ok{ background:#E7F7EE; color:#0E5B33; border:1px solid #B7E4CC; }
.gm-form__err{ background:#FDECEA; color:#8B2018; border:1px solid #F5C6C0; }

/* ==========================================================================
   19. Blog
   ========================================================================== */
.gm-post-card{
  display:flex; flex-direction:column; background:#fff;
  border:1px solid var(--gm-linea); border-radius:var(--gm-radio-xl); overflow:hidden;
  box-shadow:var(--gm-sombra-s);
  transition:transform .45s var(--gm-ease-out), box-shadow .45s var(--gm-ease);
}
.gm-post-card:hover{ transform:translateY(-7px); box-shadow:var(--gm-sombra-l); }
.gm-post-card__media{ position:relative; aspect-ratio:16/9; overflow:hidden; background:var(--gm-niebla-2); }
.gm-post-card__media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform 1s var(--gm-ease-out); }
.gm-post-card:hover .gm-post-card__media img{ transform:scale(1.06); }
.gm-post-card__cuerpo{ padding:1.6rem 1.7rem 1.8rem; display:flex; flex-direction:column; flex:1; }
.gm-post-card h2,.gm-post-card h3{ font-size:1.14rem; line-height:1.3; margin-bottom:.55rem; letter-spacing:-.018em; }
.gm-post-card h2 a,.gm-post-card h3 a{ color:var(--gm-tinta); }
.gm-post-card h2 a:hover,.gm-post-card h3 a:hover{ color:var(--gm-azul-fuerte); }
.gm-caso__txt h2{ color:#fff; font-size:1.22rem; margin-bottom:.3rem; text-shadow:0 1px 12px rgba(4,16,31,.8); }
.gm-card--foto h2{ font-size:1.28rem; margin-bottom:.6rem; }
.gm-post-card p{ font-size:.94rem; color:var(--gm-gris); }
.gm-post-meta{
  display:flex; flex-wrap:wrap; gap:.7rem; align-items:center;
  font-size:.8rem; color:var(--gm-gris); margin-bottom:.7rem;
}
.gm-post-meta time{ font-variant-numeric:tabular-nums; }

/* Cabecera de página interior */
.gm-phero{
  position:relative; padding:calc(var(--gm-nav-h) + 4.5rem) 0 clamp(3rem,6vw,4.8rem);
  background:var(--gm-noche); color:#fff; overflow:clip;
}
@supports not (overflow:clip){ .gm-phero{ overflow:hidden; } }
.gm-phero__foto{ position:absolute; inset:0; }
.gm-phero__foto img{ width:100%; height:100%; object-fit:cover; }
.gm-phero__foto::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(4,16,31,.95) 0%, rgba(4,16,31,.78) 45%, rgba(4,16,31,.35) 100%);
}
.gm-phero__txt{ position:relative; z-index:1; max-width:760px; }
.gm-phero h1{ color:#fff; margin-bottom:.7rem; }
.gm-phero p{ color:#CFE1F2; font-size:1.08rem; max-width:620px; }
.gm-phero::after{
  content:''; position:absolute; inset:auto 0 0 0; height:4px; background:var(--gm-grad); z-index:2;
}
.gm-miga{
  position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:.45rem;
  font-size:.82rem; color:#9FBAD4; margin-bottom:1.1rem;
}
.gm-miga a{ color:#9FBAD4; }
.gm-miga a:hover{ color:#fff; }
.gm-miga span[aria-current]{ color:var(--gm-cian-claro); }

/* Artículo */
.gm-articulo{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:3rem; align-items:start; }
.gm-prosa{ font-size:1.08rem; line-height:1.82; color:#243449; max-width:760px; }
.gm-prosa h2{ margin:2.5rem 0 .9rem; font-size:clamp(1.5rem,2.6vw,2rem); scroll-margin-top:110px; }
.gm-prosa h3{ margin:2rem 0 .7rem; font-size:1.24rem; scroll-margin-top:110px; }
.gm-prosa ul,.gm-prosa ol{ margin:0 0 1.3rem; padding-left:1.35rem; }
.gm-prosa li{ margin-bottom:.55rem; }
.gm-prosa li::marker{ color:var(--gm-azul); }
.gm-prosa img{ border-radius:var(--gm-radio); margin:1.8rem 0; }
.gm-prosa blockquote{
  margin:2rem 0; padding:1.4rem 1.7rem; border-left:4px solid var(--gm-azul);
  background:var(--gm-niebla); border-radius:0 var(--gm-radio) var(--gm-radio) 0;
  font-family:var(--gm-display); font-size:1.12rem; font-weight:550; color:var(--gm-tinta); line-height:1.55;
}
.gm-prosa blockquote p:last-child{ margin-bottom:0; }
.gm-prosa a{ text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1.5px; }
.gm-prosa table{ width:100%; border-collapse:collapse; margin:1.8rem 0; font-size:.95rem; }
.gm-prosa th,.gm-prosa td{ padding:.85rem 1rem; border:1px solid var(--gm-linea); text-align:left; }
.gm-prosa th{ background:var(--gm-niebla-2); font-family:var(--gm-display); font-weight:650; }

.gm-nota{
  margin:2rem 0; padding:1.5rem 1.7rem; border-radius:var(--gm-radio);
  background:var(--gm-niebla); border:1px solid var(--gm-linea);
  border-left:4px solid var(--gm-azul);
}
.gm-nota strong{ display:block; font-family:var(--gm-display); margin-bottom:.4rem; color:var(--gm-azul-tinta); }
.gm-nota p{ font-size:.99rem; margin-bottom:0; color:var(--gm-gris); }

.gm-lateral{ position:sticky; top:104px; display:grid; gap:1.4rem; }
.gm-indice{
  background:var(--gm-niebla); border:1px solid var(--gm-linea);
  border-radius:var(--gm-radio); padding:1.4rem 1.5rem;
}
.gm-indice__tit{ font-family:var(--gm-display); font-weight:650; font-size:.8rem; letter-spacing:.12em; text-transform:uppercase; color:var(--gm-gris); margin:0 0 .9rem; }
.gm-indice ol{ list-style:none; margin:0; padding:0; display:grid; gap:.15rem; counter-reset:idx; }
.gm-indice a{
  display:block; padding:.42rem .6rem; border-radius:8px; font-size:.9rem;
  color:var(--gm-gris); line-height:1.4;
  border-left:2px solid transparent; transition:all .28s var(--gm-ease);
}
.gm-indice a:hover,.gm-indice a.is-activo{ color:var(--gm-azul-tinta); background:#fff; border-left-color:var(--gm-azul); }
.gm-lateral-cta{
  background:var(--gm-grad-noche); color:#fff; border-radius:var(--gm-radio-xl);
  padding:1.7rem; position:relative; overflow:hidden;
}
.gm-lateral-cta::before{
  content:''; position:absolute; inset:0;
  background:radial-gradient(70% 60% at 80% 0%, rgba(34,167,224,.34), transparent 62%);
}
.gm-lateral-cta > *{ position:relative; z-index:1; }
.gm-lateral-cta__tit{ color:#fff; font-size:1.1rem; font-weight:650; font-family:var(--gm-display); margin:0 0 .5rem; line-height:1.3; }
.gm-lateral-cta p{ font-size:.9rem; color:#B9CFE4; margin-bottom:1.2rem; }

/* Barra de progreso de lectura */
.gm-progreso{
  position:fixed; inset:0 0 auto 0; height:3px; z-index:950;
  background:var(--gm-grad); transform-origin:left; transform:scaleX(0);
}

/* Paginación */
.gm-paginacion{ display:flex; flex-wrap:wrap; gap:.5rem; justify-content:center; margin-top:3rem; }
.gm-paginacion .page-numbers{
  display:grid; place-items:center; min-width:44px; height:44px; padding:0 .9rem;
  border-radius:99px; border:1px solid var(--gm-linea); background:#fff;
  font-family:var(--gm-display); font-weight:600; font-size:.95rem; color:var(--gm-tinta);
  transition:all .3s var(--gm-ease);
}
.gm-paginacion .page-numbers:hover{ border-color:var(--gm-azul); color:var(--gm-azul-tinta); }
.gm-paginacion .page-numbers.current{ background:var(--gm-grad); border-color:transparent; color:#fff; }

/* ==========================================================================
   20. Pie
   ========================================================================== */
.gm-pie{ background:var(--gm-noche); color:#A8C3DC; padding:clamp(3.5rem,6vw,5rem) 0 0; position:relative; overflow:clip; }
@supports not (overflow:clip){ .gm-pie{ overflow:hidden; } }
.gm-pie::before{
  content:''; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(60% 60% at 15% 0%, rgba(0,104,209,.28), transparent 62%);
}
.gm-pie > *{ position:relative; z-index:1; }
.gm-pie__rejilla{ display:grid; gap:2.4rem; grid-template-columns:1.5fr 1fr 1fr 1.2fr; }
.gm-pie__logo{ height:48px; width:auto; margin-bottom:1.2rem; }
.gm-pie p{ font-size:.94rem; line-height:1.7; }
/* Rótulos, no encabezados de documento: usarlos como <h4> tras un <h2>
   producía saltos de jerarquía h2→h4 en todas las páginas. */
.gm-pie__tit{
  color:#fff; font-family:var(--gm-display); font-size:.82rem; font-weight:650;
  letter-spacing:.14em; text-transform:uppercase; margin:0 0 1.15rem;
}
.gm-pie ul{ list-style:none; margin:0; padding:0; display:grid; gap:.6rem; }
.gm-pie ul a{ color:#A8C3DC; font-size:.94rem; }
.gm-pie ul a:hover{ color:var(--gm-cian-claro); }
.gm-pie__credito{
  margin:1.15rem 0 0; padding-top:1.05rem;
  border-top:1px solid var(--gm-linea-osc);
  font-family:var(--gm-display); font-size:.86rem; font-weight:600; color:#8FAECB;
}
.gm-pie__credito a{ color:#8FAECB; }
.gm-pie__credito a:hover{ color:var(--gm-cian-claro); }
.gm-pie__social{ display:flex; gap:.6rem; margin-top:1.3rem; }
.gm-pie__social a{
  width:42px; height:42px; border-radius:12px; display:grid; place-items:center;
  background:rgba(255,255,255,.07); border:1px solid var(--gm-linea-osc); color:#fff;
  transition:background .3s var(--gm-ease), transform .3s var(--gm-spring), border-color .3s;
}
.gm-pie__social a:hover{ background:var(--gm-grad); border-color:transparent; transform:translateY(-3px); }
.gm-pie__social svg{ width:19px; height:19px; }
.gm-pie__legal{
  margin-top:3rem; padding:1.6rem 0 2.4rem; border-top:1px solid var(--gm-linea-osc);
  display:flex; flex-wrap:wrap; gap:1rem; justify-content:space-between; align-items:center;
  font-size:.86rem;
}
@media (min-width:761px){ .gm-pie__legal{ padding-right:5rem; } }
.gm-pie__legal a{ color:#A8C3DC; }
.gm-pie__legal a:hover{ color:var(--gm-cian-claro); }

/* WhatsApp flotante */
.gm-wa-flota{
  position:fixed; right:1.35rem; bottom:1.35rem; z-index:800;
  width:58px; height:58px; border-radius:50%; display:grid; place-items:center;
  background:linear-gradient(140deg,#25D366,#128C4B); color:#fff;
  box-shadow:0 14px 34px -10px rgba(18,140,75,.7);
  transition:transform .38s var(--gm-spring), box-shadow .38s var(--gm-ease);
}
.gm-wa-flota:hover{ transform:scale(1.1) rotate(-6deg); color:#fff; box-shadow:0 20px 44px -12px rgba(18,140,75,.85); }
.gm-wa-flota svg{ width:29px; height:29px; }
.gm-wa-flota::after{
  content:''; position:absolute; inset:-6px; border-radius:50%;
  border:2px solid rgba(37,211,102,.5); animation:gmPulso 2.6s var(--gm-ease) infinite;
}
@keyframes gmPulso{ 0%{ transform:scale(.9); opacity:.9; } 70%{ transform:scale(1.28); opacity:0; } 100%{ opacity:0; } }

/* ==========================================================================
   21. Utilidades
   ========================================================================== */
.gm-centro{ text-align:center; }
.gm-mt-1{ margin-top:1rem; } .gm-mt-2{ margin-top:2rem; } .gm-mt-3{ margin-top:3rem; }
.gm-oculto-visual{
  position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
.gm-saltar{
  position:absolute; left:-9999px; top:0; z-index:999;
  background:var(--gm-azul-tinta); color:#fff; padding:.85rem 1.4rem; border-radius:0 0 10px 0;
}
.gm-saltar:focus{ left:0; color:#fff; }

/* ==========================================================================
   22. Adaptativo
   ========================================================================== */
@media (max-width:1180px){
  .gm-articulo{ grid-template-columns:1fr; }
  .gm-lateral{ position:static; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); }
  .gm-voces{ grid-template-columns:1fr; }
  .gm-pie__rejilla{ grid-template-columns:1fr 1fr; }
}
@media (max-width:1024px){
  .gm-menu,.gm-nav__tel{ display:none; }
  .gm-burger{ display:flex; }
  .gm-nav__acciones{ gap:.5rem; }
  .gm-hero__flotantes{ display:none; }
  .gm-contacto{ grid-template-columns:1fr; }
  .gm-voz-dest{ grid-template-columns:1fr; }
  .gm-voz-dest__foto{ min-height:230px; }
}
@media (max-width:760px){
  body{ font-size:16px; }
  :root{ --gm-nav-h:72px; }
  .gm-container,.gm-container--ancho{ width:min(100% - 1.8rem, var(--gm-container)); }
  .gm-hero{ min-height:auto; padding:calc(var(--gm-nav-h) + 2.6rem) 0 5.5rem; }
  .gm-hero__ctrl-in{ width:min(100% - 1.8rem, var(--gm-ancho)); }
  .gm-hero__flechas{ display:none; }
  .gm-hero__pastillas{ max-width:none; }
  .gm-hero__pastilla-txt{ display:none; }
  .gm-hero__scroll{ display:none; }
  .gm-nav__acciones > .gm-btn{ display:none; }
  .gm-form__fila{ grid-template-columns:1fr; }
  .gm-pie__rejilla{ grid-template-columns:1fr; }
  .gm-pie__legal{ flex-direction:column; text-align:center; padding-right:0; }
  /* El width:100% NO puede ser general: aplicado al botón de la barra empujaba
     la hamburguesa fuera de la pantalla y dejaba el menú inalcanzable. */
  .gm-hero__acciones .gm-btn,
  .gm-cta__acciones .gm-btn,
  .gm-cajon__pie .gm-btn,
  .gm-form .gm-btn,
  .gm-precio .gm-btn,
  .gm-lateral-cta .gm-btn{ width:100%; }
  .gm-prosa{ font-size:1.02rem; }
}

/* ==========================================================================
   23. Accesibilidad — movimiento reducido
   ========================================================================== */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important; animation-iteration-count:1!important;
    transition-duration:.001ms!important; scroll-behavior:auto!important;
  }
  html.gm-js [data-reveal]{ opacity:1!important; transform:none!important; }
  .gm-hero__deck{ transform:none!important; }
  .gm-hero__foto{ animation:none!important; transform:none!important; }
  .gm-hero__slide{ transform:none!important; }
  .gm-palabra > span{ transform:none!important; opacity:1!important; }
  .gm-marquesina__riel{ animation:none!important; }
  .gm-wa-flota::after{ display:none; }
}

/* Modo estático para revisión/impresión: ?estatico en la URL */
html.gm-estatico [data-reveal]{ opacity:1!important; transform:none!important; }
html.gm-estatico .gm-hero__deck,
html.gm-estatico .gm-hero__foto,
html.gm-estatico .gm-hero__slide{ animation:none!important; transform:none!important; }
html.gm-estatico .gm-palabra > span{ transform:none!important; opacity:1!important; }
html.gm-estatico .gm-hero__slide-txt > *{ opacity:1!important; transform:none!important; animation:none!important; }
html.gm-estatico .gm-hero__chip{ opacity:1!important; animation:none!important; }
html.gm-estatico .gm-marquesina__riel{ animation:none!important; }

@media print{
  .gm-nav,.gm-cajon,.gm-wa-flota,.gm-hero__ctrl,.gm-progreso{ display:none!important; }
  body{ color:#000; }
  .gm-oscura,.gm-hero,.gm-pie{ background:#fff!important; color:#000!important; }
}
