/* ============================================================
   Provivienda — CSS del proyecto (child theme)
   Archivo único, cacheable (enqueado con filemtime → versión).
   Fuente de verdad en repo: theme/generatepress-child/assets/css/provivienda.css
   Desplegar a: wp-content/themes/generatepress-child/assets/css/provivienda.css
   ------------------------------------------------------------
   Reglas globales / de componentes estables van AQUÍ.
   El "CSS adicional" del Customizer / Elementor solo para tweaks puntuales.
   ============================================================ */

/* Guard de scroll horizontal: los full-bleed usan width:100vw (incluye el ancho del
   scrollbar) → provocan un scroll horizontal mínimo en mobile. `clip` en el ROOT lo evita
   SIN crear scroll-container (a diferencia de overflow:hidden, y sin tocar <body> que en
   Safari móvil puede romper el position:sticky de la barra de tabs). */
html { overflow-x: clip; }


/* ============================================================
   Carrusel de Zonas (JetEngine Listing 12076)
   Nombre + conteo en blanco superpuestos sobre la imagen.
   ============================================================ */

/* Tarjeta: relativa, redondeada, recorta */
.elementor-12076 .elementor-element-0552fee {
  position: relative !important;
  border-radius: 20px;
  overflow: hidden;
  padding: 0 !important;
  gap: 0 !important;
  height: 100%;
}

/* Imagen llena el ancho con proporción fija (cover) */
.elementor-12076 .elementor-element-f102276 { width: 100%; }
.elementor-12076 .jet-listing-dynamic-image,
.elementor-12076 .jet-listing-dynamic-image__link { display: block; line-height: 0; }
.elementor-12076 .jet-listing-dynamic-image__img {
  width: 100%;
  aspect-ratio: 4 / 3;        /* ← controla el alto de la tarjeta */
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Degradado inferior (legibilidad) */
.elementor-12076 .elementor-element-0552fee::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 58%;
  background: linear-gradient(to top, rgba(0,0,0,.72), rgba(0,0,0,0));
  pointer-events: none;
  z-index: 1;
}

/* Nombre de la zona — sobre la imagen, abajo-izquierda */
.elementor-12076 .elementor-element-72191e4 {
  position: absolute;
  left: 24px; right: 24px; bottom: 46px;
  z-index: 2; margin: 0; padding: 0;
  pointer-events: none;
}
.elementor-12076 .elementor-element-72191e4 .jet-listing-dynamic-field__content {
  color: #fff;
  font-family: "Inter", sans-serif;
  font-weight: 700;
  font-size: 28px;
  line-height: 1.2;
  margin: 0;
  text-shadow: 0 1px 8px rgba(0,0,0,.35);
}

/* "X proyectos" — debajo del título */
.elementor-12076 .elementor-element-8ac96c7 {
  position: absolute;
  left: 24px; right: 24px; bottom: 18px;
  z-index: 2; margin: 0; padding: 0;
  pointer-events: none;
}
.elementor-12076 .elementor-element-8ac96c7 .jet-listing-dynamic-field__content {
  color: rgba(255,255,255,.92);
  font-family: "Inter", sans-serif;
  font-weight: 400;
  font-size: 16px;
}

/* "Ver zona" oculto — toda la tarjeta enlaza por la imagen */
.elementor-12076 .elementor-element-b5901b0 { display: none; }

@media (max-width: 767px) {
  .elementor-12076 .elementor-element-72191e4 { bottom: 40px; }
  .elementor-12076 .elementor-element-72191e4 .jet-listing-dynamic-field__content { font-size: 22px; }
}


/* ============================================================
   Marquee infinito — "¿Por qué elegir Provivienda?"
   Scroll horizontal automático y CONTINUO (CSS puro, sin plugin/JS).
   Estructura requerida en Elementor:
     .pv-marquee            ← contenedor que RECORTA (overflow hidden)
       └ .pv-marquee__track ← contenedor interno que SE ANIMA
           └ tarjetas ×8    ← DUPLICA el set (4 → 8) para el bucle sin saltos
   ============================================================ */

