/* Generado por tools/site-styles.mjs — no editar a mano. */

/* --------------------------------------------------------------------------
   Cabecera fija: las anclas del menu

   Con la cabecera pegada arriba, saltar a #contact dejaba el titulo de la
   seccion tapado por la propia cabecera. scroll-margin-top le reserva ese
   espacio al navegador cuando hace el salto.
   -------------------------------------------------------------------------- */
section[id],
footer[id] {
  scroll-margin-top: 96px;
}

/* --------------------------------------------------------------------------
   El diagrama de circulos en pantallas chicas

   La entrega responsive resolvia el diagrama escondiendolo: en <=860px hacia
   .om-venn-ring{display:none} y dejaba los tres textos uno debajo del otro. Se
   perdia justo lo que la seccion muestra —- que Pharma y Bienestar se solapan y
   que en la interseccion esta Longevidad.

   No alcanza con achicar el diagrama de escritorio: son dos circulos de 230px
   separados 420px, unos 650px de ancho total. Para entrar en un telefono habria
   que reducirlo a la mitad, y el texto de adentro quedaria en 6px.

   La solucion es girarlo: los mismos dos circulos, pero apilados en vertical y
   solapados 80px. Cada uno mantiene su tamano y su texto legible, y la
   interseccion sigue siendo el centro del dibujo.

   Sobre los selectores: el <style> del generador vive dentro del <body>, asi
   que va despues de esta hoja y le gana a cualquier empate de especificidad,
   !important incluido. Por eso las reglas de abajo califican de mas
   (".om-venn > .om-venn-ring" en lugar de ".om-venn-ring"): ganan por
   especificidad y no dependen del orden.
   -------------------------------------------------------------------------- */
