/* ============================================================
   AC Bienes Raíces Condominios — Base
   Reset, tipografía, layout y utilidades.
   ============================================================ */

/* ---------- Reset ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  margin: 0;
  background-color: var(--ac-bg);
  color: var(--ac-text);
  font-family: var(--ac-font-body);
  font-size: var(--ac-fs-base);
  line-height: var(--ac-lh-base);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, p, figure, blockquote, ul, ol, dl, dd {
  margin: 0;
}

ul, ol {
  padding: 0;
  list-style: none;
}

img, svg, picture {
  display: block;
  max-width: 100%;
}

img {
  height: auto;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

a {
  color: var(--ac-red);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
}

a:hover {
  color: var(--ac-red-hover);
}

/* ---------- Foco accesible ---------- */
:focus-visible {
  outline: 3px solid var(--ac-focus);
  outline-offset: 3px;
  border-radius: var(--ac-radius-sm);
}

/* En superficies oscuras el azul de foco pierde contraste */
.ac-surface-dark :focus-visible {
  outline-color: #ffffff;
}

/* ---------- Tipografía ---------- */
h1, h2, h3, h4 {
  font-family: var(--ac-font-display);
  font-weight: 600;
  line-height: var(--ac-lh-tight);
  letter-spacing: var(--ac-tracking-tight);
  color: var(--ac-text);
  text-wrap: balance;
}

/* Fluido: en 320 px una palabra larga como "inmobiliarias" a 46 px no cabe
   y empuja la rejilla, provocando scroll lateral. */
h1 { font-size: clamp(2rem, 7.5vw, var(--ac-fs-3xl)); }
h2 { font-size: var(--ac-fs-2xl); }
h3 { font-size: var(--ac-fs-lg); }
h4 { font-size: var(--ac-fs-md); }

@media (min-width: 768px) {
  h1 { font-size: var(--ac-fs-4xl); }
  h2 { font-size: var(--ac-fs-3xl); }
  h3 { font-size: var(--ac-fs-xl); }
}

p {
  text-wrap: pretty;
}

/* Los correos y las URLs largas no tienen donde partirse y desbordan en
   pantallas angostas. Con esto se rompen en lugar de forzar scroll lateral. */
p, li, h1, h2, h3, h4, address, dd, td {
  overflow-wrap: break-word;
}

strong {
  font-weight: 600;
}

/* Etiqueta en versalitas sobre los títulos de sección */
.ac-eyebrow {
  display: block;
  font-family: var(--ac-font-body);
  font-size: var(--ac-fs-xs);
  font-weight: 600;
  letter-spacing: var(--ac-tracking-wide);
  text-transform: uppercase;
  color: var(--ac-red);
  margin-bottom: var(--ac-sp-3);
}

.ac-surface-dark .ac-eyebrow {
  color: #f0a3a6;
}

.ac-lead {
  font-size: var(--ac-fs-md);
  line-height: var(--ac-lh-base);
  color: var(--ac-text-muted);
}

.ac-surface-dark .ac-lead {
  color: var(--ac-text-on-dark-muted);
}

/* ---------- Layout ---------- */
.ac-container {
  width: 100%;
  max-width: var(--ac-container);
  margin-inline: auto;
  padding-inline: var(--ac-gutter);
}

.ac-container--narrow {
  max-width: var(--ac-container-narrow);
}

.ac-section {
  padding-block: var(--ac-section-y);
}

.ac-section--lg {
  padding-block: var(--ac-section-y-lg);
}

.ac-section--alt {
  background-color: var(--ac-bg-alt);
}

.ac-surface-dark {
  background-color: var(--ac-bg-dark);
  color: var(--ac-text-on-dark);
}

.ac-surface-dark h1,
.ac-surface-dark h2,
.ac-surface-dark h3,
.ac-surface-dark h4 {
  color: var(--ac-white);
}

/* Encabezado de sección reutilizable */
.ac-section-head {
  max-width: 62ch;
  margin-bottom: var(--ac-sp-8);
}

.ac-section-head p {
  margin-top: var(--ac-sp-4);
}

/* ---------- Rejillas ---------- */
.ac-grid {
  display: grid;
  gap: var(--ac-sp-5);
}

@media (min-width: 768px) {
  .ac-grid--2 { grid-template-columns: repeat(2, 1fr); }
  .ac-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .ac-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .ac-grid { gap: var(--ac-sp-6); }
}

@media (min-width: 1024px) {
  .ac-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

/* ---------- Utilidades ---------- */
.ac-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* Enlace de salto para usuarios de teclado y lectores de pantalla */
.ac-skip-link {
  position: absolute;
  top: var(--ac-sp-3);
  left: var(--ac-sp-3);
  z-index: var(--ac-z-overlay);
  transform: translateY(-200%);
  background-color: var(--ac-ink);
  color: var(--ac-white);
  padding: var(--ac-sp-3) var(--ac-sp-4);
  border-radius: var(--ac-radius);
  font-size: var(--ac-fs-sm);
  font-weight: 500;
  text-decoration: none;
}

.ac-skip-link:focus-visible {
  transform: translateY(0);
  color: var(--ac-white);
}

.ac-rule {
  border: 0;
  border-top: 1px solid var(--ac-border);
  margin: 0;
}

.ac-surface-dark .ac-rule {
  border-top-color: var(--ac-border-dark);
}

/* Los hijos de una rejilla no bajan de su min-content por omisión, así que una
   palabra larga puede ensanchar la columna entera. Con min-width 0 la columna
   puede encogerse y el texto se parte. */
.ac-grid > *,
.ac-hero__inner > *,
.ac-contact-grid > *,
.ac-propiedades > *,
.ac-steps > * {
  min-width: 0;
}
