:root{
  --tinta:#0E1621;
  --tinta-2:#18232F;
  --acero:#8A97A6;
  --niebla:#E8EBEF;
  --papel:#F7F8FA;
  --senal:#E4B33C;
  --blanco:#fff;
  --max:1240px;
  --gap:clamp(1.5rem,4vw,3rem);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
body{
  font-family:'Archivo',system-ui,-apple-system,sans-serif;
  background:var(--papel);
  color:var(--tinta);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--senal);outline-offset:3px}

h1,h2,h3{font-family:'Archivo Black',sans-serif;font-weight:400;line-height:.95;letter-spacing:-.02em}
h1{font-size:clamp(3.2rem,11vw,8.5rem);text-transform:uppercase}
h2{font-size:clamp(2rem,5vw,3.6rem);text-transform:uppercase}
h3{font-size:1.05rem;text-transform:uppercase;letter-spacing:.01em}

.eyebrow{
  font-size:.7rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--acero);margin-bottom:1.2rem;
}

/* NAV */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.1rem var(--gap);
  background:rgba(14,22,33,0);
  transition:background .35s ease,backdrop-filter .35s ease,padding .35s ease;
  color:var(--blanco);
}
.nav.is-solid{
  background:rgba(14,22,33,.94);
  backdrop-filter:blur(12px);
  padding:.75rem var(--gap);
}
.nav__logo{
  font-family:'Archivo Black',sans-serif;font-size:1.25rem;letter-spacing:.06em;
}
.nav__logo span{color:var(--senal)}
.nav__links{display:flex;align-items:center;gap:2rem}
.nav__links a{
  font-size:.82rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
  opacity:.85;transition:opacity .2s;
}
.nav__links a:hover{opacity:1}
.nav__cta{
  background:var(--senal);color:var(--tinta)!important;opacity:1!important;
  padding:.6rem 1.2rem;font-weight:600;
}
.nav__cta:hover{background:#f0c451}
.nav__toggle{
  display:none;background:none;border:0;cursor:pointer;
  width:34px;height:34px;flex-direction:column;justify-content:center;gap:6px;
}
.nav__toggle span{display:block;height:2px;width:100%;background:currentColor;transition:transform .3s,opacity .3s}
.nav__toggle.is-open span:nth-child(1){transform:translateY(4px) rotate(45deg)}
.nav__toggle.is-open span:nth-child(2){transform:translateY(-4px) rotate(-45deg)}

/* HERO */
.hero{
  position:relative;min-height:100svh;
  display:flex;align-items:flex-end;
  padding:0 var(--gap) clamp(3rem,8vh,6rem);
  color:var(--blanco);overflow:hidden;
}
.hero__media{position:absolute;inset:0;z-index:-2}
.hero__media img{filter:saturate(.75) contrast(1.05);animation:kb 22s ease-out forwards}
@keyframes kb{from{transform:scale(1.1)}to{transform:scale(1)}}
.hero::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(to top,rgba(14,22,33,.94) 12%,rgba(14,22,33,.55) 55%,rgba(14,22,33,.7) 100%);
}
.hero__inner{max-width:var(--max);width:100%;margin:0 auto}
.hero__inner>*{animation:up .9s cubic-bezier(.2,.7,.3,1) backwards}
.hero__inner>*:nth-child(1){animation-delay:.15s}
.hero__inner>*:nth-child(2){animation-delay:.28s}
.hero__inner>*:nth-child(3){animation-delay:.42s}
.hero__inner>*:nth-child(4){animation-delay:.56s}
@keyframes up{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
.hero .eyebrow{color:var(--senal)}
.hero h1{margin-bottom:1.6rem}
.hero__lede{max-width:34rem;font-size:clamp(1rem,1.7vw,1.2rem);color:#D3D9E0;margin-bottom:2.2rem}
.hero__actions{display:flex;flex-wrap:wrap;gap:.9rem}
.hero__scroll{
  position:absolute;right:var(--gap);bottom:clamp(3rem,8vh,6rem);
  font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--acero);
  writing-mode:vertical-rl;
}

.btn{
  display:inline-block;padding:1rem 2rem;
  background:var(--senal);color:var(--tinta);
  font-size:.8rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  transition:transform .2s,background .2s;
}
.btn:hover{background:#f0c451;transform:translateY(-2px)}
.btn--ghost{background:transparent;color:var(--blanco);border:1px solid rgba(255,255,255,.35)}
.btn--ghost:hover{background:rgba(255,255,255,.1)}

/* MARQUEE */
.marquee{
  background:var(--tinta);color:var(--niebla);
  padding:1.1rem 0;overflow:hidden;
  border-block:1px solid rgba(255,255,255,.08);
}
.marquee__track{
  display:flex;gap:3.5rem;width:max-content;
  animation:slide 38s linear infinite;
}
.marquee__track span{
  font-size:.78rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;
  white-space:nowrap;opacity:.62;
}
@keyframes slide{to{transform:translateX(-50%)}}

/* SECCIONES */
section{padding:clamp(4.5rem,10vw,8rem) var(--gap)}
.section__head{max-width:var(--max);margin:0 auto clamp(2.5rem,5vw,4rem)}
.section__lede{max-width:38rem;color:#5A6673;margin-top:1.2rem;font-size:1.02rem}

/* SERVICIOS */
.servicios__grid{
  max-width:var(--max);margin:0 auto;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));
  border-top:1px solid var(--niebla);border-left:1px solid var(--niebla);
}
.svc{
  padding:2.2rem 1.8rem 2.6rem;
  border-bottom:1px solid var(--niebla);border-right:1px solid var(--niebla);
  background:var(--blanco);transition:background .25s;
}
.svc:hover{background:#FDFDFE}
.svc h3{margin-bottom:.9rem}
.svc p{color:#5A6673;font-size:.94rem}
.svc--cta{background:var(--tinta);color:var(--blanco)}
.svc--cta:hover{background:var(--tinta-2)}
.svc--cta h3{color:var(--senal)}
.svc--cta p{color:#B9C2CC}
.link-arrow{
  display:inline-flex;align-items:center;gap:.5rem;margin-top:1.3rem;
  font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  border-bottom:1px solid var(--senal);padding-bottom:.25rem;
}
.link-arrow span{transition:transform .2s}
.link-arrow:hover span{transform:translateX(5px)}

/* OBRAS */
.obras{background:var(--blanco)}
.obras__grid{
  max-width:var(--max);margin:0 auto;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));
  gap:1.2rem;
}
.obra{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--niebla)}
.obra--wide{grid-column:span 2;aspect-ratio:16/9}
.obra img{transition:transform .7s cubic-bezier(.2,.7,.3,1),filter .4s;filter:saturate(.85)}
.obra:hover img{transform:scale(1.05);filter:saturate(1)}
.obra figcaption{
  position:absolute;inset:auto 0 0 0;
  display:flex;flex-direction:column;gap:.25rem;
  padding:2.5rem 1.3rem 1.2rem;
  background:linear-gradient(to top,rgba(14,22,33,.92),transparent);
  color:var(--blanco);
}
.obra__nombre{font-family:'Archivo Black',sans-serif;font-size:1rem;text-transform:uppercase;letter-spacing:-.01em}
.obra__tipo{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--senal)}

