/*
 * Tema visual global de SGO Plus.
 *
 * Este archivo centraliza la identidad visual compartida por todas las vistas
 * y componentes. Los estilos de estructura y comportamiento permanecen en
 * app.css; los archivos de cada módulo deben contener únicamente ajustes
 * propios de ese módulo.
 */

:root {
    /* Tipografía */
    --sgo-tipografia: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
    --sgo-tamano-texto: 0.8125rem;
    --sgo-tamano-control: 0.8125rem;

    /* Identidad */
    --sgo-color-primario: #52657a;
    --sgo-color-primario-oscuro: #3e4e5d;

    /* Fondos */
    --sgo-color-sidebar: #17212b;
    --sgo-color-superficie: #f7f9fb;
    --sgo-color-tarjeta: #ffffff;

    /* Texto */
    --sgo-color-texto: #253247;
    --sgo-color-texto-secundario: #677687;
    --sgo-color-sidebar-secundario: #a7b2bd;

    /* Bordes y estados */
    --sgo-color-borde: #dce3ea;
    --sgo-color-exito: #2f7d62;
    --sgo-color-peligro: #b84a4a;
    --sgo-color-advertencia: #b7791f;

    /* Formas: los contenedores y las tarjetas usan esquinas rectas */
    --sgo-radio-pequeno: 0;
    --sgo-radio-medio: 0;
    --sgo-radio-grande: 0;

    /* Profundidad */
    --sgo-sombra-suave: 0 0.25rem 0.75rem rgba(15, 23, 42, 0.06);
    --sgo-sombra-elevada: 0 0.75rem 1.5rem rgba(15, 23, 42, 0.08);

    /* Movimiento */
    --sgo-transicion-rapida: 150ms ease;
    --sgo-transicion-normal: 200ms ease;

    /* Dimensiones globales */
    --sgo-ancho-sidebar: 21.25rem;
    --sgo-tamano-modulo: 0.6rem;
    --sgo-tamano-titulo-pagina: 0.875rem;

    /* Compatibilidad con los estilos estructurales existentes */
    --app-primary: var(--sgo-color-primario);
    --app-primary-dark: var(--sgo-color-primario-oscuro);
    --app-sidebar: var(--sgo-color-sidebar);
    --app-sidebar-muted: var(--sgo-color-sidebar-secundario);
    --app-surface: var(--sgo-color-superficie);
    --app-text: var(--sgo-color-texto);
    --app-sidebar-width: var(--sgo-ancho-sidebar);

    /* Integración con Bootstrap */
    --bs-font-sans-serif: var(--sgo-tipografia);
    --bs-body-font-family: var(--sgo-tipografia);
}

body,
button,
input,
select,
textarea {
    font-family: var(--sgo-tipografia);
}

body {
    font-size: var(--sgo-tamano-texto);
}

.btn,
.form-control,
.form-select,
.input-group-text,
.dropdown-menu,
.table,
.pagination,
.select2-container,
.dt-container,
.swal2-popup {
    font-size: var(--sgo-tamano-control);
}

.swal2-container {
    z-index: 20000 !important;
}

h1,
.h1 {
    font-size: 1.5rem;
}

h2,
.h2 {
    font-size: 1.25rem;
}

h3,
.h3 {
    font-size: 1.125rem;
}

h4,
.h4 {
    font-size: 1rem;
}

h5,
.h5,
.fs-5 {
    font-size: 0.9375rem !important;
}

h6,
.h6 {
    font-size: 0.8125rem;
}

.card {
    --bs-card-border-radius: var(--sgo-radio-medio);
    --bs-card-inner-border-radius: var(--sgo-radio-medio);
    border-radius: var(--sgo-radio-medio) !important;
}

.card > .card-header:first-child,
.card > .card-footer:last-child {
    border-radius: var(--sgo-radio-medio) !important;
}

.card > .card-footer {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
}

.app-sidebar {
    /* El color lo puede cambiar cada usuario en Mi perfil (--usuario-sidebar). */
    background-color: var(--usuario-sidebar) !important;
}

.app-module-name {
    font-size: var(--sgo-tamano-modulo);
}

.app-page-title {
    font-size: var(--sgo-tamano-titulo-pagina);
}

.modal .modal-content {
    max-width: 100%;
    border-radius: var(--sgo-radio-grande) !important;
}

/* Los formularios intermedios no deben romper el desplazamiento de Bootstrap. */
.modal-dialog-scrollable .modal-content > form {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
}

.modal-dialog-scrollable .modal-content > form > .modal-header,
.modal-dialog-scrollable .modal-content > form > .modal-footer {
    flex-shrink: 0;
}

