/* ==========================================================================
   GoFeez — Design tokens (SOURCE UNIQUE)
   Toutes les variables de marque + surcharge des variables Bootstrap.
   Aucune valeur hex ne doit exister ailleurs : public/admin référencent --g-* / --bs-*.
   Charte : docs/Gofeez branding/. Spec : docs/spec-design-system.md.
   ========================================================================== */

/* --- Polices auto-hébergées (RGPD : aucun appel Google Fonts) ------------- */
@font-face {
  font-family: "Poppins"; font-style: normal; font-weight: 600; font-display: swap;
  src: url("../fonts/poppins-600.72993dddf88a.woff2") format("woff2");
}
@font-face {
  font-family: "Poppins"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/poppins-700.25b0e113ca7c.woff2") format("woff2");
}
@font-face {
  font-family: "Poppins"; font-style: normal; font-weight: 800; font-display: swap;
  src: url("../fonts/poppins-800.af4d371a1027.woff2") format("woff2");
}
@font-face {
  font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/jakarta-400.657ceef57276.woff2") format("woff2");
}
@font-face {
  font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 500; font-display: swap;
  src: url("../fonts/jakarta-500.885576a6f4c8.woff2") format("woff2");
}
@font-face {
  font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 600; font-display: swap;
  src: url("../fonts/jakarta-600.4f54d6c65e11.woff2") format("woff2");
}
@font-face {
  font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/jakarta-700.bf5e25824fd7.woff2") format("woff2");
}

