/* ==========================================================================
   Corredores Pro — hoja de estilos única
   Paleta: navy #0A1E3F + azul del logotipo #0050C8 + base clara editorial
   ========================================================================== */

/* ---------- Tokens ---------- */
:root{
  --ink:#0A1E3F;
  --ink-2:#102B58;
  --ink-3:#1A3A72;

  --accent:#0050C8;
  --accent-d:#003FA0;
  --accent-l:#6FA8FF;

  --paper:#FFFFFF;
  --sand:#FAF8F4;
  --sand-2:#F3EEE6;

  --text:#1F2C34;
  --muted:#66737B;
  --line:#EAE5DC;

  --container:1200px;
  --gap:28px;

  --r:3px;
  --r-lg:6px;

  --sh:0 1px 2px rgba(10,30,63,.05), 0 10px 26px rgba(10,30,63,.07);
  --sh-lg:0 22px 60px rgba(10,30,63,.16);

  --ease:cubic-bezier(.22,.61,.36,1);
  --font:'Geist','Helvetica Neue',Helvetica,sans-serif;
}

/* ---------- Transiciones de página ---------- */
@view-transition{ navigation:auto; }
::view-transition-old(root),
::view-transition-new(root){
  animation-duration:.15s;
  animation-timing-function:cubic-bezier(.4,0,.2,1);
}

