/* ================================================================
   AppsSDAR — hoja de estilo única
   Paleta:  tinta / acero / papel / rojo señal / verde vivo / ámbar
   Tipos:   Archivo (display), Public Sans (texto), IBM Plex Mono (datos)
   ================================================================ */

:root{
  --tinta:      #14161B;
  --tinta-2:    #23272F;
  --tinta-3:    #363C46;
  --acero:      #E6E8EA;
  --acero-2:    #D6DADE;
  --papel:      #FFFFFF;
  --humo:       #676D77;
  --rojo:       #C4172A;
  --rojo-claro: #E8544A;
  --verde:      #14805F;
  --verde-vivo: #2FD08A;
  --ambar:      #C07C12;
  --ambar-vivo: #F0A93C;

  --display: "Archivo", "Arial Narrow", system-ui, sans-serif;
  --texto:   "Public Sans", system-ui, -apple-system, sans-serif;
  --dato:    "IBM Plex Mono", ui-monospace, "Consolas", monospace;

  --marco: clamp(1.25rem, 5vw, 5rem);
  --max: 1240px;
  --curva: 3px;
}

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

html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--acero);
  color:var(--tinta);
  font-family:var(--texto);
  font-size:clamp(1rem, .96rem + .2vw, 1.0625rem);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; display:block; }
a{ color:inherit; }

:focus-visible{
  outline:2px solid var(--rojo);
  outline-offset:3px;
}

.salto{
  position:absolute; left:-9999px; top:0;
  background:var(--tinta); color:var(--papel);
  padding:.75rem 1rem; z-index:99;
}
.salto:focus{ left:0; }

/* ---------- tipografía compartida ---------- */

.eyebrow{
  font-family:var(--dato);
  font-size:.75rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--rojo);
  margin:0 0 1rem;
}
.eyebrow--claro{ color:var(--rojo-claro); }

.seccion__titulo{
  font-family:var(--display);
  font-variation-settings:"wdth" 112, "wght" 700;
  font-size:clamp(2rem, 1.3rem + 3vw, 3.4rem);
  line-height:1.03;
  letter-spacing:-.02em;
  margin:0;
}

