/*
 * TranCE theme — Phase 3: components.
 * Buttons, form fields, cards, tables, data grids, tabs, badges, alerts, modals,
 * menus, pagination and third-party widgets (Select2, Flatpickr, daterangepicker,
 * Alertify, SweetAlert2). Works on BS4 (SB Admin) and BS5 pages alike.
 */

/* ================= Buttons ================= */
.btn {
	font-family: var(--tce-font);
	font-size: var(--tce-fs-md);
	font-weight: var(--tce-fw-medium);
	letter-spacing: 0.01em;
	border-radius: var(--tce-radius-sm);
	padding: 0.5rem 1rem;
	line-height: 1.43;
	transition: background-color var(--tce-dur) var(--tce-ease), border-color var(--tce-dur) var(--tce-ease),
		box-shadow var(--tce-dur) var(--tce-ease), color var(--tce-dur) var(--tce-ease);
}
.btn:focus, .btn.focus, .btn:focus-visible { box-shadow: var(--tce-focus-ring) !important; }
.btn:disabled, .btn.disabled { opacity: 0.45; box-shadow: none !important; }

.btn-sm, .btn-group-sm > .btn { font-size: var(--tce-fs-sm); padding: 0.3rem 0.7rem; border-radius: var(--tce-radius-sm); }
.btn-lg, .btn-group-lg > .btn { font-size: var(--tce-fs-lg); padding: 0.65rem 1.4rem; border-radius: var(--tce-radius-md); }
.btn-circle { border-radius: 50% !important; padding: 0; }

