/* ============================================================================
   KATTO — HOJA DE ESTILOS
   ============================================================================

   ¿QUIERES CAMBIAR EL DISEÑO? Todo está en el bloque de abajo.
   Cambia un valor aquí y cambia en las nueve páginas al mismo tiempo.

   Los COLORES se escriben en formato hexadecimal (#RRGGBB). Tu diseñador
   te los va a dar así. Solo sustituye el valor después de los dos puntos.

   El número de WhatsApp, el correo y el logotipo NO están aquí:
   están en katto-config.js.
   ========================================================================== */

:root{
  /* ---------- COLORES DE MARCA ---------- */
  --blue:#2E3192;        /* Color principal: botones, acentos, títulos de sección */
  --blue-lt:#6062C4;     /* Versión clara: hover de botones, texto sobre azul oscuro */
  --blue-deep:#232566;   /* Fondos oscuros de sección */
  --cream:#F5F5DB;       /* Fondo general del sitio */
  --cream-2:#EBEBC7;     /* Fondo de secciones alternas y tarjetas */
  --ink:#231F20;         /* Texto principal y fondos negros */
  --ink-soft:#403C3D;    /* Texto secundario */
  --muted:#6F6B63;       /* Texto de apoyo, notas */
  --line:#D8D8B4;        /* Líneas divisorias y bordes */

  /* ---------- TIPOGRAFÍAS ----------
     Para cambiarlas también hay que cambiar el enlace de Google Fonts
     que está en el <head> de cada página. Ver GUIA-MARCA.md.        */
  --display:'Jost',-apple-system,BlinkMacSystemFont,sans-serif;  /* Títulos */
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; /* Texto */

  /* ---------- FORMA ---------- */
  --radio:2px;           /* Redondeo de botones y tarjetas. 0 = esquinas rectas */
  --radio-tarjeta:3px;

  /* ---------- MEDIDAS ---------- */
  --max:1180px;          /* Ancho máximo del contenido */

  /* ---------- WHATSAPP ---------- */
  --whatsapp:#25D366;    /* Verde oficial de WhatsApp. No conviene cambiarlo. */
}
*{box-sizing:border-box;margin:0;padding:0}
html{
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;   /* evita que iOS agrande el texto en horizontal */
  text-size-adjust:100%;
}
/* Quita el destello gris al tocar en Android */
a,button{-webkit-tap-highlight-color:rgba(46,49,146,.15)}
body{font-family:var(--sans);background:var(--cream);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
.wrap-wide{max-width:1320px;margin:0 auto;padding:0 24px}
a{color:inherit}
img{max-width:100%;display:block}

/* ---------- NAV ---------- */
header{position:sticky;top:0;z-index:100;background:rgba(245,245,219,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:70px;gap:20px}
.logo{font-family:var(--display);font-size:28px;font-weight:600;letter-spacing:-.01em;text-decoration:none;color:var(--blue);white-space:nowrap}
.nav-links{display:flex;gap:26px;list-style:none;font-size:14px}
.nav-links a{text-decoration:none;color:var(--ink-soft);transition:color .2s;white-space:nowrap}
.nav-links a:hover,.nav-links a.on{color:var(--blue)}
.nav-cta{background:var(--blue);color:#fff;padding:11px 20px;border-radius:var(--radio);font-size:13.5px;font-weight:500;text-decoration:none;transition:background .2s;white-space:nowrap}
.nav-cta:hover{background:var(--blue-lt)}
.burger{display:none;background:none;border:none;font-size:23px;cursor:pointer;color:var(--ink)}

/* ---------- BOTONES ---------- */
.btn{display:inline-block;padding:15px 30px;border-radius:var(--radio);font-size:14.5px;font-weight:500;text-decoration:none;transition:all .2s;border:1px solid transparent;cursor:pointer;font-family:var(--sans)}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-lt)}
.btn-ghost{border-color:rgba(245,245,219,.4);color:var(--cream)}
.btn-ghost:hover{background:rgba(245,245,219,.1)}
.btn-line{border-color:var(--blue);color:var(--blue)}
.btn-line:hover{background:var(--blue);color:#fff}

/* ---------- HERO ---------- */
.hero{background:var(--blue-deep);color:var(--cream);padding:100px 0 84px;position:relative;overflow:hidden}
.hero.sm{padding:74px 0 62px}
.hero::after{content:'';position:absolute;right:-160px;top:-160px;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(96,98,196,.32),transparent 68%)}
.hero .wrap,.hero .wrap-wide{position:relative;z-index:1}
.eyebrow{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--blue-lt);margin-bottom:24px;font-weight:500}
.hero h1{font-family:var(--display);font-size:clamp(34px,5.2vw,60px);line-height:1.08;font-weight:300;letter-spacing:-.015em;max-width:17ch}
.hero h1 em{font-style:normal;color:var(--blue-lt)}
.lead{font-size:18px;max-width:58ch;margin-top:26px;color:rgba(245,245,219,.84);font-weight:300}
.hero-actions{display:flex;gap:14px;margin-top:38px;flex-wrap:wrap}

/* ---------- SECCIONES ---------- */
section{padding:90px 0}
.sec-label{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--blue);font-weight:500;margin-bottom:18px}
h2{font-family:var(--display);font-size:clamp(28px,3.6vw,42px);font-weight:300;line-height:1.14;letter-spacing:-.01em;max-width:21ch}
h3{font-family:var(--display);font-size:21px;font-weight:500;line-height:1.28}
.sec-intro{font-size:17px;color:var(--ink-soft);max-width:60ch;margin-top:20px;font-weight:300}
.alt{background:var(--cream-2)}
.dark{background:var(--blue-deep);color:var(--cream)}
.dark h2,.dark h3{color:var(--cream)}
.dark .sec-label{color:var(--blue-lt)}
.dark .sec-intro{color:rgba(245,245,219,.78)}
.ink{background:var(--ink);color:var(--cream)}
.ink h2{color:var(--cream)}
.ink .sec-label{color:var(--blue-lt)}

/* ---------- CIFRAS ---------- */
.stats{background:var(--ink);color:var(--cream);padding:0}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.stat{padding:34px 24px;border-right:1px solid rgba(245,245,219,.13)}
.stat:last-child{border-right:none}
.stat .n{font-family:var(--display);font-size:34px;font-weight:500;color:var(--blue-lt);line-height:1}
.stat .l{font-size:12.5px;color:rgba(245,245,219,.62);margin-top:9px}