@media (max-width: 760px) {
  div.om-venn {
    display: block !important;
    position: relative !important;
    height: 404px !important;
    width: 100% !important;
    max-width: 300px;
    margin: 0 auto !important;
    gap: 0 !important;
  }

  .om-venn > .om-venn-ring {
    display: block !important;
    position: absolute !important;
    width: 240px !important;
    height: 240px !important;
    left: 50% !important;
    right: auto !important;
    margin-left: -120px !important;
  }
  /* El primero es el coral (Pharma), el segundo el verde (Bienestar). */
  .om-venn > .om-venn-ring:nth-of-type(1) { top: 0 !important; }
  .om-venn > .om-venn-ring:nth-of-type(2) { top: 160px !important; }

  .om-venn > .om-venn-part {
    position: absolute !important;
    left: 50% !important;
    width: 190px !important;
    max-width: 190px !important;
    margin-left: -95px !important;
    text-align: center !important;
    padding: 0 !important;
  }
  .om-venn > .om-venn-part p { margin-left: auto !important; margin-right: auto !important; }

  /* Pharma & Life Sciences: mitad de arriba del circulo coral. */
  .om-venn > .om-venn-left { top: 55px !important; background: none !important; }

  /* Longevidad: en la interseccion. Conserva el fondo blanco degradado para
     que las lineas de los dos circulos no le crucen el texto por detras. */
  .om-venn > .om-venn-center {
    top: 173px !important;
    z-index: 2 !important;
    background: radial-gradient(circle, #fff 62%, rgba(255, 255, 255, 0) 100%) !important;
  }

  /* Bienestar: mitad de abajo del circulo verde. */
  .om-venn > .om-venn-right { top: 295px !important; background: none !important; }
}

/* --------------------------------------------------------------------------
   El mismo diagrama en escritorio: los textos van ADENTRO de los circulos

   En el telefono los tres textos estan cada uno dentro de su circulo, que es
   lo que hace legible el dibujo: se ve de que habla cada uno y que en el medio
   estan los dos a la vez. En escritorio no: "Pharma & Life Sciences" quedaba a
   20 px del borde izquierdo del contenedor y el circulo empieza recien a 208,
   asi que el rotulo flotaba a 38 px AFUERA de su propio circulo. Lo mismo del
   otro lado. El dibujo perdia lo unico que tiene para decir.

   POR QUE ADEMAS CRECEN LOS CIRCULOS
   ----------------------------------
   Con los 230 px que traia la entrega no entran. La cuenta: el circulo
   izquierdo va de C-115 a C+115 y el texto de "Longevidad" ocupa de C-90 a
   C+90, asi que del lado libre quedan 25 px para un rotulo de dos lineas. A
   300 px de diametro y 100 de solape, el hueco libre pasa a 145 px y el rotulo
   entra sin apretarse. La proporcion —texto ocupando poco mas de un tercio del
   circulo— queda como en la maqueta.

   El alto del contenedor sube de 280 a 320 para que los circulos no se corten.
   No hace falta posicionarlos: el align-items:center del contenedor los sigue
   centrando solo.
   -------------------------------------------------------------------------- */
@media (min-width: 761px) {
  /* De 761 a 860 el <style> del generador sigue creyendo que esto es un
     telefono: apila el contenedor, esconde los dos aros y saca a los rotulos
     de su posicion absoluta. Por eso este bloque repone TODO lo que aquel
     rompe, no solo las medidas. Arriba de 860 son valores que ya estaban
     puestos y no cambian nada. */
  div.om-venn {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0 !important;
    height: 320px !important;
    max-width: none !important;
    margin: 0 auto !important;
    transform: none !important;
  }

  .om-venn > .om-venn-ring {
    display: block !important;
    position: absolute !important;
    width: 300px !important;
    height: 300px !important;
    margin-left: 0 !important;
  }
  .om-venn > .om-venn-ring:nth-of-type(1) { left: calc(50% - 250px) !important; }
  .om-venn > .om-venn-ring:nth-of-type(2) { right: calc(50% - 250px) !important; }

  /* Centrados en vertical y corridos hacia el lado de afuera, que es la parte
     del circulo que "Longevidad" deja libre. */
  .om-venn > .om-venn-left,
  .om-venn > .om-venn-right {
    position: absolute !important;
    top: 50% !important;
    transform: translateY(-50%);
    width: 140px !important;
    max-width: 140px !important;
    text-align: center !important;
    padding: 0 !important;
    background: none !important;
    margin-left: 0 !important;
  }
  .om-venn > .om-venn-left { left: calc(50% - 235px) !important; right: auto !important; }
  .om-venn > .om-venn-right { right: calc(50% - 235px) !important; left: auto !important; }

  /* El del medio va en el flujo —- es lo que centra el dibujo—- y necesita
     recuperar el fondo blanco degradado que el generador le saca en mobile,
     sin el las lineas de los dos aros le cruzan el texto por detras. */
  .om-venn > .om-venn-center {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    margin-left: 0 !important;
    max-width: none !important;
    padding: 16px 20px !important;
    background: radial-gradient(circle, #fff 55%, rgba(255, 255, 255, 0) 100%) !important;
  }
}

/* --------------------------------------------------------------------------
   Los colores del diagrama de circulos

   Cada parte pasa a tener el color de su circulo en vez del azul de titulo que
   traia la entrega, y los dos trazos toman los colores de marca que definio
   Diseno. Con esto el rotulo y su circulo se leen como una sola cosa.

   Va fuera de las dos consultas de arriba porque aplica igual en las dos:
   telefono y escritorio dibujan el mismo diagrama, solo cambia como se acomoda.

   OJO CON EL CONTRASTE
   --------------------
   Sobre blanco, #354184 da 9,37 y pasa de sobra. Los otros dos no: #FF6652 da
   2,89 y #29BFAA da 2,30, contra los 4,5 que pide la norma para texto. Es el
   mismo caso que el coral de la marca, que el sitio ya sostiene por decision
   del autor. Queda anotado aca para que sea una decision y no un descuido.
   -------------------------------------------------------------------------- */
.om-venn > .om-venn-ring:nth-of-type(1) { border-color: #354184 !important; }
.om-venn > .om-venn-ring:nth-of-type(2) { border-color: #29BFAA !important; }

/* El !important es por el atributo style del propio elemento, que le gana a
   cualquier hoja externa. Solo el titulo: la bajada sigue en el gris de texto. */
/* --------------------------------------------------------------------------
   El corte de linea de los rotulos del diagrama

   "Farmacéutica y ciencias de la vida" no entra en dos lineas en la caja de
   140 px del escritorio —- para eso harian falta 186 —-, asi que van tres. Sin
   ayuda el navegador corta 120/106/33 y deja "vida" sola colgando.

   text-wrap:balance reparte los renglones parejos: 107/79/74, o sea
   "Farmacéutica / y ciencias / de la vida". Es una linea, no depende de medir
   nada, y si Diseno cambia el texto se reacomoda solo. Los navegadores que no
   lo entienden lo ignoran y cortan como hoy.
   -------------------------------------------------------------------------- */
.om-venn > .om-venn-part > p:first-child {
  text-wrap: balance;
}

.om-venn > .om-venn-left > p:first-child { color: #354184 !important; }
.om-venn > .om-venn-center > p:first-child { color: #FF6652 !important; }
.om-venn > .om-venn-right > p:first-child { color: #29BFAA !important; }

/* --------------------------------------------------------------------------
   El bloque activo del carrusel de "Asi funciona"

   La entrega traia la tarjeta 0 con el aspecto de seleccionada cableado a mano
   —- ver la correccion carrusel-tarjeta0-normal en tools/content-fixes.mjs —-,
   asi que "Motor conductual" se veia elegido siempre, aunque el carrusel
   estuviera mostrando otro. Ahora las cuatro arrancan iguales y el aspecto
   sigue al slide.

   POR QUE NO HACE FALTA JAVASCRIPT PARA ESTO
   ------------------------------------------
   El componente ya le escribe background:#FFF1EC a la activa y #fff a las
   otras. En el DOM eso queda literal como "rgb(255, 241, 236)", asi que
   alcanza con leerlo desde el selector. Sigue andando cuando el carrusel
   avanza solo, sin observar nada.

   El !important es obligatorio: el tamano y el color del h4 vienen en el
   atributo style del propio elemento, que le gana a cualquier hoja externa.

   La transicion va en TODOS los h4 y no dentro de la regla del activo: si
   viviera ahi, el efecto entraria animado y saldria de golpe.

   Todo cuelga de .om-af-desktop, que abajo de 860 px es display:none. En el
   telefono la seccion es otra —.om-af-mobile, una tarjeta por vez— y no la
   toca nada de aca.
   -------------------------------------------------------------------------- */
.om-af-desktop > div:first-child > div > h4 {
  transition: font-size 0.2s ease, color 0.2s ease;
}

/* Apagada, la tarjeta 0 trae un fondo propio (#FBFAF9) que las otras tres no
   tienen; sin esto se sigue notando cual es la primera. No se puede corregir
   desde content-fixes.mjs: ese valor vive en el <script> del componente, que el
   build extrae a js/index.logic.js ANTES de aplicar las correcciones. */
.om-af-desktop > div:first-child > div:first-child[style*="rgb(251, 250, 249)"] {
  background: #fff !important;
}

.om-af-desktop > div:first-child > div[style*="rgb(255, 241, 236)"] > h4 {
  font-size: 19px !important;
  color: #16233A !important;
}

/* El hover, solo donde hay un mouse de verdad.

   Sin la consulta, en una tablet el primer toque deja la tarjeta en :hover y no
   la suelta hasta que se toca otra cosa: el bloque quedaria agrandado sin ser
   el que se muestra. (hover: hover) excluye las pantallas tactiles, que es
   justo donde el gesto no existe y el toque ya hace de clic. */
@media (hover: hover) {
  .om-af-desktop > div:first-child > div:hover > h4 {
    font-size: 19px !important;
    color: #16233A !important;
  }
}

/* --------------------------------------------------------------------------
   Banner de la certificacion ISO

   Medidas del Figma (Frame 1261156394) verificadas pixel a pixel contra el PNG
   exportado. Coinciden todas salvo dos, donde manda el PNG:

     1. El hueco entre los dos sellos. El Figma dice 24,25 px, pero con ese
        valor los sellos suman 278,8 y su propio marco mide 263,55: quedo viejo
        de un resize. El real son 9 px, que es lo que cierra la cuenta
        (18,1 + 101,34 + 9 + 117,02 + 18,1 = 263,56).

     2. El titulo. El Figma lo exporta con text-align:center, pero en el PNG
        arranca en la misma x que el cuerpo: va a la izquierda.

   El boton va en Inter 700 y no en la Montserrat que pide el Figma: la home no
   descarga Montserrat, y sumarla para una palabra de ocho letras cuesta 35 KB.
   Inter 700 ya esta cargada y es la de todos los demas botones del sitio.
   -------------------------------------------------------------------------- */

/* El envoltorio existe para una sola cosa: ser el contenedor que miden las
   @container de abajo. El banner se apila cuando EL BANNER es angosto, no
   cuando lo es la pantalla, que es la condicion real. */
.om-iso-wrap {
  container-type: inline-size;
}

/* El sitio trae un box-sizing:border-box global, pero el banner no depende de
   el: con content-box el boton de 227 se dibuja de 275 y la pastilla se
   desarma. */
.om-iso-wrap,
.om-iso-wrap * {
  box-sizing: border-box;
}

.om-iso {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 23px 22px;
  background: linear-gradient(180deg, #FFDDD9 0%, #ECFFFC 100%);
  border-radius: 20px;
}

/* La pastilla blanca con los dos sellos. No se encoge: es la unica pieza con
   medidas propias y deformarla arruina los logos. */
.om-iso-sellos {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  width: 263.55px;
  height: 135.72px;
  padding: 12.2px 18.1px;
  background: #fff;
  border-radius: 81px;
  box-shadow: 0 0 14.93px rgba(25, 33, 61, 0.1);
}

/* El PNG del IQNET es opaco y sus esquinas son 252,254,255: un blanco apenas
   azulado que contra el blanco de la pastilla se ve como cuatro puntas
   cuadradas. El circulo esta inscripto justo en el cuadrado, asi que recortarlo
   al 50% saca las puntas y solo se lleva 0,4 px del borde antialiasado,
   invisible a 101 px. Al sello ISO no le hace nada —su tinta llega a 345 de un
   radio de 428— pero se lo aplica igual por si cambia alguno de los archivos. */
.om-iso-sellos img {
  display: block;
  flex: none;
  border-radius: 50%;
}
.om-iso-sellos img:first-child { width: 101.34px; height: 101.34px; }
.om-iso-sellos img:last-child { width: 117.02px; height: 117.02px; }

/* El bloque de texto absorbe el ancho sobrante. El Figma lo fija en 580 px y
   deja 66 px de aire a su derecha; el max-width reproduce eso en pantalla ancha
   y lo deja encogerse solo cuando hace falta. min-width:0 es obligatorio: sin
   el, un hijo flex no baja de su ancho de contenido y el texto desborda en vez
   de cortar. */
.om-iso-texto {
  flex: 1 1 auto;
  min-width: 0;
  max-width: 580px;
  margin-right: auto;
}

.om-iso-titulo {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 30px;
  line-height: 36px;
  letter-spacing: 0.384px;
  color: #FF6652;
  margin: 0 0 10px;
}

.om-iso-cuerpo {
  font-family: "Poppins", sans-serif;
  font-weight: 400;
  font-size: 20px;
  line-height: 28px;
  letter-spacing: 0.36px;
  color: #525353;
  margin: 0;
}

.om-iso-cta {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 227px;
  height: 52px;
  background: #FF6652;
  border-radius: 100px;
  font-family: "Inter", sans-serif;
  font-weight: 700;
  font-size: 16px;
  line-height: 18px;
  letter-spacing: -0.32px;
  color: #FFF7F6;
  text-decoration: none;
}
.om-iso-cta:hover { background: #E8492F; color: #FFF7F6; }

/* Apilado. El Figma no define el telefono: esta es la adaptacion obvia, misma
   jerarquia, una columna centrada y el boton a todo el ancho. */
@container (max-width: 860px) {
  .om-iso {
    flex-direction: column;
    gap: 20px;
    padding: 26px 20px;
    text-align: center;
  }
  .om-iso-texto { margin-right: 0; }
  .om-iso-titulo { font-size: 24px; line-height: 30px; }
  .om-iso-cuerpo { font-size: 16px; line-height: 24px; }
  .om-iso-cta { width: 100%; }
}

/* --------------------------------------------------------------------------
   Foco de los campos del formulario de contacto

   Marca cual es el campo que recibe el teclado. Los campos traen border:none,
   asi que sin esto el foco quedaba practicamente invisible: quien navega con
   Tab no sabia donde estaba parado.

   ALCANCE
   Solo el formulario de contacto. El resto de los controles del sitio conserva
   el indicador que dibuja el navegador por su cuenta.

   EL EFECTO
   Un halo difuminado, del estilo que usa X/Twitter, en vez de un anillo duro.
   Son tres capas de sombra: una nitida de 2 px pegada al campo, que es la que
   lo delimita, y dos difusas alrededor que dan el brillo. La transicion de
   0,3 s hace que aparezca sin sobresaltos.

   POR QUE TRES CAPAS
   El fondo de la seccion es un degradado que a la derecha llega a un turquesa
   claro, y ahi un halo puramente difuso se desvanecia. El anillo nitido pegado
   al campo se apoya en el blanco del propio campo, que no cambia, asi que se ve
   siempre; las capas de afuera aportan el brillo.

   No se toca el aspecto en reposo: los campos siguen sin borde, como los dejo
   Diseno. El halo solo existe mientras el campo tiene el foco.
   -------------------------------------------------------------------------- */
#contact input,
#contact textarea,
#contact button {
  transition: box-shadow 0.3s ease-in-out;
}

#contact input:focus-visible,
#contact textarea:focus-visible,
#contact button:focus-visible {
  outline: none;
  box-shadow:
    0 0 0 2px #FF6B4A,
    0 0 0 5px rgba(255, 107, 74, 0.28),
    0 0 12px 4px rgba(255, 107, 74, 0.6);
  position: relative;
  z-index: 1;
}

/* Los campos de texto tienen su propio radio; el halo lo sigue. */
#contact input:focus-visible,
#contact textarea:focus-visible {
  border-radius: 16px;
}

/* Quien pidio menos animacion recibe el halo igual, pero sin la transicion. */
@media (prefers-reduced-motion: reduce) {
  #contact input,
  #contact textarea,
  #contact button {
    transition: none;
  }
}

/* El halo necesita lugar para verse.
   La seccion de contacto usa overflow:hidden para recortar el degradado del
   fondo, y eso recortaba tambien el halo de los campos pegados al borde.
   El formulario se separa lo suficiente para que quepa. */
#contact form {
  padding: 6px;
  margin: -6px;
}

/* --------------------------------------------------------------------------
   Hover del menu superior

   Indicacion de Diseno: al pasar el mouse, el elemento del menu se apoya sobre
   una pastilla gris. El gris es #F5F5F5, tomado de la captura de referencia.

   EL RADIO VA EN REPOSO, NO EN :hover
   -----------------------------------
   La primera version ponia border-radius:24px dentro del :hover. Se veia bien
   al entrar y mal al salir: el fondo se desvanece en 0,18s, pero el radio no
   esta en la lista de propiedades con transicion, asi que al sacar el mouse
   volvia a 0 de golpe. El resultado era que el ultimo cuarto de segundo se veia
   una mancha gris CUADRADA desapareciendo debajo del texto — parecia un segundo
   elemento sin esquinas redondeadas, pero era el mismo enlace a mitad del
   desvanecido.

   Declararlo en reposo lo resuelve sin animar nada mas: la caja tiene las
   puntas redondeadas siempre y lo unico que cambia es el color. Con fondo
   transparente el radio no se ve, asi que en reposo no cambia nada.

   SOLO LAS OPCIONES DEL MENU
   --------------------------
   El selector se acota a "nav a". Antes era "#site-header a", que agarraba
   tambien al logotipo: como su caja abraza la imagen, el gris aparecia pegado
   al logo, sin el aire que tienen las opciones.

   El item activo y el boton Contacto traen su fondo en el atributo style, que
   le gana a esta hoja por especificidad: conservan el suyo. Antes se los
   excluia con :not([style*="FFF1EC"]), pero esa exclusion ya no funcionaba —el
   runtime del generador normaliza el atributo al renderizar y el hex pasa a
   rgb(255, 241, 236), asi que el selector dejo de coincidir—. Se saca para no
   dejar en el archivo una proteccion que no protege.

   No se toca el padding: cambiarlo moveria el resto del menu cada vez que el
   mouse pasa por encima.

   El menu desplegable de pantalla angosta no entra aca: es un menu tactil, y
   sus enlaces ya traen su propio border-radius:14px del generador.
   -------------------------------------------------------------------------- */
#site-header nav a {
  border-radius: 24px;
  transition: background-color 0.18s ease-out, color 0.18s ease-out;
}

#site-header nav a:hover {
  background-color: #F5F5F5;
}

/* --------------------------------------------------------------------------
   El fondo del hero en pantalla angosta

   QUE PASABA
   ----------
   Entre el boton "Conoce la plataforma" y el titulo "NUESTRA PLATAFORMA"
   quedaban 270 px de blanco. La causa no era el diseno: las tres reglas que
   Diseno escribio para el hero en mobile apuntaban a #inicio, y el build
   renombra ese id a #home. Quedaron sin aplicarse —- ver traducirAnchorsEnCss en
   tools/content-fixes.mjs, que ya lo corrige -— y con ellas se perdian el
   min-height:auto y las dos bandas decorativas del hero.

   POR QUE SE APAGAN LAS DOS BANDAS
   --------------------------------
   Con las reglas de vuelta en pie aparecian ::before y ::after: dos franjas de
   120 px con recortes del collage, una arriba y otra abajo. Partian el bloque
   en tres —- banda, texto sobre blanco, banda -— en vez de darle una imagen. Se
   apagan con content:none, que es lo que deja de generar el pseudo-elemento;
   con display:none el navegador igual lo crea.

   content:none no alcanza para que dejen de pesar. La regla del generador les
   deja el background-image puesto, y aunque el pseudo-elemento no se genere,
   Chrome igual pide las dos imagenes: medido en el sitio desplegado, 9,5 KB y
   dos pedidos en cada visita de telefono por dos bandas que nadie ve. Por eso
   va tambien background-image:none.

   Los dos archivos siguen publicandose en S3 —el CSS del generador los sigue
   nombrando y la deteccion de assets usados los ve—, pero ya no los descarga
   nadie. Son 9,5 KB en un bucket, no en el telefono del visitante.

   LA PANTALLA ENTERA
   ------------------
   Pedido de Diseno: la portada tiene que ocupar el alto completo del telefono.
   Con menos alto el bloque se ve cargado —titulo, frase y dos botones apretados
   uno contra otro— y ademas se asoma la seccion siguiente, que le saca a la
   portada lo unico que tiene que hacer: ser lo primero y lo unico.

   Se mide en svh y no en vh: vh es el alto con las barras del navegador
   ESCONDIDAS, asi que al entrar —cuando estan a la vista— la seccion es mas
   alta que la pantalla y el arte de abajo queda cortado. svh es el alto con las
   barras puestas, que es el estado en el que se ve la primera pantalla. Tampoco
   dvh, que cambia mientras se hace scroll y reacomodaria el bloque entero
   debajo del dedo.

   Se descuenta el alto de la cabecera, que va antes en el flujo: sin eso la
   primera pantalla mide cabecera + alto completo y la portada no entra.

   Con la seccion mas alta que su contenido, el contenido se centra en vertical.
   Los 120/60 px de padding que traia la entrega salen: con el centrado no
   separan, descentran.

   EL FONDO, EN DOS PIEZAS
   -----------------------
   Un alto que cambia en cada telefono no se puede cubrir con una imagen sola
   sin deformarla o sin recortarle justo los bordes, que es donde estan los
   circulos. Por eso el arte viene partido en dos —ver tools/hero-mobile-art.mjs
   para el detalle y la medida a pedir—: una anclada arriba y otra abajo, cada
   una escalada SOLO por el ancho.

   La clave es background-size: 100% auto. El 100% ata el ancho al de la
   pantalla y el auto deja que el alto salga de la proporcion. Ninguna de las
   dos se deforma ni se recorta nunca, midan lo que midan.

   Lo que queda entre las dos es blanco, y no se nota porque las dos piezas
   vienen degradadas a blanco en ese borde. Es tambien la franja donde queda el
   texto, que es lo que hace que se lea.

   POR QUE LA SECCION SUBE POR DEBAJO DE LA CABECERA
   -------------------------------------------------
   El margen negativo la arranca en el borde de arriba de la pantalla y el
   padding le devuelve ese espacio por dentro. Asi el arte de arriba empieza
   donde empieza la pantalla —la primera fila de circulos viene cortada al ras,
   se ve que la imagen sigue mas alla del borde— mientras el texto sigue
   arrancando debajo de la cabecera. La cabecera es sticky y flota por encima,
   sobre el blanco del centro del dibujo.

   El !important del padding y del margen no es capricho: los 110 px vienen de
   la regla del generador —- que ya usa !important -— y los 100 px del margen
   vienen en el atributo style de la propia seccion, que le gana a cualquier
   hoja.

   Todo esto es solo para pantalla angosta: en escritorio manda el collage
   interactivo y nada de esto aplica.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  section#home {
    /* El !important es obligatorio: la regla mobile del generador pone
       min-height:auto tambien con !important, y sin esto gana ella y la
       seccion vuelve a medir lo que mide su contenido. */
    min-height: 100vh !important;
    min-height: 100svh !important;
    margin-top: -62px !important;
    padding-top: 62px !important;
    padding-bottom: 0 !important;

    display: flex;
    align-items: center;

    background-image: url('/assets/hero-mobile-art-top.ec07adcf.webp'), url('/assets/hero-mobile-art-bottom.de18a41c.webp');
    background-position: top center, bottom center;
    background-size: 100% auto;
    background-repeat: no-repeat;
  }

  /* El envoltorio es el unico hijo que se ve —el collage esta apagado—, y sin
     ancho propio el flex lo encoge al de su texto y se pierde el centrado
     horizontal. */
  #home > div:first-child {
    width: 100%;
  }

  #home > div:first-child > div {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }

  section#home::before,
  section#home::after {
    content: none;
    background-image: none;
  }

  /* Los 100 px de aire entre el hero y la seccion siguiente eran mucho una vez
     que el bloque de arriba deja de terminar en blanco. */
  section#platform {
    margin-top: 40px !important;
  }
}

