/* WCAG 2.1 AA layer for the static Divi clone. Loaded on every page by tools/a11y_fix.py.
   Nothing here changes what a mouse user sees by default: it adds focus indicators,
   keeps hidden content readable without JS, and honours prefers-reduced-motion. */

/* Screen-reader-only text (new-tab notices, icon-link names, menu button name) */
.a11y-sr {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Skip link: off-screen until focused, then a charcoal/white tab in the top-left */
.a11y-skip {
  position: absolute;
  left: 8px;
  top: -100px;
  z-index: 10000001;
  padding: 12px 20px;
  background: #36454f;
  color: #fff !important;
  font-weight: 700;
  font-size: 16px;
  text-transform: uppercase;
  letter-spacing: 1px;
  text-decoration: none;
}
.a11y-skip:focus { top: 8px; }

/* Focus indicator. Divi strips outlines; this two-tone ring (dark outline + white
   halo) keeps at least 3:1 against every background the site uses: white, light grey,
   charcoal #36454f, navy and gold #cb982f. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
iframe:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid #13202b !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 2px #fff !important;
}
#main-content:focus { outline: none; }

/* WordPress search widget: the label was display:none (no accessible name). Keep it
   invisible but in the accessibility tree. */
.wp-block-search__label {
  display: block !important;
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
}
/* Search button text #666 on #ddd was 4.22:1; #595959 is 5.16:1 (neutral grey, not a brand colour) */
.wp-block-search__button { color: #595959 !important; }

/* Desktop dropdowns open on hover only; open them for keyboard focus too */
.nav li:focus-within > ul,
.et-menu li:focus-within > ul {
  opacity: 1;
  visibility: visible;
}

/* Native buttons that replace click-only Divi elements: reset to look identical */
button.a11y-menu-btn {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  text-align: inherit;
  cursor: pointer;
}
button.a11y-toggle {
  all: unset;
  display: block;
  width: 100%;
  cursor: pointer;
}
button.a11y-toggle:focus-visible {
  outline: 3px solid #13202b !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 2px #fff !important;
}

/* Slideshow pause control: invisible until it receives keyboard focus */
.a11y-pause {
  position: absolute;
  left: 8px;
  top: 8px;
  z-index: 50;
  padding: 8px 14px;
  border: 0;
  background: #36454f;
  color: #fff;
  font: 700 14px/1.2 inherit;
  cursor: pointer;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
}
.a11y-pause:focus,
.a11y-pause:focus-visible { clip: auto; clip-path: none; }

/* Content must survive JS failure: Divi entrance animations, Divi Pixel timeline
   cards and closed accordion panels all start hidden and rely on scripts. */
html:not(.a11y-js) .et-waypoint,
html:not(.a11y-js) .et_animated,
html:not(.a11y-js) .need_animation,
html:not(.a11y-js) .et_pb_slide_description {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  animation: none !important;
}
html:not(.a11y-js) .et_pb_toggle_close .et_pb_toggle_content { display: block !important; }
html:not(.a11y-js) .a11y-menu-btn { display: none; }

/* Reduced motion: land every animated element in its final state, stop parallax */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .et-waypoint,
  .et_animated,
  .need_animation,
  .et_pb_slide_description {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    animation: none !important;
  }
  .et_parallax_bg { transform: none !important; background-attachment: scroll !important; }
}

/* Divi slider arrows: the "Previous"/"Next" text exists but is display:none, leaving
   the link nameless. Keep it invisible but readable by assistive tech. */
.et-pb-arrow-prev > span,
.et-pb-arrow-next > span {
  display: block !important;
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
}

/* Mobile header phone/location icons are 24x20 and 16x20: extend the hit area past
   24x24 (to 42x44 and 34x44) with an invisible pseudo-element. The columns are 43px
   wide, so the areas don't overlap. No layout change. */
.et_pb_icon_0_tb_header a,
.et_pb_icon_1_tb_header a { position: relative; }
.et_pb_icon_0_tb_header a::after,
.et_pb_icon_1_tb_header a::after {
  content: "";
  position: absolute;
  top: -12px;
  bottom: -12px;
  left: -9px;
  right: -9px;
}

/* ---- Brand gold contrast (client-approved 2026-11-02) --------------------------
   Gold #cb982f fails AA on light backgrounds (2.2-2.6:1) and behind white text.
   Shades used, chosen as the nearest passing tone of the same hue:
     #896620  small text on light / fill behind small light text (4.56-5.27:1)
     #ae8228  large text on light / fill behind large white text  (3.0-3.5:1)
     #d6a94d  small gold text on charcoal #36454f                (4.55:1)
   Template-wide cases are fixed here (and work without JS); page-specific Divi
   module colours are corrected by the gold pass in a11y.js. */
html body #page-container .et_pb_blog_grid .et_pb_post {
  background-color: #896620 !important;
  border-color: #896620 !important;
}
html body #page-container .et_pb_blog_grid .et_pb_post .post-content-inner,
html body #page-container .et_pb_blog_grid .et_pb_post .post-content-inner p { color: #fff !important; }
html body #page-container .et_pb_section .et_pb_button_0_tb_body {
  color: #896620 !important;
  border-color: #896620 !important;
}
html body #page-container .et_pb_section .et_pb_button_0_tb_body:hover {
  background-color: #896620 !important;
  color: #fff !important;
}
html body #page-container .et_pb_menu_0_tb_header.et_pb_menu ul li.current-menu-item > a,
html body #page-container .et_pb_menu_0_tb_header.et_pb_menu ul li.current-menu-item > a > span,
html body #page-container .et_pb_menu_0_tb_header.et_pb_menu ul li.current-menu-ancestor > a,
html body #page-container .et_pb_menu_0_tb_header.et_pb_menu ul li.current-menu-ancestor > a > span,
html body #page-container .et_pb_menu_0_tb_header.et_pb_menu ul li:hover > a,
html body #page-container .et_pb_menu_0_tb_header.et_pb_menu ul li:hover > a > span { color: #896620 !important; }
/* Divi Pixel timeline ribbon (About): white on orange #e09900 was 2.4:1 */
html body #page-container .dipi_timeline_ribbon_text,
html body #page-container .dipi_timeline_ribbon { background-color: #9e6c00 !important; }
/* FAQ hero: "Frequently ... Questions" was white on a near-white background image
   (invisible; only the gradient word "Asked" showed). Charcoal = 9.9:1 on white. */
html body.page-id-58922 #page-container .et_pb_section_0 .et_pb_text_0 h2 { color: #36454f !important; }

/* Home "GOLD Standard" list (section 13): every row the same width so the icons
   line up in one column, a fixed icon column so text starts at the same x, and
   room under the last row before the next section. */
body.home .et_pb_section_13 .et_pb_blurb .et_pb_blurb_content {
  width: 100%;
  max-width: 540px;
  margin-left: auto;
  margin-right: auto;
}
body.home .et_pb_section_13 .et_pb_blurb .et_pb_main_blurb_image {
  width: 48px;
  text-align: center;
}
body.home .et_pb_section_13 .et_pb_blurb .et_pb_blurb_container {
  padding-left: 14px;
}
body.home .et_pb_section_13 .et_pb_column .et_pb_blurb.et_pb_blurb:last-child {
  margin-bottom: 56px !important;
}
/* The last row is a paragraph, the others headings: match their letter spacing. */
body.home .et_pb_section_13 .et_pb_blurb .et_pb_blurb_description p {
  letter-spacing: 1px;
  line-height: 1.3em;
}