/* ---------- Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--font);
  font-weight:400;
  font-size:16.5px;
  line-height:1.65;
  color:var(--text);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
button,input,select,textarea{ font:inherit; color:inherit; }
h1,h2,h3,h4,h5{
  margin:0 0 .5em;
  font-family:var(--font);
  font-weight:600;
  line-height:1.16;
  letter-spacing:-.018em;
  color:var(--ink);
}
h1{ font-size:clamp(2.1rem,4.1vw,3.25rem); }
h2{ font-size:clamp(1.65rem,2.9vw,2.35rem); }
h3{ font-size:clamp(1.12rem,1.5vw,1.32rem); }
p{ margin:0 0 1.1em; }
p:last-child{ margin-bottom:0; }
ul{ margin:0 0 1.1em; padding-left:1.15em; }

/* ⛔ Texto claro sobre fondo oscuro o sobre imagen: incluye SIEMPRE los títulos */
.hero, .page-hero, .cta, .section--dark, .site-footer{ color:#fff; }
.hero h1,.hero h2,.hero h3,.hero h4,
.page-hero h1,.page-hero h2,.page-hero h3,.page-hero h4,
.cta h1,.cta h2,.cta h3,.cta h4,
.section--dark h1,.section--dark h2,.section--dark h3,.section--dark h4,
.site-footer h1,.site-footer h2,.site-footer h3,.site-footer h4,
.panel-dark h1,.panel-dark h2,.panel-dark h3,.panel-dark h4{ color:#fff; }

/* ---------- Layout ---------- */
.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:26px;
}
.section{ padding-block:clamp(62px,7.4vw,104px); }
.section--tight{ padding-block:clamp(46px,5vw,68px); }
.section--sand{ background:var(--sand); }
.section--dark{ background:var(--ink); }
.measure{ max-width:64ch; }
.center{ text-align:center; }
.center .measure{ margin-inline:auto; }

/* ---------- Eyebrow + títulos de sección ---------- */
.eyebrow{
  display:block;
  margin:0 0 7px;
  font-size:.735rem;
  font-weight:600;
  letter-spacing:.19em;
  text-transform:uppercase;
  color:var(--accent);
}
.hero .eyebrow,
.page-hero .eyebrow,
.cta .eyebrow,
.section--dark .eyebrow,
.panel-dark .eyebrow{ color:var(--accent-l); }
.section-head{ margin-bottom:clamp(30px,3.4vw,46px); }
.section-head h2{ margin-top:15px; margin-bottom:.35em; }
.section-head p{ color:var(--muted); max-width:60ch; }
.section--dark .section-head p,
.cta p{ color:rgba(255,255,255,.78); }
.section-head--row{
  display:flex; align-items:flex-end; justify-content:space-between; gap:24px; flex-wrap:wrap;
}

/* ---------- Botones ---------- */
.btn{
  display:inline-flex; align-items:center; gap:9px;
  padding:12px 24px;
  border:1px solid transparent;
  border-radius:var(--r);
  font-size:.9rem; font-weight:500; letter-spacing:.02em;
  cursor:pointer;
  transition:background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease), transform .25s var(--ease);
}
.btn--primary{ background:var(--accent); color:#fff; }
.btn--primary:hover{ background:var(--accent-d); transform:translateY(-1px); }
.btn--ink{ background:var(--ink); color:#fff; }
.btn--ink:hover{ background:var(--ink-2); transform:translateY(-1px); }
.btn--ghost{ background:transparent; border-color:var(--line); color:var(--ink); }
.btn--ghost:hover{ border-color:var(--ink); background:var(--ink); color:#fff; }
.hero .btn--ghost,
.page-hero .btn--ghost,
.cta .btn--ghost,
.section--dark .btn--ghost,
.panel-dark .btn--ghost{ border-color:rgba(255,255,255,.5); color:#fff; }
.hero .btn--ghost:hover,
.page-hero .btn--ghost:hover,
.cta .btn--ghost:hover,
.section--dark .btn--ghost:hover,
.panel-dark .btn--ghost:hover{ background:#fff; color:var(--ink); border-color:#fff; }
.btn--sm{ padding:9px 18px; font-size:.84rem; }
.btn-row{ display:flex; flex-wrap:wrap; gap:12px; }

.link-more{
  display:inline-flex; align-items:center; gap:8px;
  font-size:.88rem; font-weight:500; color:var(--accent);
  border-bottom:1px solid currentColor; padding-bottom:2px;
  transition:gap .25s var(--ease);
}
.link-more:hover{ gap:13px; }
.section--dark .link-more,.cta .link-more,.panel-dark .link-more{ color:var(--accent-l); }

/* ---------- Logotipo ---------- */
.logo{ display:inline-flex; align-items:center; gap:11px; color:var(--ink); }
.logo img{ height:74px; width:auto; flex:none; display:block; }
.site-footer .logo img{ height:94px; }
.logo svg{ width:30px; height:auto; flex:none; }
.logo-txt{ display:flex; flex-direction:column; line-height:1; }
.logo-txt b{
  font-size:1.32rem; font-weight:700; letter-spacing:.03em; color:currentColor;
}
.logo-txt span{
  font-size:.505rem; font-weight:500; letter-spacing:.395em;
  text-transform:uppercase; color:var(--muted); margin-top:4px;
}
.site-footer .logo{ color:#fff; }
.site-footer .logo-txt span{ color:rgba(255,255,255,.62); }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:90;   /* > .backdrop (70): el header crea contexto de apilamiento y el menú vive dentro */
  background:#fff;
  border-bottom:1px solid var(--line);
  transition:box-shadow .3s var(--ease);
}
.site-header.is-scrolled{ box-shadow:0 6px 24px rgba(10,30,63,.08); }
.header-inner{ display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:96px; }
.nav{ display:flex; align-items:center; gap:28px; }
.nav a{
  position:relative;
  font-size:.885rem; font-weight:500; color:var(--text);
  padding-block:6px;
  transition:color .22s var(--ease);
}
.nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--accent); transform:scaleX(0); transform-origin:left;
  transition:transform .28s var(--ease);
}
.nav a:hover{ color:var(--accent); }
.nav a:hover::after,
.nav a.is-active::after{ transform:scaleX(1); }
.nav a.is-active{ color:var(--accent); }
.header-cta{ display:inline-flex; }

/* ---------- Submenú "Servicios" ---------- */
.nav-group{ position:relative; }
.nav-top{
  display:inline-flex; align-items:center; gap:5px;
  position:relative;
  font-size:.885rem; font-weight:500; color:var(--text);
  padding-block:6px; cursor:pointer;
  transition:color .22s var(--ease);
}
.nav-top svg{ width:13px; height:13px; transition:transform .25s var(--ease); }
.nav-top::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--accent); transform:scaleX(0); transform-origin:left;
  transition:transform .28s var(--ease);
}
.nav-group:hover .nav-top,
.nav-group.is-active .nav-top{ color:var(--accent); }
.nav-group:hover .nav-top::after,
.nav-group.is-active .nav-top::after{ transform:scaleX(1); }
.nav-group:hover .nav-top svg{ transform:rotate(180deg); }
.nav-sub{
  position:absolute; top:100%; left:50%; transform:translate(-50%,8px);
  min-width:250px; padding:8px;
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  box-shadow:var(--sh-lg);
  opacity:0; visibility:hidden; transition:.26s var(--ease);
}
.nav-group:hover .nav-sub,
.nav-group:focus-within .nav-sub{ opacity:1; visibility:visible; transform:translate(-50%,4px); }
.nav-sub a{
  display:block; padding:10px 14px; border-radius:2px;
  font-size:.875rem; white-space:nowrap;
}
.nav-sub a::after{ display:none; }
.nav-sub a:hover{ background:var(--sand); color:var(--accent); }
.nav-sub a.is-active{ color:var(--accent); }
.nav > .btn{ display:none; }
.header-actions{ display:flex; align-items:center; gap:18px; }

.burger{
  display:none; width:44px; height:44px; align-items:center; justify-content:center;
  background:none; border:1px solid var(--line); border-radius:var(--r); cursor:pointer;
}
.burger span{ display:block; width:19px; height:1.5px; background:var(--ink); position:relative; transition:.25s var(--ease); }
.burger span::before,.burger span::after{
  content:""; position:absolute; left:0; width:19px; height:1.5px; background:var(--ink); transition:.25s var(--ease);
}
.burger span::before{ top:-6px; }
.burger span::after{ top:6px; }
.is-menu-open .burger span{ background:transparent; }
.is-menu-open .burger span::before{ top:0; transform:rotate(45deg); }
.is-menu-open .burger span::after{ top:0; transform:rotate(-45deg); }

.backdrop{
  position:fixed; inset:0; background:rgba(10,30,63,.5); z-index:70;
  opacity:0; visibility:hidden; transition:.3s var(--ease);
}
.is-menu-open .backdrop{ opacity:1; visibility:visible; }

/* ---------- Hero ---------- */
.hero{
  position:relative;
  display:flex; align-items:center;
  min-height:clamp(480px,74vh,660px);
  background:var(--ink);
  overflow:hidden;
}
.hero-bg{ position:absolute; inset:0; }
.hero-bg img{ width:100%; height:100%; object-fit:cover; }
.hero-bg::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(100deg,rgba(10,30,63,.70) 0%,rgba(10,30,63,.58) 30%,rgba(10,30,63,.12) 60%,rgba(10,30,63,0) 74%),linear-gradient(180deg,rgba(10,30,63,.16),rgba(10,30,63,.10));
}
.hero .container{ position:relative; z-index:2; padding-block:clamp(64px,8vw,96px); }
.hero-copy{ max-width:660px; }
.hero h1{ margin-top:15px; margin-bottom:.42em; }
.hero h1 em{ font-style:normal; color:var(--accent-l); }
/* velo suave = se ve la foto; la sombra asegura la lectura del texto claro */
.hero h1,.hero .hero-lead,.hero .eyebrow,
.page-hero h1,.page-hero p,.page-hero .eyebrow,
.cta h2,.cta p,.cta .eyebrow{ text-shadow:0 1px 18px rgba(10,30,63,.45); }
.hero-lead{ font-size:clamp(1rem,1.35vw,1.115rem); color:rgba(255,255,255,.85); max-width:52ch; margin-bottom:30px; }