/* --------------------------------------------------------------------------
   Item marcado del menu superior

   Los colores son los que el generador le tenia puestos a "Inicio" a mano:
   fondo #FFF1EC y texto coral. Lo unico que cambia es que ahora la marca se
   mueve con el visitante en vez de quedarse clavada en la primera opcion.

   COMO SE ELIGE
   -------------
   /js/nav.50b5d303.js escribe en <html> el id de la seccion que se esta mirando, y estas
   reglas emparejan ese id con el href del enlace. El script no toca el enlace
   por una razon concreta: el runtime del generador rehace nodos del DOM en cada
   cambio de estado, y se llevaria puesta cualquier clase que le agreguemos. El
   href, en cambio, viene del marcado y sobrevive.

   Sin JavaScript no se marca ninguna opcion. Es una perdida aceptable: el menu
   sigue navegando y ninguna informacion depende de la marca.

   El color va con !important porque el enlace trae el suyo en el atributo
   style, que le gana a esta hoja. El fondo no lo necesita: esos enlaces no
   traen ninguno.

   Estas reglas le ganan al hover por especificidad —- dos atributos contra una
   pseudoclase —-, asi que pasar el mouse por la opcion marcada no la apaga.
   -------------------------------------------------------------------------- */
html[data-seccion="home"] #site-header nav a[href="#home"],
html[data-seccion="platform"] #site-header nav a[href="#platform"],
html[data-seccion="solutions"] #site-header nav a[href="#solutions"],
html[data-seccion="evidence"] #site-header nav a[href="#evidence"] {
  background-color: #FFF1EC;
  color: #FF6B4A !important;
}

