/* Cronos Conecta — hoja única.
   La marca manda: el anillo de la O del logo es el motivo del hero y su
   degradado (cian → azul → violeta) es el único acento de color de la página. */

:root {
  --noche: #001433;
  --noche-2: #002050;
  --tinta: #002255;
  --texto: #46596F;
  --suave: #64768C;
  --azul: #0068E5;
  --azul-osc: #0052BC;
  --cian: #00B3E6;
  --violeta: #6E5BF0;
  --papel: #FFFFFF;
  --frio: #F2F6FC;
  --linea: #E2EAF4;
  --alerta: #C1121F;
  --verde: #0D8043;        /* WhatsApp, oscurecido para que el texto blanco contraste */
  --verde-osc: #0A6A37;
  --verde-vivo: #25D366;   /* verde de marca de WhatsApp, solo en iconos */
  --ig-rosa: #D82D7E;
  --fb: #1877F2;
  --radio: 12px;
  --radio-g: 18px;
  --sombra: 0 1px 2px rgba(0, 34, 85, .05), 0 18px 32px -26px rgba(0, 34, 85, .45);
  --sombra-alta: 0 2px 4px rgba(0, 34, 85, .06), 0 26px 44px -26px rgba(0, 34, 85, .5);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--papel);
  color: var(--texto);
  font-family: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: 1.0625rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

img, svg { display: block; max-width: 100%; }

h1, h2, h3, .boton { font-family: Outfit, system-ui, sans-serif; }
h1, h2, h3 { margin: 0; color: var(--tinta); letter-spacing: -0.022em; }
h1 { font-size: clamp(2.3rem, 1.25rem + 3.6vw, 3.7rem); font-weight: 700; line-height: 1.05; }
h2 { font-size: clamp(1.7rem, 1.15rem + 1.9vw, 2.45rem); font-weight: 600; line-height: 1.12; max-width: 20ch; }
h3 { font-size: 1.1875rem; font-weight: 600; line-height: 1.3; }
p { margin: 0; }

.wrap { width: 100%; max-width: 1120px; margin-inline: auto; padding-inline: 24px; }

.saltar {
  position: fixed; left: 14px; top: -70px; z-index: 60;
  background: var(--tinta); color: #fff; padding: 11px 18px;
  border-radius: var(--radio); text-decoration: none; transition: top 160ms ease;
}
.saltar:focus { top: 14px; }