/* Buscador rápido del hero */
.quick-search{
  position:relative; z-index:3;
  margin-top:38px;
  background:rgba(255,255,255,.97);
  border-radius:var(--r);
  padding:14px;
  display:grid; grid-template-columns:repeat(3,1fr) auto; gap:10px;
  box-shadow:var(--sh-lg);
  max-width:760px;
}
.quick-search select{
  width:100%; padding:11px 34px 11px 13px;
  border:1px solid var(--line); border-radius:var(--r);
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2366737B' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 11px center/15px;
  appearance:none; font-size:.885rem; color:var(--text); cursor:pointer;
}
.quick-search select:focus{ outline:none; border-color:var(--accent); }

/* ---------- Cabecera de páginas interiores ---------- */
.page-hero{
  position:relative;
  background:var(--ink);
  padding-block:clamp(74px,8.6vw,118px);
  overflow:hidden;
}
.page-hero-bg{ position:absolute; inset:0; }
.page-hero-bg img{ width:100%; height:100%; object-fit:cover; }
.page-hero-bg::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(95deg,rgba(10,30,63,.74) 0%,rgba(10,30,63,.60) 34%,rgba(10,30,63,.16) 66%,rgba(10,30,63,.02) 82%),linear-gradient(180deg,rgba(10,30,63,.18),rgba(10,30,63,.12));
}
.page-hero .container{ position:relative; z-index:2; }
.page-hero h1{ margin-top:15px; margin-bottom:.35em; max-width:19ch; }
.page-hero p{ color:rgba(255,255,255,.8); max-width:58ch; margin-bottom:0; }

