[hidden]{display:none!important}
/* Charte Moulin d'Élise : noir, or, kraft, bandeau tartan, angles droits. */
:root{
  --noir:#1b1614; --or:#be965c; --kraft:#e4c6a3; --rouge:#b6281a;
  --fond:#ffffff; --papier:#f6f1ea; --relief:#ffffff; --survol:#f1e9de; --creux:#efe6da;
  --texte:#1d1d1b; --doux:#5d544d; --pale:#8c8178; --bord:#e1d6c8; --filet:#ece3d7;
  --ok:#2e6a3a; --ok-f:#e3efe2; --alerte:#8a4b00; --alerte-f:#fbecd6; --erreur:#a3241a; --erreur-f:#f8e0dc;
  --or-t:#8a6a3c; --barre:#1b1614; --barre-t:#ffffff;
  --f-titre:"Plantagenet Cherokee", Georgia, "Times New Roman", serif;
  --f-script:"Parisienne", "Snell Roundhand", cursive;
  --f-texte:-apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --tabs-h:62px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --fond:#1b1614; --papier:#110e0c; --relief:#211b18; --survol:#2b2421; --creux:#1a1513;
  --texte:#f3eee8; --doux:#b9ada1; --pale:#8a7e74; --bord:#3a312c; --filet:#2c2522;
  --ok:#86c493; --ok-f:#17291b; --alerte:#e8b866; --alerte-f:#2e2213; --erreur:#f08a7e; --erreur-f:#341613;
  --or-t:#d4ae76; --barre:#be965c; --barre-t:#1b1614; color-scheme:dark;
}}
:root[data-theme="dark"]{
  --fond:#1b1614; --papier:#110e0c; --relief:#211b18; --survol:#2b2421; --creux:#1a1513;
  --texte:#f3eee8; --doux:#b9ada1; --pale:#8a7e74; --bord:#3a312c; --filet:#2c2522;
  --ok:#86c493; --ok-f:#17291b; --alerte:#e8b866; --alerte-f:#2e2213; --erreur:#f08a7e; --erreur-f:#341613;
  --or-t:#d4ae76; --barre:#be965c; --barre-t:#1b1614; color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{margin:0;padding:0}
body{background:var(--papier);color:var(--texte);font-family:var(--f-texte);font-size:16px;line-height:1.45;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--or);outline-offset:2px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.caps{font-family:var(--f-titre);text-transform:uppercase;letter-spacing:.08em;font-weight:400}
.script{font-family:var(--f-script);font-weight:400}
.or{color:var(--or)}
.centre{text-align:center}
.num{font-variant-numeric:tabular-nums}
.doux{color:var(--doux)}
.tartan{height:8px;flex:none;background:
  repeating-linear-gradient(90deg,rgba(60,10,6,.55) 0 7px,transparent 7px 16px,rgba(190,150,92,.75) 16px 17px,transparent 17px 26px),
  repeating-linear-gradient(0deg,rgba(60,10,6,.28) 0 1px,transparent 1px 3px),#b6281a}

/* ---------- Connexion ---------- */
.login{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--noir);color:#fff;padding-top:env(safe-area-inset-top,0px)}
.login-inner{flex:1;display:flex;flex-direction:column;justify-content:center;gap:28px;width:100%;max-width:420px;margin:0 auto;padding:40px 24px}
.marque{text-align:center}
.marque .caps{font-size:20px;letter-spacing:.22em}
.marque .grand{font-size:58px;line-height:1;margin-top:2px;color:#fff}
.login p{margin:0;color:#d9cfc5;font-size:15px}
.login-pied{text-align:center;font-family:var(--f-titre);font-style:italic;color:#8c8178!important;font-size:14px!important;padding:0 0 calc(22px + env(safe-area-inset-bottom,0px))}
.lform{display:grid;gap:14px}
.lform label{display:grid;gap:7px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#cfc3b6}
.lform input{background:#120f0d;border:1px solid #4a3f38;color:#fff;padding:14px;border-radius:0;font-size:17px;width:100%}
.lform input:focus{border-color:var(--or);outline:none}
.lform input.code{font-size:28px;letter-spacing:.35em;text-align:center;font-variant-numeric:tabular-nums}
.lform .msg{min-height:22px;text-align:center;color:#f0c98f;font-size:14px}
.lform .aide{font-size:14px;color:#b3a79b;text-align:center;line-height:1.5}
.lform .aide b{color:#efe6dc;font-weight:600}
.lien{background:none;border:0;padding:6px;color:var(--or);text-decoration:underline;cursor:pointer;font-size:14px}
.spin{width:26px;height:26px;border:2px solid #4a3f38;border-top-color:var(--or);border-radius:50%;margin:8px auto;animation:tourne 1s linear infinite}
@keyframes tourne{to{transform:rotate(360deg)}}

/* ---------- Boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:0;padding:12px 16px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;text-decoration:none;font-weight:700;line-height:1.2;min-height:44px;background:transparent}
.btn-or{background:var(--or);color:#1b1614}
.btn-or:hover{background:#cfa96f}
.btn-noir{background:var(--barre);color:var(--barre-t)}
.btn-ligne{border-color:var(--bord);color:var(--texte);background:var(--relief)}
.btn-ligne:hover{background:var(--survol)}
.btn-danger{border-color:var(--erreur);color:var(--erreur);background:transparent}
.btn-mini{min-height:34px;padding:7px 11px;font-size:11px}
.btn-bloc{width:100%}
.btn[disabled]{opacity:.5;cursor:default}
.icone{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--bord);background:var(--relief);color:var(--texte);cursor:pointer;border-radius:0;padding:0;flex:none}
.icone:hover{background:var(--survol)}
.icone svg{width:20px;height:20px}

/* ---------- Coque ---------- */
.top{position:sticky;top:0;z-index:40;background:var(--noir);color:#fff;padding-top:env(safe-area-inset-top,0px)}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;height:54px;padding:0 max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px))}
.brand{display:flex;align-items:baseline;gap:10px;min-width:0}
.brand .caps{font-size:13px;letter-spacing:.2em;white-space:nowrap}
.brand .script{font-size:27px;line-height:1;color:#fff}
.chip-user{width:38px;height:38px;border-radius:50%;border:1px solid var(--or);background:transparent;color:var(--or);font-weight:700;font-size:14px;cursor:pointer;letter-spacing:.04em}
.menu-user{position:absolute;right:12px;top:calc(100% - 4px);background:var(--relief);color:var(--texte);border:1px solid var(--bord);min-width:240px;box-shadow:0 10px 30px rgba(0,0,0,.18);z-index:50}
.menu-user .qui{padding:14px 16px;border-bottom:1px solid var(--filet)}
.menu-user .qui b{display:block}
.menu-user .qui span{font-size:13px;color:var(--doux);word-break:break-all}
.menu-user button{display:block;width:100%;text-align:left;padding:13px 16px;background:none;border:0;cursor:pointer;font-size:15px}
.menu-user button:hover{background:var(--survol)}
main{max-width:1180px;margin:0 auto;padding:16px max(16px,env(safe-area-inset-right,0px)) calc(var(--tabs-h) + 28px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));outline:none}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;background:var(--relief);border-top:1px solid var(--bord);padding-bottom:env(safe-area-inset-bottom,0px)}
.tabs a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:var(--tabs-h);color:var(--pale);text-decoration:none;font-size:11px;letter-spacing:.02em;min-width:0}
.tabs a svg{width:22px;height:22px}
.tabs a[aria-current="page"]{color:var(--texte);font-weight:700}
.tabs a[aria-current="page"] svg{color:var(--or)}
@media (min-width:900px){
  .tabs{position:sticky;top:calc(54px + 8px + var(--visite-h,0px) + env(safe-area-inset-top,0px));bottom:auto;justify-content:center;gap:4px;border-top:0;border-bottom:1px solid var(--bord);padding:0}
  .tabs a{flex:none;flex-direction:row;gap:8px;height:46px;padding:0 18px;font-size:14px;border-bottom:2px solid transparent}
  .tabs a[aria-current="page"]{border-bottom-color:var(--or)}
  .tabs a svg{width:18px;height:18px}
  #app{display:flex;flex-direction:column}
  #app .tabs{order:1}
  #app main{order:2;padding-bottom:40px;width:100%}
}

/* ---------- Titres, sélecteurs ---------- */
.entete{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:4px 0 14px}
.entete h1{margin:0;font-family:var(--f-titre);font-weight:400;font-size:26px;line-height:1.15}
.entete .sous{color:var(--doux);font-size:14px;margin-top:3px}
.select-etab{appearance:none;-webkit-appearance:none;border:1px solid var(--bord);background:var(--relief) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23be965c' stroke-width='2' fill='none'/%3E%3C/svg%3E") right 12px center no-repeat;padding:10px 36px 10px 12px;border-radius:0;font-size:15px;min-height:44px;max-width:100%}
.semaine{display:flex;align-items:center;gap:8px;margin:0 0 14px}
.semaine .lib{flex:1;text-align:center;min-width:0}
.semaine .lib b{display:block;font-size:16px}
.semaine .lib span{font-size:13px;color:var(--doux)}
.semaine .lib button{background:none;border:0;padding:0;color:var(--or-t);font-size:13px;text-decoration:underline;cursor:pointer}

.etat{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 14px;border:1px solid var(--bord);background:var(--relief);margin:0 0 14px;font-size:14px}
.etat .pastille{width:9px;height:9px;border-radius:50%;flex:none;background:var(--pale)}
.etat.publie .pastille{background:var(--ok)}
.etat.brouillon .pastille{background:var(--alerte)}
.etat .txt{flex:1;min-width:180px}
.etat .txt b{display:block}
.etat .txt span{color:var(--doux);font-size:13px}

.carte{background:var(--relief);border:1px solid var(--bord)}
.vide{padding:28px 18px;text-align:center;color:var(--doux);background:var(--relief);border:1px dashed var(--bord)}
.vide b{display:block;color:var(--texte);font-size:16px;margin-bottom:4px;font-weight:600}
.vide .actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}
.bandeau{padding:12px 14px;margin:0 0 14px;border-left:3px solid var(--or);background:var(--relief);font-size:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.bandeau .txt{flex:1;min-width:200px}
.bandeau.info{border-left-color:var(--ok)}

/* ---------- Mon planning ---------- */
.prochain{background:var(--noir);color:#fff;padding:18px 18px 16px;margin:0 0 16px;position:relative;overflow:hidden}
.prochain .lab{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--or)}
.prochain .quand{font-family:var(--f-titre);font-size:22px;margin-top:6px}
.prochain .heures{font-size:34px;font-weight:300;letter-spacing:.01em;margin-top:2px;font-variant-numeric:tabular-nums}
.prochain .ou{font-size:14px;color:#d9cfc5;margin-top:2px}
.prochain::after{content:"";position:absolute;right:0;top:0;bottom:0;width:8px;background:
  repeating-linear-gradient(0deg,rgba(60,10,6,.55) 0 7px,transparent 7px 16px,rgba(190,150,92,.75) 16px 17px,transparent 17px 26px),#b6281a}
.jours{display:grid;gap:8px}
.jour{display:grid;grid-template-columns:62px 1fr;background:var(--relief);border:1px solid var(--bord);min-height:62px}
.jour.auj{border-color:var(--or);box-shadow:inset 3px 0 0 var(--or)}
.jour.passe{opacity:.62}
.jour .date{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--filet);padding:8px 4px}
.jour .date .j{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--doux)}
.jour .date .n{font-size:22px;font-weight:300;font-variant-numeric:tabular-nums;line-height:1.1}
.jour .corps{padding:10px 14px;display:grid;gap:8px;align-content:center}
.service .h{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.service .d{font-size:13px;color:var(--doux)}
.service .note{font-size:13px;color:var(--texte);background:var(--creux);padding:6px 8px;margin-top:4px}
.libre{color:var(--pale);font-size:14px}
.type{display:inline-block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;padding:3px 7px;border:1px solid var(--bord);color:var(--doux)}
.type.repos{border-color:var(--bord)}
.type.conge{background:var(--ok-f);color:var(--ok);border-color:transparent}
.type.formation{background:var(--creux);color:var(--or-t);border-color:transparent}
.type.maladie,.type.absence{background:var(--erreur-f);color:var(--erreur);border-color:transparent}
.total{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:14px 2px 2px;color:var(--doux);font-size:14px}
.total b{font-size:20px;color:var(--texte);font-weight:600;font-variant-numeric:tabular-nums}
.maj{font-size:13px;color:var(--doux);margin:-6px 0 12px}
.maj b{color:var(--ok);font-weight:600}

/* ---------- Équipe (frise) ---------- */
.frise-jour{background:var(--relief);border:1px solid var(--bord);margin-bottom:10px}
.frise-jour h3{margin:0;padding:10px 14px;font-size:14px;font-weight:700;border-bottom:1px solid var(--filet);display:flex;justify-content:space-between;gap:8px}
.frise-jour h3 span{font-weight:400;color:var(--doux)}
.frise-jour.auj h3{background:var(--creux)}
.echelle,.ligne{display:grid;grid-template-columns:minmax(92px,32%) 1fr;align-items:center;gap:10px;padding:0 14px}
.echelle{height:22px;font-size:10px;color:var(--pale)}
.echelle .graduations{position:relative;height:100%}
.echelle .graduations span{position:absolute;top:5px;transform:translateX(-50%)}
.ligne{min-height:40px;border-top:1px solid var(--filet)}
.ligne .qui{font-size:14px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ligne .qui small{display:block;color:var(--doux);font-size:12px;font-variant-numeric:tabular-nums;white-space:normal;line-height:1.3;padding-bottom:2px}
.ligne .qui{padding:6px 0}
.ligne.moi .qui{font-weight:700}
.piste{position:relative;height:18px;background:var(--creux)}
.piste .bloc{position:absolute;top:0;bottom:0;background:var(--noir);min-width:3px}
button.bloc{border:0;padding:0;margin:0;border-radius:0;cursor:pointer;font:inherit}
button.bloc:hover,button.bloc:focus-visible{outline:2px solid var(--or);outline-offset:1px;z-index:1}
:root[data-theme="dark"] .piste .bloc{background:var(--or)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .piste .bloc{background:var(--or)}}
.ligne.moi .piste .bloc{background:var(--or)}
.piste .absent{position:absolute;inset:0;display:flex;align-items:center;padding-left:6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--doux)}

/* ---------- Construire ---------- */
.bande-jours{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:0 0 12px}
.bande-jours button{border:1px solid var(--bord);background:var(--relief);padding:7px 2px 6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px;min-height:56px;border-radius:0}
.bande-jours button .j{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--doux)}
.bande-jours button .n{font-size:18px;font-variant-numeric:tabular-nums;line-height:1.1}
.bande-jours button .c{font-size:10px;color:var(--pale);font-variant-numeric:tabular-nums}
.bande-jours button[aria-pressed="true"]{background:var(--barre);color:var(--barre-t);border-color:var(--barre)}
.bande-jours button[aria-pressed="true"] .j,.bande-jours button[aria-pressed="true"] .c{color:inherit;opacity:.8}
.bande-jours button.alerte::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--alerte);margin-top:2px}
.grille{display:grid;gap:10px}
.col{background:var(--relief);border:1px solid var(--bord);display:none}
.col.choisi{display:block}
.col h3{margin:0;padding:10px 12px;border-bottom:1px solid var(--filet);font-size:14px;display:flex;justify-content:space-between;gap:6px}
.col h3 span{color:var(--doux);font-weight:400;font-variant-numeric:tabular-nums;white-space:nowrap}
.col.auj h3{background:var(--creux)}
.cr{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--filet);background:none;padding:10px 12px;cursor:pointer;border-radius:0}
.cr:hover{background:var(--survol)}
.cr .p{font-weight:600;font-size:15px;display:flex;justify-content:space-between;gap:6px;align-items:center}
.cr .h{font-variant-numeric:tabular-nums;font-size:15px}
.cr .d{font-size:12px;color:var(--doux)}
.cr .al{color:var(--alerte);font-size:12px;margin-top:3px;display:flex;gap:5px;align-items:flex-start}
.cr.ia{box-shadow:inset 3px 0 0 var(--or)}
.ajout{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;border:0;background:none;padding:12px;color:var(--or-t);font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;min-height:46px}
.ajout:hover{background:var(--survol)}
@media (min-width:900px){
  .bande-jours{display:none}
  .grille{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
  .col{display:block}
  .cr{padding:8px 9px}
  .cr .p{font-size:14px}
  .cr .h{font-size:13px}
}
.bilan{margin-top:20px}
.bilan h2,.section-t{font-family:var(--f-titre);font-weight:400;font-size:20px;margin:0 0 10px}
.tableau{width:100%;border-collapse:collapse;background:var(--relief);border:1px solid var(--bord);font-size:14px}
.tableau th,.tableau td{padding:10px 12px;border-bottom:1px solid var(--filet);text-align:left;vertical-align:top}
.tableau th{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--doux);font-weight:700;background:var(--creux)}
.tableau td.n{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.tableau th.n{text-align:right}
.ecart-plus{color:var(--alerte)}
.ecart-moins{color:var(--doux)}
.alertes{margin:0;padding:0;list-style:none;font-size:12px;color:var(--alerte)}
.tableau tr.al-ligne td{padding-top:0;border-top:0}
.tableau tr.a-al td{border-bottom:0}
.alertes li{margin-top:2px}
.outils{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}

/* ---------- Personnel ---------- */
.groupe{margin-bottom:18px}
.groupe h2{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--doux);margin:0 0 8px;font-weight:700}
.liste{background:var(--relief);border:1px solid var(--bord)}
.pers{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--filet);background:none;padding:12px 14px;cursor:pointer;border-radius:0}
.pers:last-child{border-bottom:0}
.pers:hover{background:var(--survol)}
.pers .av{width:38px;height:38px;border-radius:50%;background:var(--creux);color:var(--or-t);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}
.pers .i{flex:1;min-width:0}
.pers .i b{display:block;font-size:15px}
.pers .i span{display:block;font-size:13px;color:var(--doux);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pers .r{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--or-t);font-weight:700;text-align:right;flex:none}
.pers.inactif{opacity:.5}

/* ---------- Feuille (formulaire) ---------- */
.sheet-fond{position:fixed;inset:0;background:rgba(17,14,12,.5);z-index:80}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--fond);max-height:92vh;max-height:92dvh;overflow:auto;padding:0 0 env(safe-area-inset-bottom,0px);box-shadow:0 -10px 40px rgba(0,0,0,.25);overscroll-behavior:contain}
@media (min-width:700px){.sheet{left:50%;right:auto;bottom:auto;top:50%;transform:translate(-50%,-50%);width:560px;max-height:88vh}}
.sheet-h{position:sticky;top:0;background:var(--fond);display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--filet);z-index:1}
.sheet-h h2{margin:0;font-family:var(--f-titre);font-weight:400;font-size:21px}
.sheet-b{padding:16px;display:grid;gap:16px}
.sheet-f{position:sticky;bottom:0;background:var(--fond);display:flex;gap:10px;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--filet)}
.sheet-f .btn{flex:1}
.champ{display:grid;gap:6px}
.champ > span,.champ legend{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--doux);font-weight:700;padding:0}
.champ input,.champ select,.champ textarea{width:100%;border:1px solid var(--bord);background:var(--relief);padding:12px;border-radius:0;font-size:16px;min-height:46px}
.champ input:focus,.champ select:focus,.champ textarea:focus{border-color:var(--or);outline:none}
.champ textarea{min-height:70px;resize:vertical}
.champ small{color:var(--doux);font-size:13px}
fieldset.champ{border:0;margin:0;padding:0;min-width:0}
.deux{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}
.trois{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 98px;gap:10px}
.trois select{padding-left:8px;padding-right:4px}
.segments{display:flex;flex-wrap:wrap;gap:6px}
.segments label{position:relative}
.segments input{position:absolute;opacity:0;pointer-events:none}
.segments span{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 12px;border:1px solid var(--bord);background:var(--relief);cursor:pointer;font-size:14px}
.segments input:checked + span{background:var(--barre);color:var(--barre-t);border-color:var(--barre)}
.segments input:focus-visible + span{outline:2px solid var(--or);outline-offset:2px}
.segments.jours7 label{flex:1}
.segments.jours7 span{width:100%;padding:8px 0}
.puces{display:flex;flex-wrap:wrap;gap:6px}
.puces button{border:1px dashed var(--or);background:transparent;color:var(--or-t);padding:7px 10px;font-size:13px;cursor:pointer;font-variant-numeric:tabular-nums;border-radius:0}
.puces button:hover{background:var(--survol)}
.duree{font-size:14px;color:var(--doux)}
.duree b{color:var(--texte)}
.avert{font-size:13px;color:var(--alerte);background:var(--alerte-f);padding:9px 11px}
.erreur{font-size:14px;color:var(--erreur);background:var(--erreur-f);padding:9px 11px}
.cases{display:grid;gap:8px}
.cases label{display:flex;gap:10px;align-items:center;font-size:15px;cursor:pointer}
.cases input{width:20px;height:20px;accent-color:var(--or)}

.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabs-h) + 16px + env(safe-area-inset-bottom,0px));background:var(--noir);color:#fff;padding:12px 18px;z-index:100;font-size:14px;max-width:calc(100% - 32px);box-shadow:0 6px 20px rgba(0,0,0,.25)}
@media (min-width:900px){.toast{bottom:24px}}
.chargement{padding:40px 0;text-align:center;color:var(--doux)}
.chargement .spin{border-color:var(--bord);border-top-color:var(--or)}

