/* =============================================================================
   ACCESSIBILITY OVERRIDES — WCAG 2.1 AA
   ============================================================================= */


/* -----------------------------------------------------------------------------
   COLOR VARIABLES
   ----------------------------------------------------------------------------- */
:root {
    /* Blues */
    --color-primary: #2260b0;
    --color-primary-hover: #1a5098;
    --color-focus-ring: #1677ff;

    /* Reds */
    --color-danger: #a8071a;
    --color-danger-hover: #820014;

    /* Text */
    --color-text: rgba(0, 0, 0, 0.85);
    --color-text-hover: #333333;
    --color-text-disabled: rgba(0, 0, 0, 0.65);

    /* Neutral UI */
    --color-switch-off: #757575;

    /* Component-specific */
    --color-tag-geekblue: #1a29a8;
}


/* -----------------------------------------------------------------------------
   1. SCREEN-READER UTILITIES
   ----------------------------------------------------------------------------- */

/* WCAG 1.3.1 — Visually hidden text available to assistive technology. */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}


/* -----------------------------------------------------------------------------
   2. INTERACTIVE ELEMENTS — ICONS
   ----------------------------------------------------------------------------- */

/* WCAG 2.1.1, 4.1.2 — Icon-only action buttons (edit, settings, report, etc.)
   must be native <button> elements with a visible focus indicator. */
.icon-action-btn {
    background: none;
    border: none;
    padding: 4px;
    cursor: pointer;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
}
.icon-action-btn:focus-visible {
    outline: 2px solid var(--color-focus-ring);
    outline-offset: 2px;
    border-radius: 2px;
}


/* -----------------------------------------------------------------------------
   3. BUTTONS
   ----------------------------------------------------------------------------- */

.ant-btn-default[disabled],
.ant-btn-default[disabled]:hover{
    color: var(--color-text-disabled);
}

.ant-btn.ant-btn-primary {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
    color: #ffffff;
}
.ant-btn.ant-btn-primary:hover,
.ant-btn.ant-btn-primary:focus {
    background-color: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: #ffffff;
}

.ant-btn.ant-btn-dangerous,
.ant-btn.ant-btn-dangerous:link {
    color: var(--color-danger);
    border-color: var(--color-danger);
}
.ant-btn.ant-btn-dangerous.ant-btn-text,
.ant-btn.ant-btn-dangerous.ant-btn-link {
    border-color: transparent;
}
.ant-btn.ant-btn-dangerous:hover,
.ant-btn.ant-btn-dangerous:focus {
    color: var(--color-danger-hover);
    border-color: var(--color-danger-hover);
}
.ant-btn.ant-btn-dangerous.ant-btn-text:hover,
.ant-btn.ant-btn-dangerous.ant-btn-text:focus,
.ant-btn.ant-btn-dangerous.ant-btn-link:hover,
.ant-btn.ant-btn-dangerous.ant-btn-link:focus {
    border-color: transparent;
}

.ant-btn.ant-btn-dangerous.ant-btn-primary {
    color: #ffffff;
    background-color: var(--color-danger);
    border-color: var(--color-danger);
}
.ant-btn.ant-btn-dangerous.ant-btn-primary:hover,
.ant-btn.ant-btn-dangerous.ant-btn-primary:focus {
    color: #ffffff;
    background-color: var(--color-danger-hover);
    border-color: var(--color-danger-hover);
}

/* The plain `.ant-btn.ant-btn-primary` rules above match antd's own
   `.ant-btn-primary[disabled]` specificity, and this file wins the tie, so without these
   a disabled primary button kept its full brand fill and white label - it even changed
   colour on hover - while antd still blocked the click. A blocked Confirm that looks
   clickable reads as a broken page (Gitlab #4278). Restores antd's disabled palette, with
   the darker disabled text this file uses elsewhere for contrast (WCAG 1.4.3). */
.ant-btn.ant-btn-primary[disabled],
.ant-btn.ant-btn-primary[disabled]:hover,
.ant-btn.ant-btn-primary[disabled]:focus,
.ant-btn.ant-btn-primary[disabled]:active,
.ant-btn.ant-btn-dangerous.ant-btn-primary[disabled],
.ant-btn.ant-btn-dangerous.ant-btn-primary[disabled]:hover,
.ant-btn.ant-btn-dangerous.ant-btn-primary[disabled]:focus,
.ant-btn.ant-btn-dangerous.ant-btn-primary[disabled]:active {
    color: var(--color-text-disabled);
    background-color: #f5f5f5;
    border-color: #d9d9d9;
    text-shadow: none;
    box-shadow: none;
}

.ant-btn-link {
    color: var(--color-primary);
    font-weight: 500;
}
.ant-btn-link:hover,
.ant-btn-link:focus {
    color: var(--color-primary-hover);
}


/* -----------------------------------------------------------------------------
   4. LINKS
   ----------------------------------------------------------------------------- */

/* Ant Design default link blue (#1890ff) fails at 3.24:1 against white. (WCAG 1.4.3) */
a,
a.ant-typography,
.ant-typography a {
    color: var(--color-primary);
}
a:hover {
    color: var(--color-primary-hover);
}