.seccion__intro{
  max-width:52ch;
  color:var(--humo);
  margin:1.1rem 0 0;
}
.seccion--oscura .seccion__intro{ color:#A7ADB8; }

/* ---------- barra superior ---------- */

.barra{
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; justify-content:space-between;
  gap:1rem;
  padding:.9rem var(--marco);
  background:color-mix(in srgb, var(--acero) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--acero-2);
}

.marca{
  display:flex; align-items:center; gap:.6rem;
  text-decoration:none;
  font-family:var(--display);
  font-variation-settings:"wdth" 108, "wght" 500;
  font-size:1.05rem;
  letter-spacing:.01em;
}
.marca b{ font-variation-settings:"wdth" 108, "wght" 800; }
.marca__glifo{
  width:14px; height:14px;
  background:var(--rojo);
  clip-path:polygon(0 0, 100% 0, 100% 62%, 62% 100%, 0 100%);
}

.barra__nav{
  display:flex; align-items:center; gap:clamp(.8rem,2vw,1.8rem);
  font-size:.9rem;
}
.barra__nav a{ text-decoration:none; color:var(--tinta-2); }
.barra__nav a:hover{ color:var(--rojo); }
.barra__cta{
  border:1px solid var(--tinta);
  border-radius:var(--curva);
  padding:.4rem .85rem;
}
.barra__cta:hover{ background:var(--tinta); color:var(--papel)!important; }

.barra__hamburguesa{
  display:none;
  flex-direction:column; justify-content:center; gap:5px;
  width:42px; height:38px; padding:0;
  background:none; border:1px solid var(--acero-2); border-radius:var(--curva);
  cursor:pointer;
}
.barra__hamburguesa span{
  display:block; width:18px; height:2px; margin:0 auto;
  background:var(--tinta);
  transition:transform .2s ease, opacity .2s ease, background .2s ease;
}
.barra__hamburguesa[aria-expanded="true"]{ border-color:var(--rojo); }
.barra__hamburguesa[aria-expanded="true"] span{ background:var(--rojo); }
.barra__hamburguesa[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.barra__hamburguesa[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.barra__hamburguesa[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

@media (max-width:640px){
  .barra{ flex-wrap:wrap; }
  .barra__hamburguesa{ display:flex; }
  .barra__nav{
    display:none;
    flex-basis:100%;
    flex-direction:column; align-items:stretch;
    gap:0;
    margin:.9rem calc(var(--marco) * -1) 0;
    padding:.2rem var(--marco) .2rem;
    border-top:1px solid var(--acero-2);
    font-size:1rem;
  }
  .barra__nav.abierto{ display:flex; }
  .barra__nav a{
    position:relative;
    padding:.9rem 0 .9rem .9rem;
    border-bottom:1px solid var(--acero-2);
  }
  /* marca roja al costado, mismo gesto que el resto de la página */
  .barra__nav a:not(.barra__cta)::before{
    content:"";
    position:absolute; left:0; top:50%;
    width:3px; height:0;
    background:var(--rojo);
    transform:translateY(-50%);
    transition:height .18s ease;
  }
  .barra__nav a:not(.barra__cta):hover::before,
  .barra__nav a:not(.barra__cta):focus-visible::before{ height:1.1rem; }
  .barra__nav .barra__cta{
    margin:.9rem 0;
    text-align:center;
    padding:.85rem;
    background:var(--rojo);
    border:1px solid var(--rojo);
    color:var(--papel);
    font-variation-settings:"wght" 600;
  }
  .barra__nav .barra__cta:hover{ background:var(--tinta); border-color:var(--tinta); }
}

/* ---------- botones ---------- */

.boton{
  display:inline-block;
  font-family:var(--dato);
  font-size:.85rem;
  letter-spacing:.04em;
  text-decoration:none;
  padding:.85rem 1.35rem;
  border-radius:var(--curva);
  border:1px solid transparent;
  transition:transform .15s ease, background .15s ease, color .15s ease;
}
.boton:hover{ transform:translateY(-2px); }
.boton--solido{ background:var(--rojo); color:var(--papel); }
.boton--solido:hover{ background:#A9121F; }
.boton--linea{ border-color:var(--tinta-3); color:var(--tinta); }
.boton--linea:hover{ border-color:var(--tinta); background:var(--papel); }
.boton--fantasma{ border-color:#4A505C; color:var(--papel); }
.boton--fantasma:hover{ background:var(--tinta-2); }

/* ================================================================
   HERO + TABLERO
   ================================================================ */

.hero{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(2rem,5vw,4.5rem);
  align-items:center;
  padding:clamp(3rem,8vw,6.5rem) var(--marco) clamp(3rem,7vw,5.5rem);
  max-width:var(--max);
  margin-inline:auto;
}

.hero__titulo{
  font-family:var(--display);
  font-size:clamp(2.6rem, 1.2rem + 6vw, 5.6rem);
  line-height:.94;
  letter-spacing:-.035em;
  margin:0 0 1.5rem;
}
.hero__titulo .linea{
  display:block;
  font-variation-settings:"wdth" 118, "wght" 780;
}
.hero__titulo .linea--acento{
  color:var(--rojo);
  font-variation-settings:"wdth" 90, "wght" 500;
  font-style:italic;
  letter-spacing:-.02em;
}

.hero__sub{
  max-width:46ch;
  color:var(--tinta-2);
  margin:0 0 2rem;
}

.hero__acciones{ display:flex; flex-wrap:wrap; gap:.75rem; }

/* --- el tablero: única pieza oscura del bloque superior --- */

.tablero{
  background:var(--tinta);
  color:var(--papel);
  border-radius:var(--curva);
  padding:1.5rem clamp(1.1rem,2.2vw,1.75rem) 1.1rem;
  box-shadow:0 24px 60px -32px rgba(20,22,27,.65);
}

.tablero__cabecera{
  border-bottom:1px solid var(--tinta-3);
  padding-bottom:1rem;
  margin-bottom:.35rem;
}
.tablero__titulo{
  font-family:var(--dato);
  font-size:.78rem;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  margin:0 0 .3rem;
}
.tablero__nota{
  margin:0; font-size:.8rem; color:#868D99;
}

.tablero__lista{ list-style:none; margin:0; padding:0; }

.fila{
  display:grid;
  grid-template-columns:14px minmax(0,1fr) auto;
  grid-template-areas:"punto nombre estado" ". dominio estado";
  column-gap:.7rem;
  align-items:center;
  padding:.8rem 0;
  border-bottom:1px solid #22262E;
}
.fila:last-child{ border-bottom:0; }

.fila__punto{
  grid-area:punto;
  width:8px; height:8px; border-radius:50%;
  background:var(--verde-vivo);
  box-shadow:0 0 0 0 rgba(47,208,138,.55);
}
.fila__nombre{
  grid-area:nombre;
  font-family:var(--display);
  font-variation-settings:"wdth" 110, "wght" 600;
  font-size:1.02rem;
  letter-spacing:-.005em;
}
.fila__dominio{
  grid-area:dominio;
  font-family:var(--dato);
  font-size:.72rem;
  color:#949BA6;
  word-break:break-all;
}
.fila__estado{
  grid-area:estado;
  font-family:var(--dato);
  font-size:.68rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--verde-vivo);
  white-space:nowrap;
}

.fila[data-estado="obra"] .fila__punto{ background:var(--ambar-vivo); }
.fila[data-estado="obra"] .fila__estado{ color:var(--ambar-vivo); }
.fila[data-estado="piloto"] .fila__punto{ background:#7FA8E8; }
.fila[data-estado="piloto"] .fila__estado{ color:#7FA8E8; }
.fila[data-estado="taller"] .fila__punto{ background:#6C737F; }
.fila[data-estado="taller"] .fila__estado{ color:#8A919D; }

.tablero__pie{
  display:flex; justify-content:space-between;
  border-top:1px solid var(--tinta-3);
  margin:.4rem 0 0; padding-top:.9rem;
  font-family:var(--dato); font-size:.7rem;
  letter-spacing:.08em; text-transform:uppercase;
  color:#7C838F;
}

/* pulso del punto en vivo */
@media (prefers-reduced-motion:no-preference){
  .fila[data-estado="produccion"] .fila__punto{
    animation:latido 3.2s ease-out infinite;
  }
}
@keyframes latido{
  0%,70%,100%{ box-shadow:0 0 0 0 rgba(47,208,138,.5); }
  35%{ box-shadow:0 0 0 7px rgba(47,208,138,0); }
}

/* entrada escalonada del tablero */
@media (prefers-reduced-motion:no-preference){
  .tablero .fila{ opacity:0; transform:translateY(8px); }
  .tablero.listo .fila{
    animation:aterriza .5s cubic-bezier(.2,.7,.3,1) forwards;
    animation-delay:calc(var(--i,0) * 90ms);
  }
}
@keyframes aterriza{ to{ opacity:1; transform:none; } }

@media (max-width:900px){
  .hero{ grid-template-columns:1fr; }
  .tablero{ min-width:0; }
}

/* en pantallas angostas el estado baja a su propia línea */
@media (max-width:560px){
  .fila{
    grid-template-columns:14px minmax(0,1fr);
    grid-template-areas:"punto nombre" ". dominio" ". estado";
    row-gap:.15rem;
  }
  .fila__estado{ text-align:left; }
}

/* ================================================================
   TESIS
   ================================================================ */

.tesis{
  max-width:var(--max);
  margin-inline:auto;
  padding:clamp(2.5rem,6vw,4rem) var(--marco);
  border-top:1px solid var(--acero-2);
  display:grid;
  grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);
  gap:clamp(1.5rem,4vw,3.5rem);
  align-items:end;
}
.tesis__frase{
  font-family:var(--display);
  font-variation-settings:"wdth" 100, "wght" 500;
  font-size:clamp(1.25rem, .9rem + 1.5vw, 1.95rem);
  line-height:1.25;
  letter-spacing:-.015em;
  margin:0;
  text-wrap:balance;
}
.tesis__datos{
  display:grid; gap:.65rem; margin:0;
}
.tesis__datos div{
  display:flex; justify-content:space-between; gap:1rem;
  border-bottom:1px solid var(--acero-2);
  padding-bottom:.55rem;
}
.tesis__datos dt{
  font-family:var(--dato); font-size:.72rem;
  letter-spacing:.1em; text-transform:uppercase; color:var(--humo);
}
.tesis__datos dd{
  margin:0; font-weight:600; font-size:.95rem;
}
@media (max-width:760px){
  .tesis{ grid-template-columns:1fr; align-items:start; }
}

/* ================================================================
   SECCIONES GENÉRICAS
   ================================================================ */

.seccion{
  max-width:var(--max);
  margin-inline:auto;
  padding:clamp(3.5rem,8vw,6rem) var(--marco);
}
.seccion__cabecera{ margin-bottom:clamp(2rem,4vw,3rem); }

.seccion--oscura{
  max-width:none;
  background:var(--tinta);
  color:var(--papel);
}
.seccion--oscura .seccion__cabecera,
.seccion--oscura .pasos{
  max-width:var(--max); margin-inline:auto;
}

/* --- franja: producto público (Utilitarios) --- */
.franja{
  background:var(--acero);
  padding:clamp(1.5rem,4vw,2.75rem) var(--marco);
}
.franja__caja{
  max-width:var(--max);
  margin-inline:auto;
  background:var(--tinta);
  color:var(--acero);
  border-radius:var(--curva);
  padding:clamp(1.4rem,3vw,2.25rem);
  display:flex;
  align-items:center;
  gap:clamp(1rem,3vw,2rem);
  position:relative;
  overflow:hidden;
}
.franja__caja::after{
  content:"";
  position:absolute; inset:0;
  background:radial-gradient(340px 180px at 88% 50%, rgba(47,208,138,.16), transparent 70%);
  pointer-events:none;
}
.franja__caja > *{ position:relative; z-index:1; }
.franja__glifo{
  flex:none;
  width:clamp(2.6rem,5vw,3.2rem); height:clamp(2.6rem,5vw,3.2rem);
  border-radius:var(--curva);
  background:linear-gradient(135deg,var(--verde-vivo),var(--verde));
  color:#06251A;
  display:grid; place-items:center;
  font-family:var(--display); font-weight:800;
  font-size:clamp(1.3rem,3vw,1.7rem);
}
.franja__texto{ flex:1 1 auto; min-width:0; }
.franja__kicker{
  font-family:var(--dato); font-size:.72rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--verde-vivo); margin:0 0 .35rem;
}
.franja__titulo{
  font-family:var(--display);
  font-variation-settings:"wdth" 108,"wght" 700;
  font-size:clamp(1.25rem,1rem+1.4vw,1.85rem);
  line-height:1.08; letter-spacing:-.01em; margin:0 0 .4rem;
}
.franja__sub{ color:#A7ADB8; font-size:.95rem; margin:0; max-width:52ch; }
.franja__cta{ flex:none; }
.boton--vivo{ background:var(--verde-vivo); color:#06251A; }
.boton--vivo:hover{ background:#25B87A; }
@media (max-width:640px){
  .franja__caja{ flex-direction:column; align-items:flex-start; }
  .franja__cta{ width:100%; text-align:center; }
}

/* --- fichas de sistemas --- */

.rejilla{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(300px,1fr));
  gap:1px;
  background:var(--acero-2);
  border:1px solid var(--acero-2);
}

.ficha{
  background:var(--papel);
  padding:clamp(1.4rem,2.5vw,1.9rem);
  display:flex; flex-direction:column; gap:.9rem;
  transition:background .2s ease;
}
.ficha:hover{ background:#FBFBFC; }

.ficha__top{ display:flex; flex-direction:column; gap:.15rem; }
.ficha__nombre{
  font-family:var(--display);
  font-variation-settings:"wdth" 115, "wght" 700;
  font-size:1.55rem; line-height:1.05; letter-spacing:-.02em;
  margin:0;
}
.ficha__marca{
  margin:0;
  font-family:var(--dato); font-size:.72rem;
  letter-spacing:.1em; text-transform:uppercase; color:var(--humo);
}
.ficha__texto{ margin:0; color:var(--tinta-2); font-size:.95rem; }

.ficha__tags{
  list-style:none; display:flex; flex-wrap:wrap; gap:.4rem;
  margin:0; padding:0;
}
.ficha__tags li{
  font-size:.72rem;
  border:1px solid var(--acero-2);
  border-radius:100px;
  padding:.2rem .6rem;
  color:var(--humo);
}

.ficha__pie{
  margin:auto 0 0;
  padding-top:.9rem;
  border-top:1px solid var(--acero);
  display:flex; align-items:center; justify-content:space-between;
  gap:.75rem; flex-wrap:wrap;
  font-family:var(--dato); font-size:.72rem;
}
.ficha__pie a{ color:var(--humo); text-decoration:none; border-bottom:1px solid var(--acero-2); }
.ficha__pie a:hover{ color:var(--rojo); border-color:var(--rojo); }
.ficha__dom{ color:var(--humo); }

.chip{
  display:inline-flex; align-items:center; gap:.4rem;
  letter-spacing:.06em; text-transform:uppercase;
  color:var(--verde);
}
.chip::before{
  content:""; width:6px; height:6px; border-radius:50%;
  background:currentColor;
}
.chip--obra{ color:var(--ambar); }
.chip--piloto{ color:#2E5AAC; }
.chip--taller{ color:var(--humo); }

/* --- pasos del proceso --- */

.pasos{
  list-style:none; margin:0; padding:0;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(230px,1fr));
  gap:0;
}
.paso{
  padding:1.6rem clamp(1rem,2vw,1.6rem) 1.6rem 0;
  border-top:2px solid var(--rojo);
  margin-right:clamp(1rem,2vw,1.6rem);
}
.paso__num{
  font-family:var(--dato); font-size:.75rem;
  letter-spacing:.12em; color:var(--rojo-claro);
  display:block; margin-bottom:1.2rem;
}
.paso__titulo{
  font-family:var(--display);
  font-variation-settings:"wdth" 108, "wght" 650;
  font-size:1.2rem; line-height:1.15; margin:0 0 .5rem;
}
.paso p{ margin:0; color:#A7ADB8; font-size:.93rem; }

/* --- servicios --- */

.servicios{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(260px,1fr));
  gap:clamp(1.5rem,3vw,2.5rem);
}
.servicio h3{
  font-family:var(--display);
  font-variation-settings:"wdth" 108, "wght" 650;
  font-size:1.15rem; margin:0 0 .45rem;
  padding-top:.9rem;
  border-top:1px solid var(--tinta);
}
.servicio p{ margin:0; color:var(--humo); font-size:.93rem; }

/* ================================================================
   CIERRE
   ================================================================ */

.cierre{
  padding:0 var(--marco) clamp(3rem,6vw,5rem);
  max-width:var(--max); margin-inline:auto;
}
.cierre__caja{
  background:var(--tinta);
  color:var(--papel);
  border-radius:var(--curva);
  padding:clamp(2.2rem,6vw,4.5rem);
  position:relative;
  overflow:hidden;
}
.cierre__caja::after{
  content:"";
  position:absolute; right:0; top:0; bottom:0;
  width:6px;
  background:var(--rojo);
}
.cierre__titulo{
  font-family:var(--display);
  font-variation-settings:"wdth" 116, "wght" 750;
  font-size:clamp(1.9rem, 1.2rem + 3vw, 3.2rem);
  line-height:1.02; letter-spacing:-.03em;
  margin:0 0 .9rem;
}
.cierre__texto{ max-width:44ch; color:#A7ADB8; margin:0 0 2rem; }
.cierre__acciones{ display:flex; flex-wrap:wrap; gap:.75rem; position:relative; }

/* ================================================================
   PIE
   ================================================================ */

.pie{
  border-top:1px solid var(--acero-2);
  padding:1.6rem var(--marco);
  max-width:var(--max); margin-inline:auto;
  display:flex; flex-wrap:wrap; gap:.5rem 1.5rem;
  justify-content:space-between;
  font-size:.85rem; color:var(--humo);
}
.pie p{ margin:0; }
.pie__marca{ font-family:var(--display); font-variation-settings:"wdth" 106, "wght" 500; color:var(--tinta); }
.pie__marca b{ font-variation-settings:"wdth" 106, "wght" 800; }
.pie__nota{ font-family:var(--dato); font-size:.75rem; letter-spacing:.06em; }
.pie__nota a{ color:var(--tinta-2); text-decoration:none; border-bottom:1px solid var(--acero-2); }
.pie__nota a:hover{ color:var(--rojo); border-color:var(--rojo); }

/* ================================================================
   PÁGINAS LEGALES (privacidad, términos)
   ================================================================ */

.legal .seccion__intro{ max-width:64ch; }
.legal__cuerpo{ max-width:64ch; }
.legal__cuerpo h2{
  font-family:var(--display);
  font-variation-settings:"wdth" 110, "wght" 700;
  font-size:1.25rem;
  margin:2.4rem 0 .6rem;
}
.legal__cuerpo h2:first-child{ margin-top:0; }
.legal__cuerpo p{ color:var(--tinta-2); margin:0 0 1rem; }
.legal__cuerpo a{ color:var(--tinta); text-decoration:none; border-bottom:1px solid var(--acero-2); }
.legal__cuerpo a:hover{ color:var(--rojo); border-color:var(--rojo); }

/* ================================================================
   REVELADO AL SCROLL
   ================================================================ */

@media (prefers-reduced-motion:no-preference){
  .revela{ opacity:0; transform:translateY(14px); transition:opacity .55s ease, transform .55s cubic-bezier(.2,.7,.3,1); }
  .revela.visible{ opacity:1; transform:none; }
}
