/* =========================================================================
   SCALAR — landing page
   responsive.css — tablet, mobile y celulares chicos.

   Es parte de la hoja de estilos, dividida en varios módulos (ver /css).
   IMPORTANTE — orden de carga: el ORDEN en que estos archivos se linkean en
   el <head> de index.html importa, mantiene el mismo orden de cascada que
   tenía todo en un único styles.css. Si se agrega un archivo nuevo hay que
   linkearlo en el lugar que corresponda:
     1. variables.css   — paleta de colores y tokens (:root)
     2. base.css        — reset y estilos base de html/body
     3. shared.css      — componentes reutilizados entre 2+ secciones
                           (línea divisoria, eyebrow, keyframe de brillo)
     4. navbar.css      — navbar fija (logo, links, cta, versión compacta)
     5. hero.css        — hero (imagen, texto, botones, leyenda rotativa)
     6. layout.css      — .split-view ("El problema" + "La solución" juntas)
     7. problema.css    — sección "El problema" (fondo claro)
     8. solucion.css    — sección "La solución" (fondo claro)
     9. que-hacemos.css — sección "Qué hacemos" (fondo oscuro, timeline)
     10. responsive.css — ajustes de tablet, mobile y celulares chicos

   shared.css (3) va TEMPRANO a propósito: junta reglas que usan 2 o más
   secciones (ej. .divider-line lo usan hero/problema/solucion/que-hacemos),
   así que no puede vivir adentro del archivo de una sola sección — si
   agregás un componente nuevo usado por 2+ secciones, va ahí, no repetido
   en cada una.
   ========================================================================= */

/* ---------- 8. Tablet / laptop chico (sigue siendo el layout de desktop,
   sólo más ajustado) ----------
   Breakpoints alineados a la escala estándar: Tablet 768px, Tablet L
   1024px, Desktop recién a partir de 1439px. Pantallas como iPad Pro
   (1024px) o notebooks chicas usaban antes exactamente los mismos tamaños
   que un monitor grande, y el título/párrafo/grillas quedaban apretados o
   desproporcionados. Este bloque NO cambia el layout (sigue siendo el hero
   con imagen recortada + navbar píldora, no el apilado de mobile): sólo
   reduce paddings, tipografía y gaps para que ese mismo diseño respire
   bien en este rango intermedio. */
