/* # Nota de Transparencia: Código generado/refactorizado con asistencia de IA
   # Generativa (Claude Code) bajo la Política ODTI012 del CCS.
   # Requiere supervisión y validación humana permanente. */
/*
 * ccs-bootstrap.css — Piel CCS (ccs-dashboard-design) para Bootstrap 5.3 y los plugins
 * del panel Admin (DataTables 1.10 BS4, select2, SweetAlert2), más las clases heredadas
 * de Kaiadmin que aún usan las vistas de módulos (page-inner, btn-round, form-group-default,
 * form-button-action, badge-*).
 *
 * Permite que los ~28 módulos adopten el sistema sin reescribir sus vistas: tipografía Inter
 * densa, controles de 32px con radio 6px, cards con el token de sombra, tablas densas sin
 * zebra, modales de radio 12px, botón primario verde y foco accesible azul.
 * Depende de los tokens --ccs-* de ccs-admin.css (cargar después de ese archivo).
 */

/* ---------- Variables de Bootstrap mapeadas a tokens ---------- */
:root[data-bs-theme], :root {
	--bs-body-font-family: var(--ccs-font);
	--bs-body-font-size: 13px;
	--bs-body-line-height: 1.45;
	--bs-body-color: var(--ccs-ink-900);
	--bs-body-bg: var(--ccs-canvas);
	--bs-emphasis-color: var(--ccs-ink-900);
	--bs-secondary-color: var(--ccs-ink-600);
	--bs-tertiary-color: var(--ccs-ink-400);
	--bs-secondary-bg: var(--ccs-hover);
	--bs-tertiary-bg: var(--ccs-hover);
	--bs-border-color: var(--ccs-line);
	--bs-border-color-translucent: var(--ccs-line);
	--bs-border-radius: 6px;
	--bs-border-radius-sm: 4px;
	--bs-border-radius-lg: 10px;
	--bs-link-color: var(--ccs-blue);
	--bs-link-hover-color: var(--ccs-blue);
	--bs-link-color-rgb: 0, 83, 155;
	--bs-link-hover-color-rgb: 0, 83, 155;
	--bs-primary: var(--ccs-green);
	--bs-primary-rgb: 0, 169, 79;
	--bs-success: var(--ccs-success);
	--bs-success-rgb: 0, 169, 79;
	--bs-danger: var(--ccs-danger);
	--bs-danger-rgb: 192, 57, 43;
	--bs-warning: var(--ccs-warning);
	--bs-warning-rgb: 199, 120, 0;
	--bs-info: var(--ccs-info);
	--bs-info-rgb: 0, 83, 155;
	--bs-focus-ring-color: rgb(0 83 155 / .35);
	--bs-heading-color: var(--ccs-ink-900);
}
:root[data-theme="dark"][data-bs-theme], :root[data-theme="dark"] {
	--bs-link-color-rgb: 77, 155, 224;
	--bs-link-hover-color-rgb: 77, 155, 224;
	--bs-primary-rgb: 43, 191, 110;
	--bs-success-rgb: 43, 191, 110;
	--bs-danger-rgb: 224, 100, 86;
	--bs-warning-rgb: 224, 154, 58;
	--bs-info-rgb: 77, 155, 224;
	--bs-focus-ring-color: rgb(77 155 224 / .4);
}

body {
	font-family: var(--ccs-font);
	font-size: 13px;
	background: var(--ccs-canvas);
	color: var(--ccs-ink-900);
	-webkit-font-smoothing: antialiased;
}
a { color: var(--ccs-blue); }

