/* Inmuebles Gfima — mismos colores y forma que las tarjetas de la web actual (azul marino, tarjeta blanca redondeada,
   barra de precio). La tipografía la pone el tema (Astra): aquí no se carga ninguna fuente.
   v0.2 (27/10): letra más grande, vista en lista (como idealista), carrusel en las tarjetas, favoritos, mosaico y visor
   en la ficha, barra «Viviendas en … · 3 de 444 · Siguiente», descripción con «Ver más», barra fija en el móvil. */
.gfi {
  --gfi-azul: #123a5f;
  --gfi-azul-2: #1d4f7d;
  --gfi-rojo: #d6312b;
  --gfi-verde: #1a8f4c;
  --gfi-texto: #1f2a37;
  --gfi-suave: #556274;
  --gfi-borde: #dfe4ea;
  --gfi-fondo: #f4f6f9;
  --gfi-blanco: #fff;
  color: var(--gfi-texto);
  font-size: 18px;
  line-height: 1.55;
  box-sizing: border-box;
}
.gfi *, .gfi *::before, .gfi *::after { box-sizing: border-box; }
.gfi-pagina { max-width: 1240px; margin: 0 auto; padding: 24px 16px 56px; }
.gfi-titulo-pagina { text-align: center; color: var(--gfi-azul); margin: 8px 0 24px; text-wrap: balance; }
.gfi-ico { width: 1.1em; height: 1.1em; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; vertical-align: -0.18em; margin-right: .3em; flex-shrink: 0; }
.gfi [hidden] { display: none !important; }

/* Botones */
.gfi-boton { display: inline-flex; align-items: center; justify-content: center; gap: 6px; background: var(--gfi-azul); color: #fff !important;
  border: 0; border-radius: 999px; padding: 11px 24px; font-weight: 600; cursor: pointer; text-decoration: none !important; font-size: 16px; line-height: 1.2; }