/* --------------------------------------------------------------------------
   Hover de los botones

   Sin indicacion de Diseno, asi que el efecto es deliberadamente discreto: el
   boton sube un pixel, la sombra se abre un poco y el color se apaga apenas.
   Alcanza para que la mano sienta que el boton responde, sin que el ojo tenga
   que registrar un cambio.

   Los botones llevan la clase om-btn, que les pone el build (markButtons en
   build.mjs). Seleccionarlos por su atributo style no servia: el runtime del
   generador lo reescribe al renderizar y el selector dejaba de coincidir.

   Ni filter ni transform reflotan el layout: se resuelven en la capa de
   composicion, asi que el efecto no mueve nada alrededor.
   -------------------------------------------------------------------------- */
.om-btn,
#contact button {
  transition: transform 0.18s ease-out, box-shadow 0.18s ease-out, filter 0.18s ease-out;
}

.om-btn:hover,
#contact button:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(22, 35, 58, 0.14);
  filter: brightness(0.97);
}

/* Al presionar vuelve a su lugar: el boton "cede". */
.om-btn:active,
#contact button:active {
  transform: translateY(0);
  box-shadow: 0 1px 4px rgba(22, 35, 58, 0.12);
}

/* --------------------------------------------------------------------------
   Los telefonos del white-label: los tres en fila, llenando el ancho

   Van en una fila horizontal, como los dispuso Diseno. Lo que estaba mal era
   cuanto espacio usaban: cada mock mide 290px fijos y la entrega los encoge con
   zoom 0.42 hasta 860px y 0.3 hasta 480. A 0.3, en un telefono de 390, los tres
   ocupan 273px de los 326 disponibles: sobran 53 y las pantallas quedan mas
   chicas de lo necesario.

   El zoom se afina por banda, calculado para llenar el ancho en el extremo
   ANGOSTO de cada una —que es donde tiene que entrar— con la cuenta
   (ancho - 64 de padding - 12 de gaps) / 3 / 290:

     hasta 480px   0.34   (llena a 375; los tres pasan de 273 a 308px)
     481 a 600     0.46
     601 a 860     0.60

   Un valor por banda siempre desperdicia algo en el extremo ancho: CSS no
   permite dividir dos longitudes, asi que un zoom fluido no se puede escribir.
   Tres bandas alcanzan y el overflow-x:auto que ya trae la fila sigue siendo la
   valvula para pantallas mas angostas que 375.

   EL ORDEN
   --------
   La entrega invierte el bloque con order: los telefonos arriba y el panel de
   marca abajo. En el marcado el panel viene primero y el original no trae
   ninguna regla de order, asi que se anulan y manda el documento: primero los
   controles, despues el resultado.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  #white-label .om-brand-panel,
  #white-label .om-phones-row {
    order: initial !important;
  }
}

/* --------------------------------------------------------------------------
   El aire lateral en pantalla angosta

   32px por lado es generoso en escritorio y caro en un telefono: son 64 de 390.
   Se bajan a 20 en las secciones que lo traen, en la cabecera,
   en el pie y en el bloque del 53%, que venia con 48. La cabecera entra en la
   misma regla porque su pastilla tiene que alinear con el resto: con 32 quedaba
   24px mas angosta que todo lo que viene abajo, y se notaba.

   Quedan afuera las dos secciones a sangre —la portada y el fondo degradado del
   53%—, que tienen padding 0 a proposito: sumarles el lateral les cortaria el
   fondo.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  header[id],
  section[id]:not(#home):not(#evidence),
  footer[id] {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }

  /* La portada y el bloque del 53% van a sangre, asi que el lateral lo lleva
     su contenido: el primer hijo de la portada y el fondo degradado. */
  #home > div:first-child,
  .om-stats-bg {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }
}

