/* ============================================================
   Bigbox Corpo — Home  ·  Editorial Luxury
   Fraunces (display + italic accents) + Hanken Grotesk (UI/body)
   Paleta cálida muestreada del PDF.  Aire, hairlines, grano, profundidad.
   ============================================================ */

:root {
  --paper:      #FFFFFF;   /* blanco (fondo) */
  --paper-2:    #F6F5F3;   /* off-white sutil (secciones alt) */
  --petrol:     #103E4D;   /* petróleo (dark) */
  --petrol-deep:#0B2C37;
  --petrol-soft:#1A4A57;
  --teal:       #50AEB8;   /* teal de marca (sobre claro) */
  --teal-deep:  #3C929B;
  --teal-bright:#6FC7D0;   /* teal legible sobre oscuro */
  --teal-tint:  #E3F3F5;
  --ink:        #1C2A30;   /* texto fuerte */
  --ink-soft:   #586A6F;   /* texto cuerpo */
  --ink-faint:  #93A0A2;   /* texto tenue */
  --line:       rgba(16,62,77,.14);
  --line-soft:  rgba(16,62,77,.08);
  --line-light: rgba(255,255,255,.16);
  --gold:       #C9A24B;

  --maxw: 1200px;
  --gutter: clamp(22px, 5vw, 72px);
  --radius: 18px;
  --radius-lg: 26px;

  --shadow-soft: 0 30px 70px -42px rgba(16,62,77,.40);
  --shadow-card: 0 24px 50px -30px rgba(16,62,77,.30);

  --sans:  "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --sans-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  font-family: var(--sans-body);
  background: var(--paper);
  color: var(--ink);
  font-size: 17px;
  line-height: 1.62;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
body::before {
  content: ""; position: fixed; inset: 0; z-index: 9999; pointer-events: none;
  background-image: var(--grain); opacity: .035; mix-blend-mode: multiply;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }
::selection { background: var(--teal); color: #fff; }

.container { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: clamp(52px, 7vw, 108px); position: relative; }

h1, h2, h3, h4 { font-family: var(--sans); font-weight: 500; letter-spacing: -.02em; line-height: 1.1; color: var(--ink); }
.display { font-size: clamp(2.3rem, 4.8vw, 4.4rem); line-height: 1.05; letter-spacing: -.025em; font-weight: 500; }
h2.title { font-size: clamp(1.85rem, 3.9vw, 3.2rem); font-weight: 500; }
.accent, em {
  font-family: var(--sans);
  font-style: normal;
  font-weight: 600;
  color: inherit;
}

.lead { font-family: var(--sans-body); font-size: clamp(1.05rem, 1.5vw, 1.22rem); line-height: 1.6; color: var(--ink-soft); max-width: 52ch; font-weight: 400; }

.btn {
  display: inline-flex; align-items: center; gap: 11px; font-family: var(--sans);
  font-weight: 600; font-size: .98rem; line-height: 1; border: 0; border-radius: 10px;
  padding: 17px 28px; transition: transform .25s cubic-bezier(.2,.8,.2,1), background .25s, color .25s, box-shadow .25s;
  white-space: nowrap;
}
.btn svg { width: 17px; height: 17px; transition: transform .25s cubic-bezier(.2,.8,.2,1); }
.btn:hover svg { transform: translateX(4px); }
.btn-primary { background: var(--teal); color: #fff; box-shadow: 0 14px 30px -14px rgba(80,174,184,.6); }
.btn-primary:hover { background: var(--teal-deep); transform: translateY(-2px); }
.btn-block { width: 100%; justify-content: center; padding: 18px; }

.nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; background: var(--paper); transition: background .35s, box-shadow .35s, border-color .35s; border-bottom: 1px solid transparent; }
.nav.scrolled { background: rgba(255,255,255,.9); backdrop-filter: saturate(150%) blur(14px); border-color: var(--line); }
.nav-inner { display: flex; align-items: center; justify-content: space-between; height: 80px; }
.brand { display: inline-flex; align-items: center; }
.brand img { display: block; height: 24px; width: auto; }
.nav-links { display: flex; align-items: center; gap: 36px; margin-left: auto; margin-right: clamp(20px, 2.6vw, 40px); }
.nav-links a { font-family: var(--sans); font-size: .92rem; font-weight: 500; color: var(--ink-soft); transition: color .2s; position: relative; }
.nav-links a:hover { color: var(--teal); }
.nav-dd { position: relative; }
.nav-dd__btn { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; cursor: pointer; font-family: var(--sans); font-size: .92rem; font-weight: 500; color: var(--ink-soft); padding: 0; transition: color .2s; }
.nav-dd__btn:hover, .nav-dd.open .nav-dd__btn { color: var(--teal); }
.nav-dd__chev { width: 13px; height: 13px; transition: transform .2s; }
.nav-dd.open .nav-dd__chev { transform: rotate(180deg); }
.nav-dd__menu { position: absolute; top: calc(100% + 16px); left: 0; min-width: 232px; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow-card); padding: 6px; display: none; flex-direction: column; gap: 2px; z-index: 60; }
.nav-dd.open .nav-dd__menu { display: flex; }
.nav-dd__menu a { display: flex; align-items: center; gap: 11px; padding: 10px 14px; border-radius: 8px; font-family: var(--sans); font-size: .92rem; font-weight: 500; color: var(--ink); white-space: nowrap; transition: background .15s, color .15s; }
.nav-dd__menu a:hover { background: var(--paper-2); color: var(--teal); }
/* abrir en hover (solo dispositivos con mouse); puente invisible para no perder el hover */
@media (hover: hover) {
  .nav-dd:hover .nav-dd__menu { display: flex; }
  .nav-dd:hover .nav-dd__chev { transform: rotate(180deg); color: var(--teal); }
  .nav-dd:hover .nav-dd__btn { color: var(--teal); }
  .nav-dd__menu::before { content: ""; position: absolute; left: 0; right: 0; top: -18px; height: 18px; }
}
/* El icono vive dentro de una pastilla con un lavado de teal: es lo que separa un
   menu de "texto con un glifo al lado" de una lista de objetos. El brillo interno de
   arriba y el borde apenas visible son los mismos recursos que ya usan la tarjeta del
   formulario y la pastilla dorada de fin de ano. */
.nav-dd__menu .dd-icw { width: 30px; height: 30px; flex: none; display: grid; place-items: center;
  border-radius: 9px; border: 1px solid rgba(19,149,163,.16);
  background: linear-gradient(158deg, rgba(19,149,163,.13) 0%, rgba(19,149,163,.05) 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7);
  transition: background .18s, border-color .18s; }
.nav-dd__menu a:hover .dd-icw { border-color: rgba(19,149,163,.3);
  background: linear-gradient(158deg, rgba(19,149,163,.2) 0%, rgba(19,149,163,.09) 100%); }
/* 16px y trazo 1,5: a este tamano lo que se lee es la silueta, y un trazo grueso la
   empasta. */
.nav-dd__menu .dd-ic { width: 16px; height: 16px; color: var(--teal); flex: none; }
/* Con la pastilla, el renglon necesita menos relleno propio. */
.nav-dd__menu a { padding: 8px 12px; gap: 12px; }
.nav-dd__menu { min-width: 262px; }

/* ---- "Fin de ano" en la barra ----
   Va primero, antes de Soluciones, y se distingue por una sola cosa: es el unico item
   con icono. Sin pastilla ni fondo — a la derecha ya esta "Solicitar propuesta", que es
   teal lleno, y cualquier superficie de mas atras del item convertia la barra en dos
   botones seguidos. El cotillon dorado alcanza para que se note de reojo.
   El texto va en el gris del resto de la barra y se enciende en teal al pasar, igual
   que Soluciones: el unico color propio del item es el del icono. */
.nav-fda { display: inline-flex; align-items: center; gap: 9px; }
/* 22px contra los 17 del resto: sin fondo, el icono es lo unico que carga el peso. */
.nav-fda__ic { width: 22px; height: 22px; flex: none; color: #C08A2E; transition: color .2s, transform .25s; }
/* El cono se levanta apenas, como si tirara el papel picado. Nada de rotarlo: un cono
   girado 45 grados deja de leerse como un cono. */
.nav-links a.nav-fda:hover .nav-fda__ic { color: #A8761F; transform: translate(1px, -2px); }
.nav-cta { display: flex; align-items: center; gap: 14px; }
.nav-sep { width: 1px; height: 22px; background: var(--line); }
.nav-country { position: relative; }
.nav-country__btn { display: inline-flex; align-items: center; gap: 7px; background: none; border: 0; cursor: pointer; font-family: var(--sans); font-size: .92rem; font-weight: 600; color: var(--ink); padding: 6px 2px; transition: color .2s; }
.nav-flag { width: 22px; height: 15px; border-radius: 3px; object-fit: cover; display: block; box-shadow: 0 0 0 1px rgba(0,0,0,.07); flex: none; }
.nav-country__chev { width: 14px; height: 14px; color: var(--ink-soft); transition: color .2s, transform .2s; }
.nav-country__btn:hover .nav-country__chev { color: var(--teal); }
.nav-country.open .nav-country__chev { transform: rotate(180deg); color: var(--teal); }
.nav-country__menu { position: absolute; top: calc(100% + 10px); right: 0; min-width: 186px; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow-card); padding: 6px; display: none; flex-direction: column; gap: 2px; z-index: 60; }
.nav-country.open .nav-country__menu { display: flex; }
.nav-country__menu a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 8px; font-family: var(--sans); font-size: .92rem; font-weight: 500; color: var(--ink); white-space: nowrap; transition: background .15s; }
.nav-country__menu a:hover { background: var(--paper-2); }
/* abrir en hover (igual que Soluciones); puente invisible para no perder el hover */
@media (hover: hover) {
  .nav-country:hover .nav-country__menu { display: flex; }
  .nav-country:hover .nav-country__chev { transform: rotate(180deg); color: var(--teal); }
  .nav-country__menu::before { content: ""; position: absolute; left: 0; right: 0; top: -14px; height: 14px; }
}
.nav .btn { padding: 12px 22px; }
.nav-toggle { display: none; background: none; border: 0; padding: 8px; }
.nav-toggle span { display: block; width: 24px; height: 1.5px; background: currentColor; color: var(--ink); margin: 6px 0; transition: .25s; }

.hero { position: relative; background: var(--paper); padding: 80px 0 0; }
.hero-banner { position: relative; overflow: hidden; border-radius: 0; min-height: clamp(320px, calc(100vh - 164px), 700px); min-height: clamp(320px, calc(100dvh - 164px), 700px); display: flex; align-items: center; }
.hero-photo { position: absolute; inset: 0; z-index: 0; }
.hero-photo > img, .hero-photo > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.hero-photo .hero-vid { background: #0A0C0E; }
.hero-scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8,9,11,.85) 0%, rgba(8,9,11,.64) 32%, rgba(8,9,11,.32) 58%, rgba(8,9,11,.06) 100%); }
.hero-photo .grain-over { position: absolute; inset: 0; background-image: var(--grain); opacity: .06; mix-blend-mode: overlay; }
/* video solo como enhancement: sin movimiento o en mobile cae al poster */
@media (prefers-reduced-motion: reduce) { .hero-vid { display: none; } }
.hero-inner { position: relative; z-index: 2; flex: 1; display: flex; flex-direction: column; align-items: flex-start; text-align: left; gap: 16px; max-width: 640px; margin-inline: 0; padding: clamp(28px, 3.6vw, 50px) clamp(28px, 4vw, 56px); }
.hero-mid { display: flex; flex-direction: column; align-items: flex-start; gap: clamp(26px, 3.1vw, 40px); }
.hero h1 { color: #fff; font-size: clamp(2.05rem, 3.9vw, 3.6rem); text-shadow: 0 3px 36px rgba(0,0,0,.52); }
.hero-inner.is-wide { max-width: 760px; }
.hero-inner.is-wide h1 { text-wrap: balance; }
.hero-inner.is-wide .lead { font-size: clamp(1rem, 1.25vw, 1.2rem); max-width: none; }
.hero h1 .accent { opacity: 1; font-weight: inherit; }
.hero .lead { color: #fff; font-size: clamp(1rem, 1.1vw, 1.08rem); line-height: 1.5; max-width: 52ch; margin-inline: 0; text-shadow: 0 2px 18px rgba(0,0,0,.58); }
.hero .lead strong { font-weight: 600; color: #fff; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: flex-start; margin-top: 8px; }

/* ===== Hero con formulario — VERSION B (/ar/b/) =====
   Motivo: el form del pie esta en el 77% de la pagina y solo lo alcanza el 13,3% de
   los visitantes; el hero lo ve el 100%. Ver docs/analisis-ab-clarity-2026-08.md.
   Todo va scopeado a .hero--split para no tocar la home actual. */
.hero--split .hero-banner { min-height: 0; align-items: stretch; }
/* Compacto a proposito: en una notebook (1536x864) el hero se comia el 86% de la
   pantalla y no dejaba ver que la pagina seguia. Los paddings verticales estan
   apretados contra los del resto del sitio para bajar el alto del banner. */
/* ⚠ EL NAV ES `position: fixed` Y MIDE 81px. Los 80px de padding-top del `.hero`
   base existen para eso. Aca se puede bajar, pero el texto arranca en
   padding-top + el padding-block del .hero-inner (minimo 24px), y esa suma NO
   puede quedar por debajo de 81 o el eyebrow se mete abajo de la barra.
   68 + 24 = 92px de piso. Ya paso: con 40px el eyebrow desaparecia en mobile. */
.hero--split { padding-top: 68px; }
.hero--split .hero-inner { max-width: none; width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) minmax(340px, 415px); gap: clamp(28px, 3.4vw, 60px); align-items: center; padding-block: clamp(24px, 2.4vw, 34px); }
.hero--split .hero-mid { gap: clamp(16px, 1.7vw, 22px); }
.hero--split .lead { font-size: clamp(1.02rem, 1.45vw, 1.22rem); }
.hero--split h1 { font-size: clamp(2.05rem, 3.75vw, 3.25rem); }
/* El color lo carga el eyebrow y el H1 queda blanco entero: es lo que hace legible
   un titular de 6 palabras sobre foto. Ademas "Regalos Corporativos" le da scent al
   anuncio, que puja por "regalos empresariales". */
.hero--split .hero-eyebrow { font-family: var(--sans); font-size: .78rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--teal-bright); margin: 0 0 -4px; text-shadow: 0 2px 14px rgba(0,0,0,.6); }
/* Degrade puro de izquierda a derecha: arranca en .62 (donde vive el H1) y termina
   en CERO. La derecha queda con la foto limpia — la legibilidad de la tarjeta la
   sostiene su propio vidrio (.44 + blur), no el scrim. En mobile no aplica: ahi el
   texto ocupa todo el ancho y se usa un scrim vertical (ver media query). */
.hero--split .hero-scrim { background: linear-gradient(90deg, rgba(8,9,11,.56) 0%, rgba(8,9,11,.30) 48%, rgba(8,9,11,0) 100%); }
/* `hero--dim` = el velo de antes, para los heroes cuyo VIDEO es claro. Sin el, el
   scrim liviano de arriba deja el H1 de team building en 3,39:1 (el minimo de texto
   grande es 3) y la bajada en 3,55 — y un video cambia de frame, asi que el peor
   caso no es el que se ve en una captura. Lo llevan viajes y team building de los 5
   paises; el resto anda comodo con el liviano. Medir con
   tools/_contraste_hero_todas.mjs antes de sacarselo a alguno. */
.hero--split.hero--dim .hero-scrim { background: linear-gradient(90deg, rgba(8,9,11,.66) 0%, rgba(8,9,11,.40) 48%, rgba(8,9,11,.04) 100%); }

/* Los 3 sellos van SIEMPRE en una sola fila (desktop y mobile): el texto se parte
   en 2 lineas con <br> para que quepan sin achicar la tipografia hasta lo ilegible. */
.hero--split .hero-trust { list-style: none; display: flex; flex-wrap: nowrap; gap: clamp(12px, 1.5vw, 24px); padding: 0; margin: 0; }
.hero--split .hero-trust li { display: flex; align-items: center; gap: 7px; font-family: var(--sans); font-size: clamp(.74rem, .84vw, .86rem); line-height: 1.3; color: rgba(255,255,255,.82); text-shadow: 0 2px 14px rgba(0,0,0,.5); }
.hero--split .hero-trust svg { width: 16px; height: 16px; flex: none; color: var(--teal-bright); }

/* La tarjeta compacta: 7 campos tienen que entrar sin volver interminable al hero. */
/* Sin la barra teal de arriba (`.form-card::before`): sobre la foto del hero la
   tarjeta ya se recorta sola y la linea le agregaba un borde de mas. La del
   formulario del pie NO se toca. */
.hero--split .hero-form::before { display: none; }
/* Padding: el mismo del formulario del pie (se hereda de .form-card, por eso no se
   pisa). Sin borde gris — solo una sombra leve que la despega de la foto. */
/* Vidrio OSCURO, no bloque negro: el tono es petrol (no negro puro) y la opacidad
   baja de .5 a .44, asi que la foto se sigue leyendo detras. El blur es el que
   sostiene la legibilidad cuando el fondo se aclara — sin el, con .44 el texto
   blanco se pierde contra los reflejos de la cocina. */
.hero--split .hero-form { margin: 0; max-width: none; border-radius: 10px; padding-inline: clamp(18px, 2vw, 28px); background: rgba(18,28,33,.44); border: 1px solid rgba(255,255,255,.14); box-shadow: 0 18px 50px -20px rgba(0,0,0,.5); -webkit-backdrop-filter: blur(24px) saturate(1.12); backdrop-filter: blur(24px) saturate(1.12); }
/* El tilde de campo valido va a la IZQUIERDA, en el hueco de 40px que dejo el icono
   apagado (`.fsteps .field .fic { display: none }`). El texto arranca en 40px, asi
   que no se pisan. Pisa tambien el `right: 40px` del select. */
.hero--split .hero-form .field .fok { left: 11px; right: auto; }
/* El asterisco ADELANTE del nombre del campo. */
.hero--split .hero-form .field .req { margin-left: 0; margin-right: 3px; }
/* AUTOCOMPLETADO de Chrome: pinta el campo entero de celeste (#E8F0FE) y el texto en
   negro — sobre la tarjeta oscura quedaba un bloque claro por campo. El inset
   box-shadow es la unica forma de taparlo (el `background` lo ignora), y va casi
   opaco a proposito: con menos alfa el celeste se sigue viendo abajo. */
.hero--split .hero-form .field input:-webkit-autofill,
.hero--split .hero-form .field input:-webkit-autofill:hover,
.hero--split .hero-form .field input:-webkit-autofill:focus,
.hero--split .hero-form .field select:-webkit-autofill {
  -webkit-text-fill-color: #fff;
  -webkit-box-shadow: inset 0 0 0 100px rgba(20,30,36,.94);
  box-shadow: inset 0 0 0 100px rgba(20,30,36,.94);
  caret-color: #fff;
}
.hero--split .hero-form .ttl { font-size: 1.12rem; margin-bottom: 16px; }
.hero--split .hero-form .sub { font-size: .82rem; margin-bottom: 13px; }
.hero--split .hero-form .field { margin-bottom: 9px; }
.hero--split .hero-form .field textarea { min-height: 58px; }
/* En 2 columnas la tarjeta deja ~130px utiles por etiqueta y "Email corporativo *"
   no entra: parte en dos lineas y se come el campo. Se achica la tipografia, se
   corre el icono y se prohibe el wrap. */
.hero--split .hero-form .form-row { gap: 14px; }
.hero--split .hero-form .field label { font-size: .84rem; left: 40px; white-space: nowrap; }
.hero--split .hero-form .field .fic { left: 13px; }
.hero--split .hero-form .field input,
.hero--split .hero-form .field select,
.hero--split .hero-form .field textarea { padding: 18px 32px 5px 40px; font-size: .9rem; }
.hero--split .hero-form .form-legal { margin-top: 10px; font-size: .7rem; }
/* El boton tambien aporta: son 6px menos de alto sin quedar chico para el dedo. */
.hero--split .hero-form .btn-block { padding-block: 13px; }

@media (max-width: 980px) {
  /* Mobile: primero la propuesta de valor, despues el form. Ponerlo arriba de todo
     seria pedir antes de dar; asi queda igual en ~15-20% de la pagina contra el 77%. */
  .hero--split .hero-inner { grid-template-columns: 1fr; gap: 26px; }
  /* mas aire arriba del eyebrow */
  .hero--split { padding-top: 100px; }
  /* Los sellos se ocultan ENTEROS en mobile: dejar solo los iconos no comunica nada
     (una caja, un pin y unos auriculares sueltos) y el pedido era reducir texto. */
  .hero--split .hero-trust { display: none; }
  /* El scrim horizontal NO sirve en mobile: el H1 ocupa todo el ancho, asi que dejar
     la derecha en cero se lo come. Va el vertical, el mismo del hero comun — hace
     falta el selector con `.hero--split` porque el generico pierde por especificidad. */
  .hero--split .hero-scrim { background: linear-gradient(180deg, rgba(8,9,11,.46) 0%, rgba(8,9,11,.35) 42%, rgba(8,9,11,.56) 100%); }
  .hero--split.hero--dim .hero-scrim { background: linear-gradient(180deg, rgba(8,9,11,.6) 0%, rgba(8,9,11,.48) 42%, rgba(8,9,11,.66) 100%); }
  /* Con el hero apilado el banner es mas alto y el copy queda centrado, o sea mas
     abajo que antes: el tramo del medio del degrade tiene que sostenerlo. */
  .hero--split.hero--stack .hero-scrim { background: linear-gradient(180deg, rgba(8,9,11,.5) 0%, rgba(8,9,11,.46) 50%, rgba(8,9,11,.58) 100%); }
  .hero--split.hero--stack.hero--dim .hero-scrim { background: linear-gradient(180deg, rgba(8,9,11,.62) 0%, rgba(8,9,11,.58) 50%, rgba(8,9,11,.68) 100%); }
  .hero--split .hero-trust { gap: 10px; }
  .hero--split .hero-trust li { font-size: .72rem; gap: 5px; }
  .hero--split .hero-trust svg { width: 14px; height: 14px; }
}

/* ===== Tira de clientes con logos (version B) =====
   Grises + opacidad para que la tira no le compita al hero.
   ⚠ Las alturas van por logo A PROPOSITO: 5 de los 9 son wordmarks sueltos y 4
   traen recuadro de color propio (Galicia, YPF, Supervielle, Amex). A la misma
   altura los recuadros pesan el doble que una palabra, asi que van mas chicos —
   se empareja el peso OPTICO, no el numero. */
.cli { height: 26px; width: auto; flex: none; filter: grayscale(1); opacity: .55; transition: opacity .25s; }
.cli--galicia, .cli--ypf { height: 20px; }
.cli--supervielle { height: 24px; }
.cli--nissan { height: 18px; }   /* wordmark muy ancho: a 26px medi­a 177px contra 41-80 del resto */
.cli--american-express { height: 34px; }  /* caja con texto fino: a 30px no se leia */
.cli--mercado-libre { height: 30px; }
.cli--royal-canin { height: 30px; }
/* Clientes de CL/MX/PE/UY. Mismo criterio que nissan: a 26px estos wordmarks
   pasaban los 130px y se comian el ritmo del marquee (el resto anda en 50-110). */
.cli--santander { height: 20px; }
.cli--oriflame { height: 21px; }
.cli--interbank { height: 21px; }
.cli--husqvarna { height: 22px; }
.marquee:hover .cli { opacity: .75; }
/* La tira NO frena con el mouse encima. Va scopeado a .pg-b (solo /ar/b/) porque
   `.marquee:hover { animation-play-state: paused }` es compartido y /ar/ es el brazo
   vivo del A/B: no se toca la pagina que esta midiendo. */
.pg-b .marquee:hover .marquee-track { animation-play-state: running; }

/* ===== Formulario en 3 pasos (hero de /ar/b/) =====
   Objetivo: bajar la cantidad de campos que se VEN de una. Los 7 siguen estando,
   pero repartidos 3/2/2. Ver docs/analisis-ab-clarity-2026-08.md. */
.fprog { list-style: none; display: flex; margin: 0 0 16px; padding: 0; position: relative; }
.fprog::before { content: ""; position: absolute; top: 11px; left: 11%; right: 11%; height: 2px; background: rgba(255,255,255,.16); }
.fprog__i { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 7px; position: relative; z-index: 1; }
.fprog__d { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-family: var(--sans); font-size: .72rem; font-weight: 600;
  background: #1b2024; color: rgba(255,255,255,.45); border: 2px solid rgba(255,255,255,.22); transition: background .25s, border-color .25s, color .25s; }
.fprog__l { font-family: var(--sans); font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.4); transition: color .25s; }
.fprog__i.is-on .fprog__d { background: var(--teal-bright); border-color: var(--teal-bright); color: #08090b; }
.fprog__i.is-on .fprog__l { color: #fff; }
.fprog__i.is-done .fprog__d { background: var(--teal-bright); border-color: var(--teal-bright); }
.fprog__i.is-done .fprog__l { color: rgba(255,255,255,.62); }

.fstep__t { font-family: var(--sans); font-size: 1.02rem; font-weight: 600; color: #fff; margin: 0 0 2px; }
.fstep__h { font-size: .8rem; color: rgba(255,255,255,.55); margin: 0 0 16px; }
.fstep[hidden] { display: none; }

/* --- Animaciones del avance --- */
/* El paso entra deslizando en la direccion del movimiento: da la sensacion de
   progreso en vez de un salto. `prefers-reduced-motion` ya las apaga globalmente. */
.fsteps[data-dir="next"] .fstep:not([hidden]) { animation: fstepNext .34s cubic-bezier(.2,.8,.2,1); }
.fsteps[data-dir="back"] .fstep:not([hidden]) { animation: fstepBack .34s cubic-bezier(.2,.8,.2,1); }
@keyframes fstepNext { from { opacity: 0; transform: translateX(18px); } }
@keyframes fstepBack { from { opacity: 0; transform: translateX(-18px); } }

/* La linea de progreso se llena al avanzar */
.fprog::after { content: ""; position: absolute; top: 11px; left: 11%; width: 0; height: 2px;
  background: var(--teal-bright); transition: width .42s cubic-bezier(.2,.8,.2,1); }
.fsteps[data-step="2"] .fprog::after { width: 39%; }
.fsteps[data-step="3"] .fprog::after { width: 78%; }

/* Exito: el paso cumplido cambia el numero por un tilde, con un rebote corto */
.fprog__i.is-done .fprog__d { color: transparent; position: relative; animation: dotPop .42s cubic-bezier(.2,1.5,.4,1); }
/* El tilde va en ABSOLUTO: el numero (aunque este en transparent) sigue ocupando su
   celda del grid, asi que un ::after normal caia en una segunda fila y se dibujaba
   por DEBAJO del circulo. */
.fprog__i.is-done .fprog__d::after { content: ""; position: absolute; top: 50%; left: 50%;
  width: 8px; height: 4px; border-left: 2px solid #08090b; border-bottom: 2px solid #08090b;
  transform: translate(-50%, -70%) rotate(-45deg); }
@keyframes dotPop { 0% { transform: scale(1); } 45% { transform: scale(1.3); } 100% { transform: scale(1); } }
.fnav { display: flex; flex-direction: column; align-items: center; gap: 10px; margin-top: 4px; }
.fback { background: none; border: 0; padding: 4px; font-family: var(--sans); font-size: .8rem; color: rgba(255,255,255,.55); cursor: pointer; transition: color .2s; }
.fback:hover { color: #fff; }

/* Campos como LINEA, no como cilindro: sin caja ni relleno, solo el subrayado.
   Se apaga el icono de la izquierda — con la linea sola el campo se lee mejor. */
.fsteps .field input, .fsteps .field select, .fsteps .field textarea {
  border: 0; border-bottom: 1px solid rgba(255,255,255,.26); border-radius: 10px;
  background-color: transparent; padding: 18px 26px 7px 0;
}
.fsteps .field input:focus, .fsteps .field select:focus, .fsteps .field textarea:focus {
  border-bottom-color: var(--teal-bright); box-shadow: none; background-color: transparent;
}
.fsteps .field .fic { display: none; }
.fsteps .field label { left: 0; }
/* Con el campo completo, el nombre del campo pasa a segundo plano: mas chico y en
   gris. Solo se enciende en teal mientras el campo tiene el foco. */
.fsteps .field input:focus ~ label, .fsteps .field input:not(:placeholder-shown) ~ label,
.fsteps .field textarea:focus ~ label, .fsteps .field textarea:not(:placeholder-shown) ~ label,
.fsteps .field select:focus ~ label, .fsteps .field select:valid ~ label {
  top: 7px; font-size: .6rem; letter-spacing: .07em; color: rgba(255,255,255,.5);
}
.fsteps .field input:focus ~ label, .fsteps .field textarea:focus ~ label,
.fsteps .field select:focus ~ label { color: var(--teal-bright); }
.fsteps .field.error input, .fsteps .field.error select, .fsteps .field.error textarea { border-bottom-color: #e2725b; }
.fsteps .field textarea { min-height: 52px; resize: none; }
/* la flecha vive pegada al borde derecho, no a 16px de un relleno que ya no existe */
.fsteps .field select { padding-right: 24px; background-position: right 2px center; }
.fsteps .form-row { gap: 18px; }

.logos { height: 84px; display: flex; align-items: center; border-bottom: 1px solid var(--line); overflow: hidden; }
.logos-row { display: flex; align-items: center; gap: clamp(22px, 3vw, 46px); }
.logos-label { flex: none; font-size: .72rem; letter-spacing: .22em; line-height: 1.35; text-transform: uppercase; color: var(--ink-faint); white-space: nowrap; }
.lbl-br { display: none; }
.marquee { position: relative; flex: 1; min-width: 0; overflow: hidden; -webkit-mask-image: linear-gradient(to right, #000 0%, #000 86%, transparent); mask-image: linear-gradient(to right, #000 0%, #000 86%, transparent); }
.marquee-track { display: flex; width: max-content; animation: marquee 26s linear infinite; animation-direction: reverse; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-group { display: flex; align-items: center; flex-shrink: 0; gap: clamp(44px, 6vw, 88px); padding-right: clamp(44px, 6vw, 88px); }
.marquee-group span { font-family: var(--sans-body); font-style: normal; font-size: .98rem; letter-spacing: .05em; color: #9AA0A0; font-weight: 300; white-space: nowrap; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .marquee-track { animation: none; } .marquee { overflow-x: auto; } }

.shead { display: flex; align-items: flex-end; justify-content: space-between; gap: 40px; margin-bottom: clamp(48px, 6vw, 80px); flex-wrap: wrap; }
.shead .max { max-width: 640px; }
.shead .title { margin-top: 4px; }
/* ---- Rotulo de seccion ----
   El corte que abre cada seccion: un rotulo chico con un punto teal, el h2 que
   responde lo que el rotulo plantea, y la bajada que dice como lo hacemos. Nacio en
   /ar/fin-de-ano/ y al pasar a las 5 homes se sube aca en vez de copiarse. */
.sec-eyebrow { display: inline-flex; align-items: center; gap: .7em; line-height: 1;
  font-family: var(--sans); font-size: .72rem; font-weight: 600; letter-spacing: .16em;
  text-transform: uppercase; color: var(--ink); margin: 0 0 14px; }
.sec-eyebrow .dot { width: 1.1em; height: 1.1em; border-radius: 50%; background: var(--teal); flex: none; }
/* La bajada del corte reparte los renglones en vez de tirar el sobrante al ultimo.
   Es lo mismo que se hizo en la tarjeta del formulario: una palabra sola abajo hace
   que el bloque se lea cortado, y estos titulos van centrados, donde mas se nota. */
.sec-eyebrow ~ .lead { text-wrap: balance; }
/* El aside de "como funciona" va centrado, pero su bajada tiene max-width y margenes
   en cero: quedaba pegada a la izquierda debajo de un h2 centrado. Las otras cabeceras
   centradas (shead-c, .max) ya traen los margenes automaticos. */
.steps-aside .sec-eyebrow ~ .lead { margin-inline: auto; }
/* El titulo del corte reparte los renglones. Sin esto "Un regalo para cada momento
   del / anio." dejaba una palabra sola abajo — el mismo huerfano que la bajada. */
.sec-eyebrow ~ h2 { text-wrap: balance; }
/* Aire entre el titulo y la bajada. Tres de las cabeceras no lo traian y la bajada
   quedaba pegada al h2. */
.sec-eyebrow ~ .lead { margin-top: 18px; }

/* ---- Cabeceras de seccion centradas (solo desktop) ----
   `.shead` es un flex pensado para titulo a la izquierda y algo a la derecha; hoy no
   tiene ese algo, asi que el bloque quedaba corrido a la izquierda contra secciones
   vecinas que si estaban centradas. En mobile se quedan a la izquierda: el ancho util
   es de una columna y el texto centrado se lee peor renglon a renglon. */
/* ---- El titulo del corte usa TODO el ancho ----
   `.shead .max` estaba capado en 640px y `.shead-c` en 760, pensados para un titulo
   corto con algo al lado. Con titulos de una frase eso los partia en dos renglones sin
   necesidad: "Cada envio lleva tu marca." pide 674px y tenia 640.
   El tope se saca del CONTENEDOR, no de la bajada: esa mantiene su medida legible, que
   es lo que el cap protegia en realidad. */
/* `.usecases .shead .max` cape en 880 y pesa (0,3,0). Empatarle no alcanza: esa regla
   vive MAS ABAJO en la hoja y gana por orden. Se sube a (0,4,0) con `.section`. */
.section .shead :is(.max, .shead-c):has(> .sec-eyebrow),
:is(.max, .shead-c):has(> .sec-eyebrow) { max-width: none; }
:is(.max, .shead-c):has(> .sec-eyebrow) .lead { max-width: 68ch; }

@media (min-width: 901px) {
  .shead { justify-content: center; text-align: center; }
  .shead .max, .shead .lead { margin-inline: auto; }
}
@media (min-width: 901px) {
  /* La bajada se centra sola dentro del contenedor, que ahora es mucho mas ancho. */
  :is(.max, .shead-c):has(> .sec-eyebrow) .lead { margin-inline: auto; }
}
/* Abajo de 901 las cabeceras van TODAS a la izquierda. No es capricho: en una columna
   de ~350px el texto centrado se lee peor renglon a renglon, sobre todo las bajadas de
   dos lineas. Antes quedaban mezcladas —cuatro centradas y tres a la izquierda— porque
   cada seccion traia su propio layout; esto las empareja.
   `:has(> .sec-eyebrow)` agarra al contenedor del rotulo sea cual sea su clase:
   .max, .shead-c, .steps-aside o .nums-aside. */
@media (max-width: 900px) {
  /* Con `:has(> .sec-eyebrow)` a secas la regla pesa (0,1,0) —`:has()` toma la
     especificidad de su argumento— y perdia contra `.shead-c` y compania. Se le suma
     el contenedor adelante para llegar a (0,2,0). */
  :is(.max, .shead-c, .steps-aside, .nums-aside):has(> .sec-eyebrow) { text-align: left; }
  .sec-eyebrow ~ .lead { margin-inline: 0; }
}

.exp-slider { position: relative; overflow: hidden; padding: 10px 0 42px; margin-bottom: -30px; -webkit-mask-image: linear-gradient(90deg, transparent, #000 2%, #000 98%, transparent); mask-image: linear-gradient(90deg, transparent, #000 2%, #000 98%, transparent); }
.exp-track { display: flex; width: max-content; animation: ucscroll 45s linear infinite; }
.exp-group { display: flex; flex-shrink: 0; gap: 18px; padding-right: 18px; }
@media (prefers-reduced-motion: reduce) { .exp-track { animation: none; } .exp-slider { overflow-x: auto; } }
@media (max-width: 560px) { .card-exp { flex-basis: 84vw; } }
#experiencias { padding-block: clamp(38px, 4.8vw, 70px); }
#experiencias .shead { display: block; position: relative; margin-bottom: clamp(20px, 2.6vw, 36px); }
#experiencias .shead .max { max-width: none; }
.card-exp { flex: 0 0 clamp(252px, 22vw, 306px); position: relative; display: flex; flex-direction: column; border-radius: var(--radius); overflow: hidden; background: var(--paper); border: 1px solid var(--line); box-shadow: 0 1px 3px -1px rgba(16,62,77,.13), 0 18px 40px -22px rgba(16,62,77,.45); transition: box-shadow .45s cubic-bezier(.2,.8,.2,1); isolation: isolate; }
.card-exp:hover { box-shadow: 0 3px 8px -2px rgba(16,62,77,.16), 0 28px 56px -24px rgba(16,62,77,.55); }
.card-exp img { display: block; width: 100%; aspect-ratio: 4/3; object-fit: cover; transition: transform .8s cubic-bezier(.2,.8,.2,1); }
.card-exp:hover img { transform: scale(1.05); }
.card-exp .card-badges { position: absolute; top: 14px; left: 14px; right: 14px; z-index: 3; display: flex; flex-wrap: wrap; gap: 7px; }
.card-exp .ribbon { position: absolute; z-index: 4; top: 20px; right: -52px; width: 190px; transform: rotate(45deg); text-align: center; padding: 7px 0;
  font-family: var(--sans); font-size: .66rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase;
  background: linear-gradient(135deg, #E8C979 0%, var(--gold) 52%, #A8842F 100%); color: #23201A;
  box-shadow: 0 10px 26px -10px rgba(0,0,0,.7), inset 0 1px 0 rgba(255,255,255,.45); }
.card-exp:has(.ribbon) .card-badges { right: 76px; }
.card-exp .badge-card { display: inline-flex; align-items: center; gap: 6px; font-family: var(--sans); font-size: .72rem; font-weight: 600; letter-spacing: .01em; color: #fff; padding: 6px 12px 6px 10px; border-radius: 999px; background: rgba(255,255,255,.15); border: 1px solid rgba(255,255,255,.3); backdrop-filter: blur(8px) saturate(140%); -webkit-backdrop-filter: blur(8px) saturate(140%); }
.card-exp .badge-card svg { width: 13px; height: 13px; }
.card-exp .badge-card.is-top { background: linear-gradient(135deg, var(--teal-bright) 0%, var(--teal) 55%, var(--teal-deep) 100%); border-color: transparent; color: #fff;
  font-size: .66rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; padding: 7px 13px 7px 11px;
  box-shadow: 0 10px 26px -9px rgba(80,174,184,.9), inset 0 1px 0 rgba(255,255,255,.45); }
.card-exp .badge-card.is-top svg { width: 14px; height: 14px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.3)); }
.card-exp .badge-card.is-outline { background: transparent; border-color: rgba(255,255,255,.5); backdrop-filter: none; -webkit-backdrop-filter: none; font-weight: 500; }
.card-exp .body { padding: 17px 18px 20px; color: var(--ink); }
.card-exp .tag { font-family: var(--sans); font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-faint); margin-bottom: 9px; }
.card-exp h3 { font-family: var(--sans); font-size: 1.1rem; line-height: 1.22; color: var(--ink); font-weight: 600; letter-spacing: -.01em; }
.card-exp .desc { font-family: var(--sans-body); font-size: .8rem; line-height: 1.45; color: var(--ink-soft); margin-top: 7px; }

.soluciones .shead { display: block; position: relative; text-align: center; margin-bottom: clamp(28px, 3.4vw, 48px); }
.soluciones .shead .max { max-width: none; margin: 0 auto; }
.soluciones .shead .lead { margin-inline: auto; }
.sol-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: minmax(200px, 1fr); gap: 16px; }
.sol-tile { position: relative; overflow: hidden; border-radius: var(--radius); isolation: isolate; display: flex; flex-direction: column; box-shadow: var(--shadow-card); transition: transform .25s, box-shadow .25s; }
.sol-tile:hover { transform: translateY(-4px); box-shadow: var(--shadow-soft); }
.sol-tile > img, .sol-tile > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; background: #12161A; transition: transform .8s cubic-bezier(.2,.8,.2,1); }
.sol-tile:hover > img, .sol-tile:hover > video { transform: scale(1.05); }
.sol-tile::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(to top, rgba(9,24,30,.95) 6%, rgba(9,24,30,.5) 52%, rgba(9,24,30,.06) 100%); }
.sol-tile__body { position: relative; z-index: 2; margin-top: auto; padding: clamp(18px, 1.8vw, 24px); color: #fff; }
.sol-ic { width: 42px; height: 42px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.16); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); color: #fff; margin-bottom: 12px; flex: none; }
.sol-ic svg { width: 22px; height: 22px; }
.sol-tile h3 { font-family: var(--sans); font-size: 1.16rem; font-weight: 600; letter-spacing: -.01em; color: #fff; margin-bottom: 7px; }
.sol-tile p { font-family: var(--sans-body); font-size: .9rem; line-height: 1.5; color: rgba(255,255,255,.86); }
.sol-tile--wide { grid-column: span 2; }
.sol-tile--feat { grid-column: span 2; grid-row: span 2; }
.sol-tile--feat .sol-tile__body { padding: clamp(26px, 2.8vw, 40px); }
.sol-tile--feat .sol-ic { width: 48px; height: 48px; }
.sol-tile--feat h3 { font-size: clamp(1.5rem, 2.3vw, 2rem); margin-bottom: 11px; }
.sol-tile--feat p { font-size: 1.02rem; line-height: 1.55; max-width: 44ch; }
.sol-tile--feat b { font-weight: 600; }
@media (max-width: 900px) {
  .sol-grid { grid-template-columns: repeat(2, 1fr); }
  .sol-tile--feat { grid-row: span 1; min-height: 320px; }
}
@media (max-width: 540px) {
  .sol-grid { grid-template-columns: 1fr; }
  .sol-tile--feat, .sol-tile--wide { grid-column: span 1; }
  .sol-tile { min-height: 230px; }
  .sol-tile--feat { min-height: 300px; }
}

.shead-c { text-align: center; max-width: 760px; margin: 0 auto clamp(34px, 4.4vw, 54px); }
.shead-c .lead { margin: 16px auto 0; }
.formatos .shead-c { max-width: none; }
.fmt-groups { display: flex; flex-direction: column; gap: clamp(26px, 3.4vw, 42px); max-width: 880px; margin-inline: auto; }
.fmt-group { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: clamp(20px, 2.6vw, 34px); box-shadow: var(--shadow-card); }
.fmt-group__ttl { display: flex; align-items: center; gap: 13px; font-family: var(--sans); font-size: clamp(1.35rem, 1.9vw, 1.65rem); font-weight: 600; letter-spacing: -.015em; color: var(--ink); margin-bottom: 22px; }
.fmt-group__ic { width: 42px; height: 42px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; background: var(--teal-tint); color: var(--teal); flex: none; }
.fmt-group__ic svg { width: 22px; height: 22px; }
.bento { display: flex; gap: clamp(12px, 1.4vw, 18px); }
.bento--stack { flex-direction: column; }
.bento--stack .cell { flex-grow: 0; }
.bento .cell { flex-grow: var(--ar); flex-basis: 0; min-width: 0; display: flex; flex-direction: column; }
.bento .cell img { width: 100%; height: auto; display: block; border-radius: var(--radius); }
.bento figcaption { order: -1; padding: 0 2px 11px; text-align: left; font-family: var(--sans); font-size: .98rem; font-weight: 600; letter-spacing: -.01em; color: var(--ink); }
@media (max-width: 640px) { .bento { flex-direction: column; } .bento .cell { flex-grow: 0; } }

.nums { background: var(--paper-2); }
.section.nums { padding-block: clamp(38px, 5vw, 68px); }
.nums-grid { display: grid; grid-template-columns: .62fr 1.38fr; gap: clamp(32px, 5vw, 64px); align-items: center; }
.nums-aside .title { margin-bottom: clamp(18px, 2.4vw, 28px); }
.nums-visual { position: relative; width: 100%; max-width: 250px; aspect-ratio: 1; margin: 0 auto; }
.nums-ring { position: absolute; border: 1px solid var(--line); border-radius: 50%; }
.nums-ring.r1 { inset: 6%; }
.nums-ring.r2 { inset: 22%; }
.nums-photo { position: absolute; aspect-ratio: 1; border-radius: 50%; overflow: hidden; box-shadow: var(--shadow-card); border: 3px solid var(--paper-2); }
.nums-photo img { width: 100%; height: 100%; object-fit: cover; }
.nums-photo.pa { width: 28%; top: -2%; left: 38%; }
.nums-photo.pb { width: 23%; top: 16%; right: 0; }
.nums-photo.pc { width: 31%; bottom: 2%; left: 32%; }
.nums-photo.pd { width: 21%; bottom: 18%; left: 0; }
.nums-photo.pe { width: 17%; top: 30%; left: 12%; }
.nums-cards { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; }
.num-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(16px, 1.9vw, 24px); }
.num-card:nth-child(1), .num-card:nth-child(2) { grid-column: span 3; }
.num-card:nth-child(3), .num-card:nth-child(4), .num-card:nth-child(5) { grid-column: span 2; }
.num-card b { font-family: var(--sans); display: block; font-size: clamp(1.9rem, 3.5vw, 2.8rem); font-weight: 600; letter-spacing: -.025em; color: var(--teal); line-height: 1; }
.num-card .lab { display: block; font-family: var(--sans); font-size: .95rem; font-weight: 500; color: var(--ink); margin-top: 12px; }
.num-card .desc { display: block; font-family: var(--sans-body); font-size: .84rem; color: var(--ink-soft); margin-top: 4px; }
@media (max-width: 860px) { .nums-grid { grid-template-columns: 1fr; } .nums-visual { max-width: 230px; } }
@media (max-width: 520px) { .nums-cards { grid-template-columns: 1fr 1fr; } .num-card:nth-child(1), .num-card:nth-child(2), .num-card:nth-child(3), .num-card:nth-child(4), .num-card:nth-child(5) { grid-column: span 1; } }

.problem { background: var(--petrol); color: #fff; overflow: hidden; }
.problem::before { content: ""; position: absolute; inset: 0; background-image: var(--grain); opacity: .05; mix-blend-mode: overlay; pointer-events: none; }
.problem h2.title { color: #fff; max-width: 20ch; }
.section.usecases { padding-block: clamp(32px, 4.2vw, 60px); }
.usecases .shead { display: block; position: relative; text-align: center; margin-bottom: clamp(12px, 1.6vw, 22px); }
.usecases .shead .max { max-width: 880px; margin: 0 auto; }
.usecases .shead .lead { margin-inline: auto; }
@keyframes ucfade { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes ucscroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }

.usecases .uc-row { display: flex; gap: 10px; height: clamp(360px, 40vw, 520px); margin-top: clamp(22px, 3vw, 36px); }
.uc-col { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; border-radius: 18px; cursor: pointer; transition: flex-grow .55s cubic-bezier(.22,.61,.36,1); }
.uc-col__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease, filter .45s ease; }
.uc-col::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(10,12,14,.88) 0%, rgba(10,12,14,.34) 44%, rgba(10,12,14,.86) 100%); transition: background .4s; }
/* Desplegado se ve mas la foto: el gradiente afloja arriba y abajo. El texto
   sigue siendo blanco, asi que el contraste se midio, no se estimo. */
.uc-col__inner { position: absolute; inset: 0 0 auto 0; z-index: 1; padding: clamp(18px, 1.8vw, 28px); color: #fff; }
.uc-col__cta { display: inline-flex; align-items: center; gap: 8px; margin-top: 16px; font-family: var(--sans); font-weight: 600;
  font-size: .88rem; color: var(--teal-bright); text-decoration: none; text-shadow: 0 2px 12px rgba(0,0,0,.5); transition: gap .25s, color .2s; }
.uc-col__cta svg { width: 16px; height: 16px; }
.uc-col__cta:hover { gap: 13px; color: #fff; }
.uc-col__inner h3 { color: #fff; font-family: var(--sans); font-weight: 600; font-size: clamp(1.05rem, 1.35vw, 1.28rem); line-height: 1.18; text-wrap: balance; text-shadow: 0 2px 14px rgba(0,0,0,.55); margin: 0; transition: font-size .45s cubic-bezier(.22,.61,.36,1); }
.uc-col__body { max-height: 0; opacity: 0; overflow: hidden; transition: max-height .55s cubic-bezier(.22,.61,.36,1), opacity .4s ease, margin-top .4s ease; }
.uc-col__desc { margin: 0; max-width: 56ch; color: rgba(255,255,255,.92); font-family: var(--sans-body); font-size: .95rem; line-height: 1.5; text-shadow: 0 1px 10px rgba(0,0,0,.5); }
/* El CTA va DEBAJO de las miniaturas, no debajo del copy: por eso la <ul> y el link
   viven juntos en .uc-col__foot, que es el que se posiciona y se despliega. */
.uc-col__foot { position: absolute; inset: auto 0 0 0; z-index: 1; padding: clamp(18px, 1.8vw, 28px); max-height: 0; opacity: 0; overflow: hidden; transition: max-height .55s cubic-bezier(.22,.61,.36,1), opacity .4s ease; }
.uc-col__list { color: #fff; list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; }
.uc-col__list li { position: relative; aspect-ratio: 4/3; display: flex; align-items: flex-end; border-radius: 14px; overflow: hidden; border: 1px solid rgba(255,255,255,.16); box-shadow: 0 12px 30px -14px rgba(0,0,0,.85); transition: transform .3s cubic-bezier(.2,.8,.2,1), border-color .3s; }
.uc-col__list li::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(6,8,10,.96) 0%, rgba(6,8,10,.84) 32%, rgba(6,8,10,.16) 72%, rgba(6,8,10,0) 100%); }
.uc-col__list li:hover { transform: translateY(-3px); border-color: rgba(255,255,255,.42); }
.uc-col__list img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.5) brightness(.66); transition: filter .3s; }
.uc-col__list li:hover img { filter: saturate(.8) brightness(.82); }
.uc-col__list span { position: relative; z-index: 1; padding: 12px 14px; font-family: var(--sans); font-size: clamp(.86rem, .95vw, 1rem); font-weight: 500; line-height: 1.24; text-transform: uppercase; letter-spacing: .06em; text-shadow: 0 1px 8px rgba(0,0,0,.85); }
@media (hover: hover) and (min-width: 901px) {
  .usecases .uc-row:hover .uc-col { flex-grow: .5; }
  .usecases .uc-row .uc-col:hover { flex-grow: 3.4; }
  /* solo el zoom: el oscurecimiento queda IGUAL desplegado y sin desplegar */
  .uc-col:hover .uc-col__bg { transform: scale(1.05); }
  .uc-col:hover .uc-col__body { max-height: 12em; opacity: 1; margin-top: 10px; }
  .uc-col:hover .uc-col__inner h3 { font-size: clamp(1.35rem, 1.9vw, 1.82rem); }
  .uc-col:hover .uc-col__foot { max-height: 27em; opacity: 1; }
  .uc-row:hover .uc-col:not(:hover) .uc-col__inner h3 { writing-mode: vertical-rl; white-space: nowrap; font-size: clamp(.95rem, 1.2vw, 1.12rem); }
}
@media (max-width: 900px) {
  .usecases .uc-row { flex-direction: column; height: auto; gap: 12px; }
  .uc-col { flex: none; min-height: 0; cursor: pointer; }
  /* el oscurecido lo hace solo el gradiente: reemplaza a filter: brightness(.6) saturate(.9), que
     forzaba un pase de filtro por pixel en cada paint. Alphas equivalentes (dif. medida: 0,2%). */
  /* Era .94 plano: la foto no se veia. Se usa el mismo gradiente que desktop, con el
     medio mas claro. El contraste del h3 y del copy se midio en los dos estados. */
  /* Era .94 plano: la foto no se veia. Ojo que en mobile la tarjeta CERRADA es baja y
     el titulo cae en el medio del gradiente: si ahi aclara, el texto queda sobre lo
     que haya en la foto (una remera blanca lo dejaba en 1,34:1). Por eso la parte
     alta se mantiene ~.8 y recien afloja abajo, donde van las miniaturas — que traen
     su propio velo. */
  .uc-col::after { background: linear-gradient(to bottom, rgba(8,10,12,.84) 0%, rgba(8,10,12,.79) 58%, rgba(8,10,12,.52) 80%, rgba(8,10,12,.82) 100%); }
  .uc-col__inner { position: relative; inset: auto; padding: clamp(20px, 5vw, 28px); }
  .uc-col__inner h3 { writing-mode: horizontal-tb; white-space: normal; font-size: clamp(1.15rem, 4.6vw, 1.4rem); padding-right: 30px; }
  .uc-col__body, .uc-col__foot { position: relative; inset: auto; max-height: 0; opacity: 0; }
  .uc-col__foot { padding: 0 clamp(20px, 5vw, 28px); }
  .uc-col.is-open .uc-col__inner { padding-bottom: 0; }
  .uc-col.is-open .uc-col__body { max-height: 22em; opacity: 1; margin-top: 10px; }
  .uc-col.is-open .uc-col__foot { max-height: 200em; opacity: 1; padding: 16px clamp(20px, 5vw, 28px) clamp(20px, 5vw, 28px); }
  .uc-col__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .uc-col__inner::after { content: ""; position: absolute; right: clamp(20px, 5vw, 28px); top: calc(clamp(20px, 5vw, 28px) + .3em); width: 9px; height: 9px; border-right: 2px solid rgba(255,255,255,.8); border-bottom: 2px solid rgba(255,255,255,.8); transform: rotate(45deg); transition: transform .35s ease; }
  .uc-col.is-open .uc-col__inner::after { transform: rotate(-135deg); }
}

.problem--quote { text-align: center; background-image: linear-gradient(180deg, rgba(6,7,8,.9) 0%, rgba(6,7,8,.72) 48%, rgba(6,7,8,.94) 100%), url("img/problem-bg.jpg"); background-size: cover; background-position: center; }
.problem--quote .container { max-width: 1240px; position: relative; z-index: 1; }
.bigquote { margin: 0; font-family: var(--sans); font-weight: 500; font-size: clamp(1.5rem, 3.4vw, 3.1rem); line-height: 1.24; letter-spacing: -.022em; color: #fff; }

.steps-wrap { display: grid; grid-template-columns: 1fr; gap: clamp(32px, 4vw, 54px); }
.steps-aside { text-align: center; }
.steps-cta { display: flex; justify-content: center; margin-top: clamp(22px, 3vw, 40px); }
.steps-aside .title { margin: 0; }
.steps-aside .btn { margin-top: 0; flex: none; }
#como-funciona { padding-block: clamp(54px, 7.5vw, 120px); }
.steps-list { --paso-gap: clamp(26px, 2.6vw, 40px); display: grid; gap: var(--paso-gap); align-items: stretch; }
.steps-list.is-3 { grid-template-columns: repeat(3, 1fr); }
.steps-list.is-4 { grid-template-columns: repeat(4, 1fr); }
.steps-list.is-5 { grid-template-columns: repeat(5, 1fr); }
.step { position: relative; display: block; padding: clamp(22px, 2.1vw, 30px); background: var(--paper); border: 1px solid var(--line-soft); border-radius: var(--radius); box-shadow: 0 22px 48px -34px rgba(16,62,77,.34); transition: transform .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s, border-color .45s; }
.step:hover { transform: translateY(-5px); box-shadow: 0 36px 66px -34px rgba(16,62,77,.42); border-color: rgba(80,174,184,.4); }
.step::before, .step::after { content: ""; position: absolute; top: 50%; right: calc(var(--paso-gap) / -2); pointer-events: none; }
.step::before { width: 27px; height: 27px; border-radius: 50%; background: var(--paper); border: 1px solid var(--line); transform: translate(50%, -50%); z-index: 2; }
.step::after { width: 7px; height: 7px; border-top: 1.6px solid var(--teal); border-right: 1.6px solid var(--teal); transform: translate(calc(50% - 2px), -50%) rotate(45deg); z-index: 3; }
.step:last-child::before, .step:last-child::after { display: none; }
.step .num { display: block; margin-bottom: 13px; font-family: var(--sans); font-size: clamp(2rem, 2.7vw, 2.5rem); font-weight: 600; letter-spacing: -.02em; color: var(--teal); line-height: 1; }
.step h3 { font-size: clamp(1.05rem, 1.25vw, 1.2rem); margin-bottom: 7px; }
.step p { color: var(--ink-soft); font-size: .93rem; line-height: 1.55; }
.js .step.reveal { transform: translateY(34px) scale(.985); transition: opacity .72s cubic-bezier(.2,.8,.2,1), transform .72s cubic-bezier(.2,.8,.2,1); }
.step.reveal.d1 { transition-delay: .13s; }
.step.reveal.d2 { transition-delay: .26s; }
.step.reveal.d3 { transition-delay: .39s; }
.step.reveal.d4 { transition-delay: .52s; }
@media (max-width: 1000px) {
  .steps-list.is-3, .steps-list.is-4, .steps-list.is-5 { grid-template-columns: repeat(2, 1fr); }
  .step:nth-child(even)::before, .step:nth-child(even)::after { display: none; }
}
@media (max-width: 640px) {
  .steps-list.is-3, .steps-list.is-4, .steps-list.is-5 { grid-template-columns: 1fr; }
  .step:nth-child(even)::before, .step:nth-child(even)::after { display: block; }
  .step::before, .step::after { top: auto; right: 50%; bottom: calc(var(--paso-gap) / -2); }
  .step::before { transform: translate(50%, 50%); }
  .step::after { transform: translate(calc(50% + 2px), calc(50% - 2px)) rotate(135deg); }
  .step:last-child::before, .step:last-child::after { display: none; }
}

/* ---- Como funciona: la card de "Por que elegirnos" del deck ----
   Receta portada de la landing de fin de ano, que la habia tomado de la slide de
   razones del deck: fondo casi blanco con un dejo de teal, borde tenue, sombra
   desplazada a la derecha, el numero en un circulo tintado y el mismo numero
   gigante de marca de agua abajo a la derecha. Esa marca de agua es lo que le da
   identidad: sale del `data-n` de cada paso con `content: attr()`, sin sumar
   markup. Va scopeada al `#como-funciona` para no tocar otros usos de `.step`. */
#como-funciona { background: var(--paper-2); }
#como-funciona .steps-wrap { gap: clamp(20px, 2.4vw, 30px); }
#como-funciona .steps-cta { margin-top: clamp(26px, 3vw, 40px); }
#como-funciona .steps-list { --paso-gap: clamp(16px, 1.8vw, 24px); }
#como-funciona .step { position: relative; overflow: hidden;
  padding: clamp(26px, 2.7vw, 40px) clamp(22px, 2.3vw, 34px) clamp(26px, 2.6vw, 36px);
  background: #F5FAFB; border: 1px solid #E6EEF0; border-radius: var(--radius-lg);
  box-shadow: 6px 10px 26px rgba(16,62,77,.10), 2px 3px 7px rgba(16,62,77,.05); }
#como-funciona .step:hover { transform: translateY(-4px);
  box-shadow: 8px 14px 34px rgba(16,62,77,.14), 2px 4px 9px rgba(16,62,77,.06); border-color: #D9E7EA; }
/* El chevron entre cards se va; el ::after se reusa para la marca de agua. */
#como-funciona .step::before { display: none; }
#como-funciona .step::after { content: attr(data-n); display: block; position: absolute;
  right: -.1em; bottom: -.32em; width: auto; height: auto; border: 0; transform: none;
  font-family: var(--sans); font-weight: 600; font-size: clamp(7rem, 10vw, 11rem); line-height: 1;
  color: var(--teal); opacity: .1; pointer-events: none; z-index: 0; }
#como-funciona .step .num { position: relative; z-index: 2;
  width: clamp(50px, 4.6vw, 62px); height: clamp(50px, 4.6vw, 62px); border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--teal-tint); color: var(--teal);
  font-size: clamp(1.2rem, 1.5vw, 1.5rem); font-weight: 600; letter-spacing: -.01em;
  margin-bottom: clamp(20px, 2.2vw, 30px); }
#como-funciona .step > div { position: relative; z-index: 2; }
#como-funciona .step h3 { font-size: clamp(1.15rem, 1.45vw, 1.38rem); font-weight: 600; letter-spacing: -.015em; margin-bottom: 10px; }
/* Abajo de 901 el encabezado va a la izquierda (ver el bloque de cabeceras). La
   bajada se quedaba centrada igual porque `.steps-aside .sec-eyebrow ~ .lead` pesa
   mas que la regla que la libera; con el `#como-funciona` adelante empareja. */
@media (max-width: 900px) { #como-funciona .steps-aside .lead { margin-inline: 0; } }

.faq-list { max-width: 880px; margin-top: clamp(40px, 5vw, 64px); }
.faq-item { border-top: 1px solid var(--line); }
.faq-item:last-child { border-bottom: 1px solid var(--line); }
.faq-q { width: 100%; background: none; border: 0; text-align: left; display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 26px 4px; font-family: var(--sans); font-size: clamp(1.05rem, 1.5vw, 1.3rem); font-weight: 600; letter-spacing: -.01em; color: var(--ink); transition: color .2s; }
.faq-q:hover { color: var(--teal); }
.faq-q .chev { flex: none; width: 22px; height: 22px; color: var(--teal); transition: transform .3s cubic-bezier(.2,.8,.2,1); }
.faq-item.open .faq-q .chev { transform: rotate(45deg); }
.faq-a { max-height: 0; overflow: hidden; transition: max-height .35s cubic-bezier(.2,.8,.2,1); }
.faq-a p { padding: 0 4px 30px; color: var(--ink-soft); max-width: 72ch; font-size: 1.02rem; }

.form-card { position: relative; z-index: 1; max-width: 560px; margin: 0 auto; width: 100%; scroll-margin-top: 100px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12); border-radius: var(--radius-lg); padding: clamp(20px, 2.8vw, 34px) clamp(26px, 3.6vw, 46px) clamp(26px, 3.6vw, 46px); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: 0 30px 70px -40px rgba(0,0,0,.5); }
.form-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; border-radius: var(--radius-lg) var(--radius-lg) 0 0; background: linear-gradient(90deg, var(--teal), var(--teal-bright)); }
.form-card .ttl { font-family: var(--sans); font-size: 1.35rem; font-weight: 600; letter-spacing: -.01em; color: #fff; margin-bottom: 8px; }
.form-card .sub { font-size: .9rem; color: rgba(255,255,255,.6); margin-bottom: 30px; }
.field { margin-bottom: 18px; position: relative; }
.field input, .field select, .field textarea {
  width: 100%; border: 1px solid rgba(255,255,255,.22); border-radius: 12px;
  background: rgba(255,255,255,.1); color: #fff; font-family: var(--sans); font-size: .93rem;
  padding: 21px 42px 7px 44px;
  transition: border-color .25s, background .25s, box-shadow .25s;
}
.field textarea { font-family: var(--sans-body); line-height: 1.5; min-height: 108px; resize: vertical; padding-top: 26px; }
.field input::placeholder, .field textarea::placeholder { color: transparent; }
.field label { position: absolute; left: 44px; top: 29px; transform: translateY(-50%); font-family: var(--sans); font-size: .93rem; color: rgba(255,255,255,.5); pointer-events: none; z-index: 1; transition: top .17s ease, font-size .17s ease, color .17s ease, letter-spacing .17s ease; }
.field textarea ~ label { top: 31px; }
.field input:focus ~ label, .field input:not(:placeholder-shown) ~ label, .field textarea:focus ~ label, .field textarea:not(:placeholder-shown) ~ label, .field select:focus ~ label, .field select:valid ~ label {
  top: 12px; font-size: .68rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--teal-bright);
}
.field .fic { position: absolute; left: 15px; top: 29px; transform: translateY(-50%); width: 19px; height: 19px; color: rgba(255,255,255,.42); pointer-events: none; z-index: 2; transition: color .2s; }
.field textarea ~ .fic { top: 31px; }
.field .fic svg { width: 100%; height: 100%; display: block; }
.field input:focus ~ .fic, .field select:focus ~ .fic, .field textarea:focus ~ .fic { color: var(--teal-bright); }
.hp-field { position: absolute !important; left: -9999px !important; top: auto; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; }
.field input:hover, .field select:hover, .field textarea:hover { border-color: rgba(255,255,255,.4); }
.field input:focus, .field select:focus, .field textarea:focus { outline: 0; border-color: #6FC7D0; background: rgba(255,255,255,.15); box-shadow: 0 0 0 3px rgba(80,174,184,.16); }
.field select { appearance: none; cursor: pointer; padding-right: 60px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%236FC7D0' stroke-width='2'%3E%3Cpath d='M3 5l4 4 4-4'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; }
.field select option { background: var(--petrol-deep); color: #fff; }
.field .fok { position: absolute; right: 15px; top: 29px; transform: translateY(-50%) scale(.5); width: 21px; height: 21px; border-radius: 50%; background: var(--teal); color: #fff; display: grid; place-items: center; opacity: 0; pointer-events: none; z-index: 2; transition: opacity .2s ease, transform .2s cubic-bezier(.2,1.6,.5,1); }
.field textarea ~ .fok { top: 31px; }
.field select ~ .fok { right: 40px; }
.field .fok svg { width: 12px; height: 12px; }
.field input:not(:placeholder-shown):valid ~ .fok, .field textarea:not(:placeholder-shown):valid ~ .fok, .field select:valid ~ .fok { opacity: 1; transform: translateY(-50%) scale(1); }
.field.error input, .field.error select, .field.error textarea { border-color: #E8A6A0; }
.field.error .fic { color: #E8A6A0; }
.field .err-msg { display: none; color: #E8A6A0; font-size: .76rem; margin-top: 7px; padding-left: 4px; }
.field.error .err-msg { display: block; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.form-card .btn { margin-top: 8px; }
.form-msg { display: none; padding: 15px 18px; border-radius: 12px; font-size: .92rem; margin-bottom: 22px; }
.form-msg.fail { display: block; background: rgba(232,166,160,.14); color: #F0C4C0; border: 1px solid rgba(232,166,160,.3); }
.btn[aria-busy="true"] { opacity: .65; pointer-events: none; }

.footer { background: var(--petrol-deep); color: #fff; padding-block: 40px; }
.footer-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px; }
.footer .brand img { filter: brightness(0) invert(1); }
.footer .copy { color: rgba(255,255,255,.55); font-size: .84rem; flex: 1; text-align: center; min-width: 240px; }
.footer-links { display: flex; gap: 24px; }
.footer-links a { font-size: .84rem; color: rgba(255,255,255,.6); }
.footer-links a:hover { color: #fff; }

/* El ocultamiento va scopeado a `.js` (clase que pone el failsafe inline del <head>).
   Antes era `.reveal` a secas: si main.js no llegaba a correr, TODO el contenido de la
   página quedaba en opacity:0 — incluido el formulario. Ahora el peor caso es la página
   entera visible sin animación, en vez de una página en blanco. */
.js .reveal { opacity: 0; transform: translateY(26px); transition: opacity .8s cubic-bezier(.2,.8,.2,1), transform .8s cubic-bezier(.2,.8,.2,1); }
.reveal.in { opacity: 1; transform: none; }
.reveal.d1 { transition-delay: .08s; } .reveal.d2 { transition-delay: .16s; } .reveal.d3 { transition-delay: .24s; } .reveal.d4 { transition-delay: .32s; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 980px) {
  .hero-banner { min-height: clamp(420px, 70vh, 540px); }
}
@media (max-width: 760px) {
  body { font-size: 16px; }
  .nav-links { display: none; }
  .nav-links.open { display: flex; flex-direction: column; align-items: flex-start; position: absolute; top: 80px; left: 0; right: 0; background: var(--paper); padding: 22px var(--gutter) 28px; gap: 20px; border-bottom: 1px solid var(--line); }
  .nav-links.open a { color: var(--ink); }
  .nav-toggle { display: block; }
  .nav-cta .btn { display: none; }
  .nav-sep { display: none; }
  .nav-dd { width: 100%; }
  .nav-dd__menu { position: static; box-shadow: none; border: 0; min-width: 0; padding: 2px 0 6px 16px; }
  .logos-row { gap: 16px; }
  .lbl-br { display: inline; }
  .hero-scrim { background: linear-gradient(180deg, rgba(8,9,11,.5) 0%, rgba(8,9,11,.4) 42%, rgba(8,9,11,.6) 100%); }
  .hero-vid { display: none; }
  .hero-inner { gap: 22px; padding: 34px 22px; }
  .hero-mid { gap: 20px; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
}
@media (max-width: 520px) {
  .footer-inner { flex-direction: column; text-align: center; }
}
@media (prefers-reduced-motion: reduce) { *, ::before, ::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } .reveal { opacity: 1; transform: none; } }

.cats .cat-row { display: flex; gap: 8px; height: clamp(300px, 35vw, 400px); margin-top: clamp(22px, 3vw, 36px); }
.cat-panel { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; border-radius: 16px; cursor: pointer; transition: flex-grow .55s cubic-bezier(.22,.61,.36,1); }
.cat-panel > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.cat-panel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(10,12,14,.82) 8%, rgba(10,12,14,.18) 52%, rgba(10,12,14,.04)); transition: background .4s; }
.cat-panel__inner { position: absolute; inset: auto 0 0 0; z-index: 1; padding: clamp(16px, 1.6vw, 24px); color: #fff; }
.cat-panel__inner h3 { color: #fff; font-family: var(--sans); font-weight: 600; font-size: clamp(1.22rem, 1.7vw, 1.62rem); white-space: nowrap; text-shadow: 0 2px 14px rgba(0,0,0,.55); margin: 0; }
.cat-panel__desc { margin: 0; max-height: 0; opacity: 0; overflow: hidden; color: rgba(255,255,255,.92); font-family: var(--sans-body); font-size: .95rem; line-height: 1.45; text-shadow: 0 1px 10px rgba(0,0,0,.5); transition: max-height .55s cubic-bezier(.22,.61,.36,1), opacity .4s ease, margin-top .4s ease; }
@media (hover: hover) {
  .cats .cat-row:hover .cat-panel { flex-grow: .62; }
  .cats .cat-row .cat-panel:hover { flex-grow: 2.7; }
  .cat-panel:hover > img { transform: scale(1.05); }
  .cat-panel:hover::after { background: linear-gradient(to top, rgba(10,12,14,.9) 12%, rgba(10,12,14,.35) 60%, rgba(10,12,14,.08)); }
  .cat-panel:hover .cat-panel__desc { max-height: 9em; opacity: 1; margin-top: 8px; }
  .cat-panel .cat-panel__inner h3 { writing-mode: vertical-rl; transform: rotate(180deg); display: inline-block; }
  .cat-panel:hover .cat-panel__inner h3 { writing-mode: horizontal-tb; transform: none; display: block; }
}
@media (max-width: 760px) {
  .cats .cat-row { flex-direction: column; height: auto; gap: 10px; }
  .cat-panel { flex: none; height: 172px; border-radius: 14px; }
  .cat-panel__desc { max-height: 9em; opacity: 1; margin-top: 8px; }
}

.cat-panel__vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .6s ease; }
.cat-panel__vid.is-ready { opacity: 1; }

.partners .shead .max { max-width: none; }
.partners-sub { text-align: left; font-family: var(--sans); font-weight: 500; font-size: clamp(1.1rem, 1.7vw, 1.5rem); color: var(--ink); margin: clamp(22px, 3.4vw, 40px) 0 clamp(16px, 2vw, 24px); }
.partners-sub strong { color: var(--teal); font-weight: 600; }
.partners-frame { background: #0A0C0E; padding: clamp(10px, 1.3vw, 20px); box-shadow: var(--shadow-soft); }
.partners-frame img { width: 100%; display: block; }

.platform { background: var(--paper-2); }
.cs-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(32px, 5vw, 72px); align-items: center; }
.cs-copy .lead { margin-top: 16px; }
.cs-kicker { font-family: var(--sans); font-weight: 600; color: var(--ink); margin: clamp(22px, 2.6vw, 32px) 0 16px; font-size: 1.02rem; }
.cs-feats { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.cs-feats li {
  display: flex; align-items: center; gap: 15px; text-align: left;
  background: #fff; border: 1px solid var(--line-soft); border-radius: 16px;
  padding: 17px 20px; min-height: 86px;
  box-shadow: 0 20px 44px -30px rgba(16,62,77,.4);
  opacity: 0; transform: translateY(16px);
  transition: transform .28s cubic-bezier(.2,.8,.2,1), box-shadow .28s, border-color .28s;
}
.cs-feats li:hover { transform: translateY(-4px); box-shadow: 0 28px 56px -30px rgba(16,62,77,.45); border-color: rgba(80,174,184,.28); }
.cs-feats .cs-ic { flex: none; width: 46px; height: 46px; border-radius: 13px; background: var(--teal-tint); color: var(--teal); display: grid; place-items: center; transition: background .28s, color .28s; }
.cs-feats .cs-ic svg { width: 23px; height: 23px; }
.cs-feats li:hover .cs-ic { background: var(--teal); color: #fff; }
.cs-feats span { font-family: var(--sans); font-weight: 500; font-size: .93rem; line-height: 1.32; color: var(--ink); }
.cs-copy.in .cs-feats li { animation: csPop .55s cubic-bezier(.2,.8,.2,1) forwards; }
.cs-copy.in .cs-feats li:nth-child(1) { animation-delay: .06s; }
.cs-copy.in .cs-feats li:nth-child(2) { animation-delay: .14s; }
.cs-copy.in .cs-feats li:nth-child(3) { animation-delay: .22s; }
.cs-copy.in .cs-feats li:nth-child(4) { animation-delay: .30s; }
.cs-copy.in .cs-feats li:nth-child(5) { animation-delay: .38s; }
.cs-copy.in .cs-feats li:nth-child(6) { animation-delay: .46s; }
@keyframes csPop { to { opacity: 1; transform: none; } }
.cs-media img { width: 100%; border-radius: var(--radius); box-shadow: var(--shadow-soft); }
@media (max-width: 860px) { .cs-grid { grid-template-columns: 1fr; } }
@media (max-width: 540px) { .cs-feats { grid-template-columns: 1fr; } .cs-feats li { min-height: 0; padding: 15px 16px; } }
/* sin animación: las pills deben quedar visibles igual */
@media (prefers-reduced-motion: reduce) { .cs-feats li { opacity: 1; transform: none; } }

.cats .shead, .partners .shead { display: block; text-align: center; margin-bottom: clamp(20px, 2.6vw, 36px); }
.cats .shead .max, .partners .shead .max { max-width: none; margin: 0 auto; }
.cats .shead .lead, .partners .shead .lead { margin-inline: auto; }
.partners-sub { text-align: center; }
.catalog--c .shead { text-align: center; }
.catalog--c .shead .max, .catalog--c .shead .lead { margin-inline: auto; }
.platform .cs-copy { text-align: center; }
.platform .cs-copy .lead { margin-inline: auto; }

.sol-link { display: inline-flex; align-items: center; gap: 8px; width: fit-content; margin-top: clamp(12px, 1.4vw, 16px); font-family: var(--sans); font-weight: 500; font-size: .9rem; color: #fff; }
.sol-link span { position: relative; }
.sol-link span::after { content: ""; position: absolute; left: 0; bottom: -2px; height: 1.5px; width: 100%; background: var(--teal); transform: scaleX(0); transform-origin: left; transition: transform .3s cubic-bezier(.2,.8,.2,1); }
.sol-link:hover span::after { transform: scaleX(1); }
.sol-link svg { width: 15px; height: 15px; transition: transform .25s; }
.sol-link:hover svg { transform: translateX(4px); }
.sol-tile--feat .sol-link { font-size: .98rem; margin-top: clamp(16px, 1.8vw, 20px); }

.bf-copy .lead { margin-top: 16px; }
.bf-list { list-style: none; margin-top: clamp(22px, 2.6vw, 32px); display: grid; gap: 16px; }
.bf-list li { display: flex; align-items: flex-start; gap: 13px; }
.bf-check { flex: none; width: 28px; height: 28px; border-radius: 9px; background: var(--teal-tint); color: var(--teal); display: grid; place-items: center; margin-top: 1px; }
.bf-check svg { width: 16px; height: 16px; }
.bf-list .bf-txt { font-family: var(--sans); font-weight: 400; font-size: 1rem; line-height: 1.45; color: var(--ink-soft); }
.bf-list .bf-txt strong { font-weight: 600; color: var(--ink); }

.benefits .cs-media img { border-radius: 0; box-shadow: none; }

.giftcards .shead-c { max-width: none; }
.giftcards .cat-panel__inner h3 { font-size: clamp(1rem, 1.35vw, 1.28rem); }
.giftcards .cat-row { margin-top: clamp(24px, 3vw, 40px); }
.gc-sub { text-align: center; font-family: var(--sans); font-weight: 600; color: var(--ink); margin: clamp(30px, 4vw, 50px) 0 clamp(16px, 2vw, 24px); font-size: 1.05rem; }
.gc-logos { max-width: 980px; margin-inline: auto; }
.gc-logos img { width: 100%; display: block; }

.choice { background-image: linear-gradient(180deg, rgba(6,7,8,.9) 0%, rgba(6,7,8,.72) 48%, rgba(6,7,8,.94) 100%), url("img/problem-bg.jpg"); background-size: cover; background-position: center; padding-block: clamp(32px, 3.6vw, 56px); }
.choice .shead-c { margin-bottom: 0; }
.choice .title { color: #fff; }
.choice .lead { color: rgba(255,255,255,.82); }

.choice-opts { display: flex; align-items: center; justify-content: center; gap: clamp(14px, 2vw, 24px); flex-wrap: wrap; margin-top: clamp(24px, 3.2vw, 38px); }
.choice-opt { display: inline-flex; align-items: center; gap: 11px; padding: 14px 28px; border-radius: 999px; background: rgba(255,255,255,.08); border: 1.5px solid rgba(255,255,255,.3); color: #fff; font-family: var(--sans); font-weight: 600; font-size: clamp(1.02rem, 1.5vw, 1.22rem); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); cursor: pointer; transition: background .25s, border-color .25s, transform .25s cubic-bezier(.2,.8,.2,1); }
.choice-opt:hover { background: rgba(255,255,255,.16); border-color: var(--teal-bright); transform: translateY(-2px); }
.choice-opt svg { width: 24px; height: 24px; color: var(--teal-bright); flex: none; }
#pl-experiencias, #pl-giftcards { scroll-margin-top: 96px; }
.choice-plus { font-family: var(--sans); font-weight: 600; font-size: clamp(1.5rem, 2.2vw, 2rem); line-height: 1; color: var(--teal-bright); }

.gc-bigbox { background: var(--paper-2); }
.gc-choice { background: linear-gradient(180deg, #fff 0%, var(--paper-2) 100%); }
.gc-opts { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(18px, 2.2vw, 28px); margin-top: clamp(30px, 3.6vw, 50px); }
.gc-opt-card { position: relative; overflow: hidden; display: block; background: #fff; border: 1px solid var(--line-soft); border-radius: var(--radius-lg); padding: clamp(22px, 2.4vw, 32px); box-shadow: 0 30px 60px -42px rgba(16,62,77,.42); transition: transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
.gc-opt-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--teal), var(--teal-bright)); transform: scaleX(0); transform-origin: left; transition: transform .4s cubic-bezier(.2,.8,.2,1); }
.gc-opt-card:hover { transform: translateY(-6px); box-shadow: 0 46px 88px -46px rgba(16,62,77,.5); border-color: rgba(80,174,184,.22); }
.gc-opt-card:hover::before { transform: scaleX(1); }
.gc-opt-num { position: absolute; top: clamp(20px, 2.4vw, 30px); right: clamp(24px, 3vw, 40px); font-family: var(--sans); font-size: clamp(2rem, 3vw, 2.8rem); font-weight: 700; letter-spacing: -.03em; line-height: 1; color: rgba(16,62,77,.06); }
.gc-opt-card .ch-ic { width: 52px; height: 52px; border-radius: 15px; background: linear-gradient(135deg, var(--teal-tint), #CDE9EB); color: var(--teal); display: grid; place-items: center; margin-bottom: 15px; box-shadow: inset 0 0 0 1px rgba(80,174,184,.12); transition: background .3s, color .3s, transform .3s; }
.gc-opt-card .ch-ic svg { width: 25px; height: 25px; }
.gc-opt-card:hover .ch-ic { background: linear-gradient(135deg, var(--teal), var(--teal-bright)); color: #fff; transform: translateY(-2px); }
.gc-opt-ey { display: inline-block; font-family: var(--sans); font-size: .68rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--teal); background: var(--teal-tint); padding: 5px 13px; border-radius: 999px; margin-bottom: 11px; }
.gc-opt-card h3 { font-family: var(--sans); font-size: clamp(1.3rem, 1.9vw, 1.55rem); font-weight: 600; color: var(--ink); margin-bottom: 9px; }
.gc-opt-card p { font-family: var(--sans-body); color: var(--ink-soft); font-size: 1rem; line-height: 1.55; max-width: 42ch; }
.gc-opt-more { display: inline-flex; align-items: center; gap: 8px; margin-top: 15px; font-family: var(--sans); font-weight: 600; font-size: .92rem; color: var(--teal); }
.gc-opt-more svg { width: 15px; height: 15px; transition: transform .25s; }
.gc-opt-card:hover .gc-opt-more svg { transform: translateX(5px); }
.gc-bigbox .cs-media img { border-radius: var(--radius); box-shadow: 0 40px 70px -34px rgba(0,0,0,.55); }
#gc-experiencias, #gc-marcas { scroll-margin-top: 96px; }
@media (max-width: 640px) { .gc-opts { grid-template-columns: 1fr; } }

.vj-incluye { background: var(--paper-2); }
.vj-incluye .shead-c, .vj-incluye .shead-c .lead { max-width: none; }
.vj-slider { margin-top: clamp(26px, 3.2vw, 42px); display: flex; flex-direction: column; gap: clamp(12px, 1.4vw, 18px); }
.vj-row { overflow: hidden; -webkit-mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent); mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent); }
.vj-track { display: flex; width: max-content; animation: vjscroll 24s linear infinite; }
.vj-group { display: flex; flex-shrink: 0; gap: clamp(12px, 1.4vw, 18px); padding-right: clamp(12px, 1.4vw, 18px); }
@keyframes vjscroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.vj-item { position: relative; overflow: hidden; border-radius: var(--radius); width: clamp(250px, 26vw, 310px); flex: none; min-height: clamp(240px, 24vw, 300px); padding: clamp(20px, 2.2vw, 28px); display: flex; flex-direction: column; justify-content: flex-end; box-shadow: var(--shadow-card); }
.vj-item > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; transition: transform .6s cubic-bezier(.2,.8,.2,1); }
.vj-item:hover > img { transform: scale(1.07); }
.vj-item::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(to top, rgba(10,14,18,.9) 6%, rgba(10,14,18,.42) 56%, rgba(10,14,18,.12)); }
.vj-item > .vj-ic, .vj-item > h3, .vj-item > p { position: relative; z-index: 2; }
.vj-ic { width: 46px; height: 46px; border-radius: 13px; background: rgba(255,255,255,.16); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); color: #fff; display: grid; place-items: center; margin-bottom: 13px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.25); }
.vj-ic svg { width: 23px; height: 23px; }
.vj-item h3 { font-family: var(--sans); font-size: clamp(1.25rem, 1.6vw, 1.45rem); font-weight: 600; color: #fff; margin-bottom: 5px; text-shadow: 0 2px 10px rgba(0,0,0,.45); }
.vj-item p { font-family: var(--sans-body); font-size: .9rem; color: rgba(255,255,255,.85); line-height: 1.42; }
.vj-proof { text-align: center; margin-top: clamp(26px, 3.2vw, 42px); font-family: var(--sans); font-weight: 500; font-size: 1.05rem; color: var(--ink-soft); }
.vj-proof strong { color: var(--teal); font-weight: 700; }
@media (prefers-reduced-motion: reduce) { .vj-track { animation: none; } .vj-row { overflow-x: auto; } }

.vj-dest-sec .shead-c, .vj-dest-sec .shead-c .lead { max-width: none; }
.vj-dest-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 1.8vw, 20px); margin-top: clamp(28px, 3.4vw, 44px); }
.vj-dest { position: relative; aspect-ratio: 4 / 3; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-card); }
.vj-dest img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .55s cubic-bezier(.2,.8,.2,1); }
.vj-dest:hover img { transform: scale(1.06); }
.vj-dest::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(10,12,14,.8) 4%, rgba(10,12,14,.1) 56%); }
.vj-dest__body { position: absolute; inset: auto 0 0 0; z-index: 1; padding: clamp(16px, 1.6vw, 22px); color: #fff; }
.vj-dest__body .tag { display: inline-block; font-family: var(--sans); font-size: .62rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #fff; background: rgba(255,255,255,.2); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); padding: 3px 10px; border-radius: 999px; margin-bottom: 9px; }
.vj-dest__body h3 { font-family: var(--sans); font-size: clamp(1.15rem, 1.6vw, 1.4rem); font-weight: 600; color: #fff; text-shadow: 0 2px 12px rgba(0,0,0,.5); }
.vj-dest__body p { font-family: var(--sans-body); font-size: .85rem; color: rgba(255,255,255,.85); margin-top: 2px; }
@media (max-width: 820px) { .vj-dest-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .vj-dest-grid { grid-template-columns: 1fr; } }

.vj-niveles { background: var(--paper-2); }
.vj-niveles-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: clamp(16px, 1.8vw, 22px); margin-top: clamp(28px, 3.4vw, 44px); max-width: 840px; margin-left: auto; margin-right: auto; }
.vj-niveles-grid > article { flex: 1 1 340px; max-width: 400px; }
/* AR tiene 6 paquetes: sin esto el ancho de 840 los apila de a 2 y la seccion
   se va a 3 filas. Los paises con 2 o 4 cards siguen con el ancho de siempre. */
/* el flex-basis baja a 300: con 340 las 3 cards suman 1064px contra los 1056 que
   deja el container, se pasa por 8px y flex las apila de a 2 igual. */
.vj-niveles-grid--3col { max-width: 1180px; }
.vj-niveles-grid--3col > article { flex-basis: 300px; }
/* 4 por fila: con el .container en 1200 y el gutter en 72, adentro quedan 1056, asi
   que 4 cards de basis 220 entran con aire y se estiran a ~247. Arriba de eso no entra
   una quinta (5x220 + 4 gaps ya se pasa), y abajo de ~1000 de viewport wrapea sola. */
.vj-niveles-grid--4col { max-width: 1180px; }
.vj-niveles-grid--4col > article { flex-basis: 220px; max-width: 280px; }
@media (max-width: 560px) { .vj-niveles-grid > article { flex-basis: 100%; max-width: 400px; } }

.vj-lvl { position: relative; overflow: hidden; background: #fff; border: 1px solid var(--line-soft); border-radius: var(--radius-lg); box-shadow: 0 36px 70px -42px rgba(16,62,77,.42); transition: transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s, border-color .35s; display: flex; flex-direction: column; height: 100%; }
.vj-lvl:hover { transform: translateY(-8px); box-shadow: 0 58px 104px -46px rgba(16,62,77,.5); border-color: rgba(201,162,75,.42); }
.vj-lvl__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; }
.vj-lvl__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.8,.2,1); }
.vj-lvl:hover .vj-lvl__media img { transform: scale(1.06); }
.vj-lvl__body { padding: clamp(20px, 2.4vw, 28px); display: flex; flex-direction: column; align-items: flex-start; flex: 1; }
.vj-lvl h3 { position: relative; font-family: var(--sans); font-size: clamp(1.22rem, 1.55vw, 1.42rem); font-weight: 600; letter-spacing: -.01em; color: var(--ink); margin-bottom: 14px; padding-bottom: 13px; }
.vj-lvl h3::after { content: ""; position: absolute; left: 0; bottom: 0; width: 34px; height: 2.5px; border-radius: 2px; background: linear-gradient(90deg, var(--gold), #E7C878); }
.vj-lvl__sub { font-family: var(--sans-body); font-size: .92rem; color: var(--ink-soft); line-height: 1.55; }
.vj-lvl__sub { margin-bottom: clamp(18px, 2vw, 24px); }
/* El precio viene del catalogo, que es la fuente de las cards (ver el bloque de
   viajes en main.js). Cuando esta, la bajada se le pega y el aire va abajo. */
.vj-lvl__sub:has(+ .vj-lvl__price) { margin-bottom: 7px; }
.vj-lvl__price { font-family: var(--sans); font-size: 1.02rem; font-weight: 600; color: var(--ink); margin: 0 0 clamp(18px, 2vw, 24px); }
.vj-lvl__price span { font-family: var(--sans-body); font-size: .76rem; font-weight: 400; color: var(--ink-faint); }
.vj-lvl__btn { margin-top: auto; display: inline-flex; align-items: center; gap: 9px; background: var(--teal); color: #fff; font-family: var(--sans); font-weight: 600; font-size: .9rem; padding: 13px 24px; border-radius: 11px; box-shadow: 0 16px 32px -18px rgba(80,174,184,.6); transition: background .25s, transform .25s, gap .25s; }
.vj-lvl__btn:hover { background: var(--teal-deep); transform: translateY(-2px); gap: 12px; }
.vj-lvl__btn svg { width: 15px; height: 15px; }

.tb-why { background: var(--paper-2); }
.tb-why-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(16px, 1.8vw, 24px); margin-top: clamp(28px, 3.4vw, 44px); }
.tb-card { background: #fff; border: 1px solid var(--line-soft); border-radius: var(--radius-lg); padding: clamp(24px, 2.6vw, 32px); box-shadow: 0 30px 58px -42px rgba(16,62,77,.42); transition: transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
.tb-card:hover { transform: translateY(-6px); box-shadow: 0 44px 82px -44px rgba(16,62,77,.5); border-color: rgba(80,174,184,.2); }
.tb-card__ic { display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 14px; background: var(--teal-tint); color: var(--teal); margin-bottom: 18px; }
.tb-card__ic svg { width: 24px; height: 24px; }
.tb-card h3 { font-family: var(--sans); font-size: clamp(1.1rem, 1.4vw, 1.24rem); font-weight: 600; color: var(--ink); margin-bottom: 8px; }
.tb-card p { font-family: var(--sans-body); font-size: .93rem; color: var(--ink-soft); line-height: 1.55; }
@media (max-width: 900px) { .tb-why-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .tb-why-grid { grid-template-columns: 1fr; } }

.tb-cta { position: relative; overflow: hidden; text-align: center; background-image: linear-gradient(180deg, rgba(11,44,55,.82) 0%, rgba(11,44,55,.9) 100%), url("img/sol/teambuilding.webp"); background-size: cover; background-position: center; }
.tb-cta .container { position: relative; z-index: 1; max-width: 820px; }
.tb-cta h2.title { color: #fff; }
.tb-cta .lead { color: rgba(255,255,255,.85); margin: 16px auto 0; }
.tb-cta .btn { margin-top: clamp(26px, 2.8vw, 36px); }
.tb-cta .btn svg { width: 16px; height: 16px; }

.field .req { color: var(--teal); font-weight: 600; margin-left: 1px; }
.form-legal { margin-top: 16px; text-align: left; font-family: var(--sans-body); font-size: .8rem; line-height: 1.55; color: var(--ink-faint); }
.form-legal a { color: var(--ink-soft); text-decoration: underline; text-underline-offset: 2px; }
.form-legal a:hover { color: var(--teal); }

.legal-nav { border-bottom: 1px solid var(--line-soft); background: var(--paper); position: sticky; top: 0; z-index: 20; }
.legal-nav__inner { display: flex; align-items: center; justify-content: space-between; height: 66px; }
.legal-back { display: inline-flex; align-items: center; gap: 7px; font-family: var(--sans); font-size: .9rem; font-weight: 500; color: var(--ink-soft); }
.legal-back svg { width: 16px; height: 16px; }
.legal-back:hover { color: var(--teal); }
.legal { padding: clamp(40px, 6vw, 84px) 0; background: var(--paper); }
.legal__inner { max-width: 820px; }
.legal h1 { font-family: var(--sans); font-size: clamp(1.85rem, 3.6vw, 2.7rem); font-weight: 600; letter-spacing: -.02em; color: var(--ink); margin-bottom: clamp(22px, 3vw, 34px); }
.legal h2 { font-family: var(--sans); font-size: clamp(1.12rem, 1.7vw, 1.34rem); font-weight: 600; color: var(--ink); margin: clamp(26px, 3.2vw, 38px) 0 12px; }
.legal p { font-family: var(--sans-body); font-size: 1rem; line-height: 1.72; color: var(--ink-soft); margin-bottom: 13px; }
.legal ul { margin: 0 0 13px; padding-left: 22px; }
.legal li { font-family: var(--sans-body); font-size: 1rem; line-height: 1.72; color: var(--ink-soft); margin-bottom: 8px; }
.legal a { color: var(--teal); text-decoration: underline; text-underline-offset: 2px; word-break: break-word; }
.legal__meta { margin-top: clamp(30px, 4vw, 48px); padding-top: 20px; border-top: 1px solid var(--line-soft); font-size: .88rem; color: var(--ink-faint); }

.cta-split { color: var(--ink); background-color: #E9EBEE; background-image: linear-gradient(rgba(233,235,238,.72), rgba(233,235,238,.8)), url("img/cats/estar-bien.webp"); background-size: cover; background-position: center; background-blend-mode: normal, luminosity; }
.cta-split__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(26px, 3.6vw, 42px); }
.cta-aside { padding-left: 0; text-align: center; max-width: 900px; margin-inline: auto; }
.cta-aside .cta-trust { justify-content: center; }
.cta-split .form-card { max-width: 760px; margin-inline: auto; background: #fff; border: 1px solid var(--line-soft); -webkit-backdrop-filter: none; backdrop-filter: none; box-shadow: 0 44px 90px -54px rgba(16,62,77,.42); }
.cta-split .form-card .ttl { color: var(--ink); font-size: clamp(1.3rem, 2vw, 1.52rem); line-height: 1.2; }
.cta-split .form-card .sub { color: var(--ink-soft); line-height: 1.5; }
.cta-split .field input, .cta-split .field select, .cta-split .field textarea { background-color: var(--paper-2); border-color: var(--line-soft); color: var(--ink); font-size: .76rem; }
.cta-split .field label { color: var(--ink-faint); font-size: .76rem; }
.cta-split .field input:focus ~ label, .cta-split .field input:not(:placeholder-shown) ~ label, .cta-split .field textarea:focus ~ label, .cta-split .field textarea:not(:placeholder-shown) ~ label, .cta-split .field select:focus ~ label, .cta-split .field select:valid ~ label { color: var(--teal); }
.cta-split .field .fic { color: var(--ink-faint); }
.cta-split .field input:focus ~ .fic, .cta-split .field select:focus ~ .fic, .cta-split .field textarea:focus ~ .fic { color: var(--teal); }
.cta-split .field input:hover, .cta-split .field select:hover, .cta-split .field textarea:hover { border-color: rgba(16,62,77,.22); }
.cta-split .field input:focus, .cta-split .field select:focus, .cta-split .field textarea:focus { border-color: var(--teal); background-color: #fff; box-shadow: 0 0 0 3px rgba(80,174,184,.12); }
.cta-split .field select option { background: #fff; color: var(--ink); }
.cta-split .form-msg.fail { background: rgba(200,60,40,.06); color: #B23A2A; border-color: rgba(200,60,40,.25); }
.cta-aside__title { font-family: var(--sans); font-size: clamp(1.8rem, 3.3vw, 2.9rem); font-weight: 500; letter-spacing: -.02em; line-height: 1.13; text-wrap: balance; color: var(--ink); margin-bottom: 18px; }
.cta-aside__lead { font-family: var(--sans-body); font-size: clamp(1rem, 1.2vw, 1.1rem); line-height: 1.6; color: var(--ink-soft); margin-bottom: clamp(26px, 3vw, 38px); max-width: 62ch; margin-inline: auto; }
.cta-trust { display: flex; flex-wrap: wrap; align-items: center; gap: 14px clamp(20px, 2.4vw, 32px); }
.cta-trust li { display: inline-flex; align-items: center; gap: 9px; line-height: 1.25; font-family: var(--sans); font-size: .95rem; font-weight: 500; color: var(--ink); }
.cta-trust li svg { width: 20px; height: 20px; color: var(--teal); flex: none; }
@media (max-width: 900px) {
  .cta-split__grid { grid-template-columns: 1fr; gap: clamp(30px, 6vw, 44px); }
  .cta-aside { padding-left: 0; }
}
@media (max-width: 460px) { .cta-trust { gap: 12px 20px; } }

.ty { background: var(--paper-2); text-align: center; }
/* Ritmo compacto a proposito: la TY page tiene que mostrar el arranque del catalogo
   SIN scrollear en desktop. Cada valor de abajo se recorto contra esa medida. */
.ty--top { padding: clamp(28px, 4vw, 44px) 0 clamp(26px, 3vw, 40px); }
.ty--bottom { padding: clamp(38px, 6vw, 66px) 0 clamp(44px, 6vw, 80px); }
.ty__inner { max-width: 740px; margin: 0 auto; }
.ty-nums-sec { background-color: #E9EBEE; background-image: linear-gradient(rgba(233,235,238,.72), rgba(233,235,238,.8)), url("img/cats/estar-bien.webp"); background-size: cover; background-position: center; background-blend-mode: normal, luminosity; }
.ty-nums-sec .nums-photo { border-color: #E9EBEE; }
.ty__icon { width: 64px; height: 64px; margin: 0 auto 16px; border-radius: 50%; display: grid; place-items: center; background: var(--teal-tint); color: var(--teal); animation: tyPop .55s cubic-bezier(.2,1.5,.5,1) both; }
.ty__icon svg { width: 32px; height: 32px; }
@keyframes tyPop { from { transform: scale(.35); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.ty__title { font-family: var(--sans); font-size: clamp(1.9rem, 4vw, 3rem); font-weight: 600; letter-spacing: -.02em; line-height: 1.12; color: var(--ink); margin-bottom: clamp(18px, 2.2vw, 24px); }
.ty__sub { font-family: var(--sans-body); font-size: clamp(1.05rem, 1.4vw, 1.2rem); line-height: 1.6; color: var(--ink-soft); max-width: 52ch; margin: 0 auto; }  /* ultimo del bloque: el aire de abajo lo pone el padding de la seccion */
.ty__sub strong { color: var(--ink); font-weight: 600; }
.ty-steps { display: flex; align-items: stretch; justify-content: center; gap: clamp(6px, 1.4vw, 14px); max-width: 680px; margin: 0 auto clamp(20px, 2.4vw, 28px); list-style: none; padding: 0; }
.ty-step { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; background: #fff; border: 1px solid var(--line-soft); border-radius: var(--radius); padding: clamp(12px, 1.3vw, 16px) clamp(12px, 1.5vw, 18px); text-align: left; box-shadow: 0 20px 42px -34px rgba(16,62,77,.4); }
.ty-step__num { position: absolute; top: 50%; right: 9px; transform: translateY(-50%); z-index: 0; font-family: var(--sans); font-weight: 800; font-size: clamp(2.7rem, 6.2vw, 4.3rem); line-height: 1; color: rgba(16,62,77,.06); pointer-events: none; user-select: none; }
.ty-step.is-done .ty-step__num { color: rgba(80,174,184,.1); }
.ty-step__badge { position: relative; z-index: 1; width: 26px; height: 26px; border-radius: 50%; display: inline-grid; place-items: center; margin-bottom: 8px; background: var(--paper-2); color: var(--ink-faint); }
.ty-step.is-done .ty-step__badge { background: var(--teal); color: #fff; }
.ty-step__badge svg { width: 14px; height: 14px; }
.ty-step h3 { position: relative; z-index: 1; font-family: var(--sans); font-size: clamp(.84rem, 1.35vw, 1rem); font-weight: 600; color: var(--ink); line-height: 1.2; margin: 0; }
.ty-step p { position: relative; z-index: 1; font-family: var(--sans-body); font-size: clamp(.74rem, 1vw, .86rem); color: var(--ink-soft); line-height: 1.4; margin-top: 5px; }
.ty-arrow { flex: 0 0 auto; align-self: center; display: grid; place-items: center; color: var(--teal-bright); }
.ty-arrow svg { width: clamp(15px, 2.2vw, 22px); height: clamp(15px, 2.2vw, 22px); }
.ty-explore-sec { position: relative; overflow: hidden; padding: clamp(46px, 7vw, 90px) 0; text-align: center; background-image: linear-gradient(180deg, rgba(6,7,8,.9) 0%, rgba(6,7,8,.72) 48%, rgba(6,7,8,.94) 100%), url("img/problem-bg.jpg"); background-size: cover; background-position: center; }
.ty-explore { max-width: 640px; margin: 0 auto; text-align: center; }
.ty-explore__title { font-family: var(--sans); font-size: clamp(1.85rem, 3.6vw, 2.8rem); font-weight: 600; letter-spacing: -.02em; color: var(--teal); margin-bottom: 11px; }
.ty-explore__lbl { font-family: var(--sans-body); font-size: clamp(.95rem, 1.2vw, 1.05rem); line-height: 1.5; color: rgba(255,255,255,.8); max-width: 48ch; margin: 0 auto 22px; }
.ty-explore__links { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.ty-explore__links a { display: inline-flex; align-items: center; gap: 9px; font-family: var(--sans); font-size: .92rem; font-weight: 500; color: var(--ink); background: #fff; border: 1px solid var(--line); border-radius: 999px; padding: 11px 22px; box-shadow: 0 12px 26px -20px rgba(16,62,77,.5); transition: border-color .2s, color .2s, transform .2s, box-shadow .2s; }
.ty-explore__links a svg { width: 15px; height: 15px; flex: none; color: var(--ink-faint); transition: color .2s; }
.ty-explore__links a:hover { border-color: var(--teal); color: var(--teal); transform: translateY(-2px); box-shadow: 0 18px 32px -20px rgba(80,174,184,.4); }
.ty-explore__links a:hover svg { color: var(--teal); }
/* Catalogo embebido en la ty page. Fondo blanco entre la .ty (paper-2) de arriba y
   la .ty-nums-sec de abajo; las cards traen su propio estilo desde /pais/catalogos.
   Sin catalogo (fetch caido o pais sin pagina propia) quedan los .ty-explore__links. */
.ty-cat-sec { padding: clamp(28px, 3.4vw, 40px) 0; background: var(--paper); text-align: center; }
.ty-cat__title { font-family: var(--sans); font-size: clamp(1.85rem, 3.6vw, 2.8rem); font-weight: 600; letter-spacing: -.02em; color: var(--ink); margin-bottom: 11px; }
.ty-cat__lbl { font-family: var(--sans-body); font-size: clamp(.95rem, 1.2vw, 1.05rem); line-height: 1.5; color: var(--ink-soft); max-width: 48ch; margin: 0 auto 22px; }
.ty-cat-sec.has-cat .ty-cat__lbl { margin-bottom: clamp(14px, 1.6vw, 20px); }
.ty-cat__slot { text-align: left; }
/* El catalogo abre con borde arriba propio: sin esto la primera categoria se pega al lead. */
.ty-cat__slot .cat-main { padding-bottom: 0; }
.ty-cat__slot .cat-grid { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .ty-cat__slot .cat-grid { grid-template-columns: repeat(2, 1fr); } }

.ty-home { display: inline-flex; align-items: center; gap: 7px; font-family: var(--sans); font-size: .92rem; font-weight: 500; color: var(--ink-soft); }
.ty-home svg { width: 15px; height: 15px; }
.ty-home:hover { color: var(--teal); }
@media (max-width: 560px) {
  .ty-step { padding: 11px 9px; border-radius: 14px; }
  .ty-step p { display: none; }
  .ty-step h3 { font-size: .74rem; }
  .ty-step__badge { width: 20px; height: 20px; margin-bottom: 6px; }
  .ty-step__badge svg { width: 12px; height: 12px; }
  .ty-step__num { font-size: 2.4rem; right: 6px; }
}


/* =====================================================================
   FORMULARIO DEL HERO — un solo paso
   =====================================================================
   Vivia en el <style> de /ar/fin-de-ano/ mientras era una prueba de esa landing.
   Al pasar a ser el formulario de las 30 paginas del sitio, tenerlo copiado en
   cada una era garantizar que empiecen a divergir: se sube aca.

   De donde sale: el A/B de agosto contra bigboxcorpo.com. El form de 3 pasos
   llevaba MAS gente a empezar (form_start 6,25% vs 5,08% del control) y cerraba
   la MITAD (completado 35,7% contra 76,9%; Fisher p=0,054). Los mismos 7 campos
   en una sola pantalla es lo que hace el control.

   El interruptor es la clase `.fone` en el <form>. Sin ella, nada de esto aplica.
   ===================================================================== */
/* El vidrio va en .54 y no en el .44 de mas arriba. Lo decide la foto que hay
   DETRAS de la tarjeta, que en varios heroes es cielo casi blanco: a .44 las
   etiquetas de los campos no llegaban ni a 3:1. Medirlo por pagina con
   tools/_contraste_form.mjs; el blur y el borde no se tocan. */
.hero--split .hero-form { background: rgba(16,26,31,.54); }

/* ---- Formulario de UN SOLO PASO ----
   Los 7 campos entran de una en la tarjeta del hero: se va la barra de progreso y
   se van los 2 clics de "Continuar". Sale del A/B de agosto: el form de 3 pasos
   lleva MAS gente a empezar (form_start 6,25% vs 5,08%) pero cierra la MITAD
   (completado 35,7% contra 76,9% del control, que muestra los mismos 7 campos en
   una sola pantalla). Fisher p=0,054 — es la unica diferencia con fuerza del test.
   La clase `fsteps` se conserva SOLO por el aspecto de los campos (linea en vez de
   caja, sin icono, tilde a la izquierda). Los pasos los decide main.js por la
   presencia de `.fstep` y ya no hay ninguno, asi que el form corre de un tramo sin
   tocar el JS. Todo lo demas va scopeado a `.fone`, que vive solo en esta pagina:
   /ar/ es el brazo vivo del A/B y no se toca hasta que esta prueba responda. */
.hero--split .hero-form .fone .sub { margin-bottom: 15px; }
/* 7 campos a la vista contra 3: cada renglon que se ahorra son ~3px de tarjeta. */
.hero--split .hero-form .fone .field { margin-bottom: 6px; }
/* El mensaje es opcional y es el campo mas alto. Con todo a la vista, 2 renglones
   alcanzan para escribir "500 unidades, $50.000 c/u". */
.hero--split .hero-form .fone .field textarea { min-height: 40px; }
/* Nombre|Apellido y Empresa|Telefono apareados: 4 campos en 2 renglones. Email, el
   select y el mensaje van a lo ancho — sus etiquetas no entran en media columna
   (quedan ~100px utiles despues del padding de 40px que dejo el icono apagado). */
.hero--split .hero-form .fone .form-row { gap: 16px; }
/* El radio de 10px lo hereda el form de linea del sitio, donde el campo era una caja.
   Con el borde de abajo solo, esa curva levanta la linea en las dos puntas y en media
   columna se come ~20px de los ~170 que hay: el subrayado se ve mas corto que el campo.
   Con 3px la linea llega al borde y las 6 columnas se leen alineadas. */
.hero--split .hero-form .fone .field input,
.hero--split .hero-form .fone .field select,
.hero--split .hero-form .fone .field textarea { border-radius: 3px; }
/* Sin `.fnav` el ultimo campo quedaba pegado al CTA. */
.hero--split .hero-form .fone .btn-block { margin-top: 16px; }
/* El legal usa --ink-faint (#93A0A2), un gris pensado para fondo claro. Sobre el
   vidrio daba 5,8:1 en el hero de fin de ano y 4,3 en el de experiencias — el mismo
   color rinde distinto segun la foto que tenga atras. Pasa a la familia de blancos
   del resto de la tarjeta. El alfa lo fija el peor hero de las 34: sobre el fondo
   mas claro que pisa el legal —rgb(114,101,85), team building— hace falta .84. */
.hero--split .hero-form .fone .form-legal { color: rgba(255,255,255,.85); }
.hero--split .hero-form .fone .form-legal a { color: rgba(255,255,255,.9); }
/* Los campos arrancan pegados al borde, alineados con el titulo de la tarjeta. El
   sangrado de 40px existia para el icono de la izquierda, que en el form de linea
   esta apagado: con 3 campos a la vista pasaba, con 7 quedaba una canaleta vacia y
   ademas desbordaba la etiqueta mas larga en mobile ("Cantidad y presupuesto por
   persona" se salia de la tarjeta). Recuperar esos 40px es lo que hace que Empresa
   y Telefono entren comodos en media columna. */
.hero--split .hero-form .fone .field input,
.hero--split .hero-form .fone .field select,
.hero--split .hero-form .fone .field textarea { padding-left: 0; }
.hero--split .hero-form .fone .field label { left: 0; }
/* Con el hueco izquierdo cerrado, el tilde de campo valido vuelve a la derecha. Al
   borde: 7 tildes en columna sobre el margen molestan menos que 7 sobre el texto. */
.hero--split .hero-form .fone .field .fok { left: auto; right: 0; }
/* El select se queda SIN tilde. En media columna el valor elegido le pasaba por
   debajo (un <select> no recorta el texto como un <input>: lo estira hasta el
   padding) y ademas el tilde y la flecha son dos senales de lo mismo apiladas en
   40px. Que muestre el valor ya dice que esta completo. */
.hero--split .hero-form .fone .field select ~ .fok { display: none; }
.hero--split .hero-form .fone .field select { padding-right: 26px; }
/* Las opciones del desplegable NO heredan el tamano del select en el popup: Chrome
   las dibuja con su propio tamano y quedaban mas grandes que cualquier texto de la
   tarjeta. Se las baja a mano; el valor ya elegido sigue en .9rem como el resto de
   los campos, asi que solo cambia la lista abierta. */
.hero--split .hero-form .fone .field select option { font-size: .78rem; padding: 4px 8px; }

/* ---- Vidrio de la tarjeta ----
   La foto que hay DETRAS de la tarjeta no es el atardecer que se ve alrededor: es un
   cielo casi blanco. Medido despejando el composite, la banda de las etiquetas tiene
   rgb(224,189,149) atras. Por eso el vidrio estaba en .62 y por eso bajarlo a secas
   rompia la lectura: con .50 las etiquetas quedaban en 2,54:1.
   El vidrio baja a .54 y el texto chico sube en la misma proporcion, asi que se ve
   MAS foto y ademas se lee MEJOR que antes:
     etiquetas  .50 -> .85   contraste 3,11 -> 4,72:1
     bajada     .60 -> .90   contraste 3,53 -> 4,60:1
     legal      sin cambios  6,03 -> 5,89:1
   (Umbral WCAG AA para texto normal: 4,5:1. Antes NINGUNO de los tres pasaba.)
   Con la foto mas presente, la linea del campo tambien se diluia: .26 -> .38. */
.hero--split .hero-form .fone .field label { color: rgba(255,255,255,.85); }
.hero--split .hero-form .sub { color: rgba(255,255,255,.9); }
.hero--split .hero-form .fone .field input,
.hero--split .hero-form .fone .field select,
.hero--split .hero-form .fone .field textarea { border-bottom-color: rgba(255,255,255,.38); }
/* El sitio baja la etiqueta a .5 cuando el campo tiene valor: se repone ahi tambien. */
.hero--split .hero-form .fone .field input:not(:placeholder-shown) ~ label,
.hero--split .hero-form .fone .field textarea:not(:placeholder-shown) ~ label,
.hero--split .hero-form .fone .field select:valid ~ label { color: rgba(255,255,255,.85); }
/* El foco tiene que seguir ganandole a las dos de arriba: misma especificidad, va despues. */
.hero--split .hero-form .fone .field input:focus ~ label,
.hero--split .hero-form .fone .field textarea:focus ~ label,
.hero--split .hero-form .fone .field select:focus ~ label { color: var(--teal-bright); }

/* El valor tipeado baja de .9rem a .84rem: queda del tamano de la etiqueta en vez de
   por encima de ella, y de paso entra mas texto antes de que el campo lo recorte
   (un email corporativo en media columna no llegaba a mostrarse entero). */
.hero--split .hero-form .fone .field input,
.hero--split .hero-form .fone .field select,
.hero--split .hero-form .fone .field textarea { font-size: .84rem; }

/* ---- Campo completo: se oscurece apenas ----
   El estado lo da el VALOR, no quien lo escribio. Antes el fondo oscuro aparecia
   solo en los campos que autocompleta Chrome y se leia como suciedad; despues quedo
   al reves —solo en los dos que llena la persona— por el motivo de aca abajo.

   El tinte va en el CONTENEDOR (.field), no en el campo. En lo que autocompleta,
   Chrome pinta el fondo del <input> con un !important de user-agent que le gana a
   cualquier `background` de autor, y la unica defensa (la transicion de 600000s que
   sigue mas abajo) congela el fondo en el valor que tenia ANTES de autocompletar —
   o sea transparente. Congelaba el celeste de Chrome y de paso el tinte propio.
   El contenedor esta fuera de esa pelea: Chrome no lo toca, asi que los 7 campos
   quedan iguales los llene el navegador o la persona.

   `:has()` es lo que permite preguntar "contenedor cuyo campo tiene valor". Donde
   no exista, no hay tinte y el formulario sigue funcionando igual. */
.hero--split .hero-form .fone .field:has(input:not(:placeholder-shown)),
.hero--split .hero-form .fone .field:has(textarea:not(:placeholder-shown)),
.hero--split .hero-form .fone .field:has(select:valid) {
  background-color: rgba(9,16,20,.34);
  border-radius: 3px;
}
/* 3px de aire a los lados: con el bloque pintado, el texto pegado al borde se leia
   como un desborde. Va en los cuatro estados —vacio, lleno, etiqueta y tilde— para
   que nada se corra al empezar a escribir. */
.hero--split .hero-form .fone .field input,
.hero--split .hero-form .fone .field select,
.hero--split .hero-form .fone .field textarea { padding-left: 3px; }
.hero--split .hero-form .fone .field label { left: 3px; }
/* El textarea y el select son inline: el contenedor les sumaba abajo el hueco del
   descender y el bloque pintado sobresalia por debajo de su propia linea (16px en el
   textarea, 2 en el select). */
.hero--split .hero-form .fone .field textarea,
.hero--split .hero-form .fone .field select { display: block; }
.hero--split .hero-form .fone .field .fok { right: 3px; }
/* Chrome pinta lo que autocompleta y le gana a cualquier `background` de autor. La
   unica forma de que no aparezca su celeste sobre el tinte del contenedor es que esa
   pintura nunca llegue: una transicion de 600000s que empieza y no termina. En
   longhand para que no haya duda de cual de los dos tiempos es la duracion. */
.hero--split .hero-form .fone .field input:-webkit-autofill,
.hero--split .hero-form .fone .field input:-webkit-autofill:hover,
.hero--split .hero-form .fone .field input:-webkit-autofill:focus,
.hero--split .hero-form .fone .field select:-webkit-autofill,
.hero--split .hero-form .fone .field textarea:-webkit-autofill {
  -webkit-text-fill-color: #fff;
  -webkit-box-shadow: none;
  box-shadow: none;
  transition-property: background-color, color;
  transition-duration: 600000s;
  transition-delay: 0s;
}
/* Y el tilde pierde el disco relleno: con 3 campos a la vista eran 3 puntos teal,
   con los 7 llenos era una fila de semaforos que le ganaba en peso al boton. Queda
   el trazo solo, que confirma igual y no compite. */
.hero--split .hero-form .fone .field .fok { width: 16px; height: 16px; background: none; color: var(--teal-bright); }
.hero--split .hero-form .fone .field .fok svg { width: 16px; height: 16px; }
/* Aire a la derecha para que el texto largo no termine debajo del tilde. */
.hero--split .hero-form .fone .field input,
.hero--split .hero-form .fone .field textarea { padding-right: 30px; }
/* Abajo de 980 el `.form-row` del sitio colapsa a una columna con `gap: 0`, pero el
   gap de 16px de arriba le gana por especificidad y metia un renglon de aire entre
   Nombre y Apellido que el resto de los campos no tenia. */
@media (max-width: 980px) {
  .hero--split .hero-form .fone .form-row { gap: 0; }
}

/* ---- Mobile: el hero respira y el form arranca abajo ----
   Medido con tools/_hero_mobile.mjs. Antes la tarjeta empezaba a los 398px = la
   mitad de la primera pantalla, asi que el hero era un titular apretado y un
   formulario. Ahora el H1 es mas grande, hay aire entre las tres piezas y la
   tarjeta asoma recien sobre el final: se ve que hay un formulario sin que tape
   la propuesta ni la foto. Los numeros exactos, en el bloque de abajo. */
@media (max-width: 980px) {
  /* El eyebrow entra en UNA linea: a .78rem con .18em de tracking, "REGALOS
     CORPORATIVOS DE FIN DE ANO" partia y dejaba "ANO" solo en el segundo renglon. */
  .hero--split .hero-eyebrow { font-size: .7rem; letter-spacing: .14em; }
  .hero--split h1 { font-size: 2.45rem; line-height: 1.1; }
  .hero--split .hero-mid { gap: 22px; }
  .hero--split .hero-inner { padding-block: 56px; gap: 74px; }
  /* Scrim: se aclara SOLO el medio. El eyebrow vive en el 5% de arriba, donde el
     degrade es mas fuerte; bajarlo parejo lo dejaba en 2,85:1 (venia de 3,54). Con
     el arranque en .58 conserva su contraste y la foto igual se abre donde hay aire
     entre las piezas — que es lo que la hace visible, mas que el scrim. */
  .hero--split .hero-scrim { background: linear-gradient(180deg, rgba(6,8,10,.58) 0%, rgba(6,8,10,.46) 45%, rgba(6,8,10,.62) 100%); }
  .hero--split .hero-mid .lead { color: rgba(255,255,255,.95); }
}

/* =====================================================================
   HERO APILADO — copy arriba, formulario blanco asomando abajo
   =====================================================================
   Nacio como /ar/fin-de-ano2/, una variante para comparar contra el hero partido.
   Al quedarse con las 34 paginas, tenerlo copiado en cada una era garantizar que
   empiecen a divergir: se sube aca. El interruptor es `hero--stack` en la <section>.

   La apuesta es al reves que la del hero partido: alla el formulario tenia que estar
   SI O SI en el primer viewport; aca la foto se lleva casi toda la primera pantalla y
   del formulario solo asoma el borde de arriba, como invitacion a bajar.
   ===================================================================== */

/* El hero se come casi todo el viewport y la tarjeta del formulario asoma por abajo:
   ese asomo es lo que invita a bajar. El numero se calibra por lo que se VE de la
   tarjeta —unos 110px, su titulo y su bajada— y no por el alto del hero, que cambia
   con cada pantalla. Medido en 1440x900, 1536x730 y 1920x940: 109px en las tres.
   El tope de 860 evita que en una pantalla muy alta el copy flote en un campo vacio. */
.hero--split.hero--stack .hero-banner { min-height: clamp(460px, calc(100dvh - 170px), 860px); }
/* El scrim de escritorio se abre a lo ancho. El del hero partido es un degrade
   HORIZONTAL que muere a la derecha, y ese hueco existia para que la tarjeta del
   formulario se apoyara sobre foto limpia. Con la tarjeta abajo ese hueco dejo de
   tener duenio — y el copy, que ahora ocupa 3/4 del ancho en vez de compartir fila,
   se metio justo ahi: el H1 de gift cards cayo a 2,05:1 sobre un minimo de 3.
   Se corre el punto de fuga del 48% al 78% y se le deja un piso al ultimo tramo.
   Va DENTRO de un media query: sin el, esta regla (0,3,0) le ganaba a la vertical de
   mobile (0,2,0) y le metia el degrade horizontal a una pantalla donde el H1 ocupa
   todo el ancho — el H1 de gift cards se fue a 2,05:1 en mobile. */
@media (min-width: 981px) {
  /* El degrade MUERE antes del borde: del 88% para la derecha la foto queda limpia.
     El punto no es estetico, es medible — el texto del hero no pasa del 72% del ancho
     del banner en ninguna de las 35 paginas (la mas ancha es gift cards). Se sostiene
     el velo hasta el 74% y se apaga en los 14 puntos siguientes, asi que ni la linea
     mas larga se queda sin fondo. Medir con tools/_ancho_copy.mjs antes de moverlo. */
  .hero--split.hero--stack .hero-scrim { background: linear-gradient(90deg,
    rgba(8,9,11,.58) 0%, rgba(8,9,11,.46) 45%, rgba(8,9,11,.3) 74%, rgba(8,9,11,0) 88%); }
  .hero--split.hero--stack.hero--dim .hero-scrim { background: linear-gradient(90deg,
    rgba(8,9,11,.7) 0%, rgba(8,9,11,.6) 45%, rgba(8,9,11,.44) 74%, rgba(8,9,11,0) 88%); }
}
/* Una sola columna, y el copy a 3/4 del ancho para que ocupe el hero en vez de quedar
   arrinconado a la izquierda como cuando compartia fila con la tarjeta. */
.hero--split.hero--stack .hero-inner { grid-template-columns: 1fr; padding-top: clamp(38px, 4.4vw, 66px);
  /* Piso para el copy: la tarjeta sube y sin esto se comia el ultimo renglon de la
     bajada. Tiene que superar el solape, no igualarlo. */
  padding-bottom: 96px; }
.hero--split.hero--stack .hero-mid { max-width: 75%; }
.hero--split.hero--stack .hero-inner.is-wide .lead { max-width: 62ch; }
.hero--split.hero--stack h1 { font-size: clamp(2.1rem, 4.3vw, 3.6rem); }

/* La tarjeta asoma apenas por el borde de la foto. Vive fuera de .hero-banner porque
   ese tiene overflow:hidden, pero DENTRO de la seccion .hero--split: todo el CSS del
   formulario cuelga de `.hero--split .hero-form` y afuera se quedaria sin estilos.
   540px contra los 415 de la tarjeta original: un poco mas ancha, no el doble. */
.hero--split.hero--stack .hero-form { max-width: 540px; margin: -48px auto 0; position: relative; z-index: 3;
  padding: clamp(24px, 2.4vw, 32px) clamp(22px, 2.4vw, 30px) clamp(24px, 2.4vw, 32px); }

/* ---- La tarjeta pasa a blanca ----
   No es solo el fondo: el formulario entero estaba pensado en blanco sobre vidrio
   oscuro. Cada color se da vuelta. */
.hero--split.hero--stack .hero-form { background: #fff; border: 1px solid var(--line-soft);
  -webkit-backdrop-filter: none; backdrop-filter: none;
  /* Dos sombras y no una: la corta despega la tarjeta del borde de la foto, la larga
     le da el volumen. Una sola de 80px se leia como una mancha, no como una tarjeta
     apoyada encima. */
  box-shadow: 0 18px 36px -14px rgba(16,62,77,.26),
              0 54px 110px -44px rgba(16,62,77,.46); }
/* El encabezado va centrado, como el de la referencia: en una tarjeta angosta el
   titulo alineado a la izquierda se pierde entre las etiquetas de los campos, que
   tambien arrancan a la izquierda. */
.hero--split.hero--stack .hero-form .ttl,
.hero--split.hero--stack .hero-form .sub { text-align: center; }
/* Mas grande Y en teal. El tamano no es capricho: a 21px con peso 600 el texto entra
   en la categoria "grande" de WCAG, que pide 3:1 en vez de 4,5 — y --teal-deep sobre
   blanco da 3,64. A 17,9px, el tamano que tenia, el mismo color no pasaba.
   (--teal a secas da 2,60 sobre blanco: no se puede usar para texto en esta tarjeta.) */
.hero--split.hero--stack .hero-form .ttl { color: var(--teal-deep); font-size: 1.32rem;
  letter-spacing: -.01em; margin-bottom: 6px; }
/* `text-wrap: balance` reparte los renglones en vez de llenar el primero y tirar el
   sobrante al segundo. Sin esto la bajada dejaba "entrega." sola abajo y el bloque se
   leia cortado. Es la red: el copy se acorto para entrar en un renglon en desktop,
   pero en mobile y en los paises con tuteo igual parte, y ahi parte parejo. */
.hero--split.hero--stack .hero-form .sub { color: var(--ink-soft); margin-bottom: 20px;
  text-wrap: balance; }
.hero--split.hero--stack .hero-form .fone .field input,
.hero--split.hero--stack .hero-form .fone .field select,
.hero--split.hero--stack .hero-form .fone .field textarea {
  color: var(--ink); border-bottom-color: rgba(16,62,77,.24); background-color: transparent; }
.hero--split.hero--stack .hero-form .fone .field input:focus,
.hero--split.hero--stack .hero-form .fone .field select:focus,
.hero--split.hero--stack .hero-form .fone .field textarea:focus { border-bottom-color: var(--teal); }
.hero--split.hero--stack .hero-form .fone .field label,
.hero--split.hero--stack .hero-form .fone .field input:not(:placeholder-shown) ~ label,
.hero--split.hero--stack .hero-form .fone .field textarea:not(:placeholder-shown) ~ label,
.hero--split.hero--stack .hero-form .fone .field select:valid ~ label { color: var(--ink-soft); }
.hero--split.hero--stack .hero-form .fone .field input:focus ~ label,
.hero--split.hero--stack .hero-form .fone .field textarea:focus ~ label,
.hero--split.hero--stack .hero-form .fone .field select:focus ~ label { color: var(--teal); }
/* El tilde en teal oscuro: el `--teal-bright` de la version oscura sobre blanco casi
   no se ve. */
.hero--split.hero--stack .hero-form .fone .field .fok { color: var(--teal); }
/* Campo completo: el mismo gesto que en la version oscura pero al reves — un gris
   apenas mas oscuro que el papel, no un tinte negro. */
.hero--split.hero--stack .hero-form .fone .field:has(input:not(:placeholder-shown)),
.hero--split.hero--stack .hero-form .fone .field:has(textarea:not(:placeholder-shown)),
.hero--split.hero--stack .hero-form .fone .field:has(select:valid) { background-color: rgba(16,62,77,.045); }
/* Chrome pinta de celeste lo que autocompleta y le gana a cualquier `background` de
   autor: la unica defensa es que esa pintura nunca llegue. El texto va en ink, no en
   blanco, que era lo que pedia la tarjeta oscura. */
.hero--split.hero--stack .hero-form .fone .field input:-webkit-autofill,
.hero--split.hero--stack .hero-form .fone .field input:-webkit-autofill:hover,
.hero--split.hero--stack .hero-form .fone .field input:-webkit-autofill:focus,
.hero--split.hero--stack .hero-form .fone .field select:-webkit-autofill,
.hero--split.hero--stack .hero-form .fone .field textarea:-webkit-autofill {
  -webkit-text-fill-color: #103E4D; caret-color: #103E4D; }
.hero--split.hero--stack .hero-form .fone .field select option { background: #fff; color: var(--ink); }
/* El legal NO puede ir en --ink-faint (#93A0A2): sobre blanco da 2,70:1. Es el gris
   que usa el resto del sitio para texto tenue sobre papel, pero a 11px sobre blanco
   puro no llega ni cerca de AA. Va en --ink-soft, que da 5,67. Lo que lo mantiene
   secundario es el tamano, no el gris. */
/* Centrado, como el encabezado: alineado a la izquierda debajo de un boton a todo el
   ancho, el bloque terminaba desbalanceado. */
.hero--split.hero--stack .hero-form .fone .form-legal { color: var(--ink-soft);
  text-align: center; text-wrap: balance; }
.hero--split.hero--stack .hero-form .fone .form-legal a { color: var(--teal); }
.hero--split.hero--stack .hero-form .form-msg.fail { background: rgba(200,60,40,.06); color: #B23A2A;
  border-color: rgba(200,60,40,.25); }

@media (max-width: 980px) {
  /* En mobile el copy usa todo el ancho: 3/4 de 393px son 295 y el H1 se parte en
     cinco renglones. */
  .hero--split.hero--stack .hero-mid { max-width: none; }
  .hero--split.hero--stack .hero-banner { min-height: clamp(420px, calc(100dvh - 210px), 600px); }
  .hero--split.hero--stack .hero-inner { padding-bottom: 72px; }
  /* La tarjeta se mete hacia adentro de los bordes del hero. Sin esto arranca en la
     misma linea vertical que la foto y se lee como una continuacion de ella, no como
     una pieza aparte apoyada encima. */
  /* `width: auto` va si o si: `.form-card` trae `width: 100%`, asi que con el margen
     lateral la tarjeta seguia midiendo el ancho entero del contenedor y se desbordaba
     16px por la derecha. */
  .hero--split.hero--stack .hero-form { margin-top: -40px; margin-inline: 16px; width: auto; }
}

/* =====================================================================
   FORMATO DE ENTREGA Y PERSONALIZACION
   =====================================================================
   Vivian en el <style> de las paginas de fin de ano. Al pasar tambien a las 5 homes
   se suben aca: son 9 paginas y copiarlas era garantizar que empiecen a divergir.
   ===================================================================== */
/* El CTA de las dos secciones. */
.of-cta { display: flex; justify-content: center; margin-top: clamp(18px, 2.2vw, 26px); }

/* ---- Formato de entrega: las dos cards del deck ----
   Proporciones de su CSS (.picks.p2 gap 24, .pick figure 432px de alto sobre
   1720px utiles). La figura va con `contain` y fondo blanco: las dos piezas son
   capturas, no fotos, y recortarlas les come el borde. */
.fmt2 { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(14px, 1.7vw, 24px); }
.fmt2-card { display: flex; flex-direction: column; overflow: hidden;
  background: var(--paper); border: 1px solid var(--line-soft); border-radius: var(--radius);
  box-shadow: 0 6px 28px rgba(16,62,77,.10), 0 2px 6px rgba(16,62,77,.05); }
.fmt2-card figure { margin: 0; height: clamp(240px, 25vw, 340px); background: var(--paper);
  padding: clamp(12px, 1.4vw, 18px) clamp(18px, 2vw, 30px); }
.fmt2-card figure img { width: 100%; height: 100%; object-fit: contain; display: block; }
/* Titulo arriba, imagen al medio, bajada abajo: el titulo nombra lo que se va a
   ver y la bajada lo explica despues de verlo. */
.fmt2-card h3 { font-family: var(--sans); font-size: clamp(1.25rem, 1.75vw, 1.6rem); font-weight: 600; letter-spacing: -.015em;
  text-align: center; padding: clamp(18px, 2vw, 26px) clamp(18px, 2vw, 30px) 0; margin: 0; }
.fmt2-card__desc { font-family: var(--sans-body); font-size: clamp(.86rem, .96vw, .94rem); line-height: 1.5; color: var(--ink-soft);
  text-align: center; padding: 0 clamp(18px, 2vw, 30px) clamp(18px, 2vw, 26px); margin: 0; }
.fmt2-card__desc b { font-family: var(--sans); font-weight: 600; color: var(--ink); }
.fmt2-kicker { font-family: var(--sans-body); font-size: clamp(.9rem, 1vw, .98rem); line-height: 1.5;
  color: var(--ink-soft); margin: clamp(20px, 2.4vw, 30px) 0 0; }
.fmt2-kicker b { font-family: var(--sans); font-weight: 600; color: var(--ink); }
@media (max-width: 760px) { .fmt2 { grid-template-columns: 1fr; } }

/* ---- Personalizacion: el mosaico del deck ----
   Proporciones tomadas de su CSS (.bentow 1.18fr/1fr, filas .92fr/1.08fr, gap 22px
   sobre 1720px de ancho util). Escaladas al contenedor de 1200 de la landing.
   Las imagenes van con `contain` y aire alrededor: son mockups de pantallas, no
   fotos — recortarlos les come el borde del dispositivo y se pierde la lectura. */
.pers-bento { display: grid; grid-template-columns: 1.18fr 1fr; grid-template-rows: .92fr 1.08fr;
  gap: clamp(14px, 1.6vw, 22px); height: clamp(430px, 43vw, 580px); }
.pers-card { display: flex; flex-direction: column; overflow: hidden;
  background: var(--paper); border: 1px solid var(--line-soft); border-radius: var(--radius);
  box-shadow: 0 6px 28px rgba(16,62,77,.10), 0 2px 6px rgba(16,62,77,.05); }
.pers-card figure { flex: 1; min-height: 0; margin: 0; padding: clamp(10px, 1.1vw, 14px) clamp(16px, 1.8vw, 26px); }
.pers-card figure img { width: 100%; height: 100%; object-fit: contain; display: block; }
.pers-card h3 { font-family: var(--sans); font-size: clamp(1rem, 1.25vw, 1.18rem); font-weight: 600;
  text-align: center; padding: clamp(14px, 1.5vw, 20px) clamp(16px, 1.8vw, 26px) 0; margin: 0; }
.pers-card__desc { font-family: var(--sans-body); font-size: clamp(.85rem, .95vw, .93rem); line-height: 1.45; color: var(--ink-soft);
  text-align: center; padding: 0 clamp(16px, 1.8vw, 26px) clamp(14px, 1.6vw, 20px); margin: 0; }
.pers-card--tall { grid-column: 2; grid-row: 1 / 3; }
/* Apilado: la altura fija del mosaico no sirve, cada card se acomoda a su imagen. */
@media (max-width: 860px) {
  .pers-bento { grid-template-columns: 1fr; grid-template-rows: none; height: auto; }
  .pers-card--tall { grid-column: 1; grid-row: auto; }
  .pers-card figure { aspect-ratio: 16 / 10; flex: none; }
}

/* La capa oscura del .sol-tile del sitio va a .95 abajo y .5 al medio: tapa la
   foto casi entera. Aca se afloja para que se vea el contenido de cada tile, que
   es lo que la seccion viene a mostrar. Abajo NO se toca tanto: es donde apoya el
   texto blanco y es lo unico que sostiene su legibilidad. Solo en #oferta — la
   seccion de Soluciones de la home comparte el componente. */
#oferta .sol-tile::after { background: linear-gradient(to top,
  rgba(9,24,30,.72) 0%, rgba(9,24,30,.46) 28%, rgba(9,24,30,.12) 64%, rgba(9,24,30,0) 100%); }

/* Nota de precio: una linea discreta debajo del bento. */
.of-nota { font-family: var(--sans-body); font-size: .92rem; color: var(--ink-soft);
  text-align: center; margin: clamp(20px, 2.4vw, 30px) 0 0; }
.of-nota b { font-family: var(--sans); font-weight: 600; color: var(--ink); }
.of-cta { display: flex; justify-content: center; margin-top: clamp(18px, 2.2vw, 26px); }
