/* Wave 8 F: frontend-only accessibility and responsive-media deltas. */

/* Native fragment navigation must land below the fixed header without JavaScript. */
body.w8-shell {
  --w8-fixed-header-offset: 72px;
  --w8-anchor-breathing-room: 16px;
}

body.w8-shell main [id] {
  scroll-margin-top: calc(var(--w8-fixed-header-offset) + var(--w8-anchor-breathing-room));
}

body.w8-shell .w8-header > .container .w8-logo {
  flex: 0 1 min(210px, calc(100% - 4.5rem));
  inline-size: min(210px, calc(100% - 4.5rem));
  max-inline-size: calc(100% - 4.5rem);
  block-size: 72px;
  overflow: visible;
}

body.w8-shell .w8-header > .container .w8-logo > a {
  align-items: center;
  justify-content: flex-start;
}

body.w8-shell .w8-header > .container .w8-logo .w8-logo__image {
  display: block;
  inline-size: auto !important;
  block-size: 72px !important;
  max-inline-size: 100%;
  max-block-size: 100%;
  margin-inline-start: 0 !important;
  aspect-ratio: 280 / 96;
  object-fit: contain !important;
}

@media only screen and (min-width: 73.75rem) {
  body.w8-shell {
    --w8-fixed-header-offset: 84px;
    --w8-anchor-breathing-room: 20px;
  }

  body.w8-shell .w8-header > .container .w8-logo {
    flex-basis: 245px;
    inline-size: 245px;
    max-inline-size: 245px;
    block-size: 84px;
  }

  body.w8-shell .w8-header > .container .w8-logo .w8-logo__image {
    block-size: 84px !important;
  }
}

/* The intrinsic attributes and this ratio preserve the original 1805:855 crop. */
body.w8-shell .w8-hero .hero-swiper {
  min-block-size: 0;
}

body.w8-shell .w8-hero .hero-swiper .swiper-wrapper,
body.w8-shell .w8-hero .hero-swiper .swiper-slide {
  min-block-size: 0;
}

body.w8-shell .w8-hero .hero-swiper .swiper-slide {
  aspect-ratio: 1805 / 855;
}

body.w8-shell .w8-hero .hero-swiper .swiper-slide > img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 1805 / 855;
  object-fit: cover;
  object-position: center;
}

/* Preserve the six-pixel visual dot while giving every Swiper control a 32px hit area. */
body.w8-shell .swiper-pagination-bullet {
  display: inline-flex;
  inline-size: 32px !important;
  block-size: 32px !important;
  align-items: center;
  justify-content: center;
  margin: 0 !important;
  border: 0;
  border-radius: 50%;
  background: transparent !important;
  opacity: 1 !important;
  vertical-align: middle;
}

body.w8-shell .swiper-pagination-bullet::before {
  content: none;
}

body.w8-shell .swiper-pagination-bullet::after {
  inline-size: 6px;
  block-size: 6px;
  border-radius: 50%;
  background: rgba(30, 72, 80, 0.45);
  content: "";
}

body.w8-shell .swiper-pagination-bullet-active::after {
  background: #1e4850;
}

body.w8-shell .swiper-pagination-bullet:focus-visible {
  outline: 3px solid #1e4850;
  outline-offset: 2px;
}

/* Release-audit contrast repairs, scoped to their actual surfaces. */
body.w8-shell .s-prices.background-dark .tax-notice {
  color: #fff !important;
}

body.w8-shell .pricing-section__tax-notice {
  color: #42595e !important;
}

/* Tables remain native tables; only their actual scroll containers become keyboard focusable. */
body.w8-shell .seo-data-table-wrap[data-w8-scrollable="true"]:focus-visible,
body.w8-shell table[data-w8-scrollable="true"]:focus-visible {
  outline: 3px solid #1e4850;
  outline-offset: 3px;
}

body.w8-shell .s-reviews .more {
  display: inline-flex;
  min-block-size: 44px;
  align-items: center;
  color: #354a4f !important;
  opacity: 1 !important;
}

body.w8-shell .breadcrumbs .w8-breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

body.w8-shell .breadcrumbs .w8-breadcrumbs ol > li {
  display: inline-flex;
  min-inline-size: 0;
  align-items: center;
}

body.w8-shell .breadcrumbs .w8-breadcrumbs ol > li + li::before {
  padding-inline: 0.5rem;
  color: #526b70;
  content: "/";
}

/* Keep the existing link as the only floating contact action and clear local UI. */
body.w8-shell .w8-wa-region {
  position: static;
}

body.w8-shell .wa-float {
  position: fixed;
  z-index: 900;
  right: 1rem;
  right: max(1rem, env(safe-area-inset-right));
  bottom: 1rem;
  bottom: max(1rem, env(safe-area-inset-bottom));
  display: inline-flex;
  inline-size: 56px;
  block-size: 56px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #25d366;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
  transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s ease;
}

body.w8-shell .wa-float:hover {
  transform: scale(1.08);
}

body.w8-shell .wa-float:focus-visible {
  outline: 3px solid #1e4850;
  outline-offset: 3px;
}

body.w8-shell .wa-float[data-w8-obscured="true"] {
  visibility: hidden;
  pointer-events: none;
  opacity: 0;
  transform: translateY(0.5rem);
}

/* Transport failures use the existing per-form alert rather than a global toast. */
body.w8-shell .ajax_form .af-error-summary.w8-form-transport-error {
  display: block;
  margin-block: 0 1rem;
  padding: 0.75rem 1rem;
  border: 1px solid #a22929;
  border-radius: 0.25rem;
  background: #fff4f4;
  color: #6a1616;
  font-weight: 600;
}

@media (prefers-reduced-motion: reduce) {
  body.w8-shell .wa-float {
    transition: none;
  }
}

/* Wave 9 N03: source-authorized consistent removal of unstable decorative rules. */
html body main section .title.lines::before,
html body main section .title.lines::after { content: none; display: none; }

/* Wave9 keyboard QA: Escape closes a desktop submenu while its trigger keeps focus. */
@media (min-width: 73.6876rem) {
  html body .header > * nav .has-drop.w9-escape-closed > .drop { opacity: 0; visibility: hidden; pointer-events: none; transition: none; }
  html body .header nav .has-drop.w9-escape-closed > .drop-parent::after { transform: none; }
}

/* Wave9 photo intro: reserve final font geometry and stable mobile CTA rows. */
@media (max-width: 47.9375rem) {
  html body.w9-photo-page main #block1 h1.title { min-block-size: 2.4em; }
  html body.w9-photo-page main #block1 .service-intro__actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .75rem; }
  html body.w9-photo-page main #block1 .service-intro__actions > a:first-child { grid-column: 1 / -1; }
  html body.w9-photo-page main #block1 .service-intro__actions > a { width: 100%; box-sizing: border-box; margin: 0; }
}