:root {
  /* --- Couleurs de marque ------------------------------------------------ */
  --g-violet: #4D17C7;          /* primaire : boutons clés, liens actifs, marque */
  --g-violet-bright: #7A1FD6;   /* liens, hover */
  --g-violet-deep: #4A14B8;     /* fin du gradient */
  --g-magenta: #E12C84;         /* accent gradient */
  --g-orange: #FE7520;          /* CTA secondaire */
  --g-orange-bright: #FF6E1A;   /* début du gradient */
  --g-orange-soft: #FF9450;     /* accent orange clair — texte/halo sur fond foncé */

  /* --- Neutres ----------------------------------------------------------- */
  --g-ink: #1A1330;             /* texte principal / fonds foncés (sidebar) */
  --g-ink-soft: #3A3350;        /* nuance foncée (hover sidebar) */
  --g-slate: #5B5470;           /* texte secondaire */
  --g-muted: #8E89A3;           /* texte discret, placeholders */
  --g-line: #E7E3F2;            /* bordures, séparateurs */
  --g-line-strong: #C9C3DF;     /* bordures appuyées */
  --g-surface: #F6F4FB;         /* fonds de section, cards */
  --g-violet-tint: #F1ECFD;     /* fond violet très clair (état actif, accents) */
  --g-white: #FFFFFF;

  /* --- Statuts (sémantique FIXE — ne jamais réassigner) ------------------ */
  --g-success: #1FA971;  --g-success-bg: #E9F8F1;  --g-success-text: #0E6B47;
  --g-success-bright: #3DDC97;  /* point de statut vif sur fond foncé (décor) */
  --g-warning: #E8920C;  --g-warning-bg: #FEF4E0;  --g-warning-text: #9A5E04;
  --g-expiring: #F2641C; --g-expiring-bg: #FEEEE3; --g-expiring-text: #A8410E;
  --g-danger: #E5484D;   --g-danger-bg: #FCEAEB;   --g-danger-text: #9E2C30;

  /* --- Triplets RGB (halos/opacités sans hex hors tokens) ---------------- */
  --g-magenta-rgb: 225, 44, 132;
  --g-violet-bright-rgb: 122, 31, 214;
  --g-orange-rgb: 254, 117, 32;
  --g-success-bright-rgb: 61, 220, 151;

  /* --- Gradient signature (hero / CTA / accents — JAMAIS sous du texte dense) */
  --g-gradient: linear-gradient(105deg, #FF6E1A 0%, #E12C84 42%, #7A1FD6 78%, #4A14B8 100%);
  --g-gradient-soft: linear-gradient(100deg, #FE7520, #E12C84);

  /* --- Typographie ------------------------------------------------------- */
  --g-font-title: "Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;
  --g-font-body: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --g-h1: clamp(2rem, 1.4rem + 2.6vw, 3rem);
  --g-h2: clamp(1.6rem, 1.25rem + 1.6vw, 2.25rem);
  --g-h3: 1.625rem;
  --g-h4: 1.3rem;
  --g-h5: 1.1rem;

  /* --- Rayons / ombres / espacements ------------------------------------ */
  --g-radius-sm: 8px;
  --g-radius: 12px;
  --g-radius-lg: 16px;
  --g-radius-pill: 999px;
  --g-shadow-sm: 0 1px 2px rgba(26, 19, 48, .06);
  --g-shadow: 0 4px 16px rgba(26, 19, 48, .08);
  --g-shadow-lg: 0 14px 36px rgba(26, 19, 48, .14);
  --g-focus-ring: 0 0 0 .25rem rgba(77, 23, 199, .35);

  /* ======================================================================
     Surcharge des variables Bootstrap → les composants héritent de la marque
     sans recompilation SCSS (décision D-css).
     ====================================================================== */
  --bs-primary: var(--g-violet);
  --bs-primary-rgb: 77, 23, 199;
  --bs-secondary: var(--g-slate);
  --bs-secondary-rgb: 91, 84, 112;
  --bs-success: var(--g-success);   --bs-success-rgb: 31, 169, 113;
  --bs-warning: var(--g-warning);   --bs-warning-rgb: 232, 146, 12;
  --bs-danger: var(--g-danger);     --bs-danger-rgb: 229, 72, 77;
  --bs-info: var(--g-violet-bright); --bs-info-rgb: 122, 31, 214;

  --bs-body-font-family: var(--g-font-body);
  --bs-body-color: var(--g-ink);
  --bs-body-color-rgb: 26, 19, 48;
  --bs-body-bg: var(--g-white);
  --bs-emphasis-color: var(--g-ink);
  --bs-secondary-color: var(--g-slate);
  --bs-tertiary-color: var(--g-muted);
  --bs-border-color: var(--g-line);
  --bs-border-radius: var(--g-radius);
  --bs-border-radius-sm: var(--g-radius-sm);
  --bs-border-radius-lg: var(--g-radius-lg);
  --bs-link-color: var(--g-violet-bright);
  --bs-link-color-rgb: 122, 31, 214;
  --bs-link-hover-color: var(--g-violet);
  --bs-link-hover-color-rgb: 77, 23, 199;
}

/* --- Base : typographie de marque ---------------------------------------- */
body {
  font-family: var(--g-font-body);
  color: var(--g-ink);
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.navbar-brand, .display-1, .display-2, .display-3, .display-4 {
  font-family: var(--g-font-title);
  font-weight: 700;
  color: var(--g-ink);
}
h1, .h1 { font-size: var(--g-h1); font-weight: 800; letter-spacing: -.01em; }
h2, .h2 { font-size: var(--g-h2); }
h3, .h3 { font-size: var(--g-h3); }
h4, .h4 { font-size: var(--g-h4); }
h5, .h5 { font-size: var(--g-h5); }
.text-muted { color: var(--g-muted) !important; }

/* --- Boutons (theming via variables de composant Bootstrap) -------------- */
.btn { --bs-btn-font-family: var(--g-font-body); font-weight: 600; }
.btn-primary {
  --bs-btn-bg: var(--g-violet); --bs-btn-border-color: var(--g-violet);
  --bs-btn-hover-bg: var(--g-violet-bright); --bs-btn-hover-border-color: var(--g-violet-bright);
  --bs-btn-active-bg: var(--g-violet-deep); --bs-btn-active-border-color: var(--g-violet-deep);
  --bs-btn-disabled-bg: var(--g-violet); --bs-btn-disabled-border-color: var(--g-violet);
}
.btn-outline-primary {
  --bs-btn-color: var(--g-violet); --bs-btn-border-color: var(--g-violet);
  --bs-btn-hover-bg: var(--g-violet); --bs-btn-hover-border-color: var(--g-violet);
  --bs-btn-active-bg: var(--g-violet); --bs-btn-active-border-color: var(--g-violet);
}
.btn-success { --bs-btn-bg: var(--g-success); --bs-btn-border-color: var(--g-success);
  --bs-btn-hover-bg: #1b9362; --bs-btn-hover-border-color: #1b9362; }
.btn-danger  { --bs-btn-bg: var(--g-danger);  --bs-btn-border-color: var(--g-danger);
  --bs-btn-hover-bg: #cf3f44; --bs-btn-hover-border-color: #cf3f44; }
.btn-warning { --bs-btn-bg: var(--g-warning); --bs-btn-border-color: var(--g-warning);
  --bs-btn-color: var(--g-white); --bs-btn-hover-color: var(--g-white);
  --bs-btn-hover-bg: #cf820b; --bs-btn-hover-border-color: #cf820b; }
/* CTA secondaire orange Gofeez (utilitaire optionnel) */
.btn-accent {
  --bs-btn-color: var(--g-white); --bs-btn-bg: var(--g-orange); --bs-btn-border-color: var(--g-orange);
  --bs-btn-hover-color: var(--g-white); --bs-btn-hover-bg: var(--g-orange-bright);
  --bs-btn-hover-border-color: var(--g-orange-bright);
}

/* --- Statuts : pastilles douces (AA garanti par paires bg/texte de charte) */
.badge { font-family: var(--g-font-body); font-weight: 600; border-radius: var(--g-radius-pill); }
.badge.text-bg-success   { color: var(--g-success-text)  !important; background-color: var(--g-success-bg)  !important; }
.badge.text-bg-warning   { color: var(--g-warning-text)  !important; background-color: var(--g-warning-bg)  !important; }
.badge.text-bg-danger    { color: var(--g-danger-text)   !important; background-color: var(--g-danger-bg)   !important; }
.badge.text-bg-secondary { color: var(--g-slate)         !important; background-color: var(--g-surface)     !important; }
.badge.text-bg-info      { color: var(--g-violet)        !important; background-color: var(--g-violet-tint) !important; }
.badge.text-bg-primary   { color: var(--g-white)         !important; background-color: var(--g-violet)      !important; }
/* Badges « pleins » (libellés divers : Justificatif N, rôle, Publié…) — texte AA. */
.badge.bg-primary   { color: var(--g-white) !important; background-color: var(--g-violet)  !important; }
.badge.bg-secondary { color: var(--g-white) !important; background-color: var(--g-slate)   !important; }
.badge.bg-success   { color: var(--g-white) !important; background-color: var(--g-success) !important; }
.badge.bg-danger    { color: var(--g-white) !important; background-color: var(--g-danger)  !important; }
.badge.bg-warning   { color: var(--g-ink)   !important; background-color: var(--g-warning) !important; }
.badge.bg-info      { color: var(--g-white) !important; background-color: var(--g-violet-bright) !important; }

/* --- Champs : focus violet visible --------------------------------------- */
.form-control, .form-select { border-color: var(--g-line); }
.form-control:focus, .form-select:focus, .btn:focus-visible,
.form-check-input:focus, .page-link:focus {
  border-color: var(--g-violet-bright);
  box-shadow: var(--g-focus-ring);
}
:focus-visible { outline: 2px solid transparent; }
a:focus-visible, .dropdown-item:focus-visible {
  outline: 2px solid var(--g-violet-bright); outline-offset: 2px; border-radius: 4px;
}
.form-check-input:checked { background-color: var(--g-violet); border-color: var(--g-violet); }

/* --- Cartes & tableaux (base partagée) ----------------------------------- */
.card { --bs-card-border-color: var(--g-line); --bs-card-border-radius: var(--g-radius); box-shadow: var(--g-shadow-sm); }
.table { --bs-table-border-color: var(--g-line); }
.shadow-sm { box-shadow: var(--g-shadow-sm) !important; }
.shadow { box-shadow: var(--g-shadow) !important; }

/* --- Mouvement réduit ---------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