/* ---------- REJILLA DE TARJETAS ---------- */
.grid{display:grid;gap:2px;margin-top:52px;background:var(--line)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.card{background:var(--cream);padding:38px 30px;transition:background .25s}
.card:hover{background:#fff}
.card .num{font-family:var(--display);font-size:14px;color:var(--blue);letter-spacing:.1em;margin-bottom:18px;font-weight:500}
.card h3{margin-bottom:12px;font-size:20px}
.card p{font-size:14.5px;color:var(--muted);font-weight:300}

/* tarjetas sobre fondo oscuro */
.dcards{display:grid;gap:22px;margin-top:50px}
.d4{grid-template-columns:repeat(4,1fr)}
.d3{grid-template-columns:repeat(3,1fr)}
.dcard{background:rgba(245,245,219,.05);border:1px solid rgba(245,245,219,.14);padding:28px 24px;border-radius:var(--radio-tarjeta);transition:border-color .25s}
.dcard:hover{border-color:var(--blue-lt)}
.dcard .ic{color:var(--blue-lt);margin-bottom:14px;display:block}
.dcard h3{font-size:18px;margin-bottom:9px}
.dcard p{font-size:13.5px;color:rgba(245,245,219,.7);font-weight:300}

/* ---------- PUERTAS (home) ---------- */
.doors{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:48px}
.door{text-decoration:none;display:block;padding:36px 32px;background:var(--cream-2);border:1px solid var(--line);border-radius:var(--radio-tarjeta);transition:border-color .25s,transform .25s}
.door:hover{border-color:var(--blue);transform:translateY(-3px)}
.door .k{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue);margin-bottom:14px;font-weight:500}
.door h3{font-size:25px;margin-bottom:11px;font-weight:400}
.door p{font-size:15px;color:var(--muted);font-weight:300;margin-bottom:16px}
.door .go{font-size:14px;color:var(--blue);font-weight:500}

/* ---------- LISTAS ---------- */
.plist{list-style:none;margin-top:6px}
.plist li{padding:20px 0 20px 38px;border-bottom:1px solid var(--line);position:relative;font-size:15px;color:var(--ink-soft);font-weight:300}
.plist li:first-child{padding-top:0}
.plist li strong{display:block;color:var(--ink);font-weight:500;font-size:16.5px;margin-bottom:4px}
.plist li::before{content:'—';position:absolute;left:0;top:20px;color:var(--blue)}
.plist li:first-child::before{top:0}
.dlist{list-style:none}
.dlist li{padding:12px 0 12px 28px;border-bottom:1px solid var(--line);position:relative;font-size:14.5px;color:var(--ink-soft);font-weight:300}
.dlist li:last-child{border-bottom:none}
.dlist li::before{content:'';position:absolute;left:0;top:20px;width:10px;height:2px;background:var(--blue)}
.dark .dlist li{border-color:rgba(245,245,219,.14);color:rgba(245,245,219,.8)}
.dark .dlist li::before{background:var(--blue-lt)}

/* ---------- PASOS ---------- */
.steps-grid{display:grid;gap:28px;margin-top:52px}
.s5{grid-template-columns:repeat(5,1fr)}
.s4{grid-template-columns:repeat(4,1fr)}
.step{border-top:2px solid var(--ink);padding-top:24px}
.step .n{font-size:11.5px;letter-spacing:.16em;color:var(--blue);font-weight:600;margin-bottom:10px}
.step h3{font-size:18px;margin-bottom:9px}
.step p{font-size:14px;color:var(--muted);font-weight:300}

/* ---------- DOS COLUMNAS ---------- */
.two{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}
.two-a{display:grid;grid-template-columns:1fr 1.15fr;gap:60px;align-items:start}

/* ---------- HONORARIOS ---------- */
.fee{background:var(--cream);border:1px solid var(--line);padding:34px 32px;border-radius:var(--radio-tarjeta);margin-top:34px}
.fee .big{font-family:var(--display);font-size:32px;font-weight:500;color:var(--blue);line-height:1.1;margin-bottom:10px}
.fee p{font-size:15px;color:var(--ink-soft);font-weight:300}
.esq-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:28px}
.esq-box{background:var(--cream);border:1px solid var(--line);padding:26px 24px;border-radius:var(--radio-tarjeta)}
.esq-box.on{border-color:var(--blue);border-width:2px}
.esq-box h3{font-size:19px;margin-bottom:10px}
.esq-box p{font-size:14.5px;color:var(--muted);font-weight:300}
.tag-rec{display:inline-block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;background:var(--blue);color:#fff;padding:3px 8px;border-radius:var(--radio);margin-left:8px;vertical-align:middle}

/* ---------- FAQ ---------- */
.faq-list{margin-top:44px;border-top:1px solid var(--line)}
details{border-bottom:1px solid var(--line)}
summary{padding:22px 0;cursor:pointer;font-size:16.5px;font-weight:500;list-style:none;display:flex;justify-content:space-between;gap:20px;align-items:center}
summary::-webkit-details-marker{display:none}
summary::after{content:'+';color:var(--blue);font-size:22px;font-weight:300;flex-shrink:0}
details[open] summary::after{content:'\2212'}
details p{padding:0 0 24px;color:var(--ink-soft);font-size:15px;max-width:78ch;font-weight:300}
details p a{color:var(--blue)}
/* Las respuestas con varios párrafos o con lista van envueltas en .faq-cuerpo:
   el padding de cierre lo pone el contenedor y no cada párrafo, para que no se
   abra un hueco entre uno y otro. */
.faq-cuerpo{padding:0 0 24px;max-width:78ch}
.faq-cuerpo p{padding:0 0 13px;max-width:none}
.faq-cuerpo p:last-child{padding-bottom:0}
.faq-cuerpo ul,.faq-cuerpo ol{margin:0 0 13px;padding-left:22px;color:var(--ink-soft);font-size:15px;font-weight:300}
.faq-cuerpo li{margin-bottom:9px;line-height:1.6}
.faq-cuerpo li:last-child{margin-bottom:0}
.faq-cuerpo ol li::marker{color:var(--blue);font-weight:500}
.faq-cuerpo strong{font-weight:500;color:var(--ink)}

/* ---------- NOTAS LEGALES ---------- */
.legal{margin-top:34px;font-size:13px;color:var(--muted);font-weight:300;max-width:80ch;border-left:2px solid var(--blue);padding-left:16px}
.dark .legal{color:rgba(245,245,219,.55);border-color:var(--blue-lt)}

/* ---------- CIERRE ---------- */
.close{text-align:center}
.close h2{margin:0 auto;max-width:24ch}
.close p{max-width:56ch;margin:20px auto 30px;font-weight:300;color:rgba(245,245,219,.76)}

/* ---------- PIE ---------- */
footer{background:var(--ink);color:rgba(245,245,219,.55);padding:44px 0 34px;border-top:1px solid rgba(245,245,219,.12)}
.foot-top{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:36px;padding-bottom:30px;border-bottom:1px solid rgba(245,245,219,.12)}
.foot-top .logo{color:var(--cream);font-size:26px;margin-bottom:8px;display:inline-block}
.foot-top .tag{font-size:13.5px;color:rgba(245,245,219,.6)}
.foot-col h4{font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--blue-lt);margin-bottom:14px;font-weight:500}
.foot-col a{display:block;font-size:14px;color:rgba(245,245,219,.72);text-decoration:none;padding:5px 0}
.foot-col a:hover{color:var(--cream)}
.foot-bot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:12.5px;padding-top:24px}

