/*
 * InmoPlus Public Design Contract — v4.6.0
 * Autoridad compartida para todas las páginas públicas.
 *
 * REGLA: los módulos pueden componer estos tokens, pero no redefinirlos.
 * REGLA: cada página debe vivir dentro de .imp-public-ui y una clase raíz propia.
 */
:root{
  /* Marca */
  --imp-color-primary:#80c342;
  --imp-color-primary-hover:#6eae35;
  --imp-color-primary-dark:#5f9e25;
  --imp-color-secondary:#005c67;
  --imp-color-secondary-dark:#06454d;
  --imp-color-ink:#0f172a;
  --imp-color-text:#172033;
  --imp-color-muted:#64748b;
  --imp-color-line:#e2e8f0;
  --imp-color-bg:#f8fafc;
  --imp-color-panel:#ffffff;
  --imp-color-success:#15803d;
  --imp-color-warning:#b45309;
  --imp-color-danger:#b91c1c;

  /* Tipografía: no usar tamaños arbitrarios por página */
  --imp-font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --imp-font-xs:.75rem;       /* 12px: etiquetas únicamente */
  --imp-font-sm:.875rem;      /* 14px: metadatos */
  --imp-font-md:1rem;         /* 16px: texto base */
  --imp-font-lg:1.125rem;     /* 18px: introducción */
  --imp-font-xl:1.375rem;     /* 22px: tarjeta */
  --imp-font-2xl:clamp(1.75rem,2.4vw,2.5rem);
  --imp-font-3xl:clamp(2.25rem,4vw,4rem);
  --imp-line-tight:1.12;
  --imp-line-heading:1.22;
  --imp-line-body:1.65;

  /* Espaciado oficial: 4, 8, 12, 16, 24, 32, 48, 64, 96 */
  --imp-space-1:.25rem;
  --imp-space-2:.5rem;
  --imp-space-3:.75rem;
  --imp-space-4:1rem;
  --imp-space-6:1.5rem;
  --imp-space-8:2rem;
  --imp-space-12:3rem;
  --imp-space-16:4rem;
  --imp-space-24:6rem;

  /* Layout oficial */
  --imp-content-width:1200px;
  --imp-content-wide:1360px;
  --imp-gutter-desktop:32px;
  --imp-gutter-tablet:24px;
  --imp-gutter-mobile:16px;
  --imp-section-y:clamp(56px,7vw,96px);

  /* Superficies */
  --imp-radius-sm:10px;
  --imp-radius-md:16px;
  --imp-radius-lg:24px;
  --imp-radius-pill:999px;
  --imp-shadow-sm:0 8px 24px rgba(8,42,53,.06);
  --imp-shadow-md:0 18px 48px rgba(8,42,53,.11);
  --imp-shadow-lg:0 28px 72px rgba(8,42,53,.16);
  --imp-transition:180ms ease;
}

