/* =========================================================
   RENTA KAPITAL — sistema de diseño
   Azul Piedra (base/oscuro) · Cobre (acento) · Verde Renta (secundario)
   Arena / Blanco Piedra (fondos claros)
   ========================================================= */

@view-transition { navigation: auto; }
::view-transition-old(root),
::view-transition-new(root){
  animation-duration:.15s;
  animation-timing-function:cubic-bezier(.4,0,.2,1);
}
@media (prefers-reduced-motion: reduce){
  ::view-transition-old(root),
  ::view-transition-new(root){ animation:none; }
}

:root{
  /* marca */
  --azul: #002855;
  --azul-2: #001B3D;
  --cobre: #FF7F32;
  --cobre-2: #E3661B;
  --verde: #1E6F52;
  --arena: #EEF1F5;
  --blanco-piedra: #FFFFFF;

  --ink: var(--azul);
  --bg: var(--blanco-piedra);
  --bg-alt: var(--arena);
  --line: rgba(0,40,85,.12);
  --line-strong: rgba(0,40,85,.22);
  --muted: #55606b;
  --white: #ffffff;

  --accent: var(--cobre);

  --radius: 2px;
  --radius-sm: 2px;
  --shadow: 0 18px 40px -20px rgba(0,27,61,.35);
  --shadow-sm: 0 8px 20px -12px rgba(0,27,61,.3);

  --container: 1250px;
  --gap: clamp(20px, 4vw, 40px);

  --f-title: "Frank Ruhl Libre", Georgia, serif;
  --f-body: "IBM Plex Sans", sans-serif;
  --f-mono: "IBM Plex Mono", monospace;

  --ease: cubic-bezier(.22,.9,.32,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; font-size:14px; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--f-body);
  font-size:1rem;      /* 14px, como la referencia */
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

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

h1,h2,h3,h4,h5{
  font-family:var(--f-title);
  font-weight:700;
  line-height:1.18;
  color:var(--ink);
  margin:0 0 .5em;
  letter-spacing:0;
}
h1{ font-size:clamp(1.9rem, 3vw, 2.6rem); }
h2{ font-size:clamp(1.7rem, 2.5vw, 2.36rem); }   /* 24–33px */
h3{ font-size:clamp(1.55rem, 1.95vw, 1.87rem); }   /* 22–26px */
h4{ font-size:1.3rem; }   /* 18px */
p{ margin:0 0 1em; color:var(--muted); }

/* texto claro sobre bloques oscuros / imagen — obligatorio */
.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{ color:#fff; }

.mono{ font-family:var(--f-mono); }
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }

.container{
  width:100%;
  max-width:var(--container);
  margin:0 auto;
  padding:0 clamp(20px, 4vw, 32px);
}

.section{ padding-top:clamp(44px, 5.5vw, 76px); padding-bottom:clamp(44px, 5.5vw, 76px); }
.section--alt{ background:var(--bg-alt); }
.section--dark{ background:var(--azul); color:rgba(255,255,255,.86); }
.section--dark p{ color:rgba(255,255,255,.72); }

/* ---------- eyebrow: texto simple, nunca píldora ---------- */
.eyebrow{
  display:block;
  font-family:var(--f-mono);
  font-size:1rem;
  font-weight:500;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--cobre);
  margin-bottom:7px;
}
.section--dark .eyebrow,
.hero .eyebrow,
.cta .eyebrow{ color:#FFA76B; }

.head{ margin-bottom:clamp(24px,3vw,36px); max-width:760px; }
.head h1, .head h2{ margin-top:15px; }
.head--center{ margin-left:auto; margin-right:auto; text-align:center; }

/* ---------- botones (rectangulares, institucionales) ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:13px 22px;
  border-radius:0;
  font-family:var(--f-body);
  font-weight:700;
  font-size:1rem;
  letter-spacing:.09em;
  text-transform:uppercase;
  line-height:1;
  text-decoration:none;
  border:1.5px solid transparent;
  cursor:pointer;
  transition:background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease);
  white-space:nowrap;
}
.btn-primary{ background:var(--cobre); color:#fff; }
.btn-primary:hover{ background:var(--cobre-2); color:#fff; }
.btn-ghost{ background:transparent; border-color:currentColor; color:var(--ink); }
.btn-ghost:hover{ background:rgba(0,40,85,.06); }
.btn-outline{ background:transparent; border-color:var(--azul); color:var(--azul); }
.btn-outline:hover{ background:var(--azul); color:#fff; }
.hero .btn-ghost, .cta .btn-ghost, .section--dark .btn-ghost{ color:#fff; }
.hero .btn-ghost:hover, .cta .btn-ghost:hover, .section--dark .btn-ghost:hover{ background:rgba(255,255,255,.12); }
.btn-sm{ padding:11px 18px; font-size:1rem; }

/* ---------- header (azul sólido siempre) ---------- */
.site-header{
  position:sticky; top:0; z-index:90;
  background:var(--azul);
  padding-top:24px; padding-bottom:24px; /* alto ~87px */
}
.site-header .container{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
}
.brand{ display:flex; align-items:center; flex:none; }
.brand img{ height:39px; width:auto; max-width:none; flex:none; }
.logo-light{ display:block; }
.logo-dark{ display:none; }

.nav{ display:flex; align-items:center; gap:clamp(14px,1.8vw,26px); flex-wrap:nowrap; }
.nav-links{ display:flex; align-items:center; gap:clamp(1rem,1.4vw,20px); list-style:none; margin:0; padding:0; flex-wrap:nowrap; }
.nav-links a{
  white-space:nowrap;
  text-decoration:none; font-weight:600; font-size:1rem;
  text-transform:uppercase; letter-spacing:.04em;
  color:#fff; opacity:.88;
  padding-top:6px; padding-bottom:6px;
  border-bottom:2px solid transparent;
  transition:opacity .2s, border-color .2s;
}
.nav-links a:hover, .nav-links a.is-active{ opacity:1; border-color:var(--cobre); }
.nav-cta{ display:flex; align-items:center; gap:12px; }

.burger{
  display:none;
  position:absolute; top:50%; right:clamp(20px,4vw,32px);
  transform:translateY(-50%);
  width:42px; height:42px;
  border-radius:0;
  border:1.5px solid rgba(255,255,255,.5);
  background:transparent;
  align-items:center; justify-content:center;
  flex-direction:column; gap:5px;
  cursor:pointer;
}
.burger span{ width:20px; height:2px; background:#fff; display:block; transition:transform .25s var(--ease), opacity .25s var(--ease); }
.nav.is-open .burger span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.nav.is-open .burger span:nth-child(2){ opacity:0; }
.nav.is-open .burger span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

.nav-backdrop{
  position:fixed; inset:0; z-index:70;
  background:rgba(0,27,61,.55);
  opacity:0; pointer-events:none;
  transition:opacity .3s var(--ease);
}
.nav-backdrop.is-open{ opacity:1; pointer-events:auto; }

/* ---------- hero compacto ---------- */
.hero{
  position:relative;
  min-height:clamp(460px, 56vw, 560px);
  display:flex; align-items:center;
  color:#fff;
  background:var(--azul);
  padding-top:56px; padding-bottom:56px;
}
.hero::before{
  content:""; position:absolute; inset:0;
  background-image:var(--hero-img);
  background-size:cover; background-position:center;
}
.hero::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,40,85,.90) 0%, rgba(0,40,85,.86) 60%, rgba(0,40,85,.94) 100%);
}
.hero .container{ position:relative; z-index:1; min-width:0; width:100%; }
.hero h1{ overflow-wrap:break-word; font-size:clamp(2.3rem, 4vw, 4rem); line-height:1.1; margin-bottom:.35em; }
.hero-content{ max-width:820px; }
.hero-content p{ color:rgba(255,255,255,.86); font-size:1.25rem; line-height:1.55; max-width:720px; margin-bottom:0; }

