:root{
  --navy:#01054C; --gold:#f9b233; --pink:#FF3D91;
  --bg:#F1F2F8; --surface:#fff; --ink:#01054C; --muted:#6b7086; --line:#e3e5f0;
  --radius:14px; --shadow:0 10px 30px -18px rgba(1,5,76,.35);
  --font-display:'Poppins',sans-serif; --font-body:'Roboto',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font-body);background:var(--bg);color:var(--ink);line-height:1.55}
a{color:inherit;text-decoration:none}
h1{font-family:var(--font-display);font-weight:700;font-size:26px;letter-spacing:-.01em}
h1.small{font-size:20px}
code{background:#eceefb;padding:1px 6px;border-radius:6px;font-size:.9em}
.muted{color:var(--muted)}

/* ===== Shell : sidebar + contenu ===== */
.shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}

/* Sidebar */
.side{background:var(--navy);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.side-brand{padding:26px 20px 22px;display:flex;flex-direction:column;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.10)}
.sb-logo{width:60px;height:60px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 6px 18px -8px rgba(0,0,0,.5)}
.sb-logo img{width:30px;height:auto;display:block;filter:brightness(0) saturate(100%) invert(6%) sepia(69%) saturate(4000%) hue-rotate(232deg) brightness(90%) contrast(105%)}
.sb-name{font-family:var(--font-display);font-weight:700;font-size:14px;letter-spacing:.09em;text-align:center;line-height:1.2}
.sb-name small{display:block;font-size:10px;font-weight:500;letter-spacing:.24em;color:var(--gold);margin-top:3px}

.side-nav{padding:16px 12px;flex:1}
.nav-group{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.62);
  background:rgba(255,255,255,.09);padding:5px 12px;border-radius:100px;margin:14px 0 8px 4px}
.side-nav .nav-group:first-child{margin-top:2px}
.nav-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;font-size:14.5px;font-weight:500;
  color:rgba(255,255,255,.82);margin-bottom:3px;transition:.18s;position:relative}
.nav-item svg{width:19px;height:19px;flex:0 0 auto;opacity:.9}
.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-item.on{background:rgba(255,255,255,.14);color:#fff;font-weight:700}
.nav-item.on::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--gold)}
.nav-item.soon{color:rgba(255,255,255,.38);cursor:not-allowed}
.nav-item.soon:hover{background:none}
.nav-item em{margin-left:auto;font-style:normal;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  background:rgba(255,255,255,.12);padding:2px 7px;border-radius:100px}

