/* ============================================================
   WorkLab 3 (WLB³) — Landing corporativa
   Versión: v0.4 · 11 nov 2026
   Identidad: azul profundo + verde, editorial, sobria.
   Tipografía: Sora (titulares) + Manrope (texto).
   ============================================================ */

/* ---------- Splash de bienvenida (puertas que se abren) ---------- */
.splash{
  position:fixed;
  inset:0;
  z-index:1000;
  display:grid;
  place-items:center;
  overflow:hidden;
  transition:opacity .8s ease, visibility .8s ease;
}
.splash.is-hidden{ opacity:0; visibility:hidden; pointer-events:none; }
.splash-door{
  position:absolute;
  top:0; bottom:0;
  width:50%;
  background:linear-gradient(165deg, var(--azul) 0%, var(--azul-oscuro) 100%);
  transition:transform .9s cubic-bezier(.7,0,.3,1);
  z-index:1;
}
.splash-door--left{ left:0; transform-origin:left center; }
.splash-door--right{ right:0; transform-origin:right center; }
.splash.is-open .splash-door--left{ transform:translateX(-100%); }
.splash.is-open .splash-door--right{ transform:translateX(100%); }
.splash-center{
  position:relative;
  z-index:2;
  text-align:center;
  color:#fff;
  font-family:var(--titular);
  display:grid;
  gap:18px;
  place-items:center;
  transition:transform .6s ease, opacity .6s ease;
}
.splash-logo{
  height:78px;
  width:auto;
  filter:drop-shadow(0 8px 24px rgba(0,0,0,.35));
  animation:splashLogoIn .7s cubic-bezier(.2,.9,.3,1.2) .1s both;
}
.splash-text{
  font-size:clamp(1.8rem, 5vw, 3.6rem);
  font-weight:700;
  letter-spacing:-.02em;
  text-shadow:0 6px 24px rgba(0,0,0,.35);
  opacity:0;
  animation:splashTextIn .6s ease-out .5s forwards;
}
.splash-text span.accent{ color:var(--verde-vivo); }
.splash-flash{
  position:absolute;
  inset:0;
  background:radial-gradient(circle, rgba(114,191,68,.55), transparent 60%);
  opacity:0;
  transform:scale(.2);
  z-index:1;
  pointer-events:none;
}
.splash.is-open .splash-flash{ animation:splashFlash .7s ease-out; }
.splash.is-open .splash-center{ transform:scale(1.08); opacity:0; transition:transform .6s ease, opacity .6s ease; }

@keyframes splashLogoIn{
  from{ transform:scale(.4) rotate(-15deg); opacity:0; filter:blur(8px); }
  70%{ transform:scale(1.08) rotate(4deg); opacity:1; filter:blur(0); }
  to{ transform:scale(1) rotate(0); opacity:1; }
}
@keyframes splashTextIn{
  from{ opacity:0; transform:translateY(20px); }
  to{ opacity:1; transform:translateY(0); }
}
@keyframes splashFlash{
  0%{ opacity:0; transform:scale(.2); }
  30%{ opacity:1; transform:scale(1.2); }
  100%{ opacity:0; transform:scale(2.4); }
}

/* ---------- Reveal al hacer scroll ---------- */
.reveal{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .6s ease, transform .6s ease;
}
.reveal.is-visible{
  opacity:1;
  transform:translateY(0);
}

/* ---------- Banner de cookies (solo esenciales) ---------- */
.cookie-banner{
  position:fixed;
  left:16px;
  right:16px;
  bottom:16px;
  z-index:90;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
  padding:14px 18px;
  background:var(--azul-oscuro);
  color:rgba(255,255,255,.85);
  border:1px solid rgba(255,255,255,.12);
  border-radius:14px;
  box-shadow:0 18px 40px rgba(10,37,64,.28);
  font-size:.85rem;
  line-height:1.5;
}
.cookie-banner[hidden]{ display:none; }
.cookie-banner p{ margin:0; max-width:720px; }
.cookie-banner a{ color:var(--verde-vivo); text-decoration:underline; }
.cookie-banner .btn{ padding:9px 18px; font-size:.82rem; white-space:nowrap; }

@media (max-width:640px){
  .cookie-banner{ left:10px; right:10px; bottom:10px; flex-direction:column; align-items:stretch; }
  .cookie-banner .btn{ width:100%; }
}

/* ---------- Barra de progreso de scroll ---------- */
.scroll-progress{
  position:fixed;
  top:0; left:0;
  height:3px;
  width:0%;
  background:linear-gradient(90deg, var(--verde), var(--verde-vivo));
  z-index:100;
  pointer-events:none;
  box-shadow:0 0 12px rgba(114,191,68,.5);
}

