:root{
  --fond:#f2f4f8; --carte:#fff; --encre:#14213d; --doux:#5a6685; --ligne:#dde2ec; --ligne2:#eef1f6;
  --accent:#1b7f8c; --accent-fonce:#14636e; --accent-clair:#dff1f3; --alerte:#e76f51; --ok:#2a9d6f; --err:#c93c3c;
  --rayon:14px; --bas:64px;
  /* natures de créneaux : même logique de couleurs que votre planning Excel */
  --n-travail-bg:#d9f0f0; --n-travail:#0b5560; --n-formation-bg:#fde68a; --n-formation:#6b4a05; --n-ferie-bg:#cfe0ff; --n-ferie:#1c3a8a;
  --n-cp-bg:#2b3445; --n-cp:#fff; --n-maladie-bg:#fbc9c9; --n-maladie:#8e1f1f;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--fond);color:var(--encre);font:16px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;padding-bottom:calc(var(--bas) + env(safe-area-inset-bottom));-webkit-tap-highlight-color:transparent}
a{color:var(--accent-fonce)}
h1,h2,h3{margin:0;line-height:1.2}
h1{font-size:1.55rem;font-weight:800;letter-spacing:-.01em}
h2{font-size:1.1rem;font-weight:800;margin:26px 0 10px}
h3{font-size:.78rem;font-weight:800;color:var(--doux);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}
.sous{color:var(--doux);margin:4px 0 18px}
main{max-width:1180px;margin:0 auto;padding:18px max(16px,env(safe-area-inset-left,0px)) 28px max(16px,env(safe-area-inset-right,0px))}
.etroit{max-width:760px}
.doux{color:var(--doux)} .petit{font-size:.82rem} .droite{text-align:right} .centre{text-align:center}
.nowrap{white-space:nowrap}

/* barre du haut */
.haut{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--entete,var(--encre));color:#fff;padding:11px max(16px,env(safe-area-inset-left,0px));padding-top:calc(11px + env(safe-area-inset-top))}
.marque{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:.02em}
.marque-pt{width:12px;height:12px;border-radius:4px;background:#2ec4b6;box-shadow:0 0 0 3px rgba(46,196,182,.25)}
.nav-haut{display:none;gap:2px;flex-wrap:wrap;justify-content:flex-end}
.nav-haut a{color:#c9d2e8;text-decoration:none;padding:7px 12px;border-radius:999px;font-weight:600;font-size:.92rem}
.nav-haut a:hover{color:#fff}
.nav-haut a.actif{background:rgba(255,255,255,.14);color:#fff}
.badge{display:inline-block;min-width:20px;padding:0 6px;border-radius:999px;background:var(--alerte);color:#fff;font-size:.72rem;font-weight:800;text-align:center;line-height:20px}
.nav-bas{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;background:#fff;border-top:1px solid var(--ligne);padding-bottom:env(safe-area-inset-bottom)}
.nav-bas a{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px 7px;text-decoration:none;color:var(--doux);font-size:.68rem;font-weight:700}
.nav-bas a.actif{color:var(--accent)}
.nav-bas .pt{position:absolute;top:4px;left:calc(50% + 8px);min-width:17px;padding:0 4px;border-radius:999px;background:var(--alerte);color:#fff;font-style:normal;font-size:.65rem;line-height:17px;text-align:center}
@media (min-width:900px){.nav-haut{display:flex}.nav-bas{display:none}body{padding-bottom:0}main{padding-top:26px}}

/* cartes, grilles */
.carte{background:var(--carte);border:1px solid var(--ligne);border-radius:var(--rayon);padding:16px;margin-bottom:14px}
.carte.lache{padding:0;overflow:hidden}
.grille{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.stat{background:var(--carte);border:1px solid var(--ligne);border-radius:var(--rayon);padding:14px 16px}
.stat .lib{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--doux)}
.stat .val{font-size:1.7rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.15;margin-top:3px}
.stat .var{font-size:.82rem;color:var(--doux)}
.stat.alerte .val{color:var(--alerte)} .stat.ok .val{color:var(--ok)}
.barre{height:8px;border-radius:99px;background:var(--ligne2);overflow:hidden;margin-top:8px}
.barre i{display:block;height:100%;background:var(--accent);border-radius:99px}
.barre.depasse i{background:var(--alerte)}

/* boutons et formulaires */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:11px;background:var(--accent);color:#fff;font:inherit;font-weight:700;padding:10px 18px;min-height:44px;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--accent-fonce)}
.btn.sec{background:#fff;color:var(--encre);border:1px solid var(--ligne)} .btn.sec:hover{background:var(--ligne2)}
.btn.danger{background:#fff;color:var(--err);border:1px solid #efc1c1} .btn.danger:hover{background:#fdecec}
.btn.petit{min-height:34px;padding:5px 12px;font-size:.85rem;border-radius:9px}
.btn.gros{width:100%;min-height:50px;font-size:1.05rem}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:3px solid #6cc3cf;outline-offset:2px}
.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
label{display:block;font-size:.78rem;font-weight:800;color:var(--doux);text-transform:uppercase;letter-spacing:.06em;margin-bottom:13px}
input,select,textarea{display:block;width:100%;margin-top:5px;background:#fff;color:var(--encre);border:1px solid #c9d1e0;border-radius:10px;font:inherit;font-size:1rem;padding:10px 12px;min-height:44px;text-transform:none;letter-spacing:0;font-weight:500}
select{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8' viewBox='0 0 14 8'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%235a6685' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}
textarea{min-height:80px;resize:vertical}
input[type=checkbox],input[type=radio]{display:inline-block;width:20px;height:20px;min-height:0;margin:0 8px 0 0;vertical-align:middle;accent-color:var(--accent)}
.case{display:flex;align-items:center;font-size:.95rem;font-weight:600;text-transform:none;letter-spacing:0;color:var(--encre);margin-bottom:8px}
.duo{display:grid;gap:12px;grid-template-columns:1fr 1fr}
.trio{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
@media (max-width:520px){.duo{grid-template-columns:1fr 1fr}}
.alerte{border-radius:11px;padding:11px 14px;margin-bottom:14px;font-weight:600}
.alerte.ok{background:#e1f5ec;border:1px solid #a9dcc3;color:#175c40}
.alerte.err{background:#fdeaea;border:1px solid #f0b9b9;color:#8e1f1f}
.alerte.info{background:#fff4e0;border:1px solid #f1d49b;color:#6b4a05}

/* tableaux */
.defil{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th,td{padding:9px 10px;text-align:right;border-bottom:1px solid var(--ligne2);white-space:nowrap}
th:first-child,td:first-child{text-align:left}
th{font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;color:var(--doux);font-weight:800;background:#f8f9fc}
tr:last-child td{border-bottom:0}
td.pos{color:var(--ok);font-weight:700} td.neg{color:var(--alerte);font-weight:700}
tfoot td{font-weight:800;background:#f8f9fc}
.pastille{display:inline-block;font-size:.7rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:var(--ligne2);color:var(--doux)}
.pastille.attente{background:#fff0d6;color:#8a5a00}.pastille.accepte{background:#dcf3e8;color:#17653f}.pastille.refuse{background:#fbe0e0;color:#8e1f1f}.pastille.actif{background:#dcf3e8;color:#17653f}.pastille.inactif{background:#fbe0e0;color:#8e1f1f}
.avatar{display:inline-grid;place-content:center;width:34px;height:34px;border-radius:50%;background:var(--accent-clair);color:var(--accent-fonce);font-weight:800;flex:none}
.ligne-perso{display:flex;align-items:center;gap:10px}

/* créneaux colorés */
.cr{display:inline-block;padding:2px 8px;border-radius:7px;font-size:.82rem;font-weight:700;line-height:1.35;white-space:nowrap}
.n-travail{background:#fff;color:var(--encre);border:1px solid var(--ligne)} .n-formation{background:var(--n-formation-bg);color:var(--n-formation)}
.n-ferie{background:var(--n-ferie-bg);color:var(--n-ferie)} .n-cp{background:var(--n-cp-bg);color:var(--n-cp)} .n-maladie{background:var(--n-maladie-bg);color:var(--n-maladie)}
.legende{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:.8rem}

/* planning semaine */
.nav-sem{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin-bottom:12px}
.nav-sem .titre{font-weight:800;font-size:1.15rem}
.planning{table-layout:fixed;min-width:860px}
.planning th,.planning td{vertical-align:top;text-align:left;padding:7px 6px;border-right:1px solid var(--ligne2);white-space:normal}
.planning th:first-child,.planning td:first-child{width:118px;position:sticky;left:0;background:#fff;z-index:2;border-right:1px solid var(--ligne)}
.planning thead th{text-align:center;position:sticky;top:0}
.planning thead th:first-child{background:#f8f9fc;z-index:3}
.planning td.jour{cursor:pointer;height:62px}
.planning td.jour:hover{background:#f4fbfb}
.planning td.jour .cr{display:block;margin-bottom:3px;text-align:center;font-size:.78rem;padding:2px 3px}
.planning th.aujourdhui{box-shadow:inset 0 3px 0 var(--accent)}.planning td.aujourdhui{box-shadow:none}
.planning td.total{text-align:right;font-weight:800;width:74px;background:#fafbfd}
.planning .nom-c{font-weight:800;line-height:1.15}
.planning .nom-c small{display:block;color:var(--doux);font-weight:600;font-size:.74rem}
.ecart-mini{font-size:.72rem;font-weight:700}
.dispo-ind{display:block;font-size:.68rem;color:#b3bbcf;text-align:center;margin-top:3px}

/* fenêtre d'édition */
.voile{position:fixed;inset:0;z-index:50;background:rgba(20,33,61,.55);display:none;align-items:flex-end;justify-content:center;padding:0}
.voile.ouvert{display:flex}
.fenetre{background:#fff;width:100%;max-width:560px;max-height:92vh;overflow-y:auto;border-radius:18px 18px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom))}
@media (min-width:700px){.voile{align-items:center;padding:20px}.fenetre{border-radius:18px}}
.creneau-ligne{display:grid;grid-template-columns:1fr 1fr 1.5fr auto;gap:8px;align-items:end;margin-bottom:8px}
.creneau-ligne label{margin:0}
.creneau-ligne .x{min-width:44px;padding:0}
@media (max-width:520px){.creneau-ligne{grid-template-columns:1fr 1fr 46px;} .creneau-ligne .nat{grid-column:1 / 3}.creneau-ligne .x{grid-column:3;width:100%;min-width:0;height:44px}}
.dispos-hint{background:#f3f8fb;border:1px dashed #b7cfd8;border-radius:10px;padding:8px 11px;font-size:.85rem;margin-bottom:12px;color:#33576a}

/* semaine du personnel */
.jour-bloc{display:grid;grid-template-columns:78px 1fr auto;gap:10px;align-items:start;padding:12px 0;border-bottom:1px solid var(--ligne2)}
.jour-bloc:last-child{border-bottom:0}
.jour-bloc .d{font-weight:800;line-height:1.2} .jour-bloc .d small{display:block;color:var(--doux);font-weight:600}
.jour-bloc.auj .d{color:var(--accent-fonce)}
.jour-bloc .cr{margin:0 6px 6px 0}
.repos{color:#9aa4bd}

/* mensurations de CP, recap */
.cp-grille{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}

/* connexion */
.page-login{padding-bottom:0}
.login{max-width:420px;padding-top:11vh}
.login-logo{display:flex;align-items:center;gap:12px;font-size:1.6rem;font-weight:800}
.login-logo .marque-pt{width:16px;height:16px;background:var(--accent);box-shadow:0 0 0 4px var(--accent-clair)}

/* aide au recrutement */
.res-grand{font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.cout-cadre{background:var(--encre);color:#fff;border-radius:var(--rayon);padding:18px 18px 16px;margin-bottom:14px}
.cout-cadre .lib{font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;color:#aab6d3;font-weight:800}
.cout-cadre .res-grand{color:#fff}
.cout-cadre .ss{color:#aab6d3;font-size:.88rem;margin-top:2px}
.ligne-res{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--ligne2)}
.ligne-res:last-child{border-bottom:0}
.ligne-res span:last-child{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.ligne-res.total{font-weight:800;border-top:2px solid var(--ligne);border-bottom:0}
.ok-txt{color:var(--ok);font-weight:700}.err-txt{color:var(--err);font-weight:700}
.note-bas{font-size:.8rem;color:var(--doux);margin-top:6px}
.cols2{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:860px){.cols2{grid-template-columns:1fr 1fr}.cols2.large-gauche{grid-template-columns:360px 1fr}}
.menu-liste{display:grid;gap:10px}
.menu-liste a{display:block;background:#fff;border:1px solid var(--ligne);border-radius:var(--rayon);padding:16px;font-weight:700;text-decoration:none;color:var(--encre)}

/* -------- pages à imprimer -------- */
.print-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px max(16px,env(safe-area-inset-left,0px));background:var(--encre);color:#fff;position:sticky;top:0;z-index:20}
.print-bar a{color:#fff}
.feuille{background:#fff;color:#000;max-width:1100px;margin:16px auto;padding:22px 26px;border:1px solid var(--ligne)}
.feuille h1{font-size:1.5rem;margin-bottom:2px;text-transform:uppercase}
.feuille table{font-size:.9rem}
.feuille th{background:#eee;color:#000;border:1px solid #888;font-size:.72rem}
.feuille td{border:1px solid #888;text-align:center;white-space:normal;vertical-align:top}
.feuille td:first-child,.feuille th:first-child{text-align:left}
.feuille .cr{background:none;color:#000;border:1px solid #444;padding:1px 5px;margin:1px;font-weight:600;font-size:.78rem}
.feuille .cr.n-cp{background:#222;color:#fff}.feuille .cr.n-maladie{background:#f5c9c9}.feuille .cr.n-formation{background:#fff3a8}.feuille .cr.n-ferie{background:#cfe0ff}
.signature{height:46px}
.sign-bloc{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:22px}
.sign-bloc div{border:1px solid #666;padding:8px 10px;min-height:90px;font-size:.85rem}
.saut{page-break-after:always;break-after:page}
@media print{
  html,body{background:#fff!important}
  .haut,.nav-bas,.print-bar,.alerte.nonimp,.nonimp{display:none!important}
  body{padding:0!important}
  main{padding:0;max-width:none}
  .feuille{border:0;margin:0;padding:0;max-width:none;box-shadow:none}
  .saut{page-break-after:always}
  .saut:last-child{page-break-after:auto}
  * {-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
body.paysage-print .feuille table{font-size:.82rem}
body.imprimable .nav-bas,body.paysage-print .nav-bas{display:none}
body.imprimable main,body.paysage-print main{padding-bottom:20px}
.lieu{font-weight:500;opacity:.75;font-size:.85em}
.sem-titre{margin:14px 0 6px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
td.jour.hors,th.hors{background:#eceef4;cursor:default}
.bloc-sem{margin-bottom:6px}
.planning td .cr{display:block;margin:0 0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.planning td .cr .lieu{display:block;overflow:hidden;text-overflow:ellipsis}

/* jours particuliers */
.planning th.j-vac{background:#efe9fb}.planning th.j-ferie,.planning td.jour.j-ferie{background:#dce8ff}
.planning td.jour.j-cp{background:#d9dae0}.planning td.jour.j-maladie{background:#fbdcdc}
.planning th.j-vac.j-ferie,.planning td.jour.j-vac.j-ferie{background:#dce8ff}
.ferie-nom{display:block;font-size:.62rem;font-weight:700;color:#1c3a8a;line-height:1.1;text-transform:none;letter-spacing:0;white-space:normal}
.pastille.vac{background:#efe9fb;color:#4b2f8f}.pastille.fer{background:#dce8ff;color:#1c3a8a}.pastille.cpj{background:#d9dae0;color:#222}.pastille.mal{background:#fbdcdc;color:#8e1f1f}
.jour-bloc.j-vac .d{background:#efe9fb;border-radius:8px;padding:4px 6px}.jour-bloc.j-ferie{background:#dce8ff;margin:0 -8px;padding-left:8px;padding-right:8px}

/* ---- Téléphone ---- */
.cr .hc{display:none}
@media (max-width:640px){
  .planning{min-width:560px}
  .planning th:first-child,.planning td:first-child{width:72px}
  .planning th,.planning td{padding:5px 3px}
  .planning .nom-c{font-size:.84rem}.planning .nom-c small{font-size:.66rem}
  .planning td.total{width:50px;font-size:.78rem}
  .planning td.jour .cr{font-size:.72rem;padding:2px 1px;letter-spacing:-.2px}
  body:not(.paysage-print):not(.imprimable) .planning td .cr .hl{display:none}
  body:not(.paysage-print):not(.imprimable) .planning td .cr .hc{display:inline}
  .planning thead th{font-size:.72rem}
  main{padding-left:12px;padding-right:12px}
  .nav-sem{flex-wrap:wrap;gap:8px}
  h1{font-size:1.5rem}
}
@media (max-width:640px){
  body:not(.paysage-print):not(.imprimable) .planning td .cr{white-space:normal;line-height:1.2;text-align:center;overflow:visible}
  .planning td.jour .cr .lieu{font-size:.62rem}
}

/* ---- Vue d'une journée ---- */
.jour-vue{padding:0;overflow:hidden}
.jv-info{padding:10px 16px;border-bottom:1px solid var(--ligne2);display:flex;gap:6px;flex-wrap:wrap}
.jv-ligne{display:grid;grid-template-columns:130px 1fr auto;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ligne2);cursor:pointer;min-height:56px}
.jv-ligne:last-child{border-bottom:0}.jv-ligne:hover,.jv-ligne:focus{background:#f4fbfb;outline:0}
.jv-nom small{display:block;color:var(--doux);font-size:.74rem;font-weight:600}
.jv-cr{display:flex;flex-wrap:wrap;gap:6px}.jv-cr .cr{display:inline-block;margin:0;font-size:.9rem;padding:4px 8px}
.jv-tot{font-weight:800;text-align:right;min-width:48px}
.jour-vue.j-vac .jv-ligne{background:none}.jour-vue.j-ferie .jv-ligne{background:#f1f6ff}
@media (max-width:520px){.jv-ligne{grid-template-columns:1fr auto;grid-template-areas:"n t" "c c";padding:12px}.jv-nom{grid-area:n}.jv-tot{grid-area:t}.jv-cr{grid-area:c}}

/* Traits fins sur toute la ligne de chaque collaborateur */
.planning tbody td{border-bottom:1px solid #cfd4de}
.planning tbody tr:last-child td{border-bottom:0}

/* Trait de séparation sous les jours / dates */
.planning thead th{border-bottom:2px solid #8f99ad}

.onglets-equipe{display:flex;gap:6px;margin:0 0 14px;border-bottom:2px solid var(--ligne);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.onglets-equipe::-webkit-scrollbar{display:none}
.onglets-equipe a{padding:10px 16px;font-weight:700;color:var(--doux);text-decoration:none;border-bottom:3px solid transparent;margin-bottom:0;white-space:nowrap}
.onglets-equipe a.actif{color:var(--accent-fonce);border-bottom-color:var(--accent)}

/* Logo et phrase d'accroche */
.marque-logo{height:34px;width:auto;max-width:120px;object-fit:contain;border-radius:6px;background:#fff;padding:2px}
.marque-txt{display:flex;flex-direction:column;line-height:1.15}
.marque-txt small{font-weight:500;font-size:.7rem;opacity:.75;letter-spacing:0}
.login-img{max-height:150px;max-width:min(300px,80vw);width:auto;object-fit:contain}
.login-logo{flex-direction:column;text-align:center}
.accroche{text-align:center;color:var(--doux);margin:-4px 0 10px;font-style:italic}

/* Menus dépliants (Paramètres) */
details.repli{background:var(--carte,#fff);border:1px solid var(--ligne);border-radius:14px;margin:10px 0;overflow:hidden}
details.repli>summary{cursor:pointer;list-style:none;padding:14px 16px;font-weight:800;font-size:1.05rem;display:flex;justify-content:space-between;align-items:center}
details.repli>summary::-webkit-details-marker{display:none}
details.repli>summary::after{content:'▾';color:var(--doux);transition:transform .15s}
details.repli[open]>summary::after{transform:rotate(180deg)}
details.repli[open]>summary{border-bottom:1px solid var(--ligne2)}
.repli-c{padding:12px 14px 16px}
.repli-c>p.sous:first-child{margin-top:0}

.dispo-j{display:grid;grid-template-columns:48px 1fr;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--ligne2)}
.dispo-nom{font-size:.95rem;line-height:1.2}.dispo-nom .doux{font-weight:600;font-size:.78rem}
.dispo-cr{display:flex;flex-wrap:wrap;gap:8px}
.dispo-c{display:flex;align-items:center;gap:2px;flex:1 1 0;min-width:0}
.dispo-c input[type=time]{flex:1;min-width:0;width:100%;padding:8px 2px;font-size:.85rem;margin:0}
.dispo-c span{color:var(--doux,#667)}
.cal-dispo{margin:0 0 14px;border:1px solid var(--ligne2);border-radius:14px;padding:12px;background:var(--carte)}
.cal-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:1.1rem}
.cal-nav .btn{min-width:48px}
.cal-ligne{display:grid;grid-template-columns:2.2em repeat(7,1fr);gap:2px;align-items:center;text-align:center}
.cal-tete{font-size:.78rem;font-weight:700;color:var(--doux);margin-bottom:4px}
.cal-sem{padding:3px 0;border-radius:10px;text-decoration:none;color:inherit;margin-bottom:2px;border:1px solid transparent}
a.cal-sem:hover,a.cal-sem:active{background:var(--accent-clair);border-color:var(--accent)}
.cal-sem.passee{opacity:.35}
.cal-num{font-size:.75rem;color:var(--doux)}
.cal-j{display:flex;align-items:center;justify-content:center;min-height:40px;font-size:1rem}
.cal-j.hors{opacity:.4}.cal-j.auj{font-weight:800;color:var(--accent-fonce);text-decoration:underline}
.cal-sem.saisie{background:var(--ligne2)}
.cal-sem.saisie .cal-num::after{content:" •";color:var(--accent)}
@media(min-width:700px){.cal-dispo{max-width:520px}}
.dispo-c input[type=time]::-webkit-calendar-picker-indicator{display:none}.dispo-c input[type=time]{text-align:center}
.fond-sombre .login-logo,.fond-sombre .accroche,.fond-sombre .sous,.fond-sombre .login a{color:#fff}.fond-sombre .login .carte{color:var(--encre)}.fond-sombre .login .carte a{color:var(--accent-fonce)}
.dispo-abs{flex:1 1 100%;margin:2px 0 0;font-size:.88rem}
.pastille.annule{background:#e6e8ee;color:#4a5470}
.mois-det{margin-bottom:10px}.mois-det summary{display:flex;justify-content:space-between;align-items:center;gap:6px 14px;flex-wrap:wrap;cursor:pointer}

/* ---- Téléphone : semaine par jour, tableaux en fiches, planning du mois ajusté ---- */
.sem-mob{display:none}
.sm-titre{margin:18px 0 8px;font-size:1.05rem;text-transform:capitalize}.sm-jour.auj .sm-titre{color:var(--accent-fonce,var(--accent))}
.sm-jour.auj .jour-vue{box-shadow:0 0 0 2px var(--accent)}
.jv-vide{padding:14px 16px;color:var(--doux)}
.sm-repos{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 2px 0;font-size:.85rem}
@media (max-width:640px){
  .sem-tab{display:none}.sem-mob{display:block}
  .planning{min-width:0;width:100%}
  .planning th:first-child,.planning td:first-child{width:52px}
  .planning th,.planning td{padding:4px 2px}
  .planning .nom-c{font-size:.74rem;overflow:hidden;text-overflow:ellipsis}
  .planning thead th{font-size:.62rem}
  .planning td.jour .cr{font-size:.62rem;padding:2px 0;letter-spacing:-.3px}
  .tab-cartes,.tab-cartes tbody,.tab-cartes tr,.tab-cartes td{display:block;width:100%}
  .tab-cartes{min-width:0}.tab-cartes thead{display:none}
  .tab-cartes tr{border-bottom:8px solid var(--fond);padding:6px 4px}
  .tab-cartes td{display:flex;justify-content:space-between;gap:12px;padding:6px 12px;border:0;text-align:right !important}
  .tab-cartes td[data-l]::before{content:attr(data-l);color:var(--doux);font-weight:600;text-align:left}
  .tab-cartes td:first-child{font-size:1.05rem;padding-top:10px;justify-content:flex-start;gap:10px}
  .tab-cartes td.sep-g{border-left:0}
  .nav-sem .titre{font-size:1.05rem}
  .stat .val{font-size:1.5rem}
  .btn.petit{min-height:40px}
  .actions .btn{min-height:44px}
}
@media (max-width:640px){
  .tab-cartes td:first-child::before{content:none !important}
  .planning td.total,.planning th[style*="74px"]{display:none}
  .planning thead th br{display:block}
}

.planning td.jour.depose{outline:3px dashed var(--accent);outline-offset:-3px;background:var(--accent-clair,#e6f6f7)}
.planning td .cr[draggable=true]{cursor:grab}

.titre-plan{text-align:center;margin:6px 0 14px}.titre-plan .grand{font-size:1.9rem;font-weight:800;line-height:1.15;text-transform:capitalize}.titre-plan .doux{margin-top:2px}
.barre-plan{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:center;margin-bottom:12px}
.barre-plan form{margin:0}.barre-plan .nav-ctl{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
@media (max-width:640px){.titre-plan .grand{font-size:1.6rem}}

.btn.ico{padding:0;width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center}
.btn.ico-on{color:var(--accent-fonce,var(--accent));border-color:var(--accent)}.btn.ico-off{background:#fff;color:var(--doux);border:1px solid var(--ligne)}
.btn.ico-lock{color:#b42318;border-color:#f1b7b0}
.sep-ico{width:1px;height:28px;background:var(--ligne)}
@media (max-width:640px){.sep-ico{display:none}}

/* Absence autorisée (demande d'absence acceptée) : case grisée */
:root{--n-abs-bg:#e3e5ea;--n-abs:#3d4559}
.n-abs{background:var(--n-abs-bg);color:var(--n-abs);border:1px dashed #9aa2b4}
.planning td.jour.j-abs{background:repeating-linear-gradient(135deg,#eef0f4,#eef0f4 6px,#e3e6ec 6px,#e3e6ec 12px)}
.feuille .cr.n-abs{background:#e3e5ea}
.pastille.abs{background:#e3e5ea;color:#3d4559}
/* Page de connexion : tout tient sans faire défiler l'écran */
.login{padding-top:clamp(10px,3.5vh,36px)}
.login-img{max-height:min(110px,15vh)}
.login-logo{font-size:1.4rem;gap:8px}
.login .accroche,.login .sous{margin:4px 0 10px}
.login .carte{padding-top:12px;padding-bottom:12px}
.login label{margin-bottom:8px}

/* Bouton de déconnexion dans l'en-tête ; menus Paramètres plus compacts */
.haut .deco{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:999px;color:#c9d2e8;flex:none}
.haut .deco:hover{color:#fff;background:rgba(255,255,255,.14)}
details.repli{margin:6px 0}
details.repli>summary{padding:9px 14px;font-size:.98rem}
.repli-c{padding:10px 12px 12px}