@media (min-width: 340px) and (max-width: 359px) {
  .om-phones-row > .om-phone-mock { zoom: 0.331 !important; }
}
@media (min-width: 360px) and (max-width: 379px) {
  .om-phones-row > .om-phone-mock { zoom: 0.354 !important; }
}
@media (min-width: 380px) and (max-width: 399px) {
  .om-phones-row > .om-phone-mock { zoom: 0.377 !important; }
}
@media (min-width: 400px) and (max-width: 419px) {
  .om-phones-row > .om-phone-mock { zoom: 0.4 !important; }
}
@media (min-width: 420px) and (max-width: 439px) {
  .om-phones-row > .om-phone-mock { zoom: 0.422 !important; }
}
@media (min-width: 440px) and (max-width: 459px) {
  .om-phones-row > .om-phone-mock { zoom: 0.445 !important; }
}
@media (min-width: 460px) and (max-width: 479px) {
  .om-phones-row > .om-phone-mock { zoom: 0.468 !important; }
}
@media (min-width: 480px) and (max-width: 499px) {
  .om-phones-row > .om-phone-mock { zoom: 0.491 !important; }
}
@media (min-width: 500px) and (max-width: 519px) {
  .om-phones-row > .om-phone-mock { zoom: 0.514 !important; }
}
@media (min-width: 520px) and (max-width: 539px) {
  .om-phones-row > .om-phone-mock { zoom: 0.537 !important; }
}
@media (min-width: 540px) and (max-width: 559px) {
  .om-phones-row > .om-phone-mock { zoom: 0.56 !important; }
}
@media (min-width: 560px) and (max-width: 579px) {
  .om-phones-row > .om-phone-mock { zoom: 0.583 !important; }
}
@media (min-width: 580px) and (max-width: 599px) {
  .om-phones-row > .om-phone-mock { zoom: 0.606 !important; }
}
@media (min-width: 600px) and (max-width: 619px) {
  .om-phones-row > .om-phone-mock { zoom: 0.629 !important; }
}
@media (min-width: 620px) and (max-width: 639px) {
  .om-phones-row > .om-phone-mock { zoom: 0.652 !important; }
}
@media (min-width: 640px) and (max-width: 659px) {
  .om-phones-row > .om-phone-mock { zoom: 0.675 !important; }
}
@media (min-width: 660px) and (max-width: 679px) {
  .om-phones-row > .om-phone-mock { zoom: 0.698 !important; }
}
@media (min-width: 680px) and (max-width: 699px) {
  .om-phones-row > .om-phone-mock { zoom: 0.721 !important; }
}
@media (min-width: 700px) and (max-width: 719px) {
  .om-phones-row > .om-phone-mock { zoom: 0.744 !important; }
}
@media (min-width: 720px) and (max-width: 739px) {
  .om-phones-row > .om-phone-mock { zoom: 0.767 !important; }
}
@media (min-width: 740px) and (max-width: 759px) {
  .om-phones-row > .om-phone-mock { zoom: 0.79 !important; }
}
@media (min-width: 760px) and (max-width: 779px) {
  .om-phones-row > .om-phone-mock { zoom: 0.813 !important; }
}
@media (min-width: 780px) and (max-width: 799px) {
  .om-phones-row > .om-phone-mock { zoom: 0.836 !important; }
}
@media (min-width: 800px) and (max-width: 819px) {
  .om-phones-row > .om-phone-mock { zoom: 0.859 !important; }
}
@media (min-width: 820px) and (max-width: 839px) {
  .om-phones-row > .om-phone-mock { zoom: 0.882 !important; }
}
@media (min-width: 840px) and (max-width: 859px) {
  .om-phones-row > .om-phone-mock { zoom: 0.905 !important; }
}
@media (min-width: 860px) and (max-width: 860px) {
  .om-phones-row > .om-phone-mock { zoom: 0.928 !important; }
}

