:root {
  --bleu: #1d3557; --bleu-clair: #457b9d; --fond: #f6f8fa; --carte: #ffffff;
  --ok: #2a9d8f; --alerte: #e76f51; --attente: #e9c46a; --texte: #22303c; --gris: #7a8a99;
  --bord: #e1e7ee;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: 'Segoe UI', system-ui, sans-serif; background: var(--fond); color: var(--texte); }
#topbar { display: flex; align-items: center; gap: 24px; background: var(--bleu); color: #fff; padding: 10px 20px; position: sticky; top: 0; z-index: 10; flex-wrap: wrap; }
.brand { font-weight: 700; font-size: 17px; }
.brand span { font-weight: 400; opacity: .75; font-size: 13px; margin-left: 8px; }
#nav { display: flex; gap: 4px; flex: 1; flex-wrap: wrap; }
#nav button { background: transparent; border: none; color: #dbe5ef; padding: 8px 12px; border-radius: 6px; cursor: pointer; font-size: 14px; }
#nav button:hover { background: rgba(255,255,255,.12); }
#nav button.actif { background: rgba(255,255,255,.2); color: #fff; font-weight: 600; }
#userbox { font-size: 13px; display: flex; align-items: center; gap: 10px; }
#userbox .role { background: rgba(255,255,255,.18); padding: 2px 8px; border-radius: 10px; font-size: 11px; text-transform: uppercase; }
#userbox button { background: transparent; border: 1px solid rgba(255,255,255,.4); color: #fff; border-radius: 6px; padding: 4px 10px; cursor: pointer; }
main { padding: 24px; max-width: 1280px; margin: 0 auto; }
h1 { font-size: 20px; margin: 0 0 16px; }
h2 { font-size: 16px; margin: 24px 0 10px; }
.carte { background: var(--carte); border: 1px solid var(--bord); border-radius: 10px; padding: 16px 18px; margin-bottom: 16px; }
.grille-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 16px; }
.stat { background: var(--carte); border: 1px solid var(--bord); border-radius: 10px; padding: 14px 16px; }
.stat .val { font-size: 26px; font-weight: 700; color: var(--bleu); }
.stat .lib { font-size: 12px; color: var(--gris); margin-top: 2px; }
table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
th { text-align: left; color: var(--gris); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; padding: 8px 10px; border-bottom: 2px solid var(--bord); }
td { padding: 8px 10px; border-bottom: 1px solid var(--bord); vertical-align: middle; }
tr:hover td { background: #fbfcfe; }
.table-scroll { overflow-x: auto; }
.badge { display: inline-block; padding: 2px 9px; border-radius: 10px; font-size: 11.5px; font-weight: 600; white-space: nowrap; }
.badge.valide { background: #e0f2ef; color: var(--ok); }
.badge.a_valider { background: #faf3dd; color: #a07d1c; }
.badge.non_valide { background: #fbe9e4; color: var(--alerte); }
.badge.disqualifie { background: #fbe9e4; color: var(--alerte); }
.badge.no_show { background: #efe4fb; color: #6b46c1; }
.badge.pas_r1 { background: #eef1f4; color: var(--gris); }
.badge.signe { background: #dcefdc; color: #276749; border: 1px solid #a8d5a8; }
.badge.go { background: #e0f2ef; color: var(--ok); }
.badge.rien { background: #eef1f4; color: var(--gris); }
.badge.ouvert { background: #faf3dd; color: #a07d1c; }
.badge.hubspot { background: #ffe8d9; color: #c05621; }
.badge.manuel { background: #e8eef7; color: var(--bleu-clair); }
button.action, .action { background: var(--bleu-clair); color: #fff; border: none; border-radius: 7px; padding: 7px 14px; cursor: pointer; font-size: 13.5px; }
button.action:hover { background: var(--bleu); }
button.action.ok { background: var(--ok); }
button.action.danger { background: var(--alerte); }
button.action.discret { background: #eef1f4; color: var(--texte); }
button.action:disabled { opacity: .5; cursor: not-allowed; }
button.mini { padding: 3px 9px; font-size: 12px; border-radius: 6px; border: 1px solid var(--bord); background: #fff; cursor: pointer; }
button.mini.ok { border-color: var(--ok); color: var(--ok); }
button.mini.ko { border-color: var(--alerte); color: var(--alerte); }
button.mini.actif-ok { background: var(--ok); color: #fff; border-color: var(--ok); }
button.mini.actif-ko { background: var(--alerte); color: #fff; border-color: var(--alerte); }
input, select, textarea { font: inherit; padding: 7px 10px; border: 1px solid var(--bord); border-radius: 7px; background: #fff; color: var(--texte); }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--bleu-clair); border-color: transparent; }
.ligne-outils { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.ligne-outils .pousse { flex: 1; }
label.champ { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: var(--gris); }
.form-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.muted { color: var(--gris); font-size: 12.5px; }
.login-page { max-width: 460px; margin: 60px auto; }
.login-page button.user { display: flex; justify-content: space-between; width: 100%; margin: 6px 0; padding: 12px 16px; font-size: 15px; border: 1px solid var(--bord); background: #fff; border-radius: 8px; cursor: pointer; }
.login-page button.user:hover { border-color: var(--bleu-clair); background: #f4f8fb; }
#toast { position: fixed; bottom: 20px; right: 20px; z-index: 100; display: flex; flex-direction: column; gap: 8px; }
.toast-msg { background: var(--bleu); color: #fff; padding: 12px 18px; border-radius: 8px; font-size: 14px; box-shadow: 0 4px 16px rgba(0,0,0,.25); max-width: 420px; }
.toast-msg.erreur { background: var(--alerte); }
dialog { border: none; border-radius: 12px; padding: 22px; max-width: 640px; width: 92%; box-shadow: 0 10px 40px rgba(0,0,0,.3); }
dialog::backdrop { background: rgba(20,30,40,.45); }
.medaille { font-size: 17px; }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.avertissement { background: #fff8e6; border: 1px solid #f0dfa8; border-radius: 8px; padding: 10px 14px; font-size: 13px; margin-bottom: 14px; }
