/* Valterra — tokens y sistema v2 (fuente de verdad: maquetacion/valterra-home.html) */
/* Tipografía de marca (Manual Valterra): Montserrat = fuente web oficial; Cormorant Italic = acento editorial (sustituto de Denton). */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:300 800;src:url('fonts/montserrat.woff2') format('woff2');font-display:swap;}
@font-face{font-family:'Cormorant';font-style:italic;font-weight:500 600;src:url('fonts/cormorant-italic.woff2') format('woff2');font-display:swap;}

  :root{
    /* Paleta oficial del manual */
    --paper:#F7F5F1; --paper2:#ECE8E1; --ink:#14161C;
    --azul:#1e2a48;       /* Azul Valterra (principal) */
    --noche:#122038;      /* navy intermedio para gradientes */
    --obsidiana:#00071b;  /* Carbón Obsidiana */
    --acero:#2E4470;
    --cafe:#422d22;       /* Café Nogal */
    --bronce:#c1a479; --dorado:#c1a479;  /* Terra Dorado (acento moderado) — bordes y decoración */
    /* Mismo matiz (36°) oscurecido a L38%: el bronce claro sobre papel/blanco da 2.2:1 y
       no pasa AA. Este es el que va en TEXTO pequeño (fechas, kickers, metadatos). */
    --bronce-txt:#84683d;
    --hair:#DAD5CC; --gris:#5F6673;
    --ambar:#B4832E; --wa:#1D7A54; --wa-h:#25976A;
    --sans:'Montserrat',-apple-system,'Helvetica Neue',sans-serif;
    --display:'Montserrat',var(--sans);
    --serif:'Cormorant',Georgia,'Times New Roman',serif;  /* acentos en itálica */
    --mono:'Montserrat',var(--sans);  /* se retira IBM Plex Mono (look técnico fuera de marca) */
    --ease:cubic-bezier(.16,1,.3,1); --t:240ms;
    /* Ancho del contenedor. Crece por tramos en monitores grandes en vez de irse
       al 100%: a ancho completo las líneas de texto se vuelven ilegibles y las
       fotos se estiran. Ver los breakpoints al final de esta hoja. */
    --wrap:1180px;
  }
  /* acento editorial en serif itálica (frases/palabras destacadas) */
  .ac{font-family:var(--serif);font-style:italic;font-weight:600;letter-spacing:0;}
  *{box-sizing:border-box;}
  html{background:var(--paper);scroll-behavior:smooth;}
  body{font-family:var(--sans);color:var(--ink);background:var(--paper);margin:0;line-height:1.6;font-size:16px;overflow-x:hidden;}
  .wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px;}
  h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-0.008em;line-height:1.1;margin:0;text-wrap:balance;}
  p{margin:0;}
  img{max-width:100%;}
  .m{font-family:var(--mono);}
  svg.ph path[opacity]{fill:var(--bronce);opacity:.5;}

  @keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
  @keyframes driftA{from{transform:skewX(-18deg) translateX(0)}to{transform:skewX(-18deg) translateX(34px)}}
  @keyframes driftB{from{transform:skewX(-18deg) translateX(0)}to{transform:skewX(-18deg) translateX(-26px)}}
  @keyframes mq{to{transform:translateX(-50%)}}
  .reveal{opacity:0;transform:translateY(16px);transition:opacity 600ms var(--ease),transform 600ms var(--ease);}
  .reveal.in{opacity:1;transform:none;}

  /* ============ HEADER ============ */
  header{position:sticky;top:0;z-index:90;background:rgba(247,248,250,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--hair);transition:box-shadow var(--t) var(--ease);}
  header.scrolled{box-shadow:0 1px 0 var(--hair);}
  header .bar{display:flex;align-items:center;gap:28px;height:76px;transition:height 300ms var(--ease);}
  header.scrolled .bar{height:60px;}
  header .logo img{height:38px;width:auto;display:block;transition:height 300ms var(--ease);}
  header.scrolled .logo img{height:30px;}
  nav{display:flex;gap:4px;height:100%;}
  .ni{display:flex;align-items:center;height:100%;}
  .ni > a{font-size:14.5px;font-weight:500;color:var(--ink);text-decoration:none;position:relative;padding:8px 12px;display:inline-flex;align-items:center;gap:6px;}
  .ni > a svg{width:12px;height:12px;color:var(--gris);transition:transform var(--t) var(--ease);}
  .ni:hover > a svg{transform:rotate(180deg);}
  .ni > a::after{content:"";position:absolute;left:12px;right:12px;bottom:2px;height:2px;background:var(--bronce);transform:scaleX(0);transform-origin:left;transition:transform var(--t) var(--ease);}
  .ni:hover > a::after,.ni > a.on::after{transform:scaleX(1);}
  .h-right{margin-left:auto;display:flex;align-items:center;gap:16px;}
  .switch{font-family:var(--mono);font-size:12px;color:var(--gris);letter-spacing:.04em;white-space:nowrap;}
  .switch b{color:var(--azul);font-weight:500;cursor:pointer;}
  .switch span{cursor:pointer;}

  /* megamenú */
  .mega{position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--hair);opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity var(--t) var(--ease),transform var(--t) var(--ease),visibility 0s linear var(--t);}
  .ni.has-mega:hover .mega,.ni.has-mega:focus-within .mega{opacity:1;visibility:visible;transform:none;transition-delay:0s;}
  .mega .grid{max-width:var(--wrap);margin:0 auto;padding:34px 24px;display:grid;grid-template-columns:1fr 1fr 1fr 1.2fr;gap:36px;}
  .mega h5{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--cafe);margin:0 0 14px;}
  .mega ul{list-style:none;margin:0;padding:0;display:grid;gap:9px;}
  .mega ul a{color:var(--ink);font-size:14.5px;text-decoration:none;display:inline-flex;gap:8px;align-items:baseline;position:relative;padding-bottom:1px;}
  .mega ul a small{font-family:var(--mono);font-size:11px;color:var(--gris);}
  .mega ul a::after{content:"";position:absolute;left:0;bottom:0;height:1.5px;width:100%;background:var(--bronce);transform:scaleX(0);transform-origin:left;transition:transform var(--t) var(--ease);}
  .mega ul a:hover::after{transform:scaleX(1);}
  .mega .mini{border:1px solid var(--hair);text-decoration:none;color:var(--ink);display:block;transition:border-color var(--t) var(--ease);}
  .mega .mini:hover{border-color:var(--azul);}
  .mega .mini .mph{aspect-ratio:16/8;background:linear-gradient(128deg,#2C4C7B,#152E50 70%);position:relative;overflow:hidden;}
  .mega .mini .mph::after{content:"";position:absolute;top:-20%;right:-12%;width:45%;height:140%;background:rgba(255,255,255,.05);transform:skewX(-18deg);}
  .mega .mini .mb{padding:12px 14px;display:grid;gap:3px;}
  .mega .mini .mb small{font-family:var(--mono);font-size:10.5px;color:var(--cafe);}
  .mega .mini .mb b{font-family:var(--display);font-size:15px;}
  .mega .mini .mb i{font-style:normal;font-family:var(--mono);font-size:13px;color:var(--azul);}

  /* Megamenú Servicios: qué hacemos + el Método + la llamada a la acción. */
  .mega-serv .grid{grid-template-columns:1.35fr 1fr 1.1fr;}
  .serv-lista ul a{display:inline-flex;align-items:center;gap:10px;}
  .serv-lista ul svg{flex:0 0 auto;color:var(--azul);}
  .serv-lista ul a:hover svg{color:var(--bronce);}

  /* Megamenú Valterra: empresa, contacto y redes. */
  .mega-val .grid{grid-template-columns:1fr 1.25fr 1fr;}
  .mega ul.redes a{display:inline-flex;align-items:center;gap:8px;}
  .mega ul.redes svg{flex:0 0 auto;color:var(--gris);}
  .mega ul.redes a:hover svg{color:var(--azul);}

  /* Con 5 ítems el menú se aprieta cerca del breakpoint: se recorta el padding. */
  @media(max-width:1100px){
    .ni > a{padding:8px 9px;font-size:14px;}
    header .bar{gap:18px;}
  }
  .mega-cta p{color:var(--gris);font-size:13.5px;margin:0 0 14px;max-width:26ch;}
  .mega-cta .btn{font-size:14px;padding:11px 20px;}
  .mega-metodo ol{list-style:none;margin:0;padding:0;counter-reset:mv;display:grid;gap:7px;}
  .mega-metodo ol li{counter-increment:mv;font-size:13.5px;color:var(--ink);display:flex;gap:9px;align-items:baseline;}
  .mega-metodo ol li::before{content:counter(mv,decimal-leading-zero);font-family:var(--mono);font-size:10.5px;color:var(--bronce);}

  /* burger + drawer */
  .burger{display:none;background:none;border:none;cursor:pointer;padding:10px;margin-left:-10px;flex-direction:column;gap:5px;}
  .burger i{display:block;width:22px;height:2px;background:var(--ink);transition:transform var(--t) var(--ease);}
  .scrim{position:fixed;inset:0;background:rgba(20,25,34,.5);opacity:0;visibility:hidden;transition:opacity var(--t) var(--ease);z-index:98;}
  .drawer{position:fixed;top:0;right:0;bottom:0;width:min(84vw,360px);background:#fff;z-index:99;transform:translateX(102%);transition:transform 320ms var(--ease);display:flex;flex-direction:column;padding:22px 26px;overflow-y:auto;}
  body.nav-open .scrim{opacity:1;visibility:visible;}
  body.nav-open .drawer{transform:none;}
  /* Cabecera azul de marca: el drawer se abre y se reconoce al instante. */
  .drawer{padding:0;}
  .drawer .d-top{display:flex;justify-content:space-between;align-items:center;
    background:linear-gradient(122deg,var(--azul),var(--noche) 70%);padding:20px 22px;position:relative;overflow:hidden;}
  .drawer .d-top::after{content:"";position:absolute;top:-40%;right:-8%;width:42%;height:180%;background:rgba(255,255,255,.06);transform:skewX(-18deg);}
  .drawer .d-top img{height:30px;width:auto;position:relative;z-index:1;}
  .drawer .x{background:rgba(255,255,255,.12);border:0;width:38px;height:38px;font-size:16px;cursor:pointer;color:#fff;position:relative;z-index:1;}
  .drawer .x:hover{background:rgba(255,255,255,.22);}

  .d-nav{padding:20px 22px 6px;display:grid;}
  .d-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
    color:var(--bronce);margin:6px 0 10px;}
  .d-label + .dl{border-top:1px solid var(--hair);}
  /* Enlaces principales: con icono y contador, no una lista plana. */
  .drawer a.dl{display:flex;align-items:center;gap:13px;font-family:var(--display);font-weight:600;
    font-size:16.5px;color:var(--ink);text-decoration:none;padding:14px 2px;border-bottom:1px solid var(--hair);}
  .drawer a.dl svg{width:19px;height:19px;color:var(--azul);flex:0 0 auto;}
  .drawer a.dl span{flex:1;}
  .drawer a.dl small{font-family:var(--mono);font-size:11px;color:var(--gris);
    background:var(--paper2);padding:3px 9px;min-width:26px;text-align:center;}
  .drawer a.dl:active{background:var(--paper);}

  /* Secundarios como chips: ocupan una fracción del espacio de una lista. */
  .d-chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px;}
  .d-chips a{font-size:13.5px;color:var(--gris);text-decoration:none;border:1px solid var(--hair);
    padding:8px 14px;background:#fff;}
  .d-chips a:active,.d-chips a:hover{border-color:var(--azul);color:var(--azul);}

  .drawer .d-foot{margin-top:auto;padding:18px 22px 22px;display:grid;gap:10px;
    border-top:1px solid var(--hair);background:var(--paper);}
  .d-switches{display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:2px 0 8px;}
  .drawer .d-foot .switch{font-size:13px;}
  .drawer .d-foot .btn{width:100%;}

  /* ============ BOTONES ============ */
  .btn{font-family:var(--sans);font-weight:600;font-size:15px;border:none;cursor:pointer;padding:14px 26px;position:relative;overflow:hidden;isolation:isolate;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:color var(--t) var(--ease);}
  .btn::before{content:"";position:absolute;inset:-2px -14px;z-index:-1;transform:translateX(-108%) skewX(-16deg);transition:transform var(--t) var(--ease);}
  .btn:hover::before{transform:translateX(0) skewX(-16deg);}
  .btn:focus-visible{outline:3px solid var(--ambar);outline-offset:2px;}
  .btn-primary{background:var(--azul);color:#fff;}
  .btn-primary::before{background:var(--noche);}
  .btn-white{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.6);}
  .btn-white::before{background:#fff;}
  .btn-white:hover{color:var(--noche);}
  /* Secundario sobre fondo claro. Se usaba en single.php, single-val_proyecto.php y
     single-val_agente.php sin estar definido: salía como texto suelto, sin botón. */
  .btn-ghost{background:transparent;color:var(--azul);border:1px solid var(--hair);}
  .btn-ghost::before{background:var(--azul);}
  .btn-ghost:hover{color:#fff;border-color:var(--azul);}
  .btn-wa{background:var(--wa);color:#fff;padding:12px 20px;}
  .btn-wa::before{background:var(--wa-h);}
  .btn svg{width:18px;height:18px;flex:none;}

  /* ============ HERO ============ */
  .hero{position:relative;overflow:hidden;background:linear-gradient(116deg,#0E2140 0%,var(--noche) 48%,#20406B 100%);isolation:isolate;}
  /* fondo de video + poster de respaldo */
  .hero-bg{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--noche);}
  .hero-poster,.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
  /* overlay navy: oscurece la izquierda (texto) y deja ver la ciudad a la derecha */
  .hero-bg::after{content:"";position:absolute;inset:0;
    background:
      linear-gradient(108deg,rgba(11,22,42,.92) 0%,rgba(21,46,80,.66) 44%,rgba(18,38,62,.30) 100%),
      linear-gradient(to top,rgba(11,22,42,.82) 0%,rgba(11,22,42,0) 48%);}
  .hero .inner{position:relative;z-index:1;padding-top:96px;padding-bottom:84px;}
  .hero .kick{font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--dorado);margin-bottom:20px;animation:rise .7s var(--ease) .05s backwards;}
  .hero h1{color:#fff;font-size:clamp(34px,5.2vw,60px);max-width:15ch;text-shadow:0 2px 24px rgba(8,16,32,.4);animation:rise .7s var(--ease) .15s backwards;}
  .hero h1 .ac{font-size:1.12em;color:#fff;}
  .hero .sub{color:#DCE4F1;margin:18px 0 36px;max-width:52ch;font-size:17px;text-shadow:0 1px 12px rgba(8,16,32,.35);animation:rise .7s var(--ease) .28s backwards;}
  .search{display:flex;background:#fff;padding:6px;max-width:820px;animation:rise .7s var(--ease) .42s backwards;}
  .search .field{flex:1 1 150px;padding:12px 18px;border-right:1px solid var(--hair);min-width:120px;cursor:pointer;}
  .search .field small{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--bronce);}
  .search .field span{font-weight:500;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;}
  .search .field svg{width:13px;height:13px;color:var(--gris);}
  .search .field:nth-last-child(2){border-right:none;}
  .search .btn{margin:0;align-self:stretch;}

  /* Buscador ampliado: operación en píldoras, departamento + zona, y "más filtros". */
  .search.buscador{display:block;padding:0;max-width:940px;}
  .buscador .bus-fila{display:flex;flex-wrap:wrap;}
  .buscador .field{flex:1 1 160px;padding:12px 18px;border-right:1px solid var(--hair);min-width:140px;}
  .buscador .bus-fila .field:last-child{border-right:none;}
  .buscador select,.buscador input[type=number]{border:none;background:none;font-family:var(--sans);font-size:15px;font-weight:500;color:var(--ink);width:100%;padding:3px 0 0;cursor:pointer;}
  .buscador select:focus,.buscador input:focus{outline:2px solid var(--azul);outline-offset:3px;}
  .buscador .field-op{flex:0 0 auto;}
  .buscador .pills{display:inline-flex;gap:5px;margin-top:5px;}
  .buscador .pills input{position:absolute;opacity:0;pointer-events:none;}
  .buscador .pills label{font-family:var(--sans);font-size:13.5px;font-weight:500;padding:6px 13px;border:1px solid var(--hair);color:var(--gris);cursor:pointer;white-space:nowrap;transition:background var(--t) var(--ease),color var(--t) var(--ease),border-color var(--t) var(--ease);}
  .buscador .pills label:hover{border-color:var(--azul);color:var(--azul);}
  .buscador .pills input:checked + label{background:var(--azul);border-color:var(--azul);color:#fff;}
  .buscador .pills input:focus-visible + label{outline:2px solid var(--bronce);outline-offset:2px;}
  .buscador .bus-pie{display:flex;align-items:center;justify-content:space-between;gap:14px;border-top:1px solid var(--hair);padding:10px 12px 10px 18px;}
  .buscador .bus-mas{background:none;border:none;cursor:pointer;font-family:var(--mono);font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--gris);display:inline-flex;align-items:center;gap:7px;padding:8px 0;}
  .buscador .bus-mas:hover{color:var(--azul);}
  .buscador .bus-mas svg{transition:transform var(--t) var(--ease);}
  .buscador .bus-mas.abierto svg{transform:rotate(180deg);}
  .buscador .bus-extra{display:flex;flex-wrap:wrap;border-top:1px solid var(--hair);background:var(--paper);}
  .buscador .bus-extra[hidden]{display:none;}
  .buscador .bus-extra .field{border-right:1px solid var(--hair);}
  .buscador .bus-extra .field:last-child{border-right:none;}
  .buscador .bus-extra input::placeholder{color:var(--gris);font-weight:400;}
  .hero .stats{display:flex;gap:40px;margin-top:46px;flex-wrap:wrap;animation:rise .7s var(--ease) .56s backwards;}
  .hero .stats div{font-family:var(--mono);font-size:12px;color:#7E93B5;letter-spacing:.05em;min-width:118px;}
  .hero .stats b{display:block;font-family:var(--display);font-weight:700;font-size:26px;color:#fff;letter-spacing:0;font-variant-numeric:tabular-nums;}
  .hero .play{position:absolute;right:24px;bottom:16px;font-family:var(--mono);font-size:11px;color:#6B80A3;}

  /* ============ MARQUEE ============ */
  .marquee{background:#fff;border-bottom:1px solid var(--hair);overflow:hidden;padding:15px 0;}
  .marquee .track{display:flex;gap:0;width:max-content;animation:mq 46s linear infinite;}
  .marquee span{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--gris);white-space:nowrap;padding:0 26px;position:relative;}
  .marquee span::after{content:"";position:absolute;right:-5px;top:50%;width:9px;height:9px;transform:translateY(-50%) skewX(-16deg);background:var(--paper2);}

  /* ============ SECCIONES ============ */
  section{padding:84px 0;}
  section.wrap{padding:84px 24px;}
  .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:42px;flex-wrap:wrap;}
  .sec-head .k{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--cafe);display:block;margin-bottom:10px;}
  /* h1 y h2 se ven igual: en los listados el título de sección ES el h1 de la página. */
  .sec-head h1,.sec-head h2{font-size:clamp(26px,3.4vw,38px);}
  a.all{font-family:var(--mono);font-size:13px;color:var(--azul);text-decoration:none;position:relative;padding-bottom:3px;white-space:nowrap;}
  a.all::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--bronce);transform:scaleX(0);transform-origin:left;transition:transform var(--t) var(--ease);}
  a.all:hover::after{transform:scaleX(1);}

  /* cards propiedad */
  .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
  .prop{background:#fff;border:1px solid var(--hair);transition:border-color var(--t) var(--ease);text-decoration:none;color:var(--ink);display:block;}
  .prop:hover{border-color:var(--azul);}
  .prop .photo{aspect-ratio:3/2;overflow:hidden;position:relative;}
  .prop .photo .img{position:absolute;inset:0;transition:transform 700ms var(--ease);}
  .prop:hover .photo .img{transform:scale(1.05);}
  .ph-a{background:linear-gradient(128deg,#2C4C7B 0%,#152E50 70%);}
  .ph-b{background:linear-gradient(128deg,#3A5A8C 0%,#1B3763 60%,#0F2440 100%);}
  .ph-c{background:linear-gradient(140deg,#57708F 0%,#22406B 55%,#132C4E 100%);}
  .prop .photo .img::after{content:"";position:absolute;top:-20%;right:-12%;width:45%;height:140%;background:rgba(255,255,255,.045);transform:skewX(-18deg);}
  .prop .photo .badge{position:absolute;top:0;left:0;z-index:1;}
  .prop .photo small{position:absolute;bottom:12px;left:14px;z-index:1;font-family:var(--mono);font-size:10.5px;color:#8FA3C2;letter-spacing:.06em;text-transform:uppercase;}
  .badge{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:6px 12px 6px 10px;border-left:3px solid;background:#fff;}
  .badge-disp{border-color:var(--azul);color:var(--azul);}
  .badge-res{border-color:var(--ambar);color:var(--ambar);}
  .prop .body{padding:18px 20px;display:grid;gap:8px;}
  .prop .code{font-family:var(--mono);font-size:11.5px;color:var(--cafe);transition:color var(--t) var(--ease);}
  .prop:hover .code{color:var(--azul);}
  .prop h3{font-size:19px;}
  .prop .price{font-family:var(--mono);font-weight:500;font-size:17px;color:var(--azul);font-variant-numeric:tabular-nums;}
  .prop .price span{font-size:12.5px;color:var(--gris);font-weight:400;}
  .prop .specs{display:flex;gap:15px;border-top:1px solid var(--hair);padding-top:12px;flex-wrap:wrap;}
  .prop .specs span{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:12px;color:var(--gris);}
  .prop .specs svg{width:16px;height:16px;color:var(--azul);flex:none;}
  .prop .go{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--gris);border-top:1px solid var(--hair);padding:11px 20px;transition:color var(--t) var(--ease),background var(--t) var(--ease);}
  .prop .go svg{width:15px;height:15px;transition:transform var(--t) var(--ease);}
  .prop:hover .go{color:#fff;background:var(--azul);}
  .prop:hover .go svg{transform:translateX(5px);}

  /* tipos */
  .tipos{background:var(--paper2);border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);}
  .grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--hair);background:#fff;}
  /* Explorar por tipo: 12 columnas para que filas de 4 y de 3 queden ambas completas. */
  .grid-tipos{display:grid;grid-template-columns:repeat(12,1fr);gap:0;border:1px solid var(--hair);background:#fff;}
  .grid-tipos .sp3{grid-column:span 3;}
  .grid-tipos .sp4{grid-column:span 4;}
  .grid-tipos .sp6{grid-column:span 6;}
  .grid-tipos .sp12{grid-column:span 12;}
  .grid-tipos .tipo{border-right:1px solid var(--hair);}
  .grid-tipos .tipo.fin-fila{border-right:none;}
  .grid-tipos .tipo.borde-abajo{border-bottom:1px solid var(--hair);}
  .tipo{padding:32px 28px;border-right:1px solid var(--hair);text-decoration:none;color:var(--ink);position:relative;overflow:hidden;isolation:isolate;transition:color var(--t) var(--ease);}
  .grid4 .tipo:last-child{border-right:none;}
  .tipo::before{content:"";position:absolute;inset:-2px -16px;z-index:-1;background:var(--azul);transform:translateX(-108%) skewX(-16deg);transition:transform 300ms var(--ease);}
  .tipo:hover{color:#fff;}
  .tipo:hover::before{transform:translateX(0) skewX(-16deg);}
  .tipo svg{width:30px;height:30px;color:var(--azul);transition:color var(--t) var(--ease);}
  .tipo:hover svg{color:#fff;}
  .tipo:hover svg.ph path[opacity]{fill:#fff;opacity:.35;}
  .tipo b{display:block;font-family:var(--display);font-size:18px;margin:13px 0 4px;}
  .tipo p.d{font-size:13.5px;color:var(--gris);margin:8px 0 14px;line-height:1.5;transition:color var(--t) var(--ease);}
  .tipo:hover p.d{color:#D7E0EF;}
  .tipo .arrow{display:inline-flex;}
  /* Servicios sin descripción (el cliente reescribe los textos): aire entre título y flecha. */
  .tipo b + .arrow{margin-top:14px;}
  .tipo .arrow svg{width:17px;height:17px;color:var(--bronce);transition:transform var(--t) var(--ease),color var(--t) var(--ease);}
  .tipo:hover .arrow svg{transform:translateX(6px);color:#fff;}
  .tipo .n{font-family:var(--mono);font-size:11.5px;color:var(--gris);transition:color var(--t) var(--ease);}
  .tipo:hover .n{color:#C6D2E6;}

  /* ============ SHOWCASE ============ */
  .show{background:linear-gradient(124deg,#0B1B33 0%,var(--noche) 50%,#1D3B64 100%);position:relative;overflow:hidden;isolation:isolate;border-top:1px solid var(--hair);}
  .show .facet{position:absolute;inset:0;z-index:-1;}
  .show .facet i{position:absolute;top:-15%;height:130%;transform:skewX(-18deg);display:block;}
  .show .facet i:nth-child(1){width:40%;right:-6%;background:#16305A;animation:driftB 19s ease-in-out infinite alternate;}
  .show .facet i:nth-child(2){width:12%;left:14%;background:#22406E;opacity:.5;animation:driftA 24s ease-in-out infinite alternate;}
  .show .inner{padding-top:92px;padding-bottom:92px;display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center;}
  .show .k{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:#8FA3C2;text-transform:uppercase;display:block;margin-bottom:16px;}
  .show h2{color:#fff;font-size:clamp(26px,3.8vw,42px);}
  .show .bigprice{font-family:var(--display);font-weight:700;font-size:clamp(38px,5.6vw,64px);color:#fff;margin:20px 0 6px;font-variant-numeric:tabular-nums;letter-spacing:-0.01em;}
  .show .bigprice span{font-family:var(--mono);font-weight:400;font-size:clamp(15px,1.8vw,20px);color:#7E93B5;}
  .show .specs{display:flex;gap:20px;flex-wrap:wrap;margin:18px 0 30px;}
  .show .specs span{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12.5px;color:#A9B8D2;}
  .show .specs svg{width:17px;height:17px;color:#fff;}
  .show .specs svg.ph path[opacity]{fill:var(--bronce);opacity:.7;}
  .show .actions{display:flex;gap:14px;flex-wrap:wrap;}
  .show .visual{aspect-ratio:4/3;background:linear-gradient(134deg,#335382,#12294B 75%);position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.14);}
  .show .visual::after{content:"";position:absolute;top:-20%;right:-10%;width:44%;height:140%;background:rgba(255,255,255,.05);transform:skewX(-18deg);}
  .show .visual small{position:absolute;bottom:14px;left:16px;font-family:var(--mono);font-size:10.5px;color:#8FA3C2;letter-spacing:.06em;text-transform:uppercase;}
  .show .visual .tag{position:absolute;top:0;left:0;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:#fff;color:var(--noche);padding:7px 12px;border-left:3px solid var(--bronce);}

  /* venta / renta */
  .split{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
  .op{position:relative;overflow:hidden;isolation:isolate;padding:64px 44px;color:#fff;min-height:300px;display:flex;flex-direction:column;justify-content:flex-end;gap:11px;}
  .op.venta{background:linear-gradient(126deg,#1B3763,#0F2440 80%);}
  .op.renta{background:linear-gradient(126deg,#31517F,#152E50 80%);}
  .op i.f{position:absolute;top:-20%;right:-10%;width:40%;height:140%;transform:skewX(-18deg);background:rgba(255,255,255,.05);z-index:-1;transition:transform 500ms var(--ease);}
  .op:hover i.f{transform:skewX(-18deg) translateX(-14px);}
  .op .k{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:#8FA3C2;text-transform:uppercase;}
  .op h3{font-size:clamp(24px,2.6vw,32px);color:#fff;}
  .op .count{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--bronce);text-transform:uppercase;}
  .op p{color:#A9B8D2;font-size:15px;max-width:40ch;}
  .op .btn{margin-top:14px;align-self:flex-start;}

  /* cta propietarios */
  .cta{background:linear-gradient(116deg,#0E2140,var(--noche) 55%,#20406B);position:relative;overflow:hidden;isolation:isolate;border-top:1px solid var(--hair);}
  .cta .facet{position:absolute;inset:0;z-index:-1;}
  .cta .facet i{position:absolute;top:-15%;height:130%;transform:skewX(-18deg);display:block;}
  .cta .facet i:nth-child(1){width:36%;right:-6%;background:#1A3560;animation:driftA 18s ease-in-out infinite alternate;}
  .cta .facet i:nth-child(2){width:14%;left:12%;background:#264472;opacity:.5;animation:driftB 23s ease-in-out infinite alternate;}
  .cta .inner{padding-top:80px;padding-bottom:80px;display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center;}
  .cta .k{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:#8FA3C2;text-transform:uppercase;display:block;margin-bottom:14px;}
  .cta h2{color:#fff;font-size:clamp(24px,3.2vw,36px);max-width:19ch;}
  .cta p{color:#A9B8D2;margin-top:14px;max-width:50ch;}
  .cta .actions{display:flex;gap:14px;flex-wrap:wrap;justify-content:flex-end;}

  /* footer */
  footer{background:var(--noche);padding:62px 0 38px;}
  /* La columna de redes solo existe si hay redes configuradas: las columnas se reparten
     solas para que no quede un hueco cuando son 3 en vez de 4. */
  footer .cols{display:grid;grid-template-columns:1.4fr;grid-auto-flow:column;grid-auto-columns:1fr;gap:38px;padding-bottom:42px;border-bottom:1px solid rgba(255,255,255,.12);}
  footer ul.redes a{display:inline-flex;align-items:center;gap:8px;}
  footer ul.redes svg{flex:0 0 auto;opacity:.75;}
  footer ul.redes a:hover svg{opacity:1;}
  footer img{height:36px;width:auto;}
  footer .cols p{color:#7E93B5;font-size:13.5px;margin-top:16px;max-width:34ch;}
  /* Método Valterra® — la firma de marca lleva más peso que el párrafo que reemplazó. */
  footer .cols p.metodo{color:#C6D2E6;line-height:1.75;}
  footer .cols p.metodo b{display:block;font-family:var(--display);font-size:16px;color:#fff;margin-bottom:5px;}
  footer h4{font-family:var(--mono);font-size:11.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--bronce);margin:0 0 14px;}
  footer ul{list-style:none;margin:0;padding:0;display:grid;gap:9px;}
  footer ul a{color:#C6D2E6;font-size:14px;text-decoration:none;position:relative;padding-bottom:2px;}
  footer ul a::after{content:"";position:absolute;left:0;bottom:0;height:1.5px;width:100%;background:var(--bronce);transform:scaleX(0);transform-origin:left;transition:transform var(--t) var(--ease);}
  footer ul a:hover::after{transform:scaleX(1);}
  footer .legal{display:flex;justify-content:space-between;gap:16px;padding-top:22px;flex-wrap:wrap;}
  footer .legal span{font-family:var(--mono);font-size:11.5px;color:#6B80A3;letter-spacing:.04em;}

  /* WhatsApp flotante (móvil) */
  .fwa{display:none;position:fixed;right:18px;bottom:18px;z-index:80;width:56px;height:56px;border-radius:50%;background:var(--wa);align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(10,22,42,.35);}
  .fwa svg{width:28px;height:28px;color:#fff;}
  .fwa svg.ph path[opacity]{fill:#fff;opacity:.35;}

  /* ============ RESPONSIVE (QA) ============ */
  @media(max-width:1024px){
    .mega .grid{grid-template-columns:1fr 1fr 1fr;}
    .mega .mini{display:none;}
  }
  @media(max-width:960px){
    nav{display:none;}
    .burger{display:flex;}
    .h-right .switch{display:none;}
    .fwa{display:flex;}
  }
  @media(max-width:880px){
    section.wrap{padding:64px 24px;}
    .show .inner{grid-template-columns:1fr;gap:36px;padding-top:72px;padding-bottom:72px;}
    .show .visual{order:-1;}
    .split{grid-template-columns:1fr;}
    .cta .inner{grid-template-columns:1fr;padding-top:68px;padding-bottom:68px;}
    .cta .actions{justify-content:flex-start;}
    .grid3{grid-template-columns:1fr 1fr;}
    .grid4{grid-template-columns:1fr 1fr;}
    .grid4 .tipo{border-bottom:1px solid var(--hair);}
    .grid4 .tipo:nth-child(2n){border-right:none;}
    /* En tablet los tipos pasan a 2 por fila: el span de escritorio se anula. */
    .grid-tipos .tipo{grid-column:span 6 !important;border-bottom:1px solid var(--hair);border-right:1px solid var(--hair);}
    .grid-tipos .tipo:nth-child(2n){border-right:none;}
    .grid-tipos .tipo:last-child{border-bottom:none;}
    footer .cols{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr 1fr;}
    section{padding:64px 0;}
  }
  @media(max-width:640px){
    /* el video también se reproduce en móvil (autoplay muted playsinline); el poster es el estado de carga */
    .hero .inner{padding-top:64px;padding-bottom:58px;}
    .hero .stats{gap:26px;margin-top:36px;}
    .search{flex-direction:column;padding:8px;}
    .search .field{border-right:none;border-bottom:1px solid var(--hair);width:100%;}
    .search .field:nth-last-child(2){border-bottom:none;}
    .search .btn{width:100%;margin-top:6px;}
    .search.buscador{padding:0;}
    .buscador .bus-fila,.buscador .bus-extra{flex-direction:column;}
    /* Clave: en columna, el `flex-basis:160px` de escritorio se convierte en 160px de ALTO
       y deja un hueco enorme bajo cada campo. Con `flex:0 0 auto` toman su altura real. */
    .buscador .bus-fila .field,
    .buscador .bus-extra .field{flex:0 0 auto;min-width:0;padding:9px 16px;
      border-right:none;border-bottom:1px solid var(--hair);}
    .buscador .bus-extra .field:last-child{border-bottom:none;}
    /* Etiqueta y valor más juntos: gana altura sin perder legibilidad. */
    .buscador .field small{font-size:10px;margin-bottom:1px;}
    .buscador select,.buscador input[type=number]{padding:1px 0 0;}
    .buscador .field-op{padding-bottom:11px;}
    .buscador .pills{margin-top:6px;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
    .buscador .pills label{text-align:center;padding:10px 8px;}
    .buscador .bus-pie{flex-direction:column;align-items:stretch;gap:10px;padding:12px;}
    .buscador .bus-pie .btn{width:100%;}
    .buscador .bus-mas{justify-content:center;padding:4px 0;}
    .grid3{grid-template-columns:1fr;}
    .op{padding:44px 26px;}
    .hero .play{display:none;}
  }
  @media(max-width:520px){
    .grid4{grid-template-columns:1fr;}
    .grid4 .tipo{border-right:none;}
    .grid-tipos .tipo{grid-column:span 12 !important;border-right:none;}
    footer .cols{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr;}
    header .bar{gap:14px;}
    .h-right .btn-wa{padding:10px 14px;font-size:14px;}
  }

  @media (prefers-reduced-motion: reduce){
    *,*::before,*::after{animation:none !important;}
    .reveal{opacity:1;transform:none;transition:none;}
    .btn::before,.ni > a::after,.prop .photo .img,.tipo::before,.op i.f,.drawer,.scrim{transition:none;}
  }

/* ============ ADICIONES WORDPRESS (catálogo + ficha) ============ */
.search .field select,.fbar .field select,.fbar .field input{border:none;background:none;font-family:var(--sans);font-weight:500;font-size:15px;color:var(--ink);width:100%;padding:0;cursor:pointer;}
.search .field select:focus,.fbar .field select:focus,.fbar .field input:focus{outline:none;}
.prop .photo img.wp-post-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 700ms var(--ease);}
.prop:hover .photo img.wp-post-image{transform:scale(1.05);}
.show .visual img,.mega .mini .mph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.hp{position:absolute !important;left:-9999px !important;}

/* catálogo */
.catalogo .results{font-family:var(--mono);font-size:12px;color:var(--gris);letter-spacing:.06em;white-space:nowrap;}
.fbar{display:flex;flex-wrap:wrap;background:#fff;border:1px solid var(--hair);padding:6px;margin-bottom:18px;}
.fbar .field{flex:1 1 130px;padding:10px 16px;border-right:1px solid var(--hair);min-width:120px;}
.fbar .field small{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--bronce);}
.fbar .btn{margin:0;align-self:stretch;}
.chips{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:26px;}
.chip-f{text-decoration:none;}
.chip-f.clear{border-color:var(--bronce);color:var(--bronce);}
.chip-f.clear:hover{background:var(--bronce);color:#fff;}
.pagination{display:flex;gap:8px;justify-content:center;margin-top:44px;font-size:13px;}
.pagination .page-numbers{border:1px solid var(--hair);background:#fff;color:var(--azul);padding:9px 14px;text-decoration:none;transition:background var(--t) var(--ease),color var(--t) var(--ease);}
.pagination .page-numbers.current,.pagination .page-numbers:hover{background:var(--azul);color:#fff;border-color:var(--azul);}
.vacio{border:1px solid var(--hair);background:#fff;padding:56px 32px;text-align:center;display:grid;gap:14px;justify-items:center;}
.vacio .m{color:var(--bronce);letter-spacing:.08em;font-size:12px;}
@media(max-width:640px){
  .fbar{flex-direction:column;padding:0;}
  /* Igual que en el buscador: en columna el flex-basis se vuelve altura y deja huecos. */
  .fbar .field{flex:0 0 auto;min-width:0;width:100%;padding:9px 16px;border-right:none;border-bottom:1px solid var(--hair);}
  .fbar .field small{font-size:10px;}
  .fbar .btn{width:100%;margin:8px 0 0;}
}

/* ficha */
.ficha .f-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:28px;}
.ficha .f-head h1{font-size:clamp(26px,3.6vw,42px);margin:8px 0 6px;}
.ficha .code{color:var(--cafe);font-size:12px;letter-spacing:.04em;}
.ficha .zona{color:var(--gris);font-size:12.5px;}
.ficha .f-precio{text-align:right;display:grid;gap:10px;justify-items:end;}
.ficha .bigprice{font-family:var(--display);font-weight:700;font-size:clamp(26px,3.4vw,40px);color:var(--azul);font-variant-numeric:tabular-nums;margin:0;}
.ficha .bigprice span{font-family:var(--mono);font-weight:400;font-size:15px;color:var(--gris);}
.galeria{display:grid;grid-template-columns:2fr 1fr 1fr;grid-auto-rows:210px;gap:10px;margin-bottom:40px;}
.galeria figure{margin:0;position:relative;overflow:hidden;background:var(--paper2);}
.galeria .glz{position:relative;overflow:hidden;background:var(--paper2);display:block;cursor:zoom-in;}
.galeria .glz[hidden]{display:none;}
.galeria .glz img{transition:transform .5s var(--ease);}
.galeria .glz:hover img{transform:scale(1.05);}
.galeria .g-more{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(21,46,80,.58);color:#fff;font-family:var(--display);font-weight:700;font-size:30px;letter-spacing:0;}
.galeria .g-main{grid-row:span 2;grid-column:1;}
.galeria img{width:100%;height:100%;object-fit:cover;display:block;}
.galeria .g-main .img{position:absolute;inset:0;}
.galeria small{position:absolute;bottom:12px;left:14px;color:#8FA3C2;letter-spacing:.06em;}
@media(max-width:760px){.galeria{grid-template-columns:1fr 1fr;grid-auto-rows:150px;}.galeria .g-main{grid-column:1/-1;grid-row:span 2;}}
.f-grid{display:grid;grid-template-columns:1.6fr .9fr;gap:44px;align-items:start;}
@media(max-width:880px){.f-grid{grid-template-columns:1fr;}}
.specbar{display:flex;gap:0;border:1px solid var(--hair);background:#fff;margin-bottom:32px;flex-wrap:wrap;}
.specbar div{flex:1 1 110px;display:grid;gap:4px;justify-items:center;padding:20px 12px;border-right:1px solid var(--hair);}
.specbar svg{width:24px;height:24px;color:var(--azul);}
.specbar b{font-family:var(--display);font-size:19px;}
.specbar .m{font-size:10px;color:var(--gris);letter-spacing:.08em;}
.descripcion{max-width:65ch;margin-bottom:36px;}
.descripcion p{margin-bottom:1em;}
.amenidades,.tour,.mapa{margin-bottom:36px;}
.amenidades h2,.tour h2,.mapa h2{font-size:22px;margin-bottom:16px;}
.alist{display:flex;gap:10px;flex-wrap:wrap;}
.alist .chip-f{cursor:default;}
.alist .chip-f:hover{background:#fff;color:var(--azul);}
.embed{aspect-ratio:16/9;border:1px solid var(--hair);background:var(--paper2);}
.embed iframe{width:100%;height:100%;border:0;display:block;}
.mapa .note{margin-top:10px;font-size:11px;color:var(--bronce);letter-spacing:.08em;}
.f-side{position:sticky;top:96px;}
.contacto{border:1px solid var(--hair);background:#fff;padding:26px;display:grid;gap:16px;}
.contacto .k{font-size:11.5px;letter-spacing:.1em;color:var(--cafe);}
.contacto form{display:grid;gap:12px;}
.contacto label{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--gris);display:grid;gap:6px;}
.contacto input,.contacto textarea{border:1px solid var(--hair);background:var(--paper);padding:11px 12px;font-family:var(--sans);font-size:15px;color:var(--ink);width:100%;}
.contacto input:focus,.contacto textarea:focus{outline:2px solid var(--azul);outline-offset:-1px;}
.lead-ok{color:#1D7A54;font-size:12px;letter-spacing:.06em;}
.lead-err{color:var(--ambar);font-size:12px;letter-spacing:.06em;}
@media(max-width:880px){.f-side{position:static;}.ficha .f-precio{text-align:left;justify-items:start;}}

/* lightbox de la galería */
.vlb{position:fixed;inset:0;z-index:120;background:rgba(9,16,30,.94);display:none;align-items:center;justify-content:center;}
.vlb.open{display:flex;}
body.vlb-lock{overflow:hidden;}
.vlb img{max-width:92vw;max-height:88vh;object-fit:contain;box-shadow:0 30px 80px rgba(0,0,0,.5);animation:rise .3s var(--ease);}
.vlb button{position:absolute;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.25);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--t) var(--ease);}
.vlb button:hover{background:rgba(255,255,255,.2);}
.vlb .vlb-x{top:20px;right:20px;width:46px;height:46px;font-size:24px;line-height:1;}
.vlb .vlb-prev,.vlb .vlb-next{top:50%;transform:translateY(-50%);width:52px;height:52px;font-size:30px;line-height:1;}
.vlb .vlb-prev{left:22px;} .vlb .vlb-next{right:22px;}
.vlb .vlb-count{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:#C6D2E6;}
@media(max-width:640px){.vlb .vlb-prev{left:10px;}.vlb .vlb-next{right:10px;}.vlb .vlb-x{top:12px;right:12px;}}

/* ============ SWITCHES FUNCIONALES: idioma (Polylang) + moneda (JS) ============ */
.curr-switch{background:none;border:none;padding:0;font:inherit;}
.curr-switch b,.curr-switch span{opacity:.45;transition:opacity var(--t) var(--ease),color var(--t) var(--ease);}
.curr-switch b.is-on,.curr-switch span.is-on{opacity:1;}
.curr-switch:hover b,.curr-switch:hover span{opacity:.75;}
.curr-switch:hover b.is-on,.curr-switch:hover span.is-on{opacity:1;}

.lang-switch{display:inline-flex;gap:2px;}
.lang-switch a.lang-op{color:var(--gris);text-decoration:none;font-weight:500;opacity:.45;transition:opacity var(--t) var(--ease),color var(--t) var(--ease);}
.lang-switch a.lang-op.is-on{color:var(--azul);opacity:1;}
.lang-switch a.lang-op:hover{opacity:1;}

/* Precio: por defecto se ve Q; el switch de moneda alterna vía JS (valterra.js). */
.price .cur-usd,.bigprice .cur-usd{display:none;}
.price .cur-q,.bigprice .cur-q{display:inline;}

/* "/mes" en las rentas: el switch de moneda no lo toca, siempre acompaña al precio. */
.price .per-mes,.bigprice .per-mes{font-family:var(--mono);font-weight:400;color:var(--gris);letter-spacing:.02em;margin-left:4px;display:inline!important;}
.ficha .bigprice .per-mes{font-size:15px;}
.show .bigprice .per-mes{color:#7E93B5;}

/* ============ PROYECTOS ============ */
.proy-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
.proy-card{border:1px solid var(--hair);background:#fff;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;transition:border-color var(--t) var(--ease),transform var(--t) var(--ease);}
.proy-card:hover{border-color:var(--azul);transform:translateY(-3px);}
.proy-foto{position:relative;aspect-ratio:16/11;overflow:hidden;background:var(--paper2);}
.proy-foto img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 500ms var(--ease);}
.proy-card:hover .proy-foto img{transform:scale(1.04);}
.proy-ph{display:block;width:100%;height:100%;background:linear-gradient(128deg,#2C4C7B,#152E50 70%);}
.proy-etapa{position:absolute;top:0;left:0;background:var(--azul);color:#fff;font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;padding:7px 13px;}
.proy-body{padding:20px 22px 24px;display:grid;gap:7px;align-content:start;flex:1;}
.proy-zona{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--bronce);}
.proy-body h3{font-family:var(--display);font-size:20px;margin:0;line-height:1.2;}
.proy-specs{list-style:none;margin:6px 0 0;padding:0;display:flex;gap:18px;flex-wrap:wrap;}
.proy-specs li{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--gris);}
.proy-specs svg{color:var(--azul);}
.price small{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--gris);display:block;margin-bottom:1px;}

.proy-head{display:flex;justify-content:space-between;align-items:flex-start;gap:34px;flex-wrap:wrap;margin-bottom:30px;}
.proy-head h1{font-size:clamp(30px,4.4vw,46px);margin:8px 0 6px;}
.proy-desarr{color:var(--gris);font-size:15px;}
.proy-precio{text-align:right;display:grid;gap:10px;justify-items:end;}
.proy-precio .proy-etapa{position:static;display:inline-block;}
.proy-precio .price{font-family:var(--display);font-size:26px;font-weight:700;color:var(--azul);text-align:right;}
.proy-cuerpo{display:grid;grid-template-columns:1fr 340px;gap:46px;align-items:start;margin-top:36px;}
.proy-entrega{margin:22px 0;color:var(--gris);display:inline-flex;align-items:center;gap:9px;}
.proy-entrega svg{color:var(--bronce);}
.proy-ficha h3{font-family:var(--display);font-size:21px;margin:34px 0 14px;}

@media(max-width:1024px){ .proy-grid{grid-template-columns:1fr 1fr;} }
@media(max-width:880px){
  .proy-cuerpo{grid-template-columns:1fr;gap:32px;}
  .proy-precio{text-align:left;justify-items:start;}
  .proy-precio .price{text-align:left;}
}
@media(max-width:560px){ .proy-grid{grid-template-columns:1fr;} }

/* ============ AGENTES ============ */
.agentes-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.agente-card{text-decoration:none;color:var(--ink);border:1px solid var(--hair);background:#fff;display:block;transition:border-color var(--t) var(--ease),transform var(--t) var(--ease);}
.agente-card:hover{border-color:var(--azul);transform:translateY(-3px);}
.ag-foto,.ag-retrato{aspect-ratio:1/1;background:linear-gradient(128deg,#2C4C7B,#152E50 70%);position:relative;overflow:hidden;display:grid;place-items:center;}
.ag-foto img,.ag-retrato img{width:100%;height:100%;object-fit:cover;display:block;}
.ag-inicial{font-family:var(--display);font-size:56px;font-weight:700;color:rgba(255,255,255,.5);}
.ag-body{padding:18px 20px 20px;display:grid;gap:4px;}
.ag-body b{font-family:var(--display);font-size:17px;}
.ag-puesto{color:var(--gris);font-size:13.5px;}
.ag-body .n{font-family:var(--mono);font-size:11px;color:var(--bronce);letter-spacing:.06em;margin-top:5px;}

.agente-ficha .ag-top{display:grid;grid-template-columns:340px 1fr;gap:46px;align-items:start;}
.agente-ficha .ag-retrato{aspect-ratio:3/4;border:1px solid var(--hair);}
.agente-ficha h1{font-size:clamp(30px,4vw,44px);margin:8px 0 4px;}
.agente-ficha .ag-puesto{font-size:16px;margin-bottom:20px;}
.agente-ficha .ag-bio{color:var(--gris);line-height:1.75;max-width:60ch;}
.agente-ficha .ag-contacto{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px;}
.agente-ficha .ag-links{list-style:none;margin:20px 0 0;padding:0;display:flex;gap:20px;flex-wrap:wrap;}
.agente-ficha .ag-links a{color:var(--gris);font-size:13.5px;text-decoration:none;display:inline-flex;align-items:center;gap:7px;}
.agente-ficha .ag-links a:hover{color:var(--azul);}
.ag-volver{margin-top:44px;}
.ag-volver a{color:var(--gris);text-decoration:none;font-family:var(--mono);font-size:12.5px;}
.ag-volver a:hover{color:var(--azul);}

/* Agente dentro de la ficha de propiedad */
.agente-box{border:1px solid var(--hair);background:#fff;padding:22px;display:grid;gap:14px;margin-bottom:18px;}
.agente-box .k{font-size:11.5px;letter-spacing:.1em;color:var(--cafe);}
.ag-mini{display:flex;gap:13px;align-items:center;text-decoration:none;color:var(--ink);}
.ag-mini-foto{width:54px;height:54px;flex:0 0 auto;overflow:hidden;background:linear-gradient(128deg,#2C4C7B,#152E50 70%);display:grid;place-items:center;}
.ag-mini-foto img{width:100%;height:100%;object-fit:cover;}
.ag-mini-foto i{font-style:normal;font-family:var(--display);font-weight:700;color:rgba(255,255,255,.6);font-size:22px;}
.ag-mini-txt{display:grid;gap:2px;}
.ag-mini-txt b{font-family:var(--display);font-size:15.5px;}
.ag-mini-txt small{color:var(--gris);font-size:12.5px;}
.ag-mini:hover b{color:var(--azul);}

/* ============ BLOG ============ */
/* Nota de accesibilidad: los textos atenuados usan colores sólidos de la paleta
   (--gris, --bronce, --cafe). Nunca `opacity` sobre texto: rompe el contraste AA. */

.blog-arch .sec-head .blog-count{color:var(--gris);font-size:12px;letter-spacing:.08em;text-transform:uppercase;}
.blog-arch .sec-head.sub{margin-top:56px;margin-bottom:26px;padding-top:26px;border-top:1px solid var(--hair);}

/* --- Entrada destacada (la más reciente, solo en la página 1) --- */
.post-hero{display:grid;grid-template-columns:1.15fr .85fr;gap:0;border:1px solid var(--hair);background:#fff;margin-bottom:8px;}
.post-hero .ph-foto{display:block;position:relative;overflow:hidden;background:var(--paper2);min-height:340px;}
.post-hero .ph-foto img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 600ms var(--ease);}
.post-hero:hover .ph-foto img{transform:scale(1.03);}
.post-hero .ph-body{padding:40px 42px;display:flex;flex-direction:column;align-items:flex-start;gap:14px;justify-content:center;}
.post-hero .ph-body .k{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cafe);margin:0;}
.post-hero h2{font-family:var(--display);font-size:clamp(24px,2.6vw,32px);line-height:1.18;margin:0;}
.post-hero h2 a{color:inherit;text-decoration:none;}
.post-hero h2 a:hover{color:var(--azul);}
.post-hero .ph-ex{color:var(--gris);font-size:15.5px;line-height:1.65;}
.post-hero .ph-meta{color:var(--bronce-txt);font-size:11.5px;letter-spacing:.08em;display:flex;align-items:center;gap:8px;}
.post-hero .btn{margin-top:6px;}

/* --- Tarjetas --- */
/* Las columnas las fija la plantilla según cuántas tarjetas hay en la página:
   una sola tarjeta en una rejilla de tres deja dos tercios de hueco. */
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
.blog-grid.cols-1{grid-template-columns:minmax(0,420px);}
.blog-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:780px;}
.post-card{border:1px solid var(--hair);background:#fff;display:flex;flex-direction:column;transition:border-color var(--t) var(--ease),box-shadow var(--t) var(--ease),transform var(--t) var(--ease);}
.post-card:hover{border-color:var(--azul);box-shadow:0 12px 30px -18px rgba(20,22,28,.35);transform:translateY(-3px);}
.pc-foto{display:block;position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--paper2);}
.pc-foto img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 500ms var(--ease);}
.post-card:hover .pc-foto img{transform:scale(1.04);}
/* Placeholder cuando la entrada no tiene imagen destacada. */
.pc-ph{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(128deg,#2C4C7B,#152E50 70%);color:#93A7C6;}
.pc-ph svg{width:34px;height:34px;}
.post-hero .pc-ph svg{width:46px;height:46px;}
/* Etiqueta de categoría sobre la foto. */
.pc-cat{position:absolute;left:0;bottom:0;background:var(--azul);color:#fff;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding:7px 13px;}
.pc-body{padding:20px 22px 24px;display:grid;gap:9px;align-content:start;flex:1;}
.pc-meta{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.08em;color:var(--bronce-txt);}
.pc-sep{color:var(--hair);}
.pc-fecha{font-size:11px;letter-spacing:.08em;color:var(--bronce-txt);}
.post-card h3{font-family:var(--display);font-size:19px;line-height:1.25;margin:0;}
.post-card h3 a{color:inherit;text-decoration:none;}
.post-card h3 a:hover{color:var(--azul);}
.pc-ex{color:var(--gris);font-size:14px;line-height:1.6;}
.pc-link{margin-top:auto;font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--azul);text-decoration:none;display:inline-flex;align-items:center;gap:7px;}
.pc-link svg{transition:transform var(--t) var(--ease);}
.post-card:hover .pc-link svg{transform:translateX(5px);}

/* --- Entrada individual --- */
.post-single{max-width:940px;}

/* Cabecera a ancho completo.
   ⚠️ Es un <header> y el sistema define `header{position:sticky;top:0;z-index:90;
   background:rgba(247,248,250,.94);backdrop-filter:blur(10px);border-bottom:...}` para la
   barra del SITIO con un selector de ELEMENTO. Sin estos resets la cabecera del artículo
   se pega arriba y tapa el texto al hacer scroll. Mismo caso que .ps-foot con `footer{}`. */
.ps-hero{position:relative;top:auto;z-index:auto;backdrop-filter:none;border-bottom:none;
  overflow:hidden;isolation:isolate;color:#fff;
  background:linear-gradient(128deg,var(--noche),var(--obsidiana) 78%);
  padding:78px 0 66px;margin-bottom:54px;}
/* Imagen destacada de fondo, con velo para que el texto siga legible. */
.ps-hero-bg{position:absolute;inset:0;z-index:-1;}
.ps-hero-bg img{width:100%;height:100%;object-fit:cover;display:block;}
.ps-hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(118deg,rgba(0,7,27,.93) 0%,rgba(18,32,56,.82) 60%,rgba(18,32,56,.72) 100%);}
.ps-hero-in{position:relative;}
.ps-kicker{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:20px;}
.ps-cat{background:var(--bronce);color:var(--obsidiana);font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:6px 12px;}
.ps-kicker .k{display:flex;align-items:center;gap:8px;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--bronce);margin:0;}
.ps-hero h1{color:#fff;font-size:clamp(31px,4.8vw,54px);line-height:1.06;max-width:20ch;margin:0;}
.ps-bajada{margin-top:22px;color:#B9C6DA;font-size:19px;line-height:1.6;font-family:var(--serif);font-style:italic;max-width:58ch;}

/* Dos columnas: sumario pegajoso a la izquierda, cuerpo a la derecha. */
.ps-cols{display:grid;grid-template-columns:210px 1fr;gap:48px;align-items:start;}
.ps-cols:not(:has(.ps-indice)){grid-template-columns:1fr;}
.ps-main{min-width:0;max-width:70ch;}
.ps-indice{position:sticky;top:110px;border-left:2px solid var(--bronce);padding-left:18px;}
.ps-indice .k{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cafe);margin-bottom:14px;}
/* Sin numeración automática: muchos artículos ya traen los títulos numerados
   ("1. Que quien renta...") y el contador los duplicaba ("1. 1. Que quien..."). */
.ps-indice ol{list-style:none;margin:0;padding:0;display:grid;gap:11px;}
.ps-indice a{color:var(--gris);text-decoration:none;font-size:13.5px;line-height:1.45;display:block;transition:color var(--t) var(--ease),border-color var(--t) var(--ease);border-left:2px solid transparent;padding-left:11px;margin-left:-11px;}
.ps-indice a:hover{border-left-color:var(--azul);}
.ps-indice a:hover{color:var(--azul);}

.ps-body{color:var(--ink);line-height:1.8;font-size:17px;max-width:none;margin-bottom:0;}
.ps-body h2{font-size:clamp(21px,2.3vw,26px);margin:44px 0 14px;scroll-margin-top:110px;}
.ps-body h3{font-size:19px;margin:32px 0 10px;scroll-margin-top:110px;}
.ps-body p{margin-bottom:20px;}
.ps-body ul,.ps-body ol{margin:0 0 22px;padding-left:22px;display:grid;gap:9px;}
.ps-body li{line-height:1.7;}
.ps-body li::marker{color:var(--bronce-txt);}
.ps-body a{color:var(--azul);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;}
.ps-body a:hover{color:var(--acero);}
.ps-body strong{font-weight:700;}
.ps-body img{border:1px solid var(--hair);height:auto;}
.ps-body figure{margin:32px 0;}
.ps-body figcaption{margin-top:9px;color:var(--gris);font-size:13px;}
.ps-body blockquote{margin:32px 0;padding:4px 0 4px 24px;border-left:2px solid var(--bronce);font-family:var(--serif);font-style:italic;font-size:21px;line-height:1.5;color:var(--azul);}
.ps-body blockquote p{margin-bottom:0;}
.ps-body hr{border:none;border-top:1px solid var(--hair);margin:38px 0;}

/* Compartir */
.ps-compartir{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:44px;padding-top:26px;border-top:1px solid var(--hair);}
.ps-compartir .k{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cafe);margin:0;}
.ps-share-btns{display:flex;gap:9px;}
.sh{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--hair);background:#fff;color:var(--gris);cursor:pointer;padding:0;transition:border-color var(--t) var(--ease),color var(--t) var(--ease),background var(--t) var(--ease);}
.sh:hover{border-color:var(--azul);color:var(--azul);}
.sh.copiado{border-color:var(--wa);color:var(--wa);}
.sh-ok{position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:6px 10px;white-space:nowrap;pointer-events:none;visibility:hidden;}
.sh.copiado .sh-ok{visibility:visible;}

/* Cierre comercial del artículo */
.ps-cta{display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap;margin-top:56px;padding:34px 38px;background:linear-gradient(128deg,var(--noche),var(--obsidiana) 78%);color:#fff;}
.ps-cta h2{font-family:var(--display);font-size:clamp(19px,2.1vw,24px);line-height:1.3;margin:0 0 8px;color:#fff;max-width:38ch;}
.ps-cta p{color:#B9C6DA;font-size:14.5px;line-height:1.6;max-width:52ch;}
.ps-cta-btns{display:flex;gap:11px;flex-wrap:wrap;}

/* Es un <footer>, y el sistema pinta `footer{background:var(--noche);padding:62px 0 38px}`
   para el pie del SITIO. Sin este reset el bloque sale sobre un rectángulo azul oscuro. */
.ps-foot{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px;padding:30px 0 0;background:none;border-top:1px solid var(--hair);}

.vacio{text-align:center;padding:60px 0;display:grid;gap:18px;justify-items:center;color:var(--gris);}

@media(max-width:1024px){ .agentes-grid{grid-template-columns:repeat(3,1fr);} }
@media(max-width:1024px){
  .ps-cols{grid-template-columns:1fr;gap:0;}
  .ps-indice{position:static;margin-bottom:34px;}
  .ps-indice ol{grid-template-columns:1fr 1fr;gap:11px 26px;display:grid;}
}
@media(max-width:880px){
  .ps-hero{padding:52px 0 44px;margin-bottom:38px;}
  .ps-hero h1{max-width:none;}
  .ps-bajada{font-size:17.5px;margin-top:18px;}
  .agentes-grid{grid-template-columns:1fr 1fr;}
  .blog-grid{grid-template-columns:1fr 1fr;}
  .post-hero{grid-template-columns:1fr;}
  .post-hero .ph-foto{min-height:0;aspect-ratio:16/9;}
  .post-hero .ph-body{padding:30px 26px;}
  .agente-ficha .ag-top{grid-template-columns:1fr;gap:28px;}
  .agente-ficha .ag-retrato{max-width:300px;}
}
@media(max-width:560px){
  .ps-hero{padding:40px 0 34px;margin-bottom:30px;}
  .agentes-grid,.blog-grid{grid-template-columns:1fr;}
  .ps-indice ol{grid-template-columns:1fr;}
  .ps-cta{padding:26px 22px;}
  .ps-cta-btns .btn{width:100%;}
  .ps-body{font-size:16.5px;}
}

/* ============ SOBRE NOSOTROS / MÉTODO VALTERRA ============ */
.nosotros .nos-intro{max-width:62ch;color:var(--gris);font-size:16.5px;line-height:1.7;margin-bottom:34px;}
.metodo-pasos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--hair);background:#fff;}
.metodo-pasos li{padding:30px 24px;border-right:1px solid var(--hair);display:grid;gap:10px;align-content:start;position:relative;overflow:hidden;isolation:isolate;}
.metodo-pasos li:last-child{border-right:none;}
/* Mismo barrido diagonal que las tarjetas de tipo, para que la sección se sienta del sistema. */
.metodo-pasos li::before{content:"";position:absolute;inset:-2px -16px;z-index:-1;background:var(--azul);transform:translateX(-108%) skewX(-16deg);transition:transform 300ms var(--ease);}
.metodo-pasos li:hover::before{transform:translateX(0) skewX(-16deg);}
.metodo-pasos li:hover{color:#fff;}
.metodo-pasos .np{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;color:var(--bronce);}
.metodo-pasos b{font-family:var(--display);font-size:17px;line-height:1.25;transition:color var(--t) var(--ease);}
@media(max-width:880px){
  .metodo-pasos{grid-template-columns:1fr 1fr;}
  .metodo-pasos li{border-bottom:1px solid var(--hair);}
  .metodo-pasos li:nth-child(2n){border-right:none;}
  .metodo-pasos li:last-child{border-bottom:none;}
}
@media(max-width:520px){
  .metodo-pasos{grid-template-columns:1fr;}
  .metodo-pasos li{border-right:none;}
}
@media (prefers-reduced-motion: reduce){ .metodo-pasos li::before{transition:none;} }

/* ============ MODAL DE ASESORÍA (CTA propietarios) ============ */
.ases-scrim{position:fixed;inset:0;background:rgba(20,25,34,.62);z-index:120;opacity:0;transition:opacity var(--t) var(--ease);}
.ases-scrim.is-open{opacity:1;}
.ases{position:fixed;z-index:121;top:50%;left:50%;transform:translate(-50%,-48%);width:min(620px,calc(100vw - 32px));max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);overflow-y:auto;overscroll-behavior:contain;
  background:#fff;border:1px solid var(--hair);padding:38px 36px 34px;display:grid;gap:14px;
  opacity:0;transition:opacity var(--t) var(--ease),transform var(--t) var(--ease);}
.ases.is-open{opacity:1;transform:translate(-50%,-50%);}
.ases[hidden],.ases-scrim[hidden]{display:none;}
.ases .k{font-family:var(--mono);text-transform:uppercase;color:var(--cafe);font-size:11.5px;letter-spacing:.1em;}
.ases h3{font-family:var(--display);font-size:27px;margin:0;color:var(--noche);}
.ases .ases-sub{color:var(--gris);font-size:14.5px;margin:0;}
.ases-x{position:absolute;top:14px;right:16px;background:none;border:0;font-size:17px;line-height:1;color:var(--gris);cursor:pointer;padding:6px;}
.ases-x:hover{color:var(--azul);}
/* El formulario de la página de Contacto es el MISMO de la asesoría, pero inline en vez de
   modal: comparte estas reglas para que no existan dos verdades de estilo. */
.ases form,.contacto-form form{display:grid;gap:13px;margin-top:4px;}
.ases-2{display:grid;grid-template-columns:1fr 1fr;gap:13px;}
.ases label,.contacto-form label{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--gris);display:grid;gap:6px;}
.ases input,.ases select,.ases textarea,
.contacto-form input,.contacto-form select,.contacto-form textarea{border:1px solid var(--hair);background:var(--paper);padding:11px 12px;font-family:var(--sans);font-size:15px;color:var(--ink);width:100%;}
.ases input:focus,.ases select:focus,.ases textarea:focus,
.contacto-form input:focus,.contacto-form select:focus,.contacto-form textarea:focus{outline:2px solid var(--azul);outline-offset:-1px;}
.ases button[type=submit],.contacto-form button[type=submit]{margin-top:4px;justify-self:start;}
body.ases-open{overflow:hidden;}
@media(max-width:560px){
  .ases{padding:32px 22px 26px;}
  .ases h3{font-size:23px;}
  .ases-2{grid-template-columns:1fr;}
}
@media (prefers-reduced-motion: reduce){
  .ases,.ases-scrim{transition:none;}
}

/* ============ MÓVIL: campos de formulario ============ */
/* Safari en iOS hace zoom automático al enfocar un campo con menos de 16px, y la página
   queda descuadrada. Se sube a 16px solo en móvil; en escritorio se mantiene el diseño. */
@media(max-width:820px){
  /* El WhatsApp flotante ocupa la esquina inferior: se reserva ese espacio para que no
     tape el último botón o enlace de la página. */
  footer{padding-bottom:92px;}
  .buscador select,
  .buscador input[type=number],
  .search .field select,
  .fbar .field select,
  .fbar .field input,
  .contacto input,
  .contacto textarea,
  .contacto-form input,
  .contacto-form select,
  .contacto-form textarea,
  .ases input,
  .ases select,
  .ases textarea{font-size:16px;}
  /* Áreas táctiles cómodas (mínimo recomendado ~44px). */
  .buscador .pills label{padding:11px 16px;}
  .ases-x{padding:12px;font-size:19px;}
  .chip-f{padding:9px 14px;}
}

/* Botón para desplegar los filtros del catálogo en móvil. */
.btn-filtros-movil{display:none;align-items:center;gap:9px;width:100%;margin-bottom:14px;padding:14px 18px;
  background:#fff;border:1px solid var(--hair);font-family:var(--sans);font-size:15px;font-weight:600;
  color:var(--azul);cursor:pointer;}
.btn-filtros-movil .n-filtros{margin-left:auto;background:var(--azul);color:#fff;font-family:var(--mono);
  font-size:11px;min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;}
.btn-filtros-movil svg{color:var(--azul);}
@media(max-width:880px){
  .btn-filtros-movil{display:flex;}
  /* Los filtros arrancan cerrados: primero se ven las propiedades. */
  .filtros{display:none;}
  .filtros.abierto{display:block;}
  /* Campos más compactos para que la lista abierta no sea eterna. */
  .fbar .field{padding:9px 14px;}
}

/* ============================================================
   MONITORES GRANDES
   El contenedor era fijo en 1180px: en una pantalla de 1080p o
   más quedaba una columna angosta al centro con dos franjas
   vacías enormes. Se ensancha por tramos —no al 100%— porque a
   ancho completo las líneas de texto pasan de 100 caracteres y
   las fotos se estiran. En el catálogo, el espacio extra se
   convierte en una cuarta columna en vez de tarjetas gigantes.
   ============================================================ */
@media(min-width:1500px){
  :root{--wrap:1400px;}
  .catalogo .grid3,.proy-grid,.agentes-grid{grid-template-columns:repeat(4,1fr);}
  .galeria{grid-auto-rows:250px;}
  /* El buscador del hero acompaña al contenedor; con 940px fijos quedaba
     flotando chico en la esquina izquierda de una portada muy ancha. */
  .search.buscador{max-width:1120px;}
}
@media(min-width:1800px){
  :root{--wrap:1560px;}
  .galeria{grid-auto-rows:280px;}
  .search.buscador{max-width:1240px;}
}
@media(min-width:2200px){
  :root{--wrap:1720px;}
  /* Se queda en 4 columnas a propósito: el catálogo pagina de 12 en 12 (3×4
     exacto). Con 5 la última fila quedaría con 2 tarjetas y un hueco. */
}

/* ============ PÁGINA DE CONTACTO ============ */
/* Dos columnas: canales reales a la izquierda, formulario a la derecha. Cada canal se pinta
   solo si tiene valor en Ajustes → Generales, así que la lista nunca queda con huecos. */
/* El wrapper se llama `pag-contacto` y no `contacto` a propósito: `.contacto` ya es la caja
   del formulario de la ficha de propiedad (borde + fondo blanco) y la heredaría entera. */
.pag-contacto{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:56px;align-items:start;}
.pag-contacto .descripcion{max-width:52ch;margin-bottom:30px;}

.canales{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair);}
.canales li{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start;padding:19px 0;border-bottom:1px solid var(--hair);}
.canales li > svg{color:var(--azul);margin-top:2px;flex:0 0 auto;}
.canales .k{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cafe);margin-bottom:6px;}
.canales p{margin:0;font-size:15.5px;line-height:1.55;}
.canales a{color:var(--azul);text-decoration:none;font-size:15.5px;border-bottom:1px solid transparent;transition:border-color var(--t) var(--ease),color var(--t) var(--ease);}
.canales a:hover{color:var(--cafe);border-bottom-color:var(--bronce);}
.canal-nota{margin-top:5px !important;color:var(--gris);font-size:13.5px;}
.canal-redes{display:flex;flex-wrap:wrap;gap:6px 18px;}

.contacto-form{background:#fff;border:1px solid var(--hair);padding:34px 32px 30px;position:relative;}
.contacto-form::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--bronce);}
.contacto-form .k{display:block;text-transform:uppercase;color:var(--cafe);font-size:11.5px;letter-spacing:.1em;margin-bottom:8px;}
.contacto-form h2{font-size:27px;color:var(--noche);}
.contacto-form .cf-sub{color:var(--gris);font-size:14.5px;margin:8px 0 0;}
.contacto-form .lead-ok,.contacto-form .lead-err{margin:14px 0 0;}

.contacto-atajos-head{margin-top:78px;}

@media(max-width:980px){
  .pag-contacto{grid-template-columns:1fr;gap:38px;}
  .pag-contacto .descripcion{max-width:none;}
}
@media(max-width:560px){
  .contacto-form{padding:28px 20px 24px;}
  .contacto-form h2{font-size:23px;}
}
