/* ----------------------------------------------------------------------------
   This file defines the CSS variables used in the backend design.
   Most of the time, overriding some of these variables is all you need to
   customize the design of your backends. The few global knobs everything
   derives from live in design-tokens.css; Bootstrap components are themed
   through the --bs-* bridge at the end of this file.

   Declared on `:root, .ea-dark-scheme` (not just `:root`) so that tokens
   derived from per-scheme tokens (e.g. the --gray-* ramp, which differs
   between schemes) re-resolve in dark mode; see the IMPORTANT note in
   design-tokens.css.
 --------------------------------------------------------------------------- */
:root,
.ea-dark-scheme {
    --font-family-sans-serif:
        system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --font-family-monospace: "JetBrains Mono", ui-monospace, "Roboto Mono", SFMono-Regular, Menlo, Monaco, Consolas,
        "Liberation Mono", "Courier New", monospace;
    --font-family-base: var(--font-family-sans-serif);

    --font-size-xs: 12px;
    --font-size-sm: 13px;
    --font-size-base: 14px;
    --font-size-lg: 16px;
    --font-size-xl: 18px;
    --font-size-xxl: 24px;
    --font-size-xxxl: 28px;

    --font-weight-normal: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;

    /* Icons are sized with font-size, because base.css renders them em-relative.
       That makes icon size its own axis: it is not type, so it does not take a
       --font-size-* step. Like the font scale, these are literal steps you
       override individually rather than derive from a knob. */
    --icon-size-sm: 16px; /* inline with text: menu and dropdown items */
    --icon-size-md: 20px; /* standalone controls: toolbars, headers, toggles */
    --icon-size-lg: 24px; /* feature icons: modal headers, avatars */

    /* Unitless on purpose, so they scale with the element's font-size. Some
       elements instead pair a px line-height with a fixed block-size to center
       a glyph; those are layout, not type, and stay as they are. */
    --line-height-none: 1;
    --line-height-tight: 1.25;
    --line-height-snug: 1.375;
    --line-height-normal: 1.5;
    --line-height-relaxed: 1.625;

    --shadow-md: 0 4px 6px -1px color-mix(in srgb, var(--gray-900) 10%, transparent), 0 2px 4px -2px
        color-mix(in srgb, var(--gray-900) 10%, transparent);
    --shadow-lg: 0 10px 15px -3px color-mix(in srgb, var(--gray-900) 10%, transparent), 0 4px 6px -4px
        color-mix(in srgb, var(--gray-900) 10%, transparent);
    --shadow-xl: 0 20px 25px -5px color-mix(in srgb, var(--gray-900) 20%, transparent), 0 8px 10px -6px
        color-mix(in srgb, var(--gray-900) 20%, transparent);

    --width-sm: 576px;
    --width-md: 768px;
    --width-lg: 992px;
    --width-xl: 1200px;
    --width-xxl: 1400px;

    --zindex-modal-backdrop: 2020;

    --text-primary-color: var(--text-color);
    --text-secondary-color: var(--text-muted);
    --text-tertiary-color: var(--gray-400);
    --border-primary-color: var(--gray-500);
    --border-secondary-color: var(--gray-300);
    --border-tertiary-color: var(--gray-100);
    --primary-bg: var(--gray-300);
    --secondary-bg: var(--gray-100);
    --tertiary-bg: var(--gray-50);

    --body-max-width: 1440px;
    --body-bg: var(--white);
    --responsive-header-bg: var(--gray-50);
    --responsive-header-border-color: var(--gray-200);
    --responsive-header-logo-color: var(--gray-800);
    --responsive-table-label-color: var(--gray-500);
    --responsive-table-row-border-color: var(--gray-300);
    --sidebar-max-width: 230px;
    --sidebar-bg: var(--gray-50);
    --sidebar-border-color: var(--gray-200);
    --sidebar-logo-color: var(--gray-800);
    --sidebar-padding-left: var(--ea-sp-5);
    --sidebar-padding-right: var(--ea-sp-5);
    --sidebar-menu-items-padding-left: var(--ea-sp-3);
    --sidebar-menu-items-padding-right: var(--ea-sp-5);
    --sidebar-menu-color: var(--gray-700);
    --sidebar-menu-badge-bg: var(--ea-primary-soft);
    --sidebar-menu-badge-color: var(--gray-500);
    --sidebar-menu-badge-active-bg: var(--color-primary);
    --sidebar-menu-badge-active-color: var(--text-on-primary);
    --sidebar-menu-submenu-color: var(--gray-600);
    --sidebar-menu-header-color: var(--gray-400);
    --sidebar-menu-icon-color: var(--gray-500);
    --sidebar-menu-active-item-bg: var(--gray-200);
    --sidebar-menu-active-item-color: var(--color-primary);
    --sidebar-menu-hover-color: var(--color-primary);
    --sidebar-item-hover-bg: var(--gray-100);
    --sidebar-item-icon-tile-hover-bg: var(--gray-200);
    --sidebar-badge-dot-bg: var(--badge-primary-bg);
    --sidebar-badge-dot-border-color: var(--badge-primary-color);
    --sidebar-tooltip-bg: var(--gray-900);
    --sidebar-tooltip-color: var(--white);
    --resize-handler-width: 10px;
    --content-section-border-color: var(--gray-200);
    --resize-handler-hover-bg: var(--ea-primary-strong);
    --content-search-input-bg: var(--body-bg);
    --content-search-icon-color: var(--gray-500);
    --content-search-reset-button-bg: var(--gray-300);
    --content-search-reset-button-color: var(--gray-600);
    --content-search-reset-button-hover-bg: var(--gray-600);
    --content-search-reset-button-hover-color: var(--gray-200);
    --content-top-border-color: var(--gray-200);
    --content-bg: var(--white);
    --content-padding-left: var(--ea-sp-8);
    --content-padding-right: var(--ea-sp-8);
    --lg-content-padding-left: var(--ea-sp-18);
    --lg-content-padding-right: var(--ea-sp-12);
    --lg-content-padding-bottom: var(--ea-sp-22);
    --user-avatar-icon-bg: var(--gray-200);
    --user-avatar-icon-color: var(--gray-500);
    --user-name-color: var(--gray-500);
    --user-menu-impersonated-link-color: var(--color-primary);
    --popover-bg: var(--gray-100);
    --popover-border-color: var(--gray-300);
    --popover-color: var(--text-color);
    --popover-shadow: var(--shadow-xl);
    --popover-max-width: 480px;
    --dropdown-toggle-bg: var(--white);
    --dropdown-toggle-color: var(--gray-600);
    --dropdown-toggle-border-color: var(--gray-300);
    --dropdown-toggle-hover-border-color: var(--gray-400);
    --dropdown-bg: var(--white);
    --dropdown-color: var(--gray-600);
    --dropdown-border-color: var(--gray-200);
    --dropdown-link-color: var(--gray-700);
    --dropdown-link-hover-bg: var(--gray-100);
    --dropdown-icon-color: var(--gray-600);
    --dropdown-settings-icon-color: var(--gray-400);
    --dropdown-settings-active-item-bg: var(--gray-100);
    --dropdown-settings-active-item-color: var(--color-primary);
    --dropdown-settings-active-item-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ea-primary) 50%, transparent);
    --dropdown-item-success-bg: var(--green-100);
    --dropdown-item-warning-bg: var(--yellow-100);
    --dropdown-item-danger-bg: var(--red-100);
    --dropdown-item-success-color: var(--green-700);
    --dropdown-item-warning-color: var(--yellow-700);
    --dropdown-item-danger-color: var(--red-600);
    --datagrid-noresults-placeholder-bg: var(--gray-100);
    --datagrid-hidden-results-gradient-bg: var(--gray-50);
    --table-thead-color: var(--gray-800);
    --table-cell-color: var(--gray-600);
    --table-thead-marker-color: var(--gray-400);
    --table-cell-border-color: var(--gray-200);
    --table-hover-cell-bg: var(--gray-50);
    --table-selected-cell-bg: var(--gray-200);
    --table-thead-sorted-color: var(--gray-900);
    --table-thead-sorted-marker-color: var(--color-primary);
    --datalist-border-color: var(--gray-200);
    --datalist-label-color: var(--gray-500);
    --datalist-value-color: var(--gray-600);
    --pagination-color: var(--gray-600);
    --pagination-hover-border-color: var(--gray-300);
    --pagination-disabled-color: var(--gray-400);
    --pagination-active-bg: var(--color-primary);
    --pagination-active-color: var(--text-on-primary);
    --field-language-badge-border-color: var(--gray-300);
    --field-country-flag-border-color: var(--gray-200);
    --modal-bg: var(--white);
    --modal-border-color: var(--border-secondary-color);
    --modal-header-bg: var(--gray-50);
    --modal-header-border-color: var(--gray-300);
    --modal-footer-bg: var(--gray-100);
    --modal-title-color: var(--gray-700);
    --modal-icon-bg: var(--gray-100);
    --modal-icon-color: var(--gray-700);
    --detail-label-tooltip-underline-color: var(--gray-400);
    --form-label-color: var(--gray-800);
    --form-control-bg: var(--white);
    --form-control-disabled-bg: var(--gray-200);
    --form-control-disabled-color: var(--gray-600);
    --form-input-border-color: var(--gray-300);
    --form-input-error-legend-color: var(--red-600);
    --form-input-error-border-color: var(--red-600);
    --form-input-hover-border-color: var(--gray-400);
    --form-input-shadow: 0 1px 2px 0 var(--gray-50);
    --form-input-hover-shadow: 0 0 0 var(--ea-focus-ring-width) var(--gray-100);
    --form-input-error-shadow: 0 0 0 var(--ea-focus-ring-width) var(--red-100);
    --form-input-text-color: var(--gray-700);
    --form-input-group-text-bg: var(--form-control-bg);
    --form-input-group-text-border-color: var(--form-input-border-color);
    --switch-bg: var(--gray-300);
    --switch-checked-bg: var(--ea-primary);
    --switch-thumb-bg: var(--white);
    --switch-focus-ring: var(--ea-primary-ring);
    /* switch color variants reuse the button variant colors (these forward to
       scheme-aware tokens, so they resolve correctly in dark mode too) */
    --switch-success-bg: var(--button-success-hover-bg);
    --switch-warning-bg: var(--button-warning-hover-bg);
    --switch-danger-bg: var(--button-danger-hover-bg);
    --form-type-check-input-border-color: var(--gray-400);
    --form-type-check-input-box-shadow: 0 1px 2px 0 var(--gray-50);
    --form-type-check-input-checked-bg: var(--ea-primary);
    --form-type-text-editor-toolbar-bg: var(--white);
    --form-type-text-editor-toolbar-button-color: var(--gray-600);
    --form-type-text-editor-toolbar-button-hover-color: var(--gray-100);
    --form-type-text-editor-toolbar-button-active-bg: var(--gray-200);
    --form-type-text-editor-toolbar-button-active-color: var(--gray-700);
    --form-type-text-editor-dialog-bg: var(--white);
    --form-type-text-editor-dialog-box-shadow: 0 4px 12px var(--gray-300);
    --form-type-text-editor-content-pre-bg: var(--gray-200);
    --form-type-text-editor-content-pre-color: var(--text-color);
    --form-type-collection-item-collapsed-hover-bg: var(--gray-100);
    --form-type-autocomplete-dropdown-bg: var(--white);
    --form-type-autocomplete-dropdown-input-wrapper-bg: var(--gray-100);
    --form-type-autocomplete-dropdown-input-border-color: var(--form-input-border-color);
    --form-type-autocomplete-dropdown-active-item-bg: var(--gray-200);
    --form-type-autocomplete-close-button-bg: var(--gray-500);
    --form-type-autocomplete-close-button-hover-bg: var(--gray-700);
    --form-type-autocomplete-optgroup-bg: var(--body-bg);
    --form-type-autocomplete-optgroup-color: var(--gray-500);
    --form-type-autocomplete-multi-item-bg: var(--gray-100);
    --form-type-autocomplete-multi-item-border-color: var(--white);
    --form-type-autocomplete-multi-item-remove-button-hover-bg: var(--gray-200);
    --form-global-error-bg: var(--red-100);
    --form-global-error-color: var(--color-danger);
    --form-global-error-border: var(--border-width) solid transparent;
    --form-help-color: var(--gray-600);
    --form-help-error-color: var(--gray-800);
    --form-help-active-color: var(--gray-800);
    --form-tabs-border-color: var(--gray-200);
    --form-tabs-help-color: var(--gray-600);
    --form-tabs-item-hover-bg: var(--gray-100);
    --form-tabs-indicator-color: var(--ea-primary);
    --form-tabs-indicator-size: 2px;
    --form-column-header-color: var(--gray-700);
    --form-column-help-color: var(--gray-600);
    --form-column-icon-color: var(--gray-500);
    --form-fieldset-header-color: var(--gray-700);
    --form-fieldset-help-color: var(--gray-600);
    --form-fieldset-border-color: var(--gray-200);
    --form-fieldset-header-border-color: var(--gray-200);
    --form-fieldset-icon-color: var(--gray-500);
    --form-fieldset-collapse-marker-color: var(--gray-400);
    --form-collection-item-collapse-marker-color: var(--gray-400);
    --badge-border: 0;
    --badge-boolean-false-bg: var(--gray-200);
    --badge-boolean-false-box-shadow: inset 0 0 0 1px var(--gray-300);
    --badge-boolean-false-color: var(--text-color);
    --badge-boolean-true-bg: var(--color-primary);
    --badge-boolean-true-box-shadow: none;
    --badge-boolean-true-color: var(--text-on-primary);
    --badge-success-bg: var(--green-100);
    --badge-success-box-shadow: none;
    --badge-success-color: var(--text-green-600);
    --badge-warning-bg: var(--yellow-100);
    --badge-warning-box-shadow: none;
    --badge-warning-color: var(--text-yellow-600);
    --badge-danger-bg: var(--red-100);
    --badge-danger-box-shadow: none;
    --badge-danger-color: var(--text-red-600);
    --badge-info-bg: var(--blue-100);
    --badge-info-box-shadow: none;
    --badge-info-color: var(--text-blue-600);
    --badge-primary-bg: var(--ea-primary-soft);
    --badge-primary-box-shadow: none;
    --badge-primary-color: var(--ea-primary-text);
    --badge-secondary-bg: var(--gray-200);
    --badge-secondary-box-shadow: none;
    --badge-secondary-color: var(--gray-600);
    --badge-light-bg: var(--gray-50);
    --badge-light-box-shadow: none;
    --badge-light-color: var(--text-color);
    --badge-dark-bg: var(--gray-900);
    --badge-dark-box-shadow: none;
    --badge-dark-color: var(--gray-50);
    --badge-outline-box-shadow: inset 0 0 0 1px var(--gray-300);
    --badge-outline-color: var(--datalist-value-color);
    --alert-primary-bg: var(--ea-primary-soft);
    --alert-primary-color: var(--ea-primary-text);
    --alert-primary-border-color: var(--ea-primary-muted);
    --alert-secondary-bg: var(--gray-100);
    --alert-secondary-color: var(--gray-800);
    --alert-secondary-border-color: var(--gray-200);
    --alert-success-bg: var(--emerald-100);
    --alert-success-color: var(--emerald-900);
    --alert-success-border-color: var(--emerald-200);
    --alert-info-bg: var(--sky-100);
    --alert-info-color: var(--sky-800);
    --alert-info-border-color: var(--sky-200);
    --alert-warning-bg: var(--orange-100);
    --alert-warning-color: var(--orange-800);
    --alert-warning-border-color: var(--orange-200);
    --alert-danger-bg: var(--rose-100);
    --alert-danger-color: var(--rose-800);
    --alert-danger-border-color: var(--rose-200);
    --alert-light-bg: var(--white);
    --alert-light-color: var(--gray-800);
    --alert-light-border-color: var(--gray-200);
    --alert-dark-bg: var(--gray-800);
    --alert-dark-color: var(--gray-50);
    --alert-dark-border-color: var(--gray-500);

    --button-padding-y-sm: 0;
    --button-padding-x-sm: var(--ea-sp-5);
    --button-padding-y-md: 0;
    --button-padding-x-md: var(--ea-sp-6);
    /* vertical padding is 0 for every size: the height comes from --button-height, so large
       buttons are taller but not inflated by padding */
    --button-padding-y-lg: 0;
    --button-padding-x-lg: var(--ea-sp-8);
    --button-font-size-sm: var(--font-size-xs);
    --button-font-size-md: var(--font-size-base);
    /* large buttons are taller than medium ones but keep the same font size (like shadcn) */
    --button-font-size-lg: var(--font-size-base);
    --button-line-height: var(--line-height-normal);
    --button-border-radius: var(--border-radius-lg);

    --button-disabled-opacity: 0.5;

    --button-focus-outline-color: var(--ea-primary-strong);

    /* the button variant colors are deliberate literals taken from GitHub's Primer
       design system; mapping them to the nearest palette tokens was tried and looked
       worse, so don't "clean them up" */
    --button-primary-box-shadow: 0px 1px 1px 0px #1f23280f, 0px 1px 3px 0px #1f23280f;
    --button-primary-bg: linear-gradient(
        to bottom,
        color-mix(in oklab, var(--ea-primary) 96%, var(--white)),
        var(--ea-primary)
    );
    --button-primary-color: var(--text-on-primary);
    --button-primary-icon-color: inherit;
    --button-primary-border-color: #1f232826;
    --button-primary-hover-bg: linear-gradient(
        to bottom,
        var(--ea-primary),
        color-mix(in oklab, var(--ea-primary) 94%, var(--black))
    );
    --button-primary-hover-color: var(--text-on-primary);
    --button-primary-hover-border-color: #1f232826;
    --button-primary-active-box-shadow: inset 0 1px 0 0 #002d114d;
    --button-primary-active-bg: linear-gradient(
        to bottom,
        color-mix(in oklab, var(--ea-primary) 94%, var(--black)),
        color-mix(in oklab, var(--ea-primary) 88%, var(--black))
    );
    --button-primary-active-color: var(--text-on-primary);
    --button-primary-active-border-color: #1f232826;

    --button-secondary-box-shadow: 0 1px 0 0 #1f23280a;
    --button-secondary-bg: linear-gradient(to bottom, #fafdff, #f6f8fa);
    --button-secondary-color: var(--text-primary-color);
    --button-secondary-icon-color: var(--gray-700);
    --button-secondary-border-color: var(--gray-300);
    --button-secondary-hover-bg: linear-gradient(to bottom, #f6f8fa, #eff2f5);
    --button-secondary-hover-color: var(--text-primary-color);
    --button-secondary-hover-border-color: var(--gray-300);
    --button-secondary-active-box-shadow: inset 0 1px 0 0 #dee6ed;
    --button-secondary-active-bg: linear-gradient(to bottom, #eff2f5, #e6eaef);
    --button-secondary-active-color: var(--text-primary-color);
    --button-secondary-active-border-color: var(--gray-300);

    --button-success-box-shadow: 0 1px 0 0 #1f23280a;
    --button-success-bg: linear-gradient(to bottom, var(--white), #f6f8fa);
    --button-success-color: #1f883d;
    --button-success-icon-color: inherit;
    --button-success-border-color: #1f232826;
    --button-success-hover-bg: #1f883d;
    --button-success-hover-color: var(--white);
    --button-success-hover-border-color: #1f232826;
    --button-success-active-box-shadow: inset 0px 1px 0px 0px #002d114d;
    --button-success-active-bg: #197935;
    --button-success-active-color: var(--white);
    --button-success-active-border-color: #1f232826;

    --button-warning-box-shadow: 0 1px 0 0 #1f23280a;
    --button-warning-bg: linear-gradient(to bottom, var(--white), #f6f8fa);
    --button-warning-color: #a67a00;
    --button-warning-icon-color: inherit;
    --button-warning-border-color: #1f232826;
    --button-warning-hover-bg: #b88700;
    --button-warning-hover-color: var(--white);
    --button-warning-hover-border-color: #1f232826;
    --button-warning-active-box-shadow: inset 0px 1px 0px 0px #2d24004d;
    --button-warning-active-bg: #b88700;
    --button-warning-active-color: var(--white);
    --button-warning-active-border-color: #2d24004d;

    --button-danger-box-shadow: 0 1px 0 0 #1f23280a;
    --button-danger-bg: linear-gradient(to bottom, var(--white), #f6f8fa);
    --button-danger-color: #d1242f;
    --button-danger-icon-color: inherit;
    --button-danger-border-color: var(--gray-300);
    --button-danger-hover-bg: #cf222e;
    --button-danger-hover-color: var(--white);
    --button-danger-hover-border-color: #1f23280a;
    --button-danger-active-box-shadow: inset 0 1px 0 0 #4c001433;
    --button-danger-active-bg: #a40e26;
    --button-danger-active-color: var(--white);
    --button-danger-active-border-color: #1f23280a;

    --button-info-box-shadow: 0 1px 0 0 #1f23280a;
    --button-info-bg: linear-gradient(to bottom, var(--white), #f6f8fa);
    --button-info-color: #0969da;
    --button-info-icon-color: inherit;
    --button-info-border-color: #1f232826;
    --button-info-hover-bg: #0969da;
    --button-info-hover-color: var(--white);
    --button-info-hover-border-color: #1f232826;
    --button-info-active-box-shadow: inset 0 1px 0 0 #001a4d33;
    --button-info-active-bg: #0860c9;
    --button-info-active-color: var(--white);
    --button-info-active-border-color: #1f232826;

    /* accent (text + border) of .btn-outline-primary; the primary tokens can't be reused
       because --button-primary-color is the white text painted over the solid background */
    --button-outline-primary-color: var(--color-primary);

    --button-invisible-box-shadow: none;
    --button-invisible-bg: transparent;
    --button-invisible-color: inherit;
    --button-invisible-icon-color: inherit;
    --button-invisible-border-color: transparent;
    --button-invisible-hover-bg: color-mix(in srgb, var(--black) 15%, transparent);
    --button-invisible-hover-color: inherit;
    --button-invisible-hover-border-color: transparent;
    --button-invisible-active-bg: color-mix(in srgb, var(--black) 15%, transparent);
    --button-invisible-active-color: inherit;
    --button-invisible-active-box-shadow: none;
    --button-invisible-active-border-color: transparent;

    --button-invisible-danger-color: #cf222e;
    --button-invisible-danger-hover-color: #cf222e;
    --button-invisible-danger-hover-icon-color: inherit;
    --button-invisible-danger-hover-hover-bg: #ffebe9;
    --button-invisible-danger-active-color: #a40e26;
    --button-invisible-danger-hover-active-bg: #ffdad6;

    --text-color: var(--gray-800);
    --text-color-rgb: 38, 38, 38;
    --text-color-light: var(--gray-400);
    --text-color-dark: var(--blue-gray-800); /* deprecated: kept for backward compatibility, unused internally */
    --box-shadow-lg: var(--shadow-lg);
    --content-panel-bg: var(--gray-50);
    --fieldset-bg: var(--blue-gray-50); /* deprecated: kept for backward compatibility, unused internally */
    --code-color: var(--orange-700);
    --code-editor-string-color: var(--sky-900);
    --code-editor-keyword-color: var(--red-500);
    --code-editor-comment-color: var(--green-700);
    --code-editor-definition-color: var(--orange-600);
    --code-editor-variable-color: var(--form-input-text-color);
    --code-editor-number-color: var(--form-input-text-color);
    --code-editor-argument-color: var(--purple-700);
    --code-editor-key-color: var(--blue-700);
    --code-editor-attribute-color: var(--green-700);
    --code-editor-addition-bg: var(--green-100);
    --code-editor-deletion-bg: var(--red-50);
    --code-editor-selection-bg: var(--gray-300);

    --page-login-bg: var(--gray-100);
    --page-login-form-bg: var(--white);
    --page-login-form-control-bg: var(--form-control-bg);
    --page-login-form-control-border-color: var(--form-input-border-color);
    --page-login-form-control-button-bg: var(--button-primary-bg);

    --zindex-700: 777;
    --zindex-800: 888;
    --zindex-900: 999;
    --zindex-1050: 1050;

    /* hand-darkened literals kept as-is to preserve WCAG contrast on tinted backgrounds */
    --text-blue-600: hsl(206, 91%, 30%);
    --text-green-600: hsl(159, 75%, 21%);
    --text-indigo-600: hsl(231, 48%, 45%);
    --text-red-600: hsl(338, 71%, 37%);
    --text-yellow-600: hsl(20, 94%, 30%);

    --color-primary: var(--ea-primary);
    --color-success: var(--emerald-600);
    --color-info: var(--sky-600);
    --color-warning: var(--amber-600);
    --color-danger: #cf222e; /* GitHub red, matches the danger button */
    --color-danger-rgb: 207, 34, 46; /* keep in sync with --color-danger */

    --highlight-bg: var(--yellow-300);
    --highlight-color: var(--text-color);

    --text-on-primary: var(--ea-primary-foreground);
    --text-muted: var(--gray-500);

    --link-color: var(--ea-primary);
    --link-color-rgb: 92, 112, 214; /* deprecated: kept for backward compatibility, unused internally */
    --link-hover-color: color-mix(in oklab, var(--ea-primary) 60%, var(--white));
    --link-hover-color-rgb: 153, 166, 230; /* deprecated: kept for backward compatibility, unused internally */
    --link-hover-decoration: none;
    --link-danger-color: var(--red-600);
    --link-danger-hover-color: var(--red-500);

    /* the --border-radius-* scale is defined in design-tokens.css, derived from --ea-radius */
    --border-width: 1px;
    --border-style: solid;
    --border-color: var(--gray-200);
}

/* ----------------------------------------------------------------------------
   Deprecated — don't use these. Kept only for backward compatibility.
 --------------------------------------------------------------------------- */
:root {
    /* button transitions now use the shared --ea-transition-* primitives (utilities.css) */
    --button-transition-duration: 80ms;
    --button-transition-timing: cubic-bezier(0.65, 0, 0.35, 1);
}

.ea-dark-scheme {
    --text-primary-color: var(--text-color);
    --text-secondary-color: var(--text-muted);
    --text-tertiary-color: var(--gray-600);
    --border-primary-color: var(--gray-600);
    --border-secondary-color: var(--gray-700);
    --border-tertiary-color: var(--gray-800);
    --primary-bg: var(--gray-600);
    --secondary-bg: var(--gray-800);
    --tertiary-bg: var(--gray-900);

    --shadow-md: 0 4px 6px -1px color-mix(in srgb, var(--black) 30%, transparent), 0 2px 4px -2px
        color-mix(in srgb, var(--black) 30%, transparent);
    --shadow-lg: 0 10px 15px -3px color-mix(in srgb, var(--black) 30%, transparent), 0 4px 6px -4px
        color-mix(in srgb, var(--black) 30%, transparent);
    --shadow-xl: 0 20px 25px -5px color-mix(in srgb, var(--black) 40%, transparent), 0 8px 10px -6px
        color-mix(in srgb, var(--black) 40%, transparent);
    --body-bg: var(--gray-950);
    --responsive-header-bg: var(--gray-800);
    --responsive-header-border-color: var(--gray-600);
    --responsive-header-logo-color: var(--gray-300);
    --responsive-table-label-color: var(--gray-500);
    --responsive-table-row-border-color: var(--gray-700);
    --sidebar-bg: var(--gray-900);
    --sidebar-border-color: var(--gray-800);
    --sidebar-logo-color: var(--gray-200);
    --sidebar-menu-color: var(--gray-300);
    --sidebar-menu-badge-bg: var(--gray-800);
    --sidebar-menu-badge-color: var(--gray-300);
    --sidebar-menu-badge-active-bg: var(--ea-primary-strong);
    --sidebar-menu-badge-active-color: var(--text-on-primary);
    --sidebar-menu-submenu-color: var(--gray-400);
    --sidebar-menu-header-color: var(--gray-400);
    --sidebar-menu-icon-color: var(--gray-400);
    --sidebar-menu-active-item-bg: var(--gray-300);
    --sidebar-menu-active-item-color: var(--gray-950);
    --sidebar-menu-hover-color: var(--ea-primary-text);
    --sidebar-item-hover-bg: var(--gray-800);
    --sidebar-item-icon-tile-hover-bg: var(--gray-700);
    --sidebar-badge-dot-bg: var(--indigo-400);
    --sidebar-badge-dot-border-color: var(--indigo-400);
    --sidebar-tooltip-bg: var(--gray-200);
    --sidebar-tooltip-color: var(--gray-900);
    --resize-handler-hover-bg: var(--ea-primary-strong);
    --content-section-border-color: var(--gray-700);
    --content-search-input-bg: var(--body-bg);
    --content-search-icon-color: var(--gray-500);
    --content-search-reset-button-bg: var(--gray-800);
    --content-search-reset-button-color: var(--gray-300);
    --content-search-reset-button-hover-bg: var(--gray-700);
    --content-search-reset-button-hover-color: var(--gray-200);
    --content-top-border-color: var(--gray-700);
    --content-bg: var(--gray-900);
    --user-avatar-icon-bg: var(--gray-700);
    --user-avatar-icon-color: var(--gray-400);
    --user-name-color: var(--gray-400);
    --user-menu-impersonated-link-color: var(--color-primary);
    --popover-bg: var(--gray-900);
    --popover-border-color: var(--gray-700);
    --popover-color: var(--text-color);
    --popover-shadow: var(--shadow-xl);
    --popover-max-width: 480px;
    --dropdown-toggle-bg: var(--gray-800);
    --dropdown-toggle-color: var(--gray-200);
    --dropdown-toggle-border-color: var(--gray-700);
    --dropdown-toggle-hover-border-color: var(--gray-600);
    --dropdown-bg: var(--gray-900);
    --dropdown-color: var(--gray-300);
    --dropdown-border-color: var(--gray-700);
    --dropdown-link-color: var(--gray-300);
    --dropdown-link-hover-bg: var(--gray-800);
    --dropdown-icon-color: var(--gray-400);
    --dropdown-settings-icon-color: var(--gray-500);
    --dropdown-settings-active-item-bg: var(--gray-950);
    --dropdown-settings-active-item-color: var(--color-primary);
    --dropdown-settings-active-item-shadow: inset 0 0 0 1px var(--gray-800);
    --dropdown-item-success-bg: color-mix(in srgb, var(--green-600) 15%, transparent);
    --dropdown-item-warning-bg: color-mix(in srgb, var(--yellow-600) 15%, transparent);
    --dropdown-item-danger-bg: color-mix(in srgb, var(--red-500) 10%, transparent);
    --dropdown-item-success-color: var(--green-500);
    --dropdown-item-warning-color: var(--yellow-600);
    --dropdown-item-danger-color: var(--red-400);
    --datagrid-noresults-placeholder-bg: var(--gray-700);
    --datagrid-hidden-results-gradient-bg: var(--gray-700);
    --table-thead-color: var(--gray-200);
    --table-cell-color: var(--gray-300);
    --table-thead-marker-color: var(--gray-500);
    --table-cell-border-color: var(--gray-800);
    --table-hover-cell-bg: var(--gray-900);
    --table-selected-cell-bg: var(--gray-800);
    --table-thead-sorted-color: var(--color-primary);
    --table-thead-sorted-marker-color: var(--color-primary);
    --datalist-border-color: var(--gray-600);
    --datalist-label-color: var(--gray-400);
    --datalist-value-color: var(--gray-300);
    --pagination-color: var(--gray-400);
    --pagination-hover-border-color: var(--gray-600);
    --pagination-active-bg: var(--ea-primary);
    --pagination-active-color: var(--text-on-primary);
    --field-language-badge-border-color: var(--gray-600);
    --field-country-flag-border-color: var(--gray-600);
    --modal-bg: var(--gray-800);
    --modal-border-color: var(--border-secondary-color);
    --modal-header-bg: var(--gray-900);
    --modal-header-border-color: var(--gray-600);
    --modal-footer-bg: var(--gray-700);
    --modal-title-color: var(--gray-400);
    --modal-icon-bg: var(--gray-700);
    --modal-icon-color: var(--gray-300);
    --pagination-disabled-color: var(--gray-600);
    --detail-label-tooltip-underline-color: var(--gray-500);
    --form-label-color: var(--gray-300);
    --form-control-bg: var(--gray-900);
    --form-control-disabled-bg: var(--gray-900);
    --form-control-disabled-color: var(--gray-500);
    --form-input-border-color: var(--gray-700);
    --form-input-error-legend-color: var(--red-500);
    --form-input-error-border-color: var(--red-500);
    --form-input-hover-border-color: var(--gray-500);
    --form-input-shadow: none;
    --form-input-hover-shadow: none;
    --form-input-error-shadow: 0 0 0 var(--ea-focus-ring-width) var(--red-900);
    --form-input-text-color: var(--gray-200);
    --form-input-group-text-bg: var(--gray-800);
    --form-input-group-text-border-color: var(--gray-600);
    --switch-bg: var(--gray-600);
    --switch-checked-bg: var(--ea-primary);
    --switch-thumb-bg: var(--gray-300);
    --switch-focus-ring: var(--ea-primary-ring);
    --form-type-check-input-border-color: var(--gray-400);
    --form-type-check-input-box-shadow: 0 1px 2px 0 var(--gray-800);
    --form-type-check-input-checked-bg: var(--ea-primary);
    --form-type-text-editor-toolbar-bg: var(--gray-800);
    --form-type-text-editor-toolbar-button-color: var(--gray-400);
    --form-type-text-editor-toolbar-button-hover-color: var(--gray-700);
    --form-type-text-editor-toolbar-button-active-bg: var(--gray-700);
    --form-type-text-editor-toolbar-button-active-color: var(--gray-300);
    --form-type-text-editor-dialog-bg: var(--gray-800);
    --form-type-text-editor-dialog-box-shadow: 0 4px 12px var(--gray-900);
    --form-type-text-editor-content-pre-bg: var(--gray-800);
    --form-type-text-editor-content-pre-color: var(--gray-300);
    --form-type-collection-item-collapsed-hover-bg: var(--gray-800);
    --form-type-autocomplete-dropdown-bg: var(--gray-800);
    --form-type-autocomplete-dropdown-input-wrapper-bg: var(--gray-900);
    --form-type-autocomplete-dropdown-input-border-color: transparent;
    --form-type-autocomplete-dropdown-active-item-bg: var(--gray-700);
    --form-type-autocomplete-close-button-bg: var(--gray-500);
    --form-type-autocomplete-close-button-hover-bg: var(--gray-800);
    --form-type-autocomplete-optgroup-bg: var(--form-type-autocomplete-dropdown-bg);
    --form-type-autocomplete-optgroup-color: var(--gray-400);
    --form-type-autocomplete-multi-item-bg: var(--gray-700);
    --form-type-autocomplete-multi-item-border-color: var(--gray-500);
    --form-type-autocomplete-multi-item-remove-button-hover-bg: var(--gray-800);
    --form-global-error-bg: transparent;
    --form-global-error-color: var(--red-400);
    --form-global-error-border: var(--border-width) solid var(--red-400);
    --form-help-color: var(--gray-500);
    --form-help-error-color: var(--gray-200);
    --form-help-active-color: var(--gray-300);
    --form-tabs-border-color: var(--gray-600);
    --form-tabs-help-color: var(--gray-500);
    --form-tabs-item-hover-bg: var(--gray-800);
    /* --ea-primary is too dark against the dark background (~3:1); the lightened
       primary keeps the indicator tied to the configurable accent color */
    --form-tabs-indicator-color: var(--ea-primary-text);
    --form-column-header-color: var(--gray-300);
    --form-column-help-color: var(--gray-500);
    --form-column-icon-color: var(--gray-400);
    --form-fieldset-header-color: var(--gray-300);
    --form-fieldset-help-color: var(--gray-500);
    --form-fieldset-border-color: var(--gray-700);
    --form-fieldset-header-border-color: var(--gray-600);
    --form-fieldset-icon-color: var(--gray-400);
    --form-fieldset-collapse-marker-color: var(--gray-500);
    --form-collection-item-collapse-marker-color: var(--gray-500);
    --badge-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--gray-100) 30%, transparent);
    --badge-boolean-false-bg: color-mix(in srgb, var(--gray-100) 10%, transparent);
    --badge-boolean-false-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--gray-100) 30%, transparent);
    --badge-boolean-false-color: var(--gray-200);
    --badge-boolean-true-bg: var(--ea-primary-soft);
    --badge-boolean-true-box-shadow: inset 0 0 0 1px var(--ea-primary-ring);
    --badge-boolean-true-color: var(--ea-primary-text);
    --badge-success-bg: color-mix(in srgb, var(--green-700) 18%, transparent);
    --badge-success-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--green-500) 30%, transparent);
    --badge-success-color: var(--green-300);
    --badge-warning-bg: color-mix(in srgb, var(--yellow-400) 18%, transparent);
    --badge-warning-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--yellow-400) 30%, transparent);
    --badge-warning-color: var(--yellow-400);
    --badge-danger-bg: color-mix(in srgb, var(--red-700) 18%, transparent);
    --badge-danger-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--red-300) 30%, transparent);
    --badge-danger-color: var(--red-300);
    --badge-info-bg: color-mix(in srgb, var(--blue-700) 18%, transparent);
    --badge-info-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--blue-400) 30%, transparent);
    --badge-info-color: var(--blue-400);
    --badge-primary-bg: var(--ea-primary-soft);
    --badge-primary-box-shadow: inset 0 0 0 1px var(--ea-primary-ring);
    --badge-primary-color: var(--ea-primary-text);
    --badge-secondary-bg: color-mix(in srgb, var(--gray-100) 10%, transparent);
    --badge-secondary-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--gray-100) 30%, transparent);
    --badge-secondary-color: var(--gray-200);
    --badge-light-bg: color-mix(in srgb, var(--white) 18%, transparent);
    --badge-light-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--white) 30%, transparent);
    --badge-light-color: var(--white);
    --badge-dark-bg: color-mix(in srgb, var(--black) 18%, transparent);
    --badge-dark-box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--gray-400) 30%, transparent);
    --badge-dark-color: var(--gray-400);
    --badge-outline-box-shadow: inset 0 0 0 1px var(--gray-500);
    --badge-outline-color: var(--datalist-value-color);
    --alert-primary-bg: var(--ea-primary-soft);
    --alert-primary-color: var(--ea-primary-text);
    --alert-primary-border-color: var(--ea-primary-muted);
    --alert-secondary-bg: var(--gray-700);
    --alert-secondary-color: var(--gray-300);
    --alert-secondary-border-color: var(--gray-600);
    --alert-success-bg: var(--emerald-800);
    --alert-success-color: var(--emerald-100);
    --alert-success-border-color: var(--emerald-700);
    --alert-info-bg: var(--sky-800);
    --alert-info-color: var(--sky-100);
    --alert-info-border-color: var(--sky-700);
    --alert-warning-bg: var(--orange-800);
    --alert-warning-color: var(--orange-100);
    --alert-warning-border-color: var(--orange-700);
    --alert-danger-bg: var(--red-800);
    --alert-danger-color: var(--red-100);
    --alert-danger-border-color: var(--red-700);
    --alert-light-bg: var(--gray-300);
    --alert-light-color: var(--gray-800);
    --alert-light-border-color: var(--gray-200);
    --alert-dark-bg: var(--gray-900);
    --alert-dark-color: var(--gray-200);
    --alert-dark-border-color: var(--gray-700);

    --button-focus-outline-color: var(--ea-primary-strong);

    --button-primary-box-shadow: none;
    --button-primary-bg: linear-gradient(
        to bottom,
        color-mix(in oklab, var(--ea-primary) 96%, var(--white)),
        var(--ea-primary)
    );
    --button-primary-color: var(--text-on-primary);
    --button-primary-icon-color: color-mix(in srgb, var(--text-on-primary) 85%, transparent);
    --button-primary-border-color: color-mix(in srgb, var(--white) 15%, transparent);
    --button-primary-hover-bg: linear-gradient(
        to bottom,
        color-mix(in oklab, var(--ea-primary) 92%, var(--white)),
        color-mix(in oklab, var(--ea-primary) 96%, var(--white))
    );
    --button-primary-hover-color: var(--text-on-primary);
    --button-primary-hover-border-color: color-mix(in srgb, var(--white) 15%, transparent);
    --button-primary-active-box-shadow: none;
    --button-primary-active-bg: color-mix(in oklab, var(--ea-primary) 88%, var(--white));
    --button-primary-active-color: var(--text-on-primary);
    --button-primary-active-border-color: color-mix(in srgb, var(--white) 15%, transparent);

    --button-secondary-box-shadow: none;
    --button-secondary-bg: #242424;
    --button-secondary-color: var(--text-primary-color);
    --button-secondary-icon-color: var(--text-muted);
    --button-secondary-border-color: #3d3d3d;
    --button-secondary-hover-bg: #2c2c2c;
    --button-secondary-hover-color: var(--text-primary-color);
    --button-secondary-hover-border-color: #3d3d3d;
    --button-secondary-active-box-shadow: none;
    --button-secondary-active-bg: #313131;
    --button-secondary-active-color: var(--text-primary-color);
    --button-secondary-active-border-color: #4d4d4d;

    --button-success-box-shadow: none;
    --button-success-bg: #242424;
    --button-success-color: #56d364;
    --button-success-icon-color: inherit;
    --button-success-border-color: #3d3d3d;
    --button-success-hover-bg: #29903b;
    --button-success-hover-color: var(--white);
    --button-success-hover-border-color: color-mix(in srgb, var(--white) 15%, transparent);
    --button-success-active-box-shadow: none;
    --button-success-active-bg: #2e9a40;
    --button-success-active-color: var(--white);
    --button-success-active-border-color: color-mix(in srgb, var(--white) 15%, transparent);

    --button-warning-box-shadow: 0 1px 0 0 #1f23280a;
    --button-warning-bg: #242424;
    --button-warning-color: #e3b341;
    --button-warning-icon-color: inherit;
    --button-warning-border-color: #3d3d3d;
    --button-warning-hover-bg: #9e6a03;
    --button-warning-hover-color: var(--white);
    --button-warning-hover-border-color: color-mix(in srgb, var(--white) 15%, transparent);
    --button-warning-active-box-shadow: none;
    --button-warning-active-bg: #bb8009;
    --button-warning-active-color: var(--white);
    --button-warning-active-border-color: color-mix(in srgb, var(--white) 15%, transparent);

    --button-danger-box-shadow: none;
    --button-danger-bg: #242424;
    --button-danger-color: #fa5e55;
    --button-danger-icon-color: inherit;
    --button-danger-border-color: #3d3d3d;
    --button-danger-hover-bg: #b62324;
    --button-danger-hover-color: var(--white);
    --button-danger-hover-border-color: color-mix(in srgb, var(--white) 15%, transparent);
    --button-danger-active-box-shadow: none;
    --button-danger-active-bg: #da3633;
    --button-danger-active-color: var(--white);
    --button-danger-active-border-color: color-mix(in srgb, var(--white) 15%, transparent);

    --button-info-box-shadow: none;
    --button-info-bg: #242424;
    --button-info-color: #79c0ff;
    --button-info-icon-color: inherit;
    --button-info-border-color: #3d3d3d;
    --button-info-hover-bg: #1f6feb;
    --button-info-hover-color: var(--white);
    --button-info-hover-border-color: color-mix(in srgb, var(--white) 15%, transparent);
    --button-info-active-box-shadow: none;
    --button-info-active-bg: #388bfd;
    --button-info-active-color: var(--white);
    --button-info-active-border-color: color-mix(in srgb, var(--white) 15%, transparent);

    /* in the dark scheme the primary button is royal blue, so the outline accent is blue too
       (same as the dark link color) */
    --button-outline-primary-color: var(--ea-primary-text);

    --button-invisible-box-shadow: none;
    --button-invisible-bg: transparent;
    --button-invisible-color: inherit;
    --button-invisible-icon-color: inherit;
    --button-invisible-border-color: transparent;
    --button-invisible-hover-bg: color-mix(in srgb, var(--white) 25%, transparent);
    --button-invisible-hover-color: inherit;
    --button-invisible-hover-border-color: transparent;
    --button-invisible-active-bg: color-mix(in srgb, var(--white) 25%, transparent);
    --button-invisible-active-color: inherit;
    --button-invisible-active-box-shadow: none;
    --button-invisible-active-border-color: transparent;

    --button-invisible-danger-color: #fa5e55;
    --button-invisible-danger-hover-color: var(--white);
    --button-invisible-danger-hover-icon-color: inherit;
    --button-invisible-danger-hover-hover-bg: #b62324;
    --button-invisible-danger-active-color: var(--white);
    --button-invisible-danger-hover-active-bg: #da3633;

    --text-color: var(--gray-300);
    --text-color-rgb: 212, 212, 212;
    --text-color-light: var(--gray-400);
    --text-color-dark: var(--gray-200); /* deprecated: kept for backward compatibility, unused internally */
    --box-shadow-lg: var(--shadow-lg);
    --content-panel-bg: var(--gray-900);
    --fieldset-bg: var(--blue-gray-50); /* deprecated: kept for backward compatibility, unused internally */
    --code-color: var(--orange-700);
    --code-editor-string-color: var(--blue-300);
    --code-editor-keyword-color: var(--red-400);
    --code-editor-comment-color: var(--green-300);
    --code-editor-definition-color: var(--orange-600);
    --code-editor-variable-color: var(--form-input-text-color);
    --code-editor-number-color: var(--form-input-text-color);
    --code-editor-argument-color: var(--purple-300);
    --code-editor-key-color: var(--blue-300);
    --code-editor-attribute-color: var(--green-300);
    --code-editor-addition-bg: color-mix(in srgb, var(--green-600) 30%, transparent);
    --code-editor-deletion-bg: color-mix(in srgb, var(--red-600) 30%, transparent);
    --code-editor-selection-bg: var(--sky-900);

    --page-login-bg: var(--gray-800);
    --page-login-form-bg: var(--gray-700);
    --page-login-form-control-bg: var(--gray-800);
    --page-login-form-control-border-color: var(--gray-600);
    --page-login-form-control-button-bg: var(--button-primary-bg);

    /* hand-darkened literals kept as-is to preserve WCAG contrast on tinted backgrounds */
    --text-blue-600: hsl(206, 91%, 30%);
    --text-green-600: hsl(159, 75%, 21%);
    --text-indigo-600: hsl(231, 48%, 45%);
    --text-red-600: hsl(338, 71%, 37%);
    --text-yellow-600: hsl(20, 94%, 30%);

    /* the accent used as text/icon color (sorted headers, applied-filter marks,
       dropdown checks...). The raw --ea-primary fill is too dark to read on dark
       surfaces, so route it through the --ea-primary-text recipe, which lightens
       it (all the fill tokens consuming --color-primary are re-declared in this
       block with their own per-scheme recipes, so they are not affected) */
    --color-primary: var(--ea-primary-text);
    --color-success: var(--emerald-600);
    --color-info: var(--sky-600);
    --color-warning: var(--amber-600);
    --color-danger: var(--red-500);
    --color-danger-rgb: 239, 68, 68; /* keep in sync with --color-danger */

    --highlight-bg: var(--yellow-300);
    --highlight-color: var(--gray-900);

    --text-on-primary: var(--ea-primary-foreground);
    --text-muted: var(--gray-500);

    --link-color: var(--ea-primary-text);
    --link-hover-color: color-mix(in oklab, var(--ea-primary-text) 70%, var(--white));
    --link-hover-decoration: none;

    --border-color: var(--gray-800);
}

