/* Shared source-level accessibility styles for editorial public pages. */
html { scroll-padding-top: 110px; }
html:focus-within { scroll-behavior: auto; }
body { overflow-wrap: anywhere; }
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, [tabindex]:focus-visible { outline: 3px solid #1E4A3E; outline-offset: 3px; box-shadow: 0 0 0 8px #FAF8F4; transition-property: color, background-color, border-color, transform !important; }
footer :focus-visible, .booking-cta :focus-visible { outline-color: #FAF8F4; box-shadow: 0 0 0 8px #1C1814; }
main:focus { outline: none; }
a, button, input, textarea, select { scroll-margin-top: 110px; }
.skip-link { position: fixed; top: -100px; left: 16px; padding: 12px 18px;
  background: #1C1814; color: #FAF8F4; z-index: 20000; transition: none; }
.skip-link:focus { top: 12px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.reveal, .reveal.in { opacity: 1; transform: none; transition: none; }
.service-card, .industry-row, .arrow-icon, .ix-arrow { cursor: default; }
.faq-a, .faq-item.open .faq-a { max-height: none; overflow: visible; }
.faq-item h3 { margin: 0; }
.guide-quote::before { content: none; }
figure, blockquote { margin: 0; }
.guide-quote figcaption { display: block; }
.ticker { position: relative; overflow: hidden; }
#ticker-pause { display: block; margin: 8px 16px 8px auto; padding: 8px 14px;
  color: #1E4A3E; border: 1px solid #1E4A3E; border-radius: 24px;
  background: transparent; font: inherit; cursor: pointer; }
.marquee-track[style*="paused"] { animation-play-state: paused; }
dialog.mobile-drawer { border: 0; padding: 0; margin: 0; max-width: none; max-height: none;
  width: 100vw; height: 100dvh; background: transparent; }
dialog.mobile-drawer:not([open]) { display: none !important; }
dialog.mobile-drawer::backdrop { background: rgba(28,24,20,.45); }
.mobile-drawer-panel { overflow-y: auto; max-height: 100dvh; }
.field-error, #contact-error { color: #963D26; font-size: 14px; }
.field-error:empty { display: none; }
.contact-form input, .contact-form textarea, .contact-form select { border-bottom-color: #767066; }
.form-row input::placeholder, .form-row textarea::placeholder { color: #6B6256; opacity: 1; }
.staff-page { max-width: 560px; margin: 0 auto; padding: 60px 24px; }
.staff-page input { display: block; width: 100%; padding: 12px; border: 1px solid #6B6256; }
.staff-page li { margin: 12px 0; }
.staff-page h1 { font-size: clamp(32px, 6vw, 52px); }
.book-grid > *, .details-grid > * { min-width: 0; }
.contact-grid > *, .contact-form select { min-width: 0; max-width: 100%; }
.booking-page input::placeholder, .booking-page textarea::placeholder { color: #666; opacity: 1; }
.booking-page input, .booking-page textarea { border-color: #767066 !important; }
.booking-page button:not([disabled]) { border-color: #767066; }
.booking-page input:focus-visible, .booking-page textarea:focus-visible { outline: 3px solid #1E4A3E !important; }
@media (max-width: 880px) { header.nav > .nav-inner > nav { display: none; } }
@media (max-width: 640px) {
  .book-grid, .details-grid { grid-template-columns: minmax(0,1fr) !important; }
  .booking-page header > div { height: auto !important; min-height: 64px; gap: 12px; flex-wrap: wrap; padding: 12px 0; }
  .grid { grid-template-columns: minmax(0,1fr) !important; }
  .card-meta, .card-foot { flex-wrap: wrap; gap: 12px; }
  .card-body, .card-foot { padding-left: 20px; padding-right: 20px; }
  .legal-nav { flex-wrap: wrap; padding: 12px 0; gap: 12px; }
  .nav:not(header.nav) .nav-inner { flex-wrap: wrap; height: auto; padding: 12px 0; gap: 14px; }
  .nav:not(header.nav) .nav-links { display: flex; flex-wrap: wrap; gap: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .marquee-track { transform: none !important; width: 100%; flex-wrap: wrap; }
  .marquee-track > span:first-child { white-space: normal; flex-wrap: wrap; gap: 12px; }
  .marquee-track > span[aria-hidden="true"] { display: none; }
}