/* ---------- Patrón de puntos en Somos ---------- */
#somos{
  position:relative;
  overflow:hidden;
}
#somos::before{
  content:"";
  position:absolute;
  inset:0;
  background-image:radial-gradient(rgba(27,73,101,.06) 1px, transparent 1px);
  background-size:24px 24px;
  pointer-events:none;
  z-index:0;
  mask-image:linear-gradient(180deg, transparent 0%, #000 22%, #000 78%, transparent 100%);
  -webkit-mask-image:linear-gradient(180deg, transparent 0%, #000 22%, #000 78%, transparent 100%);
}
#somos > .container{ position:relative; z-index:1; }

/* ---------- Tokens y base ---------- */
:root{
  --azul:        #1B4965;
  --azul-oscuro: #0A2540;
  --verde:       #1F6A4F;
  --verde-vivo:  #72BF44;
  --blanco:      #FFFFFF;
  --fondo-alt:   #F0F1F5;
  --borde:       #D8DEE6;
  --texto-suave: #4A5A6A;

  --titular: "Sora", system-ui, -apple-system, "Segoe UI", sans-serif;
  --texto:   "Manrope", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --contenedor: 1200px;
  --radio: 12px;
  --radio-lg: 20px;
  --sombra: 0 16px 40px rgba(10,37,64,.10);
  --sombra-fuerte: 0 28px 70px rgba(10,37,64,.18);

  --header-h: 128px;
}

*,*::before,*::after{ box-sizing:border-box; }

html{
  scroll-behavior:smooth;
  scroll-padding-top:var(--header-h);
}

body{
  margin:0;
  background:var(--blanco);
  color:var(--azul-oscuro);
  font-family:var(--texto);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4{
  margin:0;
  font-family:var(--titular);
  font-weight:700;
  line-height:1.1;
  letter-spacing:-.025em;
}

p{ margin:0; }
a{ color:inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
img,svg{ max-width:100%; display:block; }

:focus-visible{
  outline:3px solid var(--verde-vivo);
  outline-offset:3px;
  border-radius:4px;
}

.skip{
  position:absolute; left:-9999px; top:0;
  background:var(--azul); color:#fff;
  padding:12px 20px; z-index:100; border-radius:0 0 8px 0;
}
.skip:focus{ left:0; }

.container{
  width:100%;
  max-width:var(--contenedor);
  margin-inline:auto;
  padding-inline:24px;
}

.eyebrow{
  display:inline-block;
  font-size:12px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--verde);
  margin-bottom:18px;
}

.section{ padding:104px 0; }
.section--alt{ background:var(--fondo-alt); }

.section-head{
  max-width:820px;
  margin-bottom:56px;
}
.section-head h2{
  font-size:clamp(1.9rem, 3.2vw, 2.85rem);
  margin-bottom:20px;
}
.section-head p{
  color:var(--texto-suave);
  font-size:1.05rem;
  max-width:720px;
}

/* ---------- Botones ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:15px 26px;
  border-radius:999px;
  font-family:var(--texto);
  font-weight:700;
  font-size:.95rem;
  border:1.5px solid transparent;
  transition:background .2s, color .2s, border-color .2s, transform .2s;
  cursor:pointer;
  position:relative;
  overflow:hidden;
}
.btn:hover{ transform:translateY(-1px); }
.btn--primary{
  background:var(--azul);
  color:#fff;
}
.btn--primary:hover{ background:#143a50; }
.btn--ghost{
  background:transparent;
  color:var(--azul);
  border-color:var(--borde);
}
.btn--ghost:hover{ border-color:var(--azul); }
.btn--verde{
  background:var(--verde-vivo);
  color:var(--azul-oscuro);
}
.btn--verde:hover{ background:#63ad39; }
.btn--claro{
  background:#fff;
  color:var(--azul);
}
.btn--claro:hover{ background:#eef2f5; }

/* ---------- Header ---------- */
.site-header{
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--borde);
}
.header-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:28px;
  min-height:var(--header-h);
}
.site-header.is-scrolled{
  box-shadow:0 6px 22px rgba(10,37,64,.09);
}
.logo{
  display:inline-flex;
  align-items:center;
  flex:none;
}
.logo-img{
  height:88px;
  width:auto;
  display:block;
}
.logo-img--footer{ height:96px; }

