/* ============================================================
   HistoPilot Web — style (bleu hospitalier, cohérent avec l'app d'origine)
   Display : Quicksand · Texte : Hanken Grotesk
   ============================================================ */
:root{
  /* Palette calée sur le logo HistoPilot :
     marine #12366d · bleu #6496ce · turquoise #5bd3db */
  --brand-navy:#12366d;       /* marine du logo (H + "Histo") */
  --brand-blue:#6496ce;       /* bleu moyen des vagues + "Flow" */
  --brand-teal:#5bd3db;       /* accent turquoise */

  /* Barre latérale : bleu-ardoise apaisé (moins saturé que le marine pur) */
  --side-1:#33608f; --side-2:#3e6f9e;

  --blue:#6496ce; --blue-vif:#8fb4dd; --blue-fonce:#3f6fb0;
  --blue-bg:#eaf1f8; --blue-bg2:#f3f7fc;
  --navy-900:#1b3a5c; --navy-700:#26517d; --navy-600:#356295; --navy-500:#4a77a8;
  --navy-300:#a9c4e6; --navy-bg:#eef4fa;
  --ink:#233343; --ink-soft:#4a5b6e; --muted:#7c8ea0;
  --paper:#f6f8fb; --paper-2:#eef2f7; --card:#fff; --line:#dde5ef; --line-soft:#eaeff6;
  --green:#2a8a63; --green-bg:#e2f3ea; --red:#cf5147; --red-bg:#fbe6e3;
  --amber:#c2811f; --amber-bg:#f9eecf;
  --teal-bg:#e4f6f7;
  --shadow-sm:0 1px 2px rgba(31,58,95,.05); --shadow:0 4px 16px rgba(31,58,95,.08);
  --shadow-lg:0 12px 36px rgba(31,58,95,.16);
  --r:18px; --r-sm:12px; --r-pill:999px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:'Hanken Grotesk',system-ui,sans-serif;color:var(--ink);background:var(--paper);
  font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;min-height:100vh;
  background-image:radial-gradient(circle at 90% -5%,var(--blue-bg2),transparent 45%);
}
h1,h2,h3{font-family:'Quicksand',sans-serif;color:var(--navy-900);line-height:1.2}
button{font-family:inherit;cursor:pointer;border:none}
input,select{font-family:inherit;font-size:15px}
/* ============================================================
   MISE EN PAGE : barre latérale gauche + contenu
   ============================================================ */
.layout{display:flex;min-height:100vh}