/* ---------- buscador con pestañas ---------- */
.finder{ position:relative; z-index:1; margin-top:clamp(24px,3.5vw,38px); }
.finder-tabs{ display:flex; gap:8px; flex-wrap:wrap; }
.finder-tab{
  appearance:none; border:0; cursor:pointer;
  background:rgba(255,255,255,.88); color:var(--azul);
  font-family:var(--f-body); font-weight:700;
  font-size:1rem; letter-spacing:.1em; text-transform:uppercase;
  padding:13px 20px; border-radius:0; line-height:1;
  transition:background .2s, color .2s;
}
.finder-tab:hover{ background:#fff; }
.finder-tab.is-active{ background:var(--azul); color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.25); }
.finder-panel{ display:none; background:#fff; padding:8px; }
.finder-panel.is-active{ display:block; }
.finder-form{ display:flex; align-items:stretch; gap:8px; flex-wrap:wrap; }
.finder-form select{
  flex:1 1 180px; min-width:0;
  border:1px solid var(--line); border-radius:0;
  background:#f4f5f3 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23001C3A' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>") no-repeat right 12px center/16px 16px;
  -webkit-appearance:none; appearance:none;
  padding:15px 38px 15px 14px;
  font-family:var(--f-body); font-size:1rem; color:var(--azul);
}
.finder-form select:focus{ outline:2px solid var(--cobre); outline-offset:-2px; }
.finder-submit{
  flex:none; border:0; cursor:pointer;
  background:var(--cobre); color:#fff;
  width:56px; display:flex; align-items:center; justify-content:center;
  transition:background .2s;
  font-family:var(--f-title); font-weight:700; font-size:1rem;
  letter-spacing:.09em; text-transform:uppercase;
}
.finder-submit.is-wide{ width:auto; padding:0 24px; }
.finder-submit:hover{ background:var(--cobre-2); }
.finder-submit svg{ width:20px; height:20px; }

/* ---------- banda de cifras (azul sólida, separada) ---------- */
.stats-band{ background:var(--azul-2); }
.stats-band .container{
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
  padding-top:clamp(30px,4vw,44px); padding-bottom:clamp(30px,4vw,44px);
}
.stat-item{ text-align:center; padding:0 18px; border-left:1px solid rgba(255,255,255,.22); }
.stat-item:first-child{ border-left:0; }
.stat-item .stat-key{
  display:block; font-family:var(--f-title); font-weight:800;
  font-size:clamp(1.3rem,2.2vw,1.85rem); color:#fff; line-height:1.1;
}
.stat-item .stat-label{
  display:block; margin-top:8px; font-size:1rem; line-height:1.4;
  color:rgba(255,255,255,.74);
}

/* ---------- barra de navegación secundaria ---------- */
.subnav{
  position:sticky; top:87px; z-index:60;   /* = alto real del header */
  background:#fff; border-bottom:1px solid var(--line);
}
.subnav .container{
  display:flex; align-items:center; justify-content:flex-end;
  gap:clamp(14px,2vw,28px); min-height:66px; padding-top:10px; padding-bottom:10px;
}
.subnav a.subnav-link{
  text-decoration:none; color:var(--azul);
  font-family:var(--f-title); font-weight:700; font-size:1rem;
  line-height:1;
  border-bottom:2px solid transparent;
  padding-top:5px; padding-bottom:3px;   /* compensado: el texto queda centrado */
  transition:border-color .2s;
}
.subnav a.subnav-link:hover{ border-color:var(--cobre); }

/* ---------- page-hero (sin ruta de navegación) ---------- */
.page-hero{
  position:relative; color:#fff; background:var(--azul);
  padding-top:clamp(52px,7vw,84px); padding-bottom:clamp(52px,7vw,84px);
  display:flex; align-items:center; min-height:clamp(300px,34vw,380px);
}
.page-hero::before{
  content:""; position:absolute; inset:0;
  background-image:var(--hero-img);
  background-size:cover; background-position:center;
}
.page-hero::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,40,85,.88) 0%, rgba(0,40,85,.84) 50%, rgba(0,40,85,.94) 100%);
}
.page-hero .container{ position:relative; z-index:1; min-width:0; width:100%; }
.page-hero h1{ overflow-wrap:break-word; font-size:clamp(1.9rem,3.4vw,3.1rem); }
.page-hero p{ color:rgba(255,255,255,.82); max-width:620px; font-size:1.2rem; overflow-wrap:break-word; }

