/* ---------------------- */
/* Global Base            */
/* ---------------------- */
html, body {
  margin: 0;
  padding: 0;
  background: #111;
  color: #fff;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
}

*,*::before,*::after { box-sizing: border-box; }
body { overflow-x: hidden; }

/* Dark application pages should never inherit browser blue/purple visited-link
   colors. Component/page styles with higher specificity can still override this. */
:where(.container) a:link,
:where(.container) a:visited {
  color: #fff;
}
:where(.container) a:hover,
:where(.container) a:focus-visible {
  color: #ff5a5a;
}

.test-mode-banner {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: #fef3c7;
  color: #7c2d12;
  border-bottom: 2px solid #f59e0b;
  padding: .65rem 1rem;
  text-align: center;
  font-weight: 900;
  letter-spacing: 0;
}

/* The base layout uses .hero around every page, not only the homepage.
   Keep that wrapper neutral so desktop pages can use their own widths/layouts. */
.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
}
.hero {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0;
}
.hero > * { min-width: 0; }

/* ---------------------- */
/* Home Hero (Index page) */
/* ---------------------- */
.home-hero {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  min-height: 100vh;
  text-align: center;
  background-color: #111;
  color: #fff;
  padding: 1rem 1rem 3rem;
  overflow-x: hidden;
}

.home-hero img { max-width: 200px; height: auto; margin-bottom: 20px; }
.home-hero h1 { font-size: 2rem; margin: 10px 0; }
.home-hero p  { font-size: 1.2rem; margin: 10px 0 20px; }

.home-hero .hero__ctas {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  max-width: 560px;
  margin: 1rem auto 0;
  padding: 0;
}
.home-hero .hero__ctas .btn { width: auto; min-width: 140px; }

.home-hero .serve-form {
  background: #0f0f0f;
  border: 1px solid #2a2a2a;
  border-radius: .75rem;
  padding: 1rem;
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
}
.home-hero .serve-form input[type="tel"],
.home-hero .serve-form input[type="text"] {
  width: 100%;
  max-width: 100%;
  padding: .75rem;
  border: 1px solid #333;
  border-radius: .5rem;
  background: #111;
  color: #eee;
  margin-bottom: .75rem;
}
.home-hero .checkline { margin: .25rem 0 .75rem; display:flex; align-items:center; gap:.5rem; }
.home-hero .alert-error { background:#3b0d0d; color:#ffd6d6; padding:.75rem; border-radius:.5rem; margin-bottom:.75rem; }

#serve-check,
#serve-check form {
  width: 100%;
  max-width: 520px;
  margin-left: auto;
  margin-right: auto;
}

@media (min-width: 900px) {
  .home-hero .hero__ctas { grid-template-columns: auto 1fr; align-items: start; }
}

/* ---------------------- */
/* General forms          */
/* ---------------------- */
.hero form,
.hero .form-card {
  width: 100%;
  box-sizing: border-box;
}

.hero input[type="text"],
.hero input[type="tel"],
.hero input[type="email"],
.hero input[type="number"],
.hero select {
  box-sizing: border-box;
}

/* ---------------------- */
/* Footer (white band)    */
/* ---------------------- */
.site-footer {
  text-align: center;
  padding: 1.5rem 0;
  background: #fff;
  color: #111;
}
.site-footer .footer-content { display:flex; flex-direction:column; align-items:center; gap:.75rem; }
.site-footer .footer-links { list-style:none; display:flex; gap:1.5rem; padding:0; margin:0; }
.site-footer .footer-links a { color:#00f; text-decoration:none; }
.site-footer .footer-links a:hover { text-decoration: underline; }

/* ---------------------- */
/* Mobile                 */
/* ---------------------- */
@media (max-width: 900px) {
  .container { padding: 0 16px; }
}

@media (max-width: 480px) {
  input[type="tel"],
  input[name="phone"],
  input[name="zip"],
  input[type="text"].zip,
  .form-row input[type="text"] {
    max-width: 280px;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    display: block;
  }

  .site-footer .footer-links {
    width: 100%;
    justify-content: space-around;
    gap: .75rem;
    padding: 0 12px;
  }
}