/* ---------- WHATSAPP ---------- */
.wa{position:fixed;right:22px;bottom:22px;z-index:200;width:54px;height:54px;border-radius:50%;background:var(--whatsapp);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 22px rgba(0,0,0,.24);transition:transform .2s}
.wa:hover{transform:scale(1.07)}

/* ---------- RESPONSIVE ---------- */
@media(max-width:1080px){
  .nav-links{gap:18px;font-size:13.5px}
}
@media(max-width:980px){
  .grid.g3,.dcards.d4,.dcards.d3{grid-template-columns:1fr 1fr}
  .steps-grid.s5,.steps-grid.s4{grid-template-columns:1fr 1fr 1fr}
  .two,.two-a{grid-template-columns:1fr;gap:40px}
  .stats-grid{grid-template-columns:1fr 1fr}
  .stat:nth-child(1),.stat:nth-child(2){border-bottom:1px solid rgba(245,245,219,.13)}
  .stat:nth-child(2){border-right:none}
  .foot-top{grid-template-columns:1fr 1fr}
}
@media(max-width:760px){
  .nav-links{display:none;position:absolute;top:70px;left:0;right:0;background:var(--cream);flex-direction:column;gap:0;border-bottom:1px solid var(--line);padding:8px 24px 18px}
  .nav-links.open{display:flex}
  .nav-links li{padding:13px 0;border-bottom:1px solid var(--line)}
  .burger{display:block}
  .nav-cta{display:none}
  section{padding:62px 0}
  .hero{padding:66px 0 58px}
  .grid.g3,.grid.g2,.dcards.d4,.dcards.d3,.doors,.steps-grid.s5,.steps-grid.s4,.esq-grid{grid-template-columns:1fr}
  /* En celular la barra de datos va en cuadricula de 2x2, no en columna:
     cuatro numeros apilados se comian media pantalla de scroll. */
  .stats-grid{grid-template-columns:1fr 1fr}
  .stat{border-bottom:1px solid rgba(245,245,219,.13)}
  .stat:nth-child(even){border-right:none}
  .stat:nth-child(3),.stat:nth-child(4){border-bottom:none}
  .foot-top{grid-template-columns:1fr;gap:26px}
}

/* ============================================================
   LOGOTIPO COMO IMAGEN
   Se activa solo cuando pones un archivo en katto-config.js
   ============================================================ */
.logo-img{display:flex;align-items:center}
.logo-img img{display:block}

/* ============================================================
   BOTONES DE WHATSAPP
   ============================================================ */
.btn-wa{
  display:inline-flex;align-items:center;gap:9px;
  padding:14px 26px;border-radius:var(--radio);
  background:var(--whatsapp);color:#fff;
  font-size:14.5px;font-weight:500;text-decoration:none;
  transition:filter .2s;border:1px solid transparent;
}
.btn-wa:hover{filter:brightness(.93)}
.btn-wa svg{flex-shrink:0}

/* Versión chica, para las tarjetas de propiedad */
.wa-card{
  display:inline-flex;align-items:center;gap:7px;
  padding:8px 14px;border-radius:var(--radio);
  background:var(--whatsapp);color:#fff;
  font-size:13px;font-weight:500;text-decoration:none;
  transition:filter .2s;margin-top:10px;
}
.wa-card:hover{filter:brightness(.93)}

