:root {
    --gp-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --gp-primary: #7C8CE0;
    --gp-primary-dark: #5D6FCB;
    --gp-radius: 0.75rem;
    --gp-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
    --gp-shadow-hover: 0 8px 20px rgba(15, 23, 42, 0.08);

    /* --- Palette pastel : redéfinit les variables Bootstrap (badges -subtle/-emphasis,
       boutons) pour que toute l'appli en hérite sans retoucher chaque vue. --- */
    --bs-primary: var(--gp-primary);
    --bs-primary-rgb: 124, 140, 224;
    --bs-primary-bg-subtle: #E9EBFA;
    --bs-primary-border-subtle: #C7CCF2;
    --bs-primary-text-emphasis: #4A50A8;

    --bs-secondary: #A99FD1;
    --bs-secondary-rgb: 169, 159, 209;
    --bs-secondary-bg-subtle: #EFEBF9;
    --bs-secondary-border-subtle: #D9D0EE;
    --bs-secondary-text-emphasis: #5C5290;

    --bs-success: #7BC1A0;
    --bs-success-rgb: 123, 193, 160;
    --bs-success-bg-subtle: #E6F5ED;
    --bs-success-border-subtle: #C0E6D3;
    --bs-success-text-emphasis: #2E6B4C;

    --bs-danger: #E38FA0;
    --bs-danger-rgb: 227, 143, 160;
    --bs-danger-bg-subtle: #FCEBF0;
    --bs-danger-border-subtle: #F3C9D5;
    --bs-danger-text-emphasis: #9E3E56;

    --bs-warning: #E8BD7B;
    --bs-warning-rgb: 232, 189, 123;
    --bs-warning-bg-subtle: #FCF2E3;
    --bs-warning-border-subtle: #F3DDB4;
    --bs-warning-text-emphasis: #8A5E20;

    --bs-info: #82C6DB;
    --bs-info-rgb: 130, 198, 219;
    --bs-info-bg-subtle: #E7F5F9;
    --bs-info-border-subtle: #C3E5EE;
    --bs-info-text-emphasis: #2C6577;
}

[data-bs-theme="dark"] {
    --bs-primary: #9BA6EA;
    --bs-primary-rgb: 155, 166, 234;
    --bs-primary-bg-subtle: #262B4D;
    --bs-primary-border-subtle: #3B4270;
    --bs-primary-text-emphasis: #C2C9F5;

    --bs-secondary: #C4BAE3;
    --bs-secondary-rgb: 196, 186, 227;
    --bs-secondary-bg-subtle: #2B2645;
    --bs-secondary-border-subtle: #443B6C;
    --bs-secondary-text-emphasis: #DDD5F3;

    --bs-success: #9AD6B7;
    --bs-success-rgb: 154, 214, 183;
    --bs-success-bg-subtle: #1D3529;
    --bs-success-border-subtle: #2D523E;
    --bs-success-text-emphasis: #C0EAD3;

    --bs-danger: #EFA9B8;
    --bs-danger-rgb: 239, 169, 184;
    --bs-danger-bg-subtle: #3B2530;
    --bs-danger-border-subtle: #5C3849;
    --bs-danger-text-emphasis: #F5C9D4;

    --bs-warning: #EFCB94;
    --bs-warning-rgb: 239, 203, 148;
    --bs-warning-bg-subtle: #3A2E1B;
    --bs-warning-border-subtle: #5C4A2E;
    --bs-warning-text-emphasis: #F5DFB9;

    --bs-info: #9FD8E7;
    --bs-info-rgb: 159, 216, 231;
    --bs-info-bg-subtle: #1C333B;
    --bs-info-border-subtle: #2D505C;
    --bs-info-text-emphasis: #C4E9F1;
}

body {
    font-family: var(--gp-font);
    letter-spacing: -0.01em;
}

