/* Overrides globales y deliberados de Bootstrap. No agregar estilos de pantalla. */
.btn {
  --bs-btn-border-radius: var(--app-radius-control);
  border-radius: var(--bs-btn-border-radius);
}

.btn-primary {
  --bs-btn-color: var(--app-color-action-contrast);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
  --bs-btn-disabled-color: var(--app-color-action-contrast);
  --bs-btn-bg: var(--app-color-action);
  --bs-btn-border-color: var(--app-color-action);
  --bs-btn-hover-color: var(--app-color-action-contrast);
  --bs-btn-hover-bg: var(--app-color-action-hover);
  --bs-btn-hover-border-color: var(--app-color-action-hover);
  --bs-btn-active-color: var(--app-color-action-contrast);
  --bs-btn-active-bg: var(--app-color-action-active);
  --bs-btn-active-border-color: var(--app-color-action-active);
  --bs-btn-disabled-bg: var(--app-color-action);
  --bs-btn-disabled-border-color: var(--app-color-action);
  min-height: var(--app-control-height);
  background-image: none;
  box-shadow: none;
  font-weight: 600;
}

.btn-primary:hover {
  background-image: none;
  box-shadow: 0 2px 7px rgb(37 63 107 / 20%);
}

.btn-outline-primary {
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
  --bs-btn-active-color: var(--app-color-action-contrast);
  --bs-btn-disabled-color: var(--app-color-action);
  --bs-btn-disabled-border-color: var(--app-color-action);
  --bs-btn-color: var(--app-color-action);
  --bs-btn-border-color: var(--app-color-action);
  --bs-btn-hover-color: var(--app-color-action-contrast);
  --bs-btn-hover-bg: var(--app-color-action);
  --bs-btn-hover-border-color: var(--app-color-action);
  --bs-btn-active-bg: var(--app-color-action-hover);
  --bs-btn-active-border-color: var(--app-color-action-hover);
  font-weight: 600;
}

.app-shell .btn-view {
  --bs-btn-color: var(--app-color-view-contrast);
  --bs-btn-bg: var(--app-color-view);
  --bs-btn-border-color: var(--app-color-view);
  --bs-btn-hover-color: var(--app-color-view-contrast);
  --bs-btn-hover-bg: var(--app-color-view-hover);
  --bs-btn-hover-border-color: var(--app-color-view-hover);
  --bs-btn-focus-shadow-rgb: var(--app-color-view-rgb);
  --bs-btn-active-color: var(--app-color-view-contrast);
  --bs-btn-active-bg: var(--app-color-view-active);
  --bs-btn-active-border-color: var(--app-color-view-active);
  --bs-btn-disabled-color: var(--app-color-view-contrast);
  --bs-btn-disabled-bg: var(--app-color-view);
  --bs-btn-disabled-border-color: var(--app-color-view);
  font-weight: 600;
}

.btn-primary,
.app-shell .btn-secondary,
.app-shell .btn-light,
.btn-outline-primary,
.app-shell .btn-view {
  transition: background-color .2s, border-color .2s, color .2s, box-shadow .2s;
}

.app-shell .btn-secondary,
.app-shell .btn-light {
  background-color: var(--bs-body-bg);
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
  box-shadow: var(--app-shadow-control);
}

.app-shell .btn-secondary:hover,
.app-shell .btn-light:hover {
  background-color: var(--bs-tertiary-bg);
  border-color: var(--bs-secondary-color);
  color: var(--bs-body-color);
  box-shadow: var(--app-shadow-control-hover);
}

.app-shell .btn:not(.btn-sm):not(.btn-lg) { min-height: var(--app-control-height); }
.app-shell .btn-light { border-color: var(--bs-border-color); }

.card {
  --bs-card-border-radius: var(--app-radius-card);
  --bs-card-border-color: var(--bs-border-color);
  border-radius: var(--bs-card-border-radius);
  box-shadow: var(--app-shadow-card);
}

.modal {
  --bs-modal-border-color: var(--bs-border-color);
  --bs-modal-border-radius: var(--app-radius-overlay);
  --bs-modal-inner-border-radius: calc(var(--app-radius-overlay) - 1px);
  --bs-modal-header-border-color: var(--bs-border-color);
  --bs-modal-footer-border-color: var(--bs-border-color);
  --bs-modal-padding: 1.25rem;
}

.modal-content {
  overflow: hidden;
  border-color: var(--bs-modal-border-color);
  border-radius: var(--bs-modal-border-radius);
  box-shadow: var(--app-shadow-modal);
}

.modal-header,
.modal-footer { padding: 1.15rem 1.25rem; }
.modal-title { font-weight: 700; letter-spacing: -.015em; }
.modal-footer { gap: .5rem; background: var(--bs-tertiary-bg); }
.modal-footer > * { margin: 0; }
.modal-backdrop { --bs-backdrop-opacity: .52; }

.dropdown-menu,
.popover {
  border-color: var(--bs-border-color);
  border-radius: var(--app-radius-card);
  box-shadow: var(--app-shadow-overlay);
}


.form-control,
.form-select,
.input-group-text { border-color: var(--bs-border-color); }

/* Los ejemplos se distinguen de valores reales sin perder legibilidad. */
input::placeholder,
textarea::placeholder,
.form-control::placeholder {
  color: var(--app-placeholder-color);
  opacity: 1;
  font-style: italic;
  font-weight: 400;
}

