/* Foyane — feuille de style du back-office. Identité de marque appliquée (branding/plateforme-de-marque-foyane.md).
 * Souverain : polices AUTO-HÉBERGÉES (/static/fonts), aucun CDN US. Spectral (titres) + Luciole (interface, FR + accessible).
 * Tokens : Encre (rigueur) · Ambre (chaleur) · Sauge/Terre (statuts dignes) · Papier (fond chaud). */

@font-face{font-family:"Spectral";src:url("/static/fonts/spectral-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Spectral";src:url("/static/fonts/spectral-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Spectral";src:url("/static/fonts/spectral-400-italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Luciole";src:url("/static/fonts/luciole-regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Luciole";src:url("/static/fonts/luciole-bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

:root{
  --encre:#14233B; --encre-700:#213a5c; --encre-500:#3d4a5c;
  --ambre:#E39A4E; --ambre-600:#cf8636; --ambre-tint:#FBEBD6;
  --sauge:#6B8F71; --sauge-tint:#EAF0EA;
  --terre:#C0602C; --terre-tint:#F7E7DC; --terre-ink:#98441B;
  --papier:#FBF7F1; --papier-2:#F3ECE1; --blanc:#ffffff;
  --ligne:#E7DED0; --ligne-2:#cdbfa8; --neutre:#8A7A6D;
  --serif:"Spectral",Georgia,"Times New Roman",serif;
  --sans:"Luciole",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --r:14px; --r-lg:18px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
.vigie-body{min-height:100vh;background:var(--papier);color:var(--encre);font-family:var(--sans);
  -webkit-font-smoothing:antialiased;line-height:1.5}

/* ---- Accueil / login (cartes centrées) ---- */
.vigie-main{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:1.5rem}
.vigie-card{width:100%;max-width:34rem;background:var(--blanc);border-radius:var(--r-lg);padding:2.6rem;
  box-shadow:0 1px 3px rgba(20,35,59,.06);border:1px solid var(--ligne)}
.vigie-title{font-family:var(--serif);font-size:2rem;font-weight:600;color:var(--encre);margin:0;letter-spacing:-.01em}
.vg-brandhead{display:flex;align-items:center;gap:.7rem;margin-bottom:.15rem}
.vg-tagline{font-family:var(--serif);font-style:italic;color:var(--encre-500);margin:.45rem 0 0;font-size:1.06rem}
.vg-tagline b{font-style:normal;font-weight:600;color:var(--encre)}
.vigie-sub{margin:.5rem 0 0;color:var(--encre-500)}
.vigie-meta{margin:1rem 0 0;font-size:.875rem;color:var(--neutre)}
.vigie-meta a{color:var(--ambre-600)}

/* ---- Nav / marque ---- */
.vg-nav{display:flex;align-items:center;justify-content:space-between;padding:.7rem 1.5rem;
  background:var(--blanc);border-bottom:1px solid var(--ligne)}
.vg-brand{display:flex;align-items:center;gap:.6rem;font-family:var(--serif);font-weight:600;
  color:var(--encre);text-decoration:none;font-size:1.35rem;letter-spacing:-.015em}
.vg-brand svg{display:block}
.vg-nav-right{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.vg-email{color:var(--encre-500);font-size:.85rem}
.vg-chip{background:var(--ambre-tint);color:var(--terre-ink);border:1px solid #f0d9b8;border-radius:999px;
  padding:.15rem .7rem;font-size:.8rem;font-weight:700}
.vg-badge{background:var(--papier-2);color:var(--encre-500);border:1px solid var(--ligne);border-radius:999px;
  padding:.12rem .6rem;font-size:.72rem;font-weight:700}

/* ---- Coquille : navigation latérale (outil de travail, pas landing) ---- */
.vg-shell{display:flex;min-height:100vh}
.vg-side{width:248px;flex-shrink:0;background:var(--blanc);border-right:1px solid var(--ligne);
  display:flex;flex-direction:column;padding:1rem .75rem;position:sticky;top:0;height:100vh}
.vg-side .vg-brand{padding:.35rem .5rem 1rem;font-size:1.3rem}
.vg-nav-list{display:flex;flex-direction:column;gap:.12rem;flex:1;overflow-y:auto}
.vg-nav-list a{display:flex;align-items:center;gap:.7rem;padding:.6rem .7rem;border-radius:10px;
  text-decoration:none;color:var(--encre-500);font-size:.92rem;font-weight:700}
.vg-nav-list a:hover{background:var(--papier-2);color:var(--encre)}
.vg-nav-list a.on{background:var(--ambre-tint);color:var(--encre)}
.vg-nav-list a svg{width:18px;height:18px;flex-shrink:0;color:var(--neutre)}
.vg-nav-list a.on svg{color:var(--ambre-600)}
.vg-nav-sep{height:1px;background:var(--ligne);margin:.5rem .5rem}
.vg-side-foot{border-top:1px solid var(--ligne);padding-top:.75rem;margin-top:.5rem}
.vg-side-tenant{font-size:.82rem;color:var(--encre);font-weight:700;margin-bottom:.35rem}
.vg-side-foot .who{color:var(--encre);font-weight:700;font-size:.88rem}
.vg-side-foot .role{color:var(--neutre);font-size:.76rem;margin-top:.1rem}
.vg-side-logout{width:100%;margin-top:.6rem;text-align:center}
.vg-content{flex:1;min-width:0;display:flex;flex-direction:column}
@media(max-width:820px){
  .vg-shell{flex-direction:column}
  .vg-side{width:100%;height:auto;position:static;flex-direction:row;flex-wrap:wrap;align-items:center;gap:.3rem;padding:.6rem .8rem}
  .vg-side .vg-brand{padding:.2rem .4rem}
  .vg-nav-list{flex-direction:row;flex-wrap:wrap;flex:1 0 100%;order:3;gap:.2rem;margin-top:.4rem}
  .vg-nav-sep{display:none}
  .vg-side-foot{border-top:none;padding-top:0;margin:0 0 0 auto;text-align:right}
  .vg-side-tenant,.vg-side-foot .who,.vg-side-foot .role{display:inline;margin:0 0 0 .5rem;font-size:.76rem}
  .vg-side-logout{width:auto;margin-top:.3rem}
}

/* ---- Checklist de mise en route ---- */
.vg-checklist{list-style:none;padding:0;margin:.5rem 0 0;display:flex;flex-direction:column;gap:.6rem}
.vg-checklist li{display:flex;align-items:center;gap:.9rem;padding:.85rem 1rem;border:1px solid var(--ligne);border-radius:14px;background:var(--papier)}
.vg-checklist li.done{background:var(--sauge-tint);border-color:#cfe0d0}
.vg-checklist .mark{flex-shrink:0;width:1.7rem;height:1.7rem;border-radius:50%;border:2px solid var(--ligne-2);
  display:inline-flex;align-items:center;justify-content:center;color:var(--neutre);font-weight:700;font-size:.85rem}
.vg-checklist li.done .mark{background:var(--sauge);border-color:var(--sauge);color:#fff}
.vg-checklist .txt{flex:1;min-width:0}
.vg-checklist .txt strong{display:block;color:var(--encre);font-size:.98rem}
.vg-checklist .txt p{margin:.15rem 0 0;color:var(--encre-500);font-size:.86rem;line-height:1.4}
.vg-checklist li.done .txt p{color:#3f6247}

/* ---- Cartes à choisir (assistant : type de veille, cadence…) ---- */
.vg-radio-cards{display:flex;flex-direction:column;gap:.6rem;border:none;padding:0;margin:0}
.vg-radio-cards legend{padding:0;margin-bottom:.5rem;font-size:.85rem;font-weight:700;color:var(--encre-500)}
.vg-radio-card{display:flex;align-items:flex-start;gap:.7rem;padding:.9rem 1rem;border:1px solid var(--ligne);border-radius:12px;cursor:pointer;background:var(--blanc);transition:.12s}
.vg-radio-card:hover{border-color:var(--ligne-2)}
.vg-radio-card input{margin-top:.2rem;accent-color:var(--ambre-600)}
.vg-radio-card > span{display:flex;flex-direction:column}
.vg-radio-card strong{color:var(--encre);font-size:.98rem}
.vg-radio-card small{color:var(--encre-500);font-size:.85rem;margin-top:.1rem}
.vg-radio-card:has(input:checked){border-color:var(--ambre);background:var(--ambre-tint)}
.vg-time{font-family:inherit;font-size:.9rem;padding:.25rem .45rem;border:1px solid var(--ligne);border-radius:8px;background:#fff;color:var(--encre);margin:0 .15rem}
.vg-figure{font-family:var(--serif);font-size:2.4rem;font-weight:600;color:var(--encre);line-height:1}
.vg-figure small{font-family:var(--sans);font-size:.95rem;font-weight:400;color:var(--encre-500)}

/* ---- Pastille de statut (campagne, usager) ---- */
.vg-status{display:inline-flex;align-items:center;gap:.4rem;padding:.22rem .7rem;border-radius:999px;font-size:.78rem;font-weight:700;background:var(--papier-2);color:var(--encre-500);border:1px solid var(--ligne);vertical-align:middle}
.vg-status .dot{width:7px;height:7px;border-radius:50%;background:var(--neutre)}
.vg-status.live{background:var(--sauge-tint);color:#3f6247;border-color:#cfe0d0}
.vg-status.live .dot{background:var(--sauge)}
.vg-status.draft{background:var(--ambre-tint);color:#8a5a12;border-color:#f0d9b8}
.vg-status.draft .dot{background:var(--ambre)}

/* ---- Bilan de campagne : KPIs + répartition ---- */
.vg-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin:0 0 1.5rem}
.vg-kpi{background:var(--blanc);border:1px solid var(--ligne);border-radius:14px;padding:1rem 1.2rem}
.vg-kpi .num{font-family:var(--serif);font-size:2rem;font-weight:600;color:var(--encre);line-height:1}
.vg-kpi .lab{font-size:.82rem;color:var(--neutre);margin-top:.35rem}
.vg-kpi.alert .num{color:var(--terre)}
/* Couverture du jour (nord de la veille sociale) : progression X/N appelées + restants. */
.vg-cover{background:var(--sauge-tint);border:1px solid #d4e0d4;border-radius:var(--r-lg);padding:1.1rem 1.4rem;margin-bottom:1.5rem}
.vg-cover-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.vg-cover-head .lab{font-weight:700;color:var(--encre)}
.vg-cover-head .frac{color:var(--encre-500);font-size:.95rem}
.vg-cover-head .frac b{font-family:var(--serif);font-size:1.5rem;color:var(--encre)}
.vg-cover-bar{height:12px;background:var(--blanc);border-radius:999px;overflow:hidden;margin:.7rem 0 .55rem;border:1px solid #d4e0d4}
.vg-cover-bar span{display:block;height:100%;background:var(--sauge);border-radius:999px;transition:width .4s}
.vg-cover-foot{margin:0;font-size:.86rem;color:var(--encre-500)}

/* Bilan : donut de répartition (hero visuel) + légende chiffrée exacte. */
.vg-bilan{display:flex;gap:2.4rem;align-items:center;flex-wrap:wrap}
.vg-donut{width:164px;height:164px;border-radius:50%;position:relative;flex-shrink:0}
.vg-donut .hole{position:absolute;inset:25%;background:var(--blanc);border-radius:50%;display:flex;
  flex-direction:column;align-items:center;justify-content:center}
.vg-donut .hole b{font-family:var(--serif);font-size:2rem;color:var(--encre);line-height:1}
.vg-donut .hole span{font-size:.7rem;color:var(--neutre);text-transform:uppercase;letter-spacing:.06em;margin-top:.25rem}
.vg-legend{flex:1;min-width:240px;display:flex;flex-direction:column;gap:.55rem}
.vg-legend .row{display:flex;align-items:center;gap:.6rem;font-size:.92rem}
.vg-legend .dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}
.vg-legend .name{color:var(--encre);flex:1}
.vg-legend .n{font-weight:700;color:var(--encre);min-width:22px;text-align:right}
.vg-legend .pct{color:var(--neutre);font-size:.82rem;min-width:46px;text-align:right}

/* Files d'action (exception-first) : listes cliquables à accompagner / à rappeler. */
.vg-q-title{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:.95rem;margin:1.3rem 0 .65rem}
.vg-q-title:first-child{margin-top:0}
.vg-q-title .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.vg-q-title.escalate{color:var(--terre)}
.vg-q-title.escalate .dot{background:var(--terre)}
.vg-q-title.recall{color:var(--ambre-600)}
.vg-q-title.recall .dot{background:var(--ambre)}
.vg-queue{display:flex;flex-direction:column;gap:.55rem}
.vg-q-item{display:block;text-decoration:none;border:1px solid var(--ligne);border-left:3px solid var(--ligne-2);
  border-radius:12px;padding:.75rem 1rem;background:var(--papier);transition:border-color .15s,background .15s}
.vg-q-item:hover{background:var(--blanc);border-color:var(--ligne-2)}
.vg-q-item.escalate{border-left-color:var(--terre)}
.vg-q-item.recall{border-left-color:var(--ambre)}
.vg-q-row{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem;flex-wrap:wrap}
.vg-q-name{font-weight:700;color:var(--encre)}
.vg-q-meta{font-size:.8rem;color:var(--neutre)}
.vg-q-synth{margin:.35rem 0 0;font-size:.88rem;color:var(--encre-500);line-height:1.45}
.vg-q-name{color:var(--encre);font-weight:700;text-decoration:none}
.vg-q-name:hover{color:var(--ambre-600)}
.vg-q-item.escalate.ack{border-left-color:var(--ambre)}
.vg-q-ack{color:var(--sauge);font-weight:700;font-size:.78rem;margin-left:.4rem}
.vg-q-actions{display:flex;align-items:center;gap:.9rem;margin-top:.75rem;flex-wrap:wrap}
.vg-btn-sm{background:var(--encre);color:#fff;border:none;border-radius:9px;padding:.42rem .85rem;font-size:.82rem;font-weight:700;cursor:pointer;font-family:inherit}
.vg-btn-sm:hover{background:var(--encre-700)}
.vg-q-resolve summary{cursor:pointer;font-size:.82rem;font-weight:700;color:var(--encre-500);list-style:none;padding:.42rem 0}
.vg-q-resolve summary::-webkit-details-marker{display:none}
.vg-q-resolve summary:hover{color:var(--encre)}
.vg-q-resolve summary::before{content:"▸ ";color:var(--neutre)}
.vg-q-resolve[open] summary::before{content:"▾ "}
.vg-resolve-form{display:flex;flex-direction:column;gap:.6rem;margin-top:.55rem;max-width:470px;
  background:var(--blanc);border:1px solid var(--ligne);border-radius:12px;padding:.9rem 1rem}
.vg-resolve-form select,.vg-resolve-form textarea{width:100%;font-family:inherit;font-size:.9rem;
  border:1px solid var(--ligne);border-radius:8px;padding:.52rem .68rem;color:var(--encre);background:var(--papier)}
.vg-resolve-form select:focus,.vg-resolve-form textarea:focus{outline:2px solid var(--ambre);border-color:var(--ambre)}
.vg-resolve-form textarea{resize:vertical;min-height:54px}
.vg-resolve-form .vg-btn-sm{align-self:flex-start}
/* Arrêt de veille : bascule de confirmation (destructif, sans JS) */
.vg-danger-toggle{display:inline-block}
.vg-danger-toggle > summary{cursor:pointer;list-style:none;color:var(--terre);font-weight:700;font-size:.9rem;
  border:1px solid #e2c4b3;background:#fbeee7;border-radius:10px;padding:.5rem .95rem;display:inline-block}
.vg-danger-toggle > summary::-webkit-details-marker{display:none}
.vg-danger-toggle > summary:hover{background:#f6e3d8}
.vg-danger-confirm{margin-top:.7rem;background:#fbeee7;border:1px solid #e2c4b3;border-radius:12px;padding:1rem;max-width:540px}
.vg-danger-confirm p{margin:0 0 .75rem;font-size:.88rem;color:var(--encre);line-height:1.5}

/* Tour de contrôle (accueil) : cartes de veilles actives, attention en rouge. */
.vg-tower{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}
.vg-tower-card{display:block;text-decoration:none;border:1px solid var(--ligne);border-top:3px solid var(--sauge);
  border-radius:14px;padding:1rem 1.2rem;background:var(--blanc);transition:box-shadow .15s}
.vg-tower-card:hover{box-shadow:0 3px 10px rgba(20,35,59,.08)}
.vg-tower-card.progress{border-top-color:var(--ambre)}
.vg-tower-card.alert{border-top-color:var(--terre)}
.vg-tower-top{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;margin-bottom:.7rem}
.vg-tower-name{font-weight:700;color:var(--encre)}
.vg-tower-badge{background:#f6e3d8;color:var(--terre-ink);border-radius:999px;padding:.15rem .55rem;font-size:.74rem;font-weight:700;white-space:nowrap}
.vg-tower-bar{height:9px;background:var(--papier-2);border-radius:999px;overflow:hidden;margin-bottom:.55rem}
.vg-tower-bar span{display:block;height:100%;background:var(--sauge);border-radius:999px}
.vg-tower-card.progress .vg-tower-bar span{background:var(--ambre)}
.vg-tower-card.alert .vg-tower-bar span{background:var(--terre)}
.vg-tower-foot{display:flex;justify-content:space-between;gap:.6rem;font-size:.82rem;color:var(--encre-500)}
.vg-tower-foot .rem{color:var(--ambre-600);font-weight:700}
.vg-tower-foot .ok{color:var(--sauge);font-weight:700}
.vg-tower-foot b{font-family:var(--serif);font-size:1rem;color:var(--encre)}
.vg-tower-idle{margin:0;font-size:.84rem;color:var(--neutre)}

/* Statut système (S9) : santé des composants. */
.vg-health{display:flex;flex-direction:column;gap:.7rem}
.vg-hrow{display:flex;align-items:center;gap:.7rem;padding:.7rem .9rem;border:1px solid var(--ligne);border-radius:12px;background:var(--papier)}
.vg-hdot{width:11px;height:11px;border-radius:50%;flex-shrink:0}
.vg-hname{font-weight:700;color:var(--encre);flex:1}
.vg-hstate{font-size:.85rem;color:var(--neutre)}

/* Sparkline de tendance (couverture jour par jour). */
.vg-spark{display:flex;align-items:flex-end;gap:.5rem;height:120px;padding-top:.5rem}
.vg-spark .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:.4rem;height:100%}
.vg-spark .bar{flex:1;width:100%;max-width:40px;background:var(--papier-2);border-radius:6px 6px 0 0;display:flex;align-items:flex-end;overflow:hidden}
.vg-spark .bar span{display:block;width:100%;background:var(--sauge);border-radius:6px 6px 0 0;min-height:2px;transition:height .4s}
.vg-spark .lbl{font-size:.72rem;color:var(--neutre)}

/* ---- Historique des appels + synthèse (fiche usager) ---- */
.vg-calls{display:flex;flex-direction:column;gap:.7rem}
.vg-call{border:1px solid var(--ligne);border-radius:12px;padding:.85rem 1rem;background:var(--papier)}
.vg-call.test{opacity:.72}
.vg-call-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap}
.vg-call-date{font-size:.8rem;color:var(--neutre)}
.vg-call-synth{margin:.55rem 0 0;color:var(--encre);font-size:.93rem;line-height:1.5}
.vg-call-synth::before{content:"« ";color:var(--neutre)}
.vg-call-synth::after{content:" »";color:var(--neutre)}

/* ---- Structure de page ---- */
.vg-main{max-width:1000px;margin:0 auto;padding:1.9rem 1.5rem;width:100%}
.vg-center{display:flex;min-height:70vh;align-items:center;justify-content:center}
.vg-page{width:100%}
.vg-narrow{max-width:540px}
.vg-narrow-lg{max-width:760px}
.vg-page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.4rem}
.vg-h1{font-family:var(--serif);font-size:1.7rem;font-weight:600;color:var(--encre);margin:0 0 1rem;letter-spacing:-.01em}
.vg-h2{font-family:var(--serif);font-size:1.12rem;font-weight:600;color:var(--encre);margin:0 0 .6rem}
.vg-h3{font-family:var(--serif);font-size:1rem;font-weight:600;color:var(--encre);margin:.5rem 0 .6rem}
.vg-sub{color:var(--encre-500);margin:0 0 1rem}

.vg-panel{background:var(--blanc);border:1px solid var(--ligne);border-radius:var(--r-lg);padding:1.3rem 1.5rem;margin-bottom:1.5rem}
.vg-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}
.vg-tile{display:block;background:var(--blanc);border:1px solid var(--ligne);border-radius:var(--r-lg);
  padding:1.35rem;text-decoration:none;color:var(--encre);transition:border-color .15s,transform .15s,box-shadow .15s}
.vg-tile:hover{border-color:var(--ambre);transform:translateY(-2px);box-shadow:0 6px 22px rgba(20,35,59,.07)}
.vg-tile h3{font-family:var(--serif);margin:0 0 .35rem;color:var(--encre);font-size:1.08rem;font-weight:600}
.vg-tile p{margin:0;color:var(--encre-500);font-size:.88rem}

/* ---- Formulaires ---- */
.vg-form{display:flex;flex-direction:column;gap:.9rem;margin-top:1rem}
.vg-form-compact{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--ligne)}
.vg-inline-form{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.vg-filters{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:.75rem}
.vg-filters .vg-input{width:auto}
.vg-filters input[type="search"]{min-width:240px}
.vg-label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--encre-500);font-weight:700}
.vg-opt{color:var(--neutre);font-weight:400}
.vg-input{padding:.6rem .75rem;border:1px solid var(--ligne);border-radius:11px;font-size:.95rem;
  font-family:inherit;background:var(--blanc);color:var(--encre)}
.vg-input:focus{outline:2px solid #E7C79A;outline-offset:0;border-color:var(--ambre)}
textarea.vg-input{resize:vertical}
input[type="file"].vg-input{padding:.4rem;background:var(--blanc)}
.vg-check{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--encre-500)}
.vg-grid2{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
@media(max-width:640px){.vg-grid2{grid-template-columns:1fr}}
.vg-form-actions{display:flex;gap:.6rem;align-items:center;margin-top:.3rem;flex-wrap:wrap}
.vg-inline{display:inline;margin:0}
.vg-req{font-size:.7rem;color:var(--terre-ink);background:var(--terre-tint);border:1px solid #E7CDBE;border-radius:999px;padding:.05rem .45rem;font-weight:700}

/* ---- Boutons : Encre = structurant · Ambre = geste-cœur ---- */
.vg-btn{background:var(--encre);color:var(--papier);border:1px solid transparent;border-radius:11px;
  padding:.6rem 1.1rem;font-size:.9rem;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block;
  font-family:inherit;transition:.15s}
.vg-btn:hover{background:var(--encre-700)}
.vg-btn[disabled]{opacity:.45;cursor:not-allowed}
.vg-btn-accent{background:var(--ambre);color:var(--encre);border:1px solid transparent;border-radius:11px;
  padding:.6rem 1.1rem;font-size:.9rem;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block;font-family:inherit}
.vg-btn-accent:hover{background:var(--ambre-600)}
.vg-btn-ghost{background:transparent;color:var(--encre);border:1px solid var(--ligne);border-radius:11px;
  padding:.55rem .9rem;font-size:.85rem;cursor:pointer;text-decoration:none;display:inline-block;font-family:inherit}
.vg-btn-ghost:hover{border-color:var(--ligne-2);background:var(--papier-2)}
.vg-btn-danger{background:transparent;color:var(--terre);border:1px solid #E7CDBE;border-radius:11px;
  padding:.55rem 1rem;font-size:.9rem;font-weight:700;cursor:pointer;font-family:inherit}
.vg-btn-danger:hover{background:var(--terre-tint)}

/* ---- Tables ---- */
.vg-table{width:100%;border-collapse:collapse;background:var(--blanc);border:1px solid var(--ligne);border-radius:var(--r);overflow:hidden}
.vg-table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--neutre);
  padding:.7rem .85rem;border-bottom:1px solid var(--ligne);background:var(--papier-2);font-weight:700}
.vg-table td{padding:.72rem .85rem;border-bottom:1px solid #F1EADF;font-size:.9rem;color:var(--encre)}
.vg-table tr:last-child td{border-bottom:none}
.vg-actions{text-align:right}

/* ---- Messages & états ---- */
.vg-error{background:var(--terre-tint);color:var(--terre-ink);border:1px solid #E7CDBE;border-radius:11px;padding:.6rem .85rem;font-size:.88rem}
.vg-warn{background:var(--ambre-tint);color:#8a5a12;border:1px solid #f0d9b8;border-radius:11px;padding:.6rem .85rem;font-size:.9rem}
.vg-hint{color:var(--neutre);font-size:.82rem}
.vg-ok{color:#3f6247;font-weight:700;font-size:.82rem}
.vg-muted{color:var(--neutre);font-size:.82rem}
.vg-count{color:var(--neutre);font-size:.85rem;margin:0 0 .75rem}
.vg-foot{margin-top:1.75rem;color:var(--neutre);font-size:.82rem}
.vg-foot a{color:var(--ambre-600)}
.vg-pager{display:flex;gap:.8rem;align-items:center;margin-top:1rem}

/* ---- Fiche / détail ---- */
.vg-dl{display:grid;grid-template-columns:200px 1fr;gap:.4rem 1rem;margin:0;font-size:.92rem}
.vg-dl dt{color:var(--neutre)}
.vg-dl dd{margin:0;color:var(--encre)}
@media(max-width:560px){.vg-dl{grid-template-columns:1fr;gap:.1rem 0}.vg-dl dd{margin-bottom:.5rem}}
.vg-danger{border-color:#E7CDBE}
.vg-secret{background:var(--papier-2);border:1px dashed var(--ligne-2);border-radius:14px;padding:1rem 1.1rem;margin:1rem 0}
.vg-code{display:block;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.05rem;color:var(--encre);
  background:var(--blanc);border:1px solid var(--ligne);border-radius:.5rem;padding:.6rem .8rem;margin-top:.4rem;word-break:break-all}
.vg-code-sm{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;color:var(--neutre)}

/* ---- Import / stats ---- */
.vg-stats-row{display:flex;gap:.6rem;flex-wrap:wrap;margin:0 0 1.25rem}
.vg-stat-pill{background:var(--papier-2);color:var(--encre-500);border:1px solid var(--ligne);border-radius:999px;padding:.3rem .85rem;font-size:.88rem;font-weight:700}
.vg-stat-pill.vg-ok{background:var(--sauge-tint);color:#3f6247;border-color:#cfe0d0}
.vg-reject-list{margin:0;padding-left:1.1rem;font-size:.88rem;color:var(--encre-500)}
.vg-reject-list li{margin:.25rem 0}

/* ---- Guidage (doctrine UX : un écran = une décision · jamais d'écran vide muet) ---- */
.vg-steps{display:flex;align-items:center;gap:.5rem;list-style:none;padding:0;margin:0 0 1.6rem;flex-wrap:wrap;font-size:.85rem}
.vg-steps li{display:flex;align-items:center;gap:.45rem;color:var(--neutre)}
.vg-steps li .n{display:inline-flex;align-items:center;justify-content:center;width:1.55rem;height:1.55rem;border-radius:50%;background:var(--papier-2);border:1px solid var(--ligne);font-weight:700;font-size:.8rem;color:var(--neutre)}
.vg-steps li.on{color:var(--encre);font-weight:700}
.vg-steps li.on .n{background:var(--ambre);border-color:var(--ambre);color:var(--encre)}
.vg-steps li.done{color:var(--encre)}
.vg-steps li.done .n{background:var(--encre);border-color:var(--encre);color:var(--papier)}
.vg-steps .sep{width:22px;height:1px;background:var(--ligne)}

.vg-empty{text-align:center;background:var(--blanc);border:1px solid var(--ligne);border-radius:var(--r-lg);padding:2.6rem 1.5rem;margin:1rem 0}
.vg-empty .ic{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:50%;background:var(--ambre-tint);color:var(--ambre-600);margin-bottom:.3rem}
.vg-empty h3{font-family:var(--serif);font-size:1.2rem;font-weight:600;color:var(--encre);margin:.5rem 0 .35rem}
.vg-empty p{color:var(--encre-500);max-width:46ch;margin:0 auto 1.2rem;line-height:1.5}
.vg-empty .vg-form-actions{justify-content:center}

.vg-drop{display:flex;flex-direction:column;align-items:center;gap:.5rem;text-align:center;cursor:pointer;
  border:2px dashed var(--ligne-2);border-radius:var(--r-lg);background:var(--papier-2);padding:2.2rem 1.5rem;transition:border-color .15s,background .15s}
.vg-drop:hover{border-color:var(--ambre);background:#F6EEE1}
.vg-drop .ic{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:50%;background:var(--ambre-tint);color:var(--ambre-600)}
.vg-drop .big{font-family:var(--serif);font-size:1.08rem;color:var(--encre)}
.vg-drop input[type=file]{margin-top:.4rem;font-family:inherit;font-size:.85rem;max-width:100%}

.vg-callout{display:flex;gap:.7rem;background:var(--papier-2);border:1px solid var(--ligne);border-left:3px solid var(--ambre);
  border-radius:0 12px 12px 0;padding:.85rem 1rem;font-size:.9rem;color:var(--encre-500);margin:1.1rem 0;line-height:1.5}
.vg-callout .ic{flex-shrink:0;color:var(--ambre-600)}
.vg-callout a{color:var(--ambre-600);font-weight:700}

/* ===== CRM interne (module crm.foyane.com) — kanban, entonnoir, cockpit ===== */
.vg-crm-board{display:grid;grid-template-columns:repeat(6,minmax(170px,1fr));gap:.8rem;align-items:start;overflow-x:auto;padding-bottom:.5rem}
.vg-crm-col{background:var(--papier-2);border:1px solid var(--ligne);border-radius:14px;padding:.7rem;min-height:8rem}
.vg-crm-col.drop{border-color:var(--ambre);background:var(--ambre-tint)}
.vg-crm-col h3{font-size:.8rem;font-weight:700;color:var(--neutre);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .2rem}
.vg-crm-col .sum{font-size:.78rem;color:var(--neutre);margin:0 0 .6rem}
.vg-crm-card{display:block;background:var(--blanc);border:1px solid var(--ligne);border-radius:10px;padding:.6rem .7rem;margin-bottom:.55rem;color:var(--encre);text-decoration:none;cursor:grab}
.vg-crm-card:hover{border-color:var(--ambre)}
.vg-crm-card.dragging{opacity:.45}
.vg-crm-card .t{font-weight:600;font-size:.9rem;line-height:1.3}
.vg-crm-card .m{font-size:.78rem;color:var(--neutre);margin-top:.25rem}
.vg-crm-card .m .late{color:var(--terre);font-weight:600}
.vg-crm-funnel{display:flex;flex-direction:column;gap:.45rem;margin:.6rem 0 1.2rem}
.vg-crm-fbar{display:grid;grid-template-columns:9rem 1fr 2.2rem;gap:.7rem;align-items:center;font-size:.85rem}
.vg-crm-fbar .name{color:var(--encre-500)}
.vg-crm-fbar .track{background:var(--papier-2);border:1px solid var(--ligne);border-radius:99px;height:1.15rem;overflow:hidden}
.vg-crm-fbar .fill{background:var(--ambre);height:100%;border-radius:99px;min-width:0}
.vg-crm-fbar .cnt{text-align:right;color:var(--encre);font-weight:600}