@media (min-width: 768px) and (max-width: 1439px){
  /* El nav completo (logo wordmark + 4 links + CTA) no entra en 768px de
     ancho con las medidas de desktop: el botón "Contactanos" quedaba
     cortado fuera de pantalla. Se achica el logo (mismo tamaño que usa
     .is-compact en desktop al scrollear) y se ajustan links/CTA más
     angostos para que todo el conjunto entre con margen en todo el rango. */
  .navbar-logo{ padding: 14px 18px; }
  .navbar-logo-mark{ height: 26px; }
  .navbar-logo-full{ height: 26px; }
  .navbar-logo-icon{ height: 26px; }
  .navbar-links{ gap: 0; }
  .navbar-links a{ padding: 8px 10px; font-size: 13px; }
  .navbar-cta{ padding: 11px 18px; font-size: 13px; margin: 12px 8px 12px 0; }

  /* .navbar.is-compact (ver bloque de más arriba) pesa más en especificidad
     que las reglas de acá arriba (tiene la clase .is-compact de más), así
     que al activarse en este rango terminaba GANÁNDOLE a este ajuste y
     agrandando de nuevo el link/CTA a sus medidas de "compacto de desktop"
     (pensadas para partir de un nav grande) — el conjunto volvía a no
     entrar en el ancho de tablet. Estas reglas repiten los mismos
     selectores con la clase .is-compact para igualar esa especificidad y
     que el nav sí seguga viéndose chico (y hasta un poco más, para que se
     note el efecto de "achicarse") en vez de crecer al activarse. */
  .navbar.is-compact{ width: calc(100% - 48px); max-width: 900px; }
  .navbar.is-compact .navbar-logo{ padding: 10px 14px; }
  .navbar.is-compact .navbar-logo-mark{ height: 22px; }
  .navbar.is-compact .navbar-logo-full{ height: 22px; }
  .navbar.is-compact .navbar-logo-icon{ height: 22px; }
  .navbar.is-compact .navbar-links a{ padding: 7px 9px; font-size: 12px; }
  .navbar.is-compact .navbar-cta{ padding: 9px 15px; font-size: 12px; margin: 9px 6px 9px 0; }

  /* Al comprimirse, los links quedan centrados respecto del DISPOSITIVO
     (viewport), no del espacio libre entre logo y CTA — que casi nunca es
     lo mismo, porque el logo (ícono chico) y el CTA (botón con texto) no
     pesan igual. Sacar los links del flujo flex y centrarlos por posición
     absoluta respecto de .navbar (que ya es position:fixed, sirve de
     referencia) logra ese centrado real; logo y CTA quedan solos en el
     flex y space-between los manda cada uno a su punta. */
  .navbar.is-compact .navbar-links{
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
  }

  /* .split-view: al reordenar "El problema" en vertical (texto arriba,
     tarjetas abajo, ver más abajo) su contenido pasa a ser más alto que
     antes, y ya no siempre entra en la mitad de pantalla que le fuerza
     .split-view — con overflow:hidden en .problema (por los círculos
     decorativos) eso cortaría la fila de tarjetas. Se desactiva acá
     (mismo criterio que en mobile): cada sección vuelve a su alto natural. */
  .split-view{ height: auto; display: block; }
  .split-view > section{ display: block; }
  .split-view > section > *{ width: auto; }

  /* navH acá = 63px (justify-content:center ya viene heredado de la regla
     base): 56 + 63 = 119. */
  .hero-grid{ padding: 119px 40px 56px; }
  h1{ font-size: 44px; }
  .hero-copy{ max-width: 480px; }
  .hero-sub{ font-size: 16px; max-width: 400px; margin-bottom: 28px; }
  /* "Conocé más" al lado del botón quedaba muy pegado/desalineado en este
     ancho (el link es más chico y su subrayado no calza bien en la misma
     fila que el botón píldora). Se apila debajo en vez de al lado. */
  .hero-actions{ flex-direction: column; align-items: flex-start; gap: 18px; }

  /* .problema y .solucion ya no reciben su alto vertical de .split-view
     (desactivado arriba), así que necesitan su propio padding vertical.
     Acá .problema NO tiene min-height ni centrado por flex (a diferencia
     del hero o de la versión mobile/landscape de esta misma sección): es
     simplemente una caja con padding fijo arriba y abajo, así que "verse
     centrado" es directamente que ese padding sea IGUAL en los dos lados
     — no hace falta compensar por la navbar acá (eso sólo importa cuando
     hay una altura fija de la que repartir espacio de sobra, como en el
     hero). Antes tenía 110/72 y después 135/72 (buscando compensar la
     navbar), pero eso deja el padding-top más grande a simple vista —
     inspeccionando la caja se nota enseguida que no es parejo. 96/96,
     igual en ambos lados. */
  .problema{ padding: 96px 40px; }
  .solucion{ padding: 72px 40px; }

  .problema-deco{ width: 340px; height: 340px; }
  /* "El problema" acá NO cambia de diseño respecto a desktop (intro a la
     izquierda + tarjetas a la derecha, .problema-inner en 1.4fr/2.7fr,
     .problema-cards como grid de 3 columnas — todo heredado tal cual de
     la regla base): sólo se achican tipografía/paddings, que es lo único
     que hacía falta para que respire bien en este rango. La versión
     "Tablet chica" (768–1023px, ver el media query de más abajo) sí
     cambia de diseño — ahí se pisa .problema-inner con 2 columnas
     (texto | carrusel de una tarjeta) —, pero "Tablet grande"
     (1024–1439px) queda con el mismo diseño de desktop, como corresponde. */
  .problema-intro h2{ font-size: 26px; }
  .problema-intro p{ font-size: 14px; }
  .problema-item{ padding: 24px 18px 20px; }
  .problema-icon{ width: 44px; height: 44px; margin-bottom: 18px; }
  .problema-icon svg{ width: 20px; height: 20px; }
  .problema-item h3{ font-size: 15px; }
  .problema-item p{ font-size: 13px; }

  .solucion-inner{ gap: 28px; }
  /* 26px, no 24px: mismo tamaño de h2 que el resto de las secciones en
     tablet (.problema-intro h2/.que-hacemos-title/.pqe-title/
     .segmentos-title/.cta-final h2, todas 26px acá) — escala unificada. */
  .solucion-title h2{ font-size: 26px; }
  .solucion-copy p{ font-size: 14px; }
  .solucion-visual{ min-height: 160px; padding: 20px 16px; }
  .solucion-flow-step{ width: 72px; }
  .solucion-flow-icon{ width: 38px; height: 38px; }
  .solucion-flow-icon svg{ width: 17px; height: 17px; }
  .solucion-flow-step span{ font-size: 11px; }
  .solucion-flow-result{ font-size: 13px; padding: 10px 18px; }

  /* "Qué hacemos": mismo diseño de desktop (grid de 4 columnas), sólo
     más compacto — padding, tipografía, ícono y conector más chicos para
     que las 4 columnas respiren en este ancho intermedio. */
  .que-hacemos{ padding: 88px 40px; }
  .que-hacemos-title{ font-size: 26px; margin-bottom: 56px; }
  .que-hacemos-timeline{ column-gap: 18px; }
  .que-hacemos-timeline::before{ top: 26px; }
  .que-hacemos-timeline-dot{ top: 26px; }
  .que-hacemos-node{ width: 52px; height: 52px; }
  .que-hacemos-node svg{ width: 22px; height: 22px; }
  .que-hacemos-connector{ height: 40px; }
  .que-hacemos-card{ padding: 20px 16px; }
  .que-hacemos-card h3{ font-size: 15px; }
  .que-hacemos-card p{ font-size: 13px; }

  /* "Por qué elegirnos": mismo grid de 4 columnas de desktop, sólo más
     compacto (mismo criterio que "Qué hacemos" arriba). */
  .por-que-elegirnos{ padding: 88px 40px; }
  .pqe-title{ font-size: 26px; margin-bottom: 56px; }
  .pqe-icon{ width: 52px; height: 52px; }
  .pqe-icon svg{ width: 22px; height: 22px; }
  .pqe-item{ padding: 0 18px; }
  /* 13px, no 13.5px: mismo tamaño de "párrafo de tarjeta" en tablet que
     .problema-item p/.que-hacemos-card p (ambas 13px acá). */
  .pqe-item p{ font-size: 13px; }

  /* "Para cada etapa de tu negocio" (variante experimental "barra única",
     ver segmentos.css): la barra sigue siendo una sola fila (display:flex)
     en vez de volver a un grid de varias filas — acá sólo se achica
     tipografía/padding para que los 6 labels (algunos de 2 líneas) entren
     cómodos en este ancho intermedio. */
  .segmentos{ padding: 64px 40px 0; }
  /* Mismo criterio que en desktop (ver .marcas-panel en segmentos.css):
     márgenes negativos que igualan el padding lateral de .segmentos en
     este ancho (40px acá, 64px en desktop) para que el panel siga
     llegando exacto a los 2 bordes de la sección. */
  .marcas-panel{ margin: 32px -40px 0; padding: 20px 40px 26px; }
  .segmentos-title{ font-size: 26px; margin-bottom: 32px; }
  .segmento-icon svg{ width: 26px; height: 26px; }
  .segmento-label{ font-size: 13px; }
  /* 14px, no 15px: mismo tamaño de "párrafo de intro" que el resto de las
     secciones en tablet (.problema-intro p/.solucion-copy p/.cta-final-sub,
     todas 14px acá) — antes no tenía override y quedaba en su tamaño de
     desktop (15px), un poco grande respecto de sus vecinas. */
  .segmentos-note{ margin-top: 28px; padding-top: 24px; font-size: 14px; }

  /* CTA final: antes sólo achicaba el padding lateral acá y el h2/copy se
     quedaban en su tamaño de desktop (34px/16px) — mucho más grandes que el
     resto de los h2/párrafos de intro en tablet (26px/14px). Se agrega la
     misma pareja de tamaños que usa el resto de las secciones. */
  .cta-final{ padding: 80px 40px; }
  .cta-final h2{ font-size: 26px; }
  .cta-final-sub{ font-size: 14px; }

  /* Footer: el panel sigue pegado a los 2 bordes laterales (ver
     css/footer.css, .footer no tiene padding lateral a propósito) — acá
     sólo se achica el padding INTERNO del panel y el gap entre columnas
     para que la fila de contacto/acciones/navegación siga entrando cómoda. */
  .footer-panel{ padding: 48px 40px 28px; }
  .footer-row{ gap: 20px; }

  /* En tablet no hay mouse real, así que ":hover" se dispara con un tap
     (sticky hover) — igual que se resolvió en mobile, eso hacía fácil
     "trabar" una tarjeta encendida con el dedo, compitiendo con el efecto
     automático de acá abajo (ver js/que-hacemos-scroll.js, bloque 8) y
     dejando 2 a la vez. Se anula el :hover completo (color, glow, lift)
     salvo que coincida con la tarjeta que el auto-highlight ya encendió
     (.is-inview) — mismo criterio que en mobile, mismos valores base de
     .que-hacemos-node/.que-hacemos-card/.que-hacemos-connector (ver
     que-hacemos.css) para "apagar" del todo si no coincide. */
  .que-hacemos-item:hover:not(.is-inview) .que-hacemos-node{
    transform: none;
    border-color: rgba(111,149,255,0.35);
    background: var(--bg);
    box-shadow: none;
  }
  .que-hacemos-item:hover:not(.is-inview) .que-hacemos-card{
    transform: none;
    border-color: rgba(255,255,255,0.1);
    background: rgba(255,255,255,0.03);
  }
  .que-hacemos-item:hover:not(.is-inview) .que-hacemos-connector{
    opacity: 0.8;
    transform: none;
  }
  .que-hacemos-item:hover:not(.is-inview) .que-hacemos-connector::after{
    transform: translateX(-50%) scale(1);
  }

  /* Auto-highlight (sólo tablet): cada 5s se enciende un punto de la
     timeline a la vez (ver js/que-hacemos-scroll.js, bloque 8), reusando
     la misma clase ".is-inview" que ya usa mobile — el nodo ya comparte
     regla con ":hover" en la base (que-hacemos.css). Acá, a diferencia de
     mobile, SÍ se replica el efecto completo de desktop (tarjeta+conector
     se levantan 6px, punto del conector se agranda): en tablet hay más
     espacio y el layout es horizontal como desktop, así que el mismo
     movimiento que da el :hover de mouse se siente natural disparado solo
     por el temporizador — no es el caso de mobile, donde la tarjeta ocupa
     todo el ancho apilada verticalmente y ese lift se veía raro. */
  .que-hacemos-item.is-inview .que-hacemos-connector{
    opacity: 1;
    transform: translateY(-6px);
  }
  .que-hacemos-item.is-inview .que-hacemos-connector::after{
    transform: translateX(-50%) scale(1.25);
  }
  .que-hacemos-item.is-inview .que-hacemos-card{
    transform: translateY(-6px);
    border-color: rgba(111,149,255,0.4);
    background: rgba(255,255,255,0.05);
  }
}