/* --- Navbar --- */
.gp-navbar {
    background: linear-gradient(135deg, #2C2A4A 0%, #3E3B6B 100%);
}
.gp-brand {
    font-weight: 800;
    letter-spacing: -0.03em;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.gp-brand .gp-logo {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background: linear-gradient(135deg, var(--gp-primary), #B3BCF0);
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size: 1rem;
}

/* --- Badges pleins : Bootstrap fixe leur texte en blanc, illisible sur un fond pastel clair --- */
.badge.bg-primary { color: #30346B; }
.badge.bg-secondary { color: #3B3560; }
.badge.bg-success { color: #1F4A34; }
.badge.bg-danger { color: #6B2438; }
.badge.bg-warning { color: #5C3D14; }
.badge.bg-info { color: #1D4652; }

/* --- Cards --- */
.card {
    border-radius: var(--gp-radius) !important;
    box-shadow: var(--gp-shadow);
    transition: box-shadow 0.15s ease;
}
.card.gp-hover:hover {
    box-shadow: var(--gp-shadow-hover);
}

/* --- Boutons pastel --- */
/* Bootstrap fixe les couleurs de chaque .btn-* en dur (pas de var(--bs-primary) dans le
   composant lui-même) : ces classes doivent donc être resurchargées explicitement pour
   suivre la palette pastel -- une intensification légère (filter) tient lieu de hover/actif
   plutôt que de choisir 6 teintes plus foncées à la main. */
.btn {
    border-radius: 0.55rem;
    font-weight: 600;
}
.btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-warning, .btn-info {
    border: none;
    transition: filter 0.12s ease, box-shadow 0.12s ease;
}
.btn-primary:hover, .btn-secondary:hover, .btn-success:hover, .btn-danger:hover, .btn-warning:hover, .btn-info:hover,
.btn-primary:active, .btn-secondary:active, .btn-success:active, .btn-danger:active, .btn-warning:active, .btn-info:active {
    filter: brightness(0.93);
}
.btn-primary { background-color: var(--bs-primary); color: #30346B; }
.btn-secondary { background-color: var(--bs-secondary); color: #3B3560; }
.btn-success { background-color: var(--bs-success); color: #1F4A34; }
.btn-danger { background-color: var(--bs-danger); color: #6B2438; }
.btn-warning { background-color: var(--bs-warning); color: #5C3D14; }
.btn-info { background-color: var(--bs-info); color: #1D4652; }

.btn-outline-primary { color: var(--bs-primary-text-emphasis); border-color: var(--bs-primary); }
.btn-outline-secondary { color: var(--bs-secondary-text-emphasis); border-color: var(--bs-secondary); }
.btn-outline-success { color: var(--bs-success-text-emphasis); border-color: var(--bs-success); }
.btn-outline-danger { color: var(--bs-danger-text-emphasis); border-color: var(--bs-danger); }
.btn-outline-warning { color: var(--bs-warning-text-emphasis); border-color: var(--bs-warning); }
.btn-outline-info { color: var(--bs-info-text-emphasis); border-color: var(--bs-info); }
.btn-outline-primary:hover { background-color: var(--bs-primary); border-color: var(--bs-primary); color: #30346B; }
.btn-outline-secondary:hover { background-color: var(--bs-secondary); border-color: var(--bs-secondary); color: #3B3560; }
.btn-outline-success:hover { background-color: var(--bs-success); border-color: var(--bs-success); color: #1F4A34; }
.btn-outline-danger:hover { background-color: var(--bs-danger); border-color: var(--bs-danger); color: #6B2438; }
.btn-outline-warning:hover { background-color: var(--bs-warning); border-color: var(--bs-warning); color: #5C3D14; }
.btn-outline-info:hover { background-color: var(--bs-info); border-color: var(--bs-info); color: #1D4652; }

/* --- KPI cards --- */
.gp-kpi {
    border-radius: var(--gp-radius);
    border: 0;
    box-shadow: var(--gp-shadow);
    padding: 1.1rem 1.3rem;
    display: flex;
    align-items: center;
    gap: 1rem;
}
.gp-kpi-icon {
    width: 46px;
    height: 46px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    flex-shrink: 0;
}
.gp-kpi-value {
    font-size: 1.6rem;
    font-weight: 800;
    line-height: 1.1;
}
.gp-kpi-label {
    font-size: 0.78rem;
    color: var(--bs-secondary-color);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

/* --- Nav : menus déroulants par module --- */
.gp-nav-dropdown {
    min-width: 240px;
    padding: 0.4rem;
}
.gp-nav-dropdown .dropdown-item {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    border-radius: 0.5rem;
    padding: 0.5rem 0.7rem;
    font-weight: 500;
}
.gp-nav-dropdown .dropdown-item i {
    width: 1.1rem;
    text-align: center;
    color: var(--gp-primary);
}
.gp-nav-dropdown .dropdown-item.active {
    background-color: var(--gp-primary);
    color: #fff;
}
.gp-nav-dropdown .dropdown-item.active i {
    color: #fff;
}

/* --- Alertes / cloche --- */
.gp-bell-btn {
    position: relative;
}
.gp-bell-badge {
    position: absolute;
    top: -4px;
    right: -6px;
    font-size: 0.65rem;
    padding: 0.15rem 0.4rem;
}
.gp-alert-dropdown {
    width: 360px;
    max-height: 420px;
    overflow-y: auto;
    padding: 0;
}
.gp-alert-item {
    display: flex;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--bs-border-color);
    text-decoration: none;
    color: inherit;
}
.gp-alert-item:hover {
    background: var(--bs-tertiary-bg);
}
.gp-alert-item:last-child {
    border-bottom: 0;
}

/* --- Login --- */
.gp-login-wrap {
    min-height: 90vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: radial-gradient(circle at top left, rgba(124, 140, 224, 0.14), transparent 60%),
                radial-gradient(circle at bottom right, rgba(227, 143, 160, 0.12), transparent 55%);
}

/* --- Dark mode adjustments --- */
[data-bs-theme="dark"] .gp-navbar {
    background: linear-gradient(135deg, #16142A 0%, #201C3D 100%);
}
[data-bs-theme="dark"] body {
    background-color: #14121F;
}
[data-bs-theme="dark"] .gp-login-wrap {
    background: radial-gradient(circle at top left, rgba(155, 166, 234, 0.10), transparent 60%),
                radial-gradient(circle at bottom right, rgba(239, 169, 184, 0.08), transparent 55%);
}
