/*
 * Apex Workshop – accessibility polish (loaded last).
 * Raises tiny text to a readable minimum, fixes low-contrast colours and enlarges small tap targets.
 * !important is used on purpose: the earlier stylesheets contain many page-specific overrides.
 *
 * Colours: dark red #c8141b on light backgrounds (5.0:1+), light red #ff6b6f on dark backgrounds,
 * darker orange #c42f12 behind white text (5.6:1).
 */

:root {
  --apex-red-on-light: #c8141b;
  --apex-red-on-dark: #ff6b6f;
  --apex-orange-solid: #c42f12;
  --apex-muted-on-light: #55605b;
}

/* Screen-reader helper (the block theme does not ship one). */
.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ---------- Minimum text sizes ---------- */
body .eyebrow,
body .reference-kicker,
body .apex-interior-kicker,
body .note-tag,
body .repair-preview-label,
body .catalog-index,
body [class*="map-label"],
body .map-caption,
body .apex-interior-index,
body .case-listing-index,
body .contact-top span,
body .contact-bottom span,
body .about-photo-index,
body .review-status {
  font-size: 11px !important;
  letter-spacing: 0.08em;
}

body figcaption,
body .service-footnote,
body .service-photo-note,
body .form-privacy-note,
body .booking-privacy-note,
body .booking-disclaimer,
body .hero-proof span,
body .booking-field-grid label,
body .booking-field-grid legend,
body .case-filter-empty,
body .contact-channel-row small,
body .contact-method small,
body .booking-contact-link small,
body .apex-breadcrumbs,
body .language-switch,
body .reference-section-head a,
body .text-link {
  font-size: 12px !important;
  line-height: 1.55;
}

body .faq-answer p,
body .process-step-body p,
body .service-detail,
body .about-principles p,
body .about-credential-grid p,
body .contact-assurance-band p {
  font-size: 13px !important;
  line-height: 1.65;
}

body .footer-bottom,
body .footer-bottom span,
body .footer-bottom a,
body .footer-link-group a,
body .footer-note,
body .footer-brand-promise {
  font-size: 12px !important;
}

/* Captions that sit on top of photographs need their own dark backing to stay legible. */
body .reference-about figure figcaption,
body .about-photo figcaption,
body .contact-location-photo figcaption {
  background: rgba(17, 19, 20, 0.82) !important;
  color: #fff !important;
  padding: 5px 10px !important;
}

