/* ============================================================================
 * sogim-theme.css — Thème visuel SOGIM (REFONTE_UI Étape 1)
 * ----------------------------------------------------------------------------
 * Identité des maquettes : dégradé bleu sidebar, accent rouge SOGIM #d81f2a,
 * polices Baloo 2 (titres/marque) + Inter (corps).
 *
 * Principe : RETHEME PAR VARIABLES (Bootstrap 5.3 `--bs-*` + AdminLTE `--lte-*`),
 * overrides ciblés seulement. On peint le mur, pas chaque brique.
 *
 * ⚠️ Le rouge accent (#d81f2a, marque) est réservé aux CTA signature (bouton de
 * connexion, accès module, item de nav actif) via .btn-sogim / marqueurs dédiés.
 * Il n'est JAMAIS posé sur une surface d'erreur : `--bs-danger`, `.alert-danger`,
 * `.is-invalid`, `.btn-outline-danger` restent aux valeurs Bootstrap → le rouge
 * d'erreur et le rouge de marque demeurent visuellement distincts.
 *
 * Chargé APRÈS Bootstrap + AdminLTE dans base.html.twig pour surcharger.
 * Ne concerne NI le PDF (autonome) NI le login (Étape 4).
 * ========================================================================== */

/* ── Tokens de marque + retheme Bootstrap ─────────────────────────────────── */
:root {
    /* Primaire de marque = bleu SOGIM (distinct du rouge accent et du rouge erreur) */
    --bs-primary: #2f6fb0;
    --bs-primary-rgb: 47, 111, 176;
    --sogim-primary-hover: #275f97;

    /* Liens */
    --bs-link-color: #2f6fb0;
    --bs-link-color-rgb: 47, 111, 176;
    --bs-link-hover-color: #275f97;
    --bs-link-hover-color-rgb: 39, 95, 151;

    /* Accent signature (CTA) — rouge SOGIM. NE PAS utiliser pour l'erreur. */
    --sogim-accent: #d81f2a;
    --sogim-accent-rgb: 216, 31, 42;
    --sogim-accent-hover: #b81824;

    /* Sidebar (dégradé + textes) */
    --sogim-sidebar-top: #1f3f63;
    --sogim-sidebar-bottom: #15304d;
    --sogim-sidebar-text: #c3d0de;

    /* Couleurs de module (icônes sidebar + tuiles hub Étapes 2-3) */
    --sogim-stock: #2e9e5b;
    --sogim-achats: #2f6fb0;
    --sogim-maintenance: #e8912a;
    --sogim-production: #7b3fa0;

    /* Fonds & rayons (façon maquette) */
    --bs-body-bg: #eef1f5;
    --sogim-input-bg: #f8f9fb;
    --sogim-card-radius: 0.65rem;
    --sogim-card-shadow: 0 1px 2px rgba(20, 40, 70, 0.06), 0 4px 16px rgba(20, 40, 70, 0.06);

    /* Familles typographiques */
    --sogim-font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --sogim-font-display: "Baloo 2", var(--sogim-font-body);
    --bs-body-font-family: var(--sogim-font-body);
}

/* ── Typographie ──────────────────────────────────────────────────────────── */
body {
    font-family: var(--sogim-font-body);
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.card-title,
.app-content-header h3 {
    font-family: var(--sogim-font-display);
    font-weight: 600;
    letter-spacing: .1px;
}

/* ── Boutons primaires (retheme bleu marque) ──────────────────────────────── */
.btn-primary {
    --bs-btn-bg: var(--bs-primary);
    --bs-btn-border-color: var(--bs-primary);
    --bs-btn-hover-bg: var(--sogim-primary-hover);
    --bs-btn-hover-border-color: var(--sogim-primary-hover);
    --bs-btn-active-bg: var(--sogim-primary-hover);
    --bs-btn-active-border-color: var(--sogim-primary-hover);
    --bs-btn-disabled-bg: var(--bs-primary);
    --bs-btn-disabled-border-color: var(--bs-primary);
}
.btn-outline-primary {
    --bs-btn-color: var(--bs-primary);
    --bs-btn-border-color: var(--bs-primary);
    --bs-btn-hover-bg: var(--bs-primary);
    --bs-btn-hover-border-color: var(--bs-primary);
    --bs-btn-active-bg: var(--sogim-primary-hover);
    --bs-btn-active-border-color: var(--sogim-primary-hover);
}

/* ── CTA signature SOGIM (rouge accent) — usage réservé, pas pour l'erreur ── */
.btn-sogim {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--sogim-accent);
    --bs-btn-border-color: var(--sogim-accent);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--sogim-accent-hover);
    --bs-btn-hover-border-color: var(--sogim-accent-hover);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--sogim-accent-hover);
    --bs-btn-active-border-color: var(--sogim-accent-hover);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--sogim-accent);
    --bs-btn-disabled-border-color: var(--sogim-accent);
    box-shadow: 0 2px 8px rgba(var(--sogim-accent-rgb), 0.30);
}