/* --------------------------------------------------------------------------
   El ancho de los botones en pantalla angosta

   En el telefono los botones venian del ancho de su texto: "Solicitar Demo"
   ocupaba 161 px de los 326 que hay disponibles, y "Conocé la plataforma" 213.
   Menos de la mitad de la pantalla para el elemento que se toca con el pulgar,
   en el unico dispositivo donde el area de toque importa de verdad.

   POR QUE width Y NO display:block
   -------------------------------
   Los botones vienen de la entrega con display distinto segun donde estan:
   inline-block adentro de un contenedor centrado, block adentro de uno de
   ancho completo. Pasarlos todos a block les sacaria el centrado a los
   primeros, porque un bloque no lo alinea el text-align del padre.

   Con width:100% sobre el inline-block, el boton ocupa el renglon entero y el
   text-align del padre deja de tener espacio libre que repartir: queda a la
   izquierda donde el texto va a la izquierda —la portada— y centrado donde el
   bloque va centrado. Cada boton sigue el alineamiento que ya tenia.

   POR QUE UN MAXIMO DE 480
   -----------------------
   El corte de este sitio para "mobile" son 860 px, no 480: es donde el collage
   se apaga, donde las tarjetas pasan a carrusel y donde entra el arte de la
   portada. Usar el mismo aca evita inventar un breakpoint mas para mantener.

   Pero a 860 px de ventana el contenedor mide casi 800, y un boton de 800 px
   ya no se lee como boton sino como banda. El tope lo deja crecer mientras
   acompana al pulgar y lo frena antes de eso.

   LA PORTADA
   ----------
   Sus dos botones viven en un flex horizontal. Ahi width:100% no los estira:
   se reparten el renglon. Se pasa a columna, que ademas es como estan en la
   maqueta de Diseno.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  .om-btn,
  #contact button {
    width: 100%;
    max-width: 480px;
    /* Con el boton angosto el texto llenaba el pill y el centrado no hacia
       falta. Ahora sobra ancho, y sin esto la etiqueta queda contra el borde
       izquierdo: el boton parece cortado. */
    text-align: center;
  }

  .om-hero-cta {
    flex-direction: column;
    align-items: stretch;
  }
}

/* --------------------------------------------------------------------------
   Plataforma: en el telefono la imagen va antes de la lista

   La seccion es una grilla de dos columnas: a la izquierda el texto —volanta,
   titulo, los cinco tildes y el boton—, a la derecha la foto de la app. Al
   apilarse en el telefono, la foto cae al final: el visitante lee las cinco
   afirmaciones y pasa el boton ANTES de ver de que producto se habla. En la
   maqueta la imagen va arriba de la lista, que es lo que corresponde: primero
   se muestra, despues se afirma.

   POR QUE display:contents
   ------------------------
   La foto no es hermana de la lista sino de la columna entera, asi que order
   sola solo puede mandarla arriba de TODO, volanta y titulo incluidos, y la
   seccion se quedaria sin decir de que habla.

   display:contents disuelve esa columna: sus cuatro hijos pasan a ser items de
   la misma grilla que la foto, y recien ahi se puede intercalar. El envoltorio
   es un <div> pelado, sin clase ni estilo, asi que no se pierde nada al
   disolverlo.

   El gap de la grilla pasa a 0 porque ahora separaria cada parrafo del
   siguiente con 64 px. La separacion que ya traia cada elemento en su margen
   alcanza; la unica que hay que reponer es la de la foto, que antes se la daba
   el gap.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  #platform .om-2col {
    gap: 0 !important;
  }

  #platform .om-2col > div:first-child {
    display: contents;
  }

  #platform .om-2col > div:first-child > p { order: 1; }
  #platform .om-2col > div:first-child > h3 { order: 2; }
  #platform .om-2col > div:last-child { order: 3; margin: 4px 0 32px; }
  #platform .om-2col > div:first-child > div { order: 4; }
  #platform .om-2col > div:first-child > a { order: 5; }
}

/* --------------------------------------------------------------------------
   Los dos titulos que en el telefono se cortaban donde no va

   "No sólo para vivir más, / sino para vivir mejor."
   ---------------------------------------------------
   El salto ya viene puesto en el marcado, pero la primera mitad no entraba en
   el renglon: a 29,25px mide 338 px y hay 326. Quedaba "más," sola en el medio
   de la frase, que es justo lo que el <br> venia a evitar.

   La entrega lo dimensiona con clamp(24px, 7.5vw, 32px). No se cambia el
   mecanismo, se corrige el coeficiente: con 6.7vw la primera linea entra desde
   los 320 px de ancho para arriba —a 320 mide 248 de 256 disponibles, a 390
   mide 302 de 326— y arriba de 478 el clamp llega a los 32 px de siempre. El
   titulo baja de 29 a 26 px en un telefono comun: se pierde menos de lo que se
   gana leyendo la frase entera.

   "Así funciona / Motivia por dentro."
   ------------------------------------
   Aca no hay <br> y el corte lo decidia el ancho disponible. A 390 px caia
   bien de casualidad: "Así funciona Motivia" mide 330 y no entra en 326. En un
   telefono de 430 si entra, y el titulo se parte en "Así funciona Motivia /
   por dentro.", que separa el sujeto del predicado.

   El salto se fuerza con un ::before de nueva linea sobre el <span> del
   "Motivia" coral, en vez de meter un <br> en el HTML: es la misma idea pero
   sin tocar el marcado de la entrega, y se apaga sola arriba de 860 px, donde
   el titulo entra completo en un renglon.

   Forzar el salto no alcanza: este titulo va en 32 px fijos y "Motivia por
   dentro." mide 308, asi que en un telefono de 320 px —donde hay 256— la
   segunda linea se volvia a partir. Se le pone el mismo clamp que al otro, con
   el coeficiente que hace entrar la linea mas larga: a 320 px queda en 25,6 y
   la frase mide 246; de 400 px para arriba vuelve a los 32 de siempre.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  h3.om-venn-title {
    font-size: clamp(21px, 6.7vw, 32px) !important;
  }

  #how-it-works h3 {
    font-size: clamp(24px, 8vw, 32px) !important;
  }

  #how-it-works h3 span::before {
    content: "\A";
    white-space: pre;
  }
}

/* --------------------------------------------------------------------------
   La portada en el telefono: centrada y del ancho de la pantalla

   El bloque de texto viene con max-width:460px y alineado a la izquierda. En
   escritorio es lo que corresponde —la mitad derecha se la lleva el collage—,
   pero en el telefono el collage no esta y esos 460 px dejan el titulo pegado
   al borde izquierdo con aire muerto a la derecha. Sin la segunda columna, lo
   que queda es un bloque suelto, y un bloque suelto va centrado.

   Con el ancho completo disponible las dos frases pueden crecer, que es lo que
   pide la maqueta: la portada tiene que pesar mas que el titulo de cualquier
   seccion de abajo.

   LOS DOS SALTOS
   --------------
   "Entre la indicación médica / y la vida real, hay un abismo." El corte no lo
   da el ancho: a este tamano "y" todavia entra en el primer renglon y la frase
   quedaria partida en "médica y / la vida real". Se fuerza con el ancla vacia
   que mete tools/content-fixes.mjs, misma idea que en "Así funciona".

   "Motivia es / el puente" ya viene con <br> en el marcado.

   EL PESO
   -------
   El <h2> entero venia en 700. La maqueta solo destaca la palabra que carga el
   concepto: "Motivia" en la pastilla y "puente". El "es el" que las une va en
   peso normal, y ese contraste es el que hace que se lean como una frase con
   dos acentos y no como cuatro palabras gritadas. El 700 vuelve por los dos
   <span>, que es justo donde van las dos palabras.

   POR QUE vw Y NO UN TAMANO FIJO
   ------------------------------
   Las dos lineas tienen que llegar cerca de los bordes en cualquier telefono.
   Con un tamano fijo, el que entra en 320 px deja la mitad del renglon vacio en
   430. El clamp lo ata al ancho y le pone los dos topes: abajo el minimo que
   sigue siendo legible, arriba el tamano de escritorio, que es donde el media
   query se apaga.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  #home > div:first-child > div {
    max-width: none !important;
    text-align: center;
  }

  #home h1 {
    font-size: clamp(17px, 5.7vw, 32px) !important;
  }

  .om-quiebre-mobile::before {
    content: "\A";
    white-space: pre;
  }

  #home h2 {
    font-size: clamp(34px, 13.5vw, 52px) !important;
    font-weight: 400 !important;
  }

  /* Los dos spans son "Motivia" —la pastilla— y "puente". */
  #home h2 span {
    font-weight: 700;
  }

  /* Los botones ya vienen en columna y con width:100%; sin esto el stretch los
     deja del ancho del contenedor pero el max-width de 480 los descentra. */
  .om-hero-cta {
    align-items: center;
  }
}