/* Sólo "Tablet" (768–1023px), no "Tablet grande" (1024–1439px): acá el
   hero-sub va más angosto para que las líneas corten mejor con este ancho
   más chico de columna de texto.
   "El problema" también cambia de diseño SÓLO acá: en vez del layout de
   desktop (heredado tal cual en "Tablet grande", ver el media query de
   arriba), pasa a 2 columnas parejas — texto a la izquierda, carrusel de
   una tarjeta a la vez a la derecha — mismo patrón que ya se usa en
   celulares acostados (ver el bloque de "orientation:landscape" más
   abajo), sólo que acá aplica en cualquier orientación (a este ancho hay
   lugar de sobra para 2 columnas, con o sin mucha altura). */
@media (min-width: 768px) and (max-width: 1023px){
  .hero-sub{ max-width: 355px; }

  .problema-inner{
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    align-items: center;
  }
  .problema-intro p{ max-width: none; }

  /* Mismo trío de fixes que en el resto de los carruseles (ver el
     comentario largo en el media query de mobile vertical, más abajo,
     para el detalle de cada uno):
     1) el overflow:hidden del carril vive en .problema-cards-window, no
        en .problema-cards ni en los puntitos (así no recorta nada).
     2) ese padding es sólo vertical, nunca horizontal (si no, asoma un
        pedacito de la tarjeta de al lado).
     3) min-width:0 en .problema-cards, porque es un item de grid y si no
        el carril con flex-shrink:0 le fuerza un ancho mínimo enorme y
        desborda la columna.
     Las reglas que activan el carrusel en sí (display, overflow, etc.) están
     agrupadas en la sección 6 ("Activación compartida del carrusel"); acá
     sólo quedan los valores propios de este breakpoint. */
  .problema-dots{ justify-content: center; margin-top: 18px; }
  .problema-item{ gap: 20px; padding: 28px 22px; min-height: 180px; }
  .problema-icon{ width: 48px; height: 48px; }
  .problema-icon svg{ width: 22px; height: 22px; }
  .problema-item-divider{ margin: 10px 0; }
}

/* Tablets en VERTICAL (ej. iPad Pro 1024x1366) dentro del rango de arriba:
   el centrado nav-compensado ya lo hace bien la regla general de tablet de
   arriba (no hace falta repetirlo acá) — esta regla sólo ajusta la imagen,
   que con tanto alto de pantalla se ve mejor un poco más angosta. */
@media (min-width: 768px) and (max-width: 1439px) and (orientation: portrait){
  /* La imagen se angosta un poco y se corre levemente hacia la derecha
     (menos que antes) para darle aire al bloque de texto, ahora que está
     centrado y no "pegado" al piso de la imagen. */
  .hero-media{ width: 58%; right: -16px; }
  .hero-caption{ padding: 0 32px; }
}

/* Tablets en HORIZONTAL de poca altura (ej. 1024x768, "Tablet" en
   landscape): la regla general de tablet (119px/56px, arriba) ya centra
   bien parejo, pero con menos alto disponible ese padding de sobra achica
   demasiado el margen de maniobra — acá se usa un gap más chico (32px en
   vez de 56px) para que el bloque de texto tenga más lugar, manteniendo
   la misma simetría nav-compensada (32 + 63 de navbar = 95). "Tablet
   grande" en landscape (1366x1024, más alto que 860px) no entra acá y
   sigue usando la regla general de arriba. */
@media (min-width: 768px) and (max-width: 1439px) and (orientation: landscape) and (max-height: 860px){
  .hero-grid{ padding: 95px 40px 32px; }
}

/* Celulares acostados (ej. 844x390, 932x430): entran en el rango de ancho
   de "tablet" de arriba (por eso heredan navbar/imagen diagonal de tablet,
   que acá se ve bien y no se toca), pero con MUY poca altura — mucha menos
   que cualquier tablet real en landscape. Con el tamaño de texto de tablet
   (pensado para 768px+ de alto) el título y el copy se comían casi toda la
   pantalla y quedaba todo apretado. Acá se achica todo un escalón más,
   sólo para este rango de altura bien angosto. */
@media (min-width: 768px) and (max-width: 1439px) and (orientation: landscape) and (max-height: 500px){
  /* justify-content:center (heredado de la regla de arriba) centra el
     bloque de texto en el alto TOTAL del hero — pero la navbar fija tapa
     buena parte de ese espacio arriba, así que visualmente quedaba mucho
     más pegado a la navbar que al piso de la pantalla. Para que el aire
     sea igual de arriba (desde donde termina la navbar) que de abajo
     (hasta el final de la página), el padding-top tiene que ser el
     padding-bottom + la altura de la navbar (63px fija en este rango, no
     cambia con el ancho) — así el centrado matemático de flexbox termina
     dando un espacio visual simétrico real, no sólo simétrico en el papel. */
  .hero-grid{ padding: 87px 40px 24px; }
  .hero-copy{ max-width: 380px; }
  h1{ font-size: 30px; margin-bottom: 12px; }
  .hero-sub{ font-size: 13px; line-height: 1.5; max-width: 340px; margin-bottom: 16px; }
  .hero-actions{ gap: 16px; }
  .btn-primary{ padding: 10px 18px; font-size: 13px; }
  .btn-link{ font-size: 13px; }

  /* "El problema" en este mismo rango (celular acostado, poca altura):
     mismo criterio de pantalla completa que en mobile vertical
     (min-height:100vh + centrado nav-compensado, navH=63px acá =>
     padding-top = padding-bottom + 63 = 24+63=87, igual que .hero-grid
     arriba), pero en 2 columnas lado a lado (texto | tarjeta) en vez de
     apiladas: hay ancho de sobra y muy poca altura, así que apilar (como
     en mobile vertical) no entraría cómodo. La columna derecha reutiliza
     el mismo carrusel de una tarjeta a la vez que mobile vertical (ver
     sección 6 y el bloque 5 del <script>, cuyo media query ya incluye
     este rango).
     Ojo especificidad: igual que en la sección 9, ".split-view > section"
     (sin media query) le gana a ".problema" sola — acá también hace falta
     ".split-view > .problema" para que display/min-height apliquen de
     verdad. */
  .split-view > .problema{
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 87px 40px 24px;
  }
  .problema-deco{ width: 240px; height: 240px; top: -70px; right: -50px; }
  .problema-inner{
    grid-template-columns: 1fr 1fr;
    gap: 28px;
    align-items: center;
  }
  .problema-intro{ padding-right: 0; }
  .problema-intro h2{ font-size: 21px; }
  .problema-intro p{ font-size: 12px; line-height: 1.55; }
  .problema-divider{ margin: 14px 0; }

  /* Igual que en mobile vertical: el carril pasa de display:contents a un
     carrusel real de una tarjeta a la vez, y el overflow:hidden vive en
     .problema-cards-window (no en .problema-cards ni en los puntitos) —
     ver el comentario largo en el media query de mobile vertical más
     abajo, mismo criterio acá.
     Ojo: el padding acá es SÓLO vertical (arriba/abajo), nunca horizontal.
     overflow:hidden recorta en el borde de PADDING, no en el de contenido
     — si hubiera padding a los costados, ese margen quedaría "adentro" de
     la zona visible y dejaría asomar una tira de la tarjeta siguiente/
     anterior (que arranca justo pegada, a un track-width de distancia).
     Por eso 0 a los costados: el ancho visible tiene que ser EXACTO al de
     una tarjeta, ni un pixel más.
     min-width:0 es otro fix aparte, para otro bug: .problema-cards es un
     item de grid (columna de .problema-inner) con overflow:visible, así
     que por default el grid calcula su ancho mínimo en base al contenido
     — y el carril de acá adentro tiene 3 tarjetas con flex-shrink:0 (no
     se pueden achicar, ver .problema-item más abajo), lo que le da un
     "min-content" enorme (casi el doble del ancho real) que termina
     estirando toda la columna del grid y desbordando la pantalla. Mismo
     fix que .problema-item-body más abajo, mismo motivo. */
  /* Las reglas que activan el carrusel en sí (display, overflow, etc.) están
     agrupadas en la sección 6 ("Activación compartida del carrusel"); acá
     sólo quedan los valores propios de este breakpoint. */
  .problema-dots{ justify-content: center; margin-top: 12px; }
  .problema-item{ gap: 16px; padding: 30px 20px; min-height: 152px; }
  .problema-icon{ width: 52px; height: 52px; }
  .problema-icon svg{ width: 22px; height: 22px; }
  .problema-item h3{ font-size: 14px; }
  .problema-item-divider{ margin: 8px 0 8px; }
  .problema-item p{ font-size: 12px; line-height: 1.55; }
}

