/**
 * L5 contrast gates — never paint #001bff text on #001bff fills.
 * Light mode primary buttons: white on cobalt; hover = white fill + cobalt ink.
 * Dark mode: keep white on cobalt (already correct).
 * Smoke contract (AA): primary fill → white fg; links on canvas → primary or ink.
 * Validated pairs (MCP rules_validate_contrast):
 *   #fff on #001bff ≈ 8.07 · #001bff on #fff ≈ 8.07 · #001bff on #001bff FAIL
 */

:root,
html.kodex-ds {
  --kpf-on-primary: var(--kodex-action-primary-fg, #ffffff);
  --kpf-primary-fill: var(--kodex-action-primary, #001bff);
}

/* —— 1) Solid primary fill ⇒ white ink (default / focus / active; not light hover) —— */
html body.app.admin .btn-primary,
html body.app.admin .btn-primary:active,
html body.app.admin .btn-primary.active,
html body.app.admin .btn-info,
html body.app.admin a.btn-primary,
html body.app.admin .label-primary,
html body.app.admin .badge-primary,
html body.app.admin .label-info,
html body.app.admin .badge-info,
html body.app.admin .bg-primary,
html body.app.admin .tw-bg-primary,
html body.app.admin .tw-bg-primary-600,
html body.app.admin .pagination > .active > a,
html body.app.admin .pagination > .active > span,
html body.app.admin .pagination > .active > a:hover,
html body.app.admin .paginate_button.current,
html body.app.admin .list-group-item.active,
html body.app.admin .list-group-item.active:hover,
html body.app.admin .nav-tabs > li.active > a,
html body.app.admin .nav-tabs > li.active > a:focus,
html body.app.admin .nav-tabs > li > a.active,
html body.app.admin .nav-tabs-segmented > li.active > a,
html body.app.admin .nav-tabs-segmented > li.active > a:focus,
html body.app.admin .nav-pills > li.active > a,
html body.app.admin .nav-pills > li.active > a:focus,
html body.app.admin .fc-button-active,
html body.app.admin .fc-button-primary:not(:disabled).fc-button-active,
html body.app.admin .xdsoft_calendar td.xdsoft_current,
html body.app.admin .datepicker table tr td.active,
html body.app.admin .datepicker table tr td.active:hover,
html body.app.admin .kds-dash-toolbar__btn--active,
html body.app.admin .kodex-crm-admin__module-dropdown-pill--active,
html body.app.admin .kodex-crm-admin__nav-layout-btn--active,
html body.app.admin .select2-container--default .select2-results__option--highlighted[aria-selected],
html body.app.admin .dropdown-menu > .active > a,
html body.app.admin .dropdown-menu > .active > a:hover {
  color: var(--kpf-on-primary) !important;
  -webkit-text-fill-color: var(--kpf-on-primary) !important;
}

html body.app.admin .btn-primary svg,
html body.app.admin .btn-primary i,
html body.app.admin .btn-primary .kpf-icon,
html body.app.admin .nav-tabs > li.active > a svg,
html body.app.admin .nav-tabs > li.active > a i,
html body.app.admin .nav-tabs-segmented > li.active > a svg,
html body.app.admin .label-primary,
html body.app.admin .badge-primary,
html body.app.admin .bg-primary,
html body.app.admin .tw-bg-primary {
  color: var(--kpf-on-primary) !important;
  stroke: currentColor !important;
}

/* Nested utilities that force cobalt ink inside a primary fill */
html body.app.admin .btn-primary .tw-text-primary,
html body.app.admin .btn-primary .text-primary,
html body.app.admin .btn-primary a,
html body.app.admin .bg-primary .tw-text-primary,
html body.app.admin .bg-primary .text-primary,
html body.app.admin .tw-bg-primary.tw-text-primary,
html body.app.admin .tw-bg-primary .tw-text-primary,
html body.app.admin .tw-bg-primary .text-primary,
html body.app.admin .label-primary .tw-text-primary,
html body.app.admin .badge-primary .tw-text-primary,
html body.app.admin .nav-tabs > li.active > a .tw-text-primary,
html body.app.admin .nav-tabs > li.active > a .text-primary,
html body.app.admin .nav-tabs-segmented > li.active > a .tw-text-primary,
html body.app.admin .pagination > .active > a .tw-text-primary,
html body.app.admin .list-group-item.active .tw-text-primary,
html body.app.admin .list-group-item.active .text-primary {
  color: var(--kpf-on-primary) !important;
  -webkit-text-fill-color: var(--kpf-on-primary) !important;
}

/* Solid primary backgrounds (inline / utility) */
html body.app.admin [style*='background: #001bff'],
html body.app.admin [style*='background:#001bff'],
html body.app.admin [style*='background-color: #001bff'],
html body.app.admin [style*='background-color:#001bff'],
html body.app.admin [style*='background: #001BFF'],
html body.app.admin [style*='background-color: #001BFF'] {
  color: var(--kpf-on-primary) !important;
  -webkit-text-fill-color: var(--kpf-on-primary) !important;
}

/*
 * Light mode only: cobalt fill → white ink; hover → white fill + cobalt ink.
 * Dark mode left unchanged (white on cobalt stays).
 */
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-primary,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-info,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.btn-primary,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.btn-info,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .kdv3-btn--primary,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.kdv3-btn--primary,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .kds-dash-quick__btn--primary,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.kds-dash-quick__btn--primary,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-tabs-segmented > li.active > a,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-tabs > li.active > a,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-pills > li.active > a {
  background: var(--kpf-primary-fill) !important;
  border-color: var(--kpf-primary-fill) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-primary:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-primary:focus,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-info:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-info:focus,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.btn-primary:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.btn-primary:focus,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.btn-info:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.btn-info:focus,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .kdv3-btn--primary:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .kdv3-btn--primary:focus,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.kdv3-btn--primary:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .kds-dash-quick__btn--primary:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) a.kds-dash-quick__btn--primary:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-tabs-segmented > li.active > a:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-tabs > li.active > a:hover,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-pills > li.active > a:hover {
  background: #ffffff !important;
  border-color: var(--kpf-primary-fill) !important;
  color: var(--kpf-primary-fill) !important;
  -webkit-text-fill-color: var(--kpf-primary-fill) !important;
  box-shadow: 0 0 0 1px var(--kpf-primary-fill) !important;
}

html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-primary:hover svg,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-primary:hover i,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-primary:focus svg,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .btn-primary:focus i,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-tabs-segmented > li.active > a:hover svg,
html body.app.admin:not(.kodex-crm-admin--ui-dark) .nav-tabs-segmented > li.active > a:hover i {
  color: var(--kpf-primary-fill) !important;
  stroke: currentColor !important;
}

/* —— 2) Links on light/dark canvas (not on primary fills) —— */
html body.app.admin #wrapper a.kpf-link-accent:not(.btn),
html body.app.admin #wrapper a.text-primary:not(.btn):not(.label):not(.badge),
html body.app.admin #wrapper a.tw-text-primary:not(.btn):not(.label):not(.badge) {
  color: var(--kpf-link-accent, var(--kpf-primary-fill)) !important;
  background: transparent !important;
}

html[data-theme='dark'] body.app.admin #wrapper a.kpf-link-accent:not(.btn),
html body.app.admin.kodex-crm-admin--ui-dark #wrapper a.kpf-link-accent:not(.btn),
html[data-theme='dark'] body.app.admin #wrapper a.text-primary:not(.btn),
html body.app.admin.kodex-crm-admin--ui-dark #wrapper a.tw-text-primary:not(.btn) {
  color: var(--kpf-link-accent, #d9dadc) !important;
}

/* —— 3) Success / danger / warning fills also need light ink —— */
html body.app.admin .label-success,
html body.app.admin .badge-success,
html body.app.admin .btn-success,
html body.app.admin .label-danger,
html body.app.admin .badge-danger,
html body.app.admin .btn-danger,
html body.app.admin .label-warning,
html body.app.admin .badge-warning,
html body.app.admin .btn-warning {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* —— 4) Progress bars: no readable text expected; keep fg white if any —— */
html body.app.admin .progress-bar {
  color: var(--kpf-on-primary) !important;
}