a[disabled] {
    color: var(--color-text-disabled);
}

.breadcrumb-container a,
.breadcrumb-container a:link {
    color: var(--color-primary);
}
.breadcrumb-container a:hover,
.breadcrumb-container a:focus {
    color: var(--color-primary-hover);
}

.ant-checkbox-checked .ant-checkbox-inner {
    background-color: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
}


/* -----------------------------------------------------------------------------
   5. TEXT & MUTED COLORS
   ----------------------------------------------------------------------------- */

/* Ant Design default muted text (#00000073) fails 4.5:1 on white.
   Override to near-black (rgba(0,0,0,0.85) ≈ 11:1). (WCAG 1.4.3) */
.ant-typography-secondary,
.ant-form-item-extra,
.ant-form-item-explain,
.ant-select-selection-item,
.ant-empty-description,
.ant-statistic-content-suffix,
.ant-statistic-title,
.ant-descriptions-item-label,
.ant-list-item-meta-description {
    color: var(--color-text);
}

.ant-select-selection-placeholder,
.ant-input::placeholder {
    color: var(--color-text-disabled);
}

/* Select: disabled option text (#00000040) fails contrast — use 0.65 opacity. */
.ant-select-disabled .ant-select-selection-item {
    color: var(--color-text-disabled);
}

.ant-tag-geekblue {
    color: var(--color-tag-geekblue);
}


/* -----------------------------------------------------------------------------
   6. TABLES
   ----------------------------------------------------------------------------- */

.ant-table-cell a,
.ant-table-cell a:link {
    color: var(--color-primary);
}
.ant-table-cell a:hover,
.ant-table-cell a:focus {
    color: var(--color-primary-hover);
}

.ant-table.ant-table-small .ant-table-tbody > tr > td.ant-table-cell .ant-btn-link {
    font-weight: 500;
    font-family: 'OpenSans-Semibold';
}

.ant-table-column-sorter-up.active,
.ant-table-column-sorter-down.active {
    color: var(--color-primary);
}

.ant-pagination-item a {
    color: var(--color-primary);
}
.ant-pagination-item a:hover {
    color: var(--color-primary-hover);
}


/* -----------------------------------------------------------------------------
   7. SWITCH
   ----------------------------------------------------------------------------- */

/* Default off-track color is too light for the thumb indicator. (WCAG 1.4.3) */
.ant-switch {
    background-color: var(--color-switch-off);
}
.ant-switch-checked {
    background-color: var(--color-primary);
}


/* -----------------------------------------------------------------------------
   8. TABS
   ----------------------------------------------------------------------------- */

.ant-tabs-tab-btn {
    color: var(--color-primary-hover);
}
.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {
    color: var(--color-primary-hover);
}
.ant-tabs-ink-bar {
    background: var(--color-primary-hover);
}

/* Active tab outer wrapper inherits Ant Design's #1890ff ink color (2.82:1 — fail).
   The inner .ant-tabs-tab-btn handles its own color; prevent the wrapper from overriding it.
   !important needed to beat Ant Design's scoped rule. (WCAG 1.4.3) */
.ant-tabs-tab.ant-tabs-tab-active { color: inherit !important; }


/* -----------------------------------------------------------------------------
   9. DROPDOWN MENUS
   ----------------------------------------------------------------------------- */

/* Bootstrap default dropdown link color (#999999) on white fails at 2.3:1.
   #595959 passes at ~7:1 (AA and AAA). (WCAG 1.4.3) */
.dropdown-menu > li > a,
.dropdown-menu > .admin-menu-item > a {
    color: var(--color-text);
}

/* !important needed to beat Bootstrap's more-specific scoped rules */
.header-sesionDuration-trigger a,
.header-password-trigger a {
    color: var(--color-text) !important;
}

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus,
.dropdown-menu > .admin-menu-item > a:hover,
.dropdown-menu > .admin-menu-item > a:focus {
    color: var(--color-text-hover);
}

.header-sesionDuration-trigger a:hover,
.header-sesionDuration-trigger a:focus,
.header-password-trigger a:hover,
.header-password-trigger a:focus {
    color: var(--color-text-hover) !important;
}


/* -----------------------------------------------------------------------------
   10. USER MENU DROPDOWN TOGGLE
   ----------------------------------------------------------------------------- */

/* WCAG 4.1.2, 2.1.1 — The user-menu dropdown toggle was converted from a
   <span role="button"> to a native <button> for keyboard accessibility.
   Reset browser button chrome so it visually matches the original span. */
.admin-options button.dropdown-toggle {
    background: none;
    border: none;
    cursor: pointer;
    color: white;
    font: inherit;
    padding: 0;
    line-height: inherit;
}


/* -----------------------------------------------------------------------------
   11. FOCUS INDICATORS
   ----------------------------------------------------------------------------- */
.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector,
.ant-input-affix-wrapper:focus,
.ant-input-affix-wrapper-focused {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary) 20%, transparent);
    outline: 0;
}
