/* =====================================================================
   GesCom — feuille de style de l'application.
   Complète Bootstrap 5.3 : uniquement ce que Bootstrap ne fait pas.
   Mobile-first. Aucune police distante (fonctionne sans Internet).
   ===================================================================== */

:root {
    --gc-sidebar-w: 250px;
    --gc-primary: #0d6efd;
    --gc-dark: #17212f;
    --gc-dark-2: #1f2c3d;
    --gc-border: #e4e7ec;
    --gc-bg: #f6f7f9;
    --gc-radius: 10px;
}

* { -webkit-tap-highlight-color: transparent; }

body {
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    background: var(--gc-bg);
    color: #1f2933;
}

/* ---------- Structure ------------------------------------------------ */
.gc-app { min-height: 100vh; }

.gc-sidebar {
    position: fixed; inset: 0 auto 0 0; width: var(--gc-sidebar-w);
    background: var(--gc-dark); color: #cfd8e3;
    overflow-y: auto; z-index: 1040;
    transform: translateX(-100%); transition: transform .2s ease;
}
.gc-sidebar.open { transform: none; }
@media (min-width: 992px) { .gc-sidebar { transform: none; } }

.gc-sidebar-brand { padding: 1rem 1.1rem; border-bottom: 1px solid rgba(255,255,255,.08); }
.gc-sidebar-logo { max-height: 34px; max-width: 100%; margin-bottom: .4rem; display: block; border-radius: 6px; }
.gc-logo { font-weight: 700; font-size: 1.05rem; color: #fff; letter-spacing: .2px; }

.gc-nav { padding: .5rem 0 2rem; }
.gc-nav-group {
    padding: .9rem 1.1rem .35rem; font-size: .68rem; text-transform: uppercase;
    letter-spacing: .09em; color: #7c8ca0; font-weight: 600;
}
.gc-nav-link {
    display: block; padding: .55rem 1.1rem; color: #cfd8e3; text-decoration: none;
    border-left: 3px solid transparent; font-size: .92rem;
}
.gc-nav-link:hover { background: rgba(255,255,255,.05); color: #fff; }
.gc-nav-link.active { background: rgba(13,110,253,.16); border-left-color: var(--gc-primary); color: #fff; font-weight: 600; }
.gc-nav-link.disabled { opacity: .45; cursor: not-allowed; }
.gc-nav-pos { color: #ffd479; font-weight: 600; }

.gc-main { min-height: 100vh; display: flex; flex-direction: column; }
@media (min-width: 992px) { .gc-main { margin-left: var(--gc-sidebar-w); } }

.gc-topbar {
    position: sticky; top: 0; z-index: 1030;
    display: flex; align-items: center; gap: .75rem;
    padding: .6rem 1rem; background: #fff; border-bottom: 1px solid var(--gc-border);
}
.gc-title { font-size: 1.05rem; font-weight: 600; margin: 0; }
.gc-content { flex: 1; padding: 1.1rem 1rem 2rem; }
@media (min-width: 992px) { .gc-content { padding: 1.4rem 1.5rem 3rem; } }
.gc-footer {
    display: flex; justify-content: space-between; padding: .7rem 1.2rem;
    font-size: .76rem; color: #8a94a6; border-top: 1px solid var(--gc-border); background: #fff;
}

/* ---------- Cartes et vignettes -------------------------------------- */
.gc-card { background: #fff; border: 1px solid var(--gc-border); border-radius: var(--gc-radius); }
.gc-card-body { padding: 1rem 1.1rem; }
.gc-card-head {
    display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
    padding: .8rem 1.1rem; border-bottom: 1px solid var(--gc-border); font-weight: 600;
}

.gc-stats { display: grid; gap: .8rem; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.gc-stat {
    background: #fff; border: 1px solid var(--gc-border); border-radius: var(--gc-radius);
    padding: .9rem 1rem;
}
.gc-stat-label { font-size: .74rem; text-transform: uppercase; letter-spacing: .06em; color: #7a8798; font-weight: 600; }
.gc-stat-value { font-size: 1.42rem; font-weight: 700; margin-top: .2rem; line-height: 1.2; }
.gc-stat-hint { font-size: .76rem; color: #8a94a6; }
.gc-stat.is-danger { border-left: 4px solid #dc3545; }
.gc-stat.is-warning { border-left: 4px solid #ffc107; }
.gc-stat.is-success { border-left: 4px solid #198754; }

/* ---------- Tableaux -------------------------------------------------- */
.gc-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table > :not(caption) > * > * { padding: .55rem .6rem; }
.table thead th { font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; color: #6b7788; white-space: nowrap; }
.gc-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.gc-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .84rem; }

/* ---------- Filtres et états ----------------------------------------- */
.gc-filters { display: flex; flex-wrap: wrap; gap: .5rem; align-items: end; }
.gc-filters .form-control, .gc-filters .form-select { min-width: 130px; }

.gc-empty { text-align: center; padding: 2.5rem 1rem; color: #8a94a6; }
.gc-empty-icon { font-size: 2rem; margin-bottom: .4rem; }

.gc-flash { margin-bottom: 1rem; }

/* ---------- Notifications -------------------------------------------- */
.gc-notif-badge { position: absolute; top: -4px; right: -4px; font-size: .62rem; }
.gc-notif-menu { width: 320px; max-height: 380px; overflow-y: auto; }

/* ---------- Authentification ----------------------------------------- */
.gc-auth { background: linear-gradient(160deg, #17212f 0%, #24344a 100%); min-height: 100vh; padding: 2rem 1rem; }
.gc-auth-wrap { max-width: 520px; margin: 0 auto; }
.gc-auth-brand { text-align: center; color: #fff; margin-bottom: 1.4rem; }
.gc-auth-brand .gc-logo { font-size: 1.7rem; }
.gc-auth-brand p { color: #a9b6c7 !important; font-size: .88rem; }
.gc-auth .card { border: 0; border-radius: 14px; box-shadow: 0 12px 40px rgba(0,0,0,.28); }
.gc-auth-wide { max-width: 760px; }

/* ---------- Divers ---------------------------------------------------- */
.gc-badge-soft { font-weight: 600; font-size: .72rem; padding: .28em .6em; border-radius: 20px; }
.gc-required::after { content: " *"; color: #dc3545; }
.gc-help { font-size: .78rem; color: #7a8798; }
.gc-danger-zone { border: 1px dashed #f1aeb5; background: #fff5f5; border-radius: var(--gc-radius); padding: 1rem; }
.gc-chart-wrap { position: relative; height: 260px; }
.gc-sticky-actions { position: sticky; bottom: 0; background: #fff; border-top: 1px solid var(--gc-border); padding: .7rem 1rem; }
.gc-permission-grid { display: grid; gap: .35rem .9rem; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
.gc-sensitive { color: #b02a37; }

/* ---------- Système visuel 2026 ------------------------------------
   Cette couche conserve les classes métier existantes : elle améliore toutes
   les pages sans modifier leurs formulaires, droits ni données.              */
:root {
    --gc-primary: #2563eb;
    --gc-primary-dark: #1d4ed8;
    --gc-accent: #14b8a6;
    --gc-ink: #152033;
    --gc-dark: #101b31;
    --gc-dark-2: #172744;
    --gc-border: #e5eaf2;
    --gc-bg: #f4f7fb;
    --gc-radius: 14px;
    --gc-shadow: 0 12px 30px rgba(22, 39, 72, .07);
}

body {
    background:
        radial-gradient(circle at 100% 0, rgba(37, 99, 235, .075), transparent 27rem),
        var(--gc-bg);
    color: var(--gc-ink);
    letter-spacing: .005em;
}

.gc-sidebar {
    background: linear-gradient(180deg, #101b31 0%, #172b4d 100%);
    box-shadow: 12px 0 30px rgba(10, 24, 48, .08);
}
.gc-sidebar-brand { padding: 1.35rem 1.15rem 1.1rem; }
.gc-sidebar-brand small { color: #9fb0cc !important; }
.gc-logo { font-size: 1.14rem; letter-spacing: .02em; }
.gc-nav { padding: .85rem .65rem 2rem; }
.gc-nav-group { padding: 1.2rem .65rem .42rem; color: #8ea2c2; }
.gc-nav-link {
    border-left: 0; border-radius: 9px; margin: 2px 0; padding: .66rem .8rem;
    color: #d6e0f0; transition: background .18s ease, color .18s ease, transform .18s ease;
}
.gc-nav-link:hover { background: rgba(255,255,255,.09); transform: translateX(2px); }
.gc-nav-link.active {
    background: linear-gradient(90deg, rgba(37,99,235,.95), rgba(59,130,246,.72));
    box-shadow: 0 6px 16px rgba(3, 15, 41, .22); border-left: 0;
}
.gc-nav-pos { color: #baf4ed; }
.gc-nav-pos.active { color: #fff; }

.gc-topbar {
    min-height: 64px; padding: .75rem 1.5rem; background: rgba(255,255,255,.9);
    backdrop-filter: blur(12px); box-shadow: 0 1px 0 rgba(18, 38, 63, .03);
}
.gc-title { font-size: 1.18rem; font-weight: 750; letter-spacing: -.02em; }
.gc-content { max-width: 1760px; width: 100%; margin: 0 auto; }
.gc-footer { background: transparent; border-top: 0; padding: 1rem 1.5rem; }

.gc-card, .gc-stat {
    border-color: rgba(211,220,234,.9); box-shadow: var(--gc-shadow);
}
.gc-card { overflow: hidden; }
.gc-card-head { padding: .95rem 1.15rem; color: #263852; background: rgba(249,251,254,.7); }
.gc-card-body { padding: 1.15rem; }
.gc-stat { position: relative; overflow: hidden; padding: 1.05rem 1.1rem; }
.gc-stat::after {
    content: ''; position: absolute; width: 84px; height: 84px; border-radius: 50%;
    right: -31px; top: -38px; background: rgba(37,99,235,.07);
}
.gc-stat:nth-child(2n)::after { background: rgba(20,184,166,.08); }
.gc-stat-label { color: #718199; }
.gc-stat-value { font-size: clamp(1.3rem, 2vw, 1.65rem); letter-spacing: -.04em; }
.gc-stat.is-success { border-left-color: var(--gc-accent); }

.btn { border-radius: 9px; font-weight: 600; }
.btn-primary { background: var(--gc-primary); border-color: var(--gc-primary); box-shadow: 0 5px 12px rgba(37,99,235,.17); }
.btn-primary:hover, .btn-primary:focus { background: var(--gc-primary-dark); border-color: var(--gc-primary-dark); }
.form-control, .form-select { border-radius: 9px; border-color: #d8e0ec; min-height: 38px; }
.form-control:focus, .form-select:focus {
    border-color: #7ca8ff; box-shadow: 0 0 0 .22rem rgba(37,99,235,.14);
}
.table thead th { background: #f7f9fc; color: #64748b; border-bottom-width: 1px; }
.table tbody tr { transition: background .14s ease; }
.table-hover > tbody > tr:hover > * { background-color: #f2f7ff; }
.badge { letter-spacing: .015em; }
.alert { border: 0; border-radius: var(--gc-radius); box-shadow: 0 6px 18px rgba(22,39,72,.05); }
.gc-empty { padding: 3.5rem 1rem; }
.gc-empty-icon { color: var(--gc-primary); }
.gc-sticky-actions { box-shadow: 0 -8px 25px rgba(22,39,72,.08); }
.gc-quick-actions { display: flex; flex-wrap: wrap; gap: .55rem; }
.gc-quick-actions .btn { min-height: 40px; }
.gc-stat-link { color: inherit; text-decoration: none; display: block; }
.gc-stat-link:hover .gc-stat { border-color: #9dbdff; transform: translateY(-2px); }
.gc-stat-link .gc-stat { transition: transform .16s ease, border-color .16s ease; }

@media (max-width: 991.98px) {
    .gc-sidebar { box-shadow: 12px 0 36px rgba(9,21,42,.28); }
    .gc-topbar { padding: .7rem 1rem; }
    .gc-content { padding: 1rem .85rem 2rem; }
    .gc-footer { padding: .9rem 1rem; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* ---------- Inscription : parcours d'onboarding -------------------- */
.gc-auth {
    display: grid; place-items: center; padding: clamp(1rem, 3vw, 3rem);
    background:
        radial-gradient(circle at 5% 5%, rgba(58,130,246,.30), transparent 28rem),
        radial-gradient(circle at 95% 95%, rgba(20,184,166,.18), transparent 28rem),
        linear-gradient(135deg, #0d1729, #172d50);
}
.gc-auth-wrap-wide { max-width: 1120px; width: 100%; margin: 0 auto; }
.gc-auth-wrap-wide > .gc-auth-brand { display: none; }
.gc-register-shell {
    display: grid; grid-template-columns: minmax(270px, .78fr) minmax(0, 1.22fr);
    overflow: hidden; border-radius: 22px; background: #fff;
    box-shadow: 0 30px 70px rgba(3,12,31,.36);
}
.gc-register-aside {
    min-height: 100%; padding: clamp(2rem, 4vw, 4rem) clamp(1.7rem, 3.2vw, 3.4rem);
    color: #dbeafe; background:
        linear-gradient(165deg, rgba(16,27,49,.94), rgba(24,78,119,.92)),
        #102142;
}
.gc-register-logo { display: inline-block; color: #fff; font-size: 1.55rem; font-weight: 800; text-decoration: none; letter-spacing: -.035em; margin-bottom: 3.5rem; }
.gc-register-kicker, .gc-register-step { display: inline-flex; border-radius: 99px; padding: .38rem .68rem; font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.gc-register-kicker { color: #bff8ef; background: rgba(20,184,166,.16); }
.gc-register-aside h1 { margin: 1.15rem 0 .9rem; color: #fff; font-size: clamp(1.8rem, 3vw, 2.55rem); line-height: 1.12; letter-spacing: -.045em; }
.gc-register-aside p { color: #b9c9e0; line-height: 1.65; }
.gc-register-benefits { margin: 2rem 0 0; padding: 0; list-style: none; }
.gc-register-benefits li { position: relative; padding: .55rem 0 .55rem 1.65rem; color: #e3ecfb; font-size: .93rem; }
.gc-register-benefits li::before { content: '✓'; position: absolute; left: 0; color: #5eead4; font-weight: 800; }
.gc-register-help { margin-top: 3rem; font-size: .88rem; color: #b9c9e0; }.gc-register-help a { color: #fff; font-weight: 700; }
.gc-register-card { padding: clamp(1.5rem, 3.6vw, 3.2rem); background: #fff; }
.gc-register-card-head { margin-bottom: 1.65rem; }.gc-register-step { color: #1d4ed8; background: #eaf1ff; }.gc-register-card h2 { margin: .7rem 0 .3rem; font-size: 1.65rem; letter-spacing: -.035em; color: #172b4d; }.gc-register-card-head p, .gc-register-section-title p { margin: 0; color: #718199; font-size: .9rem; }
.gc-register-section { margin: 1.4rem 0; padding: 1.25rem; border: 1px solid #e4ebf5; border-radius: 15px; background: #fbfcff; }
.gc-register-section-title { display: flex; gap: .75rem; align-items: flex-start; margin-bottom: 1rem; }.gc-register-section-title > span { display: grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; color: #fff; background: #2563eb; font-size: .78rem; font-weight: 800; }.gc-register-section-title h3 { margin: 0 0 .15rem; font-size: 1rem; color: #253852; }
.gc-register-card .form-label { color: #263852; font-weight: 650; }.gc-register-card .form-control, .gc-register-card .form-select { min-height: 46px; background: #fff; border-color: #cad7e9; }.gc-register-card textarea.form-control { min-height: 84px; }.gc-register-card .form-control:focus, .gc-register-card .form-select:focus { background: #fff; border-color: #4f8cff; box-shadow: 0 0 0 .24rem rgba(37,99,235,.14); }
.gc-register-terms { margin: 1.25rem 0; padding: .9rem 1rem; border-radius: 11px; background: #f1f6ff; color: #435776; }.gc-register-submit { width: 100%; min-height: 50px; font-size: 1rem; }
.gc-business-profile { display: flex; gap: .8rem; padding: 1rem 1.05rem; border: 1px solid #b9e8df; border-radius: 12px; background: linear-gradient(110deg, #f0fdfa, #f5f9ff); color: #28435c; }
.gc-business-profile[hidden] { display: none; }.gc-business-profile-icon { display: grid; place-items: center; flex: 0 0 29px; width: 29px; height: 29px; margin-top: .05rem; border-radius: 50%; color: #fff; background: #0f9f8c; font-weight: 800; }.gc-business-profile-title { margin: 0 0 .18rem; color: #134e4a; font-weight: 750; }.gc-business-profile-text { margin: 0; font-size: .88rem; line-height: 1.5; }.gc-business-profile-list { display: grid; gap: .2rem; margin: .6rem 0 0; padding-left: 1.1rem; font-size: .82rem; color: #49627c; }
@media (max-width: 800px) { .gc-auth { display: block; padding: 0; }.gc-auth-wrap-wide { max-width: none; }.gc-register-shell { min-height: 100vh; border-radius: 0; grid-template-columns: 1fr; }.gc-register-aside { min-height: auto; padding: 1.7rem 1.4rem; }.gc-register-logo { margin-bottom: 1.7rem; }.gc-register-aside h1 { font-size: 1.65rem; }.gc-register-aside p, .gc-register-benefits { display: none; }.gc-register-help { margin-top: 1rem; }.gc-register-card { padding: 1.5rem 1rem 2rem; }.gc-register-section { padding: 1rem; } }

/* =====================================================================
   GesCom — système visuel institutionnel.
   Cette couche ne cible que la présentation : les classes, identifiants,
   formulaires, URLs et comportements métier existants sont conservés.
   ===================================================================== */
:root {
    --gc-sidebar-w: 296px;
    --gc-bg: #f4f7fb;
    --gc-surface: #ffffff;
    --gc-surface-soft: #f8fafc;
    --gc-ink: #0f172a;
    --gc-muted: #718096;
    --gc-subtle: #90a0b8;
    --gc-border: #e2e8f0;
    --gc-border-strong: #d7e1ec;
    --gc-primary: #244d43;
    --gc-primary-dark: #173d35;
    --gc-mint: #e8f6f1;
    --gc-mint-border: #b7ead8;
    --gc-radius-sm: 12px;
    --gc-radius: 18px;
    --gc-radius-lg: 24px;
    --gc-shadow: 0 2px 8px rgba(15, 23, 42, .045);
    --gc-shadow-raised: 0 12px 28px rgba(15, 23, 42, .07);
}

html { min-width: 320px; background: var(--gc-bg); }
body {
    min-width: 320px;
    background: var(--gc-bg);
    color: var(--gc-ink);
    font-family: Inter, Manrope, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: .94rem;
    line-height: 1.5;
}
body::selection { color: var(--gc-ink); background: #cfeee2; }
a { color: #245f52; text-underline-offset: 3px; }
a:hover { color: #173d35; }

/* Structure, navigation et en-tête */
.gc-sidebar {
    width: var(--gc-sidebar-w);
    color: var(--gc-ink);
    background: var(--gc-surface);
    border-right: 1px solid var(--gc-border);
    box-shadow: none;
    padding: 0 14px 22px;
}
.gc-sidebar-brand {
    min-height: 118px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 24px 12px 20px;
    border-bottom: 1px solid var(--gc-border);
}
.gc-sidebar-brand small { color: var(--gc-muted) !important; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }
.gc-sidebar-logo { max-height: 42px; max-width: 190px; margin: 0 0 9px; border-radius: 10px; }
.gc-logo { color: var(--gc-ink); font-size: 1.26rem; font-weight: 800; letter-spacing: -.035em; }
.gc-nav { padding: 17px 0 10px; }
.gc-nav-group {
    padding: 23px 12px 8px;
    color: var(--gc-subtle);
    font-size: .67rem;
    font-weight: 800;
    letter-spacing: .13em;
}
.gc-nav-link {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 45px;
    margin: 3px 0;
    padding: 10px 13px 10px 18px;
    color: #354257;
    border: 1px solid transparent;
    border-radius: 14px;
    font-size: .91rem;
    font-weight: 600;
    transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease;
}
.gc-nav-link::before {
    content: '';
    width: 8px;
    height: 8px;
    flex: 0 0 8px;
    margin-right: 12px;
    border: 1.5px solid currentColor;
    border-radius: 3px;
    opacity: .7;
}
.gc-nav-link:hover { color: var(--gc-primary); background: #f5faf8; border-color: #e2f0ea; transform: none; }
.gc-nav-link.active { color: #204d42; background: var(--gc-mint); border-color: var(--gc-mint-border); box-shadow: none; }
.gc-nav-link.active::before { border-radius: 50%; background: currentColor; opacity: .9; }
.gc-nav-pos { color: #2b6255; }
.gc-nav-pos.active { color: #204d42; }
.gc-main { background: var(--gc-bg); }
@media (min-width: 992px) { .gc-main { margin-left: var(--gc-sidebar-w); } }
.gc-topbar {
    min-height: 92px;
    gap: 16px;
    padding: 15px 36px;
    color: var(--gc-ink);
    background: rgba(255, 255, 255, .94);
    border-bottom: 1px solid var(--gc-border);
    box-shadow: none;
    backdrop-filter: blur(14px);
}
.gc-topbar-heading { display: grid; gap: 2px; }
.gc-topbar-kicker { color: var(--gc-subtle); font-size: .66rem; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.gc-title { color: var(--gc-ink); font-size: clamp(1.18rem, 2vw, 1.42rem); font-weight: 800; letter-spacing: -.035em; }
.gc-topbar .btn-light, .gc-topbar .btn-outline-secondary { background: #fff; border-color: var(--gc-border-strong); color: #334155; }
.gc-topbar .form-select { min-height: 40px; background-color: var(--gc-surface-soft); }
.gc-notif-btn { display: inline-grid; width: 40px; min-height: 40px; place-items: center; padding: 0; border-radius: 13px; }
.gc-user-menu { display: inline-flex; align-items: center; gap: 9px; min-height: 42px; padding: 5px 10px 5px 6px; text-align: left; }
.gc-user-avatar { display: inline-grid; width: 29px; height: 29px; place-items: center; color: #245f52; border-radius: 50%; background: var(--gc-mint); }
.gc-content { max-width: 1800px; padding: 32px 36px 44px; }
.gc-footer { padding: 18px 36px; color: var(--gc-muted); background: transparent; border-top: 0; font-size: .75rem; }

/* Cartes, statistiques et contenu */
.gc-card, .card, .gc-stat {
    background: var(--gc-surface);
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius);
    box-shadow: var(--gc-shadow);
}
.gc-card { overflow: hidden; }
.gc-card-head {
    min-height: 62px;
    padding: 17px 22px;
    color: var(--gc-ink);
    background: #fff;
    border-bottom: 1px solid var(--gc-border);
    font-size: .98rem;
    font-weight: 750;
}
.gc-card-body { padding: 22px; }
.card-body { padding: 24px; }
.gc-stats { gap: 18px; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
.gc-stat { min-height: 153px; padding: 23px 25px; overflow: hidden; }
.gc-stat::after { display: none; }
.gc-stat-label { color: #61738f; font-size: .83rem; font-weight: 700; letter-spacing: -.01em; text-transform: none; }
.gc-stat-value { margin-top: 17px; color: var(--gc-ink); font-size: clamp(1.55rem, 2.4vw, 2.08rem); font-weight: 800; letter-spacing: -.055em; }
.gc-stat-hint { margin-top: 7px; color: var(--gc-muted); font-size: .79rem; }
.gc-stat.is-success, .gc-stat.is-warning, .gc-stat.is-danger { border-left: 1px solid var(--gc-border); }
.gc-stat.is-success { background: linear-gradient(135deg, #fff 74%, #f1fbf7); }
.gc-stat.is-warning { background: linear-gradient(135deg, #fff 74%, #fffaf0); }
.gc-stat.is-danger { background: linear-gradient(135deg, #fff 74%, #fff6f6); }
.gc-stat-link:hover .gc-stat { border-color: var(--gc-mint-border); transform: translateY(-1px); }
.gc-quick-actions { gap: 10px; margin-bottom: 26px !important; }
.gc-chart-wrap { height: 290px; }

/* Boutons, formulaires et messages */
.btn {
    min-height: 40px;
    padding: 8px 15px;
    border-radius: var(--gc-radius-sm);
    font-size: .88rem;
    font-weight: 700;
    line-height: 1.35;
    transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn:focus-visible, .form-control:focus, .form-select:focus, .form-check-input:focus {
    outline: 0;
    box-shadow: 0 0 0 4px rgba(63, 117, 102, .14);
}
.btn-primary { background: var(--gc-primary); border-color: var(--gc-primary); box-shadow: none; }
.btn-primary:hover, .btn-primary:focus { background: var(--gc-primary-dark); border-color: var(--gc-primary-dark); }
.btn-success { background: #357665; border-color: #357665; }
.btn-success:hover, .btn-success:focus { background: #285e50; border-color: #285e50; }
.btn-danger { background: #b85057; border-color: #b85057; }
.btn-outline-primary { color: #245f52; border-color: #b9d8cc; background: #fff; }
.btn-outline-primary:hover { color: #173d35; background: var(--gc-mint); border-color: #8ecfb8; }
.btn-outline-secondary { color: #415168; border-color: var(--gc-border-strong); background: #fff; }
.btn-outline-secondary:hover { color: var(--gc-ink); background: var(--gc-surface-soft); border-color: #cbd7e4; }
.btn-outline-danger { color: #a8464c; border-color: #e8c3c6; }
.btn-outline-danger:hover { background: #fff1f2; color: #913a40; border-color: #dcaeb2; }
.btn:disabled, .btn.disabled { opacity: .5; transform: none; }
.form-label { margin-bottom: 7px; color: #34445b; font-size: .84rem; font-weight: 700; }
.form-control, .form-select {
    min-height: 46px;
    padding: 10px 13px;
    color: var(--gc-ink);
    border: 1px solid var(--gc-border-strong);
    border-radius: var(--gc-radius-sm);
    background: #fff;
    box-shadow: none;
}
.form-control::placeholder { color: #a4b0c0; }
.form-control:focus, .form-select:focus { border-color: #7cb7a4; background: #fff; }
.form-control-sm, .form-select-sm { min-height: 38px; padding: 6px 10px; border-radius: 10px; }
textarea.form-control { min-height: 104px; }
.form-check-input { width: 1.12em; height: 1.12em; border-color: #bfcddd; }
.form-check-input:checked { background-color: #357665; border-color: #357665; }
.gc-help { color: var(--gc-muted); font-size: .78rem; }
.alert { padding: 15px 18px; border: 1px solid transparent; border-radius: var(--gc-radius-sm); box-shadow: none; }
.alert-info { color: #28596b; background: #eef8fb; border-color: #cbeaf1; }
.alert-success { color: #245c4a; background: #edf9f3; border-color: #c8ecd9; }
.alert-warning { color: #7a5a15; background: #fff9e8; border-color: #f5e5ad; }
.alert-danger { color: #8d4147; background: #fff3f4; border-color: #f3cdd0; }

/* Tableaux, filtres, badges et pagination */
.gc-filters {
    gap: 14px;
    margin-bottom: 20px !important;
    padding: 17px 19px;
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius);
    background: #fff;
    box-shadow: var(--gc-shadow);
}
.gc-filters .form-control, .gc-filters .form-select { min-width: 160px; }
.gc-table-wrap { border-radius: inherit; }
.table { margin-bottom: 0; color: #34445b; }
.table > :not(caption) > * > * { padding: 14px 16px; border-bottom-color: #edf1f5; vertical-align: middle; }
.table thead th { color: #7a8aa1; background: #fbfcfd; border-bottom: 1px solid var(--gc-border); font-size: .69rem; font-weight: 800; letter-spacing: .095em; }
.table-hover > tbody > tr:hover > * { background-color: #f5faf8; }
.table a { font-weight: 650; text-decoration: none; }
.badge, .gc-badge-soft { padding: .4em .7em; border-radius: 999px; font-size: .7rem; font-weight: 750; letter-spacing: .01em; }
.bg-success { color: #236247 !important; background-color: #dff5e9 !important; }
.bg-warning, .bg-warning.text-dark { color: #805b0b !important; background-color: #fff1c9 !important; }
.bg-danger { color: #963d44 !important; background-color: #fde7e9 !important; }
.bg-primary { color: #275f72 !important; background-color: #e0f1f5 !important; }
.bg-secondary { color: #59697e !important; background-color: #edf1f5 !important; }
.pagination { gap: 5px; }
.page-link { min-width: 38px; border: 1px solid var(--gc-border); border-radius: 10px !important; color: #415168; text-align: center; }
.page-item.active .page-link { color: #204d42; background: var(--gc-mint); border-color: var(--gc-mint-border); }

/* Modales, listes et états vides */
.modal-content { overflow: hidden; border: 1px solid var(--gc-border); border-radius: var(--gc-radius-lg); box-shadow: var(--gc-shadow-raised); }
.modal-header, .modal-footer { padding: 18px 22px; border-color: var(--gc-border); }
.modal-body { padding: 22px; }
.modal-title { color: var(--gc-ink); font-weight: 800; }
.dropdown-menu { padding: 8px; border: 1px solid var(--gc-border); border-radius: 14px; box-shadow: var(--gc-shadow-raised); }
.dropdown-item { border-radius: 9px; padding: 9px 11px; }
.dropdown-item:hover, .dropdown-item:focus { color: var(--gc-primary); background: var(--gc-mint); }
.list-group-item { padding: 14px 18px; border-color: #edf1f5; }
.gc-empty { padding: 58px 22px; color: var(--gc-muted); }
.gc-empty-icon { color: #6b9b8d; font-size: 2.25rem; }
.gc-danger-zone { border-color: #f1c7ca; background: #fff8f8; border-radius: var(--gc-radius); }
.gc-sticky-actions { padding: 15px 20px; background: rgba(255,255,255,.96); border-color: var(--gc-border); box-shadow: 0 -8px 24px rgba(15,23,42,.05); }
.gc-permission-grid { gap: 10px 18px; }

/* Pages d'accès, accueil et erreurs */
.gc-auth {
    padding: clamp(24px, 6vw, 76px) 18px;
    background: linear-gradient(135deg, #f7fbfa 0%, #edf4f7 100%);
}
.gc-auth-wrap { max-width: 500px; }
.gc-auth-brand { margin-bottom: 22px; color: var(--gc-ink); }
.gc-auth-brand .gc-logo { color: var(--gc-ink); font-size: 1.8rem; }
.gc-auth-brand p { color: var(--gc-muted) !important; }
.gc-auth .card { border-radius: var(--gc-radius-lg); box-shadow: var(--gc-shadow-raised); }
.gc-auth .card-body { padding: clamp(25px, 4vw, 38px); }
.gc-register-shell { border: 1px solid var(--gc-border); border-radius: 28px; box-shadow: var(--gc-shadow-raised); }
.gc-register-aside { color: #e6f6f0; background: #244d43; }
.gc-register-aside h1, .gc-register-logo { color: #fff; }
.gc-register-aside p, .gc-register-help { color: #cce4da; }
.gc-register-kicker { color: #245f52; background: #ddf5ec; }
.gc-register-benefits li { color: #e6f6f0; }
.gc-register-benefits li::before { color: #9fe2c8; }
.gc-register-card { background: #fff; }
.gc-register-section { border-color: var(--gc-border); border-radius: var(--gc-radius); background: #fbfcfd; }
.gc-register-section-title > span { background: #357665; }
.gc-register-step { color: #245f52; background: var(--gc-mint); }
.gc-register-terms { color: #405a66; background: #f1f8f5; }
.gc-business-profile { border-color: var(--gc-mint-border); background: #f1faf6; }

@media (max-width: 991.98px) {
    .gc-sidebar { width: min(86vw, 320px); padding: 0 12px 22px; }
    .gc-topbar { min-height: 72px; padding: 12px 17px; }
    .gc-topbar-kicker { display: none; }
    .gc-content { padding: 22px 17px 32px; }
    .gc-footer { padding: 16px 17px; }
}
@media (max-width: 575.98px) {
    .gc-topbar { gap: 9px; }
    .gc-title { font-size: 1.05rem; }
    .gc-topbar > .ms-auto { gap: 6px !important; }
    .gc-topbar .dropdown:last-child small { display: none; }
    .gc-content { padding: 18px 13px 28px; }
    .gc-card-head, .gc-card-body, .card-body { padding-left: 16px; padding-right: 16px; }
    .gc-stat { min-height: 136px; padding: 19px; }
    .gc-filters { padding: 14px; gap: 10px; }
    .gc-filters > * { width: 100%; }
    .gc-filters .form-control, .gc-filters .form-select { width: 100%; min-width: 0; }
    .table > :not(caption) > * > * { padding: 12px 13px; }
    .gc-footer { flex-direction: column; gap: 4px; }
}

/* Correctifs de finition : icônes Bootstrap, logo et KPI compacts. */
.gc-sidebar-logo {
    display: block;
    width: 100%;
    max-width: 100%;
    height: 72px;
    max-height: none;
    margin: 0 0 12px;
    padding: 4px;
    object-fit: contain;
    object-position: center;
    border: 1px solid #edf1f5;
    border-radius: 12px;
    background: #fff;
}
.gc-nav-link::before {
    content: "\f3f4";
    width: 18px;
    height: auto;
    margin-right: 12px;
    border: 0;
    border-radius: 0;
    background: none;
    font-family: "bootstrap-icons" !important;
    font-size: 1rem;
    font-style: normal;
    font-weight: 400;
    line-height: 1;
    opacity: .85;
}
.gc-nav-link.active::before { border-radius: 0; background: none; opacity: 1; }
.gc-nav-link[href*="/pos"]::before, .gc-nav-link[href*="/cash"]::before { content: "\f246"; }
.gc-nav-link[href*="/sales"]::before { content: "\f50f"; }
.gc-nav-link[href*="/customers"]::before { content: "\f4d0"; }
.gc-nav-link[href*="/products"]::before { content: "\f1c7"; }
.gc-nav-link[href*="/categories"]::before { content: "\f5b2"; }
.gc-nav-link[href*="/brands"]::before { content: "\f1a2"; }
.gc-nav-link[href*="/units"]::before { content: "\f523"; }
.gc-nav-link[href*="/stock"]::before { content: "\f685"; }
.gc-nav-link[href*="/inventories"]::before { content: "\f28b"; }
.gc-nav-link[href*="/transfers"]::before { content: "\f12b"; }
.gc-nav-link[href*="/suppliers"]::before { content: "\f5ea"; }
.gc-nav-link[href*="/purchases"]::before { content: "\f179"; }
.gc-nav-link[href*="/expenses"]::before { content: "\f632"; }
.gc-nav-link[href*="/restaurant"]::before { content: "\f7eb"; }
.gc-nav-link[href*="/reports"]::before { content: "\f17c"; }
.gc-nav-link[href*="/users"]::before { content: "\f4cf"; }
.gc-nav-link[href*="/roles"]::before { content: "\f538"; }
.gc-nav-link[href*="/settings"]::before { content: "\f3e5"; }
.gc-nav-link[href*="/audit"], .gc-nav-link[href*="/logs"] { }
.gc-nav-link[href*="/audit"]::before, .gc-nav-link[href*="/logs"]::before { content: "\f444"; }
.gc-nav-link[href*="/businesses"]::before { content: "\f1dd"; }
.gc-nav-link[href*="/profile"]::before { content: "\f8a7"; }
.gc-stat-value {
    font-size: clamp(1.22rem, 1.55vw, 1.62rem);
    line-height: 1.28;
    letter-spacing: -.04em;
}
@media (max-width: 575.98px) {
    .gc-sidebar-logo { height: 64px; }
    .gc-stat-value { font-size: 1.38rem; }
}

/* Navigation fixe façon application : uniquement sur téléphone. */
.gc-mobile-nav { display: none; }

@media (max-width: 767.98px) {
    .gc-app { padding-bottom: calc(78px + env(safe-area-inset-bottom, 0px)); }
    .gc-sidebar { z-index: 1055; }

    .gc-mobile-nav {
        position: fixed;
        z-index: 1040;
        right: 0;
        bottom: 0;
        left: 0;
        display: flex;
        align-items: stretch;
        justify-content: space-around;
        min-height: 74px;
        padding: 7px max(8px, env(safe-area-inset-right, 0px)) calc(7px + env(safe-area-inset-bottom, 0px)) max(8px, env(safe-area-inset-left, 0px));
        border-top: 1px solid var(--gc-border);
        background: rgba(255, 255, 255, .97);
        box-shadow: 0 -6px 22px rgba(15, 23, 42, .08);
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }

    .gc-mobile-nav-link,
    .gc-mobile-nav-more {
        display: flex;
        flex: 1 1 0;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        min-width: 0;
        min-height: 58px;
        gap: 4px;
        padding: 3px 4px;
        border: 0;
        border-radius: 14px;
        background: transparent;
        color: var(--gc-muted);
        font: inherit;
        font-size: .66rem;
        font-weight: 700;
        line-height: 1.1;
        text-align: center;
        text-decoration: none;
        transition: color .18s ease, background-color .18s ease, transform .18s ease;
    }

    .gc-mobile-nav-link i,
    .gc-mobile-nav-more i {
        display: grid;
        width: 31px;
        height: 29px;
        place-items: center;
        border-radius: 10px;
        color: inherit;
        font-size: 1.22rem;
        font-style: normal;
        line-height: 1;
    }

    .gc-mobile-nav-link span,
    .gc-mobile-nav-more span {
        overflow: hidden;
        max-width: 100%;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .gc-mobile-nav-link.active,
    .gc-mobile-nav-more.active,
    .gc-mobile-nav-more[aria-expanded="true"] { color: var(--gc-primary); }

    .gc-mobile-nav-link.active i,
    .gc-mobile-nav-more.active i,
    .gc-mobile-nav-more[aria-expanded="true"] i {
        background: var(--gc-mint);
        color: var(--gc-primary-dark);
    }

    .gc-mobile-nav-link:active,
    .gc-mobile-nav-more:active { transform: scale(.96); }

    .gc-mobile-nav-link:focus-visible,
    .gc-mobile-nav-more:focus-visible {
        outline: 3px solid rgba(63, 117, 102, .28);
        outline-offset: 2px;
    }
}

@media (min-width: 768px) {
    .gc-mobile-nav { display: none !important; }
}

/* Identite plateforme : le logo NimbaCom est distinct des logos propres aux
   commerces, qui restent affiches dans leur espace et sur leurs documents. */
.gc-platform-logo-link { display:inline-flex; justify-content:center; text-decoration:none; }
.gc-platform-logo { display:block; width:174px; height:86px; object-fit:contain; border-radius:12px; }
.gc-auth-brand .gc-platform-logo { width:190px; height:96px; margin:0 auto 5px; }
.gc-register-logo { line-height:0; }
.gc-register-logo img { display:block; width:190px; height:98px; object-fit:contain; border-radius:12px; }
.gc-platform-logo-sidebar { width:172px; height:82px; margin:0 0 6px; }
@media (max-width:800px) { .gc-register-logo img { width:150px; height:72px; } }

/* Inscription : l'écran large est volontairement distinct du petit formulaire
   de connexion. Les informations de compte restent lisibles et saisissables. */
.gc-auth:has(.gc-register-shell) { display:block; min-height:100vh; padding:0; background:#f5f8fb; }
.gc-auth-wrap.gc-auth-wrap-wide { display:block; width:100%; max-width:1440px; min-height:100vh; margin:0 auto; }
.gc-register-shell { display:grid; grid-template-columns:minmax(420px,1fr) minmax(0,1fr); min-height:100vh; border:0; border-radius:0; box-shadow:0 18px 50px rgba(15,23,42,.10); }
.gc-register-aside { display:flex; flex-direction:column; justify-content:center; min-height:100%; padding:clamp(48px,7vw,112px) clamp(42px,7vw,120px); color:#e7f5ef; background:linear-gradient(160deg,#0e2e50 0%,#173f70 52%,#245d52 100%); }
.gc-register-logo { margin:0 0 clamp(48px,8vh,108px); }.gc-register-logo img { width:220px; height:112px; object-fit:contain; border-radius:0; }
.gc-register-kicker { width:max-content; color:#1d5a4d; background:#dcf5ec; }
.gc-register-aside h1 { max-width:500px; margin:24px 0 18px; font-size:clamp(2.45rem,4.2vw,4.35rem); line-height:1.05; letter-spacing:-.065em; }
.gc-register-aside p { max-width:470px; color:#c9d9ed; font-size:1.05rem; line-height:1.68; }.gc-register-benefits { display:grid; gap:5px; margin-top:36px; }.gc-register-benefits li { max-width:440px; padding:.65rem 0 .65rem 1.8rem; font-size:1rem; }.gc-register-help { margin-top:48px; font-size:.95rem; }
.gc-register-card { padding:clamp(44px,6vw,88px); background:#fff; }.gc-register-card > form,.gc-register-card-head { width:100%; max-width:680px; margin-right:auto; margin-left:auto; }
.gc-register-card-head { margin-bottom:34px; }.gc-register-card h2 { margin-top:13px; font-size:clamp(2rem,3vw,2.65rem); line-height:1.12; }.gc-register-card-head p { max-width:470px; font-size:1rem; line-height:1.55; }
.gc-register-section { margin:26px 0; padding:26px; border-radius:20px; background:#fbfcfe; }.gc-register-section-title { gap:13px; margin-bottom:22px; }.gc-register-section-title > span { flex-basis:36px; width:36px; height:36px; background:#357665; font-size:.9rem; }.gc-register-section-title h3 { font-size:1.1rem; }.gc-register-section-title p { font-size:.88rem; line-height:1.45; }
.gc-register-card .form-label { margin-bottom:8px; color:#263852; font-size:.9rem; font-weight:800; }.gc-register-card .form-control,.gc-register-card .form-select { min-height:54px; padding:12px 14px; border-radius:13px; font-size:1rem; }.gc-register-card textarea.form-control { min-height:116px; }.gc-register-card .gc-help { margin-top:7px; font-size:.78rem; line-height:1.45; }.gc-register-terms { padding:16px 18px; border-radius:14px; font-size:.9rem; }.gc-register-submit { min-height:56px; border-radius:14px; font-size:1.03rem; }
.gc-business-profile { padding:18px; border-radius:15px; }.gc-business-profile-icon { flex-basis:34px; width:34px; height:34px; }
@media (max-width:1100px) { .gc-auth-wrap.gc-auth-wrap-wide { max-width:1120px; }.gc-register-aside { padding:48px 46px; }.gc-register-aside h1 { font-size:clamp(2.2rem,4vw,3.3rem); }.gc-register-card { padding:48px 38px; } }
@media (max-width:860px) { .gc-auth:has(.gc-register-shell) { padding:0; }.gc-auth-wrap.gc-auth-wrap-wide { max-width:none; }.gc-register-shell { grid-template-columns:1fr; min-height:0; }.gc-register-aside { min-height:auto; padding:36px 24px 30px; }.gc-register-logo { margin-bottom:30px; }.gc-register-logo img { width:160px; height:82px; }.gc-register-aside h1 { max-width:560px; margin:18px 0 10px; font-size:clamp(2rem,8vw,3rem); }.gc-register-aside p { font-size:.96rem; }.gc-register-benefits { display:none; }.gc-register-help { margin-top:22px; }.gc-register-card { padding:32px 18px 44px; }.gc-register-card > form,.gc-register-card-head { max-width:680px; }.gc-register-section { padding:18px; }.gc-register-card h2 { font-size:2rem; } }
@media (max-width:520px) { .gc-register-aside { padding:28px 18px 24px; }.gc-register-logo { margin-bottom:22px; }.gc-register-logo img { width:136px; height:68px; }.gc-register-aside h1 { font-size:2rem; }.gc-register-card { padding:27px 13px 36px; }.gc-register-section { margin:19px 0; padding:15px; border-radius:16px; }.gc-register-card .form-control,.gc-register-card .form-select { min-height:52px; }.gc-register-section .row { --bs-gutter-x: .75rem; } }