.nav-desktop{
  display:flex;
  align-items:center;
  gap:40px;
}
.nav-desktop a{
  font-size:1.05rem;
  font-weight:700;
  color:#fff;
  background:var(--azul);
  padding:12px 22px;
  border-radius:999px;
  transition:background .2s, transform .2s;
}
.nav-desktop a:hover{ background:#143a50; }

.header-cta{ display:flex; align-items:center; gap:12px; }
.header-cta .btn{ padding:12px 22px; font-size:.9rem; }

/* Menú móvil CSS-only */
.menu-movil{ display:none; position:relative; }
.menu-movil summary{
  list-style:none;
  cursor:pointer;
  border:1.5px solid var(--borde);
  border-radius:999px;
  padding:10px 18px;
  font-size:.88rem;
  font-weight:700;
  color:var(--azul);
}
.menu-movil summary::-webkit-details-marker{ display:none; }
.menu-movil nav{
  position:absolute;
  right:0;
  top:calc(100% + 10px);
  background:#fff;
  border:1px solid var(--borde);
  border-radius:var(--radio);
  box-shadow:var(--sombra);
  padding:12px;
  min-width:230px;
  display:grid;
  gap:4px;
}
.menu-movil nav a{
  padding:11px 12px;
  border-radius:8px;
  font-size:.95rem;
  color:var(--texto-suave);
}
.menu-movil nav a:hover{ background:var(--fondo-alt); color:var(--azul); }

/* ---------- Hero ---------- */
.hero{
  padding:72px 0 100px;
  position:relative;
  overflow:hidden;
}
.hero::before{
  content:"";
  position:absolute;
  inset:-25%;
  background:
    radial-gradient(circle at 18% 28%, rgba(114,191,68,.16), transparent 40%),
    radial-gradient(circle at 82% 72%, rgba(27,73,101,.18), transparent 46%),
    radial-gradient(circle at 50% 50%, rgba(31,106,79,.08), transparent 55%);
  background-size:200% 200%;
  animation:heroGradient 16s ease-in-out infinite;
  filter:blur(28px);
  z-index:0;
  pointer-events:none;
}
.hero > .container{ position:relative; z-index:1; }

.hero-grid{
  display:grid;
  grid-template-columns:1.02fr .98fr;
  gap:64px;
  align-items:center;
}
.hero h1{
  font-size:clamp(1.9rem, 3.1vw, 3rem);
  margin-bottom:24px;
}
.hero h1 em{
  font-style:normal;
  background:linear-gradient(120deg, var(--verde) 0%, var(--verde-vivo) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  position:relative;
}
.hero-lead{
  color:var(--texto-suave);
  font-size:1.08rem;
  max-width:570px;
  margin-bottom:34px;
}
.hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
}
.hero-actions .btn{
  padding:16px 30px;
  font-size:1rem;
}

/* Visual del hero: foto potente + tarjeta del exponente */
.hero-visual{
  position:relative;
  width:100%;
  max-width:580px;
  margin-left:auto;
  aspect-ratio:1 / 1.06;
}
.hero-watermark{
  position:absolute;
  top:-9%;
  right:-7%;
  font-family:var(--titular);
  font-size:clamp(10rem, 21vw, 17rem);
  font-weight:700;
  line-height:1;
  color:rgba(27,73,101,.10);
  z-index:0;
  pointer-events:none;
  user-select:none;
}
.hero-photo{
  position:absolute;
  top:3%;
  left:9%;
  width:91%;
  height:94%;
  margin:0;
  border-radius:30px;
  overflow:hidden;
  background:var(--fondo-alt);
  box-shadow:var(--sombra-fuerte), 0 0 0 1px rgba(255,255,255,.6), 0 0 60px rgba(114,191,68,.12);
  z-index:1;
  border:1px solid rgba(255,255,255,.5);
}
.hero-visual::before{
  content:"";
  position:absolute;
  left:12%;
  top:8%;
  width:80%;
  height:88%;
  background:radial-gradient(circle at 50% 50%, rgba(114,191,68,.18), transparent 62%);
  filter:blur(30px);
  z-index:0;
  pointer-events:none;
}
.hero-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(1.06) contrast(1.03);
}
.hero-photo::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(10,37,64,.20) 0%, rgba(10,37,64,.04) 40%, rgba(10,37,64,.40) 100%);
  z-index:1;
}
.hero-photo::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(10,37,64,0) 46%, rgba(10,37,64,.58) 100%);
  z-index:2;
}