/* ---------- tarjetas de servicio ---------- */
.grid-4{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--gap); }
.grid-3{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--gap); }
.grid-2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--gap); }

.service-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:30px 26px;
  text-decoration:none;
  color:var(--ink);
  display:flex; flex-direction:column;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
  height:100%;
}
.service-card:hover{ transform:translateY(-5px); box-shadow:var(--shadow); border-color:transparent; }
.service-card .icon{
  width:48px; height:48px; border-radius:12px;
  background:rgba(180,85,31,.1); color:var(--cobre);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:18px; flex:none;
}
.service-card .icon svg{ width:24px; height:24px; }
.service-card h3{ margin-bottom:10px; }
.service-card p{ font-size:1rem; margin-bottom:16px; }
.service-card .go{
  margin-top:auto; display:inline-flex; align-items:center; gap:6px;
  font-family:var(--f-title); font-weight:700; font-size:1rem; color:var(--cobre);
}
.service-card .go svg{ width:16px; height:16px; transition:transform .25s var(--ease); }
.service-card:hover .go svg{ transform:translateX(4px); }

/* ---------- pasos / metodología ---------- */
.steps{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--gap); counter-reset:step; }
.step{ position:relative; padding-top:8px; }
.step .num{
  font-family:var(--f-mono); font-size:1rem; color:var(--cobre);
  display:block; margin-bottom:14px;
}
.step h3{ margin-bottom:8px; }
.step p{ font-size:1rem; }