.modal-dialog-scrollable .modal-content > form > .modal-body {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.modal .modal-body,
.modal .modal-body .row > * {
    min-width: 0;
}

.modal .table-responsive,
.modal .select2-container {
    max-width: 100%;
}

.modal .table-responsive {
    -webkit-overflow-scrolling: touch;
}

/*
 * Modal de Sedes: el único que pide más ancho que el resto. El formulario encadena departamento →
 * área y lleva la ubicación completa (provincia, cantón y parroquia), así que con el ancho de
 * modal-xl los desplegables quedaban apretados y el texto, cortado.
 *
 * La clase la pone solo la definición del catálogo de Sedes (SedeController, modal_clase): los
 * demás modales de catálogos siguen con modal-xl. Se combina con .modal-xl para ganarle a la regla
 * de proveedores.css (.modal-dialog.modal-xl), que se carga después de este archivo.
 */
@media (min-width: 992px) {
    .modal-dialog.modal-xl.modal-sede {
        max-width: min(1320px, 94vw);
    }
}

/* Más aire dentro del formulario de la sede: separa los campos y hace legible cada etiqueta. */
.modal-sede .modal-body {
    padding: 1.25rem 1.5rem;
}

.modal-sede .modal-body > .row {
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 1rem;
}

.modal-sede .form-label {
    margin-bottom: 0.35rem;
}

@media (max-width: 991.98px) {
    .modal-dialog:not([class*="modal-fullscreen"]) {
        width: calc(100% - 1rem);
        max-width: none;
        margin: 0.5rem;
    }

    .modal-dialog-scrollable:not([class*="modal-fullscreen"]) {
        height: calc(100dvh - 1rem);
    }

    .modal-dialog-scrollable:not([class*="modal-fullscreen"]) .modal-content {
        max-height: calc(100dvh - 1rem);
    }
}

@media (max-width: 575.98px) {
    .modal-dialog:not([class*="modal-fullscreen"]) {
        width: 100%;
        min-height: 100dvh;
        margin: 0;
    }

    .modal-dialog-centered:not([class*="modal-fullscreen"]) {
        align-items: stretch;
    }

    .modal-dialog:not([class*="modal-fullscreen"]) .modal-content {
        min-height: 100dvh;
        border: 0;
        border-radius: 0;
    }

    .modal .modal-header,
    .modal .modal-body,
    .modal .modal-footer {
        padding: 0.85rem;
    }

    .modal .modal-footer {
        display: grid;
        grid-template-columns: 1fr;
        gap: 0.5rem;
    }

    .modal .modal-footer > * {
        width: 100%;
        margin: 0;
    }
}

/*
 * Apariencia elegida por el usuario (Mi perfil): color de la barra lateral y color de énfasis.
 * Las variables se definen en el <body> con la elección de cada usuario; aquí se aplican.
 */
:root {
    --usuario-sidebar: var(--sgo-color-sidebar);
    --usuario-enfasis: var(--sgo-color-primario);
    --usuario-enfasis-oscuro: var(--sgo-color-primario-oscuro);
}

/* El ítem seleccionado de la barra lateral usa el color de énfasis. */
.sidebar-link.active {
    background: var(--usuario-enfasis);
}

.btn-primary {
    --bs-btn-bg: var(--usuario-enfasis);
    --bs-btn-border-color: var(--usuario-enfasis);
    --bs-btn-hover-bg: var(--usuario-enfasis-oscuro);
    --bs-btn-hover-border-color: var(--usuario-enfasis-oscuro);
    --bs-btn-active-bg: var(--usuario-enfasis-oscuro);
    --bs-btn-active-border-color: var(--usuario-enfasis-oscuro);
    --bs-btn-disabled-bg: var(--usuario-enfasis);
    --bs-btn-disabled-border-color: var(--usuario-enfasis);
}

.btn-outline-primary {
    --bs-btn-color: var(--usuario-enfasis);
    --bs-btn-border-color: var(--usuario-enfasis);
    --bs-btn-hover-bg: var(--usuario-enfasis);
    --bs-btn-hover-border-color: var(--usuario-enfasis);
    --bs-btn-active-bg: var(--usuario-enfasis);
    --bs-btn-active-border-color: var(--usuario-enfasis);
}

.text-primary {
    color: var(--usuario-enfasis) !important;
}

.bg-primary,
.text-bg-primary {
    background-color: var(--usuario-enfasis) !important;
}

.text-bg-primary {
    color: #fff !important;
}

.form-check-input:checked {
    background-color: var(--usuario-enfasis);
    border-color: var(--usuario-enfasis);
}

.form-control:focus,
.form-select:focus {
    border-color: var(--usuario-enfasis);
    box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--usuario-enfasis) 25%, transparent);
}

.perfil-avatar,
.avatar-circulo-iniciales {
    background: var(--usuario-enfasis);
}

.avatar-opcion:checked + .avatar-etiqueta .avatar-circulo {
    /* Una sola vuelta: la del color de énfasis, sin halo exterior. */
    border-color: var(--usuario-enfasis);
    border-width: 3px;
    box-shadow: none;
}