.hero-card{
  position:absolute;
  left:-6%;
  bottom:2%;
  width:36%;
  background:var(--azul-oscuro);
  color:#fff;
  border-radius:18px;
  padding:18px 16px;
  box-shadow:0 18px 40px rgba(10,37,64,.26), 0 0 0 1px rgba(114,191,68,.18), 0 0 30px rgba(114,191,68,.10);
  z-index:4;
  border-top:2px solid var(--verde-vivo);
}
.hc-label{
  font-size:10px;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:rgba(255,255,255,.6);
}
.hero-card .cube{
  font-family:var(--titular);
  font-size:2.8rem;
  font-weight:700;
  line-height:1;
  color:var(--verde-vivo);
  margin:2px 0 8px;
}
.hero-card ul{ display:grid; gap:10px; }
.hero-card li{
  display:grid;
  gap:1px;
  padding-bottom:6px;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.hero-card li:last-child{ border-bottom:0; padding-bottom:0; }
.hero-card li span{
  font-size:9px;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:rgba(255,255,255,.5);
}
.hero-card li strong{
  font-size:.78rem;
  font-weight:600;
}

.hero-chip{
  position:absolute;
  top:6%;
  left:-2%;
  display:inline-flex;
  align-items:center;
  gap:9px;
  background:#fff;
  border:1px solid var(--borde);
  border-radius:999px;
  padding:10px 17px;
  box-shadow:var(--sombra);
  font-size:.82rem;
  font-weight:700;
  color:var(--azul);
  z-index:3;
}
.hero-chip::before{
  content:"";
  width:8px; height:8px;
  border-radius:50%;
  background:var(--verde-vivo);
  flex:none;
}
.hero-chip span{ color:var(--texto-suave); font-weight:600; }

/* ---------- Hero collage corporativo ---------- */
.hero-collage{
  position:relative;
  width:100%;
  max-width:580px;
  margin-left:auto;
  aspect-ratio:1 / 1.05;
}
.hero-map{
  position:absolute;
  left:-6%;
  top:8%;
  width:52%;
  opacity:.85;
  z-index:0;
  pointer-events:none;
}
.hero-shape{
  position:absolute;
  border-radius:40% 60% 55% 45% / 45% 55% 42% 58%;
  z-index:0;
}
.hero-shape--1{
  width:34%;
  aspect-ratio:1;
  background:var(--azul);
  opacity:.10;
  left:-4%;
  top:6%;
  animation:heroBlob 9s ease-in-out infinite alternate;
}
.hero-shape--2{
  width:26%;
  aspect-ratio:1;
  background:var(--verde-vivo);
  opacity:.12;
  right:2%;
  bottom:8%;
  border-radius:60% 40% 45% 55% / 55% 45% 58% 42%;
  animation:heroBlob 7s ease-in-out infinite alternate-reverse;
}
.hero-frame{
  position:absolute;
  border-radius:20px;
  overflow:hidden;
  box-shadow:0 18px 46px rgba(10,37,64,.16);
  background:var(--fondo-alt);
  z-index:1;
}
.hero-frame img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .6s ease;
}
.hero-frame:hover img{ transform:scale(1.05); }
.hero-frame--1{ width:52%; aspect-ratio:4/3; top:0; right:0; }
.hero-frame--2{ width:40%; aspect-ratio:1; top:12%; left:0; z-index:2; }
.hero-frame--3{ width:46%; aspect-ratio:4/3; bottom:6%; right:6%; z-index:2; }
.hero-frame--4{ width:34%; aspect-ratio:1; bottom:0; left:4%; }
.hero-collage .hero-card{ z-index:3; }
.hero-collage .hero-chip{
  z-index:3;
  top:4%;
  right:2%;
  left:auto;
}

@media (max-width:640px){
  .hero-collage{ aspect-ratio:1 / 1.15; }
  .hero-frame--1{ width:58%; }
  .hero-frame--2{ width:44%; }
  .hero-frame--3{ width:52%; }
  .hero-frame--4{ width:38%; }
  .hero-map{ width:60%; }
}

/* ---------- Hero poster (collage corporativo, Antioquia) ---------- */
.hero-poster{
  position:relative;
  width:100%;
  max-width:520px;
  margin-left:auto;
  aspect-ratio:500 / 552;
  border-radius:24px;
  overflow:hidden;
  background:linear-gradient(180deg, #FFFFFF 0%, #F2F3F5 100%);
  box-shadow:0 28px 70px rgba(10,37,64,.16);
}
.poster-bg{ position:absolute; inset:0; z-index:0; }
.poster-map{
  position:absolute;
  left:3%;
  top:22%;
  width:32%;
  z-index:1;
}
.poster-map svg{ width:100%; height:auto; display:block; }
.poster-quarter{
  position:absolute;
  width:18%;
  aspect-ratio:1;
  background:#1F4E6E;
  z-index:1;
  opacity:.85;
}
.poster-quarter--1{
  left:2%;
  top:68%;
  clip-path:polygon(0 0, 50% 0, 50% 50%, 0 50%);
}
.poster-quarter--2{
  right:2%;
  top:4%;
  clip-path:polygon(50% 50%, 100% 50%, 100% 100%, 50% 100%);
}
.poster-photo{
  position:absolute;
  margin:0;
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 10px 28px rgba(10,37,64,.14);
  background:var(--fondo-alt);
  z-index:2;
}
.poster-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .6s ease;
}
.poster-photo:hover img{ transform:scale(1.04); }
/* Layout: mapa a la izquierda, fotos en la derecha y abajo, sin solaparse */
.poster-photo--1{
  left:4%;
  top:4%;
  width:47%;
  aspect-ratio:4 / 3;
  z-index:3;
}
.poster-photo--2{
  right:4%;
  top:4%;
  width:47%;
  aspect-ratio:4 / 3;
  z-index:3;
}
.poster-photo--3{
  left:4%;
  top:36%;
  width:47%;
  aspect-ratio:4 / 3;
  z-index:3;
}
.poster-photo--4{
  right:4%;
  top:36%;
  width:47%;
  aspect-ratio:4 / 3;
  z-index:3;
}
.poster-photo--5{
  left:4%;
  bottom:4%;
  width:92%;
  aspect-ratio:16 / 9;
  z-index:2;
}
.hero-poster .hero-card{
  position:absolute;
  right:4%;
  bottom:6%;
  width:40%;
  z-index:5;
}
.hero-poster .hero-chip{
  position:absolute;
  left:4%;
  top:4%;
  z-index:5;
}

