/* ============================================================
   ADAMS Corredora de Propiedades — base.css
   Paleta tomada directamente del logo: crema #FAF7F4, granate
   #7A1F24, oliva #5D6047, carbón #3B3735.
   Una sola tipografía: Space Grotesk, la misma de m3arquitectos.
   Criterio: quitar antes que agregar. Sin sombras, sin degradados,
   sin cursor propio. La jerarquía la hacen el aire y las líneas finas.
   ============================================================ */

:root{
  /* superficies */
  --bg:      #FAF7F4;
  --bg2:     #F4F0EA;
  --panel:   #EFEAE3;

  /* tinta */
  --ink:     #2A2724;
  --dim:     #6B645D;
  --faint:   #9C948B;

  /* marca */
  --acc:     #7A1F24;   /* granate del logo */
  --acc-sf:  #A33A38;   /* granate aclarado, sólo para hover */
  --acc-lt:  #E7A18C;   /* teja clara, para texto sobre foto */
  --moss:    #5D6047;   /* oliva del logo */
  --char:    #3B3735;   /* carbón del logo */
  --wa:      #1FA855;

  --line:    rgba(42,39,36,.13);
  --line-2:  rgba(42,39,36,.26);

  /* Una sola tipografía en todo el sitio: Space Grotesk, la misma de
     m3arquitectos. Las variables se mantienen separadas por si alguna vez
     hay que volver a dos familias, pero hoy apuntan a la misma. */
  --font-d:  'Space Grotesk', system-ui, sans-serif;
  --font-b:  'Space Grotesk', system-ui, sans-serif;

  --wrap:    1240px;
  --nav-h:   88px;
  --ease:    cubic-bezier(.22,.9,.28,1);
  --ease-o:  cubic-bezier(.16,1,.3,1);
}

