/* Accessibility and portable-site behavior. The approved design is in styles.css. */
body { font-size: 1rem; }
button, input, select, textarea { font: inherit; }
:focus-visible { outline: 3px solid #07962f; outline-offset: 4px; }
.skip-link { position: fixed; top: -8rem; left: 1rem; z-index: 100; padding: .75rem 1rem; color: #fff; background: #102934; }
.skip-link:focus { top: 1rem; }
.mobile-menu { display: none; }
.form-error { color: #9d2424; background: #fff3f3; border: 1px solid #eccaca; border-radius: .5rem; padding: 1rem; line-height: 1.5; }
.form-error[hidden] { display: none; }
.upload-box input { font-size: .875rem; }
.upload-box { padding: .75rem .25rem; }
.quote-form, .quote-hero > div, .form-grid > label { min-width: 0; }
.quote-contact-mini a, .business-contact-row a, .footer-new a { overflow-wrap: anywhere; }
.business-contact-row b { min-width: 0; }
.quote-form input:disabled, .quote-form button:disabled { opacity: .7; }
@media (max-width: 780px) {
  .topbar { font-size: .875rem; }
  .mainnav { position: relative; grid-template-columns: minmax(0,1fr) auto auto; gap: .5rem; height: auto; min-height: 76px; }
  .nav-logo { width: min(100%,166px); }
  .nav-estimate { min-width: 0; padding: 0 .75rem; font-size: .875rem; }
  .mobile-menu { display: block; }
  .mobile-menu > summary { list-style: none; cursor: pointer; border: 1px solid #ccd8d8; border-radius: .5rem; padding: .8rem .55rem; font-size: .875rem; font-weight: 700; }
  .mobile-menu > summary::-webkit-details-marker { display: none; }
  .mainnav .mobile-menu nav { position: absolute; top: calc(100% - 1px); left: 0; right: 0; z-index: 30; display: grid; gap: 0; background: #fff; border-bottom: 1px solid #dfe8e8; box-shadow: 0 12px 20px #10293412; padding: .5rem 1rem; }
  .mainnav .mobile-menu:not([open]) nav { display: none; }
  .mainnav .mobile-menu nav a { display: block; padding: .8rem 1rem; font-size: 1rem; }
  .hero-copy-mock h1 { font-size: clamp(2.65rem,12.5vw,4.25rem); }
  .business-copy-mock h1 { font-size: clamp(2.35rem,10.7vw,2.75rem); }
  .two-col-content h2,.area-block h2,.faq-block h2,.contact-block h2,.service-extra h2 { font-size: clamp(2.1rem,10vw,2.625rem); }
  .eyebrow { font-size: .875rem; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