/* Filled buttons: [selector, bg, hover, text] */
.btn-primary { --bs-btn-bg: var(--tce-primary); --bs-btn-border-color: var(--tce-primary); --bs-btn-hover-bg: var(--tce-primary-hover); --bs-btn-hover-border-color: var(--tce-primary-hover); --bs-btn-active-bg: var(--tce-primary-active); --bs-btn-active-border-color: var(--tce-primary-active); --bs-btn-disabled-bg: var(--tce-primary); --bs-btn-disabled-border-color: var(--tce-primary);
	background-color: var(--tce-primary); border-color: var(--tce-primary); color: #fff; }
.btn-primary:hover { background-color: var(--tce-primary-hover); border-color: var(--tce-primary-hover); color: #fff; box-shadow: var(--tce-elev-1); }
.btn-primary:active, .btn-primary.active, .btn-primary:not(:disabled):not(.disabled):active { background-color: var(--tce-primary-active); border-color: var(--tce-primary-active); }

.btn-success { --bs-btn-bg: var(--tce-success); --bs-btn-border-color: var(--tce-success); --bs-btn-hover-bg: #256A29; --bs-btn-hover-border-color: #256A29;
	background-color: var(--tce-success); border-color: var(--tce-success); color: #fff; }
.btn-success:hover { background-color: #256A29; border-color: #256A29; color: #fff; box-shadow: var(--tce-elev-1); }

.btn-danger { --bs-btn-bg: var(--tce-error); --bs-btn-border-color: var(--tce-error); --bs-btn-hover-bg: #B71C1C; --bs-btn-hover-border-color: #B71C1C;
	background-color: var(--tce-error); border-color: var(--tce-error); color: #fff; }
.btn-danger:hover { background-color: #B71C1C; border-color: #B71C1C; color: #fff; box-shadow: var(--tce-elev-1); }

.btn-warning { --bs-btn-bg: var(--tce-warning); --bs-btn-border-color: var(--tce-warning); --bs-btn-hover-bg: #D17A00; --bs-btn-hover-border-color: #D17A00; --bs-btn-color: #fff; --bs-btn-hover-color: #fff;
	background-color: var(--tce-warning); border-color: var(--tce-warning); color: #fff; }
.btn-warning:hover { background-color: #D17A00; border-color: #D17A00; color: #fff; box-shadow: var(--tce-elev-1); }

.btn-info { --bs-btn-bg: var(--tce-info); --bs-btn-border-color: var(--tce-info); --bs-btn-hover-bg: #0277BD; --bs-btn-hover-border-color: #0277BD; --bs-btn-color: #fff; --bs-btn-hover-color: #fff;
	background-color: var(--tce-info); border-color: var(--tce-info); color: #fff; }
.btn-info:hover { background-color: #0277BD; border-color: #0277BD; color: #fff; box-shadow: var(--tce-elev-1); }

/* Secondary = Material "outlined" button */
.btn-secondary { --bs-btn-bg: var(--tce-surface); --bs-btn-border-color: var(--tce-outline); --bs-btn-color: var(--tce-primary); --bs-btn-hover-bg: var(--tce-primary-container); --bs-btn-hover-color: var(--tce-primary); --bs-btn-hover-border-color: var(--tce-outline-strong);
	background-color: var(--tce-surface); border-color: var(--tce-outline); color: var(--tce-primary); }
.btn-secondary:hover, .btn-secondary:focus { background-color: var(--tce-primary-container); border-color: var(--tce-outline-strong); color: var(--tce-primary); }

.btn-light { background-color: var(--tce-surface-variant); border-color: var(--tce-surface-variant); color: var(--tce-text); }
.btn-light:hover { background-color: var(--tce-divider); border-color: var(--tce-divider); color: var(--tce-text); }

.btn-link { color: var(--tce-secondary); font-weight: var(--tce-fw-medium); text-decoration: none; }
.btn-link:hover { color: var(--tce-primary); text-decoration: underline; }

.btn-outline-primary { color: var(--tce-primary); border-color: var(--tce-outline); --bs-btn-color: var(--tce-primary); --bs-btn-border-color: var(--tce-outline); --bs-btn-hover-bg: var(--tce-primary-container); --bs-btn-hover-color: var(--tce-primary); --bs-btn-hover-border-color: var(--tce-primary); --bs-btn-active-bg: var(--tce-primary); }
.btn-outline-primary:hover { background-color: var(--tce-primary-container); color: var(--tce-primary); border-color: var(--tce-primary); }
.btn-outline-primary.active, .btn-check:checked + .btn-outline-primary { background-color: var(--tce-primary); color: #fff; border-color: var(--tce-primary); }

/* ================= Text fields & selects (Material "outlined") ================= */
.form-control,
.form-select,
.custom-select,
select.form-control {
	font-family: var(--tce-font);
	font-size: var(--tce-fs-md);
	color: var(--tce-text) !important; /* SB Admin forces black !important */
	background-color: var(--tce-surface);
	border: 1px solid var(--tce-outline);
	border-radius: var(--tce-radius-sm);
	padding: 0.5rem 0.75rem;
	line-height: 1.5;
	transition: border-color var(--tce-dur) var(--tce-ease), box-shadow var(--tce-dur) var(--tce-ease);
}
.form-select, .custom-select, select.form-control:not([multiple]):not([size]) { padding-right: 2.25rem; }
.form-control:not(textarea):not([type="file"]),
.form-select:not([multiple]):not([size]),
.custom-select:not([multiple]) { min-height: 2.5rem; }
.form-control-sm, .form-select-sm { font-size: var(--tce-fs-sm); min-height: 2rem !important; padding: 0.25rem 0.6rem; }

.form-control:hover:not(:disabled):not([readonly]),
.form-select:hover:not(:disabled),
.custom-select:hover:not(:disabled) { border-color: var(--tce-outline-strong); }

.form-control:focus,
.form-select:focus,
.custom-select:focus {
	border-color: var(--tce-primary);
	box-shadow: 0 0 0 3px rgba(var(--tce-primary-rgb), 0.14);
	outline: 0;
}
.form-control::placeholder { color: var(--tce-text-disabled); opacity: 1; }
.form-control:disabled, .form-control[readonly], .form-select:disabled, .custom-select:disabled {
	background-color: var(--tce-surface-variant);
	color: var(--tce-text-muted) !important;
}
.form-control.is-invalid, .was-validated .form-control:invalid { border-color: var(--tce-error); }
.form-control.is-valid, .was-validated .form-control:valid { border-color: var(--tce-success); }
.invalid-feedback { color: var(--tce-error); font-size: var(--tce-fs-xs); }
.form-text, small.text-muted { font-size: var(--tce-fs-xs); }

.input-group-text {
	background-color: var(--tce-surface-variant);
	border-color: var(--tce-outline);
	color: var(--tce-text-muted);
	font-size: var(--tce-fs-md);
}

.form-check-input:checked,
.custom-control-input:checked ~ .custom-control-label::before {
	background-color: var(--tce-primary);
	border-color: var(--tce-primary);
}
.form-check-input:focus { box-shadow: var(--tce-focus-ring); border-color: var(--tce-primary); }
.form-check-label, .form-check-label.form-label { font-weight: var(--tce-fw-regular); }

/* ================= Cards ================= */
.card {
	border: 1px solid var(--tce-divider);
	border-radius: var(--tce-radius-lg);
	box-shadow: var(--tce-elev-1);
	background-color: var(--tce-surface);
}
.card > .card-header:first-child { border-radius: calc(var(--tce-radius-lg) - 1px) calc(var(--tce-radius-lg) - 1px) 0 0; }
.card > .card-footer:last-child { border-radius: 0 0 calc(var(--tce-radius-lg) - 1px) calc(var(--tce-radius-lg) - 1px); }
.card-header {
	background-color: var(--tce-surface);
	border-bottom: 1px solid var(--tce-divider);
	padding: 0.9rem 1.25rem;
	font-weight: var(--tce-fw-medium);
	color: var(--tce-text);
}
.card-header h6, .card-header .h6, .card-header h5, .card-header .h5 { font-weight: var(--tce-fw-medium); margin-bottom: 0; }
.card-footer { background-color: var(--tce-surface); border-top: 1px solid var(--tce-divider); }
.card-title { font-size: var(--tce-fs-lg); font-weight: var(--tce-fw-medium); color: var(--tce-text); }

/* ================= Tables ================= */
.table {
	--bs-table-color: var(--tce-text);
	--bs-table-border-color: var(--tce-divider);
	--bs-table-striped-bg: #FAFBFD;
	--bs-table-hover-bg: var(--tce-surface-hover);
	color: var(--tce-text);
	font-size: var(--tce-fs-sm);
	background-color: var(--tce-surface);
}
.table th, .table td { border-color: var(--tce-divider); padding: 0.6rem 0.75rem; vertical-align: middle; }
.table > thead:not(.radiothead) > tr > th,
.table > thead:not(.radiothead) > tr > td {
	background-color: var(--tce-surface-variant);
	color: var(--tce-text-muted);
	font-weight: var(--tce-fw-bold);
	font-size: var(--tce-fs-sm);
	border-bottom: 1px solid var(--tce-outline);
	white-space: nowrap;
}
.table-bordered, .table-bordered th, .table-bordered td { border-color: var(--tce-divider); }
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: #FAFBFD; }
.table-striped tbody tr:nth-of-type(odd) { background-color: #FAFBFD; }
.table-hover > tbody > tr:hover > *,
.table-hover tbody tr:hover { background-color: var(--tce-surface-hover); color: var(--tce-text); }
.table-responsive { border-radius: var(--tce-radius-md); }

/* ================= SlickGrid (alpine theme) ================= */
.slick-container,
#myGrid {
	--alpine-font-family: var(--tce-font);
	--alpine-font-size: 15px;
	--alpine-font-color: var(--tce-text);
	--alpine-border-color: var(--tce-outline);
	--alpine-cell-border-color: var(--tce-divider);
	--alpine-header-bg-color: var(--tce-primary);
	--alpine-header-color: #fff;
	--alpine-header-font-weight: 700;
	--alpine-header-border-color: var(--tce-divider);
	--alpine-headerrow-bg-color: var(--tce-surface);
	--alpine-odd-row-color: #FAFBFD;
	--alpine-row-mouse-hover-color: var(--tce-surface-hover);
	--alpine-cell-selected-bg-color: var(--tce-primary-container);
	--alpine-cell-selected-color: var(--tce-on-primary-container);
	--alpine-sort-indicator-color: var(--tce-primary);
	--alpine-header-menubutton-filtered-color: var(--tce-primary);
	--alpine-pager-bg-color: var(--tce-surface-variant);
	--alpine-menu-bg-color: var(--tce-surface);
	--alpine-menu-border: 1px solid var(--tce-outline);
	--alpine-menu-border-radius: var(--tce-radius-md);
	--alpine-menu-box-shadow: var(--tce-elev-3);
	--alpine-button-primary-border-color: var(--tce-primary);
	--alpine-button-primary-color: var(--tce-primary);
	--alpine-border-radius: var(--tce-radius-md);
	border-radius: var(--tce-radius-md);
	overflow: hidden;
}
/* Blue grid header with white text (brand blue instead of Bootstrap's #0d6efd) */
.slick-header,
.slick-header.slick-header-left,
.slick-header-columns {
	background-color: var(--tce-primary) !important;
	color: #fff !important;
	border-bottom: 1px solid var(--tce-primary-active);
}
.slick-header-column {
	background-color: transparent !important;
	color: #fff !important;
	font-size: var(--tce-fs-sm);
	font-weight: var(--tce-fw-bold);
	border-right: 1px solid rgba(255, 255, 255, 0.18) !important;
}
.slick-header-column .slick-sort-indicator { color: #fff !important; }
.slick-header-column:hover { background-color: var(--tce-primary-hover) !important; }
.slick-cell {
	border-left: 0 !important;
	border-right: 1px solid var(--tce-divider) !important;
	border-bottom-color: var(--tce-divider) !important;
}
.slick-gridmenu-button { color: var(--tce-text-muted); font-size: 24px; }
.slick-footerrow,
.slick-footerrow-columns {
	background-color: var(--tce-primary) !important;
	color: #fff !important;
}
.slick-footerrow-column {
	font-size: var(--tce-fs-sm);
	font-weight: var(--tce-fw-bold);
	border-color: rgba(255, 255, 255, 0.18) !important;
}
.slick-headerrow-column input {
	border: 1px solid var(--tce-outline) !important;
	border-radius: 4px;
	font-size: var(--tce-fs-sm);
	padding: 0 0.4rem;
}
.slick-headerrow-column input:focus { border-color: var(--tce-primary) !important; outline: 0; }

/* ================= ag-Grid ================= */
.ag-theme-alpine {
	--ag-font-family: var(--tce-font);
	--ag-font-size: 15px;
	--ag-foreground-color: var(--tce-text);
	--ag-header-background-color: var(--tce-primary);
	--ag-header-foreground-color: #fff;
	--ag-border-color: var(--tce-outline);
	--ag-row-border-color: var(--tce-divider);
	--ag-odd-row-background-color: #FAFBFD;
	--ag-row-hover-color: var(--tce-surface-hover);
	--ag-selected-row-background-color: var(--tce-primary-container);
	--ag-alpine-active-color: var(--tce-primary);
}
.ag-header,
.ag-header-cell { background-color: var(--tce-primary) !important; color: #fff !important; border-bottom-color: var(--tce-primary-active) !important; }
.ag-header-cell:hover { background-color: var(--tce-primary-hover) !important; }
.ag-header-cell-text { color: #fff !important; font-weight: var(--tce-fw-bold); }
.ag-row-footer { background-color: var(--tce-primary) !important; color: #fff !important; font-weight: var(--tce-fw-bold); }

/* ================= Tabs ================= */
.nav-tabs {
	border-bottom: 1px solid var(--tce-divider);
	gap: 0.25rem;
}
.nav-tabs .nav-link {
	border: 0;
	border-radius: var(--tce-radius-sm) var(--tce-radius-sm) 0 0;
	color: var(--tce-text-muted);
	font-weight: var(--tce-fw-medium);
	padding: 0.7rem 1.25rem;
	position: relative;
	transition: color var(--tce-dur) var(--tce-ease), background-color var(--tce-dur) var(--tce-ease);
}
.nav-tabs .nav-link:hover { background-color: var(--tce-surface-hover); color: var(--tce-primary); border: 0; }
.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
	color: var(--tce-primary);
	background-color: transparent;
	border: 0;
	box-shadow: inset 0 -3px 0 var(--tce-primary);
}
.nav-pills .nav-link { border-radius: var(--tce-radius-pill); font-weight: var(--tce-fw-medium); color: var(--tce-text-muted); }
.nav-pills .nav-link.active, .nav-pills .show > .nav-link { background-color: var(--tce-primary); color: #fff; }

/* ================= Badges / chips ================= */
.badge {
	border-radius: var(--tce-radius-pill);
	font-weight: var(--tce-fw-medium);
	letter-spacing: 0.02em;
	padding: 0.35em 0.65em;
}
.badge-primary { background-color: var(--tce-primary); color: #fff; }
.badge-success { background-color: var(--tce-success); color: #fff; }
.badge-danger { background-color: var(--tce-error); color: #fff; }
.badge-warning { background-color: var(--tce-warning); color: #fff; }
.badge-info { background-color: var(--tce-info); color: #fff; }
.badge-secondary { background-color: var(--tce-surface-variant); color: var(--tce-text-muted); }

/* ================= Alerts ================= */
.alert {
	border: 0;
	border-left: 4px solid currentColor;
	border-radius: var(--tce-radius-md);
	font-size: var(--tce-fs-md);
	padding: 0.85rem 1rem;
}
.alert-primary, .alert-info { background-color: var(--tce-info-container); color: #01579B; }
.alert-success { background-color: var(--tce-success-container); color: #1B5E20; }
.alert-warning { background-color: var(--tce-warning-container); color: var(--tce-on-warning); }
.alert-danger { background-color: var(--tce-error-container); color: #8E1B1B; }

/* ================= Modals / dialogs ================= */
.modal-content {
	border: 0;
	border-radius: 16px;
	box-shadow: var(--tce-elev-4);
	overflow: hidden;
}
.modal-header {
	border-bottom: 1px solid var(--tce-divider);
	padding: 1.1rem 1.5rem;
	align-items: center;
}
.modal-title { font-size: var(--tce-fs-xl); font-weight: var(--tce-fw-medium); color: var(--tce-text); }
.modal-body { padding: 1.25rem 1.5rem; color: var(--tce-text); }
.modal-footer { border-top: 0; padding: 0.75rem 1.5rem 1.25rem; gap: 0.5rem; }
.modal-footer > * { margin: 0; }
.modal-backdrop.show { opacity: 0.45; }
.modal-header .close { color: var(--tce-text-muted); opacity: 1; text-shadow: none; font-weight: 400; }
.modal-header .close:hover { color: var(--tce-text); }

/* ================= Menus (generic dropdowns) ================= */
.dropdown-menu {
	border: 1px solid var(--tce-divider);
	border-radius: var(--tce-radius-md);
	box-shadow: var(--tce-elev-3);
	font-size: var(--tce-fs-md);
	padding: 0.35rem 0;
}
.dropdown-item { color: var(--tce-text); padding: 0.5rem 1rem; }
.dropdown-item:hover, .dropdown-item:focus { background-color: var(--tce-surface-hover); color: var(--tce-text); }
.dropdown-item.active, .dropdown-item:active { background-color: var(--tce-primary-container); color: var(--tce-on-primary-container); }

/* ================= Pagination ================= */
.page-link {
	color: var(--tce-primary);
	border-color: var(--tce-divider);
	font-weight: var(--tce-fw-medium);
}
.page-link:hover { background-color: var(--tce-surface-hover); color: var(--tce-primary); }
.page-item.active .page-link { background-color: var(--tce-primary); border-color: var(--tce-primary); color: #fff; }
.page-item:first-child .page-link { border-radius: var(--tce-radius-sm) 0 0 var(--tce-radius-sm); }
.page-item:last-child .page-link { border-radius: 0 var(--tce-radius-sm) var(--tce-radius-sm) 0; }

/* ================= Tooltips ================= */
.tooltip-inner { background-color: #2B3140; border-radius: 4px; font-size: var(--tce-fs-xs); padding: 0.35rem 0.6rem; }

/* ================= Select2 ================= */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple,
.select2-container--bootstrap-5 .select2-selection {
	border: 1px solid var(--tce-outline) !important;
	border-radius: var(--tce-radius-sm) !important;
	min-height: 2.5rem;
	font-family: var(--tce-font);
	font-size: var(--tce-fs-md);
	background-color: var(--tce-surface);
}
.select2-container--default .select2-selection--single { height: 2.5rem; }
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: calc(2.5rem - 2px); padding-left: 0.75rem; color: var(--tce-text); }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: calc(2.5rem - 2px); right: 6px; }
.select2-container--default.select2-container--focus .select2-selection,
.select2-container--default.select2-container--open .select2-selection,
.select2-container--bootstrap-5.select2-container--focus .select2-selection,
.select2-container--bootstrap-5.select2-container--open .select2-selection {
	border-color: var(--tce-primary) !important;
	box-shadow: 0 0 0 3px rgba(var(--tce-primary-rgb), 0.14) !important;
}
.select2-dropdown {
	border: 1px solid var(--tce-outline) !important;
	border-radius: var(--tce-radius-md) !important;
	box-shadow: var(--tce-elev-3);
	overflow: hidden;
	font-family: var(--tce-font);
	font-size: var(--tce-fs-md);
}
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable,
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--highlighted {
	background-color: var(--tce-primary-container) !important;
	color: var(--tce-on-primary-container) !important;
}
.select2-container--default .select2-results__option[aria-selected="true"],
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--selected {
	background-color: var(--tce-primary) !important;
	color: #fff !important;
}
.select2-search--dropdown .select2-search__field {
	border: 1px solid var(--tce-outline) !important;
	border-radius: var(--tce-radius-sm) !important;
	padding: 0.4rem 0.6rem !important;
}
.select2-container .select2-selection--multiple .select2-selection__choice,
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice {
	background-color: var(--tce-primary-container) !important;
	border: 0 !important;
	border-radius: var(--tce-radius-pill) !important;
	color: var(--tce-on-primary-container) !important;
	font-size: var(--tce-fs-sm);
	padding: 0.1rem 0.6rem !important;
}

/* ================= Flatpickr ================= */
.flatpickr-calendar {
	border-radius: var(--tce-radius-lg);
	box-shadow: var(--tce-elev-3) !important;
	font-family: var(--tce-font);
	border: 0;
}
.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange,
.flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover {
	background: var(--tce-primary) !important;
	border-color: var(--tce-primary) !important;
	color: #fff !important;
}
.flatpickr-day.inRange { background: var(--tce-primary-container) !important; border-color: var(--tce-primary-container) !important; box-shadow: -5px 0 0 var(--tce-primary-container), 5px 0 0 var(--tce-primary-container) !important; }
.flatpickr-day.today { border-color: var(--tce-primary); }
.flatpickr-day:hover { background: var(--tce-surface-hover); }

/* ================= daterangepicker ================= */
.daterangepicker {
	font-family: var(--tce-font) !important;
	border: 1px solid var(--tce-divider) !important;
	border-radius: var(--tce-radius-lg) !important;
	box-shadow: var(--tce-elev-3);
}
.daterangepicker td.active, .daterangepicker td.active:hover { background-color: var(--tce-primary) !important; color: #fff !important; }
.daterangepicker td.in-range { background-color: var(--tce-primary-container); color: var(--tce-on-primary-container); }
.daterangepicker td.start-date { border-radius: 6px 0 0 6px; }
.daterangepicker td.end-date { border-radius: 0 6px 6px 0; }
.daterangepicker td.start-date.end-date { border-radius: 6px; }
.daterangepicker .ranges li.active { background-color: var(--tce-primary) !important; color: #fff; }
.daterangepicker .ranges li:hover { background-color: var(--tce-surface-hover); }
.daterangepicker .drp-buttons .btn { padding: 0.3rem 0.8rem; font-size: var(--tce-fs-sm); }

/* ================= Alertify ================= */
.alertify-notifier .ajs-message {
	font-family: var(--tce-font);
	font-size: var(--tce-fs-md);
	border-radius: var(--tce-radius-md);
	box-shadow: var(--tce-elev-3);
	color: #fff;
	text-shadow: none;
	padding: 0.85rem 1rem;
}
.alertify-notifier .ajs-message.ajs-success { background: var(--tce-success); }
.alertify-notifier .ajs-message.ajs-error { background: var(--tce-error); }
.alertify-notifier .ajs-message.ajs-warning { background: var(--tce-warning); }
.alertify .ajs-dialog { border-radius: 16px; box-shadow: var(--tce-elev-4); font-family: var(--tce-font); }
.alertify .ajs-header { font-weight: var(--tce-fw-medium); font-size: var(--tce-fs-lg); border-radius: 16px 16px 0 0; }
.alertify .ajs-footer { border-radius: 0 0 16px 16px; }
.alertify .ajs-footer .ajs-buttons .ajs-button {
	border-radius: var(--tce-radius-sm);
	font-weight: var(--tce-fw-medium);
	text-transform: none;
	min-width: 88px;
}
.alertify .ajs-footer .ajs-buttons .ajs-button.ajs-ok { background-color: var(--tce-primary); color: #fff; }
.alertify .ajs-footer .ajs-buttons .ajs-button.ajs-cancel { background-color: var(--tce-surface); color: var(--tce-primary); border: 1px solid var(--tce-outline); }

/* ================= SweetAlert2 ================= */
.swal2-popup { border-radius: 16px !important; font-family: var(--tce-font) !important; }
.swal2-title { font-weight: var(--tce-fw-medium) !important; color: var(--tce-text) !important; }
.swal2-styled.swal2-confirm { background-color: var(--tce-primary) !important; border-radius: var(--tce-radius-sm) !important; }
.swal2-styled.swal2-cancel { background-color: var(--tce-surface) !important; color: var(--tce-primary) !important; border: 1px solid var(--tce-outline) !important; border-radius: var(--tce-radius-sm) !important; }
.swal2-styled.swal2-deny { background-color: var(--tce-error) !important; border-radius: var(--tce-radius-sm) !important; }