.select2-container .select2-selection__placeholder {
  color: var(--app-placeholder-color);
  font-style: italic;
  font-weight: 400;
}


/* success: variantes sólidas y de contorno consumen la misma paleta. */
.btn-success, .btn-outline-success {
  --bs-btn-focus-shadow-rgb: var(--bs-success-rgb);
  --bs-btn-hover-color: var(--app-success-contrast);
  --bs-btn-hover-bg: var(--app-success-hover);
  --bs-btn-hover-border-color: var(--app-success-hover);
  --bs-btn-active-color: var(--app-success-contrast);
  --bs-btn-active-bg: var(--app-success-active);
  --bs-btn-active-border-color: var(--app-success-active);
  --bs-btn-disabled-border-color: var(--bs-success);
}
.btn-success {
  --bs-btn-color: var(--app-success-contrast);
  --bs-btn-bg: var(--bs-success);
  --bs-btn-border-color: var(--bs-success);
  --bs-btn-disabled-color: var(--app-success-contrast);
  --bs-btn-disabled-bg: var(--bs-success);
}
.btn-outline-success {
  --bs-btn-color: var(--bs-success-text-emphasis);
  --bs-btn-border-color: var(--bs-success);
  --bs-btn-disabled-color: var(--bs-success-text-emphasis);
}
.text-bg-success { color: var(--app-success-contrast) !important; }

/* danger: variantes sólidas y de contorno consumen la misma paleta. */
.btn-danger, .btn-outline-danger {
  --bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
  --bs-btn-hover-color: var(--app-danger-contrast);
  --bs-btn-hover-bg: var(--app-danger-hover);
  --bs-btn-hover-border-color: var(--app-danger-hover);
  --bs-btn-active-color: var(--app-danger-contrast);
  --bs-btn-active-bg: var(--app-danger-active);
  --bs-btn-active-border-color: var(--app-danger-active);
  --bs-btn-disabled-border-color: var(--bs-danger);
}
.btn-danger {
  --bs-btn-color: var(--app-danger-contrast);
  --bs-btn-bg: var(--bs-danger);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-disabled-color: var(--app-danger-contrast);
  --bs-btn-disabled-bg: var(--bs-danger);
}
.btn-outline-danger {
  --bs-btn-color: var(--bs-danger-text-emphasis);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-disabled-color: var(--bs-danger-text-emphasis);
}
.text-bg-danger { color: var(--app-danger-contrast) !important; }

/* warning: variantes sólidas y de contorno consumen la misma paleta. */
.btn-warning, .btn-outline-warning {
  --bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
  --bs-btn-hover-color: var(--app-warning-contrast);
  --bs-btn-hover-bg: var(--app-warning-hover);
  --bs-btn-hover-border-color: var(--app-warning-hover);
  --bs-btn-active-color: var(--app-warning-contrast);
  --bs-btn-active-bg: var(--app-warning-active);
  --bs-btn-active-border-color: var(--app-warning-active);
  --bs-btn-disabled-border-color: var(--bs-warning);
}
.btn-warning {
  --bs-btn-color: var(--app-warning-contrast);
  --bs-btn-bg: var(--bs-warning);
  --bs-btn-border-color: var(--bs-warning);
  --bs-btn-disabled-color: var(--app-warning-contrast);
  --bs-btn-disabled-bg: var(--bs-warning);
}
.btn-outline-warning {
  --bs-btn-color: var(--bs-warning-text-emphasis);
  --bs-btn-border-color: var(--bs-warning);
  --bs-btn-disabled-color: var(--bs-warning-text-emphasis);
}
.text-bg-warning { color: var(--app-warning-contrast) !important; }

/* info: variantes sólidas y de contorno consumen la misma paleta. */
.btn-info, .btn-outline-info {
  --bs-btn-focus-shadow-rgb: var(--bs-info-rgb);
  --bs-btn-hover-color: var(--app-info-contrast);
  --bs-btn-hover-bg: var(--app-info-hover);
  --bs-btn-hover-border-color: var(--app-info-hover);
  --bs-btn-active-color: var(--app-info-contrast);
  --bs-btn-active-bg: var(--app-info-active);
  --bs-btn-active-border-color: var(--app-info-active);
  --bs-btn-disabled-border-color: var(--bs-info);
}
.btn-info {
  --bs-btn-color: var(--app-info-contrast);
  --bs-btn-bg: var(--bs-info);
  --bs-btn-border-color: var(--bs-info);
  --bs-btn-disabled-color: var(--app-info-contrast);
  --bs-btn-disabled-bg: var(--bs-info);
}
.btn-outline-info {
  --bs-btn-color: var(--bs-info-text-emphasis);
  --bs-btn-border-color: var(--bs-info);
  --bs-btn-disabled-color: var(--bs-info-text-emphasis);
}
.text-bg-info { color: var(--app-info-contrast) !important; }

/* Opt-in wider shared panel for tabular read-only content. */

/* Los diálogos tabulares XL aprovechan también el ancho disponible en tablet. */
@media (min-width: 768px) and (max-width: 991.98px) {
  .modal-dialog.modal-xl { --bs-modal-width: calc(100vw - 2rem); }
}

/* Altura estable en consultas expansibles; el cuerpo mantiene su scroll interno. */
.modal-dialog-scrollable.modal-height-viewport > .modal-content { height: 100%; }
