/* Les styles du portail (chantier.html), sortis de la page tels quels en v881 (étape 2a du plan).
   Trois blocs, dans leur ordre d'origine : l'ordre compte, une règle plus bas gagne à égalité.
   Le petit bloc de l'en-tête (ordre du mot Hub et du logo client) reste dans la page, dans le <body>. */

:root{--bg:#EFEBE4;--card:#FFFFFF;--ink:#1E2322;--ink2:#5B6563;--ink3:#8E9794;--line:#DFD8CE;--line2:#EDE7DE;--acc:#3a7c88}
*{box-sizing:border-box;margin:0}
body{font-family:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased}
/* les titres et les étiquettes prennent la condensée : c est la signalétique de chantier */
h1,h2,h3,h4,.hd h2,.sgroup,.tbar span,.seg button{font-family:"Barlow Semi Condensed","Arial Narrow",Arial,system-ui,sans-serif;letter-spacing:.005em}
h1,h2,h3,h4{font-weight:600}
/* tout ce qui se compte s aligne en colonne */
.kpi .v,.num,.ct,td.num,.su-num{font-family:"Chivo Mono",ui-monospace,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}

/* ---------- Épuré : la clarté des sites Apple et Pixel. Beaucoup de blanc, des angles très arrondis,
   pas de traits durs, une seule couleur d'action, une typographie serrée et sombre. ---------- */
body.t-epure{--bg:#f5f5f7;--card:#ffffff;--ink:#1d1d1f;--ink2:#424245;--ink3:#86868b;
 --line:#e5e5ea;--line2:#f1f1f4;--acc:#3a7c88;--hov:#f0f0f3;--wash:#fafafb;--sel:#E4EEF0;--rad:14px;
 font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI Variable Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
 letter-spacing:-.011em}

/* ---------- Studio : l'entre-deux. Ni le noir de Classique, ni le blanc froid d'Épuré.
   Un gris chaud de papier, des encres profondes mais pas noires, des traits doux.
   Il reprend les formes d'Épuré (angles arrondis, chrome léger) et n'en change
   que la palette : le corps porte donc les deux classes. ---------- */
body.t-studio{--bg:#F1F0EC;--card:#FFFFFF;--ink:#262A2C;--ink2:#565E61;--ink3:#8D9499;
 --line:#E1DFD9;--line2:#EDEBE5;--acc:#3a7c88;--hov:#EDEBE6;--wash:#FAF9F6;--sel:#E4EEF0;--rad:12px;
 letter-spacing:-.005em}
body.t-studio .card{box-shadow:0 1px 2px rgba(38,42,44,.04),0 8px 22px -18px rgba(38,42,44,.30)}

body.t-epure h1,body.t-epure h2,body.t-epure h3,body.t-epure h4{letter-spacing:-.022em;font-weight:600}
body.t-epure .card,body.t-epure .hcard,body.t-epure .gc{border:0;border-radius:18px;box-shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.05)}
body.t-epure .kpi{border:0;border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.04),0 6px 18px rgba(0,0,0,.045)}
body.t-epure .modal{border:0;border-radius:20px;box-shadow:0 24px 64px rgba(0,0,0,.18)}
body.t-epure .btn,body.t-epure .rbtn{border-radius:980px;border-color:var(--line);font-weight:500}
body.t-epure .btn:hover,body.t-epure .rbtn:hover{background:var(--hov);border-color:#dcdce1}
body.t-epure .btn.pri{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:500}
body.t-epure .btn.pri:hover{background:#2f6a76;border-color:#2f6a76}
body.t-epure input,body.t-epure select,body.t-epure textarea{border-radius:12px;border-color:var(--line);background:var(--card)}
body.t-epure input:focus,body.t-epure select:focus,body.t-epure textarea:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(65,123,116,.18);outline:0}
body.t-epure .seg{border-radius:980px;background:var(--hov);border:0;padding:2px}
body.t-epure .seg button{border-radius:980px;border:0;font-weight:500;background:transparent;padding:5px 11px;line-height:1.5}
body.t-epure .seg button.on{background:var(--acc);color:#fff;font-weight:600;box-shadow:none}
/* Le survol du segment posait var(--line2) sur une piste var(--hov) : deux gris
   voisins, donc rien de visible. Sur ce thème la piste est grise, la pastille
   survolée passe en blanc. */
body.t-epure .seg button:hover:not(.on){background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.06)}
body.t-epure .seg button.on:hover{background:#2f6a76}
body.t-epure .pill,body.t-epure .tag,body.t-epure .oc-tag,body.t-epure .chip,body.t-epure .st,body.t-epure .ct{border-radius:980px}
body.t-epure table th{background:transparent;border-bottom:1px solid var(--line);color:var(--ink3);font-weight:500;text-transform:none;letter-spacing:0}
body.t-epure table tr.tot td,body.t-epure table tr.tot th{background:transparent;border-top:1px solid var(--line)}
body.t-epure .hd{border-bottom:1px solid var(--line2)}
body.t-epure .sub{color:var(--ink3)}
body.t-epure .ico{border-radius:980px}
body.t-epure .swrow .sw i,body.t-epure .sw i{border-radius:980px}
body.t-epure table td{border-bottom:1px solid var(--line2)}
body.t-epure table td,body.t-epure table th{border-left:0;border-right:0}
body.t-epure .hint,body.t-epure .empty{border-radius:12px;color:var(--ink3)}
body.t-epure .menu,body.t-epure .ctx,body.t-epure .chmenu,body.t-epure .pjmenu{border-radius:14px;border:0;box-shadow:0 12px 40px rgba(0,0,0,.16)}
body.t-epure a{color:var(--ink)}
body.t-epure .rowlink{color:var(--ink)}
body.t-epure a:hover{color:var(--ink)}

body.t-epure .top,body.t-epure header.top,body.t-epure .topbar{background:rgba(255,255,255,.82);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line);color:var(--ink)}
body.t-epure .top .btn,body.t-epure .top select,body.t-epure .top .avbtn,body.t-epure .burger{color:var(--ink);border-color:var(--line);background:var(--card)}
body.t-epure .nav a,body.t-epure .navb{border-radius:10px;font-weight:500}
body.t-epure .nav a.on,body.t-epure .navb.on{background:var(--sel);color:var(--acc);font-weight:600}
body.t-epure .tktbl tr.tot td,body.t-epure .offtbl tr.tot td{background:var(--wash)}
body.t-epure header{background:rgba(255,255,255,.82);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);color:var(--ink);border-bottom:1px solid var(--line)}
body.t-epure header button,body.t-epure header select,body.t-epure header .bell,body.t-epure header .helpq,body.t-epure header .pjbtn{color:var(--ink);border-color:var(--line);background:transparent}
body.t-epure header button:hover,body.t-epure header .bell:hover{background:var(--hov)}
body.t-epure .wm,body.t-epure #brandtxt{color:var(--ink)}
body.t-epure nav a,body.t-epure .navitem{border-radius:10px;font-weight:500}
body.t-epure nav a.on,body.t-epure .navitem.on{background:var(--sel);color:var(--acc);font-weight:600}
body.t-epure .dcelots li.on{background:var(--sel);color:var(--acc)}

