/* Shared controls follow the active palette in app-theme.css.
   Hard-coded Tabler blues stay on the library sheet; these rules win after it. */
:root {
    --gs-danger: #d63939;
    --gs-success: #2f9e44;
    --gs-warning: #f59f00;
    --gs-input-height: 2.5rem;
    --gs-focus-ring: 0 0 0 .2rem color-mix(in srgb, var(--gs-primary) 22%, transparent);
}

.btn-primary,
html[data-gs-theme-color] .btn-primary {
    color: #fff;
    border-color: var(--gs-primary);
    background: var(--gs-primary);
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
html[data-gs-theme-color="obsidian"] .btn-primary,
html[data-gs-theme-color="obsidian"] .btn-primary:hover {
    color: #fff;
    border-color: var(--gs-primary-dark);
    background: var(--gs-primary-dark);
}

.btn-outline-primary {
    color: var(--gs-primary-dark);
    border-color: color-mix(in srgb, var(--gs-primary) 55%, var(--gs-panel-border));
    background: transparent;
}

.btn-outline-primary:hover,
.btn-outline-primary:focus {
    color: #fff;
    border-color: var(--gs-primary);
    background: var(--gs-primary);
}

.btn-link,
.gs-page a:not(.btn):not(.nav-link):not(.dropdown-item):not(.gs-row-actions-item):not(.page-link):not(.gs-welcome-action):not(.gs-app-switcher-menu a),
.modal a:not(.btn):not(.dropdown-item) {
    color: var(--gs-primary-dark);
}

.btn-link:hover,
.gs-page a:not(.btn):not(.nav-link):not(.dropdown-item):not(.gs-row-actions-item):not(.page-link):hover {
    color: var(--gs-primary-darker);
}

.badge.bg-blue,
.badge.bg-primary,
.badge.bg-azure,
.badge.bg-indigo,
.badge.bg-teal {
    background-color: var(--gs-primary) !important;
    color: #fff !important;
}

.badge.bg-blue-lt,
.badge.bg-azure-lt,
.badge.bg-primary-lt,
.badge.bg-indigo-lt,
.badge.bg-teal-lt,
html[data-gs-theme-color="obsidian"] .badge.bg-blue-lt,
html[data-gs-theme-color="obsidian"] .badge.bg-azure-lt {
    color: var(--gs-primary-darker) !important;
    background-color: color-mix(in srgb, var(--gs-primary) 14%, var(--gs-surface)) !important;
}

.text-blue,
.text-azure,
.text-primary,
.text-indigo {
    color: var(--gs-primary-dark) !important;
}

.alert-primary,
.alert-info {
    color: var(--gs-text);
    background: color-mix(in srgb, var(--gs-primary) 10%, var(--gs-surface));
    border-color: color-mix(in srgb, var(--gs-primary) 28%, var(--gs-panel-border));
}

.alert-success {
    color: var(--gs-text);
    background: color-mix(in srgb, var(--gs-success) 12%, var(--gs-surface));
    border-color: color-mix(in srgb, var(--gs-success) 35%, var(--gs-panel-border));
}

.alert-warning {
    color: var(--gs-text);
    background: color-mix(in srgb, var(--gs-warning) 16%, var(--gs-surface));
    border-color: color-mix(in srgb, var(--gs-warning) 40%, var(--gs-panel-border));
}

.alert-danger {
    color: var(--gs-text);
    background: color-mix(in srgb, var(--gs-danger) 10%, var(--gs-surface));
    border-color: color-mix(in srgb, var(--gs-danger) 32%, var(--gs-panel-border));
}

.page-title,
.gs-page-title,
.card-title,
.card-header,
.modal-title,
.gs-manage-table thead th,
.gs-row-actions-cell {
    color: var(--gs-text);
}

.gs-manage-table thead th,
thead .gs-row-actions-cell,
.gs-manage-table thead th.gs-row-actions-cell {
    background: color-mix(in srgb, var(--gs-primary) 8%, var(--gs-panel-head));
    border-color: var(--gs-panel-border);
}

.gs-manage-table tbody tr:nth-child(even) td,
.gs-manage-table tbody tr:nth-child(even) td.gs-row-actions-cell {
    background: color-mix(in srgb, var(--gs-primary) 4%, var(--gs-surface));
}

.gs-manage-table tbody tr:hover td,
.gs-manage-table tbody tr:hover td.gs-row-actions-cell {
    background: color-mix(in srgb, var(--gs-primary) 9%, var(--gs-surface));
}

.form-control,
.form-select,
textarea.form-control,
.gs-select-toggle,
.gs-auth-input-group .form-control,
.gs-server-input-wrap .form-control {
    min-height: var(--gs-input-height);
    border: 1px solid var(--gs-panel-border);
    border-radius: var(--gs-ui-radius, .35rem);
    background-color: var(--gs-surface);
    color: var(--gs-text);
    box-shadow: none;
}

textarea.form-control {
    min-height: 6rem;
    height: auto;
}

.form-control::placeholder {
    color: var(--gs-muted);
}

.form-control:focus,
.form-select:focus,
.gs-auth-input-group .form-control:focus,
.gs-server-input-wrap .form-control:focus,
.gs-select.is-open .gs-select-toggle {
    border-color: var(--gs-primary);
    background-color: var(--gs-surface);
    color: var(--gs-text);
    box-shadow: var(--gs-focus-ring);
}

.form-check-input:checked {
    background-color: var(--gs-primary);
    border-color: var(--gs-primary);
}

.form-check-input:focus {
    border-color: var(--gs-primary);
    box-shadow: var(--gs-focus-ring);
}

.gs-row-actions-item.is-danger {
    color: var(--gs-danger);
}

.gs-row-actions-item.is-danger:hover,
.gs-row-actions-item.is-danger:focus-visible {
    color: #fff;
    background: var(--gs-danger);
}

.spinner-border.text-primary {
    color: var(--gs-primary) !important;
}