body .footer-privacy-link {
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ---------- Contrast: light backgrounds ---------- */
body .eyebrow,
body .text-link,
body .reference-section-head a,
body .service-catalog-link,
body .credential-symbol,
body .faq-list summary i,
body .case-card-arrow {
  color: var(--apex-red-on-light) !important;
}

body .review-status,
body .service-footnote,
body .service-photo-note,
body .form-privacy-note,
body .booking-privacy-note,
body .booking-disclaimer,
body .case-filter-empty,
body .contact-channel-row small,
body .contact-method small,
body .about-credential-grid article p,
body .map-caption {
  color: var(--apex-muted-on-light) !important;
}

body .contact-symbol {
  color: #0f7a37 !important;
}

/* The case tag is a solid chip: white text on a darker red. */
body .note-tag {
  background-color: #b5121a !important;
  color: #fff !important;
}

/* ---------- Contrast: dark backgrounds ---------- */
body .apex-interior-hero .eyebrow,
body .apex-interior-kicker span,
body .reference-hero .eyebrow,
body .reference-kicker span,
body .site-footer .eyebrow,
body .contact-card .eyebrow,
body .reference-process .eyebrow,
body .service-confidence-band .eyebrow,
body .service-overview-sidebar .eyebrow,
body .quote-page-cta .eyebrow,
body .guide-question-copy .eyebrow,
body .contact-assurance-band .eyebrow,
body .repair-preview-label,
body .site-footer .footer-link-group h2,
body .apex-breadcrumbs > span[aria-hidden="true"],
body .main-nav a.nav-current,
body .main-nav a[aria-current="page"] {
  color: var(--apex-red-on-dark) !important;
}

body .apex-breadcrumbs,
body .apex-breadcrumbs a {
  color: rgba(255, 255, 255, 0.92) !important;
}

/* More dark panels (found by the contrast audit). */
body .service-detail-feature-copy .eyebrow,
body .guide-category-sidebar .eyebrow,
body .guide-bottom-cta .eyebrow,
body .contact-form-panel .eyebrow,
body .booking-info-hours .eyebrow,
body .booking-info-hours .text-link {
  color: var(--apex-red-on-dark) !important;
}

body .contact-form-panel .form-privacy-note {
  color: rgba(255, 255, 255, 0.8) !important;
}

/* Small labels that were still under 11px. */
body .service-detail-facts span,
body .service-approval-note span,
body .service-detail-bottom span,
body .guide-question-photo span,
body .booking-side-nav small,
body .booking-service-options b,
body .reference-contact small,
body .contact-address small,
body .map-pin {
  font-size: 11px !important;
}

body .booking-service-options b {
  font-size: 12px !important;
}

body .contact-assurance-band article > span,
body .about-principles article > span,
body .process-page-step > span,
body .quote-cost-list li > span,
body .booking-page-layout label i,
body .booking-page-layout legend i {
  color: var(--apex-red-on-light) !important;
}

body .booking-steps li.is-current span {
  color: var(--apex-orange-solid) !important;
}

body .booking-form-section h2 small {
  font-size: 12px !important;
}

body .booking-side-nav a.is-current {
  background-color: #c8141b !important;
  color: #fff !important;
}

body .service-detail-bottom a {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
}

/* ---------- Buttons and chips: white text needs a darker orange/red ---------- */
body .button-orange,
body .button-primary,
body .mobile-cta-whatsapp,
body .contact-row-action,
body .booking-steps li.is-current b {
  background-color: var(--apex-orange-solid) !important;
  border-color: var(--apex-orange-solid) !important;
  color: #fff !important;
}

body .button-orange:hover,
body .button-primary:hover,
body .mobile-cta-whatsapp:hover,
body .contact-row-action:hover {
  background-color: #a9260d !important;
  border-color: #a9260d !important;
}

/* Booking steps that are not active yet must still be readable. */
body .booking-steps li:not(.is-current) b,
body .booking-steps li:not(.is-current) span {
  color: #3d454a !important;
}

/* Language switch: current language is a solid white-on-red chip. */
body .language-switch {
  padding: 0 !important;
  gap: 0 !important;
  overflow: hidden;
}

body .language-switch a,
body .language-switch .language-current {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 36px;
  padding-inline: 10px;
}

body .language-switch .language-separator {
  display: none;
}

body .language-switch .language-current {
  background: #c8141b;
  color: #fff !important;
}

/* ---------- Tap targets (at least 24px, 44px where there is room) ---------- */
body .apex-breadcrumbs a,
body .text-link,
body .reference-section-head a,
body .service-title-link,
body .about-outline-link,
body .service-catalog-link,
body .contact-method a,
body .footer-link-group a,
body .footer-bottom a {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding-block: 4px;
}

body .footer-link-group a {
  min-height: 32px;
}

body .menu-toggle {
  min-width: 44px;
  min-height: 44px;
}

/* ---------- Focus visibility ---------- */
body a:focus-visible,
body button:focus-visible,
body input:focus-visible,
body select:focus-visible,
body textarea:focus-visible,
body summary:focus-visible {
  outline: 3px solid #ffb199;
  outline-offset: 2px;
  box-shadow: 0 0 0 5px rgba(17, 19, 20, 0.85);
}

/* ---------- Privacy page ---------- */
.apex-privacy-page .privacy-copy {
  max-width: 820px;
  padding-block: clamp(36px, 6vw, 72px);
}

.apex-privacy-page .privacy-updated {
  margin: 0 0 28px;
  color: var(--apex-muted-on-light);
  font-size: 13px;
}

.apex-privacy-page .privacy-section {
  padding-block: 20px;
  border-top: 1px solid var(--line);
}

.apex-privacy-page .privacy-section h2 {
  margin: 0 0 10px;
  font-size: clamp(20px, 2.4vw, 26px);
}

.apex-privacy-page .privacy-section p {
  margin: 0 0 12px;
  font-size: 16px;
  line-height: 1.8;
  color: var(--ink-soft);
}

/* Footer privacy link sits next to the other footer-bottom items. */
body .footer-bottom .section-shell {
  flex-wrap: wrap;
  gap: 8px 24px;
}

/* Phones: earlier stylesheets shrink several labels to 9-10px; keep a readable floor. */
@media (max-width: 760px) {
  body .reference-service-line,
  body .booking-steps li span,
  body .booking-steps li small {
    font-size: 11px !important;
  }

  body .reference-hero-actions .button,
  body .reference-contact b,
  body .contact-row-action,
  body .pricing-points p,
  body .pricing-points li p,
  body .faq-list summary b {
    font-size: 12px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

/* Service page guide: signs, checks and common questions. */
.service-guide { margin: 28px 0 8px; }
.service-guide h2 { font-size: clamp(20px, 2.4vw, 26px); line-height: 1.3; margin: 28px 0 12px; }
.service-guide h3 { font-size: 16px; line-height: 1.45; margin: 18px 0 6px; }
.service-guide ul { margin: 0 0 8px; padding-left: 1.25em; }
.service-guide li { margin: 6px 0; line-height: 1.7; }
.service-guide p { margin: 0 0 8px; line-height: 1.75; color: var(--apex-muted-on-light); }
.service-guide .service-guide-note { margin-top: 14px; font-size: 13px; border-left: 3px solid #c8141b; padding-left: 12px; }

/* Logo image (replaces the old text/SVG wordmark). */
.brand { min-width: 0 !important; display: flex; align-items: center; }
.brand-logo { display: block; width: 140px; height: auto; max-width: none; }
.brand-mark, .brand-name { display: none !important; }
.site-footer .brand-logo, .footer-brand-block .brand-logo { width: 150px; }
@media (max-width: 700px) {
  .brand-logo { width: 104px; }
  .site-footer .brand-logo, .footer-brand-block .brand-logo { width: 130px; }
}
