/* Shared, keyboard-accessible navigation and contact actions. */
[hidden] { display: none !important; }
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 9999;
  padding: .75rem 1rem; background: #182024; color: #fff;
}
.skip-link:focus { left: 1rem; top: 1rem; }
a:focus-visible, button:focus-visible, summary:focus-visible {
  outline: 3px solid #547a89;
  outline-offset: 4px;
}
.service-menu {
  position: relative; margin: 0; padding: 0; border: 0;
  border-radius: 0; overflow: visible; background: transparent;
}
.service-menu > summary {
  display: flex; align-items: center; gap: .5rem;
  padding: .5rem 0; min-height: 44px; color: inherit;
  font: inherit; font-weight: 700; line-height: inherit;
  cursor: pointer; list-style: none;
}
.service-menu > summary::-webkit-details-marker { display: none; }
.service-menu > summary::after { content: '⌄'; font-size: 1em; margin: 0; }
.service-menu[open] > summary::after { content: '⌃'; transform: none; }
.service-menu-links {
  position: absolute; top: 100%; left: 0; min-width: 260px; padding: .5rem;
  background: #fff; border: 1px solid #e0e0e0; border-radius: 10px;
  box-shadow: 0 12px 30px rgba(0,0,0,.12);
}
.service-menu-links a { display: block; padding: .7rem .8rem; border-radius: 6px; }
.service-menu-links a:hover, .service-menu-links a:focus-visible { background: #f5f6f6; }
.service-menu-links a[aria-current="page"] { color: #a75312; background: #f8ede6; }
.phone-number a { text-decoration: none; color: inherit; }
.contact-grid > *, .field { min-width: 0; }
input, select, textarea { min-width: 0; max-width: 100%; }
.form-intro { margin-bottom: 1.25rem; color: #59656b; font-size: .9rem; }
.service-planning .section-narrow { padding-top: 2.5rem; padding-bottom: 2.5rem; }
.service-planning .body-text { margin-bottom: 1rem; }
.mobile-action-bar { display: none; }

@media (max-width: 1100px) {
  header { flex-wrap: nowrap; padding: .75rem 1rem; }
  header:has(.nav-shell) { padding: 0; }
  header img.logo { height: 52px; }
  .phone-number { display: none; }
  .nav-actions .nav-cta { display: none; }
  .menu-toggle { display: inline-grid; place-items: center; flex-shrink: 0; }
  #primary-nav {
    position: absolute; inset: calc(100% + .5rem) 1rem auto;
    display: flex; flex-direction: column; align-items: stretch; gap: .25rem;
    max-height: calc(100dvh - 180px); overflow-y: auto;
    background: #fff; border: 1px solid #e0e0e0; border-radius: 10px;
    box-shadow: 0 12px 30px rgba(0,0,0,.12); padding: .75rem;
    opacity: 1; transform: none; pointer-events: auto; visibility: visible;
  }
  .nav-ready #primary-nav:not(.open) { display: none; }
  #primary-nav a, .service-menu > summary { min-height: 44px; padding: .75rem; border-radius: 6px; }
  .service-menu-links { position: static; min-width: 0; padding: 0 0 0 .5rem; border: 0; border-left: 2px solid #e0e0e0; border-radius: 0; box-shadow: none; }
  .nav-call { display: block; color: #a75312; }
  html:not(.nav-ready) header, html:not(.nav-ready) .nav-shell { flex-wrap: wrap; height: auto; }
  html:not(.nav-ready) header { position: static; }
  html:not(.nav-ready) #primary-nav { position: static; width: 100%; max-height: none; margin: .75rem 0; }
  html:not(.nav-ready) .menu-toggle { display: none; }
  html:not(.nav-ready) .nav-actions { margin: 0 0 .75rem; }
}

@media (max-width: 640px) {
  body { padding-bottom: calc(58px + env(safe-area-inset-bottom, 0px)); }
  html { scroll-padding-bottom: 90px; }
  input, select, textarea { font-size: 16px; }
  #enquiry-form { padding: 1.25rem; }
  .mobile-action-bar {
    position: fixed; inset: auto 0 0; z-index: 1100;
    display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
    background: #d8dcde; border-top: 1px solid #d8dcde;
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  .mobile-action-bar a {
    display: flex; align-items: center; justify-content: center; gap: .45rem;
    min-height: 58px; padding: .5rem; text-decoration: none;
    font-weight: 700; background: #fff; color: #182024;
  }
  .mobile-action-bar a:last-child { background: #a75312; color: #fff; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