/* Títulos dentro de los módulos: densos, no editoriales */
:where(#contenido) :is(h1, h2, h3) { font-size: 20px; font-weight: 600; color: var(--ccs-ink-900); }
:where(#contenido) :is(h4) { font-size: 16px; font-weight: 600; color: var(--ccs-ink-900); }
:where(#contenido) :is(h5, h6) { font-size: 14px; font-weight: 600; color: var(--ccs-ink-900); }
:where(#contenido) .op-7 { opacity: 1; color: var(--ccs-ink-600); font-weight: 400; }
.page-inner { padding: 0; }

/* Utilidades de color: siempre tokens */
.text-primary { color: var(--ccs-blue) !important; }
.text-success { color: var(--ccs-success) !important; }
.text-danger { color: var(--ccs-danger) !important; }
.text-warning { color: var(--ccs-warning) !important; }
.text-info { color: var(--ccs-info) !important; }
.text-muted, .text-secondary { color: var(--ccs-ink-600) !important; }
.text-dark, .text-body { color: var(--ccs-ink-900) !important; }
.bg-light, .bg-body-tertiary, .bg-body-secondary { background-color: var(--ccs-canvas) !important; }
.bg-white, .bg-body { background-color: var(--ccs-surface) !important; }
.border, .border-top, .border-bottom, .border-start, .border-end { border-color: var(--ccs-line) !important; }
.shadow, .shadow-sm, .shadow-lg { box-shadow: var(--ccs-shadow-card) !important; }
.rounded-3, .rounded-4, .rounded-5, .rounded-pill.card { border-radius: 10px !important; }
.fw-bold { font-weight: 600 !important; }

/* ---------- Card ---------- */
.card {
	--bs-card-bg: var(--ccs-surface);
	--bs-card-border-color: var(--ccs-line);
	--bs-card-border-radius: 10px;
	--bs-card-inner-border-radius: 9px;
	--bs-card-cap-bg: transparent;
	--bs-card-cap-padding-y: 12px;
	--bs-card-cap-padding-x: 16px;
	--bs-card-spacer-y: 16px;
	--bs-card-spacer-x: 16px;
	--bs-card-color: var(--ccs-ink-900);
	box-shadow: var(--ccs-shadow-card);
	margin-bottom: 16px;
}
.card-round { border-radius: 10px; }
.card-header { border-bottom: 1px solid var(--ccs-line); }
.card-title, .card .card-title { font-size: 14px; font-weight: 600; margin: 0; color: var(--ccs-ink-900); }
.card-category, .card-sub { font-size: 11px; font-weight: 500; color: var(--ccs-ink-600); }
.card-footer { background: transparent; border-top: 1px solid var(--ccs-line); }

/* ---------- Botones (32px, radio 6px, peso 600) ---------- */
.btn {
	--bs-btn-padding-y: 6px;
	--bs-btn-padding-x: 12px;
	--bs-btn-font-size: 12px;
	--bs-btn-font-weight: 600;
	--bs-btn-line-height: 1.2;
	--bs-btn-border-radius: 6px;
	--bs-btn-focus-box-shadow: 0 0 0 3px rgb(0 83 155 / .35);
	--bs-btn-disabled-opacity: .5;
	min-height: 32px;
	display: inline-flex; align-items: center; justify-content: center; gap: 6px;
	font-family: var(--ccs-font);
	transition: background-color var(--ccs-dur-1), border-color var(--ccs-dur-1), color var(--ccs-dur-1);
}
.btn-sm { --bs-btn-padding-y: 4px; --bs-btn-padding-x: 10px; --bs-btn-font-size: 12px; min-height: 28px; }
.btn-lg { --bs-btn-padding-y: 8px; --bs-btn-padding-x: 16px; --bs-btn-font-size: 13px; min-height: 36px; }
.btn-round, .btn-rounded, .btn.rounded-pill { border-radius: 6px !important; }
/* Primario: verde corporativo, texto blanco */
.btn-primary, .btn-success {
	--bs-btn-bg: var(--ccs-green); --bs-btn-border-color: var(--ccs-green); --bs-btn-color: #fff;
	--bs-btn-hover-bg: color-mix(in srgb, var(--ccs-green) 88%, #000); --bs-btn-hover-border-color: color-mix(in srgb, var(--ccs-green) 88%, #000); --bs-btn-hover-color: #fff;
	--bs-btn-active-bg: color-mix(in srgb, var(--ccs-green) 80%, #000); --bs-btn-active-border-color: color-mix(in srgb, var(--ccs-green) 80%, #000); --bs-btn-active-color: #fff;
	--bs-btn-disabled-bg: var(--ccs-green); --bs-btn-disabled-border-color: var(--ccs-green); --bs-btn-disabled-color: #fff;
}
/* Secundario: superficie + borde */
.btn-secondary, .btn-light, .btn-default, .btn-outline-secondary, .btn-outline-primary, .btn-outline-dark, .btn-border, .btn-white {
	--bs-btn-bg: var(--ccs-surface); --bs-btn-border-color: var(--ccs-line); --bs-btn-color: var(--ccs-ink-900);
	--bs-btn-hover-bg: var(--ccs-hover); --bs-btn-hover-border-color: var(--ccs-line); --bs-btn-hover-color: var(--ccs-ink-900);
	--bs-btn-active-bg: var(--ccs-hover); --bs-btn-active-border-color: var(--ccs-ink-400); --bs-btn-active-color: var(--ccs-ink-900);
	--bs-btn-disabled-bg: var(--ccs-surface); --bs-btn-disabled-border-color: var(--ccs-line); --bs-btn-disabled-color: var(--ccs-ink-600);
}
.btn-info, .btn-dark {
	--bs-btn-bg: var(--ccs-blue); --bs-btn-border-color: var(--ccs-blue); --bs-btn-color: #fff;
	--bs-btn-hover-bg: color-mix(in srgb, var(--ccs-blue) 88%, #000); --bs-btn-hover-border-color: color-mix(in srgb, var(--ccs-blue) 88%, #000); --bs-btn-hover-color: #fff;
	--bs-btn-active-bg: color-mix(in srgb, var(--ccs-blue) 80%, #000); --bs-btn-active-color: #fff;
	--bs-btn-disabled-bg: var(--ccs-blue); --bs-btn-disabled-color: #fff;
}
.btn-danger {
	--bs-btn-bg: var(--ccs-danger); --bs-btn-border-color: var(--ccs-danger); --bs-btn-color: #fff;
	--bs-btn-hover-bg: color-mix(in srgb, var(--ccs-danger) 88%, #000); --bs-btn-hover-border-color: color-mix(in srgb, var(--ccs-danger) 88%, #000); --bs-btn-hover-color: #fff;
	--bs-btn-active-bg: color-mix(in srgb, var(--ccs-danger) 80%, #000); --bs-btn-active-color: #fff;
	--bs-btn-disabled-bg: var(--ccs-danger); --bs-btn-disabled-color: #fff;
}
.btn-warning {
	--bs-btn-bg: var(--ccs-warning); --bs-btn-border-color: var(--ccs-warning); --bs-btn-color: #fff;
	--bs-btn-hover-bg: color-mix(in srgb, var(--ccs-warning) 88%, #000); --bs-btn-hover-border-color: color-mix(in srgb, var(--ccs-warning) 88%, #000); --bs-btn-hover-color: #fff;
	--bs-btn-active-bg: color-mix(in srgb, var(--ccs-warning) 80%, #000); --bs-btn-active-color: #fff;
}
.btn-outline-danger {
	--bs-btn-color: var(--ccs-danger); --bs-btn-border-color: var(--ccs-line); --bs-btn-bg: var(--ccs-surface);
	--bs-btn-hover-bg: color-mix(in srgb, var(--ccs-danger) 10%, var(--ccs-surface)); --bs-btn-hover-color: var(--ccs-danger); --bs-btn-hover-border-color: var(--ccs-danger);
}
.btn-outline-success, .btn-outline-info {
	--bs-btn-color: var(--ccs-blue); --bs-btn-border-color: var(--ccs-line); --bs-btn-bg: var(--ccs-surface);
	--bs-btn-hover-bg: var(--ccs-hover); --bs-btn-hover-color: var(--ccs-blue); --bs-btn-hover-border-color: var(--ccs-blue);
}
/* Terciario: texto azul sin fondo */
.btn-link {
	--bs-btn-color: var(--ccs-blue); --bs-btn-hover-color: var(--ccs-blue); --bs-btn-active-color: var(--ccs-blue);
	--bs-btn-disabled-color: var(--ccs-ink-400);
	text-decoration: none;
}
.btn-link:hover { background: var(--ccs-hover); text-decoration: none; }
.btn-link.text-danger:hover { background: color-mix(in srgb, var(--ccs-danger) 10%, transparent); }
/* Acciones de fila tipo Kaiadmin: "btn btn-link btn-<variante>" = ícono sin fondo.
   Por el sistema, ícono en ink-600 (currentColor); solo la acción destructiva conserva danger. */
.btn.btn-link[class*="btn-primary"], .btn.btn-link[class*="btn-success"], .btn.btn-link[class*="btn-info"],
.btn.btn-link[class*="btn-warning"], .btn.btn-link[class*="btn-secondary"], .btn.btn-link[class*="btn-danger"] {
	--bs-btn-bg: transparent; --bs-btn-border-color: transparent;
	--bs-btn-color: var(--ccs-ink-600);
	--bs-btn-hover-bg: var(--ccs-hover); --bs-btn-hover-border-color: transparent; --bs-btn-hover-color: var(--ccs-ink-900);
	--bs-btn-active-bg: var(--ccs-hover); --bs-btn-active-border-color: transparent; --bs-btn-active-color: var(--ccs-ink-900);
	--bs-btn-disabled-bg: transparent; --bs-btn-disabled-border-color: transparent;
}
.btn.btn-link[class*="btn-danger"] {
	--bs-btn-color: var(--ccs-danger); --bs-btn-hover-color: var(--ccs-danger); --bs-btn-active-color: var(--ccs-danger);
	--bs-btn-hover-bg: color-mix(in srgb, var(--ccs-danger) 10%, transparent);
}
.btn-close:focus { box-shadow: 0 0 0 3px rgb(0 83 155 / .35); }

/* Acciones de fila heredadas de Kaiadmin */
.form-button-action { display: inline-flex; align-items: center; gap: 2px; }
.form-button-action .btn { min-height: 28px; --bs-btn-padding-x: 8px; --bs-btn-padding-y: 4px; }

/* ---------- Formularios (controles 32px, label visible, foco azul) ---------- */
.form-label, .form-group > label, .form-group-default > label, .col-form-label {
	font-size: 11px; font-weight: 500; color: var(--ccs-ink-600); margin-bottom: 4px;
}
.form-control, .form-select {
	min-height: 32px; padding: 6px 10px; font-size: 13px; line-height: 1.3;
	color: var(--ccs-ink-900); background-color: var(--ccs-surface);
	border: 1px solid var(--ccs-line); border-radius: 6px;
	transition: border-color var(--ccs-dur-1), box-shadow var(--ccs-dur-1);
}
.form-select { padding-right: 32px; background-position: right 10px center; background-size: 12px 10px; }
.form-control-sm, .form-select-sm { min-height: 28px; padding-top: 4px; padding-bottom: 4px; font-size: 12px; }
textarea.form-control { min-height: 72px; padding: 8px 10px; resize: vertical; }
.form-control::placeholder { color: var(--ccs-ink-400); }
.form-control:focus, .form-select:focus {
	color: var(--ccs-ink-900); background-color: var(--ccs-surface);
	border-color: var(--ccs-blue); box-shadow: 0 0 0 3px rgb(0 83 155 / .35); outline: none;
}
.form-control:disabled, .form-select:disabled, .form-control[readonly] { background-color: var(--ccs-hover); color: var(--ccs-ink-600); }
.form-control.is-invalid, .form-select.is-invalid, .was-validated .form-control:invalid { border-color: var(--ccs-danger); }
.invalid-feedback, .text-danger.small { font-size: 11px; }
.form-text { font-size: 11px; color: var(--ccs-ink-600); }
.input-group-text { font-size: 13px; background: var(--ccs-canvas); border-color: var(--ccs-line); color: var(--ccs-ink-600); }
.form-check-input { border-color: var(--ccs-ink-400); background-color: var(--ccs-surface); }
.form-check-input:checked { background-color: var(--ccs-green); border-color: var(--ccs-green); }
.form-check-input:focus { border-color: var(--ccs-blue); box-shadow: 0 0 0 3px rgb(0 83 155 / .35); }
.form-check-label { font-size: 13px; }
.form-group { margin-bottom: 12px; padding: 0; }
.form-group-default {
	position: relative; padding: 6px 10px; margin-bottom: 12px;
	background: var(--ccs-surface); border: 1px solid var(--ccs-line); border-radius: 6px;
	transition: border-color var(--ccs-dur-1), box-shadow var(--ccs-dur-1);
}
.form-group-default:focus-within { border-color: var(--ccs-blue); box-shadow: 0 0 0 3px rgb(0 83 155 / .35); }
.form-group-default .form-control, .form-group-default .form-select { border: 0; padding: 2px 0; min-height: 24px; box-shadow: none !important; background: transparent; }
.form-group-default > label { display: block; margin-bottom: 0; }

/* ---------- Tablas densas (sin zebra, hover, encabezado canvas) ---------- */
.table {
	--bs-table-bg: transparent;
	--bs-table-color: var(--ccs-ink-900);
	--bs-table-border-color: var(--ccs-line);
	--bs-table-hover-bg: var(--ccs-hover);
	--bs-table-hover-color: var(--ccs-ink-900);
	--bs-table-striped-bg: transparent;
	--bs-table-striped-color: var(--ccs-ink-900);
	--bs-table-active-bg: var(--ccs-hover);
	font-size: 13px; margin-bottom: 0;
}
.table > :not(caption) > * > * { padding: 8px 12px; vertical-align: middle; border-bottom-color: var(--ccs-line); }
.table > thead > tr > th, .table > thead > tr > td, .table thead th {
	background: var(--ccs-canvas) !important; color: var(--ccs-ink-600) !important;
	font-size: 11px; font-weight: 500; white-space: nowrap; border-bottom: 1px solid var(--ccs-line);
}
.table-responsive > .table > thead th { position: sticky; top: 0; z-index: 1; }
.table-hover > tbody > tr { transition: background-color var(--ccs-dur-1); }
.table-bordered > :not(caption) > * > * { border-color: var(--ccs-line); }
.table-light, .table-dark, .thead-light th, .thead-dark th { --bs-table-bg: var(--ccs-canvas); --bs-table-color: var(--ccs-ink-600); }
.table td, .table th { font-variant-numeric: tabular-nums; }

/* ---------- Badges semánticos (tinte + texto, no relleno sólido) ---------- */
.badge { font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 999px; line-height: 1.3; }
.badge.bg-success, .badge-success, .text-bg-success { background: color-mix(in srgb, var(--ccs-success) 14%, transparent) !important; color: var(--ccs-success) !important; }
.badge.bg-danger, .badge-danger, .text-bg-danger { background: color-mix(in srgb, var(--ccs-danger) 13%, transparent) !important; color: var(--ccs-danger) !important; }
.badge.bg-warning, .badge-warning, .text-bg-warning { background: color-mix(in srgb, var(--ccs-warning) 15%, transparent) !important; color: var(--ccs-warning) !important; }
.badge.bg-info, .badge-info, .badge.bg-primary, .badge-primary, .text-bg-info, .text-bg-primary { background: color-mix(in srgb, var(--ccs-blue) 13%, transparent) !important; color: var(--ccs-blue) !important; }
.badge.bg-secondary, .badge-secondary, .badge.bg-light, .badge.bg-dark, .badge-count, .text-bg-secondary, .text-bg-light { background: var(--ccs-hover) !important; color: var(--ccs-ink-600) !important; }

/* ---------- Modales (radio 12px, overlay token, entrada 200ms) ---------- */
.modal {
	--bs-modal-bg: var(--ccs-surface);
	--bs-modal-color: var(--ccs-ink-900);
	--bs-modal-border-color: var(--ccs-line);
	--bs-modal-border-radius: 12px;
	--bs-modal-inner-border-radius: 11px;
	--bs-modal-box-shadow: 0 8px 30px rgb(0 0 0 / .22);
	--bs-modal-header-padding: 12px 16px;
	--bs-modal-header-border-color: var(--ccs-line);
	--bs-modal-padding: 16px;
	--bs-modal-footer-border-color: var(--ccs-line);
	--bs-modal-footer-gap: 8px;
	font-family: var(--ccs-font);
}
.modal-content { box-shadow: var(--bs-modal-box-shadow); }
.modal-title { font-size: 14px; font-weight: 600; color: var(--ccs-ink-900); }
.modal-footer { padding: 10px 16px; }
.modal-backdrop { --bs-backdrop-bg: #122A3F; --bs-backdrop-opacity: .5; }
:root[data-theme="dark"] .modal-backdrop { --bs-backdrop-bg: #000; --bs-backdrop-opacity: .6; }
.modal.fade .modal-dialog { transform: translateY(8px) scale(.98); transition: transform var(--ccs-dur-2) var(--ccs-ease); }
.modal.show .modal-dialog { transform: none; }
.modal-backdrop.fade, .modal.fade { transition-duration: 200ms; }

/* ---------- Navegación interna: tabs con subrayado verde ---------- */
.nav-tabs { --bs-nav-tabs-border-color: var(--ccs-line); border-bottom: 1px solid var(--ccs-line); gap: 4px; }
.nav-tabs .nav-link {
	border: 0; border-bottom: 2px solid transparent; border-radius: 0; margin-bottom: -1px;
	padding: 8px 12px; font-size: 13px; font-weight: 500; color: var(--ccs-ink-600); background: none;
}
.nav-tabs .nav-link:hover { color: var(--ccs-ink-900); border-bottom-color: var(--ccs-line); }
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
	color: var(--ccs-ink-900); font-weight: 600; background: none; border-bottom-color: var(--ccs-green);
}
.nav-pills { --bs-nav-pills-border-radius: 6px; --bs-nav-pills-link-active-bg: var(--ccs-green); }
.nav-pills .nav-link { font-size: 13px; font-weight: 500; color: var(--ccs-ink-600); }

/* ---------- Paginación (DataTables BS4 usa .pagination) ---------- */
.pagination { --bs-pagination-font-size: 12px; gap: 4px; margin: 0; }
.page-link {
	min-width: 28px; height: 28px; padding: 0 8px; display: inline-flex; align-items: center; justify-content: center;
	border: 1px solid var(--ccs-line) !important; border-radius: 6px !important;
	color: var(--ccs-ink-600); background: var(--ccs-surface); font-variant-numeric: tabular-nums;
}
.page-link:hover { background: var(--ccs-hover); color: var(--ccs-ink-900); }
.page-link:focus { box-shadow: 0 0 0 3px rgb(0 83 155 / .35); }
.page-item.active .page-link { background: var(--ccs-green); border-color: var(--ccs-green) !important; color: #fff; font-weight: 600; }
.page-item.disabled .page-link { opacity: .5; background: var(--ccs-surface); }

/* ---------- DataTables ---------- */
.dataTables_wrapper { font-size: 12px; color: var(--ccs-ink-600); }
.dataTables_wrapper .row { --bs-gutter-y: 8px; }
.dataTables_wrapper .dataTables_length label, .dataTables_wrapper .dataTables_filter label { font-size: 12px; font-weight: 500; color: var(--ccs-ink-600); }
.dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_filter input {
	min-height: 32px; border: 1px solid var(--ccs-line); border-radius: 6px; background-color: var(--ccs-surface);
	color: var(--ccs-ink-900); font-size: 13px; padding: 4px 8px; margin: 0 6px;
}
.dataTables_wrapper .dataTables_filter input:focus { border-color: var(--ccs-blue); box-shadow: 0 0 0 3px rgb(0 83 155 / .35); outline: none; }
.dataTables_wrapper .dataTables_info { font-size: 11px; color: var(--ccs-ink-600); font-variant-numeric: tabular-nums; padding-top: 8px; }
.dataTables_wrapper .dataTables_paginate { padding-top: 6px; }
table.dataTable { border-collapse: collapse !important; margin-top: 8px !important; margin-bottom: 8px !important; }
table.dataTable td.dataTables_empty { color: var(--ccs-ink-600); padding: 24px 12px; text-align: center; }
.dataTables_processing { background: var(--ccs-surface) !important; border: 1px solid var(--ccs-line); border-radius: 6px; color: var(--ccs-ink-600); }

/* ---------- select2 ---------- */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
	min-height: 32px; border: 1px solid var(--ccs-line); border-radius: 6px; background: var(--ccs-surface);
}
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 30px; color: var(--ccs-ink-900); font-size: 13px; padding-left: 10px; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 30px; }
.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default.select2-container--open .select2-selection--single { border-color: var(--ccs-blue); box-shadow: 0 0 0 3px rgb(0 83 155 / .35); }
.select2-container--default .select2-selection--multiple .select2-selection__choice {
	background: var(--ccs-hover); border: 1px solid var(--ccs-line); border-radius: 4px; color: var(--ccs-ink-900); font-size: 12px;
}
.select2-dropdown { background: var(--ccs-surface); border-color: var(--ccs-line); border-radius: 6px; font-size: 13px; color: var(--ccs-ink-900); }
.select2-container--default .select2-search--dropdown .select2-search__field { border: 1px solid var(--ccs-line); border-radius: 6px; background: var(--ccs-surface); color: var(--ccs-ink-900); }
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable { background: var(--ccs-hover); color: var(--ccs-ink-900); }
.select2-container--default .select2-results__option[aria-selected=true],
.select2-container--default .select2-results__option--selected { background: color-mix(in srgb, var(--ccs-green) 14%, transparent); color: var(--ccs-ink-900); }

/* ---------- SweetAlert2 (confirmaciones como modal del sistema) ---------- */
/* Solo los modales llevan overlay: el toast (body.swal2-toast-shown) también recibe
   .swal2-backdrop-show y pintaba un bloque oscuro junto a él. */
body:not(.swal2-toast-shown) .swal2-container.swal2-backdrop-show { background: var(--ccs-overlay) !important; }
.swal2-toast-shown .swal2-container { background: transparent !important; }
.swal2-popup {
	font-family: var(--ccs-font) !important; background: var(--ccs-surface) !important; color: var(--ccs-ink-900) !important;
	border: 1px solid var(--ccs-line); border-radius: 12px !important; padding: 20px !important; width: min(440px, 92vw) !important;
}
.swal2-title { font-size: 16px !important; font-weight: 600 !important; color: var(--ccs-ink-900) !important; padding: 8px 0 0 !important; }
.swal2-html-container { font-size: 13px !important; color: var(--ccs-ink-600) !important; }
.swal2-actions { gap: 8px; }
.swal2-styled { min-height: 32px; padding: 6px 14px !important; margin: 0 !important; font-size: 12px !important; font-weight: 600 !important; border-radius: 6px !important; }
.swal2-styled:focus { box-shadow: 0 0 0 3px rgb(0 83 155 / .35) !important; }
.swal2-styled.swal2-confirm { background: var(--ccs-green) !important; color: #fff !important; }
.swal2-styled.swal2-cancel { background: var(--ccs-surface) !important; color: var(--ccs-ink-900) !important; border: 1px solid var(--ccs-line) !important; }
.swal2-styled.swal2-deny { background: var(--ccs-danger) !important; color: #fff !important; }
.swal2-input, .swal2-textarea, .swal2-select { font-size: 13px !important; border: 1px solid var(--ccs-line) !important; border-radius: 6px !important; background: var(--ccs-surface) !important; color: var(--ccs-ink-900) !important; box-shadow: none !important; }
.swal2-toast { box-shadow: var(--ccs-shadow-card) !important; }

/* ---------- Alertas como banner (franja izquierda 3px semántica) ---------- */
.alert {
	--bs-alert-bg: var(--ccs-surface); --bs-alert-color: var(--ccs-ink-900); --bs-alert-border-color: var(--ccs-line);
	--bs-alert-border-radius: 6px; --bs-alert-padding-y: 10px; --bs-alert-padding-x: 14px;
	border-left: 3px solid var(--ccs-info); font-size: 13px;
}
.alert-success { border-left-color: var(--ccs-success); }
.alert-warning { border-left-color: var(--ccs-warning); }
.alert-danger { border-left-color: var(--ccs-danger); }
.alert .alert-link { color: var(--ccs-blue); }

/* ---------- Dropdown, list-group, progress ---------- */
.dropdown-menu {
	--bs-dropdown-bg: var(--ccs-surface); --bs-dropdown-border-color: var(--ccs-line); --bs-dropdown-border-radius: 8px;
	--bs-dropdown-font-size: 13px; --bs-dropdown-color: var(--ccs-ink-900);
	--bs-dropdown-link-color: var(--ccs-ink-900); --bs-dropdown-link-hover-bg: var(--ccs-hover); --bs-dropdown-link-hover-color: var(--ccs-ink-900);
	--bs-dropdown-link-active-bg: var(--ccs-green); --bs-dropdown-box-shadow: var(--ccs-shadow-card);
	box-shadow: var(--ccs-shadow-card);
}
.list-group { --bs-list-group-bg: var(--ccs-surface); --bs-list-group-border-color: var(--ccs-line); --bs-list-group-color: var(--ccs-ink-900); --bs-list-group-action-hover-bg: var(--ccs-hover); --bs-list-group-active-bg: var(--ccs-green); --bs-list-group-active-border-color: var(--ccs-green); font-size: 13px; }
.progress { --bs-progress-bg: var(--ccs-hover); --bs-progress-bar-bg: var(--ccs-blue); --bs-progress-height: 8px; --bs-progress-border-radius: 4px; }
.accordion { --bs-accordion-bg: var(--ccs-surface); --bs-accordion-border-color: var(--ccs-line); --bs-accordion-active-bg: var(--ccs-hover); --bs-accordion-active-color: var(--ccs-ink-900); --bs-accordion-btn-focus-box-shadow: 0 0 0 3px rgb(0 83 155 / .35); }
.tooltip { --bs-tooltip-bg: var(--ccs-ink-900); --bs-tooltip-color: var(--ccs-surface); --bs-tooltip-font-size: 12px; --bs-tooltip-border-radius: 4px; }

@media (prefers-reduced-motion: reduce) {
	.btn, .form-control, .form-select, .form-group-default, .table-hover > tbody > tr { transition: none !important; }
	.modal.fade .modal-dialog { transition: none !important; transform: none !important; }
}

/* Un solo primario por vista: el botón "actualizar" (.btnactualizar, ~20 módulos) pasa a secundario */
.btn.btnactualizar {
	--bs-btn-bg: var(--ccs-surface); --bs-btn-border-color: var(--ccs-line); --bs-btn-color: var(--ccs-ink-600);
	--bs-btn-hover-bg: var(--ccs-hover); --bs-btn-hover-border-color: var(--ccs-line); --bs-btn-hover-color: var(--ccs-ink-900);
	--bs-btn-active-bg: var(--ccs-hover); --bs-btn-active-border-color: var(--ccs-ink-400); --bs-btn-active-color: var(--ccs-ink-900);
	width: 32px; padding-left: 0; padding-right: 0;
}
/* Separación entre botones contiguos en encabezados y pies */
.card-header .btn + .btn, .card-header .btn + .dropdown, .modal-footer .btn + .btn { margin-left: 8px; }
