/* ABCA · Sistema visual 1.0. Paleta existente, tipografía común.
 * Capa de presentación opt-in: solo body.abca-ui. No modifica estados JS,
 * visibilidad, permisos, cálculos, impresión de recibos ni plantillas PDF.
 * Los tamaños parten del rem del navegador; no se fuerza el tamaño de html.
 */
body.abca-ui {
  --abca-font: 'Manrope', 'Segoe UI', Arial, sans-serif;
  --abca-ui-primary: #0071e3;
  --abca-ui-primary-hover: #0a5fc2;
  --abca-ui-navy: #0F2D52;
  --abca-ui-blue: #1B4F8A;
  --abca-ui-gold: #F0A500;
  --abca-ui-ink: #1d2939;
  --abca-ui-muted: #637083;
  --abca-ui-bg: #F7F9FC;
  --abca-ui-surface: #fff;
  --abca-ui-border: #E5E9F0;
  --abca-ui-field-border: #8494a8;
  --abca-ui-radius: .75rem;
  --abca-ui-field-radius: .5rem;
  --abca-ui-shadow: 0 2px 10px rgba(16,42,82,.06);
  --abca-ui-caption: .8125rem;
  --abca-ui-small: .875rem;
  --abca-ui-control: .9375rem;
  --bs-body-font-family: var(--abca-font);
  --bs-body-font-size: 1rem;
  --bs-body-line-height: 1.5;
  --bs-body-color: var(--abca-ui-ink);
  --bs-secondary-color: var(--abca-ui-muted);
  --bs-border-color: var(--abca-ui-border);
  font-family: var(--abca-font);
  font-size: 1rem;
  line-height: 1.5;
  color: var(--abca-ui-ink);
  background: var(--abca-ui-bg);
}
body.abca-ui.abca-auth { background: var(--abca-surface, #f9f8f5); }
body.abca-ui :is(input, select, textarea, button) { font-family: var(--abca-font); }
body.abca-ui :is(h1, .h1) { font-size: 2rem; line-height: 1.25; font-weight: 700; letter-spacing: -.025em; }
body.abca-ui :is(h2, .h2) { font-size: 1.75rem; line-height: 1.3; font-weight: 700; letter-spacing: -.02em; }
body.abca-ui :is(h3, .h3) { font-size: 1.5rem; line-height: 1.3; font-weight: 700; }
body.abca-ui :is(h4, .h4) { font-size: 1.5rem; line-height: 1.3; font-weight: 700; letter-spacing: -.02em; }
body.abca-ui :is(h5, .h5) { font-size: 1.125rem; line-height: 1.4; font-weight: 700; }
body.abca-ui :is(h6, .h6) { font-size: 1rem; line-height: 1.4; font-weight: 700; }
body.abca-ui :is(small, .small, .form-text) { font-size: var(--abca-ui-small); }
body.abca-ui .form-text { line-height: 1.5; }
body.abca-ui :is(.card, .modal-content) { border: 1px solid var(--abca-ui-border); border-radius: var(--abca-ui-radius); box-shadow: var(--abca-ui-shadow); }
body.abca-ui :is(.card-header, .card-footer) { padding: 1rem 1.25rem; background: var(--abca-ui-surface); border-color: var(--abca-ui-border); }
body.abca-ui .card-body { padding: 1.25rem; }
body.abca-ui :is(.modal-header, .modal-body, .modal-footer) { padding: 1.25rem; }
body.abca-ui .modal-title { font-size: 1.125rem; }
body.abca-ui .form-label { margin-bottom: .375rem; font-size: var(--abca-ui-small); font-weight: 600; line-height: 1.45; }
body.abca-ui :is(.form-control, .form-select, .input-group-text) {
  min-height: 2.75rem;
  font-size: 1rem;
  line-height: 1.5;
  border-color: var(--abca-ui-field-border);
  border-radius: var(--abca-ui-field-radius);
}
body.abca-ui :is(.form-control-sm, .form-select-sm, .input-group-sm > .form-control, .input-group-sm > .form-select, .input-group-sm > .input-group-text) { min-height: 2.375rem; font-size: var(--abca-ui-control); }
body.abca-ui .input-group-text { color: var(--abca-ui-muted); }
body.abca-ui .input-group > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
body.abca-ui .input-group > :not(:first-child):not(.dropdown-menu) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
body.abca-ui textarea.form-control { min-height: 6rem; }
body.abca-ui .form-control::placeholder { color: var(--abca-ui-muted); opacity: 1; }
body.abca-ui :is(.form-control, .form-select):focus { border-color: var(--abca-ui-blue); box-shadow: 0 0 0 .1875rem rgba(27,79,138,.16); }
body.abca-ui .form-control:disabled,
body.abca-ui .form-select:disabled,
body.abca-ui .form-control[readonly] { background-color: #eef1f5; opacity: 1; }
/* Dejar que Bootstrap conserve borde e iconos de validación. */
body.abca-ui :is(.form-control, .form-select).is-invalid,
body.abca-ui .was-validated :is(.form-control, .form-select):invalid { border-color: var(--bs-form-invalid-border-color); }
body.abca-ui :is(.form-control, .form-select).is-valid,
body.abca-ui .was-validated :is(.form-control, .form-select):valid { border-color: var(--bs-form-valid-border-color); }
body.abca-ui :is(.invalid-feedback, .valid-feedback) { font-size: var(--abca-ui-small); }
body.abca-ui .btn { --bs-btn-font-size: var(--abca-ui-control); --bs-btn-font-weight: 600; --bs-btn-border-radius: var(--abca-ui-field-radius); min-height: 2.75rem; padding: .5rem 1rem; }
body.abca-ui :is(.btn-sm, .btn-group-sm > .btn) { --bs-btn-font-size: var(--abca-ui-small); min-height: 2.375rem; padding: .375rem .75rem; }
body.abca-ui .btn-primary {
  --bs-btn-bg: var(--abca-ui-primary); --bs-btn-border-color: var(--abca-ui-primary);
  --bs-btn-hover-bg: var(--abca-ui-primary-hover); --bs-btn-hover-border-color: var(--abca-ui-primary-hover);
  --bs-btn-active-bg: var(--abca-ui-primary-hover); --bs-btn-active-border-color: var(--abca-ui-primary-hover);
  --bs-btn-disabled-bg: var(--abca-ui-primary); --bs-btn-disabled-border-color: var(--abca-ui-primary);
}
body.abca-ui .btn-close { min-width: 1.5rem; min-height: 1.5rem; }
body.abca-ui :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 2px solid var(--abca-ui-blue); outline-offset: 3px; }
body.abca-ui :is(.navbar-dark, .brand-panel, .auth-brand) :is(a, button):focus-visible { outline-color: var(--abca-ui-gold); }
body.abca-ui :is(.alert, .toast) { font-size: var(--abca-ui-small); line-height: 1.5; border-radius: var(--abca-ui-field-radius); }
body.abca-ui .badge { font-size: .75rem; font-weight: 600; line-height: 1.35; padding: .3em .6em; white-space: normal; }
body.abca-ui .table { --bs-table-border-color: var(--abca-ui-border); font-size: var(--abca-ui-small); line-height: 1.5; vertical-align: middle; }
body.abca-ui .table > :not(caption) > * > * { padding: .75rem; }
body.abca-ui .table-sm > :not(caption) > * > * { padding: .5rem .625rem; }
body.abca-ui .table thead th { color: #475467; background-color: #f2f6fc; font-size: var(--abca-ui-caption); font-weight: 700; text-transform: none; letter-spacing: normal; vertical-align: middle; }
body.abca-ui .table :is(td, th).text-end { font-variant-numeric: tabular-nums; }
body.abca-ui :is(table.sim, table.sched) td { font-size: var(--abca-ui-small); }
body.abca-ui .table-responsive { overscroll-behavior-x: contain; }
body.abca-ui .dataTables_wrapper :is(.dataTables_info, .dataTables_length, .dataTables_filter, .pagination) { font-size: var(--abca-ui-small); }
body.abca-ui .page-link { min-width: 2.375rem; min-height: 2.375rem; text-align: center; }
body.abca-ui .nav-tabs { gap: .25rem; border-color: var(--abca-ui-border); }
body.abca-ui .nav-tabs .nav-link { padding: .75rem 1rem; font-size: var(--abca-ui-small); font-weight: 600; }
body.abca-ui .nav-tabs .nav-link.active { border-bottom: 3px solid var(--abca-ui-primary); }
body.abca-ui #stepperNav { gap: .5rem; }
body.abca-ui .step-badge { font-size: var(--abca-ui-caption); padding: .5rem .75rem; }
/* Navegación: mismo ancho y puntos de ruptura que el layout actual. */
body.abca-ui #sidebar { font-family: var(--abca-font); background: #fff; backdrop-filter: none; -webkit-backdrop-filter: none; border-right: 1px solid var(--abca-ui-border); box-shadow: none; }
body.abca-ui #sidebar .sidebar-link { min-height: 2.75rem; font-size: var(--abca-ui-small); border-radius: var(--abca-ui-field-radius); }
body.abca-ui #sidebar .sidebar-link:hover { background: #F7F9FC; transform: none; box-shadow: none; }
body.abca-ui #sidebar .sidebar-link.active { background: #e8f0fb; box-shadow: none; }
body.abca-ui #sidebar .sidebar-section { color: var(--abca-ui-muted); font-size: .75rem; letter-spacing: .04em; }
body.abca-ui #sidebar .sb-search input { min-height: 2.75rem; font-size: var(--abca-ui-small); border-color: var(--abca-ui-field-border); border-radius: var(--abca-ui-field-radius); background: #fff; }
body.abca-ui #sidebar .sb-search i { top: 1.55rem; }
body.abca-ui #sidebar .sb-badge { font-size: .75rem; }
body.abca-ui #navbar { min-height: 4rem; }
body.abca-ui #navbar .navbar-brand { font-size: 1rem; font-weight: 600; }
body.abca-ui .abca-user-role { font-size: .8125rem; }
body.abca-ui .abca-brand-version { font-size: .75rem; color: var(--abca-ui-muted); }
body.abca-ui .breadcrumb { font-size: var(--abca-ui-caption); }
body.abca-ui .navbar-abca { padding-block: .75rem; }
body.abca-ui .navbar-abca .navbar-brand { font-size: 1rem; white-space: normal; }
/* Excepciones visuales existentes, normalizadas sin intervenir el contenido. */
body.abca-ui .dash { font-family: var(--abca-font); }
body.abca-ui .dash canvas { max-width: 100%; }
body.abca-ui .dash :is(.panel, .kpi) { border-radius: var(--abca-ui-radius); border-color: var(--abca-ui-border); box-shadow: var(--abca-ui-shadow); }
body.abca-ui .dash .kpi:hover { transform: none; box-shadow: 0 4px 14px rgba(15,45,82,.10); }
body.abca-ui .dash .kpi-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 224px), 1fr)); }
body.abca-ui .dash :is(.subtitle, .updated, .kpi-sub, .sim-tile .lbl) { color: var(--abca-ui-muted); font-size: var(--abca-ui-caption); }
body.abca-ui .dash .kpi-label { font-size: var(--abca-ui-small); }
body.abca-ui .dash .kpi-val { font-size: 1.75rem; font-weight: 700; line-height: 1.25; overflow-wrap: anywhere; }
body.abca-ui .dash .panel-head { gap: .75rem; flex-wrap: wrap; }
body.abca-ui .dash .panel-head h6 { font-size: 1rem; }
body.abca-ui .kpi .lbl { font-size: var(--abca-ui-caption); text-transform: none; letter-spacing: normal; }
body.abca-ui .kpi .val { font-size: 1.25rem; font-weight: 700; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
body.abca-ui .sec-sub { font-size: var(--abca-ui-small); color: var(--abca-ui-muted); }
body.abca-ui .diag-item small { font-size: var(--abca-ui-caption); color: var(--abca-ui-muted); text-transform: none; }
body.abca-ui .diag-item p { font-size: var(--abca-ui-small); }
body.abca-ui .adv summary { font-size: var(--abca-ui-small); }
/* Accesos: conservar composición y colores ABCA; reducir salto tipográfico. */
body.abca-ui :is(.brand-title, .auth-brand-title) { font-size: clamp(2rem, 3vw, 3rem); }
body.abca-ui :is(.brand-subtitle, .auth-brand-subtitle) { font-size: 1.125rem; }
body.abca-ui :is(.login-card, .auth-card) { border-radius: 1rem; box-shadow: 0 10px 30px rgba(15,45,82,.10); }
body.abca-ui :is(.login-card, .auth-card) h1 { font-size: 1.75rem; line-height: 1.3; }
/* Contener el adorno del acceso: su posición negativa desbordaba la página. */
body.abca-ui .access-panel { overflow: hidden; }
body.abca-ui.abca-auth :is(.form-control, .input-group-text, .password-toggle, .btn-auth, .btn-login) { min-height: 3rem; }
@media (max-width: 767.98px) {
  body.abca-ui :is(h1, .h1) { font-size: 1.75rem; }
  body.abca-ui :is(h4, .h4) { font-size: 1.375rem; }
  body.abca-ui :is(.form-control-sm, .form-select-sm, .input-group-sm > .form-control, .input-group-sm > .form-select) { font-size: 1rem; min-height: 2.75rem; }
  body.abca-ui :is(.btn-sm, .btn-group-sm > .btn) { min-height: 2.75rem; }
  body.abca-ui .navbar-abca { gap: .5rem; }
  body.abca-ui .navbar-abca .navbar-brand { margin-right: 0; max-width: 100%; }
  body.abca-ui .content-area > .abca-content > .d-flex.justify-content-between { flex-wrap: wrap; gap: .75rem; }
  body.abca-ui .nav-tabs .nav-link { padding: .625rem .75rem; }
  body.abca-ui div.dataTables_wrapper div.dataTables_filter label { display: block; white-space: normal; text-align: left; }
  body.abca-ui div.dataTables_wrapper div.dataTables_filter input { display: block; width: 100%; margin: .375rem 0 0; }
}
@media (prefers-reduced-motion: reduce) {
  body.abca-ui :is(#sidebar, main.content-area, .sidebar-link, .kpi, .btn-auth, .btn-login) { transition: none; }
  body.abca-ui :is(.btn-auth, .btn-login):hover { transform: none; }
}