/* ---------- 9. Responsive (mobile) ----------
   Ojo: 767px también es el breakpoint que usan varios `matchMedia` en JS —
   por ejemplo el spotlight del timeline en que-hacemos-scroll.js (bloque 6,
   '(max-width: 767px)') y el rango que activa el carrusel de tarjetas en
   problema-carousel.js. Si se cambia acá, cambiar también ahí. */

@media (max-width: 767px){
  /* Navbar: la fila de logo + botón hamburguesa queda fija arriba, y el
     menú de links + CTA se despliega debajo ocupando todo el ancho,
     animado con max-height (evita usar JS para medir alturas).
     gap:0 porque en flexbox el "gap" del contenedor también separa las
     líneas cuando hace wrap, aunque esa línea mida 0px de alto (como
     .navbar-links y .navbar-cta cuando el menú está cerrado) — eso sumaba
     espacio muerto abajo de la tarjeta. El espaciado del menú ABIERTO lo
     da el margin-top de cada uno (ver más abajo), no este gap. */
  .navbar{ flex-wrap: wrap; align-items: center; gap: 0; padding: 16px 12px; border-radius: 0 0 24px 24px; box-shadow: none; }
  /* Misma altura que .navbar-toggle para que ambos queden perfectamente
     centrados entre sí en la fila de arriba. El centrado vertical lo da
     el padding parejo de .navbar (arriba y abajo). */
  .navbar-logo{ order: 0; height: 42px; padding: 0; margin: 0; }
  .navbar-logo-full,
  .navbar-logo-icon{ height: 28px; }
  .navbar-toggle{
    display: flex;
    order: 1;
    width: 42px;
    height: 42px;
    margin: 0;
  }

  .navbar-links{
    order: 2;
    flex-basis: 100%;
    flex-direction: column;
    align-items: stretch;
    background: transparent;
    padding: 0;
    /* Hereda border-radius:999px del estilo píldora de desktop; acá, con
       overflow:hidden y un contenedor angosto/alto, ese radio gigante
       recortaba las esquinas en un arco enorme (el "domo" reportado). */
    border-radius: 0;
    gap: 8px;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    margin-top: 0;
    transition: max-height .3s ease, opacity .25s ease, margin-top .3s ease;
  }
  /* Cada item del menú desplegable: ícono + texto alineados a la izquierda,
     con un separador sutil abajo (salvo el último) y fondo redondeado sólo
     en el ítem activo, como en la referencia. */
  .navbar-link-icon{ display: block; color: var(--text-dim); }
  .navbar-links a{
    display: flex;
    align-items: center;
    gap: 12px;
    text-align: left;
    padding: 16px 14px;
    border-radius: 12px;
  }
  .navbar-links a:hover{ background: rgba(255,255,255,0.05); }

  /* Ítem activo: fondo celeste tenue + ícono/texto más claros + punto a
     la izquierda (en vez del puntito debajo de desktop). */
  .navbar-links a.is-active{
    background: rgba(111,149,255,0.14);
  }
  .navbar-links a.is-active .navbar-link-icon{ color: var(--blue-light); }
  .navbar-links a.is-active::before{
    content: '';
    order: -1;
    width: 6px;
    height: 6px;
    flex: none;
    border-radius: 50%;
    background: var(--blue-light);
  }
  /* El puntito de desktop (debajo del texto) no aplica acá */
  .navbar-links a.is-active::after{ display: none; }

  .navbar-cta{
    order: 3;
    flex-basis: 100%;
    display: block;
    text-align: center;
    box-sizing: border-box;
    margin: 0;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    padding-top: 0;
    padding-bottom: 0;
    margin-top: 0;
    transition: max-height .3s ease, opacity .25s ease, padding .3s ease, margin-top .3s ease;
  }

  /* Estado abierto: fondo de la propia tarjeta un poco más oscuro (además
     del overlay que oscurece el resto de la página), para que el menú
     desplegado se lea mejor sobre el contenido de atrás. */
  .navbar.is-open{
    background:
      linear-gradient(180deg, rgba(255,255,255,0.03) 0%, transparent 55%),
      rgba(4,7,14,0.7);
  }

  /* Estado abierto: JS le agrega .is-open a .navbar al tocar el botón hamburguesa */
  .navbar.is-open .navbar-links{
    max-height: 300px;
    opacity: 1;
    margin-top: 10px;
  }
  .navbar.is-open .navbar-cta{
    max-height: 60px;
    opacity: 1;
    padding-top: 12px;
    padding-bottom: 12px;
    margin-top: 8px;
  }

  /* En mobile el bloque de texto va CENTRADO (no "parado abajo" como en
     desktop). La navbar en mobile mide 74px fija arriba: con padding
     parejo (96/96) el centrado quedaba simétrico respecto de la pantalla
     COMPLETA, pero no respecto del espacio realmente visible (que empieza
     donde termina la navbar) — se veía más pegado arriba que abajo. Mismo
     criterio que en desktop/tablet: padding-top = padding-bottom + 74px
     (48 + 74 = 122) para que el aire quede parejo desde el borde de la
     navbar hasta el final de la página. */
  .hero-grid{ justify-content: center; padding: 122px 24px 48px; }
  h1{ font-size: 60px; }
  .hero-sub{ font-size: 19px; }
  /* En tablet/mobile se abandona el recorte diagonal: la imagen pasa a ser
     un fondo de ancho completo, atenuado, detrás del texto. */
  .hero-media{
    width: 100%;
    clip-path: none;
    opacity: 0.22;
  }
  .hero-caption{ display: none; } /* no entra bien con la imagen de fondo a baja opacidad */

  /* .split-view: en mobile se desarma. "El problema" + "La solución" no
     entran cómodos en medio viewport cada uno en una pantalla chica, así
     que vuelven a apilarse con su alto natural (scroll normal). */
  .split-view{ height: auto; display: block; }
  .split-view > section{ display: block; }
  .split-view > section > *{ width: auto; }

  /* Sección "El problema": una sola columna en vez de intro+tarjetas lado
     a lado. Antes ocupaba una pantalla completa forzada (min-height:100vh)
     centrada verticalmente con justify-content:center, igual que el hero
     — pero acá el contenido casi nunca llega a llenar una pantalla entera
     (a diferencia del hero), así que ese centrado sumaba aire de sobra
     ARRIBA de la ya generosa compensación de navbar (122px) y ABAJO de
     los 48px de base, quedando bastante más espacio del que se ve en
     "Qué hacemos" (que fluye con su alto natural, sin forzar 100vh) —
     inconsistente entre secciones. Ahora fluye igual que "Qué hacemos":
     alto natural del contenido, mismo padding 122/48 (74px de compensación
     de navbar + 48px de aire real, ver el mismo criterio en .que-hacemos),
     sin min-height ni centrado extra.
     Ojo con la especificidad: ".split-view > section" (sección 5, sin
     media query) tiene más especificidad (0,1,1) que ".problema" sola
     (0,1,0), así que le gana al "padding" de acá aunque esta regla esté
     en un media query y más abajo en el archivo si no se iguala esa
     especificidad. Se usa ".split-view > .problema" para igualar esa
     especificidad (0,2,0) y que el padding gane de verdad. */
  .split-view > .problema{
    padding: 122px 24px 48px;
  }
  .problema-deco{ width: 320px; height: 320px; top: -100px; right: -80px; }
  .problema-inner{ grid-template-columns: 1fr; gap: 20px; }
  .problema-intro{ padding-right: 0; margin-bottom: 8px; }
  /* 26px, no 28px: mismo tamaño de h2 que el resto de las secciones en
     mobile (.solucion-title h2/.segmentos-title/.cta-final h2, todas 26px
     acá) — antes era, junto con .pqe-title, uno de los 2 que quedaban un
     escalón más grande sin motivo. */
  .problema-intro h2{ font-size: 26px; }
  /* Antes esta regla no existía: sin override acá, el párrafo volvía a su
     tamaño de desktop (15px, ver problema.css) apenas se cruzaba de tablet
     (14px) a mobile — más grande en la pantalla más chica que en la
     intermedia, al revés de lo esperado. Se fija en 14px, mismo tamaño que
     ya tenía en tablet (no hace falta achicarlo más). */
  .problema-intro p{ font-size: 14px; }

  /* Carrusel de tarjetas: las 3 apiladas no entraban en una pantalla
     chica, así que acá se muestra sólo UNA por vez. .problema-cards-window
     pasa a ser la "ventana" (ancho fijo, overflow:hidden) y
     .problema-cards-track (que en desktop/tablet era display:contents,
     invisible para el layout) pasa a ser el carril real: una fila con las
     3 tarjetas una al lado de la otra, que se desliza con transform (ver
     bloque 5 del <script>, que además la hace avanzar sola cada unos
     segundos).
     El overflow:hidden vive en .problema-cards-window (no en .problema-cards
     directamente) y no en los puntitos, para que el puntito activo
     agrandado (.is-active, transform:scale) no quede recortado contra el
     borde inferior de la ventana.
     El padding es SÓLO vertical, nunca horizontal: overflow:hidden recorta
     en el borde de PADDING, no en el de contenido — con padding a los
     costados, esa franja queda "adentro" de la zona visible y deja asomar
     un pedacito de la tarjeta siguiente/anterior (pegada justo ahí, a un
     track-width de distancia). Con 0 a los costados el ancho visible da
     EXACTO con el de una tarjeta.
     min-width:0 es otro fix aparte (mismo que en mobile vertical, ver el
     comentario largo ahí): sin esto, el ancho mínimo que le exige el grid
     de 2 columnas a esta columna termina siendo el "min-content" del
     carril de tarjetas (con flex-shrink:0, no se pueden achicar) — casi
     el doble del ancho real — y desborda la pantalla.
     Las reglas que activan el carrusel en sí (display, overflow, etc.) están
     agrupadas en la sección 6 ("Activación compartida del carrusel"); acá
     sólo quedan los valores propios de este breakpoint. */

  /* Puntitos: visibles sólo acá, para saber en qué tarjeta de las 3 se está
     parado (y poder saltar a otra tocándolos). */
  .problema-dots{ margin-top: 20px; }

  /* Tarjetas en mobile: ícono grande a la izquierda + título/línea/texto
     a la derecha, en fila (en desktop van apiladas, ícono arriba). Además,
     cada una ocupa el 100% del ancho de la "ventana" (flex:0 0 100%): son
     los "slides" del carril de arriba, uno detrás del otro en vez de
     apilados verticalmente. */
  .problema-item{ gap: 24px; padding: 28px 24px; }
  .problema-icon{ width: 88px; height: 88px; } /* en desktop se centra con margin:0 auto; acá no hace falta, ya está a la izquierda */
  .problema-icon svg{ width: 32px; height: 32px; }
  .problema-item-body{ min-width: 0; } /* evita que el texto largo desborde la fila flex */
  /* Mismo motivo que .problema-intro p más arriba: sin estos 2 overrides,
     título y párrafo de la tarjeta volvían a su tamaño de desktop (16px/
     14.5px) al cruzar a mobile, más grandes que en tablet (15px/13px). Se
     fijan en el tamaño de tablet, mismo criterio que .que-hacemos-card acá
     abajo. */
  .problema-item h3{ font-size: 15px; }
  .problema-item p{ font-size: 13px; }

  /* Sección "La solución": título, copy e imagen apilados en una sola
     columna, en ese orden (ya es el orden natural del HTML).
     Mismo tratamiento que .problema más arriba (mismo motivo: sin
     min-height:100vh ni centrado forzado, fluye con su alto natural,
     mismo padding 122/48 que el resto de las secciones en mobile).
     Ojo especificidad: igual que con .problema más arriba, ".split-view >
     section" (sección 5, sin media query) tiene más especificidad (0,1,1)
     que ".solucion" sola (0,1,0), así que le gana al "padding" de acá si
     no se iguala esa especificidad. Se usa ".split-view > .solucion" para
     igualar esa especificidad y que gane de verdad (mismo fix que ya se
     hizo para .problema). */
  .split-view > .solucion{
    padding: 122px 24px 48px;
  }
  .solucion-inner{ grid-template-columns: 1fr; gap: 32px; align-items: stretch; }
  .solucion-title h2{ font-size: 26px; }
  .solucion-divider{ display: block; }
  .solucion-visual{ min-height: 220px; }
  /* Mismo motivo que .problema-intro p (ver arriba): sin este override el
     copy volvía a su tamaño de desktop (15px) al cruzar a mobile, más
     grande que en tablet (14px). */
  .solucion-copy p{ font-size: 14px; }

  /* El diagrama de "hardware + software + capacitación" no entra en una
     sola fila a este ancho: Capacitación pasa a una fila propia, abajo,
     centrada. Un solo "+" como conector (no dos): el primero (entre
     Hardware y Software) se oculta, y sólo queda el segundo, centrado
     entre la fila de arriba y Capacitación — se lee como una tríada con
     un único "+" en el medio. */
  .solucion-flow-plus:first-of-type{
    display: none;
  }
  .solucion-flow-plus:last-of-type{
    flex-basis: 100%;
    text-align: center;
    order: 1;
    margin-top: 2px;
  }
  .solucion-flow-step:last-child{
    flex-basis: 100%;
    order: 2;
  }
  /* Mismo motivo que .solucion-copy p más arriba: sin esto volvía a 12px de
     desktop al cruzar a mobile, más grande que en tablet (11px). */
  .solucion-flow-step span{ font-size: 11px; }

  /* Distribuidores oficiales (Audaces/Vesto): en desktop las 2 píldoras
     entran en una sola fila y la "Click para ver más" cae pegada al lado
     de la última (Vesto) — ahí tiene sentido, lee como "esto de acá". En
     mobile el ancho no alcanza: la fila (flex-wrap) parte a Audaces sola
     arriba y Vesto+pistita juntas abajo, y la pistita termina leyéndose
     como si fuera SOLO de Vesto (pedido puntual: "el click para ver más
     solo apunta a una"). Se saca directamente la pistita compartida acá
     (pedido puntual) y la flecha de cada píldora (ver
     .solucion-partner-arrow en solucion.css), que hoy sólo aparece con
     :hover/:focus-visible — en touch no hay hover real, así que en mobile
     nunca se veía — queda forzada visible siempre, así cada píldora tiene
     su propia señal de "esto es clickeable". El estilo del ícono en sí
     (sin círculo de fondo, sólo el chevron celeste) ya vive en la regla
     base de solucion.css, compartida con el hover de desktop — acá sólo
     hace falta forzarlo visible, no repetir tamaño/color. */
  .solucion-partners-row{
    gap: 12px;
  }
  .solucion-partner-arrow{
    width: 14px;
    opacity: 1;
    margin-left: 2px;
  }
  .solucion-partners-hint{
    display: none;
  }

  /* "Qué hacemos": en vez del grid de 4 columnas de desktop (ver
     sección "Qué hacemos" más arriba), acá va un "rail" vertical — los 4 íconos alineados a
     la izquierda, conectados entre sí por una línea sólida continua, cada
     uno con un guión punteado corto hacia su tarjeta (a la derecha).
     .que-hacemos-item pasa de display:contents a flex row (ícono | tarjeta).
     .que-hacemos-connector, que en desktop era el punteado vertical
     ícono→tarjeta, se reutiliza acá como el tramo de línea vertical
     "ícono→ícono" (ya no hace falta ese punteado: el nuevo punteado
     ícono→tarjeta sale de .que-hacemos-node::after, ver más abajo). */
  /* Mismo padding vertical que .problema/.solucion más arriba (122px
     arriba, compensando los 74px fijos del navbar + 48px de aire real;
     48px abajo) — antes esta sección tenía 72px/72px, sin relación con
     los números de las otras dos, y se notaba un salto de "aire" distinto
     entre secciones al scrollear. */
  .que-hacemos{ padding: 122px 24px 48px; }
  /* 26px, no 24px: mismo tamaño de h2 que el resto de las secciones en
     mobile (ver el comentario de .problema-intro h2 más arriba) — era el
     único que quedaba un escalón más chico sin motivo. */
  .que-hacemos-title{ font-size: 26px; margin-bottom: 40px; }
  .que-hacemos-timeline{
    display: block;
    position: relative;
  }
  .que-hacemos-timeline::before{ display: none; } /* línea horizontal de desktop, no aplica acá */

  /* Los 2 puntitos de punta (<span> compartidos con desktop, ver
     sección "Qué hacemos" más arriba) quedan OCULTOS acá: en desktop funcionan porque están
     anclados al mismo contenedor (.que-hacemos-timeline) que la línea
     horizontal, con una posición fija (0/0). En mobile el rail es
     vertical y el punto de ABAJO tendría que caer justo debajo del ÚLTIMO
     ícono — pero esa altura depende del contenido de las 4 tarjetas (varía
     según cuánto texto tenga cada una), así que no hay un "top" fijo en
     px que sirva. Antes se usaba bottom:0 (fondo de TODO el timeline, o
     sea el borde inferior de la ÚLTIMA TARJETA) y el punto quedaba flotando
     bien lejos del ícono, sin ninguna línea dibujada en ese tramo (el
     conector del último item sólo mide 28px, el radio del propio ícono,
     así que no llega ni cerca). Se reemplazan por pseudo-elementos propios
     de los items primero/último (ver más abajo), que si están anclados a
     la altura real de CADA item en vez de a la del timeline completo. */
  .que-hacemos-timeline-dot{ display: none; }

  /* Remate de arriba: punto + tramo de línea de 20px que baja hasta el
     borde superior del primer ícono (mismo eje x que el rail, 27px =
     28px de centro del nodo menos 1px de mitad del ancho de la línea).
     Van como pseudo-elementos del primer .que-hacemos-item (position:
     relative, ver más abajo) en vez de depender de un offset fijo dentro
     de .que-hacemos-timeline: así el punto queda siempre pegado a ESTE
     ítem en particular, sin importar cuánto midan los de arriba (acá no
     hay ninguno arriba, pero mantiene el mismo criterio que el remate de
     abajo). */
  .que-hacemos-item:first-child::before{
    content: '';
    position: absolute;
    left: 27px;
    top: -20px;
    width: 2px;
    height: 20px;
    background: var(--blue-light);
    opacity: 0.55;
    z-index: 0;
  }
  .que-hacemos-item:first-child::after{
    content: '';
    position: absolute;
    left: 28px;
    top: -20px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--blue-light);
    transform: translate(-50%, -50%);
    z-index: 0;
  }

  /* Remate de abajo: mismo criterio, pero pseudo-elementos del ÚLTIMO
     item, arrancando desde el centro de SU PROPIO ícono (top:28px) hacia
     abajo — así el punto siempre cae justo debajo del último ícono real,
     sin importar la altura acumulada de las tarjetas anteriores. */
  .que-hacemos-item:last-child::before{
    content: '';
    position: absolute;
    left: 27px;
    top: 56px; /* borde inferior del ícono (56px de alto), NO su centro (28px) —
                  con :first-child el mismo truco funciona porque el tramo va
                  HACIA ARRIBA del ícono (nunca lo pisa), pero acá abajo un
                  "top" dentro de 0–56 cae DENTRO del propio nodo y queda
                  tapado por su fondo opaco (bug: el punto no se veía). */
    width: 2px;
    height: 90px; /* antes 20px — el usuario pidió que el remate de abajo sea
                     bastante más largo, como en la referencia que marcó. */
    background: var(--blue-light);
    opacity: 0.55;
    z-index: 0;
  }
  .que-hacemos-item:last-child::after{
    content: '';
    position: absolute;
    left: 28px;
    top: 146px; /* 56 (borde del ícono) + 90 (largo del tramo) */
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--blue-light);
    transform: translate(-50%, -50%);
    z-index: 0;
  }

  .que-hacemos-item{
    display: flex;
    align-items: flex-start;
    position: relative;
  }

  .que-hacemos-node{
    flex: none;
    width: 56px;
    height: 56px;
    margin: 0 16px 0 0;
  }
  .que-hacemos-node svg{ width: 24px; height: 24px; }
  /* Guión punteado corto del borde del ícono a la tarjeta (nuevo: en
     desktop esto lo hacía .que-hacemos-connector; acá ese elemento pasa a
     ser la línea vertical, así que este tramo horizontal necesita su
     propio pseudo-elemento). */
  .que-hacemos-node::after{
    content: '';
    position: absolute;
    top: 50%;
    left: 100%;
    width: 16px;
    height: 2px;
    background: repeating-linear-gradient(
      to right,
      rgba(111,149,255,0.5) 0px,
      rgba(111,149,255,0.5) 5px,
      transparent 5px,
      transparent 9px
    );
    transform: translateY(-50%);
  }

  /* Línea vertical continua del rail: sólida (no punteada, a diferencia
     del guión ícono→tarjeta), centrada en el eje de los íconos (27px =
     28px de centro del nodo, menos 1px de mitad del ancho de la línea).
     Se extiende 28px MÁS ALLÁ del borde inferior de su propio item
     (calc(100% + 28px)): el item termina justo donde empieza el
     siguiente, pero el CENTRO del ícono de ese siguiente item está 28px
     más abajo de ese borde (mitad de sus 56px) — sin este extra, la línea
     llegaría sólo hasta el borde de arriba del próximo ícono, no hasta su
     centro, y se notaría un quiebre. En el último item no hay "próximo
     ícono" al que llegar, así que ahí sólo mide 28px (llega a su propio
     centro y para, con el puntito de punta encima). */
  .que-hacemos-connector{
    position: absolute;
    left: 27px;
    top: 0;
    width: 2px;
    height: calc(100% + 28px);
    margin: 0;
    background: var(--blue-light);
    opacity: 0.55;
    z-index: 0;
  }
  .que-hacemos-item:last-child .que-hacemos-connector{ height: 28px; }
  /* El puntito que traía .que-hacemos-connector::after (pensado para el
     punteado vertical de antes) queda sin uso: siempre cae justo en el
     centro de un ícono (tapado por su fondo opaco), así que no hace falta
     que siga en el DOM/renderizado. */
  .que-hacemos-connector::after{ display: none; }

  .que-hacemos-card{
    flex: 1;
    min-width: 0;
    margin-bottom: 32px;
  }
  .que-hacemos-item:last-child .que-hacemos-card{ margin-bottom: 0; }
  /* Mismo motivo que .problema-item h3/p más arriba: sin estos 2 overrides,
     título y párrafo de la tarjeta volvían a su tamaño de desktop (17px/
     14.5px) al cruzar a mobile, más grandes que en tablet (15px/13px). */
  .que-hacemos-card h3{ font-size: 15px; }
  .que-hacemos-card p{ font-size: 13px; }

  /* El hover que levanta la tarjeta (translateY) y mueve el conector con
     ella tiene sentido en desktop, donde el conector ES el punteado hacia
     esa misma tarjeta. Acá el conector es la línea vertical del rail (no
     apunta a esta tarjeta en particular), así que no debe moverse; y
     mover la tarjeta sola dejaría un huequito entre ella y su guión
     punteado horizontal (que no se mueve, cuelga del ícono). Se anulan
     ambos transforms en mobile; el resto del hover del ícono (brillo,
     escala) se mantiene igual. */
  .que-hacemos-item:hover .que-hacemos-connector{ opacity: 0.55; transform: none; }
  .que-hacemos-item:hover .que-hacemos-card{ transform: none; }

  /* En touch, un tap deja el :hover normal "pegado" (sticky hover) hasta
     tocar otro lado — eso encendía la tarjeta tocada ADEMÁS de la que ya
     estaba encendida por scroll (.is-inview), dejando 2 a la vez. Acá se
     anula el color/fondo/glow que agrega el :hover (lo único que faltaba
     cancelar; el transform ya se cancela arriba) cuando no coincide con
     .is-inview, dejando el nodo/tarjeta en su estado base — así en mobile
     sólo se enciende la tarjeta que determina el scroll, nunca el tap. */
  .que-hacemos-item:hover:not(.is-inview) .que-hacemos-node{
    transform: none;
    border-color: rgba(111,149,255,0.35);
    background: var(--bg);
    box-shadow: none;
  }
  .que-hacemos-item:hover:not(.is-inview) .que-hacemos-card{
    border-color: rgba(255,255,255,0.1);
    background: rgba(255,255,255,0.03);
  }

  /* Spotlight por scroll (ver js/que-hacemos-scroll.js): en mobile no hay
     mouse, así que el mismo efecto de ":hover" de arriba se dispara acá
     con la clase ".is-inview", que un IntersectionObserver agrega/saca de
     cada .que-hacemos-item a medida que cruza una franja angosta centrada
     en el viewport al scrollear — el ícono se ilumina y la tarjeta se
     aclara un toque, como si el usuario le hubiese "pasado el mouse" al
     llegar a esa altura. El nodo (ícono) ya comparte regla con el :hover de
     desktop (ver sección "Qué hacemos" — mismo selector combinado, ".is-inview
     .que-hacemos-node" está ahí junto con ":hover .que-hacemos-node"); acá
     sólo queda la tarjeta, que sí difiere del :hover (sin el transform que
     la levanta, por el mismo motivo ya explicado arriba). */
  .que-hacemos-item.is-inview .que-hacemos-card{
    border-color: rgba(111,149,255,0.4);
    background: rgba(255,255,255,0.05);
  }

  /* "Por qué elegirnos": las 4 columnas no entran una al lado de la otra
     en una pantalla chica, así que se apilan (1 columna). Mismo padding
     122/24/48 que el resto de las secciones acá (ver el comentario largo
     en .que-hacemos de este mismo bloque). */
  .por-que-elegirnos{ padding: 122px 24px 48px; text-align: left; }
  /* Eyebrow + título a la izquierda acá (a diferencia de desktop/tablet,
     donde van centrados) — mismo criterio que el resto de las secciones
     en mobile (.problema-intro, .solucion-title, etc.), pedido puntual
     para este breakpoint. */
  .pqe-eyebrow{ justify-content: flex-start; }
  /* La segunda línea (después del texto) tenía sentido centrada, como
     cierre simétrico — a la izquierda queda una rayita suelta pegada al
     texto sin motivo, así que se oculta acá (mismo criterio de eyebrow
     de una sola línea que el resto de las secciones en mobile). */
  .pqe-eyebrow .divider-line:last-child{ display: none; }
  /* 26px, no 28px: mismo tamaño de h2 que el resto de las secciones en
     mobile (ver el comentario de .problema-intro h2 más arriba). */
  .pqe-title{ font-size: 26px; margin: 0 0 32px; }

  /* Diseño de referencia que aprobó el usuario (mockup con tarjetas
     numeradas): cada item pasa de "columna apilada centrada" a una
     tarjeta blanca propia, ícono a la izquierda + texto a la derecha en
     fila, todo alineado a la izquierda — mismo lenguaje visual que
     .problema-item en su versión mobile (ícono grande a la izquierda,
     cuerpo de texto al lado), pero con borde propio de tarjeta en vez de
     ser un slide de carrusel. */
  .pqe-grid{
    display: block;
    text-align: left;
  }
  .pqe-item{
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 20px;
    background: #fff;
    border: 1px solid var(--surface-border);
    border-radius: 16px;
    text-align: left;
  }
  .pqe-item + .pqe-item{ margin-top: 14px; }
  /* La línea vertical entre columnas de desktop/tablet (.pqe-item::before)
     no aplica acá: la separación entre tarjetas ya la da el propio borde
     + el margin-top de arriba, así que se anula. */
  .pqe-item:not(:first-child)::before{ display: none; }

  /* Ícono: deja de centrarse solo (margin:0 auto, versión desktop) para
     quedar fijo a la izquierda como primer elemento de la fila flex. */
  .pqe-icon{ flex: none; width: 52px; height: 52px; margin: 0; }
  .pqe-icon svg{ width: 22px; height: 22px; }

  /* Columna de texto (número + título + línea + descripción), ocupa el
     resto del ancho de la tarjeta. min-width:0 evita que un título largo
     desborde la fila flex (mismo fix que .problema-item-body). */
  .pqe-item-body{ min-width: 0; }

  /* .pqe-num ("01"/"02"/"03"/"04") se probó en este layout de tarjeta,
     pero se descartó: queda oculto (hereda el display:none por defecto de
     por-que-elegirnos.css), el span sigue en el HTML por si se retoma. */

  .pqe-item h3{ font-size: 15px; }
  .pqe-item-divider{ width: 20px; margin: 8px 0; }
  /* 13px, no 13.5px: mismo tamaño de "párrafo de tarjeta" en mobile que
     .problema-item p/.que-hacemos-card p (ver esos 2 más abajo/arriba). */
  .pqe-item p{ max-width: none; margin: 0; font-size: 13px; }

  /* "Para cada etapa de tu negocio" en mobile: la variante "barra única"
     (una fila con scroll horizontal, ver segmentos.css) se probó pero traía
     2 problemas de verdad — 1) sólo se veían 2-3 de los 6 segmentos sin
     scrollear, con nada que avisara que había más para el costado, y
     2) el auto-cycle (segmentos.js) puede activar un item que quedó fuera
     de vista (el pill sólo se mueve con transform, no hace scroll del
     contenedor), así que de golpe "no pasaba nada" en pantalla — se sentía
     trabado. Acá se resuelve de raíz: grid de 2 columnas x 3 filas, los 6
     entran juntos sin scroll. El pill deslizante en sí (pensado para
     recorrer una sola fila en X) se apaga, pero el panel de vidrio que lo
     contenía en desktop (fondo+blur+bisel+brillo, ver .segmentos-grid en
     segmentos.css) se MANTIENE unificado detrás de los 6 — no se parte en
     6 cajas sueltas, es la misma "barra única" pero envolviendo una grilla
     2x3 en vez de una fila. Cada chip se resalta con su propio borde/glow
     al activarse, mismo look que el pill pero fijo en su celda. */
  .segmentos{ padding: 122px 24px 0; }
  /* Mismo criterio que en desktop/tablet (ver .marcas-panel en
     segmentos.css): márgenes negativos que igualan el padding lateral de
     .segmentos en este ancho (24px acá). */
  .marcas-panel{ margin: 28px -24px 0; padding: 18px 24px 24px; }
  .segmentos-title{ font-size: 26px; margin-bottom: 28px; }
  .segmentos-grid{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
    padding: 10px;
    border-radius: 20px;
    /* El resto de las propiedades (background con el degradado diagonal,
       backdrop-filter, box-shadow del bisel, animation del brillo) se
       heredan tal cual de .segmentos-grid en segmentos.css — no se
       sobreescriben acá a propósito, así el panel de mobile es EXACTAMENTE
       el mismo vidrio que en desktop, sólo cambia display:flex→grid y el
       padding/border-radius para acomodar 2 columnas en vez de una fila. */
  }
  /* El pill (.segmento-highlight) y su barra de progreso interna quedan sin
     usar en este layout — display:none en vez de sacarlos del HTML, así
     segmentos.js sigue pudiendo posicionarlo/animarlo sin romper nada
     (mide y anima un elemento que simplemente no se pinta). */
  .segmento-highlight{ display: none; }
  .segmento-item{
    flex: none;
    width: auto;
    padding: 16px 10px;
    border-radius: 14px;
    border: 1px solid transparent;
    transition: background .3s ease, border-color .3s ease, box-shadow .3s ease;
  }
  /* Mismo fondo/borde/glow que tenía el pill deslizante en desktop
     (.segmento-highlight, ver segmentos.css) — acá en vez de un elemento
     que se mueve, cada celda "es" el pill cuando le toca estar activa. */
  .segmento-item.is-active{
    background: rgba(0,0,0,0.1);
    border-color: var(--blue-light);
    box-shadow: 0 0 0 1px rgba(111,149,255,0.25), 0 0 16px rgba(111,149,255,0.3);
  }
  .segmento-icon svg{ width: 26px; height: 26px; }
  .segmento-label{ font-size: 12.5px; }
  .segmentos-note{ margin-top: 28px; padding-top: 24px; font-size: 14px; }

  /* CTA final: título más chico y botones apilados a todo el ancho (mismo
     criterio que .hero-actions/.btn-primary acá abajo) en vez de la fila
     lado a lado de desktop/tablet, que en este ancho quedaría apretada. */
  .cta-final{ padding: 72px 24px; }
  .cta-final h2{ font-size: 26px; }
  /* 14px, no 15px: mismo tamaño de "párrafo de intro" que el resto de las
     secciones en mobile (.problema-intro p/.solucion-copy p/.segmentos-note,
     todas 14px acá) — ver el comentario de .problema-intro p más arriba. */
  .cta-final-sub{ font-size: 14px; margin-bottom: 28px; }
  .cta-final-actions{ margin-bottom: 36px; }
  .cta-final-trust{ gap: 12px 20px; padding-top: 24px; }

  /* Footer: las 3 columnas (contacto/acciones/navegación) no entran una al
     lado de la otra en una pantalla chica, así que se apilan centradas
     (mismo orden del HTML: contacto, acciones, navegación) en vez del
     layout de 3 columnas lado a lado de desktop/tablet. */
  /* border-radius un poco más chico (22px, era 28px en desktop/tablet) —
     el panel sigue sin padding lateral en .footer (ver css/footer.css),
     pegado a los 2 bordes también en mobile. Antes .footer tenía acá un
     padding-top de 32px (40px en desktop) — mismo fondo claro que el CTA
     final de arriba, así que era sólo espacio en blanco de más antes del
     panel oscuro, corriendo el contenido del CTA final para arriba de su
     centro real (pedido puntual: sacarlo). */
  .footer-panel{ padding: 40px 24px 28px; border-radius: 22px 22px 0 0; }
  /* Logo más chico (68px, era 96px) para no dominar tanto una pantalla
     angosta. */
  .footer-mark .footer-logo-img{ height: 68px; }
  .footer-mark .footer-tagline-img{ width: 260px; }
  .footer-row{
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 28px;
    margin-top: 32px;
    padding-top: 28px;
  }
  .footer-col-contact,
  .footer-col-nav{ align-items: center; text-align: center; }
}