/* ---------- servicio detallado ---------- */
.service-detail{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(32px,5vw,64px); align-items:center; }
.service-detail img{ border-radius:var(--radius); box-shadow:var(--shadow-sm); width:100%; aspect-ratio:4/3; object-fit:cover; }
.service-detail.reverse{ direction:rtl; }
.service-detail.reverse > *{ direction:ltr; }
.service-detail ul{ list-style:none; margin:20px 0 26px; padding:0; display:flex; flex-direction:column; gap:12px; }
.service-detail li{
  display:flex; gap:10px; align-items:flex-start;
  font-size:1rem; color:var(--muted);
}
.service-detail li svg{ flex:none; width:19px; height:19px; margin-top:2px; color:var(--verde); }

/* ---------- listados (patrón M&M) ---------- */
.listings{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:22px; align-items:stretch; }
.listing-intro{
  background:#fff; border:1px solid var(--line);
  padding:30px 26px; display:flex; flex-direction:column;
}
.listing-intro h2{ margin-bottom:.5em; }   /* hereda la escala global */
.listing-intro p{ font-size:1rem; }
.listing-intro .btn{ margin-top:auto; align-self:flex-start; }

.property-card{
  background:#fff; border:1px solid var(--line);
  display:flex; flex-direction:column; overflow:hidden;
  transition:box-shadow .3s var(--ease);
}
.property-card:hover{ box-shadow:var(--shadow-sm); }
.property-media{ position:relative; aspect-ratio:4/3; overflow:hidden; }
.property-media img{ width:100%; height:100%; object-fit:cover; }
.property-body{ padding:18px 20px 22px; display:flex; flex-direction:column; flex:1; }
.property-cat{
  font-family:var(--f-mono); font-size:1rem; letter-spacing:.12em;
  text-transform:uppercase; color:var(--cobre); display:block; margin-bottom:8px;
}
.property-body h3{ margin-bottom:16px; }   /* hereda el h3 global: 22px */
.property-facts{ list-style:none; margin:0 0 14px; padding:0; display:flex; flex-direction:column; gap:9px; }
.property-facts li{ display:flex; align-items:center; gap:9px; font-size:1rem; color:var(--muted); }
.property-facts svg{ flex:none; width:16px; height:16px; color:var(--cobre); }
.property-value{
  margin-top:auto; font-family:var(--f-title); font-weight:700;
  font-size:1rem; color:var(--azul);
}