/* ---------- Barre latérale ---------- */
.sidebar{
  --sw:236px;
  flex:0 0 var(--sw);width:var(--sw);
  background:linear-gradient(180deg,var(--side-1),var(--side-2));
  color:#fff;display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;z-index:40;
  transition:width .2s ease,flex-basis .2s ease;
}
/* Logo = bouton de réduction (clic sur le logo) */
.sidebar-top{
  display:flex;align-items:center;gap:11px;padding:18px 16px 16px;
  background:transparent;color:#fff;width:100%;cursor:pointer;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.sidebar-top:hover{background:rgba(255,255,255,.05)}
.sidebar-logo{width:34px;height:34px;flex:none;background:#fff;border-radius:8px;padding:3px}
.sidebar-word{font-family:'Quicksand',sans-serif;font-weight:700;font-size:19px;letter-spacing:.3px;white-space:nowrap;color:#fff}

.nav{display:flex;flex-direction:column;gap:2px;padding:12px 10px;flex:1;overflow-y:auto}
.nav button{
  display:flex;align-items:center;gap:13px;width:100%;
  background:transparent;color:rgba(255,255,255,.78);
  padding:10px 13px;border-radius:10px;font-weight:500;font-size:14px;
  text-align:left;white-space:nowrap;transition:background .12s,color .12s;
}
.nav button:hover{background:rgba(255,255,255,.09);color:#fff}
.nav button.active{
  background:rgba(255,255,255,.14);color:#fff;font-weight:600;position:relative;
}
.nav button.active::before{
  content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;
  background:var(--brand-teal);border-radius:0 3px 3px 0;
}
/* Icônes monochromes, discrètes */
.nav-ico{
  width:24px;height:24px;flex:none;line-height:0;
  display:inline-flex;align-items:center;justify-content:center;
  opacity:.82;
}
.nav-ico svg{width:19px;height:19px;display:block}
.nav button.active .nav-ico{opacity:1}
.nav-txt{flex:1}

.nav-help{
  display:flex;align-items:center;gap:13px;width:calc(100% - 20px);margin:2px 10px 6px;
  background:transparent;color:rgba(255,255,255,.78);
  padding:10px 13px;border-radius:10px;font-weight:500;font-size:14px;
  text-align:left;white-space:nowrap;text-decoration:none;cursor:pointer;
  border:none;transition:background .12s,color .12s;
}
.nav-help:hover{background:rgba(255,255,255,.09);color:#fff}
.nav-help.active{background:rgba(255,255,255,.14);color:#fff;font-weight:600;position:relative}
.nav-help.active::before{
  content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;
  background:var(--brand-teal);border-radius:0 3px 3px 0;
}
.nav-help.active .nav-ico{opacity:1}

/* Bloc utilisateur en bas */
.sidebar-user{
  display:flex;align-items:center;gap:8px;
  margin:0 10px 12px;padding:10px 12px;border-radius:10px;
  background:rgba(255,255,255,.07);
}
.sidebar-user-info{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.sidebar-user-ico{font-size:17px;opacity:.8;flex:none}
.sidebar-user .nav-txt{font-size:13px;font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-logout{
  flex:none;width:30px;height:30px;border-radius:8px;
  background:rgba(255,255,255,.12);color:#fff;font-size:15px;line-height:1;
  display:flex;align-items:center;justify-content:center;
  padding:0;border:0;cursor:pointer;
}
/* ⚠️ Le SVG DOIT avoir une taille explicite.
   Sans width/height, un SVG inline prend sa taille intrinsèque — soit
   300×150 px, soit ZÉRO selon le navigateur et le moment du rendu.
   C'est ce qui donnait une case vide, de façon intermittente. */
.sidebar-logout svg{
  width:17px;height:17px;
  display:block;flex:none;
  stroke:currentColor;fill:none;
}
.sidebar-logout:hover{background:rgba(255,255,255,.24)}

/* ---------- État réduit (icônes seules) ---------- */
.sidebar-collapsed .sidebar{--sw:76px}
.sidebar-collapsed .sidebar-word{display:none}
.sidebar-collapsed .sidebar-top{justify-content:center;padding:18px 0 16px}
.sidebar-collapsed .nav button{justify-content:center;padding:13px 0;gap:0}
.sidebar-collapsed .nav-ico{opacity:.92}
.sidebar-collapsed .nav-ico svg{width:24px;height:24px}
.sidebar-collapsed .nav button.active .nav-ico{opacity:1}
.sidebar-collapsed .nav-txt{display:none}
.sidebar-collapsed .nav-help{justify-content:center;gap:0}
.sidebar-collapsed .nav-help .nav-ico svg{width:23px;height:23px}
.sidebar-collapsed .sidebar-user{flex-direction:column;justify-content:center;padding:10px 0;gap:8px}
.sidebar-collapsed .sidebar-user-info{flex:none;justify-content:center}
.sidebar-collapsed .sidebar-user-ico{font-size:20px}
.sidebar-collapsed .sidebar-user .nav-txt{display:none}
.sidebar-collapsed .sidebar-logout{display:flex}
/* Switch établissement en menu réduit : icône seule centrée, pas de débordement */
.sidebar-collapsed .service-row{justify-content:center;padding:11px 0;gap:0}
.sidebar-collapsed .service-label{display:none}
.sidebar-collapsed .service-switch{display:none}
.sidebar-collapsed .theme-row{justify-content:center;padding:11px 0;gap:0}
.sidebar-collapsed .theme-label{display:none}

.sidebar-scrim{display:none}

/* ---------- Zone de contenu (plus de bandeau blanc) ---------- */
.content{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--paper)}

/* Barre mobile minimale (burger + logo), masquée sur bureau */
.topbar-mobile{display:none}
.topbar-logo{height:30px;width:auto;display:block}

main{max-width:1240px;margin:0 auto;width:100%;padding:26px 28px 40px}
.view{display:none;animation:fade .25s ease}
.view.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:var(--shadow-sm);margin-bottom:18px}
.card h3{font-size:17px;margin-bottom:6px;display:flex;align-items:center;gap:8px}
.section-desc{color:var(--muted);font-size:13.5px;margin-bottom:16px}

/* ---------- Champ numéro / scan ---------- */
.scan-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:8px}
.man-grid{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.man-grid .field{flex:1;min-width:180px}
.man-grid .field:first-child{flex:0 0 150px;min-width:130px}
.man-grid select{width:100%}
.man-grid .btn{white-space:nowrap}
.field{flex:1;min-width:200px}
.field label{display:block;font-weight:600;font-size:13px;color:var(--ink-soft);margin-bottom:5px}
.field input{
  width:100%;padding:13px 15px;border:1.5px solid var(--line);border-radius:var(--r-sm);
  background:var(--paper);transition:border .15s,box-shadow .15s;
  box-sizing:border-box;font-family:inherit;font-size:15px;line-height:1.3;color:var(--ink);
}
.field input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-bg)}
.field input.scan:focus{border-color:var(--brand-teal);box-shadow:0 0 0 3px var(--teal-bg)}
.field input.scan{font-size:16px;font-weight:600;letter-spacing:.5px;color:var(--navy-700);padding:11px 14px}
/* le champ numéro n'a pas besoin de toute la largeur */
.scan-row .field{max-width:420px}
.field select{
  width:100%;padding:13px 15px;border:1.5px solid var(--line);border-radius:var(--r-sm);
  background:var(--paper);transition:border .15s,box-shadow .15s;color:var(--ink);cursor:pointer;
  box-sizing:border-box;font-family:inherit;font-size:15px;line-height:1.3;
  -webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237a8aa0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:40px;
}
.field select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-bg)}
.btn-del{
  background:var(--red-bg);color:var(--red);width:28px;height:28px;border-radius:8px;
  font-weight:700;font-size:13px;line-height:1;transition:.12s;
}
.btn-del:hover{background:var(--red);color:#fff}

/* ---------- Planning (grille astreintes) ---------- */
.btn-sm{padding:7px 13px;font-size:13px;border-radius:var(--r-sm)}
.plan-table{border-collapse:separate;border-spacing:0;font-size:12.5px;min-width:100%}
.plan-table th,.plan-table td{border:1px solid var(--line-soft);padding:0;text-align:center}
.plan-rowhead{position:sticky;left:0;background:var(--card);z-index:2;text-align:left !important;
  padding:8px 12px !important;font-weight:700;color:var(--navy-700);white-space:nowrap;min-width:210px;font-size:12.5px;
  box-shadow:2px 0 4px rgba(18,54,109,.06)}
.plan-dayhead{background:var(--navy-600);color:#fff;font-weight:700;padding:6px 0 !important;min-width:40px;line-height:1.25;font-size:11.5px}
.plan-dayhead.we{background:var(--brand-blue)}
.plan-cell{min-width:40px;height:38px;cursor:pointer;color:var(--navy-700);font-weight:700;font-size:12px;transition:background .1s}
.plan-cell:hover{background:var(--teal-bg);box-shadow:inset 0 0 0 2px var(--brand-teal)}
.plan-cell.we{background:#f2f6fb}
.plan-cell.filled{background:color-mix(in srgb,var(--brand-blue) 20%,#fff);color:var(--navy-900)}
.plan-cell.filled.we{background:color-mix(in srgb,var(--brand-blue) 32%,#fff)}
.plan-line-int .plan-rowhead{font-weight:600;font-style:italic;color:var(--muted);font-size:11.5px;padding-left:22px !important}
.plan-line-int .plan-cell{color:var(--ink-soft);font-weight:600;font-style:italic}
.plan-line:nth-child(even) .plan-cell{background:#fafcfe}
.plan-line:nth-child(even) .plan-cell.filled{background:color-mix(in srgb,var(--brand-blue) 20%,#fff)}
.plan-line:nth-child(even) .plan-cell.we{background:#eef4fb}

/* ----- Planning : vue mobile par jour ----- */
.planday{max-width:520px;margin:0 auto}
.planday-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.planday-nav .btn{flex:0 0 auto}
.planday-date{
  flex:1;text-align:center;font-family:'Quicksand',sans-serif;font-weight:700;
  color:var(--navy-900);font-size:15px;text-transform:capitalize;
  background:var(--blue-bg);padding:9px 8px;border-radius:var(--r-sm);
}
.planday-date.we{background:color-mix(in srgb,var(--brand-blue) 22%,#fff)}
.planday-list{display:flex;flex-direction:column;gap:8px}
.planday-row{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;border:1px solid var(--line);border-radius:12px;
  background:var(--card);cursor:pointer;transition:border-color .12s,box-shadow .12s;
}
.planday-row:hover,.planday-row:active{border-color:var(--brand-teal);box-shadow:var(--shadow-sm)}
.planday-row.int{background:var(--paper-2)}
.planday-row.int .planday-lbl{font-style:italic;color:var(--muted);font-size:13px}
.planday-lbl{flex:1;font-weight:600;color:var(--navy-700);font-size:13.5px;line-height:1.3}
.planday-val{
  flex:0 0 auto;min-width:56px;text-align:center;
  font-weight:800;font-size:15px;color:var(--muted);
  padding:6px 12px;border-radius:var(--r-pill);background:var(--paper-2);
}
.planday-row.filled .planday-val{
  color:var(--navy-900);
  background:color-mix(in srgb,var(--brand-blue) 22%,#fff);
}
.gen-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 14px;padding:10px 12px;background:var(--paper-2);border-radius:var(--r-sm)}
.gen-lbl{font-weight:700;font-size:13px;color:var(--navy-700)}
.gen-del{color:var(--red)!important}
.gen-del:hover{background:var(--red-bg)!important}
.import-config{display:flex;gap:9px;align-items:flex-start;margin:12px 0 4px;padding:11px 13px;
  background:var(--blue-bg);border:1px solid var(--blue-bg2);border-radius:var(--r-sm);cursor:pointer;font-size:13px;line-height:1.45}
.import-config input{margin-top:2px;flex-shrink:0}
.import-config span{color:var(--navy-800)}

/* ---------- Modale ---------- */
.modal-overlay{position:fixed;inset:0;background:rgba(12,28,48,.55);display:none;align-items:flex-start;justify-content:center;z-index:100;overflow-y:auto;padding:40px 16px}
.modal-overlay.show{display:flex}
.modal-box{background:var(--card);border-radius:14px;max-width:640px;width:100%;padding:24px 26px;box-shadow:0 20px 60px rgba(0,0,0,.3);margin:auto}
.modal-box h3{margin:0 0 16px}
.modal-foot{display:flex;gap:10px;align-items:center;margin-top:20px;padding-top:16px;border-top:1px solid var(--line-soft)}
.mform{display:flex;flex-direction:column;gap:14px;max-height:60vh;overflow-y:auto;padding-right:6px}
.mform .field{margin:0;flex:none}
.mform .field.box{overflow:visible}
.mform .field.box{background:var(--blue-bg);border-radius:8px;padding:11px 13px;
  display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 20px;text-align:left}
.mform .field.box > .box-title{flex:0 0 100%;font-weight:700;color:var(--navy-700);margin:0 0 2px;display:block}
.mform .field.box .cbx{display:inline-flex;align-items:center;gap:7px;margin:0;white-space:nowrap;flex:0 0 auto}
.mform .field.box .cbx input{flex:0 0 auto;width:16px;height:16px;margin:0}
.mform .field.box .cbx span{white-space:nowrap}
.mform .field.box .cbx-wrap{flex:0 0 100%;display:flex;flex-wrap:wrap;gap:10px 20px}
.cbx{display:inline-flex;align-items:center;gap:6px;font-weight:600;margin-right:16px;cursor:pointer;font-size:13.5px}
.cbx input{width:auto;margin:0}
.cbx-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}

/* ---------- Médecins ---------- */
.med-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:6px}
.med-card{background:var(--paper);border:1.5px solid var(--line);border-radius:10px;padding:13px 15px;cursor:pointer;transition:.14s}
.med-card:hover{border-color:var(--blue);box-shadow:0 3px 12px rgba(47,125,196,.15);transform:translateY(-1px)}
.med-inactive{opacity:.55}
.med-head{display:flex;align-items:center;gap:8px;font-size:17px;color:var(--navy-900)}
.med-sub{font-size:12.5px;color:var(--muted);margin:3px 0 2px;min-height:16px}
.med-meta{font-size:12px;color:var(--ink-soft)}
.med-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.mtag{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:20px;letter-spacing:.3px}
.mtag.chru{background:#e3f0fb;color:#2f6ba3}
.mtag.icl{background:#f3e9f7;color:#8a53a5}
.mtag.pmo{background:#fff4e6;color:#b07a2e}
.mtag.bio{background:#eef0f3;color:#5e6b7d}
.mtag.off{background:var(--red-bg);color:var(--red)}
.mtag.none{background:var(--paper-2);color:var(--muted)}

.btn{padding:13px 22px;border-radius:var(--r-sm);font-weight:700;font-size:14px}
.btn-primary{background:var(--navy-600);color:#fff}
.btn-primary:hover{background:var(--navy-700)}
.btn-ghost{background:var(--paper-2);color:var(--ink-soft)}
.btn-ghost:hover{background:var(--line-soft)}

/* ---------- Grille des box familles ---------- */
/* placement automatique, 4 colonnes max, centré (largeur + hauteur) */
.box-grid, .tree-tiles{
  display:flex;flex-wrap:wrap;
  gap:16px;margin:0 auto;justify-content:center;align-content:center;
  max-width:736px;   /* 4×168 + 3×16 = 736 → 4 tuiles/ligne max */
}
/* l'îlot garde une hauteur stable ET centre son contenu (largeur + hauteur) */
#enr-grid,#man-grid{min-height:560px;display:flex;flex-direction:column;justify-content:center;align-items:center;max-width:none}
#enr-crumb,#man-crumb{min-height:34px}
.box-grid .box, .tree-tiles .box{width:168px;flex:0 0 168px;min-height:172px}
.box-grid.is-lvl0{max-width:none}
@media(max-width:900px){ .box-grid,.tree-tiles{max-width:520px} }
@media(max-width:640px){ .box-grid,.tree-tiles{max-width:352px} }
.box{
  --accent:#2a5aa0;
  position:relative;overflow:hidden;
  background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:20px 14px 16px;text-align:center;
  transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease;
  display:flex;flex-direction:column;align-items:center;gap:9px;
  box-shadow:var(--shadow-sm);
}
.box .box-band{
  position:absolute;top:0;left:0;right:0;height:6px;
  background:var(--accent);
  border-top-left-radius:16px;border-top-right-radius:16px;
}
.box .ico{
  font-size:36px;line-height:1;
  width:66px;height:66px;display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:color-mix(in srgb,var(--accent) 14%,#fff);
  margin-top:2px;
}
.box .lbl{font-weight:700;font-size:14px;color:var(--navy-900);line-height:1.25}
.box .count{
  font-size:11px;color:var(--accent);font-weight:700;
  background:color-mix(in srgb,var(--accent) 12%,#fff);
  padding:2px 10px;border-radius:var(--r-pill);
}
.box:hover{
  transform:translateY(-4px);
  border-color:var(--accent);
  box-shadow:0 10px 26px color-mix(in srgb,var(--accent) 22%,transparent);
}
.box.type{padding-top:26px;justify-content:flex-start;min-height:172px;overflow:hidden}
.box.type .lbl{font-size:13.5px;line-height:1.3;color:var(--ink);overflow-wrap:anywhere;word-break:break-word;hyphens:auto}
.box.type .poids{
  font-size:11px;font-weight:700;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,#fff);
  padding:2px 10px;border-radius:var(--r-pill);
}

.breadcrumb{display:flex;align-items:center;gap:8px;margin:14px 0 4px;font-weight:600;color:var(--navy-700);flex-wrap:wrap}
.breadcrumb .crumb{background:var(--blue-bg);padding:5px 12px;border-radius:var(--r-pill);font-size:13px}
.breadcrumb .crumb-link{border:none;cursor:pointer;color:var(--navy-600);font-weight:700;transition:background .1s}
.breadcrumb .crumb-link:hover{background:var(--navy-bg)}
.breadcrumb .back{background:var(--paper-2);color:var(--ink-soft);padding:6px 12px;border-radius:var(--r-pill);font-size:13px;font-weight:700;border:none;cursor:pointer}
.breadcrumb .back:hover{background:var(--line-soft)}

/* ---------- Résultat d'attribution ---------- */
.result{
  margin-top:16px;padding:22px;border-radius:var(--r);
  background:linear-gradient(120deg,var(--navy-900),var(--navy-600));color:#fff;
  box-shadow:var(--shadow);display:none;
}
.result.show{display:block;animation:fade .3s ease}
.result .num{font-size:13px;color:var(--navy-300);font-weight:600}
.result .patho{font-family:'Quicksand';font-weight:700;font-size:40px;color:#fff;margin:4px 0;letter-spacing:1px}
.result .meta{font-size:13.5px;color:var(--blue-vif)}
.result.warn{background:linear-gradient(120deg,#8a5a12,var(--amber))}

.result.mini{padding:14px 18px}
.result.mini .patho{font-size:26px}

/* ---------- Tableaux ---------- */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line-soft)}
th{color:var(--muted);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.4px}
tr:hover td{background:var(--paper)}
.tag{display:inline-block;padding:2px 9px;border-radius:var(--r-pill);font-size:11.5px;font-weight:700}
.tag.scan{background:var(--blue-bg);color:var(--blue-fonce)}
.tag.manuel{background:#ffe3b3;color:#9a5b00;border:1.5px solid #e0912a;box-shadow:0 0 0 2px rgba(224,145,42,.15)}
.tag.import{background:#e7e0f5;color:#5b3fa0}

/* ---------- Toast ---------- */
#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--navy-900);color:#fff;padding:12px 20px;border-radius:var(--r-pill);
  box-shadow:var(--shadow-lg);opacity:0;transition:.25s;z-index:50;font-weight:600;font-size:14px}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.err{background:var(--red)} #toast.ok{background:var(--green)}

/* ---------- Login ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow-lg);
  padding:38px 34px;max-width:390px;width:100%;border:1px solid var(--line)}
.login-card .brand{font-family:'Quicksand';font-weight:700;font-size:30px;color:var(--navy-900);text-align:center}
.login-card .brand span{color:var(--blue)}
.login-card .tagline{text-align:center;color:var(--muted);font-size:13px;margin:4px 0 26px}
.login-card .field{margin-bottom:14px}
.login-card .btn-primary{width:100%;margin-top:6px}
.login-err{color:var(--red);font-size:13px;text-align:center;margin-top:12px;min-height:18px;font-weight:600}

/* ---------- Responsive / mobile ---------- */
@media(max-width:760px){
  /* la barre latérale devient un tiroir hors-écran, toujours déployé */
  .layout.sidebar-collapsed .sidebar{--sw:250px}
  .sidebar{
    position:fixed;left:0;top:0;height:100vh;--sw:250px;
    transform:translateX(-100%);transition:transform .24s ease;
    box-shadow:6px 0 26px rgba(31,58,95,.25);
  }
  .sidebar-open .sidebar{transform:translateX(0)}
  .sidebar-collapsed .sidebar-word,
  .sidebar-collapsed .nav-txt{display:inline}   /* dans le tiroir on montre tout */
  .sidebar-collapsed .sidebar-logout{display:flex}
  .sidebar-scrim{
    display:block;position:fixed;inset:0;z-index:35;
    background:rgba(31,58,95,.45);opacity:0;pointer-events:none;transition:opacity .24s;
  }
  .sidebar-open .sidebar-scrim{opacity:1;pointer-events:auto}
  /* barre mobile visible */
  .topbar-mobile{
    display:flex;align-items:center;gap:12px;padding:10px 16px;
    background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;
  }
  .burger{
    display:inline-flex;align-items:center;justify-content:center;
    width:40px;height:40px;border-radius:10px;font-size:20px;
    background:var(--blue-bg);color:var(--navy-700);
  }
}

@media(max-width:640px){
  main{padding:16px 14px 40px}
  .box-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:none}
  .box-grid .box{width:auto}
  #enr-grid{min-height:0}
  .box .ico{width:56px;height:56px;font-size:28px}
  .result .patho{font-size:32px}
  .topbar-logo{height:28px}
  .scan-row .btn{flex:1}
}

/* ============================================================
   AJOUTS — logos, mentions légales, footer, scanner caméra
   ============================================================ */

/* ---- Logo image sur la page de connexion ---- */
.login-logo{display:block;max-width:230px;width:80%;height:auto;margin:0 auto 2px}
/* La mention des données : elle DOCUMENTE L'INTENTION.
   Centrée comme le reste de la carte — sans quoi elle paraît rapportée. */
.login-card .login-donnees{
  margin-top:22px; padding:13px 15px;
  background:var(--bg-soft, #f4f6f9);
  border:1px solid var(--line-soft);
  border-radius:8px;
  text-align:center;
  font-size:12.5px; line-height:1.55; color:var(--muted);
}
.login-card .login-donnees strong{
  display:block; margin-bottom:3px;
  font-weight:600; color:var(--ink, #1a2332);
}

.login-card .login-legal{
  margin-top:18px;padding-top:14px;border-top:1px solid var(--line-soft);
  text-align:center;color:var(--muted);font-size:11.5px;line-height:1.5;
}
.login-card .login-legal a{
  color:var(--muted); text-decoration:none; opacity:.85;
}
.login-card .login-legal a:hover{opacity:1; text-decoration:underline}

/* ---- Bouton caméra ---- */
.btn-cam{
  display:none;   /* caméra réservée au mobile (voir media query) */
  background:var(--blue-bg);color:var(--navy-600);border:1px solid var(--navy-300);
  padding:0 16px;border-radius:var(--r-sm);font-weight:600;font-size:14px;
  white-space:nowrap;align-items:center;
}
.btn-cam:hover{background:var(--navy-bg);border-color:var(--navy-600)}
@media(max-width:760px){ .btn-cam{display:inline-flex} }

/* ---- Pied de page (copyright permanent) ---- */
.app-footer{
  max-width:1280px;margin:6px auto 0;width:100%;padding:14px 26px 26px;
  text-align:center;color:var(--muted);font-size:11.5px;line-height:1.6;
}
.app-footer a{color:var(--navy-600);text-decoration:none;font-weight:600;margin-left:6px}
.app-footer a:hover{text-decoration:underline}

/* ---- Section Mentions légales ---- */
.legal-card{max-width:840px}
.legal-head{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.legal-mark{width:46px;height:46px;flex:none}
.legal-card h4{
  font-family:'Quicksand',sans-serif;color:var(--navy-700);
  font-size:15px;margin:20px 0 6px;
}
.legal-card p{color:var(--ink-soft);font-size:14px;margin-bottom:10px;line-height:1.6}
.legal-card .legal-list{margin:0 0 10px 20px;color:var(--ink-soft);font-size:14px;line-height:1.6}
.legal-card .legal-list li{margin-bottom:6px}
.legal-card .legal-note{
  margin-top:18px;padding-top:12px;border-top:1px solid var(--line-soft);
  font-size:12.5px;color:var(--muted);
}

/* ---- Overlay scanner caméra ---- */
.cam-overlay{
  display:none;position:fixed;inset:0;z-index:60;
  background:rgba(12,45,79,.62);backdrop-filter:blur(3px);
  align-items:center;justify-content:center;padding:16px;
}
.cam-overlay.show{display:flex}
.cam-box{
  background:var(--card);border-radius:var(--r);box-shadow:var(--shadow-lg);
  width:100%;max-width:460px;overflow:hidden;
}
.cam-head{
  display:flex;align-items:center;gap:10px;padding:14px 18px;
  background:linear-gradient(120deg,var(--navy-900),var(--navy-600));color:#fff;
}
.cam-head b{font-family:'Quicksand',sans-serif;font-size:16px;flex:1}
.cam-close{
  background:rgba(255,255,255,.16);color:#fff;width:30px;height:30px;
  border-radius:50%;font-size:15px;line-height:1;
}
.cam-close:hover{background:rgba(255,255,255,.28)}
.cam-reader{width:100%;background:#000;min-height:240px}
.cam-reader video{width:100%!important;height:auto!important;display:block}
.cam-hint{padding:12px 18px 16px;text-align:center;color:var(--muted);font-size:13px}
/* masque l'UI par défaut de html5-qrcode qu'on ne veut pas afficher */
#cam-reader img[alt="Info icon"]{display:none}
#cam-reader__dashboard_section_csr button{display:none}

/* ============================================================
   PERSONNALISATION — éditeur de catalogue
   ============================================================ */
#perso-editor{display:flex;flex-direction:column;gap:16px}
.perso-sys{
  --accent:#2a5aa0;
  border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card);
  box-shadow:var(--shadow-sm);
}
.perso-sys-head{
  display:flex;align-items:center;gap:10px;padding:12px 14px;position:relative;
  background:color-mix(in srgb,var(--accent) 8%,#fff);border-bottom:1px solid var(--line-soft);
}
.perso-band{position:absolute;top:0;left:0;right:0;height:5px;background:var(--accent)}
.perso-icon,.perso-ficon{
  width:46px;text-align:center;font-size:20px;padding:7px 4px;
  border:1px solid var(--line);border-radius:9px;background:#fff;flex:none;
}
.perso-ficon{width:42px;font-size:17px}
.perso-title{
  flex:1;font-family:'Quicksand',sans-serif;font-weight:700;font-size:15.5px;color:var(--navy-900);
  padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;
}
.perso-color{display:flex;align-items:center;flex:none}
.perso-color input[type=color]{
  width:40px;height:40px;padding:0;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer;
}
.perso-fams{padding:12px 14px;display:flex;flex-direction:column;gap:12px}
.perso-fam{border:1px solid var(--line-soft);border-radius:11px;padding:10px 12px;background:var(--paper)}
.perso-fam-head{display:flex;gap:8px;margin-bottom:8px}
.perso-fname{
  flex:1;font-weight:700;font-size:13.5px;color:var(--navy-700);
  padding:7px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;
}
.perso-types{display:flex;flex-direction:column;gap:6px}
.perso-type{display:flex;gap:8px;align-items:center}
.perso-tname{
  flex:1;font-size:13px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);
}
.perso-poids{
  display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);font-weight:700;flex:none;
}
.perso-poids input{
  width:64px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;
  font-weight:700;color:var(--navy-700);text-align:center;
}
@media(max-width:640px){
  .perso-type{flex-wrap:wrap}
  .perso-tname{min-width:0;flex:1 1 100%}
}

/* ---- Case "cas urgent" ---- */
.urgent-check{display:inline-flex;align-items:center;gap:8px;margin-top:10px;font-weight:600;color:var(--navy-700);font-size:13.5px;cursor:pointer}
.urgent-check input{width:16px;height:16px;accent-color:var(--red)}
.urgent-hint{color:var(--muted);font-weight:500;font-size:12px}

/* ============================================================
   GROUPES & RÉFÉRENTS
   ============================================================ */
#groupes-list{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.grp-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--card);box-shadow:var(--shadow-sm)}
.grp-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.grp-head b{font-size:14.5px;color:var(--navy-900)}
.grp-fam-tag{font-size:11px;font-weight:700;color:var(--navy-600);background:var(--blue-bg);padding:2px 9px;border-radius:var(--r-pill)}
.grp-poids{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);font-weight:700}
.grp-poids input{width:64px;padding:5px 8px;border:1px solid var(--line);border-radius:8px;text-align:center;font-weight:700;color:var(--navy-700)}
.grp-legend{font-size:11.5px;color:var(--muted);margin-bottom:8px}
.grp-chips{display:flex;flex-wrap:wrap;gap:6px}
.grp-chip{
  font-size:12px;font-weight:700;padding:5px 11px;border-radius:var(--r-pill);
  background:var(--paper-2);color:var(--muted);border:1px solid var(--line-soft);
  transition:all .1s;user-select:none;
}
.grp-chip:hover{border-color:var(--navy-300)}
.grp-chip.hab{background:var(--blue-bg);color:var(--navy-700);border-color:var(--navy-300)}
.grp-chip.ref{background:var(--brand-navy);color:#fff;border-color:var(--brand-navy);box-shadow:0 2px 6px rgba(18,54,109,.25)}
.grp-chip.ref::before{content:"⭐ "}

/* ============================================================
   STATISTIQUES
   ============================================================ */
.stats-per.active{background:var(--navy-600)!important;color:#fff!important;border-color:transparent!important}
.stats-empty{text-align:center;color:var(--muted);padding:30px 10px;font-size:14px}
.stats-kpis{display:flex;gap:14px;flex-wrap:wrap;margin:6px 0 18px}
.kpi{flex:1;min-width:140px;background:var(--blue-bg);border-radius:14px;padding:16px 18px;text-align:center}
.kpi-val{font-family:'Quicksand',sans-serif;font-weight:700;font-size:28px;color:var(--navy-900);line-height:1}
.kpi-lbl{font-size:12px;color:var(--muted);font-weight:600;margin-top:5px}
.stats-block{margin-bottom:20px}
.stats-block h4{font-family:'Quicksand',sans-serif;color:var(--navy-700);font-size:14.5px;margin-bottom:8px}
.stats-table{width:100%;border-collapse:collapse}
.stats-table td{padding:4px 6px;vertical-align:middle}
.st-name{font-size:13px;font-weight:600;color:var(--navy-700);white-space:nowrap;width:1%;padding-right:12px}
.st-bar{width:100%}
.st-track{background:var(--blue-bg);border-radius:99px;height:14px;overflow:hidden}
.st-fill{height:100%;background:linear-gradient(90deg,var(--navy-600),var(--brand-blue));border-radius:99px}
.st-val{font-size:12.5px;font-weight:700;color:var(--navy-900);text-align:right;white-space:nowrap;width:1%;padding-left:10px}
.stats-fam{border:1px solid var(--line-soft);border-radius:10px;padding:8px 12px;margin-bottom:8px;background:var(--paper)}
.stats-fam summary{cursor:pointer;font-weight:700;color:var(--navy-700);font-size:13.5px}
.stats-fam .fam-meta{font-weight:500;color:var(--muted);font-size:12px;margin-left:8px}
.stats-fam[open]{background:#fff}
.stats-fam .stats-table{margin-top:10px}

/* ============================================================
   MON COMPTE — réglages
   ============================================================ */
.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-top:8px}
.setting{background:var(--paper);border:1px solid var(--line-soft);border-radius:12px;padding:13px 15px}
.setting label{display:block;font-weight:700;font-size:13px;color:var(--navy-700);margin-bottom:7px}
.setting input{width:100%;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;font-weight:700;color:var(--navy-900);font-size:14px}
.setting-hint{font-size:11.5px;color:var(--muted);margin-top:6px;line-height:1.4}

/* ============================================================
   LIGNE DE THÈME (clair / sombre) — bascule pleine largeur
   ============================================================ */
.theme-row{
  display:flex;align-items:center;gap:13px;margin:2px 10px 8px;
  padding:10px 13px;border-radius:10px;width:calc(100% - 20px);
  background:transparent;color:rgba(255,255,255,.78);
  font-weight:500;font-size:13.5px;white-space:nowrap;
}
.theme-row:hover{background:rgba(255,255,255,.09);color:#fff}
.theme-ico{width:24px;height:24px;flex:none;display:inline-flex;align-items:center;justify-content:center}
.theme-ico svg{width:19px;height:19px}
.theme-ico .ico-moon{display:none}
html.dark .theme-ico .ico-sun{display:none}
html.dark .theme-ico .ico-moon{display:block}
.theme-label{flex:1;text-align:left}
.theme-switch{
  flex:none;width:38px;height:21px;border-radius:999px;
  background:rgba(255,255,255,.22);position:relative;transition:background .18s;
}
.theme-knob{
  position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;
  background:#fff;transition:transform .18s;box-shadow:0 1px 2px rgba(0,0,0,.3);
}
html.dark .theme-switch{background:var(--brand-teal)}
html.dark .theme-knob{transform:translateX(17px)}

/* En mode réduit : icône seule, centrée, sans switch ni label */
.sidebar-collapsed .theme-row{justify-content:center;gap:0;padding:11px 0;width:auto;margin:2px 10px 8px}
.sidebar-collapsed .theme-label,
.sidebar-collapsed .theme-switch{display:none}
.sidebar-collapsed .theme-ico svg{width:23px;height:23px}
@media(max-width:760px){
  .sidebar-collapsed .theme-row{justify-content:flex-start;gap:13px;padding:10px 13px;width:calc(100% - 20px)}
  .sidebar-collapsed .theme-label,.sidebar-collapsed .theme-switch{display:inline}
}

/* ============================================================
   THÈME SOMBRE
   ============================================================ */
html.dark{
  --brand-navy:#8fb4dd; --brand-blue:#6496ce; --brand-teal:#5bd3db;
  --side-1:#141b26; --side-2:#1a2430;

  --blue:#6ea3d8; --blue-vif:#8fb4dd; --blue-fonce:#9cc0e6;
  --blue-bg:#1e2a3a; --blue-bg2:#1a2432;
  --navy-900:#e6eef7; --navy-700:#c4d6ea; --navy-600:#9cc0e6; --navy-500:#7ea6d0;
  --navy-300:#41597a; --navy-bg:#1c2836;
  --ink:#e4ebf3; --ink-soft:#b3c2d3; --muted:#8698ab;
  --paper:#0f151d; --paper-2:#161f2a; --card:#1a2330; --line:#2a3646; --line-soft:#232f3d;
  --green:#4bbd8a; --green-bg:#16302a; --red:#e0776c; --red-bg:#331e1e;
  --amber:#d9a441; --amber-bg:#33290f;
  --teal-bg:#123536;
  --shadow-sm:0 1px 2px rgba(0,0,0,.3); --shadow:0 4px 16px rgba(0,0,0,.4);
  --shadow-lg:0 12px 36px rgba(0,0,0,.55);
}
html.dark body{background:var(--paper);color:var(--ink)}
html.dark .content{background:var(--paper)}
html.dark .sidebar{background:linear-gradient(180deg,var(--side-1),var(--side-2));border-right:1px solid #263040}
html.dark .card{background:var(--card);border-color:var(--line)}
html.dark .topbar-mobile{background:var(--card);border-color:var(--line)}
html.dark .box{background:var(--card);border-color:var(--line)}
html.dark .box .ico{background:color-mix(in srgb,var(--accent) 22%,var(--card))}
html.dark .field input,html.dark .field select,html.dark .perso-title,
html.dark .perso-icon,html.dark .perso-ficon,html.dark .perso-fname,
html.dark .perso-tname,html.dark .perso-poids input,html.dark .setting input,
html.dark .grp-poids input,html.dark .man-grid select{
  background:var(--paper-2);color:var(--ink);border-color:var(--line);
}
html.dark .field input::placeholder{color:var(--muted)}
html.dark .login-card{background:var(--card)}
html.dark .btn-ghost{background:var(--paper-2);color:var(--navy-700);border-color:var(--line)}
html.dark .tag,html.dark .grp-chip{background:var(--paper-2);border-color:var(--line);color:var(--ink-soft)}
html.dark .plan-rowhead,html.dark .plan-cell{background:var(--card)}
html.dark .plan-cell.we{background:var(--paper-2)}
html.dark table th{background:var(--paper-2)}
html.dark .stats-fam,html.dark .setting,html.dark .perso-fam{background:var(--paper-2)}
html.dark .kpi{background:var(--blue-bg)}

/* ---- Jours de RIT (fiche médecin) ---- */
.rit-add{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.rit-add input[type=date]{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
.rit-list{display:flex;flex-wrap:wrap;gap:6px}
.rit-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;
  background:var(--blue-bg);color:var(--navy-700);padding:4px 6px 4px 11px;border-radius:var(--r-pill)}
.rit-chip button{border:none;background:rgba(0,0,0,.08);color:var(--navy-700);width:18px;height:18px;
  border-radius:50%;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.rit-chip button:hover{background:var(--red);color:#fff}

/* ---- Demande spéciale (avis / relecture) ---- */
.special-check{display:inline-flex;align-items:center;gap:8px;margin-top:12px;font-weight:600;color:var(--navy-700);font-size:13.5px;cursor:pointer}
.special-check input{width:16px;height:16px;accent-color:var(--brand-blue)}
.special-wrap{margin-top:10px;padding:12px 14px;background:var(--blue-bg);border:1px solid var(--line);border-radius:12px}
.special-block .fam-meta{font-weight:500;color:var(--muted);font-size:12px}

/* ============================================================
   PLANNING — grille présences / absences (médecins × jours)
   ============================================================ */
.pg-table{border-collapse:separate;border-spacing:0;font-size:11.5px;min-width:100%}
.pg-table th,.pg-table td{border:1px solid var(--line-soft);text-align:center;padding:0}
.pg-name{
  position:sticky;left:0;z-index:2;background:var(--card);text-align:left !important;
  padding:6px 10px !important;white-space:nowrap;min-width:200px;font-size:12px;color:var(--navy-700);
  box-shadow:2px 0 4px rgba(31,58,95,.05);
}
.pg-table thead th{background:var(--navy-600);color:#fff;font-weight:700;padding:5px 0 !important;min-width:30px;line-height:1.2;font-size:11px}
.pg-table thead th.pg-name{background:var(--navy-700)}
.pg-table thead th.pg-we{background:var(--brand-blue)}
.pg-table thead th.pg-ferie{background:#8a5a3c}
.pg-fx{font-size:8px;opacity:.9}
.pg-today{outline:2px solid var(--brand-blue);outline-offset:-2px}
.pg-grouphead{background:var(--navy-700) !important;color:#fff !important;font-weight:700;font-size:11.5px}
.pg-groupfill{background:color-mix(in srgb,var(--navy-600) 12%,var(--card))}
.pg-row .pg-name{font-weight:500}
.pg-cell{height:28px;min-width:30px;background:var(--card);transition:background .1s}
.pg-we{background:#eef2f8}
.pg-ferie{background:#f3e6dc}
.pg-click{cursor:pointer}
.pg-click:hover{background:var(--teal-bg);box-shadow:inset 0 0 0 2px var(--brand-teal)}
.pg-abs .pg-sig{
  display:inline-block;font-weight:800;font-size:10.5px;color:#8a5a1a;
  background:#fbeccb;padding:2px 5px;border-radius:5px;line-height:1.1;
}
.pg-abs.pg-cm .pg-sig{color:#555;background:#e0e0e0}

/* menu de choix du code d'absence */
.abs-code-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:6px 0}
.abs-code-btn{
  padding:10px 6px;border:1px solid var(--line);border-radius:9px;background:var(--paper);
  font-weight:700;font-size:13px;color:var(--navy-700);cursor:pointer;transition:all .1s;
}
.abs-code-btn:hover{background:var(--brand-blue);color:#fff;border-color:var(--brand-blue)}

/* Demi-journées (matin / après-midi) dans une case */
.pg-cell{position:relative}
.pg-half{position:absolute;top:0;bottom:0;width:50%;display:flex;align-items:center;justify-content:center}
.pg-am{left:0;border-right:1px dashed var(--line)}
.pg-pm{right:0;border-left:1px dashed var(--line)}
.pg-am-empty{left:0}
.pg-pm-empty{right:0}
.pg-half .pg-sig{font-size:9px;padding:1px 3px}

/* Menu de choix du créneau */
.abs-slot-grid{display:flex;flex-direction:column;gap:8px;margin:6px 0}
.abs-slot-btn{
  padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);
  font-weight:600;font-size:14px;color:var(--navy-700);cursor:pointer;text-align:left;transition:all .1s;
}
.abs-slot-btn:hover{background:var(--blue-bg);border-color:var(--brand-blue)}

/* ---- Récurrences ---- */
.pg-rec{display:inline-block;font-weight:700;font-size:9.5px;color:#3a5a8a;background:#dfe9f6;
  padding:1px 4px;border-radius:4px;line-height:1.1}
.pg-half .pg-rec{font-size:8px;padding:1px 2px}
.rec-table{width:100%;border-collapse:collapse;font-size:13px}
.rec-table td{padding:7px 10px;border-bottom:1px solid var(--line-soft)}
.rec-sig{display:inline-block;font-weight:700;background:#dfe9f6;color:#3a5a8a;padding:2px 8px;border-radius:6px;font-size:12px}

/* Récurrence comptant comme absence (impacte l'attribution) */
.pg-rec-abs{background:#fbeccb;color:#8a5a1a}
.rec-sig-abs{background:#fbeccb;color:#8a5a1a}
.rec-abs-tag{display:inline-block;font-size:10px;font-weight:700;color:#8a5a1a;background:#fbeccb;padding:1px 6px;border-radius:5px;margin-left:6px;vertical-align:middle}

/* Badge pathologiste dans les dernières attributions */
.att-patho{display:inline-block;font-weight:700;background:var(--blue-bg);color:var(--navy-700);padding:2px 9px;border-radius:var(--r-pill);font-size:12px}

/* Champ mot de passe avec œil */
.pwd-wrap{position:relative;display:flex;align-items:center}
.pwd-wrap input{width:100%;padding-right:44px}
.pwd-eye{position:absolute;right:8px;width:32px;height:32px;border-radius:8px;background:transparent;
  color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer}
.pwd-eye:hover{background:var(--paper-2);color:var(--navy-600)}
.pwd-eye svg{width:19px;height:19px}
.pwd-eye.on{color:var(--brand-blue)}
.pwd-eye.on::after{content:"";position:absolute;width:22px;height:2px;background:currentColor;transform:rotate(-45deg);border-radius:2px}

/* Règles de mot de passe (feedback live) */
.pwd-rules{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.pwd-rule{font-size:12px;color:var(--muted);font-weight:600}
.pwd-rule.ok{color:var(--green)}

/* Surbrillance d'un champ en procédure dégradée */
.field-highlight{border-color:var(--amber)!important;box-shadow:0 0 0 3px var(--amber-bg)!important;animation:pulse .5s ease}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.01)}}

/* ---- Historique : recherche + suppression ---- */
.histo-search{position:relative;display:flex;align-items:center;min-width:260px}
.histo-search input{width:100%;padding:9px 32px 9px 14px;border:1px solid var(--line);border-radius:var(--r-pill);
  background:var(--card);color:var(--ink);font-size:14px}
.histo-search input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-bg)}
.histo-clear{position:absolute;right:8px;width:22px;height:22px;border-radius:50%;background:var(--paper-2);
  color:var(--muted);font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.histo-clear:hover{background:var(--line);color:var(--ink)}
.histo-del{background:transparent;border:none;cursor:pointer;font-size:15px;opacity:.5;padding:4px 6px;border-radius:6px;transition:all .1s}
.histo-del:hover{opacity:1;background:var(--red-bg)}

/* ---- Sous-onglets (Médecins / Groupes) ---- */
.subtabs{display:flex;gap:6px;margin-bottom:16px;border-bottom:2px solid var(--line)}
.subtab{padding:10px 18px;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;
  font-weight:700;font-size:14px;color:var(--muted);cursor:pointer;transition:all .12s}
.subtab:hover{color:var(--navy-600)}
.subtab.active{color:var(--brand-blue);border-bottom-color:var(--brand-blue)}

/* ---- Sections actifs / en sommeil ---- */
.med-section-head{margin:18px 0 10px;display:flex;align-items:center}
.med-section-head:first-child{margin-top:0}
.med-section-head h4{margin:0;font-size:15px;color:var(--navy-700);display:flex;align-items:center;gap:8px}
.med-count{display:inline-block;background:var(--blue-bg);color:var(--navy-700);font-size:12px;font-weight:700;padding:1px 9px;border-radius:var(--r-pill)}
.med-section-head.collapsible{cursor:pointer;user-select:none}
.med-section-head.collapsible:hover h4{color:var(--brand-blue)}
.med-caret{color:var(--muted);font-size:12px}
.med-inactive{opacity:.6;filter:grayscale(.3)}

/* ---- Groupes & référents : navigation hiérarchique ---- */
.enr-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-bottom:14px}
.crumb{background:var(--blue-bg);border:none;color:var(--navy-700);font-weight:600;font-size:13px;padding:5px 12px;border-radius:var(--r-pill);cursor:pointer}
.crumb:hover{background:var(--brand-blue);color:#fff}
.crumb-sep{color:var(--muted)}
.box-sub{font-size:11px;color:var(--muted);margin-top:2px}
.grp-typelist{display:flex;flex-direction:column;gap:8px}
.grp-row{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.grp-row-main{flex:1;min-width:0}
.grp-row-title{font-size:14px;color:var(--navy-700);margin-bottom:5px}
.grp-path{font-size:11.5px;color:var(--muted);font-weight:500;margin-left:6px}
.grp-row-chips{display:flex;flex-wrap:wrap;gap:4px}
.grp-row-side{display:flex;align-items:center;gap:10px;flex-shrink:0}
.grp-chip{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--paper-2);color:var(--muted)}
.grp-chip.hab{background:var(--blue-bg);color:var(--navy-700)}
.grp-chip.ref{background:#fbeccb;color:#8a5a1a}
.grp-empty{font-size:12px;color:var(--muted);font-style:italic}
.grp-poids{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px}
.grp-poids input{width:60px;padding:5px 8px;border:1px solid var(--line);border-radius:8px}

/* ---- Popup édition habilités/référent ---- */
.edit-legend{display:flex;flex-wrap:wrap;gap:16px;margin:8px 0 12px;font-size:12px;color:var(--muted);align-items:center}
.edit-legend .swatch{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:4px}
.swatch.hab{background:var(--blue-bg);border:1px solid var(--navy-300)}
.swatch.ref{background:#fbeccb;border:1px solid #d8a24a}
.edit-hint{font-style:italic}
.edit-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px;max-height:50vh;overflow-y:auto;padding:4px}
.edit-chip{padding:9px 6px;border:1px solid var(--line);border-radius:9px;background:var(--paper);font-weight:700;font-size:13px;color:var(--muted);cursor:pointer;transition:all .1s}
.edit-chip:hover{border-color:var(--brand-blue)}
.edit-chip.hab{background:var(--blue-bg);color:var(--navy-700);border-color:var(--navy-300)}
.edit-chip.ref{background:#fbeccb;color:#8a5a1a;border-color:#d8a24a}

/* ---- Personnalisation : repli + ajout/suppression ---- */
.perso-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.perso-caret{background:var(--paper-2);border:1px solid var(--line);color:var(--navy-600);font-size:14px;cursor:pointer;
  width:32px;height:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .12s}
.perso-caret:hover{background:var(--brand-blue);color:#fff;border-color:var(--brand-blue)}
.perso-count{font-size:11.5px;color:var(--muted);font-weight:600;margin-left:8px}
.perso-add{background:var(--blue-bg);border:none;color:var(--brand-blue);font-size:15px;font-weight:700;width:26px;height:26px;border-radius:7px;cursor:pointer;line-height:1}
.perso-add:hover{background:var(--brand-blue);color:#fff}
.perso-del{background:transparent;border:none;font-size:13px;cursor:pointer;opacity:.5;padding:3px 5px;border-radius:6px}
.perso-del:hover{opacity:1;background:var(--red-bg)}
.perso-fam-head{display:flex;align-items:center;gap:8px}
.perso-type{display:flex;align-items:center;gap:10px}

/* ---- Statistiques enrichies : graphiques ---- */
.stats-2col{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.stats-subttl{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px}
.pie-wrap{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.pie-svg{width:170px;height:170px;flex-shrink:0}
.pie-total{font-size:26px;font-weight:800;fill:var(--navy-700);font-family:'Quicksand',sans-serif}
.pie-total-lbl{font-size:11px;fill:var(--muted)}
.pie-legend{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--ink)}
.pie-leg{display:flex;align-items:center;gap:7px}
.pie-dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}
.cbars{display:flex;flex-direction:column;gap:8px}
.cbar-row{display:grid;grid-template-columns:130px 1fr 46px;align-items:center;gap:10px}
.cbar-name{font-size:12.5px;color:var(--navy-700);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cbar-track{background:var(--paper-2);border-radius:var(--r-pill);height:16px;overflow:hidden}
.cbar-fill{height:100%;border-radius:var(--r-pill);transition:width .4s ease;min-width:2px}
.cbar-val{font-size:12.5px;font-weight:700;color:var(--navy-700)}
.line-svg{width:100%;height:auto;max-height:220px}
.line-lbl{font-size:10px;fill:var(--muted)}
.fam-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
@media (max-width:820px){ .stats-2col{grid-template-columns:1fr} .cbar-row{grid-template-columns:100px 1fr 40px} }

/* ---- Médecins : couleurs par catégorie (fonction + lieu) ---- */
:root{
  --cat-senior-chru:#2f6fb0;   /* bleu franc */
  --cat-senior-icl:#7a4fc0;    /* violet ICL */
  --cat-junior:#2aa6a0;        /* teal */
  --cat-jeune:#e0912a;         /* ambre */
}
/* Cartes médecin : fond teinté par catégorie (lisible d'un coup d'œil).
   Fond clair de la couleur + accent gauche marqué + code en gras coloré foncé. */
.med-card.cat-senior-chru{background:color-mix(in srgb,var(--cat-senior-chru) 16%,#fff);border-color:color-mix(in srgb,var(--cat-senior-chru) 35%,#fff);border-left:5px solid var(--cat-senior-chru)}
.med-card.cat-senior-icl{background:color-mix(in srgb,var(--cat-senior-icl) 16%,#fff);border-color:color-mix(in srgb,var(--cat-senior-icl) 35%,#fff);border-left:5px solid var(--cat-senior-icl)}
.med-card.cat-junior{background:color-mix(in srgb,var(--cat-junior) 18%,#fff);border-color:color-mix(in srgb,var(--cat-junior) 38%,#fff);border-left:5px solid var(--cat-junior)}
.med-card.cat-jeune{background:color-mix(in srgb,var(--cat-jeune) 20%,#fff);border-color:color-mix(in srgb,var(--cat-jeune) 42%,#fff);border-left:5px solid var(--cat-jeune)}
.med-card.cat-senior-chru .med-head b{color:color-mix(in srgb,var(--cat-senior-chru) 78%,#000)}
.med-card.cat-senior-icl .med-head b{color:color-mix(in srgb,var(--cat-senior-icl) 78%,#000)}
.med-card.cat-junior .med-head b{color:color-mix(in srgb,var(--cat-junior) 80%,#000)}
.med-card.cat-jeune .med-head b{color:color-mix(in srgb,var(--cat-jeune) 82%,#000)}
.med-card.cat-senior-chru:hover,.med-card.cat-senior-icl:hover,.med-card.cat-junior:hover,.med-card.cat-jeune:hover{
  box-shadow:0 3px 14px rgba(0,0,0,.14);transform:translateY(-1px)}
/* dark mode : teinte plus profonde, texte clair */
html.dark .med-card.cat-senior-chru{background:color-mix(in srgb,var(--cat-senior-chru) 30%,#1a2230)}
html.dark .med-card.cat-senior-icl{background:color-mix(in srgb,var(--cat-senior-icl) 30%,#1a2230)}
html.dark .med-card.cat-junior{background:color-mix(in srgb,var(--cat-junior) 28%,#1a2230)}
html.dark .med-card.cat-jeune{background:color-mix(in srgb,var(--cat-jeune) 30%,#1a2230)}
html.dark .med-card.cat-senior-chru .med-head b,html.dark .med-card.cat-senior-icl .med-head b,
html.dark .med-card.cat-junior .med-head b,html.dark .med-card.cat-jeune .med-head b{color:#fff}

.med-legend{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:12px}
.med-leg{font-size:12px;font-weight:600;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.med-leg::before{content:"";width:12px;height:12px;border-radius:3px;display:inline-block}
.med-leg.cat-senior-chru::before{background:var(--cat-senior-chru)}
.med-leg.cat-senior-icl::before{background:var(--cat-senior-icl)}
.med-leg.cat-junior::before{background:var(--cat-junior)}
.med-leg.cat-jeune::before{background:var(--cat-jeune)}
.med-searchbar{margin-bottom:14px}

/* ---- Formulaire changement de mot de passe : aligné, largeur uniforme ---- */
.pwd-form{display:flex;flex-direction:column;gap:14px;max-width:420px}
.pwd-form .field{margin:0}
.pwd-form label{display:block;margin-bottom:5px;font-weight:600;font-size:13px;color:var(--navy-700)}
.pwd-form .pwd-wrap{width:100%}
.pwd-form .pwd-wrap input{width:100%;box-sizing:border-box}
.pwd-submit{align-self:flex-start;margin-top:2px}

/* ---- Planning : sélection d'absence + corbeille ---- */
.pg-cell{position:relative}
.pg-selected{outline:2px solid var(--brand-blue);outline-offset:-2px;box-shadow:inset 0 0 0 2px var(--brand-blue);z-index:3}
.pg-trash{position:absolute;top:1px;right:1px;background:var(--red-bg,#fdecec);border:1px solid #e4b4b4;border-radius:5px;
  font-size:11px;line-height:1;padding:2px 3px;cursor:pointer;z-index:4}
.pg-trash:hover{background:#f5c6c6}

/* ---- Fiche médecin : lisibilité des listes déroulantes ---- */
.mform select, .mform input{width:100%;box-sizing:border-box}
.mform select{
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23557' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;
}
.field select option, .mform select option{
  background:#fff;color:#1f2d3d;font-size:14px;padding:6px;
}
html.dark .field select option, html.dark .mform select option{
  background:#1e293b;color:#e2e8f0;
}
/* la modale un peu plus large pour éviter la troncature */
.modal-box{max-width:680px}

/* ---- Planning : médecins informatifs (italique, indicatifs) ---- */
.pg-extra .pg-name{font-style:italic;color:var(--muted);font-weight:500}
.pg-extra .pg-cell{background:repeating-linear-gradient(45deg,transparent,transparent 6px,rgba(120,130,150,.04) 6px,rgba(120,130,150,.04) 12px)}

/* ---- Planning : couleurs médecins par catégorie (site/séniorité) ---- */
.pg-cat-senior-chru{border-left:4px solid var(--cat-senior-chru)}
.pg-cat-senior-icl{border-left:4px solid var(--cat-senior-icl)}
.pg-cat-junior{border-left:4px solid var(--cat-junior)}
.pg-cat-jeune{border-left:4px solid var(--cat-jeune)}
.pg-cat-senior-chru b{color:var(--cat-senior-chru)}
.pg-cat-senior-icl b{color:var(--cat-senior-icl)}
.pg-cat-junior b{color:var(--cat-junior)}
.pg-cat-jeune b{color:var(--cat-jeune)}

.pg-legend{display:flex;flex-wrap:wrap;gap:14px;margin:0 0 12px}
.pg-leg{font-size:12px;font-weight:600;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.pg-leg::before{content:"";width:12px;height:12px;border-radius:3px;display:inline-block}
.pg-leg.pg-cat-senior-chru{border-left:none}
.pg-leg.pg-cat-senior-icl{border-left:none}
.pg-leg.pg-cat-junior{border-left:none}
.pg-leg.pg-cat-jeune{border-left:none}
.pg-leg.pg-cat-senior-chru::before{background:var(--cat-senior-chru)}
.pg-leg.pg-cat-senior-icl::before{background:var(--cat-senior-icl)}
.pg-leg.pg-cat-junior::before{background:var(--cat-junior)}
.pg-leg.pg-cat-jeune::before{background:var(--cat-jeune)}
.pg-leg-extra{color:var(--muted)}
.pg-leg-extra::before{background:repeating-linear-gradient(45deg,#ccc,#ccc 2px,#fff 2px,#fff 4px)}

/* ---- Planning : internes par site (teinte proche du senior correspondant) ---- */
:root{
  --cat-jeune-chru:#7aaad6;  /* bleu clair proche du senior CHRU */
  --cat-jeune-icl:#b08fd6;   /* violet clair proche du senior ICL */
}
.pg-cat-jeune-chru{border-left:4px solid var(--cat-jeune-chru)}
.pg-cat-jeune-icl{border-left:4px solid var(--cat-jeune-icl)}
.pg-cat-jeune-chru b{color:var(--cat-jeune-chru)}
.pg-cat-jeune-icl b{color:var(--cat-jeune-icl)}
.pg-leg.pg-cat-jeune-chru,.pg-leg.pg-cat-jeune-icl{border-left:none}
.pg-leg.pg-cat-jeune-chru::before{background:var(--cat-jeune-chru)}
.pg-leg.pg-cat-jeune-icl::before{background:var(--cat-jeune-icl)}

/* ---- Planning : activités / présences spécifiques (distinctes des absences) ---- */
.pg-act{background:#e3eefb!important;cursor:help}
.pg-act .pg-sig{color:#2560a8;font-weight:700}
.abs-cat-lbl{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin:0 0 8px}
.abs-code-btn.act{background:#e3eefb;color:#2560a8;border-color:#b8d0ee}
.abs-code-btn.act:hover{background:#2560a8;color:#fff}

/* ---- Planning astreintes : couleurs des lignes par site (CHRU / ICL) ---- */
.plan-blk-chru .plan-rowhead{border-left:4px solid var(--cat-senior-chru);color:var(--cat-senior-chru);background:color-mix(in srgb,var(--cat-senior-chru) 12%,#fff)}
.plan-blk-icl .plan-rowhead{border-left:4px solid var(--cat-senior-icl);color:var(--cat-senior-icl);background:color-mix(in srgb,var(--cat-senior-icl) 12%,#fff)}
.plan-blk-pmo .plan-rowhead{border-left:4px solid #c98b2f;color:#a5701c;background:#fdf2e2}
.plan-blk-bio .plan-rowhead{border-left:4px solid #4a9d7f;color:#2f7d63;background:#e6f5ee}
/* lignes internes (↳) : teinte plus douce du même site */
.plan-blk-chru.plan-line-int .plan-rowhead{border-left-color:var(--cat-jeune-chru);color:var(--cat-jeune-chru);font-style:italic}
.plan-blk-icl.plan-line-int .plan-rowhead{border-left-color:var(--cat-jeune-icl);color:var(--cat-jeune-icl);font-style:italic}
/* vue mobile */
.plan-blk-chru.planday-row{border-left:4px solid var(--cat-senior-chru)}
.plan-blk-icl.planday-row{border-left:4px solid var(--cat-senior-icl)}
.plan-blk-pmo.planday-row{border-left:4px solid #c98b2f}
.plan-blk-bio.planday-row{border-left:4px solid #4a9d7f}
/* légende astreintes */
.pg-leg.plan-leg-chru::before{background:var(--cat-senior-chru)}
.pg-leg.plan-leg-icl::before{background:var(--cat-senior-icl)}
.pg-leg.plan-leg-pmo::before{background:#c98b2f}
.pg-leg.plan-leg-bio::before{background:#4a9d7f}

/* ---- Enregistrement : signal de confirmation centré à l'écran ---- */
.result-center{
  position:fixed;top:50%;left:50%;
  z-index:900;min-width:280px;max-width:90vw;text-align:center;
  box-shadow:0 20px 60px rgba(0,0,0,.28);border:2px solid var(--brand-blue);
  margin:0!important;
  animation:popInCenter .22s ease both!important;
}
@keyframes popInCenter{
  from{opacity:0;transform:translate(-50%,-50%) scale(.92)}
  to{opacity:1;transform:translate(-50%,-50%) scale(1)}
}

/* ---- Attribution : cas urgent en ligne avec le numéro ---- */
.urgent-inline{display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  padding:9px 14px;border:1.5px solid var(--line);border-radius:var(--r-pill);
  background:var(--card);align-self:flex-end;white-space:nowrap;transition:all .12s}
.urgent-inline input{width:17px;height:17px;accent-color:var(--red);cursor:pointer}
.urgent-badge{font-weight:700;color:var(--navy-700);font-size:14px}
.urgent-inline:has(input:checked){border-color:var(--red);background:var(--red-bg,#fdecec)}
.urgent-inline:has(input:checked) .urgent-badge{color:var(--red,#c0392b)}

/* ---- Badge cas urgent dans l'historique ---- */
.tag-urgent{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:var(--r-pill);
  background:var(--red-bg,#fdecec);color:var(--red,#c0392b);white-space:nowrap}

/* ---- Onglet Charge : tableau d'équité ---- */
.charge-table{width:100%;border-collapse:collapse}
.charge-table th.num,.charge-table td.num{text-align:right;white-space:nowrap}
.charge-table td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.charge-table th{padding:8px 10px;font-size:12px;color:var(--muted);text-align:left;border-bottom:2px solid var(--line)}
.charge-table .cbar-track{min-width:120px}
.badge-etp{display:inline-block;background:var(--blue-bg);color:var(--navy-700);font-weight:700;font-size:12px;padding:1px 9px;border-radius:var(--r-pill)}
.charge-flag{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:var(--r-pill);margin-left:6px}
.charge-flag.over{background:var(--red-bg,#fdecec);color:var(--red,#c0392b)}
.charge-flag.under{background:#e0f2ee;color:#2f7d63}

/* ---- Planning : marqueur cours de formation ---- */
.pg-course{background:#efe6fb!important}
.pg-course-sig{color:#6b3fa0;font-weight:800;font-size:10px;letter-spacing:.3px}
.pg-leg-course::before{background:#8a5cc7}

/* ---- Personnalisation : routage astreinte ---- */
.perso-astr-check{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);white-space:nowrap;cursor:pointer}
.perso-astr-check input{width:15px;height:15px;accent-color:var(--cat-senior-chru)}
.perso-astr-sel{font-size:12px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
.perso-type{flex-wrap:wrap}

/* ---- Alerte médecin bientôt absent dans le résultat d'attribution ---- */
.result-warn-line{margin-top:10px;padding:8px 12px;background:rgba(255,255,255,.18);
  border-radius:8px;font-size:13px;font-weight:600;color:#fff;line-height:1.4}

/* ---- Planning : panneau d'édition matin / après-midi ---- */
.abs-edit-grid{display:flex;flex-direction:column;gap:14px;margin:10px 0}
.abs-slot-edit{display:grid;grid-template-columns:120px 1fr;gap:8px 10px;align-items:center}
.abs-slot-edit .abs-slot-lbl{font-weight:700;color:var(--navy-700);font-size:14px}
.abs-slot-edit select{grid-column:2}
.abs-slot-edit input{grid-column:2}
.abs-slot-edit select,.abs-slot-edit input{padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);font-size:14px;width:100%;box-sizing:border-box}
.abs-slot-edit input:disabled{background:var(--paper-2);opacity:.6}
.abs-edit-quick{margin:4px 0 2px}
/* deux demi-cases côte à côte dans la grille */
.pg-half{display:inline-flex;align-items:center;justify-content:center;width:50%;height:100%;font-size:10px}
.pg-half-empty{opacity:.35}
.pg-am{border-right:1px dashed rgba(0,0,0,.12)}

/* ---- Charge individuelle ---- */
#indiv-picker{margin-top:6px}
#indiv-picker .med-card{cursor:pointer}
.indiv-head{display:flex;align-items:baseline;gap:12px;padding:12px 16px;border-radius:12px;margin-bottom:14px;
  background:var(--blue-bg);border-left:5px solid var(--brand-blue)}
.indiv-head.cat-senior-chru{border-left-color:var(--cat-senior-chru)}
.indiv-head.cat-senior-icl{border-left-color:var(--cat-senior-icl)}
.indiv-head.cat-junior{border-left-color:var(--cat-junior)}
.indiv-head.cat-jeune{border-left-color:var(--cat-jeune)}
.indiv-code{font-family:'Quicksand',sans-serif;font-weight:700;font-size:22px;color:var(--navy-900)}
.indiv-name{color:var(--muted);font-weight:600}

/* ---- Pagination des historiques ---- */
.pager{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;justify-content:center}
.pager-info{font-size:13px;color:var(--muted);font-weight:600;margin:8px 0 0}
.pager .btn[disabled]{opacity:.4;cursor:default}

/* ---- Charge individuelle : période + sélection ---- */
.indiv-date{font-size:13px;color:var(--muted);font-weight:600;display:inline-flex;align-items:center;gap:6px}
.indiv-date input{padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
.indiv-range{font-size:12px;color:var(--muted);font-weight:600}
.med-card.indiv-selected{outline:2px solid var(--brand-blue);outline-offset:1px}

/* ---- Planning astreinte : colonne du jour actuel (encadré bleu) ---- */
.plan-dayhead.plan-today{background:var(--blue-bg);color:var(--navy-900);box-shadow:inset 0 -3px 0 var(--brand-blue)}
.plan-cell.plan-today{box-shadow:inset 2px 0 0 var(--brand-blue),inset -2px 0 0 var(--brand-blue)}
.plan-line:first-child .plan-cell.plan-today{box-shadow:inset 2px 2px 0 var(--brand-blue),inset -2px 0 0 var(--brand-blue)}
.plan-line:last-child .plan-cell.plan-today{box-shadow:inset 2px 0 0 var(--brand-blue),inset -2px -2px 0 var(--brand-blue)}

/* ---- Barre de génération/suppression du planning (par ligne) ---- */
.gen-block{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.gen-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 8px;background:var(--paper-2,#f4f7fb);border-radius:10px}
.gen-row .gen-lbl{min-width:160px;font-weight:700;color:var(--navy-700)}
.gen-sep{width:1px;align-self:stretch;background:var(--line);margin:0 4px}
.btn.gen-strong{background:var(--blue-bg);color:var(--navy-900);font-weight:700}
.btn.gen-del{color:var(--red);border-color:transparent}
.btn.gen-del:hover{background:var(--red-bg)}

/* ---- Planning RCP (double entrée) ---- */
.rcp-table .rcp-sub{font-size:10px;font-weight:500;opacity:.8}
.rcp-cell{cursor:pointer;text-align:center;min-width:90px}
.rcp-cell.filled{font-weight:700;color:var(--navy-900);background:var(--blue-bg)}
.rcp-cell:hover{outline:2px solid var(--brand-blue);outline-offset:-2px}
.rcp-off{background:repeating-linear-gradient(45deg,var(--paper-2,#f4f7fb),var(--paper-2,#f4f7fb) 6px,#fff 6px,#fff 12px)}

/* ---- Effectif présent (sous le planning de présence) ---- */
.eff-bar{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}
.eff-item{flex:1;min-width:150px;display:flex;flex-direction:column;align-items:center;
  padding:12px;border-radius:12px;border:1px solid var(--line)}
.eff-num{font-family:'Quicksand',sans-serif;font-weight:700;font-size:28px;line-height:1}
.eff-lbl{font-size:12px;font-weight:600;color:var(--muted);margin-top:4px}
.eff-senior{background:var(--blue-bg);border-color:var(--brand-blue)}
.eff-senior .eff-num{color:var(--navy-900)}
.eff-junior{background:var(--teal-bg,#e7f5f0)}
.eff-junior .eff-num{color:var(--brand-teal,#2f7d63)}
.eff-interne{background:#eef0fb}
.eff-interne .eff-num{color:#5b5fc7}

/* Encart alerte pédiatrie (onglet Enregistrement) */
.pedia-alert{display:flex;align-items:center;gap:9px;padding:10px 14px;border-radius:12px;
  background:#fff6e5;border:1px solid #f0d38a;color:#8a5a00;max-width:420px;font-size:13px;line-height:1.35}
.pedia-alert:empty{display:none}
.pedia-ic{font-size:20px;flex:0 0 auto}
.pedia-txt b{color:#7a4e00}

/* Effectif présent — sous-texte % et état bas */
.eff-item .eff-sub{font-size:11px;color:var(--muted);margin-top:2px}
.eff-item.eff-low{border-color:#e0a03a;background:#fff6e5}
.eff-item.eff-low .eff-num{color:#b5651d}

/* Alerte d'effectif à l'ouverture du planning */
#eff-alert-host:empty{display:none}
.eff-alert{display:flex;align-items:center;gap:10px;padding:11px 14px;margin-bottom:12px;
  border-radius:12px;background:#fff4e0;border:1px solid #f0c987;color:#8a5a00;font-size:13.5px}
.eff-alert-ic{font-size:18px}
.eff-alert-txt{flex:1}
.eff-alert-x{background:transparent;border:none;color:#8a5a00;font-size:15px;cursor:pointer;
  width:26px;height:26px;border-radius:7px}
.eff-alert-x:hover{background:rgba(138,90,0,.12)}

/* Réglage large (case à cocher pleine largeur) */
.setting.setting-wide{grid-column:1/-1}

/* Alerte d'effectif — variante multi-lignes (aujourd'hui + à venir) */
.eff-alert{align-items:flex-start}
.eff-alert-title{font-weight:700;margin-bottom:3px}
.eff-alert-line{margin-top:2px}
.eff-alert-future{margin-top:5px}
.eff-alert-list{margin:4px 0 0;padding-left:18px}
.eff-alert-list li{margin:1px 0}

/* ---- Panneau Planning (Générer / Effacer / Exporter) ---- */
.pp-tabs{display:flex;gap:6px;margin:4px 0 14px;border-bottom:1px solid var(--line);padding-bottom:0}
.pp-tab{border:none;background:transparent;padding:9px 14px;font-weight:600;font-size:14px;
  color:var(--muted);cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-1px}
.pp-tab:hover{color:var(--navy-700)}
.pp-tab.active{color:var(--navy-900);border-bottom-color:var(--brand-blue)}
.pp-body{min-height:180px}
.pp-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border-radius:10px;
  background:var(--paper-2,#f4f7fb);margin-bottom:8px}
.pp-row-lbl{min-width:170px;font-weight:700;color:var(--navy-700)}
.pp-row-actions{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.pp-exports{display:flex;flex-direction:column;gap:10px}
.pp-export{display:flex;align-items:center;gap:14px;text-align:left;padding:14px 16px;border-radius:12px;
  border:1px solid var(--line);background:var(--paper);cursor:pointer;font-size:14px;color:var(--ink);
  transition:border-color .15s,background .15s}
.pp-export:hover{border-color:var(--brand-blue);background:var(--blue-bg)}
.pp-export-ic{font-size:26px;flex:0 0 auto}
.pp-export-sub{color:var(--muted);font-size:12px}

/* ---- Mode d'emploi (onglet interne) ---- */
.aide-toc{max-width:940px;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-size:13.5px}
.aide-toc a{color:var(--brand-blue);text-decoration:none;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--blue-bg)}
.aide-toc a:hover{background:var(--brand-blue);color:#fff}
.aide-h{max-width:940px;margin:22px 0 8px;font-family:'Quicksand',sans-serif;font-size:19px;color:var(--navy-900);
  font-weight:700;scroll-margin-top:12px}
.aide-card{margin-bottom:12px}
.aide-card h3{margin:0 0 6px;font-size:16px}
.aide-card h3 .ico{margin-right:6px}
.aide-card p{margin:6px 0;line-height:1.6}
.aide-card ul{margin:6px 0 0;padding-left:20px;line-height:1.7}
.aide-tag{display:inline-block;background:var(--blue-bg);color:var(--navy-700);font-size:11px;font-weight:700;
  padding:1px 7px;border-radius:6px;vertical-align:middle}

/* Marqueur de version (pied de page) — pour vérifier le déploiement */
.app-version{margin-left:10px;font-size:11px;color:var(--muted);opacity:.7;font-variant-numeric:tabular-nums}

/* ---- Signal visuel renforcé après scan / attribution ---- */
/* Flash d'apparition : anneau lumineux qui attire l'œil */
@keyframes resultFlash{
  0%   { box-shadow:0 0 0 0 rgba(46,111,224,.55), var(--shadow); }
  60%  { box-shadow:0 0 0 14px rgba(46,111,224,0), var(--shadow); }
  100% { box-shadow:0 0 0 0 rgba(46,111,224,0), var(--shadow); }
}
.result.result-flash{ animation:fade .3s ease, resultFlash 1.1s ease-out 1; }
/* pulsation douce continue tant que le résultat est affiché */
@keyframes resultPulse{ 0%,100%{transform:scale(1);} 50%{transform:scale(1.012);} }
.result.result-ok-big{
  background:linear-gradient(120deg,#0f7a52,#12A594);
  animation:fade .3s ease, resultPulse 1.8s ease-in-out infinite;
}
.result.result-ok-big .num{color:#d7f5ec;font-size:15px}
.result.result-ok-big .patho{font-size:34px}
.result.result-ok-big .meta{color:#e4f5f1}
/* attribution réussie : un peu plus grande et pulsée aussi */
.result.show:not(.mini):not(.warn){ animation:fade .3s ease, resultPulse 2s ease-in-out infinite; }

/* Modale de blocage « personne absente sur une astreinte » */
.absent-block{text-align:center;padding:6px 4px}
.absent-block-ic{font-size:44px;line-height:1;margin-bottom:6px}
.absent-block h3{margin:0 0 8px;color:var(--red,#c0392b);font-size:20px}
.absent-block p{margin:6px 0;font-size:15px}
.absent-block .absent-block-sub{color:var(--muted);font-size:13.5px;line-height:1.5}

/* Import de médecins (CSV) */
.import-help{background:var(--paper-2,#f4f7fb);border-radius:8px;padding:8px 12px;font-size:13px}
.import-help summary{cursor:pointer;font-weight:600;color:var(--navy-700)}
.import-help ul{margin:8px 0 0;padding-left:20px;line-height:1.6}
.import-preview-head{font-weight:700;color:var(--navy-700);margin:6px 0}
.import-example{display:block;background:var(--navy-900);color:#e8f0fc;padding:8px 10px;border-radius:6px;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;overflow-x:auto;white-space:pre;margin-top:4px;line-height:1.5}

/* ---- Paramédicaux (tuiles) ---- */
.pm-section{margin-bottom:18px}
.pm-section-title{font-family:'Quicksand',sans-serif;font-size:16px;color:var(--navy-900);margin:6px 0 10px;font-weight:700}
.pm-count{display:inline-block;background:var(--blue-bg);color:var(--navy-700);font-size:12px;font-weight:700;padding:1px 8px;border-radius:10px;margin-left:6px}
.pm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.pm-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--card);box-shadow:var(--shadow-sm);
  border-top:4px solid var(--brand-blue)}
.pm-card.sec{border-top-color:#5b5fc7}
.pm-card.cadre{border-top-color:#2f7d63}
.pm-card.tech{border-top-color:#c97a00}
.pm-card.pm-inactive{opacity:.55}
.pm-head{display:flex;align-items:center;gap:8px;font-size:15px;margin-bottom:10px}
.pm-cred{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.pm-cred > div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pm-lbl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;min-width:82px}
.pm-cred code{background:var(--paper-2,#f4f7fb);padding:2px 8px;border-radius:6px;font-family:ui-monospace,Menlo,monospace;
  font-size:13px;font-weight:600;color:var(--navy-900)}
.pm-pwd-init{font-size:12px;color:#c97a00;font-weight:600}
.pm-pwd-set{font-size:12px;color:#2f7d63;font-weight:600}
.pm-actions{display:flex;gap:6px;flex-wrap:wrap;border-top:1px solid var(--line-soft);padding-top:10px}
.btn.btn-xs{padding:5px 9px;font-size:12px;border-radius:7px}
.btn.btn-danger{color:var(--red,#c0392b)}

/* Profil affiché sous l'identifiant (barre latérale) */
.who-profile{display:block;font-size:11px;color:rgba(255,255,255,.6);font-weight:500;margin-top:1px}
/* Modale verrouillée (changement de mot de passe obligatoire) : pas de fermeture au clic */
.modal-overlay.modal-locked{cursor:default}

/* ============================================================
   Permissions : lecture seule
   ============================================================ */
.perm-readonly button:not(.subtab):not([data-view]),
.perm-readonly .btn:not(.subtab){
  opacity:.5; pointer-events:none; cursor:not-allowed;
}
.perm-readonly input:not([type=search]):not(#grp-search),
.perm-readonly select, .perm-readonly textarea{
  pointer-events:none; background:var(--paper-2,#f4f7fb);
}
/* cartes cliquables neutralisées en lecture seule (fiches médecins/paramed) */
.perm-readonly .med-card, .perm-readonly .pm-card{ pointer-events:none; }
.perm-readonly .med-card{ cursor:default }
/* bandeau lecture seule */
.perm-readonly::before{
  content:"👁️ Lecture seule — vous ne pouvez pas modifier cette section.";
  display:block;background:#eef3fb;border:1px solid #cfe0f5;color:#2b4a73;
  padding:8px 12px;border-radius:10px;font-size:12.5px;font-weight:600;margin-bottom:12px;
}

/* ---- Zone de maintenance (danger) ---- */
.danger-zone{border:1.5px solid #f0c0b5;background:#fff8f6}
.danger-grid{display:flex;flex-direction:column;gap:10px}
.danger-item{display:flex;align-items:center;gap:14px;justify-content:space-between;
  padding:12px 14px;border:1px solid #f0d0c8;border-radius:10px;background:#fff}
.danger-item > div{flex:1}
.btn.btn-danger-solid{background:#c0392b;color:#fff;border:none}
.btn.btn-danger-solid:hover{background:#a93226}
.form-err{color:#c0392b;font-size:13px;font-weight:600}

/* Compte de connexion dans la fiche médecin */
.ep-account{display:flex;flex-direction:column;gap:7px;width:100%}
.ep-account-row{display:flex;align-items:center;gap:10px}
.ep-account-row code{background:var(--paper-2,#f4f7fb);padding:2px 8px;border-radius:6px;
  font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:600;color:var(--navy-900)}
.ep-account-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}

/* ============================================================
   SERVICE ICL : thème violet pâle (remplace le bleu de l'interface)
   ============================================================ */
html.svc-icl{
  --brand-navy:#4a3a7a;
  --brand-blue:#9a86c9;
  --brand-teal:#b39ddb;
  --side-1:#5b4b8a; --side-2:#6d5c9e;
  --blue:#9a86c9; --blue-vif:#b7a6dd; --blue-fonce:#6d5c9e;
  --blue-bg:#f1edf8; --blue-bg2:#f7f4fc;
  --navy-900:#3d2f66; --navy-700:#4e3f7d; --navy-600:#6350a0; --navy-500:#7a68b0;
  --navy-300:#c9bce6; --navy-bg:#f2eefa;
  --paper:#f8f6fb;
}
/* bandeau discret indiquant le service actif */
html.svc-icl .app-main::before{
  content:"Service ICL — Institut de Cancérologie";
  display:block;background:var(--brand-blue);color:#fff;text-align:center;
  font-size:12px;font-weight:600;padding:3px 0;letter-spacing:.02em;
}

/* ---- Switch de service (barre latérale, au-dessus du thème) ---- */
.service-row{
  display:flex;align-items:center;gap:10px;width:100%;
  background:transparent;border:none;color:inherit;cursor:pointer;
  padding:9px 14px;border-radius:10px;font:inherit;text-align:left;
}
.service-row:hover{background:rgba(255,255,255,.08)}
.service-ico{font-size:1.1em;width:22px;text-align:center}
.service-label{flex:1;font-size:13px}
.service-switch{position:relative;width:38px;height:20px;border-radius:99px;background:rgba(255,255,255,.25);transition:.2s;flex:0 0 auto}
.service-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.2s}
.service-row.on .service-switch{background:#b39ddb}
.service-row.on .service-knob{transform:translateX(18px)}

/* ============================================================
   FILE ACTIVE
   ============================================================ */
.fa-filter{display:flex;gap:14px;align-items:center}
.cbx-inline{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:5px;cursor:pointer}
.fa-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.fa-row{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.fa-row.fa-done{background:color-mix(in srgb,var(--green) 6%,#fff)}
.fa-state{flex:0 0 auto;min-width:118px;border:none;border-radius:20px;padding:7px 14px;font-weight:700;font-size:12.5px;cursor:pointer;transition:.15s}
.fa-state-att{background:var(--amber-bg);color:var(--amber)}
.fa-state-done{background:var(--green-bg);color:var(--green)}
.fa-state:hover{filter:brightness(.96)}
.fa-main{flex:1;min-width:0}
.fa-num{font-weight:700;color:var(--navy-900)}
.fa-meta{font-size:12.5px;color:var(--muted)}
.fa-src{background:var(--blue-bg);color:var(--navy-700);border-radius:10px;padding:1px 8px;font-size:11px;margin-left:6px}
.fa-date{font-size:12px;color:var(--muted);white-space:nowrap}
.fa-actions{display:flex;gap:6px;flex-wrap:wrap;flex:0 0 auto}
@media(max-width:720px){
  .fa-row{flex-wrap:wrap}
  .fa-date{order:5;width:100%}
  .fa-actions{width:100%}
}
/* tableau de formation interne */
.fa-formation{margin-top:8px}
.fa-form-fam{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;overflow:hidden}
.fa-form-famhead{display:flex;justify-content:space-between;padding:8px 12px;background:var(--blue-bg);font-weight:700;color:var(--navy-900)}
.fa-form-famcount{background:var(--navy-600);color:#fff;border-radius:12px;padding:0 10px;font-size:12px}
.fa-form-line{display:flex;justify-content:space-between;padding:6px 12px;border-top:1px solid var(--line-soft);font-size:13px}
.fa-form-n{font-weight:700;color:var(--navy-700)}
.fa-form-total{text-align:right;margin-top:8px;font-size:14px;color:var(--navy-900)}

/* ==== Sélecteur méthode d'enregistrement ==== */
.rec-mode-row{display:flex;gap:12px;flex-wrap:wrap}
.rec-mode-opt{flex:1;min-width:240px;display:flex;gap:10px;align-items:flex-start;padding:14px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer;background:var(--card);transition:.15s}
.rec-mode-opt:hover{border-color:var(--brand-blue)}
.rec-mode-opt input{margin-top:3px}
.rec-mode-opt:has(input:checked){border-color:var(--brand-teal);background:#e9f8f4}
.rec-mode-title{font-weight:700;color:var(--navy-900)}
.rec-mode-badge{display:inline-block;background:var(--brand-teal);color:#fff;font-size:10px;padding:1px 7px;border-radius:8px;margin-left:4px;vertical-align:middle}
.rec-mode-desc{font-size:12.5px;color:var(--muted);margin-top:3px}
.rec-mode-current{margin-top:12px}
.rec-mode-active{font-size:13px;color:var(--brand-teal);font-weight:600}
.svc-lbl-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.svc-lbl-row .field{flex:1;min-width:180px;margin:0}

/* ==== Table rattachement organe -> famille ==== */
.adicap-map-list{max-height:420px;overflow-y:auto;border:1px solid var(--line);border-radius:10px}
.adicap-map-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--line)}
.adicap-map-row:last-child{border-bottom:none}
.adicap-map-row.adicap-map-unset{background:#fff8ec}
.adicap-map-code{background:var(--paper-2,#f4f7fb);padding:2px 8px;border-radius:6px;font-weight:700;color:var(--navy-900);min-width:38px;text-align:center}
.adicap-map-organ{flex:1;font-size:13px}
.adicap-map-row select{min-width:180px}

/* ==== Saisie ADICAP ==== */
.adi-codes{display:flex;flex-direction:column;gap:10px;margin:12px 0}
.adi-line{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--card)}
.adi-line-search{position:relative}
.adi-search-input{width:100%}
.adi-suggest{position:absolute;top:100%;left:0;right:0;z-index:20;background:var(--card);border:1px solid var(--line);border-radius:10px;margin-top:4px;max-height:260px;overflow-y:auto;box-shadow:0 6px 20px rgba(0,0,0,.12)}
.adi-sugg-item{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--line)}
.adi-sugg-item:hover{background:var(--blue-bg,#eef3fb)}
.adi-sugg-item code{background:var(--paper-2,#f4f7fb);padding:1px 6px;border-radius:5px;font-weight:700;margin-right:6px}
.adi-sugg-empty{padding:8px 12px;color:var(--muted);font-size:13px}
.adi-sugg-group{padding:6px 12px;font-size:11px;font-weight:700;color:var(--muted);background:var(--paper-2,#f4f7fb);text-transform:uppercase;letter-spacing:.03em}
.adi-sugg-tech{background:#fffdf5}
.adi-sugg-w{color:var(--muted);font-size:11px;margin-left:6px}
.adi-line-meta{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}
.adi-fam{background:#e9f8f4;color:var(--navy-900);border:1px solid var(--brand-teal);border-radius:16px;padding:2px 10px;font-size:12px;font-weight:600}
.adi-fam-none{background:#fff0d0;border-color:#e0a03a;color:#8a5a00}
.adi-poids{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
.adi-poids input{width:70px}
.adi-total{margin:12px 0;padding:10px 14px;background:var(--blue-bg,#eef3fb);border-radius:10px;font-size:14px}
.adi-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}

/* ==== Sélection multiple (enregistrement) ==== */
.enr-multi-toggle{margin:10px 0;display:flex;align-items:center;gap:8px;font-size:13.5px}
.enr-selection{background:var(--blue-bg,#eef3fb);border-radius:12px;padding:12px 14px;margin-bottom:12px}
.enr-sel-empty{color:var(--muted);font-size:13px}
.enr-sel-head{font-weight:700;color:var(--navy-900);margin-bottom:8px}
.enr-sel-count{background:var(--navy-600);color:#fff;border-radius:12px;padding:0 9px;font-size:12px;margin-left:4px}
.enr-sel-chips{display:flex;flex-wrap:wrap;gap:8px}
.enr-chip{display:inline-flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:4px 10px;font-size:12.5px}
.enr-chip-main{border-color:var(--brand-teal);background:#e9f8f4;font-weight:600}
.enr-chip-tech{border-style:dashed}
.enr-chip-w{color:var(--muted);font-size:11px}
.enr-chip-x{border:none;background:transparent;cursor:pointer;color:var(--red);font-weight:700;font-size:13px;padding:0 2px}
.enr-sel-note{font-size:12px;color:var(--muted);margin-top:8px}
.enr-sel-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}

/* ==== Familles + colonne "Gestes associés" (niveau 0 uniquement) ==== */
/* Le conteneur #enr-grid / #man-grid reste une grille normale pour les
   niveaux profonds (organes, types). Au niveau 0, on insère un wrapper
   .enr-lvl0 en flex qui aligne la grille des familles + la colonne gestes. */
.enr-lvl0{display:flex;gap:20px;align-items:center;justify-content:center;flex-wrap:nowrap;width:100%;grid-column:1/-1}
.enr-fam-grid{display:grid;grid-template-columns:repeat(4,168px);gap:16px;justify-content:center;flex:0 0 auto}
.enr-tech-col{display:flex;align-items:center;justify-content:center;flex:0 0 168px}
.box-tech{border-style:dashed;border-width:2px;min-height:170px;width:100%}
.box-tech .ico{font-size:1.7em}
@media(max-width:900px){
  .enr-fam-grid{grid-template-columns:repeat(3,minmax(140px,1fr))}
}
@media(max-width:820px){
  .enr-lvl0{flex-direction:column}
  .enr-fam-grid{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .enr-tech-col{width:100%;flex-basis:auto}
  .box-tech{width:100%}
}

/* ==== Attribution manuelle : ligne compacte ==== */
.man-toprow{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.man-toprow .field{margin:0}
.man-num-field{flex:1;min-width:200px}
.man-toprow .man-patho-field{flex:1;min-width:200px}
.man-toprow .btn-cam{flex:0 0 auto;padding:10px 12px}
.man-attrib-btn{flex:0 0 auto;white-space:nowrap}
.man-opts-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin:10px 0 4px}
.man-opts-row .enr-multi-toggle{margin:0}
.man-section-label{font-weight:600;color:var(--navy-900);margin:12px 0 6px}
.man-chosen{font-weight:500;color:var(--muted)}
.man-type-tag{background:#e9f8f4;border:1px solid var(--brand-teal);border-radius:16px;padding:2px 10px;font-size:12px}
.urgent-badge{color:var(--red);font-weight:600}

/* profil d'accès dans la fiche */
.ep-profile-cur{font-size:12px;color:var(--muted);margin-left:8px}

/* ==== File active : réattribution / délégation ==== */
.fa-row.fa-reassigned{opacity:.6}
.fa-row.fa-reassigned .fa-num{text-decoration:line-through;text-decoration-color:var(--red)}
.fa-reassigned-tag{display:inline-block;background:#fbe6e3;color:#b23b30;border-radius:12px;padding:1px 9px;font-size:11px;font-weight:700;margin-left:6px;text-decoration:none}
.fa-delegated-tag{display:inline-block;background:#e9f4ff;color:#2a6bb0;border-radius:12px;padding:1px 9px;font-size:11px;font-weight:700;margin-left:6px}
.fa-state:disabled{cursor:not-allowed;opacity:.5}

/* ==== Modale bloquante binôme ==== */
.binome-modal{max-width:460px}
.binome-modal h2{color:var(--navy-900)}

/* ==== Tuiles « mes internes » (senior référent) ==== */
.fa-myint-head{font-weight:700;color:var(--navy-900);margin-bottom:10px}
.fa-myint-tiles{display:flex;flex-wrap:wrap;gap:10px}
.fa-myint-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1.5px solid var(--line);border-radius:12px;padding:12px 16px;background:var(--card);cursor:pointer;font-weight:700;color:var(--navy-900);transition:.15s}
.fa-myint-tile:hover{border-color:var(--brand-blue);background:var(--blue-bg,#eef3fb)}
.fa-myint-sub{font-weight:500;font-size:11.5px;color:var(--muted)}
#fa-intern-stats-view{margin-top:14px}
.fa-form-title{font-weight:700;color:var(--navy-900);margin-bottom:8px;font-size:14px}

/* ==== Toggle service en ligne (enregistrement + attribution) ==== */
.enr-optbar{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin:10px 0}
.enr-optbar .enr-multi-toggle{margin:0}
.svc-inline{display:inline-flex;align-items:center;gap:7px;border:1.5px solid var(--line);background:var(--card);border-radius:20px;padding:5px 12px;cursor:pointer;font-size:13px;font-weight:600;color:var(--navy-700);transition:.15s}
.svc-inline:hover{border-color:var(--brand-blue)}
.svc-inline.on{border-color:#8b6fc0;background:#f1edf8;color:#5b4b8a}
.svc-inline-ico{font-size:1.05em}
.man-opts-row .svc-inline{margin-left:auto}
html.svc-icl .svc-inline.on{border-color:#8b6fc0}

/* ==== Gestion binômes (webmaster) ==== */
.binome-admin-list{display:flex;flex-direction:column;gap:8px}
.binome-admin-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border:1px solid var(--line);border-radius:10px}
.binome-admin-name{flex:1;font-weight:600;color:var(--navy-900)}
.binome-admin-row select{min-width:220px}

/* ==== Zones en lecture seule (permissions) ==== */
.perm-readonly input:not([type=checkbox]):not([type=radio]),
.perm-readonly select,
.perm-readonly textarea{
  pointer-events:none;background:#f1f2f5;color:var(--muted);border-color:var(--line);cursor:not-allowed
}
.perm-readonly input[type=checkbox],
.perm-readonly input[type=radio]{pointer-events:none;opacity:.5}
.perm-readonly .btn-primary,
.perm-readonly .perso-add,.perm-readonly .perso-del,
.perm-readonly .btn-danger-solid,
.perm-readonly [onclick*="save"],.perm-readonly [onclick*="Save"],
.perm-readonly [onclick*="delete"],.perm-readonly [onclick*="Delete"],
.perm-readonly [onclick*="Attribuer"]{display:none !important}
.perm-readonly-banner{background:#fff8ec;border:1px solid #e0a03a;color:#8a5a00;border-radius:10px;padding:8px 12px;margin-bottom:12px;font-size:13px}
.compte-binome-list{margin:6px 0 0;padding-left:20px}
.compte-binome-list li{padding:3px 0;color:var(--navy-900);font-weight:600}

/* ==== Groupes de couleur des motifs d'absence (planning) ==== */
/* g1 congés (CA, RTT, CP) — bleu */
.pg-cell.abs-g1{background:#e3effb !important;color:#1d5c9e}
.pg-cell.abs-g1 .pg-sig{color:#1d5c9e;font-weight:700}
/* g2 formation (CF, FP, EPU, CONGRES, FORMATION, COURS, U) — vert */
.pg-cell.abs-g2{background:#e5f6ea !important;color:#256b3d}
.pg-cell.abs-g2 .pg-sig{color:#256b3d;font-weight:700}
/* g3 grisé (RDG, CM) */
.pg-cell.abs-g3{background:#ececf0 !important;color:#6b6f78}
.pg-cell.abs-g3 .pg-sig{color:#6b6f78;font-weight:700}
/* g4 (CR) — orange */
.pg-cell.abs-g4{background:#fdefe0 !important;color:#a8600f}
.pg-cell.abs-g4 .pg-sig{color:#a8600f;font-weight:700}
/* g5 (FOETO) — violet */
.pg-cell.abs-g5{background:#f0e8fa !important;color:#6a3fa0}
.pg-cell.abs-g5 .pg-sig{color:#6a3fa0;font-weight:700}
/* Astreinte affichée dans le planning de présence (synchro) */
.pg-cell.pg-astreinte{background:#eef4ff}
.pg-astr-sig{color:#2a5aa0;font-weight:700;font-size:10.5px}
/* icône discrète sur les tuiles feuilles (types) */
.box.type .ico-leaf{font-size:1.5em;opacity:.85;margin-bottom:2px}
/* synchro RCP -> présence */
.pg-cell.pg-rcp-day{background:#eef0fb !important}
.pg-rcp-sig{color:#4a4f9e;font-weight:700;font-size:10.5px}

/* ===== Vacances scolaires + renforcement WE/fériés (2 plannings) ===== */
/* Planning ASTREINTE (plan-table) */
.plan-dayhead.ferie{background:#8a5a3c !important;color:#fff}
.plan-dayhead.vac{background:#caa46a !important;color:#3a2a12}
.plan-cell.ferie{background:#f3e3d8 !important}
.plan-cell.vac{background:#f7edd9 !important}
.plan-line:nth-child(even) .plan-cell.vac{background:#f3e7cf !important}
.plan-fx{font-size:8.5px;font-weight:800;opacity:.95}
.plan-fx-vac{color:#6a4e1e}
/* renforcement week-end (plus contrasté qu'avant) */
.plan-dayhead.we{background:#2f6091 !important;color:#fff}
.plan-cell.we{background:#e7eef6 !important}

/* Planning PRÉSENCE (pg-table) */
.pg-table thead th.pg-vac{background:#caa46a;color:#3a2a12}
.pg-cell.pg-vac{background:#f7edd9 !important}
.pg-row:nth-child(even) .pg-cell.pg-vac{background:#f3e7cf !important}
.pg-fx-vac{color:#6a4e1e}

/* ---- Internes : couleur distincte des Docteurs juniors ---- */
:root{ --cat-interne:#c05a8f; }   /* rose/prune : différencie l'interne du Dr junior (ambre) */
.med-card.cat-interne{background:color-mix(in srgb,var(--cat-interne) 18%,#fff);border-color:color-mix(in srgb,var(--cat-interne) 40%,#fff);border-left:5px solid var(--cat-interne)}
.med-card.cat-interne .med-head b{color:color-mix(in srgb,var(--cat-interne) 80%,#000)}
.med-card.cat-interne:hover{box-shadow:0 3px 14px rgba(0,0,0,.14);transform:translateY(-1px)}
html.dark .med-card.cat-interne{background:color-mix(in srgb,var(--cat-interne) 30%,#1a2230)}
.med-leg.cat-interne{background:color-mix(in srgb,var(--cat-interne) 18%,#fff);border-left:4px solid var(--cat-interne)}
.pg-cat-interne{border-left:4px solid var(--cat-interne)}

/* ---- Visuel de décroissance avant une absence longue (≥ 2 jours) ---- */
/* Dégradé : plus on approche de l'absence, plus la teinte est marquée. */
/* --- Décroissance avant une absence longue -------------------------------
   Le praticien doit voir, et COMPRENDRE, que sa charge baisse volontairement.
   Deux états bien distincts, parce que le moteur les traite différemment :
     ▼ décroissance (J-4 ~67 %, J-3 ~33 %) : orange, de plus en plus soutenu
     ⛔ arrêt total  (J-2, J-1)              : rouge — plus AUCUN cas
   ------------------------------------------------------------------------ */
.pg-cell.pg-ramp-1{background:#fdf3e3 !important}   /* J-4 : ~67 % */
.pg-cell.pg-ramp-2{background:#f9e2c0 !important}   /* J-3 : ~33 % */
.pg-cell.pg-ramp-stop{background:#fadcd9 !important; border-left:2px solid #c0392b !important}
.pg-ramp-mark{color:#a8712a;font-size:10px;font-weight:800;opacity:.9}
.pg-ramp-stop-mark{color:#c0392b;font-size:11px;opacity:1}

/* Légende : sans elle, les couleurs ne veulent rien dire. */
.pg-legende{display:flex;flex-wrap:wrap;gap:14px;align-items:center;
  margin:10px 0 4px;padding:8px 12px;background:#fafbfc;
  border:1px solid #e3e8ee;border-radius:6px;font-size:12px;color:#4a5568}
.pg-legende .pgl{display:inline-flex;align-items:center;gap:6px}
.pg-legende .pgl-case{width:16px;height:16px;border-radius:3px;
  border:1px solid #d0d7de;display:inline-block}
.pg-legende .pgl-r1{background:#fdf3e3}
.pg-legende .pgl-r2{background:#f9e2c0}
.pg-legende .pgl-stop{background:#fadcd9;border-left:2px solid #c0392b}

/* ---- Aperçu d'import de médecins : service visible + alertes ---- */
.import-warn{background:#fdecea;border:1px solid #e0a19a;color:#8a2e22;
  padding:9px 12px;border-radius:8px;margin-bottom:10px;font-size:13px}
.import-info{background:var(--blue-bg);border:1px solid var(--line);
  padding:8px 12px;border-radius:8px;margin-bottom:10px;font-size:13px}
.import-svc{display:inline-block;padding:1px 8px;border-radius:var(--r-pill);
  font-size:11.5px;font-weight:700}
.import-svc.svc-chru{background:var(--blue-bg);color:var(--blue-fonce)}
.import-svc.svc-icl{background:#ede4f7;color:#5b3fa0}
.import-bad{color:#a33;font-weight:700}

/* ---- Attribution manuelle : indication d'état d'enregistrement ---- */
.man-hint{font-size:13px;margin:6px 0 10px;padding:0}
.man-hint.ok{background:#e6f4ec;border:1px solid #a9d3bd;color:#1d6b45;
  padding:8px 12px;border-radius:8px}
.man-hint.warn{background:#fff6e5;border:1px solid #e3c489;color:#8a5b12;
  padding:8px 12px;border-radius:8px}

/* ---- Fiche médecin : note d'information + cases désactivées ---- */
.ep-note{background:var(--blue-bg);border:1px solid var(--line);color:var(--navy-900);
  padding:8px 11px;border-radius:8px;font-size:12.5px;margin-bottom:9px;line-height:1.45}
html.dark .ep-note{background:#1e2b3d;color:#cfe0f5}
.cbx.cbx-disabled{opacity:.45;cursor:not-allowed}
.cbx.cbx-disabled span{text-decoration:line-through}

/* --- Interne d'astreinte affiché après une attribution pilotée par le planning
       (LCR, biopsie de rejet…). Visible 5 s, puis il s'estompe : c'est une
       information de contact ponctuelle, pas un résultat à conserver. --- */
.result-interne{
  display:inline-flex; align-items:center; gap:8px;
  margin:6px 0 2px; padding:5px 12px;
  background:#eef4ff; border:1px solid #c7d9f7; border-left:4px solid #3b6fd4;
  border-radius:6px; font-size:14px;
  transition:opacity .6s ease, transform .6s ease;
}
.result-interne .ri-label{ color:#4a5568; font-size:12px; text-transform:uppercase; letter-spacing:.4px; }
.result-interne .ri-code{ font-weight:700; color:#1e3a8a; font-size:17px; }
.result-interne .ri-nom{ color:#334155; }
.result-interne.ri-fade{ opacity:0; transform:translateY(-4px); pointer-events:none; }

/* --- Alertes de couverture ------------------------------------------------
   Signalent qu'une famille de cas n'aura plus AUCUN médecin habilité présent.
   Volontairement visibles : c'est une information qu'on ne doit pas manquer.
   ------------------------------------------------------------------------ */
.cv-bloc{margin:0 0 10px;padding:10px 14px;border-radius:6px;font-size:13px}
.cv-bloc strong{display:block;margin-bottom:6px;font-size:13px}
.cv-warn{background:#fff8ec;border:1px solid #f0d9b5;color:#7d4e00}
.cv-grave{background:#fdecea;border:1px solid #f5c6cb;color:#8b1a1a}
.cv-ligne{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;
  padding:5px 0;border-top:1px solid rgba(0,0,0,.06)}
.cv-fam{font-weight:700;min-width:130px}
.cv-periode{font-variant-numeric:tabular-nums;white-space:nowrap}
.cv-jours{opacity:.7}
.cv-msg{flex:1;min-width:220px;opacity:.85;font-size:12px}
.cv-note{margin-top:6px;font-size:12px;opacity:.8;font-style:italic}

/* --- Archives -------------------------------------------------------------
   L'historique complet du service. Volontairement sobre : c'est un outil de
   consultation, pas une vitrine.
   ------------------------------------------------------------------------ */
.arc-etat{margin:14px 0}
.arc-bloc{padding:12px 16px;border-radius:6px;font-size:13px;line-height:1.5}
.arc-ok{background:#f0f9f4;border:1px solid #c6e9d4;color:#1e5b38}
.arc-warn{background:#fff8ec;border:1px solid #f0d9b5;color:#7d4e00}
.arc-grave{background:#fdecea;border:1px solid #f5c6cb;color:#8b1a1a}
.arc-ligne{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:10px}
.arc-ligne label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600}
.arc-ligne select{padding:7px 10px;border-radius:6px;border:1px solid #d5dbe3}
.arc-tbl{width:100%;margin-top:10px;font-size:13px}
.arc-tbl th{text-align:left;font-weight:700;padding:8px 10px;
  border-bottom:2px solid #e2e8f0;white-space:nowrap}
.arc-tbl td{padding:8px 10px;border-bottom:1px solid #eef2f6;vertical-align:top}
.arc-tbl td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.arc-tbl th:not(:first-child){text-align:right}
.arc-fetes{margin:8px 0 0;padding-left:20px;font-size:13px;line-height:1.7}

/* L'interne d'astreinte, affiché sous le médecin attribué. */
.res-interne{color:#1e5b38;font-weight:500}

/* --- Mode d'emploi --------------------------------------------------------
   Sobre et lisible : c'est un document qu'on lit, pas une vitrine.
   ------------------------------------------------------------------------ */
.aide{max-width:800px; line-height:1.65}
.aide h2{margin:0 0 6px; font-size:24px; letter-spacing:-0.02em}
.aide .aide-intro{color:#5c6b7f; margin:0 0 24px; font-size:15px}
.aide h3{
  margin:34px 0 12px; padding-top:22px; font-size:18px;
  border-top:1px solid #e2e8f0; letter-spacing:-0.01em;
}
.aide h3:first-of-type{border-top:none; padding-top:0; margin-top:24px}
.aide h4{margin:20px 0 8px; font-size:15px; color:#1a2332}
.aide p{margin:0 0 13px}
.aide ul{margin:0 0 14px; padding-left:22px}
.aide li{margin-bottom:8px}
.aide a{color:#2c5f8d}
.aide .aide-reserve{
  color:#5c6b7f; font-size:13px; font-style:italic; margin:-6px 0 14px;
}
.aide-encadre{
  background:#f7f9fb; border:1px solid #e2e8f0; border-left:3px solid #2c5f8d;
  padding:15px 18px; margin:20px 0; border-radius:0 4px 4px 0; font-size:14.5px;
}
.aide-encadre strong{color:#2c5f8d}
.aide-tbl{width:100%; border-collapse:collapse; margin:14px 0; font-size:14px}
.aide-tbl th{
  text-align:left; padding:9px 12px; background:#f7f9fb;
  border-bottom:2px solid #e2e8f0; font-weight:600;
}
.aide-tbl td{padding:9px 12px; border-bottom:1px solid #eef2f6; vertical-align:top}

/* --- Bannière d'alerte de sauvegarde ---------------------------------------
   Discrète mais impossible à manquer. Elle ne s'affiche que si quelque chose ne
   va pas — et elle porte sa propre solution : le bouton est là, on n'a pas à
   chercher où sauvegarder.
   -------------------------------------------------------------------------- */
.bk-banniere{
  position:fixed; left:50%; bottom:24px; transform:translate(-50%, 20px);
  z-index:9000; max-width:640px; width:calc(100% - 40px);
  display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  padding:14px 18px; border-radius:8px;
  background:#fff8ec; border:1px solid #f0d9b5;
  box-shadow:0 6px 24px rgba(26,35,50,.14);
  opacity:0; transition:opacity .25s ease, transform .25s ease;
}
.bk-banniere.bk-visible{opacity:1; transform:translate(-50%, 0)}
.bk-banniere.bk-grave{background:#fdecea; border-color:#f5c6cb}

.bk-banniere-txt{flex:1; min-width:220px; font-size:13.5px; line-height:1.5}
.bk-banniere-txt strong{display:block; margin-bottom:2px; color:#7d4e00}
.bk-grave .bk-banniere-txt strong{color:#8b1a1a}
.bk-banniere-txt span{color:#5c6b7f}

.bk-banniere-act{display:flex; gap:8px; align-items:center}