/* Base aislada */
.imp-public-ui,
.imp-public-ui *{box-sizing:border-box}
.imp-public-ui{
  width:100%;
  max-width:none;
  margin:0;
  color:var(--imp-color-text);
  background:var(--imp-color-panel);
  font-family:var(--imp-font-family);
  font-size:var(--imp-font-md);
  line-height:var(--imp-line-body);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.imp-public-ui :where(h1,h2,h3,h4,p,ul,ol,figure){margin-top:0}
.imp-public-ui :where(h1,h2,h3,h4){color:var(--imp-color-ink);font-family:inherit;font-weight:800;letter-spacing:-.025em}
.imp-public-ui h1{font-size:var(--imp-font-3xl);line-height:var(--imp-line-tight)}
.imp-public-ui h2{font-size:var(--imp-font-2xl);line-height:var(--imp-line-heading)}
.imp-public-ui h3{font-size:var(--imp-font-xl);line-height:var(--imp-line-heading)}
.imp-public-ui :where(p,li){font-size:var(--imp-font-md);line-height:var(--imp-line-body)}
.imp-public-ui :where(img,svg,video){max-width:100%;height:auto}
.imp-public-ui :where(input,select,textarea,button){font:inherit}
.imp-public-ui a{color:inherit;text-decoration-thickness:.08em;text-underline-offset:.18em}

/* Full bleed y contenedores: únicas medidas autorizadas */
.imp-public-fullbleed{
  position:relative;
  left:50%;
  width:100vw;
  max-width:100vw;
  margin-left:-50vw;
  margin-right:-50vw;
  border:0!important;
  border-radius:0!important;
  overflow:clip;
}
.imp-pub-container,
.imp-container{
  width:min(calc(100% - (var(--imp-gutter-desktop) * 2)),var(--imp-content-width));
  margin-inline:auto;
}
.imp-pub-container--wide,
.imp-container--wide{
  width:min(calc(100% - (var(--imp-gutter-desktop) * 2)),var(--imp-content-wide));
  margin-inline:auto;
}
.imp-section{padding-block:var(--imp-section-y)}
.imp-section--compact{padding-block:clamp(40px,5vw,64px)}

/* Componentes canónicos */
.imp-btn{
  min-height:46px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--imp-space-2);
  padding:11px 20px;
  border:1px solid transparent;
  border-radius:var(--imp-radius-pill);
  font-size:var(--imp-font-sm);
  font-weight:750;
  line-height:1;
  text-decoration:none;
  cursor:pointer;
  transition:transform var(--imp-transition),box-shadow var(--imp-transition),background var(--imp-transition);
}
.imp-btn:hover{transform:translateY(-1px)}
.imp-btn--primary{background:var(--imp-color-primary);color:#102109;box-shadow:0 10px 24px rgba(128,195,66,.22)}
.imp-btn--primary:hover{background:var(--imp-color-primary-hover)}
.imp-btn--secondary{background:var(--imp-color-secondary);color:#fff}
.imp-btn--ghost{background:transparent;border-color:var(--imp-color-line);color:var(--imp-color-ink)}
.imp-card{background:var(--imp-color-panel);border:1px solid var(--imp-color-line);border-radius:var(--imp-radius-lg);box-shadow:var(--imp-shadow-sm)}
.imp-kicker{margin-bottom:var(--imp-space-3);color:var(--imp-color-secondary);font-size:var(--imp-font-xs);font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.imp-lead{font-size:var(--imp-font-lg);line-height:1.7;color:var(--imp-color-muted)}
.imp-grid{display:grid;gap:var(--imp-space-6)}
.imp-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.imp-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.imp-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}

/* Formularios */
.imp-public-ui :where(input:not([type=checkbox]):not([type=radio]),select,textarea){
  width:100%;
  min-height:46px;
  padding:11px 14px;
  color:var(--imp-color-text);
  background:#fff;
  border:1px solid var(--imp-color-line);
  border-radius:var(--imp-radius-md);
  outline:none;
  transition:border-color var(--imp-transition),box-shadow var(--imp-transition);
}
.imp-public-ui :where(input,select,textarea):focus{border-color:var(--imp-color-secondary);box-shadow:0 0 0 3px rgba(0,92,103,.12)}

/* Aislamiento controlado de Elementor/tema: solo cuando hay un módulo público activo. */
body.imp-public-page-active{margin:0;overflow-x:hidden}
body.imp-public-page-active :where(.site-main,.entry-content,.page-content){max-width:none;margin:0;padding:0}
body.imp-public-page-active .elementor-widget-shortcode,
body.imp-public-page-active .elementor-widget-shortcode>.elementor-widget-container{width:100%;max-width:none;margin:0;padding:0}
body.imp-public-page-active .elementor-location-single,
body.imp-public-page-active .elementor-location-archive{max-width:none}

/* Accesibilidad */
.imp-public-ui :focus-visible{outline:3px solid rgba(128,195,66,.65);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.imp-public-ui *{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Responsive oficial */
@media(max-width:1024px){
  .imp-pub-container,.imp-container,.imp-pub-container--wide,.imp-container--wide{width:min(calc(100% - (var(--imp-gutter-tablet) * 2)),var(--imp-content-wide))}
  .imp-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .imp-pub-container,.imp-container,.imp-pub-container--wide,.imp-container--wide{width:calc(100% - (var(--imp-gutter-mobile) * 2))}
  .imp-grid--2,.imp-grid--3,.imp-grid--4{grid-template-columns:1fr}
  .imp-btn{width:100%;min-height:48px}
}

/* ==========================================================
 * InmoPlus 4.6.5 — Contraste canónico para héroes oscuros
 * Debe permanecer después de las reglas tipográficas globales.
 * ========================================================== */
.imp-public-ui .imp-page-hero,
.imp-public-page .imp-page-hero,
.imp-services-page .imp-services-hero {
  color:#fff;
}

.imp-public-ui .imp-page-hero :where(h1,h2,h3,h4),
.imp-public-page .imp-page-hero :where(h1,h2,h3,h4),
.imp-services-page .imp-services-hero :where(h1,h2,h3,h4) {
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
  text-shadow:0 3px 18px rgba(0,0,0,.38);
}

.imp-public-ui .imp-page-hero :where(p,li),
.imp-public-page .imp-page-hero :where(p,li),
.imp-services-page .imp-services-hero :where(p,li) {
  color:rgba(255,255,255,.92) !important;
  -webkit-text-fill-color:rgba(255,255,255,.92) !important;
}

.imp-public-ui .imp-page-hero .imp-page-kicker,
.imp-public-page .imp-page-hero .imp-page-kicker,
.imp-services-page .imp-services-hero .imp-page-kicker {
  color:#9ee85c !important;
  -webkit-text-fill-color:#9ee85c !important;
  text-shadow:0 2px 12px rgba(0,0,0,.34);
}

/* El formulario mantiene texto oscuro sobre superficie blanca. */
.imp-public-ui .imp-page-hero .imp-services-search,
.imp-public-page .imp-page-hero .imp-services-search {
  color:#102330;
}
.imp-public-ui .imp-page-hero .imp-services-search input,
.imp-public-page .imp-page-hero .imp-services-search input {
  color:#102330 !important;
  -webkit-text-fill-color:#102330 !important;
}
.imp-public-ui .imp-page-hero .imp-services-search input::placeholder,
.imp-public-page .imp-page-hero .imp-services-search input::placeholder {
  color:#6f7e85 !important;
  opacity:1;
}