/* ---------- nosotros / impacto (patrón "Our Impact") ---------- */
.impact-grid{
  display:grid; grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);
  gap:clamp(32px,4.5vw,64px); align-items:center;
}
.impact-media{ position:relative; }
.impact-media img{ width:100%; aspect-ratio:1/1; object-fit:cover; display:block; }
.impact-media::after{
  content:""; position:absolute; right:-20px; bottom:-20px;
  width:38%; height:26%; border:2px solid var(--cobre); pointer-events:none;
}
.impact-text h2{ margin-bottom:.5em; }
.impact-text p{ font-size:1rem; }
.impact-text .btn{ margin-top:10px; }

/* ---------- tarjetas CTA con foto ---------- */
.photo-cta{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:26px; }
.photo-card{
  position:relative; aspect-ratio:1/1; display:flex;
  align-items:center; justify-content:center;
  text-decoration:none; overflow:hidden; background:var(--azul);
}
.photo-card img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
}
.photo-card::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,40,85,.62), rgba(0,40,85,.78));
}
.photo-card-inner{
  position:relative; z-index:1;
  border:1px solid rgba(255,255,255,.65);
  margin:26px; padding:30px 22px;
  width:100%; min-height:calc(100% - 52px);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:22px;
  text-align:center;
}
.photo-card h3{ color:#fff; font-size:clamp(1.45rem,1.9vw,1.85rem); margin:0; line-height:1.25; }
.photo-card .btn{ border-color:#fff; color:#fff; background:transparent; }
.photo-card:hover .btn{ background:#fff; color:var(--azul); }

/* ---------- sección centrada con raya de acento ---------- */
.centered{ text-align:center; }
.centered h1,
.centered h2{ max-width:20ch; margin-left:auto; margin-right:auto; margin-bottom:0; }
.centered-actions{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-top:12px; }
.centered .rule{
  display:block; width:56px; height:3px; background:var(--cobre);
  margin:22px auto 22px;
}
.centered p{ max-width:70ch; margin-left:auto; margin-right:auto; font-size:1rem; }
.centered .btn{ margin-top:12px; }

/* ---------- valores / nosotros ---------- */
.about-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(32px,5vw,64px); align-items:center; }
.about-grid img{ border-radius:var(--radius); width:100%; aspect-ratio:4/3.2; object-fit:cover; box-shadow:var(--shadow-sm); }

/* ---------- cita destacada ---------- */
.quote{
  max-width:820px; margin-left:auto; margin-right:auto; text-align:center;
}
.quote blockquote{
  font-family:var(--f-title); font-weight:700; font-size:clamp(1.3rem,2.6vw,1.9rem);
  line-height:1.4; margin:0 0 18px; color:inherit;
}
.quote cite{ font-family:var(--f-mono); font-size:1rem; font-style:normal; color:var(--cobre); }

/* ---------- CTA sobre footer ---------- */
.cta{
  position:relative; color:#fff; overflow:hidden;
  padding-top:clamp(64px,9vw,116px); padding-bottom:clamp(64px,9vw,116px);
}
.cta::before{
  content:""; position:absolute; inset:0;
  background-image:var(--hero-img); background-size:cover; background-position:center;
}
.cta::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,27,61,.86) 0%, rgba(0,27,61,.78) 100%);
}
.cta .container{ position:relative; z-index:1; }
.cta-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(32px,5vw,56px); align-items:start; }
.cta-head p{ color:rgba(255,255,255,.82); font-size:1.05rem; max-width:480px; }