@media (max-width:640px){
  .hero-poster{ max-width:100%; }
}

/* ---------- Somos ---------- */
.somos-intro{
  display:grid;
  grid-template-columns:1.08fr .92fr;
  gap:56px;
  align-items:start;
}
.somos-texto p{
  color:var(--texto-suave);
  margin-bottom:18px;
}
.somos-texto p:last-child{ margin-bottom:0; }

.exponente{
  position:sticky;
  top:132px;
  background:#fff;
  border:1px solid var(--borde);
  border-radius:var(--radio-lg);
  padding:30px;
  box-shadow:0 2px 0 rgba(10,37,64,.04);
  overflow:visible;
}
.exponente-cubo{
  position:absolute;
  top:-14px;
  right:-8px;
  font-family:var(--titular);
  font-size:10rem;
  font-weight:700;
  line-height:1;
  color:rgba(114,191,68,.30);
  pointer-events:none;
  z-index:0;
}
.exponente h3{
  font-size:1.15rem;
  margin-bottom:12px;
  color:var(--azul);
  position:relative;
  z-index:1;
}
.exponente p{
  color:var(--texto-suave);
  font-size:.95rem;
  position:relative;
  z-index:1;
}
.exponente-lista{
  display:grid;
  gap:10px;
  margin-top:22px;
  position:relative;
  z-index:1;
}
.exponente-lista li{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  border-radius:10px;
  background:var(--fondo-alt);
  font-size:.86rem;
  color:var(--texto-suave);
}
.exponente-lista strong{
  color:var(--azul);
  font-weight:700;
}

.valores{
  margin-top:76px;
  display:grid;
  grid-template-columns:.78fr 1.22fr;
  gap:56px;
  align-items:start;
}
.valores-intro h3{
  font-size:clamp(1.45rem, 2.3vw, 2rem);
  color:var(--azul);
  margin-bottom:16px;
}
.valores-intro p{
  color:var(--texto-suave);
  font-size:.98rem;
}
.valores-lista{ display:grid; gap:12px; }
.valor{
  border:1px solid var(--borde);
  border-radius:14px;
  background:#fff;
  overflow:hidden;
  transition:border-color .2s, box-shadow .2s;
}
.valor:hover{ border-color:rgba(31,106,79,.38); }
.valor[open]{ border-color:rgba(31,106,79,.38); box-shadow:0 10px 30px rgba(10,37,64,.06); }
.valor summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:14px;
  padding:19px 22px;
  font-family:var(--titular);
  font-size:.98rem;
  font-weight:600;
  color:var(--azul);
}
.valor summary::-webkit-details-marker{ display:none; }
.valor summary::after{
  content:"+";
  margin-left:auto;
  font-family:var(--texto);
  font-size:1.4rem;
  font-weight:500;
  line-height:1;
  color:var(--verde);
  transition:transform .2s;
}
.valor[open] summary::after{ content:"−"; }
.valor-num{
  font-family:var(--texto);
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.12em;
  color:var(--verde);
  flex:none;
}
.valor-cuerpo{
  padding:0 22px 22px 52px;
  color:var(--texto-suave);
  font-size:.92rem;
}