:focus-visible { outline: 2px solid var(--azul); outline-offset: 3px; border-radius: 5px; }
.hero :focus-visible { outline-color: #7FD3FF; }

/* Cabecera --------------------------------------------------------------- */
.cabecera {
  position: fixed; inset: 0 0 auto; z-index: 40;
  transition: background-color 260ms ease, box-shadow 260ms ease, border-color 260ms ease;
  border-bottom: 1px solid transparent;
}
.cabecera-fila {
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px; min-height: 76px;
}
.marca { display: inline-flex; align-items: center; }
.marca img { width: 156px; height: auto; }
.marca-oscuro { display: none; }

.nav { display: flex; align-items: center; gap: 30px; }
.nav a {
  color: #D4E5FA; text-decoration: none;
  font-size: 0.9375rem; font-weight: 500;
  transition: color 180ms ease;
}
.nav a:hover { color: #fff; }

.cabecera.fija {
  background: rgba(255, 255, 255, .92);
  backdrop-filter: saturate(180%) blur(14px);
  border-bottom-color: var(--linea);
}
.cabecera.fija .marca-claro { display: none; }
.cabecera.fija .marca-oscuro { display: block; }
.cabecera.fija .nav a { color: var(--tinta); }
.cabecera.fija .nav a:hover { color: var(--azul); }
.cabecera.fija .nav a.boton { color: #fff; }

/* Botones ---------------------------------------------------------------- */
/* Sin sombra de color (ahí es donde todo botón acaba pareciéndose a Bootstrap):
   superficie plana y, como firma, el anillo de la O del logo con su degradado
   real. Al pasar por encima no se levanta: le crece un halo, como al anillo. */
.boton {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  min-height: 50px; padding: 14px 27px;
  background: var(--azul); color: #fff;
  border: 0; border-radius: 999px;
  font-size: 1rem; font-weight: 600; line-height: 1; letter-spacing: -0.008em;
  text-decoration: none; cursor: pointer; white-space: nowrap;
  box-shadow: 0 0 0 0 rgba(0, 104, 229, .22);
  transition: background-color 200ms ease, box-shadow 260ms cubic-bezier(.3, .9, .3, 1);
}
.boton:hover { background: var(--azul-osc); box-shadow: 0 0 0 5px rgba(0, 104, 229, .2); }
.boton:active { background: #00459E; box-shadow: 0 0 0 3px rgba(0, 104, 229, .28); }

/* El anillo del logo, en degradado real, hecho con máscara. */
.aro-btn {
  flex: none; width: 18px; height: 18px; border-radius: 50%;
  background: conic-gradient(from 190deg, #22D3F0, #4DA3FF 35%, #7B5CF0 68%, #22D3F0);
  -webkit-mask: radial-gradient(closest-side, transparent 0 51%, #000 53%);
  mask: radial-gradient(closest-side, transparent 0 51%, #000 53%);
  transition: transform 420ms cubic-bezier(.3, .9, .3, 1);
}
.boton:hover .aro-btn { transform: rotate(180deg); }

.boton-grande { min-height: 58px; padding: 18px 32px; font-size: 1.0938rem; }
.boton-chico { min-height: 42px; padding: 11px 18px; font-size: 0.9063rem; gap: 9px; }
.boton-ancho { width: 100%; }

.boton-verde { background: var(--verde); box-shadow: 0 0 0 0 rgba(13, 128, 67, .22); }
.boton-verde:hover { background: var(--verde-osc); box-shadow: 0 0 0 5px rgba(13, 128, 67, .2); }
.boton-verde:active { background: #085A2E; box-shadow: 0 0 0 3px rgba(13, 128, 67, .3); }

.boton-fantasma {
  background: transparent; color: #fff;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .32) inset;
}
.boton-fantasma:hover {
  background: rgba(255, 255, 255, .1);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .55) inset;
}

/* Hero ------------------------------------------------------------------- */
.hero {
  position: relative; isolation: isolate; overflow: hidden;
  padding-block: 168px 108px;
  background:
    radial-gradient(1100px 620px at 76% 34%, rgba(10, 92, 200, .55), transparent 62%),
    linear-gradient(158deg, var(--noche) 8%, var(--noche-2) 58%, #001A40 100%);
}
.hero::before {
  content: ""; position: absolute; inset: 0; z-index: -3;
  background: image-set(url("../img/hero-fondo.webp") type("image/webp"),
                        url("../img/hero-fondo.jpg") type("image/jpeg")) right center / cover no-repeat;
  opacity: .36;
  filter: saturate(.42) contrast(1.05);
  mix-blend-mode: luminosity;
  -webkit-mask-image: linear-gradient(to left, #000 6%, rgba(0, 0, 0, .5) 42%, transparent 76%);
  mask-image: linear-gradient(to left, #000 6%, rgba(0, 0, 0, .5) 42%, transparent 76%);
}
.hero::after {
  content: ""; position: absolute; inset: 0; z-index: -2;
  background-image: radial-gradient(rgba(255, 255, 255, .075) 1px, transparent 1px);
  background-size: 26px 26px;
  mask-image: linear-gradient(180deg, #000 10%, transparent 82%);
}
.hero-fondo {
  position: absolute; z-index: -1;
  top: 50%; right: -52px; transform: translateY(-50%);
  opacity: .55;
  pointer-events: none;
}
.hero-anillo { filter: drop-shadow(0 0 58px rgba(23, 130, 255, .38)); }
.aro-punteado { transform-origin: 280px 280px; animation: girar 68s linear infinite; }
@keyframes girar { to { transform: rotate(360deg); } }
.aro-grande {
  transform: rotate(-96deg); transform-origin: 280px 280px;
  stroke-dasharray: 1232; stroke-dashoffset: 1232;
  animation: trazar 1500ms cubic-bezier(.25, .8, .3, 1) 120ms forwards;
}
@keyframes trazar { to { stroke-dashoffset: 0; } }

.hero-texto { max-width: 660px; }
.hero h1 { color: #fff; text-wrap: balance; }
.entrada {
  margin-top: 24px; max-width: 54ch;
  color: #B7CDE8; font-size: 1.1563rem; line-height: 1.58;
}
.acciones { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 36px; }

.fichas {
  display: flex; flex-wrap: wrap; gap: 9px;
  list-style: none; margin: 44px 0 0; padding: 0;
}
.fichas li {
  padding: 7px 15px;
  border: 1px solid rgba(255, 255, 255, .2); border-radius: 999px;
  background: rgba(255, 255, 255, .06);
  color: #CBDEF6; font-size: 0.875rem; line-height: 1.4;
}

/* Secciones -------------------------------------------------------------- */
.seccion { padding-block: 92px; }
.seccion-frio { background: var(--frio); }

.rotulo {
  margin-bottom: 13px;
  color: var(--azul); font-weight: 600; font-size: 0.9375rem;
}
.bajada { margin-top: 15px; max-width: 58ch; color: var(--suave); }

.cabeza {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px 56px; align-items: end;
}
.cabeza .bajada { margin-top: 0; padding-bottom: 5px; }

/* La bajada tiene que caer sobre la misma columna que el contenido de su
   sección, y cada sección usa una rejilla distinta. */
#servicios .cabeza {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 20px 18px;
}
#servicios .cabeza > div { grid-column: span 3; }
#servicios .cabeza > .bajada { grid-column: span 3; }

#desarrollo .cabeza { gap: 20px 72px; }
.seccion-oscura .cabeza { gap: 20px 60px; }

/* A partir de aquí las tarjetas destacadas pasan a ancho completo, así que la
   cabecera tiene que apilarse al mismo tiempo o la bajada queda descolgada. */
@media (max-width: 1040px) {
  #servicios .cabeza { grid-template-columns: minmax(0, 1fr); }
  #servicios .cabeza > div, #servicios .cabeza > .bajada { grid-column: span 1; }
}

/* Tarjetas de servicio --------------------------------------------------- */
/* Rejilla asimétrica: los dos servicios que sostienen el negocio ocupan el
   doble y uno de ellos es oscuro. El resto son fichas cortas. Los iconos van
   dibujados a tamaño grande y sin pastilla de color detrás. */
.tarjetas {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 18px; margin-top: 48px;
}
.tarjeta {
  position: relative; overflow: hidden;
  display: flex; flex-direction: column;
  padding: 30px 28px 34px;
  background: var(--papel);
  border: 1px solid var(--linea); border-radius: 20px;
  transition: border-color 240ms ease, box-shadow 240ms ease, transform 240ms ease;
}
.tarjeta:hover {
  transform: translateY(-2px);
  border-color: #C2D8F6;
  box-shadow: 0 22px 40px -30px rgba(0, 34, 85, .6);
}
.tarjeta { grid-column: span 2; }
.destacada { grid-column: span 3; padding: 34px 32px 36px; }


.ico { width: 40px; height: 40px; margin-bottom: 22px; color: var(--azul); }
.destacada .ico { width: 48px; height: 48px; }

.tarjeta h3 { font-size: 1.1875rem; }
.destacada h3 { font-size: 1.4375rem; }
.tarjeta p { margin-top: 10px; font-size: 0.9688rem; }
.destacada p { font-size: 1.0313rem; max-width: 46ch; }

.puntos {
  list-style: none; margin: auto 0 0; padding: 22px 0 0;
  display: flex; flex-wrap: wrap; gap: 8px 22px;
  font-size: 0.9063rem; color: var(--suave);
}
.puntos li {
  padding-left: 23px;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230068E5' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'><path d='m2.8 8.5 3.3 3.3L13.2 4.6'/></svg>") no-repeat left 0.2em / 14px 14px;
}

/* La tarjeta oscura: lleva el anillo del logo como sello. */
.oscura {
  background: linear-gradient(152deg, #002B66 0%, #001938 96%);
  border-color: transparent; color: #B7CDE8;
}
.oscura h3 { color: #fff; }
.oscura .ico { color: var(--cian); }
.oscura:hover { border-color: transparent; box-shadow: 0 26px 48px -30px rgba(0, 20, 51, .9); }
.oscura .puntos { color: #C6DCF3; }
.oscura .puntos li {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2322D3F0' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'><path d='m2.8 8.5 3.3 3.3L13.2 4.6'/></svg>");
}
.marca-aro {
  position: absolute; right: -70px; top: -70px;
  width: 230px; height: 230px; border-radius: 50%;
  background: conic-gradient(from 200deg, #22D3F0, #4DA3FF 38%, #7B5CF0 72%, #22D3F0);
  -webkit-mask: radial-gradient(closest-side, transparent 0 76%, #000 78%);
  mask: radial-gradient(closest-side, transparent 0 76%, #000 78%);
  opacity: .45; pointer-events: none;
}

/* La rejilla siempre tiene 6 columnas; solo cambia cuánto ocupa cada tarjeta,
   así la fila de tres nunca se rompe en 2 + 1 suelta. Ojo al orden: .destacada
   tiene que ir después de .tarjeta o la gana por venir más abajo. */
@media (max-width: 1040px) {
  .tarjeta { grid-column: span 2; }
  .destacada { grid-column: span 6; padding: 30px 28px 32px; }
}
@media (max-width: 700px) {
  .tarjeta { grid-column: span 3; }
  .destacada { grid-column: span 6; }
}
@media (max-width: 540px) {
  .tarjeta { grid-column: span 6; }
  .destacada { grid-column: span 6; padding: 28px 24px 30px; }
}

/* Desarrollo ------------------------------------------------------------- */
/* Sin cajas ni reglas: el espacio es lo que separa. */
.desarrollo {
  list-style: none; margin: 56px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 48px 72px;
}
.desarrollo h3 { font-size: 1.3125rem; line-height: 1.25; }
.desarrollo p { margin-top: 12px; max-width: 46ch; }

@media (max-width: 820px) {
  .desarrollo { grid-template-columns: minmax(0, 1fr); gap: 36px; margin-top: 40px; }
  .desarrollo h3 { font-size: 1.1875rem; }
}

/* Banda oscura: por qué importa ------------------------------------------ */
/* Mismo recurso que el hero: la foto entra como textura, en luminancia y
   disuelta hacia la izquierda. Sin cajas: solo una regla fina y tipografía. */
.seccion-oscura {
  position: relative; isolation: isolate; overflow: hidden;
  background:
    radial-gradient(900px 520px at 84% 26%, rgba(10, 92, 200, .5), transparent 64%),
    linear-gradient(158deg, var(--noche) 6%, var(--noche-2) 62%, #001A40 100%);
  color: #A9C2E0;
}
.seccion-oscura::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: image-set(url("../img/banda.webp") type("image/webp"),
                        url("../img/banda.jpg") type("image/jpeg")) right center / cover no-repeat;
  opacity: .3;
  filter: saturate(.4) contrast(1.05);
  mix-blend-mode: luminosity;
  -webkit-mask-image: linear-gradient(to left, #000 4%, rgba(0, 0, 0, .45) 40%, transparent 78%);
  mask-image: linear-gradient(to left, #000 4%, rgba(0, 0, 0, .45) 40%, transparent 78%);
}
.seccion-oscura h2 { color: #fff; }
.seccion-oscura .rotulo { color: var(--cian); }
.seccion-oscura .bajada { color: #9DB6D6; }

.claves {
  list-style: none; margin: 52px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 40px 60px;
}
.claves li { padding-top: 24px; border-top: 1px solid rgba(255, 255, 255, .16); }
.claves h3 {
  color: #fff; font-size: 1.375rem; font-weight: 600;
  line-height: 1.22; max-width: 26ch; text-wrap: balance;
}
.claves p { margin-top: 12px; font-size: 0.9688rem; max-width: 44ch; color: #9DB6D6; }

@media (max-width: 820px) {
  .claves { grid-template-columns: minmax(0, 1fr); gap: 30px; }
  .claves h3 { font-size: 1.25rem; }
  .seccion-oscura::before { opacity: .2; mask-image: linear-gradient(to left, #000 0%, transparent 92%); }
}

/* Contacto --------------------------------------------------------------- */
/* Dos columnas y nada más: el formulario sin caja a la izquierda, y las vías
   directas a la derecha como texto, sin tarjetas ni panel. */
.contacto-fila {
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .62fr);
  gap: 72px; align-items: start;
  margin-top: 46px;
}

.vias { position: relative; display: grid; gap: 32px; }
/* Filete con el degradado de la marca, en lugar de una caja. */
.vias::before {
  content: ""; position: absolute; top: 4px; bottom: 4px; left: -36px; width: 2px;
  background: linear-gradient(180deg, transparent, var(--cian) 10%, var(--azul) 46%, var(--violeta) 82%, transparent);
  opacity: .5;
}
.via-nombre { color: var(--suave); font-size: 0.875rem; }
.via-valor {
  display: inline-flex; align-items: center; gap: 10px;
  margin-top: 8px;
  color: var(--tinta); text-decoration: none;
  font-size: 1.125rem; font-weight: 600; letter-spacing: -0.012em;
  transition: color 180ms ease;
}
.via-valor svg { flex: none; }
.via-valor:hover { color: var(--azul); }
.via-valor.tel { display: flex; width: fit-content; }
.via-valor.tel:hover { color: var(--verde); }
.via-valor.segundo { margin-top: 12px; }
.via-valor.segundo:hover { color: var(--verde); }
.via-pie { margin-top: 10px; color: var(--suave); font-size: 0.875rem; }

.form { padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; }
.pareja { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; }
.campo { margin-bottom: 24px; }
.campo label {
  display: block; margin-bottom: 8px;
  color: var(--tinta); font-weight: 600; font-size: 0.9375rem;
}
.campo input, .campo select, .campo textarea {
  width: 100%; padding: 15px 17px;
  border: 1px solid #DCE7F5; border-radius: 14px;
  background: var(--papel); color: var(--tinta);
  font: inherit; font-size: 1rem;
  transition: border-color 180ms ease, box-shadow 180ms ease;
}
.campo textarea { resize: vertical; min-height: 118px; }
.campo input:hover, .campo select:hover, .campo textarea:hover { border-color: #BFD3ED; }
.campo input:focus, .campo select:focus, .campo textarea:focus { box-shadow: 0 0 0 4px rgba(0, 104, 229, .12); }
.campo [aria-invalid="true"] { border-color: var(--alerta); }

.ayuda { margin-top: 8px; color: var(--suave); font-size: 0.875rem; line-height: 1.45; }
.error { margin-top: 8px; color: var(--alerta); font-size: 0.875rem; font-weight: 500; }

.resumen {
  margin-bottom: 24px; padding: 15px 17px;
  border: 1px solid #F3C6CA; border-left: 3px solid var(--alerta);
  border-radius: var(--radio); background: #FEF4F4;
}
.resumen h3 { font-size: 1rem; color: var(--alerta); }
.resumen ul { margin: 9px 0 0; padding-left: 19px; font-size: 0.9375rem; }
.resumen a { color: var(--alerta); }

.nota { margin-top: 14px; color: var(--suave); font-size: 0.875rem; }
.enviar { margin-top: 6px; min-width: 260px; }
.exito {
  margin-top: 18px; padding: 13px 15px;
  border: 1px solid #BCE3CB; border-radius: var(--radio);
  background: #F1FAF5; color: #12603A; font-size: 0.9375rem;
}

@media (max-width: 900px) {
  .contacto-fila { grid-template-columns: minmax(0, 1fr); gap: 44px; }
  .vias::before { display: none; }
}
@media (max-width: 560px) {
  .pareja { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .enviar { width: 100%; min-width: 0; }
}

/* Pie -------------------------------------------------------------------- */
.pie { background: var(--noche); color: #9FB8D6; padding-block: 54px; }
.pie-fila { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 32px 48px; }
.pie-marca img { width: 156px; height: auto; margin-bottom: 18px; }
.pie-marca p { max-width: 38ch; font-size: 0.9375rem; }
.pie-datos { font-size: 0.9375rem; }
.pie-datos strong { color: #fff; font-weight: 600; }
.pie-datos a { color: #fff; text-decoration: none; }
.pie-datos a:hover { text-decoration: underline; }

/* Entrada del hero (único momento animado) ------------------------------- */
.hero h1, .hero .entrada, .hero .acciones, .hero .fichas {
  animation: entrar 700ms cubic-bezier(.22, .8, .28, 1) both;
}
.hero .entrada { animation-delay: 90ms; }
.hero .acciones { animation-delay: 170ms; }
.hero .fichas { animation-delay: 250ms; }
@keyframes entrar {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: none; }
}

.js .aparece, .js .aparece-lista > li {
  opacity: 0; transform: translateY(18px);
  transition: opacity 560ms cubic-bezier(.22, .8, .28, 1), transform 560ms cubic-bezier(.22, .8, .28, 1);
}
.js .aparece.visible, .js .aparece-lista > li.visible { opacity: 1; transform: none; }

/* Responsive ------------------------------------------------------------- */
@media (max-width: 1100px) {
  .hero-fondo { right: -240px; opacity: .5; }
}

@media (max-width: 900px) {
  .cabeza { grid-template-columns: minmax(0, 1fr); align-items: start; }
  .cabeza .bajada { padding-bottom: 0; }
  .hero { padding-block: 140px 96px; }
  .hero-fondo { top: auto; bottom: -180px; right: -200px; transform: none; opacity: .45; }
}

@media (max-width: 720px) {
  body { font-size: 1rem; }
  .cabecera-fila { min-height: 66px; }
  .nav { gap: 0; }
  .nav a:not(.boton) { display: none; }
  .marca img, .pie-marca img { width: 138px; }
  .hero { padding-block: 116px 80px; }
  .entrada { font-size: 1.0625rem; }
  .acciones .boton { flex: 1 1 200px; }
  .seccion { padding-block: 68px; }
  .tarjetas, .cambios { margin-top: 36px; }
  .form { padding: 24px 20px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-delay: 0ms !important;
    transition-duration: .001ms !important;
  }
  .aro-grande { stroke-dashoffset: 0; }
  .aro-punteado { animation: none; }
  .aparece, .aparece-lista > li { opacity: 1; transform: none; }
}
