/* =========================================================
   HOMES BY MADHU — Base
   Reset, root element defaults, and site-wide accessibility
   primitives. Requires tokens.css to be loaded first.
   ========================================================= */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }
body {
  font-family: var(--font-sans);
  background: var(--white);
  color: var(--text);
  line-height: 1.6;
  font-size: 16px;
}

h1,h2,h3,h4,h5,h6 {
  font-family: var(--font-serif);
  line-height: 1.2;
  color: var(--brown);
}

a { color: inherit; text-decoration: none; transition: color var(--transition); }
img { max-width: 100%; display: block; }
ul { list-style: none; }
button { cursor: pointer; border: none; background: none; font-family: inherit; }
input, textarea, select {
  font-family: inherit;
  font-size: 1rem;
  border-radius: var(--radius);
}

/* ── Accessibility ── */
.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;
}
/* Honeypot spam-trap field: hidden from sighted users AND assistive tech
   (aria-hidden on the wrapper + tabindex="-1" on the input in markup), never
   just display:none so a bot inspecting computed styles is less likely to
   detect and skip it. See app/services/spam.py. */
.hp-field {
  position: absolute; left: -9999px; top: auto;
  width: 1px; height: 1px; overflow: hidden;
}
.skip-link {
  position: fixed; top: 8px; left: 8px; z-index: 1000;
  padding: 10px 16px; background: var(--white); color: var(--black);
  border: 2px solid var(--red); transform: translateY(-150%);
}
.skip-link:focus { transform: translateY(0); }
:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