/* =====================================================================
   Version 2 : équipes, personnel, fiche, réalisé, exports, pointeuse
   ===================================================================== */
:root{--eq-boulangers:#9a6b2f;--eq-patissiers:#b0476d;--eq-vendeurs:#2e6a3a;--eq-administratifs:#4b6584;--eq-aucune:#8c8178}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--eq-boulangers:#d9a45c;--eq-patissiers:#e48aa9;--eq-vendeurs:#86c493;--eq-administratifs:#94afd0}}
:root[data-theme="dark"]{--eq-boulangers:#d9a45c;--eq-patissiers:#e48aa9;--eq-vendeurs:#86c493;--eq-administratifs:#94afd0}
.rouge{color:var(--erreur)}
.case{display:flex;gap:9px;align-items:center;font-size:14px;cursor:pointer}
.case input{width:19px;height:19px;accent-color:var(--or);flex:none}
.case small{display:block;color:var(--doux);font-size:12px}
.case-champ{align-self:end;min-height:46px}
.aide-sec{margin:0 0 12px;color:var(--doux);font-size:13px;line-height:1.5}
.liste-simple{margin:0;padding-left:18px;font-size:14px}
.vide.petit{padding:14px;font-size:14px}
.defile{overflow-x:auto;-webkit-overflow-scrolling:touch}
.defile .tableau{min-width:440px}

/* Puces d'équipe */
.chips{display:flex;gap:6px;overflow-x:auto;margin:0 0 12px;padding-bottom:2px;-webkit-overflow-scrolling:touch}
.chips button{flex:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--bord);background:var(--relief);padding:7px 12px;font-size:13px;cursor:pointer;min-height:36px;border-radius:999px}
.chips button[aria-pressed="true"]{background:var(--barre);color:var(--barre-t);border-color:var(--barre)}
.pt{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--eq-aucune)}
.pt.eq-boulangers{background:var(--eq-boulangers)}.pt.eq-patissiers{background:var(--eq-patissiers)}.pt.eq-vendeurs{background:var(--eq-vendeurs)}.pt.eq-administratifs{background:var(--eq-administratifs)}
.cr.eq-boulangers,.real-l.eq-boulangers{box-shadow:inset 3px 0 0 var(--eq-boulangers)}
.cr.eq-patissiers,.real-l.eq-patissiers{box-shadow:inset 3px 0 0 var(--eq-patissiers)}
.cr.eq-vendeurs,.real-l.eq-vendeurs{box-shadow:inset 3px 0 0 var(--eq-vendeurs)}
.cr.eq-administratifs,.real-l.eq-administratifs{box-shadow:inset 3px 0 0 var(--eq-administratifs)}
.cr.ia{box-shadow:inset 3px 0 0 var(--or)}
.ligne.eq-boulangers .qui{box-shadow:inset 3px 0 0 var(--eq-boulangers);padding-left:8px}
.ligne.eq-patissiers .qui{box-shadow:inset 3px 0 0 var(--eq-patissiers);padding-left:8px}
.ligne.eq-vendeurs .qui{box-shadow:inset 3px 0 0 var(--eq-vendeurs);padding-left:8px}
.ligne.eq-administratifs .qui{box-shadow:inset 3px 0 0 var(--eq-administratifs);padding-left:8px}
.qui-lien{background:none;border:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;text-decoration:underline;text-decoration-color:var(--bord);text-underline-offset:3px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pointes{display:flex;flex-wrap:wrap;gap:6px}
.pointes span{font-size:12px;color:var(--doux);background:var(--creux);padding:2px 7px;font-variant-numeric:tabular-nums}

/* Téléphone cliquable */
.tel{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;min-height:44px;color:var(--ok);text-decoration:none;flex:none}
.tel span{font-size:14px;font-variant-numeric:tabular-nums;color:var(--texte);text-decoration:underline;text-decoration-color:var(--bord)}
.sous .tel{min-height:0;min-width:0;vertical-align:middle}
.sous .tel svg{width:15px;height:15px}

/* Personnel */
.filtres{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.filtres .select-etab{flex:1 1 200px}
.recherche{flex:2 1 220px;border:1px solid var(--bord);background:var(--relief);padding:10px 12px;border-radius:0;font-size:16px;min-height:44px}
.pers-l{display:flex;align-items:center;border-bottom:1px solid var(--filet);padding-right:6px}
.pers-l:last-child{border-bottom:0}
.pers-l .pers{border-bottom:0;flex:1;min-width:0}
.pers-l.inactif{opacity:.55}
.pers .av,.carte-id .av{background:var(--creux);color:var(--texte);box-shadow:inset 0 0 0 2px var(--eq-aucune)}
.av.eq-boulangers{box-shadow:inset 0 0 0 2px var(--eq-boulangers)}.av.eq-patissiers{box-shadow:inset 0 0 0 2px var(--eq-patissiers)}
.av.eq-vendeurs{box-shadow:inset 0 0 0 2px var(--eq-vendeurs)}.av.eq-administratifs{box-shadow:inset 0 0 0 2px var(--eq-administratifs)}
.alertes-rh{background:var(--relief);border:1px solid var(--bord);margin:0 0 16px;padding:12px 14px}
.alertes-rh h2{margin:0 0 8px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--doux);display:flex;gap:8px;align-items:center}
.alertes-rh h2 span{background:var(--erreur);color:#fff;border-radius:999px;padding:1px 8px;letter-spacing:0;font-size:12px}
.alertes-rh ul{list-style:none;margin:0;padding:0}
.alertes-rh li a{display:flex;flex-wrap:wrap;gap:2px 10px;padding:8px 0 8px 10px;border-top:1px solid var(--filet);text-decoration:none;color:inherit;border-left:3px solid var(--pale)}
.alertes-rh li:first-child a{border-top:0}
.alertes-rh li.niv-urgent a{border-left-color:var(--erreur)}
.alertes-rh li.niv-attention a{border-left-color:var(--alerte)}
.alertes-rh li.niv-info a{border-left-color:var(--ok)}
.alertes-rh li b{font-size:14px}
.alertes-rh li span{font-size:13px;color:var(--doux)}
.carte-id{display:flex;gap:12px;align-items:center}
.carte-id .av{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700}
.carte-id b{display:block}
.carte-id span{color:var(--doux);font-size:14px}
.infos{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:14px}
.infos dt{color:var(--doux)}
.infos dd{margin:0}

/* Fiche salarié */
.fiche-tete{margin:0 0 12px}
.fiche-tete h1{margin:4px 0 2px;font-family:var(--f-titre);font-weight:400;font-size:26px}
.fiche-tete .sous{color:var(--doux);font-size:14px}
.retour{display:inline-flex;align-items:center;gap:4px;color:var(--doux);text-decoration:none;font-size:14px;min-height:36px}
.retour svg{width:16px;height:16px}
.ancres{position:sticky;top:calc(54px + 8px + var(--visite-h,0px) + env(safe-area-inset-top,0px));z-index:5;display:flex;gap:4px;overflow-x:auto;background:var(--papier);padding:6px 0;margin:0 0 6px;border-bottom:1px solid var(--bord)}
@media (min-width:900px){.ancres{top:calc(54px + 8px + 46px + var(--visite-h,0px) + env(safe-area-inset-top,0px))}}
.ancres a{flex:none;font-size:13px;color:var(--doux);text-decoration:none;padding:6px 10px;border:1px solid transparent}
.ancres a:hover{border-color:var(--bord);background:var(--relief)}
.fsec{background:var(--relief);border:1px solid var(--bord);padding:14px;margin:0 0 12px;display:grid;gap:14px;scroll-margin-top:120px}
.fsec h2{margin:0;font-family:var(--f-titre);font-weight:400;font-size:20px}
.fsec .aide-sec{margin:-6px 0 0}
.fsec > div[hidden],.fsec [data-si-contrat][hidden]{display:none!important}
i.req{color:var(--erreur);font-style:normal}
i.reg{display:inline-block;font-style:normal;font-size:10px;letter-spacing:0;border:1px solid var(--or);color:var(--or-t);padding:0 3px;margin-left:3px;vertical-align:1px}
.barre-fiche{position:sticky;bottom:calc(var(--tabs-h) + env(safe-area-inset-bottom,0px));z-index:6;display:flex;gap:10px;justify-content:flex-end;background:var(--papier);padding:10px 0;border-top:1px solid var(--bord)}
@media (min-width:900px){.barre-fiche{bottom:0}}
.titre{border:1px solid var(--bord);padding:12px;display:grid;gap:6px;background:var(--fond)}
.titre.expire{border-color:var(--erreur)}
.titre-h{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.titre-h span{color:var(--doux);font-size:14px;font-variant-numeric:tabular-nums}
.titre-l{font-size:14px;color:var(--doux)}
.titre .btn{justify-self:start}
.fichier{cursor:pointer;margin-left:6px}
.docs{display:grid;gap:0;border:1px solid var(--bord)}
.doc{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--filet);flex-wrap:wrap}
.doc:last-child{border-bottom:0}
.doc > div{flex:1;min-width:180px}
.doc b{display:block;font-size:14px}
.doc span{font-size:13px;color:var(--doux);word-break:break-word}
.ajout-doc{display:grid;gap:10px;border:1px dashed var(--bord);padding:12px}
.ajout-doc .btn{justify-self:start}
.journal{list-style:none;margin:0;padding:0;max-height:420px;overflow:auto;border:1px solid var(--filet)}
.journal li{padding:9px 12px;border-bottom:1px solid var(--filet);font-size:13px;line-height:1.5}
.journal .j-t{color:var(--doux);font-size:12px}

/* Réalisé */
.real-jour{background:var(--relief);border:1px solid var(--bord);margin-bottom:10px}
.real-jour h3{margin:0;padding:10px 14px;font-size:14px;border-bottom:1px solid var(--filet);display:flex;justify-content:space-between;gap:8px}
.real-jour h3 span{font-weight:400;color:var(--doux);display:inline-flex;gap:4px;align-items:center}
.real-jour.auj h3{background:var(--creux)}
.real-l{display:grid;grid-template-columns:minmax(110px,30%) 1fr auto;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--filet)}
.real-l .qui b{display:block;font-size:14px}
.real-l .qui small{color:var(--doux);font-size:12px}
.real-l .vals{font-size:13px;line-height:1.5;font-variant-numeric:tabular-nums}
.real-l .ok{color:var(--ok);display:inline-flex;gap:4px;align-items:center}
.real-l.orphelin{background:var(--alerte-f)}
.real-actions{display:flex;flex-wrap:wrap;gap:8px;padding:10px 14px}
.vide-ligne{margin:0;padding:12px 14px;font-size:14px}
@media (max-width:520px){.real-l{grid-template-columns:1fr auto}.real-l .vals{grid-column:1 / -1;grid-row:2}}

/* Exports */
.cartes-export{display:grid;gap:12px}
@media (min-width:900px){.cartes-export{grid-template-columns:repeat(3,1fr)}}
.carte-x{background:var(--relief);border:1px solid var(--bord);padding:16px;display:grid;gap:12px;align-content:start}
.carte-x h2{margin:0;font-family:var(--f-titre);font-weight:400;font-size:20px}
.carte-x p{margin:0;font-size:14px;color:var(--doux);line-height:1.5}
.carte-x .btn{justify-self:start}
.carte-x .btn svg{width:16px;height:16px}

/* =====================================================================
   Pointeuse (tablette)
   ===================================================================== */
body.borne{background:#110e0c;color:#f3eee8;min-height:100vh;min-height:100dvh;user-select:none;-webkit-user-select:none;padding-top:env(safe-area-inset-top,0px)}
.b-tete{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px max(20px,env(safe-area-inset-right,0px)) 14px max(20px,env(safe-area-inset-left,0px));background:#1b1614;border-bottom:1px solid #2c2522}
.b-marque{display:flex;flex-direction:column}
.b-marque .caps{font-size:13px;letter-spacing:.22em}
.b-marque #b-etab{font-family:var(--f-titre);font-size:26px;line-height:1.2}
.b-horloge{text-align:right;cursor:default;touch-action:none}
.b-horloge b{display:block;font-size:40px;font-weight:300;font-variant-numeric:tabular-nums;line-height:1}
.b-horloge span{color:#b9ada1;font-size:14px}
.b-main{padding:18px max(20px,env(safe-area-inset-right,0px)) 40px max(20px,env(safe-area-inset-left,0px))}
.b-h{font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:#be965c;font-weight:700;margin:6px 0 12px}
.b-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:22px}
.b-tuile{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;min-height:118px;padding:16px;background:#211b18;border:1px solid #3a312c;color:#f3eee8;cursor:pointer;border-radius:4px;box-shadow:inset 4px 0 0 var(--eq-aucune)}
.b-tuile:active{transform:scale(.98)}
.b-tuile.eq-boulangers{box-shadow:inset 4px 0 0 #d9a45c}.b-tuile.eq-patissiers{box-shadow:inset 4px 0 0 #e48aa9}
.b-tuile.eq-vendeurs{box-shadow:inset 4px 0 0 #86c493}.b-tuile.eq-administratifs{box-shadow:inset 4px 0 0 #94afd0}
.b-tuile b{font-size:21px;font-weight:600}
.b-prevu{color:#b9ada1;font-size:15px;font-variant-numeric:tabular-nums}
.b-st{font-size:13px;padding:3px 8px;background:#2b2421;color:#d9cfc5;border-radius:999px}
.b-tuile.present{background:#17291b;border-color:#2e6a3a}.b-tuile.present .b-st{background:#2e6a3a;color:#fff}
.b-tuile.pause{background:#2e2213;border-color:#8a4b00}.b-tuile.pause .b-st{background:#8a4b00;color:#fff}
.b-tuile.parti{opacity:.65}
.b-st.att{background:#be965c;color:#1b1614}
.b-pied{color:#8a7e74;text-align:center;font-size:15px}
.b-info{max-width:620px;margin:8vh auto;text-align:center;display:grid;gap:16px;justify-items:center}
.b-info h1{font-family:var(--f-titre);font-weight:400;font-size:30px;margin:0}
.b-info p{color:#d9cfc5;line-height:1.6;margin:0;font-size:17px}
.b-etat{position:fixed;left:0;right:0;bottom:0;background:#8a4b00;color:#fff;text-align:center;padding:10px calc(14px + env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px));font-size:15px;z-index:20}
.b-modal{position:fixed;inset:0;background:rgba(10,8,7,.82);z-index:30;display:flex;align-items:center;justify-content:center;padding:20px}
.b-boite{position:relative;background:#1b1614;border:1px solid #3a312c;border-top:6px solid #be965c;width:min(460px,100%);padding:26px 24px 24px;text-align:center;display:grid;gap:12px;max-height:100%;overflow:auto}
.b-boite h2{margin:0;font-family:var(--f-titre);font-weight:400;font-size:28px}
.b-sous{margin:0;color:#b9ada1;font-size:16px}
.b-x{position:absolute;right:8px;top:6px;width:48px;height:48px;background:none;border:0;color:#b9ada1;font-size:32px;cursor:pointer}
.b-actions{display:grid;gap:10px}
.b-actions .btn{min-height:64px;font-size:18px}
.b-autres summary{color:#b9ada1;cursor:pointer;padding:8px;font-size:15px}
.b-autres .b-actions .btn{min-height:52px;font-size:15px}
.b-msg{min-height:22px;color:#f0c98f;font-size:16px;margin:0}
.b-points{display:flex;justify-content:center;gap:14px;height:22px}
.b-points i{width:18px;height:18px;border-radius:50%;border:2px solid #be965c}
.b-points i.plein{background:#be965c}
.b-pave{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.b-pave button{min-height:72px;font-size:30px;background:#2b2421;border:1px solid #3a312c;color:#f3eee8;cursor:pointer;border-radius:4px;font-variant-numeric:tabular-nums}
.b-pave button:active{background:#3a312c}
.b-pave button.ok{background:#be965c;color:#1b1614;font-weight:700;font-size:22px}
.b-pave button:disabled{opacity:.5}
.b-ok{border-top-color:#2e6a3a}
.b-coche{width:88px;height:88px;border-radius:50%;background:#2e6a3a;color:#fff;font-size:52px;line-height:88px;margin:0 auto}
body.borne .btn-ligne{background:transparent;color:#f3eee8;border-color:#4a3f38}
body.borne .chargement .spin{border-color:#3a312c;border-top-color:#be965c}

/* Correctifs d'affichage (fiche sur téléphone, tableaux) */
.champ input,.champ select,.champ textarea{min-width:0;max-width:100%}
.fsec .deux,.fsec .trois{align-items:start}
.fsec .trois{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:560px){.fsec .deux,.fsec .trois{grid-template-columns:minmax(0,1fr)}}
.case > span{display:grid;gap:2px}
.qui-lien{white-space:normal;text-align:left}
@media (max-width:560px){
  .defile .tableau{min-width:0}
  .tableau th,.tableau td{padding:8px 6px}
  .tableau th{letter-spacing:.03em;font-size:10px}
}
details.real-jour > summary{list-style:none;cursor:pointer}
details.real-jour > summary::-webkit-details-marker{display:none}
details.real-jour > summary h3{border-bottom:0}
details.real-jour[open] > summary h3{border-bottom:1px solid var(--filet)}
details.real-jour:not([open]) > summary h3::after{content:"Voir";font-weight:400;color:var(--or-t);font-size:12px;text-decoration:underline;margin-left:8px}

/* ---------- Assistant ---------- */
.ia-contexte{display:flex;flex-direction:column;gap:10px;margin:0 0 14px}
.ia-contexte .semaine{margin:0}
.ia-fil{display:flex;flex-direction:column;gap:14px;min-height:120px}
.ia-accueil{background:var(--relief);border:1px solid var(--bord);padding:16px;font-size:15px}
.ia-accueil p{margin:0 0 12px}
.ia-accueil p.doux{margin:12px 0 0;font-size:13px}
.ia-exemples{display:flex;flex-direction:column;gap:8px}
.ia-exemples button{text-align:left;border:1px solid var(--bord);background:var(--papier);padding:11px 12px;cursor:pointer;font-size:14px;line-height:1.35;border-radius:0}
.ia-exemples button:hover{background:var(--survol);border-color:var(--or)}
.ia-msg{display:flex;flex-direction:column;gap:10px;scroll-margin-top:90px}
.ia-msg .bulle{max-width:min(640px,92%);padding:11px 14px;font-size:15px;line-height:1.5;overflow-wrap:anywhere}
.ia-msg.moi{align-items:flex-end}
.ia-msg.moi .bulle{background:var(--barre);color:var(--barre-t)}
.ia-msg.claude{align-items:stretch}
.ia-msg.claude .bulle{background:var(--relief);border:1px solid var(--bord);border-left:3px solid var(--or);max-width:none}
.ia-msg .bulle p{margin:0 0 8px}.ia-msg .bulle p:last-child{margin:0}
.ia-msg .bulle ul,.ia-msg .bulle ol{margin:0 0 8px;padding-left:20px}.ia-msg .bulle li{margin:2px 0}
.ia-msg .bulle code{background:var(--creux);padding:1px 4px;font-size:13px}
.ia-msg .erreur{max-width:none}
.ia-pj{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.ia-pj span{display:inline-flex;align-items:center;gap:4px;font-size:12px;opacity:.85}
.ia-pj svg{width:14px;height:14px}
.bulle.ia-attente{color:var(--doux);display:flex;align-items:center;gap:10px}
.pts{display:inline-flex;gap:4px}
.pts i{width:6px;height:6px;border-radius:50%;background:var(--or);animation:ia-pt 1.2s infinite ease-in-out}
.pts i:nth-child(2){animation-delay:.15s}.pts i:nth-child(3){animation-delay:.3s}
@keyframes ia-pt{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.pts i{animation:none;opacity:.7}}

.ia-saisie{position:sticky;bottom:calc(var(--tabs-h) + env(safe-area-inset-bottom,0px));z-index:30;background:var(--papier);padding:10px 0 4px;margin-top:14px;border-top:1px solid var(--bord)}
@media (min-width:900px){.ia-saisie{bottom:0}}
.ia-barre{display:flex;gap:8px;align-items:flex-end}
.ia-barre textarea{flex:1;min-width:0;resize:none;border:1px solid var(--bord);background:var(--relief);padding:11px 12px;border-radius:0;font-size:16px;line-height:1.35;min-height:44px;max-height:180px}
.ia-barre textarea:focus{border-color:var(--or);outline:none}
.ia-joindre{cursor:pointer}
.ia-go{background:var(--or);border-color:var(--or);color:#1b1614}
.ia-go:hover{background:#cfa96f}
.ia-go[disabled]{opacity:.5;cursor:default}
.ia-pieces{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.ia-piece{display:inline-flex;align-items:center;gap:6px;background:var(--relief);border:1px solid var(--bord);padding:4px 4px 4px 8px;font-size:13px;max-width:100%}
.ia-piece > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}
.ia-piece svg{width:14px;height:14px;flex:none}
.ia-piece button{border:0;background:none;padding:4px;cursor:pointer;color:var(--doux);display:inline-flex}
.ia-pied{margin:6px 0 0;font-size:11px;color:var(--pale);text-align:center}

.ia-prop{background:var(--relief);border:1px solid var(--bord);border-top:3px solid var(--noir)}
.ia-prop > *{margin-left:14px;margin-right:14px}
.ia-prop-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:12px 0 0}
.ia-prop-h b{display:block;font-family:var(--f-titre);font-weight:400;font-size:19px}
.ia-prop-h span{font-size:13px;color:var(--doux)}
.ia-etat{flex:none;font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;padding:4px 8px;border:1px solid var(--bord);color:var(--doux)!important;display:inline-flex;align-items:center;gap:4px}
.ia-etat.attente{background:var(--alerte-f);color:var(--alerte)!important;border-color:transparent}
.ia-etat.ok{background:var(--ok-f);color:var(--ok)!important;border-color:transparent}
.ia-resume{font-size:14px;margin-top:8px;margin-bottom:0}
.ia-chiffres{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--doux);margin-top:10px;padding-bottom:10px;border-bottom:1px solid var(--filet)}
.ia-chiffres b{color:var(--texte);font-variant-numeric:tabular-nums}
.ia-chiffres .al{color:var(--alerte)}.ia-chiffres .al b{color:var(--alerte)}
.ia-chiffres svg{vertical-align:-2px}
.ia-jours{margin-left:0!important;margin-right:0!important}
.ia-jours details{border-bottom:1px solid var(--filet)}
.ia-jours summary{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;cursor:pointer;font-size:14px;font-weight:600;list-style:none}
.ia-jours summary::-webkit-details-marker{display:none}
.ia-jours summary::after{content:"";width:8px;height:8px;border-right:2px solid var(--or);border-bottom:2px solid var(--or);transform:rotate(45deg);margin:3px 2px 0 0;flex:none}
.ia-jours details[open] summary::after{transform:rotate(-135deg);margin-top:7px}
.ia-jours summary .cpt{margin-left:auto;font-variant-numeric:tabular-nums}
.ia-jours b.plus,.ia-jours li.plus .sg{color:var(--ok)}
.ia-jours b.moins,.ia-jours li.moins .sg{color:var(--erreur)}
.ia-jours ul{list-style:none;margin:0;padding:0 14px 10px}
.ia-jours li{display:grid;grid-template-columns:16px minmax(90px,max-content) 1fr;gap:4px 8px;padding:5px 0;font-size:14px;align-items:baseline;border-top:1px dashed var(--filet)}
.ia-jours li:first-child{border-top:0}
.ia-jours li .sg{font-weight:700;text-align:center}
.ia-jours li .qui{font-weight:600;padding-left:7px;box-shadow:inset 3px 0 0 var(--eq-aucune)}
.ia-jours li .qui.eq-boulangers{box-shadow:inset 3px 0 0 var(--eq-boulangers)}.ia-jours li .qui.eq-patissiers{box-shadow:inset 3px 0 0 var(--eq-patissiers)}
.ia-jours li .qui.eq-vendeurs{box-shadow:inset 3px 0 0 var(--eq-vendeurs)}.ia-jours li .qui.eq-administratifs{box-shadow:inset 3px 0 0 var(--eq-administratifs)}
.ia-jours li .det{color:var(--doux);font-variant-numeric:tabular-nums}
.ia-jours li.moins .qui,.ia-jours li.moins .det{text-decoration:line-through;text-decoration-color:var(--erreur);opacity:.75}
@media (max-width:420px){.ia-jours li{grid-template-columns:16px 1fr}.ia-jours li .det{grid-column:2}}
.ia-prop .defile{margin-top:12px}
.ia-heures{font-size:13px}
.ia-alertes{margin-top:10px;font-size:13px}
.ia-alertes li{margin-top:4px}
.ia-ecartes{margin-top:10px;font-size:13px;color:var(--doux)}
.ia-ecartes summary{cursor:pointer;color:var(--or-t)}
.ia-ecartes ul{margin:6px 0 0;padding-left:18px}
.ia-prop .erreur{margin-top:10px}
.ia-remplacee{font-size:13px;margin:10px 14px 14px}
.ia-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:14px 0}
.ia-actions .doux{font-size:13px}
.cr.ia::after{content:"IA";position:absolute;top:6px;right:8px;font-size:9px;letter-spacing:.1em;font-weight:700;color:var(--or-t)}
.cr{position:relative}
.tabs a span{text-align:center;line-height:1.15;max-width:100%;padding:0 2px;overflow:hidden}
@media (max-width:440px){.tabs a{font-size:10px;letter-spacing:0}}
@media (min-width:900px){.tabs a span{line-height:inherit}}
@media (min-width:900px){.ia-contexte,.ia-fil,.ia-saisie{max-width:860px;margin-left:auto;margin-right:auto}.ia-saisie{width:100%}}
/* Connexion : rester connecté */
.lform label.rester{display:flex;align-items:flex-start;gap:10px;text-transform:none;letter-spacing:0;font-size:15px;color:#efe6dc;cursor:pointer}
.lform label.rester input{width:20px;height:20px;margin:1px 0 0;flex:none;accent-color:#be965c;padding:0}
.lform label.rester span{display:grid;gap:3px}
.lform label.rester small{font-size:12.5px;color:#b3a79b;line-height:1.4}
/* Connexion protégée (Codir, RH, administrateurs) : mot de passe + code de l'appli */
.lform .etape{margin:0;text-align:center;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--or)}
.lform input[readonly]{color:#b3a79b;background:#0d0b0a}
.lform .voir{justify-self:end;margin-top:-8px;padding:2px 0;font-size:13px}
.lform .aide.petit{font-size:12.5px}
.l-etapes{margin:0;padding-left:20px;display:grid;gap:6px;color:#d9cfc5;font-size:14px;line-height:1.5}
.l-etapes b{color:#efe6dc;font-weight:600}
.btn-clair{border-color:var(--or);color:var(--or);background:transparent}
.btn-clair:hover{background:rgba(190,150,92,.12)}
.qr{justify-self:center;background:#fff;padding:12px;line-height:0;margin:4px auto 0;width:max-content}
.qr img{display:block;width:200px;height:200px}
.lform details{color:#b3a79b;font-size:13.5px;line-height:1.5}
.lform details summary{cursor:pointer;color:var(--or);text-decoration:underline}
.lform details p{margin:8px 0 0}
.cle-txt code{font-size:16px;letter-spacing:.06em;color:#fff;word-break:break-all;font-family:ui-monospace,Menlo,monospace}
/* Bouton flottant « Posez une question » */
.ia-bulle{position:fixed;right:14px;bottom:calc(var(--tabs-h) + 14px + env(safe-area-inset-bottom,0px));z-index:35;display:inline-flex;align-items:center;gap:8px;padding:11px 16px 11px 13px;border:0;border-radius:999px;background:var(--barre);color:var(--barre-t);font-size:14px;font-weight:700;box-shadow:0 6px 20px rgba(0,0,0,.22);cursor:pointer}
.ia-bulle svg{width:20px;height:20px;color:currentColor}
.ia-bulle:hover{filter:brightness(1.1)}
@media (min-width:900px){.ia-bulle{bottom:22px;right:22px}}
@media print{.ia-bulle{display:none!important}}
.ia-accueil h3{margin:16px 0 8px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--doux)}

/* ---------------------------------------------------------------------
   Demandes : congés, absences et messagerie
   --------------------------------------------------------------------- */
.tabs a{position:relative}
.pastille-n{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--rouge);color:#fff;font-size:11px;font-style:normal;font-weight:700;line-height:1;letter-spacing:0}
.tabs a .pastille-n{position:absolute;top:6px;left:calc(50% + 6px)}
@media (min-width:900px){.tabs a .pastille-n{position:static;margin-left:2px}}
.sous-nav{display:flex;gap:0;margin:0 0 18px;border-bottom:1px solid var(--bord)}
.sous-nav a{display:inline-flex;align-items:center;gap:6px;padding:10px 14px;color:var(--doux);text-decoration:none;font-size:14px;border-bottom:2px solid transparent;margin-bottom:-1px}
.sous-nav a[aria-current="page"]{color:var(--texte);font-weight:700;border-bottom-color:var(--or)}
.statut{display:inline-block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;padding:3px 8px;white-space:nowrap;border:1px solid var(--bord);color:var(--doux)}
.statut.attente{background:var(--alerte-f);color:var(--alerte);border-color:transparent}
.statut.ok{background:var(--ok-f);color:var(--ok);border-color:transparent}
.statut.non{background:var(--erreur-f);color:var(--erreur);border-color:transparent}
.statut.gris{background:var(--creux);color:var(--pale);border-color:transparent}
.dem{padding:14px 16px;margin-bottom:10px}
.dem-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.dem-h b{display:block;font-size:15px}
.dem-h .doux{display:block;font-size:13px}
.dem-l{margin-top:6px;font-size:14px}
.dem-c{margin-top:6px;font-size:14px;color:var(--doux);font-style:italic}
.dem-suivi{margin:8px 0 0;padding:0;list-style:none;font-size:13px;color:var(--doux)}
.dem-suivi li{padding:2px 0}
.dem-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:10px}
.dem .avert{margin:8px 0 0;font-size:13px;color:var(--alerte);display:flex;gap:6px;align-items:flex-start}
.dem .avert svg{width:16px;height:16px;flex:none;margin-top:1px}
.petit{font-size:13px}
.aide-dem{margin-top:18px}
.b-actions{display:flex;gap:8px;flex-wrap:wrap}
.conv{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--filet);color:var(--texte);text-decoration:none}
.conv:last-child{border-bottom:0}
.conv:hover{background:var(--survol)}
.conv-i{flex:1;min-width:0}
.conv-i b{display:block;font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv-i span{display:block;font-size:13px;color:var(--doux);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv.non-lu .conv-i b{font-weight:700}
.fil-msg{display:flex;flex-direction:column;gap:10px;margin:6px 0 16px}
/* Bulles limitées au fil : la classe « msg » sert aussi à la ligne d'état de l'écran de connexion. */
.fil-msg > .msg{max-width:min(620px,88%);align-self:flex-start;background:var(--relief);border:1px solid var(--bord);padding:10px 13px}
.fil-msg > .msg.mien{align-self:flex-end;background:var(--creux);border-color:transparent}
.msg-q{font-size:12px;color:var(--pale);margin-bottom:4px}
.msg-t{font-size:15px;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.msg-saisie{padding:12px;display:flex;flex-direction:column;gap:10px;position:sticky;bottom:calc(var(--tabs-h) + 8px)}
@media (min-width:900px){.msg-saisie{bottom:12px}}
.msg-saisie textarea{width:100%;min-height:96px;resize:vertical;font:inherit;font-size:15px;padding:10px;border:1px solid var(--bord);background:var(--fond);color:var(--texte)}
.msg-actions{display:flex;justify-content:space-between;align-items:center;gap:8px}
.rep-ia{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rep-ia input{flex:1;min-width:200px;font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--bord);background:var(--fond);color:var(--texte)}
.rep-notes{font-size:13px;color:var(--doux);background:var(--alerte-f);padding:8px 10px;border-left:3px solid var(--alerte)}
.rep-notes b{display:block;color:var(--alerte);margin-bottom:2px}
.rep-notes p{margin:6px 0 0}

/* Icône Messages et demandes, à côté des initiales */
.top-actions{display:flex;align-items:center;gap:10px}
.chip-msg{position:relative;width:38px;height:38px;border-radius:50%;border:1px solid var(--or);color:var(--or);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.chip-msg svg{width:19px;height:19px}
.chip-msg.actif{background:var(--or);color:var(--noir)}
.chip-msg .pastille-n{position:absolute;top:-5px;right:-6px;border:2px solid var(--noir)}

/* ---------------------------------------------------------------------
   Étiquettes de couleur
   --------------------------------------------------------------------- */
.pt-c{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--c);flex:none}
.pt-c.sans{background:transparent;border:1px dashed var(--pale)}
.etiq-q{width:100%;font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--bord);background:var(--fond);color:var(--texte);margin-bottom:8px}
.etiq-choix{display:flex;flex-wrap:wrap;gap:6px;max-height:172px;overflow:auto;padding:2px}
.etiq-choix label{position:relative}
.etiq-choix label[hidden]{display:none}
.etiq-choix input{position:absolute;opacity:0;pointer-events:none}
.etiq-choix span{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:6px 11px;border:1px solid var(--bord);background:var(--relief);cursor:pointer;font-size:14px}
.etiq-choix input:checked + span{border-color:var(--texte);box-shadow:inset 0 0 0 1px var(--texte);font-weight:600}
.etiq-choix input:focus-visible + span{outline:2px solid var(--or);outline-offset:2px}
.etiq-nouv{margin-top:8px}
.etiq-form{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:10px;background:var(--creux)}
.etiq-form input[type=text],.etiq-form input:not([type]){font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--bord);background:var(--fond);color:var(--texte)}
.etiq-form .btn{align-self:flex-start}
.palette{display:flex;flex-wrap:wrap;gap:6px}
.palette label{position:relative}
.palette input{position:absolute;opacity:0;pointer-events:none}
.palette span{display:block;width:28px;height:28px;border-radius:50%;background:var(--c);cursor:pointer;border:2px solid transparent}
.palette input:checked + span{border-color:var(--relief);box-shadow:0 0 0 2px var(--texte)}
.palette input:focus-visible + span{outline:2px solid var(--or);outline-offset:3px}
.etiq-liste{display:flex;flex-direction:column;border:1px solid var(--bord);background:var(--relief);max-height:52vh;overflow:auto}
.etiq-l{display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;border-bottom:1px solid var(--filet);background:none;text-align:left;cursor:pointer;font:inherit;font-size:14px;color:var(--texte)}
.etiq-l:hover{background:var(--survol)}
.etiq-l span{flex:1}
.etiq-l small{color:var(--pale);font-size:12px}
.etiq-l.archivee{opacity:.55}
.etiq-apercu{padding:6px 0}
/* Cartes de créneau colorées par leur étiquette */
.cr.etiq{box-shadow:inset 4px 0 0 var(--c);background:color-mix(in srgb, var(--c) 12%, transparent)}
.cr.etiq:hover{background:color-mix(in srgb, var(--c) 20%, transparent)}
/* Pavé de créneau (vues ordinateur, aperçu) */
.pave{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;width:100%;border:0;border-left:4px solid var(--c,var(--pale));background:color-mix(in srgb, var(--c,var(--pale)) 38%, var(--relief));color:var(--texte);padding:5px 7px 6px;font:inherit;font-size:12px;line-height:1.2;cursor:pointer;border-radius:3px;min-width:0}
.pave b{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pave .h{background:var(--relief);border-radius:3px;padding:1px 5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pave .n{font-style:italic;color:var(--doux);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

/* ---------------------------------------------------------------------
   Planning sur ordinateur : vues par collaborateur, par jour, par mois
   --------------------------------------------------------------------- */
body.large main{max-width:1680px}
.vb-choix{display:inline-flex;border:1px solid var(--bord);background:var(--relief);margin:0 0 12px}
.vb-choix button{border:0;border-right:1px solid var(--bord);background:none;padding:8px 14px;font:inherit;font-size:13px;cursor:pointer;color:var(--doux)}
.vb-choix button:last-child{border-right:0}
.vb-choix button[aria-pressed="true"]{background:var(--barre);color:var(--barre-t)}
.vb-aide{margin:8px 0 18px}
/* Par collaborateur */
.vc{--cols:236px repeat(7,minmax(118px,1fr));border:1px solid var(--bord);background:var(--relief);overflow-x:auto}
.vc-ligne{display:grid;grid-template-columns:var(--cols);border-bottom:1px solid var(--filet);min-width:1060px}
.vc-ligne:last-child{border-bottom:0}
.vc-tete{position:sticky;top:0;z-index:2;background:var(--relief);border-bottom:1px solid var(--bord)}
.vc-qui{display:flex;gap:9px;align-items:flex-start;padding:9px 10px;border-right:1px solid var(--filet);min-width:0}
.vc-tete .vc-qui{flex-direction:column;gap:2px;font-size:13px;font-weight:600}
.vc-qui small{display:block;color:var(--doux);font-size:12px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px}
.vc-qui > div{min-width:0}
.vc-qui .av{width:30px;height:30px;border-radius:50%;background:var(--creux);color:var(--or-t);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;flex:none}
.vc-qui .qui-lien{font-size:14px;text-align:left}
.vc-tots{display:flex;gap:4px;align-items:center;margin-top:4px;flex-wrap:wrap}
.vc-t{font-size:11px;font-variant-numeric:tabular-nums;padding:1px 6px;border-radius:9px;background:var(--creux)}
.vc-t.plus{background:var(--alerte-f);color:var(--alerte)}
.vc-t.moins{background:var(--ok-f);color:var(--ok)}
.vc-j{padding:8px 8px 7px;border-right:1px solid var(--filet);display:flex;flex-direction:column;gap:2px}
.vc-j:last-child,.vc-c:last-child{border-right:0}
.vc-j b{font-size:13px}
.vc-j span{font-size:11px;color:var(--doux);font-variant-numeric:tabular-nums}
.vc-j.auj{background:var(--creux)}
.vc-j.ferie b{color:var(--rouge)}
.vc-c{position:relative;display:flex;flex-direction:column;gap:4px;padding:5px;border-right:1px solid var(--filet);min-height:62px;min-width:0}
.vc-c.auj{background:color-mix(in srgb, var(--creux) 55%, transparent)}
.vc-c.survol,.vj-piste.survol{outline:2px dashed var(--or);outline-offset:-3px;background:var(--survol)}
.vc-plus{position:absolute;right:4px;bottom:4px;width:24px;height:24px;border:1px dashed var(--bord);background:var(--relief);color:var(--doux);display:none;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;padding:0}
.vc-plus svg{width:13px;height:13px}
.vc-c:hover .vc-plus,.vc-plus:focus-visible{display:flex}
.vc-groupe{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--papier);font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--doux);border-bottom:1px solid var(--filet);min-width:1060px}
.pave{position:relative}
.pave.travail,.pave.formation{background:color-mix(in srgb, var(--c,var(--pale)) 40%, var(--relief))}
.pave.formation{--c:#8a6a3c}
.pave.repos{border-left-color:var(--pale);background:var(--creux);color:var(--doux)}
.pave.conge{border-left-color:var(--ok);background:var(--ok-f);color:var(--ok)}
.pave.maladie,.pave.absence{border-left-color:var(--erreur);background:var(--erreur-f);color:var(--erreur)}
.pave.valide::after{content:"✓";position:absolute;right:5px;top:4px;font-size:11px;color:var(--ok);font-weight:700}
.pave.valide b{padding-right:12px}
.pave .h{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.pave.ia{box-shadow:inset 0 0 0 1px var(--or)}
.pave[draggable="true"]{cursor:grab}
.pave.glisse{opacity:.4}
.pave:hover{filter:brightness(.97)}
.pave:focus-visible{outline:2px solid var(--or);outline-offset:1px}
.pv-al{position:absolute;top:4px;right:4px;color:var(--alerte);display:flex}
.pv-al svg{width:14px;height:14px}
.vc-tots .pv-al{position:static}
/* Par jour */
.vj-jours{display:flex;gap:4px;flex-wrap:wrap;margin:0 0 10px}
.vj-jours button{border:1px solid var(--bord);background:var(--relief);padding:6px 12px;display:flex;flex-direction:column;align-items:flex-start;cursor:pointer;font:inherit;font-size:13px}
.vj-jours button span{font-size:11px;color:var(--doux)}
.vj-jours button[aria-pressed="true"]{background:var(--barre);color:var(--barre-t);border-color:var(--barre)}
.vj-jours button[aria-pressed="true"] span{color:inherit;opacity:.8}
.vj{border:1px solid var(--bord);background:var(--relief);overflow-x:auto}
.vj-ligne{display:grid;grid-template-columns:220px minmax(760px,1fr);border-bottom:1px solid var(--filet);min-width:980px}
.vj-qui{padding:8px 10px;border-right:1px solid var(--filet);font-size:13px;display:flex;flex-direction:column;justify-content:center;min-width:0}
.vj-qui small{color:var(--doux);font-variant-numeric:tabular-nums}
.vj-echelle .vj-qui{font-weight:600}
.vj-axe{position:relative;height:30px;background:repeating-linear-gradient(90deg,var(--filet) 0 1px,transparent 1px calc(100% / var(--nh)))}
.vj-echelle .vj-axe span{position:absolute;top:8px;font-size:11px;color:var(--doux);transform:translateX(3px)}
.vj-eff .vj-axe span{position:absolute;top:5px;height:20px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--texte)}
.vj-eff .vj-axe span::before{content:"";position:absolute;inset:0 1px;border-radius:10px;background:color-mix(in srgb, #4f8fd0 calc(var(--f) * 55%), transparent);z-index:0}
.vj-eff .vj-axe span.z{color:var(--pale);font-weight:400}
.vj-piste{position:relative;min-height:52px;background:repeating-linear-gradient(90deg,var(--filet) 0 1px,transparent 1px calc(100% / var(--nh)))}
.vj-piste .pave{position:absolute;top:5px;bottom:5px;width:auto;overflow:hidden;flex-direction:row;flex-wrap:wrap;align-content:center;column-gap:8px;row-gap:3px}
/* Vue par jour : titre sur la 1re ligne, horaires et note côte à côte sur la 2e (toujours lisible) */
.vj-piste .pave b{flex:0 0 100%}
.vj-piste .pave .hl{flex:none}
.vj-piste .pave .n{flex:1 1 0;min-width:0;align-self:center}
.vj-plus{position:absolute;left:8px;top:12px;border:1px dashed var(--bord);background:var(--relief);font:inherit;font-size:12px;color:var(--doux);padding:4px 8px;cursor:pointer;display:inline-flex;gap:4px;align-items:center}
.vj-plus svg{width:12px;height:12px}
.vj .vc-groupe{min-width:980px}
/* Par mois */
.vm{--qui:190px;border:1px solid var(--bord);background:var(--relief);overflow-x:auto}
.vm-ligne{display:grid;grid-template-columns:var(--qui) repeat(var(--nj),minmax(40px,1fr)) 62px;border-bottom:1px solid var(--filet);min-width:calc(var(--qui) + var(--nj) * 40px + 62px)}
.vm-qui{padding:6px 8px;border-right:1px solid var(--filet);font-size:13px;display:flex;align-items:center;min-width:0;position:sticky;left:0;background:var(--relief);z-index:1}
.vm-qui .qui-lien{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vm-j{border:0;border-right:1px solid var(--filet);background:none;padding:4px 0 5px;display:flex;flex-direction:column;align-items:center;gap:1px;font:inherit;cursor:pointer;position:relative}
.vm-j span{font-size:10px;color:var(--doux);text-transform:uppercase}
.vm-j b{font-size:13px}
.vm-j i{position:absolute;top:-12px;left:2px;font-style:normal;font-size:9px;background:var(--noir);color:#fff;padding:0 3px}
.vm-j.lundi,.vm-c.lundi{border-left:2px solid var(--bord)}
.vm-j.auj{background:var(--creux)}
.vm-j.dim b,.vm-j.ferie b{color:var(--rouge)}
.vm-tete{padding-top:12px}
.vm-c{border-right:1px solid var(--filet);padding:3px 2px;display:flex;flex-direction:column;gap:2px;min-height:44px}
.vm-c.auj{background:color-mix(in srgb, var(--creux) 55%, transparent)}
.vm-p{border:0;border-radius:3px;padding:2px 1px;font:inherit;font-size:10px;line-height:1.15;font-variant-numeric:tabular-nums;cursor:pointer;text-align:center}
.vm-p.travail{background:color-mix(in srgb, var(--c,var(--pale)) 45%, var(--relief));box-shadow:inset 0 -2px 0 var(--c,var(--pale))}
.vm-p.repos{background:var(--creux);color:var(--doux)}
.vm-p.conge{background:var(--ok-f);color:var(--ok);font-weight:700}
.vm-p.maladie,.vm-p.absence{background:var(--erreur-f);color:var(--erreur);font-weight:700}
.vm-tot{padding:6px;font-size:12px;font-variant-numeric:tabular-nums;display:flex;align-items:center;justify-content:flex-end;color:var(--doux)}
.vm .vc-groupe{min-width:calc(var(--qui) + var(--nj) * 40px + 62px)}

/* Clic en attente de données */
.attente{cursor:progress;opacity:.6}

/* Fiche « Valider le shift » */
.vs-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.vs-tete b{display:block;font-size:16px}
.vs-tete span{color:var(--doux);font-size:13px}
.vs-cartes{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.vs-carte{border:1px solid var(--filet);background:var(--creux);padding:10px 12px;min-width:0}
.vs-carte h4{margin:0 0 6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--doux);font-weight:600}
.vs-carte .vs-h{font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}
.vs-carte small{display:flex;flex-wrap:wrap;align-items:center;gap:4px;color:var(--doux);font-size:12px;margin-top:2px}
.vs-carte .vs-note{font-style:italic}
.vs-pts{list-style:none;margin:0;padding:0;display:grid;gap:3px;font-size:13px}
.vs-pts li{display:flex;justify-content:space-between;gap:8px}
.vs-pts b{font-variant-numeric:tabular-nums}
.vs-rien{margin:0;font-size:13px}
.vs-absent{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:600;padding:4px 0}
.vs-absent input{position:absolute;opacity:0;pointer-events:none}
.bascule{width:38px;height:22px;border-radius:11px;background:var(--pale);position:relative;transition:background .15s;flex:none}
.bascule::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}
.vs-absent input:checked + .bascule{background:var(--erreur)}
.vs-absent input:checked + .bascule::after{transform:translateX(16px)}
.vs-absent input:focus-visible + .bascule{outline:2px solid var(--or);outline-offset:2px}
.vs-travail{display:flex;flex-direction:column;gap:14px}
.vs-travail[hidden]{display:none}
.vs-etiq{display:flex;align-items:center;gap:8px}
.vs-etiq select{flex:1}
.vs-pause{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.vs-pause input[type=time]{width:120px}
.vs-min{display:flex;align-items:center;gap:4px}
.vs-min input{width:72px}
.vs-min span{color:var(--doux);font-size:13px}
.vs-repas{display:flex;align-items:center;gap:8px}
.vs-repas output{min-width:24px;text-align:center;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}
.vs-repas small{color:var(--doux);font-size:12px}
.pave.a-valider{outline:1px dashed var(--or);outline-offset:-1px}
@media (max-width:520px){.vs-cartes{grid-template-columns:1fr}}

/* ---------------------------------------------------------------------
   Les deux assistants : « Aide » (bulle en bas) et « Assistant planning »
   --------------------------------------------------------------------- */
.entete-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.iap-btn svg{width:16px;height:16px}
.iap-btn[aria-expanded="true"]{background:var(--or);border-color:var(--or);color:#1b1614}
.ia-bulle.actif{background:var(--or);color:#1b1614}
.ia-accueil.petit-accueil{font-size:14px;padding:12px}
.ia-accueil.petit-accueil p{margin:0 0 10px}
.ia-accueil.petit-accueil .ia-exemples button{padding:9px 10px;font-size:13.5px}
/* Aide : petite fenêtre en bas à droite */
.aide-p{position:fixed;z-index:45;right:10px;left:10px;bottom:calc(var(--tabs-h) + 70px + env(safe-area-inset-bottom,0px));max-height:min(560px,calc(100dvh - var(--tabs-h) - 150px));display:flex;flex-direction:column;background:var(--papier);border:1px solid var(--bord);box-shadow:0 14px 40px rgba(0,0,0,.25)}
.aide-p[hidden]{display:none}
@media (min-width:600px){.aide-p{left:auto;width:390px}}
@media (min-width:900px){.aide-p{right:22px;bottom:80px;max-height:min(580px,calc(100dvh - 200px))}}
.aide-h,.iap-h{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;border-bottom:1px solid var(--bord);background:var(--relief)}
.aide-h > div,.iap-t{flex:1;min-width:0}
.aide-h b,.iap-t b{display:flex;align-items:center;gap:6px;font-size:15px}
.aide-h span,.iap-t span{display:block;font-size:12px;color:var(--doux);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.iap-t span b{display:inline;font-size:12px;color:var(--texte)}
.iap-t b svg{width:18px;height:18px;color:var(--or)}
.aide-h .icone,.iap-h .icone{width:36px;height:36px}
.aide-fil,.iap-fil{flex:1;overflow-y:auto;padding:12px;gap:10px;min-height:0;max-width:none!important;margin:0!important}
.aide-p .ia-msg .bulle,.iap .ia-msg .bulle{font-size:14px;padding:9px 12px;max-width:100%}
.aide-p .ia-saisie,.iap .ia-saisie{position:static;margin:0!important;padding:8px 10px 2px;max-width:none!important;border-top:1px solid var(--bord)}
.aide-p .ia-barre textarea,.iap .ia-barre textarea{font-size:15px;min-height:40px;padding:9px 10px}
.aide-p .ia-pied,.iap .ia-pied{margin:2px 0 8px;padding:0 10px}
/* Assistant planning : panneau à droite du planning (plein écran sur téléphone) */
.iap{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;background:var(--papier)}
.iap[hidden]{display:none}
.iap .ia-prop > *{margin-left:10px;margin-right:10px}
.iap .ia-jours summary{padding:9px 10px}
.iap .ia-jours ul{padding:0 10px 8px}
.iap .ia-jours li{grid-template-columns:14px minmax(70px,max-content) 1fr;font-size:13px}
@media (min-width:1000px){
  .iap{inset:auto 0 0 auto;top:calc(54px + 8px + 46px + var(--visite-h,0px) + env(safe-area-inset-top,0px));width:420px;z-index:30;border-left:1px solid var(--bord);box-shadow:-8px 0 24px rgba(0,0,0,.08)}
  body.iap-ouvert #app main{max-width:none;width:auto;margin-right:420px}
  body.iap-ouvert .ia-bulle{display:none}
}
@media (max-width:999px){body.iap-ouvert{overflow:hidden}}
@media print{.iap,.aide-p{display:none!important}}

/* Bloc réduit d'un shift : horaires et pause toujours lisibles (la pause passe à la ligne si la place manque) */
.pave .hl{display:flex;flex-wrap:wrap;gap:3px 4px;max-width:100%;min-width:0}
.pave .pz{border:1px solid color-mix(in srgb, var(--texte) 18%, transparent);border-radius:3px;padding:0 4px;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11.5px;line-height:17px}
#r-avert .avert{display:flex;gap:6px;align-items:flex-start}
#r-avert .avert svg{width:16px;height:16px;flex:none;margin-top:1px}
/* Infobulle : raison d'une alerte au survol du symbole attention */
.pv-al[data-info]{cursor:help}
.infobulle{position:fixed;z-index:120;max-width:320px;background:var(--noir);color:#fff;padding:8px 11px;font-size:12.5px;line-height:1.4;box-shadow:0 8px 24px rgba(0,0,0,.3);pointer-events:none}
.infobulle[hidden]{display:none}
.infobulle b{display:flex;align-items:center;gap:5px;font-size:12px;letter-spacing:.04em;color:#f0c27a;margin-bottom:3px}
.infobulle b svg{width:14px;height:14px}
.infobulle ul{margin:0;padding-left:16px}
.infobulle li{margin:1px 0}
/* Symbole attention et coche « validé » côte à côte (sans se chevaucher) */
.pave.valide .pv-al{right:17px}
.pave:has(.pv-al) b{padding-right:18px}
.pave.valide:has(.pv-al) b{padding-right:32px}
.pers-l .acces-st{flex:none;margin-right:8px}
@media (max-width:640px){.pers-l{flex-wrap:wrap;padding:0 6px 8px 0}.pers-l .pers{flex-basis:100%}.pers-l .acces-st{margin-left:58px}}
.etat.acces{margin-top:-4px}
.inv-f{flex-wrap:wrap}
/* Ordre des collaborateurs : bouton en haut de la liste et feuille « Réordonner les équipiers » */
.vc-nb{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap}
.vb-ordre{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--bord);background:var(--relief);color:var(--texte);font:inherit;font-size:11.5px;font-weight:600;padding:3px 7px;border-radius:999px;cursor:pointer;white-space:nowrap}
.vb-ordre:hover{border-color:var(--or);background:var(--survol)}
.vb-ordre svg{width:12px;height:12px}
.vm-qui .vb-ordre{margin:auto 0}
.ord-tri{display:flex;gap:8px;flex-wrap:wrap}
.ord-tri button{border:1px solid var(--bord);background:var(--relief);border-radius:999px;padding:8px 14px;font:inherit;font-size:14px;cursor:pointer}
.ord-tri button[aria-pressed="true"]{border-color:var(--or);background:var(--survol)}
.ord-g h3{margin:0 0 8px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--doux);display:flex;align-items:center;gap:6px}
.ord-l{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ord-l li{display:flex;align-items:center;gap:12px;background:var(--relief);border:1px solid var(--filet);border-radius:6px;padding:9px 12px;user-select:none;-webkit-user-select:none}
.ord-l li small{margin-left:auto;color:var(--doux);font-size:12px;text-align:right}
.ord-nom{font-size:15px}
.ord-poignee{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;margin:-4px 0;cursor:grab;touch-action:none;color:var(--texte);border-radius:4px}
.ord-poignee:hover,.ord-poignee:focus-visible{background:var(--survol);outline:none}
.ord-poignee svg{width:18px;height:18px}
.ord-l li.ord-glisse{box-shadow:0 8px 22px rgba(0,0,0,.18);border-color:var(--or);position:relative;z-index:2}
.ord-l li.ord-glisse .ord-poignee{cursor:grabbing}

/* ---------- Mode visite (compte de démonstration) ---------- */
body.mode-visite{--visite-h:28px}
.bandeau-visite{display:flex;align-items:center;justify-content:center;gap:8px;height:28px;padding:0 16px;background:var(--or);color:#1b1614;font-size:12.5px;line-height:1;white-space:nowrap;overflow:hidden}
.bandeau-visite b{text-transform:uppercase;letter-spacing:.1em;font-size:11px;flex:none}
.bandeau-visite span{overflow:hidden;text-overflow:ellipsis}
.bandeau-visite .bv-c{display:none}
@media (max-width:700px){.bandeau-visite .bv-l{display:none}.bandeau-visite .bv-c{display:inline}}
/* Établissements : démonstration et comptes visiteurs */
.demo-adm{margin-top:28px}
.demo-actions{margin-top:12px}
.vis-l{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--filet)}
.vis-l:last-child{border-bottom:0}
.vis-l.inactif{opacity:.6}
.vis-l .av{width:38px;height:38px;border-radius:50%;background:var(--creux);color:var(--texte);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none;box-shadow:inset 0 0 0 2px var(--or)}
.vis-i{flex:1;min-width:200px}
.vis-i b{display:block;font-size:15px}
.vis-i span{display:block;font-size:13px;color:var(--doux);overflow-wrap:anywhere}
.vis-a{display:flex;gap:6px;flex-wrap:wrap}
@media (max-width:640px){.vis-a{padding-left:50px}}