/* NOSOTROS */
.nosotros__inner{
  max-width:var(--max);margin:0 auto;
  display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,5vw,4.5rem);align-items:center;
}
.nosotros__texto h2{margin-bottom:1.5rem}
.nosotros__texto p{color:#5A6673;margin-bottom:1.1rem;max-width:34rem}
.nosotros__foto{aspect-ratio:4/5;overflow:hidden}
.nosotros__foto img{filter:saturate(.85)}
.datos{margin-top:2.2rem;border-top:1px solid var(--niebla)}
.datos>div{display:flex;gap:1.5rem;padding:.95rem 0;border-bottom:1px solid var(--niebla)}
.datos dt{
  flex:0 0 8.5rem;font-size:.7rem;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--acero);padding-top:.2rem;
}
.datos dd{font-size:.94rem;font-weight:500}

/* CONTACTO */
.contacto{background:var(--tinta);color:var(--blanco)}
.contacto__inner{
  max-width:var(--max);margin:0 auto;
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,5vw,5rem);align-items:start;
}
.contacto__texto p{color:#A8B3BF;max-width:30rem;margin-top:1.4rem}
.contacto__datos{display:grid;gap:0;border-top:1px solid rgba(255,255,255,.14)}
.dato{
  display:flex;flex-direction:column;gap:.3rem;
  padding:1.4rem 0;border-bottom:1px solid rgba(255,255,255,.14);
  transition:padding-left .25s;
}
a.dato:hover{padding-left:.8rem}
.dato__label{font-size:.68rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--acero)}
.dato__valor{font-family:'Archivo Black',sans-serif;font-size:clamp(1.1rem,2.2vw,1.55rem);letter-spacing:-.01em}
a.dato:hover .dato__valor{color:var(--senal)}