header{background:#2a2e30;color:#fff;padding:11px 16px;display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20}
header .spacer{flex:1}
header .hbrk{display:none}
header select{display:none!important}
header select#thbtn{display:inline-block!important;width:auto;max-width:150px;font:inherit;font-size:12.5px;background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:999px;padding:5px 10px;cursor:pointer}
header select#thbtn option{color:#1c1f22;background:#fff}
body.t-epure header select#thbtn{color:var(--ink);border-color:var(--line);background:var(--card)}
.pjbox{position:relative}.pjbtn{font:inherit;font-weight:600;background:transparent;color:#fff;border:0;border-radius:999px;padding:6px 14px;display:inline-flex;align-items:center;gap:9px;max-width:min(44vw,380px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;position:relative;text-align:left}
.pjbox.solo .pjbtn{padding-right:6px;pointer-events:none}.pjbox.solo .pjbtn::after{display:none}.pjbox.solo .pjmenu{display:none}
.pjbtn::after{content:"";position:static;flex:none;width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:translateY(-2px) rotate(45deg);opacity:.7}
.pjmenu{position:absolute;top:calc(100% + 6px);right:0;left:auto;min-width:100%;width:max-content;max-width:min(80vw,420px);background:#fff;color:var(--ink);border-radius:12px;box-shadow:0 12px 34px rgba(0,0,0,.22);padding:6px;z-index:60;display:none;max-height:70vh;overflow:auto}
.pjbox.open .pjmenu{display:block}.pjmenu a{display:block;padding:8px 12px;border-radius:8px;font-size:13.5px;color:var(--ink);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pjmenu a:hover{background:var(--line2)}
.pjmenu a.on:hover,body.t-epure .pjmenu a.on:hover,body.t-epure .pjmenu a.on{background:#2a2e30;color:#fff}.pjmenu a.on{background:#2a2e30;color:#fff}.pjmenu hr{border:0;border-top:1px solid var(--line);margin:6px 4px}.pjmenu a.new{color:var(--acc,#f46530);font-weight:600}
body.nuit .pjmenu{background:#26292b;color:#e6e3dc}body.nuit .pjmenu a{color:#e6e3dc}body.nuit .pjmenu a:hover{background:#34383b}
header button{font:inherit;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:5px 12px;cursor:pointer}
header .bell{position:relative;width:32px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:rgba(255,255,255,.75)}
header .bell #bellct{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;border-radius:999px;background:var(--acc);color:#fff;font-size:10px;font-weight:800;line-height:16px;text-align:center;padding:0 4px;display:none}
header .bell.hasnew{color:#fff;border-color:var(--acc);animation:bellglow 2.6s ease-in-out infinite}header .bell.hasnew #bellct{display:block}
@keyframes bellglow{0%,100%{box-shadow:0 0 0 0 rgba(244,101,48,0)}50%{box-shadow:0 0 0 4px rgba(244,101,48,.18),0 0 16px rgba(244,101,48,.45)}}
header small{color:rgba(255,255,255,.55);font-weight:500}
main{flex:1;min-width:0;padding:14px 18px}
.shell{display:flex;align-items:stretch;min-height:calc(100vh - 49px)}
nav.side{width:212px;flex:none;align-self:stretch;min-height:calc(100vh - 49px);background:var(--card);border-right:1px solid var(--line2);padding:12px 10px;display:flex;flex-direction:column;gap:2px}

nav.side>a{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:9px;font-weight:600;color:var(--ink2);cursor:pointer;font-size:13.5px;text-decoration:none}
nav.side>a:hover{background:var(--line2)}
nav.side>a.on{background:#2a2e30;color:#fff}
nav.side .who a{cursor:pointer;text-decoration:underline;text-decoration-color:var(--line)}
nav.side a .ic{width:18px;text-align:center;font-size:14px;opacity:.85}
nav.side a .ct{margin-left:auto;font-size:11.5px;font-weight:700;opacity:.7}
nav.side a .dot{margin-left:auto;background:#f0b45a;color:#2a2e30;border-radius:999px;font-size:10.5px;font-weight:800;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:22px;height:22px;line-height:1;box-sizing:border-box;font-variant-numeric:tabular-nums}
nav.side a .ct{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;line-height:1}
nav.side a.on .dot{background:#f0b45a}
nav.side .pjsw{display:flex;align-items:center;gap:4px;padding:8px 0 4px;position:relative}nav.side .pjsel{appearance:none;-webkit-appearance:none;border:0;background:#2a2e30;color:#fff;font:inherit;font-size:13.5px;font-weight:600;letter-spacing:0;text-transform:none;padding:9px 28px 9px 11px;width:100%;cursor:pointer;border-radius:9px;line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nav.side .pjsel:hover{background:#3a3f43}nav.side .pjcar{position:absolute;right:12px;font-size:12px;color:#fff;opacity:.85;pointer-events:none}body.nuit nav.side .pjsel{background:#ece8e0;color:#1c1f22}body.nuit nav.side .pjcar{color:#1c1f22}
nav.side .who{margin-top:auto;padding:12px 11px 4px;font-size:11.5px;color:var(--ink3);line-height:1.5}
/* Le menu s'ouvre par un petit onglet collé au bord gauche, comme dans le hub, dans Hub et
   dans Matières. Sur un chantier, le téléphone est tenu d'une main : le pouce atteint le bord
   de l'écran, pas le coin haut gauche du bandeau. L'onglet se déplace de haut en bas d'un
   glissement, et retient sa hauteur, partagée avec les autres applications. */
.burger{display:none;font:inherit;border:none;cursor:grab}
/* sur écran large : un petit triangle au bord du menu le replie ; il reste au bord gauche pour le rouvrir */
.sidefold{position:fixed;left:212px;top:50%;transform:translateY(-50%);z-index:21;width:16px;height:44px;border:1px solid var(--line);border-left:0;border-radius:0 8px 8px 0;background:var(--sel);color:var(--acc);font-size:12px;font-weight:700;line-height:1;cursor:pointer;padding:0;display:none;align-items:center;justify-content:center;box-shadow:2px 0 8px rgba(0,0,0,.06);transition:left .2s,filter .15s}
.sidefold:hover{color:var(--acc);background:var(--sel);filter:brightness(.94)}
@media(min-width:901px){.sidefold{display:flex}body.sidefolded .sidefold{left:0;border-left:0}body.nosidebar .sidefold{display:none}}
/* tant que le menu n'est pas là (chargement, connexion), la languette n'a rien à replier : elle attend */
nav.side[style*="display:none"]+.sidefold,nav.side[style*="display: none"]+.sidefold{display:none !important}
/* même chose pour la languette du téléphone (.burger) : sur l'écran de connexion il n'y a pas de menu à ouvrir */
body:has(nav.side[style*="display:none"]) .burger,body:has(nav.side[style*="display: none"]) .burger{display:none !important}
/* Replié, le menu disparaissait : pour atteindre une autre page il fallait le
   rouvrir. Il se réduit maintenant à une colonne d'icônes large comme un doigt,
   comme dans Maquette, Métré, Temps, Direction et Transformation. Les intitulés
   restent en infobulle, et les libellés s'effacent par la taille de police, car
   ils sont écrits en texte nu à côté de l'icône, sans balise à masquer. */
@media(min-width:901px){
 body.sidefolded nav.side{width:54px;min-width:54px;flex:0 0 54px;padding-left:7px;padding-right:7px;overflow-x:hidden}
 body.sidefolded nav.side a,body.sidefolded nav.side button.sitem,body.sidefolded nav.side button.nv{
  font-size:0;justify-content:center;text-align:center;padding:9px 0;gap:0;white-space:nowrap;
  position:relative}
 body.sidefolded nav.side .ic{font-size:15px;margin:0;flex:none}
 body.sidefolded nav.side .lb{display:none}
 /* Les compteurs poussaient l'icône hors de son axe : un nombre à côté d'un glyphe
    centré décale le tout, et à cette taille le nombre ne se lit pas. Ils deviennent
    un point posé sur le coin de l'icône, ambre quand c'est une alerte, neutre quand
    c'est un simple décompte. Le nombre reste dans l'infobulle de la ligne. */
 body.sidefolded nav.side a .ct,body.sidefolded nav.side a .dot{
  position:absolute;top:4px;right:8px;width:8px;height:8px;min-width:0;max-width:8px;
  margin:0;padding:0;border-radius:999px;font-size:0;line-height:0;overflow:hidden;
  box-shadow:0 0 0 2px var(--card);flex:none}
 body.sidefolded nav.side a .ct{background:var(--ink3)}
 /* la flèche des liens qui ouvrent une autre application n'a plus de place */
 body.sidefolded nav.side a>span:not(.ic):not(.ct):not(.dot):not(.lb){display:none}
 /* « Voir comme… » garde son œil, perd sa phrase */
 body.sidefolded nav.side .btn{font-size:0;justify-content:center;padding:8px 0;
  margin:6px 4px 4px!important;width:auto!important}
 body.sidefolded nav.side .btn span{font-size:15px}
 /* les intitulés de section deviennent un filet, les compléments s'effacent */
 /* v934 : l'intitulé repliable (flex, flèche, compteur) débordait du filet : un petit trait de travers sur chaque ligne
    (capture d'Eric du 30/09). Le filet est dessiné à part, rien de l'intitulé ne passe ; un groupe fermé garde son
    nombre de rubriques au milieu du filet, et un clic l'ouvre toujours. */
 body.sidefolded nav.side .sgroup{display:block;position:relative;height:13px;padding:0;margin:4px 6px;background:none;
  text-indent:0;overflow:visible;border:0;font-size:0}
 body.sidefolded nav.side .sgroup::before{content:"";position:absolute;left:0;right:0;top:6px;height:1px;background:var(--line)}
 body.sidefolded nav.side .sgroup>*{display:none}
 body.sidefolded nav.side .sgroup.sgfold.closed>.chev{display:flex;position:absolute;left:50%;top:0;transform:translateX(-50%);
  opacity:1;gap:0}
 body.sidefolded nav.side .sgroup.sgfold.closed>.chev svg{display:none}
 body.sidefolded nav.side .sgroup.sgfold.closed>.chev .n{font-size:9px;line-height:13px;padding:0 5px;min-width:0}
 /* le volet réduit n'a pas la place d'un bouton de phase : il s'écrasait en filet,
    avec le bouton coupé dedans. Il se retire, et revient avec le volet déplié. */
 body.sidefolded nav.side .sphase{display:none}
nav.side .sphase{display:flex;margin:6px 10px 10px}
nav.side .sphase-l{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);flex:0 0 auto}
nav.side .sphase-seg{flex:1;display:flex;border:1px solid var(--line);border-radius:999px;padding:2px;background:var(--card);min-width:0}
nav.side .sphase-seg button{flex:1;min-width:0;border:0;background:none;border-radius:999px;padding:3px 6px;font:inherit;font-size:11px;font-weight:600;color:var(--ink3);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;box-shadow:none;text-transform:none;letter-spacing:0}
nav.side .sphase-seg button.on{background:var(--acc);color:#fff;cursor:default;opacity:1}
nav.side .sphase-seg button.phb:hover{background:var(--hov,rgba(0,0,0,.05));color:var(--ink)}
nav.side .sphase-seg button[disabled]:not(.on){cursor:default}
 body.sidefolded nav.side .sideents,body.sidefolded nav.side .navmore,
 body.sidefolded nav.side .sfoot,body.sidefolded nav.side .sidefoot,
 body.sidefolded nav.side .soon,body.sidefolded nav.side .sitem.sub{display:none}
 body.sidefolded .sidefold{left:54px}
}
.sidebg{display:none;position:fixed;inset:0;background:rgba(30,28,24,.45);z-index:24}
@media(max-width:900px){
 nav.side{position:fixed;left:0;top:0;height:100vh;min-height:0;overflow-y:auto;z-index:25;transform:translateX(-105%);transition:transform .22s;box-shadow:0 0 30px rgba(0,0,0,.2);padding-top:14px}
 /* sur téléphone l'en-tête (z 30) et la barre du bas passent devant le volet : il se cale entre les deux,
    sinon « Voir comme » et la phase, tout en haut, restaient cachés sous l'en-tête */
 @media(max-width:700px){nav.side{top:var(--hdr-h,50px);height:calc(100dvh - var(--hdr-h,50px) - var(--tbar-h,0px));padding-top:10px}.sidebg{top:var(--hdr-h,50px)}}
 body.sideopen nav.side{transform:none}
 body.sideopen .sidebg{display:block}
 .burger{display:block;position:fixed;left:0;top:118px;z-index:22;border-radius:0 10px 10px 0;
  background:#2a2e30;color:#f46530;padding:12px 10px 12px 7px;font-size:15px;font-weight:700;
  line-height:1;box-shadow:2px 2px 12px rgba(0,0,0,.28);opacity:.92;touch-action:none}
}
.card{background:var(--card);border-radius:14px;box-shadow:0 1px 4px rgba(42,46,48,.06);margin-bottom:14px;overflow:hidden}
/* Deux lignes : ce qu'on fait en haut, ce qu'on filtre en dessous. Chercher un ticket et
   en créer un ne sont pas le même geste, et les mélanger faisait une barre illisible. */
.hd.flt{border-top:1px solid var(--line2);padding-top:9px;margin-top:2px}
.hd{padding:11px 16px;border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.hd h2{font-size:15px;font-weight:700}
.hd .sub{font-size:12px;color:var(--ink3)}.cgul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:11px}.cgul li{font-size:13px;line-height:1.45}.cgul li b{display:block;color:var(--ink);font-weight:600}.cgul li span{display:block;color:var(--ink2);margin-top:2px}@media(max-width:980px){.hd .sub.tkhint{display:none}}
.bd{padding:13px 16px}
label{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink2);margin:10px 0 4px}
input,select,textarea{width:100%;font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
textarea{min-height:60px;resize:vertical}
.btn{font:inherit;padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;color:var(--ink)}
.btn.pri{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
.btn.sm{padding:4px 10px;font-size:12.5px}
.btn.on{background:#2a2e30;border-color:#2a2e30;color:#fff}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:#fff;flex-wrap:wrap;padding:3px;gap:2px;align-items:center}
.seg button{font:inherit;font-size:12px;border:0;background:transparent;padding:5px 11px;cursor:pointer;color:var(--ink2);white-space:nowrap;border-radius:999px;line-height:1.5}
.seg button:hover:not(.on){background:var(--line2);color:var(--ink)}
.seg button.on{background:#2a2e30;color:#fff}
table{border-collapse:collapse;width:100%}
th{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink3);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line2);font-weight:600;white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}
th:first-child,td:first-child{padding-left:16px}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.badge{display:inline-block;font-size:11px;font-weight:600;border-radius:999px;padding:2px 9px;white-space:nowrap}
.st-ouvert{background:#fbe3e0;color:#9c3f3f}.st-traite{background:#f9efdb;color:#96691e}.st-valide{background:#e2f2e8;color:#1e8a5a}
.p1{color:#9c3f3f;font-weight:700}.p3{color:var(--ink3)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
/* la rangee du tableau de bord tient sur une seule ligne : chaque tuile prend la part qui reste,
   au lieu d en renvoyer une seule a la ligne suivante. En dessous de 1100 px on repasse en grille. */
@media(min-width:1100px){.kpirow{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px;overflow:visible}
 .kpirow .kpi{padding:10px 9px;min-width:0;display:grid;grid-template-rows:2.7em auto 1fr;align-content:start;row-gap:1px}.kpi>.l{align-self:start;white-space:normal;overflow:hidden;text-overflow:clip}.kpi>.v{align-self:end}.kpi>.s{align-self:start}
 .kpirow .kpi .l{font-size:9px;letter-spacing:.02em;line-height:1.3;hyphens:auto}
 .kpirow .kpi .v{font-size:17px}
 .kpirow .kpi .s{font-size:10.5px;line-height:1.3;white-space:normal;overflow-wrap:normal;word-break:normal}.kpi .s span{white-space:nowrap}
 .kpirow .kpi .v{overflow-wrap:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpirow .kpi .l{white-space:normal;overflow-wrap:break-word;overflow:hidden}}
@media(min-width:1100px) and (max-width:1520px){.kpirow .kpi{padding:10px 7px}.kpirow .kpi .l{font-size:8px;letter-spacing:0}.kpirow .kpi .s{font-size:10px}.kpirow .kpi .v{font-size:16px}}

.kpi{background:var(--card);border-radius:12px;padding:11px 14px;box-shadow:0 1px 4px rgba(42,46,48,.06)}
.kpi .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3)}
.kpi .v{font-size:19px;font-weight:800;margin-top:2px;font-variant-numeric:tabular-nums}
.kpi .s{font-size:11.5px;color:var(--ink3)}
.vwr{position:relative;overflow:hidden;background:#eceae4;border-radius:10px;height:max(420px,calc(100vh - 200px));touch-action:none;cursor:grab}
.vwr.add{cursor:crosshair}
.pbox{position:absolute;transform-origin:0 0}
.pbox img{display:block;user-select:none;-webkit-user-drag:none;pointer-events:none}
.pin{position:absolute;transform:translate(-50%,-100%);cursor:pointer;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.45));display:flex;flex-direction:column;align-items:center}
.pin .dot{width:26px;height:26px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;border:2px solid #fff}
.pin .dot b{transform:rotate(45deg);color:#fff;font-size:10px}
.phmk{position:absolute;right:3px;bottom:3px;background:rgba(42,46,48,.85);color:#fff;font-size:11px;border-radius:6px;padding:2px 4px;pointer-events:none;line-height:0}.phmk svg{width:12px;height:12px}
.phx{position:absolute;right:3px;top:3px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:#2a2e30;color:#fff;font-size:14px;line-height:1;border-radius:50%;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.35)}
@media(max-width:700px){.mkbar{gap:6px;padding:8px 10px}.mkbar .btn.sm{min-height:42px;font-size:14px;padding:8px 14px}.mkbar .seg button{min-height:42px;font-size:14px;padding:8px 13px}.mkbar .seg{border-radius:14px}#mkcols i{width:30px;height:30px;margin:2px 4px}.mkbar .mkpg .ico{font-size:20px;padding:6px 10px}}
.tbar{display:none}
/* v1431 : la barre du bas aussi sur une tablette (écran tactile jusqu'à 1 366 px ; Eric, 15/10) */
@media(max-width:700px),(pointer:coarse) and (max-width:1366px){.tbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:25;background:var(--card);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));justify-content:space-around}
 .tbar button{flex:1;min-width:0;border:0;background:transparent;font:inherit;color:var(--ink2);display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0;border-radius:10px}.tbar button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tbar.six button span{font-size:10.5px}.tbar button i{font-style:normal;font-size:20px;line-height:1}.tbar button span{font-size:10.5px}.tbar button.on{color:var(--acc);font-weight:700}
 body:has(#tbar[style=""]) main{padding-bottom:78px}}
@media(pointer:coarse) and (min-width:701px) and (max-width:1366px){.tbar{justify-content:center;gap:4px}.tbar button{flex:0 1 130px}.tbar button span{font-size:12.5px}.tbar button i{font-size:22px}}
.qtcam{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:2px dashed var(--line);border-radius:14px;padding:22px 10px;cursor:pointer;text-transform:none;letter-spacing:0;margin-top:10px;background:#fbfaf7}.qtcam span{font-size:34px;line-height:1;color:var(--ink2)}.qtcam span svg{display:block}.qtcam b{font-size:14px}.qtcam small{font-size:11.5px;color:var(--ink3)}
.wxhd{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--ink3);margin:0 2px 6px}
.wxhome{display:grid;gap:6px;margin-bottom:12px}
/* dans une carte étroite, la ligne météo passe sur deux niveaux plutôt que de déborder */
.homegrid .wxhome{margin:0}
.homegrid .wxhome .wxmini{padding:7px 10px;font-size:11.5px;flex-wrap:wrap;row-gap:4px}
.homegrid .wxhome .wxmini .wxtxt{flex:1 1 100%;order:3;color:var(--ink3)}
.homegrid .wxhome .wxmini .wxdots{order:4;margin-left:0;flex:1 1 100%}
.homegrid .wxhome .wxmini .wxdots i{width:7px;height:7px}

.wxhome .wxmini{margin:0}
.wxmini{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0 0 12px;padding:7px 12px;background:var(--card);border:1px solid var(--line2);border-radius:11px;font-size:12px;color:var(--ink3);cursor:pointer}
.wxmini:hover{border-color:var(--ink3)}
.wxmini b{color:var(--ink);font-weight:600;font-size:12.5px}.wxnow{display:inline-flex;align-items:center;flex:none}.wxnow svg{width:21px;height:21px;display:block}.wxdeg{display:inline-flex;align-items:baseline;gap:4px;flex:none}.wxdeg b{font-size:14px;font-weight:700;color:var(--ink)}.wxdeg small{font-size:11.5px;color:var(--ink3)}.wxcond{color:var(--ink2);font-size:12px;white-space:nowrap}.wxsep{width:1px;height:13px;background:var(--line);flex:none}
.wxmini .wxi{font-size:13px;color:var(--ink3);line-height:1}
.wxmini.has .wxi{color:#c0392b}
.wxmini .wxtxt{min-width:0}
.wxmini .wxdots{display:flex;gap:3px;margin-left:auto;align-items:center}
.wxmini .wxdots i{width:9px;height:9px;border-radius:3px;background:#e6e2d9;display:block}
.wxmini .wxdots i.bad{background:#e0857a}
.wxmini .wxmore{font-size:11.5px;color:var(--ink3);white-space:nowrap}
.wxmini:hover .wxmore{color:var(--ink)}
@media(max-width:700px){.wxmini .wxdots{margin-left:0;width:100%;order:3}.wxmini .wxmore{margin-left:auto}}
.wxleg i{display:inline-block;width:10px;height:10px;border-radius:3px;background:#fdf1ee;border:1px solid #e6a49a;vertical-align:-1px;margin-right:5px}
.wxstrip{display:flex;gap:5px;margin:0 0 14px;overflow-x:auto;padding:2px 0 6px}.wxstrip span{position:relative;flex:1 0 58px;display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--card);border:1px solid var(--line2);border-radius:10px;padding:7px 3px 6px;font-size:11px;color:var(--ink2);cursor:default}.wxstrip span svg{color:var(--ink2);margin:1px 0}.wxstrip span b{font-weight:600;color:var(--ink3);font-size:10.5px;letter-spacing:.02em}.wxstrip span small{font-size:11px;color:var(--ink);font-variant-numeric:tabular-nums}.wxstrip span em{font-style:normal;font-size:9.5px;color:#3f66a0;background:#e8f0fa;border-radius:6px;padding:0 4px;margin-top:1px}
.wxstrip span.bad{border-color:#e6a49a;background:#fdf1ee}.wxstrip span.bad svg{color:#c0392b}.wxstrip span.bad em{color:#9c3f3f;background:#f8dcd6}
#wxtip{font-weight:500;color:var(--ink2)}
body.nuit .wxstrip span{background:var(--card)}
.cmpk{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:4px}
.ba{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ba div{position:relative}.ba img{width:100%;height:160px;object-fit:cover;border-radius:8px;display:block}.ba span{position:absolute;left:6px;bottom:6px;background:rgba(42,46,48,.85);color:#fff;font-size:11px;padding:2px 7px;border-radius:6px}
#sres a.hit:hover{background:#f2efe9}body.ro .tbar button{opacity:.6}
.zone{position:absolute;border:1.5px solid rgba(63,102,160,.9);background:rgba(63,102,160,.10);border-radius:4px;box-sizing:border-box;pointer-events:auto;cursor:pointer}.zone b{position:absolute;left:2px;top:2px;font-size:10px;background:rgba(63,102,160,.9);color:#fff;padding:1px 5px;border-radius:4px;white-space:nowrap;transform-origin:0 0}.zone.tmp{border-style:dashed;background:rgba(244,101,48,.12);border-color:var(--acc);pointer-events:none}
.pin.faded{opacity:.35}.pin.act .dot{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--acc)}
.vitem{padding:10px 16px;border-bottom:1px solid var(--line2);display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:start}.vitem.hasmap{grid-template-columns:auto 1fr auto}.ckmap{width:180px;height:120px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;display:block}@media(max-width:900px){.vitem.hasmap{grid-template-columns:1fr auto}.ckmap{display:none}}
.vside{display:flex;flex-direction:row;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end}.vact{display:flex;gap:6px;flex-wrap:wrap}
.side a .ic svg,.side .sgroup svg{display:block}
@media(max-width:700px){
 /* le menu devient une liste d entrees, pas un sommaire : pastille, nom, compte, chevron */
 .side a{display:flex;align-items:center;gap:12px;padding:12px 12px;min-height:52px;border-radius:12px}
 .side a .ic{width:34px;height:34px;min-width:34px;border-radius:10px;display:flex;align-items:center;
  justify-content:center;background:var(--line2);color:var(--ink2);font-size:0}
 .side a.on .ic{background:var(--acc);color:#fff}
 .side a .ct,.side a .dot{margin-left:auto}
 .side .sgroup{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;padding:14px 12px 6px}
 /* les liens du pied (Guide, Quitter, recharger) ne sont pas des entrées du menu : ils restent en ligne */
 .side .who a,.side .who a.rowlink{display:inline;min-height:0;padding:0;border-radius:0;gap:0}
 .side .who{padding:14px 12px 18px;font-size:13px}
 /* Accès : la grille des modules (treize cases par personne) ne tient pas sur un téléphone ; ✎ ouvre la fiche avec ses modules */
 th.acmod,td.acmod,.chsum.acmod{display:none!important}
}
.acphone{display:none}@media(max-width:700px){.acphone{display:block}}
/* les deux zones d'Accès : partagée avec l'admin EG, puis réservée à l'agence */
.zoneHd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 10px;padding:10px 14px;border-radius:12px;font-size:12.5px}
.zoneHd b{font-size:13px;letter-spacing:.02em}.zoneHd>span:not(.spacer){color:var(--ink2)}
.zoneHd.partage{background:color-mix(in srgb,var(--acc) 9%,var(--card));border:1px solid color-mix(in srgb,var(--acc) 30%,var(--line))}
.zoneHd.agence{background:color-mix(in srgb,#2a2e30 8%,var(--card));border:1px solid var(--line);border-left:4px solid #2a2e30}
body.nuit .zoneHd.agence{background:color-mix(in srgb,#fff 5%,var(--card));border-left-color:#ece8e0}
.zoneHd:first-child{margin-top:0}
/* Modules par entité : la grille (une société par ligne, vingt-cinq modules en colonnes) reste au bureau ;
   sur téléphone, une société après l'autre avec ses modules en pastilles à cocher */
/* la grille des modules par entité tient sur la page : intitulés debout, colonnes serrées */
.enttbl th.rot{height:168px;padding:0 3px 8px;vertical-align:bottom;text-align:center;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;white-space:nowrap;color:var(--ink2)}
.enttbl th.rot>span{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);line-height:1.1;max-height:158px;overflow:hidden;text-overflow:ellipsis}
.enttbl td input[type=checkbox]{width:18px;height:18px}
.enttbl th.sep,.enttbl td.sep{border-left:2px solid var(--line)}
.enttbl td:first-child{min-width:150px;white-space:nowrap}
.entphone{display:none;padding:6px 16px 4px}.entph{padding:8px 0 10px;border-bottom:1px solid var(--line2)}.entph>b{display:block;margin-bottom:6px}.entph .chips{gap:6px}.entph .chip.off{opacity:.45}
@media(max-width:700px){.entphone{display:block}.entdesk{display:none}}
.su-quickwrap{display:none}
@media(max-width:700px){.su-quickwrap{display:block;margin:0 0 14px}}
.su-hello{margin:0 0 14px}
.su-hello b{display:block;font-family:var(--su-display);font-size:22px;font-weight:600;line-height:1.15}
.su-hello small{display:block;font-size:12.5px;color:var(--su-ink3);margin-top:2px}
.su-quickwrap .su-row{gap:10px}
.viclose{padding:14px 16px 4px;margin-top:6px;border-top:1px solid var(--line2)}
.viclose .btn{width:100%;min-height:44px}
.vhd{display:flex;align-items:flex-start;gap:4px}.vhd>div:first-child{flex:0 1 auto;min-width:0}
.vrm{flex:0 0 auto;opacity:0;width:24px;height:22px;min-height:0;min-width:0;padding:0;line-height:1;font-size:12px;margin:-1px 0 0 2px;display:inline-flex;align-items:center;justify-content:center;transition:opacity .12s}.vitem:hover .vrm,.vrm:focus-visible{opacity:.45}.vrm:hover{opacity:1}
@media(pointer:coarse){.vrm{opacity:.45}}
.vobs{margin-bottom:8px}
/* une seule rangée de boutons de même taille : le ticket, la note, les photos, le plan */
.vact .btn{height:38px;min-height:38px;min-width:104px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;box-sizing:border-box;white-space:nowrap;margin:0}.vact .btn svg{width:16px;height:16px}.vact.vst .btn{min-width:140px}.vact .btn.pri{font-weight:700}
.modal.vplan{max-width:1100px;width:calc(100% - 20px)}.modal.vplan .vwr{height:max(360px,calc(100vh - 230px))}
/* v936 : les icônes au trait du point de visite ; « Photos de la visite (n) » prend deux colonnes sur téléphone et ne
   déborde plus de son bouton (capture d'Eric du 30/09) */
.vpen{display:inline-flex;vertical-align:-2px;opacity:.45;font-weight:400}.vpen svg{width:14px;height:14px}
.vact .btn.vwide{overflow:hidden}.vact .btn.vwide .vwt{overflow:hidden;text-overflow:ellipsis;min-width:0}
@media(max-width:700px){.vact .btn.vwide{grid-column:span 2}}
.vhd .ico.vrm{height:22px;min-height:0;width:24px;min-width:0;padding:0;margin:-1px 0 0 2px}
@media(max-width:700px){.vitem{grid-template-columns:1fr}.vside{align-items:stretch}.vact{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.vact .btn{flex:none;width:100%;min-width:0}.modal.vplan{width:100%;max-width:100%;border-radius:0}.modal.vplan .vwr{height:calc(100vh - 210px)}}
.empty{padding:22px;text-align:center;color:var(--ink3)}
.rowlink{color:inherit;text-decoration:underline;text-decoration-color:#d8d2c9;cursor:pointer}
.tabs{display:flex;gap:6px;margin:0 0 12px;flex-wrap:wrap}
.tabs button{font:inherit;border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 15px;cursor:pointer;font-weight:600;color:var(--ink2)}
.tabs button.on{background:#2a2e30;border-color:#2a2e30;color:#fff}
.ph{width:76px;height:76px;object-fit:cover;border-radius:8px;border:1px solid var(--line);cursor:pointer}th.sortable{cursor:pointer;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--ink)}th.sortable i{font-style:normal;font-size:9px;margin-left:3px;color:var(--ink3)}th.sortable.on{color:var(--ink)}tr.tirow{cursor:pointer}tr.tirow:hover>td{background:var(--hov)}.tfgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 12px;margin:10px 0}.tfgrid select,.tfgrid input{width:100%}.tflab{display:block;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);margin-bottom:3px}@media(max-width:600px){.tfgrid{grid-template-columns:1fr 1fr}}.inrow{font:inherit;font-size:12.5px;padding:2px 4px;border:1px solid transparent;border-radius:6px;background:transparent;color:inherit;max-width:130px}.inrow:hover{border-color:var(--line)}.inrow:focus{border-color:var(--ink3);outline:none;background:var(--card)}tr.selrow>td{background:var(--sel)}.tibulk{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 14px;margin-top:10px;border:1px solid var(--line);border-radius:11px;background:var(--card);font-size:12.5px;position:sticky;bottom:10px;box-shadow:0 3px 14px rgba(42,46,48,.10)}.btn.sm.dng{color:#9c3f3f;border-color:#e6c4bd}.phgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin:10px 0}.phcell{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}.phcell img{display:block;width:100%;height:135px;object-fit:cover;background:var(--hov);cursor:zoom-in}.phcell figcaption{display:flex;align-items:center;gap:6px;padding:6px 7px;border-top:1px solid var(--line2)}.phcell figcaption .btn{padding:3px 8px;font-size:11.5px}.phcell figcaption .ico{margin-left:auto}@media(max-width:700px){.phgrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.phcell img{height:110px}}
.msg{border:1px solid var(--line2);border-radius:10px;padding:8px 11px;margin-bottom:8px;background:#fbfaf7}
.msg .who{font-size:11.5px;color:var(--ink3);margin-bottom:2px}
.msg.log{background:transparent;border-style:dashed;color:var(--ink3);font-size:12.5px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#2a2e30;color:#fff;border-radius:14px;
 padding:10px 18px;font-size:13px;opacity:0;transition:.25s;pointer-events:none;z-index:60;max-width:92vw;
 text-align:center;line-height:1.4;cursor:pointer;box-shadow:0 8px 26px rgba(0,0,0,.28)}
.toast.on{pointer-events:auto}
.toast.bad{background:#7a2f18}
.toast.on{opacity:1}
.modal-bg{position:fixed;inset:0;background:rgba(30,28,24,.45);z-index:30;display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:16px 8px}
.modal{background:#fff;border-radius:14px;max-width:720px;width:100%;padding:18px;margin:3vh 0 40px}
/* Le dépôt par glisser : la cible doit se voir, sinon on lâche le fichier
   dans le vide et on croit que la page l'a refusé. */
.dzon{outline:2px dashed var(--acc);outline-offset:2px;background:var(--hov)}
.modal.mdrop{outline:3px dashed var(--acc);outline-offset:-6px}
.dzone{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;padding:10px 12px;
 border:1.5px dashed var(--line);border-radius:10px;background:var(--wash);transition:.12s}
.dzone.dzon{border-color:var(--acc);background:var(--hov);outline:none}
.dzone .hint{font-size:12.5px;color:var(--ink3);flex:1;min-width:140px}
.bdlogos{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:6px 0 4px}
.bdlogos button{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px 8px;border:1px solid var(--line);border-radius:12px;background:var(--card);cursor:pointer;font:inherit;font-size:11px;color:var(--ink3);min-width:0}
.bdlogos button span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bdlogos button:hover{background:var(--hov,#F7F4EF);color:var(--ink)}
.bdlogos .im{width:100%;height:72px;display:flex;align-items:center;justify-content:center;background:repeating-conic-gradient(#eee 0 25%,#fff 0 50%) 0 0/16px 16px;border-radius:8px;overflow:hidden}
.bdlogos .im img{max-width:92%;max-height:88%;object-fit:contain}
@media(max-width:700px){.bdlogos{grid-template-columns:repeat(2,1fr)}}
.mact{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
/* Le voile de depot : il ne dit pas « glissez ici », il apparait quand vous glissez deja. */
body.dropping:after{content:attr(data-drop);position:fixed;inset:0;z-index:70;display:flex;
 align-items:center;justify-content:center;background:rgba(244,101,48,.10);
 border:3px dashed #f46530;border-radius:14px;font-size:15px;font-weight:600;color:#b4441f;
 pointer-events:none;padding:20px;text-align:center}
.avband{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:8px 0;padding:9px 12px;
 border-radius:10px;background:var(--line2);font-size:12.5px}
.avband b{font-size:15px;color:var(--ink)}
.avband .s{color:var(--ink3)}
.avband.st-approuve{background:#e6efe8}
.avband.st-refuse{background:#f6e9e4}
.chsum{font-size:12px;color:var(--ink2);padding:10px 16px}
.bar{height:8px;border-radius:4px;background:var(--line2);overflow:hidden;margin:3px 0}
.bar i{display:block;height:100%;border-radius:4px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.secHd{font-weight:700;font-size:13px;margin:16px 0 6px;padding-top:12px;border-top:1px solid var(--line2)}
.verow:hover{background:var(--line2)}
.verow.on{background:#fdf2e9;box-shadow:inset 2px 0 0 var(--acc)}
.docgrid{display:grid;grid-template-columns:var(--treew,230px) 1fr}
.docwin{display:flex;flex-direction:column;max-height:94vh;margin:0}
.docwin .pvwrap{display:flex;flex-direction:column}
.docwin.haspv .pvwrap{flex:1 1 auto;min-height:38vh}
.docwin .pvoff{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
 gap:6px;text-align:center;padding:20px;font-size:13px;font-weight:600;color:var(--ink2);background:var(--wash)}
.docwin .pvoff span{font-weight:400;font-size:12px;color:var(--ink3)}
.docwin.haspv{height:96vh;max-height:96vh;max-width:min(1600px,97vw)!important}.docwin.haspv .pv{flex:1 1 auto;min-height:38vh}.docwin .rest{overflow:auto;flex:0 0 auto;max-height:42vh}
.docwin.fs{position:fixed;inset:0;max-width:none!important;max-height:none;height:100vh;border-radius:0;z-index:80;padding:10px 14px}.docwin.fs .rest{display:none}.docwin.fs .pv{min-height:0}
@media(max-width:700px){.docwin .visarow{grid-template-columns:1fr 1fr!important}}
#brandlogo.inv{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}#brandlogo.bw{filter:grayscale(1)}#brandlogo.inv.bw{filter:grayscale(1) invert(1);mix-blend-mode:screen}
#mkwin{position:fixed;inset:0;z-index:90;background:#3a3f44;display:flex;flex-direction:column}
.mkbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--card);border-bottom:1px solid var(--line2);flex-wrap:wrap}
.mkbar .mkpg{display:inline-flex;align-items:center;gap:2px;font-size:12.5px;border:1px solid var(--line);border-radius:999px;padding:2px 4px}
.mkbar .mkpg b{min-width:74px;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}
.mkbar .mkpg .ico{width:28px;height:28px;font-size:16px;line-height:1}
#mkcols i{display:inline-block;width:18px;height:18px;border-radius:50%;margin:0 2px;cursor:pointer;border:2px solid transparent;vertical-align:middle}#mkcols i.on{border-color:#fff;box-shadow:0 0 0 1.5px #2a2e30}
.mkmain{flex:1;display:flex;min-height:0;min-width:0}
.mkbody{flex:1;overflow:auto;padding:16px;text-align:center;min-width:0}
/* La liste des annotations : chaque trait posé sur le plan est aussi une ligne que l'on
   suit, que l'on ferme et que l'on exporte. C'est ce que les gens aiment chez Bluebeam. */
.mklist{width:340px;flex:none;background:var(--card);border-left:1px solid var(--line);display:none;flex-direction:column;min-height:0}
#mkwin.lst .mklist{display:flex}
@media(max-width:820px){.mklist{position:fixed;right:0;top:0;bottom:0;z-index:3;width:min(340px,92vw);box-shadow:-8px 0 30px rgba(0,0,0,.3)}}
.mklist .lh{padding:10px 12px;border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mklist .lh b{font-size:13px}
.mklist .lf{display:flex;gap:5px;flex-wrap:wrap;width:100%}
.mklist .lf button{font:inherit;font-size:11.5px;border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:999px;padding:3px 9px;cursor:pointer}
.mklist .lf button.on{background:var(--ink);color:var(--card);border-color:var(--ink)}
.mklist .lb{flex:1;overflow:auto}
.mklist .lr{display:grid;grid-template-columns:12px 1fr auto;gap:8px;align-items:start;padding:9px 12px;border-bottom:1px solid var(--line2);cursor:pointer}
.mklist .lr:hover{background:var(--hov)}
.mklist .lr.on{background:var(--sel,#eef3fa)}
.mklist .lr.fait .tx{opacity:.55;text-decoration:line-through}
.mklist .lr.fait .tx small{text-decoration:none}
.mklist .lr i.pt{min-width:18px;height:18px;border-radius:50%;margin-top:2px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-style:normal;font-size:10.5px;font-weight:700;padding:0 4px;box-sizing:border-box}
.mklist .lr .tx{font-size:12.5px;line-height:1.35;min-width:0;overflow-wrap:anywhere}
.mklist .lr .tx small{display:block;color:var(--ink3);font-size:11px;margin-top:2px}
.mklist .lr .st{font:inherit;font-size:11px;border:1px solid var(--line);background:var(--card);color:var(--ink3);border-radius:999px;padding:2px 8px;cursor:pointer;white-space:nowrap}
.mklist .lr .st.ok{background:#e2f2e8;border-color:#bcdcc9;color:#1e6f48;font-weight:600}
.mklist .lz{padding:10px 12px;border-top:1px solid var(--line2);display:flex;gap:6px;flex-wrap:wrap}
.mklist .vide{padding:22px 14px;color:var(--ink3);font-size:12.5px;text-align:center}
/* ---- métré ---- */
.mqbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.mqech{font-size:12px;color:var(--ink2)}
.mqwrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;align-items:start}
.mqbody{height:calc(100vh - 250px);min-height:380px;overflow:auto;background:#3a3f44;padding:12px;text-align:center}
.mqstage{position:relative;display:inline-block;margin:0 auto;background:#fff;box-shadow:0 4px 24px rgba(0,0,0,.35);text-align:left;transform-origin:top left}
.mqstage canvas{display:block}
.mqstage svg{position:absolute;left:0;top:0;touch-action:none;cursor:crosshair}
.mqcat{display:flex;align-items:center;gap:9px;padding:8px 6px;border-radius:9px;cursor:pointer;border:1px solid transparent}
.mqcat:hover{background:var(--line2)}
.mqcat.on{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 8%,var(--card))}
.mqcat>i{width:14px;height:14px;border-radius:4px;flex:none}
.mqcat .mqn{flex:1;min-width:0;font-size:13.5px}
.mqcat .mqs{font-size:11.5px;color:var(--ink3)}
.mqsw{width:26px;height:26px;border-radius:7px;display:inline-block;cursor:pointer;border:2px solid transparent}
.mqsw.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--card) inset}
@media(max-width:900px){.mqwrap{grid-template-columns:1fr}.mqbody{height:56vh}}
.plsel{max-width:52vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:none;letter-spacing:0}
.plsel .plselt{font-weight:400;color:var(--ink2)}
.plsel .plseli{font-weight:700;color:var(--acc)}
.plmodal{max-width:560px;padding:16px 14px 12px}
.pllist{max-height:64vh;overflow:auto;margin:6px -14px 0;border-top:1px solid var(--line2)}
.plrow{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line2);cursor:pointer}
.plrow:hover{background:var(--line2)}
.plrow.on{background:color-mix(in srgb,var(--acc) 10%,var(--card))}
.plrow .plt{flex:1;min-width:0;font-size:14px;line-height:1.35;text-transform:none}
.plrow .plt b{display:block;font-size:12.5px;letter-spacing:.02em;color:var(--ink)}
.plrow .plt span{display:block;color:var(--ink2);font-size:13px;overflow-wrap:anywhere}
.plrow .plr{display:flex;align-items:center;gap:7px;white-space:nowrap}
.plrow .plind{font-size:12px;font-weight:700;color:var(--acc);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.plrow .plok{color:var(--acc);font-weight:800}
.plsep{padding:9px 14px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);background:var(--line2)}
@media(max-width:700px){.plsel .plselt{display:none}.plsel{max-width:44vw}.plmodal{max-width:none}.pllist{max-height:70vh}.plrow{padding:14px}.plrow .plt{font-size:15px}}
.mkstage{position:relative;display:inline-block;margin:0 auto;box-shadow:0 4px 24px rgba(0,0,0,.35);background:#fff;text-align:left}
.mkstage canvas{display:block}.mkstage svg{position:absolute;left:0;top:0;touch-action:none}
.mkstage svg .mk{cursor:move}
.mkstage svg .mk:hover{opacity:.72}
.mkstage svg .mkh{cursor:grab}
.mkstage svg .mkh:active{cursor:grabbing}
/* ---- contrôles : cases, puces, interrupteurs ---- */
input[type=checkbox]{appearance:none;-webkit-appearance:none;width:17px;height:17px;border:1.5px solid #cfc9bf;border-radius:5px;background:var(--card);display:inline-grid;place-content:center;cursor:pointer;margin:0;vertical-align:-3px;flex:none;padding:0;transition:.12s}
input[type=checkbox]::before{content:"";width:10px;height:10px;transform:scale(0);transition:.12s;background:#fff;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%)}
input[type=checkbox]:checked{background:var(--acc);border-color:var(--acc)}input[type=checkbox]:checked::before{transform:scale(1)}
input[type=checkbox]:disabled{opacity:.45;cursor:default}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border:1px solid var(--line);border-radius:999px;font-size:12.5px;cursor:pointer;color:var(--ink2);background:var(--card);margin:0;text-transform:none;letter-spacing:0;user-select:none}
.chip input{display:none}.chip:has(input:checked){background:#2a2e30;border-color:#2a2e30;color:#fff}.chip:has(input:disabled){opacity:.5;cursor:default}
body.nuit .chip:has(input:checked){background:#ece8e0;color:#1c1f22;border-color:#ece8e0}
.swrow{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line2);cursor:pointer;margin:0;text-transform:none;letter-spacing:0;font-size:13px;color:var(--ink)}
.swrow:first-child{border-top:0}.swrow small{display:block;color:var(--ink3);font-size:11.5px;margin-top:1px}
.sw{position:relative;width:38px;height:22px;flex:none}.sw input{display:none}.sw i{position:absolute;inset:0;border-radius:999px;background:#d9d4cb;transition:.15s}.sw i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.sw:has(input:checked) i{background:var(--acc)}.sw:has(input:checked) i::after{left:19px}.sw:has(input:disabled) i{opacity:.5}
.modal{border-radius:16px;padding:20px 22px 18px}.modal h2{font-size:16px!important;margin-bottom:2px}
.fiab{font-size:9.5px;padding:1px 6px;border-radius:99px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle;white-space:nowrap}
.fiab.rough{background:#fbe7cf;color:#a35b0c}.fiab.est{background:var(--line2);color:var(--ink3)}.fiab.firm{background:#d9efe3;color:#1e6f48}
tr.lrough td.num{color:#a35b0c}tr.lfirm td.num b{color:#1e6f48}tr.llock td{background:color-mix(in srgb,var(--line2) 45%,transparent)}
.lockb{background:transparent;border:0;cursor:pointer;color:var(--ink3);padding:2px 4px;border-radius:6px;vertical-align:middle;line-height:0}.lockb.on{color:var(--ink)}.lockb:hover{background:var(--line2)}
.sgrid{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:18px;align-items:start}.sgrid>div{min-width:0}@media(max-width:760px){.sgrid{grid-template-columns:1fr}}
.scal{margin-top:10px;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.scal-h{display:flex;align-items:center;justify-content:space-between;font-size:13px;text-transform:capitalize}
.scal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:6px;text-align:center;font-size:12px}.scal-g em{font-style:normal;font-size:10px;color:var(--ink3);font-weight:700}
.scal-g span,.scal-g b{display:block;padding:4px 0;border-radius:8px;color:var(--ink2)}.scal-g span[onclick]{cursor:pointer}.scal-g span[onclick]:hover{background:var(--line2)}
.scal-g b{cursor:pointer;font-weight:700;color:#fff;background:#b8bcc0}.scal-g b.man{background:var(--acc,#f46530)}.scal-g .td{outline:2px solid var(--ink);outline-offset:-2px}
.helpq{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:1.5px solid currentColor;font-weight:800;font-size:13px;line-height:1;cursor:pointer;font-family:Inter,system-ui}
header .helpq{color:#fff;opacity:.85;background:transparent}header .helpq:hover{opacity:1}
.helpg{background:#faf8f4;border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin:6px 0 12px}
.helpol{margin:0;padding-left:0;list-style:none;counter-reset:h}.helpol li{position:relative;padding:7px 0 7px 34px;font-size:13.5px;line-height:1.6;border-top:1px solid var(--line2);counter-increment:h}.helpol li:first-child{border-top:0}
.helpol li::before{content:counter(h);position:absolute;left:0;top:8px;width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center}.helpg svg{width:100%;max-width:250px;height:auto;display:block;margin:0 auto;font-family:Inter,system-ui}
body.nuit .helpg{background:#26292b}
.dcard.sel{outline:2px solid var(--acc,#f46530);outline-offset:-2px}.dcard .selbox{position:absolute;top:8px;left:8px;z-index:2}
.idgrid{display:grid;grid-template-columns:auto 1fr auto;gap:0;min-height:170px}.idphoto{width:clamp(240px,20vw,420px);background:#e3e0d9 center/cover no-repeat;border-radius:14px 0 0 14px}.idmeta{padding:18px 22px;align-self:center}.idmap{width:clamp(300px,26vw,560px);min-height:170px;border-radius:0 14px 14px 0;overflow:hidden;background:#e9e6df}
.idaddr{font-size:13.5px;color:var(--ink2);margin-top:7px;line-height:1.4}
/* ---- commutateur du tableau de bord ---- */
.dmbar{display:flex;align-items:center;margin:0 0 12px}
.dmseg button{padding:7px 16px;font-size:13px}
/* ---- préconstruction ---- */
.pccard{margin-bottom:14px}
.pccard>.bd{padding:4px 17px 16px}
.pccard.pcwide>.bd{padding:10px 12px 8px}
.keydata.pckd{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px 18px;padding:12px 0 2px}
.pckd .l{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);margin-bottom:3px}
.pckd .v{font-size:15px;font-weight:600}
.pcin{font:inherit;font-size:14px;font-weight:600;width:100%;max-width:230px;padding:6px 8px;
  border:1px solid transparent;border-radius:8px;background:var(--wash,#f7f4ef);color:var(--ink)}
.pcin:hover{border-color:var(--line)}
.pcin:focus{border-color:var(--acc);background:var(--card)}
.pcnote{font-size:11.5px;color:var(--ink3);line-height:1.5;margin-top:10px}
.pctbl{width:100%;min-width:430px}
.pctbl td,.pctbl th{padding:7px 8px 7px 0}
.pctbl .pcin{font-size:13.5px;font-weight:500;max-width:none}
.pcin.large{max-width:none;width:100%;font-weight:500;font-size:13.5px}
.pcin{transition:border-color .2s,box-shadow .2s}
.pcin.pcok{border-color:#1e8a5a !important;box-shadow:0 0 0 2px rgba(30,138,90,.16)}
.pcunit{font-size:12px;color:var(--ink3);margin-left:6px}
@media(max-width:700px){ .pcin{max-width:none} }
.gmini{min-height:110px}
/* ---- bandeau fixe de l'opération ---- */
/* Deux défauts se répondaient : une valeur trop longue débordait sur la colonne
   suivante (nowrap sans coupe), et une étiquette sur deux lignes descendait sa
   valeur d'un cran. Les colonnes s'étirent donc à la même hauteur, la valeur se
   cale en bas de chacune, et ce qui dépasse se coupe proprement. */
.pcstrip{display:flex;align-items:stretch;flex-wrap:wrap;gap:0 18px;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:11px 16px;margin:0 0 14px;row-gap:9px}
.pcstrip.vide{color:var(--ink3);font-size:12.5px;gap:10px}
.pcstrip.alerte{color:#9c3f3f;border-color:#e6b8b3;background:#fbeceb}
.pcs{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 0}
.pcs>span{font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink3);font-weight:600;margin-bottom:auto;line-height:1.25}
.pcs>b{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.pccerts{display:flex;gap:6px;flex-wrap:wrap}
.cchip{font-style:normal;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;
  background:#eef0f1;color:#5b6166;white-space:nowrap}
.cchip>u{text-decoration:none;font-weight:400;opacity:.75}
.cchip.st-cours{background:#fdebd3;color:#96691e}
.cchip.st-obtenue{background:#dff3e8;color:#1e8a5a}
.pcs.bud>b{font-size:14.5px}
.pcs.bud>span{color:var(--acc)}
.pcbar{height:5px;border-radius:999px;background:var(--line2);overflow:hidden;margin:12px 0 0}
.pcbar>i{display:block;height:100%;border-radius:999px}
.pcedit{margin-left:8px;flex:0 0 auto;align-self:center;font-size:11.5px;color:var(--ink3);cursor:pointer;text-decoration:underline;
  text-underline-offset:3px;white-space:nowrap}
.pcedit:hover{color:var(--acc)}
@media(max-width:900px){ .pcs{flex:1 1 140px} }
/* téléphone : deux colonnes égales, quoi qu'il arrive ; « modifier » sur sa propre ligne, à droite.
   En flex, la dernière rangée partageait sa largeur avec « modifier » et le budget se décalait. */
@media(max-width:700px){ .pcstrip{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;align-items:start} .pcs{flex:none;min-width:0} .pcs>b{white-space:normal}
 .pcs.certs,.pcs:has(.pccerts){grid-column:1/-1} .pcedit{grid-column:1/-1;justify-self:end;margin:0;align-self:auto} }
.idmap{position:relative}
.idframe{width:100%;height:100%;min-height:170px;border:0;display:block;filter:saturate(.85)}
.mapzoom{position:absolute;right:8px;bottom:8px;z-index:3;font-size:11px;text-decoration:none;
  background:rgba(255,255,255,.92);color:#5b6166;padding:3px 9px;border-radius:999px;
  box-shadow:0 1px 4px rgba(0,0,0,.18)}
.mapmsg{display:flex;height:100%;min-height:150px;align-items:center;justify-content:center;text-align:center;padding:14px;font-size:12px;color:var(--ink3)}
.mapsw{position:absolute;right:8px;top:8px;z-index:500;display:flex;background:rgba(255,255,255,.92);border-radius:999px;padding:2px;box-shadow:0 1px 4px rgba(0,0,0,.18);font-family:inherit}.mapsw button{border:0;background:transparent;font:inherit;font-size:11px;padding:3px 9px;border-radius:999px;cursor:pointer;color:#5b6166}.mapsw button.on{background:#2a2e30;color:#fff}.idmap{position:relative}.idmap .leaflet-control-attribution{font-size:8.5px;background:rgba(255,255,255,.6);color:#8a8f93;padding:1px 4px}.idmap .leaflet-control-attribution a{color:#8a8f93}
@media(max-width:900px){.idgrid{grid-template-columns:1fr}.idphoto{width:auto;height:150px;border-radius:14px 14px 0 0}.idmap{width:auto;height:160px;border-radius:0 0 14px 14px}}
.idform{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;align-items:start}.idform label{display:block;min-height:16px}.idform input[type=text],.idform input:not([type]){height:40px}
.idform .pick{display:flex;align-items:center;gap:10px;height:56px}.idform .pv{width:120px;height:52px;border-radius:8px;border:1px solid var(--line);object-fit:contain;padding:4px;background:#fff;flex:none;box-sizing:border-box}.idform .pv.empty{border-style:dashed;display:flex;align-items:center;justify-content:center;color:var(--ink3);font-size:11.5px;padding:0}
.idform .pick .btn.sm{margin:0;text-transform:none;letter-spacing:0;font-size:12.5px;color:var(--ink);cursor:pointer}
/* fenêtre « Données de l'opération » (pcEdit) : vignettes bornées, bouton et ✕ sur la même ligne */
.pcedm .grid2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px 16px;align-items:start}
.pcedm .pick{display:flex;align-items:center;gap:10px;min-width:0}
.pcedm .pv{width:140px;height:88px;max-width:100%;border-radius:8px;border:1px solid var(--line);object-fit:contain;padding:4px;background:#fff;flex:none;box-sizing:border-box;display:block}
.pcedm .pv.cov{object-fit:cover;padding:0}
.pcedm .pv.empty{border-style:dashed;display:flex;align-items:center;justify-content:center;color:var(--ink3);font-size:11.5px;padding:0}
.pcedm .pick label.btn{display:inline-flex;align-items:center;width:auto;margin:0;flex:none;font-size:12.5px;color:var(--ink);cursor:pointer}
.pcedm .pick .ico{flex:none}
@media(max-width:600px){.pcedm .grid2{grid-template-columns:minmax(0,1fr)}.pcedm .pv{width:120px;height:76px}}
@media(max-width:900px){.idform{grid-template-columns:1fr 1fr}}@media(max-width:600px){.idform{grid-template-columns:1fr}}
.scenbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--line2);font-size:12.5px}
@media(max-width:700px){.scenbar{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;align-items:center;padding:8px 12px}.scenbar>select{min-width:0;width:100%!important}.scenbar .lab{margin:0!important}.scenbar .scenhint{display:none}.scenbar .ver,.scenbar>span:not(.lab),.scenbar>button{grid-column:1/-1}}.scenbar .lab{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink3);font-weight:600}.scenbar.on{background:#fdf6e6}body.nuit .scenbar.on{background:#3a3320}
#busy{position:fixed;inset:0;z-index:500;background:rgba(28,27,25,.45);display:flex;align-items:center;justify-content:center}#busy .bx{background:#fff;border-radius:16px;padding:22px 28px;min-width:280px;max-width:90vw;text-align:center;box-shadow:0 18px 50px rgba(0,0,0,.25)}
#busy .spin{width:28px;height:28px;border-radius:50%;border:3px solid #eee;border-top-color:var(--acc,#f46530);margin:0 auto 12px;animation:bspin .8s linear infinite}@keyframes bspin{to{transform:rotate(360deg)}}#busy .t{font-weight:700;font-size:14px}#busy .s{font-size:12px;color:var(--ink3);margin-top:4px;min-height:16px}#busy .q{font:600 11px/1 'Chivo Mono',ui-monospace,monospace;color:var(--ink3);margin-top:7px;letter-spacing:.04em}
body.nuit #busy .bx{background:#26292b;color:#e6e3dc}
.lhint{font-size:11.5px;color:var(--ink3);margin:3px 2px 0;min-height:14px}.lhint:empty{display:none}
.ctx{position:fixed;z-index:400;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.16);padding:5px;min-width:210px;font-size:13px}.ctx button{display:block;width:100%;text-align:left;border:0;background:transparent;font:inherit;padding:7px 10px;border-radius:7px;color:var(--ink);cursor:pointer}.ctx button:hover{background:var(--line2)}.ctx button.dng{color:#9c3f3f}.ctx button:disabled{opacity:.45;cursor:default}.ctx hr{border:0;border-top:1px solid var(--line);margin:4px 0}.ctx .ttl{font-size:11px;color:var(--ink3);padding:4px 10px 2px;text-transform:uppercase;letter-spacing:.04em}
/* Le rond qui tourne : partout où l'assistant travaille, pour qu'on sache qu'on attend
   quelque chose plutôt que de remplir un champ qui va se remplir tout seul. */
.spin{display:inline-block;width:12px;height:12px;margin-right:7px;vertical-align:-1px;flex:none;
 border:2px solid currentColor;border-right-color:transparent;border-radius:50%;opacity:.65;
 animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.hint.thinking{background:#fdf3e3;color:#96691e;border-color:#f0dcb8}
@media (prefers-reduced-motion:reduce){.spin{animation-duration:2.4s}}
.hint{font-size:12.5px;color:var(--ink2);padding:9px 12px;border-radius:10px;background:var(--line2);margin-top:10px;line-height:1.45}
.treecol{position:relative}.splitter{position:absolute;top:0;bottom:0;right:-4px;width:8px;cursor:col-resize;z-index:2}.splitter:hover,.splitter.on{background:rgba(244,101,48,.25)}
.fx{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.04em;border-radius:4px;padding:2px 5px;background:var(--line2);color:var(--ink2);vertical-align:1px;line-height:1.2}.fx-pdf{background:#fbe3e0;color:#9c3f3f}.fx-img{background:#e2f2e8;color:#1e8a5a}.fx-dwg,.fx-dxf,.fx-ifc,.fx-rvt,.fx-skp,.fx-pln{background:#dfe6ee;color:#3f66a0}.fx-xls{background:#e2f2e8;color:#1e6f4a}
.fold{color:var(--ink);vertical-align:-2px;margin-right:6px}
.frow .fact{display:none;flex:none}.frow:hover .fact{display:inline-flex}
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;padding:12px 14px}
.dcard{border:1px solid var(--line2);border-radius:10px;overflow:hidden;cursor:pointer;background:#fff;user-select:none}.dcard:hover{box-shadow:0 2px 10px rgba(42,46,48,.10)}
.dcard .th{height:118px;background:#f2efe9;display:flex;align-items:center;justify-content:center;overflow:hidden}.dcard .th img{width:100%;height:100%;object-fit:cover;display:block}.dcard .th .fx{font-size:13px;padding:6px 10px}
.dcard .nm{padding:8px 10px 2px;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dcard .mt{padding:0 10px 9px;font-size:11px;color:var(--ink3);display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.v-aucun{display:none}.v-a_viser{background:#f9efdb;color:#96691e}.v-approuve{background:#e2f2e8;color:#1e8a5a}.v-refuse{background:#fbe3e0;color:#9c3f3f}.v-reserve{background:#fdebd3;color:#96691e}
.ver{display:inline-block;font-size:10.5px;font-weight:700;color:var(--ink3);border:1px solid var(--line);border-radius:6px;padding:0 5px;margin-left:6px;vertical-align:middle}
.ico{background:transparent;border:0;cursor:pointer;color:var(--ink3);font:inherit;font-size:13px;padding:2px 5px;border-radius:6px}
.ico:hover{background:var(--line2);color:var(--ink)}
.cell{display:inline-block;min-width:60px;padding:2px 6px;border-radius:6px;outline:none;cursor:text;border:1px solid transparent}.cell:hover{border-color:var(--line)}.cell:focus{border-color:var(--acc);background:#fff}.cell:empty:before{content:attr(data-ph);color:var(--ink3)}.dash2{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px;align-items:start}.dash2.nosd{grid-template-columns:1fr}.dashmain{min-width:0}.dashside{min-width:0;display:flex;flex-direction:column;gap:14px;position:sticky;top:62px}.dashside .card{margin:0}.dashside .hd{padding:12px 14px}@media(max-width:1200px){.dash2{grid-template-columns:1fr}.dashside{position:static;order:-1}}.fmgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;padding:4px 14px 14px}.fmcard{border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;background:#fff;display:flex;flex-direction:column;gap:3px;min-height:86px;position:relative}.fmcard:hover{border-color:var(--acc);box-shadow:0 2px 10px rgba(0,0,0,.05)}.fmcard .ic{font-size:20px;line-height:1;color:var(--ink2)}.fmcard b{font-size:13.5px}.fmcard small{color:var(--ink3);font-size:11.5px;line-height:1.35}.fmcard .rpb{margin-top:auto;padding-top:6px;font-size:12px;color:var(--acc);font-weight:600}body.nuit .fmcard{background:var(--card)}
.fmform{padding:4px 16px 16px;max-width:820px}.fmrow2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:600px){.fmrow2{grid-template-columns:1fr}}.fmform textarea{min-height:76px}.fmtbl th{padding:5px 8px}.fmphotos{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.fmph{width:150px;position:relative}.fmph img{width:150px;height:110px;object-fit:cover;border-radius:8px;display:block;cursor:zoom-in}.fmph input{margin-top:4px;font-size:11.5px;padding:4px 6px}.fmph .ico{position:absolute;top:4px;right:4px;background:rgba(255,255,255,.85);border-radius:50%}.fmadd{width:150px;height:110px;border:2px dashed var(--line);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;color:var(--ink2);text-transform:none;letter-spacing:0;font-size:12px;margin:0}.fmadd svg{width:24px;height:24px}
.fmtf{display:grid;grid-template-columns:22px 1fr 150px 1fr 28px 28px;gap:6px;align-items:center;margin-top:6px}.fmtf input,.fmtf select{margin:0}@media(max-width:700px){.fmtf{grid-template-columns:22px 1fr 1fr 28px 28px}.fmtf input:nth-of-type(2){grid-column:2/4}}.seg button.nc.on{background:#b0575f}
.l10live{display:grid;grid-template-columns:230px minmax(0,1fr);gap:14px;align-items:start}.l10side{margin:0;position:sticky;top:62px;padding:0 0 4px}.l10clock{padding:14px 12px 10px;border-bottom:1px solid var(--line2);text-align:center}.l10clock .big{font-size:34px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.l10clock .big.over{color:#9c3f3f}.l10clock .sub{font-size:11.5px;color:var(--ink3)}.l10step{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:13px;border-left:3px solid transparent}.l10step:hover{background:var(--line2)}.l10step.on{border-left-color:var(--acc);font-weight:700;background:var(--line2)}.l10step.done{color:var(--ink3)}.l10step .n{width:20px;height:20px;border-radius:50%;background:var(--line2);font-size:11px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex:none}.l10step.on .n{background:var(--acc);color:#fff}.l10step.done .n{background:#2e7d5b;color:#fff}.l10step .d{margin-left:auto;font-size:11px;color:var(--ink3)}
.l10tbl td{padding:6px 8px;border-bottom:1px solid var(--line2);vertical-align:middle;font-size:13px}.l10tbl th.cur,.l10tbl td.cur{background:#fbf7f0}.l10tbl tr.top td{background:#fff7f2}.l10tbl tr.done td{opacity:.65}.l10tbl tr.off td{opacity:.5}.l10ok .cell{background:#e2f2e8;color:#1e6f48;font-weight:700}.l10ko .cell{background:#fbe3e0;color:#9c3f3f;font-weight:700}.l10late{color:#9c3f3f}.tkst-red,.inline.pill.tkst-red{background:#b0575f;color:#fff;border-color:#b0575f}
@media(max-width:900px){.l10live{grid-template-columns:1fr}.l10side{position:static}.l10two{grid-template-columns:1fr!important}}.l10two2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px}@media(max-width:900px){.l10two2{grid-template-columns:1fr}}
table tr.lotgrp.fee td{background:#eef2f6!important}table tr.lotgrp.sub td{background:#fff!important;font-style:italic;border-top:2px solid var(--line)}.colvis{font-size:10px;color:#96691e;cursor:help;margin-left:2px}
/* Monter et descendre une ligne de compte rendu. Les flèches ne se montrent
   qu'au survol : une colonne de numéros doit d'abord se lire. Au doigt, il n'y
   a pas de survol, elles restent donc visibles. */
td .mtmv{display:inline-flex;flex-direction:column;vertical-align:middle;margin-right:5px;opacity:0;transition:opacity .12s}
tr:hover .mtmv,.mtmv:focus-within{opacity:1}
td .mtmv .ico{width:15px;height:11px;min-width:0;padding:0;margin:0;font-size:8px;line-height:11px;border:0;background:none;color:var(--ink3)}
td .mtmv .ico:hover{color:var(--ink);background:none}
@media(hover:none){td .mtmv{opacity:.55}}.tkph,.tksc{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:6px;padding:1px 6px;margin-right:5px;vertical-align:middle;line-height:1.5}.tkph{background:#e9e3f7;color:#4b3a8a}.tksc{background:#e2f2e8;color:#1e6f48}.tkcat{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:6px;padding:1px 6px;margin-right:5px;vertical-align:middle;line-height:1.5;background:#fbe9d6;color:#8a4a12}/* Contacts : les entreprises se suivaient sans rupture visible, avec un titre gris
   de la taille du texte. Chaque entreprise ouvre maintenant sur une bande pleine
   largeur, et seul le premier tableau garde sa ligne d'en-têtes. */
.xcband{margin:0;padding:11px 16px 9px;background:var(--wash);border-top:1px solid var(--line);border-bottom:1px solid var(--line2);font-weight:700;font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.hd+.xcband{border-top:0}
.xcband .n{color:var(--ink3);font-weight:500;letter-spacing:0;margin-left:6px;font-size:12px}
/* la hiérarchie : la société en bandeau, ses personnes en retrait dessous */
.xctbl th:first-child,.xctbl td:first-child{padding-left:34px}.xctbl td:first-child b{font-weight:600}
@media(max-width:700px){.xctbl.su-mt{margin-left:14px}.xcband{font-size:13px}}
@media(min-width:701px){tr.xchd2{display:none}}
.tkchips{display:flex;gap:6px 7px;align-items:center;flex-wrap:wrap;padding:7px 16px;font-size:12px;border-bottom:1px solid var(--line2)}.tkchips>.seg{margin-right:6px}.tkchips .lab{margin-left:3px}.tkchips .lab{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);margin-left:6px}.tkchips .chip{cursor:pointer;border:1px solid transparent;opacity:.7}.tkchips .chip.on,.tkchips .chip:hover{opacity:1;border-color:currentColor}.tkchips .chip.who{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:11.5px;color:var(--ink2);background:#fff}.tkchips .chip.who i{width:8px;height:8px;border-radius:50%;display:inline-block}
.tkstar{cursor:pointer;color:#c9c4b8;margin-right:5px;font-size:14px;vertical-align:middle}.tkstar.on{color:#e0a030}.tkstar:hover{color:#e0a030}.tkvis{display:inline-block;font-size:10px;color:var(--ink3);margin-left:6px;cursor:pointer;border-radius:999px;padding:0 6px;border:1px solid transparent}.tkvis:hover{border-color:var(--line)}.tkvis.pub{color:#1e6f48}.tkvis.ent{color:var(--ink2)}
tr.declate td,.tkcard.declate,.tkc.declate{background:#fdf6ee!important;box-shadow:inset 3px 0 0 #e0a030}.tkquick{margin-top:6px}.tkquick input{font-size:12px;padding:6px 8px;border:1px dashed var(--line);background:transparent}.tkquick input:focus{background:#fff;border-style:solid}
/* La languette de repli est la même que celle de la barre latérale, prise dans
   le bord du panneau : deux gestes identiques, deux dessins identiques. */
.tkside{position:relative}
button.sidefold.tkfold{
  position:absolute;left:-14px;top:14px;z-index:2;
  border:1px solid var(--line);border-right:0;border-radius:7px 0 0 7px;
  background:var(--sel);color:var(--acc);font-size:11px;font-weight:700;line-height:1;cursor:pointer;padding:0}
button.sidefold.tkfold:hover{color:var(--acc);background:var(--sel);filter:brightness(.94)}
.tkgrid.noside{grid-template-columns:minmax(0,1fr) 30px}.tkgrid.narrow{grid-template-columns:minmax(0,1fr);position:relative}.tkgrid.narrow.noside .tkside-open{position:absolute;right:-8px;top:8px}.tkgrid.narrow .tkside{max-width:520px}.tkside-open{align-self:start;position:sticky;top:70px;width:30px;height:auto;padding:12px 0;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer;color:var(--ink2);font:inherit;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.06)}.tkside-open span{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;letter-spacing:.04em}.tkside-open:hover{color:var(--ink);border-color:var(--ink3)}
.gantt svg.deps path{fill:none;stroke:#b8bcc0;stroke-width:1.3;stroke-dasharray:3 3;opacity:.8}.gantt svg.deps circle{fill:#b8bcc0}.gantt svg.deps path.late,.gantt svg.deps circle.late{stroke:#c0392b;fill:#c0392b}.gantt.chain .bar:not(.inchain),.gantt.chain .ms:not(.inchain){opacity:.35}.gantt .bar.inchain,.gantt .ms.inchain{outline:2px solid #e0a030;outline-offset:2px}.gantt svg.deps path.on{stroke:#e0a030;stroke-width:2.2;stroke-dasharray:none;opacity:1}.gantt svg.deps circle.on{fill:#e0a030}
.tag.lead{background:#dde8f5;color:#2f4f7a}.tag.lead.soon{background:#f6edd9;color:#96691e}.tag.lead.late{background:#fbe3e0;color:#9c3f3f}.tag.lead.ok{background:#e2f2e8;color:#1e6f48}
.fmsign{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:4px}.fmsign img{height:70px;border:1px solid var(--line);border-radius:8px;background:#fff}#docov{display:none;position:fixed;inset:0;z-index:400;background:#fff;flex-direction:column}#docov.on{display:flex}.docov-bar{display:flex;gap:8px;align-items:center;padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));border-bottom:1px solid var(--line);background:var(--bg,#faf8f5)}.docovlg{display:inline-flex;gap:0;border:1px solid var(--line);border-radius:999px;overflow:hidden}.docovlg .btn{border:0;border-radius:0;padding:5px 11px;font-size:11px;font-weight:700;letter-spacing:.05em;background:transparent}.docovlg .btn.on{background:var(--acc);color:#fff}#docov-f{flex:1;border:0;width:100%;background:#fff}@media(max-width:600px){.docov-bar{flex-wrap:wrap;row-gap:6px}.docov-bar .btn{white-space:nowrap}.docov-bar .docov-tab{display:none}}#upd{display:none;position:fixed;left:50%;bottom:74px;transform:translateX(-50%);z-index:260;background:#2a2e30;color:#fff;padding:10px 16px;border-radius:999px;font-size:13px;box-shadow:0 6px 24px rgba(0,0,0,.25);gap:12px;align-items:center;white-space:nowrap}#upd.on{display:flex}#upd b{color:#ffd9cc}#upd button{background:var(--acc);color:#fff;border:0;border-radius:999px;padding:6px 12px;font-weight:700;cursor:pointer}
.gwrap{overflow-x:auto}
.crgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,26%);gap:14px;align-items:start}
/* une réunion par ligne : son compte rendu à gauche, l'ordre du jour de la suivante à droite */
.mtpair{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);border-top:1px solid var(--line2)}
.mtpair.solo{grid-template-columns:1fr}
.mtlist>.mtpair:first-child{border-top:0}
.mtpair>.mtrow{border-top:0}
.mtpair.mthd{border-top:0;border-bottom:1px solid var(--line2);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink3);padding:8px 0 6px}
.mtpair.mthd>span{padding:0 16px}
.tksub{display:flex;align-items:center;gap:8px;padding:6px 8px;border-bottom:1px solid var(--line2);font-size:13px}
.tksub .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tksub small{color:var(--ink3);font-size:11px;white-space:nowrap}
.tksubadd{display:flex;gap:6px;align-items:center;margin-top:8px;flex-wrap:wrap}
/* la fiche de tâche sur téléphone : les libellés-boutons gardent leur casse, la note ne prend pas
   l'écran, la sous-tâche se saisit en deux lignes, la réponse a ses trois boutons sous le champ,
   et les actions du bas en deux rangées : Supprimer et Ticket à gauche, Annuler puis Enregistrer pleine largeur */
.modal label.btn{text-transform:none;letter-spacing:0;font-size:inherit}
@media(max-width:700px){
 .modal #tk2_notes{min-height:110px!important}
 .tkfiles label.btn{flex:1 1 auto;text-align:center}
 .tksubadd{display:grid;grid-template-columns:1fr 1fr;gap:6px}
 .tksubadd #tk2_sub_t{grid-column:1/-1}.tksubadd #tk2_sub_as,.tksubadd #tk2_sub_due{min-width:0;width:100%}.tksubadd .btn{grid-column:1/-1}
 .tkreply{flex-wrap:wrap}.tkreply #tk2_msg{flex:1 1 100%!important;width:100%}.tkreply .tkreplyb{flex-direction:row!important;flex:1 1 auto}.tkreply .tkreplyb .btn,.tkreply .tkreplyb label.btn{min-width:42px;justify-content:center}.tkreply>.btn{margin-left:auto}
 .modal .mact{gap:6px}.modal .mact .btn{flex:1 1 auto;min-width:0;padding-left:8px;padding-right:8px}.modal .mact .btn.pri{flex:1 1 100%;order:9}
}
.tksubadd input[type=text],.tksubadd input:not([type]){flex:1 1 180px;min-width:0}
.tksubadd select{max-width:170px}.tksubadd input[type=date]{width:auto}
.mtodj{display:flex;align-items:center;gap:10px;padding:10px 16px;border-left:1px solid var(--line2);cursor:pointer;min-width:0}
.mtodj:hover{background:var(--hov,rgba(0,0,0,.03))}
.mtodj.vide{cursor:default}.mtodj.vide:hover{background:none}
.mtodj .mtt{flex:1;min-width:0;display:flex;flex-direction:column}
.mtodj .mtt b{font-size:13px}.mtodj .mtt small{font-size:11.5px;color:var(--ink3)}
.mtodj .mtlink{font-size:11.5px;color:var(--acc);white-space:nowrap}
@media(max-width:700px){.mtpair{grid-template-columns:1fr}.mtodj{border-left:0;border-top:1px dashed var(--line2);padding-left:74px}.mtodj.vide:empty{display:none}.mtpair.mthd{display:none}}
/* l'éditeur d'ordre du jour */
.brf-ul{margin:0;padding-left:18px;font-size:13px}
.brf-pt{margin:2px 0}.brf-pt .brf-tx{outline:none;border-radius:4px;padding:1px 3px}
.brf-pt .brf-tx:focus{background:var(--hov,rgba(0,0,0,.04))}
.brf-pt .brf-tx:empty:before{content:attr(data-ph);color:var(--ink3)}
.brf-pt .brf-x{visibility:hidden;margin-left:4px;font-size:12px}.brf-pt:hover .brf-x{visibility:visible}
.brf-plus{border:0;background:none;color:var(--acc);font:inherit;font-size:12px;cursor:pointer;padding:2px 0 2px 18px}
.brf-sec{margin:8px 0 4px;font-size:13px}
.mtlist{display:flex;flex-direction:column}
.mtrow{display:flex;align-items:center;gap:12px;padding:10px 16px;border-top:1px solid var(--line2);cursor:pointer}
.mtrow:first-child{border-top:0}.mtrow:hover{background:var(--hov,rgba(0,0,0,.03))}
.mtrow .mtd{flex:0 0 46px;font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums}
.mtrow .mtt{flex:1;min-width:0;display:flex;flex-direction:column}
.mtrow .mtt b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtrow .mtt small{font-size:11.5px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtrow .mto{flex:0 0 auto;min-width:26px;text-align:center;font-size:11.5px;font-weight:700;color:#8a5a14;background:#f6ecd9;border-radius:999px;padding:2px 7px}
.mtrow .mto.nul{background:transparent;color:#1e6f48}
/* les lignes proposées depuis un CR reçu : une carte par ligne */
.modal.mtxmod{max-width:min(920px,96vw);width:min(920px,96vw)}
.mtxliste{max-height:56vh;overflow:auto;border-top:1px solid var(--line2)}
.mtxl{display:flex;gap:12px;align-items:flex-start;padding:12px 2px;border-bottom:1px solid var(--line2)}
.mtxl>input[type=checkbox]{width:auto;margin-top:9px;flex:0 0 auto}
.mtxl.off .mtxc{opacity:.4}
.mtxc{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.mtxc textarea{width:100%;resize:none;overflow:hidden;min-height:34px;padding:6px 10px;font:inherit;font-size:13px;line-height:1.45}
.mtxc textarea.mtxj{font-weight:600}
.mtxtk{align-self:flex-start;font-size:11px;font-weight:600;color:#1e6f48;background:#e3f1e8;border-radius:999px;padding:1px 8px}
.mtxm{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,.8fr);gap:8px}
.mtxm label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink3);margin:0}
.mtxm select,.mtxm input{width:100%;min-width:0;padding:5px 8px;font-size:12.5px;text-transform:none;letter-spacing:0}
@media(max-width:600px){.mtxm{grid-template-columns:1fr 1fr}.mtxm label:first-child{grid-column:1/-1}}
.mtrow .mtk{flex:0 0 58px;display:flex;flex-direction:column;align-items:center;line-height:1.2}
.mtrow .mtk b{font-size:12.5px;font-weight:600;color:var(--ink2);font-variant-numeric:tabular-nums}
.mtrow .mtk small{font-size:10px;color:var(--ink3);letter-spacing:.02em}
@media(max-width:480px){.mtrow .mtk{display:none}}
.mtrow .mtlink{flex:0 0 auto;font-size:11.5px;color:var(--acc);white-space:nowrap}.mtrow .mtlink.nul{color:var(--ink3)}
.mtrow .mta{flex:0 0 auto;display:flex;gap:4px;align-items:center}
@media(max-width:1100px){.crgrid{grid-template-columns:1fr}}
.crx{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border-radius:9px;border-bottom:1px solid var(--line2)}
.crx:last-child{border-bottom:0}
.crx:hover{background:var(--line2)}
.crx a{flex:1;min-width:0;text-decoration:none;color:inherit}
.crx b{display:block;font-size:13px;font-weight:600;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}
.crx small{display:block;color:var(--ink3);font-size:11.5px;margin-top:2px}
.crx .ic{flex:none;width:26px;height:26px;border-radius:6px;background:var(--line2);color:var(--ink3);font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;letter-spacing:.02em;margin-top:1px}
.fdz{display:block;border:1.5px dashed var(--line);border-radius:12px;padding:16px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;text-transform:none;letter-spacing:normal;font-size:13px;color:var(--ink);margin:0}
.fdz b{display:block;font-size:13px;font-weight:600;text-transform:none;letter-spacing:normal}.fdz small{display:block;color:var(--ink3);font-size:11.5px;margin-top:2px;text-transform:none;letter-spacing:normal}
.fdz:hover{border-color:var(--ink3)}.fdz.on{border-color:var(--acc);background:#fff6f2}body.nuit .fdz.on{background:#3a2a22}
.gantt{display:grid;grid-template-columns:var(--pgw,230px) 1fr;min-width:680px;position:relative}
.gantt .gsp{position:absolute;top:0;bottom:0;left:calc(var(--pgw,230px) - 4px + var(--gspx,0px));width:8px;cursor:col-resize;z-index:4}.gantt .gsp::after{content:"";position:absolute;left:2px;top:0;bottom:0;width:4px;background:transparent;transition:background .15s}.gantt .gsp:hover::after,.gantt .gsp.on::after{background:var(--acc,#f46530)}
.gantt .gl{padding:5px 12px 5px 12px;border-bottom:1px solid var(--line2);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;display:flex;flex-direction:column;justify-content:center;min-height:40px;box-sizing:border-box}
.gantt .gl,.gantt .gh{position:sticky;left:0;z-index:3;background:var(--card);border-right:1.5px solid #b8b3aa}
.gantt .gh{z-index:5}.gantt .gl.pgph{background:color-mix(in srgb,#2a2e30 2.2%,var(--card))}
body.nuit .gantt .gl,body.nuit .gantt .gh{background:var(--card)}body.nuit .gantt .gl.pgph{background:color-mix(in srgb,#fff 4%,var(--card))}
@media print{.gantt .gl,.gantt .gh{position:static}}
.gantt .gl,.gantt .gh{border-right:1.5px solid #b8b3aa}body.nuit .gantt .gl,body.nuit .gantt .gh{border-right-color:#5b6166}.gantt .gl{padding-right:30px}.gantt .gl b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;line-height:1.25}.gantt .gl small{display:block;color:var(--ink3);font-size:10.5px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.gantt .gl,.gantt .gh{position:sticky;left:0;z-index:3}.gantt .gh{z-index:5}
.gantt .gl .lockb{opacity:0;transition:opacity .15s;position:absolute;right:8px;top:50%;transform:translateY(-50%);float:none;margin:0}.gantt .gl:hover .lockb,.gantt .gl .lockb.on{opacity:1}
.gantt .gl.pgph b{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}.gantt .gl.pgph,.gantt .gr.pgph{background:rgba(42,46,48,.022)}
.gantt .gr{position:relative;border-bottom:1px solid var(--line2);min-height:40px;cursor:grab;touch-action:pan-y;overflow:hidden}.gantt .ghr{overflow:hidden}
.gantt .gh{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink3);font-weight:600;padding:8px 12px;border-bottom:1px solid var(--line2);display:flex;align-items:center}
.gantt .ghr{position:relative;border-bottom:1px solid var(--line2);height:40px;background:rgba(42,46,48,.025)}
.gantt .col{position:absolute;top:0;bottom:0;border-left:1px solid var(--line2)}
.gantt .col span{position:absolute;top:6px;left:4px;font-size:10.5px;color:var(--ink2);font-weight:600;white-space:nowrap;text-transform:capitalize;z-index:1;padding:0 3px;background:var(--card);border-radius:3px}
.gantt .col.we{background:rgba(42,46,48,.03)}.gantt .wk{position:absolute;top:0;bottom:0;border-left:1px dashed rgba(42,46,48,.07)}
.gantt .bar{position:absolute;top:11px;height:18px;border-radius:9px;background:color-mix(in srgb,var(--c,#4c6a8a) 22%,#fff);overflow:hidden;cursor:pointer;margin:0;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c,#4c6a8a) 30%,transparent)}
.gantt .bar i{display:block;height:100%;background:var(--c,#4c6a8a);border-radius:9px}
.gantt .bar.late{--c:#c0392b}.gantt .bar.done{--c:#1e8a5a}
.gantt .bar b{position:absolute;right:8px;top:0;line-height:18px;font-size:10px;font-weight:700;color:var(--c,#4c6a8a);white-space:nowrap;letter-spacing:.02em}.gantt .bar.full b{color:#fff;left:8px;right:auto}
.gantt .bar .h{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize}.gantt .bar .h.l{left:0}.gantt .bar .h.r{right:0}
.gantt .gl{position:relative}.gantt .gl .addb{display:none;position:absolute;right:32px;top:50%;transform:translateY(-50%);width:20px;height:20px;border-radius:6px;border:1px solid var(--line);background:var(--card);color:var(--ink2);font-size:14px;line-height:1;cursor:pointer;align-items:center;justify-content:center;padding:0}.gantt .gl:hover .addb{display:inline-flex}
.gantt .bar .h.p{left:clamp(4px,calc(var(--p) - 6px),calc(100% - 24px));width:12px;cursor:col-resize;z-index:2}.gantt .bar.done .h.p{display:none}.gantt .bar .h.p::after{content:"";position:absolute;left:5px;top:3px;bottom:3px;width:2px;border-radius:1px;background:rgba(255,255,255,.85);opacity:0;transition:opacity .15s}.gantt .bar:hover .h.p::after{opacity:1}
.gantt .bar.pgph{top:18px;height:4px;border-radius:2px;background:var(--c,#8d918f);opacity:.7;box-shadow:none;overflow:visible}.gantt .bar.pgph i{background:transparent}.gantt .bar.pgph b{display:none}.gantt .bar.pgph::before,.gantt .bar.pgph::after{content:"";position:absolute;top:-3px;width:2px;height:10px;background:var(--c,#8d918f);border-radius:1px}.gantt .bar.pgph::before{left:0}.gantt .bar.pgph::after{right:0}
.gantt .ms{position:absolute;top:9px;height:22px;transform:translateX(-50%);display:flex;align-items:center;cursor:pointer;z-index:1}.gantt .ms i{display:block;width:11px;height:11px;background:#2a2e30;transform:rotate(45deg);border-radius:2px;flex:none}.gantt .ms.done i{background:#1e8a5a}.gantt .ms.late i{background:#c0392b}
.gantt .ms span{font-size:11px;color:var(--ink2);white-space:nowrap;position:absolute;left:18px;top:3px}.gantt .ms.flip span{left:auto;right:18px}.gantt .ms.late span{color:#c0392b}
.gantt .ovl{position:absolute;top:6px;height:28px;border-radius:14px;pointer-events:none;
 background:repeating-linear-gradient(45deg,rgba(107,122,148,.34) 0 5px,rgba(107,122,148,.10) 5px 10px);
 box-shadow:inset 0 0 0 1.5px rgba(107,122,148,.6)}
body.nuit .gantt .ovl{background:repeating-linear-gradient(45deg,rgba(150,170,200,.40) 0 5px,rgba(150,170,200,.12) 5px 10px);box-shadow:inset 0 0 0 1.5px rgba(150,170,200,.65)}
.gantt .ovlms{position:absolute;top:11px;width:15px;height:15px;transform:translateX(-50%) rotate(45deg);border-radius:2px;pointer-events:none;
 background:repeating-linear-gradient(45deg,rgba(107,122,148,.34) 0 4px,rgba(107,122,148,.10) 4px 8px);box-shadow:inset 0 0 0 1.5px rgba(107,122,148,.6)}
.gantt .base{position:absolute;top:31px;height:3px;border-radius:2px;background:#b8b3aa;opacity:.9}
.gantt .today{position:absolute;top:0;bottom:0;width:0;border-left:1.5px solid var(--acc);z-index:2;pointer-events:none;opacity:.85}.gantt .ghr .today::after{content:"aujourd'hui";position:absolute;bottom:3px;left:4px;font-size:9.5px;color:#fff;background:var(--acc);padding:1px 6px;border-radius:99px;white-space:nowrap}
.gantt .tag{display:inline-block;font-size:9.5px;font-weight:700;padding:0 5px;border-radius:99px;margin-left:4px;vertical-align:1px}.gantt .tag.late{background:#fbe3e0;color:#9c3f3f}.gantt .tag.risk{background:#fdf0dc;color:#b06a0f}
.charts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:150px;grid-auto-flow:dense;gap:14px;align-items:stretch}
/* la page « Mes projets » utilise la même grille déplaçable que le tableau de bord d'un projet,
   avec sa propre disposition enregistrée : les blocs se déplacent et se redimensionnent pareil. */
.homegrid .card .bd{padding:10px 12px 10px}
.homegrid .hlist{padding:0}

.charts .card{grid-column:span var(--c,2);grid-row:span var(--r,2);overflow:auto;position:relative;display:flex;flex-direction:column;min-height:0}.charts .card>.bd{flex:1;min-height:0}
.charts .card{scrollbar-width:thin;scrollbar-color:#d9d4cb transparent}.charts .card::-webkit-scrollbar{width:8px;height:8px}.charts .card::-webkit-scrollbar-thumb{background:#d9d4cb;border-radius:8px;border:2px solid #fff}.charts .card::-webkit-scrollbar-track{background:transparent}
.charts .dashrs{position:absolute;right:2px;bottom:2px;width:16px;height:16px;cursor:nwse-resize;color:var(--ink3);font-size:12px;line-height:16px;text-align:center;user-select:none;opacity:.5}.charts .card:hover .dashrs{opacity:1}.charts .card.rsz{outline:2px dashed var(--acc);outline-offset:-3px}
@media(max-width:1100px){.charts{grid-template-columns:repeat(2,minmax(0,1fr))}.charts .card{grid-column:span min(var(--c,2),2)}}@media(max-width:640px){.charts{grid-template-columns:1fr}.charts .card{grid-column:1/-1}}
.charts .card{margin:0}.charts .dashhd{flex-wrap:nowrap;align-items:flex-start;padding-right:8px}.charts .dashx{flex:none;margin-top:-2px}
/* Un SVG à viewBox de 560 posé dans une carte de 900 se voit agrandi de moitié :
   le texte de 11 px s'affiche à 17, les barres épaississent, et tout paraît
   grossier. Un graphique ne dépasse donc jamais sa taille naturelle. */
.charts svg{width:100%;max-width:560px;height:auto;display:block}
.charts svg.chd{max-width:320px}
/* avancement par tâche : une liste lisible qui défile dans sa carte */
.pgl{display:flex;flex-direction:column;gap:7px;padding:2px 2px 10px}
.pgr{display:grid;grid-template-columns:minmax(110px,38%) 1fr 42px;gap:10px;align-items:center;font-size:12.5px;line-height:1.3}
.pgn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2)}
.pgr.late .pgn{color:#c0392b}
.pgb{position:relative;height:11px;background:var(--line2,#f2efe9);border-radius:6px}
.pgb i{position:absolute;left:0;top:0;bottom:0;border-radius:6px;min-width:2px}
.pgb em{position:absolute;top:-3px;bottom:-3px;width:0;border-left:2px dashed #f46530;margin-left:-1px}
.pgp{text-align:right;color:var(--ink3);font-variant-numeric:tabular-nums;font-size:12px}
.charts svg.chw{max-width:640px}
/* Un graphique plus court que sa carte flottait en haut, avec un grand vide
   dessous. Il se centre. Les cartes qui portent une liste gardent leur flux
   normal : la règle ne vise que celles dont le corps est un graphique. */
.charts .bd:has(>svg),.charts .bd:has(>.statile){display:flex;flex-direction:column;justify-content:center}
/* Un seul statut : le nombre est le graphique. */
.charts .statile{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:4px 2px 10px}
.charts .statile b{font-size:36px;font-weight:800;line-height:1.05;letter-spacing:-.02em}
.charts .statile span{font-size:13.5px;font-weight:600;color:var(--ink)}
.charts .statile i{font-size:11.5px;color:var(--ink3);font-style:normal}
.chart-legend{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--ink2);padding:0 16px 12px}
.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}

/* ---- thème Nuit ---- */
body.ro .btn.pri,body.ro .ico,body.ro .cell[contenteditable]{pointer-events:none;opacity:.45}
body.va .btn.pri,body.va .ico,body.va .cell[contenteditable]{pointer-events:none;opacity:1}
body.va .cell[contenteditable]{cursor:default}body.ro .bar .h{display:none}
body.nuit{--bg:#131615;--card:#1B1F1E;--ink:#EDE9E3;--ink2:#A6AFAC;--ink3:#767F7C;--line:#2E3432;--line2:#252A29;--acc:#7FB3BC;--annb:#3a3f44;--hov:#262b2a}
/* la nuit dans les styles clairs (Studio, Épuré) : l'en-tête suit, sinon il restait blanc avec du texte blanc */
body.nuit.t-epure header,body.nuit.t-epure .top,body.nuit.t-epure header.top,body.nuit.t-epure .topbar{background:rgba(27,31,30,.9);color:var(--ink);border-bottom-color:var(--line)}
body.nuit.t-epure header button,body.nuit.t-epure header select,body.nuit.t-epure header .bell,body.nuit.t-epure header .helpq,body.nuit.t-epure header .pjbtn,body.nuit.t-epure .top .btn,body.nuit.t-epure .top select,body.nuit.t-epure .top .avbtn{color:var(--ink);border-color:var(--line);background:transparent}
body.nuit.t-epure header button:hover,body.nuit.t-epure header .bell:hover,body.nuit.t-epure header select:hover{background:var(--hov)}
body.nuit header .wordmark,body.nuit header .wm,body.nuit header .su-mark{color:var(--ink)}
body.nuit .card{background:var(--card);color:var(--ink);border-color:var(--line)}
body.nuit .hint{background:#22272a;border-color:var(--line);color:var(--ink2)}
body.nuit input,body.nuit select,body.nuit textarea{background:#1f2326;color:var(--ink);border-color:var(--line)}
body.nuit .btn,body.nuit .seg,body.nuit .tabs button,body.nuit .modal,body.nuit .kpi,body.nuit .dcard,body.nuit .cell:focus{background:var(--card);color:var(--ink)}
body.nuit .btn.on,body.nuit .seg button.on,body.nuit .tabs button.on{background:#ece8e0;color:#1c1f22;border-color:#ece8e0}
body.nuit .btn.pri{background:var(--acc);color:#fff;border-color:var(--acc)}
body.nuit .seg button{color:var(--ink2)}
body.nuit nav.side{background:#202428;border-color:var(--line2)}body.nuit nav.side>a.on{background:#ece8e0;color:#1c1f22}
body.nuit .msg{background:#2b3034;border-color:var(--line2)}body.nuit .vwr{background:#2a2e32}
body.nuit .gantt .col.we{background:rgba(255,255,255,.03)}body.nuit .gantt .bar{background:color-mix(in srgb,var(--c,#4c6a8a) 35%,#1c1f22)}body.nuit .gantt .bar b{color:#fff}body.nuit .gantt .bar.pgph,body.nuit .gantt .bar.pgph i,body.nuit .gantt .bar.pgph::before,body.nuit .gantt .bar.pgph::after{background:#e6e3dc}body.nuit .gantt .ms i{background:#e6e3dc}body.nuit .gantt .gl.pgph,body.nuit .gantt .gr.pgph{background:rgba(255,255,255,.04)}body.nuit .gantt .ghr{background:rgba(255,255,255,.03)}
body.nuit .st-ouvert{background:#4a2723;color:#f2a49a}body.nuit .st-traite{background:#4a3a1c;color:#f0c06a}body.nuit .st-valide{background:#1f3d2d;color:#7fd3a5}
body.nuit .v-a_viser{background:#4a3a1c;color:#f0c06a}body.nuit .v-approuve{background:#1f3d2d;color:#7fd3a5}body.nuit .v-refuse{background:#4a2723;color:#f2a49a}body.nuit .v-reserve{background:#3b2e19;color:#dcab5e}
body.nuit .fx{background:#3a3f44;color:#d8d3c9}body.nuit .fx-pdf{background:#4a2723;color:#f2a49a}body.nuit .fx-img{background:#1f3d2d;color:#7fd3a5}
body.nuit .ver{border-color:var(--line);color:var(--ink3)}body.nuit .dcard .th{background:#1f2326}body.nuit .chsum{color:var(--ink2)}
body.nuit .kpis .kpi[style*="border:1px solid #3f66a0"]{border-color:#6f93c9!important}
body.nuit .dgrid .dcard,body.nuit table{color:var(--ink)}body.nuit .empty{color:var(--ink3)}body.nuit .who{color:var(--ink3)}
body.nuit .toast{background:#ece8e0;color:#1c1f22}
body.nuit svg text{fill:#c8c3b9}body.nuit svg line{stroke:#3b4045}
@keyframes mshake{0%,100%{transform:translateX(0)}25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
/* colonne des tâches figée pendant le défilement horizontal du diagramme (règle finale : elle doit gagner) */
.gantt .gl,.gantt .gh{position:sticky;left:0;z-index:3;background:var(--card)}
.gantt .gh{z-index:5}
.gantt .gl.pgph{background:color-mix(in srgb,#2a2e30 2.2%,var(--card))}
body.nuit .gantt .gl,body.nuit .gantt .gh{background:var(--card)}
body.nuit .gantt .gl.pgph{background:color-mix(in srgb,#fff 4%,var(--card))}
@media print{.gantt .gl,.gantt .gh{position:static}}
@media print{.kpirow{grid-auto-flow:row!important;grid-template-columns:repeat(5,1fr)!important;overflow:visible!important}.kpirow .kpi{grid-template-rows:auto auto auto!important}.gantt{width:100%!important}.gsp,.lockb{display:none!important}html,body,main,.wrap,.kpi,.kpis,.card,.chsum,.side{background:#fff!important;color:#111!important}body{background:#fff!important}header,nav.side,.tabs,.btn,.seg,.who,select,.bell,.modal-bg,.toast{display:none!important}main{max-width:none;padding:0;margin:0}.card,.kpi{box-shadow:none;border:1px solid #ddd;break-inside:avoid}}
html,body{max-width:100%;overflow-x:clip}/* clip, pas hidden : hidden faisait de body le conteneur de défilement et l'en-tête sticky ne tenait plus */
@media(max-width:700px){header{flex-wrap:wrap;gap:8px;padding:9px 12px}header .wm{min-width:0;overflow:hidden}header .wm>span:last-child small{display:none}#brandslot b{display:none}#brandslot>span{display:none}
 #fbbtn,#outbtn{display:none!important}
 /* Le meme en-tete partout : le titre a gauche, le reste a droite, le menu en dernier.
    Ce qui ne tient pas sur la ligne passe dessous. */
 header .wm{order:1;flex:0 1 auto}
 header .spacer{display:block;flex:1 1 auto;order:2;margin:0}
 .pjbox{order:3;flex:0 1 auto;display:block;max-width:44vw}.pjbtn{width:100%;max-width:none;box-sizing:border-box}.pjmenu{right:0;left:auto;max-width:86vw;width:auto}
 /* Sur un téléphone, le logo de l'agence prenait la barre et le nom du projet finissait en pastille
    d'une lettre, le compte hors de l'écran. Le logo s'efface (il vit sur la page d'accueil), le nom
    du projet prend la place libre, les commandes gardent une taille de pouce et tiennent toutes. */
 body header{gap:5px;padding:8px 8px;flex-wrap:nowrap;position:sticky;top:0;z-index:30}
 body header #brandslot{display:none!important}
 body header .wm{flex:0 0 auto;gap:0}
 body header .spacer{display:none}
 body header .pjbox{flex:1 1 auto!important;min-width:60px;max-width:none!important}
 body header .pjbtn{max-width:100%!important;width:100%;padding:6px 10px;font-size:13.5px}
 body header>button,body header .menuwrap>button,body header .bell,body header .helpq,body header .su-bell,body header .su-chat,body header .avbtn{width:38px!important;height:38px!important;min-width:38px!important;padding:0!important;flex:none}
 body header .menuwrap,body header #appwrap{flex:none}
 header select#thbtn{display:none!important}
 header .menuwrap{order:8;margin:0}
 header #appwrap{order:9}
 header .hbrk{display:block;order:19;flex:0 0 100%;height:0;margin:0}
 #searchbtn{order:20;margin-left:0}#bellbtn{order:21;margin-left:0}#helpbtn{order:22}
 #langbtn{order:23;display:inline-block!important}#nightbtn{order:24;display:inline-block!important}
 header .hbrk~button{margin-top:0}
 main{padding:8px}.bd{padding:11px}.grid2{grid-template-columns:1fr}.vwr{height:64vh}.docgrid{grid-template-columns:1fr}.docgrid>div:first-child{border-right:0;border-bottom:1px solid var(--line2)}.gantt{grid-template-columns:150px 1fr}.tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{white-space:nowrap;flex:none}}
.leaflet-tile-pane .osm-soft{filter:grayscale(.8) saturate(.9) contrast(.92) brightness(1.04)}.leaflet-tile-pane .osm-night{filter:invert(1) hue-rotate(180deg) grayscale(.6) brightness(.85) contrast(.9)}
.leaflet-container{position:relative;z-index:0;isolation:isolate}
.tktbl .mmeta{display:none}.tktbl tr.done{opacity:.55}/* Sur un téléphone : les cinq filtres de statut sur une seule ligne qui défile
   (ils passaient à la ligne dans leur pastille), les filtres par phase,
   périmètre et personne derrière « Filtres », et plus de languette
   « Échéances » posée sur le bouton « + Tâche » : l'icône du calendrier suffit. */
.tkfiltbtn{display:none}.tkfilt{display:contents}
@media(max-width:700px){
 .tkchips>.seg{flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:none;border-radius:999px}
 .tkchips>.seg::-webkit-scrollbar{display:none}
 .tkchips>.seg>button{flex:0 0 auto;white-space:nowrap}
 .tkfiltbtn{display:inline-flex}.tkfiltbtn.on{border-color:var(--acc);color:var(--acc)}
 .tkfilt{display:none}
 .tkchips.filtouv .tkfilt{display:flex;flex-wrap:wrap;gap:6px 7px;align-items:center;flex:1 0 100%}
 .tkgrid .tkside-open,.tkgrid.narrow .tkside{display:none}
 /* La liste elle-même, comme au Hub : une fiche par tâche, le titre en entier
    sur sa ligne, le statut dessous. Le tableau de bureau, réduit, gardait sa
    largeur de 960 px et serrait le titre dans une colonne de trois mots. */
 .tktbl{display:block;min-width:0 !important;table-layout:auto !important}
 .tktbl>tbody{display:block}
 .tktbl tr:has(>th){display:none !important}
 .tktbl tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 14px;border-bottom:1px solid var(--line2)}
 .tktbl td{display:block;width:auto !important;min-width:0 !important;padding:0 !important;border:0}
 .tktbl td:nth-child(1){display:none}
 .tktbl td:nth-child(3){order:1;flex:1 0 100%}
 .tktbl td:nth-child(2){order:2}
 .tktbl td[colspan]{display:block !important;flex:1 0 100%;order:0;padding:7px 14px !important}
 .tktbl tr:has(>td[colspan]){padding:0;border:0}
}
/* Préparer la réunion : une colonne, qui défile si la préparation est longue. */
.modal.mtprep{max-width:820px}
.mtprep-g{max-height:62vh;overflow:auto}

.seg.tkviews button{padding:5px 9px;line-height:0;display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:30px}
.btn.tkretard{color:#9c3f3f;border-color:#e6c9c9;background:#fbf1f1}
.draghandle{width:24px;cursor:grab;color:var(--ink3);user-select:none;text-align:center}.rowdrop td{border-top:2px solid #8a857e}.rowdrop.bas td{border-top:0;border-bottom:2px solid #8a857e}.mtgrip{display:inline-block;width:14px;text-align:center;cursor:grab;color:var(--ink3);opacity:.3;user-select:none;font-size:13px;line-height:1}tr:hover .mtgrip{opacity:1}.mtgrip:active{cursor:grabbing}.mtlg{display:inline-flex;gap:0;border:1px solid var(--line);border-radius:999px;overflow:hidden;vertical-align:middle}.mtlg button{border:0;border-radius:0;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:.05em;background:transparent;cursor:pointer;color:var(--ink2)}.mtlg button.on{background:var(--acc);color:#fff}.mtlg button[disabled]{opacity:.55;cursor:default}@keyframes mtsp{to{transform:rotate(360deg)}}.mtspin{display:inline-block;width:11px;height:11px;border-radius:50%;border:2px solid rgba(0,0,0,.15);border-top-color:var(--acc);animation:mtsp .7s linear infinite;vertical-align:-1px}
.inline{width:auto;padding:3px 6px;font-size:12px;border:1px solid transparent;background:transparent;font:inherit;border-radius:8px}.inline:hover{border-color:#b9b3a8;background:var(--card)}.inline.pill{border-radius:999px;padding:3px 10px;font-weight:600;display:inline-flex;align-items:center;line-height:1.2;vertical-align:middle}
.tkst-grey,.tktbl .inline.pill.tkst-grey{background:#f1eee8;color:#6b665e;border-color:#e2ddd3}.tkst-blue,.tktbl .inline.pill.tkst-blue{background:#3f66a0;color:#fff;border-color:#3f66a0}.tkst-green,.tktbl .inline.pill.tkst-green{background:#2e7d5b;color:#fff;border-color:#2e7d5b}.tkst-amber,.tktbl .inline.pill.tkst-amber{background:#f6edd9;color:#96691e;border-color:#ead9b4}.badge.tkst-amber{background:#f6edd9;color:#96691e}.tktbl tr.done td{opacity:.62}.tktbl tr.done .inline.pill{opacity:1}.prio1{color:#b0575f;font-weight:600;font-size:11px}
.tkkb{display:flex;gap:10px;padding:13px 16px;overflow-x:auto;align-items:flex-start}.tkcol{flex:1;min-width:190px;background:var(--line2);border:1px solid var(--line);border-radius:10px;padding:8px}.tkcol.kbdrop{outline:2px dashed #b8b2a8;outline-offset:-3px}.tkhd{display:flex;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);padding:2px 4px 8px}
.tkcard{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 9px;margin-bottom:6px;font-size:12.5px;cursor:grab}.tkcard:hover{border-color:#b9b3a8;box-shadow:0 3px 10px rgba(0,0,0,.06)}.tkcard .m{font-size:11px;color:var(--ink3);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tkcards{columns:270px 4;column-gap:12px;padding:14px 16px}.tkc{display:inline-block;width:100%;break-inside:avoid;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;cursor:pointer;vertical-align:top}.tkc>div+div{margin-top:8px}.tkc:hover{border-color:#b9b3a8;box-shadow:0 3px 12px rgba(0,0,0,.08)}
.tkcolors{display:none;gap:5px;margin-top:9px}.tkc:hover .tkcolors{display:flex}.tkdot{width:17px;height:17px;border-radius:50%;border:1px solid rgba(0,0,0,.14);cursor:pointer;flex:none}.tkdot.on{border:2px solid var(--ink)}
.tkcalh{display:grid;grid-template-columns:repeat(7,1fr);font-size:10px;color:var(--ink3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.tkcalh span{text-align:center}.tkcalg{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.tkcalfit .tkcalg{grid-auto-rows:minmax(88px,1fr);height:calc(100vh - 300px);min-height:440px}.tkcalfit .tkcald{overflow:auto;display:flex;flex-direction:column}.tkcalfit .tkchip{font-size:11.5px;padding:3px 7px;white-space:normal;line-height:1.25}.tkcald.drop{outline:2px dashed var(--acc);outline-offset:-2px;background:#fff6f2}.tkchip{cursor:grab}.tkchip:active{cursor:grabbing}@media(max-width:900px){.tkcalfit .tkcalg{height:auto}}.daypop{position:fixed;z-index:60;display:none;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 34px rgba(42,46,48,.22);padding:10px 12px;font-size:12.5px;max-height:60vh;overflow:auto}.daypop .dph{font-weight:700;margin-bottom:4px}.daypop .dph::first-letter{text-transform:uppercase}.daypop .dpr{display:flex;gap:8px;align-items:flex-start;padding:6px 2px;border-top:1px solid var(--line2);cursor:pointer;border-radius:6px}.daypop .dpr:hover{background:var(--line2)}.daypop .dot{width:9px;height:9px;border-radius:50%;flex:none;margin-top:4px}.tkcalmini .tkcald{min-height:60px}.tkcalmini .tkchip{font-size:9.5px;padding:1px 5px;white-space:nowrap}.tkcalmini .n{font-size:10px}
.tkcald{min-height:88px;border:1px solid var(--line);border-radius:7px;padding:3px 4px;background:var(--card)}.tkcald.off{border:none;background:transparent}.tkcald.today{border-color:#f46530;border-width:2px}.tkcald .n{font-size:10.5px;color:var(--ink3);text-align:right}
.tkchip{font-size:10.5px;color:#fff;border-radius:4px;padding:2px 6px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-weight:600}
.menuwrap{position:relative;display:inline-flex}
.avbtn{width:30px;height:30px;flex:none;border-radius:50%;overflow:hidden;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:13px;font-weight:700;border:1px solid rgba(255,255,255,.4);background:transparent;color:#fff}
.avbtn:hover{border-color:rgba(255,255,255,.75)}
.avbtn img{width:100%;height:100%;object-fit:cover;display:block}
.appb{display:inline-flex;align-items:center;justify-content:center;padding:5px 10px;font-size:14px;line-height:1}
.chmenu{position:absolute;top:calc(100% + 7px);right:0;background:var(--card);border:1px solid var(--line);border-radius:11px;box-shadow:0 14px 40px rgba(0,0,0,.14);display:none;min-width:220px;z-index:60;overflow:hidden}
/* La restitution à l'écran, dans la même grammaire que le document imprimé.
   Les couleurs passent par les jetons de l'application : le thème de nuit les
   fait suivre, ce qu'une couleur écrite en dur ne ferait pas. */
.rdoc{position:relative}
.rdoc .rlogo{position:absolute;right:0;top:0;max-height:34px;max-width:136px;object-fit:contain}
.rdoc .rtete{min-height:36px;padding-right:150px;margin-bottom:18px}
@media(max-width:620px){.rdoc .rlogo{position:static;display:block;margin:0 0 12px}.rdoc .rtete{padding-right:0}}
.rdoc .rlead{font-size:14.5px;line-height:1.7;color:var(--ink2);border-left:2px solid var(--acc,#3a7c88);padding-left:14px;margin-bottom:26px}
.rdoc .rlead p:last-child{margin-bottom:0}
.rdoc .rchap{padding-top:22px;border-top:1px solid var(--line2);margin-top:22px}
.rdoc .rchap:first-of-type{border-top:0;margin-top:0;padding-top:0}
.rdoc .rno{font-size:10.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--acc,#3a7c88);margin-bottom:5px}
.rdoc h3{font-size:17px;font-weight:600;margin:0 0 14px}
.rdoc .rfigs{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}
.rdoc .rfig{flex:1 1 150px;min-width:140px;border-top:2px solid var(--acc,#3a7c88);background:var(--wash);padding:10px 12px 12px}
.rdoc .rfig b{display:block;font-size:22px;font-weight:600;line-height:1.15}
.rdoc .rfig span{display:block;font-size:11px;line-height:1.35;color:var(--ink3);margin-top:5px}
.rdoc .rq{margin:18px 0;padding:14px 16px;background:var(--sel);border-left:3px solid var(--acc,#3a7c88);border-radius:0 8px 8px 0}
.rdoc .rq p{margin:0;font-size:16px;line-height:1.5;font-style:italic;color:var(--ink)}
.rdoc .rq cite{display:block;font-style:normal;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink3);margin-top:9px}
.rdoc .rrel{border-top:1px solid var(--line2);margin-top:20px;padding-top:14px}
.rdoc .rrel h4{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--acc,#3a7c88);margin:0 0 7px}
.rdoc .rrel .rrelt{color:var(--ink)}
.rdoc .rrel ul{columns:2;column-gap:26px;margin:0 0 14px;padding:0;list-style:none;font-size:13px;line-height:1.5}
.rdoc .rrel li{margin:0 0 6px;padding-left:12px;text-indent:-12px;break-inside:avoid}
.rdoc .rrel li:before{content:"– ";color:var(--ink3)}
.rdoc .rrel i{color:var(--ink3);font-style:normal}
.rdoc .rtab{width:100%;border-collapse:collapse;font-size:13.5px}
.rdoc .rtab th{text-align:left;padding:7px 10px;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);border-bottom:1px solid var(--line)}
.rdoc .rtab td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line2);vertical-align:top}
@media(max-width:620px){.rdoc .rrel ul{columns:1}.rdoc .rtab{font-size:12.5px}.rdoc .rtab th,.rdoc .rtab td{padding:7px 6px}}
#appmenu{min-width:274px}
#appmenu a{white-space:nowrap}
.menu .grp,.chmenu .grp{margin-top:11px}
.chmenu a{display:block;padding:9px 13px;font-size:13px;color:var(--ink);text-decoration:none;cursor:pointer}
.chmenu a:hover{background:#f6f3ee}
.chmenu a.here{font-weight:700;background:#f4efe8}
.chmenu .grp{padding:9px 13px 3px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
@media(max-width:700px){.chmenu{position:fixed;top:auto;left:10px;right:10px;min-width:0;width:auto;max-height:70vh;overflow:auto;border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.22)}.chmenu a{padding:12px 14px}.avbtn{width:38px;height:38px}.appb{min-width:34px;min-height:34px}}
/* sur « Mes projets » il n'y a pas de menu : la page prend toute la largeur */
body.nosidebar nav.side{display:none!important}
body.nosidebar .burger{display:none!important}
body.nosidebar main{padding-left:18px}
body.nosidebar .sidebg{display:none!important}
.hd.dashact{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.btn.hlpok{color:#2f7d4f;border-color:#9fcdb1}
.su-hlp{margin-top:9px}.su-hlp .btn{width:100%;justify-content:center;padding:12px 10px;font-size:15px;border-radius:var(--su-radius,12px)}
.su-hlp-tab{display:none}@media(pointer:coarse) and (min-width:701px) and (max-width:1366px){.su-hlp-tab{display:block;margin:0 0 14px}.dashact [data-hlp]{display:none}}
.dbfilt{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:12.5px;color:var(--ink2)}
.dbfilt-l{font-weight:600;color:var(--ink)}
.dbfilt .seg button{font-size:12px}
.dbfilt select{font-size:12.5px;padding:4px 8px}
.dbfilt-n{color:var(--ink3)}
.dbfilt .dbc{display:none}
@media(max-width:600px){.dbfilt .dbl{display:none}.dbfilt .dbc{display:inline}.dbfilt .seg{flex-wrap:nowrap}}
.crp-pub{margin-top:12px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-size:12.5px;color:var(--ink2);line-height:1.45}
.pubhd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--ink3);margin:0 2px 10px}
.pubhd b{color:var(--ink2)}
.pubhd .pubold{color:#96691e;border:1px solid #e0c9a0;border-radius:99px;padding:1px 8px;font-size:11px}
.pubnote{padding:13px 16px;font-size:13.5px;line-height:1.6;color:var(--ink2);border-left:3px solid var(--acc);margin-bottom:14px}
.pubrap{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px;font-size:12.5px;color:var(--ink3)}
.pubrap:first-child{margin-top:0}
.chome{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
@media(max-width:800px){.chome{grid-template-columns:1fr}}
.chero{padding:16px 18px 15px;margin:0}.lrows{display:flex;flex-direction:column;gap:1px}.lrow{display:flex;align-items:baseline;gap:10px;padding:9px 2px;border-top:1px solid var(--line2);cursor:pointer;text-decoration:none;color:inherit}.lrows .lrow:first-child{border-top:0}.lrow:hover .t{text-decoration:underline}.lrow .t{font-size:13.5px;color:var(--ink);flex:1;min-width:0}.lrow .s{font-size:11.5px;color:var(--ink3);white-space:nowrap}.lrow.late .t{color:#9c3f3f;font-weight:600}
.chq{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
.chbig{font-size:34px;font-weight:800;line-height:1.1;margin-top:6px;font-variant-numeric:tabular-nums}
.chbig .chsub{font-size:13px;font-weight:400;color:var(--ink3);margin-left:9px;letter-spacing:0}
.chline{font-size:13px;color:var(--ink2);margin-top:3px}
.chbar{position:relative;height:7px;border-radius:99px;background:#ece7dd;margin-top:12px;overflow:visible}
.chbar i{display:block;height:100%;border-radius:99px;background:#f46530}
.chbar b{position:absolute;top:-4px;width:2px;height:15px;background:#2a2e30;border-radius:1px}
.chdates{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;padding-top:11px;border-top:1px solid var(--line2);font-size:12.5px;color:var(--ink2)}
.chdates span{display:flex;flex-direction:column;min-width:0}
.chdates b{color:var(--ink);font-size:13px}
.chdates i{font-style:normal;font-size:11px;color:var(--ink3)}
.chact{margin-top:12px;font-size:12.5px}
.chask{border:1px solid var(--acc)}
body.nuit .chbar{background:#3a3733}
.seenbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;padding:9px 13px;background:#fbf6ee;border:1px solid #ecdcc2;border-radius:11px;font-size:12.5px;color:var(--ink2)}
.seenbar b{color:var(--ink)}
.seenbar .seendot{width:8px;height:8px;border-radius:50%;background:#f46530;flex:none}
.seenbar .seentxt{flex:1;min-width:0}
.seenbar .seenx{border:0;background:transparent;color:var(--ink3);cursor:pointer;font-size:13px;padding:2px 4px;line-height:1}
.seenbar .seenx:hover{color:var(--ink)}
body.nuit .seenbar{background:#2a2724;border-color:#4a4034}
.navmore{display:block;padding:7px 11px;margin-top:4px;font-size:11.5px;color:var(--ink3);cursor:pointer;border-radius:8px}
.navmore:hover{color:var(--ink);background:#f6f3ee}
.acmod .acsec{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);margin:18px 0 6px 4px;font-weight:600}
/* Mon compte : des groupes, une ligne par réglage, libellé à gauche, réglage à droite */
.acmod .acgrp{border:1px solid var(--line2);border-radius:12px;padding:0 14px}
.acmod .acrow{display:flex;align-items:center;gap:14px;padding:10px 0;border-top:1px solid var(--line2);margin:0;text-transform:none;letter-spacing:0;font-size:13px;color:var(--ink)}
.acmod .acgrp>.acrow:first-child,.acmod #ac_dig>.acrow:first-child{border-top:0}
.acmod #ac_dig{border-top:1px solid var(--line2)}
.acmod #ac_dig[hidden]{display:none}
.acmod .acl{flex:1 1 auto;min-width:0;font-size:13px;color:var(--ink);line-height:1.35}
.acmod .acl small{display:block;font-size:11.5px;color:var(--ink3);margin-top:1px}
.acmod .acc{flex:0 0 auto;width:min(290px,58%);display:flex;justify-content:flex-end}
.acmod .acc input,.acmod .acc select{width:100%;margin:0;padding:6px 10px;font-size:13px}
.acmod .acc .btn{margin:0}
.acmod .acbtn .acc{width:auto}
.acmod .acpair{display:flex;gap:6px;width:100%}.acmod .acpair select{flex:1;min-width:0}
.acmod .acsw{cursor:pointer}.acmod .acsw .sw{flex:none}
.acmod .acfull{display:block}
/* la ligne des alertes, rangée comme les autres : libellé à gauche, interrupteur à droite */
.acmod .acfull .su-push{margin:0;padding:0;border:0;display:grid;grid-template-columns:1fr auto;column-gap:14px;row-gap:2px;align-items:center}
.acmod .su-push label.su-push-l{grid-column:1/-1;flex-direction:row-reverse;justify-content:space-between;font-weight:400!important}
.acmod .su-push-st{padding-left:0;grid-column:1/2}
.acmod .su-push-essai{margin:0;grid-column:2/3;grid-row:2}
.acmod .actools{display:flex;flex-wrap:wrap;gap:7px}
.acmod .acdet{margin-top:8px;font-size:12px;color:var(--ink3)}.acmod .acdet summary{cursor:pointer}
.acmod .acfoot{position:sticky;bottom:0;background:inherit;margin:16px -22px -18px;padding:12px 22px 14px;border-top:1px solid var(--line2);border-radius:0 0 16px 16px;z-index:1}
@media(max-width:560px){.acmod .acrow:not(.acsw):not(.acfull):not(.acbtn){flex-direction:column;align-items:stretch;gap:6px}.acmod .acc{width:100%;justify-content:flex-start}}
.acmod .achd{display:flex;gap:11px;align-items:center}
.acmod .acav{width:36px;height:36px;flex:none;border-radius:50%;background:#2a2e30;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;letter-spacing:.02em}
.acmod .acsub{display:block;font-size:11.5px;color:var(--ink3);line-height:1.4;margin-top:1px}
.acmod .swrow{align-items:flex-start}
.acmod .acind{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:8px 0 0 50px}
.acmod .acind select{width:auto;min-width:132px;margin:0;font-size:12.5px}
.acmod .aclab{font-size:12px;color:var(--ink3)}
.acmod .hint{margin-top:6px}
.acmod label{margin-bottom:3px}
@media(max-width:700px){.acmod .acind{margin-left:0}}
@media(max-width:700px){.btn.sm{min-height:34px;padding:6px 12px;font-size:13px}.btn{min-height:36px}.ico{min-width:34px;min-height:34px;display:inline-flex;align-items:center;justify-content:center}.seg button{min-height:34px}select,input[type=date],input[type=text],input[type=email],input[type=number]{min-height:34px}.mkbar .btn.sm{min-height:42px}}
@media(max-width:700px){.tktbl th:nth-child(n+4),.tktbl td:nth-child(n+4){display:none}.tktbl td[colspan]{display:table-cell !important}.tktbl .mmeta{display:block;font-size:11px;color:var(--ink3);margin-top:2px}.tkcald{min-height:42px;padding:2px 3px}.tkchip{font-size:9px;padding:1px 4px}.tkcards{columns:1}}
nav.side .phseg{display:flex;margin:4px 8px 8px;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.phseg button{flex:1;border:0;background:transparent;font:inherit;font-size:12px;padding:7px 4px;cursor:pointer;color:var(--ink2)}
.phseg button.on{background:var(--ink);color:var(--card,#fff);font-weight:600}
.sgroup{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink3);padding:14px 11px 2px}
.sgroup.sgfold{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;padding-right:12px}
.sgroup.sgfold .chev{display:inline-flex;align-items:center;gap:6px;opacity:.8}
.sgroup.sgfold .chev svg{width:16px;height:16px;transition:transform .15s;transform:rotate(90deg)}
.sgroup.sgfold.closed .chev svg{transform:rotate(0deg)}
.sgroup.sgfold .chev .n{font-size:10px;letter-spacing:0;text-transform:none;background:#e5e0d8;color:#6b665f;border-radius:999px;padding:1px 7px;min-width:14px;text-align:center}
.sgroup.sgfold:hover{color:var(--ink)}
.sgroup.sgfold.closed{padding-bottom:6px}
.tkgrid{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:18px;align-items:start}.tkside .tkcald{min-height:60px}.tkside .tkchip{font-size:9.5px;padding:1px 5px}
#budtbl .cell{background:#fff;border:1px solid #e3ded4;box-shadow:inset 0 1px 2px rgba(0,0,0,.04);min-height:22px}#budtbl .cell:hover{border-color:#b9b3a8}#budtbl .cell:focus{border-color:var(--acc);box-shadow:0 0 0 2px rgba(244,101,48,.15)}#budtbl .cell:empty:before{color:#a8a297}#budtbl .itemrow td{padding-top:5px;padding-bottom:5px}#budtbl.wide{min-width:1480px}#budtbl.wide th,#budtbl.wide td{padding-left:9px;padding-right:9px}#budtbl.wide .itemrow td{padding-top:6px;padding-bottom:6px}#budtbl.wide .cell{padding:3px 6px}
.fmtgrid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:18px;align-items:start;margin-top:8px}@media(max-width:900px){.fmtgrid{grid-template-columns:1fr}}
.fmtf{display:flex;gap:8px;align-items:flex-start;padding:8px 6px;border:1px solid var(--line);border-radius:10px;margin-top:6px;background:#fff}.fmtf.over{border-color:var(--acc);box-shadow:0 0 0 2px rgba(244,101,48,.2)}.fmtf .drag{cursor:grab;color:var(--ink3);font-size:14px;line-height:34px;user-select:none}.fmtf input,.fmtf select{margin:0}
.fmprev{border:1px solid var(--line);border-radius:22px;background:#faf8f4;box-shadow:0 8px 30px rgba(0,0,0,.08);overflow:hidden;position:sticky;top:8px;max-height:78vh;overflow-y:auto;pointer-events:none}.fmprevbar{background:#2a2e30;color:#fff;padding:10px 14px;font-weight:700;font-size:13px;display:flex;justify-content:space-between;align-items:center}
.varbar{position:sticky;top:52px;z-index:12;display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:#2a2e30;color:#fff;border-radius:12px;padding:11px 14px;margin-bottom:12px;box-shadow:0 6px 20px rgba(0,0,0,.16)}
.varbar>div:first-child{flex:1;min-width:150px}
.varshow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:color-mix(in srgb,#6a5aa8 12%,var(--card));border:1px solid color-mix(in srgb,#6a5aa8 40%,var(--card));color:var(--ink);border-radius:12px;padding:10px 14px;margin-bottom:12px}
.varshow>div:first-child{flex:1;min-width:170px}
.varbar .btn{background:transparent;border-color:rgba(255,255,255,.45);color:#fff}
.varbar .btn:hover{background:rgba(255,255,255,.12)}
.varbar .btn.pri{background:var(--acc);border-color:var(--acc);color:#fff}
.varph{background:var(--line2);border-radius:10px;overflow:hidden;aspect-ratio:4/3;max-height:250px;display:flex;align-items:center;justify-content:center;border:1px dashed transparent}
/* une image gardee entiere : le cadre prend la forme de la photo, portrait comme paysage */
.varph.plein{aspect-ratio:auto;max-height:none;background:transparent;width:fit-content;max-width:100%}
.varph:hover{border-color:var(--line)}
/* la boite d'une option : un cadre net, sans aplat de couleur, ferme en haut et en bas */
table.opttbl{border-collapse:separate;border-spacing:0}
table.opttbl td.og,table.opttbl th.og{background:color-mix(in srgb,var(--ink) 2.5%,var(--card))}
table.opttbl .ogL{border-left:1px solid var(--line)}
table.opttbl .ogR{border-right:1px solid var(--line)}
table.opttbl tr.ogrp th{border:0;padding:8px 10px;text-align:left;font-weight:600;white-space:nowrap;vertical-align:bottom}
table.opttbl tr.ogrp th.ogtop{border-top:1px solid var(--line);border-top-left-radius:12px;border-top-right-radius:12px}
table.opttbl td.ogbot,table.opttbl th.ogbot{border-bottom:1px solid var(--line)}
table.opttbl td.ogbot.ogL{border-bottom-left-radius:12px}
table.opttbl td.ogbot.ogR{border-bottom-right-radius:12px}
table.opttbl tr.ogtot td{border-top:1px solid var(--line);padding-top:9px;padding-bottom:9px}
body.nuit table.opttbl td.og,body.nuit table.opttbl th.og{background:color-mix(in srgb,#fff 4%,var(--card))}
.opill{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:999px;padding:4px 12px;color:var(--ink);font-weight:600;font-size:12.5px;background:var(--card)}
.opill.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.opill input[type=checkbox]{margin:0}
tr.vband>td:first-child{box-shadow:inset 3px 0 0 var(--vc1),inset 6px 0 0 -3px var(--vc2),inset 9px 0 0 -6px var(--vc3)}
tr.vband>td:first-child{padding-left:14px}
tr.pickable{cursor:pointer}
tr.pickable:hover td{background:var(--line2)}
tr.pickable.vsel td{background:color-mix(in srgb,var(--acc) 14%,var(--card));box-shadow:inset 3px 0 0 var(--acc)}
tr.pickable.vsel td:first-child{font-weight:600}
body.nuit tr.pickable.vsel td{background:color-mix(in srgb,var(--acc) 26%,var(--card))}
.bflag{display:inline-block;font-size:10px;line-height:15px;border:1px solid var(--line);border-radius:999px;padding:0 6px;margin-left:4px;vertical-align:middle;font-weight:600;white-space:nowrap}.bflag.alt{cursor:pointer;color:#e08214;border-color:#e08214}
.ver.tkchat{cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border:1px solid #cfdcea;background:#eef3f8;color:#2c5a8a;font-weight:700}
.ver.tkchat svg{display:block;width:12px;height:12px}
.ver.tkchat:hover{border-color:#2c5a8a}
.ver.tkchat.add{background:transparent;border-color:var(--line);color:var(--ink3);font-weight:400}
.ver.tkchat.add:hover{color:#2c5a8a;border-color:#cfdcea;background:#eef3f8}
.ver.tkchat.new{background:#f46530;color:#fff;border-color:#f46530;font-weight:700}
@keyframes tkglowk{0%,100%{box-shadow:inset 3px 0 0 #f46530,0 0 0 rgba(244,101,48,0)}50%{box-shadow:inset 3px 0 0 #f46530,0 0 12px rgba(244,101,48,.35)}}
tr.tkglow td{background:#fff6f2}tr.tkglow td:first-child{box-shadow:inset 3px 0 0 #f46530}
.tkc.tkglow,.tkcard.tkglow{border-color:#f7b79c;background:#fff6f2;animation:tkglowk 2.4s ease-in-out 3}
.tkmsgph{display:flex;gap:6px;flex-wrap:wrap}.tkmsgphi{position:relative;display:inline-block}
.tkmsgph img{width:74px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--line);cursor:pointer;display:block}
.tkmsgphi .ico{position:absolute;top:-6px;right:-6px;background:var(--card);border:1px solid var(--line);border-radius:50%;line-height:1;padding:1px 4px}
.tkmsg.unread{box-shadow:inset 3px 0 0 #f46530}.tkmsg.re{margin-left:18px;border-left:2px solid var(--line)}
.tkmsgs{display:flex;flex-direction:column;gap:8px;max-height:230px;overflow:auto;padding:2px 0}
.tkmsg{background:var(--line2);border-radius:10px;padding:8px 11px;font-size:13px;line-height:1.45}
.tkmsgh{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink3);font-weight:700;margin-bottom:2px}.tkmsgh span{font-weight:400}
.tkco{flex:none;display:inline-flex;align-items:center;justify-content:center;width:52px;min-width:52px;height:16px;padding:0 3px;overflow:hidden;white-space:nowrap;border-radius:5px;color:#fff;font-size:8.5px;font-weight:700;letter-spacing:.03em;margin-right:5px;vertical-align:middle;cursor:default}
.tkav{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;color:#fff;font-size:8.5px;font-weight:700;flex:none;letter-spacing:.02em;cursor:default}
.tknote{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:11.5px;color:var(--ink2);line-height:1.4}
.tktbl{width:100%;table-layout:fixed;min-width:960px}.tktbl td{vertical-align:middle;padding:9px 8px}
.tktbl th:nth-child(1),.tktbl td:nth-child(1){width:24px}
.tktbl th:nth-child(2),.tktbl td:nth-child(2){width:124px}
.tktbl th:nth-child(3),.tktbl td:nth-child(3){width:auto;min-width:180px}
.tktitle{display:flex;flex-wrap:nowrap;align-items:flex-start;gap:6px;line-height:1.3}.tktitle>span[contenteditable],.tktitle>span:nth-child(2){flex:1;min-width:0;overflow-wrap:anywhere}.tktitle .tkstar{flex:none;margin-top:1px}
.tkmeta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;color:var(--ink3);margin-top:4px;line-height:1.3}.tkmeta .tkco{margin:0}.tkmeta:empty{display:none}
.tktbl td.tkact{white-space:nowrap;text-align:right}.tktbl td.tkact .ico{font-size:13px;padding:3px 6px}
.tktbl th:nth-child(4),.tktbl td:nth-child(4){width:13%}
.tktbl th:nth-child(5),.tktbl td:nth-child(5){width:112px}
/* la liste des tâches du projet reprend la main du hub : pastilles teintées et non pleines,
   commandes discrètes, une seule couleur forte par ligne, celle de la priorité haute */
.tkco{background:color-mix(in srgb,var(--c,#b0aa9f) 14%,var(--card));color:var(--c,#6b665e);border:1px solid color-mix(in srgb,var(--c,#b0aa9f) 28%,var(--card))}
.tktbl td{padding:11px 8px}
.tktbl th{font-size:10.5px;letter-spacing:.06em;color:var(--ink3);font-weight:600}
.tktbl .inline{padding:2px 9px;font-size:11.5px;line-height:1.5;border:1px solid var(--line);background:var(--card);border-radius:999px}
.tktbl .inline.pill{font-weight:600;border-color:transparent;width:100%;text-align:center;text-align-last:center;padding-left:14px;padding-right:22px}
.tktbl th:nth-child(2){text-align:center}
.tktbl .inline.pill.tkst-grey{background:#efece6;color:#6b665e;border-color:transparent}
.tktbl .inline.pill.tkst-blue{background:#e7edf6;color:#3f66a0;border-color:transparent}
.tktbl .inline.pill.tkst-green{background:#e3efe8;color:#2e7d5b;border-color:transparent}
.tktbl .inline.pill.tkst-amber{background:#f6edd9;color:#96691e;border-color:transparent}
.tktbl select.inline.pr2{border-color:transparent;color:var(--ink2);background:transparent}
.tktbl select.inline.pr3{border-color:transparent;color:var(--ink3);background:transparent}
.tktbl select.inline.pr1{padding:2px 9px}
.tktbl input[type=date].inline{border-color:transparent;background:transparent;font-variant-numeric:tabular-nums;font-size:12px;padding:2px 4px}
.tktbl select.inline:hover,.tktbl input.inline:hover{border-color:#b9b3a8}
/* Même disposition que le tableau du Hub : la pastille de statut et celle de
   la personne ont une largeur fixe, le reste ne bouge plus d'une ligne à
   l'autre, et le titre garde toute la place. */
.tktbl .quicell{display:flex;align-items:center;justify-content:center;gap:8px}
/* Statut collé à la poignée, et le rond de l'auteur centré dans l'espace qui
   reste jusqu'au titre : l'œil lit ≡, la pastille, le rond, le titre, sans trou. */
/* La pastille de l'auteur portait « margin:0 auto » : les marges automatiques
   avalaient toute la place libre et la collaient contre le bord droit de la
   colonne, donc contre la colonne Tâche. Le titre, en repassant à la ligne,
   arrivait dessous. Elle se range maintenant à côté du statut, avec un écart. */
.tktbl .statcell{display:flex;align-items:center;justify-content:flex-start;gap:7px;min-width:0;overflow:hidden}
/* La colonne Statut vaut 9,7 % de la largeur du tableau : sur un écran large mais
   avec la barre latérale ouverte, elle tombe à ~93 px alors que le select était figé
   à 112 px. Il débordait, poussait la pastille dans la colonne Tâche, et le titre
   passait dessous. Le select peut désormais se resserrer ; « À faire » reste lisible. */
.tktbl .statcell>select{order:1;flex:0 1 120px;width:120px;max-width:100%;min-width:0}
/* La pastille d'initiales se pose au milieu de ce qui reste entre le statut et
   le titre : deux marges automatiques, l'espace libre se partage en deux. */
.tktbl .statcell>.tkav{order:2;flex:0 0 18px;margin:0 auto}
.tktbl td.stcol{padding-left:2px;text-align:left}
.tktbl th.stcol{text-align:left;padding-left:8px}
.tktbl td:nth-child(1){padding-right:0}
.tktbl .quicell>.tkchat{order:1;flex:0 0 auto;margin:0}
.tktbl .quicell>select{order:2;flex:0 0 124px;width:124px;min-width:0}
.tktbl th.stcol,.tktbl td.stcol{width:166px;text-align:center}
.tktbl th.qcol,.tktbl td.qcol{width:180px;text-align:center}
.tktbl td:nth-child(6) select{width:92px;min-width:0}
/* Le titre prenait tout l'espace libre et repoussait Qui, Échéance et Priorité
   loin à droite, contre la note qui se retrouvait à l'étroit. On borne le titre
   et on donne le reste à la note. */
.tktbl .tknote{-webkit-line-clamp:4}
.tktbl .tktitle{display:block;overflow-wrap:anywhere}
/* L'étiquette d'entité était posée devant le titre : la première ligne partait
   6 px plus loin que les suivantes, et un titre sur deux lignes arrivait en
   drapeau. Elle descend dans la ligne des méta, avec le reste. Le titre est
   donc aligné à gauche, ligne après ligne. */
.tktbl .tktitle{text-align:left}
.tktbl .tktitle{font-size:13.5px;line-height:1.35}
.tktbl .tktitle>span[contenteditable],.tktbl .tktitle>span:nth-child(2){font-weight:500 !important}
.tktbl .tkmeta{margin-top:3px}
.tktbl .tknote{font-size:11.5px;color:var(--ink2)}
.tktbl .tkact .ico{opacity:.55}.tktbl tr:hover .tkact .ico{opacity:1}
.tktbl th:nth-child(6),.tktbl td:nth-child(6){width:104px}
.tktbl th:nth-child(7),.tktbl td:nth-child(7){width:13%;max-width:none}
.tktbl th:nth-child(8),.tktbl td:nth-child(8){width:96px}
.tktbl td:nth-child(8){font-size:11.5px;white-space:normal;text-align:right;line-height:1.5}
@media(max-width:1250px){.tktbl th:nth-child(7),.tktbl td:nth-child(7){width:20%}.tktbl th:nth-child(4),.tktbl td:nth-child(4){width:110px;min-width:0}}
/* Le tableau est en disposition fixe. Une largeur en pixels ne suffit pas : ce
   qui reste est réparti sur toutes les colonnes, donc le titre reprenait la
   place et repoussait le reste vers la droite. On donne donc à chacune sa part
   en pourcentage, somme exactement cent, et la note en reçoit le quart.
   Ce bloc doit rester APRÈS les anciennes largeurs, plus bas dans la feuille,
   sinon ce sont elles qui gagnent. */
@media(min-width:1251px){
 /* Répartition revue le 18 septembre : la note prenait le quart du tableau pendant
    que l'échéance tombait à 72 px et la priorité à 62 px, d'où « 02 » pour une date
    et « ha... » pour « haute ». La note rend ce qu'il faut aux deux. Somme = 100. */
 .tktbl th:nth-child(1){width:2%}
 .tktbl th.stcol{width:11%}
 .tktbl th:nth-child(3){width:27.5%}
 .tktbl th.qcol{width:11%}
 .tktbl th:nth-child(5){width:10.5%}
 .tktbl th:nth-child(6){width:9%}
 .tktbl th:nth-child(7){width:23%}
 .tktbl th:nth-child(8){width:6%}
}
/* les deux plus étroites : moins de rembourrage, le mot passe en entier */
.tktbl td:nth-child(5) .inline,.tktbl td:nth-child(6) .inline{padding-left:8px;padding-right:6px}

.tktbl td select,.tktbl td input[type=date]{width:100%;max-width:100%;box-sizing:border-box}
.tktbl .inline{padding:5px 10px;text-overflow:ellipsis}
.tktbl select.pr1{color:#9c3f3f;border-color:#e6c3bd;background:#fdf2f0;font-weight:700}
.tktbl select.pr3{color:var(--ink3)}
.tktbl td:nth-child(5) input[type=date]{padding-left:0;padding-right:0}.tktbl td:last-child{white-space:normal}.tktbl .inline.pill{background:var(--line2)}.tktbl .inline{border-color:var(--line);background:var(--card);border-radius:999px;padding:5px 12px}
/* La pastille de statut est la seule à porter un mot long ("In progress", "À faire").
   Elle gardait le rembourrage général et coupait le mot : ici, texte un peu plus petit
   et marges serrées, le mot passe en entier. */
.tktbl .statcell>select.inline.pill{font-size:11px;padding:5px 6px 5px 8px;letter-spacing:0}
@media(max-width:1100px){.tkgrid{grid-template-columns:1fr}}
.hgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;padding:14px 16px 18px}
.hcard{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;transition:box-shadow .15s,border-color .15s}.hcard:hover{border-color:#b9b3a8;box-shadow:0 6px 18px rgba(0,0,0,.08)}
.hph{height:120px;background:#e6e1d8 center/cover no-repeat;position:relative;display:flex;align-items:center;justify-content:center}.hph>span.hini{font-size:34px;font-weight:800;color:#fff;letter-spacing:.04em;opacity:.9}
.hlate{position:absolute;right:10px;top:10px;background:#9c3f3f;color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:3px 9px}
.hbody{padding:12px 14px 14px;display:flex;flex-direction:column;gap:8px}.hname{font-weight:700;font-size:15px;line-height:1.25}.hsub{font-size:12px;color:var(--ink2);margin-top:-4px}
.hbar{position:relative;height:8px;background:var(--line2);border-radius:999px;overflow:visible}.hbar i{display:block;height:100%;background:#f46530;border-radius:999px}.hbar b{position:absolute;top:-3px;width:2px;height:14px;background:#2a2e30;border-radius:2px}
.hpl{display:flex;justify-content:space-between;font-size:11px;color:var(--ink2);margin-top:4px}
.hchips{display:flex;flex-wrap:wrap;gap:6px}.hchip{font-size:11.5px;font-weight:600;border-radius:999px;padding:3px 10px;background:var(--line2);color:var(--ink2)}.hchip:hover{filter:brightness(.95)}.hchip.warn{background:#fdebd3;color:#96691e}.hchip.bad{background:#fbe3e0;color:#9c3f3f}
body.nuit .hph{background-color:#3a3d40}body.nuit .hchip.warn{background:#3b2e19;color:#dcab5e}body.nuit .hchip.bad{background:#3a2222;color:#dd908a}
.hcols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin-top:18px;align-items:start}@media(max-width:1000px){.hcols{grid-template-columns:1fr}}.hcols3{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) 340px;gap:14px;margin-top:14px;align-items:start}.hcols3>div>.card{margin:0}@media(max-width:1300px){.hcols3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.hcols3>aside{grid-column:1/-1;order:-1;position:static}}@media(max-width:900px){.hcols3{grid-template-columns:1fr}}
.hk{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:10px;line-height:1.5;text-transform:uppercase;letter-spacing:.04em;width:118px;min-width:118px;max-width:118px;padding:3px 6px;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;border-radius:999px;background:var(--line2);color:var(--ink2);font-weight:700;justify-content:center;flex:none;align-self:flex-start;margin-top:1px}.hk.k-jalon{background:#e9e3f7;color:#4b3a8a}.hk.k-tache,.hk.k-task,.hk.task{background:#e3edf7;color:#2c5a8a}.hk.k-ticket,.hk.ticket{background:#fbe3e0;color:#9c3f3f}.hk.k-visite{background:#e2f2e8;color:#1e6f48}.hk.k-reunion,.hk.k-réunion{background:#fdf0d5;color:#96691e}.hk.k-fin{background:#f0ede6;color:#5a5f63}.hk.k-decision,.hk.k-décision,.hk.dec{background:#e3edf7;color:#3f66a0}.hk.k-rfi,.hk.rfi,.hk.valid{background:#fdf0d5;color:#96691e}
.hlist{padding:4px 0 8px}.hrow{display:flex;align-items:center;gap:10px;padding:8px 16px;border-top:1px solid var(--line2);cursor:pointer;font-size:13px}
/* Une teinte par projet, discrète : un liseré à gauche et le nom du projet dans la même
   couleur. De quoi séparer trois chantiers dans une liste sans la peindre. */
.hrow[data-pc]{box-shadow:inset 3px 0 0 var(--pc);background:linear-gradient(90deg,color-mix(in srgb,var(--pc) 7%,transparent) 0 90px,transparent 220px)}
.hrow[data-pc] .hp{color:var(--pc);font-weight:600;opacity:.95}
body.nuit .hrow[data-pc]{background:linear-gradient(90deg,color-mix(in srgb,var(--pc) 14%,transparent) 0 90px,transparent 220px)}
.hrow.tkdash .ht{font-size:13.5px;font-weight:500}.hrow.tkdash{align-items:flex-start}.hrow.tkdash .tkco{margin-right:6px}
.hrow.tkhist{opacity:.62}.hrow.tkhist:hover{opacity:1}.hrow.tkhist .ht{font-weight:400;text-decoration:line-through;text-decoration-color:var(--line);text-decoration-thickness:1px}.hrow.tkhist .tkco{filter:grayscale(1);opacity:.75}
.tkdashhd{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);background:var(--line2);padding:4px 6px;margin-top:2px}
.tknoteic{color:var(--ink3);font-size:11px}.hrow:hover{background:var(--line2)}
.hk{font-size:10px;text-transform:uppercase;letter-spacing:.05em;flex:none;width:auto}.hk.valid,.hk.rfi{color:#96691e}.hk.dec{color:#3f66a0}
.ht{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.hp{font-size:11px;color:var(--ink3);white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;letter-spacing:.03em}
.hd2{font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink2);width:46px;text-align:right}.hd2.late{color:#9c3f3f;font-weight:700}
.hday{font-size:12px;font-weight:700;padding:10px 16px 4px}.hday .dsub{font-weight:400;color:var(--ink3);text-transform:none}.hday.tdy{color:#f46530}.hday.late{color:#9c3f3f}
.subtbl td{vertical-align:middle;padding:7px 5px}.subtbl input[type=date].inline{font-size:11.5px;padding:2px 3px}.subtbl th{padding-left:5px;padding-right:5px}.subtbl .cell{display:inline-block;min-width:40px;padding:3px 6px;border-radius:6px;border:1px solid transparent;outline:none}.subtbl .cell:hover,.subtbl .cell:focus{border-color:#b9b3a8;background:var(--card)}.subtbl .cell:empty:before{content:attr(data-ph);color:var(--ink3)}.subtbl .c{text-align:center}
#viswin{position:fixed;inset:0;z-index:80;background:var(--bg);display:flex;flex-direction:column}body.vwopen{overflow:hidden}
.vwbar{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--card);border-bottom:1px solid var(--line);flex:none}
.vwbody{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 440px;min-height:0}.vwleft{min-height:0;background:#e9e6df;border-right:1px solid var(--line)}
.vwright{overflow:auto;padding:14px 18px 20px;background:var(--card);min-height:0}.vwright label{display:block;margin-top:12px}
@media(max-width:900px){.vwbody{grid-template-columns:1fr;grid-template-rows:45vh 1fr}.vwleft{border-right:0;border-bottom:1px solid var(--line)}}
.subtbl .rowplus{display:none;position:absolute;right:2px;top:6px;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--acc);font-weight:700;cursor:pointer;line-height:1}.subtbl tr.subrow:hover .rowplus{display:inline-block}
body.vwopen .modal-bg{z-index:120}
.subtbl tr.lothd td,table tr.lotgrp td{background:#f4efe8;padding:7px 10px;font-size:12.5px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--ink)}table tr.lotgrp td{font-size:12px}table tr.lotsep td{border-top:2px solid var(--line)}.mtact .ico{font-size:17px;padding:4px 7px;line-height:1;vertical-align:middle;color:var(--ink2)}.mtact .ico:hover{background:var(--line2);color:var(--ink)}.mtact svg{width:18px;height:18px}
tr.itemrow td,tr.itemhd td,tr.itemadd td{background:#fcfbf8;font-size:12.5px;padding:3px 5px;border-bottom:1px solid #f1ede6;vertical-align:middle}tr.itemrow td:first-child,tr.itemhd td:first-child,tr.itemadd td:first-child{padding-left:40px}tr.itemhd td{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink3);padding-top:6px}tr.itemadd td{padding:5px 5px 7px 40px}tr.itemrow .cell{min-width:36px;padding:2px 6px;display:block;font-size:12.5px}tr.itemrow .cell:focus{background:#fff;box-shadow:0 0 0 2px rgba(244,101,48,.18)}.itemq{font-size:11px;color:var(--ink3);margin-top:1px;display:flex;gap:4px;align-items:center}.lotplus{font-size:11px;color:var(--acc);cursor:pointer;margin-left:6px;opacity:0}tr:hover .lotplus{opacity:1}.caret{display:inline-block;width:14px;color:var(--ink3);cursor:pointer;font-size:10px}.subtbl tr.lothd.rowdrop td{outline:2px dashed var(--acc);outline-offset:-3px}.subtbl tr.subrow.rowdrop td{border-top:2px solid var(--acc)}
.dlbl{font-size:11.5px;color:var(--ink3);margin:2px 0 0;min-height:14px}
.valink{font-size:11.5px;color:var(--ink3);padding:2px 11px 6px;cursor:pointer}.valink:hover{color:var(--ink)}
#vabar{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);z-index:60;background:#2a2e30;color:#fff;border-radius:999px;padding:8px 8px 8px 16px;font-size:12.5px;display:flex;gap:12px;align-items:center;box-shadow:0 6px 24px rgba(0,0,0,.25);max-width:calc(100vw - 24px)}
#vabar button{font:inherit;font-weight:700;border:0;border-radius:999px;padding:6px 12px;background:#f46530;color:#fff;cursor:pointer;white-space:nowrap}
/* téléphone : une bande au-dessus de la barre du bas, pas une pilule qui s'enroule en disque */
@media(max-width:700px){#vabar{left:8px;right:8px;transform:none;bottom:calc(var(--tbar-h,0px) + 8px);border-radius:14px;flex-wrap:wrap;gap:6px 8px;padding:8px 10px;max-width:none;font-size:12px;line-height:1.3}#vabar>span{flex:1 1 100%}#vabar button{padding:6px 10px;font-size:12px}}

/* ===== téléphone : rien ne doit dépasser la largeur de l'écran =====
   Un seul élément plus large que la fenêtre (une rangée de pastilles, un champ
   dans une boîte de dialogue) élargit toute la page : le document glisse, l'en-tête
   se coupe et les fenêtres flottantes se posent à moitié dehors. On empêche la page
   de s'élargir, et ce qui est vraiment large défile pour lui-même. */
@media(max-width:900px){
 html,body{max-width:100%;overflow-x:clip}/* clip, pas hidden : hidden faisait de body le conteneur de défilement et l'en-tête sticky ne tenait plus */
 .seg{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
 .seg::-webkit-scrollbar{display:none}
 .seg button{flex:0 0 auto;white-space:nowrap}
 #mnav{max-width:100vw;overflow-x:auto;-webkit-overflow-scrolling:touch}
 .modal{min-width:0;max-width:calc(100vw - 16px)}
 .modal input,.modal select,.modal textarea{max-width:100%;box-sizing:border-box}
 .hd>h2{min-width:0;overflow-wrap:anywhere}
}

/* ---- bloc 2 ---- */
/* Le sélecteur de style de l'en-tête suivait la règle sombre même en thème clair : blanc sur blanc.
   Cette règle passe en dernier, donc elle gagne quel que soit l'ordre des blocs au-dessus. */
body.t-epure header select,body.t-epure header .btn,body.t-epure header .avbtn,
body.t-epure .top select,body.t-epure .top .btn,body.t-epure .top .avbtn{color:var(--ink);border-color:var(--line);background:var(--card)}
body.t-epure header select:hover,body.t-epure .top select:hover{background:var(--hov,#f3f0ea)}

/* Sur un téléphone, l'en-tête doit garder son menu : les sélecteurs cèdent la place. */
@media(max-width:700px){
 header{padding:10px 12px;gap:8px}
 header .wordmark small{display:none}
 header select{min-width:0}
 header #projsel{flex:1 1 70px;max-width:150px;min-width:0;text-overflow:ellipsis}
 header .spacer{flex:1 1 auto;min-width:0}
 header .menuwrap{flex:none}
}
@media(max-width:520px){
 header select#thbtn{display:none!important}
 header #projsel{max-width:120px}
}
/* Sur un téléphone, le menu ☰ sortait de l'écran : le style et la langue se
   choisissent dans Mon compte, la barre ne garde que ce qui sert tout le temps,
   et le nom du projet cède la place au lieu de pousser le menu dehors. */
@media(max-width:560px){
 body header #langbtn,body header #nightbtn{display:none!important}
 body header .pjbox{flex:0 1 auto;min-width:0;max-width:none}
 body header .pjbtn{max-width:100%}
 header #appwrap,header .menuwrap{flex:none}
}
@media(max-width:430px){
 html body:not(.x) header select#thbtn#thbtn{display:none!important}
 header{gap:6px}
}

/* ---- bloc 3 : couleur du mot Hub ---- */
/* couleur du mot Hub */header .su-mark,header .wordmark,header .logo,.top-in .logo{color:#56A583}header .wordmark small,header .logo small{color:var(--ink3)}
/* les plans gardés sur l'appareil : une coche verte sur chaque plan, et le compte en tête de la liste */
.plhl{color:#1e6a42;background:#e3f1e8;border-radius:10px;padding:1px 7px;font-size:10.5px;font-weight:600;white-space:nowrap}
.btn.plhlc{font-variant-numeric:tabular-nums}.btn.plhlc.ok{color:#1e6a42;border-color:#b9dcc6;background:#eef7f1}

/* l'écran de connexion, la même carte que Hub interne et Temps (v912) ; pas d'en-tête derrière lui */
.lgbox{width:min(360px,92vw);margin:max(24px,calc(50vh - 215px)) auto 24px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:26px;box-sizing:border-box}
.lgbox .wordmark{font-size:24px;font-weight:700;letter-spacing:-.03em;line-height:1.25}
.lgbox .lgsous{color:var(--ink3);font-size:12.5px;margin-bottom:16px}
.lgbox .wordmark small{font-weight:500;color:var(--ink3);font-size:12px;letter-spacing:.16em;text-transform:uppercase;margin-left:8px}
body:has(#main .lgbox) header,body:has(#main .lgbox) .burger{display:none}
/* visites : glisser une photo des observations générales sur un point (v924) */
body.visdrag .vitem,body.visdrag .vnewpt{outline:1.5px dashed var(--line);outline-offset:-3px;border-radius:10px}
.vitem.vdrop,.vnewpt.vdrop{outline:2px solid var(--acc)!important;background:var(--sel,rgba(47,106,118,.08))}
.vgph{cursor:grab}.vgph:active{cursor:grabbing}
/* ---------- v939 : la page Documents, plus lisible (liste épurée, volet d'aperçu sur grand écran) ---------- */
.docs2 .dhd{align-items:flex-end;gap:10px;flex-wrap:wrap;padding:16px 18px 14px}
.docs2 .dtitre{min-width:0}
.docs2 .dfil{font-size:12.5px;color:var(--ink3);margin-bottom:3px}.docs2 .dfil a{cursor:pointer;color:var(--ink3)}.docs2 .dfil a:hover{color:var(--acc)}
.docs2 .dtitre h2{margin:0;font-size:24px;line-height:1.1;display:flex;align-items:baseline;gap:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.docs2 .dtitre h2 .dn{font:500 12.5px/1 system-ui,sans-serif;color:var(--ink3);letter-spacing:0}
.docs2 .dsearch{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:var(--card);color:var(--ink3);width:250px;max-width:100%;margin:0;text-transform:none;letter-spacing:0;font-weight:400}
.docs2 .dsearch input{border:0;padding:7px 0;background:transparent;outline:none;flex:1;min-width:0;font-size:13px}
.docs2 .dupl{display:inline-flex;align-items:center;gap:6px;margin:0;cursor:pointer;text-transform:none;letter-spacing:0}
.docs2 .dplus{position:relative}.docs2 .dplus summary{list-style:none;cursor:pointer}.docs2 .dplus summary::-webkit-details-marker{display:none}
.docs2 .dplusm{position:absolute;right:0;top:calc(100% + 6px);z-index:30;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.14);padding:6px;min-width:230px;display:flex;flex-direction:column}
.docs2 .dplusm>button,.docs2 .dplusm>label{border:0;background:transparent;text-align:left;padding:9px 12px;border-radius:8px;font:inherit;font-size:13px;color:var(--ink);cursor:pointer;text-transform:none;letter-spacing:0;font-weight:500;margin:0}
.docs2 .dplusm>button:hover,.docs2 .dplusm>label:hover{background:var(--hov,#f3f1ec)}
.docs2 .treecol{border-right:1px solid var(--line2);padding:12px 10px;min-width:0;background:var(--wash,#faf9f6)}
.docs2 .dtree{font-size:13px}
.docs2 .frow{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:9px;cursor:pointer;color:var(--ink2);white-space:nowrap;min-width:0}
.docs2 .frow:hover{background:var(--hov,#f1efe9)}
.docs2 .frow[data-on="1"],.docs2 .frow.on{background:var(--sel,#E4EEF0);color:var(--acc);font-weight:600}
.docs2 .frow .fnm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.docs2 .frow .fn{font-size:11px;color:var(--ink3);font-weight:500}
/* le partage d'un dossier (EG·L·M) : au survol et sur le dossier ouvert, pour ne pas rogner les noms */
@media(pointer:fine){.docs2 .frow>.fshare{display:none}.docs2 .frow:hover>.fshare,.docs2 .frow[data-on="1"]>.fshare{display:inline}}
.docs2 .frow .foldf{color:var(--ink3);flex:0 0 18px}.docs2 .frow[data-on="1"] .foldf,.docs2 .frow.on .foldf{color:var(--acc)}.docs2 .frow:hover .foldf{color:var(--ink2)}
.docs2 .frow.ftrash{margin-top:8px;color:var(--ink3)}.docs2 .frow.ftrash svg{flex:0 0 16px}
.docs2 .fadd{padding:9px 10px 2px;cursor:pointer;color:var(--acc);font-weight:600;font-size:12.5px}
.docs2 .dsubs{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;padding:14px 16px 4px}
.docs2 .dsubf{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:10px 12px;cursor:pointer;font:inherit;color:var(--ink)}
.docs2 .dsubf:hover{border-color:var(--acc)}.docs2 .dsubf .foldf{grid-row:span 2;color:var(--acc);width:22px;height:22px}
.docs2 .dsubf b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docs2 .dsubf span{font-size:11.5px;color:var(--ink3)}
.docs2 .dlistw{overflow-x:auto}
.docs2 table.dlist{width:100%;border-collapse:collapse}
.docs2 table.dlist th{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);font-weight:600;text-align:left;padding:10px 12px;background:var(--wash,#faf9f6);border-bottom:1px solid var(--line2)}
.docs2 table.dlist td{padding:10px 12px;border-bottom:1px solid var(--line2);vertical-align:middle}
.docs2 table.dlist tr{cursor:pointer}
.docs2 table.dlist tr:hover td{background:var(--hov,#f6f4ef)}
.docs2 table.dlist tr.on td{background:var(--sel,#E4EEF0)}
.docs2 .dcell{display:flex;align-items:center;gap:12px;min-width:0}
.docs2 .dtx{min-width:0}.docs2 .dtx b{display:block;font-size:14px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;word-break:break-word}
.docs2 .dsub{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:3px;font-size:11.5px;color:var(--ink3)}
.docs2 .dsub .ver{margin:0}
.docs2 .dchip{font-size:10.5px!important;padding:1px 8px!important;margin:0!important}
.ftile{flex:0 0 32px;width:32px;height:38px;border-radius:6px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;box-sizing:border-box;font:800 8.5px/1 system-ui,sans-serif;letter-spacing:.03em;color:#fff;background:#8E9794;position:relative;overflow:hidden}
.ftile:after{content:"";position:absolute;right:0;top:0;width:9px;height:9px;background:linear-gradient(225deg,var(--card,#fff) 50%,rgba(255,255,255,.35) 50%)}
.ft-pdf{background:#D2543F}.ft-doc,.ft-docx{background:#3D6FB6}.ft-xls,.ft-xlsx,.ft-csv{background:#2F8B57}.ft-img,.ft-jpg,.ft-png{background:#8A6BB0}.ft-dwg,.ft-dxf{background:#B08A2E}.ft-ppt,.ft-pptx{background:#C8703A}.ft-ifc,.ft-rvt{background:#3F5476}.ft-zip{background:#6b7a80}
.docs2 .dwho{font-size:12.5px;color:var(--ink2);white-space:nowrap}
.docs2 .dwhoi{display:inline-flex;align-items:center;gap:7px}.docs2 .dav{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 22px;border-radius:50%;color:#fff;font:600 9.5px/1 system-ui,sans-serif}
.docs2 .ddate{font-size:12.5px;color:var(--ink3);white-space:nowrap}
.docs2 .dacts{white-space:nowrap;text-align:right}.docs2 .dacts .ico{color:var(--ink3)}.docs2 .dacts .ico:hover{color:var(--ink)}
@media(pointer:fine){.docs2 .dacts>*{opacity:0;transition:opacity .12s}.docs2 tr:hover .dacts>*,.docs2 tr.on .dacts>*{opacity:1}}
/* v941 : le volet d'aperçu de v939 laisse la place au volet ⓘ (#dpi, plus bas) */
@media(max-width:700px){
 .docs2 .dhd{padding:12px}.docs2 .dtitre{width:100%}.docs2 .dtitre h2{font-size:21px}.docs2 .dsearch{flex:1 1 100%;width:auto;order:5}.docs2 .dhd .spacer{display:none}
 .docs2 table.dlist th,.docs2 table.dlist td.dwho,.docs2 table.dlist td.ddate,.docs2 table.dlist td.dacts{display:none}.docs2 table.dlist td{padding:10px 12px}
 .docs2 .treecol{background:transparent;padding:8px 10px}
 .docs2 .dtree{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}.docs2 .dtree .frow{border:1px solid var(--line);flex:0 0 auto;padding:6px 11px!important}.docs2 .dtree .fadd{white-space:nowrap;padding:7px 6px}.docs2 .frow .fact{display:none!important}
}
/* ---------- v941 : Documents en trois vues (Galerie, Liste, Registre), la recherche du projet, le volet ⓘ ---------- */
.docs3 .darb{color:var(--ink3);align-self:center}.docs3 .darb.on{color:var(--acc)}
.docs3 .dsearch{width:290px;position:relative}
.docs3 .dsearch .dqk{font:600 11px/1 ui-monospace,Menlo,monospace;color:var(--ink3);border:1px solid var(--line);border-radius:5px;padding:2px 6px;background:var(--wash,#faf9f6)}
@media(pointer:coarse){.docs3 .dsearch .dqk{display:none}}
.docs3 .dsearch .dqx{width:24px;height:24px;min-width:24px;color:var(--ink3)}
.docs3 .dvseg{display:inline-flex;background:var(--wash,#f3f1ec);border:1px solid var(--line);border-radius:11px;padding:3px;gap:2px}
.docs3 .dvseg button{border:0;background:transparent;width:34px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink3);cursor:pointer;transition:background .15s,color .15s}
.docs3 .dvseg button:hover{color:var(--ink)}
.docs3 .dvseg button.on{background:var(--card);color:var(--acc);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.docgrid.sansarbre{grid-template-columns:1fr}
.docs3 .dcorps{min-width:0;padding:4px 0 18px}
/* les collections : un dossier, la vignette de son dernier fichier, son nombre de fichiers */
.docs3 .dcolls{display:flex;gap:14px;overflow-x:auto;padding:16px 18px 6px;scrollbar-width:thin}
.docs3 .dcoll{flex:0 0 190px;display:flex;flex-direction:column;border:0;padding:0;background:var(--card);border-radius:16px;overflow:hidden;cursor:pointer;text-align:left;box-shadow:0 1px 2px rgba(0,0,0,.05),0 6px 18px rgba(30,35,34,.07);transition:transform .18s ease,box-shadow .18s ease}
.docs3 .dcoll:hover{transform:translateY(-3px);box-shadow:0 2px 4px rgba(0,0,0,.06),0 12px 28px rgba(30,35,34,.12)}
.docs3 .dcoll-th{height:104px;background:linear-gradient(135deg,#EEF4F2,#E2ECE9);display:flex;align-items:center;justify-content:center;overflow:hidden}
.docs3 .dcoll-th img{width:100%;height:100%;object-fit:cover;display:block}
.docs3 .dcoll-th .foldf{width:44px;height:44px;color:var(--acc);stroke-width:1.2}.docs3 .dcoll-th .fx{transform:scale(1.6)}
.docs3 .dcoll-tx{display:flex;flex-direction:column;padding:10px 13px 12px;min-width:0}
.docs3 .dcoll-tx b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.docs3 .dcoll-tx span{font-size:12px;color:var(--ink3);margin-top:2px}
/* les filtres */
.docs3 .dchips{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:14px 18px 4px}
.docs3 .dchip2{border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:999px;padding:6px 14px;font-family:inherit;font-weight:500;font-size:12.5px;line-height:1.2;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .15s,border-color .15s,color .15s}
.docs3 .dchip2:hover{border-color:var(--ink3)}
.docs3 .dchip2.on{background:var(--ink,#1E2322);border-color:var(--ink,#1E2322);color:var(--card,#fff)}
.docs3 .dchip2 .dcn{background:#E8A33D;color:#fff;border-radius:999px;font-size:10.5px;font-weight:700;padding:1px 7px}
.docs3 .dsel2{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink3);margin:0;text-transform:none;letter-spacing:0}
.docs3 .dsel2 select{border:1px solid var(--line);border-radius:999px;padding:5px 10px;font-size:12.5px;background:var(--card);color:var(--ink);width:auto}
.docs3 .dres{padding:10px 18px 0;font-size:12.5px;color:var(--ink3);font-weight:600}
/* la galerie */
.docs3 .gcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:20px;padding:16px 18px 6px}
.docs3 .gcard{position:relative;background:var(--card);border-radius:16px;overflow:hidden;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.05),0 6px 18px rgba(30,35,34,.07);transition:transform .18s ease,box-shadow .18s ease}
.docs3 .gcard:hover{transform:translateY(-4px);box-shadow:0 2px 4px rgba(0,0,0,.06),0 14px 32px rgba(30,35,34,.13)}
.docs3 .gth{aspect-ratio:4/3;background:linear-gradient(135deg,#F4F1EA,#EAE5DB);display:flex;align-items:center;justify-content:center;overflow:hidden}
.docs3 .gth img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;background:#fff}
.docs3 .gth .fx{transform:scale(2.1)}
.docs3 .gind{position:absolute;top:8px;left:38px;background:rgba(30,35,34,.82);color:#fff;font:700 11px/1 system-ui,sans-serif;border-radius:7px;padding:5px 8px;backdrop-filter:blur(4px)}
.docs3 .gvisa{position:absolute;top:9px;right:10px}.docs3 .gvisa .dchip,.docs3 .gvisa .badge{box-shadow:0 1px 4px rgba(0,0,0,.15)}
.docs3 .ginfo{position:absolute;right:10px;top:10px;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.94);color:var(--ink2);box-shadow:0 1px 4px rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center}
.docs3 .gvisa~.ginfo{top:42px}
@media(pointer:fine){.docs3 .ginfo{opacity:0;transition:opacity .15s}.docs3 .gcard:hover .ginfo{opacity:1}}
.docs3 .gmeta{display:flex;flex-direction:column;gap:3px;padding:11px 13px 13px;min-width:0}
.docs3 .gmeta b{font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.docs3 .gmeta>span{font-size:12px;color:var(--ink3)}
.docs3 .gdos{display:inline-flex;align-items:center;gap:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docs3 .gdos .foldf{width:13px;height:13px;flex:0 0 13px;color:var(--ink3)}
.docs3 .gsnip{font-size:12px;color:var(--ink2);line-height:1.4;margin-top:2px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.docs3 mark{background:#FBE4A0;color:inherit;border-radius:3px;padding:0 2px}
/* la liste et le registre : des lignes aérées, des filets légers, pas de quadrillage */
.docs3 .dlistw{padding:10px 10px 0}
.docs3 table.dl2 th,.docs3 table.dreg th{background:transparent;border-bottom:1px solid var(--line2);padding:10px 12px}
.docs3 table.dl2 th.tri,.docs3 table.dreg th.tri{cursor:pointer;user-select:none}.docs3 th.tri:hover{color:var(--ink)}
.docs3 table.dl2 td,.docs3 table.dreg td{border-bottom:1px solid var(--line2);padding:11px 12px}
.docs3 table.dl2 tr:last-child td,.docs3 table.dreg tr:last-child td{border-bottom:0}
.docs3 table.dl2 tr:hover td,.docs3 table.dreg tr:hover td{background:var(--hov,#f7f5f0)}
.docs3 .dmini{display:inline-flex;align-items:center;justify-content:center;width:40px;height:30px;flex:0 0 40px;border-radius:7px;overflow:hidden;background:#F1EEE7;box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.docs3 .dmini img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;background:#fff}.docs3 .dmini .fx{font-size:8.5px;padding:2px 4px}
.docs3 .dvind{background:#2B3130;color:#fff;border-radius:6px;font:700 10.5px/1 system-ui,sans-serif;padding:4px 7px}
.docs3 .ddos{font-size:12px;color:var(--ink3)}
.docs3 .dmob{display:none;font-size:12px;color:var(--ink3);margin-top:3px;overflow-wrap:anywhere}
.docs3 .dcompt{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:16px 18px 2px}
.docs3 .dct{border:1px solid var(--line2);background:var(--card);border-radius:14px;padding:12px 14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:border-color .15s,box-shadow .15s}
.docs3 .dct:hover{box-shadow:0 4px 14px rgba(30,35,34,.08)}.docs3 .dct.on{border-color:var(--acc);box-shadow:0 0 0 3px rgba(58,124,136,.12)}
.docs3 .dct b{font-size:22px;line-height:1.1}.docs3 .dct span{font-size:12px;color:var(--ink3)}
.docs3 .dct-ajour b{color:#2F7D4F}.docs3 .dct-a_viser b{color:#B7791F}.docs3 .dct-reserve b{color:#3D6FB6}.docs3 .dct-refuse b{color:#B6453A}
.docs3 .dbulk{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;margin:12px 18px 0;padding:9px 12px;background:var(--ink,#1E2322);color:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.docs3 .dbulk b{font-size:13px;margin-right:6px}.docs3 .dbulk .ico{color:#fff}.docs3 .dbulk .btn:not(.pri){background:rgba(255,255,255,.12);color:#fff;border-color:transparent}
.docs3 tr.dgrp td{background:transparent!important;padding:16px 12px 6px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink2);border-bottom:1px solid var(--line2)}
.docs3 tr.dgrp td span{margin-left:8px;color:var(--ink3);font-weight:500}
.docs3 tr.chk td{background:var(--sel,#E4EEF0)}
.docs3 .dck{width:30px}.docs3 .dck input{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--acc)}
.docs3 td.dcode{font:600 12px/1.2 ui-monospace,Menlo,monospace;color:var(--ink2);white-space:nowrap}
.docs3 .dtitre2 b{font-size:13.5px;font-weight:600;color:var(--ink)}
.docs3 .dinds{white-space:nowrap}.docs3 .dinds span{display:inline-block;font:600 11px/1 system-ui,sans-serif;color:var(--ink3);background:var(--wash,#f3f1ec);border-radius:5px;padding:3px 6px;margin-right:3px}
.docs3 .dinds span.on{background:#2B3130;color:#fff}
.docs3 .dvsel.v-aucun{display:inline-block}
.docs3 .dvsel{border:0;border-radius:999px;padding:4px 8px;font-family:inherit;font-weight:600;font-size:11.5px;line-height:1.2;width:auto;cursor:pointer;background:var(--wash,#f1efe9);color:var(--ink2)}
.docs3 .dvsel.v-approuve{background:#DDF0E3;color:#22663D}.docs3 .dvsel.v-reserve{background:#DEE8F6;color:#2D5A99}.docs3 .dvsel.v-refuse{background:#F6DEDA;color:#9C3A2F}.docs3 .dvsel.v-a_viser{background:#FBEBCF;color:#93621A}
.docs3 .dvide{color:var(--ink3)}
.docs3 td.retard{color:#B6453A;font-weight:700}
/* le volet ⓘ : à droite sur ordinateur, en feuille par le bas sur téléphone */
#dpi .dpi-fond{display:none}
#dpi .dpi-v{position:fixed;top:0;right:0;bottom:0;width:384px;max-width:100vw;z-index:120;background:var(--card,#fff);box-shadow:-12px 0 40px rgba(0,0,0,.16);overflow-y:auto;padding:0 20px 24px;transform:translateX(104%);transition:transform .26s cubic-bezier(.2,.8,.2,1)}
#dpi.ouvert .dpi-v{transform:none}
#dpi .dpi-hd{position:sticky;top:0;display:flex;align-items:center;gap:8px;padding:14px 0 10px;background:var(--card,#fff);z-index:1;font-size:13px}
#dpi .dpi-th{height:220px;border-radius:14px;background:linear-gradient(135deg,#F4F1EA,#EAE5DB);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer}
#dpi .dpi-th img{max-width:100%;max-height:100%;object-fit:contain;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.12)}#dpi .dpi-th .ftile{transform:scale(1.8)}
#dpi h3{margin:16px 0 8px;font-size:18px;line-height:1.25;word-break:break-word}
#dpi .dpi-st{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--ink3)}
#dpi .dvind{background:#2B3130;color:#fff;border-radius:6px;font:700 10.5px/1 system-ui,sans-serif;padding:4px 7px}
#dpi .dchip{font-size:10.5px!important;padding:1px 8px!important;margin:0!important}
#dpi .dpi-kv{display:grid;grid-template-columns:90px 1fr;gap:7px 10px;font-size:13px;margin:16px 0}#dpi .dpi-kv dt{color:var(--ink3)}#dpi .dpi-kv dd{margin:0;font-weight:500;overflow-wrap:anywhere}
#dpi .dpi-act{display:flex;flex-wrap:wrap;gap:8px}#dpi .dpi-act .btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none}
#dpi .dpi-vers{border-top:1px solid var(--line2);margin-top:18px;padding-top:12px;font-size:13px}#dpi .dpi-vers b{display:block;margin-bottom:6px}
#dpi .dpi-vers a{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 9px;margin:0 -9px;border-radius:9px;cursor:pointer;color:var(--ink2)}#dpi .dpi-vers a:hover{background:var(--hov,#f3f1ec)}#dpi .dpi-vers a.on{color:var(--acc);font-weight:600;background:var(--sel,#E4EEF0)}
#dpi .dpi-vers a>span:last-child{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--ink3)}
#dpi .dpi-pied{margin-top:18px;font-size:12.5px}
@media(max-width:700px){
 #dpi .dpi-fond{display:block;position:fixed;inset:0;z-index:119;background:rgba(20,22,24,.38);opacity:0;transition:opacity .26s}
 #dpi.ouvert .dpi-fond{opacity:1}
 #dpi .dpi-v{top:auto;left:0;width:auto;max-height:86vh;border-radius:20px 20px 0 0;box-shadow:0 -12px 40px rgba(0,0,0,.2);transform:translateY(104%)}
 #dpi .dpi-hd::before{content:"";position:absolute;top:6px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:var(--line)}
 #dpi .dpi-th{height:180px}
}
/* une image en grand */
#dvlb{position:fixed;inset:0;z-index:110;background:rgba(18,20,22,.96);backdrop-filter:blur(6px);display:flex;flex-direction:column}
#dvlb .dvlb-bar{display:flex;align-items:center;gap:8px;padding:10px 14px;color:#fff;font-size:13px}#dvlb .dvlb-bar b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#dvlb .ico{color:#fff}
#dvlb .dvlb-img{flex:1;display:flex;align-items:center;justify-content:center;padding:0 16px 16px;min-height:0}
#dvlb .dvlb-img img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;box-shadow:0 10px 40px rgba(0,0,0,.4)}
.mkbar .mkinfo{color:var(--ink2)}
body.nuit .docs3 .gth,body.nuit .docs3 .dcoll-th,body.nuit #dpi .dpi-th,body.t-nuit .docs3 .gth,body.t-nuit .docs3 .dcoll-th,body.t-nuit #dpi .dpi-th{background:#26292c}
body.nuit .docs3 .dmini,body.t-nuit .docs3 .dmini{background:#2d3134}
@media(max-width:700px){
 .docs3 .dsearch{width:auto}.docs3 .darb{display:none}
 .docs3 .ginfo{width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;padding:0!important}
 .docs3 .gcards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px}
 .docs3 .gmeta{padding:9px 10px 11px}.docs3 .gmeta b{font-size:13px}
 .docs3 .dcolls{padding:12px 12px 4px;gap:10px}.docs3 .dcoll{flex-basis:150px}.docs3 .dcoll-th{height:84px}
 .docs3 .dchips{padding:10px 12px 2px;flex-wrap:nowrap;overflow-x:auto}.docs3 .dchip2{flex:0 0 auto}
 .docs3 .dcompt{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px 12px 2px}
 /* v941 : sur téléphone, une ligne = vignette, nom en entier, dossier et date dessous, ⓘ ; le nom ne se coupe plus en morceaux */
 .docs3 table.dl2 th,.docs3 table.dl2 td.ddate,.docs3 table.dl2 td.ddos{display:none}
 .docs3 table.dl2 td.dacts{display:table-cell;width:40px;padding-left:0}.docs3 table.dl2 .dsupp{display:none}
 .docs3 table.dl2 td{padding:11px 8px}.docs3 table.dl2 .dtx{flex:1}.docs3 table.dl2 .dtx b{font-size:14px;word-break:normal;overflow-wrap:anywhere}
 .docs3 table.dl2 .dmob{display:block}
 /* le registre tient dans l'écran : case, vignette, titre (code, indice et date dessous), visa, ⓘ */
 .docs3 table.dreg th{display:table-cell}.docs3 table.dreg .dcode,.docs3 table.dreg .dinds,.docs3 table.dreg .dqui,.docs3 table.dreg .ddate{display:none}
 .docs3 table.dreg td.dacts{display:table-cell;width:40px;padding-left:0}.docs3 table.dreg td{padding:10px 6px}.docs3 table.dreg .dmob{display:block}
 .docs3 table.dreg .dtitre2 b{overflow-wrap:anywhere}.docs3 .dvsel{max-width:92px}
 .docs3 .dbulk{margin:10px 12px 0}
}
/* ---------- v942 : la barre de l'annotation sur téléphone (capture d'Eric du 01/10 : « les outils prennent plus de place
   que l'image ») : deux rangées. En haut : ✕, le nom, ⓘ, ⋯, Enregistrer. Dessous, une rangée qui défile : pages, outils
   en icônes, couleurs. Observation, Liste, Tout effacer, Visa, PDF annoté passent sous ⋯. Sur ordinateur, rien ne change. */
.mkbar .mkscroll,.mkbar .mksec{display:contents}
.mkbar .mkplus{display:none}
.mkbar #mkmsg:empty{display:none}
@media(max-width:700px){
 .mkbar{gap:6px;padding:6px 8px 4px;row-gap:6px}
 .mkbar .mkl{display:none}
 .mkbar .mkfin{order:1;min-height:38px!important;padding:6px 12px!important;font-size:16px!important}
 .mkbar .mknom{order:2;flex:1;min-width:0;max-width:none!important;margin:0 2px!important}
 .mkbar .mkinfo{order:3}
 .mkbar .mkesp{display:none}
 .mkbar .mkplus{display:inline-flex;order:4;min-height:38px!important;padding:6px 12px!important}
 .mkbar .mksave{order:5;min-height:38px!important;padding:6px 14px!important}
 .mkbar .mkscroll{order:6;display:flex;align-items:center;gap:8px;flex:1 1 100%;min-width:0;overflow-x:auto;scrollbar-width:none;padding:2px 0 4px}
 .mkbar .mkscroll::-webkit-scrollbar{display:none}
 .mkbar .mkscroll>*{flex:0 0 auto}
 .mkbar .mkzoom{display:none}
 .mkbar .mkpg{padding:0 2px}.mkbar .mkpg b{min-width:54px}.mkbar .mkpg .ico{font-size:18px!important;padding:4px 8px!important}
 .mkbar #mktools{display:flex;flex-wrap:nowrap;border-radius:12px}
 .mkbar #mktools button{min-height:38px!important;min-width:40px;padding:6px 10px!important;font-size:17px!important;line-height:1}
 .mkbar .mkic0{font-size:18px}
 .mkbar #mkcols{display:flex;align-items:center;white-space:nowrap}.mkbar #mkcols i{width:26px!important;height:26px!important;margin:0 3px!important}
 .mkbar #mkmsg{order:7;flex:1 1 100%;font-size:12px}
 .mkbar .mksec{display:none}
 .mkbar .mkvers{display:none}.mkbar .mktk{display:none}.mkbar.mkouvert .mktk{display:inline-flex;order:9}
 .mkbar.mkouvert .mksec{display:flex;order:8;flex:1 1 100%;flex-wrap:wrap;gap:6px;padding:4px 0 2px;border-top:1px solid var(--line2)}
 .mkbar.mkouvert .mksec .btn.sm{min-height:38px!important;font-size:13.5px!important;padding:6px 12px!important}
 .mkbar.mkouvert .mkplus{background:var(--sel,#E4EEF0)}
}

/* v952 : le nombre de versions sur la carte d'un document, cliquable vers ⓘ */
.gcard .gver{margin-left:6px;color:var(--acc,#3a7c88);font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}
.gcard .gver:hover{text-decoration:underline}
.dpi-vers .dpvdel{width:26px;height:26px;min-width:26px;padding:0!important;margin-left:4px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink2);opacity:1}.dpi-vers .dpvdel:hover{background:#fbe9e7;color:#b42b2b}
/* v953 : une fiche (tâche, ticket, visa) ouverte depuis la visionneuse passe devant elle (#mkwin z-index 90) */
body.mkopen .modal-bg{z-index:130}
/* v953 : une ligne de la liste des annotations : numéro, texte, statut ; dessous trois actions discrètes */
.mklist .lr .lact{grid-column:2 / 4;display:flex;gap:14px;font-size:11.5px;margin-top:-2px}
.mklist .lr .lact a{color:var(--acc,#3a7c88);font-weight:600;cursor:pointer;text-decoration:none}
.mklist .lr .lact a:hover{text-decoration:underline}
.mklist .lr .lact a::before{content:"+ ";font-weight:400;opacity:.7}
.mklist .lr .lact a:first-child::before{content:"✎ "}
.mklist .lr .lvide{color:var(--ink3);font-style:italic;cursor:pointer;text-decoration:none}
.mklist .lr .lvide:hover{color:var(--ink);text-decoration:underline}
/* v955 : l'aperçu du PDF annoté, avant de le télécharger ou de le ranger dans Documents : presque tout l'écran */
#mkprev{position:fixed;inset:0;z-index:135;background:rgba(20,22,24,.6);display:flex;align-items:center;justify-content:center;padding:2vh 2vw}
#mkprev .mkpv{background:var(--card,#fff);border-radius:12px;box-shadow:0 20px 50px rgba(0,0,0,.3);width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}
#mkprev .mkpvh,#mkprev .mkpvb{display:flex;align-items:center;gap:12px;padding:10px 16px;flex-wrap:wrap}
#mkprev .mkpvh{border-bottom:1px solid var(--line)}#mkprev .mkpvh b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
#mkprev .mkpvn{font-size:12px;color:var(--ink3);white-space:nowrap}
#mkprev .mkpvp{flex:1;overflow:auto;background:#e9e8e4;display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px 24px}
#mkprev .mkpvp canvas{background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.18);flex:none}
#mkprev .mkpvp iframe{flex:1;border:0;width:100%;min-height:60vh}
#mkprev .mkpvw{color:var(--ink3);font-size:13px;margin:auto}
#mkprev .mkpvb{border-top:1px solid var(--line);font-size:12.5px;align-items:flex-end}
#mkprev .mkpvdoc{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
#mkprev .mkpvdoc label{display:flex;flex-direction:column;gap:3px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink3)}
#mkprev .mkpvb select{font:inherit;font-size:13px;text-transform:none;letter-spacing:0;padding:6px 8px;border:1px solid var(--line);border-radius:8px;width:300px;max-width:42vw;background:var(--card,#fff);color:var(--ink)}
#mkprev .mkpvsep{flex:1}
@media (max-width:700px){#mkprev{padding:0}#mkprev .mkpv{border-radius:0}#mkprev .mkpvb select{width:100%;max-width:none}#mkprev .mkpvdoc{width:100%}#mkprev .mkpvdoc label{flex:1}}

/* v992 : la visionneuse s'ouvre en lecture ; « Annoter » sort les outils, « Terminer » les range */
#mkwin.mkvue #mktools,#mkwin.mkvue #mkcols,#mkwin.mkvue #mkobsbtn,#mkwin.mkvue #mkclear,#mkwin.mkvue #mkech,#mkwin.mkvue .mkvoir,#mkwin:not(.mkvue) .mkannot{display:none!important}
#mkwin.mkvue #mkov{cursor:grab}
.mkbar .mkrot{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center}

/* v1070 : choisir des documents dans la Galerie et la Liste */
.gcard{position:relative}.gcard .gck{position:absolute;top:8px;left:8px;z-index:3;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.92);border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.15);opacity:0;transition:opacity .12s;cursor:pointer}
.gcard:hover .gck,.gcard.sel-on .gck,.gcard.chk .gck{opacity:1}.gcard .gck input{margin:0;cursor:pointer}
.gcard.chk{outline:2px solid var(--acc,#417b74);outline-offset:1px}
.dl2 .lck{margin:0 8px 0 0;opacity:0;transition:opacity .12s;flex:none}.dl2 tr:hover .lck,.dl2 tr.chk .lck,.dl2 .lck:checked{opacity:1}.dl2 tr.chk td{background:color-mix(in srgb,var(--acc,#417b74) 8%,transparent)}
@media (hover:none){.gcard .gck,.dl2 .lck{opacity:.85}}
/* v1107 : Nomenclatures (tables d'éléments de Revit) */
.nmgrid{border-collapse:collapse;width:100%;font-size:13px}
.nmgrid th{text-align:left;font-weight:600;color:var(--ink2);padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.nmgrid th.nmmodh{color:var(--ink)}
.nmgrid td{padding:5px 8px;border-bottom:1px solid var(--line2);vertical-align:top;color:var(--ink2)}
.nmgrid td.nmmod{color:var(--ink);background:rgba(65,123,116,.05);cursor:text}
.nmgrid td.nmmod:hover{background:rgba(65,123,116,.12)}
.nmgrid td.nmatt{box-shadow:inset 0 0 0 1px #d9a441;background:#fdf5e4}
.nmgrid td.nmconf{box-shadow:inset 0 0 0 1px #c0503f;background:#fbeae7}
.nmgrid td.nmed{padding:2px 4px}
.nmgrid td.nmed input{margin:0;padding:3px 6px;font-size:13px;width:100%;min-width:90px}
.nmgrid tr.nmgone td{opacity:.6}
.nmfin{font-size:11px;color:var(--ink3,#888);margin-top:2px;line-height:1.3}
.nmfin.nmabs{color:#c0503f}
.nmattb{background:#fdf5e4;color:#8a5a00;margin-left:8px}

/* v1135 : nouvelles versions des plans, rapprochement page par page */
.pvr{display:flex;flex-direction:column;gap:10px;max-height:60vh;overflow:auto}
.pvrl{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:8px}
.pvri{flex:0 0 150px;height:106px;background:#fff;border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.pvri img{max-width:100%;max-height:100%;object-fit:contain}
.pvrc{flex:1;min-width:0}.pvrc label{margin-top:0}
.pvrr{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
@media (max-width:600px){.pvrl{flex-direction:column}.pvri{flex-basis:auto;width:100%}}
/* « Revit… » : publier des feuilles de Revit dans les plans ou un dossier des documents (revitdocs.js) */
.rvdm .rvdmq{font-size:12.5px;color:var(--ink2);margin-top:10px}
.rvdm .rvdavis{margin-top:10px;padding:9px 11px;border-radius:8px;background:#fbefe6;color:#8a4a12;font-size:12.5px;line-height:1.4}
.rvdm .rvddest{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:12px}
.rvdm label.rvdr,.rvdm label.rvdf{display:flex;align-items:center;gap:7px;margin:0;text-transform:none;letter-spacing:0;font-size:13px;font-weight:400;color:var(--ink);cursor:pointer}
.rvdm .rvddest select{width:auto;min-width:220px;max-width:100%;flex:1 1 220px}
.rvdm .rvdnote{font-size:12px;color:var(--ink3);margin-top:6px;line-height:1.4}
.rvdm .rvdoutils{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:12px}
.rvdm .rvdoutils select,.rvdm .rvdoutils input{width:auto;flex:1 1 180px;margin:0}
.rvdm .rvdl{margin-top:8px;max-height:min(46vh,420px);overflow:auto;border:1px solid var(--line);border-radius:8px}
.rvdm label.rvdf{padding:6px 10px;border-bottom:1px solid var(--line)}
.rvdm label.rvdf:last-child{border-bottom:0}
.rvdm label.rvdf:hover{background:var(--hov,#f3f1ec)}
.rvdm .rvdnum{font-weight:600;min-width:64px;font-variant-numeric:tabular-nums}
.rvdm .rvdnom{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rvdm .rvdrev{font-size:11px;padding:1px 6px;border-radius:9px;background:#26292b;color:#fff}
.rvdm input[type=checkbox],.rvdm input[type=radio]{width:auto;margin:0}
/* v1253 : remarques du client (js/chantier/remarques.js) */
.rmfil{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:0 16px 14px}
.rmfil select,.rmfil input{width:auto;margin:0;padding:5px 10px;font-size:13px}
.rmfil .rmq{min-width:180px;flex:1;max-width:320px}
.rmph .hd{flex-wrap:wrap;gap:8px}
.rmbar{display:inline-block;width:90px;height:5px;border-radius:3px;background:var(--line2);overflow:hidden;vertical-align:middle}
.rmbar i{display:block;height:100%;background:#1e7a50}
.rmbar.fini{box-shadow:0 0 0 2px rgba(30,122,80,.18)}
.rmcompte{font-size:12px;font-weight:600;color:var(--ink2);font-variant-numeric:tabular-nums;margin-left:-2px}
.rmval{font-size:12.5px;color:#1e7a50;font-weight:600;margin-right:4px}
.rmlist{padding-top:4px}
.rmrow{display:grid;grid-template-columns:70px minmax(0,1fr) 170px auto;gap:12px;align-items:start;padding:11px 0;border-top:1px solid var(--line2)}
.rmrow:first-child{border-top:0}
.rmnum{font-weight:700;font-size:12.5px;color:var(--ink2);padding-top:2px;white-space:nowrap}
.rmt{white-space:pre-wrap;line-height:1.45}
.rmmeta{font-size:12px;color:var(--ink3);margin-top:3px}
.rmsuite{font-size:12.5px;margin-top:6px;padding:6px 9px;border-radius:7px;white-space:pre-wrap}
.rmsuite.ok{background:#eef8f2;color:#1d5c3e}.rmsuite.no{background:#fdf5ea;color:#7a5517}
.rmst{font-size:12px}
.rmchip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600}
.rmwho{color:var(--ink3);margin-top:4px}
.rmhist{display:block;width:max-content;margin-top:4px;font-size:12px}
.rmact{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.rmgr{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rmun{display:flex;align-items:center;gap:7px;text-transform:none;letter-spacing:0;font-size:13px;margin:8px 0 0}
.rmun input{width:auto;margin:0}
.rmhl{margin:0;padding-left:20px}.rmhl li{margin:0 0 9px}.rmhtx{font-size:12.5px;white-space:pre-wrap;margin-top:2px}
.rmidz{display:flex;flex-direction:column;align-items:center;gap:3px;border:1.5px dashed var(--line);border-radius:10px;padding:18px 12px;cursor:pointer;text-transform:none;letter-spacing:0;font-size:13px;color:var(--mut);text-align:center;margin:0}
.rmidz b{color:var(--ink);font-size:14px}.rmidz:hover,.rmidz.on{border-color:var(--accent,#417b74);background:var(--bg2,#f6f5f3)}
.rmif{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}.rmifc{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);border-radius:7px;padding:3px 4px 3px 8px;font-size:12.5px;max-width:100%}
.rmifc .ico{width:22px;height:22px}
.rmitbig{width:100%;min-height:38vh;max-height:60vh;resize:vertical;font-size:14px;line-height:1.5}
.rmires{display:flex;flex-direction:column;gap:6px;max-height:62vh;overflow:auto;padding-right:4px}
.rmir{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:start;border:1px solid var(--line2);border-radius:8px;padding:8px}
.rmir.off{opacity:.45}.rmir input.rmick{width:auto;margin:6px 0 0}.rmitx{width:100%;margin:0;min-height:64px;field-sizing:content;max-height:30vh;font-size:13.5px;line-height:1.45}
.rmirm{display:flex;gap:6px;align-items:center;margin-top:5px;font-size:12px;flex-wrap:wrap}.rmirm input{width:auto;margin:0;padding:4px 7px;font-size:12.5px}.rmirm .rmiph{width:90px}.rmirm .rmiau{width:170px}
.rmirm .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}
.rmirefus{font-size:12.5px;background:#fdebd3;color:#96691e;border-radius:7px;padding:6px 9px;margin-bottom:8px}
body.rmdrag #main{outline:2px dashed var(--accent,#417b74);outline-offset:-6px;border-radius:12px}
/* v1305 : une remarque, une ligne qui se remplit sur place (agence, entreprise générale) */
.rmed .rmrow{grid-template-columns:70px minmax(0,1fr) 160px 132px 108px 132px;gap:8px;padding:8px 0}
.rmed .rmrow.rmsansprio{grid-template-columns:70px minmax(0,1fr) 160px 132px}
.rmrow.rmtete{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink3);padding:2px 0 4px;border-top:0}
.rmrow.rmtete+.rmrow{border-top:0}
.rmed .rmnum{padding-top:8px}
.rmin{width:100%;margin:0;padding:6px 8px;font-size:13px;border:1px solid transparent;border-radius:7px;background:transparent;box-sizing:border-box}
.rmin:hover{border-color:var(--line2)}.rmin:focus{border-color:var(--accent,#417b74);background:var(--card,#fff);outline:0}
textarea.rmtxt{resize:none;line-height:1.4;min-height:32px;overflow:hidden;font-size:14px}
.rmsrc{display:flex;gap:6px}.rmsrc .rmin{font-size:12px;color:var(--ink3);padding:3px 8px}.rmsrc select.rmin{width:auto;flex:none}
.rmprio[data-prio=haute]{color:#a35a10;font-weight:600}.rmprio[data-prio=urgente]{color:#b42318;font-weight:700;background:#fdecea}
.rmprio[data-prio=basse]{color:var(--ink3)}
.rmdue.retard{color:#b42318;font-weight:600;background:#fdecea}
.rmrow.p-urgente{box-shadow:inset 3px 0 0 #b42318}.rmrow.p-haute{box-shadow:inset 3px 0 0 #e08a2c}
.rmed .rmrow>.rmbas,.rmed .rmrow>.rmsuite{grid-column:2 / -1}
/* v1480 : les checklists, phase par phase */
.clrow,.rmed .clrow{grid-template-columns:34px minmax(0,1fr) auto;gap:10px;padding:9px 0;align-items:start}
.clbx{padding-top:6px}.clbx input{width:18px;height:18px;margin:0;accent-color:#1e7a50;cursor:pointer}.clbx input:disabled{cursor:default}
.cltx .cltxt{min-height:32px;field-sizing:content;line-height:1.4;resize:none}
.claide{font-size:12.5px;color:var(--ink3);margin:2px 0 0 8px;line-height:1.4}
.clnote{font-size:12.5px;color:var(--ink2);margin-top:2px}
.clbas{display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:12px;padding-top:6px;min-width:150px}
.clqui{color:var(--ink3);text-align:right;max-width:260px}
.cl-fait .cltxt,.cl-fait .rmt,.cl-sans_objet .cltxt,.cl-sans_objet .rmt{color:var(--ink3)}.cl-fait .cltxt,.cl-fait .rmt{text-decoration:line-through;text-decoration-color:rgba(30,122,80,.55)}
.clvide .hd{padding-bottom:12px}
.clmtete{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}.clmtete select{width:auto;margin:0;padding:5px 10px}
.clmsrc{font-size:12.5px}
.clmlist{display:flex;flex-direction:column;gap:6px;max-height:56vh;overflow:auto;padding-right:4px}
.clmi{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:start;border:1px solid var(--line2);border-radius:8px;padding:8px}
.clmn{font-weight:700;font-size:12.5px;color:var(--ink2);padding-top:7px}
.clmi input{width:100%;margin:0 0 4px;padding:6px 8px;font-size:13px}.clmi .clma{font-size:12.5px;color:var(--ink2)}
.clmi .rmact .ico{width:26px;height:26px}
@media (max-width:700px){.clrow,.rmed .clrow{grid-template-columns:30px minmax(0,1fr)}.clbas{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;min-width:0}.clqui{text-align:left}}
.rmbas{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}
.rmbas .rmhist{display:inline;margin:0}.rmbas .rmwho{margin:0}.rmbas .rmact{margin-left:auto}
.rmrow.rmlu{grid-template-columns:70px minmax(0,1fr) auto}
.rmrow.rmlu>.rmbas{grid-column:2 / -1}
/* v1477 : en lecture (client, MOE partenaire), la suite donnée sous le texte, pas dans la colonne du numéro */
.rmrow.rmlu>.rmsuite{grid-column:2 / -1;justify-self:start;max-width:820px;margin-top:0}
.rmneuve{background:var(--bg2,#f6f5f3);border-radius:8px}
.rmneuve .rmphin{font-weight:700;padding:6px 4px}
.rmpc,.rmdl{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11.5px;font-weight:600;margin-left:4px}
.rmpc.p-haute{background:#fdf0e1;color:#a35a10}.rmpc.p-urgente{background:#fdecea;color:#b42318}.rmpc.p-basse{background:#eeeceb;color:#5b5654}
.rmdl{background:#eeeceb;color:#5b5654}.rmdl.retard{background:#fdecea;color:#b42318}
@media (max-width:900px){.rmed .rmrow,.rmed .rmrow.rmsansprio{grid-template-columns:56px minmax(0,1fr) minmax(0,1fr)}.rmed .rmrow>.rmtx{grid-column:2 / -1}
 .rmed .rmrow>div:not(.rmnum):not(.rmtx):not(.rmbas):not(.rmsuite){grid-column:auto}.rmrow.rmtete{display:none}
 .rmed .rmrow>div:nth-child(3){grid-column:2}}
@media (max-width:700px){.rmrow{grid-template-columns:56px minmax(0,1fr)}.rmst{grid-column:2}.rmact{grid-column:1 / -1;justify-content:flex-start}}
/* Terrain 360, la visite filmée (marche360.js, v1346) */
.marsvg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.marsvg .marlig{fill:none;stroke:#f46530;stroke-width:3;stroke-linejoin:round;stroke-linecap:round;opacity:.75;vector-effect:non-scaling-stroke}
.marsvg .marlig.neuf{stroke:#345c72;stroke-dasharray:6 5;opacity:1}
.marpt{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#345c72;border:2px solid #fff;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.marpt.dep{background:#3f8a5a}
.pin.ppin.pwalk .dot{width:14px;height:14px;background:#f46530;border:2px solid #fff}
.pin.ppin.pwalk .dot b{display:none}
.marbande{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.marbande .marnb{font-weight:700}
.marvue{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 14px 0}
.panobox.plat{cursor:default;display:flex;align-items:center;justify-content:center}
.panobox.plat img{max-width:100%;max-height:100%;object-fit:contain;display:block}
/* v1354 : le choix des tampons, sous l'outil Tampon */
.mktamp{position:fixed;z-index:10002;background:var(--card,#fff);border:1px solid var(--line,#dde1e3);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.16);padding:10px;max-width:min(560px,calc(100vw - 16px))}
.mktamp .mktpl{display:flex;flex-wrap:wrap;gap:6px}
.mktamp .mktp{position:relative;display:inline-flex}
.mktamp .mktp button{background:#fff;border:2px solid;border-radius:6px;padding:5px 9px;font:800 11px/1.1 Inter,system-ui;letter-spacing:.04em;cursor:pointer;transform:rotate(-3deg)}
.mktamp .mktp button.on{box-shadow:0 0 0 3px rgba(65,123,116,.35)}
.mktamp .mktp i{position:absolute;top:-7px;right:-7px;width:16px;height:16px;border-radius:50%;background:#2a2e30;color:#fff;font:700 11px/16px system-ui;text-align:center;font-style:normal;cursor:pointer}
.mktamp .mktpo{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding-top:8px;border-top:1px solid var(--line,#dde1e3);font-size:12px}
.mktamp .mktpo label{display:inline-flex;align-items:center;gap:5px;margin:0;font-size:12px;text-transform:none;letter-spacing:0}
.mktamp .mktpo input{width:auto;margin:0}
#mkwin.mkvue .mktamp{display:none}
.mksign{width:min(560px,calc(100vw - 16px))}
.mksign .mksgt{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px}
.mksign .mksgpad{position:relative;border:1px dashed var(--line,#c9cfd2);border-radius:10px;background:#fff}
.mksign canvas{display:block;width:100%;aspect-ratio:3/1;touch-action:none;cursor:crosshair;border-radius:10px}
.mksign .mksgtxt{width:100%;box-sizing:border-box;aspect-ratio:3/1;border:0;background:transparent;text-align:center;font:italic 44px 'Segoe Script','Brush Script MT','Snell Roundhand',cursive;color:#1d3c78;margin:0}
.mksign .mksgeff{position:absolute;right:8px;bottom:8px}
.mksign .mktpo label input:not([type=checkbox]){display:inline-block;margin:0 0 0 4px;padding:4px 6px;font-size:12px}

/* comparer deux versions (js/chantier/comparer.js : hub. PDF et portail) */
.cmpchoix{position:fixed;z-index:10002;background:var(--card,#fff);border:1px solid var(--line,#dde1e3);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.16);padding:10px;width:min(420px,calc(100vw - 16px));max-height:min(70vh,560px);overflow:auto}
.cmpchoix .cmpct{font-weight:700;font-size:13px;margin-bottom:6px}
.cmpst{display:block;font-size:11px;font-weight:600;color:var(--ink3);text-transform:uppercase;letter-spacing:.04em;margin:8px 0 4px}
.cmpchoix .cmpligne{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;cursor:pointer}
.cmpchoix .cmpligne:hover{background:var(--hover,#f1f3f4)}
.cmpic{flex:none;min-width:34px;height:24px;padding:0 5px;border-radius:6px;background:#2a2e30;color:#fff;font:700 10px/24px Inter,system-ui;text-align:center}
.cmplnom{display:flex;flex-direction:column;min-width:0}.cmplnom b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmplnom small{font-size:11px;color:var(--ink3)}
.cmpvide{font-size:12px;color:var(--ink3);padding:6px 2px}
.cmpchoix .mktpo{margin-top:10px;padding-top:8px;border-top:1px solid var(--line,#dde1e3)}
.pdfcmp{position:fixed;inset:0;z-index:10003;background:var(--bg,#f4f5f6);display:flex;flex-direction:column}
.cmpbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;background:var(--card,#fff);border-bottom:1px solid var(--line,#dde1e3);font-size:13px}
.cmpbar select{width:auto;margin:0;padding:4px 6px;font-size:12px}
.cmpnom{display:inline-flex;align-items:center;gap:6px;max-width:22vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}
.cmpnom i,.cmpcote figcaption i{width:10px;height:10px;border-radius:2px;flex:none;display:inline-block}
.cmpnom.av i,.cmpcote .av i{background:#d63a2f}.cmpnom.ap i,.cmpcote .ap i{background:#2f6fd6}
.cmprl{display:inline-flex;align-items:center;gap:5px;margin:0;font-size:12px;text-transform:none;letter-spacing:0}
.cmprl input{width:auto;margin:0}
.cmpnav{display:inline-flex;align-items:center;gap:4px}
.cmpleg{display:flex;gap:14px;flex-wrap:wrap;align-items:center;padding:6px 12px;font-size:12px;color:var(--ink2)}
.cmpleg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
#cmpmsg{color:var(--ink3)}
.cmppages{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:0 12px 6px;font-size:12px}
.cmppages .cmpst{display:inline;margin:0 4px 0 0}
#cmppl{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}
.cmppg{border:1px solid var(--line,#dde1e3);background:var(--card,#fff);border-radius:12px;padding:2px 9px;font-size:12px;cursor:pointer}
.cmppg small{color:#d63a2f}.cmppg.on{border-color:#2a2e30;box-shadow:0 0 0 2px rgba(42,46,48,.15)}
.cmpvue{flex:1;overflow:auto;padding:10px;background:#3a3f42}
.cmpstage img{display:block;margin:0 auto;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.3);user-select:none}
.cmpcote{display:flex;gap:10px;align-items:flex-start;width:max-content;min-width:100%}
.cmpcote figure{margin:0}.cmpcote figcaption{color:#fff;font-size:12px;margin:0 0 4px;display:flex;align-items:center;gap:6px}
.cmpcote img{margin:0}
@media(max-width:700px){.cmpnom{max-width:40vw}.cmpleg{font-size:11px;gap:8px}}
/* v1387 : en annotation, sur ordinateur, les outils passent sur une rangée à eux, sous la barre (Eric, 14/10 : « open in a bar
   below so that we can fit everything up top… on a low res screen we wouldn't see everything »). En haut : fermer, nom,
   pages, zoom, Terminer, Liste, PDF annoté, Enregistrer. Dessous : les outils, l'échelle, les couleurs, le texte après chaque
   tracé, Tout effacer. Jusqu'à 1 440 px, les outils ne gardent que leur icône (le nom au survol) et Enregistrer son premier mot. */
@media(min-width:701px){
 #mkwin:not(.mkvue) .mkbar::after{content:"";order:50;flex:0 0 calc(100% + 24px);height:0;margin:0 -12px;border-top:1px solid var(--line2)}
 #mkwin:not(.mkvue) .mkbar #mktools,#mkwin:not(.mkvue) .mkbar #mkech,#mkwin:not(.mkvue) .mkbar #mkcols,#mkwin:not(.mkvue) .mkbar #mkobsbtn,#mkwin:not(.mkvue) .mkbar #mkclear{order:60}
 #mkwin:not(.mkvue) .mkbar #mkcols{order:61}#mkwin:not(.mkvue) .mkbar #mkobsbtn{order:62;margin-left:auto}#mkwin:not(.mkvue) .mkbar #mkclear{order:63}
 #mkwin:not(.mkvue) .mkbar #mktools{order:58}#mkwin:not(.mkvue) .mkbar #mkech{order:59}
}
@media(min-width:701px) and (max-width:1440px){#mkwin:not(.mkvue) .mkbar #mktools .mkl,#mkwin:not(.mkvue) .mkbar .mksave .mkl{display:none}#mkwin:not(.mkvue) .mkbar #mktools button{min-width:34px}}
/* v1434 : la page d'une visite, option B (Eric, 15/10) : une ligne par point, ouverte d'un toucher sur téléphone,
   une barre en bas (dicter, ajouter un point, photo), « Terminer » en haut */
.vis2{overflow:visible}
.vis2 .vhead{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line2)}
.vis2 .vback{width:38px;height:38px;flex:0 0 38px;border-radius:10px;border:0;background:var(--bg2,#f3f4f4);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer}
.vis2 .vht{flex:1;min-width:0}.vis2 .vht h2{margin:0;font-size:17px;line-height:1.25;overflow-wrap:anywhere}
.vis2 .vht .sub{display:block;font-size:12.5px;color:var(--ink3);margin-top:2px}
.vis2 .vprogt{font-size:12.5px;color:var(--ink2);margin-top:2px}
.vis2 .vfin{height:38px;min-height:38px;padding:0 14px;font-weight:600;flex:0 0 auto}
.vis2 .vmore{width:38px;height:38px;flex:0 0 38px;font-size:18px}
.vis2 .vprog{height:4px;background:var(--line2)}.vis2 .vprog i{display:block;height:4px;background:var(--acc);transition:width .2s}
.vis2 .vsec{padding:16px 16px 6px;font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
.vis2 .vlist{border-top:1px solid var(--line2)}
.vis2 .vitem{display:block;padding:0;border-bottom:1px solid var(--line2);grid-template-columns:none}
.vis2 .vitem.open{box-shadow:inset 3px 0 0 var(--acc)}
.vis2 .vrow{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;min-height:44px}
.vis2 .vnum{width:26px;height:26px;flex:0 0 26px;border-radius:8px;background:var(--line2);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
.vis2 .vitem.open .vnum{background:var(--acc);color:#fff}
.vis2 .vrt{flex:1;min-width:0}.vis2 .vlab{font-size:15px;font-weight:600;overflow-wrap:anywhere}
.vis2 .vmeta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:3px;font-size:12px;color:var(--ink3)}
.vis2 .vmeta>span{display:inline-flex;align-items:center;gap:3px;min-width:0}.vis2 .vmeta svg{width:13px;height:13px}
.vis2 .vchip{flex:0 0 auto;font-size:12px;font-weight:600;padding:4px 9px;border-radius:99px;white-space:nowrap;background:var(--line2);color:var(--ink2)}
.vis2 .vchip.vok{background:rgba(47,106,114,.13);color:var(--acc)}
.vis2 .vchip.vwarn{background:#fbefe2;color:#8a5010}
.vis2 .vchev{display:none;color:var(--ink3);transition:transform .15s}.vis2 .vitem.open .vchev{transform:rotate(180deg)}
.vis2 .vdet{display:flex;gap:14px;padding:0 16px 14px 54px}
.vis2 .vdin{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.vis2 .vnote{font-size:13.5px;color:var(--ink2);white-space:pre-wrap}
.vis2 .vphs{display:flex;gap:6px;flex-wrap:wrap}.vis2 .vphs .ph{width:64px;height:64px;object-fit:cover;border-radius:10px}
.vis2 .vphadd{width:64px;height:64px;border-radius:10px;border:1.5px dashed var(--line);display:flex;align-items:center;justify-content:center;font-size:24px;color:var(--ink3);cursor:pointer;text-transform:none;letter-spacing:0;margin:0}
.vis2 .vact{display:flex;flex-wrap:wrap;gap:8px}
.vis2 .vact .btn{min-width:0;height:36px;min-height:36px;padding:0 12px;font-size:13px;font-weight:500;border-radius:10px;text-transform:none;letter-spacing:0;cursor:pointer}
.vis2 .vact .btn.pri{font-weight:600}.vis2 .vact.vst .btn{min-width:64px;font-weight:700}
.vis2 .vact .btn.vrm{opacity:1;width:auto;color:var(--ink3)}
.vis2 .vgen{padding:4px 16px 14px;display:flex;flex-direction:column;gap:10px}
.vis2 .vgen .hint{padding:0}
.vis2 .vobsw{position:relative}.vis2 .vobsw textarea{width:100%;box-sizing:border-box;min-height:72px;padding-right:44px}
.vis2 .vobsw .micb{position:absolute;right:8px;top:8px}
.vis2 .vcap{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--card);border-top:1px solid var(--line);border-radius:0 0 var(--r,14px) var(--r,14px)}
.vis2 .vcapb{width:46px;height:46px;flex:0 0 46px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--ink2);display:flex;align-items:center;justify-content:center;cursor:pointer}
.vis2 .vcap input{flex:1;min-width:0;height:46px;border-radius:14px;margin:0}
.vis2 .vcapadd{height:46px;min-height:46px;border-radius:14px}
.vis2 .vcapcam{width:54px;height:54px;flex:0 0 54px;border-radius:50%;background:var(--acc);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;margin:0;box-shadow:0 4px 12px rgba(0,0,0,.18)}
@media(max-width:700px),(pointer:coarse) and (max-width:1366px){.vis2 .vcap{bottom:var(--tbar-h,0px)}}
@media(max-width:700px){
 .vis2{border-radius:0}
 .vis2 .vchev{display:block}
 .vis2 .vitem:not(.open) .vdet{display:none}
 .vis2 .vdet{padding:0 14px 14px 52px}.vis2 .ckmap{display:none}
 .vis2 .vcapadd{display:none}.vis2 .vcap input:not(:placeholder-shown)~.vcapadd{display:inline-flex}
 .vis2 .vact .btn.vwide{grid-column:auto}
}
.vis2 .vact .btn{width:auto;flex:0 0 auto;margin:0}.vis2 .vact .btn.pri{flex:1 1 100%}

/* v1461 : un plan PDF de plusieurs pages, épingles et zones sur la page 1 seulement */
.pbox.pgsuite .pin,.pbox.pgsuite .zone{display:none}
/* v1463 : « Nouvel indice » ou « Remplacer le fichier de l'indice » (planIndiceModal) */
.pimode{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px}
.pimode label{display:flex;align-items:center;gap:8px;font-size:13px;text-transform:none;letter-spacing:0;color:var(--ink);margin:0;cursor:pointer}
.pimode input{width:auto;margin:0}
.pimode .pinote{color:var(--ink3);font-size:12px}
.pimode .pioff{color:var(--ink3);cursor:not-allowed}
/* v1481 : le tableau des rôles et responsabilités */
.rrleg{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;font-size:12.5px;color:var(--ink2);padding:8px 14px 0}.rrleg>span:first-child{font-weight:600;margin-right:4px}
.rrc{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;font-weight:700;font-size:12.5px;border:1px solid var(--line2);background:var(--card,#fff);color:var(--ink3);line-height:1}
.rrc.rr-R{background:#e4ebfa;border-color:#b9c8ee;color:#2a4a9a}.rrc.rr-A{background:#dff2e6;border-color:#a9d8bb;color:#1e7a50}.rrc.rr-C{background:#fbefd9;border-color:#ecd3a3;color:#8a5a12}.rrc.rr-I{background:#efeeeb;border-color:#d8d5cf;color:#555}.rrc.rr-v{color:var(--line2)}
button.rrc{cursor:pointer;padding:0;margin:0}button.rrc:hover{border-color:var(--ink3)}
.rralerte{font-size:12.5px;color:#96691e;background:#fbefd9;border-radius:7px;padding:4px 9px}
.rrmaj{font-size:12px;padding:6px 14px 10px}
.rrwrap{overflow:auto;max-height:calc(100vh - 170px)}
.rrtab{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}
.rrtab th{position:sticky;top:0;background:var(--card,#fff);z-index:2;text-align:left;padding:8px 8px 6px;border-bottom:2px solid var(--line);vertical-align:top;font-weight:600}
.rrtab th.rrr{text-align:center;min-width:92px;max-width:150px}.rrtab th.rrn{width:34px}.rrtab th.rra{width:92px}
.rrrn{font-size:12.5px;line-height:1.25;overflow-wrap:anywhere}.rrtab th.rrr{overflow:hidden}.rrtab th[data-rrr] .rrrn[data-on-click]{cursor:text}.rrtab th[data-rrr] .rrrn[data-on-click]:hover{color:var(--accent)}
.rrrd{font-weight:400;font-size:11px;color:var(--ink3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}
.rrqui{width:100%;margin:6px 0 0;padding:4px 6px;font-size:11.5px;font-weight:400;text-align:center}.rrquiv{font-weight:400;font-size:11.5px;color:var(--ink2);margin-top:4px}
.rrrx{position:absolute;top:2px;right:2px;width:20px;height:20px;font-size:11px;opacity:0}.rrtab th.rrr{position:sticky;position:-webkit-sticky}.rrtab th.rrr:hover .rrrx{opacity:.8}
.rrtab td{padding:5px 8px;border-bottom:1px solid var(--line2);vertical-align:top}.rrtab td.rrn{color:var(--ink3);font-size:12px;padding-top:9px}
.rrtab td.rrcell{text-align:center;padding-top:6px;min-width:60px}.rrtab td.rra{white-space:nowrap}.rrtab td.rra .rmact{display:inline-flex;flex-wrap:nowrap;gap:2px;justify-content:flex-end}.rrtab td.rra .ico{width:26px;height:26px}
.rrtab .rrtxt{min-height:30px;field-sizing:content;line-height:1.35;resize:none;margin:0;padding:5px 8px;width:100%;min-width:220px;display:block}.rrtab td.rrt{min-width:260px;max-width:460px}.rrtab td.rrt .rmt{padding-top:4px}
.rrtab tr.rrph td{background:var(--bg2,#f5f3ee);font-weight:700;font-size:12.5px;padding:7px 8px;border-bottom:1px solid var(--line)}.rrtab tr.rrph td .btn{margin-left:10px}
.rrtab tr.rrneuve .rrtxt{border-style:dashed}
.rrmods{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.rrmod{border:1px solid var(--line2);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:4px}.rrmod.rrprop{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}
.rrmodt{font-weight:700}.rrmsrc{font-size:12px;margin-bottom:6px}.rrmod .btn{align-self:flex-start;margin-top:auto}
.rrmsec{display:flex;align-items:center;gap:8px;margin:10px 0 6px;font-size:13px}
.rrmlh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}.rrmlh select.rrmph{width:auto;margin:0;padding:3px 8px;font-size:12px}.rrmphv{font-weight:700;font-size:12px}
.rrmcells{display:inline-flex;gap:4px}.rrmcells .rrc{width:24px;height:24px;font-size:12px}
.clmi .rrmt{width:100%;margin:0;padding:5px 8px;min-height:30px;field-sizing:content;resize:none;min-width:220px}
.rrol{display:flex;flex-direction:column;gap:6px;max-height:54vh;overflow:auto}.rroi{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line2);border-radius:8px;padding:8px;font-size:13px}.rroi input{width:16px;height:16px;margin:2px 0 0}.rroi s{color:var(--ink3)}
@media (max-width:700px){.rrwrap{max-height:none}.rrtab .rrtxt{min-width:160px}.rrtab th.rrr{min-width:64px}.rrrd{display:none}}
/* v1482 : les retours d'expérience */
.lclist{display:flex;flex-direction:column;gap:10px}
.lccarte{padding:12px 14px;border-left:4px solid var(--line2)}.lccarte.lc-a_refaire{border-left-color:#3d9a6b}.lccarte.lc-a_eviter{border-left-color:#c9763a}
.lchd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.lchd h3{margin:0;font-size:15px}
.lcsens{font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 9px;background:#fbe9db;color:#92501f}.lc-a_refaire .lcsens{background:#dff2e6;color:#1e7a50}
.lcval{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#dff2e6;color:#1e7a50;font-size:12px;font-weight:700}
.lcproj{font-size:12px;color:var(--ink3)}
.lcmeta{display:flex;flex-wrap:wrap;gap:5px;margin:7px 0 2px}.lcpas{font-size:11.5px;border:1px solid var(--line2);border-radius:999px;padding:1px 8px;color:var(--ink2)}.lcpas.lcimp{background:var(--bg2,#f5f3ee)}
.lcck{font-size:11.5px;color:#1e7a50;padding:1px 4px}
.lcbloc{margin-top:8px}.lclab{font-size:11.5px;font-weight:600;color:var(--ink3);text-transform:uppercase;letter-spacing:.03em}.lctx{white-space:pre-wrap;font-size:13.5px;line-height:1.45;margin-top:2px}.lcle .lctx{font-weight:600}
.lcmots{margin-top:8px;font-size:12px;color:var(--ink3);display:flex;gap:6px;flex-wrap:wrap}
.lcbas{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;font-size:12px}.lcbas .rmact{display:inline-flex;gap:4px;flex-wrap:wrap}
.lcfgrid{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}.lcfgrid .seg{display:inline-flex}
.lcfimp{display:flex;flex-wrap:wrap;gap:6px 14px;margin:4px 0 6px}
label.lcfck{display:inline-flex;align-items:center;gap:6px;margin:0;text-transform:none;letter-spacing:0;font-size:13px;font-weight:400;color:var(--ink)}label.lcfck input{width:16px;height:16px;margin:0}
@media (max-width:700px){.lcfgrid{grid-template-columns:1fr}}