.side-user{display:flex;align-items:center;gap:11px;padding:14px 16px;border-top:1px solid rgba(255,255,255,.10);background:rgba(0,0,0,.16)}
.su-avatar{width:36px;height:36px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-family:var(--font-display);
  font-weight:700;font-size:15px;color:#fff;background:linear-gradient(120deg,var(--gold),var(--pink))}
.su-info{min-width:0;flex:1}
.su-info strong{display:block;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.su-info small{display:block;font-size:11.5px;color:rgba(255,255,255,.55);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.su-out{background:rgba(255,255,255,.10);border:0;color:#fff;width:32px;height:32px;border-radius:9px;cursor:pointer;display:grid;place-items:center;transition:.2s}
.su-out svg{width:17px;height:17px}
.su-out:hover{background:var(--pink)}

/* Contenu */
.main{background:var(--bg);min-width:0}
.content{width:100%;padding:32px 36px 70px}
.side-toggle{display:none}

/* Layout legacy (login/404) */
.wrap{max-width:1080px;margin:0 auto;padding:34px 22px 70px}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px;flex-wrap:wrap}
.page-actions{display:flex;gap:10px;align-items:center}
.back{font-size:14px;color:var(--muted);display:inline-block;margin-bottom:6px}
.back:hover{color:var(--pink)}

/* Boutons */
.btn{display:inline-flex;align-items:center;gap:.4em;font-family:var(--font-body);font-weight:700;font-size:14px;padding:11px 18px;border-radius:100px;border:0;cursor:pointer;transition:.2s;white-space:nowrap}
.btn-sm{padding:8px 14px;font-size:13px}
.btn-primary{background:linear-gradient(120deg,var(--gold),var(--pink));color:#fff;box-shadow:0 10px 24px -10px rgba(255,61,145,.5)}
.btn-primary:hover{transform:translateY(-1px)}
.btn-ghost{background:#fff;border:1.5px solid var(--line);color:var(--navy)}
.btn-ghost:hover{border-color:var(--navy)}
.btn-dark{background:var(--navy);color:#fff}
.btn-dark:hover{filter:brightness(1.15)}
.btn-danger{background:#fff;border:1.5px solid #f3c2c2;color:#d6293e}
.btn-danger:hover{background:#d6293e;color:#fff;border-color:#d6293e}
.topbar .btn-ghost{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:#fff}
.topbar .btn-ghost:hover{background:rgba(255,255,255,.2)}

/* Flash */
.flash{padding:13px 18px;border-radius:12px;margin-bottom:16px;font-size:14px;font-weight:500}
.flash.ok{background:#e6f7ee;color:#0a7d43;border:1px solid #bfe8d1}
.flash.ko{background:#fdecec;color:#c0273a;border:1px solid #f5c5c5}

/* Cartes / tableau */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:14px 18px;border-bottom:1px solid var(--line);font-weight:700}
.tbl td{padding:14px 18px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tr:hover td{background:#fafbff}
.ordre{font-family:var(--font-display);font-weight:700;color:var(--muted)}
.s-nom{font-family:var(--font-display);font-weight:600;font-size:15px}
.s-slug{font-size:12px;color:var(--muted)}
.swatch{display:inline-block;width:52px;height:24px;border-radius:6px;border:1px solid var(--line)}
.tag{font-size:11px;font-weight:700;padding:4px 10px;border-radius:100px;text-transform:uppercase;letter-spacing:.04em}
.tag.ok{background:#e6f7ee;color:#0a7d43}
.tag.off{background:#eee;color:#888}
.row-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.row-actions form{display:inline}
.hint{margin-top:16px;font-size:14px;color:var(--muted)}

/* Formulaire */
.form label{display:block;font-weight:600;font-size:14px;margin-bottom:6px}
.form input,.form textarea,.form select{width:100%;font-family:var(--font-body);font-size:15px;padding:11px 13px;border:1.5px solid var(--line);border-radius:10px;background:#fff;margin-top:6px;margin-bottom:2px;color:var(--ink)}
.form input:focus,.form textarea:focus{outline:0;border-color:var(--pink)}
.form input[type=color]{height:46px;padding:5px;cursor:pointer}
.form small{color:var(--muted);font-weight:400;font-size:12.5px;display:block;margin-top:4px}
.form textarea{resize:vertical}
.form fieldset{border:1px solid var(--line);border-radius:12px;padding:20px 22px;margin-bottom:20px}
.form legend{font-family:var(--font-display);font-weight:600;font-size:15px;padding:0 8px;color:var(--navy)}
.form .two{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.form label+label,.form fieldset>label{margin-top:14px}

/* La règle ci-dessus espace des champs EMPILÉS. Dans un conteneur qui les
   dispose côte à côte, elle décale tous les champs sauf le premier — qui se
   retrouve seul plus haut que ses voisins. Le sélecteur « label+label » étant
   plus spécifique qu'une simple classe, chaque conteneur devait la neutraliser
   avec assez de poids, ce qui se faisait jusqu'ici au coup par coup — et se
   voyait oublier. Tout conteneur de ce type s'ajoute désormais ici. */
.form :is(.two,.chk-row,.presence-champs,.role-picker,.radio-cards) label{margin-top:0}
.check{display:flex;align-items:center;gap:10px;font-weight:500}
.check input{width:auto;margin:0}
.form-grid{padding:26px}
.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:6px}

/* ===== Page de connexion (2 colonnes) ===== */
.login-body{background:#F7F6F2}
.login-split{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}

/* Panneau de marque */
.login-brand{position:relative;overflow:hidden;color:#fff;padding:44px 56px;display:flex;flex-direction:column;
  background:linear-gradient(150deg,#01054C 0%,#050A6B 45%,#0a1a8c 100%)}
.login-brand::before{content:"";position:absolute;width:620px;height:620px;border-radius:50%;
  background:radial-gradient(circle,rgba(249,178,51,.30),transparent 65%);top:-220px;right:-200px}
.login-brand::after{content:"";position:absolute;width:520px;height:520px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,61,145,.26),transparent 65%);bottom:-200px;left:-160px}
.lb-top,.lb-title,.lb-sub,.lb-foot{position:relative;z-index:2}
.lb-top{display:flex;align-items:center;gap:14px}
.lb-logo{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.14);display:grid;place-items:center;border:1px solid rgba(255,255,255,.22);flex:0 0 auto}
.lb-logo img{width:26px;height:auto;display:block}
.lb-name{font-family:var(--font-display);font-weight:700;font-size:16px;letter-spacing:.06em;line-height:1.1}
.lb-name small{display:block;font-size:11px;font-weight:500;letter-spacing:.22em;color:var(--gold);margin-top:3px}
.lb-title{font-family:var(--font-display);font-weight:700;font-size:clamp(30px,3.4vw,48px);line-height:1.12;margin:auto 0 0;letter-spacing:-.01em}
.lb-title span{color:rgba(255,255,255,.62)}
.lb-sub{margin-top:18px;font-size:15px;color:rgba(255,255,255,.72);max-width:400px}
.lb-foot{margin-top:auto;padding-top:44px;font-size:12.5px;color:rgba(255,255,255,.5)}

/* Panneau formulaire */
.login-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 28px;gap:18px}
.login-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:38px 34px;width:100%;max-width:410px;
  box-shadow:0 18px 50px -28px rgba(1,5,76,.35)}
.login-card h2{font-family:var(--font-display);font-size:27px;font-weight:700;margin-bottom:4px}
.login-card>.muted{font-size:14.5px;margin-bottom:24px}
.login-form label{display:block;font-weight:600;font-size:13.5px;margin-bottom:16px;color:var(--navy)}
.login-form input{width:100%;font-family:var(--font-body);font-size:15px;padding:13px 14px;border:1.5px solid var(--line);
  border-radius:10px;background:#fbfbfe;margin-top:7px;color:var(--ink);transition:.2s}
.login-form input:focus{outline:0;border-color:var(--gold);background:#fff;box-shadow:0 0 0 3px rgba(249,178,51,.18)}
.pwd-wrap{position:relative;display:block}
.pwd-wrap input{padding-right:46px}
.pwd-eye{position:absolute;right:8px;top:calc(50% + 3px);transform:translateY(-50%);background:none;border:0;cursor:pointer;
  color:#9aa0b8;padding:6px;border-radius:8px;display:grid;place-items:center;transition:.2s}
.pwd-eye svg{width:19px;height:19px}
.pwd-eye:hover{color:var(--navy)}
.pwd-eye.on{color:var(--pink)}
.login-form .btn-primary{width:100%;justify-content:center;margin-top:6px;padding:13px}
.login-help{font-size:12.5px;color:var(--muted)}
.login-card .flash{margin-bottom:16px}

@media(max-width:900px){
  .login-split{grid-template-columns:1fr}
  .login-brand{padding:30px 28px 34px;min-height:auto}
  .lb-title{font-size:29px;margin-top:30px}
  .lb-sub{margin-bottom:6px}
  .lb-foot{display:none}
  .login-panel{padding:30px 20px 46px}
}

/* Empty / 404 */
.empty{text-align:center;padding:70px 20px}
.empty h1{font-size:52px;margin-bottom:10px}
.empty .btn{margin-top:18px}

/* Notifications glissantes */
.toast-stack{position:fixed;top:18px;right:18px;z-index:210;display:flex;flex-direction:column;gap:10px;max-width:min(420px,calc(100vw - 36px))}
.toast{display:flex;align-items:flex-start;gap:11px;background:#fff;border:1px solid var(--line);border-left:4px solid #0a7d43;
  border-radius:12px;padding:14px 16px;box-shadow:0 16px 40px -18px rgba(1,5,76,.45);font-size:14px;color:var(--ink);
  transform:translateX(120%);opacity:0;transition:.32s cubic-bezier(.2,.8,.2,1)}
.toast.in{transform:none;opacity:1}
.toast.ko{border-left-color:#c0273a}
.toast-ico{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:700;
  background:#e6f7ee;color:#0a7d43}
.toast.ko .toast-ico{background:#fdecec;color:#c0273a}
.toast-msg{flex:1;line-height:1.45}
.toast-x{background:none;border:0;font-size:19px;line-height:1;color:#b9bccd;cursor:pointer;padding:0 2px}
.toast-x:hover{color:var(--navy)}
@media(max-width:560px){.toast-stack{top:12px;right:12px;left:12px;max-width:none}}

/* Boîte de dialogue de confirmation */
.modal-overlay{position:fixed;inset:0;z-index:200;background:rgba(1,5,76,.55);backdrop-filter:blur(3px);
  display:grid;place-items:center;padding:20px;opacity:0;visibility:hidden;transition:.2s}
.modal-overlay.open{opacity:1;visibility:visible}
.modal{background:#fff;border-radius:18px;padding:30px 30px 24px;max-width:440px;width:100%;text-align:center;
  box-shadow:0 30px 70px -22px rgba(1,5,76,.55);transform:translateY(10px) scale(.98);transition:.22s cubic-bezier(.2,.8,.2,1)}
.modal-overlay.open .modal{transform:none}
.modal-ico{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px;
  background:color-mix(in srgb,var(--gold) 18%,#fff);color:#a5680a}
.modal-ico svg{width:28px;height:28px}
.modal-danger .modal-ico{background:#fdecec;color:#c0273a}
.modal h3{font-family:var(--font-display);font-size:19px;font-weight:600;color:var(--navy);line-height:1.35;margin-bottom:8px}
.modal p{font-size:14.5px;color:var(--muted);line-height:1.55;margin-bottom:22px}
.modal-actions{display:flex;gap:10px;justify-content:center}
.modal-actions .btn{min-width:130px;justify-content:center}
.modal-danger .btn-primary{background:#d6293e;box-shadow:0 10px 24px -10px rgba(214,41,62,.5)}
@media(max-width:480px){.modal-actions{flex-direction:column-reverse}.modal-actions .btn{width:100%}}

/* Recherche */
.search-box{position:relative;display:inline-flex;align-items:center}
.search-box svg{position:absolute;left:11px;width:16px;height:16px;color:#9aa0b8;pointer-events:none}
.search-box input{font-family:var(--font-body);font-size:14px;padding:9px 12px 9px 33px;border:1.5px solid var(--line);
  border-radius:100px;background:#fff;color:var(--ink);min-width:250px}
.search-box input:focus{outline:0;border-color:var(--pink)}
.count-badge{display:inline-block;font-size:12px;font-weight:700;background:#eef0fb;color:var(--navy);
  padding:2px 9px;border-radius:100px;margin-left:4px;vertical-align:middle}

/* Pagination */
.pager{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:16px}
.pager-info{font-size:13px;color:var(--muted)}
.pager-nav{display:flex;gap:5px;align-items:center}
.pg{min-width:34px;height:34px;display:grid;place-items:center;padding:0 9px;border-radius:9px;
  border:1.5px solid var(--line);background:#fff;color:var(--navy);font-size:13.5px;font-weight:600;transition:.18s}
a.pg:hover{border-color:var(--navy)}
.pg.on{background:var(--navy);border-color:var(--navy);color:#fff}
.pg.off{color:#c3c6d4;cursor:not-allowed}
.pg.dots{border:0;background:none;color:var(--muted);min-width:20px;padding:0}
@media(max-width:560px){
  .search-box input{min-width:0;width:100%}
  .inline-filter{flex-wrap:wrap}
}

/* Formulaire d'envoi de test */
.test-form{display:grid;grid-template-columns:1fr 280px;gap:18px;align-items:start}
.test-form>label{margin:0}
.test-form small.inline{display:inline;font-weight:400}
.test-form textarea{resize:vertical;min-height:86px}
.test-actions{grid-column:1/-1;display:flex;justify-content:flex-end;margin-top:-4px}
@media(max-width:760px){
  .test-form{grid-template-columns:1fr}
  .test-actions .btn{width:100%;justify-content:center}
}

/* Consentements */
.cs{display:inline-block;font-size:10.5px;font-weight:700;padding:3px 10px;border-radius:100px;letter-spacing:.03em;text-transform:uppercase}
.cs-GRANTED{background:#e6f7ee;color:#0a7d43}
.cs-REFUSED{background:#fdecec;color:#c0273a}
.cs-WITHDRAWN{background:#fff3e0;color:#a5680a}
.cs-EXPIRED{background:#eef0f5;color:#5f6478}
.cs-NONE{background:#eef0f5;color:#8a8fa3}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:22px}
.stat-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.sc-label{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.sc-value{font-family:var(--font-display);font-size:30px;font-weight:700;color:var(--navy);line-height:1.1;margin-top:6px}
.sc-sub{font-size:12px;color:var(--muted);margin-top:2px}
.consent-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-bottom:16px}
.cc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;border-left:4px solid var(--line)}
.cc-GRANTED{border-left-color:#0a7d43}
.cc-REFUSED{border-left-color:#c0273a}
.cc-WITHDRAWN{border-left-color:#f9b233}
.cc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.cc-head strong{font-family:var(--font-display);font-size:15px}
.cc-meta{font-size:12px;color:var(--muted)}
.cc-actions{margin-top:12px}
.cc-actions form{display:flex;gap:7px;align-items:center}
.cc-motif{flex:1;min-width:0;font-size:12.5px;padding:7px 10px;border:1.5px solid var(--line);border-radius:8px;font-family:var(--font-body)}
.consent-history summary{cursor:pointer;font-size:13.5px;color:var(--muted);font-weight:600;padding:6px 0}
.consent-history summary:hover{color:var(--pink)}
.ctext{font-size:12.5px;max-width:420px}
.ct-current{padding:20px 22px;margin-bottom:12px}
.ct-off{opacity:.62}
.ch-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:24px 0 12px}
.ch-toggle{margin-left:auto}
.ct-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.ct-text{font-size:15px;line-height:1.6;color:var(--ink);background:var(--bg);border-left:3px solid var(--gold);padding:14px 16px;border-radius:0 10px 10px 0;margin-bottom:14px}
.ct-meta{display:grid;gap:8px;font-size:13px}
.ct-meta>div{display:grid;grid-template-columns:110px 1fr;gap:12px}
.ct-meta dt{color:var(--muted);font-weight:600}
.proof{font-size:11.5px;line-height:1.5}

/* Utilisateurs & rôles */
.user-cell{display:flex;align-items:center;gap:11px}
.su-avatar.sm{width:32px;height:32px;font-size:13px}
.role{display:inline-block;font-size:11px;font-weight:700;padding:4px 11px;border-radius:100px;letter-spacing:.02em}
.role-admin{background:#eae7ff;color:#4b32c3}
.role-editeur{background:#e0f0ff;color:#0b5aa8}
.role-lecteur{background:#eef0f5;color:#5f6478}
.roles-legend{margin-top:20px;display:flex;flex-direction:column;gap:9px;font-size:13.5px;color:var(--muted);max-width:820px}
.roles-legend .role{margin-right:8px}
.role-picker{display:grid;gap:10px}
.role-opt{display:flex;align-items:flex-start;gap:11px;border:1.5px solid var(--line);border-radius:12px;padding:13px 15px;cursor:pointer;transition:.2s;margin:0;font-weight:400}
.role-opt:hover{border-color:var(--pink)}
.role-opt:has(input:checked){border-color:var(--pink);background:color-mix(in srgb, var(--pink) 6%, #fff)}
.role-opt input{width:auto;margin:3px 0 0;accent-color:var(--pink);flex:0 0 auto}
.role-opt strong{display:block;font-size:14.5px;font-weight:600;color:var(--navy)}
.role-opt small{display:block;color:var(--muted);font-size:13px;margin-top:2px}

/* Listes / options */
.opt-cat{font-family:var(--font-display);font-size:16px;font-weight:600;margin:6px 0 12px;color:var(--navy)}
.btn-warn{background:#fff;border:1.5px solid #e7b96b;color:#a5680a}
.btn-warn:hover{background:#f9b233;color:#fff;border-color:#f9b233}
tr.archived td{opacity:.55}
tr.archived td.row-actions{opacity:1}

/* Inscriptions */
.chk-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:8px 0 16px}
.chk-row .check{font-size:14px;font-weight:500}
.inline-filter{display:flex;gap:8px}
.inline-filter select{font-family:var(--font-body);font-size:14px;padding:9px 12px;border:1.5px solid var(--line);border-radius:100px;background:#fff;color:var(--navy);cursor:pointer}
.tag.mini{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:100px;background:#eef0fb;color:var(--navy);margin:2px 3px 2px 0;text-transform:none;letter-spacing:0}
.cv-yes{font-weight:700;color:var(--pink)}
.tel-ok{display:inline-block;margin-left:6px;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:100px;background:#e6f7ee;color:#0a7d43}
.tel-no{display:inline-block;margin-left:6px;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:100px;background:#fdecec;color:#c0273a}
.detail{padding:8px 26px 22px}
.detail dl{display:block}
.detail dl>div{display:grid;grid-template-columns:230px 1fr;gap:14px;padding:15px 0;border-bottom:1px solid var(--line)}
.detail dl>div:last-child{border-bottom:0}
.detail dt{font-weight:700;color:var(--muted);font-size:14px}
.detail dd{font-size:15px}

@media(max-width:980px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:250px;height:100vh;z-index:60;transform:translateX(-100%);
    transition:.3s cubic-bezier(.7,0,.2,1);box-shadow:0 0 40px rgba(0,0,0,.35)}
  .side.open{transform:translateX(0)}
  .side-toggle{display:flex;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;margin:16px 0 0 18px;
    background:#fff;border:1px solid var(--line);border-radius:11px;cursor:pointer;padding:0 11px}
  .side-toggle span{display:block;height:2.5px;background:var(--navy);border-radius:2px}
  .content{padding:16px 20px 60px}
}
@media(max-width:720px){
  .detail dl>div{grid-template-columns:1fr;gap:4px}
  .form .two{grid-template-columns:1fr}
  .tbl thead{display:none}
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%}
  .tbl tr{border-bottom:8px solid var(--bg)}
  .tbl td{border:0;padding:8px 16px}
  .row-actions{justify-content:flex-start;padding-bottom:16px}
}

/* ===== Module E-mails : modèles, éditeur, envoi ===== */
.mod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}
.mod-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:18px 20px;display:flex;flex-direction:column;gap:8px}
.mod-card.is-arch{opacity:.6}
.mod-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mod-type{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 10px;border-radius:100px;
  background:#eceefb;color:var(--navy)}
.mod-type.t-confirmation{background:#e6f7ee;color:#0a7d43}
.mod-type.t-connexion{background:#e7effd;color:#1a4fa0}
.mod-type.t-rappel{background:#fff3dc;color:#8a5b00}
.mod-type.t-apres{background:#fdeaf3;color:#b31465}
.mod-nom{font-family:var(--font-display);font-weight:600;font-size:17px;color:var(--navy);line-height:1.3}
.mod-nom:hover{color:var(--pink)}
.mod-sujet{font-size:13.5px;color:var(--muted);line-height:1.5}
.mod-meta{font-size:12.5px;color:#9aa0b8}
.mod-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.mod-note{font-size:12.5px;color:#9aa0b8;font-style:italic}

/* Éditeur : colonne de saisie + aperçu */
.ed-split{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:22px;align-items:start}
.ed-main{min-width:0}
.ed-side{position:sticky;top:20px;display:flex;flex-direction:column;gap:14px}
.ed-preview{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.ed-pv-head{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line)}
.ed-pv-head strong{font-family:var(--font-display);font-size:14px;color:var(--navy)}
.ed-pv-subject{padding:11px 16px;border-bottom:1px solid var(--line);background:#fafbff;font-size:13px}
.ed-pv-subject span{color:#9aa0b8;margin-right:8px}
.ed-pv-subject em{font-style:normal;font-weight:600;color:var(--navy)}
.ed-preview iframe{display:block;width:100%;height:560px;border:0;background:#f1f2f8}
.ed-pv-note{padding:10px 16px;font-size:12px;border-top:1px solid var(--line)}
.ed-vars{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;font-size:13px}
.ed-vars summary{cursor:pointer;font-weight:600;color:var(--navy)}
.ed-vars ul{list-style:none;margin:12px 0 0;display:flex;flex-direction:column;gap:7px}
.ed-vars li{display:flex;align-items:baseline;gap:9px}
.ed-vars li span{color:var(--muted);font-size:12.5px}
.varbtn{font-family:var(--font-body);font-size:12px;background:#eceefb;color:var(--navy);border:0;border-radius:6px;
  padding:3px 8px;cursor:pointer;white-space:nowrap;font-weight:600}
.varbtn:hover{background:var(--pink);color:#fff}

/* Blocs de contenu */
.blocs{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}
.blk{border:1.5px solid var(--line);border-radius:12px;background:#fbfcff;overflow:hidden}
.blk:focus-within{border-color:var(--pink)}
.blk-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f2f4fc;border-bottom:1px solid var(--line)}
.blk-type{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.blk-tools{display:flex;gap:4px}
.bt{width:26px;height:26px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer;
  font-size:13px;line-height:1;color:var(--navy)}
.bt:hover{border-color:var(--navy)}
.bt-del:hover{background:#d6293e;border-color:#d6293e;color:#fff}
.blk-body{padding:14px 16px}
.form .blk-body label{margin-top:0}
.form .blk-body label+label{margin-top:12px}
.blk-auto{font-size:13px;color:var(--muted);font-style:italic;margin:0}
.add-blocs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:4px}
.ab-label{font-size:13px;color:var(--muted);font-weight:600}

/* Étape de ciblage */
.radio-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}
.rc{display:block;border:1.5px solid var(--line);border-radius:12px;padding:14px 16px;cursor:pointer;background:#fff}
.rc.on{border-color:var(--pink);background:#fff7fb}
.rc input{width:auto!important;margin:0 0 6px!important}
.rc-t{display:block;font-weight:700;font-size:14px;color:var(--navy)}
.rc-d{display:block;font-size:12.5px;color:var(--muted);font-weight:400;line-height:1.5;margin-top:4px}
.form .check-inline{display:flex;flex-direction:column;justify-content:center}
.form .check-inline input{width:auto!important;margin:0 8px 0 0!important;vertical-align:middle}
.send-card{border:1.5px solid #f3c2c2}

@media(max-width:1100px){
  .ed-split{grid-template-columns:1fr}
  .ed-side{position:static}
  .ed-preview iframe{height:460px}
}
@media(max-width:720px){
  .radio-cards{grid-template-columns:1fr}
}

/* Note explicative RGPD + libellé de canal */
.note-rgpd{padding:18px 22px;margin-bottom:26px;border-left:4px solid var(--gold)}
.note-rgpd h3{font-family:var(--font-display);font-size:15px;color:var(--navy);margin-bottom:8px}
.note-rgpd p{font-size:13.5px;line-height:1.7;color:var(--muted);margin-bottom:8px}
.note-rgpd p:last-child{margin-bottom:0}
.ch-note{font-size:12.5px;color:var(--muted);flex:1 1 100%;line-height:1.5}

/* Détail des canaux couverts par l'accord groupé */
.elec-detail{padding:18px 22px;margin:14px 0 0}
.elec-detail .ed-intro strong{font-family:var(--font-display);font-size:14.5px;color:var(--navy)}
.elec-detail .ed-intro p{font-size:13px;line-height:1.6;margin:5px 0 14px}
.elec-rows{display:flex;flex-direction:column;gap:2px}
.elec-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.er-nom{font-weight:600;font-size:14px;min-width:110px}
.elec-row form{margin-left:auto}

/* Lien et alerte dans les textes de consentement */
.ct-lien{display:inline-block;margin-left:6px;color:var(--pink);font-weight:600;font-size:13.5px}
.ct-lien:hover{text-decoration:underline}
.ct-alerte{margin-top:12px;padding:11px 14px;background:#fdf6e3;border-left:3px solid var(--gold);
  border-radius:8px;font-size:13px;line-height:1.6;color:#7a5b00}

/* Portée des sollicitations autorisées, au-dessus du journal des transmissions */
.trans-portee{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:14px;
  padding:11px 15px;background:#fafbff;border:1px solid var(--line);border-radius:10px;font-size:13.5px}
.trans-portee>span:first-child{color:var(--muted);font-weight:500}
.mod-type.t-inconnu{background:#fdecec;color:#c0273a}

/* ===== Tableau de bord ===== */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px;margin-bottom:22px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:20px 22px;display:flex;flex-direction:column;gap:3px;position:relative;overflow:hidden}
.kpi-fort{background:linear-gradient(125deg,var(--navy),#1b1f7a);border-color:transparent;color:#fff}
.kpi-fort .k-label,.kpi-fort .k-sub{color:rgba(255,255,255,.72)}
.kpi-salon::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c,var(--gold))}
.k-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.k-val{font-family:var(--font-display);font-weight:800;font-size:36px;line-height:1.05;letter-spacing:-.02em}
.k-val small{font-size:18px;font-weight:600;opacity:.6}
.k-sub{font-size:12.5px;color:var(--muted);line-height:1.5}
.k-up{color:#0a7d43;font-weight:700}
.k-down{color:#c0273a;font-weight:700}

.dash-card{padding:22px 24px;margin-bottom:20px}
.dash-card h2{font-family:var(--font-display);font-size:17px;color:var(--navy);margin-bottom:4px}
.dash-card h3{font-family:var(--font-display);font-size:13.5px;color:var(--muted);margin-bottom:10px;
  text-transform:uppercase;letter-spacing:.05em}
.dash-card>p.muted{font-size:13px;line-height:1.6;margin-bottom:16px}
.dash-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:14px}
.dash-head>div{flex:1 1 320px;min-width:0}
.dash-head p.muted{font-size:13px;line-height:1.6;margin:0}
.dash-2col{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.dash-3col{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start}
.dash-alerte{margin-top:14px;padding:11px 14px;background:#fdf6e3;border-left:3px solid var(--gold);
  border-radius:8px;font-size:13px;line-height:1.6;color:#7a5b00}
.dash-alerte a{color:#7a5b00;text-decoration:underline}

.chart-box{position:relative;height:330px}
.chart-box.h240{height:240px}
.chart-box.h230{height:230px}
.chart-ko{font-size:13px;color:var(--muted);text-align:center;padding:40px 20px;line-height:1.6}

/* Bascule d'axe */
.seg{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:100px;padding:3px;flex:0 0 auto}
.seg button{font-family:var(--font-body);font-size:13px;font-weight:600;color:var(--muted);background:none;
  border:0;padding:8px 16px;border-radius:100px;cursor:pointer;transition:.2s;white-space:nowrap}
.seg button:hover{color:var(--navy)}
.seg button.on{background:var(--navy);color:#fff}

/* Barres horizontales */
.bar-list{display:flex;flex-direction:column;gap:11px}
.bar-row{display:grid;grid-template-columns:110px 1fr 56px;align-items:center;gap:12px;font-size:13.5px}
.br-lab{font-weight:600;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.br-lab.br-large{grid-column:1}
.br-track{height:9px;background:var(--bg);border-radius:100px;overflow:hidden}
.br-fill{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,var(--gold),var(--pink));transition:width .5s}
.br-val{text-align:right;font-family:var(--font-display);font-weight:700;color:var(--navy)}
.br-meta{grid-column:2/4;font-size:12px;color:var(--muted);margin-top:-6px}
/* Liste repliée : c'est le script qui pose .replie et révèle le bouton.
   Sans JavaScript, tout s'affiche et le bouton reste caché — la page reste
   complète, et imprimable telle quelle. */
.bar-list.replie .br-extra{display:none}
.voir-plus{display:none;margin-top:16px;width:100%;justify-content:center}
.voir-plus.pret{display:flex}

.conso-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.conso-bloc .bar-row{grid-template-columns:96px 1fr 52px}

.mini-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:14px}
.mini{background:var(--bg);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.m-val{font-family:var(--font-display);font-weight:800;font-size:24px;color:var(--navy);line-height:1.1}
.m-lab{font-size:12.5px;font-weight:600;color:var(--navy)}
.m-sub{font-size:11.5px;color:var(--muted)}
.tag.mini{background:#eceefb;color:var(--navy);text-transform:none;letter-spacing:0;font-weight:600}

@media(max-width:1100px){
  .dash-2col,.dash-3col{grid-template-columns:1fr}
  .conso-grid{grid-template-columns:1fr;gap:20px}
}
@media(max-width:720px){
  .bar-row{grid-template-columns:88px 1fr 46px;gap:9px;font-size:13px}
  .conso-bloc .bar-row{grid-template-columns:80px 1fr 46px}
  .k-val{font-size:30px}
  .dash-card{padding:18px 16px}
  .chart-box{height:280px}
}

/* Filtre de salon dans le titre + projection */
.h1-filtre{display:inline-block;font-size:16px;font-weight:700;vertical-align:middle;margin-left:8px;
  padding:5px 14px;border-radius:100px;background:var(--c,var(--gold));color:#fff}
.proj-card{border-left:4px solid var(--gold)}
.proj-grid{display:grid;grid-template-columns:1fr auto 1fr 1fr;gap:18px;align-items:stretch}
.proj{background:var(--bg);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:3px}
.proj-fort{background:linear-gradient(125deg,var(--navy),#1b1f7a);color:#fff}
.proj-fort .p-lab,.proj-fort .p-sub{color:rgba(255,255,255,.75)}
.p-lab{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.p-val{font-family:var(--font-display);font-weight:800;font-size:32px;line-height:1.1;letter-spacing:-.02em}
.p-sub{font-size:12px;color:var(--muted);line-height:1.45}
.proj-fleche{display:grid;place-items:center;font-size:22px;color:var(--muted)}
.proj-note{margin-top:16px;padding:12px 15px;background:#fafbff;border:1px solid var(--line);
  border-radius:10px;font-size:12.5px;line-height:1.65;color:var(--muted)}
.fiab{flex:0 0 auto;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  padding:5px 12px;border-radius:100px;white-space:nowrap}
.fiab-faible{background:#fdecec;color:#c0273a}
.fiab-moyenne{background:#fdf6e3;color:#7a5b00}
.fiab-bonne{background:#e6f7ee;color:#0a7d43}
.br-meta a{color:var(--pink);font-weight:600}
.br-meta a:hover{text-decoration:underline}

@media(max-width:900px){
  .proj-grid{grid-template-columns:1fr 1fr;gap:12px}
  .proj-fleche{display:none}
  .p-val{font-size:26px}
}
.proj-2{grid-template-columns:1fr 1fr}
.proj-tot{border-left-color:var(--line)}
.tp-portee{flex:1 1 100%;font-size:12.5px;color:var(--muted);margin-top:2px}

/* ===== Exposants ===== */
.filtre-bar{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;padding:16px 20px;margin-bottom:16px}
.filtre-bar label{font-weight:600;font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:5px}
.filtre-bar select{font-family:var(--font-body);font-size:14px;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);min-width:230px}

.recond{padding:16px 20px;margin-bottom:16px}
.recond summary{cursor:pointer;font-weight:600;font-family:var(--font-display)}
.recond p{margin:10px 0 12px;font-size:13.5px}
.recond-form{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}
.recond-form label{font-weight:600;font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:5px}
.recond-form select{font-family:var(--font-body);font-size:14px;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;background:#fff;min-width:210px}

.expo-ident{display:flex;align-items:center;gap:12px}
.expo-logo{width:40px;height:40px;object-fit:contain;border-radius:9px;background:#fff;border:1px solid var(--line);flex:0 0 auto}
.expo-logo.vide{display:grid;place-items:center;font-family:var(--font-display);font-weight:700;color:var(--muted);background:var(--bg)}
.tag.warn{background:#fff5e0;color:#8a6100}
.tag.mini{font-size:10.5px;padding:3px 8px;text-transform:none;letter-spacing:0}
tr.archived{opacity:.55}

/* Participation à un salon : les champs n'apparaissent qu'une fois coché */
.presence{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:#fff}
.presence.on{border-color:var(--gold);background:color-mix(in srgb, var(--gold) 5%, #fff)}
.presence-tete{display:flex;align-items:center;gap:10px;margin:0;font-weight:500}
.presence-tete strong{font-family:var(--font-display)}
.presence-champs{display:none;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.presence.on .presence-champs{display:grid}
.presence-champs label{font-size:12.5px;color:var(--muted)}
.presence-champs label.large{grid-column:1/-1}
.presence-champs input,.presence-champs select{margin-top:4px;font-size:14px;padding:9px 11px}

.fs-aide{margin:-4px 0 14px;font-size:13px;line-height:1.6}
.fichier-actuel{display:flex;align-items:center;gap:10px;margin-top:9px;font-size:13px;color:var(--muted);flex-wrap:wrap}
.fichier-actuel .check{margin:0;font-size:12.5px}
.empty{padding:26px 24px;text-align:center}
.empty p{margin-bottom:6px}

/* ===========================================================================
   Module Utilisateurs : filtres, fiche, journal, profil
   =========================================================================== */

.tag.ko{background:#fdeaea;color:#a51b1b}

/* Barre de filtres, commune à la liste et au journal */
.filtres{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 18px;margin-bottom:18px}
.filtres input[type="search"]{flex:1 1 240px;min-width:180px;padding:10px 14px;border:1.5px solid var(--line);border-radius:100px;font:inherit;font-size:14px;color:var(--ink)}
.filtres select{padding:10px 14px;border:1.5px solid var(--line);border-radius:100px;font:inherit;font-size:14px;background:#fff;color:var(--ink)}
.filtres input[type="search"]:focus,.filtres select:focus{outline:0;border-color:var(--pink)}

.lien-discret{font-size:13.5px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.lien-discret:hover{color:var(--pink)}

/* Deux colonnes qui se replient sur une seule en dessous de 900 px */
.deux-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;align-items:start}
@media(max-width:900px){.deux-col{grid-template-columns:1fr}}

.card-titre{font-family:var(--font-display);font-size:16px;font-weight:700;padding:18px 18px 6px;margin:0}
.card .card-titre+p.muted{padding:0 18px;font-size:13px;line-height:1.6;margin:0 0 6px}
.card>.vide,.card>p.vide{padding:22px 18px;color:var(--muted);font-size:14px;margin:0}

/* Listes de définitions de la fiche */
.defs{display:grid;grid-template-columns:auto 1fr;gap:10px 18px;padding:14px 18px 4px;margin:0;font-size:14px}
.defs dt{color:var(--muted);font-size:13px}
.defs dd{margin:0}

.actions-fiche{display:flex;flex-wrap:wrap;gap:8px;padding:14px 18px 4px;border-top:1px solid var(--line);margin-top:12px}
.card>.muted:last-child{padding:0 18px 16px}

/* Bandeau d'état en tête de fiche */
.bandeau{border-radius:var(--radius);padding:14px 18px;font-size:14px;line-height:1.6;margin-bottom:18px;border:1px solid}
.bandeau.warn{background:#fff8e8;border-color:#f3dcab;color:#7a5800}
.bandeau.off{background:#f4f4f7;border-color:var(--line);color:var(--muted)}

/* Encart explicatif dans un formulaire */
.encart{background:#f7f8fc;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:10px;
  padding:14px 16px;font-size:13.5px;line-height:1.65;color:#444}
.encart strong{color:var(--navy)}

/* Onglets du journal */
.onglets{display:flex;gap:6px;margin-bottom:18px}
.onglet{padding:9px 18px;border-radius:100px;font-size:14px;font-weight:700;color:var(--muted);background:#fff;border:1.5px solid var(--line)}
.onglet:hover{border-color:var(--navy);color:var(--navy)}
.onglet.on{background:var(--navy);border-color:var(--navy);color:#fff}

/* Tableaux denses : beaucoup de lignes, peu de texte par cellule */
.tbl.compacte th,.tbl.compacte td{padding:9px 18px;font-size:13.5px}
.tbl .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}
.tbl .nowrap{white-space:nowrap}
.tbl .tronque{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}

a.user-cell{color:inherit}
a.user-cell:hover .s-nom{color:var(--pink)}

/* Lien vers « Mon profil » dans le bas du menu */
.su-link{display:flex;align-items:center;gap:11px;flex:1;min-width:0;color:#fff;border-radius:10px;padding:2px;transition:.2s}
.su-link:hover,.su-link.on{background:rgba(255,255,255,.10)}
.su-info{min-width:0}
.su-info strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Pages de mot de passe */
.login-row{display:flex;justify-content:flex-end;margin:-6px 0 4px}
.auth-pictogramme{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;margin-bottom:16px;
  background:#eef0fb;color:var(--navy)}
.auth-pictogramme svg{width:26px;height:26px}
.auth-pictogramme.ko{background:#fdeaea;color:#a51b1b}

/* Indicateur de robustesse du mot de passe */
.jauge{margin:-6px 0 12px}
.jauge-barres{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.jauge-barres span{height:5px;border-radius:100px;background:var(--line)}
.jauge[data-note="1"] .jauge-barres span:nth-child(-n+1){background:#d64545}
.jauge[data-note="2"] .jauge-barres span:nth-child(-n+2){background:var(--gold)}
.jauge[data-note="3"] .jauge-barres span:nth-child(-n+3){background:#3ea76a}
.jauge[data-note="4"] .jauge-barres span{background:#0a7d43}
.jauge-txt{display:block;font-size:12.5px;line-height:1.5;margin-top:6px;color:var(--muted)}
.jauge-txt.ok{color:#0a7d43}
.jauge-txt.ko{color:#a51b1b}

/* ===========================================================================
   Suivi des supports de communication
   =========================================================================== */

.chiffres-cles{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
@media(max-width:760px){.chiffres-cles{grid-template-columns:repeat(2,1fr)}}
.chiffres-cles>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:18px 20px;display:flex;flex-direction:column;gap:4px}
.ck-val{font-family:var(--font-display);font-size:26px;font-weight:700;line-height:1.1}
.ck-lib{font-size:12.5px;color:var(--muted);line-height:1.4}

.tbl th.num,.tbl td.num{text-align:right;white-space:nowrap}

/* Lien court, prêt à être copié */
.lien-copiable{display:flex;gap:8px;padding:6px 18px 14px;align-items:center}
.lien-copiable input{flex:1;min-width:0;padding:10px 14px;border:1.5px solid var(--line);border-radius:100px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;color:var(--ink);background:var(--bg)}

.qr-bloc{display:flex;gap:18px;align-items:flex-start;padding:6px 18px 18px;flex-wrap:wrap}
.qr-bloc img{border:1px solid var(--line);border-radius:10px;background:#fff}
.qr-bloc>div{flex:1;min-width:200px}
.qr-bloc .btn{margin:0 6px 6px 0}
.qr-bloc p.muted{font-size:13px;line-height:1.6;margin:0 0 10px}

/* Histogramme des clics : barres simples, sans bibliothèque */
.histo{display:flex;align-items:flex-end;gap:3px;height:120px;padding:10px 18px 14px}
.histo-barre{flex:1;min-width:3px;background:linear-gradient(180deg,var(--pink),var(--gold));
  border-radius:3px 3px 0 0;transition:.2s}
.histo-barre:hover{filter:brightness(1.15)}

/* États des demandes exposant */
.tag.statut-nouvelle{background:#fdeaf3;color:#a5154f}
.tag.statut-en_cours{background:#fff5e0;color:#8a6100}
.tag.statut-convertie{background:#e6f7ee;color:#0a7d43}
.tag.statut-sans_suite{background:#eee;color:#888}

/* Rapport quotidien : petites barres d'actions alignées.
   Les champs y sont posés seuls, hors d'un formulaire .form : ils n'héritaient
   donc d'aucun habillage et ressortaient en bordure brute du navigateur. */
.rq-ligne{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rq-ligne label{margin:0;white-space:nowrap;color:var(--muted);font-size:14px}
.rq-ligne input{margin:0;font-family:var(--font-body);font-size:14px;padding:9px 13px;
  border:1.5px solid var(--line);border-radius:100px;background:#fff;color:var(--ink)}
.rq-ligne input:focus{outline:0;border-color:var(--pink)}
.rq-ligne input::placeholder{color:#9aa0b8}
/* Le champ d'heure ne contient que deux chiffres : centrés, ils se lisent mieux
   que collés à gauche d'une case trois fois trop large. */
.rq-ligne input[type=number]{width:78px;text-align:center;padding-left:8px;padding-right:8px}

/* Accès à l'espace exposant : encadré explicatif et case en ligne */
.encart-bleu{background:#f7f8fc;border-left:4px solid var(--navy);border-radius:0 10px 10px 0;
  padding:13px 16px;font-size:13px;line-height:1.7;color:#444}
.encart-bleu strong{color:var(--navy)}
.rq-coche{display:flex;align-items:center;gap:7px;margin:0;font-size:13.5px;color:var(--ink);white-space:nowrap}
.rq-coche input{width:auto!important;padding:0!important;border-radius:3px!important;accent-color:var(--pink)}
.tag.arelire{background:#fff5e0;color:#8a6100;margin-left:8px;vertical-align:middle}

/* Offre de formation, salon par salon */
.of-onglets{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.of-onglets button{font-family:inherit;font-size:13.5px;padding:8px 16px;border-radius:100px;
  border:1.5px solid var(--line);background:#fff;color:var(--navy);cursor:pointer}
.of-onglets button.on{background:var(--navy);border-color:var(--navy);color:#fff}
.of-salon{display:grid;gap:22px}
.of-bloc{border-top:1px solid var(--line);padding-top:18px}
.of-bloc:first-of-type{border-top:0;padding-top:0}
.of-titre{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  font-weight:600;color:var(--navy);font-size:14.5px;margin-bottom:3px}
.of-compte{font-weight:400;font-size:12.5px;color:var(--muted);white-space:nowrap}
.of-aide{margin:0 0 10px;font-size:12.5px;line-height:1.6;color:var(--muted)}
.of-vide{margin:0 0 10px;font-size:13px;color:#a5680a;background:#fff8e8;
  border-radius:8px;padding:9px 12px}
/* Une liste vide qui s'explique : l'avertissement appelle une action,
   la note informe seulement. Deux tons, pour ne pas alarmer à tort. */
.of-alerte{margin:0 0 10px;font-size:13px;line-height:1.6;color:#a5680a;
  background:#fff8e8;border-radius:8px;padding:9px 12px}
.of-note{margin:0 0 10px;font-size:12.5px;line-height:1.6;color:var(--muted)}

/* Champ de recherche et sa liste filtrante */
.of-combo{position:relative}
.of-recherche{width:100%;font-family:inherit;font-size:14px;padding:10px 13px;
  border:1.5px solid var(--line);border-radius:10px;background:#fff;color:var(--navy)}
.of-recherche:focus{outline:0;border-color:var(--pink)}
.of-recherche:disabled{background:#f5f6fb;color:var(--muted);cursor:not-allowed}
.of-liste{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);margin:0;padding:6px;
  list-style:none;max-height:280px;overflow:auto;background:#fff;border:1.5px solid var(--line);
  border-radius:12px;box-shadow:0 12px 32px rgba(1,5,76,.14)}
.of-liste li{padding:9px 12px;border-radius:8px;font-size:14px;color:var(--navy);cursor:pointer;
  line-height:1.4}
.of-liste li:hover,.of-liste li.on{background:#eef0fb}
.of-liste .of-groupe{font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);cursor:default;padding:10px 12px 4px;font-weight:600}
.of-liste .of-groupe:hover{background:none}
.of-liste .of-hors-liste{color:#8a6100;background:#fff8e8}
.of-liste .of-hors-liste:hover,.of-liste .of-hors-liste.on{background:#ffeec9}
.of-liste .of-aucun{color:var(--muted);cursor:default;font-size:13px}
.of-liste .of-aucun:hover{background:none}

.of-choix{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;padding:0}
.of-choix:empty{margin:0}
.of-choix li{display:flex;align-items:center;gap:7px;background:#eef0fb;color:var(--navy);
  border-radius:100px;padding:6px 6px 6px 14px;font-size:13.5px}
.of-choix li[data-of-libre]{background:#fff8e8;color:#8a6100}
.of-retirer{border:0;background:rgba(1,5,76,.1);color:inherit;width:22px;height:22px;
  border-radius:50%;font-size:15px;line-height:1;cursor:pointer;padding:0}
.of-retirer:hover{background:var(--pink);color:#fff}

/* Listes : portée d'un intitulé (candidats / exposants) */
.opt-portee{text-align:center}
.opt-portee input{width:17px;height:17px;accent-color:var(--pink);cursor:pointer;margin:0}
.opt-portee input:disabled{cursor:not-allowed;opacity:.4}
/* En-tête d'un bloc d'offre : de quel salon parle-t-on */
.of-entete{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding-bottom:14px;margin-bottom:4px;border-bottom:2px solid var(--gold)}
.of-rang{font-family:var(--font-display);font-size:10.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:#fff;background:var(--navy);padding:4px 10px;border-radius:100px}
.of-nom{font-family:var(--font-display);font-weight:600;font-size:16px;color:var(--navy)}
.of-date{font-size:13px;color:var(--muted)}
.of-onglets button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;
  padding:9px 18px;text-align:left;line-height:1.3}
.of-onglets button small{font-size:11px;opacity:.7;font-weight:400}

/* Choix de l'établissement dans le référentiel */
.ec-combo{position:relative}
.ec-liste{position:absolute;z-index:45;left:0;right:0;top:calc(100% + 4px);margin:0;padding:6px;
  list-style:none;max-height:320px;overflow:auto;background:#fff;border:1.5px solid var(--line);
  border-radius:12px;box-shadow:0 12px 32px rgba(1,5,76,.14)}
.ec-liste li{padding:9px 12px;border-radius:8px;cursor:pointer;line-height:1.35}
.ec-liste li:hover,.ec-liste li.on{background:#eef0fb}
.ec-liste .ec-nom{display:block;font-size:14px;color:var(--navy)}
.ec-liste small{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.ec-liste .ec-aucun{color:#8a6100;background:#fff8e8;cursor:default;font-size:13px;line-height:1.6}
.ec-liste .ec-aucun:hover{background:#fff8e8}
.ec-liste .ec-aucun strong{color:#8a6100}
.ec-etat.ec-alerte{color:#a5154f}

/* ===== Média kit ===== */
/* Deux colonnes : l'arborescence à gauche, où tout se modifie sur place, et
   les créations à droite. Mêlées, les champs de création se perdraient au
   milieu des documents déjà déposés. */
.mk-admin{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px;align-items:start}
@media(max-width:1100px){.mk-admin{grid-template-columns:1fr}}

/* Les lignes de l'arborescence ne portent pas la classe « form » du
   backoffice : celle-ci met les champs en pleine largeur, l'un sous l'autre,
   ce qui est juste pour un formulaire mais défait une ligne. Elles reprennent
   donc l'habillage à la main, en restant alignées sur lui. */
.mk-admin input[type="text"],
.mk-admin input[type="number"],
.mk-admin .mk-f select,
.mk-admin .mk-ligne-tete select{
  font-family:var(--font-body);font-size:14px;padding:8px 11px;
  border:1.5px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.mk-admin .form input,.mk-admin .form select{font-size:15px;padding:11px 13px}
.mk-admin input[type="text"]:focus,
.mk-admin input[type="number"]:focus,
.mk-admin select:focus{outline:0;border-color:var(--pink)}

/* `.card` n'est qu'une coquille dans ce backoffice : elle ne porte ni marge
   intérieure ni rembourrage, et chaque écran apporte le sien (.form-grid,
   .card-titre…). Sans cette règle, titres et boutons touchent la bordure. */
.mk-admin .card{padding:22px 24px}

.mk-r.inactif,.mk-d.inactif,.mk-f.inactif{opacity:.55}

/* La rubrique est le premier niveau : son champ se lit comme un titre, sans
   cadre, pour ne pas mettre trois boîtes imbriquées à l'écran. */
.mk-r > .mk-ligne-tete input[name="nom"]{font-family:var(--font-display);font-weight:700;
  font-size:17px;color:var(--navy);border-color:transparent;background:transparent;padding-left:0}
.mk-r > .mk-ligne-tete input[name="nom"]:hover{border-color:var(--line);background:#fff;padding-left:11px}
.mk-r > .mk-ligne-tete{padding-bottom:14px;border-bottom:2px solid var(--line);margin-bottom:18px}

.mk-ligne-tete{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.mk-ligne-tete input[type="text"]{flex:2 1 180px;min-width:0}
.mk-ligne-tete select{flex:1 1 150px;min-width:0}
.mk-ordre{flex:0 0 62px !important;min-width:0 !important;text-align:center}
.mk-visible{flex:0 0 auto;margin:0 !important;font-size:13px;font-weight:500;
  white-space:nowrap;display:inline-flex;align-items:center;gap:6px;color:var(--muted)}
.mk-visible input{margin:0}

.mk-d{border-left:3px solid var(--line);padding-left:16px;margin:0 0 20px 2px}
.mk-d:last-child{margin-bottom:0}
.mk-d > .mk-ligne-tete input[name="nom"]{font-weight:600}

.mk-f{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 10px;
  background:#f7f8fc;border-radius:9px;margin-bottom:7px}
/* L'intitulé prend la part du lion : c'est le seul champ dont la valeur est
   longue, les autres ont une largeur connue d'avance. */
.mk-f input[type="text"]{flex:3 1 150px;min-width:0}
.mk-f select{flex:1 1 112px;min-width:0}
/* Les boutons d'une ligne de document sont resserrés : à trois par ligne,
   l'habillage courant fait déborder l'ensemble et « Retirer » passe seul à la
   ligne suivante — ce qui donne à croire qu'il porte sur autre chose. */
.mk-f .btn{padding:7px 12px;font-size:12.5px}
/* Les actions restent soudées et calées à droite : elles basculent à la ligne
   d'un seul tenant plutôt qu'une par une. */
.mk-actions{display:flex;gap:8px;flex:0 0 auto;margin-left:auto}
.mk-f .mk-visible{font-size:12.5px}
/* L'extension plutôt qu'une vignette : on reconnaît un PDF d'un ZIP d'un coup
   d'œil, sans fabriquer une image par type de fichier. */
.mk-ext{flex:0 0 42px;text-align:center;font-weight:700;font-size:10px;letter-spacing:.04em;
  color:#fff;background:var(--navy);border-radius:5px;padding:6px 3px}
.mk-f .mk-poids{font-size:12px;color:var(--muted);white-space:nowrap}
.mk-aucun{color:var(--muted);font-size:13px;margin:0 0 10px;font-style:italic}

/* Zone de dépôt. Le champ de fichier natif y est rendu transparent et étendu
   à toute la zone : cliquer n'importe où l'ouvre, et il reste le seul élément
   qui porte réellement les fichiers. Le masquer et le piloter de côté aurait
   privé le clavier et les lecteurs d'écran du seul contrôle utilisable. */
.mk-depot{position:relative;border:2px dashed var(--line);border-radius:12px;
  padding:22px 18px;text-align:center;background:#fafbff;transition:.18s;margin-top:6px}
.mk-depot:hover,.mk-depot.survol{border-color:var(--pink);background:#fff6fa}
.mk-depot input[type="file"]{position:absolute;inset:0;width:100%;height:100%;
  opacity:0;cursor:pointer;margin:0;padding:0;border:0}
.mk-depot input[type="file"]:focus-visible+.mk-depot-aide{outline:2px solid var(--pink);outline-offset:4px}
.mk-depot-aide{font-size:13.5px;font-weight:600;color:var(--navy);margin:0 0 4px}
.mk-depot small{display:block;color:var(--muted);font-size:12px;line-height:1.5}

/* Ce que le navigateur enverra, tel qu'il le tient : la liste est un reflet de
   `input.files`, jamais une seconde liste tenue à part. */
.mk-choisis{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:6px}
.mk-choisis li{display:flex;align-items:center;gap:8px;padding:7px 9px;
  background:#f7f8fc;border-radius:8px;font-size:13px}
.mk-choisi-nom{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--navy)}
.mk-choisi-x{flex:0 0 auto;width:22px;height:22px;border:0;border-radius:50%;
  background:#e8eaf4;color:var(--navy);font-size:15px;line-height:1;cursor:pointer}
.mk-choisi-x:hover{background:var(--pink);color:#fff}

.mk-ajouts .card{margin-bottom:18px}
.mk-ajouts h2{font-size:15px;margin-bottom:16px}
.mk-ajouts .form label:first-child{margin-top:0}
.mk-ajouts .btn{width:100%;justify-content:center;margin-top:14px}

/* Sous 1100 px la colonne de droite passe dessous : les créations y restent
   côte à côte plutôt que de s'empiler sur trois écrans de haut. */
@media(max-width:1100px){
  .mk-ajouts{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;align-items:start}
}

/* ===== Liste d'attente ===== */
.at-apercu{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.at-lien{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.at-lien label{display:block;font-weight:600;font-size:13px;color:var(--navy);margin-bottom:6px}
.at-lien input{width:100%;font-family:var(--font-body);font-size:13px;padding:10px 12px;
  border:1.5px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.at-lien small{display:block;color:var(--muted);font-size:12.5px;line-height:1.5;margin-top:6px}

.at-case{width:38px}
.at-fin{text-align:right;white-space:nowrap}
/* Une ligne déjà prévenue s'efface sans disparaître : elle reste consultable,
   mais ne retient plus l'œil parmi celles qui restent à traiter. */
.at-tbl tr.at-fait{opacity:.55}
.at-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:18px}
.at-actions .muted{font-size:12.5px;margin:0;flex:1;min-width:240px}