/* --------------------------------------------------------------------------
   Evidencia y Contacto: centrados en el telefono

   Las dos secciones son grillas de dos columnas alineadas a la izquierda. En
   escritorio tiene sentido: cada columna es una unidad y el ojo baja por un
   borde comun. Apiladas en el telefono deja de haber dos columnas, y lo que
   queda es un texto a la izquierda debajo de otro texto a la izquierda, sin la
   relacion que justificaba esa alineacion. La maqueta los muestra centrados.

   EL AIRE ENTRE LAS DOS MITADES DE EVIDENCIA
   ------------------------------------------
   El gap de 64 px separaba las dos columnas en horizontal. Al apilarse pasa a
   separarlas en vertical, y ahi son demasiados: "clínicamente significativa" y
   "Promedio -2kg" son dos partes del mismo dato y quedaban como dos bloques
   distintos. Con 24 px se leen como lo que son.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  .om-stats-bg .om-2col {
    text-align: center !important;
    gap: 24px !important;
  }

  #contact .om-2col > div:first-child {
    text-align: center !important;
  }
}

/* --------------------------------------------------------------------------
   "Asi funciona por dentro": el diagrama usaba la mitad del lugar que tiene

   La entrega mete el dibujo en una caja de 190 px de alto fija. Como los
   diagramas son casi cuadrados, esa altura tambien les fija el ancho: el de
   "Motor conductual" terminaba en 189 px dentro de una tarjeta de 326, con el
   texto de los circulos en 6 px. En un telefono no se lee.

   La caja pasa a 300 px de alto y el dibujo queda limitado por el ancho de la
   tarjeta, no por la altura: de 189 a 290 px, un 53% mas grande de lado y mas
   del doble de superficie. El texto queda cerca de los 9 px, que ya se lee.

   La altura sigue siendo fija —no auto— a proposito: los cuatro diagramas
   tienen proporciones distintas (uno es vertical, dos apaisados, uno cuadrado)
   y con altura automatica la tarjeta cambiaria de tamano en cada paso del
   carrusel.

   LAS FLECHAS BAJAN
   -----------------
   Estaban centradas en vertical sobre la tarjeta, o sea justo encima del
   dibujo. Con el dibujo chico caian en el aire de los costados y no molestaban;
   ocupando el ancho completo se le montarian encima, y estos diagramas casi no
   tienen margen blanco —entre 1% y 5% del ancho—, asi que taparian trazo.
   Se van al pie de la tarjeta, que ademas es donde el pulgar llega comodo.
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  /* La tarjeta del carrusel: unico hijo directo con borde. Su unico hijo <div>
     es la caja del diagrama —los demas son los dos <button>, el icono, el
     titulo y la bajada—. */
  .om-af-mobile > div:first-child {
    padding-bottom: 64px !important;
  }

  .om-af-mobile > div:first-child > div {
    height: 300px !important;
  }

  .om-af-mobile > div:first-child > button {
    top: auto !important;
    bottom: 14px !important;
    transform: none !important;
  }
}

/* --------------------------------------------------------------------------
   La linea legal del pie: copyright y enlaces separados por barras

   El marcado lo arma tools/footer-legal.mjs. Aca van la tipografia, los
   colores y el separador.

   LA TIPOGRAFIA Y LOS COLORES SON LOS DEL PIE DE apple.com
   --------------------------------------------------------
   Medidos ahi mismo: 12px, interlineado 16px, letter-spacing -0.12px (-0.01em)
   y peso normal, con tres niveles de negro sobre el fondo:

     copyright   rgba(0, 0, 0, .56)
     enlaces     rgba(0, 0, 0, .72)   mas oscuros: son lo accionable
     separador   rgba(0, 0, 0, .48)   mas claro: es lo decorativo

   Van como negro con alpha y no como hex porque asi el color sale del fondo
   sobre el que estan: los tres se mezclan con el #F4F3F1 del pie y quedan en
   su misma familia calida, sin agregar un gris ajeno a la paleta.

   Sobre ese fondo dan 4,81 y 8,79 de contraste — los dos pasan el 4,5 que pide
   la norma, incluso a 12px. La barrita da 3,65: no es texto sino una raya
   decorativa de 1px, que la norma no evalua.

   Este bloque es la unica parte del sitio con tipografia y colores prestados.
   Es a proposito y se limita a estas cuatro lineas de texto.

   EL SEPARADOR
   ------------
   Es un ::after de 1px, no un caracter "|". Asi no lo lee el lector de
   pantalla, no se copia al seleccionar la linea y no hay que acordarse de
   sacarlo del ultimo item a mano: eso lo hace :last-child.

   LOS 9px DEL ENLACE
   ------------------
   El padding lateral agranda el area clickeable del enlace hasta tocar el
   separador, y el margin negativo del mismo tamano lo devuelve a su lugar: el
   texto queda donde estaria sin padding, pero el blanco de alrededor tambien
   responde al click. Es el mismo truco que usa el pie de apple.com.
   -------------------------------------------------------------------------- */