/* ── Cards (rayon + ombre douce) ──────────────────────────────────────────── */
.card {
    --bs-card-border-color: rgba(20, 40, 70, 0.08);
    border-radius: var(--sogim-card-radius);
    box-shadow: var(--sogim-card-shadow);
}
.card > .card-header:first-child {
    border-top-left-radius: var(--sogim-card-radius);
    border-top-right-radius: var(--sogim-card-radius);
}

/* ── Formulaires (fond input façon maquette) ──────────────────────────────── */
.form-control,
.form-select {
    background-color: var(--sogim-input-bg);
}
.form-control:focus,
.form-select:focus {
    background-color: #fff;
    border-color: rgba(var(--bs-primary-rgb), 0.5);
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.18);
}
/* Ne pas écraser l'état d'erreur : is-invalid garde ses couleurs Bootstrap. */

/* ── Onglets (nav-tabs) : actif souligné en primaire ──────────────────────── */
.nav-tabs .nav-link.active {
    color: var(--bs-primary);
    border-bottom-color: transparent;
    box-shadow: inset 0 -2px 0 var(--bs-primary);
    font-weight: 600;
}

/* ── Sidebar : dégradé bleu + textes + item actif (marqueur accent) ───────── */
.app-sidebar {
    background: linear-gradient(180deg, var(--sogim-sidebar-top) 0%, var(--sogim-sidebar-bottom) 100%) !important;
    --lte-sidebar-color: var(--sogim-sidebar-text);
    --lte-sidebar-hover-color: #ffffff;
    --lte-sidebar-hover-bg: rgba(255, 255, 255, 0.08);
    --lte-sidebar-active-color: #ffffff;
    --lte-sidebar-menu-active-color: #ffffff;
    --lte-sidebar-menu-active-bg: rgba(255, 255, 255, 0.14);
    --lte-sidebar-submenu-color: #a9bacb;
    --lte-sidebar-submenu-hover-color: #ffffff;
    --lte-sidebar-submenu-hover-bg: rgba(255, 255, 255, 0.06);
    --lte-sidebar-submenu-active-color: #ffffff;
    --lte-sidebar-submenu-active-bg: rgba(255, 255, 255, 0.10);
    --lte-sidebar-header-color: #8ea3ba;
}
/* Marque */
.sidebar-brand {
    background: rgba(0, 0, 0, 0.12);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.sidebar-brand .brand-text {
    font-family: var(--sogim-font-display);
    font-weight: 700;
    color: #fff;
    letter-spacing: .3px;
}
/* En-têtes de section */
.app-sidebar .nav-header {
    font-family: var(--sogim-font-display);
    font-weight: 600;
    letter-spacing: .6px;
    text-transform: uppercase;
    font-size: .68rem;
}
/* Item de nav actif = signature accent (liseré rouge à gauche, texte blanc) */
.sidebar-menu .nav-link.active {
    box-shadow: inset 3px 0 0 var(--sogim-accent);
}

/* ── Topbar : liseré de séparation discret ────────────────────────────────── */
.app-header.navbar {
    border-bottom: 1px solid rgba(20, 40, 70, 0.08);
}

/* ── Small-box (widgets dashboard) : rayon cohérent ───────────────────────── */
.small-box {
    border-radius: var(--sogim-card-radius);
}

/* ── Utilitaires de module (réemploi Étapes 2-3 : sidebar + tuiles hub) ───── */
.text-module-stock       { color: var(--sogim-stock) !important; }
.text-module-achats      { color: var(--sogim-achats) !important; }
.text-module-maintenance { color: var(--sogim-maintenance) !important; }
.text-module-production  { color: var(--sogim-production) !important; }
.text-sogim-accent       { color: var(--sogim-accent) !important; }

/* ── Logo de marque « sog+ » (composant _logo.html.twig, REBRANDING) ──────── */
.brand-logo {
    font-family: var(--sogim-font-display);
    font-weight: 800;
    line-height: 1;
    letter-spacing: .2px;
    display: inline-flex;
    align-items: baseline;
    white-space: nowrap;
}
.brand-logo__text { color: inherit; }
/* Le « + » toujours rouge accent, légèrement renforcé pour équilibrer le mot. */
.brand-logo__plus {
    color: var(--sogim-accent);
    font-weight: 800;
    margin-left: .04em;
    font-size: 1.06em;
}
/* Variantes de fond : clair « sog » sur fond bleu, foncé sur fond clair. */
.brand-logo--on-dark  .brand-logo__text { color: #f4f6f8; }
.brand-logo--on-light .brand-logo__text { color: var(--sogim-sidebar-top); }
/* Tailles */
.brand-logo--sm { font-size: 1.15rem; }
.brand-logo--md { font-size: 1.6rem; }
.brand-logo--lg { font-size: 2.4rem; }

/* ── Tuiles du hub « Accueil » (REFONTE_UI Étape 2) ───────────────────────── */
.sogim-tile {
    --tile-color: var(--bs-primary);
    transition: transform .12s ease, box-shadow .12s ease;
    border-top: 3px solid var(--tile-color);
}
.sogim-tile--stock       { --tile-color: var(--sogim-stock); }
.sogim-tile--achats      { --tile-color: var(--sogim-achats); }
.sogim-tile--maintenance { --tile-color: var(--sogim-maintenance); }
.sogim-tile--production  { --tile-color: var(--sogim-production); }
.sogim-tile--bat         { --tile-color: #64748b; }
/* Effet de survol seulement sur les tuiles actionnables */
.sogim-tile:not(.is-soon):hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(20, 40, 70, 0.12);
}
/* En-tête de tuile : icône À GAUCHE, titre à droite, sur une ligne (gap lisible). */
.sogim-tile__head {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    margin-bottom: 0.85rem;
}
.sogim-tile__icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 0.75rem;
    font-size: 1.5rem;
    color: var(--tile-color);
    background: color-mix(in srgb, var(--tile-color) 14%, transparent);
}
.sogim-tile__kpi {
    font-family: var(--sogim-font-display);
    font-weight: 700;
    font-size: 1.35rem;
    line-height: 1.1;
    color: var(--tile-color);
}
.sogim-tile__kpi small { font-weight: 400; }
.sogim-tile.is-soon { opacity: .68; }
/* Bouton « Accéder » aux couleurs du module */
.btn-tile {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--tile-color);
    --bs-btn-border-color: var(--tile-color);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: color-mix(in srgb, var(--tile-color) 85%, #000);
    --bs-btn-hover-border-color: color-mix(in srgb, var(--tile-color) 85%, #000);
    --bs-btn-active-bg: color-mix(in srgb, var(--tile-color) 78%, #000);
    --bs-btn-active-border-color: color-mix(in srgb, var(--tile-color) 78%, #000);
}

/* ── SweetAlert2 : thème SOGIM (MESSAGES Étape 1) ───────────────────────────
   Charge après sweetalert2.min.css → surcharge. Titres Baloo 2, corps Inter,
   rayon/ombre alignés sur les cartes. Boutons = classes Bootstrap (buttonsStyling:false). */
.swal2-popup.sogim-swal,
.swal2-popup.sogim-swal-toast {
    font-family: var(--sogim-font-body);
    border-radius: .75rem;
    box-shadow: 0 .5rem 1.75rem rgba(21, 48, 77, .18);
}
.swal2-popup .swal2-title {
    font-family: var(--sogim-font-display);
    font-weight: 700;
    color: #15304d;
}
.swal2-popup .swal2-html-container { font-family: var(--sogim-font-body); }
/* Toasts : compacts */
.swal2-popup.sogim-swal-toast { padding: .6rem .9rem; }
.swal2-popup.sogim-swal-toast .swal2-title { font-family: var(--sogim-font-body); font-weight: 500; font-size: .92rem; }
/* Espacement des boutons Bootstrap dans l'actions bar */
.swal2-actions { gap: .25rem; }

/* Barre « Filtres avancés » — flip du chevron selon l'état collapse (gabarit Articles) */
.sogim-filtres-toggle .bi-chevron-down { transition: transform .15s ease; }
.sogim-filtres-toggle:not(.collapsed) .bi-chevron-down { transform: rotate(180deg); }

/* Dépliage de ligne DataTables (chevron ► + child-row) — mutualisé Articles + Entrées manuelles */
.expand-cell { cursor: pointer; width: 28px; }
.dt-control::before { content: '▶'; display: inline-block; transition: transform .15s; }
tr.dt-hasChild .dt-control::before { transform: rotate(90deg); }
.expand-row-content { background: #f8f9fa; padding: 12px 18px; font-size: .875rem; }
.expand-row-content .label { color: #6c757d; font-size: .75rem; text-transform: uppercase; }

/* BC_CONTRAT_CONVERSION — unité en lecture seule pour une ligne article (stub honnête) :
   le <select> reste enabled (il POSTE sa valeur) mais verrouillé à l'interaction. */
.bc-unite-locked {
    pointer-events: none;
    background-color: #eef1f5;
    color: #495057;
    cursor: not-allowed;
}

/* FIX_LAYOUT_SIDEBAR_GRID (L3) — la table DataTables suit son conteneur (jamais une largeur px « naturelle »
   gravée par autoWidth). Doublé de `autoWidth:false` dans datatables-defaults.js (config préventive + filet CSS). */
table.dataTable {
    width: 100% !important;
}