@view-transition{ navigation:auto }
::view-transition-old(root){ animation:vt-out .26s var(--ease) both }
::view-transition-new(root){ animation:vt-in .42s var(--ease-o) both }
@keyframes vt-out{ to{ opacity:0 } }
@keyframes vt-in{ from{ opacity:0 } }

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0 }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth }
body{
  background:var(--bg); color:var(--ink);
  font:400 16px/1.7 var(--font-b);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,video{ max-width:100%; display:block }
a{ color:inherit; text-decoration:none }
ul{ list-style:none }
button,input,select,textarea{ font:inherit; color:inherit }
button{ background:none; border:0; cursor:pointer }
::selection{ background:var(--acc); color:#fff }
:focus-visible{ outline:2px solid var(--acc); outline-offset:3px }

.wrap{ width:min(var(--wrap),90vw); margin-inline:auto }
section{ padding:clamp(76px,10vw,140px) 0; position:relative }

/* ============================================================
   SECCIONES NUMERADAS  (misma estructura que el sitio de InMosso)
   La portada se recorre por secciones: cada una lleva número,
   fondo propio y una entrada en el navegador lateral.
   ============================================================ */
.seccion{ position:relative; border-top:1px solid var(--line) }
.seccion:first-of-type{ border-top:0 }
.seccion.crema{ background:var(--bg2) }
.seccion.oscura{ background:var(--char); color:#CFC8C0; border-top-color:rgba(255,255,255,.12) }
.seccion.oscura h2,.seccion.oscura h3{ color:#F6F2ED }
.seccion.oscura .lead{ color:#B6AEA5 }
.seccion.oscura .label{ color:#8C837A }
.seccion.oscura em{ color:var(--acc-lt) }
/* El botón de línea es tinta oscura por defecto: sobre el fondo carbón
   desaparecía por completo. */
.seccion.oscura .btn--line{ color:#fff; border-color:rgba(255,255,255,.42) }
.seccion.oscura .btn--line:hover{ background:#fff; border-color:#fff; color:var(--ink) }

.sec-num{
  position:absolute; top:30px; right:calc((100vw - min(var(--wrap),90vw)) / 2);
  font:400 .72rem/1 var(--font-b); letter-spacing:.2em; color:var(--faint);
}
.seccion.oscura .sec-num{ color:#7A716A }
@media (max-width:760px){ .sec-num{ display:none } }

/* navegador lateral: puntos que siguen a la sección visible */
.secnav{
  position:fixed; right:24px; top:50%; translate:0 -50%; z-index:55;
  display:flex; flex-direction:column; gap:15px;
}
.secnav a{
  display:flex; align-items:center; justify-content:flex-end; gap:11px;
  color:var(--faint); font:400 .68rem/1 var(--font-b); letter-spacing:.1em;
}
.secnav .punto{
  width:7px; height:7px; border-radius:50%; flex:none;
  background:transparent; border:1px solid var(--faint);
  transition:transform .3s var(--ease), background .3s, border-color .3s;
}
.secnav .txt{ opacity:0; translate:6px 0; transition:opacity .3s var(--ease), translate .3s var(--ease) }
.secnav a:hover .txt{ opacity:1; translate:0 }
.secnav a.on{ color:var(--ink) }
.secnav a.on .punto{ background:var(--acc); border-color:var(--acc); transform:scale(1.5) }
.secnav.claro a{ color:#8C837A }
.secnav.claro .punto{ border-color:#8C837A }
.secnav.claro a.on{ color:#F6F2ED }
.secnav.claro a.on .punto{ background:#F6F2ED; border-color:#F6F2ED }
@media (max-width:1180px){ .secnav{ display:none } }

::-webkit-scrollbar{ width:11px }
::-webkit-scrollbar-track{ background:var(--bg) }
::-webkit-scrollbar-thumb{ background:#D6CFC5; border:4px solid var(--bg); border-radius:99px }
::-webkit-scrollbar-thumb:hover{ background:var(--acc) }

/* ---------- tipografía ---------- */
h1,h2,h3,h4,.display{
  font-family:var(--font-d); font-weight:500; line-height:1.1;
  letter-spacing:-.028em; overflow-wrap:break-word;
}
.display{ font-size:clamp(2.4rem,5.2vw,4.3rem); line-height:1.04; letter-spacing:-.038em }
h2{ font-size:clamp(1.8rem,3.2vw,2.7rem); letter-spacing:-.032em }
h3{ font-size:clamp(1.1rem,1.6vw,1.32rem); letter-spacing:-.02em }
h4{ font-size:1rem }
/* Space Grotesk no tiene cursiva: si se pide italic el navegador la
   sintetiza inclinando las letras y queda sucio. El énfasis va por color. */
em{ font-style:normal; color:var(--acc) }
.lead{ font-size:clamp(1rem,1.25vw,1.14rem); color:var(--dim); max-width:58ch; line-height:1.75 }
p + p{ margin-top:1.1em }

/* Los <br> de los titulares son cortes de composición para pantalla ancha.
   En móvil se ocultan para que el texto fluya solo. En el HTML cada <br>
   lleva un espacio delante: si no, al ocultarlo las palabras quedan
   pegadas ("Osornocon el"). */
@media (max-width:680px){ h1 br, h2 br{ display:none } }

/* etiqueta superior */
.label{
  display:inline-block;
  font:400 .68rem/1 var(--font-b); letter-spacing:.26em; text-transform:uppercase;
  color:var(--faint);
}
.label--acc{ color:var(--acc) }

/* cifras */
.num{ font-variant-numeric:tabular-nums; letter-spacing:-.01em }

/* ---------- botones ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font:500 .9rem/1 var(--font-b);
  padding:15px 26px; border:1px solid var(--ink); border-radius:0;
  background:var(--ink); color:var(--bg);
  transition:background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}
.btn:hover{ background:var(--acc); border-color:var(--acc); color:#fff }
.btn--line{ background:none; color:var(--ink); border-color:var(--line-2) }
.btn--line:hover{ background:var(--ink); border-color:var(--ink); color:var(--bg) }
.btn--wa{ background:var(--wa); border-color:var(--wa); color:#fff }
.btn--wa:hover{ background:#17853F; border-color:#17853F }
.btn .arr{ transition:translate .3s var(--ease) }
.btn:hover .arr{ translate:4px 0 }

.link-line{
  display:inline-flex; align-items:center; gap:9px;
  font:500 .9rem/1 var(--font-b);
  padding-bottom:6px; border-bottom:1px solid var(--line-2);
  transition:color .3s, border-color .3s;
}
.link-line:hover{ color:var(--acc); border-color:var(--acc) }
.link-line .arr{ transition:translate .3s var(--ease) }
.link-line:hover .arr{ translate:4px 0 }

/* ---------- etiquetas de estado ---------- */
.tag{
  display:inline-block;
  font:500 .64rem/1 var(--font-b); letter-spacing:.14em; text-transform:uppercase;
  padding:6px 10px; border:1px solid var(--line-2); color:var(--dim); background:var(--bg);
}
.tag--acc{ background:var(--acc); border-color:var(--acc); color:#fff }
.tag--moss{ background:var(--moss); border-color:var(--moss); color:#fff }

/* ============================================================
   CABECERA
   El isotipo va en SVG y el logotipo en texto vivo ("ADAMS" en 600 con
   mucho tracking, la bajada en 400 espaciada). Así el header se ve
   nítido en cualquier pantalla y no depende de ninguna imagen.
   La variante B de la cabecera vive en css/header-b.css.
   ============================================================ */
.site-nav{
  position:fixed; inset:0 0 auto 0; z-index:60; height:var(--nav-h);
  display:flex; align-items:center;
  border-bottom:1px solid transparent; transition:border-color .35s;
}
/* El fondo difuminado va en una capa propia, NUNCA en .site-nav:
   backdrop-filter convierte al elemento en bloque contenedor de sus
   descendientes position:fixed. Puesto en la barra, el menú móvil dejaba
   de medirse contra la ventana y pasaba a medirse contra los 76px de la
   barra, así que al "esconderse" con translateY(-101%) sólo subía 77px y
   quedaba asomado sobre la página. */
.site-nav::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:color-mix(in srgb, var(--bg) 90%, transparent);
  backdrop-filter:blur(12px);
}
.site-nav.scrolled{ border-bottom-color:var(--line) }
.site-nav .wrap{ display:flex; align-items:center; justify-content:space-between; gap:24px }

.brand{ display:flex; align-items:center; gap:13px }
.brand svg{ height:42px; width:auto; flex:none }
.brand .w{ display:block; font:600 1.22rem/1 var(--font-d); letter-spacing:.2em; color:var(--acc) }
.brand .t{ display:block; font:400 .53rem/1 var(--font-b); letter-spacing:.24em; text-transform:uppercase; color:var(--dim); margin-top:7px }

.nav-menu{ display:flex; gap:36px }
.nav-menu a{
  font:400 .9rem/1 var(--font-b); color:var(--dim);
  padding:8px 0; position:relative; transition:color .3s;
}
.nav-menu a::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--acc); transform:scaleX(0); transform-origin:right;
  transition:transform .34s var(--ease);
}
.nav-menu a:hover,.nav-menu a[aria-current="page"]{ color:var(--ink) }
.nav-menu a:hover::after,.nav-menu a[aria-current="page"]::after{ transform:scaleX(1); transform-origin:left }

.nav-tel{
  font:400 .88rem/1 var(--font-b); color:var(--ink);
  padding-bottom:5px; border-bottom:1px solid var(--line-2); transition:color .3s, border-color .3s;
}
.nav-tel:hover{ color:var(--acc); border-color:var(--acc) }

.nav-toggle{ display:none; flex-direction:column; gap:6px; padding:8px }
.nav-toggle span{ width:24px; height:1px; background:var(--ink); transition:.35s var(--ease) }
.nav-toggle.open span:nth-child(1){ transform:translateY(7px) rotate(45deg) }
.nav-toggle.open span:nth-child(2){ opacity:0 }
.nav-toggle.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg) }

@media (max-width:900px){
  :root{ --nav-h:76px }
  .brand svg{ height:36px }
  .brand .w{ font-size:1.15rem }
  .nav-toggle{ display:flex; position:relative; z-index:2 }
  .brand{ position:relative; z-index:2 }
  .nav-tel{ display:none }
  .nav-menu{
    position:fixed; inset:0; z-index:1; background:var(--bg);
    flex-direction:column; justify-content:center; align-items:center; gap:5vh;
    padding-top:var(--nav-h);
    transform:translateY(-101%); transition:transform .5s var(--ease);
  }
  .nav-menu.open{ transform:none }
  .nav-menu a{ font-family:var(--font-d); font-size:1.7rem; color:var(--ink) }
}

/* ---------- reveals ---------- */
.rv{ opacity:0; transform:translateY(18px); transition:opacity .8s var(--ease-o), transform .8s var(--ease-o) }
.rv.in{ opacity:1; transform:none }
.rv[data-d="1"]{ transition-delay:.07s } .rv[data-d="2"]{ transition-delay:.14s }
.rv[data-d="3"]{ transition-delay:.21s } .rv[data-d="4"]{ transition-delay:.28s }
.rv[data-d="5"]{ transition-delay:.35s } .rv[data-d="6"]{ transition-delay:.42s }

.rv-img{ position:relative; overflow:hidden }
.rv-img img{ transform:scale(1.06); transition:transform 1.3s var(--ease-o) }
.rv-img.in img{ transform:scale(1) }

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto }
  .rv{ opacity:1!important; transform:none!important; transition:none!important }
  .rv-img img{ transform:none!important }
  *,*::before,*::after{ animation-duration:.01ms!important; transition-duration:.01ms!important }
}

/* ---------- barra de progreso ---------- */
.scroll-progress{ position:fixed; top:0; left:0; height:2px; width:0; background:var(--acc); z-index:70 }

/* ---------- ficha de datos ---------- */
.ficha{ border-top:1px solid var(--line) }
.ficha > div{ display:flex; justify-content:space-between; gap:20px; padding:15px 0; border-bottom:1px solid var(--line) }
.ficha .k{ font:400 .82rem/1.4 var(--font-b); color:var(--dim) }
.ficha .v{ font:500 .92rem/1.4 var(--font-b); text-align:right }

/* ---------- avisos ---------- */
.nota{ padding:18px 20px; border-left:2px solid var(--line-2); background:var(--bg2) }
.nota b{ display:block; font-weight:600; font-size:.92rem; margin-bottom:5px }
.nota p{ color:var(--dim); font-size:.89rem; line-height:1.62 }
.nota--alerta{ border-left-color:var(--acc) }
.nota--alerta b{ color:var(--acc) }

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed; inset:0; z-index:95; background:rgba(250,247,244,.985);
  display:none; align-items:center; justify-content:center;
}
.lightbox.open{ display:flex; animation:lb .25s var(--ease) }
@keyframes lb{ from{ opacity:0 } }
.lightbox img{ max-width:92vw; max-height:82vh; object-fit:contain }
.lb-btn{ position:absolute; top:50%; translate:0 -50%; padding:22px 18px; font-size:1.4rem; color:var(--dim); transition:color .3s }
.lb-btn:hover{ color:var(--acc) }
.lb-prev{ left:12px } .lb-next{ right:12px }
.lb-close{ position:absolute; top:22px; right:26px; font:400 .78rem/1 var(--font-b); letter-spacing:.16em; text-transform:uppercase; color:var(--dim); padding:12px }
.lb-close:hover{ color:var(--acc) }
.lb-cap{
  position:absolute; bottom:26px; left:50%; translate:-50% 0; text-align:center; max-width:80vw;
  font:400 .82rem/1.6 var(--font-b); color:var(--dim);
}
.lb-cap b{ display:block; font:400 .68rem/1 var(--font-b); letter-spacing:.22em; text-transform:uppercase; color:var(--faint); margin-top:8px }

/* ---------- WhatsApp flotante ---------- */
.wa-float{
  position:fixed; right:24px; bottom:24px; z-index:65;
  width:50px; height:50px; border-radius:50%; background:var(--wa); color:#fff;
  display:grid; place-items:center; transition:transform .3s var(--ease);
}
.wa-float:hover{ transform:scale(1.07) }
.wa-float svg{ width:25px; height:25px }
@media (max-width:620px){ .wa-float{ right:16px; bottom:16px } }

/* ---------- footer ---------- */
.site-footer{ border-top:1px solid var(--line); background:var(--bg2) }
.footer-cta{ padding:clamp(64px,8vw,110px) 0; border-bottom:1px solid var(--line) }
.footer-cta .wrap{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:32px }
.footer-grid{ padding:60px 0; display:grid; grid-template-columns:1.7fr 1fr 1fr 1.2fr; gap:40px }
.site-footer h4{ font:400 .66rem/1 var(--font-b); letter-spacing:.24em; text-transform:uppercase; color:var(--faint); margin-bottom:20px }
.site-footer li{ margin-bottom:11px }
.site-footer li a,.site-footer li span{ color:var(--dim); font-size:.9rem; transition:color .3s }
.site-footer li a:hover{ color:var(--acc) }
.footer-brand p{ color:var(--dim); font-size:.9rem; max-width:34ch; margin-top:20px }
.footer-base{ border-top:1px solid var(--line); padding:22px 0 }
.footer-base .wrap{ display:flex; flex-wrap:wrap; gap:12px 26px; justify-content:space-between; font-size:.78rem; color:var(--faint) }
.footer-base a{ color:var(--dim) }
.footer-base a:hover{ color:var(--acc) }
.footer-credito{ width:100%; padding-top:14px; border-top:1px solid var(--line); text-align:center }
@media (min-width:760px){ .footer-credito{ width:auto; padding-top:0; border-top:0; text-align:right } }

/* redes sociales del pie */
.redes{ display:flex; gap:10px; margin-top:22px }
.redes a{
  width:38px; height:38px; display:grid; place-items:center;
  border:1px solid var(--line); color:var(--dim);
  transition:background .3s var(--ease), border-color .3s var(--ease), color .3s var(--ease);
}
.redes a:hover{ background:var(--acc); border-color:var(--acc); color:#fff }
.redes svg{ width:18px; height:18px }
@media (max-width:900px){ .footer-grid{ grid-template-columns:1fr 1fr } }
@media (max-width:560px){ .footer-grid{ grid-template-columns:1fr; gap:34px } }

/* util */
.section-head{ display:flex; flex-direction:column; gap:18px; margin-bottom:clamp(40px,5vw,64px); max-width:66ch }
.section-head--row{ flex-direction:row; align-items:flex-end; justify-content:space-between; max-width:none; gap:30px; flex-wrap:wrap }
.hide{ display:none!important }
.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap }
