/* ==========================================================================
   GIRAG Connect — Tema 3.0 (rediseño 2026-11)
   Se carga DESPUÉS de bootstrap.min.css y gc-legacy.css: re-tematiza Bootstrap
   y el layout sin tocar el marcado de las vistas existentes.
   ========================================================================== */

:root {
    /* Marca */
    --gc-navy-950: #0E1440;
    --gc-navy-900: #141C55;
    --gc-navy-800: #1A2468;
    --gc-navy-700: #1E2A78;
    --gc-navy-600: #2A3577;
    --gc-navy-500: #3A4AA0;
    --gc-navy-100: #E8EBFA;
    --gc-navy-50: #F1F3FC;
    --gc-amber: #F2B01E;

    /* Neutros */
    --gc-ink: #111733;
    --gc-ink-2: #3A4266;
    --gc-muted: #5B6386;
    --gc-line: #E4E7F0;
    --gc-line-2: #EEF0F6;
    --gc-bg: #F5F6FA;
    --gc-surface: #FFFFFF;

    /* Forma */
    --gc-radius-sm: 8px;
    --gc-radius: 10px;
    --gc-radius-lg: 14px;
    --gc-radius-xl: 18px;
    --gc-shadow-sm: 0 1px 2px rgba(17, 23, 51, 0.06);
    --gc-shadow: 0 4px 16px rgba(17, 23, 51, 0.08);
    --gc-shadow-lg: 0 18px 48px rgba(17, 23, 51, 0.18);
    --gc-focus: 0 0 0 3px rgba(58, 74, 160, 0.28);

    --gc-sidebar-w: 268px;
    --gc-topbar-h: 60px;
    --sidebar-width: var(--gc-sidebar-w);
    --topbar-height: var(--gc-topbar-h);

    /* Bootstrap */
    --bs-primary: #1E2A78;
    --bs-primary-rgb: 30, 42, 120;
    --bs-primary-text-emphasis: #141C55;
    --bs-primary-bg-subtle: #E8EBFA;
    --bs-primary-border-subtle: #C5CBEE;
    --bs-link-color: #1E2A78;
    --bs-link-color-rgb: 30, 42, 120;
    --bs-link-hover-color: #141C55;
    --bs-link-hover-color-rgb: 20, 28, 85;
    --bs-body-font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --bs-body-color: #111733;
    --bs-body-color-rgb: 17, 23, 51;
    --bs-body-bg: #F5F6FA;
    --bs-secondary-color: #5B6386;
    --bs-border-color: #E4E7F0;
    --bs-border-radius: 10px;
    --bs-border-radius-sm: 8px;
    --bs-border-radius-lg: 14px;
    --bs-border-radius-xl: 18px;
    --bs-focus-ring-color: rgba(58, 74, 160, 0.28);
    --bs-emphasis-color: #111733;
}

html { font-size: 14px; }

body.gc-app {
    background: var(--gc-bg);
    color: var(--gc-ink);
    font-family: var(--bs-body-font-family);
    font-feature-settings: "cv11", "ss01";
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { color: var(--gc-ink); letter-spacing: -0.01em; }
.text-muted, .text-secondary { color: var(--gc-muted) !important; }
.text-dark { color: var(--gc-ink) !important; }
.small, small { font-size: 0.875em; }

/* Números alineados en tablas e indicadores */
table, .fs-1, .fs-2, .fs-3, .display-1, .display-2, .display-3, .display-4, .display-5, .display-6 { font-variant-numeric: tabular-nums; }

/* Accesibilidad -------------------------------------------------------- */
.gc-skip-link {
    position: fixed; left: 12px; top: -60px; z-index: 2000;
    background: var(--gc-navy-700); color: #fff; padding: 10px 16px; border-radius: var(--gc-radius);
    font-weight: 600; text-decoration: none; transition: top .15s;
}
.gc-skip-link:focus { top: 12px; color: #fff; }
:focus-visible { outline: 2px solid var(--gc-navy-500); outline-offset: 2px; }
.btn:focus-visible, .form-control:focus, .form-select:focus, .form-check-input:focus { box-shadow: var(--gc-focus) !important; outline: none; }
#gc-main:focus { outline: none; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}

/* ==========================================================================
   LAYOUT
   ========================================================================== */
.gc-shell { display: flex; min-height: 100vh; align-items: stretch; }
.gc-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }

/* Topbar */
.navbar.gc-topbar {
    position: sticky; top: 0; z-index: 1030;
    height: var(--gc-topbar-h);
    display: flex; flex-wrap: nowrap; align-items: center; gap: 12px;
    padding: 0 24px;
    background: rgba(255, 255, 255, 0.92);
    -webkit-backdrop-filter: saturate(1.4) blur(10px);
    backdrop-filter: saturate(1.4) blur(10px);
    border-bottom: 1px solid var(--gc-line);
    box-shadow: none;
}
.gc-topbar-brand { font-weight: 700; color: var(--gc-navy-700) !important; margin: 0; font-size: 1rem; }
.gc-topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.gc-topbar-actions > .d-flex { gap: 10px !important; }

.gc-icon-btn {
    width: 40px; height: 40px; flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--gc-line); border-radius: var(--gc-radius);
    background: var(--gc-surface); color: var(--gc-navy-700); font-size: 1.25rem;
}
.gc-icon-btn:hover { background: var(--gc-navy-50); }

.gc-search-trigger {
    flex: 0 1 520px; min-width: 0; height: 40px;
    display: flex; align-items: center; gap: 10px;
    padding: 0 10px 0 12px;
    border: 1px solid var(--gc-line); border-radius: var(--gc-radius);
    background: #F1F3F9; color: var(--gc-muted); font: inherit; text-align: left; cursor: pointer;
    transition: border-color .15s, background .15s;
}
.gc-search-trigger:hover { border-color: #C9CEDD; background: #fff; }
.gc-search-placeholder { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gc-kbd {
    display: inline-block; font: 600 11px/1 var(--bs-body-font-family); color: var(--gc-muted);
    background: #fff; border: 1px solid #D5D9E6; border-bottom-width: 2px; border-radius: 6px; padding: 3px 6px;
}
@media (max-width: 575.98px) {
    .navbar.gc-topbar { padding: 0 12px; gap: 8px; }
    .gc-search-trigger { flex: 0 0 40px; width: 40px; padding: 0; justify-content: center; background: #fff; }
    .gc-search-trigger .gc-search-placeholder, .gc-search-trigger .gc-kbd { display: none; }
    .gc-topbar-brand { font-size: .95rem; }
}

/* Usuario y notificaciones en la topbar (marcado del parcial topbar-user) */
.gc-topbar .dropdown > a[data-bs-toggle="dropdown"] { display: inline-flex; align-items: center; }
.gc-topbar .dropdown > a > .bi-bell {
    width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--gc-line); border-radius: var(--gc-radius); background: #fff; font-size: 1.1rem !important;
}
.gc-topbar .dropdown > a > .bi-bell:hover { background: var(--gc-navy-50); }
.gc-topbar .dropdown > a.text-dark > .bi-bell { color: var(--gc-navy-700); }
.gc-topbar .dropdown > a > .badge { transform: translate(-70%, -30%) !important; }
.gc-topbar .dropdown > a > .bg-primary.rounded-circle {
    background: var(--gc-navy-700) !important; width: 36px !important; height: 36px !important; font-weight: 600;
}
.gc-topbar .dropdown-toggle::after { margin-left: .5rem; color: var(--gc-muted); }

/* Contenido */
.main-content.gc-main {
    margin: 0;
    padding: 28px 32px 48px;
    min-height: calc(100vh - var(--gc-topbar-h));
    animation: none;
}
@media (max-width: 991.98px) { .main-content.gc-main { padding: 20px 16px 40px; } }
@media (max-width: 767.98px) { .main-content.gc-main { padding: 14px 10px 32px !important; } }

/* ==========================================================================
   SIDEBAR
   ========================================================================== */
.sidebar.gc-sidebar {
    --gc-side-fg: #DDE2F5;
    --gc-side-fg-muted: #A9B2DA;
    --gc-side-hover: rgba(255, 255, 255, 0.07);
    --gc-side-active: #2A3577;
    width: var(--gc-sidebar-w);
    flex: none;
    background: var(--gc-navy-900) !important; /* .offcanvas-lg fuerza fondo transparente en escritorio */
    color: var(--gc-side-fg);
    border-right: 0;
    display: flex; flex-direction: column;
}
@media (min-width: 992px) {
    .sidebar.gc-sidebar {
        position: sticky !important; top: 0; bottom: auto; left: auto;
        height: 100vh; overflow: hidden; transform: none; visibility: visible !important; z-index: 1035;
    }
}
@media (max-width: 991.98px) {
    .sidebar.gc-sidebar, .offcanvas-lg#sidebarMenu.gc-sidebar {
        top: 0; padding-top: 0; width: 288px !important; background: var(--gc-navy-900) !important;
    }
}

.gc-sidebar-brand {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    padding: 18px 18px 14px; flex: none;
}
.gc-brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; }
.gc-brand-mark {
    width: 36px; height: 36px; border-radius: 10px; flex: none;
    background: #fff; color: var(--gc-navy-700);
    display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 16px;
}
.gc-brand-text { display: flex; flex-direction: column; line-height: 1.2; }
.gc-brand-name { color: #fff; font-weight: 700; font-size: 15px; }
.gc-brand-sub { color: var(--gc-side-fg-muted, #A9B2DA); font-size: 12px; }

.gc-sidebar-scroll {
    flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; padding: 0 10px 12px;
    scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .18) transparent;
}
.gc-sidebar-scroll::-webkit-scrollbar { width: 8px; }
.gc-sidebar-scroll::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .16); border-radius: 8px; }
.gc-sidebar-scroll > .py-2 { padding-top: 0 !important; }

.gc-sidebar .nav-group-label {
    color: var(--gc-side-fg-muted); font-size: 11px; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; margin: 18px 10px 6px; opacity: .9;
}
.gc-sidebar-scroll > .py-2 > .nav-group-label:first-child { margin-top: 4px; }
/* Ocultar etiquetas de espacio sin elementos visibles para este usuario */
.gc-sidebar .nav-group-label:has(+ .nav-group-label),
.gc-sidebar .nav-group-label:last-child { display: none; }

.gc-sidebar .nav-link,
.gc-sidebar .nav-group-header {
    color: var(--gc-side-fg); margin: 1px 0; padding: 9px 10px; border-radius: 9px;
    font-weight: 500; font-size: 13.5px; box-shadow: none !important;
}
.gc-sidebar .nav-link i,
.gc-sidebar .nav-group-header i:first-child,
.gc-sidebar .nav-group-header span i:first-child { color: var(--gc-side-fg-muted); font-size: 1.05rem; margin-right: 10px !important; }
.gc-sidebar .nav-link:hover,
.gc-sidebar .nav-group-header:hover { color: #fff; background: var(--gc-side-hover); }
.gc-sidebar .nav-link.active {
    color: #fff; background: var(--gc-side-active); font-weight: 600; position: relative;
}
.gc-sidebar .nav-link.active::before {
    content: ""; position: absolute; left: -10px; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0; background: var(--gc-amber);
}
.gc-sidebar .nav-link.active i { color: var(--gc-amber); }
.gc-sidebar .nav-group-header.active { color: #fff; }
.gc-sidebar .nav-group-header.active i:first-child,
.gc-sidebar .nav-group-header.active span i:first-child { color: var(--gc-amber); }
.gc-sidebar .nav-group-header i.bi-chevron-down { color: var(--gc-side-fg-muted); }
.gc-sidebar .nav-group-header.active i.bi-chevron-down { color: #fff; }

.gc-sidebar .collapse-inner {
    background: rgba(255, 255, 255, 0.04); border: 0; border-radius: 10px; margin: 2px 0 6px; padding: 4px 0;
}
.gc-sidebar .collapse-inner > .nav-link { color: var(--gc-side-fg); margin: 1px 4px; padding: 7px 10px 7px 38px; font-size: 13px; }
.gc-sidebar .collapse-inner > .nav-link:hover { color: #fff; background: var(--gc-side-hover); }
.gc-sidebar .collapse-inner > .nav-link.active { color: #fff; background: var(--gc-side-active); }
.gc-sidebar .collapse-inner > .nav-link.active::before { left: -4px; }
.gc-sidebar .collapse-inner > .nav-link i { display: none; }

.gc-sidebar .sub-group-label { color: var(--gc-side-fg-muted) !important; padding-left: 38px !important; }
.gc-sidebar .sub-group-toggle { color: var(--gc-side-fg); margin: 1px 4px; padding: 7px 10px 7px 38px; font-size: 13px; font-weight: 600; }
.gc-sidebar .sub-group-toggle:hover { color: #fff; background: var(--gc-side-hover); }
.gc-sidebar .sub-group-toggle[aria-expanded="true"] { color: #fff; }
.gc-sidebar .sub-group-toggle i { color: var(--gc-side-fg-muted) !important; }
.gc-sidebar .sub-group-toggle[aria-expanded="true"] i.bi-chevron-down { color: #fff !important; }

.gc-sidebar .sub-collapse-inner { border-left: 1px solid rgba(255, 255, 255, .14); margin-left: 40px; padding-left: 6px; }
.gc-sidebar .sub-collapse-inner .nav-link { color: var(--gc-side-fg); font-size: 12.75px; padding: 6px 8px !important; }
.gc-sidebar .sub-collapse-inner .nav-link:hover { color: #fff; background: var(--gc-side-hover); }
.gc-sidebar .sub-collapse-inner .nav-link.active { color: #fff; background: var(--gc-side-active); }
.gc-sidebar .sub-collapse-inner .nav-link.active::before { left: -7px; }
.gc-sidebar .sub-collapse-inner .nav-link i { display: none; }

.gc-sidebar .badge { box-shadow: none; }
.gc-sidebar .text-muted { color: var(--gc-side-fg-muted) !important; }
.gc-sidebar-version { text-align: center; color: var(--gc-side-fg-muted); font-size: 11px; padding: 18px 0 6px; opacity: .7; }

/* ==========================================================================
   COMPONENTES BOOTSTRAP
   ========================================================================== */

/* Tarjetas: sin vidrio ni saltos al pasar el mouse (más rápidas de pintar) */
.card {
    background: var(--gc-surface);
    -webkit-backdrop-filter: none; backdrop-filter: none;
    border: 1px solid var(--gc-line) !important;
    border-radius: var(--gc-radius-lg);
    box-shadow: var(--gc-shadow-sm);
    transition: none;
}
.card.border-0 { border: 1px solid var(--gc-line) !important; }
.card:hover { box-shadow: var(--gc-shadow-sm) !important; }
.card.shadow, .card.shadow-sm, .card.shadow-lg { box-shadow: var(--gc-shadow-sm) !important; }
.card-header {
    background: var(--gc-surface);
    border-bottom: 1px solid var(--gc-line-2);
    padding: 14px 20px;
    border-top-left-radius: var(--gc-radius-lg) !important;
    border-top-right-radius: var(--gc-radius-lg) !important;
}
.card-header.bg-white, .card-header.bg-light, .card-header.bg-transparent { background: var(--gc-surface) !important; }
.card-header h5, .card-header h6, .card-header .card-title { font-weight: 700; margin-bottom: 0; }
.card-body { padding: 20px; }
.card-footer { background: #FAFBFD; border-top: 1px solid var(--gc-line-2); padding: 12px 20px; }
.card-footer:last-child { border-bottom-left-radius: var(--gc-radius-lg); border-bottom-right-radius: var(--gc-radius-lg); }
.card-header.bg-primary:not([class*="bg-opacity"]), .card-header.bg-dark:not([class*="bg-opacity"]) { background: var(--gc-navy-800) !important; color: #fff; }

/* Botones */
.btn {
    --bs-btn-font-weight: 600;
    --bs-btn-border-radius: var(--gc-radius);
    --bs-btn-padding-y: .5rem;
    --bs-btn-padding-x: 1rem;
    --bs-btn-focus-box-shadow: var(--gc-focus);
    letter-spacing: 0;
}
.btn-sm { --bs-btn-border-radius: var(--gc-radius-sm); --bs-btn-padding-y: .3rem; --bs-btn-padding-x: .7rem; --bs-btn-font-size: .85rem; }
.btn-lg { --bs-btn-border-radius: 12px; --bs-btn-padding-y: .7rem; --bs-btn-padding-x: 1.4rem; }
.btn-primary {
    --bs-btn-bg: var(--gc-navy-700); --bs-btn-border-color: var(--gc-navy-700);
    --bs-btn-hover-bg: var(--gc-navy-900); --bs-btn-hover-border-color: var(--gc-navy-900);
    --bs-btn-active-bg: var(--gc-navy-950); --bs-btn-active-border-color: var(--gc-navy-950);
    --bs-btn-disabled-bg: var(--gc-navy-700); --bs-btn-disabled-border-color: var(--gc-navy-700);
    background: var(--bs-btn-bg); border: 1px solid var(--bs-btn-border-color);
    box-shadow: none; transform: none !important;
}
.btn-primary:hover { background: var(--bs-btn-hover-bg); box-shadow: none; }
.btn-primary:active, .btn-primary.active { background: var(--bs-btn-active-bg); }
.btn-outline-primary {
    --bs-btn-color: var(--gc-navy-700); --bs-btn-border-color: #C5CBEE;
    --bs-btn-hover-bg: var(--gc-navy-50); --bs-btn-hover-color: var(--gc-navy-900); --bs-btn-hover-border-color: var(--gc-navy-500);
    --bs-btn-active-bg: var(--gc-navy-100); --bs-btn-active-color: var(--gc-navy-900); --bs-btn-active-border-color: var(--gc-navy-500);
}
.btn-light { --bs-btn-bg: #fff; --bs-btn-border-color: var(--gc-line); --bs-btn-hover-bg: var(--gc-navy-50); --bs-btn-hover-border-color: #D5D9E6; --bs-btn-color: var(--gc-ink-2); }
.btn-outline-secondary {
    --bs-btn-color: var(--gc-ink-2); --bs-btn-border-color: #D5D9E6;
    --bs-btn-hover-bg: #F1F3F9; --bs-btn-hover-color: var(--gc-ink); --bs-btn-hover-border-color: #C9CEDD;
    --bs-btn-active-bg: #E8EBF3; --bs-btn-active-color: var(--gc-ink); --bs-btn-active-border-color: #C9CEDD;
}
.btn-secondary { --bs-btn-bg: #4A5274; --bs-btn-border-color: #4A5274; --bs-btn-hover-bg: #3A4266; --bs-btn-hover-border-color: #3A4266; }
.btn-link { --bs-btn-color: var(--gc-navy-700); --bs-btn-hover-color: var(--gc-navy-900); font-weight: 500; }
.btn-check:checked + .btn-outline-primary { background: var(--gc-navy-700); border-color: var(--gc-navy-700); color: #fff; }
.btn-check:checked + .btn-schedule-pill { background-color: var(--gc-navy-700) !important; border-color: var(--gc-navy-700) !important; }

/* Formularios */
.form-label { font-weight: 600; color: var(--gc-ink-2); font-size: .9rem; margin-bottom: .35rem; }
.form-control, .form-select {
    border-color: #D5D9E6; border-radius: var(--gc-radius); color: var(--gc-ink);
    padding: .55rem .8rem; min-height: 40px;
}
.form-control-sm, .form-select-sm { min-height: 32px; padding: .3rem .6rem; border-radius: var(--gc-radius-sm); }
.form-control-lg, .form-select-lg { min-height: 48px; border-radius: 12px; }
textarea.form-control { min-height: auto; }
.form-control:hover, .form-select:hover { border-color: #C2C8DA; }
.form-control:focus, .form-select:focus { border-color: var(--gc-navy-500); }
.form-control::placeholder { color: #8A91AE; }
.form-check-input:checked { background-color: var(--gc-navy-700); border-color: var(--gc-navy-700); }
.form-check-input:focus { border-color: var(--gc-navy-500); }
.form-switch .form-check-input:focus { --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%233A4AA0'/%3e%3c/svg%3e"); }
.form-range::-webkit-slider-thumb { background: var(--gc-navy-700); }
.input-group-text { background: #F5F6FA; border-color: #D5D9E6; color: var(--gc-muted); border-radius: var(--gc-radius); }
.form-text { color: var(--gc-muted); }
.form-control[readonly], .form-control:disabled, .form-select:disabled, .bg-light[readonly] {
    background-color: #F5F6FA !important; border-color: var(--gc-line) !important; color: var(--gc-muted) !important; opacity: 1;
}

/* Select2 */
.select2-container--bootstrap-5 .select2-selection { border-color: #D5D9E6; border-radius: var(--gc-radius); min-height: 40px; }
.select2-container--bootstrap-5.select2-container--focus .select2-selection,
.select2-container--bootstrap-5.select2-container--open .select2-selection { border-color: var(--gc-navy-500); box-shadow: var(--gc-focus); }
.select2-container--bootstrap-5 .select2-dropdown { border-color: #D5D9E6; border-radius: var(--gc-radius); box-shadow: var(--gc-shadow); }
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--highlighted { background: var(--gc-navy-50); color: var(--gc-ink); }
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--selected,
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted) { background: var(--gc-navy-700); color: #fff; }
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice { border-color: #C5CBEE; background: var(--gc-navy-50); color: var(--gc-navy-900); border-radius: 6px; }

/* Flatpickr */
.flatpickr-calendar { border-radius: var(--gc-radius-lg); box-shadow: var(--gc-shadow-lg); font-family: var(--bs-body-font-family); }
.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange,
.flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover { background: var(--gc-navy-700); border-color: var(--gc-navy-700); }
.flatpickr-day.today { border-color: var(--gc-amber); }

/* Tablas */
.table {
    --bs-table-color: var(--gc-ink);
    --bs-table-border-color: var(--gc-line-2);
    --bs-table-hover-bg: #F7F8FC;
    --bs-table-striped-bg: #FAFBFD;
    --bs-table-active-bg: var(--gc-navy-50);
    margin-bottom: 0;
}
.table > :not(caption) > * > * { padding: .75rem .9rem; }
.table-sm > :not(caption) > * > * { padding: .45rem .6rem; }
.table > thead > tr > th, .table > thead th {
    color: var(--gc-muted); font-size: .78rem; font-weight: 600; text-transform: none; letter-spacing: .01em;
    background: #FAFBFD; border-bottom: 1px solid var(--gc-line); white-space: nowrap; vertical-align: middle;
}
.table thead.table-light th, .table thead.table-dark th, .table .table-light th { background: #FAFBFD; color: var(--gc-muted); border-color: var(--gc-line); }
.table thead.table-dark th { background: var(--gc-navy-800); color: #fff; }
.table > tbody > tr:last-child > * { border-bottom-width: 0; }
.table td { vertical-align: middle; }
.card > .table-responsive:last-child .table, .card > .card-body.p-0 .table { border-radius: 0 0 var(--gc-radius-lg) var(--gc-radius-lg); }
.table-responsive { scrollbar-width: thin; }

/* Insignias */
.badge { font-weight: 600; letter-spacing: .01em; border-radius: 999px; padding: .38em .7em; }
.badge.rounded-1, .badge.rounded-2, .badge.rounded-3 { border-radius: 6px !important; }
.badge.bg-light { color: var(--gc-ink-2) !important; border: 1px solid var(--gc-line); }

/* Pestañas y píldoras dentro de las vistas (no del menú lateral) */
.main-content .nav-link { margin: 0; }
.main-content .nav-tabs { border-bottom: 1px solid var(--gc-line); gap: 2px; }
.main-content .nav-tabs .nav-link {
    border: 0; border-bottom: 2px solid transparent; border-radius: 0; color: var(--gc-ink-2);
    padding: .7rem 1rem; font-weight: 500; background: none; box-shadow: none;
}
.main-content .nav-tabs .nav-link:hover { color: var(--gc-ink); border-bottom-color: #C9CEDD; background: none; }
.main-content .nav-tabs .nav-link.active, .main-content .nav-tabs .nav-item.show .nav-link {
    color: var(--gc-ink); font-weight: 700; border-bottom-color: var(--gc-navy-700); background: none; box-shadow: none;
}
.main-content .nav-pills .nav-link { border-radius: 999px; color: var(--gc-ink-2); padding: .45rem .95rem; font-weight: 500; box-shadow: none; }
.main-content .nav-pills .nav-link:hover { background: #EEF0F6; color: var(--gc-ink); }
.main-content .nav-pills .nav-link.active, .main-content .nav-pills .show > .nav-link { background: var(--gc-navy-700); color: #fff; }
.main-content .nav-link i { color: inherit; }

/* Menús desplegables */
.dropdown-menu {
    --bs-dropdown-border-color: var(--gc-line);
    --bs-dropdown-border-radius: 12px;
    --bs-dropdown-link-active-bg: var(--gc-navy-700);
    --bs-dropdown-link-hover-bg: var(--gc-navy-50);
    --bs-dropdown-item-padding-y: .5rem;
    border: 1px solid var(--gc-line) !important;
    box-shadow: var(--gc-shadow) !important;
    padding: 6px;
}
.dropdown-item { border-radius: 8px; color: var(--gc-ink); }
.dropdown-menu.p-0 { padding: 0; overflow: hidden; }
.dropdown-menu.p-0 .dropdown-item { border-radius: 0; }

/* Modales */
.modal-content { border: 0; border-radius: var(--gc-radius-xl); box-shadow: var(--gc-shadow-lg); }
.modal-header { border-bottom: 1px solid var(--gc-line-2); padding: 16px 22px; }
.modal-header .modal-title { font-weight: 700; }
.modal-body { padding: 20px 22px; }
.modal-footer { border-top: 1px solid var(--gc-line-2); padding: 12px 22px; background: #FAFBFD; border-radius: 0 0 var(--gc-radius-xl) var(--gc-radius-xl); }
.modal-header.bg-primary:not([class*="bg-opacity"]), .modal-header.bg-dark:not([class*="bg-opacity"]) { background: var(--gc-navy-800) !important; border-radius: var(--gc-radius-xl) var(--gc-radius-xl) 0 0; }
.modal-backdrop.show { opacity: .45; background: var(--gc-navy-950); }

/* Alertas */
.alert { border-radius: 12px; border: 1px solid transparent; }
.alert-primary { background: var(--gc-navy-50); border-color: #C5CBEE; color: var(--gc-navy-900); }

/* Paginación */
.pagination {
    --bs-pagination-color: var(--gc-ink-2);
    --bs-pagination-hover-color: var(--gc-ink);
    --bs-pagination-hover-bg: #F1F3F9;
    --bs-pagination-focus-box-shadow: var(--gc-focus);
    --bs-pagination-active-bg: var(--gc-navy-700);
    --bs-pagination-active-border-color: var(--gc-navy-700);
    --bs-pagination-border-color: var(--gc-line);
    --bs-pagination-border-radius: 8px;
    gap: 4px;
}
.pagination .page-item .page-link { border-radius: 8px !important; min-width: 36px; text-align: center; }

/* Barras de progreso, list groups, breadcrumbs */
.progress { --bs-progress-bg: #EEF0F6; --bs-progress-bar-bg: var(--gc-navy-700); border-radius: 999px; }
.list-group { --bs-list-group-border-color: var(--gc-line-2); --bs-list-group-active-bg: var(--gc-navy-700); --bs-list-group-active-border-color: var(--gc-navy-700); }
.list-group-item-action:hover { background: #F7F8FC; }
.breadcrumb { --bs-breadcrumb-divider-color: #A0A7C2; --bs-breadcrumb-item-active-color: var(--gc-ink); font-size: .85rem; }
.breadcrumb a { color: var(--gc-muted); text-decoration: none; }
.breadcrumb a:hover { color: var(--gc-navy-700); }

/* Las utilidades .bg-primary / .text-primary / .border-primary toman el azul GIRAG de --bs-primary-rgb.
   No se fuerzan con un color sólido: así siguen funcionando las versiones suaves (bg-opacity-10, text-opacity-75…). */

/* Encabezado de página: patrón común "h3/h4 + botones" al inicio de muchas vistas */
.main-content > .container-fluid > .d-flex:first-child h1,
.main-content > .container-fluid > .d-flex:first-child h2,
.main-content > .container-fluid > .d-flex:first-child h3,
.main-content > .container-fluid > .d-flex:first-child h4 { font-weight: 700; letter-spacing: -0.015em; }

/* SweetAlert2 */
.swal2-popup { border-radius: var(--gc-radius-xl) !important; font-family: var(--bs-body-font-family) !important; }
.swal2-styled.swal2-confirm { background: var(--gc-navy-700) !important; border-radius: var(--gc-radius) !important; }
.swal2-styled.swal2-cancel { border-radius: var(--gc-radius) !important; }
.swal2-styled:focus { box-shadow: var(--gc-focus) !important; }

/* Tooltips y popovers */
.tooltip { --bs-tooltip-bg: var(--gc-navy-950); --bs-tooltip-border-radius: 8px; }

/* ==========================================================================
   BUSCADOR GLOBAL (Ctrl+K)
   ========================================================================== */
.gc-palette { position: fixed; inset: 0; z-index: 2000; display: flex; justify-content: center; align-items: flex-start; padding: 10vh 16px 16px; }
.gc-palette[hidden] { display: none; }
.gc-palette-backdrop { position: absolute; inset: 0; background: rgba(14, 20, 64, .45); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
.gc-palette-panel {
    position: relative; width: 100%; max-width: 640px; max-height: 72vh;
    background: #fff; border-radius: var(--gc-radius-xl); box-shadow: var(--gc-shadow-lg);
    display: flex; flex-direction: column; overflow: hidden;
    animation: gc-pop .14s ease-out;
}
@keyframes gc-pop { from { opacity: 0; transform: translateY(-6px) scale(.99); } to { opacity: 1; transform: none; } }
.gc-palette-search { display: flex; align-items: center; gap: 12px; padding: 0 16px; border-bottom: 1px solid var(--gc-line); }
.gc-palette-search > .bi { color: var(--gc-muted); font-size: 1.1rem; }
.gc-palette-input { flex: 1; border: 0; outline: none; height: 58px; font: inherit; font-size: 1.05rem; color: var(--gc-ink); background: transparent; min-width: 0; }
.gc-palette-list { list-style: none; margin: 0; padding: 8px; overflow-y: auto; flex: 1; }
.gc-palette-item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 10px; cursor: pointer; }
.gc-palette-item > .bi { width: 32px; height: 32px; flex: none; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; background: #F1F3F9; color: var(--gc-navy-700); }
.gc-palette-item.is-active { background: var(--gc-navy-50); }
.gc-palette-item.is-active > .bi { background: var(--gc-navy-700); color: #fff; }
.gc-palette-text { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.gc-palette-label { font-weight: 600; color: var(--gc-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gc-palette-path { font-size: 12px; color: var(--gc-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gc-palette-tag { font-size: 11px; font-weight: 600; color: var(--gc-navy-700); background: var(--gc-navy-100); border-radius: 999px; padding: 2px 8px; }
.gc-palette-empty { padding: 28px 12px; text-align: center; color: var(--gc-muted); }
.gc-palette-foot { display: flex; gap: 16px; flex-wrap: wrap; padding: 10px 16px; border-top: 1px solid var(--gc-line); color: var(--gc-muted); font-size: 12px; background: #FAFBFD; }
body.gc-palette-open { overflow: hidden; }

/* ==========================================================================
   PÚBLICO (sin sesión)
   ========================================================================== */
.navbar.gc-public-topbar {
    position: sticky; top: 0; z-index: 1030; height: 64px;
    background: var(--gc-navy-900); box-shadow: none; border: 0;
}
.gc-public-topbar .gc-brand-name { color: #fff; }
.gc-public-logo { height: 32px; width: auto; max-width: 140px; background: #fff; border-radius: 8px; padding: 3px 6px; object-fit: contain; }
.gc-public-link { color: #DDE2F5; text-decoration: none; font-weight: 500; padding: 6px 10px; border-radius: 8px; }
.gc-public-link:hover { color: #fff; background: rgba(255, 255, 255, .08); }
.gc-public-main { padding-top: 32px; padding-bottom: 48px; }
.gc-guest .card { box-shadow: var(--gc-shadow) !important; }

/* ==========================================================================
   UTILIDADES NUEVAS (gc-*) para las pantallas rediseñadas
   ========================================================================== */
.gc-page-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 20px; }
.gc-page-title { font-size: 1.6rem; font-weight: 700; margin: 0; letter-spacing: -0.015em; }
.gc-page-sub { color: var(--gc-muted); margin: 4px 0 0; }
.gc-kpi { background: #fff; border: 1px solid var(--gc-line); border-radius: var(--gc-radius-lg); padding: 18px; display: flex; flex-direction: column; gap: 6px; height: 100%; text-decoration: none; color: inherit; }
a.gc-kpi:hover { border-color: #C5CBEE; box-shadow: var(--gc-shadow-sm); color: inherit; }
.gc-kpi-label { color: var(--gc-muted); font-size: .9rem; }
.gc-kpi-value { font-size: 1.9rem; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.gc-kpi-note { font-size: .8rem; color: var(--gc-muted); }
.gc-chip { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; font-weight: 600; border-radius: 6px; padding: 3px 8px; white-space: nowrap; }
.gc-chip-navy { color: #2B47C9; background: #E8EDFF; }
.gc-chip-green { color: #0F6B57; background: #E3F5F0; }
.gc-chip-purple { color: #6B3FC9; background: #F1EAFF; }
.gc-chip-red { color: #B3263A; background: #FDE9EC; }
.gc-chip-orange { color: #A2470F; background: #FDEFE5; }
.gc-chip-gray { color: #3A4266; background: #EEF0F6; }
.gc-empty { text-align: center; padding: 40px 16px; color: var(--gc-muted); }
.gc-empty > .bi { font-size: 2.4rem; display: block; margin-bottom: 8px; color: #B8BFD6; }

/* Contador de "Mi bandeja" en el menú */
.gc-sidebar .gc-nav-count {
    margin-left: auto; background: var(--gc-amber); color: var(--gc-navy-950);
    font-size: 11.5px; font-weight: 700; border-radius: 999px; padding: 1px 8px; line-height: 1.5;
}