/* ---------- Hacemos / Servicios ---------- */
.servicios-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
}
.servicio{
  position:relative;
  display:flex;
  flex-direction:column;
  border:1px solid var(--borde);
  border-radius:var(--radio-lg);
  padding:30px 28px;
  background:#fff;
  overflow:hidden;
  transition:transform .2s, box-shadow .2s, border-color .2s;
}
.servicio::after{
  content:attr(data-num);
  position:absolute;
  right:14px; bottom:6px;
  font-family:var(--titular);
  font-size:5.6rem;
  font-weight:700;
  line-height:1;
  color:rgba(27,73,101,.055);
  pointer-events:none;
  user-select:none;
}
.servicio::before{
  content:"";
  position:absolute;
  top:0; left:0; right:0;
  height:4px;
  background:linear-gradient(90deg, var(--verde-vivo), var(--verde));
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .3s ease;
}
.servicio:hover{
  transform:translateY(-4px);
  box-shadow:var(--sombra);
  border-color:rgba(27,73,101,.25);
}
.servicio:hover::before{ transform:scaleX(1); }
.servicio-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin-bottom:22px;
}
.servicio-num{
  font-family:var(--texto);
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.14em;
  color:var(--verde);
}
.servicio-icon{
  width:42px; height:42px;
  color:var(--azul);
  opacity:.85;
}
.servicio h3{
  font-size:1.22rem;
  margin-bottom:14px;
  min-height:2.4em;
}
.servicio p{
  font-size:.94rem;
  color:var(--texto-suave);
  line-height:1.6;
}

/* ---------- Tres líneas sincronizadas ---------- */
.lineas-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
  align-items:start;
}
.linea{
  display:flex;
  flex-direction:column;
  background:#fff;
  border:1px solid var(--borde);
  border-radius:var(--radio-lg);
  padding:26px 24px;
  transition:transform .2s, box-shadow .2s, border-color .2s;
}
.linea:hover{
  transform:translateY(-4px);
  box-shadow:var(--sombra);
  border-color:rgba(31,106,79,.3);
}
.linea-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:34px; height:34px;
  border-radius:10px;
  background:rgba(31,106,79,.10);
  color:var(--verde);
  font-family:var(--texto);
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.06em;
  margin-bottom:14px;
}
.linea h3{
  font-size:1.25rem;
  margin-bottom:18px;
  min-height:0;
  color:var(--azul-oscuro);
}
.linea-bloque{
  padding-top:0;
  border-top:0;
  margin-top:0;
}
.linea-bloque .label{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:5px 10px;
  border-radius:999px;
  background:rgba(31,106,79,.09);
  color:var(--verde);
  font-size:.62rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:10px;
}
.linea-bloque .label svg{ width:13px; height:13px; flex:none; }
.linea-bloque p{
  font-size:.92rem;
  color:var(--texto-suave);
  line-height:1.55;
}
.linea-bloque p strong{ color:var(--azul); font-weight:700; }

.linea-mas{
  margin-top:auto;
  padding-top:16px;
  border-top:1px solid var(--borde);
}
.linea-mas summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:6px;
  font-size:.82rem;
  font-weight:700;
  color:var(--azul);
}
.linea-mas summary::-webkit-details-marker{ display:none; }
.linea-mas summary::after{
  content:"+";
  margin-left:auto;
  font-size:1.15rem;
  font-weight:500;
  color:var(--verde);
  transition:transform .2s;
}
.linea-mas[open] summary::after{ content:"−"; }
.linea-mas .linea-bloque{
  padding-top:14px;
  margin-top:14px;
  border-top:1px solid var(--borde);
}

/* ---------- Contacto ---------- */
.contacto{
  position:relative;
  overflow:hidden;
  padding:104px 0;
  background:linear-gradient(160deg, var(--azul) 0%, var(--azul-oscuro) 100%);
  color:#fff;
}
.contacto::before{
  content:"³";
  position:absolute;
  right:-4%;
  bottom:-22%;
  font-family:var(--titular);
  font-size:clamp(18rem, 40vw, 34rem);
  font-weight:700;
  line-height:1;
  color:rgba(255,255,255,.045);
  pointer-events:none;
  user-select:none;
}
.contacto::after{
  content:"";
  position:absolute;
  width:520px; height:520px;
  left:-180px; top:-180px;
  background:radial-gradient(circle, rgba(114,191,68,.20), transparent 68%);
  border-radius:50%;
  pointer-events:none;
}
.contacto > .container{ position:relative; z-index:1; }
.contacto-grid{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:64px;
  align-items:center;
}
.contacto .eyebrow{ color:var(--verde-vivo); }
.contacto h2{
  font-size:clamp(2rem, 3.5vw, 3.05rem);
  margin-bottom:20px;
}
.contacto-lead{
  color:rgba(255,255,255,.78);
  max-width:520px;
  margin-bottom:28px;
}
.contacto-mail{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-weight:700;
  color:#fff;
  border-bottom:1px solid rgba(255,255,255,.35);
  padding-bottom:3px;
  transition:color .2s, border-color .2s;
}
.contacto-mail:hover{ color:var(--verde-vivo); border-color:var(--verde-vivo); }
.contacto-mail svg{ width:17px; height:17px; }
.contacto-nota{
  margin-top:18px;
  font-size:.82rem;
  color:rgba(255,255,255,.55);
}