.gfi-boton:hover { background: var(--gfi-azul-2); }
.gfi a:focus-visible, .gfi button:focus-visible, .gfi select:focus-visible, .gfi input:focus-visible { outline: 3px solid #f2b705; outline-offset: 2px; }
.gfi-boton-sec { display: inline-flex; align-items: center; justify-content: center; gap: 4px; background: #fff; color: var(--gfi-azul) !important; border: 1px solid var(--gfi-borde);
  border-radius: 999px; padding: 9px 16px; font-size: 15px; cursor: pointer; text-decoration: none !important; }
.gfi-boton-sec:hover { border-color: var(--gfi-azul); }

/* Buscador */
.gfi-buscador { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; background: var(--gfi-fondo); border-radius: 14px; padding: 18px; margin-bottom: 18px; }
.gfi-campo { display: flex; flex-direction: column; gap: 4px; flex: 1 1 170px; min-width: 0; }
.gfi-campo-corto { flex: 1 1 120px; }
.gfi-campo-boton { flex: 0 0 auto; }
.gfi-campo label, .gfi-extras legend { font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--gfi-suave); font-weight: 600; }
.gfi-buscador select, .gfi-buscador input { width: 100%; height: 44px; border: 1px solid var(--gfi-borde); border-radius: 8px; padding: 0 10px; background: #fff; font-size: 16px; color: var(--gfi-texto); }
.gfi-buscador select:disabled { background: #eef1f5; color: var(--gfi-suave); }
.gfi-mas { flex-basis: 100%; }
.gfi-mas summary { cursor: pointer; color: var(--gfi-azul); font-weight: 600; font-size: 15px; }
.gfi-mas-dentro { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 10px; align-items: flex-end; }
/* Más filtros «como Fotocasa» (28/10): botones Todo / 1+ / 2+ … y «Número exacto»; superficie mín./máx. */
/* 28/10 (Jesús: «más pequeño queda mejor»): botones de 34 px con borde gris, letra 14 px, los tres bloques en una línea. */
.gfi-segmento, .gfi-superficie { border: 0; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; align-self: flex-start; }
.gfi-segmento { flex: 1 1 200px; max-width: 290px; }
.gfi-superficie { flex: 1 1 200px; max-width: 290px; }
.gfi-segmento legend, .gfi-superficie legend { font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--gfi-suave); font-weight: 600; margin-bottom: 2px; }
.gfi-segmento-botones { display: flex; border: 1px solid var(--gfi-borde); border-radius: 8px; overflow: hidden; background: #fff; }
.gfi-segmento-botones label { flex: 1 1 0; position: relative; cursor: pointer; }
.gfi-segmento-botones label + label { border-left: 1px solid var(--gfi-borde); }
.gfi-segmento-botones input { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; }
.gfi-segmento-botones span { display: block; height: 34px; line-height: 34px; text-align: center; color: var(--gfi-texto); font-weight: 600; font-size: 14px; }
.gfi-segmento-botones small { font-size: inherit; }
.gfi-segmento-botones label:hover span { background: #f3f5f9; }
.gfi-segmento-botones input:checked + span { background: var(--gfi-azul); color: #fff; }
.gfi-segmento-botones input:focus-visible + span { outline: 2px solid #f2b705; outline-offset: -2px; }
.gfi-segmento-exacto { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--gfi-suave); }
.gfi-segmento-exacto input { width: 15px; height: 15px; margin: 0; }
.gfi-superficie-campos { display: flex; gap: 8px; }
.gfi-buscador .gfi-superficie-campos select { height: 36px; font-size: 14px; padding: 0 6px; }
.gfi-tarjeta-acciones .gfi-tarjeta-wa .gfi-ico, .gfi-tarjeta-acciones .gfi-tarjeta-wa svg { color: #25d366; }
.gfi-extras { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px 16px; flex: 1 1 100%; }
.gfi-extras legend { margin-bottom: 4px; }
.gfi-extras label { display: inline-flex; align-items: center; gap: 6px; font-size: 16px; }
.gfi-extras input { width: 18px; height: 18px; }

.gfi-barra-resultados { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin: 6px 0 18px; }
.gfi-total { font-weight: 700; font-style: italic; font-size: 18px; }
.gfi-barra-derecha { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.gfi-orden { display: flex; align-items: center; gap: 8px; font-size: 15px; color: var(--gfi-suave); }
.gfi-orden select { height: 40px; border: 1px solid var(--gfi-borde); border-radius: 8px; padding: 0 8px; background: #fff; font-size: 15px; }
.gfi-ver-fav { display: inline-flex; align-items: center; gap: 6px; color: var(--gfi-azul); font-weight: 600; text-decoration: none; font-size: 15px; }
.gfi-ver-fav svg { width: 20px; height: 20px; fill: none; stroke: var(--gfi-rojo); stroke-width: 2; }
.gfi-ver-fav.activo svg { fill: var(--gfi-rojo); }
.gfi-vistas { display: inline-flex; border: 1px solid var(--gfi-borde); border-radius: 8px; overflow: hidden; }
.gfi-vistas button { border: 0; background: #fff; padding: 7px 10px; cursor: pointer; color: var(--gfi-suave); display: inline-flex; }
.gfi-vistas button .gfi-ico { margin: 0; width: 20px; height: 20px; }
.gfi-vistas button[aria-pressed="true"] { background: var(--gfi-azul); color: #fff; }

/* Tarjeta (cuadrícula) */
.gfi-rejilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 22px; }
.gfi-tarjeta { background: #fff; border-radius: 14px; overflow: hidden; box-shadow: 0 2px 10px rgba(18, 58, 95, .10); display: flex; flex-direction: column; transition: box-shadow .15s; }
.gfi-tarjeta:hover { box-shadow: 0 8px 22px rgba(18, 58, 95, .18); }
.gfi-tarjeta-foto { position: relative; aspect-ratio: 4 / 3; background: var(--gfi-fondo); overflow: hidden; touch-action: pan-y; }
/* (29/10) Con «.gfi» delante a propósito: en las páginas de Elementor su «.elementor img { height:auto; border-radius:0 }»
   se carga después y, con la misma prioridad, ganaba: las fotos 16:9 no rellenaban la caja 4:3 y dejaban una franja blanca. */
.gfi .gfi-tarjeta-foto a, .gfi .gfi-tarjeta-foto img { display: block; width: 100%; height: 100%; max-width: none; }
.gfi .gfi-tarjeta-foto img { object-fit: cover; }
.gfi-ref { position: absolute; left: 10px; bottom: 10px; background: rgba(15, 30, 48, .82); color: #fff; font-size: 13px; font-weight: 600; padding: 3px 8px; border-radius: 4px; pointer-events: none; }
.gfi-cinta { position: absolute; left: 0; top: 14px; background: var(--gfi-rojo); color: #fff; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 4px 12px 4px 10px; border-radius: 0 4px 4px 0; pointer-events: none; z-index: 2; }
.gfi-car-ant, .gfi-car-sig { position: absolute; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .9); color: var(--gfi-azul); font-size: 24px; line-height: 1; cursor: pointer; opacity: 0; transition: opacity .15s; z-index: 2; }
.gfi-car-ant { left: 8px; } .gfi-car-sig { right: 8px; }
.gfi-tarjeta-foto:hover .gfi-car-ant, .gfi-tarjeta-foto:hover .gfi-car-sig, .gfi-car-ant:focus-visible, .gfi-car-sig:focus-visible { opacity: 1; }
@media (hover: none) { .gfi-car-ant, .gfi-car-sig { display: none; } }   /* móvil: se desliza con el dedo, sin flechas */
.gfi-car-n { position: absolute; right: 10px; bottom: 10px; background: rgba(15, 30, 48, .78); color: #fff; font-size: 13px; font-weight: 600; padding: 2px 8px; border-radius: 4px; font-variant-numeric: tabular-nums; pointer-events: none; }
.gfi-fav { position: absolute; top: 10px; right: 10px; width: 38px; height: 38px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .92); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; z-index: 2; box-shadow: 0 1px 4px rgba(0,0,0,.15); }
.gfi-fav svg { width: 22px; height: 22px; fill: none; stroke: var(--gfi-azul); stroke-width: 2; }
.gfi-fav[aria-pressed="true"] svg { fill: var(--gfi-rojo); stroke: var(--gfi-rojo); }
.gfi-tarjeta-cuerpo { padding: 14px 16px 12px; text-align: center; flex: 1; display: flex; flex-direction: column; }
.gfi-tarjeta-tipo { font-size: 22px; margin: 0 0 2px; line-height: 1.25; }
.gfi-tarjeta-tipo a { color: var(--gfi-texto); text-decoration: none; }
.gfi-tarjeta-lugar { margin: 0 0 10px; color: var(--gfi-texto); font-size: 18px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gfi-tarjeta-lugar span { color: var(--gfi-suave); }
.gfi-tarjeta-datos { list-style: none; margin: auto 0 0; padding: 0; display: flex; justify-content: center; flex-wrap: wrap; gap: 4px 16px; font-size: 17px; color: var(--gfi-suave); font-variant-numeric: tabular-nums; }
.gfi-tarjeta-datos li { display: inline-flex; align-items: center; }
/* Cuadrícula: 4 casillas fijas (habs. · baños · construidos · parcela) encima del precio */
.gfi-tarjeta-celdas { list-style: none; margin: auto -16px 0; padding: 8px 0 0; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; border-top: 1px solid var(--gfi-borde, #e5e7eb); font-size: 14.5px; color: var(--gfi-texto); font-variant-numeric: tabular-nums; }
.gfi-tarjeta-celdas li { display: flex; align-items: center; justify-content: center; gap: 5px; padding: 5px 3px; border-left: 1px solid var(--gfi-borde, #e5e7eb); white-space: nowrap; }
.gfi-tarjeta-celdas li:first-child { border-left: 0; }
.gfi-tarjeta-celdas svg { width: 19px; height: 19px; flex: none; color: var(--gfi-suave); }
.gfi-ver-av svg { stroke: var(--gfi-azul); }
.gfi-ver-av.activo svg { fill: var(--gfi-azul); }
.gfi-tarjeta-celdas + .gfi-tarjeta-datos { display: none; }
.gfi-tarjeta-precio { display: block; background: var(--gfi-azul); color: #fff !important; text-align: center; font-weight: 700; font-size: 22px; padding: 12px; text-decoration: none !important; font-variant-numeric: tabular-nums; }
.gfi-solo-lista { display: none !important; }

/* Vista lista (como idealista): foto a la izquierda, datos y descripción a la derecha */
.gfi-vista-lista .gfi-resultados { grid-template-columns: 1fr; gap: 18px; }
.gfi-vista-lista .gfi-resultados .gfi-solo-rejilla { display: none !important; }
.gfi-vista-lista .gfi-resultados .gfi-solo-lista { display: revert !important; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta { flex-direction: row; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-foto { flex: 0 0 340px; aspect-ratio: auto; min-height: 250px; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-cuerpo { text-align: left; padding: 16px 20px; gap: 6px; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-tipo { font-size: 17px; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-tipo a { color: var(--gfi-azul); }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-tipo a:hover { text-decoration: underline; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-precio-lista { display: flex !important; }
.gfi-tarjeta-precio-lista { margin: 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.gfi-tarjeta-precio-lista strong { font-size: 22px; font-variant-numeric: tabular-nums; }
.gfi-m2 { color: var(--gfi-suave); font-size: 14px; font-variant-numeric: tabular-nums; }
.gfi-tarjeta-precio-lista s { color: var(--gfi-rojo); font-size: 14px; }
.gfi-bajada { color: var(--gfi-rojo); font-weight: 700; font-size: 14px; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-datos { margin: 0; justify-content: flex-start; color: var(--gfi-texto); font-size: 14.5px; }
.gfi-tarjeta-desc { margin: 4px 0 0; color: var(--gfi-suave); font-size: 14.5px; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-desc { display: -webkit-box !important; }
.gfi-tarjeta-acciones { margin-top: auto; padding-top: 8px; display: flex; gap: 22px; flex-wrap: wrap; }
.gfi-vista-lista .gfi-resultados .gfi-tarjeta-acciones { display: flex !important; }
.gfi-tarjeta-acciones a, .gfi-tarjeta-acciones button { display: inline-flex; align-items: center; gap: 4px; background: none; border: 0; padding: 4px 0; color: var(--gfi-azul) !important; font-weight: 600; font-size: 14px; cursor: pointer; text-decoration: none; }
.gfi-tarjeta-acciones a:hover, .gfi-tarjeta-acciones button:hover { text-decoration: underline; }

/* Paginación */
.gfi-paginacion { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; margin: 28px 0 0; }
.gfi-paginacion a, .gfi-paginacion span { min-width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; padding: 0 10px; border-radius: 8px; border: 1px solid var(--gfi-borde); text-decoration: none; color: var(--gfi-azul); background: #fff; font-size: 16px; }
.gfi-paginacion .gfi-pag-actual { background: var(--gfi-azul); color: #fff; border-color: var(--gfi-azul); font-weight: 700; }
.gfi-paginacion .gfi-pag-hueco { border: 0; background: none; }
.gfi-vacio { text-align: center; padding: 40px 16px; }

/* Ficha */
.gfi-ficha { display: flex; flex-direction: column; gap: 20px; }
.gfi-nav-ficha { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; padding: 10px 4px; border-bottom: 1px solid var(--gfi-borde); font-size: 18px; }
.gfi-nav-ficha a { color: var(--gfi-azul); font-weight: 600; text-decoration: none; }
.gfi-nav-ficha a:hover span { text-decoration: underline; }
.gfi-nav-pos { color: var(--gfi-suave); text-align: center; font-variant-numeric: tabular-nums; }
.gfi-nav-pasos { justify-self: end; display: flex; gap: 16px; }
.gfi-galeria { position: relative; }
.gfi-mosaico { display: grid; gap: 6px; height: 470px; border-radius: 14px; overflow: hidden; grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 1fr 1fr; }
.gfi-mosaico-1 { grid-template-columns: 1fr; grid-template-rows: 1fr; }
.gfi-mosaico-2 { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr; }
.gfi-mosaico-3 { grid-template-columns: 2fr 1fr; }
.gfi-mosaico-4 { grid-template-columns: 2fr 1fr 1fr; }
.gfi-mosaico-4 .gfi-mosaico-foto:nth-child(4) { grid-column: 2 / 4; }
.gfi-mosaico-foto { position: relative; padding: 0; border: 0; background: #0f1e30; cursor: zoom-in; overflow: hidden; min-height: 0; }
.gfi-mosaico-foto:first-child { grid-row: 1 / 3; }
.gfi-mosaico-2 .gfi-mosaico-foto:first-child, .gfi-mosaico-1 .gfi-mosaico-foto:first-child { grid-row: auto; }
.gfi .gfi-mosaico-foto img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .25s; }
.gfi-mosaico-foto:hover img { transform: scale(1.03); }
.gfi-mas-fotos { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(15, 30, 48, .55); color: #fff; font-size: 24px; font-weight: 700; }
.gfi-galeria-chips { position: absolute; left: 14px; bottom: 14px; display: flex; gap: 8px; z-index: 2; }
.gfi-galeria-chips button, .gfi-galeria-chips a { display: inline-flex; align-items: center; gap: 2px; background: rgba(255, 255, 255, .95); color: var(--gfi-azul) !important; border: 0; border-radius: 8px; padding: 7px 12px; font-size: 15px; font-weight: 600; cursor: pointer; text-decoration: none; box-shadow: 0 1px 4px rgba(0,0,0,.2); }
.gfi-movil-n { display: none; }
.gfi-cinta-grande { font-size: 16px; top: 20px; padding: 7px 18px 7px 14px; }

.gfi-ficha-cabecera { display: grid; grid-template-columns: 1fr auto; gap: 6px 20px; align-items: center; }
.gfi-ficha-precio { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.gfi-ficha-precio strong { font-size: 34px; color: var(--gfi-azul); font-variant-numeric: tabular-nums; line-height: 1.1; }
.gfi-ficha-precio s { color: var(--gfi-suave); font-size: 17px; }
.gfi-ficha-acciones { display: flex; gap: 6px; justify-self: end; }
.gfi-accion, .gfi-fav.gfi-fav-texto { position: static; width: auto; height: auto; box-shadow: none; display: inline-flex; align-items: center; gap: 6px; background: none; border: 1px solid var(--gfi-borde); border-radius: 999px; padding: 8px 14px; color: var(--gfi-azul); font-size: 15px; font-weight: 600; cursor: pointer; }
.gfi-accion:hover, .gfi-fav.gfi-fav-texto:hover { border-color: var(--gfi-azul); }
.gfi-fav.gfi-fav-texto svg { width: 20px; height: 20px; }
.gfi-ficha-titulo { grid-column: 1 / -1; }
.gfi-ficha-titulo h1 { font-size: clamp(22px, 2.5vw, 28px); margin: 0 0 6px; color: var(--gfi-texto); text-wrap: balance; line-height: 1.25; }   /* (29/10) Jesús: más pequeño; antes 26–35 px */
.gfi-ficha-lugar { margin: 0; color: var(--gfi-suave); font-size: 19px; }
.gfi-ref-texto { margin-left: 8px; padding-left: 10px; border-left: 1px solid var(--gfi-borde); }
.gfi-ficha-clave { list-style: none; margin: 0; padding: 16px; display: flex; flex-wrap: wrap; gap: 12px 30px; background: var(--gfi-fondo); border-radius: 12px; }
.gfi-ficha-clave li { display: flex; align-items: center; gap: 6px; color: var(--gfi-azul); }
.gfi-ficha-clave strong { font-size: 22px; color: var(--gfi-texto); font-variant-numeric: tabular-nums; }
.gfi-ficha-clave span { color: var(--gfi-suave); font-size: 18px; }

.gfi-ficha-columnas { display: grid; grid-template-columns: minmax(0, 1fr) 350px; gap: 28px; align-items: start; }
.gfi-ficha-principal { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.gfi-ficha-lateral { position: sticky; top: 110px; display: flex; flex-direction: column; gap: 14px; }
.gfi-bloque { background: #fff; border: 1px solid var(--gfi-borde); border-radius: 14px; padding: 20px 22px; }
.gfi-bloque h2 { font-size: 25px; margin: 0 0 12px; color: var(--gfi-azul); }
.gfi-bloque h3 { font-size: 18px; margin: 20px 0 10px; }
.gfi-bloque p { margin: 0 0 14px; line-height: 1.65; }
.gfi-descripcion { font-size: 19px; text-align: left; }
.gfi-descripcion p:last-child { margin-bottom: 0; }
.gfi-descripcion.plegada { max-height: 12.5em; overflow: hidden; -webkit-mask-image: linear-gradient(#000 65%, transparent); mask-image: linear-gradient(#000 65%, transparent); }
.gfi-ver-mas { margin-top: 10px; background: none; border: 0; padding: 0; color: var(--gfi-azul); font-weight: 700; font-size: 16px; cursor: pointer; text-decoration: underline; }
.gfi-tabla-datos { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 0 30px; margin: 0; }
.gfi-tabla-datos div { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--gfi-borde); font-size: 18px; }
.gfi-tabla-datos dt { color: var(--gfi-suave); }
.gfi-tabla-datos dd { margin: 0; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.gfi-extras-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.gfi-extras-lista li { background: var(--gfi-fondo); border: 1px solid var(--gfi-borde); border-radius: 999px; padding: 6px 15px; font-size: 17px; }
.gfi-nota { font-size: 14px; color: var(--gfi-suave); }
.gfi-mapa { height: 330px; border-radius: 10px; overflow: hidden; background: var(--gfi-fondo); }
.gfi-video { position: relative; aspect-ratio: 16 / 9; border-radius: 10px; overflow: hidden; background: #000; }
.gfi-video iframe, .gfi-video video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Certificado energético: las dos escalas siempre lado a lado (también en el móvil) */
.gfi-energia { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.gfi-energia h3 { margin: 0 0 8px; font-size: 16px; }
.gfi-escala { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.gfi-escala li { display: flex; align-items: center; gap: 8px; min-width: 0; }
.gfi-escala li span { display: inline-block; color: #fff; font-weight: 700; font-size: 13px; padding: 2px 8px; border-radius: 0 10px 10px 0; opacity: .4; flex-shrink: 0; }
.gfi-escala li.activa span { opacity: 1; font-size: 15px; outline: 2px solid var(--gfi-texto); outline-offset: 1px; }
.gfi-escala em { font-style: normal; font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; }
.gfi-e-A span { background: #0a8a3a; width: 34%; } .gfi-e-B span { background: #2ea84a; width: 42%; } .gfi-e-C span { background: #9bc53d; width: 50%; }
.gfi-e-D span { background: #f2d200; width: 58%; color: #333 !important; } .gfi-e-E span { background: #f2a400; width: 66%; }
.gfi-e-F span { background: #ea6a1e; width: 74%; } .gfi-e-G span { background: #d6312b; width: 82%; }
.gfi-escala li.activa { flex-wrap: wrap; }

/* Lateral: comercial y formulario */
.gfi-agente { display: flex; gap: 14px; align-items: center; background: var(--gfi-azul); color: #fff; border-radius: 14px; padding: 16px; }
.gfi .gfi-agente img { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; object-position: top; background: #fff; flex-shrink: 0; }
.gfi-agente div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gfi-agente strong { font-size: 19px; }
.gfi-agente a { color: #fff !important; font-size: 16px; overflow-wrap: anywhere; }
.gfi-formulario { background: #fff; border: 1px solid var(--gfi-borde); border-radius: 14px; padding: 16px; display: flex; flex-direction: column; gap: 8px; scroll-margin-top: 120px; }
.gfi-formulario h2 { margin: 0; font-size: 21px; color: var(--gfi-azul); }
.gfi-formulario label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; color: var(--gfi-suave); font-weight: 600; }
.gfi-formulario input, .gfi-formulario textarea { border: 1px solid var(--gfi-borde); border-radius: 8px; padding: 7px 10px; font-size: 15px; font-weight: 400; color: var(--gfi-texto); width: 100%; font-family: inherit; }
.gfi-formulario .gfi-check { flex-direction: row; align-items: flex-start; gap: 8px; font-weight: 400; font-size: 15px; }
.gfi-formulario .gfi-check input { width: 18px; height: 18px; margin-top: 2px; flex-shrink: 0; }
.gfi-trampa { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.gfi-aviso { margin: 0; padding: 10px 12px; border-radius: 8px; font-size: 15px; }
.gfi-aviso-ok { background: #e7f6ec; color: #145c32; }
.gfi-aviso-error { background: #fdecea; color: #8a1f17; }
.gfi-similares h2 { text-align: center; color: var(--gfi-azul); margin: 10px 0 18px; }
.gfi-barra-movil { display: none; }

/* Visor de fotos a pantalla completa (lo crea el JS) */
.gfi-visor { position: fixed; inset: 0; z-index: 100000; background: rgba(8, 14, 24, .97); display: flex; align-items: center; justify-content: center; touch-action: pan-y; }
.gfi-visor img { max-width: 100%; max-height: 100%; object-fit: contain; user-select: none; }
.gfi-visor button { position: absolute; border: 0; background: rgba(255, 255, 255, .12); color: #fff; cursor: pointer; border-radius: 50%; width: 52px; height: 52px; font-size: 30px; line-height: 1; }
.gfi-visor button:hover { background: rgba(255, 255, 255, .25); }
.gfi-visor .gfi-visor-cerrar { top: 14px; right: 14px; font-size: 26px; }
.gfi-visor .gfi-visor-ant { left: 14px; top: 50%; transform: translateY(-50%); }
.gfi-visor .gfi-visor-sig { right: 14px; top: 50%; transform: translateY(-50%); }
.gfi-visor-n { position: absolute; top: 22px; left: 50%; transform: translateX(-50%); color: #fff; font-size: 16px; font-variant-numeric: tabular-nums; }
@media (hover: none) { .gfi-visor .gfi-visor-ant, .gfi-visor .gfi-visor-sig { display: none; } }

@media (max-width: 900px) {
  .gfi-ficha-columnas { grid-template-columns: 1fr; }
  .gfi-ficha-lateral { position: static; }
  .gfi-vista-lista .gfi-resultados .gfi-tarjeta-foto { flex-basis: 260px; }
}
@media (max-width: 700px) {
  /* (28/10, Jesús: «mucho margen a izquierda y derecha en el móvil») El tema ya deja ~28 px por lado: el plugin no añade más, y la foto y la barra de navegación van de borde a borde. */
  .gfi-pagina { padding: 12px 0 96px; }
  .gfi-campo, .gfi-campo-corto { flex: 1 1 calc(50% - 6px); }
  .gfi-campo-boton { flex: 1 1 100%; }
  .gfi-campo-boton .gfi-boton { width: 100%; }
  .gfi-barra-resultados { align-items: flex-start; }
  /* Lista en el móvil: foto arriba a todo el ancho y los datos debajo */
  .gfi-vista-lista .gfi-resultados .gfi-tarjeta { flex-direction: column; }
  .gfi-vista-lista .gfi-resultados .gfi-tarjeta-foto { flex-basis: auto; aspect-ratio: 4 / 3; min-height: 0; }
  /* Ficha en el móvil: una sola foto a todo el ancho que se desliza, con «1/25» (como idealista), sin flechas */
  .gfi-ficha { gap: 16px; }
  .gfi-nav-ficha { margin: 0 calc(50% - 50vw); padding: 8px 16px; font-size: 15px; grid-template-columns: minmax(0, 1fr) auto auto; }
  .gfi-nav-volver { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gfi-nav-pasos { gap: 6px; }
  .gfi-nav-pasos a { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 36px; border: 1px solid var(--gfi-borde); border-radius: 8px; font-size: 20px; }
  .gfi-nav-pasos a span { display: none; }
  .gfi-ficha-acciones .gfi-accion[onclick] { display: none; }   /* Imprimir: en el móvil no hace falta */
  /* (29/10, Jesús) La foto con un margen pequeño a los lados, como en los portales, y esquinas redondeadas. */
  .gfi-galeria { margin: 0 calc(50% - 50vw + 12px); }
  .gfi-mosaico { display: block; position: relative; height: auto; aspect-ratio: 4 / 3; border-radius: 10px; overflow: hidden; }
  .gfi-mosaico-foto { display: none; width: 100%; height: 100%; cursor: pointer; }
  .gfi-mosaico-foto:first-child { display: block; }
  .gfi-mosaico-foto:hover img { transform: none; }
  .gfi-movil-n { display: block; position: absolute; right: 12px; bottom: 12px; background: rgba(15, 30, 48, .8); color: #fff; font-size: 14px; font-weight: 600; padding: 3px 9px; border-radius: 6px; z-index: 2; font-variant-numeric: tabular-nums; }
  .gfi-galeria-chips { position: static; padding: 10px 16px 0; }
  .gfi-galeria-chips button, .gfi-galeria-chips a { box-shadow: none; border: 1px solid var(--gfi-borde); }
  .gfi-ficha-cabecera { grid-template-columns: 1fr; }
  .gfi-ficha-acciones { justify-self: start; order: 3; }
  .gfi-ficha-precio strong { font-size: 30px; }
  .gfi-bloque { padding: 14px 12px; }
  .gfi-ficha-clave { padding: 12px; gap: 8px 18px; }
  .gfi-barra-movil { display: flex; gap: 10px; position: fixed; left: 0; right: 0; bottom: 0; z-index: 9990; background: #fff; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); box-shadow: 0 -2px 10px rgba(0, 0, 0, .12); }
  .gfi-barra-movil a { flex: 1; padding: 12px; font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) { .gfi-tarjeta, .gfi-mosaico-foto img { transition: none; } }
@media print {
  .gfi-buscador, .gfi-formulario, .gfi-ficha-acciones, .gfi-galeria-chips, .gfi-similares, .gfi-mapa, .gfi-video, .gfi-nav-ficha, .gfi-barra-movil, .gfi-ver-mas { display: none !important; }
  .gfi-descripcion.plegada { max-height: none; -webkit-mask-image: none; mask-image: none; }
  .gfi-ficha-columnas { grid-template-columns: 1fr; }
  .gfi-bloque { border: 0; padding: 0; }
  .gfi-mosaico { height: 320px; }
}

/* ── El tema (Elementor) da a TODOS los botones relleno 15×30 px, fondo y sombra: con eso el corazón se quedaba con 0 px
   de ancho (un óvalo blanco) y las flechas igual. Aquí se anula para los botones del plugin, con más especificidad que
   la del tema (.elementor-kit-N button). ── */
.gfi .gfi-tarjeta button, .gfi .gfi-ficha button, .gfi .gfi-barra-resultados button, .gfi .gfi-ver-mas, .gfi-visor button {
  min-height: 0; line-height: 1.2; text-transform: none; letter-spacing: normal; font-family: inherit; box-shadow: none; }
/* Corazón: sin fondo, blanco con sombra suave; rojo al guardarlo */
.gfi .gfi-fav, .gfi .gfi-fav:hover, .gfi .gfi-fav:focus { padding: 0; width: 40px; height: 40px; background: none; border: 0; border-radius: 50%; box-shadow: none; }
.gfi .gfi-fav svg { width: 30px; height: 30px; fill: rgba(255, 255, 255, .35); stroke: var(--gfi-rojo); stroke-width: 2.2; filter: drop-shadow(0 0 2px rgba(255, 255, 255, .9)) drop-shadow(0 1px 2px rgba(0, 0, 0, .35)); transition: transform .12s; }
.gfi .gfi-fav:hover svg { transform: scale(1.1); }
.gfi .gfi-fav[aria-pressed="true"] svg { fill: var(--gfi-rojo); stroke: var(--gfi-rojo); }
/* Flechas del carrusel: pequeñas, círculo oscuro semitransparente, solo al pasar el ratón */
.gfi .gfi-car-ant, .gfi .gfi-car-sig, .gfi .gfi-car-ant:hover, .gfi .gfi-car-sig:hover { padding: 0; width: 34px; height: 34px; border: 0; border-radius: 50%;
  background: rgba(15, 30, 48, .55); color: #fff; font-size: 22px; line-height: 34px; text-align: center; box-shadow: none; }
.gfi .gfi-car-ant:hover, .gfi .gfi-car-sig:hover { background: rgba(15, 30, 48, .8); }
/* Botones de texto de la ficha y la barra */
.gfi .gfi-accion, .gfi .gfi-fav.gfi-fav-texto, .gfi .gfi-accion:hover, .gfi .gfi-fav.gfi-fav-texto:hover { width: auto; height: auto; padding: 8px 16px; background: #fff; color: var(--gfi-azul); border: 1px solid var(--gfi-borde); border-radius: 999px; font-size: 16px; font-weight: 600; }
.gfi .gfi-fav.gfi-fav-texto svg { width: 20px; height: 20px; fill: none; stroke: var(--gfi-rojo); filter: none; }
.gfi .gfi-fav.gfi-fav-texto[aria-pressed="true"] svg { fill: var(--gfi-rojo); stroke: var(--gfi-rojo); }
.gfi .gfi-vistas button, .gfi .gfi-vistas button:hover { padding: 7px 10px; background: #fff; color: var(--gfi-suave); border: 0; border-radius: 0; }
.gfi .gfi-vistas button[aria-pressed="true"] { background: var(--gfi-azul); color: #fff; }
.gfi .gfi-mosaico-foto, .gfi .gfi-mosaico-foto:hover { padding: 0; border: 0; border-radius: 0; background: #0f1e30; }
.gfi .gfi-galeria-chips button, .gfi .gfi-galeria-chips button:hover { padding: 7px 12px; background: rgba(255, 255, 255, .95); color: var(--gfi-azul); border: 0; border-radius: 8px; font-size: 16px; }
.gfi .gfi-tarjeta-acciones button, .gfi .gfi-tarjeta-acciones button:hover { padding: 4px 0; background: none; border: 0; color: var(--gfi-azul); font-size: 14px; }
.gfi .gfi-ver-mas, .gfi .gfi-ver-mas:hover { padding: 0; background: none; border: 0; color: var(--gfi-azul); font-size: 17px; }
.gfi .gfi-formulario .gfi-boton, .gfi .gfi-buscador .gfi-boton { padding: 11px 24px; border-radius: 999px; background: var(--gfi-azul); color: #fff; border: 0; font-size: 17px; }
.gfi .gfi-formulario .gfi-boton:hover, .gfi .gfi-buscador .gfi-boton:hover { background: var(--gfi-azul-2); }
.gfi-visor button, .gfi-visor button:hover { padding: 0; border: 0; color: #fff; }
@media (max-width: 700px) { .gfi .gfi-fav-texto, .gfi .gfi-accion { font-size: 15px; padding: 7px 12px; } }

/* ── «Avísame si baja» (27/10, como pisos.com): campana junto al corazón en las tarjetas, botón en la ficha y una
   ventana con el formulario (en el móvil, a pantalla completa) ── */
.gfi .gfi-aviso-ico, .gfi .gfi-aviso-ico:hover, .gfi .gfi-aviso-ico:focus { position: absolute; top: 10px; right: 52px; z-index: 2; padding: 0; width: 40px; height: 40px; background: none; border: 0; border-radius: 50%; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-shadow: none; }
.gfi .gfi-aviso-ico svg { width: 27px; height: 27px; fill: rgba(255, 255, 255, .35); stroke: var(--gfi-azul); stroke-width: 2.2; filter: drop-shadow(0 0 2px rgba(255, 255, 255, .95)) drop-shadow(0 1px 2px rgba(0, 0, 0, .35)); transition: transform .12s; }
.gfi .gfi-aviso-ico:hover svg { transform: scale(1.1); }
.gfi .gfi-aviso-ico[aria-pressed="true"] svg, .gfi .gfi-accion[data-gfi-aviso][aria-pressed="true"] svg { fill: var(--gfi-azul); }
.gfi .gfi-accion[data-gfi-aviso] svg { width: 20px; height: 20px; fill: none; stroke: var(--gfi-azul); stroke-width: 2; }
.gfi .gfi-accion[data-gfi-aviso][aria-pressed="true"] { border-color: var(--gfi-azul); }
.gfi-dialogo { border: 0; border-radius: 16px; padding: 0; width: min(460px, calc(100vw - 32px)); max-height: calc(100vh - 32px); box-shadow: 0 20px 60px rgba(15, 30, 48, .35); color: var(--gfi-texto); background: #fff; }
.gfi-dialogo::backdrop { background: rgba(15, 30, 48, .55); }
.gfi .gfi-dialogo .gfi-formulario { border: 0; border-radius: 0; padding: 26px 24px 22px; gap: 13px; position: relative; }
.gfi .gfi-dialogo h2 { text-align: center; font-size: 22px; padding: 0 30px; }
.gfi .gfi-dialogo .gfi-dialogo-cerrar, .gfi .gfi-dialogo .gfi-dialogo-cerrar:hover { position: absolute; top: 10px; right: 12px; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 50%; background: none; color: var(--gfi-suave); font-size: 30px; line-height: 1; cursor: pointer; box-shadow: none; }
.gfi .gfi-dialogo .gfi-dialogo-cerrar:hover { background: var(--gfi-fondo); color: var(--gfi-texto); }
.gfi-opcional { font-weight: 400; color: var(--gfi-suave); }
.gfi-campo-euro { position: relative; display: block; }
.gfi-campo-euro span { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: var(--gfi-suave); font-size: 17px; }
.gfi .gfi-campo-euro input { padding-right: 32px; }
.gfi-aviso-actual { margin: -2px 0 0; font-size: 17px; }
.gfi-aviso-actual strong { color: var(--gfi-azul); font-variant-numeric: tabular-nums; }
.gfi .gfi-aviso-contacto { border: 0; margin: 0; padding: 0; min-width: 0; }
.gfi .gfi-aviso-contacto legend { padding: 0; margin-bottom: 6px; font-size: 14px; font-weight: 600; color: var(--gfi-suave); }
.gfi-aviso-contacto div { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.gfi .gfi-dialogo .gfi-check { font-size: 16px; color: var(--gfi-texto); }
.gfi .gfi-dialogo .gfi-nota { margin: 0; font-size: 13px; }
.gfi .gfi-dialogo .gfi-boton { width: 100%; }
.gfi .gfi-dialogo .gfi-aviso[hidden] { display: none; }
@media (max-width: 700px) {
  .gfi .gfi-aviso-ico { right: 50px; }
  .gfi-dialogo { width: 100vw; max-width: 100vw; height: 100%; max-height: 100%; border-radius: 0; }
  .gfi .gfi-dialogo .gfi-formulario { padding: 22px 18px calc(22px + env(safe-area-inset-bottom)); }
}
@media print { .gfi-aviso-ico, .gfi-dialogo { display: none !important; } }
.gfi-ficha-acciones { flex-wrap: wrap; }

/* ── 27/10 (Jesús): letra de los formularios más grande. Además, con menos de 16 px el iPhone amplía la página al tocar
   un campo: a 18 px no lo hace (sin quitar el zoom con los dedos, que la web debe seguir permitiendo). ── */
.gfi input:not([type="checkbox"]):not([type="radio"]), .gfi select, .gfi textarea { font-size: 18px !important; }
/* (28/10, Jesús) Formulario de la ficha más bajo: menos hueco, campos y letra algo menores. La ventana (diálogo) conserva su espacio. */
.gfi .gfi-formulario { gap: 8px; }
.gfi .gfi-dialogo .gfi-formulario { gap: 13px; }
.gfi .gfi-formulario h2 { font-size: 21px; }
.gfi .gfi-formulario label, .gfi .gfi-aviso-contacto legend { font-size: 14px; }
.gfi .gfi-formulario label { gap: 2px; }
.gfi .gfi-formulario .gfi-check, .gfi .gfi-dialogo .gfi-check { font-size: 15px; }
.gfi .gfi-formulario .gfi-check input { width: 21px; height: 21px; }
.gfi .gfi-formulario .gfi-nota, .gfi .gfi-dialogo .gfi-nota { font-size: 14px; }
.gfi .gfi-aviso { font-size: 16px; }
.gfi .gfi-aviso-actual { font-size: 18px; }
.gfi .gfi-formulario .gfi-boton { font-size: 16px; padding: 10px 24px; }
.gfi .gfi-campo label { font-size: 14px; }
/* Corazón y campana, más grandes */
.gfi .gfi-fav, .gfi .gfi-fav:hover, .gfi .gfi-fav:focus { width: 46px; height: 46px; top: 8px; right: 8px; }
.gfi .gfi-fav svg { width: 35px; height: 35px; }
.gfi .gfi-aviso-ico, .gfi .gfi-aviso-ico:hover, .gfi .gfi-aviso-ico:focus { width: 46px; height: 46px; top: 8px; right: 54px; }
.gfi .gfi-aviso-ico svg { width: 32px; height: 32px; }
.gfi .gfi-fav.gfi-fav-texto svg, .gfi .gfi-accion[data-gfi-aviso] svg { width: 24px; height: 24px; }

/* ── 28/10: botón WhatsApp (barra de abajo del móvil y tarjeta del comercial) y su ventana ── */
.gfi { --gfi-wa: #1fa855; }
.gfi .gfi-boton-wa, .gfi .gfi-boton-wa:hover { flex: 0 0 58px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 999px; background: var(--gfi-wa); color: #fff; cursor: pointer; box-shadow: none; min-height: 48px; }
.gfi .gfi-boton-wa svg, .gfi .gfi-agente-wa svg, .gfi .gfi-boton-wa-enviar svg, .gfi #gfi-wa-titulo svg { fill: none; stroke: currentColor; }
.gfi .gfi-boton-wa svg { width: 28px; height: 28px; stroke-width: 1.8; }
/* (28/10, Jesús) Discreto: enlace con icono, sin pastilla rellena; se subraya al pasar el ratón. */
.gfi .gfi-agente-wa, .gfi .gfi-agente-wa:hover { display: inline-flex; align-items: center; gap: 6px; margin-top: 4px; padding: 2px 0; border: 0; border-radius: 0; background: none; color: #fff; font-size: 15px; font-weight: 500; cursor: pointer; box-shadow: none; text-decoration: none; }
.gfi .gfi-agente-wa:hover { text-decoration: underline; }
.gfi .gfi-agente-wa svg { width: 18px; height: 18px; stroke-width: 2; color: #5ee38a; }
.gfi #gfi-wa-titulo { display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--gfi-wa); }
.gfi #gfi-wa-titulo svg { width: 28px; height: 28px; stroke-width: 2; }
.gfi .gfi-wa-intro { margin: 0; font-size: 17px; text-align: center; color: var(--gfi-texto); }
.gfi .gfi-dialogo .gfi-boton.gfi-boton-wa-enviar, .gfi .gfi-dialogo .gfi-boton.gfi-boton-wa-enviar:hover { background: var(--gfi-wa); gap: 8px; }
.gfi .gfi-boton-wa-enviar svg { width: 22px; height: 22px; stroke-width: 2; }
/* El botón de Lucía (widget GFIMA AI, no es del plugin) tapaba «Contactar» en la barra de abajo: en las fichas, en el móvil,
   se sube por encima de la barra. Solo su posición y solo en estas páginas; el widget no se toca. */
@media (max-width: 700px) {
  body:has(.gfi-barra-movil) #gfima-ai-widget.gfima-ai-widget--closed { bottom: calc(84px + env(safe-area-inset-bottom)) !important; }
}

/* ── 28/10: OFERTA, hoja de impresión y lo de Elementor bajo la ficha ── */
.gfi-cinta-oferta { background: var(--gfi-verde); }
.gfi-solo-impresion { display: none; }
.gfi-raiz { width: 100%; min-width: 0; }   /* (29/10) envuelve ficha + Elementor; el contenedor del tema es flex */
.gfi-bajo-ficha { max-width: 1240px; margin: 0 auto; padding: 0 16px 56px; }   /* (29/10) fuera de .gfi; mismo ancho que .gfi-pagina */
/* (29/10) Hueco entre «Propiedades en Venta/Alquiler» y el buscador: en esas páginas de Elementor hay un bloque de texto
   VACÍO (<p></p>) entre el título y el shortcode que ocupaba 49 px. Se oculta hasta que se borre en Elementor. */
.elementor-widget-text-editor:has(> .elementor-widget-container > p:only-child:empty) { display: none; }
.e-con:has(> .e-con-inner > .elementor-widget-text-editor:only-child > .elementor-widget-container > p:only-child:empty) { display: none; }
.gfi-impresion-fotos { display: none; }
/* Hoja impresa (28/10, Jesús: «mejorar bastante»): cabecera con logo, precio y título (antes `header` ocultaba también la
   cabecera de la ficha), mosaico con las 5 fotos cargadas y sin «+N fotos», 6 fotos más en rejilla, sin mapa ni botones,
   comercial en tarjeta clara. Las fotos perezosas las carga el JS en «beforeprint». */
@media print {
  @page { margin: 12mm 12mm 14mm; }
  body > header, header.elementor-location-header, footer, .elementor-location-header, .elementor-location-footer, #gfima-ai-widget, .gfi-bajo-ficha, .gfi-agente-wa, .gfi-boton-wa,
  #gfi-mapa, .gfi-mas-fotos, .gfi-movil-n, .gfi-ver-mas, .gfi-ficha-acciones, .gfi-nav-ficha, .gfi-aviso-baja, .gfi-cinta-grande { display: none !important; }
  .gfi-pagina { padding-top: 0 !important; }
  .gfi, .gfi-ficha { font-size: 12.5px; }
  .gfi-solo-impresion { display: flex; align-items: center; gap: 18px; border-bottom: 2px solid var(--gfi-azul); padding-bottom: 8px; margin-bottom: 12px; font-size: 12px; color: var(--gfi-texto); }
  .gfi-solo-impresion img { width: 130px; height: auto; }
  .gfi-solo-impresion span { color: var(--gfi-suave); }
  .gfi-mosaico { display: grid !important; height: 300px; gap: 4px; border-radius: 6px; grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 1fr 1fr; }
  .gfi-mosaico-foto { display: block !important; background: #eef1f5; }
  .gfi-mosaico-foto img { transform: none !important; }
  .gfi-galeria { margin-bottom: 10px; }
  .gfi-ficha-cabecera { display: grid !important; grid-template-columns: 1fr auto; gap: 2px 20px; align-items: baseline; margin: 10px 0 6px; }
  .gfi-ficha-cabecera .gfi-ficha-precio { grid-column: 2; grid-row: 1; }
  .gfi-ficha-cabecera .gfi-ficha-titulo { grid-column: 1; grid-row: 1 / 3; }
  .gfi-ficha-precio strong { font-size: 26px; }
  .gfi-ficha-precio s, .gfi-ficha-precio .gfi-m2, .gfi-ficha-precio .gfi-bajada { font-size: 12px; }
  .gfi-ficha-titulo h1 { font-size: 22px; margin: 0 0 2px; }
  .gfi-ficha-lugar { font-size: 14px; }
  .gfi-ficha-clave { padding: 8px 12px; gap: 6px 24px; margin: 8px 0 12px; border: 1px solid var(--gfi-borde); background: none; border-radius: 8px; }
  .gfi-ficha-clave strong { font-size: 16px; }
  .gfi-ficha-clave span { font-size: 13px; }
  .gfi-ficha-columnas { display: block; }
  .gfi-bloque { border: 0; padding: 0; margin: 0 0 10px; }
  .gfi-bloque h2 { font-size: 16px; text-align: left; margin: 0 0 6px; border-bottom: 1px solid var(--gfi-borde); padding-bottom: 3px; }
  .gfi-descripcion, .gfi-descripcion p { font-size: 12.5px; line-height: 1.45; }
  .gfi-descripcion.plegada { max-height: none; -webkit-mask-image: none; mask-image: none; }
  .gfi-tabla-datos dt, .gfi-tabla-datos dd, .gfi-extras-lista li { font-size: 12px; }
  .gfi-tabla-datos > div { padding: 3px 0; }
  .gfi-extras-lista li { padding: 3px 10px; }
  .gfi-nota { font-size: 10.5px; }
  .gfi-ficha-lateral { display: block; margin-top: 10px; }
  .gfi-agente { background: none; color: var(--gfi-texto); border: 1px solid var(--gfi-borde); border-radius: 8px; padding: 8px 12px; gap: 12px; break-inside: avoid; }
  .gfi .gfi-agente img { width: 54px; height: 54px; }
  .gfi-agente strong { font-size: 15px; }
  .gfi-agente a { color: var(--gfi-texto) !important; font-size: 13px; text-decoration: none; }
  .gfi-impresion-fotos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; margin: 0 0 10px; break-inside: avoid; }
  .gfi-impresion-fotos img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 4px; display: block; }
  .gfi-ficha-cabecera, .gfi-bloque, .gfi-ficha-clave { break-inside: avoid; }
  /* (29/10, Jesús) Orden de la hoja: cabecera con título y precio ARRIBA, luego el mosaico, datos, fotos extra y el QR al final. */
  .gfi-ficha { display: flex; flex-direction: column; }
  .gfi-ficha > * { order: 20; }
  .gfi-ficha > .gfi-solo-impresion { order: 1; }
  .gfi-ficha > .gfi-ficha-cabecera { order: 2; margin-top: 0; }
  .gfi-ficha > .gfi-ficha-clave { order: 3; }
  .gfi-ficha > .gfi-galeria { order: 4; }
  .gfi-ficha > .gfi-ficha-columnas { order: 5; }
  .gfi-ficha > .gfi-impresion-fotos { order: 6; }
  .gfi-ficha > .gfi-impresion-pie { order: 7; display: flex; align-items: center; gap: 18px; margin-top: 14px; padding-top: 12px; border-top: 2px solid var(--gfi-azul); break-inside: avoid; font-size: 12.5px; line-height: 1.5; }
  .gfi-impresion-qr { flex: 0 0 auto; border: 1px solid var(--gfi-borde); border-radius: 6px; padding: 6px; background: #fff; }
  .gfi-impresion-qr svg { display: block; width: 110px; height: 110px; }
  .gfi-impresion-pie strong { font-size: 14px; color: var(--gfi-azul); }
  .gfi-impresion-pie span { color: var(--gfi-suave); word-break: break-all; }
}
.gfi-impresion-pie { display: none; }

/* ── 29/10 (Jesús): letra del móvil MÁS PEQUEÑA, como Fotocasa e idealista (descripción ~16 px). Solo en pantallas
   pequeñas; va al final para ganar a las reglas de arriba. ── */
@media (max-width: 700px) {
  .gfi .gfi-ficha-lugar { font-size: 16px; }
  .gfi .gfi-ficha-precio strong { font-size: 28px; }
  .gfi .gfi-ficha-clave strong { font-size: 19px; }
  .gfi .gfi-ficha-clave span { font-size: 15px; }
  .gfi .gfi-bloque h2, .gfi .gfi-similares h2 { font-size: 21px; margin-bottom: 8px; }
  .gfi .gfi-descripcion, .gfi .gfi-descripcion p { font-size: 16px; line-height: 1.5; }
  .gfi .gfi-descripcion.plegada { max-height: 17em; }   /* (29/10, Jesús) unas 4 líneas más que antes */
  .gfi .gfi-ver-mas { font-size: 16px; }
  .gfi .gfi-tabla-datos dt, .gfi .gfi-tabla-datos dd { font-size: 15.5px; }
  .gfi .gfi-tabla-datos > div { padding: 7px 0; }
  .gfi .gfi-extras-lista li { font-size: 15px; padding: 5px 12px; }
  .gfi .gfi-nota { font-size: 13px; }
  .gfi .gfi-agente strong { font-size: 17px; }
  .gfi .gfi-agente a, .gfi .gfi-agente-wa { font-size: 15px; }
  .gfi .gfi-tarjeta-tipo { font-size: 17px; }
  .gfi .gfi-tarjeta-datos, .gfi .gfi-tarjeta-desc { font-size: 15px; }
  .gfi .gfi-formulario h2 { font-size: 20px; }
  /* Barra de abajo: los tres botones a la misma altura (Llamar y Contactar algo más bajos, WhatsApp algo más alto). */
  .gfi .gfi-barra-movil a, .gfi .gfi-barra-movil .gfi-boton-wa { height: 48px; min-height: 0; box-sizing: border-box; }
  .gfi .gfi-barra-movil a { padding: 0 12px; display: inline-flex; align-items: center; justify-content: center; font-size: 16px; }
  .gfi .gfi-barra-movil .gfi-boton-wa { flex: 0 0 56px; margin: 0; align-self: center; }   /* el tema le ponía margen 15/6 px y lo bajaba */
  /* (29/10, Jesús) Título de la ficha más pequeño en el móvil. */
  .gfi .gfi-ficha-titulo h1 { font-size: 21px; line-height: 1.25; }
}