/* ---------- formulario ---------- */
.form-card{
  background:#fff; color:var(--ink);
  border-radius:var(--radius); padding:clamp(24px,3vw,34px);
  box-shadow:var(--shadow);
}
.form-notice{
  padding:14px 16px; border-radius:var(--radius-sm); margin-bottom:18px;
  font-size:1rem; font-weight:600; display:none;
}
.form-notice.is-visible{ display:block; }
.form-notice.ok{ background:rgba(30,111,82,.12); color:var(--verde); }
.form-notice.err{ background:rgba(180,85,31,.12); color:var(--cobre-2); }
.field{ margin-bottom:16px; }
.field label{ display:block; font-size:1rem; font-weight:600; margin-bottom:6px; color:var(--ink); }
.field input, .field select, .field textarea{
  width:100%; height:46px; padding:0 14px; border-radius:var(--radius-sm);
  border:1.5px solid var(--line-strong); font-family:var(--f-body); font-size:1rem;
  line-height:normal; background:#fff; color:var(--ink);
  transition:border-color .2s;
}
.field select{
  appearance:none; -webkit-appearance:none;
  padding-right:38px; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23002855' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center; background-size:16px;
}
.field textarea{ height:auto; padding:12px 14px; line-height:1.55; }
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--cobre); }
.field textarea{ resize:vertical; min-height:110px; }
.form-card .btn{ width:100%; justify-content:center; margin-top:6px; }

/* ---------- contacto: info ---------- */
.contact-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(32px,5vw,56px); align-items:start; }
.contact-info{ display:flex; flex-direction:column; gap:20px; }
.contact-info .item{ display:inline-flex; align-items:center; gap:12px; font-size:1rem; }
.contact-info .item a{ text-decoration:none; color:var(--ink); font-weight:600; }
.contact-info svg{ flex:none; width:19px; height:19px; color:var(--cobre); }
.map-embed{ border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm); border:1px solid var(--line); margin-top:8px; }
.map-embed iframe{ display:block; width:100%; height:260px; border:0; }

