/* CustodyProviders.com — Contrast Safety V16
   Final presentation-only guardrail. Loaded last on every HTML page.
   Purpose: prevent recurrent low-contrast text/button/form states without changing site logic. */

:root{
  --cs16-light-text:#33445a;
  --cs16-light-muted:#52647a;
  --cs16-dark-text:#f8fbff;
  --cs16-dark-muted:#d7e3f4;
  --cs16-primary:#2563eb;
  --cs16-primary-hover:#1d4ed8;
}

/* Light form controls: normal/small placeholder text gets a safe contrast reserve. */
html body:not(.ca-page) main :is(input:not([type="checkbox"]):not([type="radio"]),textarea)::placeholder{
  color:var(--cs16-light-muted)!important;
  -webkit-text-fill-color:var(--cs16-light-muted)!important;
  opacity:1!important;
}

/* Dark account/claim forms keep light placeholder text on their navy controls. */
html body.ca-page :is(input:not([type="checkbox"]):not([type="radio"]),textarea)::placeholder{
  color:var(--cs16-dark-muted)!important;
  -webkit-text-fill-color:var(--cs16-dark-muted)!important;
  opacity:1!important;
}

/* Evidence index small metadata must remain comfortably readable on white cards. */
html body .evidence-card .meta{
  color:var(--cs16-light-muted)!important;
  -webkit-text-fill-color:var(--cs16-light-muted)!important;
  opacity:1!important;
}

/* Mobile table-generated labels are only 10px, so use a stronger tone than body-muted text. */
@media(max-width:760px){
  html body .regulatory-table td::before,
  html body .entity-table td::before{
    color:#475569!important;
    -webkit-text-fill-color:#475569!important;
    opacity:1!important;
  }
}

/* Known intentionally dark surfaces: never allow inherited dark text to leak in. */
html body :is(
  .lead-panel,.lead-economics-card,.steps-section,.cta-band,.dark-section,.dark-panel,.dark-card,
  .navy-panel,.navy-card,[data-theme="dark"],.cp-provider-data-card,.compare-bar,.pricing-tier,
  .lead-gate-card,.profile-modal-card,#unverified-website-modal .ca-unverified-card
){
  color:var(--cs16-dark-text)!important;
}
html body :is(
  .lead-panel,.lead-economics-card,.steps-section,.cta-band,.dark-section,.dark-panel,.dark-card,
  .navy-panel,.navy-card,[data-theme="dark"],.cp-provider-data-card,.compare-bar,.pricing-tier,
  .lead-gate-card,.profile-modal-card,#unverified-website-modal .ca-unverified-card
) :is(h1,h2,h3,h4,h5,h6,strong,b,summary){
  color:var(--cs16-dark-text)!important;
  -webkit-text-fill-color:var(--cs16-dark-text)!important;
  opacity:1!important;
}
html body :is(
  .lead-panel,.lead-economics-card,.steps-section,.cta-band,.dark-section,.dark-panel,.dark-card,
  .navy-panel,.navy-card,[data-theme="dark"],.cp-provider-data-card,.compare-bar,.pricing-tier,
  .lead-gate-card,.profile-modal-card,#unverified-website-modal .ca-unverified-card
) :is(p,li,span,small,dd,dt,.muted,.small,.lead){
  color:var(--cs16-dark-muted)!important;
  -webkit-text-fill-color:var(--cs16-dark-muted)!important;
  opacity:1!important;
}

/* Primary actions: white-on-blue in all ordinary/hover states. */
html body :is(.btn-primary,.btn.primary,a.btn-primary,a.btn.primary,button.btn-primary,button.btn.primary){
  background-color:var(--cs16-primary)!important;
  border-color:var(--cs16-primary)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
html body :is(.btn-primary,.btn.primary,a.btn-primary,a.btn.primary,button.btn-primary,button.btn.primary):hover,
html body :is(.btn-primary,.btn.primary,a.btn-primary,a.btn.primary,button.btn-primary,button.btn.primary):focus-visible{
  background-color:var(--cs16-primary-hover)!important;
  border-color:var(--cs16-primary-hover)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
html body :is(.btn-primary,.btn.primary,a.btn-primary,a.btn.primary,button.btn-primary,button.btn.primary) *{
  color:inherit!important;
  -webkit-text-fill-color:inherit!important;
}

/* Footer/navy utility links should never inherit dark page-link colors. */
html body :is(.site-footer,.footer,.compare-bar,.cp-provider-data-card) a:not(.btn){
  color:#dbeafe!important;
  -webkit-text-fill-color:#dbeafe!important;
}


/* v22 strict contrast enforcement: always dark text on light UI chips/badges */
.coverage-chip,
.coverage-chip *,
.evidence-badge,
.evidence-badge *,
.status-change-badge,
.status-change-badge *,
.ecosystem-badge,
.ecosystem-badge * {
  text-shadow: none !important;
  opacity: 1 !important;
  filter: none !important;
}
.coverage-chip {
  background: #f6ead6 !important;
  color: #6f4612 !important;
  border: 1px solid #e4c89d !important;
}
.coverage-chip.partial {
  background: #f9ead8 !important;
  color: #7b3f08 !important;
  border: 1px solid #e8c08a !important;
}
.evidence-badge {
  background: #eaf6ef !important;
  color: #0f5132 !important;
  border: 1px solid #b9dec9 !important;
}
.status-change-badge {
  background: #fff1e3 !important;
  color: #8a4306 !important;
  border: 1px solid #f3c48f !important;
}
.ecosystem-badge {
  background: #f1f5f9 !important;
  color: #334155 !important;
  border: 1px solid #cfd8e3 !important;
}

/* v23 final chip-text hardening: light chips always use dark foreground, including WebKit text fill. */
html body:not(.ca-page) main .coverage-chip,
html body:not(.ca-page) main .coverage-chip *,
html body:not(.ca-page) main .evidence-badge,
html body:not(.ca-page) main .evidence-badge *,
html body:not(.ca-page) main .status-change-badge,
html body:not(.ca-page) main .status-change-badge *,
html body:not(.ca-page) main .ecosystem-badge,
html body:not(.ca-page) main .ecosystem-badge * {
  opacity:1!important;
  text-shadow:none!important;
  filter:none!important;
}
html body:not(.ca-page) main .coverage-chip,
html body:not(.ca-page) main .coverage-chip * {
  color:#6b3f0b!important;
  -webkit-text-fill-color:#6b3f0b!important;
}
html body:not(.ca-page) main .coverage-chip.partial,
html body:not(.ca-page) main .coverage-chip.partial * {
  color:#6b3506!important;
  -webkit-text-fill-color:#6b3506!important;
}
html body:not(.ca-page) main .evidence-badge,
html body:not(.ca-page) main .evidence-badge * {
  color:#0b5136!important;
  -webkit-text-fill-color:#0b5136!important;
}
html body:not(.ca-page) main .status-change-badge,
html body:not(.ca-page) main .status-change-badge * {
  color:#7a3b05!important;
  -webkit-text-fill-color:#7a3b05!important;
}
html body:not(.ca-page) main .ecosystem-badge,
html body:not(.ca-page) main .ecosystem-badge * {
  color:#334155!important;
  -webkit-text-fill-color:#334155!important;
}