#site-footer .om-footer-legal-copyright,
#site-footer .om-footer-legal-links {
  /* Los 12px de Apple. El interlineado y el espaciado van en unidades
     relativas —- 1,33 y -0.01em, que a 12px dan los 16px y los -0.12px que
     mide su pie— asi que la proporcion se mantiene si algun dia se cambia el
     cuerpo. */
  font-size: 12px;
  line-height: 1.33337;
  letter-spacing: -0.01em;
}

#site-footer .om-footer-legal-copyright {
  color: rgba(0, 0, 0, 0.56);
}

#site-footer .om-footer-legal-links {
  margin: 0;
  padding: 0;
  list-style: none;
}

#site-footer .om-footer-legal-links-item {
  position: relative;
  display: inline-block;
  margin-inline-end: 6px;
}

#site-footer .om-footer-legal-links-item::after {
  content: "";
  position: absolute;
  width: 1px;
  height: 10px;
  margin: 3px 0;
  background: rgba(0, 0, 0, 0.48);
}

#site-footer .om-footer-legal-links-item:last-child {
  margin-inline-end: 0;
}

#site-footer .om-footer-legal-links-item:last-child::after {
  display: none;
}

/* El padding de arriba y abajo es area de toque, no aire.
 *
 * Los tres enlaces median 16 px de alto. La guia de WCAG pide 24 para cualquier
 * cosa que se toque con el dedo, y estos estan en el pie: es donde el pulgar
 * llega peor y donde el error se paga volviendo a cargar una pagina legal que
 * nadie queria abrir.
 *
 * El margen negativo devuelve exactamente lo que suma el padding, asi que la
 * caja de linea sigue midiendo lo mismo y el pie no se mueve un pixel. Es la
 * misma idea que Apple ya usaba en horizontal —padding 0 9px con
 * margin-inline-start:-9px—, aplicada al otro eje. */
#site-footer .om-footer-legal-link {
  display: inline-block;
  padding: 5px 9px;
  margin-inline-start: -9px;
  margin-block: -5px;
  white-space: nowrap;
  color: rgba(0, 0, 0, 0.72);
  text-decoration: none;
}

/* La pagina en la que uno esta no es un enlace: es el mismo item en coral, tal
   como lo marcaba el generador. Es lo unico de este bloque que no viene de
   Apple —- alla no existe— y se conserva porque es del sitio. */
#site-footer .om-footer-legal-link-actual {
  color: #FF6B4A;
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   Hover de los enlaces del pie

   Van del gris de texto al azul oscuro de la marca. Es el mismo color de los
   titulos, asi que el enlace se "enciende" hacia algo que ya existe en la
   paleta en vez de introducir un color nuevo.
   -------------------------------------------------------------------------- */
#site-footer a {
  transition: color 0.18s ease-out, opacity 0.18s ease-out;
}

#site-footer a:hover {
  /* !important porque el color viene en el style inline del propio enlace, y un
     atributo style le gana a cualquier hoja externa. Sin esto la regla se
     aplicaba pero no cambiaba nada. */
  color: #16233A !important;
}

/* Los dos iconos sociales son enlaces con imagen: el color no los afecta, asi
   que ahi el aviso es que se aclaran apenas. */
#site-footer a:has(img):hover {
  opacity: 0.7;
}

/* El subrayado es lo que hace evidente que son enlaces.
   El cambio de color solo —de gris a azul— es demasiado sutil en un pie de
   pagina, justo donde estan los enlaces que alguien busca a proposito: terminos,
   privacidad, centro de seguridad.

   Va con !important por un motivo concreto: "Centro de seguridad" trae
   text-decoration:none en su atributo style y los otros dos no. Sin esto, el
   subrayado aparecia en dos de los tres enlaces —- un efecto a medias es peor que
   ninguno, porque parece que ese enlace no funciona.

   Los iconos sociales quedan afuera: son enlaces con una imagen adentro, no hay
   texto que subrayar, y ya tienen su propio aviso. */
#site-footer a:not(:has(img)):hover {
  text-decoration: underline !important;
  /* Separa el trazo de las colas de la "p" y la "y", que en "Politica de
     privacidad" se cruzan con el subrayado pegado. */
  text-underline-offset: 3px;
}

/* Quien pidio menos animacion no recibe ninguna transicion ni desplazamiento. */
@media (prefers-reduced-motion: reduce) {
  #site-header a,
  #site-footer a,
  .om-btn,
  #contact button {
    transition: none;
  }
  .om-btn:hover,
  #contact button:hover {
    transform: none;
  }
}

/* --------------------------------------------------------------------------
   Textos que no deben desbordar en pantallas angostas

   La bajada de "Asi funciona Motivia por dentro" venia con white-space:nowrap,
   que prohibe el salto de linea. En escritorio no se nota —la frase entra
   holgada en los 760 px del contenedor— pero en un telefono angosto empujaba la
   pagina a lo ancho: aparecia scroll horizontal y habia que arrastrar para leer
   el final.

   La correccion es de tres partes, todas CSS estandar:

     white-space: normal   devuelve el permiso de cortar la linea. Va con
                           !important porque el nowrap viene en el atributo
                           style del elemento, que le gana a esta hoja.

     text-wrap: balance    reparte las palabras entre las lineas para que queden
                           parejas, en vez de dejar una linea larga y otra con
                           dos palabras. Es lo pensado para titulos y bajadas
                           cortas. Donde no este soportado, el texto simplemente
                           corta como siempre: no hace falta fallback.

     overflow-wrap:        red de seguridad para el resto del sitio. Si alguna
     break-word            palabra sola —un correo largo, una URL— no entra en
                           el ancho disponible, se parte en vez de desbordar.

   Los botones conservan su nowrap a proposito: son textos cortos y ahi el corte
   quedaria mal.
   -------------------------------------------------------------------------- */
#how-it-works p[style*="nowrap"] {
  white-space: normal !important;
  text-wrap: balance;
}

p,
h1,
h2,
h3,
h4,
li {
  overflow-wrap: break-word;
}

/* Ninguna pagina debe poder desplazarse a lo ancho. Si algo vuelve a
   desbordar, se recorta aca en vez de romper la lectura del sitio entero. */
html,
body {
  overflow-x: clip;
}

/* Telefonos angostos: el diagrama se achica un poco para no tocar los bordes. */
@media (max-width: 360px) {
  div.om-venn { height: 368px !important; }
  .om-venn > .om-venn-ring { width: 216px !important; height: 216px !important; margin-left: -108px !important; }
  .om-venn > .om-venn-ring:nth-of-type(2) { top: 144px !important; }
  .om-venn > .om-venn-part { width: 172px !important; max-width: 172px !important; margin-left: -86px !important; }
  .om-venn > .om-venn-left { top: 46px !important; }
  .om-venn > .om-venn-center { top: 157px !important; }
  .om-venn > .om-venn-right { top: 268px !important; }
}