/* Versión de contorno, para fondos oscuros */
.btn-wa-line{
  display:inline-flex;align-items:center;gap:9px;
  padding:14px 26px;border-radius:var(--radio);
  border:1px solid var(--whatsapp);color:var(--whatsapp);
  background:transparent;font-size:14.5px;font-weight:500;text-decoration:none;
  transition:all .2s;
}
.btn-wa-line:hover{background:var(--whatsapp);color:#fff}


/* ============================================================================
   MÓVIL — ajustes específicos para teléfono
   ----------------------------------------------------------------------------
   El sitio es UNA sola versión que se adapta. No hay una página aparte para
   celular: las mismas páginas se reacomodan según el ancho de la pantalla.
   Aquí abajo están los ajustes que solo aplican en pantallas chicas.
   ========================================================================== */

/* Los efectos al pasar el cursor solo tienen sentido con mouse.
   En pantallas táctiles se quedaban "pegados" después de tocar. */
@media (hover:none){
  .card:hover, .door:hover, .dcard:hover, .svc:hover{
    background:inherit; transform:none; border-color:inherit;
  }
  .btn:hover, .btn-wa:hover, .nav-cta:hover{ filter:none }
}

@media(max-width:760px){
  /* Áreas táctiles: el mínimo cómodo con el pulgar es ~44px de alto */
  .btn, .btn-wa, .btn-line, .nav-cta{ padding:16px 26px; font-size:15px }
  .nav-links a{ display:block; padding:4px 0 }

  /* Los botones del encabezado, uno debajo del otro y a todo lo ancho.
     En pantallas angostas quedaban partidos a la mitad. */
  .hero-actions{ flex-direction:column; align-items:stretch; gap:10px }
  .hero-actions .btn, .hero-actions .btn-wa{ text-align:center; justify-content:center }

  /* Lo mismo en los cierres de página */
  .close .btn, .close .btn-wa{ display:block; margin:0 auto 10px; max-width:340px; justify-content:center }
  .close .btn-wa{ margin-left:auto !important }

  /* Espacio abajo para que el botón flotante no tape el pie */
  footer{ padding-bottom:92px }

  /* Menos aire vertical: en celular el desplazamiento cansa */
  section{ padding:54px 0 }
  .hero{ padding:58px 0 52px }
  h2{ max-width:none }
  .sec-intro, .lead{ max-width:none }
}

/* Teléfonos angostos */
@media(max-width:400px){
  .wrap, .wrap-wide{ padding:0 18px }
  .stat{ padding:26px 18px }
  .card, .svc{ padding:28px 22px }
  .door{ padding:28px 24px }
}

/* El botón flotante respeta la barra de gestos del iPhone */
.wa{
  bottom:calc(22px + env(safe-area-inset-bottom, 0px));
  right:calc(18px + env(safe-area-inset-right, 0px));
}

/* Nada debe salirse a lo ancho y provocar desplazamiento lateral */
img, table, pre{ max-width:100% }

/* Al imprimir o guardar como PDF, fuera lo que no sirve en papel */
@media print{
  header, .wa, .nav-cta, .filters{ display:none }
  body{ background:#fff; color:#000 }
  a{ text-decoration:underline }
}


/* ============================================================================
   FOTOGRAFÍAS
   Se activan solas cuando pones un archivo en katto-config.js
   ========================================================================== */

/* Portada con foto de fondo. El velo oscuro encima es lo que permite que
   el texto se siga leyendo sobre cualquier imagen. */
.hero.con-foto{
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
}
.hero.con-foto::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(
    100deg,
    rgba(35,37,102,var(--velo,.55)) 0%,
    rgba(35,37,102,calc(var(--velo,.55) * .82)) 100%
  );
}
.hero.con-foto .wrap,
.hero.con-foto .wrap-wide{position:relative;z-index:2}
.hero.con-foto::after{z-index:1}

/* Retratos del equipo */
.retrato{
  width:100%;aspect-ratio:1/1;object-fit:cover;
  border-radius:var(--radio-tarjeta);
  margin-bottom:20px;background:var(--cream-2);
}

/* Franja de imagen entre secciones */
.franja-foto{
  width:100%;height:clamp(220px,32vw,420px);
  background-size:cover;background-position:center;
}
@media(max-width:760px){
  .franja-foto{height:200px}
}


/* ============================================================================
   ASISTENTE DEL SITIO
   ========================================================================== */
.asis-btn{
  position:fixed;right:22px;bottom:calc(88px + env(safe-area-inset-bottom, 0px));
  z-index:200;width:54px;height:54px;border-radius:50%;
  background:var(--blue);color:#fff;border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 22px rgba(0,0,0,.24);transition:transform .2s;
}
.asis-btn:hover{transform:scale(1.07)}

.asis-panel{
  position:fixed;right:22px;bottom:calc(152px + env(safe-area-inset-bottom, 0px));
  z-index:201;width:340px;max-width:calc(100vw - 44px);
  max-height:min(560px, calc(100vh - 200px));
  background:var(--cream);border:1px solid var(--line);
  border-radius:6px;box-shadow:0 14px 44px rgba(0,0,0,.2);
  display:none;flex-direction:column;overflow:hidden;
}
.asis-panel.abierto{display:flex}

.asis-head{
  background:var(--blue);color:#fff;padding:16px 18px;
  display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-shrink:0;
}
.asis-head strong{display:block;font-family:var(--display);font-size:16px;font-weight:500}
.asis-head span{display:block;font-size:12px;opacity:.8;margin-top:2px}
.asis-cerrar{background:none;border:none;color:#fff;font-size:24px;line-height:1;cursor:pointer;opacity:.85;padding:0 2px}
.asis-cerrar:hover{opacity:1}

.asis-cuerpo{padding:18px;overflow-y:auto}
.asis-preg{font-size:15px;font-weight:500;margin-bottom:14px;color:var(--ink)}
/* Las respuestas largas traen párrafos y listas dentro (los pasos de una
   compraventa, las tasas por ciudad), así que necesitan su propio espaciado. */
.asis-resp{font-size:14px;color:var(--ink-soft);font-weight:300;line-height:1.6;margin-bottom:16px}
.asis-resp p{margin-bottom:11px}
.asis-resp p:last-child{margin-bottom:0}
.asis-resp strong{font-weight:500;color:var(--ink)}
.asis-resp ul,.asis-resp ol{margin:0 0 11px;padding-left:19px}
.asis-resp li{margin-bottom:6px}
.asis-resp ol li::marker{color:var(--blue);font-weight:500}
/* Contador de preguntas en el menú de temas */
.asis-num{
  float:right;font-size:12px;color:var(--muted);background:var(--cream-2);
  border-radius:100px;padding:1px 8px;margin-left:8px;
}

.asis-op{
  display:block;width:100%;text-align:left;
  padding:12px 14px;margin-bottom:8px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radio);
  font-family:var(--sans);font-size:14px;color:var(--ink);cursor:pointer;
  transition:all .15s;
}
.asis-op:hover{border-color:var(--blue);background:var(--cream-2)}
.asis-sec{background:transparent;color:var(--muted);font-size:13px;border-style:dashed;margin-top:6px}

.asis-resumen{list-style:none;margin:0 0 16px}
.asis-resumen li{
  padding:9px 0;border-bottom:1px solid var(--line);
  display:flex;flex-direction:column;gap:2px;
}
.asis-resumen li:last-child{border-bottom:none}
.asis-resumen span{font-size:11.5px;color:var(--muted)}
.asis-resumen strong{font-size:14px;font-weight:500;color:var(--ink)}

.asis-wa{
  display:block;text-align:center;padding:13px;
  background:var(--whatsapp);color:#fff;text-decoration:none;
  border-radius:var(--radio);font-size:14.5px;font-weight:500;margin-bottom:8px;
}
.asis-wa:hover{filter:brightness(.93)}
.asis-alt{
  display:block;text-align:center;padding:11px;
  color:var(--blue);text-decoration:none;font-size:13.5px;
}
.asis-alt:hover{text-decoration:underline}

@media(max-width:520px){
  .asis-panel{
    right:12px;left:12px;width:auto;
    bottom:calc(148px + env(safe-area-inset-bottom, 0px));
    max-height:calc(100vh - 210px);
  }
  .asis-btn{right:18px}
}


/* ============================================================================
   CATÁLOGO DE PROPIEDADES
   Se usa dentro de <div class="catalogo">, en cualquier página.
   ========================================================================== */
.catalogo{margin-top:44px}
.wrap-cat{max-width:var(--max);margin:0 auto;padding:0 24px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.catalogo .filters{background:var(--cream-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0}
/* Los chips ocupan su propia columna y se acomodan en los renglones que
   necesiten; los controles de vista y orden quedan fijos arriba a la derecha,
   alineados con el primer renglón de chips. */
/* El bloque de filtros es una retícula de dos columnas. La izquierda lleva los
   chips, el buscador de colonia y los rangos; la derecha, los controles de
   vista y el contador. Es retícula y no flex justamente para que la columna
   izquierda tenga EL MISMO borde derecho en sus tres renglones: así el botón
   Limpiar queda alineado con donde terminan los chips de arriba, cosa que con
   flex no se puede garantizar porque cada renglón se mide por separado. */
.filter-row{display:grid;grid-template-columns:1fr auto;gap:14px 20px;align-items:start}
.filtros-chips{grid-column:1;grid-row:1;display:flex;gap:10px 26px;flex-wrap:wrap;align-items:center}
.filter-row .zona-bloque{grid-column:1;grid-row:2}
.filter-row .rangos{grid-column:1;grid-row:3}
.filter-row .count{grid-column:2;grid-row:3;align-self:center;justify-self:end}
/* El paso a una sola columna vive más abajo, después de definir .vista-barra:
   si estuviera aquí, las reglas base de esa clase lo pisarían por venir
   después en el archivo. */
.catalogo .chip-group{display:flex;gap:6px;flex-wrap:wrap}
.catalogo .chip{padding:9px 16px;border:1px solid var(--line);background:transparent;border-radius:100px;font-family:var(--sans);font-size:13.5px;cursor:pointer;color:var(--ink-soft);transition:all .18s}
.catalogo .chip:hover{border-color:var(--blue-lt)}
.catalogo .chip.on{background:var(--ink);color:var(--cream);border-color:var(--ink)}
/* Antes había una rayita vertical entre grupo y grupo. Se quitó: la fila se
   parte en varios renglones según el ancho de la pantalla, y no hay manera en
   CSS de saber dónde va a cortar, así que la rayita terminaba colgada al final
   de un renglón o al principio del siguiente. Ahora los grupos se distinguen
   por el espacio entre ellos —bastante mayor que el que hay entre chips del
   mismo grupo— y por su primer chip oscuro, que nombra el filtro. */
.catalogo .count{font-size:13.5px;color:var(--muted)}
/* El margin-top se fue: ahora el espacio entre renglones lo pone el gap de la reticula. */
.filtro-linea{display:flex;gap:12px;flex-wrap:wrap;align-items:center;width:100%}
.rangos{gap:18px}
.rango{display:flex;align-items:center;gap:7px}
.rango label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:500}
.rango input{width:104px;padding:8px 11px;border:1px solid var(--line);border-radius:var(--radio);background:#fff;font-family:var(--sans);font-size:13.5px;color:var(--ink)}
.rango input:focus{outline:none;border-color:var(--blue)}
.rango span{color:var(--muted);font-size:13px}
.limpiar{margin-left:auto;color:var(--blue);border-color:var(--blue)!important}

.catalogo .split{display:grid;grid-template-columns:1fr 1.05fr;min-height:560px}
.catalogo .list-col{overflow-y:auto;max-height:78vh;padding:24px;border-right:1px solid var(--line)}
.catalogo .map-col{position:sticky;top:70px;height:78vh}

/* sin-mapa: la página nunca pidió mapa (o no hay llave de Google). No hay nada
   que mostrar ni que esconder, así que aplica en todos los tamaños.
   ancho: el visitante cerró el mapa con el interruptor. Solo tiene sentido en
   escritorio, donde lista y mapa conviven; en celular se ven de uno en uno y
   el que manda es el botón "Mapa" del grupo de vistas. */
.catalogo .split.sin-mapa{grid-template-columns:1fr}
.catalogo .split.sin-mapa .list-col{border-right:none;max-height:none;overflow:visible;max-width:var(--max);margin:0 auto;width:100%}
@media(min-width:1001px){
  .catalogo .split.ancho{grid-template-columns:1fr}
  .catalogo .split.ancho .map-col{display:none}
  .catalogo .split.ancho .list-col{border-right:none;max-height:none;overflow:visible;max-width:var(--max);margin:0 auto;width:100%}
}

/* Pestaña para cerrar el mapa, pegada a su orilla izquierda */
.mapa-cerrar{
  position:absolute;left:0;top:16px;z-index:3;
  display:flex;align-items:center;justify-content:center;
  width:26px;height:44px;padding:0;cursor:pointer;
  border:1px solid var(--line);border-left:none;border-radius:0 var(--radio) var(--radio) 0;
  background:var(--cream);color:var(--ink-soft);
  box-shadow:0 1px 5px rgba(0,0,0,.13);transition:background .15s,color .15s;
}
.mapa-cerrar:hover{background:var(--ink);color:var(--cream)}
@media(max-width:1000px){.mapa-cerrar{display:none}}
.catalogo .mapa{width:100%;height:100%;background:var(--cream-2)}
.map-fallback{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--cream-2);padding:40px;text-align:center;gap:12px}
.map-fallback strong{font-family:var(--display);font-size:19px;font-weight:400}
.map-fallback p{font-size:14px;color:var(--muted);max-width:38ch}

.catalogo .card{display:flex;gap:16px;padding:18px;border:1px solid var(--line);background:var(--cream);border-radius:var(--radio-tarjeta);margin-bottom:14px;cursor:pointer;transition:all .2s}
.catalogo .card:hover,.catalogo .card.active{border-color:var(--blue);box-shadow:0 3px 14px rgba(0,0,0,.06);background:var(--cream)}
.thumb{width:132px;height:104px;flex-shrink:0;background:var(--cream-2);border-radius:var(--radio);display:flex;align-items:center;justify-content:center;color:var(--line);overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover}
.card-body{flex:1;min-width:0}
.tags{display:flex;gap:6px;margin-bottom:7px;flex-wrap:wrap}
.tag{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:var(--radio)}
.tag.op{background:var(--blue-deep);color:var(--cream)}
.tag.zone{background:var(--cream-2);color:var(--ink-soft);border:1px solid var(--line)}
.catalogo .card h3{font-family:var(--display);font-size:18px;font-weight:400;margin-bottom:4px}
.card .addr{font-size:13px;color:var(--muted);margin-bottom:8px}
.card .specs{font-size:13px;color:var(--ink-soft);display:flex;gap:14px;flex-wrap:wrap;margin-bottom:9px}
.card .price{font-family:var(--display);font-size:19px}
.card .price small{font-family:var(--sans);font-size:11.5px;color:var(--muted);letter-spacing:.04em}
.catalogo .empty{text-align:center;padding:60px 20px;color:var(--muted)}
.catalogo .empty h3{font-family:var(--display);font-size:21px;font-weight:400;margin-bottom:8px;color:var(--ink)}
.gm-title{font-family:var(--display);font-size:16px;margin-bottom:3px}
.gm-body{font-size:13px;color:#403C3D;line-height:1.5}
.gm-price{font-weight:600;margin-top:5px;display:block}
/* Interruptor de vista: lista, cuadricula y —cuando hay mapa— mapa.
   Antes estaba escondido en escritorio porque solo servia para alternar lista y
   mapa, y en escritorio se ven los dos a la vez. Ahora tambien cambia el
   acomodo de las tarjetas, asi que se muestra siempre; el boton de mapa es el
   unico que sigue apareciendo solo cuando sirve. */
.vista-barra{display:flex;align-items:center;gap:8px;grid-column:2;grid-row:1}
.vista{display:flex;gap:0;border:1px solid var(--line);border-radius:var(--radio);overflow:hidden}
.vista button{display:flex;align-items:center;gap:7px;padding:9px 16px;border:none;background:transparent;cursor:pointer;font-family:var(--sans);font-size:13.5px;color:var(--ink-soft);transition:background .15s}
.vista button:hover{background:var(--cream-2)}
.vista button.on{background:var(--ink);color:var(--cream)}
.vista button.on:hover{background:var(--ink)}
.vista button svg{flex-shrink:0}
.vista [data-v="mapa"]{display:none}

/* Interruptor de mapa: prende y apaga la columna del mapa. No va dentro del
   grupo .vista porque no es otra forma de ver las tarjetas — ahí los botones
   se excluyen entre sí y este es independiente. Solo en escritorio: en celular
   el mapa se abre con el botón "Mapa" del grupo, que sí es excluyente. */
.mapa-sw{
  display:flex;align-items:center;gap:7px;padding:9px 15px;cursor:pointer;
  border:1px solid var(--line);border-radius:var(--radio);background:transparent;
  font-family:var(--sans);font-size:13.5px;color:var(--ink-soft);transition:all .15s;
}
.mapa-sw:hover{border-color:var(--blue-lt)}
.mapa-sw.on{background:var(--ink);color:var(--cream);border-color:var(--ink)}
.mapa-sw svg{flex-shrink:0}
@media(max-width:1000px){.mapa-sw{display:none}}

/* ---------- Menú de orden ---------- */
.orden{position:relative}
/* Ancho fijo a propósito. Las etiquetas miden distinto y, al ser este el último
   elemento del renglón, cada cambio de orden movía el borde de la columna de
   los chips hasta 82px: se reacomodaba media pantalla por elegir un orden.

   170px es el ancho de la etiqueta más larga que se muestra aquí. No es un
   número suelto: la columna de los chips necesita 716px para acomodar dos
   grupos por renglón, y con 1132px de contenido eso deja 396px para estos
   controles. Si esta cifra crece, los chips se parten en cuatro renglones.
   Las etiquetas que no caben en 170px llevan una versión corta en
   opcionesOrden(); en el menú se sigue leyendo la completa. */
.orden-btn{
  display:flex;align-items:center;justify-content:center;min-width:170px;
  gap:8px;padding:9px 15px;cursor:pointer;
  border:1px solid var(--line);border-radius:var(--radio);background:transparent;
  font-family:var(--sans);font-size:13.5px;color:var(--ink-soft);transition:all .15s;
}
.orden-btn:hover,.orden-btn.on{border-color:var(--blue-lt)}
.orden-btn svg{flex-shrink:0}
.orden-menu{
  /* Por encima de los botones flotantes de chat y WhatsApp (z-index 200 y 201),
     que en celular tapaban las últimas opciones del menú. */
  position:absolute;top:calc(100% + 6px);right:0;z-index:250;min-width:246px;
  background:var(--cream);border:1px solid var(--line);border-radius:var(--radio);
  box-shadow:0 8px 26px rgba(0,0,0,.14);padding:6px;
}
.orden-op{
  display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;
  padding:10px 12px;border:none;background:transparent;cursor:pointer;
  font-family:var(--sans);font-size:13.5px;color:var(--ink);text-align:left;
  border-radius:var(--radio);transition:background .13s;
}
.orden-op:hover{background:var(--cream-2)}
.orden-op .radio{
  flex-shrink:0;width:15px;height:15px;border:1.5px solid var(--line);
  border-radius:50%;position:relative;
}
.orden-op.on .radio{border-color:var(--blue)}
.orden-op.on .radio::after{
  content:'';position:absolute;inset:3px;border-radius:50%;background:var(--blue);
}
/* Debajo de este ancho ya no queda espacio útil para los chips al lado de los
   controles: se partían de dos en dos renglones y quedaban peor que juntos.
   Todo pasa a una sola columna y los controles bajan a su propio renglón,
   alineados a la derecha. Va aquí, después de las reglas base de .vista-barra,
   porque si no aquellas lo pisarían por venir después en el archivo. */
@media(max-width:1240px){
  .filter-row{grid-template-columns:1fr}
  .filtros-chips{grid-column:1;grid-row:1}
  .vista-barra{grid-column:1;grid-row:2;justify-self:end}
  .filter-row .zona-bloque{grid-column:1;grid-row:3}
  .filter-row .rangos{grid-column:1;grid-row:4}
  .filter-row .count{grid-column:1;grid-row:5;justify-self:end}
}

/* En celular los cuatro controles no caben en un renglón: se cortaba "Mapa" y
   el botón de orden partía su texto en dos líneas. Cada grupo toma su propio
   renglón completo, que además da botones más fáciles de picar con el dedo. */
@media(max-width:760px){
  .vista-barra{width:100%;margin-left:0;flex-wrap:wrap;gap:8px}
  .vista{flex:1 1 100%}
  .vista button{flex:1;justify-content:center;padding:10px 6px}
  .orden{flex:1 1 100%}
  .orden-btn{width:100%;justify-content:center;white-space:nowrap}
  .orden-menu{min-width:0;width:100%}
}

/* ---------- Acomodo en cuadricula ----------
   La misma tarjeta, apilada en vez de horizontal. Se usa auto-fill para que
   funcione igual en la columna angosta de junto al mapa que a todo lo ancho. */
.catalogo .lista.rejilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;align-items:start}
.catalogo .lista.rejilla .card{flex-direction:column;margin-bottom:0;gap:0;padding:0;overflow:hidden}
.catalogo .lista.rejilla .thumb{width:100%;height:175px;border-radius:0}
.catalogo .lista.rejilla .card-body{padding:16px 18px 18px}
/* Las etiquetas van en un solo renglón. Con "Renta temporal", que es larga, se
   partían en dos y esa tarjeta quedaba más alta que las de junto; la colonia se
   recorta con puntos suspensivos y todas las tarjetas empatan. */
.catalogo .lista.rejilla .tags{flex-wrap:nowrap}
.catalogo .lista.rejilla .tag.op{flex:none}
.catalogo .lista.rejilla .tag.zone{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

@media(max-width:1000px){
  .catalogo .split{grid-template-columns:1fr}
  .catalogo .map-col{position:relative;top:0;height:60vh;min-height:320px;order:-1;border-bottom:1px solid var(--line)}
  .catalogo .list-col{max-height:none;border-right:none;overflow:visible}
  .vista [data-v="mapa"]{display:flex}
  .catalogo .count{width:100%}
  .catalogo .split.ver-lista .map-col{display:none}
  .catalogo .split.ver-mapa .list-col{display:none}
}
@media(max-width:760px){
  .catalogo .card{flex-direction:column}
  .thumb{width:100%;height:170px}
  /* En celular la cuadricula cabe de dos en dos, con tarjetas mas compactas */
  .catalogo .lista.rejilla{grid-template-columns:1fr 1fr;gap:10px}
  .catalogo .lista.rejilla .thumb{height:110px}
  .catalogo .lista.rejilla .card-body{padding:11px 12px 13px}
  .catalogo .lista.rejilla h3{font-size:14.5px}
  .catalogo .lista.rejilla .addr,.catalogo .lista.rejilla .specs{display:none}
  /* En dos columnas la etiqueta de colonia no cabe: se parte en dos renglones y
     estira la tarjeta, y recortada no se entiende. Se quita: la colonia sigue
     visible en el titulo y en el filtro con el que el visitante llego aqui. */
  .catalogo .lista.rejilla .tag.zone{display:none}
  .catalogo .lista.rejilla .tags{margin-bottom:6px}
  .catalogo .lista.rejilla .price{font-size:16px}
  .catalogo .lista.rejilla .wa-card{display:none}
}


/* Buscador de colonia dentro del catálogo */
.buscador{
  display:flex;align-items:center;gap:9px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radio);
  padding:0 13px;min-width:290px;flex:0 1 340px;
}
.buscador svg{color:var(--muted);flex-shrink:0}
.buscador input{
  border:none;background:none;outline:none;
  padding:10px 0;width:100%;
  font-family:var(--sans);font-size:14px;color:var(--ink);
}
.buscador input::placeholder{color:var(--muted)}
.buscador:focus-within{border-color:var(--blue)}

@media(max-width:760px){
  .buscador{min-width:0;flex:1 1 100%}
  .buscador input{font-size:16px}
}


/* Colonias elegidas: muestran tacha y se quitan con un clic. */
.catalogo .chip.zona.on{
  padding-right:11px;display:inline-flex;align-items:center;gap:8px;
}
.catalogo .chip.zona.on::after{
  content:'×';
  font-size:16px;line-height:1;
  width:18px;height:18px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:rgba(245,245,219,.22);
  transition:background .15s;
}
.catalogo .chip.zona.on:hover::after{
  background:rgba(245,245,219,.42);
}
.catalogo .chip.mas{
  border-style:dashed;color:var(--blue);border-color:var(--blue);
}
.catalogo .chip.todas.on{background:var(--ink);color:var(--cream);border-color:var(--ink)}
.catalogo .chip.todas:not(.on){background:transparent;color:var(--ink-soft)}


/* ============================================================================
   BUSCADOR DE COLONIA CON SUGERENCIAS
   ========================================================================== */
.zona-bloque{flex-direction:column;align-items:stretch;gap:10px}
.zona-bloque .buscador{
  position:relative;
  flex:none;              /* en columna, "flex" mediría el alto: lo anulamos */
  width:100%;max-width:420px;
  height:auto;
}

.sugerencias{
  position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:60;
  background:#fff;border:1px solid var(--line);border-radius:var(--radio-tarjeta);
  box-shadow:0 10px 32px rgba(0,0,0,.14);
  max-height:320px;overflow-y:auto;padding:6px;
}
.sug-titulo{
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);padding:8px 10px 6px;
}
.sug{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  width:100%;text-align:left;padding:10px;
  background:none;border:none;cursor:pointer;border-radius:var(--radio);
  font-family:var(--sans);font-size:14px;color:var(--ink-soft);
  transition:background .12s;
}
.sug:hover,.sug:focus{background:var(--cream-2);outline:none}
.sug strong{color:var(--blue);font-weight:600}
.sug em{
  font-style:normal;font-size:12px;color:var(--muted);
  background:var(--cream-2);border-radius:100px;padding:2px 9px;flex-shrink:0;
}
.sug-vacio{padding:14px 10px;font-size:13.5px;color:var(--muted)}

.elegidas{display:flex;gap:6px;flex-wrap:wrap}
.elegidas:empty{display:none}

@media(max-width:760px){
  .zona-bloque .buscador{max-width:none}
  .sugerencias{max-height:260px}
}


/* Con cinco grupos de filtros la fila se parte en varias lineas y el espacio
   entre grupos ya no basta para distinguirlos, asi que cada uno se encierra en
   su propio recuadro para que se lea como unidad. */
@media(max-width:1100px){
  .catalogo .chip-group{
    border:1px solid var(--line);
    border-radius:22px;          /* rectangulo redondeado: aguanta varias lineas */
    padding:6px;
    gap:5px;                     /* separacion tambien entre renglones */
    background:rgba(255,255,255,.45);
  }
  .catalogo .chip-group .chip{border-color:transparent;margin:0}
}


/* ============================================================================
   RESPIRO EN CELULAR
   Los campos del formulario llegaban casi al borde de la pantalla y se
   sentian amontonados. Aqui se les da aire y se separan entre si.
   ========================================================================== */
@media(max-width:760px){
  .wrap, .wrap-wide{padding:0 22px}

  /* Los campos no pegados al borde, con mas separacion vertical */
  .layout{padding:36px 0 72px}
  .field{margin-bottom:24px}
  input, select, textarea{padding:15px 16px}

  /* Espacio entre la etiqueta y su campo */
  label{margin-bottom:9px}

  /* Los pasos del formulario, mas separados del contenido */
  .steps{margin-bottom:32px}

  /* Las opciones de tarjeta con mas altura, mas facil de atinarles */
  .opt span{padding:16px 12px}

  /* Las casillas de consentimiento con mas aire interior */
  .check{padding:18px 16px;gap:13px}

  /* El aviso final separado del boton */
  .actions{margin-top:38px}
}

/* Telefonos angostos: un poco mas de margen todavia */
@media(max-width:400px){
  .wrap, .wrap-wide{padding:0 20px}
}


/* ============================================================================
   RANGOS DE PRECIO Y SUPERFICIE EN CELULAR
   ----------------------------------------------------------------------------
   Se salian de la pantalla. La causa: un campo de texto no se encoge por
   debajo de su ancho natural aunque este dentro de un contenedor flexible.
   La solucion es "min-width:0", que le da permiso de encogerse.
   ========================================================================== */
@media(max-width:760px){
  .rangos{flex-direction:column;align-items:stretch;gap:14px;width:100%}

  .rango{
    display:grid;
    grid-template-columns:1fr auto 1fr;   /* campo — guion — campo */
    grid-template-areas:'et et et' 'a g b';
    align-items:center;
    gap:6px 8px;
    width:100%;
  }
  .rango label{grid-area:et;margin-bottom:2px}
  .rango input{
    min-width:0;                 /* sin esto no se encoge y desborda */
    width:100%;
    font-size:16px;              /* evita el zoom de Safari al tocar */
    padding:12px 14px;
  }
  .rango input:nth-of-type(1){grid-area:a}
  .rango span{grid-area:g;text-align:center}
  .rango input:nth-of-type(2){grid-area:b}

  .limpiar{margin-left:0;width:100%;padding:13px}
  .catalogo .count{width:100%;text-align:center}

  /* Nada dentro del catalogo debe provocar desplazamiento lateral */
  .catalogo .wrap-cat{max-width:100%;overflow-x:hidden}
}

/* ============================================================================
   MAS MARGEN EN LOS FORMULARIOS
   ========================================================================== */
@media(max-width:760px){
  .layout{padding-left:6px;padding-right:6px}
  .wrap, .wrap-wide{padding:0 26px}
  .head .wrap{padding:0 26px}
}
@media(max-width:400px){
  .wrap, .wrap-wide{padding:0 22px}
}


/* ============================================================================
   MAS AIRE EN LOS FORMULARIOS
   ========================================================================== */
@media(max-width:760px){
  /* Margen general un poco mayor en todo el sitio */
  .wrap, .wrap-wide{padding:0 24px}

  /* Y todavia mas en las paginas de formulario, que es donde se sentia
     apretado: los campos ocupan todo el ancho y necesitan mas respiro. */
  .layout{padding-left:8px;padding-right:8px}
  .layout .field, .layout .grid2, .layout .grid3,
  .layout .opts, .layout .esq, .layout .check,
  .layout .actions, .layout .fs-note, .layout legend,
  .layout .steps{
    padding-left:6px;padding-right:6px;
  }
  .layout .check{padding:18px 20px}
}

@media(max-width:400px){
  .wrap, .wrap-wide{padding:0 20px}
  .layout .field, .layout .grid2, .layout .grid3,
  .layout .opts, .layout .esq,
  .layout .actions, .layout .fs-note, .layout legend,
  .layout .steps{
    padding-left:4px;padding-right:4px;
  }
}


/* ============================================================================
   FICHA DE PROPIEDAD
   ========================================================================== */
.ficha{position:fixed;inset:0;z-index:300;display:none}
.ficha.abierta{display:block}
.ficha-fondo{position:absolute;inset:0;background:rgba(35,31,32,.62);backdrop-filter:blur(3px)}
.ficha-panel{
  position:absolute;top:0;right:0;bottom:0;
  width:min(620px,100%);
  background:var(--cream);
  box-shadow:-14px 0 44px rgba(0,0,0,.22);
  display:flex;flex-direction:column;
  animation:entraFicha .22s ease-out;
}
@keyframes entraFicha{from{transform:translateX(28px);opacity:.4}to{transform:none;opacity:1}}

.ficha-cerrar{
  position:absolute;top:14px;right:16px;z-index:3;
  width:38px;height:38px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(35,31,32,.6);color:#fff;font-size:24px;line-height:1;
}
.ficha-cerrar:hover{background:rgba(35,31,32,.85)}
.ficha-cuerpo{overflow-y:auto;height:100%}
.ficha-cargando{padding:70px 30px;text-align:center;color:var(--muted)}

/* --- Galeria de la ficha: tira deslizable con flechas y contador --------- */
.galeria{position:relative;background:var(--ink)}
.ficha-fotos{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;background:var(--ink);
  scrollbar-width:none;-ms-overflow-style:none}
.ficha-fotos img{
  width:100%;height:300px;object-fit:cover;flex:0 0 100%;
  scroll-snap-align:center;display:block;cursor:zoom-in;
}
.ficha-fotos::-webkit-scrollbar{display:none}

.gal-flecha{
  position:absolute;top:50%;transform:translateY(-50%);
  width:40px;height:40px;border:0;border-radius:50%;
  background:rgba(255,255,255,.92);color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.28);
  transition:background .15s,transform .15s;z-index:2;
}
.gal-flecha:hover{background:#fff;transform:translateY(-50%) scale(1.07)}
.gal-flecha.izq{left:12px}
.gal-flecha.der{right:12px}

.gal-contador{
  position:absolute;right:12px;bottom:12px;z-index:2;
  background:rgba(35,31,32,.72);color:#fff;
  padding:4px 11px;border-radius:100px;font-size:12.5px;letter-spacing:.02em;
}
.gal-ampliar{
  position:absolute;left:12px;bottom:12px;z-index:2;pointer-events:none;
  background:rgba(35,31,32,.72);color:#fff;
  padding:4px 11px;border-radius:100px;font-size:12.5px;
}

/* --- Visor a pantalla completa ------------------------------------------ */
.visor{
  position:fixed;inset:0;z-index:1200;display:none;
  align-items:center;justify-content:center;
  background:rgba(15,13,14,.95);padding:34px;
}
.visor.abierto{display:flex}
.visor img{
  max-width:100%;max-height:100%;object-fit:contain;
  border-radius:6px;box-shadow:0 10px 50px rgba(0,0,0,.5);
}
.visor-flecha{
  position:absolute;top:50%;transform:translateY(-50%);
  width:52px;height:52px;border:0;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:background .15s;
}
.visor-flecha:hover{background:rgba(255,255,255,.3)}
.visor-flecha.izq{left:18px}
.visor-flecha.der{right:18px}
.visor-cerrar{
  position:absolute;top:16px;right:20px;
  width:44px;height:44px;border:0;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:28px;line-height:1;
  cursor:pointer;transition:background .15s;
}
.visor-cerrar:hover{background:rgba(255,255,255,.3)}
.visor-contador{
  position:absolute;top:24px;left:50%;transform:translateX(-50%);
  color:rgba(255,255,255,.85);font-size:14px;letter-spacing:.03em;
}

.ficha-texto{padding:26px 30px 44px}
.ficha-texto h2{font-family:var(--display);font-size:26px;font-weight:400;margin:10px 0 4px;max-width:none}
.ficha-zona{color:var(--muted);font-size:14px;margin-bottom:14px}
.ficha-precio{font-family:var(--display);font-size:30px;font-weight:500;color:var(--blue);margin-bottom:20px}
.ficha-precio small{font-family:var(--sans);font-size:13px;color:var(--muted);font-weight:400}
.ficha-datos{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}
.ficha-datos span{background:var(--cream-2);padding:7px 14px;border-radius:100px;font-size:13.5px;color:var(--ink-soft)}
.ficha-texto h4{
  font-family:var(--display);font-size:16px;font-weight:500;
  margin:24px 0 9px;padding-bottom:6px;border-bottom:1px solid var(--line);
}
.ficha-desc{white-space:pre-line;font-size:15px;color:var(--ink-soft);font-weight:300}
.ficha-am{display:flex;gap:7px;flex-wrap:wrap}
.ficha-am span{
  font-size:13px;color:var(--ink-soft);background:#fff;
  border:1px solid var(--line);padding:5px 12px;border-radius:100px;
}
.ficha-acciones{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:30px}
.ficha-link{font-size:13.5px;color:var(--blue);text-decoration:none}
.ficha-link:hover{text-decoration:underline}
.ficha-clave{font-size:12px;color:var(--muted);margin-top:18px}

@media(max-width:760px){
  .ficha-panel{width:100%;top:auto;height:92vh;border-radius:14px 14px 0 0;animation:subeFicha .24s ease-out}
  @keyframes subeFicha{from{transform:translateY(40px);opacity:.5}to{transform:none;opacity:1}}
  .ficha-fotos img{height:240px}
  .gal-flecha{width:34px;height:34px}
  .gal-flecha.izq{left:8px}
  .gal-flecha.der{right:8px}
  .gal-ampliar{display:none}          /* en telefono el gesto ya es natural */
  .visor{padding:12px}
  .visor-flecha{width:42px;height:42px}
  .visor-flecha.izq{left:6px}
  .visor-flecha.der{right:6px}
  .ficha-texto{padding:22px 22px 60px}
  .ficha-acciones .btn-wa{width:100%;justify-content:center}
}