@media (max-width: 430px){
  h1{ font-size: 42px; }
  .hero-sub{ font-size: 17px; }
  .hero-actions{ align-items: stretch; }
  .btn-primary{ width: 100%; justify-content: center; } /* botón principal a todo el ancho sólo en celulares chicos */

  /* Sólo en celulares chicos el logo completo se ve muy grande: se
     reemplaza por la versión ícono, más compacta. Acá es un cambio de
     breakpoint (al girar/cambiar de dispositivo), no una transición
     animada, así que alcanza con display + volver el ícono estático (en
     vez de absolute) en lugar del fundido que usa .is-compact en desktop. */
  .navbar-logo-mark{ height: 26px; }
  .navbar-logo-full{ display: none; }
  .navbar-logo-icon{ position: static; opacity: 1; transform: none; height: 26px; }
}

/* ---------- 13. Subpáginas de partners (Audaces/Vesto) ----------
   audaces.html / vesto.html (ver css/partner-page.css) no comparten
   ninguna otra sección de "/" salvo navbar/footer/cta-final (ya cubiertos
   arriba), así que sus propios ajustes de mobile van en un bloque aparte
   al final del archivo, en vez de mezclados entre los de las secciones de
   la landing principal. */
@media (max-width: 767px){
  /* min-height:680px de la versión desktop (ver css/partner-page.css)
     resetea acá: en mobile cada hero ya es angosto y apilado (el h1 solo
     ocupa más líneas todavía), forzar la misma altura fija dejaría una
     franja vacía enorme en la página más corta en vez de sólo un salto
     chico — peor remedio que la enfermedad en este ancho. */
  .partner-hero{ padding: 128px 24px 64px; min-height: 0; }
  /* Sólo acá se muestra: en desktop/tablet el navbar ya tiene "Inicio" a
     la vista (ver css/partner-page.css), este link es sólo para mobile,
     donde el navbar está colapsado detrás del botón hamburguesa. */
  .partner-back{ display: inline-flex; }
  .partner-hero h1{ font-size: 30px; }
  .partner-hero-actions{ flex-direction: column; gap: 20px; }
  .partner-offer{ padding: 64px 24px; }
  .partner-offer-grid{ grid-template-columns: 1fr; gap: 32px; }
  .partner-gallery{ padding: 8px 24px 64px; }
  .partner-gallery-inner{ grid-template-columns: 1fr; gap: 20px; }
  .partner-gallery-item img{ height: 220px; }
}
