/* ============================================================
   INMOnube — assets/css/inmonube.css
   Estilos complementarios cargados por <link> en el <head>
   Las variables CSS (:root) se inyectan inline desde header.php
   ============================================================ */

/* ── Reset scroll suave ─────────────────────── */
html { scroll-behavior: smooth; }

/* ── Selección de texto con color de marca ───── */
::selection {
  background: var(--color-sec);
  color: var(--text-sobre-sec);
}

/* ── Focus visible accesible ─────────────────── */
:focus-visible {
  outline: 3px solid var(--color-sec);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ── Scrollbar personalizada (Webkit) ────────── */
::-webkit-scrollbar { width: 7px; height: 7px; }
::-webkit-scrollbar-track { background: #f0f0f0; }
::-webkit-scrollbar-thumb {
  background: var(--color-prim);
  border-radius: 10px;
  opacity: .6;
}
::-webkit-scrollbar-thumb:hover { opacity: 1; }

/* ── Imágenes responsivas ────────────────────── */
img { max-width: 100%; height: auto; }

/* ── Secciones ────────────────────────────────── */
section { position: relative; }

/* ── Lazy load fade-in ───────────────────────── */
/* NO usamos opacity:0 en el selector base: si la imagen está en caché
   el evento load no se dispara y quedaría invisible permanentemente.
   El fade se maneja solo por JS agregando clases .lazy-loading / .lazy-loaded */
img.lazy-loading {
  opacity: 0;
  transition: opacity .4s ease;
}
img.lazy-loaded {
  opacity: 1;
  transition: opacity .4s ease;
}

/* ── Utilidades de espaciado extra ───────────── */
.py-6  { padding-top: 5rem !important;  padding-bottom: 5rem !important; }
.mt-6  { margin-top: 5rem !important; }
.mb-6  { margin-bottom: 5rem !important; }

/* ── Bootstrap override: form-select ────────── */
.form-select:focus {
  border-color: var(--color-prim);
  box-shadow: 0 0 0 3px var(--color-prim-light);
}

/* ── Spinner de carga de página ─────────────── */
#pageLoader {
  position: fixed;
  inset: 0;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  transition: opacity .4s ease;
}
#pageLoader.fade-out {
  opacity: 0;
  pointer-events: none;
}
#pageLoader .loader-ring {
  width: 44px; height: 44px;
  border: 3px solid var(--color-prim-light);
  border-top-color: var(--color-prim);
  border-radius: 50%;
  animation: spin .7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ── Back to top button ──────────────────────── */
#backToTop {
  position: fixed;
  bottom: 100px;
  right: 24px;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--color-prim);
  color: var(--text-sobre-prim);
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .95rem;
  cursor: pointer;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .3s, transform .3s;
  z-index: 900;
  box-shadow: 0 2px 12px rgba(0,0,0,.15);
}
#backToTop.visible {
  opacity: 1;
  transform: translateY(0);
}
#backToTop:hover {
  background: var(--color-prim-hover);
  transform: translateY(-2px);
}

/* ── Sección títulos ──────────────────────────── */
/* (definida en header.php inline, repetida aquí para referencia) */

/* ── Cards en hover dentro de un grid ─────────── */
.row .inmo-card-link:focus-visible .inmo-card {
  outline: 3px solid var(--color-sec);
  outline-offset: 3px;
}

/* ── Tabla de comparación (futuro uso) ────────── */
.inmo-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .88rem;
}
.inmo-table th {
  background: var(--color-prim);
  color: var(--text-sobre-prim);
  padding: .65rem 1rem;
  text-align: left;
  font-weight: 600;
  font-size: .78rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.inmo-table td {
  padding: .6rem 1rem;
  border-bottom: 1px solid #f0f0f0;
  color: #444;
}
.inmo-table tr:last-child td { border-bottom: none; }
.inmo-table tr:hover td { background: var(--color-prim-light); }

/* ── Alert genérico de INMOnube ───────────────── */
.inmo-alert {
  padding: .9rem 1.1rem;
  border-radius: 10px;
  font-size: .88rem;
  display: flex;
  align-items: flex-start;
  gap: .6rem;
}
.inmo-alert i { font-size: 1.05rem; flex-shrink: 0; margin-top: .05rem; }
.inmo-alert--info    { background: #eff6ff; color: #1d4ed8; border-left: 4px solid #3b82f6; }
.inmo-alert--success { background: #d1fae5; color: #065f46; border-left: 4px solid #10b981; }
.inmo-alert--warning { background: #fef9c3; color: #854d0e; border-left: 4px solid #eab308; }
.inmo-alert--error   { background: #fee2e2; color: #991b1b; border-left: 4px solid #ef4444; }

/* ── Ribbon de estado en cards de inmuebles ── */
.inmo-ribbon {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  overflow: hidden;
  width: 90px;
  height: 90px;
  pointer-events: none;
}

.inmo-ribbon span {
  position: absolute;
  top: 18px;
  right: -22px;
  display: block;
  width: 110px;
  padding: 5px 0;
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-align: center;
  transform: rotate(45deg);
  box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
}

/* ── Eyebrow ──────────────────────────────────── */
.home-eyebrow {
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--color-sec);
  margin-bottom: .3rem;
}

/* ── Responsive: navbar mobile ────────────────── */
@media (max-width: 991px) {
  .inmo-navbar .navbar-collapse {
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 8px 30px rgba(0,0,0,.12);
    padding: 1rem;
    margin-top: .5rem;
  }
  .inmo-navbar .nav-link::after { display: none; }
  .inmo-navbar__cta {
    display: inline-flex;
    margin-top: .5rem;
  }
}

/* ── Print styles ─────────────────────────────── */
@media print {
  .inmo-navbar,
  .wapp-fab,
  #backToTop,
  .banner-cta,
  .inmo-footer { display: none !important; }

  .inmo-card { box-shadow: none; border: 1px solid #ddd; }
  a { color: inherit !important; }
}