.contacto-card{
  background:#fff;
  color:var(--azul-oscuro);
  border-radius:22px;
  padding:32px;
  box-shadow:0 30px 70px rgba(0,0,0,.28);
  border-top:4px solid var(--verde-vivo);
}
.contacto-card h3{
  font-size:1.15rem;
  margin-bottom:6px;
}
.contacto-card > p{
  font-size:.88rem;
  color:var(--texto-suave);
  margin-bottom:22px;
}
.form-grid{ display:grid; gap:15px; }
.field{ display:grid; gap:6px; }
.field label{
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--texto-suave);
}
.field input,
.field textarea{
  width:100%;
  font-family:var(--texto);
  font-size:.95rem;
  color:var(--azul-oscuro);
  background:#fff;
  border:1px solid var(--borde);
  border-radius:10px;
  padding:13px 14px;
  transition:border-color .2s, box-shadow .2s;
}
.field textarea{ resize:vertical; min-height:100px; }
.field input:focus,
.field textarea:focus{
  outline:none;
  border-color:var(--verde);
  box-shadow:0 0 0 3px rgba(31,106,79,.12);
}
.form-grid .btn{ margin-top:4px; width:100%; }
.form-status{
  min-height:1.2em;
  font-size:.78rem;
  color:var(--verde);
  margin-top:2px;
}
.form-nota{
  font-size:.74rem;
  color:#8A96A3;
  text-align:center;
  margin-top:2px;
}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--azul-oscuro);
  color:rgba(255,255,255,.78);
  padding:64px 0 28px;
  border-top:1px solid rgba(255,255,255,.08);
}
.footer-grid{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr;
  gap:48px;
  padding-bottom:44px;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.footer-marca .logo-img{ margin-bottom:16px; }
.footer-marca p{
  font-size:.9rem;
  max-width:330px;
  color:rgba(255,255,255,.6);
}
.footer-col h4{
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:rgba(255,255,255,.5);
  margin-bottom:16px;
  font-family:var(--texto);
  font-weight:700;
}
.footer-col ul{ display:grid; gap:10px; }
.footer-col a{
  font-size:.9rem;
  color:rgba(255,255,255,.78);
  transition:color .2s;
}
.footer-col a:hover{ color:var(--verde-vivo); }
.footer-legal{
  padding-top:24px;
  display:flex;
  flex-wrap:wrap;
  gap:12px 24px;
  justify-content:space-between;
  align-items:center;
  font-size:.78rem;
  color:rgba(255,255,255,.45);
}
.footer-legal a:hover{ color:#fff; }

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .hero-grid{ grid-template-columns:1fr; gap:48px; }
  .hero-visual{ margin-inline:auto; max-width:540px; }
  .somos-intro{ grid-template-columns:1fr; gap:32px; }
  .exponente{ position:static; }
  .valores{ grid-template-columns:1fr; gap:32px; }
  .servicios-grid{ grid-template-columns:1fr; }
  .servicio h3{ min-height:0; }
  .lineas-grid{ grid-template-columns:1fr; }
  .linea h3{ min-height:0; }
  .contacto-grid{ grid-template-columns:1fr; gap:44px; }
  .footer-grid{ grid-template-columns:1fr 1fr; }
}

@media (max-width:820px){
  html{ scroll-padding-top:120px; }
  .nav-desktop{ display:none; }
  .menu-movil{ display:block; }
  .header-inner{ min-height:112px; }
  .logo-img{ height:92px; }
  .section{ padding:76px 0; }
  .hero{ padding:56px 0 160px; }
  .contacto{ padding:76px 0; }
  .footer-grid{ grid-template-columns:1fr; gap:32px; }
}

@media (max-width:640px){
  body{ font-size:16px; }
  .header-cta > .btn{ display:none; }
  .logo-img{ height:80px; }
  .hero-lead{ font-size:1rem; }
  .btn{ width:100%; }
  .hero-actions{ flex-direction:column; }
  .hero-visual{ aspect-ratio:1 / 1.12; }
  .hero-photo{ left:6%; width:94%; }
  .hero-card{
    left:4%;
    right:auto;
    bottom:-14%;
    width:42%;
    padding:14px 12px;
  }
  .hero-card .cube{ font-size:2.2rem; margin:2px 0 6px; }
  .hero-card li{ padding-bottom:4px; }
  .hero-card li span{ font-size:8px; }
  .hero-card li strong{ font-size:.7rem; }
  .hero-chip{ display:none; }
  .valor-cuerpo{ padding-left:22px; }
  .contacto-card{ padding:24px 20px; }
  .footer-legal{ flex-direction:column; align-items:flex-start; }
}

/* ---------- Movimiento y detalles ---------- */
.btn::after{
  content:"";
  position:absolute;
  top:0; left:-120%;
  width:60%; height:100%;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.28), transparent);
  transition:left .55s ease;
}
.btn:hover::after{ left:120%; }

