/* Site-wide accessibility controls. */
.rg-a11y { position: absolute; right: 58px; bottom: 0; z-index: 10050; font-family: inherit; }
.rg-pwa-notify { position:absolute; right:220px; bottom:0; z-index:10045; display:inline-flex; align-items:center; gap:9px; min-height:50px; padding:12px 17px; border:1px solid rgba(255,255,255,.85); border-radius:999px; background:linear-gradient(135deg,#6d8f2f,#c07b22); color:#fff; font:inherit; font-weight:800; cursor:pointer; box-shadow:0 10px 28px rgba(109,143,47,.24); transition:transform .18s ease, box-shadow .18s ease; }
.rg-pwa-notify:hover, .rg-pwa-notify:focus-visible { transform:translateY(-2px); box-shadow:0 14px 32px rgba(109,143,47,.32); }
.rg-pwa-notify:disabled { cursor:wait; opacity:.7; transform:none; }
.rg-a11y-toggle { display: inline-flex; align-items: center; gap: 9px; min-height: 50px; padding: 12px 17px; border: 1px solid rgba(255,255,255,.85); border-radius: 999px; background: linear-gradient(135deg,#123b52,#197d85); color: #fff; font: inherit; font-weight: 800; cursor: pointer; box-shadow: 0 10px 28px rgba(18,59,82,.25); transition: transform .18s ease, box-shadow .18s ease; }
.rg-a11y-toggle i { font-size: 1.15rem; }
.rg-a11y-toggle:hover, .rg-a11y-toggle:focus-visible { transform: translateY(-2px); box-shadow: 0 14px 32px rgba(18,59,82,.32); }
.rg-a11y-panel { position: absolute; right: 0; bottom: calc(100% + 10px); width: min(330px, calc(100vw - 28px)); max-height: min(520px, calc(100vh - 28px)); overflow-y: auto; padding: 14px; border: 1px solid rgba(25,93,116,.18); border-radius: 18px; background: #fff; color: #173341; box-shadow: 0 16px 42px rgba(14,45,59,.22); }
.rg-a11y-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.rg-a11y-head h2 { display:flex; align-items:center; gap:7px; margin:0; color:#123b52; font-size:1rem; line-height:1.3; letter-spacing:-.01em; }
.rg-a11y-head h2 i { color:#0e7184; font-size:1.1rem; }
.rg-a11y-close { width:34px; height:34px; border:0; border-radius:9px; background:#edf4f5; color:#123b52; cursor:pointer; }
.rg-a11y-help { margin:7px 0 11px; color:#58717a; font-size:.78rem; line-height:1.35; }
.rg-a11y-actions { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.rg-a11y-group-title { grid-column:1 / -1; margin:5px 2px 0; padding-top:7px; border-top:1px solid #e2ecee; color:#6a7f86; font-size:.64rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.rg-a11y-group-title:first-child { margin-top:0; padding-top:0; border-top:0; }
.rg-a11y-actions button { min-height:36px; padding:5px 7px; border:1px solid #c8d8dc; border-radius:10px; background:#fff; color:#123b52; font:inherit; font-size:.72rem; line-height:1.15; font-weight:700; cursor:pointer; text-align:left; transition:background .18s ease,border-color .18s ease,transform .18s ease; }
.rg-a11y-actions button:hover, .rg-a11y-actions button:focus-visible { border-color:#123b52; background:#eaf5f5; }
.rg-a11y-actions button[aria-pressed="true"] { background:#123b52; border-color:#123b52; color:#fff; }
.rg-a11y-actions button[aria-pressed="true"]::after { content:'✓'; float:right; margin-left:5px; color:#ffcf00; font-weight:900; }
.rg-a11y-actions .rg-a11y-speech { grid-column:auto; }
.rg-a11y-actions .rg-a11y-reset { grid-column:1 / -1; background:#f8eeee; border-color:#d9aaaa; color:#7d2525; }
.rg-a11y-status { min-height:1.1em; margin:9px 0 0; color:#155b43; font-size:.72rem; font-weight:700; }
.rg-a11y :focus-visible { outline:3px solid #f08a24; outline-offset:3px; }
body.rg-a11y-font-lg { font-size:112.5%; }
body.rg-a11y-font-xl { font-size:125%; }
body.rg-a11y-font-sm { font-size:87.5%; }
/* Theme typography is predominantly rem/clamp based; scale the root so the
   control affects the complete contract, not only inherited body text. */
html.rg-a11y-font-lg { font-size:112.5%; }
html.rg-a11y-font-xl { font-size:125%; }
html.rg-a11y-font-sm { font-size:87.5%; }
body.rg-a11y-high-contrast { background:#000 !important; color:#fff !important; }
body.rg-a11y-high-contrast :is(header, main, footer, section, article, .rg-panel, .rg-card, .rg-pastel-card, .rg-header-shell, .rg-footer-shell) { background:#000 !important; color:#fff !important; border-color:#fff !important; }
body.rg-a11y-high-contrast :is(h1,h2,h3,h4,h5,h6,p,li,span,label,strong,small) { color:#fff !important; }
body.rg-a11y-high-contrast :is(a, button, .rg-btn) { color:#ffeb3b !important; border-color:#ffeb3b !important; }
body.rg-a11y-high-contrast .rg-a11y-panel { background:#fff !important; color:#000 !important; }
body.rg-a11y-high-contrast .rg-a11y-panel :is(h2,p,button) { color:#000 !important; }
body.rg-a11y-grayscale { filter:grayscale(1); }
body.rg-a11y-underline a { text-decoration:underline !important; text-decoration-thickness:2px !important; text-underline-offset:3px !important; }
body.rg-a11y-no-motion *, body.rg-a11y-no-motion *::before, body.rg-a11y-no-motion *::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
@media (max-width:600px) {
  .rg-a11y { right:50px; bottom:0; }
  .rg-pwa-notify { right:108px; width:52px; min-height:52px; justify-content:center; padding-inline:10px; }
  .rg-pwa-notify span, .rg-a11y-toggle span { display:none; }
  .rg-a11y-toggle { width:52px; min-height:52px; justify-content:center; padding-inline:10px; }
  .rg-a11y-panel {
    position: fixed;
    left: 14px;
    right: 14px;
    bottom: calc(132px + env(safe-area-inset-bottom));
    width: auto;
    max-height: min(560px, calc(100dvh - 168px));
    border-radius: 18px;
  }
}

/* High-contrast contract: the theme contains many later white/gradient surfaces
   (some with !important), so normalize every visual surface in this mode. */
body.rg-a11y-high-contrast { color-scheme: dark; background:#000 !important; color:#fff !important; }
body.rg-a11y-high-contrast * { background:#000 !important; background-image:none !important; color:#fff !important; border-color:#fff !important; box-shadow:none !important; text-shadow:none !important; }
body.rg-a11y-high-contrast img, body.rg-a11y-high-contrast video { background:#000 !important; }
body.rg-a11y-high-contrast a { color:#ffeb3b !important; text-decoration:underline !important; }
body.rg-a11y-high-contrast button,
body.rg-a11y-high-contrast input,
body.rg-a11y-high-contrast select,
body.rg-a11y-high-contrast textarea,
body.rg-a11y-high-contrast .rg-btn { background:#000 !important; color:#ffeb3b !important; border:2px solid #ffeb3b !important; }
body.rg-a11y-high-contrast button:hover,
body.rg-a11y-high-contrast button:focus-visible,
body.rg-a11y-high-contrast a:focus-visible,
body.rg-a11y-high-contrast .rg-btn:hover { background:#ffeb3b !important; color:#000 !important; outline:3px solid #00ffff !important; outline-offset:3px; }
body.rg-a11y-high-contrast .rg-a11y-toggle { position:relative; background:#ffeb3b !important; color:#000 !important; border-color:#000 !important; }
body.rg-a11y-high-contrast .rg-a11y-panel { background:#000 !important; color:#fff !important; border:2px solid #ffeb3b !important; }
body.rg-a11y-high-contrast .rg-a11y-panel :is(h2,p) { background:#000 !important; color:#fff !important; }
body.rg-a11y-high-contrast .rg-a11y-panel .rg-a11y-head h2 i,
body.rg-a11y-high-contrast .rg-a11y-panel .rg-a11y-group-title { color:#ffeb3b !important; }
body.rg-a11y-high-contrast .rg-a11y-panel button { background:#000 !important; color:#ffeb3b !important; border-color:#ffeb3b !important; }
body.rg-a11y-high-contrast .rg-a11y-panel .rg-a11y-reset { background:#000 !important; color:#ff9f9f !important; border-color:#ff9f9f !important; }
body.rg-a11y-high-contrast .rg-a11y-status { color:#7dffbd !important; }
body.rg-a11y-high-contrast .rg-scroll-top { background:#000 !important; color:#ffeb3b !important; border-color:#ffeb3b !important; }
/* Explicit theme-contract surfaces. Keeping the list here prevents a later
   component rule from reintroducing a white card while leaving media intact. */
body.rg-a11y-high-contrast :where(
  .rg-header, .rg-header-shell, .rg-main, .rg-section, .rg-page-header,
  .rg-panel, .rg-card, .rg-pastel-card, .rg-program-card, .rg-team-member-card,
  .rg-blog-card, .rg-home-blog-item, .rg-testimonial-card, .rg-contact-card,
  .rg-form-card, .rg-sidebar-card, .rg-module-photo, .rg-module-document,
  .rg-footer, .rg-footer-shell, .rg-reference-copy, .rg-home-about,
  .rg-home-why-card, .rg-icon-row, .rg-icon-row-item, .rg-accordion-item,
  .rg-home-services-compact, .rg-home-paths > a, .rg-main-nav,
  .rg-main-nav .submenu, .rg-reference-contact, .rg-map-card,
  .rg-contact-inline .item, .rg-mobile-contact
) { background:#000 !important; color:#fff !important; border-color:#fff !important; }
body.rg-a11y-high-contrast :where(.rg-header a, .rg-main a, .rg-footer a, .rg-main-nav a) { color:#ffeb3b !important; }
body.rg-a11y-high-contrast :where(.rg-kicker, .rg-meta, .rg-lead, .rg-muted, .rg-a11y-help) { color:#fff !important; }
html.rg-a11y-high-contrast { background:#000 !important; color-scheme:dark; }
html.rg-a11y-high-contrast body,
html.rg-a11y-high-contrast body::before,
html.rg-a11y-high-contrast body::after,
html.rg-a11y-high-contrast .rg-page-home .rg-v38-home,
html.rg-a11y-high-contrast .rg-home-lower-wrap { background:#000 !important; background-image:none !important; }
html.rg-a11y-high-contrast *::before,
html.rg-a11y-high-contrast *::after { background-color:#000 !important; background-image:none !important; border-color:#fff !important; }
html.rg-a11y-high-contrast .rg-v38-home::before,
html.rg-a11y-high-contrast .rg-v38-home::after,
html.rg-a11y-high-contrast .rg-home-lower-wrap::before,
html.rg-a11y-high-contrast .rg-home-lower-wrap::after { background:#000 !important; }

/* Final specificity guard for theme-contract selectors that also use
   !important (for example the homepage contact and footer variants). */
html.rg-a11y-high-contrast body.rg-a11y-high-contrast *:not(#rg-a11y-panel) {
  background-color:#000 !important;
  background-image:none !important;
  color:#fff !important;
  border-color:#fff !important;
  box-shadow:none !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast *:not(#rg-a11y-panel)::before,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast *:not(#rg-a11y-panel)::after {
  background-color:#000 !important;
  background-image:none !important;
  border-color:#fff !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-a11y-toggle {
  background:#ffeb3b !important;
  color:#000 !important;
  border-color:#000 !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-a11y-panel,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-a11y-panel * {
  background:#000 !important;
  color:#fff !important;
  border-color:#ffeb3b !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-a11y-panel button {
  color:#ffeb3b !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast a,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-btn {
  color:#ffeb3b !important;
}
/* Replaced media must remain visible in contrast mode; only its surrounding
   surface is normalized. */
html.rg-a11y-high-contrast body.rg-a11y-high-contrast img,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast video,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast iframe {
  background:transparent !important;
  background-image:initial !important;
  border-color:#fff !important;
  filter:none !important;
  opacity:1 !important;
  mix-blend-mode:normal !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-card-thumb {
  background:#000 !important;
  background-image:none !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-team-member-card .rg-card-thumb::before,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-team-member-card .rg-card-thumb::after,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-related-photo::before,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-related-photo::after,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-photo::before,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-photo::after {
  background:transparent !important;
  background-color:transparent !important;
  background-image:none !important;
}
/* This selector intentionally carries the same ID specificity as the final
   normalization guard above, so it can never paint over the actual photo. */
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-team-member-card .rg-card-thumb:not(#rg-a11y-panel)::before,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-team-member-card .rg-card-thumb:not(#rg-a11y-panel)::after,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-related-photo:not(#rg-a11y-panel)::before,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-related-photo:not(#rg-a11y-panel)::after,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-photo:not(#rg-a11y-panel)::before,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-staff-photo:not(#rg-a11y-panel)::after {
  background:transparent !important;
  background-color:transparent !important;
  background-image:none !important;
}
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-page-title,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-page-title span,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-page-title em,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-kicker,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-lead,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-title-md,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast .rg-title-sm,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast strong,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast small,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast p,
html.rg-a11y-high-contrast body.rg-a11y-high-contrast li {
  color:#fff !important;
}

/* Additional reading aids. They only affect text flow and typography. */
body.rg-a11y-line :is(p, li, label, dt, dd, blockquote) {
  line-height:1.85 !important;
}
body.rg-a11y-spacing :is(p, li, label, dt, dd, blockquote, h1, h2, h3, h4, h5, h6, a, button) {
  letter-spacing:.045em !important;
}
body.rg-a11y-readable :is(p, li, label, dt, dd, blockquote, h1, h2, h3, h4, h5, h6, a, button, input, select, textarea) {
  font-family:Arial, Tahoma, sans-serif !important;
}
body.rg-a11y-cursor, body.rg-a11y-cursor * {
  cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M4 2l21 17-10 1 5 9-5 2-5-10-7 7z' fill='%23000' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E") 4 2, auto !important;
}
.rg-a11y-reading-guide {
  display:none; position:fixed; left:0; right:0; top:50%; height:3px; z-index:10040; pointer-events:none;
  background:#ffcf00; box-shadow:0 0 0 2px rgba(0,0,0,.75), 0 0 14px rgba(255,207,0,.65);
}
body.rg-a11y-guide .rg-a11y-reading-guide { display:block; }