/* ---------- Tarjetas de propiedad ---------- */
.grid-props > *{ display:flex; }
.grid-props > * > .prop-card{ width:100%; }
.grid-props{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(322px,1fr));
  gap:clamp(20px,2.2vw,30px);
}
.prop-card{
  display:flex; flex-direction:column;
  background:#fff;
  border:1px solid var(--line);
  border-radius:var(--r);
  overflow:hidden;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.prop-card:hover{ transform:translateY(-4px); box-shadow:var(--sh); border-color:#d8d2c4; }
.prop-media{ position:relative; aspect-ratio:88/62; overflow:hidden; background:var(--sand-2); }
.prop-media img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease); }
.prop-card:hover .prop-media img{ transform:scale(1.045); }
.prop-tag{
  position:absolute; top:13px; left:13px;
  display:inline-flex; align-items:center;
  padding:5px 11px;
  background:rgba(10,30,63,.88); color:#fff;
  border-radius:2px;
  font-size:.68rem; font-weight:600; letter-spacing:.13em; text-transform:uppercase;
}
.prop-tag--rent{ background:rgba(27,122,124,.94); }
.prop-tag--sold{ background:rgba(122,32,38,.92); }
.prop-tag--rented{ background:rgba(27,122,124,.94); }
.prop-card--result .prop-media img{ transition:transform .8s var(--ease); }
.prop-card--result:hover .prop-media img{ transform:scale(1.045); }
.prop-card--result h3{ font-size:.99rem; }
.prop-year{ font-size:.8rem; color:var(--muted); letter-spacing:.03em; }
.prop-body{ padding:20px 20px 22px; display:flex; flex-direction:column; flex:1; }
.prop-comuna{
  font-size:.7rem; font-weight:600; letter-spacing:.15em; text-transform:uppercase; color:var(--accent);
  margin-bottom:8px;
}
.prop-card h3{
  font-size:1.03rem; font-weight:600; line-height:1.35; letter-spacing:-.01em;
  margin-bottom:12px;
}
.prop-card h3 a:hover{ color:var(--accent); }
.prop-specs{
  display:flex; flex-wrap:wrap; gap:6px 14px;
  margin:0 0 16px; padding:0; list-style:none;
  font-size:.83rem; color:var(--muted);
}
.prop-specs li{ display:inline-flex; align-items:center; gap:6px; }
.prop-specs svg{ width:15px; height:15px; flex:none; color:var(--accent); }
.prop-foot{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  margin-top:auto; padding-top:15px; border-top:1px solid var(--line);
}
.prop-price{ font-size:1.07rem; font-weight:600; color:var(--ink); letter-spacing:-.01em; }
.prop-price small{ display:block; font-size:.7rem; font-weight:500; color:var(--muted); letter-spacing:.04em; }

/* ---------- Filtros del listado ---------- */
.filters{
  display:grid; grid-template-columns:repeat(4,1fr) auto; gap:12px;
  padding:20px;
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  box-shadow:var(--sh);
}
.filters label{
  display:block; margin-bottom:6px;
  font-size:.68rem; font-weight:600; letter-spacing:.13em; text-transform:uppercase; color:var(--muted);
}
.filters select{
  width:100%; padding:10px 32px 10px 12px;
  border:1px solid var(--line); border-radius:var(--r);
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2366737B' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center/15px;
  appearance:none; font-size:.87rem; cursor:pointer;
}
.filters select:focus{ outline:none; border-color:var(--accent); }
.filters .btn{ align-self:end; height:42px; }
.results-count{ margin:26px 0 24px; font-size:.9rem; color:var(--muted); }
.results-count b{ color:var(--ink); font-weight:600; }
.no-results{
  display:none; padding:56px 24px; text-align:center;
  background:var(--sand); border-radius:var(--r); color:var(--muted);
}
.no-results.is-on{ display:block; }

/* ---------- Bloque partido (foto + panel oscuro) ---------- */
.split{ display:grid; grid-template-columns:1.06fr .94fr; align-items:stretch; }
.split-media{ position:relative; min-height:440px; }
.split-media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.panel-dark{
  background:var(--ink); color:#fff;
  padding:clamp(38px,4.4vw,64px);
  display:flex; flex-direction:column; justify-content:center;
}
.panel-dark p{ color:rgba(255,255,255,.8); }
.panel-dark h2{ margin-top:15px; }