.hero-photo img{
  animation:heroZoom 18s ease-in-out infinite alternate;
  transform-origin:center center;
}
@keyframes heroZoom{
  from{ transform:scale(1); }
  to{ transform:scale(1.07); }
}

.hero-card{
  animation:heroCardIn .9s cubic-bezier(.2,.9,.3,1.2) .35s both;
}
@keyframes heroCardIn{
  from{ opacity:0; transform:translateY(24px) scale(.96); }
  to{ opacity:1; transform:translateY(0) scale(1); }
}

.hero-chip{ animation:floatChip 3.4s ease-in-out infinite; }
@keyframes floatChip{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-7px); }
}

.hero h1, .hero-lead, .hero-actions{
  animation:heroFadeUp .8s ease-out both;
}
.hero h1{ animation-delay:.1s; }
.hero-lead{ animation-delay:.25s; }
.hero-actions{ animation-delay:.4s; }
@keyframes heroFadeUp{
  from{ opacity:0; transform:translateY(18px); }
  to{ opacity:1; transform:translateY(0); }
}

@keyframes heroGradient{
  0%{ background-position:0% 0%, 100% 100%, 50% 50%; transform:translate(0,0) scale(1); }
  50%{ background-position:100% 50%, 0% 50%, 60% 40%; transform:translate(-2%,2%) scale(1.05); }
  100%{ background-position:0% 0%, 100% 100%, 50% 50%; transform:translate(0,0) scale(1); }
}
@keyframes heroBlob{
  from{ transform:translate(0,0) scale(1); }
  to{ transform:translate(14px,-10px) scale(1.05); }
}

/* ---------- Accesibilidad: movimiento reducido ---------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    transition:none !important;
    animation:none !important;
  }
  .reveal{ opacity:1; transform:none; }
  .btn::after{ display:none; }
}
/* ---------- Hero collage corporativo (limpio) ---------- */
.hero-collage{
  position:relative;
  width:100%;
  max-width:560px;
  margin-left:auto;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  aspect-ratio:1 / 1.05;
  align-content:center;
}
.hero-collage .hero-map{
  position:absolute;
  left:-8%;
  top:6%;
  width:46%;
  opacity:.85;
  z-index:0;
  pointer-events:none;
}
.hero-collage .hero-shape{
  position:absolute;
  border-radius:40% 60% 55% 45% / 45% 55% 42% 58%;
  z-index:0;
}
.hero-collage .hero-shape--1{
  width:30%; aspect-ratio:1;
  background:var(--azul); opacity:.12;
  left:-6%; top:4%;
  animation:heroBlob 9s ease-in-out infinite alternate;
}
.hero-collage .hero-shape--2{
  width:22%; aspect-ratio:1;
  background:var(--verde-vivo); opacity:.14;
  right:0; bottom:6%;
  border-radius:60% 40% 45% 55% / 55% 45% 58% 42%;
  animation:heroBlob 7s ease-in-out infinite alternate-reverse;
}
.hero-collage .hero-frame{
  position:relative;
  border-radius:20px;
  overflow:hidden;
  background:var(--fondo-alt);
  box-shadow:0 14px 36px rgba(10,37,64,.16);
  z-index:1;
  aspect-ratio:4/3;
}
.hero-collage .hero-frame img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .5s ease;
}
.hero-collage .hero-frame:hover img{ transform:scale(1.04); }
.hero-collage .hero-frame--2,
.hero-collage .hero-frame--4{ aspect-ratio:1; }
.hero-collage .hero-card{ z-index:3; position:absolute; left:0; bottom:-8%; width:52%; }
.hero-collage .hero-chip{ z-index:3; position:absolute; top:-4%; right:-2%; }

@media (max-width:640px){
  .hero-collage{ gap:10px; aspect-ratio:1 / 1.1; }
  .hero-collage .hero-card{ width:60%; bottom:-6%; }
  .hero-collage .hero-chip{ display:none; }
  .hero-collage .hero-map{ width:58%; }
}
@media (prefers-reduced-motion:reduce){
  .hero-collage .hero-shape--1, .hero-collage .hero-shape--2{ animation:none; }
  .hero-collage .hero-frame img{ transition:none; }
}