.pv-marquee {
  display: block !important;
  overflow: hidden;
  width: 100%;
  /* desvanecido suave en los bordes (opcional: borra estas 2 líneas si no lo quieres) */
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

.pv-marquee__track {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: stretch;          /* tarjetas a igual altura */
  width: max-content !important;
  gap: 0 !important;             /* el espaciado lo da el margin-right de cada tarjeta */
  animation: pv-marquee-scroll 40s linear infinite;   /* ← velocidad: menos seg = más rápido */
  will-change: transform;
}

/* cada tarjeta: ancho fijo + su propio margen derecho (clave para el bucle exacto) */
.pv-marquee__track > .e-con {
  flex: 0 0 auto !important;
  width: 320px;                  /* ← ancho de tarjeta */
  margin-right: 24px;            /* ← separación entre tarjetas */
}

/* pausa al pasar el cursor */
.pv-marquee:hover .pv-marquee__track { animation-play-state: paused; }

/* el bucle: -50% = exactamente 1 set (por eso se duplica a 8) */
@keyframes pv-marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* móvil */
@media (max-width: 767px) {
  .pv-marquee__track > .e-con { width: 78vw; margin-right: 16px; }
}

/* accesibilidad: respeta "reducir movimiento" del sistema */
@media (prefers-reduced-motion: reduce) {
  .pv-marquee__track { animation: none; }
  .pv-marquee { -webkit-mask-image: none; mask-image: none; }
}


/* ============================================================
   Buscador del Home (JetSmartFilters) — estilo Figma
   Tarjeta blanca con 4 campos (Zona · Tipo · Precio · Metraje) + botón rojo.
   REQUIERE: clase  pv-search  en el contenedor de la tarjeta (7a5de24).
   Apunta a clases estables de JSF (no a IDs de Elementor) → reutilizable.
   ============================================================ */

/* ---- Tarjeta ---- */
.pv-search {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap;
  align-items: flex-end;                 /* botón alineado con la base de los campos */
  gap: 24px;
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 12px 34px rgba(0,0,0,.12);
  padding: 24px 28px;
}

/* los widgets de filtros crecen por igual; el botón no */
.pv-search > .elementor-widget-jet-smart-filters-select,
.pv-search > .elementor-widget-jet-smart-filters-range { flex: 1 1 0; min-width: 0; }
.pv-search > .elementor-widget-jet-smart-filters-apply-button { flex: 0 0 auto; }
.pv-search .elementor-widget-container { width: 100%; }

/* cada grupo = fila de 2 campos */
.pv-search .jet-filters-group { display: flex; gap: 24px; align-items: flex-end; }

/* cada campo = columna (etiqueta arriba, control abajo) */
.pv-search .jet-smart-filters-select,
.pv-search .jet-smart-filters-range {
  flex: 1 1 0; min-width: 0; margin: 0;
  display: flex; flex-direction: column; gap: 8px;
}

/* ---- Etiquetas ---- */
.pv-search .jet-filter-label {
  margin: 0;
  font-family: "Inter", sans-serif;
  font-weight: 600;
  font-size: 16px;
  line-height: 1.2;
  color: #1A1A1A;
}

/* ---- Selects (Zona / Tipo) como dropdown del Figma ---- */
.pv-search .jet-select { position: relative; }
.pv-search .jet-select__control {
  width: 100%;
  height: 48px;
  padding: 0 42px 0 16px;                /* sitio para el chevron a la derecha */
  border: 1px solid #D9D9D9;
  border-radius: 8px;
  background-color: #fff;
  font-family: "Inter", sans-serif;
  font-size: 16px;
  color: #1A1A1A;
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
}
/* placeholder en gris cuando aún no se elige nada (opción vacía seleccionada) */
.pv-search .jet-select__control:has(option[value=""]:checked) { color: #B3B3B3; }
.pv-search .jet-select__control:focus {
  outline: none; border-color: #D92E2E;
  box-shadow: 0 0 0 3px rgba(217,46,46,.12);
}

/* ---- Ranges (Precio / Metraje) — misma caja/altura que los selects ---- */
.pv-search .jet-range {
  height: 48px;
  border: 1px solid #D9D9D9;
  border-radius: 8px;
  background: #fff;
  padding: 0 16px;
  display: flex; flex-direction: column; justify-content: center; gap: 4px;
}
.pv-search .jet-range__slider { border: 0; margin: 0; padding: 0; height: 18px; }
.pv-search .jet-range__slider__track       { background: #E6E6E6 !important; }
.pv-search .jet-range__slider__track__range { background: #D92E2E !important; }   /* relleno en rojo de marca */
.pv-search .jet-range__slider__input::-webkit-slider-thumb {
  background: #fff; border: 2px solid #D92E2E; box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.pv-search .jet-range__slider__input::-moz-range-thumb {
  background: #fff; border: 2px solid #D92E2E;
}
.pv-search .jet-range__values {
  font-family: "Inter", sans-serif; font-size: 13px; font-weight: 500; color: #1A1A1A; line-height: 1;
}

/* ---- Botón "Buscar mi hogar" ---- */
.pv-search .apply-filters__button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 48px; padding: 0 24px;
  background: #D92E2E; color: #fff;
  font-family: "Inter", sans-serif; font-weight: 600; font-size: 16px;
  border: none; border-radius: 8px; cursor: pointer; white-space: nowrap;
  transition: background .2s ease;
}
.pv-search .apply-filters__button:hover { background: #B81F1F; }
.pv-search .apply-filters__button::before {            /* icono de lupa (como el Figma) */
  content: ""; width: 18px; height: 18px; flex: 0 0 auto;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='M21 21l-4.35-4.35'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* ---- Responsive ---- */
/* Tablet (≤1024): tarjeta en columna; cada grupo sigue siendo fila de 2 → rejilla 2×2 + botón ancho */
@media (max-width: 1024px) {
  .pv-search { flex-direction: column !important; align-items: stretch; gap: 16px; padding: 20px 22px; }
  .pv-search .jet-filters-group { gap: 16px; }
  .pv-search .apply-filters__button { width: 100%; height: 50px; }
}
/* Teléfono (≤680): todo a 1 columna, tap targets grandes; 16px = evita el zoom de iOS al enfocar */
@media (max-width: 680px) {
  .pv-search { padding: 16px; gap: 14px; border-radius: 14px; }
  .pv-search .jet-filters-group { display: grid!important; grid-template-columns: 1fr 1fr!important; gap: 8px; align-items: end; }
  .pv-search .jet-select__control,
  .pv-search .jet-range { height: 52px; font-size: 16px; }
  .pv-search .jet-filter-label { font-size: 15px; }
  .pv-search .apply-filters__button { height: 54px; font-size: 17px; }
}


/* ============================================================
   PÁGINA DE PROYECTOS (archive, page 845)
   Hero + barra de filtros sticky (AJAX multi-zona) + secciones por zona.
   Clases: pv-arch-hero · pv-archfilter · pv-zona/pv-zona-title/pv-zona-grid
   Tarjeta: listing 12067 con clases pv-card-*
   ============================================================ */

/* ---- Hero ---- */
.pv-arch-hero {
  position: relative;
  min-height: 360px;
  padding: 90px 24px;
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  text-align: center;
  background-size: cover; background-position: center;
}
.pv-arch-hero::after { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.35); z-index: 0; }
.pv-arch-hero > * { position: relative; z-index: 1; }
.pv-arch-hero-title .elementor-heading-title {
  color: #fff; font-family: "Inter", sans-serif; font-weight: 700; font-size: 48px; line-height: 1.15; margin: 0;
}
.pv-arch-hero-sub .elementor-heading-title {
  color: rgba(255,255,255,.92); font-family: "Inter", sans-serif; font-weight: 400; font-size: 20px; margin: 12px 0 0;
}

/* ---- Barra de filtros STICKY ---- */
.pv-archfilter {
  position: sticky;
  top: var(--pv-header-h, 0px);        /* si el header es sticky, ajusta --pv-header-h a su alto */
  z-index: 30;
  background: #fff;
  box-shadow: 0 6px 20px rgba(0,0,0,.08);
  padding: 16px 24px;
}
.pv-archfilter .jet-filters-group {
  display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-end;
  max-width: 1200px; margin: 0 auto;
}
.pv-archfilter .jet-smart-filters-select { flex: 1 1 160px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.pv-archfilter .jet-filter-label { font-family: "Inter", sans-serif; font-weight: 600; font-size: 14px; color: #1A1A1A; margin: 0; }
.pv-archfilter .jet-select { position: relative; }
.pv-archfilter .jet-select__control {
  width: 100%; height: 46px; padding: 0 38px 0 14px;
  border: 1px solid #D9D9D9; border-radius: 8px; background-color: #fff;
  font-family: "Inter", sans-serif; font-size: 15px; color: #1A1A1A;
  -webkit-appearance: none; -moz-appearance: none; appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center;
}
.pv-archfilter .jet-select__control:has(option[value=""]:checked) { color: #B3B3B3; }
.pv-archfilter .jet-select__control:focus { outline: none; border-color: #D92E2E; box-shadow: 0 0 0 3px rgba(217,46,46,.12); }

/* ---- Secciones por zona ---- */
.pv-zona { max-width: 1240px; margin: 0 auto; padding: 48px 24px 0; }
.pv-zona-title .elementor-heading-title {
  font-family: "Inter", sans-serif; font-weight: 700; font-size: 30px; color: #1A1A1A; margin: 0 0 12px;
}
.pv-zona-grid .jet-listing-grid__items { display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 28px; }

/* ---- Tarjeta de proyecto (listing 12067) — estructura del Figma ----
   OJO: en un listing los CONTENEDORES no reciben _css_classes (solo `e-con`);
   sí lo reciben los WIDGETS. Por eso la tarjeta/cuerpo/specs/finanzas se
   apuntan por :has() según el widget que contienen. */

/* Alturas iguales: la celda del grid se estira y la tarjeta la llena */
.pv-zona-grid .jet-listing-grid__item { width: auto !important; max-width: none !important; align-self: stretch; display: flex; }
.pv-zona-grid .jet-listing-grid__item > .elementor { width: 100%; display: flex; flex-direction: column; }

/* Tarjeta = contenedor que contiene la imagen (imagen a sangre, sin padding) */
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-img) {
  position: relative; flex: 1; width: 100%;
  background: #fff; border-radius: 16px; overflow: hidden;
  box-shadow: 0 6px 20px rgba(0,0,0,.08);
  display: flex; flex-direction: column;
  padding: 0 !important; gap: 0 !important;
}

/* Imagen — cubre todo el ancho superior, sin bordes */
:is(.elementor-12067, .elementor-12546) .pv-card-img { margin: 0 !important; width: 100%; }
:is(.elementor-12067, .elementor-12546) .pv-card-img,
:is(.elementor-12067, .elementor-12546) .pv-card-img .elementor-widget-container,
:is(.elementor-12067, .elementor-12546) .pv-card-img a,
:is(.elementor-12067, .elementor-12546) .pv-card-img img { display: block; width: 100%; line-height: 0; }
:is(.elementor-12067, .elementor-12546) .pv-card-img img { aspect-ratio: 16 / 10; object-fit: cover; }

/* ---- Carrusel en la tarjeta de MODELO (Fase 5) --------------------------
   La galería global es `position:absolute; inset:0` porque en el hero vive
   dentro de un contenedor con altura. Dentro de la tarjeta no hay altura: se
   pasa a relativa y se le da la MISMA proporción 16/10 que tenía la imagen
   estática, para que la tarjeta no cambie de tamaño.
   Flechas y puntos se reducen; las flechas solo aparecen al pasar por encima. */
:is(.elementor-12067, .elementor-12546) .pv-card-img .pv-hero-gal {
  position: relative; inset: auto; width: 100%; height: auto;
  aspect-ratio: 16 / 10; background: #eee;
}
:is(.elementor-12067, .elementor-12546) .pv-card-img .pv-hero-gal-slide img { aspect-ratio: auto; height: 100%; }
:is(.elementor-12067, .elementor-12546) .pv-card-img .pv-hero-gal-slide a { display: block; width: 100%; height: 100%; line-height: 0; }

:is(.elementor-12067, .elementor-12546) .pv-gal-card .pv-hero-gal-arrow {
  width: 30px; height: 30px; font-size: 13px; opacity: 0; transition: opacity .2s ease, transform .2s ease;
}
:is(.elementor-12067, .elementor-12546) .pv-gal-card .pv-hero-gal-prev { left: 8px; }
:is(.elementor-12067, .elementor-12546) .pv-gal-card .pv-hero-gal-next { right: 8px; }
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-img):hover .pv-gal-card .pv-hero-gal-arrow { opacity: 1; }
/* En táctil no hay hover: las flechas se quedan visibles. */
@media (hover: none) {
  :is(.elementor-12067, .elementor-12546) .pv-gal-card .pv-hero-gal-arrow { opacity: .85; }
}
:is(.elementor-12067, .elementor-12546) .pv-gal-card .pv-hero-gal-dots { bottom: 10px; gap: 6px; }
:is(.elementor-12067, .elementor-12546) .pv-gal-card .pv-hero-gal-dot { width: 6px; height: 6px; }
:is(.elementor-12067, .elementor-12546) .pv-gal-card .pv-hero-gal-dot.is-active { width: 18px; border-radius: 4px; }
/* El zoom de hover de la tarjeta se aplica al slide activo, no al track. */
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-img):hover .pv-gal-card img { transform: scale(1.05); }

/* Tag sobre la imagen (ESTADO del proyecto) — punto de estado en vez de pin */
/* ---- Distintivo promocional («Precio Especial», Fase 2) ----------------
   Va arriba a la IZQUIERDA para no chocar con el estado ("EN VENTA"), que ocupa
   la derecha. `pointer-events:none` para que no robe el clic de la tarjeta.
   Si la promoción no está vigente el shortcode no devuelve nada: el envoltorio
   se oculta con :has() para que no quede una caja invisible sobre la foto.     */
:is(.elementor-12067, .elementor-12546) .pv-card-promo {
  position: absolute; top: 14px; left: 14px; z-index: 4; margin: 0 !important;
  pointer-events: none;
  /* El tope de ancho va AQUÍ, no en la pastilla. El envoltorio está posicionado en
     absoluto, así que su % se resuelve contra la TARJETA. Puesto en la pastilla, el
     % se resolvía contra este envoltorio —que se encoge al tamaño del texto— y el
     texto se recortaba al 55 % de sí mismo ("PREC…").
     El !important es obligatorio: el kit de Elementor impone `max-width:100%` a
     todos los widgets y gana por especificidad. */
  max-width: 55% !important;
}
:is(.elementor-12067, .elementor-12546) .pv-card-promo:not(:has(.pv-promo-badge)) { display: none; }
:is(.elementor-12067, .elementor-12546) .pv-promo-badge {
  /* Fondo blanco y letras negras: elegido por el cliente el 2026-09-08 entre las
     tres opciones que se le presentaron (antes era rojo con letras blancas). El
     borde fino es necesario aquí y no lo era en rojo: la pastilla va SOBRE una
     foto y hay portadas claras (cielos, fachadas blancas) en las que un blanco
     puro sin contorno se disuelve. */
  display: inline-flex; align-items: center; gap: 6px; background: #FFFFFF; color: #1A1A1A;
  border: 1px solid rgba(26,26,26,.10);
  font-family: "Inter", sans-serif; font-weight: 700; font-size: 11px;
  text-transform: uppercase; letter-spacing: .04em; line-height: 1;
  padding: 7px 13px; border-radius: 999px;
  box-shadow: 0 2px 8px rgba(0,0,0,.22);
  /* Se limita a su envoltorio (que ya está topado contra la tarjeta). */
  max-width: 100%;
}
/* El icono no se encoge; el que se recorta con puntos suspensivos es el TEXTO.
   `stroke: currentColor` en el SVG hace que el icono siga el color del texto. */
:is(.elementor-12067, .elementor-12546) .pv-promo-ic { flex: 0 0 auto; display: block; }
:is(.elementor-12067, .elementor-12546) .pv-promo-txt {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
}
@media (max-width: 480px) {
  :is(.elementor-12067, .elementor-12546) .pv-promo-badge { font-size: 10px; padding: 6px 11px; }
}

:is(.elementor-12067, .elementor-12546) .pv-card-tag {
  position: absolute; top: 14px; right: 14px; z-index: 3; margin: 0 !important;
  background: rgba(20,20,20,.6); border-radius: 999px; padding: 6px 13px 6px 25px;
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
:is(.elementor-12067, .elementor-12546) .pv-card-tag::before {
  content: ""; position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
  width: 7px; height: 7px; border-radius: 50%; background: #4ED17E;   /* punto de estado */
}
:is(.elementor-12067, .elementor-12546) .pv-card-tag .jet-listing-dynamic-terms,
:is(.elementor-12067, .elementor-12546) .pv-card-tag .jet-listing-dynamic-field__content,
:is(.elementor-12067, .elementor-12546) .pv-card-tag a,
:is(.elementor-12067, .elementor-12546) .pv-card-tag span {
  color: #fff; font-family: "Inter", sans-serif; font-weight: 600; font-size: 11px;
  text-transform: uppercase; letter-spacing: .03em; text-decoration: none; line-height: 1;
}

/* Cuerpo = contenedor que contiene el título (compacto) */
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-title) {
  flex: 1; display: flex; flex-direction: column; gap: 10px; padding: 16px 18px 18px;
}
/* Nombre del proyecto — MAYÚSCULAS, semibold (como el Figma) */
:is(.elementor-12067, .elementor-12546) .pv-card-title h3,
:is(.elementor-12067, .elementor-12546) .pv-card-title .jet-listing-dynamic-field__content {
  font-family: "Inter", sans-serif; font-weight: 600; font-size: 18px; color: #1A1A1A; margin: 0;
  line-height: 1.25; text-transform: uppercase; letter-spacing: .02em;
}

/* Fila de specs = área (izq) · hab · baños (der) — ocupa el 100% del ancho */
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-area),
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-hab),
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-banos) {
  display: flex !important; flex-direction: row !important; align-items: center; flex-wrap: nowrap; width: 100%; gap: 0;
  padding: 0 !important;
}
:is(.elementor-12067, .elementor-12546) .pv-card-area, :is(.elementor-12067, .elementor-12546) .pv-card-hab, :is(.elementor-12067, .elementor-12546) .pv-card-banos { width: auto; }
:is(.elementor-12067, .elementor-12546) .pv-card-area .jet-listing-dynamic-field__content,
:is(.elementor-12067, .elementor-12546) .pv-card-hab .jet-listing-dynamic-field__content,
:is(.elementor-12067, .elementor-12546) .pv-card-banos .jet-listing-dynamic-field__content {
  display: flex; align-items: center; gap: 6px; white-space: nowrap;
  font-family: "Inter", sans-serif; font-size: 13.5px; color: #4A4A4A;
}
:is(.elementor-12067, .elementor-12546) .pv-card-hab { margin-left: auto; padding-left: 14px; border-left: 1px solid #E2E2E2; }
:is(.elementor-12067, .elementor-12546) .pv-card-banos { margin-left: 14px; padding-left: 14px; border-left: 1px solid #E2E2E2; }
:is(.elementor-12067, .elementor-12546) .pv-card-hab .jet-listing-dynamic-field__content::before {
  content: ""; width: 18px; height: 18px; flex: 0 0 auto;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%234A4A4A' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 4v16'/%3E%3Cpath d='M2 8h18a2 2 0 0 1 2 2v10'/%3E%3Cpath d='M2 17h20'/%3E%3Cpath d='M6 8v9'/%3E%3C/svg%3E") no-repeat center / contain;
}
:is(.elementor-12067, .elementor-12546) .pv-card-banos .jet-listing-dynamic-field__content::before {
  content: ""; width: 17px; height: 17px; flex: 0 0 auto;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 24 24' fill='none' stroke='%234A4A4A' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6 6.5 3.5a1.5 1.5 0 0 0-1-.5C4.683 3 4 3.683 4 4.5V17a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5'/%3E%3Cline x1='10' y1='5' x2='8' y2='7'/%3E%3Cline x1='2' y1='12' x2='22' y2='12'/%3E%3Cline x1='7' y1='19' x2='7' y2='21'/%3E%3Cline x1='17' y1='19' x2='17' y2='21'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Precio */
:is(.elementor-12067, .elementor-12546) .pv-card-precio .jet-listing-dynamic-field__content {
  font-family: "Inter", sans-serif; font-weight: 700; font-size: 19px; color: #1A1A1A;
}

/* Fila de finanzas = letra + ingreso lado a lado (50/50), pegada al precio */
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-letra),
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-ingreso) {
  display: flex !important; flex-direction: row !important; flex-wrap: nowrap; width: 100%; gap: 14px;
  padding: 0 !important; margin-top: -4px;
}
:is(.elementor-12067, .elementor-12546) .pv-card-letra, :is(.elementor-12067, .elementor-12546) .pv-card-ingreso { flex: 1 1 0; min-width: 0; }
:is(.elementor-12067, .elementor-12546) .pv-card-letra .jet-listing-dynamic-field__content,
:is(.elementor-12067, .elementor-12546) .pv-card-ingreso .jet-listing-dynamic-field__content {
  font-family: "Inter", sans-serif; font-size: 12px; color: #8A8A8A; line-height: 1.35;
}

/* Botón full-width, centrado, pegado al fondo */
:is(.elementor-12067, .elementor-12546) .pv-card-btn { margin-top: auto; width: 100%; }
/* wrappers a block 100% — PERO NO el <a> (eso lo dejaba sin centrar) */
:is(.elementor-12067, .elementor-12546) .pv-card-btn .jet-listing,
:is(.elementor-12067, .elementor-12546) .pv-card-btn .jet-listing-dynamic-link { display: block !important; width: 100%; }
:is(.elementor-12067, .elementor-12546) .pv-card-btn a {
  display: flex !important; align-items: center !important; justify-content: center !important; width: 100%;
  background: #D92E2E; color: #fff; font-family: "Inter", sans-serif; font-weight: 600; font-size: 15px;
  height: 48px; border-radius: 8px; text-decoration: none; transition: background .2s ease;
}
:is(.elementor-12067, .elementor-12546) .pv-card-btn a:hover { background: #B81F1F; }

/* Interacción hover en la tarjeta (lift + zoom de imagen) */
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-img) { transition: transform .25s ease, box-shadow .25s ease; }
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-img):hover { transform: translateY(-5px); box-shadow: 0 16px 38px rgba(0,0,0,.15); }
:is(.elementor-12067, .elementor-12546) .pv-card-img img { transition: transform .45s ease; }
:is(.elementor-12067, .elementor-12546) .e-con:has(> .pv-card-img):hover .pv-card-img img { transform: scale(1.05); }

/* ---- Responsive ---- */
@media (max-width: 1024px) {
  .pv-archfilter .jet-smart-filters-select { flex: 1 1 calc(50% - 7px); }
  .pv-zona-grid .jet-listing-grid__items { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}
@media (max-width: 768px) {
  .pv-arch-hero { min-height: 260px; padding: 60px 18px; }
  .pv-arch-hero-title .elementor-heading-title { font-size: 32px; }
  .pv-arch-hero-sub .elementor-heading-title { font-size: 16px; }
  .pv-zona { padding: 36px 18px 0; }
  .pv-zona-title .elementor-heading-title { font-size: 24px; margin-bottom: 18px; }
}
@media (max-width: 600px) {
  .pv-archfilter { padding: 12px 16px; }
  .pv-archfilter .jet-filters-group { gap: 12px; }
  .pv-archfilter .jet-smart-filters-select { flex: 1 1 100%; }
  .pv-archfilter .jet-select__control { height: 50px; font-size: 16px; }   /* 16px = sin zoom iOS */
  .pv-zona-grid .jet-listing-grid__items { grid-template-columns: 1fr; gap: 18px; }
	
	/* Nombre del proyecto — MAYÚSCULAS, semibold (como el Figma) */
:is(.elementor-12067, .elementor-12546) .pv-card-title h3,
:is(.elementor-12067, .elementor-12546) .pv-card-title .jet-listing-dynamic-field__content {
  font-weight: 600; font-size: 18px; 
}/* Precio del proyecto — MAYÚSCULAS, semibold (como el Figma) */
	.pv-card-precio .jet-listing-dynamic-field__content { font-size: 16px!important;}
}


/* ============================================================
   Barra de filtros — página de Proyectos (sticky bajo el header)
   Clase  pv-filterbar  en el CONTENEDOR DE LOS SELECTS (el interno,
   72be3f4). El contenedor general (9767cc1) va SIN fondo (transparente).
   ============================================================ */
.pv-filterbar {
  position: sticky; top: 65px; z-index: 50;            /* bajo el header sticky (~65px) */
  background: #fff;
  box-shadow: 0 4px 16px rgba(0,0,0,.06);
  width: 100vw; margin-left: calc(50% - 50vw);         /* full-bleed: ocupa el 100% del ancho de pantalla */
  padding: 12px 24px !important;
}
.pv-filterbar .jet-filters-group {
  display: flex; flex-wrap: wrap; gap: 12px; align-items: center;
margin: 0 auto;                   /* filtros centrados dentro de la barra */
}
.pv-filterbar .jet-smart-filters-select { flex: 1 1 150px; min-width: 0; }
.pv-filterbar .jet-filter-label { display: none; }     /* el placeholder de cada select ya describe el filtro */
.pv-filterbar .jet-select { position: relative; }
.pv-filterbar .jet-select__control {
  width: 100%; height: 44px; padding: 0 36px 0 14px;
  border: 1px solid #E0E0E0; border-radius: 8px; background-color: #fff;
  font-family: "Inter", sans-serif; font-size: 14px; color: #1A1A1A;
  -webkit-appearance: none; -moz-appearance: none; appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center;
}
.pv-filterbar .jet-select__control:has(option[value=""]:checked) { color: #9A9A9A; }
.pv-filterbar .jet-select__control:hover { border-color: #C5C5C5; }
.pv-filterbar .jet-select__control:focus { outline: none; border-color: #D92E2E; box-shadow: 0 0 0 3px rgba(217,46,46,.1); }

@media (max-width: 1024px) {
  .pv-filterbar .jet-smart-filters-select { flex: 1 1 calc(33.333% - 8px); }
}
@media (max-width: 680px) {
  .pv-filterbar { top: 60px; padding: 10px 16px !important; }
  .pv-filterbar .jet-filters-group { gap: 10px; }
  .pv-filterbar .jet-smart-filters-select { flex: 1 1 calc(50% - 5px); }
  .pv-filterbar .jet-select__control { height: 46px; font-size: 16px; }   /* 16px = sin zoom iOS */
}


/* ============================================================
   Botón "Limpiar filtros" (clase pv-clear) — visible SOLO con filtros activos.
   El JS añade  body.pv-filtros-activos  cuando hay algún filtro puesto.
   ============================================================ */
/* Contenedor de la barra en COLUMNA → el botón va DEBAJO de los selects, no
   al lado (evita que su aparición encoja los 6 selects a 4 columnas). gap:0
   para que el blanco del botón pegue con el de la barra (sin franja). */
.e-con:has(> .pv-filterbar) { flex-direction: column !important; gap: 0 !important; }

.pv-clear { display: none !important; }
body.pv-filtros-activos .pv-clear {
  display: block !important;
  width: 100vw; margin-left: calc(50% - 50vw);   /* full-bleed, igual que la barra */
  background: #fff;                               /* mismo blanco que los filtros → no flota */
  padding: 0 24px 12px;
  text-align: right;
}
.pv-clear .elementor-button {
  display: inline-flex !important; align-items: center; gap: 6px; width: auto;
  background: transparent !important; box-shadow: none !important; border: 0 !important;
  color: #D92E2E !important; fill: #D92E2E !important;
  font-family: "Inter", sans-serif; font-weight: 600; font-size: 13px;
  padding: 6px 2px !important; min-height: 0;
}
.pv-clear .elementor-button:hover { color: #B81F1F !important; text-decoration: underline; }
.pv-clear .elementor-button-icon { margin: 0 !important; }
@media (max-width: 680px) {
  body.pv-filtros-activos .pv-clear { padding: 4px 16px 2px; }
}

/* ============================================================
   PÁGINA DE ZONA (/ubicacion/<slug>/) — listings 12546 (tarjeta
   de modelo) y 12547 (vista de proyecto). La tarjeta de modelo
   reutiliza el CSS de .pv-card-* (compartido arriba vía :is con
   .elementor-12546). Aquí van los ajustes propios de modelo + layout.
   ============================================================ */

/* Alturas iguales en la fila de modelos (igual que .pv-zona-grid) */
.pv-pv-modelos .jet-listing-grid__item { align-self: stretch; display: flex; }
.pv-pv-modelos .jet-listing-grid__item > .elementor { width: 100%; display: flex; flex-direction: column; }

/* El tag del modelo es un pill de UBICACIÓN (📍 + zona), no estado:
   sin el punto verde, padding simétrico, y estilo del texto (el contenido
   viene de un text-editor con shortcode, no de un dynamic-field). */
.elementor-12546 .pv-card-tag { padding: 6px 13px; }
.elementor-12546 .pv-card-tag::before { display: none; }
.elementor-12546 .pv-card-tag,
.elementor-12546 .pv-card-tag p {
  margin: 0; color: #fff; font-family: "Inter", sans-serif; font-weight: 600;
  font-size: 11px; text-transform: uppercase; letter-spacing: .03em; line-height: 1;
}
.elementor-12546 .pv-card-tag img.emoji { width: 12px; height: 12px; vertical-align: -2px; margin-right: 3px; }

/* Vista de proyecto: separación entre proyectos + título de cada proyecto */
.pv-zona-proyectos .jet-listing-grid__item { margin-bottom: 8px; }
.pv-pv-title h1, .pv-pv-title h2, .pv-pv-title h3,
.pv-pv-title .jet-listing-dynamic-field__content {
  font-family: "Inter", sans-serif; font-weight: 700; font-size: 26px; color: #1A1A1A;
  margin: 0 0 22px; line-height: 1.2;
}

/* ============================================================
   BARRA DE TABS de proyecto (sticky, desktop + móvil)
   .pv-tabs-bar (contenedor sticky) > .pv-tabs (grid) > items (botón-pill).
   El JS (provivienda.js → pvZonaTabs) muestra un proyecto a la vez y marca
   .is-active en el tab del proyecto consultado.
   ============================================================ */
/* El contenedor de la barra de tabs (su clase custom no emite en este render,
   así que lo apuntamos por :has(> .pv-tabs)). Sticky debajo del header (~62px). */
.pv-zona-archive .e-con:has(> .pv-tabs) {
  position: -webkit-sticky; position: sticky;
  top: var(--pv-header-h, 105px); z-index: 30;
  margin: 0; padding: 0 3%;                           /* alineado con los proyectos (padding lateral 3%) */
  background: transparent;
  transition: background .2s ease, box-shadow .2s ease;
}
/* SOLO cuando se pega al top (la clase la pone provivienda.js → pvStickyTabs):
   fondo blanco + sombra sutil, igual que la barra de filtros de la 845. La sombra
   vive en este contenedor EXTERIOR, así que el scroll de los items no la recorta. */
.pv-zona-archive .e-con.pv-tabs-stuck:has(> .pv-tabs) {
  background: #fff; box-shadow: 0 6px 20px rgba(0,0,0,.08);
}
/* anula el grid de JetEngine → una fila horizontal con scroll. overflow-x:auto
   CONTIENE el scroll (sin esto, en móvil con body overflow-x:hidden los tabs se
   cortan sin poder alcanzarlos = el "ancho infinito"). */
.pv-tabs .jet-listing-grid__items {
  display: flex !important; grid-template-columns: none !important;
  flex-wrap: nowrap; gap: 10px; margin: 0 !important; padding: 14px 0;
  overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch;
  scrollbar-width: thin; scroll-snap-type: x proximity; 
}
.pv-tabs .jet-listing-grid__items::-webkit-scrollbar { height: 5px; }
.pv-tabs .jet-listing-grid__items::-webkit-scrollbar-thumb { background: rgba(0,0,0,.18); border-radius: 999px; }
/* cada item = pill-botón */
.pv-tabs .jet-listing-grid__item {
  flex: 0 0 auto; width: auto !important; max-width: none !important; min-height: 0;
  scroll-snap-align: start; cursor: pointer; -webkit-user-select: none; user-select: none;
  background: #F1ECE4; border-radius: 999px; padding: 12px 22px;
  transition: background .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.pv-tabs .jet-listing-grid__item > .elementor { width: auto; }
.pv-tabs .jet-listing-grid__item .e-con {
  display: flex !important; flex-direction: row; align-items: center; gap: 7px;
  padding: 0 !important; flex-wrap: nowrap;
}
.pv-tab-name, .pv-tab-count { margin: 0 !important; }
.pv-tab-name .jet-listing-dynamic-field__content {
  font-family: "Inter", sans-serif; font-weight: 600; font-size: 16px; color: #2A2A2A;
  white-space: nowrap; line-height: 1;
}
.pv-tab-count .jet-listing-dynamic-field__content {
  font-family: "Inter", sans-serif; font-weight: 500; font-size: 12px; color: #9A9A9A;
  white-space: nowrap; line-height: 1;
}
.pv-tabs .jet-listing-grid__item:hover { background: #E7E0D5; }
/* ACTIVO — que se entienda que es el proyecto consultado */
.pv-tabs .jet-listing-grid__item.is-active {
  background: #D92E2E; box-shadow: 0 6px 16px rgba(217,46,46,.32); transform: translateY(-1px);
}
.pv-tabs .jet-listing-grid__item.is-active .pv-tab-name .jet-listing-dynamic-field__content { color: #fff; }
.pv-tabs .jet-listing-grid__item.is-active .pv-tab-count .jet-listing-dynamic-field__content { color: rgba(255,255,255,.82); }

@media (max-width: 767px) {
  .pv-zona-archive .e-con:has(> .pv-tabs) { margin: 0; padding: 0 3%; }
  .pv-tabs .jet-listing-grid__items { gap: 8px; padding: 11px 0; }
  .pv-tabs .jet-listing-grid__item { padding: 12px 20px; }
  .pv-tab-name .jet-listing-dynamic-field__content { font-size: 13px; }
  .pv-tab-count .jet-listing-dynamic-field__content { font-size: 11.5px; }
	.pv-zona-archive .e-con:has(> .pv-tabs) {
  position: -webkit-sticky; position: sticky;
  top: var(--pv-header-h, 63px); }
}
/* ============================================================
  Oculta titulo de grid de proyectos en el tab de la zona
   ============================================================ */
.elementor-element.elementor-element-pvtit1.pv-pv-title.elementor-widget.elementor-widget-jet-listing-dynamic-field {
	display: none;
}

/* ============================================================
   HERO de la zona — FULL-BLEED, 2 columnas (texto izq + galería der).
   Marco NATIVO en Elementor: container pvzhero1 → pvheroL (texto) / pvheroR
   (galería). La galería la arma [pv_hero_galeria] (.pv-hero-gal) y la desliza
   provivienda.js (pvHeroGallery). El texto de la izq son widgets nativos
   editables; estas reglas solo dan layout + estilo de marca.
   ============================================================ */
/* El #content de GeneratePress es flex y encoge el wrapper de la plantilla a su
   contenido (boxed ~1616px, alineado a la izq). Lo forzamos a ocupar TODO el
   área de contenido → el contenido queda centrado en el viewport y el hero
   puede ir a ancho completo sin offset de scrollbar. */
.pv-zona-archive { flex: 1 1 100%; width: 100%; max-width: 100%; }
/* full-bleed: el ANCHO lo da el wrapper (.pv-zona-archive, arriba). El layout del
   hero — columnas, anchos, paddings, min-height (70vh), flex-direction, gap, fondo
   blanco de la izq — vive ahora en los SETTINGS de Elementor (todo editable desde
   el editor). Aquí solo queda lo estructural que Elementor no expone. */
.elementor-element-pvheror { position: relative; }   /* ancla la galería absoluta */
/* los wrappers del widget de galería no deben aportar alto (si no, la imagen los infla) */
.elementor-element-pvheror .elementor-widget-shortcode,
.elementor-element-pvherogal,
.elementor-element-pvherogal > .elementor-widget-container,
.elementor-element-pvherogal .elementor-shortcode { position: static; }

/* Los textos del hero (back-link, breadcrumb, subtítulo) son widgets text-editor:
   su TAMAÑO / familia / peso / color / espaciado se EDITAN en Elementor (Style +
   Advanced del widget). Aquí solo el estilo de los <a> (los links toman el color
   del widget vía inherit) y el realce del término — que el text-editor no expone. */
.elementor-element-pvherol .pv-hero-back, .elementor-element-pvmherol .pv-hero-back { display: inline-block; text-decoration: none; color: inherit; font: inherit; }
.elementor-element-pvherol .pv-hero-crumb a, .elementor-element-pvmherol .pv-hero-crumb a { text-decoration: none; color: inherit; font: inherit; }
.elementor-element-pvherol .pv-hero-back:hover, .elementor-element-pvherol .pv-hero-crumb a:hover,
.elementor-element-pvmherol .pv-hero-back:hover, .elementor-element-pvmherol .pv-hero-crumb a:hover { color: #D92E2E; }
.elementor-element-pvherol .pv-hero-crumb b, .elementor-element-pvmherol .pv-hero-crumb b { color: #1A1A1A; font-weight: 500; }
/* título del hero: ahora es un <h1> dentro de un text-editor (para campo dinámico
   por zona zona_hero_titulo) → hereda la tipografía del widget, no la del tema. */
.elementor-element-pvheroh1 h1 { font: inherit; letter-spacing: inherit; color: inherit; margin: 0; }

/* ---------- galería: ABSOLUTA, llena la columna sin inflar su alto ---------- */
.pv-hero-gal { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; overflow: hidden; background: #0e0e0e; }
.pv-hero-gal-track { display: flex; width: 100%; height: 100%; transition: transform .55s cubic-bezier(.5,.12,.13,1); will-change: transform; }
.pv-hero-gal-slide { flex: 0 0 100%; width: 100%; height: 100%; position: relative; }

/* ---- Leyenda de la imagen (Fase 4) -------------------------------------
   Solo la emite la galería del MODELO; la de zona no lleva.

   Pastilla blanca translúcida con desenfoque, CENTRADA justo encima de los
   puntos del carrusel. El blanco con texto oscuro se lee sobre cualquier foto,
   clara u oscura, cosa que el degradado negro no garantizaba.

   Medidas que hay que respetar al tocar esto:
     · los puntos van en `bottom:24px` y miden 9px  -> la leyenda arranca en 46px
     · las flechas ocupan 22px de margen + 52px de ancho -> 84px de aire a cada lado
   `pointer-events:none` para que el clic siga llegando a las flechas.          */
.pv-hero-gal-cap {
  position: absolute; left: 0; right: 0; bottom: 46px; z-index: 3;
  display: flex; justify-content: center;
  padding: 0 84px;
  pointer-events: none;
}
.pv-hero-gal-cap span {
  /* ---- Los valores que hay que tocar para cambiar de aspecto ----
     OSCURA (actual):  rgba(0,0,0,.34)         + #fff
     CLARA:            rgba(255,255,255,.82)   + #1A1A1A
     -------------------------------------------------------------- */
  --pv-cap-bg:   rgba(0, 0, 0, .34);
  --pv-cap-fg:   #fff;

  display: inline-block; max-width: 100%;
  background: var(--pv-cap-bg);
  /* Más desenfoque que antes: atenúa el fondo de la foto sin necesidad de tanto
     negro, que era lo que hacía resaltar el bloque. */
  -webkit-backdrop-filter: blur(16px) saturate(1.1);
          backdrop-filter: blur(16px) saturate(1.1);
  color: var(--pv-cap-fg); font-family: "Inter", sans-serif; font-weight: 500;
  font-size: 14px; line-height: 1.35; text-align: center; text-wrap: balance;
  padding: 9px 16px;
  /* Mismo radio que los botones del sitio (.pv-mod-btn); antes era una píldora
     de 999px, una forma que no se usa en ningún otro sitio. */
  border-radius: 8px;
  /* Sombra apenas perceptible y SIN el aro blanco de antes: los dos empujaban el
     bloque hacia adelante. La legibilidad la sostiene ahora la sombra del TEXTO,
     que pesa visualmente mucho menos que oscurecer toda la pastilla. */
  box-shadow: 0 1px 6px rgba(0, 0, 0, .18);
  /* HALO FINO, no adorno: con la pastilla a .34 el texto blanco no llega al mínimo
     de contraste sobre las fotos claras, y este cerco pegado a cada letra es lo que
     lo sostiene. Se probó con un halo ANCHO (0 0 10px) y era peor: oscurecía toda
     la zona y hacía que el bloque resaltara MÁS, justo lo que se quería evitar. */
  text-shadow: 0 1px 2px rgba(0, 0, 0, .72), 0 0 3px rgba(0, 0, 0, .45);
}
/* MEDIDO sobre las 176 fotos de galería (media de la franja donde se apoya la
   pastilla, con el desenfoque aplicado). Contraste del texto blanco contra el
   fondo compuesto, SIN contar el halo:
       alfa .50 (el anterior) → peor 2,40 · mediana 5,95 · 45 de 176 bajo 4,5
       alfa .34 (el actual)   → peor 1,87 · mediana 4,84 · 73 de 176 bajo 4,5
   Es decir: con el fondo oscuro NO se llegaba al mínimo tampoco antes. Quien
   sostiene la legibilidad sobre las fotos claras es el halo del texto. Subir el
   alfa vuelve a hacer pesado el bloque sin resolverlo del todo. */

/* Sin soporte de desenfoque no hay atenuación del fondo: se compensa opacando. */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .pv-hero-gal-cap span { --pv-cap-bg: rgba(0, 0, 0, .52); }
}
@media (max-width: 900px) {
  .pv-hero-gal-cap { bottom: 42px; padding: 0 14px; }
  .pv-hero-gal-cap span { font-size: 12.5px; padding: 8px 14px; line-height: 1.32; }
}
.pv-hero-gal-slide img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* flechas — MÁS VISIBLES (círculo blanco con sombra + chevron oscuro) */
.pv-hero-gal-arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 54px; height: 54px; border-radius: 50%; border: 0; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.30) !important; color: #FFF!important;
  font-size: 22px; line-height: 1; box-shadow: 0 6px 22px rgba(0,0,0,.30);
  -webkit-appearance: none; appearance: none; padding: 0; z-index: 4;
  transition: background .2s, transform .2s, box-shadow .2s; border-style: solid; border-width: 1px; border-color:rgba(255, 255, 255, 0.13);
  
}
/* Pin de mapa sobre list proyects */

img.map-pin.alignnone.wp-image-12599.size-full {
    margin-right: 4px;
    margin-top: 0px;
    margin-bottom: -2px;
}

.pv-hero-gal-arrow:hover { background: #fff !important; transform: translateY(-50%) scale(1.09); box-shadow: 0 9px 28px rgba(0,0,0,.38); color: #1A1A1A!important; }
.pv-hero-gal-prev { left: 22px; }
.pv-hero-gal-next { right: 22px; }
/* dots */
.pv-hero-gal-dots { position: absolute; left: 0; right: 0; bottom: 24px; display: flex; gap: 9px; justify-content: center; z-index: 4; }
.pv-hero-gal-dot { width: 9px; height: 9px; padding: 0; border: 0; border-radius: 50%; cursor: pointer; background: rgba(255,255,255,.55) !important; -webkit-appearance: none; appearance: none; transition: background .25s, width .25s; }
.pv-hero-gal-dot.is-active { background: #D92E2E !important; width: 28px; border-radius: 6px; }
.pv-hero-gal.is-single .pv-hero-gal-arrow, .pv-hero-gal.is-single .pv-hero-gal-dots { display: none; }

@media (max-width: 880px) {
  .elementor-element-pvzhero1 { min-height: 0; flex-direction: column !important; }
  .elementor-element-pvherol, .elementor-element-pvheror { flex: 1 1 100%; max-width: 100%; }
  .elementor-element-pvheror { order: 1; min-height: 46vh; }
  .elementor-element-pvherol { order: 2; padding: 32px clamp(18px, 6vw, 30px) 42px !important; }
  .pv-hero-gal-arrow { width: 44px; height: 44px; font-size: 18px; }
  .pv-hero-gal-prev { left: 12px; } .pv-hero-gal-next { right: 12px; }
}

/* ============================================================
   BANDAS DE CONTENIDO de la vista de proyecto (shortcodes
   [pv_narrativa] / [pv_amenidades] / [pv_ubicacion] / [pv_form]).
   ============================================================ */
.pv-band-wrap { width: 100%; }
.pv-band { padding: 56px 0; }
.pv-band .pv-narr-eyebrow, .pv-band .pv-amen-eyebrow, .pv-band .pv-form-eyebrow {
  font-family: "Inter", sans-serif; font-size: 13px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; color: #D92E2E; margin: 0 0 10px;
}

/* Narrativa (centrada, formato del diseño) */
.pv-narrativa { max-width: 780px; margin: 0 auto; text-align: center; }
.pv-narr-title { font-family: "Inter", sans-serif; font-weight: 700; font-size: 34px; line-height: 1.2; color: #1A1A1A; margin: 0 0 22px; letter-spacing: -.5px; }
.pv-narr-title span { color: #D92E2E; }
.pv-narr-text p { font-family: "Inter", sans-serif; font-size: 16px; line-height: 1.75; color: #5A5A5A; margin: 0 0 16px; }
.pv-narr-btn { display: inline-flex; align-items: center; margin-top: 24px; background: #D92E2E; color: #fff; font-family: "Inter", sans-serif; font-weight: 600; font-size: 15px; padding: 14px 30px; border-radius: 8px; text-decoration: none; transition: background .2s; }
.pv-narr-btn:hover { background: #B81F1F; }

/* Áreas sociales (título centrado + tiles, formato del diseño) */
.pv-amenidades { text-align: center; }
.pv-amen-title { font-family: "Inter", sans-serif; font-weight: 400; font-size: 34px; color: #1A1A1A; margin: 0 0 30px; letter-spacing: -.5px; text-align: center; }
.pv-amen-title span { font-weight: 700; }
.pv-amen-carousel { position: relative; }
.pv-amen-carousel.pv-no-scroll .pv-amen-nav { display: none; }
.pv-amen-track { display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding-bottom: 4px; }
.pv-amen-track::-webkit-scrollbar { display: none; }
.pv-amen-slide { flex: 0 0 calc(33.333% - 12px); scroll-snap-align: start; margin: 0; position: relative; border-radius: 16px; overflow: hidden; }
.pv-amen-slide img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.pv-amen-slide figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 20px 18px; color: #fff; font-family: "Inter", sans-serif; font-weight: 700; font-size: 14px; text-transform: uppercase; letter-spacing: .04em; text-align: center; background: linear-gradient(to top, rgba(0,0,0,.78), rgba(0,0,0,0)); }
.pv-amen-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border-radius: 50%; border: 0 !important; background: #fff !important; box-shadow: 0 4px 14px rgba(0,0,0,.18); color: #1A1A1A !important; font-size: 24px; line-height: 1; cursor: pointer; z-index: 2; display: flex; align-items: center; justify-content: center; -webkit-appearance: none; appearance: none; }
.pv-amen-prev { left: -10px; } .pv-amen-next { right: -10px; }
.pv-amen-nav:hover { background: #f5f5f5; }
.pv-amen-chips { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 24px 0 0; padding: 0; }
.pv-amen-chips li { font-family: "Inter", sans-serif; font-size: 14px; color: #4A4A4A; background: #F1ECE4; border-radius: 999px; padding: 8px 16px; }

/* ============================================================
   HÍBRIDO narrativa/áreas — contenedores Elementor editables en 12547.
   La estructura (centrado/ancho/padding) va por ID; la tipografía de
   título/descripción/botón se edita en los settings de cada widget.
   ============================================================ */
.pv-hl { color: #D92E2E; }                                  /* realce del título (convención *...*) */
.elementor-element-pvnarr { max-width: 780px; margin: 0 auto; padding: 56px 0; text-align: center; }
.elementor-element-pvamen { padding: 56px 0; text-align: center; }
/* el ancla "Agendar mi visita" → sala de ventas no debe quedar bajo header+tabs sticky */
#pv-sala-ventas { scroll-margin-top: 140px; }
@media (max-width: 767px) {
  .elementor-element-pvnarr, .elementor-element-pvamen { padding: 44px 0; }
}

/* Ubicación (texto + tabs + lista numerada IZQ, mapa DER) */
.pv-ubi-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 0 26px; flex-wrap: wrap; }
.pv-ubi-title { font-family: "Inter", sans-serif; font-weight: 400; font-size: 32px; color: #1A1A1A; margin: 0; letter-spacing: -.5px; }
.pv-ubi-title span { font-weight: 700; }
.pv-ubi-gmaps { font-family: "Inter", sans-serif; font-weight: 600; font-size: 14px; color: #1A1A1A; text-decoration: none; border: 1px solid #D9D9D9; border-radius: 8px; padding: 11px 20px; transition: border-color .2s, color .2s; white-space: nowrap; }
.pv-ubi-gmaps:hover { border-color: #D92E2E; color: #D92E2E; }
.pv-ubi-grid { display: grid; grid-template-columns: 1fr 1.08fr; gap: 40px; align-items: start; }
.pv-ubi-texto { font-family: "Inter", sans-serif; font-size: 16px; line-height: 1.7; color: #5A5A5A; margin: 0 0 24px; }
.pv-ubi-map img { width: 100%; height: auto; border-radius: 16px; display: block; }
.pv-ubi-embed iframe { width: 100%; aspect-ratio: 4 / 3; border: 0; border-radius: 16px; display: block; }
.pv-poi-tabs { display: flex; flex-wrap: wrap; gap: 4px; margin: 0 0 8px; border-bottom: 1px solid #ECECEC; }
.pv-poi-tab { -webkit-appearance: none; appearance: none; border: 0 !important; background: transparent !important; box-shadow: none !important; font-family: "Inter", sans-serif; font-weight: 600; font-size: 14px; color: #8A8A8A !important; padding: 8px 4px; margin-right: 12px; cursor: pointer; border-bottom: 2px solid transparent !important; margin-bottom: -1px; border-radius: 0 !important; }
.pv-poi-tab.is-active { color: #D92E2E !important; border-bottom-color: #D92E2E !important; }
.pv-poi-list { counter-reset: poi; list-style: none; margin: 0; padding: 0; display: none; }
.pv-poi-list.is-active { display: block; }
.pv-poi-list li { counter-increment: poi; display: flex; align-items: center; gap: 12px; padding: 15px 2px; border-bottom: 1px solid #ECECEC; font-family: "Inter", sans-serif; }
.pv-poi-list li::before { content: counter(poi) "."; font-weight: 600; color: #1A1A1A; font-size: 15px; min-width: 16px; }
.pv-poi-list li span { flex: 1; color: #4A4A4A; font-size: 15px; }
.pv-poi-list li i { color: #D92E2E; font-style: normal; font-size: 16px; }

/* Sala de ventas (cabecera + horarios + form-card sobre imagen lifestyle) */
.pv-form { display: block; background: none; box-shadow: none; border-radius: 0; }
.pv-sv-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin: 0 0 24px; flex-wrap: wrap; }
.pv-sv-title { font-family: "Inter", sans-serif; font-weight: 700; font-size: 22px; color: #1A1A1A; margin: 0; display: flex; align-items: center; gap: 8px; }
.pv-sv-ico { display: inline-flex; align-items: center; color: #D92E2E; }
.pv-sv-ico svg { display: block; width: 22px; height: 22px; }
.pv-sv-horarios { display: flex; gap: 44px; }
.pv-sv-horarios > div { font-family: "Inter", sans-serif; font-size: 14px; color: #4A4A4A; }
.pv-sv-horarios span { display: block; text-transform: uppercase; letter-spacing: .06em; font-weight: 600; color: #B0B0B0; font-size: 11px; margin-bottom: 3px; }
/* contacto de sala (dirección/teléfono/mapa) — campos reales sala_* */
.pv-sv-meta { display: flex; flex-direction: column; gap: 12px; align-items: flex-end; text-align: right; }
.pv-sv-contacto { display: flex; flex-direction: column; gap: 4px; align-items: flex-end; font-family: "Inter", sans-serif; font-size: 13px; color: #5A5A5A; }
.pv-sv-contacto a { color: #5A5A5A; text-decoration: none; }
.pv-sv-mapa { color: #D92E2E !important; font-weight: 600; }
.pv-sv-mapa:hover, .pv-sv-tel:hover { text-decoration: underline; }
.pv-poi-dist { color: #9A9A9A; font-weight: 400; }
.pv-sv-body { position: relative; background-size: cover; background-position: center; border-radius: 20px; overflow: hidden; padding: 48px; display: flex; align-items: center; min-height: 560px; }
.pv-sv-card { background: #fff; border-radius: 16px; box-shadow: 0 18px 50px rgba(0,0,0,.2); padding: 36px; max-width: 640px; width: 100%; }
.pv-sv-card-title { font-family: "Inter", sans-serif; font-weight: 700; font-size: 22px; color: #1A1A1A; margin: 0 0 22px; }
.pv-sv-card .gform_fields { display: grid !important; grid-template-columns: repeat(12, 1fr); gap: 14px 18px; margin: 0; padding: 0; list-style: none; }
.pv-sv-card .gform_fields > li.gfield { grid-column: span 12; margin: 0; padding: 0; }
/* media fila (2 columnas) — markup legacy, por ID de campo */
.pv-sv-card #field_1_12, .pv-sv-card #field_1_13, .pv-sv-card #field_1_17, .pv-sv-card #field_1_40,
.pv-sv-card #field_1_4, .pv-sv-card #field_1_11, .pv-sv-card #field_1_26, .pv-sv-card #field_1_27 { grid-column: span 6; }
/* fila completa: intro, Modelo, Mensaje, Consentimiento (+ cualquier width-full / textarea / consent) */
.pv-sv-card #field_1_33, .pv-sv-card #field_1_39, .pv-sv-card #field_1_6, .pv-sv-card #field_1_38,
.pv-sv-card .gfield--width-full, .pv-sv-card li.gfield:has(.ginput_container_textarea), .pv-sv-card li.gfield:has(.ginput_container_consent) { grid-column: span 12; }
/* ocultar campos GF ocultos + HTML vacíos (no deben ocupar celda del grid) */
.pv-sv-card .gfield_visibility_hidden, .pv-sv-card li.gfield_html:empty, .pv-sv-card #field_1_35 { display: none !important; }
.pv-sv-card .gfield_html { font-family: "Inter", sans-serif; font-size: 13px; color: #8A8A8A; line-height: 1.5; }
.pv-sv-card .gfield_label { font-family: "Inter", sans-serif; font-size: 13px; font-weight: 600; color: #4A4A4A; margin-bottom: 4px; }
.pv-sv-card input[type="text"], .pv-sv-card input[type="email"], .pv-sv-card input[type="tel"], .pv-sv-card input[type="number"], .pv-sv-card select, .pv-sv-card textarea { width: 100%; border: 1px solid #E2E2E2; border-radius: 8px; padding: 10px 12px; font-family: "Inter", sans-serif; font-size: 14px; box-sizing: border-box; }
.pv-sv-card .gform_footer { margin-top: 8px; }
.pv-sv-card .gform_footer input[type="submit"], .pv-sv-card .gform_footer button { background: #D92E2E !important; color: #fff !important; border: 0 !important; border-radius: 8px; padding: 13px 28px; font-family: "Inter", sans-serif; font-weight: 600; font-size: 15px; cursor: pointer; width: 100%; }

@media (max-width: 880px) {
  .pv-band { padding: 44px 0; }
  .pv-narr-title, .pv-amen-title, .pv-ubi-title { font-size: 25px; }
  .pv-amen-slide { flex-basis: calc(82% - 12px); }
  .pv-amen-nav { display: none; }
  .pv-ubi-grid { grid-template-columns: 1fr; gap: 24px; }
  .pv-sv-body { padding: 16px; min-height: 0; }
  .pv-sv-card { padding: 24px 20px; }
  .pv-sv-card .gform_fields { grid-template-columns: 1fr; }
  .pv-sv-card .gform_fields > li.gfield { grid-column: 1 / -1 !important; }
  /* Cabecera de sala de ventas en móvil: TODO a la izquierda y un horario por
     línea. Con `flex-direction:row` los dos bloques (Sala de ventas / Oficinas
     administrativas) quedaban en ~160px cada uno → la etiqueta "OFICINAS
     ADMINISTRATIVAS" se partía en 2 líneas y el horario en 2 más, alineado a la
     derecha contra el título de la izquierda = desproporcionado. */
  .pv-sv-meta { align-items: flex-start; text-align: left; width: 100%; }
  .pv-sv-contacto { align-items: flex-start; }
  .pv-sv-horarios { flex-direction: column; gap: 14px; }
  .pv-ubi-head { gap: 12px; }
}

/* ============================================================
   SINGLE DE MODELO (/modelos/<slug>/)
   ============================================================ */
.pv-modelo-single { width: 100%; }
/* HERO: 2 columnas full-bleed (info izq + carrusel der). El carrusel reusa .pv-hero-gal (global). */
.pv-mod-hero { display: grid; grid-template-columns: 42% 58%; width: 100vw; margin-left: calc(50% - 50vw); min-height: 72vh; background: #fff; }
.pv-mod-hero-info { padding: 56px 5% 56px 6%; display: flex; flex-direction: column; justify-content: center; }
.pv-mod-bc { font-family: "Inter", sans-serif; font-size: 13px; color: #9A9A9A; margin: 0 0 30px; display: flex; flex-direction: column; gap: 6px; }
.pv-mod-volver { color: #1A1A1A; text-decoration: none; font-weight: 600; width: max-content; }
.pv-mod-volver:hover { color: #D92E2E; }
.pv-mod-crumbs strong { color: #1A1A1A; }
.pv-mod-crumbs a { color: inherit; text-decoration: none; }
.pv-mod-crumbs a:hover { color: #D92E2E; }
.pv-mod-nombre { font-family: "Inter", sans-serif; font-weight: 700; font-size: 54px; line-height: 1.05; color: #1A1A1A; text-transform: uppercase; margin: 0 0 10px; letter-spacing: -1px; }
.pv-mod-precio { font-family: "Inter", sans-serif; font-size: 18px; color: #5A5A5A; margin: 0 0 28px; }
.pv-mod-datos { list-style: none; margin: 0 0 32px; padding: 0; display: flex; flex-direction: column; gap: 13px; }
.pv-mod-datos li { display: flex; align-items: center; gap: 11px; font-family: "Inter", sans-serif; font-size: 15px; color: #4A4A4A; }
.pv-mod-datos .pv-mod-ic { color: #D92E2E; flex-shrink: 0; }
.pv-mod-cta { display: flex; gap: 14px; flex-wrap: wrap; }
.pv-mod-btn { display: inline-flex; align-items: center; justify-content: center; font-family: "Inter", sans-serif; font-weight: 600; font-size: 15px; padding: 14px 30px; border-radius: 8px; text-decoration: none; line-height: 1; transition: background .2s, color .2s, border-color .2s; }
.pv-mod-btn-primary { background: #D92E2E; color: #fff; }
.pv-mod-btn-primary:hover { background: #b91f1f; color: #fff; }
.pv-mod-btn-ghost { background: #fff; color: #1A1A1A; border: 1px solid #D9D9D9!important; }
.pv-mod-btn-ghost:hover { border-color: #D92E2E; color: #D92E2E!important; }
.pv-mod-hero-media { position: relative; min-height: 72vh; }
/* PLANO DEL MODELO */
.pv-mod-plano { padding: 64px 0; }
.pv-mod-plano-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 56px; align-items: center; }
.pv-mod-plano-img img { width: 100%; height: auto; border-radius: 16px; display: block; }
.pv-mod-plano-ph { aspect-ratio: 4 / 3; background: #F4F4F4; border-radius: 16px; display: flex; align-items: center; justify-content: center; color: #9A9A9A; font-family: "Inter", sans-serif; }
.pv-mod-plano-im { width: 100%; height: auto; border-radius: 16px; display: block; }
/* Planos VERTICALES (retrato): sin tope, un plano tipo 1265×2024 se estira a
   ~569×911 en la columna y desequilibra la banda respecto a la ficha. En desktop
   lo contenemos a una altura máxima, manteniéndolo entero (width:auto + max-width)
   y centrado. Los planos HORIZONTALES (p.ej. Van Gogh, ~1600×1120) ya renderizan
   más bajos que el tope y NO se ven afectados. En móvil (banda apilada) se deja a
   ancho completo (scroll natural). */
@media (min-width: 881px) {
  .pv-mod-plano-img img, .pv-mod-plano-im {
    width: auto; max-width: 100%; height: auto; max-height: 600px; margin-inline: auto;
  }
}
/* pestañas Planta baja / Planta alta (modelos de 2 niveles) */
.pv-mod-plano-tabbar { display: flex; gap: 8px; margin: 0 0 16px; }
.pv-mod-plano-tab { -webkit-appearance: none; appearance: none; border: 1px solid #D92E2E !important; background: #fff !important; color: #D92E2E !important; font-family: "Inter", sans-serif; font-weight: 600; font-size: 14px; padding: 9px 18px; border-radius: 8px; cursor: pointer; transition: background .2s, border-color .2s, color .2s; }
.pv-mod-plano-tab.is-active { background: #D92E2E; border-color: #D92E2E; color: #fff; }
.pv-mod-plano-panes .pv-mod-plano-im { display: none; }
.pv-mod-plano-panes .pv-mod-plano-im.is-active { display: block; }
/* Variantes/tipos (A/C/D): el selector vive en la ficha (der) y controla también el plano (izq). */
.pv-mod-var-tabbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.pv-mod-var-tab { -webkit-appearance: none; appearance: none; border: 1px solid #D92E2E !important; background: #fff !important; color: #D92E2E !important; font-family: "Inter", sans-serif; font-weight: 600; font-size: 14px; padding: 9px 18px; border-radius: 8px; cursor: pointer; transition: background .2s, border-color .2s, color .2s; }
.pv-mod-var-tab.is-active { background: #D92E2E; border-color: #D92E2E; color: #fff; }
/* Fix :focus/:active — el tema (GeneratePress) pone fondo oscuro al hacer clic en <button>,
   lo que dejaba el tab activo "negro con rojo" y el botón 360 con estilo raro. Forzamos el estilo. */
.pv-mod-btn:focus, .pv-mod-btn:active { outline: none; box-shadow: none; }
.pv-mod-btn-ghost, .pv-mod-btn-ghost:focus, .pv-mod-btn-ghost:active { background: #fff !important; color: #1A1A1A !important; }
.pv-mod-btn-ghost:hover { background: #fff !important; border-color: #D92E2E !important; color: #D92E2E !important; }
.pv-mod-btn-primary:focus, .pv-mod-btn-primary:active { background: #D92E2E !important; color: #fff !important; }
.pv-mod-plano-tab:focus, .pv-mod-plano-tab:active { background: #fff !important; color: #D92E2E !important; border-color: #D92E2E !important; outline: none; }
.pv-mod-plano-tab.is-active, .pv-mod-plano-tab.is-active:hover, .pv-mod-plano-tab.is-active:focus, .pv-mod-plano-tab.is-active:active { background: #D92E2E !important; border-color: #D92E2E !important; color: #fff !important; }
.pv-mod-var-tab:focus, .pv-mod-var-tab:active { background: #fff !important; color: #D92E2E !important; border-color: #D92E2E !important; outline: none; }
.pv-mod-var-tab.is-active, .pv-mod-var-tab.is-active:hover, .pv-mod-var-tab.is-active:focus, .pv-mod-var-tab.is-active:active { background: #D92E2E !important; border-color: #D92E2E !important; color: #fff !important; }
.pv-mod-var .pv-mod-ficha { display: none; }
.pv-mod-var .pv-mod-ficha.is-active { display: flex; }
.pv-mod-var-planos .pv-mod-plano-im { display: none; }
.pv-mod-var-planos .pv-mod-plano-im.is-active { display: block; }
/* el carrusel del hero del modelo: RELATIVO con altura (Elementor hace el widget
   position:relative con altura 0, así que el .pv-hero-gal absolute colapsaba). */
.elementor-element-pvmheror { position: relative; }
.elementor-element-pvmheror .pv-hero-gal { position: relative; height: 72vh; width: 100%; }
/* Modal del recorrido 360 (Matterport) */
.pv-360-modal { position: fixed; inset: 0; z-index: 99999; background: rgba(0,0,0,.82); display: flex; align-items: center; justify-content: center; padding: 3vh 3vw; }
.pv-360-box { position: relative; width: min(1100px, 96vw); height: min(680px, 88vh); background: #000; border-radius: 12px; overflow: hidden; box-shadow: 0 30px 80px rgba(0,0,0,.5); }
.pv-360-box iframe { width: 100%; height: 100%; border: 0; display: block; }
.pv-360-close { position: absolute; top: 10px; right: 12px; z-index: 2; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255,255,255,.92); color: #1A1A1A; font-size: 26px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s; }
.pv-360-close:hover { background: #fff; }
.pv-mod-plano-title { font-family: "Inter", sans-serif; font-weight: 400; font-size: 34px; color: #1A1A1A; margin: 0 0 26px; letter-spacing: -.5px; }
.pv-mod-plano-title span { font-weight: 700; }
.pv-mod-ficha { list-style: none; margin: 0 0 30px; padding: 0; display: flex; flex-direction: column; gap: 15px; }
.pv-mod-ficha li { display: flex; align-items: center; gap: 12px; font-family: "Inter", sans-serif; font-size: 16px; color: #4A4A4A; }
.pv-mod-ficha .pv-mod-ic { color: #1A1A1A; }
/* ÁREAS SOCIALES en el modelo (el heading reusa .pv-amen-title) */
.pv-mod-areas { text-align: center; padding-top: 8px; }
.pv-mod-areas .pv-amen-title { margin-bottom: 32px; }
@media (max-width: 880px) {
  /* hero: apilar; galería arriba */
  .elementor-element-pvmhero { flex-direction: column !important; min-height: 0 !important; }
  .elementor-element-pvmherol, .elementor-element-pvmheror { width: 100% !important; }
  .elementor-element-pvmheror { min-height: 56vh !important; order: -1; }
  .elementor-element-pvmheror .pv-hero-gal { height: 56vh; }
  .pv-mod-nombre { font-size: 36px; }
  /* plano: apilar */
  .elementor-element-pvmplano { flex-direction: column !important; }
  .elementor-element-pvmplanoimg, .elementor-element-pvmplanoinfo { width: 100% !important; }
  .pv-mod-plano-title { font-size: 26px; }
  /* padding lateral más chico en móvil para las bandas */
  .elementor-element-pvmplano, .elementor-element-pvmareas, .elementor-element-pvmubic, .elementor-element-pvmsala { padding-left: 20px !important; padding-right: 20px !important; }
}

/* Centrar los tabs en desktop (en móvil mantienen scroll horizontal desde el inicio) */
@media (min-width: 768px) {
  .pv-tabs .jet-listing-grid__items { justify-content: center; }
}

/* ============================================================
 * PÁGINA DE CONTACTO (page 2911)
 * ============================================================ */
.pv-co-eyebrow{display:inline-block;font:600 13px/1 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#D92E2E;margin:0 0 14px}
.pv-co-h2{font:700 clamp(26px,3.4vw,38px)/1.15 Inter,sans-serif;color:#1A1A1A;margin:0 0 10px}
.pv-co-h3{font:600 17px/1.3 Inter,sans-serif;color:#1A1A1A;margin:0 0 12px;display:flex;align-items:center;gap:8px}
.pv-co-lead{font:400 16px/1.6 Inter,sans-serif;color:#6b6660;margin:0}
.pv-ci{flex:none;color:inherit}
.pv-co-hero,.pv-co-form,.pv-co-salas,.pv-co-rrhh{width:100vw;margin-left:calc(50% - 50vw);box-sizing:border-box}
/* HERO */
.pv-co-hero{background:#FBF7F4;padding:72px 24px 64px;text-align:center}
.pv-co-hero__in{max-width:760px;margin:0 auto}
.pv-co-title{font:700 clamp(32px,5vw,52px)/1.1 Inter,sans-serif;color:#1A1A1A;margin:0 0 16px}
.pv-co-title span{color:#D92E2E}
.pv-co-sub{font:400 clamp(16px,2vw,19px)/1.6 Inter,sans-serif;color:#6b6660;margin:0 auto 28px;max-width:600px}
.pv-co-chips{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
a.pv-co-chip{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:999px;font:600 15px/1 Inter,sans-serif;text-decoration:none;border:1.5px solid #D92E2E;color:#D92E2E;transition:.18s}
a.pv-co-chip:hover{background:#D92E2E;color:#fff}
a.pv-co-chip--solid{background:#D92E2E;color:#fff}
a.pv-co-chip--solid:hover{background:#b81f1f;border-color:#b81f1f}
/* card + btn base */
.pv-co-card{background:#fff;border:1px solid #efe9e3;border-radius:16px;box-shadow:0 4px 24px rgba(40,20,10,.05)}
.pv-co-btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:10px;background:#D92E2E;color:#fff;font:600 15px/1 Inter,sans-serif;text-decoration:none;transition:.18s}
.pv-co-btn:hover{background:#b81f1f;color:#fff}
.pv-co-btn--lg{padding:15px 30px;font-size:16px}
/* FORM + OFICINAS */
.pv-co-form{background:#fff;padding:64px 24px}
.pv-co-formgrid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1.5fr 1fr;gap:32px;align-items:start}
.pv-co-formcard{padding:34px 36px}
.pv-co-formcard .pv-co-h2{font-size:28px}
.pv-co-aside{display:flex;flex-direction:column;gap:20px}
.pv-co-office{padding:26px 28px}
.pv-co-office-line{font:400 16px/1.55 Inter,sans-serif;color:#3b3733;margin:0 0 12px}
.pv-co-office-hr{font:400 14px/1.4 Inter,sans-serif;color:#6b6660;display:flex;align-items:center;gap:8px;margin:0 0 18px}
.pv-co-map{border-radius:16px;overflow:hidden;height:240px;border:1px solid #efe9e3}
.pv-co-map iframe{display:block;width:100%;height:100%}
.pv-co-formcard .gform_wrapper{margin:0}
.pv-co-formcard .gform_wrapper .gfield_label{font:500 14px/1.3 Inter,sans-serif!important;color:#3b3733!important}
.pv-co-formcard .gform_wrapper input:not([type=submit]):not([type=checkbox]):not([type=radio]),.pv-co-formcard .gform_wrapper select,.pv-co-formcard .gform_wrapper textarea{border:1px solid #ddd5cd!important;border-radius:10px!important;padding:11px 14px!important;font:400 15px/1.3 Inter,sans-serif!important;background:#fff!important}
.pv-co-formcard .gform_wrapper input:focus,.pv-co-formcard .gform_wrapper select:focus,.pv-co-formcard .gform_wrapper textarea:focus{border-color:#D92E2E!important;outline:none!important;box-shadow:0 0 0 3px rgba(217,46,46,.12)!important}
.pv-co-formcard .gform_footer input[type=submit]{background:#D92E2E!important;border:none!important;border-radius:10px!important;color:#fff!important;font:600 16px/1 Inter,sans-serif!important;padding:14px 30px!important;cursor:pointer;transition:.18s;width:auto!important}
.pv-co-formcard .gform_footer input[type=submit]:hover{background:#b81f1f!important}
/* SALAS */
.pv-co-salas{background:#F7F4F0;padding:64px 24px 72px}
.pv-co-salas__head{text-align:center;max-width:640px;margin:0 auto 36px}
.pv-co-tabs{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:0 auto 34px;max-width:1100px}
/* !important: ganarle a los estilos de botón por defecto de Elementor */
.pv-co-tabs .pv-co-tab{display:inline-flex!important;align-items:center;padding:11px 22px!important;border-radius:999px!important;border:1.5px solid #e4ddd5!important;background:#fff!important;color:#5b554f!important;font:600 15px/1 Inter,sans-serif!important;letter-spacing:normal!important;text-transform:none!important;box-shadow:none!important;cursor:pointer;transition:.18s;width:auto!important}
.pv-co-tabs .pv-co-tab:hover{border-color:#D92E2E!important;color:#D92E2E!important;background:#fff!important}
.pv-co-tabs .pv-co-tab.is-active{background:#D92E2E!important;border-color:#D92E2E!important;color:#fff!important}
.pv-co-tabs .pv-co-tab:focus{outline:none!important}
.pv-co-pane{display:none}
.pv-co-pane.is-active{display:block;animation:pvCoFade .25s ease}
@keyframes pvCoFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.pv-co-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px}
.pv-sala{padding:24px 26px 26px;display:flex;flex-direction:column;border-top:3px solid #D92E2E;transition:.18s}
.pv-sala:hover{box-shadow:0 10px 30px rgba(40,20,10,.10);transform:translateY(-2px)}
.pv-sala__hd{display:flex;align-items:center;justify-content:center;min-height:54px;margin:0 0 16px;padding:0 0 16px;border-bottom:1px solid #f0eae4}
.pv-sala__logo{max-height:46px;max-width:180px;width:auto!important;height:auto!important;object-fit:contain;display:block}
.pv-sala__name{font:700 19px/1.25 Inter,sans-serif;color:#1A1A1A;margin:0;text-align:center}
.pv-sala__tel{display:inline-flex;align-items:center;gap:8px;font:600 16px/1 Inter,sans-serif;color:#D92E2E;text-decoration:none;margin:0 0 10px;width:fit-content}
.pv-sala__tel:hover{text-decoration:underline}
.pv-sala__hr{display:flex;align-items:flex-start;gap:8px;font:400 13.5px/1.45 Inter,sans-serif;color:#6b6660;margin:0 0 18px}
.pv-sala__hr .pv-ci{margin-top:1px}
.pv-sala__ejec{border-top:1px solid #f0eae4;padding-top:16px;margin-top:auto}
.pv-sala__ejec-t{display:block;font:600 12px/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#a39a90;margin:0 0 12px}
.pv-ejec{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 0}
.pv-ejec+.pv-ejec{border-top:1px solid #f6f1ec}
.pv-ejec__n{font:500 15px/1.3 Inter,sans-serif;color:#2a2722}
.pv-ejec__links{display:flex;align-items:center;gap:6px;flex:none}
.pv-ejec__a{display:inline-flex;align-items:center;gap:5px;font:500 13px/1 Inter,sans-serif;color:#6b6660;text-decoration:none;padding:5px 8px;border-radius:8px}
.pv-ejec__a:hover{background:#f3eee9;color:#1A1A1A}
.pv-ejec__ic{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border-radius:8px;color:#6b6660;border:1px solid #ece5de;text-decoration:none;transition:.16s}
.pv-ejec__ic:hover{border-color:#D92E2E;color:#D92E2E}
.pv-ejec__wa:hover{border-color:#25D366;color:#25D366}
/* RRHH */
.pv-co-rrhh{background:#D92E2E;padding:56px 24px;text-align:center}
.pv-co-rrhh__t{font:700 clamp(24px,3vw,32px)/1.2 Inter,sans-serif;color:#fff;margin:0 0 10px}
.pv-co-rrhh__s{font:400 17px/1.5 Inter,sans-serif;color:#ffe3e3;margin:0 0 24px}
.pv-co-rrhh .pv-co-btn{background:#fff;color:#D92E2E}
.pv-co-rrhh .pv-co-btn:hover{background:#1A1A1A;color:#fff}
@media (max-width:860px){.pv-co-formgrid{grid-template-columns:1fr}.pv-co-formcard{padding:26px 22px}}
@media (max-width:640px){.pv-co-tabs{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;padding-bottom:6px}.pv-co-tab{flex:none}.pv-co-grid{grid-template-columns:1fr}}

/* ============================================================
 * CONTACTO NATIVO (page 2911, Elementor) — estilo de WIDGETS
 * (los containers se estilan por settings de Elementor; aquí los widgets,
 *  que SÍ emiten su clase, apuntando a su estructura interna nativa)
 * ============================================================ */
.pv-co-eyebrow .elementor-heading-title{font:600 13px/1 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#D92E2E}
.pv-co-title .elementor-heading-title{font:700 clamp(32px,5vw,52px)/1.1 Inter,sans-serif;color:#1A1A1A}
.pv-co-title .elementor-heading-title span{color:#D92E2E}
.pv-co-sub .elementor-widget-container,.pv-co-sub p{font:400 clamp(16px,2vw,19px)/1.6 Inter,sans-serif;color:#6b6660;text-align:center;margin:0 auto;max-width:600px}
.pv-co-h2 .elementor-heading-title{font:700 clamp(26px,3.4vw,34px)/1.15 Inter,sans-serif;color:#1A1A1A}
.pv-co-h3 .elementor-heading-title{font:600 17px/1.3 Inter,sans-serif;color:#1A1A1A}
.pv-co-lead p,.pv-co-lead .elementor-widget-container{font:400 16px/1.6 Inter,sans-serif;color:#6b6660;margin:0}
.pv-co-chip .elementor-button{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:999px;font:600 15px/1 Inter,sans-serif;border:1.5px solid #D92E2E;color:#D92E2E;background:transparent;transition:.18s}
.pv-co-chip .elementor-button:hover{background:#D92E2E;color:#fff;border-color:#D92E2E}
.pv-co-chip--solid .elementor-button{background:#D92E2E;color:#fff}
.pv-co-chip--solid .elementor-button:hover{background:#b81f1f}
.pv-co-btn .elementor-button{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:10px;background:#D92E2E;color:#fff;font:600 15px/1 Inter,sans-serif;border:none;transition:.18s}
.pv-co-btn .elementor-button:hover{background:#b81f1f}
.pv-co-btn--lg .elementor-button{padding:15px 30px;font-size:16px}
.pv-co-office-line p{font:400 16px/1.55 Inter,sans-serif;color:#3b3733;margin:0}
.pv-co-office-hr p{font:400 14px/1.4 Inter,sans-serif;color:#6b6660;margin:0}
.pv-co-map iframe{border-radius:16px;display:block}
.pv-sala__logo img{max-height:46px;max-width:180px;width:auto;object-fit:contain;margin:0 auto;display:block}
.pv-sala__name .elementor-heading-title{font:700 19px/1.25 Inter,sans-serif;color:#1A1A1A;text-align:center}
.pv-sala__tel .elementor-button{display:inline-flex;align-items:center;gap:8px;padding:0;background:transparent;color:#D92E2E;font:600 16px/1 Inter,sans-serif;border:none}
.pv-sala__tel .elementor-button:hover{text-decoration:underline;background:transparent}
.pv-sala__hr p{font:400 13.5px/1.45 Inter,sans-serif;color:#6b6660;margin:0}
.pv-sala__ejec-t .elementor-heading-title{font:600 12px/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#a39a90}
.pv-ejec__n .elementor-heading-title{font:500 15px/1.3 Inter,sans-serif;color:#2a2722}
.pv-ejec__links .elementor-icon-list-items{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}
.pv-ejec__links .elementor-icon-list-item{margin:0!important;padding:0!important;border:none!important}
.pv-ejec__links .elementor-icon-list-item .elementor-icon-list-icon{display:none}
.pv-ejec__links .elementor-icon-list-item a{display:inline-flex;align-items:center;gap:4px;font:500 12.5px/1 Inter,sans-serif;color:#6b6660;padding:5px 9px;border:1px solid #ece5de;border-radius:8px;transition:.16s}
.pv-ejec__links .elementor-icon-list-item a:hover{border-color:#D92E2E;color:#D92E2E}
.pv-ejec__links .elementor-icon-list-text{display:inline;padding:0;border:0;background:none;font:inherit;color:inherit}
/* Nested Tabs → pills de zona */
.pv-co-tabsw .e-n-tabs-heading{justify-content:center;gap:10px;flex-wrap:wrap;border:none!important;margin-bottom:28px}
.pv-co-tabsw .e-n-tab-title{padding:11px 22px!important;border-radius:999px!important;border:1.5px solid #e4ddd5!important;background:#fff!important;color:#5b554f!important;font:600 15px/1 Inter,sans-serif!important;box-shadow:none!important}
.pv-co-tabsw .e-n-tab-title:hover{border-color:#D92E2E!important;color:#D92E2E!important}
.pv-co-tabsw .e-n-tab-title[aria-selected=true]{background:#D92E2E!important;border-color:#D92E2E!important;color:#fff!important}
.pv-co-tabsw .e-n-tabs-content>.e-con{padding:0!important}

/* ============================================================
   BLOG — Listado "Nuestro Blog" (page 3531) + plantilla Single de post
   Contenedores por #id (Elementor renderiza _element_id); widgets por clase.
   Tokens de marca: rojo #D92E2E / hover #B81F1F · texto #1A1A1A/#3b3733/#6b6660 · bordes #e4ddd5 · Inter.
   ============================================================ */

/* ---- HERO ---- */
#pv-blog-hero{ position:relative; }
.pv-blog-hero-title .elementor-heading-title{
  color:#fff; font-family:"Inter",sans-serif; font-weight:700; font-size:48px; line-height:1.12; margin:0;
  text-shadow:0 2px 18px rgba(0,0,0,.25);
}
.pv-blog-hero-sub .elementor-heading-title{
  color:rgba(255,255,255,.92); font-family:"Inter",sans-serif; font-weight:400; font-size:19px; line-height:1.4; margin:14px auto 0; max-width:640px;
}

/* ---- BÚSQUEDA (pill superpuesta al hero) ---- */
#pv-blog-searchwrap{ max-width:900px; margin:-56px auto 0; padding:0 24px; position:relative; z-index:5; }
.pv-blog-search .elementor-search-form{
  background:#fff; border-radius:16px; box-shadow:0 14px 40px rgba(30,16,8,.16); padding:8px;
}
/* la fila real (input + botón) es __container, no el <form> */
.pv-blog-search .elementor-search-form__container{
  display:flex; align-items:center; gap:10px; min-height:auto; background:transparent; border:0;
}
.pv-blog-search .elementor-search-form__input{
  flex:1 1 auto; min-width:0; font-family:"Inter",sans-serif; font-size:16px; color:#1A1A1A; background:transparent; padding:10px 14px;
}
.pv-blog-search .elementor-search-form__input::placeholder{ color:#a39a90; }
.pv-blog-search .elementor-search-form__submit{
  flex:0 0 auto; display:inline-flex; align-items:center; gap:8px;
  background:#D92E2E; color:#fff; border:none; border-radius:10px;
  font-family:"Inter",sans-serif; font-weight:600; font-size:15px; padding:12px 22px; cursor:pointer; transition:background .2s ease;
}
.pv-blog-search .elementor-search-form__submit:hover{ background:#B81F1F; }
.pv-blog-search .elementor-search-form__submit::before{
  content:""; width:17px; height:17px; flex:0 0 auto;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='M21 21l-4.35-4.35'/%3E%3C/svg%3E") no-repeat center/contain;
}

/* ---- GRID + tarjetas (widget Posts, skin Classic) ---- */
#pv-blog-grid{ max-width:1200px; margin:0 auto; padding:56px 24px 72px; }
.pv-blog-cards .elementor-post{
  background:#fff; border-radius:16px; overflow:hidden;
  box-shadow:0 6px 20px rgba(0,0,0,.08); display:flex; flex-direction:column;
  transition:transform .25s ease, box-shadow .25s ease;
}
.pv-blog-cards .elementor-post:hover{ transform:translateY(-5px); box-shadow:0 16px 38px rgba(0,0,0,.15); }
.pv-blog-cards .elementor-post__thumbnail{ padding-bottom:0!important; height:auto; }
.pv-blog-cards .elementor-post__thumbnail__link{ display:block; }
.pv-blog-cards .elementor-post__thumbnail img{
  width:100%; aspect-ratio:16/10; object-fit:cover; display:block; transition:transform .45s ease;
}
.pv-blog-cards .elementor-post:hover .elementor-post__thumbnail img{ transform:scale(1.05); }
.pv-blog-cards .elementor-post__text{ padding:20px 20px 22px; display:flex; flex-direction:column; flex:1; }
.pv-blog-cards .elementor-post__title{ margin:0 0 10px; }
.pv-blog-cards .elementor-post__title a{
  font-family:"Inter",sans-serif; font-weight:700; font-size:18px; line-height:1.3; color:#1A1A1A; text-decoration:none;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.pv-blog-cards .elementor-post__title a:hover{ color:#D92E2E; }
.pv-blog-cards .elementor-post__excerpt{ margin:0 0 18px; }
.pv-blog-cards .elementor-post__excerpt p{
  font-family:"Inter",sans-serif; font-size:14px; line-height:1.55; color:#6b6660; margin:0;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.pv-blog-cards .elementor-post__read-more{
  margin-top:auto; display:flex; align-items:center; justify-content:center; gap:8px;
  border:1px solid #e4ddd5; border-radius:10px; padding:11px 16px;
  font-family:"Inter",sans-serif; font-weight:600; font-size:14px; color:#3b3733; text-decoration:none; transition:.18s;
}
.pv-blog-cards .elementor-post__read-more:hover{ border-color:#D92E2E; color:#D92E2E; background:#fdf3f3; }
.pv-blog-cards .elementor-post__read-more::before{
  content:""; width:17px; height:17px; flex:0 0 auto;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 24 24' fill='none' stroke='%233b3733' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") no-repeat center/contain;
}
.pv-blog-cards .elementor-post__read-more:hover::before{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 24 24' fill='none' stroke='%23D92E2E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
}

/* Paginación */
#pv-blog-grid .elementor-pagination{ margin-top:44px; text-align:center; }
#pv-blog-grid .page-numbers{
  display:inline-flex; align-items:center; justify-content:center; min-width:42px; height:42px; padding:0 12px; margin:0 4px;
  border:1px solid #e4ddd5; border-radius:10px; font-family:"Inter",sans-serif; font-weight:600; font-size:15px; color:#3b3733; text-decoration:none; transition:.18s;
}
#pv-blog-grid .page-numbers.current{ background:#D92E2E; border-color:#D92E2E; color:#fff; }
#pv-blog-grid .page-numbers:hover:not(.current){ border-color:#D92E2E; color:#D92E2E; }

/* ============================================================
   SINGLE de post (plantilla Elementor Theme Builder)
   ============================================================ */
#pv-single-head{ max-width:820px; margin:0 auto; padding:56px 24px 26px; text-align:center; }
.pv-sg-eyebrow .elementor-heading-title{
  font-family:"Inter",sans-serif; font-weight:700; font-size:13px; letter-spacing:.12em; text-transform:uppercase; color:#D92E2E; margin:0 0 14px;
}
.pv-sg-title .elementor-heading-title{
  font-family:"Inter",sans-serif; font-weight:700; font-size:40px; line-height:1.15; color:#1A1A1A; margin:0;
}
.pv-sg-meta{ margin-top:16px; }
.pv-sg-meta .elementor-post-info{ justify-content:center; }
.pv-sg-meta .elementor-post-info__item{ font-family:"Inter",sans-serif; font-size:14px; color:#a39a90; }

#pv-single-featimg{ max-width:980px; margin:8px auto 0; padding:0 24px; }
.pv-sg-featimg img{ width:100%; border-radius:16px; display:block; }
#pv-single-featimg:not(:has(img)){ display:none; }   /* posts sin imagen destacada → sin banner vacío */

#pv-single-body{ max-width:760px; margin:0 auto; padding:36px 24px 20px; }
.pv-sg-content{ font-family:"Inter",sans-serif; }
.pv-sg-content, .pv-sg-content p, .pv-sg-content li{ font-size:17px; line-height:1.75; color:#3b3733; }
.pv-sg-content p{ margin:0 0 22px; }
.pv-sg-content h2{ font-family:"Inter",sans-serif; font-weight:700; font-size:27px; line-height:1.25; color:#1A1A1A; margin:38px 0 14px; }
.pv-sg-content h3{ font-family:"Inter",sans-serif; font-weight:700; font-size:21px; color:#1A1A1A; margin:30px 0 12px; }
.pv-sg-content a{ color:#D92E2E; text-decoration:underline; }
.pv-sg-content a:hover{ color:#B81F1F; }
.pv-sg-content ul, .pv-sg-content ol{ margin:0 0 22px; padding-left:22px; }
.pv-sg-content li{ margin:0 0 8px; }
.pv-sg-content img{ max-width:100%; height:auto; border-radius:12px; margin:10px 0; }
.pv-sg-content blockquote{ border-left:4px solid #D92E2E; margin:26px 0; padding:6px 0 6px 20px; color:#5b554f; font-style:italic; }
/* Posts exportados de Basecamp: párrafos vienen como <div> sueltos y wrapper <article> — dales ritmo de párrafo */
.pv-sg-content article{ margin:0; }
.pv-sg-content div:not([class]){ margin:0 0 22px; }
.pv-sg-content div:not([class]):last-child{ margin-bottom:0; }

#pv-single-related{ max-width:1200px; margin:0 auto; padding:40px 24px 8px; }
.pv-sg-related-t .elementor-heading-title{ font-family:"Inter",sans-serif; font-weight:700; font-size:26px; color:#1A1A1A; margin:0 0 24px; }

#pv-single-cta .pv-sg-cta-t .elementor-heading-title{ font-family:"Inter",sans-serif; font-weight:700; font-size:30px; color:#fff; margin:0 0 22px; text-align:center; }
.pv-sg-cta-btn .elementor-button{
  background:#fff; color:#D92E2E; font-family:"Inter",sans-serif; font-weight:700; font-size:16px;
  border-radius:10px; padding:14px 32px; transition:.18s;
}
.pv-sg-cta-btn .elementor-button:hover{ background:#1A1A1A; color:#fff; }

/* ---- Formulario de lead del blog (GF #4) ---- */
#pv-single-leadform{ max-width:820px; margin:38px auto 0; padding:36px 32px; background:#faf7f3; border:1px solid #f0eae4; border-radius:18px; }
.pv-sg-lead-t .elementor-heading-title{ font:700 26px/1.2 "Inter",sans-serif; color:#1A1A1A; margin:0 0 8px; text-align:center; }
.pv-sg-lead-sub{ text-align:center; margin:0 0 24px; }
.pv-sg-lead-sub p{ font:400 16px/1.5 "Inter",sans-serif; color:#6b6660; margin:0; }
#pv-single-leadform .gform_wrapper{ margin:0; }
#pv-single-leadform .gform_fields{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px 18px; margin:0; padding:0; list-style:none; }
#pv-single-leadform .gform_fields > li.gfield, #pv-single-leadform .gform_fields > .gfield{ grid-column:span 2; margin:0; padding:0; }
#pv-single-leadform .gfield.gfield--width-half{ grid-column:span 1; }
#pv-single-leadform .gfield_visibility_hidden, #pv-single-leadform li.gfield_html:empty{ display:none!important; }
#pv-single-leadform .gfield_label{ font:600 13.5px/1.2 "Inter",sans-serif; color:#3b3733; margin-bottom:6px; }
#pv-single-leadform input[type=text], #pv-single-leadform input[type=email], #pv-single-leadform input[type=tel], #pv-single-leadform input[type=number], #pv-single-leadform select, #pv-single-leadform textarea{
  width:100%; border:1px solid #e4ddd5; border-radius:10px; padding:11px 13px; font:400 15px/1.4 "Inter",sans-serif; color:#1A1A1A; background:#fff; box-sizing:border-box;
}
#pv-single-leadform input:focus, #pv-single-leadform select:focus, #pv-single-leadform textarea:focus{ outline:none; border-color:#D92E2E; box-shadow:0 0 0 3px rgba(217,46,46,.12); }
#pv-single-leadform .gfield_html{ font:400 13px/1.5 "Inter",sans-serif; color:#8A8A8A; }
#pv-single-leadform .gfield_consent_label, #pv-single-leadform .gfield--type-consent label{ font-weight:400; color:#6b6660; }
#pv-single-leadform .gform_footer{ grid-column:span 2; margin-top:12px; }
#pv-single-leadform .gform_footer input[type=submit], #pv-single-leadform .gform_footer button{
  background:#D92E2E!important; color:#fff!important; border:0!important; border-radius:10px!important; padding:14px 34px!important; font:600 16px/1 "Inter",sans-serif!important; cursor:pointer; transition:background .2s ease;
}
#pv-single-leadform .gform_footer input[type=submit]:hover{ background:#B81F1F!important; }
#pv-single-leadform .gform_confirmation_message{ font:400 16px/1.6 "Inter",sans-serif; color:#3b3733; text-align:center; padding:16px; }
#pv-single-leadform .gform_required_legend{ font-size:12px; color:#a39a90; }
@media (max-width:640px){
  #pv-single-leadform{ padding:26px 20px; }
  #pv-single-leadform .gform_fields{ grid-template-columns:1fr; }
  #pv-single-leadform .gform_fields > li.gfield, #pv-single-leadform .gform_footer{ grid-column:1/-1; }
}

/* ---- Compartir + navegación + comentarios del single ---- */
#pv-single-share{ max-width:760px; margin:10px auto 0; padding:20px 24px; border-top:1px solid #f0eae4; border-bottom:1px solid #f0eae4; }
#pv-single-share > .e-con-inner{ display:flex; flex-direction:row; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.pv-sg-share-t .elementor-heading-title{ font:700 16px/1.3 "Inter",sans-serif; color:#1A1A1A; margin:0; }
.pv-sg-share .elementor-share-btn{ transition:transform .15s ease; }
.pv-sg-share .elementor-share-btn:hover{ transform:translateY(-2px); }

#pv-single-nav{ max-width:760px; margin:0 auto; padding:22px 24px; }
.pv-sg-nav .elementor-post-navigation{ font-family:"Inter",sans-serif; }
.pv-sg-nav .post-navigation__prev--title, .pv-sg-nav .post-navigation__next--title{ font-weight:600; color:#1A1A1A; }
.pv-sg-nav a:hover .post-navigation__prev--title, .pv-sg-nav a:hover .post-navigation__next--title{ color:#D92E2E; }
.pv-sg-nav .post-navigation__prev--label, .pv-sg-nav .post-navigation__next--label{ text-transform:uppercase; letter-spacing:.06em; color:#a39a90; font-weight:600; }

#pv-single-comments{ max-width:760px; margin:0 auto; padding:26px 24px 46px; }
#pv-single-comments .comments-title, #pv-single-comments .comment-reply-title{ font:700 22px/1.25 "Inter",sans-serif; color:#1A1A1A; margin:0 0 18px; }
#pv-single-comments .comment-list{ list-style:none; margin:0 0 30px; padding:0; }
#pv-single-comments .comment-body{ border:1px solid #f0eae4; border-radius:12px; padding:16px 18px; margin:0 0 14px; }
#pv-single-comments .comment-author .fn{ font:600 15px/1 "Inter",sans-serif; color:#1A1A1A; }
#pv-single-comments .comment-meta a{ font-size:12.5px; color:#a39a90; text-decoration:none; }
#pv-single-comments .comment-content{ font:400 15px/1.6 "Inter",sans-serif; color:#3b3733; margin-top:8px; }
#pv-single-comments .comment-respond{ background:#faf7f3; border:1px solid #f0eae4; border-radius:16px; padding:24px; }
#pv-single-comments .comment-form label{ font:600 13.5px/1 "Inter",sans-serif; color:#3b3733; display:block; margin:0 0 6px; }
#pv-single-comments .comment-form input[type=text], #pv-single-comments .comment-form input[type=email], #pv-single-comments .comment-form input[type=url], #pv-single-comments .comment-form textarea{
  width:100%; border:1px solid #e4ddd5; border-radius:10px; padding:12px 14px; font:400 15px/1.5 "Inter",sans-serif; color:#1A1A1A; background:#fff; margin:0 0 16px;
}
#pv-single-comments .comment-form input:focus, #pv-single-comments .comment-form textarea:focus{ outline:none; border-color:#D92E2E; box-shadow:0 0 0 3px rgba(217,46,46,.12); }
#pv-single-comments .form-submit .submit{
  background:#D92E2E; color:#fff; border:none; border-radius:10px; padding:13px 30px; font:600 15px/1 "Inter",sans-serif; cursor:pointer; transition:background .2s ease;
}
#pv-single-comments .form-submit .submit:hover{ background:#B81F1F; }
#pv-single-comments .comment-form-cookies-consent{ display:flex; align-items:flex-start; gap:8px; }
#pv-single-comments .comment-form-cookies-consent input{ width:auto; margin:3px 0 0; }
#pv-single-comments .comment-form-cookies-consent label{ margin:0; font-weight:400; color:#6b6660; }
#pv-single-comments .comment-notes, #pv-single-comments .logged-in-as{ font-size:13px; color:#6b6660; }
.pv-chp{ display:none!important; }
@media (max-width:640px){
  #pv-single-share > .e-con-inner{ flex-direction:column; align-items:flex-start; gap:12px; }
}

/* ============================================================
   RESULTADOS DE BÚSQUEDA (plantilla Archive → Search Results)
   Reutiliza .pv-blog-cards para las tarjetas y .pv-blog-search para el buscador.
   ============================================================ */
#pv-search-head{ background:#faf7f3; border-bottom:1px solid #f0eae4; padding:54px 24px 40px; text-align:center; }
.pv-search-eyebrow .elementor-heading-title{ font:700 13px/1 "Inter",sans-serif; letter-spacing:.12em; text-transform:uppercase; color:#D92E2E; margin:0 0 12px; }
.pv-search-title .elementor-heading-title{ font:700 34px/1.15 "Inter",sans-serif; color:#1A1A1A; margin:0; }
#pv-search-head #pv-search-refine{ max-width:720px; margin:26px auto 0; }
#pv-search-grid{ max-width:1200px; margin:0 auto; padding:48px 24px 72px; }
#pv-search-grid .elementor-posts-nothing-found{
  text-align:center; font:400 18px/1.6 "Inter",sans-serif; color:#6b6660;
  background:#fff; border:1px solid #f0eae4; border-radius:14px; padding:44px 24px; max-width:640px; margin:0 auto;
}
#pv-search-grid .elementor-pagination{ margin-top:44px; text-align:center; }
#pv-search-grid .page-numbers{
  display:inline-flex; align-items:center; justify-content:center; min-width:42px; height:42px; padding:0 12px; margin:0 4px;
  border:1px solid #e4ddd5; border-radius:10px; font:600 15px/1 "Inter",sans-serif; color:#3b3733; text-decoration:none; transition:.18s;
}
#pv-search-grid .page-numbers.current{ background:#D92E2E; border-color:#D92E2E; color:#fff; }
#pv-search-grid .page-numbers:hover:not(.current){ border-color:#D92E2E; color:#D92E2E; }
@media (max-width:640px){
  .pv-search-title .elementor-heading-title{ font-size:26px; }
  #pv-search-grid{ padding:36px 18px 56px; }
}

/* ---- Responsive blog ---- */
@media (max-width:1024px){
  .pv-blog-hero-title .elementor-heading-title{ font-size:38px; }
  .pv-sg-title .elementor-heading-title{ font-size:32px; }
}
@media (max-width:640px){
  #pv-blog-searchwrap{ margin-top:-40px; }
  .pv-blog-search .elementor-search-form{ padding:10px; }
  .pv-blog-search .elementor-search-form__container{ flex-direction:column; align-items:stretch; gap:10px; }
  .pv-blog-search .elementor-search-form__submit{ width:100%; justify-content:center; }
  .pv-blog-hero-title .elementor-heading-title{ font-size:32px; }
  #pv-blog-grid{ padding:40px 18px 56px; }
  .pv-sg-content, .pv-sg-content p, .pv-sg-content li{ font-size:16px; }
}

/* ============================================================
   SERVICIO AL CLIENTE (postventa, page 3722) — V2
   Contenedores de sección por #id; tarjetas por settings; widgets por clase.
   ============================================================ */
.pv-sc-hero-title .elementor-heading-title{ color:#fff; font:700 48px/1.12 "Inter",sans-serif; margin:0; text-shadow:0 2px 18px rgba(0,0,0,.25); }
.pv-sc-hero-sub .elementor-heading-title{ color:rgba(255,255,255,.94); font:400 19px/1.45 "Inter",sans-serif; margin:14px auto 0; max-width:680px; }
.pv-sc-sectitle .elementor-heading-title{ font:700 32px/1.2 "Inter",sans-serif; color:#1A1A1A; margin:0 0 0px; }
.pv-sc-secsub .elementor-heading-title{ font:400 16.5px/1.5 "Inter",sans-serif; color:#8a8279; margin:0 auto 12px; max-width:600px; }

/* Tarjetas de contacto */
#pv-sc-contact{ margin-bottom:8px; }
#pv-sc-contact .pv-sc-sectitle .elementor-heading-title{ margin-bottom:12px; }
#pv-sc-contact-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; align-items:stretch; }
.pv-sc-cicon .elementor-icon{ width:70px; height:70px; border-radius:50%; background:#fdf1f1; color:#D92E2E; display:inline-flex; align-items:center; justify-content:center; font-size:27px; margin-bottom:4px; transition:transform .2s ease; }
.pv-sc-cicon .elementor-icon svg{ width:30px; height:30px; fill:#D92E2E; }
.pv-sc-cicon--wa .elementor-icon{ background:#eafaf0; color:#1FA855; }
.pv-sc-cicon--wa .elementor-icon svg{ fill:#1FA855; }
.pv-sc-ctitle .elementor-heading-title{ font:700 19px/1.3 "Inter",sans-serif; color:#1A1A1A; margin:2px 0 0; }
.pv-sc-chelp{ margin:0; }
.pv-sc-chelp p{ font:400 14.5px/1.5 "Inter",sans-serif; color:#7a736b; margin:0; }
.pv-sc-cbtn{ margin-top:auto; padding-top:6px; }
.pv-sc-cbtn .elementor-button{ background:#D92E2E; color:#fff; border-radius:10px; padding:12px 26px; font:600 15px/1 "Inter",sans-serif; transition:background .2s ease; }
.pv-sc-cbtn .elementor-button:hover{ background:#B81F1F; }
/* hover de tarjeta (contenedor con el ícono) */
#pv-sc-contact-grid > .e-con{ transition:transform .22s ease, box-shadow .22s ease; }
#pv-sc-contact-grid > .e-con:hover{ transform:translateY(-5px); box-shadow:0 18px 40px rgba(40,20,10,.12)!important; }
#pv-sc-contact-grid > .e-con:hover .pv-sc-cicon .elementor-icon{ transform:scale(1.06); }

/* Garantías — ícono POR ÍTEM en badge tenue */
#pv-sc-gar-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:26px; align-items:stretch; }
.pv-sc-gar-badge .elementor-heading-title{ display:inline-block; background:#D92E2E; color:#fff; border-radius:999px; padding:8px 22px; font:700 14px/1 "Inter",sans-serif; letter-spacing:.09em; margin:0 auto 24px; }
.pv-sc-gar-list .elementor-icon-list-items{ display:grid; grid-template-columns:1fr 1fr; gap:16px 24px; margin:0; padding:0; }
.pv-sc-gar-list .elementor-icon-list-item{ margin:0!important; padding:0!important; align-items:center; gap:11px; }
.pv-sc-gar-list .elementor-icon-list-icon{ width:34px; height:34px; flex:0 0 34px; border-radius:9px; background:#faf3ef; color:#D92E2E; display:inline-flex; align-items:center; justify-content:center; margin:0; padding:0; }
.pv-sc-gar-list .elementor-icon-list-icon i{ font-size:14px; }
.pv-sc-gar-list .elementor-icon-list-text{ font:500 15px/1.3 "Inter",sans-serif; color:#3b3733; }

/* FAQ'S — tarjetas blancas sobre gris */
#pv-sc-faq-inner{ max-width:1120px; margin:0 auto; }
.pv-sc-faq-title .elementor-heading-title{ font:700 32px/1.2 "Inter",sans-serif; color:#1A1A1A; margin:0 0 8px; }
#pv-sc-faq .pv-sc-secsub .elementor-heading-title{ margin-bottom:38px; }
#pv-sc-faq-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:28px; align-items:stretch; }
.pv-sc-faq-ic .elementor-icon{ color:#D92E2E; font-size:30px; margin-bottom:12px; }
.pv-sc-faq-ic .elementor-icon svg{ width:32px; height:32px; fill:#D92E2E; }
.pv-sc-faq-h .elementor-heading-title{ font:700 22px/1.25 "Inter",sans-serif; color:#1A1A1A; margin:0 0 12px; }
.pv-sc-faq-desc{ margin:0 0 22px; }
.pv-sc-faq-desc p{ font:400 15.5px/1.6 "Inter",sans-serif; color:#5b554f; margin:0; }
.pv-sc-faq-btn{ margin-top:auto; }
.pv-sc-faq-btn .elementor-button{ display:inline-flex; align-items:center; gap:9px; background:#D92E2E; color:#fff; border-radius:10px; padding:13px 28px; font:600 15px/1 "Inter",sans-serif; transition:background .2s ease; }
.pv-sc-faq-btn .elementor-button:hover{ background:#B81F1F; }
.pv-sc-faq-btn .elementor-button::before{ content:""; width:16px; height:16px; flex:0 0 auto; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='7 10 12 15 17 10'/%3E%3Cline x1='12' y1='15' x2='12' y2='3'/%3E%3C/svg%3E") no-repeat center/contain; }

/* Responsive */
@media (max-width:1024px){
  #pv-sc-contact-grid{ grid-template-columns:1fr; max-width:420px; margin:0 auto; }
  .pv-sc-hero-title .elementor-heading-title{ font-size:38px; }
}
@media (max-width:768px){
  #pv-sc-gar-grid, #pv-sc-faq-grid{ grid-template-columns:1fr; gap:22px; }
  .pv-sc-sectitle .elementor-heading-title, .pv-sc-faq-title .elementor-heading-title{ font-size:26px; }
  .pv-sc-hero-title .elementor-heading-title{ font-size:32px; }
}
@media (max-width:520px){
  .pv-sc-gar-list .elementor-icon-list-items{ grid-template-columns:1fr; }
}

/* ============================================================
   PÁGINAS-ARTÍCULO convertidas de WPBakery (guías, beneficios, etc.)
   ============================================================ */
.pv-art-title .elementor-heading-title{ font:700 36px/1.2 "Inter",sans-serif; color:#1A1A1A; margin:0 auto; max-width:820px; }
#pv-art-body{ max-width:820px; margin:0 auto; }
.pv-art-content{ font-family:"Inter",sans-serif; }
.pv-art-content, .pv-art-content p, .pv-art-content li{ font-size:17px; line-height:1.75; color:#3b3733; }
.pv-art-content p{ margin:0 0 20px; }
.pv-art-content h1, .pv-art-content h2{ font:700 26px/1.25 "Inter",sans-serif; color:#1A1A1A; margin:34px 0 14px; }
.pv-art-content h3{ font:700 20px/1.3 "Inter",sans-serif; color:#1A1A1A; margin:26px 0 12px; }
.pv-art-content h4{ font:700 17px/1.3 "Inter",sans-serif; color:#1A1A1A; margin:22px 0 10px; }
.pv-art-content a{ color:#D92E2E; text-decoration:underline; }
.pv-art-content a:hover{ color:#B81F1F; }
.pv-art-content ul, .pv-art-content ol{ margin:0 0 20px; padding-left:22px; }
.pv-art-content li{ margin:0 0 8px; }
.pv-art-content img{ max-width:100%; height:auto; border-radius:12px; }
.pv-art-content blockquote{ border-left:4px solid #D92E2E; margin:24px 0; padding:6px 0 6px 20px; color:#5b554f; font-style:italic; }
.pv-art-content table{ width:100%; border-collapse:collapse; margin:0 0 22px; }
.pv-art-content td, .pv-art-content th{ border:1px solid #ece5de; padding:10px 12px; text-align:left; }
@media (max-width:640px){
  .pv-art-title .elementor-heading-title{ font-size:28px; }
  .pv-art-content, .pv-art-content p, .pv-art-content li{ font-size:16px; }
}

/* ============================================================
   THANK-YOU (páginas Gracias)
   ============================================================ */
#pv-ty{ text-align:center; }
.pv-ty-ic .elementor-icon{ color:#25A85B; font-size:62px; margin-bottom:16px; }
.pv-ty-ic .elementor-icon svg{ width:66px; height:66px; fill:#25A85B; }
.pv-ty-title .elementor-heading-title{ font:700 40px/1.15 "Inter",sans-serif; color:#1A1A1A; margin:0 0 14px; }
.pv-ty-msg{ max-width:520px; }
.pv-ty-msg p{ font:400 18px/1.6 "Inter",sans-serif; color:#5b554f; margin:0 0 28px; }
.pv-ty-btn .elementor-button{ background:#D92E2E; color:#fff; border-radius:10px; padding:14px 34px; font:600 16px/1 "Inter",sans-serif; transition:background .2s ease; }
.pv-ty-btn .elementor-button:hover{ background:#B81F1F; }
@media (max-width:640px){ .pv-ty-title .elementor-heading-title{ font-size:30px; } }

/* ---- Páginas "¿Qué quieres hacer?" (bio-link) ---- */
#pv-choose{ text-align:center; max-width:520px; margin:0 auto; }
.pv-choose-title .elementor-heading-title{ font:700 34px/1.2 "Inter",sans-serif; color:#1A1A1A; margin:0 0 28px; }
.pv-choose-btn{ width:100%; max-width:380px; margin:0 auto 14px; }
.pv-choose-btn .elementor-button{ width:100%; display:flex; align-items:center; justify-content:center; gap:10px; background:#D92E2E; color:#fff; border-radius:12px; padding:15px 24px; font:600 16px/1 "Inter",sans-serif; transition:.2s ease; }
.pv-choose-btn .elementor-button:hover{ background:#B81F1F; }
.pv-choose-btn--wa .elementor-button{ background:#1FA855; }
.pv-choose-btn--wa .elementor-button:hover{ background:#178a46; }
.pv-choose-btn--ghost .elementor-button{ background:#fff; color:#3b3733; border:1px solid #e4ddd5; }
.pv-choose-btn--ghost .elementor-button:hover{ background:#faf7f3; color:#D92E2E; border-color:#D92E2E; }

/* ============================================================
   Página GUÍAS (/guias/): hero + pill-tabs + acordeones masonry.
   Chrome nativo Elementor; grids = HTML widgets (clases fiables).
   Paneles por #id + JS inline-display (no dependen de _css_classes de container).
   ============================================================ */
#pv-guias-hero .elementor-heading-title{ text-shadow:0 2px 18px rgba(0,0,0,.35); }
/* barra de tabs solapando el hero */
#pv-guias-tabbar-wrap{ margin-top:-34px; position:relative; z-index:6; }
.pv-guias-tabbar{ display:inline-flex; gap:6px; background:#fff; border-radius:14px; padding:6px; box-shadow:0 14px 38px rgba(20,20,24,.18); }
.pv-guias-tab{ -webkit-appearance:none; appearance:none; border:0; background:transparent; cursor:pointer; font:600 13px/1 "Inter",sans-serif; color:#3b3733; padding:13px 28px; border-radius:9px; transition:.18s ease; white-space:nowrap; }
.pv-guias-tab:hover{ color:#D92E2E; }
.pv-guias-tab.is-active{ background:#D92E2E; color:#fff; box-shadow:0 6px 16px rgba(217,46,46,.32); }
/* paneles (compra visible por defecto; pagos oculto hasta que el JS lo maneje) */
#pv-panel-pagos{ display:none; }
/* fila intro (compra) */
.pv-guias-intro{ display:flex; gap:44px; align-items:center; flex-wrap:wrap; }
.pv-guias-introcol:first-child{ flex:1 1 52%; }
.pv-guias-introcol:last-child{ flex:1 1 40%; }
.pv-guias-video img{ box-shadow:0 16px 44px rgba(20,20,24,.20); display:block; }
.pv-guias-sectitle{ width:100%; align-self:flex-start; }
.pv-guias-sectitle .elementor-heading-title{ text-align:left; }
/* columnas masonry (cada columna empaqueta independiente => coincide con el mockup) */
.pv-guias-cols{ display:flex; gap:22px; align-items:flex-start; width:100%; }
.pv-guias-col{ flex:1 1 0; min-width:0; display:flex; flex-direction:column; gap:22px; }
/* tarjeta acordeón */
.pv-guias-card{ background:#fff; border:1px solid #ece7e0; border-radius:16px; overflow:hidden; transition:box-shadow .2s ease, border-color .2s ease; }
.pv-guias-card:hover{ box-shadow:0 10px 30px rgba(20,20,24,.08); }
.pv-guias-card.is-open{ border-color:#e4ddd5; box-shadow:0 14px 36px rgba(20,20,24,.10); }
.pv-guias-head{ width:100%; display:flex; align-items:center; gap:16px; padding:22px 24px; margin:0; background:transparent; border:0; cursor:pointer; text-align:left; font-family:inherit; }
.pv-guias-ico{ flex:0 0 auto; width:46px; height:46px; border-radius:13px; background:#faf1f1; color:#D92E2E; display:flex; align-items:center; justify-content:center; }
.pv-guias-ico i{ font-size:21px; line-height:1; }
.pv-guias-htext{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:3px; }
.pv-guias-num{ font:700 12px/1 "Inter",sans-serif; letter-spacing:1.6px; text-transform:uppercase; color:#D92E2E; }
.pv-guias-title{ font:600 17px/1.25 "Inter",sans-serif; color:#1A1A1A; }
.pv-guias-chev{ flex:0 0 auto; color:#b3aca3; display:flex; transition:transform .25s ease; }
.pv-guias-chev i{ font-size:16px; line-height:1; }
.pv-guias-card.is-open .pv-guias-chev{ transform:rotate(180deg); color:#D92E2E; }
.pv-guias-body{ max-height:0; overflow:hidden; transition:max-height .34s ease; }
.pv-guias-card.is-open .pv-guias-body{ max-height:1800px; }
.pv-guias-bodyin{ padding:2px 24px 24px 24px; color:#3b3733; font:400 15.5px/1.72 "Inter",sans-serif; }
.pv-guias-bodyin p{ margin:0 0 12px; }
.pv-guias-bodyin p:last-child{ margin-bottom:0; }
.pv-guias-bodyin ol,.pv-guias-bodyin ul{ margin:0 0 12px; padding-left:20px; }
.pv-guias-bodyin ul{ list-style:disc; }
.pv-guias-bodyin li{ margin:0 0 8px; }
.pv-guias-bodyin a{ color:#D92E2E; text-decoration:underline; }
.pv-guias-bodyin strong{ color:#1A1A1A; }
@media (max-width:900px){
  .pv-guias-intro{ flex-direction:column; align-items:stretch; gap:26px; }
  .pv-guias-introcol:first-child,.pv-guias-introcol:last-child{ flex:1 1 100%; width:100% !important; }
  .pv-guias-cols{ flex-direction:column; }
}
@media (max-width:600px){
  #pv-guias-tabbar-wrap{ margin-top:-28px; }
  .pv-guias-tab{ padding:12px 18px; font-size:14px; }
  .pv-guias-head{ padding:18px 18px; gap:13px; }
  .pv-guias-bodyin{ padding:2px 18px 20px 18px; }
}
/* BLINDAJE: el kit de Elementor (.elementor-kit-XXX button / :hover / :focus) pinta TODO
   <button> de rojo (primary) y negro en hover, con especificidad (0,1,1) > nuestras clases.
   Forzamos con !important en normal+hover+focus+active para que no superponga. */
.pv-guias-tabbar .pv-guias-tab,
.pv-guias-tabbar .pv-guias-tab:hover,
.pv-guias-tabbar .pv-guias-tab:focus,
.pv-guias-tabbar .pv-guias-tab:active{
  background:transparent !important; color:#3b3733 !important; border:0 !important; box-shadow:none !important; text-shadow:none !important;
}
.pv-guias-tabbar .pv-guias-tab:hover{ color:#D92E2E !important; }
.pv-guias-tabbar .pv-guias-tab.is-active,
.pv-guias-tabbar .pv-guias-tab.is-active:hover,
.pv-guias-tabbar .pv-guias-tab.is-active:focus{
  background:#D92E2E !important; color:#fff !important; box-shadow:0 6px 16px rgba(217,46,46,.32) !important;
}
.pv-guias-card .pv-guias-head,
.pv-guias-card .pv-guias-head:hover,
.pv-guias-card .pv-guias-head:focus,
.pv-guias-card .pv-guias-head:active{
  background-color:transparent !important; color:#1A1A1A !important; border:0 !important; box-shadow:none !important; outline:none !important; text-shadow:none !important;
}
.pv-guias-card .pv-guias-head:hover{ background-color:#faf6f2 !important; }
/* asegurar que el ícono/num/título conserven su color de marca (no herencia del botón) */
.pv-guias-card .pv-guias-ico{ color:#D92E2E !important; background:#faf1f1 !important; }
.pv-guias-card .pv-guias-ico i{ color:#D92E2E !important; }
.pv-guias-card .pv-guias-num{ color:#D92E2E !important; }
.pv-guias-card .pv-guias-title{ color:#1A1A1A !important; }
.pv-guias-card.is-open .pv-guias-chev{ color:#D92E2E !important; }

/* ============================================================
   Botón "Volver arriba" global (#pv-top, inyectado por provivienda.js).
   Es un <button> => blindar contra el kit de Elementor con !important.
   Colocado SOBRE el botón flotante de WhatsApp (abajo-derecha).
   ============================================================ */
#pv-top{
  position:fixed; left:21px; right:auto; bottom:28px; z-index:9998;
  width:46px; height:46px; padding:0; border:0 !important;
  border-radius:50% !important;
  background-color:#D92E2E !important; color:#fff !important; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 8px 22px rgba(20,20,24,.22) !important;
  opacity:0; visibility:hidden; transform:translateY(10px);
  transition:opacity .25s ease, transform .25s ease, background-color .2s ease, visibility .25s;
}
#pv-top.is-visible{ opacity:1; visibility:visible; transform:translateY(0); }
#pv-top:hover,#pv-top:focus{ background-color:#B81F1F !important; color:#fff !important; }
#pv-top i{ font-size:17px; line-height:1; }
@media (max-width:600px){ #pv-top{ left:16px; right:auto; bottom:20px; width:42px; height:42px; } }

/* ============================================================
   Ocultar las cajas visibles de "rich snippet" (estrellas) que Rank Math
   inyecta en el contenido (#rank-math-rich-snippet-wrapper). NO afecta el
   JSON-LD (schema para Google), que va aparte en <script type=ld+json>.
   ============================================================ */
#rank-math-rich-snippet-wrapper{ display:none !important; }

/* ============================================================
   HEADER STICKY — fix del HOVER de los botones (Provitrack / Contáctanos).
   El CSS del header sticky fuerza el color del texto con !important:
     .gp-header.elementor-sticky--active .elementor-button{color:#000!important}
     .gp-header.elementor-sticky--active .header-contacto .elementor-button{color:#fff!important}
   Eso pisa el color de HOVER del botón => Provitrack quedaba negro sobre rojo y
   Contáctanos blanco sobre blanco (invisible). Restauramos el color correcto en
   :hover con mayor especificidad + !important (el fondo de hover ya funciona).
   ============================================================ */
.gp-header.elementor-sticky--active .elementor-element-6c49e5d .elementor-button:hover{ color:#ffffff !important; }
.gp-header.elementor-sticky--active .header-contacto .elementor-button:hover{ color:#D92E2E !important; }

/* Parpadeo del logo al SALIR del sticky (reportado en móvil al hacer scroll
   hacia arriba: "el logo negro cambia en un parpadeo al logo blanco").
   El CSS del Customizer pone, SOLO dentro de `.elementor-sticky--active`:
     .gp-header.elementor-sticky--active { background-color:rgba(255,255,255,.05)!important;
                                           backdrop-filter:blur(12px);
                                           transition:background-color .3s, backdrop-filter .3s }
     .gp-header.elementor-sticky--active ... site-logo img { filter:brightness(0); transition:filter .3s }
   Al llegar arriba, Elementor QUITA la clase y con ella se van esas
   transiciones: el `filter:brightness(0)` del logo y el `blur` del fondo
   desaparecen DE GOLPE, mientras el fondo sí sigue animando 0.3s (transición
   base de Elementor) → se ve un frame con el logo negro sobre el rojo.
   Solución: declarar las transiciones también en el estado BASE, para que la
   salida anime al mismo ritmo que la entrada. */
.gp-header {
  transition: background .3s, background-color .3s ease, border .3s, box-shadow .3s, transform .4s,
              -webkit-backdrop-filter .3s ease, backdrop-filter .3s ease;
}
.gp-header .elementor-widget-theme-site-logo img { transition: filter .3s ease; }

/* Header sticky = "vidrio blanco" (el CSS del Customizer pone el fondo en
   rgba(255,255,255,.85) + blur, y el logo/menú en negro). Sobre ese fondo claro
   el botón "Provitrack" quedaba BLANCO SOBRE BLANCO: el texto se leía, pero el
   botón perdía su forma. Se le da un borde fino para que siga leyéndose como
   botón. ("Contáctanos" no necesita nada: ya es rojo con texto blanco.) */
.gp-header.elementor-sticky--active .elementor-element-6c49e5d .elementor-button {
  border: 1px solid rgba(26, 26, 26, .22) !important;
}
.gp-header.elementor-sticky--active .elementor-element-6c49e5d .elementor-button:hover {
  border-color: transparent !important;
}
/* Sombra sutil que despega la barra del contenido al hacer scroll. */
.gp-header.elementor-sticky--active { box-shadow: 0 2px 14px rgba(0, 0, 0, .07); }

/* En MÓVIL se quita el `backdrop-filter`: con el fondo ya al 85% el desenfoque
   casi no se percibe, pero obliga al navegador a re-rasterizar la barra en cada
   frame del scroll — fuente conocida de parpadeo en Safari/Chrome móvil, que es
   justo el síntoma reportado. Se sube el fondo a .96 para compensar la ausencia
   de blur. En desktop se conserva el vidrio. */
@media (max-width: 880px) {
  .gp-header.elementor-sticky--active {
    -webkit-backdrop-filter: none !important;
            backdrop-filter: none !important;
    background-color: rgba(255, 255, 255, .96) !important;
  }
}

/* ============================================================
   Página 404 (child theme 404.php) — branded.
   ============================================================ */
.pv-404-area{ flex:1 1 100% !important; width:100% !important; }   /* #content de GP es flex; ocupar todo */
.pv-404{ background:#faf7f3; padding:92px 24px 104px; text-align:center; }
.pv-404-inner{ max-width:660px; margin:0 auto; }
.pv-404-eyebrow{ display:inline-block; color:#D92E2E; font:700 13px/1 "Inter",sans-serif; letter-spacing:3px; text-transform:uppercase; margin-bottom:10px; }
.pv-404-num{ font:800 132px/1 "Inter",sans-serif; color:#D92E2E; letter-spacing:-5px; margin:0 0 4px; }
.pv-404-title{ font:700 32px/1.18 "Inter",sans-serif; color:#1A1A1A; margin:6px 0 12px; }
.pv-404-text{ color:#6b6660; font:400 17px/1.65 "Inter",sans-serif; margin:0 auto 28px; max-width:520px; }
.pv-404-cta{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-bottom:28px; }
.pv-404-btn{ display:inline-flex; align-items:center; justify-content:center; padding:13px 26px; border-radius:9px; font:600 15px/1 "Inter",sans-serif; text-decoration:none; border:1px solid #e4ddd5; background:#fff; color:#3b3733; transition:.18s ease; }
.pv-404-btn:hover{ border-color:#D92E2E; color:#D92E2E; }
.pv-404-btn--primary{ background:#D92E2E; border-color:#D92E2E; color:#fff; }
.pv-404-btn--primary:hover{ background:#B81F1F; border-color:#B81F1F; color:#fff; }
.pv-404-btn--ghost{ background:transparent; border-color:transparent; color:#6b6660; }
.pv-404-btn--ghost:hover{ color:#D92E2E; }
.pv-404-search{ display:flex; max-width:430px; margin:0 auto 24px; border:1px solid #e4ddd5; border-radius:11px; overflow:hidden; background:#fff; }
.pv-404-search input{ flex:1; min-width:0; border:0; padding:13px 16px; font:400 15px/1 "Inter",sans-serif; color:#1A1A1A; background:transparent; outline:none; }
.pv-404-search button{ border:0; background:#D92E2E; color:#fff; padding:0 22px; cursor:pointer; transition:background .18s ease; }
.pv-404-search button:hover{ background:#B81F1F; }
.pv-404-links{ display:flex; gap:22px; justify-content:center; flex-wrap:wrap; }
.pv-404-links a{ color:#6b6660; font:500 14px/1 "Inter",sans-serif; text-decoration:none; }
.pv-404-links a:hover{ color:#D92E2E; }
@media (max-width:600px){
  .pv-404{ padding:60px 16px 72px; }
  .pv-404-num{ font-size:96px; letter-spacing:-3px; }
  .pv-404-title{ font-size:25px; }
  .pv-404-text{ font-size:16px; }
}

/* ============================================================
   Landings de tipo (Casas 8521 / Apartamentos 8547): FAQ sutil (acordeón
   NATIVO de Elementor, editable por el equipo) + ocultar el filtro "Tipo".
   ============================================================ */
#pv-faq-sec{ background:#faf7f3; padding:64px 24px 82px; }
#pv-faq-sec .pv-faq-title .elementor-heading-title{ text-align:center; font:700 30px/1.2 "Inter",sans-serif; color:#1A1A1A; margin:0 0 6px; }
#pv-faq-sec .pv-faq-sub .elementor-heading-title{ text-align:center; font:400 16px/1.5 "Inter",sans-serif; color:#8a8279; margin:0 auto 30px; max-width:560px; }

/* Acordeón Elementor (widget "accordion") con look de marca — replica el estilo
   sutil anterior: tarjetas blancas, borde fino, ícono +/− rojo a la derecha. */
#pv-faq-sec .elementor-accordion{ max-width:820px; margin:0 auto; border:0; }
#pv-faq-sec .elementor-accordion-item{ background:#fff; border:1px solid #ece7e0 !important; border-radius:12px; margin-bottom:12px; overflow:hidden; transition:box-shadow .2s ease, border-color .2s ease; }
#pv-faq-sec .elementor-accordion-item:has(.elementor-tab-title.elementor-active){ border-color:#e4ddd5; box-shadow:0 8px 24px rgba(20,20,24,.06); }
#pv-faq-sec .elementor-tab-title{ cursor:pointer; display:flex; align-items:center; gap:16px; padding:18px 22px; border:0 !important; background:transparent !important; font:600 16.5px/1.4 "Inter",sans-serif !important; color:#1A1A1A; transition:color .15s ease; }
#pv-faq-sec .elementor-tab-title .elementor-accordion-title{ order:1; flex:1 1 auto; }
#pv-faq-sec .elementor-tab-title .elementor-accordion-icon{ order:2; flex:0 0 auto; margin:0 !important; color:#D92E2E; font-size:16px; }
#pv-faq-sec .elementor-tab-title:hover,
#pv-faq-sec .elementor-tab-title.elementor-active{ color:#D92E2E; }
#pv-faq-sec .elementor-tab-content{ padding:0 22px 20px !important; border:0 !important; background:transparent !important; color:#5b554f; font:400 15.5px/1.72 "Inter",sans-serif; }
#pv-faq-sec .elementor-tab-content p:last-child{ margin-bottom:0; }
@media (max-width:600px){
  #pv-faq-sec{ padding:44px 16px 58px; }
  #pv-faq-sec .pv-faq-title .elementor-heading-title{ font-size:24px; }
  #pv-faq-sec .elementor-tab-title{ font-size:15.5px !important; padding:16px 18px; }
}
/* Ocultar el filtro "Tipo" (JSF tax tipo_propiedad / id 12219) en las 2 landings.
   Se oculta el ITEM flex COMPLETO (.jet-smart-filters-select), no solo el <select>
   interno, para que los 5 filtros restantes rellenen la fila sin dejar hueco. */
.page-id-8521 .pv-filterbar .jet-smart-filters-select:has([data-query-var="tipo_propiedad"]),
.page-id-8547 .pv-filterbar .jet-smart-filters-select:has([data-query-var="tipo_propiedad"]){ display:none !important; }

/* ============================================================
   LCP del HOME — hero en WebP y a la medida de la pantalla
   El hero (elemento a01e1c6) lo pinta Elementor desde post-614.css con el JPEG
   de 1920px (281 KB), que se servía igual a un móvil de 375px. Aquí se sustituye
   por WebP: 26 KB en móvil (−91%) y 98 KB en escritorio (−65%).
   Se usa `image-set()` para que un navegador sin soporte WebP caiga al JPEG
   original en vez de quedarse sin fondo. La precarga se declara en functions.php.
   ============================================================ */
.elementor-614 .elementor-element.elementor-element-a01e1c6:not(.elementor-motion-effects-element-type-background) {
  background-image: var(--wpr-bg-86396437-9989-4044-b574-e6f51fed62b9);
  background-image: -webkit-image-set(
      url(/wp-content/uploads/2026/06/Gprovivienda-home-1920.webp) type("image/webp"),
      var(--wpr-bg-86396437-9989-4044-b574-e6f51fed62b9) type("image/jpeg"));
  background-image: image-set(
      url(/wp-content/uploads/2026/06/Gprovivienda-home-1920.webp) type("image/webp"),
      var(--wpr-bg-86396437-9989-4044-b574-e6f51fed62b9) type("image/jpeg"));
}
@media (max-width: 880px) {
  .elementor-614 .elementor-element.elementor-element-a01e1c6:not(.elementor-motion-effects-element-type-background) {
    background-image: var(--wpr-bg-64560053-9c2a-4fe1-b413-6cd4b9e09fdd);
    background-image: -webkit-image-set(
        var(--wpr-bg-64560053-9c2a-4fe1-b413-6cd4b9e09fdd) type("image/webp"),
        url(/wp-content/uploads/2026/06/Gprovivienda-home-768x432.jpg) type("image/jpeg"));
    background-image: image-set(
        var(--wpr-bg-64560053-9c2a-4fe1-b413-6cd4b9e09fdd) type("image/webp"),
        url(/wp-content/uploads/2026/06/Gprovivienda-home-768x432.jpg) type("image/jpeg"));
  }
}

/* (El poster del hero ya no tiene variante por dispositivo: una sola imagen
   evita que el preload y la media query elijan archivos distintos.) */

/* --- Fase 6 · ejecutivos desde datos (CPT `ejecutivo`) -----------------------
   Reutiliza las clases .pv-ejec* del build original; sólo se alinea el chip al
   aspecto que hoy tiene la página de Contacto (píldora con borde). --------- */
/* Mismo peso de selector que `.pv-ejec__links .elementor-icon-list-item a`
   (la versión Elementor), si no gana la tipografía de enlace del tema. */
.pv-ejec__links .pv-ejec__a{display:inline-flex;align-items:center;gap:4px;
  font:500 12.5px/1 Inter,sans-serif;color:#6b6660;text-decoration:none;
  padding:5px 9px;border:1px solid #ece5de;border-radius:8px;transition:.16s}
.pv-ejec__links .pv-ejec__a:hover{background:transparent;border-color:#D92E2E;color:#D92E2E}
.pv-ejec__links .pv-ejec__a--wa:hover{border-color:#25D366;color:#25D366}
.pv-ejec__c{display:block;font:400 12px/1.3 Inter,sans-serif;color:#a39a90;margin-top:2px}
@media(max-width:520px){
  .pv-ejec{flex-wrap:wrap;align-items:flex-start}
  .pv-ejec__links{flex:1 1 100%;margin-top:4px}
}
/* El contenedor de la sala en Contacto (2911) ya trae su propio separador. */
.pv-sala__ejec--plano{border-top:0;padding-top:0;margin-top:0}

/* --- Fase 6 · banda «Habla con nuestros ejecutivos» -------------------------
   Va en la vista de proyecto (12547) y en la ficha de modelo (12663). En la
   tarjeta de Contacto los ejecutivos son filas de una columna estrecha; aquí la
   banda es ancha, así que se presentan como fichas de persona: foto, nombre,
   cargo y tres acciones con icono.
   GOTCHA: las clases de los CONTENEDORES de Elementor no se renderizan en esta
   versión, así que el enganche va por el atributo `clase` del shortcode y por la
   clase del widget. -------------------------------------------------------- */

/* El PANEL. El fondo, el borde, el radio, la sombra y el relleno se ponen desde
   los ajustes del contenedor en Elementor (así el cliente los puede retocar). Aquí
   sólo el ancho y la separación de las secciones vecinas. */
.elementor-element-pvf6b1,.elementor-element-pvf6b2{
  max-width:1120px;margin:44px auto!important;
}
@media(max-width:780px){
  .elementor-element-pvf6b1,.elementor-element-pvf6b2{margin:32px auto!important}
}

/* Encabezado del panel: logo pegado al título, y el título sin el hueco que antes
   hacía falta para separar la banda del resto (ahora lo da el relleno del panel). */
/* NADA de width:auto ni height:auto aquí. El marcador de posición SVG que pone el
   lazyload de WP Rocket no tiene tamaño intrínseco, así que con «auto» la imagen
   resolvía a 0x0 y el logo desaparecía. Sin esas dos, mandan los atributos
   width/height del <img> (que el shortcode ya emite escalados). */
.pv-ejec-band__logo{display:block;margin:0 auto 8px;max-width:min(200px,100%);object-fit:contain}
.pv-ejec-band__logo-w{margin:0!important;display:flex;align-items:center;justify-content:center}
.pv-ejec-band__logo-w .elementor-widget-container{display:flex;justify-content:center;align-items:center;width:100%}
.pv-ejec-band__logo{flex:0 0 auto}
/* Título a dos líneas: la frase fija arriba y el NOMBRE DEL PROYECTO debajo, en
   negrita. Antes era un encabezado fijo que no decía de qué proyecto hablaba. */
.pv-ejec-band__t{margin:0 0 22px!important;text-align:center;
  font:400 26px/1.28 Inter,sans-serif;color:#1A1A1A}
.pv-ejec-band__t-p{display:block;font-weight:700}
/* El teléfono pasó de ir ARRIBA suelto a ir al PIE como píldora. */
.pv-ejec-band__tel{text-align:center;margin:22px 0 0!important}

/* Píldora «Sala de Ventas: 303-5027» al pie del bloque de ejecutivos. */
.pv-sala__tel--pill{display:inline-flex;align-items:center;gap:7px;
  background:#F6F2ED;border:1px solid #EAE2D8;border-radius:10px;
  padding:11px 20px;font:400 15px/1 Inter,sans-serif;color:#5b554f;
  text-decoration:none;width:auto;margin:0;transition:.16s}
.pv-sala__tel--pill strong{font-weight:700;color:#1A1A1A}
.pv-sala__tel--pill:hover{border-color:#D92E2E;color:#D92E2E;text-decoration:none}
.pv-sala__tel--pill:hover strong{color:#D92E2E}

/* Rejilla de fichas */
.pv-ejec-v-tarjeta{
  display:grid;gap:16px;max-width:1040px;margin:0 auto;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  border-top:0;padding-top:0;
}
.pv-ejec-v-tarjeta .pv-sala__ejec-t{grid-column:1/-1;text-align:center;margin:0 0 4px}
/* Un solo ejecutivo (Clayton Park, Bijao): una ficha centrada, no estirada de lado a lado */
.pv-ejec-solo{grid-template-columns:minmax(0,320px);justify-content:center}
/* Con dos o tres, evitar que la última fila quede coja */
.pv-ejec-n-2{grid-template-columns:repeat(2,minmax(0,300px));justify-content:center}
.pv-ejec-n-3{grid-template-columns:repeat(3,minmax(0,270px));justify-content:center}

.pv-ejec-card{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  background:#FAF7F4;border:1px solid #EFE7E0;border-radius:16px;padding:24px 18px 20px;
  transition:box-shadow .18s, transform .18s, border-color .18s, background .18s;
}
.pv-ejec-card:hover{background:#fff;box-shadow:0 12px 30px -14px rgba(40,20,10,.20);transform:translateY(-2px);border-color:#E4D9CF}

.pv-ejec-card__ph{margin:0 0 14px}
.pv-ejec-foto{
  width:84px;height:84px;border-radius:50%;object-fit:cover;display:grid;place-items:center;
  overflow:hidden;box-shadow:0 0 0 4px #fff, 0 0 0 5px #E9E0D8;
}
.pv-ejec-foto--ini{font:600 28px/1 Inter,sans-serif;letter-spacing:.02em;user-select:none}

/* La foto del ejecutivo, redonda de verdad.
 *
 * 2026-09-15 — el `border-radius:50%` de arriba NO llegaba a aplicarse en las
 * fotos reales. Elementor trae en su hoja `.elementor img{height:auto;
 * border-radius:0}`, que con especificidad (0-1-1) —una clase y un tipo— le gana
 * a `.pv-ejec-foto` (0-1-0) y se lleva por delante las DOS propiedades: la altura
 * colapsa a `auto` (caja rectangular, medido 66x44 con una foto apaisada) y el
 * radio vuelve a cero. El círculo de iniciales se salvaba sólo porque es un
 * <span> y la regla de Elementor apunta a <img>; por eso el fallo no se veía
 * hoy, con los 19 ejecutivos sin foto cargada.
 *
 * Se repite la clase para subir a (0-2-0) y ganar sin recurrir a !important.
 * `aspect-ratio` en vez de una altura fija a propósito: así la foto sigue al
 * ancho que fijan las reglas de arriba en cada tamaño de pantalla (84 px en
 * escritorio, 66 px en móvil) sin duplicar aquí la media query, y cualquier
 * cambio futuro de ancho se mantiene redondo solo. Con `object-fit:cover`, una
 * foto que no venga cuadrada se recorta en vez de deformarse. */
.pv-ejec-foto.pv-ejec-foto{
  height: auto;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
}

.pv-ejec-card .pv-ejec__n{font:600 17px/1.28 Inter,sans-serif;color:#1A1A1A;margin:0}
.pv-ejec-card .pv-ejec__c{font:400 13.5px/1.4 Inter,sans-serif;color:#8a807a;margin:5px 0 0}
.pv-ejec-card .pv-ejec__links{display:flex;gap:9px;justify-content:center;margin-top:16px;flex:none}

/* Acciones en la ficha: botón redondo, sólo icono (el nombre va en aria-label) */
.pv-ejec-v-tarjeta .pv-ejec__a{
  width:42px;height:42px;padding:0;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid #e5ded7;color:#6b6660;background:#fff;text-decoration:none;
  transition:.16s;
}
.pv-ejec-v-tarjeta .pv-ejec__a:hover{border-color:#D92E2E;color:#D92E2E;background:#fdf5f4;transform:translateY(-1px)}
.pv-ejec-v-tarjeta .pv-ejec__a--wa:hover{border-color:#25D366;color:#128C7E;background:#f2fbf5}
.pv-ejec-v-tarjeta .pv-ejec__a:focus-visible{outline:2px solid #D92E2E;outline-offset:2px}
.pv-ejec-svg{display:block;flex:none}

@media(max-width:780px){
  .pv-ejec-v-tarjeta{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px}
  .pv-ejec-n-2,.pv-ejec-n-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pv-ejec-solo{grid-template-columns:minmax(0,300px)}
  .pv-ejec-card{padding:18px 12px 16px;border-radius:14px}
  .pv-ejec-foto{width:66px;height:66px}
  .pv-ejec-foto--ini{font-size:22px}
  .pv-ejec-card .pv-ejec__n{font-size:15.5px}
  .pv-ejec-v-tarjeta .pv-ejec__a{width:40px;height:40px}
}

/* --- Vista LISTA (las salas de Contacto) ----------------------------------
   Rediseñada a petición del cliente: cada ejecutivo es UNA fila —nombre a la
   izquierda, tres botones redondos a la derecha— separada por una línea fina.
   Antes cada acción escribía su texto («6678-7903 · WhatsApp · Email»), la fila
   envolvía a dos renglones y la tarjeta quedaba larguísima. El dato sigue estando
   en el `aria-label` de cada enlace, así que no se pierde para lectores de
   pantalla ni para el menú contextual del navegador. -------------------------- */
.pv-ejec-v-lista .pv-ejec{display:flex;align-items:center;gap:10px;
  padding:9px 0;border-top:1px solid #f2ede7}
.pv-ejec-v-lista .pv-ejec:first-of-type{border-top:0;padding-top:2px}
.pv-ejec-v-lista .pv-ejec__n{min-width:0;flex:1 1 auto;
  font:600 14.5px/1.3 Inter,sans-serif;color:#2a2722}
.pv-ejec-v-lista .pv-ejec__links{flex:none;display:flex;gap:6px}
.pv-ejec-v-lista .pv-ejec__a{width:30px;height:30px;padding:0;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid #e6ded4;border-radius:50%;background:#fff;color:#7a736c;
  transition:.15s}
.pv-ejec-v-lista .pv-ejec__a:hover{border-color:#D92E2E;color:#D92E2E;background:#fdf5f4}
.pv-ejec-v-lista .pv-ejec__a--wa:hover{border-color:#25D366;color:#128C7E;background:#f2fbf5}
.pv-ejec-v-lista .pv-ejec__a:focus-visible{outline:2px solid #D92E2E;outline-offset:2px}
.pv-ejec-v-lista .pv-ejec-svg{width:14px;height:14px;opacity:1;flex:none}

/* --- Hueco fantasma: el widget del teléfono de sala reserva su margen aunque el
   proyecto no tenga teléfono (Bijao y Clayton Park atienden sólo con cita). ----- */
.pv-ejec-band__tel:not(:has(.pv-sala__tel)){display:none}
.pv-ejec-band__tel .elementor-widget-container:empty{display:none}

/* --- Distintivo: un texto largo se cortaba a ~25 caracteres sin forma de leerlo.
   Se le da más sitio y se permite que baje a dos líneas antes que truncar. ------ */
.pv-card-promo{max-width:74%!important}
.pv-promo-badge{white-space:normal;text-align:left;line-height:1.25;align-items:flex-start}
.pv-promo-badge svg{flex:none;margin-top:1px}
.pv-promo-txt{overflow-wrap:anywhere}
@media(max-width:600px){ .pv-card-promo{max-width:86%!important} }

/* === SALAS DE CONTACTO (2911) = Listing Grid sobre el CPT `proyecto` ========
   Sustituye a los 13 bloques que estaban escritos a mano. La maqueta se
   reproduce igual que antes: tarjetas de 340 px, centradas, con salto de línea
   y 22 px de separación. Hay que pisar TRES cosas de JetEngine, todas en su
   frontend.css (NO son estilos inline): (a) `.jet-listing-grid__item{flex:0 0
   calc(100%/var(--columns))}` — en un item flex el flex-basis GANA al width, así
   que `width:340px!important` por sí solo se ignoraba y las tarjetas se estiraban
   a 1/3 del ancho; (b) el `padding:10px` del item, que con box-sizing:border-box
   comía 20 px de tarjeta y duplicaba la calle a 42 px; y (c) el `margin:0 -10px /
   width:calc(100%+20px)` del contenedor, contrapeso de ese padding. (b) y (c) son
   inseparables: anular sólo una descuadra la retícula.
   El align-self:stretch iguala alturas, que es lo que permite dejar el bloque
   de ejecutivos pegado al fondo con margin-top:auto.
   OJO: los estilos internos van sobre clases de WIDGET, nunca de contenedor —
   las `_css_classes` de contenedor NO se renderizan en esta versión.          */
.pv-sala-grid { width: 100%; }
.pv-sala-grid .jet-listing-grid__items { display: flex !important; flex-wrap: wrap; justify-content: center; gap: 22px; margin: 0 !important; width: 100% !important; }
.pv-sala-grid .jet-listing-grid__item { flex: 0 1 340px !important; width: 340px !important; max-width: 100% !important; margin: 0 !important; padding: 0 !important; align-self: stretch; display: flex; }
.pv-sala-grid .jet-listing-grid__item > .elementor { width: 100%; display: flex; flex-direction: column; }
.pv-sala-grid .jet-listing-grid__item > .elementor > .e-con { flex: 1; }

/* Logo en caja de altura fija. Escritos a mano, los 13 anchos daban alturas de
   29,7 a 157,7 px: no era equilibrio óptico sino descuadre.
   La clase es `pv-sala-logo__img` y NO `pv-sala__logo` a propósito: esa segunda
   ya existe más arriba (línea ~1157) como resto MUERTO de la primera versión de
   Contacto (la de shortcodes `pv_contacto_*`, borrada), y traía un
   max-height:46px que se colaba en el logo nuevo. */
.pv-sala-logo { display: flex; align-items: center; justify-content: center; min-height: 72px; padding-bottom: 16px; border-bottom: 1px solid #f0eae4; }
.pv-sala-logo .pv-sala-logo__img { display: block; max-height: 56px; max-width: 100%; height: auto; object-fit: contain; }

/* La separación la da el flex-gap del contenedor (12 px), igual que antes; se
   anulan los márgenes propios para no sumarlos dos veces. */
.pv-sala-grid .pv-sala__tel,
.pv-sala-grid .pv-sala__hr { margin: 0; }

/* Horario multilínea (sala de ventas / oficinas administrativas). */
.pv-sala__hr-l { display: flex; flex-direction: column; gap: 3px; }
.pv-sala__hr-l span { font-weight: 600; color: #3f3a35; }

/* El horario RESERVA dos renglones siempre, aunque sólo use uno.
 *
 * 2026-09-11 — es la otra mitad de la simetría de las tarjetas de Contacto. El
 * horario va entre el logo y los ejecutivos, así que si una tarjeta lo resuelve
 * en un renglón y otra en dos, los ejecutivos arrancan a distinta altura. Tres
 * proyectos (Van Gogh, Torres de Versalles II y Torres de Cantabria) abren de
 * 10 a 6 entre semana y de 9 a 5 el fin de semana: su horario no cabe en un
 * renglón a 340 px de tarjeta.
 *
 * Se podría recortar el texto hasta que quepa, pero eso es sacrificar
 * información real por cuadrar una caja. Reservando el alto de dos renglones en
 * TODAS, la que use uno deja el segundo en blanco y los ejecutivos empiezan a la
 * misma altura en las trece. */
.pv-sala-grid .pv-sala-hr-w { min-height: 39px; }

/* Ejecutivos ARRIBA, a la misma altura en todas las tarjetas.
 *
 * 2026-09-11 — antes este bloque llevaba `margin-top:auto`, que lo empujaba al
 * fondo de la columna flex. Como la lista crece hacia ARRIBA desde ahí, cada
 * tarjeta arrancaba los «Ejecutivos» a una altura distinta según cuántos
 * tuviera: en la pestaña «Ciudad» había cinco tarjetas con el bloque a +158,
 * +179, +207, +228 y +267 px. De ahí la sensación de desorden que reportó el
 * cliente; la referencia que pidió (La Hacienda) es justamente la de +158.
 *
 * El `auto` se muda a la píldora del teléfono: así los ejecutivos empiezan
 * SIEMPRE justo después del logo, y es el teléfono el que se pega al pie. Las
 * tarjetas quedan alineadas arriba Y abajo, tengan uno o cuatro ejecutivos. */
.pv-sala-ejec-w { padding-top: 14px; border-top: 1px solid #f0eae4; }

/* Envoltorios vacíos: si al proyecto le falta logo, teléfono, horario o
   ejecutivos, el shortcode devuelve '' pero Elementor deja el widget con su
   caja (y su hueco de gap). Se ocultan por :has(), mismo patrón que
   .pv-card-promo. Hoy aplica a Bijao y Clayton Park, que no tienen teléfono. */
.pv-sala-grid .pv-sala-logo:not(:has(img)),
.pv-sala-grid .pv-sala-tel-w:not(:has(.pv-sala__tel)),
.pv-sala-grid .pv-sala-hr-w:not(:has(.pv-sala__hr)),
.pv-sala-grid .pv-sala-ejec-w:not(:has(.pv-sala__ejec)) { display: none; }

/* La píldora del teléfono va al PIE de la tarjeta y centrada (mockup del cliente).
   Ya no hace falta el margen inferior del bloque de ejecutivos: ahora ese bloque
   tiene debajo la píldora, no el borde de la tarjeta. */
.pv-sala-grid .pv-sala-tel-w { text-align: center; margin-top: auto; padding-top: 14px; }

/* Y si al proyecto le faltan los CUATRO datos se oculta la tarjeta entera: sin
   esto, publicar un `proyecto` con zona y sin rellenar nada deja un rectángulo
   blanco en la pestaña — que es justo el caso que abre «aparece solo». Apunta al
   ITEM del grid, no al contenedor de Elementor, porque las `_css_classes` de
   contenedor no se renderizan en esta versión. */
.pv-sala-grid .jet-listing-grid__item:not(:has(.pv-sala-logo__img, .pv-sala__tel, .pv-sala__hr, .pv-sala__ejec)) { display: none; }

@media (max-width: 767px) {
  .pv-sala-grid .jet-listing-grid__items { gap: 18px; }
  .pv-sala-grid .jet-listing-grid__item { flex: 0 1 100% !important; width: 100% !important; }
}

/* === Distintivo promocional SOBRE la galería de la ficha del modelo =========
   Pedido por el cliente: el mismo distintivo de la tarjeta, también dentro del
   modelo, en la esquina superior izquierda. Va dentro de `.pv-hero-gal`, que ya
   es el contexto de posicionamiento de flechas y puntos — así no dependemos de
   una clase en el contenedor de Elementor, que en esta versión no se renderiza.
   La pastilla no se estila aquí: reutiliza `.pv-promo-badge`, cuyas reglas están
   acotadas a los listings, así que se repiten los valores mínimos. */
.pv-hero-gal-promo{position:absolute;top:14px;left:14px;z-index:5;pointer-events:none;max-width:calc(100% - 28px)}
.pv-hero-gal-promo .pv-promo-badge{display:inline-flex;align-items:center;gap:6px;
  background:#FFFFFF;color:#1A1A1A;border:1px solid rgba(26,26,26,.10);
  font:700 11px/1 Inter,sans-serif;text-transform:uppercase;
  letter-spacing:.04em;padding:7px 13px;border-radius:999px;box-shadow:0 2px 8px rgba(0,0,0,.22);max-width:100%}
.pv-hero-gal-promo .pv-promo-ic{flex:0 0 auto;display:block}
.pv-hero-gal-promo .pv-promo-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
@media (max-width:600px){ .pv-hero-gal-promo{top:10px;left:10px} .pv-hero-gal-promo .pv-promo-badge{font-size:10px;padding:6px 11px} }