/* FOOTER */
.footer{background:var(--tinta-2);color:var(--acero);padding:2.5rem var(--gap)}
.footer__inner{max-width:var(--max);margin:0 auto;display:flex;flex-direction:column;gap:.45rem}
.footer__marca{font-family:'Archivo Black',sans-serif;color:var(--blanco);font-size:.95rem;text-transform:uppercase;letter-spacing:.02em}
.footer__legal{font-size:.78rem}

/* REVELADO AL SCROLL */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .75s ease,transform .75s cubic-bezier(.2,.7,.3,1)}
.reveal.is-in{opacity:1;transform:none}

/* RESPONSIVE */
@media(max-width:900px){
  .nosotros__inner,.contacto__inner{grid-template-columns:1fr}
  .nosotros__foto{aspect-ratio:16/10;order:-1}
  .obra--wide{grid-column:span 1;aspect-ratio:4/3}
}
@media(max-width:720px){
  .nav__toggle{display:flex}
  .nav__links{
    position:fixed;inset:0;flex-direction:column;justify-content:center;gap:2rem;
    background:rgba(14,22,33,.98);backdrop-filter:blur(14px);
    transform:translateX(100%);transition:transform .4s cubic-bezier(.2,.7,.3,1);
  }
  .nav__links.is-open{transform:none}
  .nav__links a{font-size:1.1rem;opacity:1}
  .hero__scroll{display:none}
  .hero__actions .btn{flex:1;text-align:center}
  .obras__grid{grid-template-columns:1fr}
  .datos>div{flex-direction:column;gap:.3rem}
  .datos dt{flex:none}
}

/* BOTON FLOTANTE DE WHATSAPP */
.wa{
  position:fixed;right:1.4rem;bottom:1.4rem;z-index:90;
  width:58px;height:58px;border-radius:50%;
  display:grid;place-items:center;
  background:#25D366;color:#fff;
  box-shadow:0 6px 22px rgba(0,0,0,.28);
  transition:transform .25s ease,box-shadow .25s ease;
}
.wa svg{width:31px;height:31px}
.wa:hover{transform:scale(1.08);box-shadow:0 10px 28px rgba(0,0,0,.34)}
@media(max-width:720px){
  .wa{right:1rem;bottom:1rem;width:54px;height:54px}
  .wa svg{width:28px;height:28px}
}

/* Titular de tres lineas: escala reducida */
.hero h1{font-size:clamp(2.6rem,7.5vw,6rem);line-height:.98}
.hero__lede{font-size:clamp(.95rem,1.5vw,1.12rem);letter-spacing:.02em}