/* Bootstrap variables */
:root,
[data-bs-theme="light"],
[data-bs-theme="dark"] {
    --bs-body-bg: var(--body-bg);
    --bs-body-color-rgb: var(--text-color-rgb);
    --bs-body-color: var(--text-color);
    --bs-body-font-family: var(--font-family-base);
    --bs-body-font-size: var(--font-size-base);
    --bs-body-font-weight: normal;
    --bs-border-color: var(--border-color);
    --bs-border-radius-lg: var(--border-radius-lg);
    --bs-border-radius-sm: var(--border-radius-sm);
    --bs-border-radius: var(--border-radius);
    --bs-border-width: var(--border-width);
    --bs-code-color: var(--code-color);
    --bs-danger-rgb: var(--color-danger-rgb);
    --bs-danger: var(--color-danger);
    --bs-emphasis-color-rgb: var(--text-color-rgb);
    --bs-emphasis-color: var(--text-color);
    --bs-font-monospace: var(--font-family-monospace);
    --bs-form-invalid-border-color: var(--color-danger);
    --bs-form-invalid-color: var(--color-danger);
    --bs-form-valid-border-color: var(--color-success);
    --bs-form-valid-color: var(--color-success);
    --bs-heading-color: var(--text-color);
    --bs-highlight-bg: var(--highlight-bg);
    --bs-highlight-color: inherit;
    --bs-info: var(--color-info);
    --bs-link-color-rgb: var(--link-color-rgb);
    --bs-link-hover-color-rgb: var(--link-hover-color-rgb);
    --bs-link-decoration: none;
    --bs-link-opacity: 1;
    --bs-primary: var(--color-primary);
    --bs-secondary-bg: var(--secondary-bg);
    --bs-secondary-color: var(--text-secondary-color);
    --bs-secondary: var(--text-muted);
    --bs-success: var(--color-success);
    --bs-tertiary-bg: var(--tertiary-bg);
    --bs-tertiary-color: var(--text-tertiary-color);
    --bs-warning: var(--color-warning);
}
.btn {
    --bs-btn-padding-x: var(--ea-sp-4);
    --bs-btn-padding-y: var(--ea-sp-2);
    --bs-btn-font-size: var(--font-size-base);
    --bs-btn-font-weight: 400;
    --bs-btn-border-width: 0;
    --bs-btn-border-radius: var(--border-radius-lg);
}
.dropdown-menu {
    --bs-dropdown-font-size: var(--font-size-base);
}
.table {
    --bs-table-active-bg: var(--table-selected-cell-bg);
    --bs-table-active-color: var(--table-cell-color);
    --bs-table-bg: var(--body-bg);
    --bs-table-border-color: var(--table-cell-border-color);
    --bs-table-color: var(--table-cell-color);
    --bs-table-hover-bg: var(--table-hover-cell-bg);
    --bs-table-hover-color: var(--table-cell-color);
}
.pagination {
    --bs-pagination-padding-y: var(--ea-sp-2);
    --bs-pagination-padding-x: var(--ea-sp-5);
    --bs-pagination-color: var(--pagination-color);
    --bs-pagination-line-height: var(--line-height-normal);
    --bs-pagination-bg: var(--body-bg);
    --bs-pagination-border-width: var(--border-width);
    --bs-pagination-border-color: transparent;
    --bs-pagination-focus-box-shadow: none;
    --bs-pagination-focus-outline: 0;
    --bs-pagination-hover-color: var(--text-color);
    --bs-pagination-hover-bg: var(--body-bg);
    --bs-pagination-hover-border-color: var(--pagination-hover-border-color);
    --bs-pagination-disabled-color: var(--text-muted);
    --bs-pagination-disabled-bg: var(--body-bg);
    --bs-pagination-disabled-border-color: transparent;
}
.modal {
    --bs-modal-zindex: 2040;
    --bs-modal-width: 380px;
    --bs-modal-padding: var(--ea-sp-8) var(--ea-sp-10);
    --bs-modal-margin: var(--ea-sp-4);
    --bs-modal-color: var(--text-color);
    --bs-modal-bg: var(--modal-bg);
    --bs-modal-border-color: var(--modal-border-color);
    --bs-modal-border-width: var(--border-width);
    --bs-modal-border-radius: var(--border-radius-xl);
    --bs-modal-box-shadow: var(--box-shadow-lg);
    --bs-modal-inner-border-radius: calc(var(--border-radius-xl) - (var(--border-width)));
    --bs-modal-header-padding-x: var(--ea-sp-10);
    --bs-modal-header-padding-y: var(--ea-sp-8);
    --bs-modal-header-padding: var(--ea-sp-8) var(--ea-sp-10);
    --bs-modal-header-border-color: var(--modal-border-color);
    --bs-modal-header-border-width: var(--border-width);
    --bs-modal-title-line-height: var(--line-height-tight);
    --bs-modal-footer-gap: var(--ea-sp-4);
    --bs-modal-footer-bg: var(--modal-footer-bg);
    --bs-modal-footer-border-color: var(--modal-border-color);
    --bs-modal-footer-border-width: var(--border-width);
}
.badge {
    --bs-badge-padding-x: var(--ea-sp-2);
    --bs-badge-padding-y: 1px;
    --bs-badge-font-size: var(--font-size-xs);
    --bs-badge-font-weight: var(--font-weight-medium);
    --bs-badge-color: var(--text-color);
    --bs-badge-border-radius: var(--bs-border-radius);
}
.offcanvas,
.offcanvas-xxl,
.offcanvas-xl,
.offcanvas-lg,
.offcanvas-md,
.offcanvas-sm {
    --bs-offcanvas-padding-x: var(--ea-sp-10);
    --bs-offcanvas-padding-y: var(--ea-sp-8);
}
.alert {
    --bs-alert-padding-x: var(--ea-sp-8);
    --bs-alert-padding-y: var(--ea-sp-8);
    --bs-alert-margin-block-end: 0;
    --bs-alert-border-radius: var(--border-radius-none);
    --bs-alert-link-color: inherit;
}
.row {
    /* re-base Bootstrap's grid gutter on the spacing scale (identical to its
       1.5rem default at the default --ea-spacing), so the gaps between form
       columns and fieldsets follow the density knob. This beats Bootstrap's
       gutter utilities ("g-2", "gx-3"...), which live in the vendor layer;
       EasyAdmin doesn't use them */
    --bs-gutter-x: var(--ea-sp-12);
}