/* ---------- Tarjetas de valor / servicio ---------- */
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,2.2vw,28px); }
.grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(20px,2.6vw,34px); }
.vcard{
  padding:32px 28px;
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.vcard:hover{ transform:translateY(-3px); box-shadow:var(--sh); }
.vcard .ico{
  width:42px; height:42px; margin-bottom:18px;
  display:flex; align-items:center; justify-content:center;
  color:var(--accent);
}
.vcard .ico svg{ width:30px; height:30px; }
.vcard h3{ margin-bottom:.5em; }
.vcard p{ color:var(--muted); font-size:.945rem; }
.section--dark .vcard{ background:rgba(255,255,255,.045); border-color:rgba(255,255,255,.13); }
.section--dark .vcard p{ color:rgba(255,255,255,.74); }
.section--dark .vcard .ico{ color:var(--accent-l); }

/* Pasos numerados */
.steps{ counter-reset:s; display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(18px,2.4vw,30px); }
.step{ position:relative; padding-top:26px; border-top:2px solid var(--line); }
.step::before{
  counter-increment:s; content:"0" counter(s);
  display:block; margin-bottom:12px;
  font-size:.82rem; font-weight:600; letter-spacing:.14em; color:var(--accent);
}
.step h3{ font-size:1.05rem; margin-bottom:.45em; }
.step p{ font-size:.93rem; color:var(--muted); }
.section--dark .step{ border-top-color:rgba(255,255,255,.2); }
.section--dark .step p{ color:rgba(255,255,255,.74); }

/* Cifras */
.stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.stat b{ display:block; font-size:clamp(1.85rem,3.2vw,2.6rem); font-weight:600; letter-spacing:-.03em; color:var(--ink); line-height:1.05; }
.stat span{ display:block; margin-top:8px; font-size:.85rem; color:var(--muted); }
.section--dark .stat b{ color:#fff; }
.section--dark .stat span{ color:rgba(255,255,255,.7); }

/* Cita */
.quote{
  border-left:2px solid var(--accent);
  padding-left:clamp(20px,2.6vw,34px);
  font-size:clamp(1.12rem,1.85vw,1.4rem);
  font-weight:400; line-height:1.5; letter-spacing:-.012em; color:var(--ink);
}
.section--dark .quote{ color:#fff; border-left-color:var(--accent-l); }
.quote-by{ margin-top:16px; font-size:.85rem; letter-spacing:.05em; color:var(--muted); }
.section--dark .quote-by{ color:rgba(255,255,255,.65); }

/* Comunas */
.comunas{ display:flex; flex-wrap:wrap; gap:10px; list-style:none; padding:0; margin:0; }
.comunas a{
  display:inline-flex; align-items:baseline; gap:8px;
  padding:10px 18px;
  border:1px solid var(--line); border-radius:100px; background:#fff;
  font-size:.885rem; transition:.25s var(--ease);
}
.comunas a span{ font-size:.76rem; color:var(--muted); }
.comunas a:hover{ border-color:var(--ink); background:var(--ink); color:#fff; }
.comunas a:hover span{ color:rgba(255,255,255,.7); }

/* ---------- Ficha de propiedad ---------- */
.prop-head{ display:grid; grid-template-columns:1fr auto; gap:26px; align-items:end; }
.prop-head .price-big{ font-size:clamp(1.55rem,2.6vw,2.05rem); font-weight:600; letter-spacing:-.025em; color:#fff; }
.prop-head .price-big small{ display:block; font-size:.78rem; font-weight:400; letter-spacing:.05em; color:rgba(255,255,255,.7); margin-top:4px; }
.page-hero .prop-specs{ font-size:.9rem; }
.page-hero .prop-specs svg{ color:var(--accent-l); }
.lb-btn svg{ width:20px; height:20px; }
.gallery-more{ pointer-events:none; }
.prop-layout{ display:grid; grid-template-columns:1fr 348px; gap:clamp(28px,3.4vw,52px); align-items:start; }

.gallery{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.gallery a{ position:relative; aspect-ratio:4/3; overflow:hidden; border-radius:var(--r); background:var(--sand-2); }
.gallery a:first-child{ grid-column:span 2; grid-row:span 2; aspect-ratio:auto; }
.gallery img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease), opacity .3s var(--ease); }
.gallery a:hover img{ transform:scale(1.05); opacity:.92; }
.gallery-more{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:rgba(10,30,63,.66); color:#fff; font-size:.95rem; font-weight:500;
}

.specs-table{ width:100%; border-collapse:collapse; font-size:.93rem; }
.specs-table th,.specs-table td{ padding:12px 0; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.specs-table th{ width:48%; font-weight:400; color:var(--muted); }
.specs-table td{ font-weight:500; color:var(--ink); }

.aside-card{
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  padding:26px 24px; box-shadow:var(--sh);
}
.aside-card + .aside-card{ margin-top:20px; }
.aside-card h3{ font-size:1.05rem; margin-bottom:.6em; }
.aside-sticky{ position:sticky; top:100px; }
.agent-line{ display:flex; align-items:center; gap:10px; margin-bottom:12px; font-size:.92rem; color:var(--text); }
.agent-line svg{ width:17px; height:17px; flex:none; color:var(--accent); }
.agent-line a:hover{ color:var(--accent); }

.desc-body{ font-size:1rem; color:#3b4850; }
.desc-body p{ margin-bottom:1em; }

.video-wrap{ position:relative; aspect-ratio:16/9; border-radius:var(--r); overflow:hidden; background:var(--ink); }
.video-wrap iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.map-wrap{ position:relative; aspect-ratio:21/8; border-radius:var(--r); overflow:hidden; background:var(--sand-2); }
.map-wrap iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; filter:grayscale(.28); }

/* Lightbox */
.lightbox{
  position:fixed; inset:0; z-index:120; display:none;
  background:rgba(4,20,32,.95); align-items:center; justify-content:center;
}
.lightbox.is-on{ display:flex; }
.lightbox img{ max-width:92vw; max-height:86vh; object-fit:contain; border-radius:var(--r); }
.lb-btn{
  position:absolute; top:50%; transform:translateY(-50%);
  width:52px; height:52px; display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.24); border-radius:50%;
  color:#fff; cursor:pointer; transition:.25s var(--ease);
}
.lb-btn:hover{ background:rgba(255,255,255,.22); }
.lb-prev{ left:22px; } .lb-next{ right:22px; }
.lb-close{ top:22px; right:22px; transform:none; }
.lb-count{ position:absolute; bottom:24px; left:50%; transform:translateX(-50%); color:rgba(255,255,255,.75); font-size:.85rem; letter-spacing:.06em; }

/* ---------- CTA sobre el footer ---------- */
.cta{
  position:relative;
  padding-block:clamp(70px,8vw,110px);
  background:var(--ink);
  overflow:hidden;
  text-align:center;
}
.cta-bg{ position:absolute; inset:0; }
.cta-bg img{ width:100%; height:100%; object-fit:cover; }
.cta-bg::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(10,30,63,.60),rgba(10,30,63,.74)); }
.cta .container{ position:relative; z-index:2; }
.cta h2{ margin-top:15px; max-width:22ch; margin-inline:auto; }
.cta p{ max-width:56ch; margin-inline:auto; margin-bottom:28px; }
.cta .btn-row{ justify-content:center; }

/* ---------- Contacto ---------- */
.contact-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(30px,4vw,64px); align-items:start; }
.contact-list{ list-style:none; margin:0; padding:0; }
.contact-list li{ padding:15px 0; border-bottom:1px solid var(--line); }
.contact-list li:first-child{ padding-top:0; }
.contact-list li:last-child{ border-bottom:0; padding-bottom:0; }
.contact-item{ display:inline-flex; align-items:center; gap:11px; font-size:.97rem; }
.contact-item svg{ width:18px; height:18px; flex:none; color:var(--accent); }
.contact-item:hover{ color:var(--accent); }
.contact-rot{ display:block; margin-bottom:4px; font-size:.7rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }

.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
/* El atributo hidden debe ganar sobre cualquier display del sitio
   (.field usa display:flex y anulaba el hidden del campo de propiedad) */
[hidden]{ display:none !important; }

.field{ display:flex; flex-direction:column; }
.field--full{ grid-column:1 / -1; }
.field--full > .btn{ align-self:flex-start; }
.field label{ margin-bottom:7px; font-size:.75rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.field input,.field textarea{
  padding:12px 14px;
  border:1px solid var(--line); border-radius:var(--r);
  background:#fff; font-size:.94rem;
  transition:border-color .22s var(--ease);
}
.field textarea{ min-height:148px; resize:vertical; }
.field input:focus,.field textarea:focus{ outline:none; border-color:var(--accent); }
.form-note{
  display:none; margin-bottom:22px; padding:14px 18px;
  border-radius:var(--r); font-size:.92rem;
}
.form-note.is-on{ display:block; }
.form-note--ok{ background:#e8f5ee; border:1px solid #b7dfc8; color:#1c6b3f; }
.form-note--err{ background:#fdeceb; border:1px solid #f3c3bf; color:#a12f26; }

/* ---------- Footer ---------- */
.site-footer{
  background:var(--ink); color:rgba(255,255,255,.74);
  padding-block:clamp(52px,6vw,74px) 30px;
}
.footer-grid{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1.25fr; gap:clamp(26px,3vw,48px); }
.footer-about{ margin-top:20px; font-size:.92rem; color:rgba(255,255,255,.66); max-width:34ch; }
.site-footer h4{
  margin-bottom:18px; font-size:.74rem; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:#fff;
}
.footer-list{ list-style:none; margin:0; padding:0; }
.footer-list li{ margin-bottom:11px; }
.footer-list a{ font-size:.92rem; color:rgba(255,255,255,.72); transition:color .22s var(--ease); }
.footer-list a:hover{ color:var(--accent-l); }
.footer-contact li{ margin-bottom:13px; }
.footer-contact .contact-item{ font-size:.92rem; color:rgba(255,255,255,.78); }
.footer-contact .contact-item svg{ color:var(--accent-l); }
.footer-contact .contact-item:hover{ color:#fff; }
.social{ display:flex; gap:10px; margin-top:18px; }
.social a{
  width:36px; height:36px; display:flex; align-items:center; justify-content:center;
  border:1px solid rgba(255,255,255,.2); border-radius:50%; color:rgba(255,255,255,.8);
  transition:.25s var(--ease);
}
.social a:hover{ background:var(--accent); border-color:var(--accent); color:#fff; }
.social svg{ width:16px; height:16px; }

.footer-credit{
  margin-top:40px;
  padding-top:22px;
  border-top:1px solid rgba(255,255,255,.12);
  text-align:center;
  font-size:.8rem;
  color:rgba(255,255,255,.6);
}
.footer-credit a{ color:var(--accent-l); }
.footer-credit a:hover{ color:#fff; }

/* ---------- Animaciones de entrada ---------- */
/* Sin JS todo se ve; solo se oculta cuando el JS confirma que está vivo (.js) */
.js .reveal{
  opacity:0; transform:translateY(20px);
  transition:opacity .75s var(--ease), transform .75s var(--ease);
  animation:reveal-failsafe 0s linear 3s forwards;   /* salvavidas si el observer no corre */
}
.reveal.is-in{ opacity:1; transform:none; animation:none; }
@keyframes reveal-failsafe{ to{ opacity:1; transform:none; } }
.reveal[data-d="1"]{ transition-delay:.08s; }
.reveal[data-d="2"]{ transition-delay:.16s; }
.reveal[data-d="3"]{ transition-delay:.24s; }
.reveal[data-d="4"]{ transition-delay:.32s; }
.reveal[data-d="5"]{ transition-delay:.4s; }

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .prop-layout{ grid-template-columns:1fr; }
  .aside-sticky{ position:static; }
  .footer-grid{ grid-template-columns:1fr 1fr; gap:34px; }
  .steps{ grid-template-columns:repeat(2,1fr); }
  .stats{ grid-template-columns:repeat(2,1fr); }
  .filters{ grid-template-columns:repeat(2,1fr); }
  .filters .btn{ grid-column:1 / -1; }
}
@media (max-width:880px){
  .nav{
    position:fixed; top:0; right:0; bottom:0; z-index:80;
    width:min(320px,84vw);
    flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:6px;
    background:#fff; padding:96px 30px 34px;
    transform:translateX(100%); transition:transform .35s var(--ease);
    box-shadow:-20px 0 50px rgba(10,30,63,.16);
    overflow-y:auto;
  }
  .is-menu-open .nav{ transform:none; }
  /* Sin JS el menú deslizante no puede abrirse: se muestra en el flujo */
  html:not(.js) .header-inner{ flex-wrap:wrap; }
  html:not(.js) .nav{
    position:static; width:100%; transform:none; box-shadow:none;
    padding:0 0 14px; background:transparent; overflow:visible;
  }
  html:not(.js) .burger{ display:none; }
  .nav a{ width:100%; padding:13px 0; border-bottom:1px solid var(--line); font-size:.96rem; }
  .nav a::after{ display:none; }
  /* el submenú no se despliega: se muestra completo dentro del menú */
  .nav-group{ width:100%; }
  .nav-top{
    width:100%; justify-content:space-between; padding:13px 0;
    border-bottom:1px solid var(--line); font-size:.96rem;
  }
  .nav-top svg{ display:none; }
  .nav-top::after{ display:none; }
  .nav-sub{
    position:static; transform:none; opacity:1; visibility:visible;
    min-width:0; padding:0 0 0 14px; border:0; box-shadow:none; background:transparent;
  }
  .nav-sub a{ padding:11px 0; border-bottom:1px solid var(--line); font-size:.9rem; color:var(--muted); }
  .nav-sub a:hover{ background:transparent; }
  .nav > .btn{ display:inline-flex; margin-top:18px; width:100%; justify-content:center; }
  .burger{ display:flex; }
  .header-cta{ display:none; }
  .split{ grid-template-columns:1fr; }
  .split-media{ min-height:300px; }
  .grid-3{ grid-template-columns:1fr; }
  .grid-2{ grid-template-columns:1fr; }
  .contact-grid{ grid-template-columns:1fr; }
  .quick-search{ grid-template-columns:1fr 1fr; }
  .quick-search .btn{ grid-column:1 / -1; justify-content:center; }
  .gallery{ grid-template-columns:repeat(3,1fr); }
  .gallery a:first-child{ grid-column:span 3; grid-row:auto; aspect-ratio:16/10; }
  .prop-head{ grid-template-columns:1fr; }
}
@media (max-width:560px){
  body{ font-size:16px; }
  .container{ padding-inline:20px; }
  .grid-props{ grid-template-columns:1fr; }
  .steps{ grid-template-columns:1fr; }
  .stats{ grid-template-columns:1fr 1fr; }
  .filters{ grid-template-columns:1fr; }
  .form-grid{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr; gap:30px; }
  .quick-search{ grid-template-columns:1fr; }
  .gallery{ grid-template-columns:repeat(2,1fr); }
  .gallery a:first-child{ grid-column:span 2; }
  .hero{ min-height:auto; }
  .lb-prev{ left:8px; } .lb-next{ right:8px; }
  .lb-btn{ width:44px; height:44px; }
}

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


/* ---------- Listas con check (servicios) ---------- */
.check-list{ list-style:none; margin:14px 0 0; padding:0; display:grid; gap:10px; }
.check-list li{ display:flex; gap:10px; align-items:flex-start; font-size:.96rem; line-height:1.5; }
.check-list svg{ width:18px; height:18px; flex:none; color:var(--accent); margin-top:3px; }
.vcard .check-list{ margin-top:10px; }
.vcard .check-list li{ font-size:.92rem; }

/* ---------- Redes sociales sobre fondo claro ---------- */
.social--dark a{ border-color:var(--line); color:var(--ink); }
.social--dark a:hover{ background:var(--accent); border-color:var(--accent); color:#fff; }

/* ---------- Galería de láminas cuadradas (transformación) ---------- */
.gallery--cuadrada{ grid-template-columns:repeat(3,1fr); gap:14px; }
.gallery--cuadrada a,
.gallery--cuadrada a:first-child{ grid-column:auto; grid-row:auto; aspect-ratio:1/1; }
@media (max-width:640px){ .gallery--cuadrada{ grid-template-columns:repeat(2,1fr); } }

/* ---------- Portada: diapositiva de imágenes ---------- */
.hero-slide{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity 1.1s var(--ease);
}
.hero-slide.is-on{ opacity:1; }
html:not(.js) .hero-slide:first-child{ opacity:1; }
.hero-dots{
  position:absolute; right:clamp(16px,3vw,40px); bottom:clamp(16px,3vw,34px);
  z-index:3; display:flex; gap:8px;
}
.hero-dot{
  width:30px; height:30px; padding:0; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  font:600 12px/1 var(--font); color:rgba(255,255,255,.85);
  background:rgba(10,30,63,.38); border:1px solid rgba(255,255,255,.42);
  border-radius:50%; backdrop-filter:blur(3px);
  transition:.25s var(--ease);
}
.hero-dot:hover{ background:rgba(10,30,63,.6); color:#fff; }
.hero-dot.is-on{ background:var(--accent); border-color:var(--accent); color:#fff; }
@media (max-width:640px){ .hero-dots{ bottom:auto; top:14px; right:14px; } }