/* ---------- footer ---------- */
.site-footer{
  background:var(--azul); color:rgba(255,255,255,.78);
  padding-top:clamp(52px, 6vw, 74px); padding-bottom:30px;
}
.footer-grid{
  display:grid; grid-template-columns:1.3fr .8fr .8fr 1.1fr; gap:clamp(28px,4vw,48px);
}
.footer-brand img{ height:38px; width:auto; margin-bottom:16px; }
.footer-brand p{ color:rgba(255,255,255,.62); font-size:1rem; max-width:280px; }
.footer-brand .footer-legal{ margin-top:14px; font-size:1rem; color:rgba(255,255,255,.5); }
.footer-col h4{ color:#fff; font-size:1rem; letter-spacing:.06em; text-transform:uppercase; font-family:var(--f-mono); font-weight:500; margin-bottom:16px; }
.footer-col ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:11px; }
.footer-col a{ color:rgba(255,255,255,.72); text-decoration:none; font-size:1rem; transition:color .2s; }
.footer-col a:hover{ color:#fff; }
.footer-contact li{ display:inline-flex; align-items:center; gap:10px; }
.footer-contact svg{ flex:none; width:16px; height:16px; color:var(--cobre); }

.footer-credit{
  margin-top:40px;
  padding-top:22px;
  border-top:1px solid rgba(255,255,255,.12);
  text-align:center;
  font-size:1rem;
  color:rgba(255,255,255,.6);
}
.footer-credit a{ color:var(--cobre); text-decoration:none; }
.footer-credit a:hover{ color:color-mix(in srgb, var(--cobre) 75%, #fff); }

/* ---------- reveal ---------- */
.js .reveal{ opacity:0; transform:translateY(22px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.is-visible{ opacity:1; transform:none; }
/* salvavidas: si el JS marcó .js pero el observer no corrió, revela igual */
.js .reveal{ animation:reveal-failsafe 0s linear 3s forwards; }
@keyframes reveal-failsafe{ to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){
  .js .reveal{ opacity:1; transform:none; transition:none; animation:none; }
}

/* ================= RESPONSIVE ================= */
@media (max-width: 1024px){
  .listings{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .impact-grid{ grid-template-columns:1fr; }
  .photo-cta{ grid-template-columns:1fr; }
  .stats-band .container{ grid-template-columns:repeat(2,minmax(0,1fr)); row-gap:28px; }
  .stat-item:nth-child(3){ border-left:0; }
  .grid-4{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .steps{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .grid-3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .about-grid, .service-detail, .cta-grid, .contact-grid{ grid-template-columns:1fr; }
  .service-detail.reverse{ direction:ltr; }
  .service-detail img, .about-grid img{ aspect-ratio:16/9; }
  .footer-grid{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
}

@media (max-width: 880px){
  .subnav{ display:none; }
  .nav-links, .nav-cta .btn-ghost{ display:none; }
  .burger{ display:flex; }
  .nav{ position:fixed; top:0; right:0; height:100vh; width:min(320px,84vw);
    background:var(--blanco-piedra); z-index:80;
    flex-direction:column; align-items:flex-start; justify-content:flex-start;
    padding:96px 28px 28px; gap:0;
    transform:translateX(100%); transition:transform .4s var(--ease);
    box-shadow:-14px 0 40px -20px rgba(0,27,61,.4);
  }
  .nav.is-open{ transform:translateX(0); }
  .nav .nav-links{ display:flex; flex-direction:column; align-items:flex-start; gap:6px; width:100%; }
  .nav .nav-links a{ color:var(--ink); opacity:.85; width:100%; padding:12px 0; border-bottom:1px solid var(--line); font-size:1rem; }
  .nav .nav-cta{ margin-top:20px; width:100%; }
  .nav .nav-cta .btn-primary{ width:100%; justify-content:center; }
  .nav .nav-cta .btn-ghost{ display:none; }
  .burger{ position:relative; z-index:81; }
  .nav .nav-links a{ color:var(--ink); }
}

@media (max-width: 560px){
  .grid-4, .grid-3, .grid-2, .steps, .listings{ grid-template-columns:1fr; }
  .stats-band .container{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .finder-form select{ flex:1 1 100%; }
  .finder-submit{ width:100%; height:48px; }
  .impact-media::after{ display:none; }
  .photo-card-inner{ margin:18px; min-height:calc(100% - 36px); }
  .footer-grid{ grid-template-columns:1fr; }
  .hero-actions .btn, .cta-actions .btn{ width:100%; justify-content:center; }
}

/* datos de contacto en la columna del CTA del home */
.cta-contact{ list-style:none; margin:26px 0 0; padding:0; display:grid; gap:14px; }
.cta-contact li{ display:inline-flex; align-items:center; gap:10px; color:rgba(255,255,255,.88); font-size:1rem; }
.cta-contact svg{ width:18px; height:18px; flex:none; color:var(--cobre); }
.cta-contact a{ color:inherit; text-decoration:none; }
.cta-contact a:hover{ color:#fff; text-decoration:underline; }

/* móvil: la bajada del hero y las pestañas no deben crecer como en escritorio */
@media (max-width: 560px){
  .hero-content p{ font-size:1.08rem; line-height:1.55; }
  .page-hero p{ font-size:1.05rem; }
  .finder-tab{ font-size:1rem; padding:11px 6px; letter-spacing:.03em; flex:1 1 0; text-align:center; }
  .finder-tabs{ display:flex; }
}
