/* ==========================================================================
   Baraque Studio — suivi de chantier.
   Jetons et composants repris de Gusto Club Secure, eux-mêmes repris tels
   quels de la charte Qarq Final (version du 5/09/2026) : palette monochrome,
   l'encre remplace toute couleur de marque, ce qui est actif est noir ; six
   pastels uniquement pour classer ou dire un statut ; aucune ombre, aucun
   dégradé, filets de 1 px. Rayons : bouton 12 · gélule 999 · carte 14 ·
   panneau 18 · cadre 28.
   ========================================================================== */

@font-face{font-family:"Fira Sans";font-weight:100;src:url(fonts/FiraSans-Thin.ttf) format("truetype");font-display:swap}
@font-face{font-family:"Fira Sans";font-weight:300;src:url(fonts/FiraSans-Light.ttf) format("truetype");font-display:swap}
@font-face{font-family:"Fira Sans";font-weight:400;src:url(fonts/FiraSans-Regular.ttf) format("truetype");font-display:swap}
@font-face{font-family:"Fira Sans";font-weight:500;src:url(fonts/FiraSans-Medium.ttf) format("truetype");font-display:swap}
@font-face{font-family:"Fira Sans";font-weight:600;src:url(fonts/FiraSans-SemiBold.ttf) format("truetype");font-display:swap}
@font-face{font-family:"Fira Sans";font-weight:700;src:url(fonts/FiraSans-Bold.ttf) format("truetype");font-display:swap}

:root{
  --ink:#0A0A0A; --muted:#8C8C8C; --faint:#B4B4B4;
  --line:#EFEFEF; --soft:#F6F6F6;
  --page:#FFFFFF; --surface:#FFFFFF; --inv:#FFFFFF;
  --peach:#FBE6C7; --sky:#D9E9F4; --sage:#DFEBD4;
  --mint:#D9EDE7; --lilac:#E7DFF8; --blush:#F9DEDA;
  --band:#0A0A0A; --band-ink:#FFFFFF; --band-mute:#A8A8A8;
  --band-line:rgba(255,255,255,.14); --band-veil:rgba(255,255,255,.06);
  --gray-300:#D9D9D9; --gray-600:#6E6E6E; --gray-800:#242424;

  --r-btn:12px; --r-pill:999px; --r-card:14px; --r-panel:18px; --r-frame:28px;
  --ease:cubic-bezier(.16,1,.3,1);
  --nav-l:104px;
  color-scheme:light;
}
html[data-theme="dark"]{
  --ink:#EDEFF1; --muted:#8A9298; --faint:#666E74;
  --line:#23282C; --soft:#191D21;
  --page:#0F1315; --surface:#15191C; --inv:#0F1315;
  --peach:#3B2E1B; --sky:#172B38; --sage:#1F2F1D;
  --mint:#182E28; --lilac:#272044; --blush:#3A211E;
  --band:#0A0D0F; --band-ink:#EDEFF1; --band-mute:#8A9298;
  --band-line:rgba(255,255,255,.10); --band-veil:rgba(255,255,255,.05);
  --gray-300:#2E353A; --gray-600:#A9B1B7; --gray-800:#C6CCD1;
  color-scheme:dark;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{margin:0;background:var(--page);color:var(--ink)}
body{font-family:"Fira Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
h1,h2,h3,p,dl,dd{margin:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
img{display:block;max-width:100%}
::selection{background:var(--ink);color:var(--inv)}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
[hidden]{display:none!important}
.num{font-variant-numeric:tabular-nums}
.ic{width:24px;height:24px;flex:none;display:block}
.ic.s20{width:20px;height:20px} .ic.s32{width:32px;height:32px} .ic.s40{width:40px;height:40px}

/* Typographie de la série : le tracking négatif ne descend jamais sous 20 px */
.h1{font-size:1.75rem;line-height:1.1;letter-spacing:-.02em;font-weight:600}
.h2{font-size:1.25rem;line-height:1.2;letter-spacing:-.02em;font-weight:600}
.h3{font-size:1rem;line-height:1.3;font-weight:600}
.eyebrow{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}
.second{color:var(--gray-600)}            /* texte secondaire sous 16 px */
.muted{color:var(--muted)}                /* gris moyen : jamais sous 16 px */
.petit{font-size:.8125rem}

/* ---------- Boutons et gélules ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;
  border-radius:var(--r-btn);font-weight:500;font-size:.9375rem;white-space:nowrap;
  background:var(--ink);color:var(--page);transition:opacity .15s var(--ease),transform .15s var(--ease)}
.btn:hover{opacity:.88} .btn:active{transform:scale(.98)}
.btn:disabled{opacity:.35;cursor:default;transform:none}
.btn.l52{height:52px;font-size:1rem}
.btn.contour{background:transparent;color:var(--ink);border:1px solid var(--gray-300)}
.btn.contour:hover{border-color:var(--ink);opacity:1}
.btn.discret{background:transparent;color:var(--gray-600)}
.btn.discret:hover{color:var(--ink);opacity:1}
.rond{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-pill);
  border:1px solid var(--gray-300);color:var(--muted);transition:color .15s,border-color .15s}
.rond:hover{color:var(--ink);border-color:var(--ink)}
.rond svg{width:18px;height:18px}

.pastille{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--r-pill);
  font-size:.75rem;font-weight:500;white-space:nowrap;background:var(--soft);color:var(--ink)}
.pastille.contour{background:transparent;border:1px solid var(--line);color:var(--gray-600)}
.pastille.urgence{background:var(--blush)} .pastille.attention{background:var(--peach)}
.pastille.ok{background:var(--sage)} .pastille.info{background:var(--sky)} .pastille.rh{background:var(--lilac)}
.pastille i{width:6px;height:6px;border-radius:50%;background:var(--ink)}

.gelules{display:flex;gap:8px;flex-wrap:wrap}
.gelule{height:40px;padding:0 16px;border-radius:var(--r-pill);border:1px solid var(--line);font-size:.875rem;font-weight:500;
  color:var(--gray-600);transition:border-color .15s,color .15s}
.gelule:hover{border-color:var(--gray-300);color:var(--ink)}
.gelule.actif{background:var(--ink);border-color:var(--ink);color:var(--page)}

/* ---------- Connexion (reprise de la PWA Qarq) ---------- */
.connexion{min-height:100dvh;display:flex;flex-direction:column;padding:24px;position:relative;isolation:isolate}
/* Fond : dessin d'architecture au trait (AdobeStock_1985810970), adouci ; ses traits noirs passent en blanc la nuit */
.connexion::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  /* Calé en bas à gauche, deux fois plus petit que « cover » : la moitié de max(100vw, 100vh × rapport du dessin 3073/2146) */
  background:url(img/fond-connexion.svg) left bottom/max(50vw, 71.6vh) auto no-repeat;opacity:.32}
html[data-theme="dark"] .connexion::before{filter:invert(1);opacity:.22}
.connexion .rond{align-self:flex-end}
.connexion-centre{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}
.connexion-carte{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-frame);padding:32px 24px 24px}
.connexion-carte .logo{width:150px;margin:0 auto 28px}
.connexion-carte h1{text-align:center;margin-bottom:8px}
.connexion-carte .sous{text-align:center;color:var(--muted);font-size:.9375rem;margin-bottom:32px}
.champ{margin-bottom:16px}
.champ label{display:block;font-size:.8125rem;font-weight:500;color:var(--gray-800);margin-bottom:6px}
.champ input{width:100%;height:52px;padding:0 16px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);
  border:1px solid var(--gray-300);border-radius:var(--r-btn);transition:border-color .15s var(--ease)}
.champ input:hover{border-color:var(--muted)} .champ input:focus{outline:none;border-color:var(--ink)}
.connexion-carte .btn{width:100%;margin-top:8px}
.note-bas{max-width:420px;margin:16px auto 0;text-align:center;font-size:.75rem;color:var(--muted)}

/* ---------- Structure : entête à la KouriHome ---------- */
.appli{max-width:1440px;margin:0 auto;padding:24px 40px 48px}
.entete{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:16px}
.entete-nav{display:flex;align-items:center;gap:10px;overflow-x:auto;scrollbar-width:none;padding:2px}
.entete-nav::-webkit-scrollbar{display:none}
.entete-nav a,.entete-nav button{position:relative;flex:none;width:52px;height:52px;border-radius:var(--r-pill);
  border:1px solid var(--line);display:grid;place-items:center;color:var(--ink);background:var(--surface);
  transition:background-color .15s,border-color .15s,color .15s}
.entete-nav a:hover,.entete-nav button:hover{border-color:var(--gray-300)}
.entete-nav .ic{width:22px;height:22px}
.entete-nav a.actif{background:var(--ink);border-color:var(--ink);color:var(--page)}
.entete-nav a.actif .ic [fill^="var"]{fill:transparent}
.entete-nav .expo{position:absolute;top:-5px;right:-5px;min-width:22px;height:22px;padding:0 6px;border-radius:var(--r-pill);
  background:var(--ink);color:var(--page);border:2px solid var(--page);font-size:.6875rem;font-weight:600;display:grid;place-items:center}
.entete-nav .sep{width:1px;height:28px;background:var(--line);flex:none;margin:0 2px}

/* La carte « question » en tête de chaque écran (entete.css de KouriHome), sans ombre */
.demande{display:flex;align-items:center;gap:20px;padding:18px 22px;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface)}
.demande .pas{flex:none;width:52px;height:52px;border-radius:15px;display:grid;place-items:center;background:var(--ink);color:var(--page)}
.demande .pas .ic{width:26px;height:26px}
.demande .pas .ic [fill^="var"]{fill:transparent}
.demande .dit{flex:1;min-width:0}
.demande h1{font-size:2rem;font-weight:700;letter-spacing:-.03em;line-height:1.12}
.demande p{margin-top:4px;font-size:1.0625rem;font-weight:500;color:var(--muted);line-height:1.35;max-width:62ch}
.demande .sur{flex:none;align-self:flex-start;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;
  white-space:nowrap;background:var(--fond,var(--soft));padding:7px 13px;border-radius:var(--r-pill)}
.note-maquette{margin-top:12px;padding:8px 14px;border-radius:var(--r-card);background:var(--soft);font-size:.8125rem;color:var(--gray-600)}
.contenu{padding-top:24px;display:grid;gap:24px;outline:none}
/* ---------- Surfaces : un filet, jamais une ombre ---------- */
.grille{display:grid;gap:16px}
.g-6{grid-template-columns:repeat(6,minmax(0,1fr))}
.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.panneau{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-panel);padding:20px;min-width:0}
.panneau-tete{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.lien{font-size:.875rem;font-weight:500;color:var(--gray-600);border-bottom:1px solid transparent}
.lien:hover{color:var(--ink);border-bottom-color:currentColor}
.vide{color:var(--muted);font-size:1rem;padding:8px 0}
.section-titre{display:flex;align-items:baseline;justify-content:space-between;gap:12px}

/* Tuile d'application (charte §07) : pastel = la famille du module */
.tuile{position:relative;display:flex;flex-direction:column;border-radius:var(--r-card);background:var(--p,var(--soft));
  padding:18px;min-height:176px;color:var(--ink);transition:transform .2s var(--ease)}
.tuile:hover{transform:translateY(-3px)}
@media (prefers-reduced-motion:reduce){.tuile:hover{transform:none}}
.tuile-haut{display:flex;justify-content:space-between;align-items:flex-start}
.tuile-ico{width:42px;height:42px;border-radius:var(--r-pill);border:1.5px solid var(--ink);display:grid;place-items:center}
.tuile-ico .ic{width:20px;height:20px}
.tuile-ico .ic circle[fill],.tuile-ico .ic [fill^="var"]{fill:transparent}
.tuile-go{width:32px;height:32px;border-radius:10px;border:1px solid color-mix(in srgb,var(--ink) 24%,transparent);display:grid;place-items:center;transition:background-color .15s,color .15s}
.tuile:hover .tuile-go{background:var(--ink);color:var(--p,var(--surface));border-color:var(--ink)}
.tuile-go svg{width:14px;height:14px}
.tuile .valeur{margin-top:auto;font-size:2rem;font-weight:600;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.tuile .valeur small{font-size:1rem;font-weight:500;letter-spacing:0;color:color-mix(in srgb,var(--ink) 60%,transparent)}
.tuile h3{margin-top:8px;font-size:1rem;font-weight:500}
.tuile-pied{margin-top:12px;padding-top:10px;border-top:1px solid color-mix(in srgb,var(--ink) 12%,transparent);
  font-size:.75rem;color:color-mix(in srgb,var(--ink) 64%,transparent);display:flex;justify-content:space-between;gap:8px}
.tuile-pied .cat{font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em}

/* Indicateur simple */
.indic{display:grid;gap:4px}
.indic .valeur{font-size:2rem;font-weight:600;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}
.indic .valeur small{font-size:1rem;font-weight:500;letter-spacing:0;color:var(--muted)}

/* Alertes */
.alertes{display:grid;gap:8px}
.alerte{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;width:100%;text-align:left;
  padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);transition:border-color .15s}
.alerte:hover{border-color:var(--gray-300)}
.alerte .marque{width:36px;height:36px;border-radius:var(--r-pill);display:grid;place-items:center;background:var(--soft)}
.alerte.urgence .marque{background:var(--blush)} .alerte.attention .marque{background:var(--peach)} .alerte.info .marque{background:var(--sky)}
.alerte .marque .ic{width:18px;height:18px}
.alerte .marque .ic [fill^="var"]{fill:transparent}
.alerte .txt{min-width:0}
.alerte .txt b{display:block;font-weight:600;font-size:.9375rem}
.alerte .txt span{display:block;font-size:.8125rem;color:var(--gray-600);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alerte .meta{display:grid;justify-items:end;gap:4px;font-size:.75rem;color:var(--gray-600);font-variant-numeric:tabular-nums}
.alerte.close{opacity:.6}

/* Barres : encre sur canevas */
.piste{display:block;height:8px;border-radius:var(--r-pill);background:var(--soft);overflow:hidden}
.piste i{display:block;height:100%;border-radius:var(--r-pill);background:var(--ink)}
.barres{display:grid;gap:14px}
.barre-ligne{display:grid;grid-template-columns:130px 1fr 64px;gap:14px;align-items:center;font-size:.875rem}
.barre-ligne b{font-weight:500}
.barre-ligne small{display:block;font-size:.75rem;color:var(--gray-600)}
.barre-ligne .num{text-align:right;font-weight:600}

.legende{display:flex;gap:16px;font-size:.75rem;color:var(--gray-600);flex-wrap:wrap}
.legende span{display:inline-flex;align-items:center;gap:6px}
.legende span::before{content:"";width:12px;height:12px;border-radius:4px;background:var(--c);border:1px solid var(--line)}
.champ select{height:52px;width:100%;font-size:16px}
.champs2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bascule{display:flex;align-items:center;gap:10px;font-size:.9375rem;font-weight:500}
.bascule input{width:20px;height:20px;accent-color:var(--ink)}
a.bande{text-decoration:none}

/* Tableaux */
table.tab{width:100%;border-collapse:collapse;font-size:.875rem}
.tab th{text-align:left;font-size:.6875rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;padding:0 12px 10px;border-bottom:1px solid var(--line)}
.tab td{padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.tab tr:last-child td{border-bottom:0}
.tab td.n{font-variant-numeric:tabular-nums}
.tab tr.annule td{opacity:.45;text-decoration:line-through}
.tab tr.annule td:last-child{text-decoration:none;opacity:1}
.defile{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* Bande inverse (zones sombres de la charte) */
.bande{background:var(--band);color:var(--band-ink);border-radius:var(--r-panel);padding:20px 22px;display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.bande p{color:var(--band-mute);font-size:.875rem}
.bande .btn{background:var(--band-ink);color:var(--band)}

/* Modale : un voile et une feuille (jamais alert/confirm) */
.ovl{position:fixed;inset:0;background:rgb(10 10 10/.4);z-index:40}
.sheet{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--surface);border-left:1px solid var(--line);z-index:50;
  display:flex;flex-direction:column;animation:entre .3s var(--ease)}
.sheet.large{width:min(1100px,100%)}
@keyframes entre{from{transform:translateX(24px);opacity:0}}
@media (prefers-reduced-motion:reduce){.sheet{animation:none}}
.sheet-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:24px;border-bottom:1px solid var(--line)}
.sheet-corps{padding:24px;overflow-y:auto;display:grid;gap:18px;align-content:start}
.sheet-pied{padding:16px 24px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.dl{display:grid;grid-template-columns:110px 1fr;gap:10px 14px;font-size:.875rem}
.dl dt{color:var(--gray-600)} .dl dd{font-weight:500}

/* Onglets en gélule */
.onglets{display:flex;gap:8px;overflow-x:auto}

/* ==========================================================================
   Propre à Baraque Studio
   ========================================================================== */

/* Logo : « baraque » en Fira Sans normale, « studio » en Fira Sans Thin, à l'encre.
   Du texte et non une image : il suit le thème (noir le jour, blanc la nuit). */
.marque{display:inline-flex;align-items:baseline;gap:.1em;font-size:1.75rem;line-height:1;letter-spacing:-.02em;color:var(--ink);white-space:nowrap}
.marque b{font-weight:400}
.marque span{font-weight:100}
.entete-logo{flex:none;display:block}
.connexion-carte .marque{display:flex;justify-content:center;font-size:2.25rem;margin:4px 0 28px}

/* Nav : l'avatar de la personne connectée, au bout de la rangée */
.entete-nav .bouton-theme svg{width:20px;height:20px}
.grille.g-2,.grille.g-2-1{align-items:start}
/* Le menu est en noir et blanc : les icônes perdent leur pastille de couleur.
   Seule exception : l'avatar de la personne connectée, sur le vert pastel. */
.entete-nav .ic [fill^="var"]{fill:transparent}
.entete-nav .moi{font-size:.8125rem;font-weight:600;background:var(--sage);border-color:transparent}
.erreur-form{min-height:1.2em;margin:-4px 0 12px;font-size:.875rem;color:#C2362F;text-align:center}
html[data-theme="dark"] .erreur-form{color:#FF8A80}

/* Infobulle du menu : fond encre, nom en gras, une phrase ; petite flèche vers le bouton */
.bulle-nav{position:fixed;z-index:90;max-width:260px;padding:10px 14px;border-radius:12px;background:var(--band);color:var(--band-ink);pointer-events:none;
  display:grid;gap:2px;animation:bulle-entre .15s var(--ease)}
.bulle-nav b{font-size:.875rem;font-weight:600}
.bulle-nav span{font-size:.8125rem;color:var(--band-mute);line-height:1.35}
.bulle-nav::before{content:"";position:absolute;top:-5px;left:calc(var(--fleche,50%) - 6px);width:12px;height:12px;background:var(--band);transform:rotate(45deg);border-radius:2px}
@keyframes bulle-entre{from{opacity:0;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.bulle-nav{animation:none}}

/* Illustration de la page, dans la carte de titre */
.demande{position:relative}
.demande-illu{flex:none;width:170px;height:96px;border-radius:var(--r-card);background:var(--p);display:grid;place-items:center;overflow:hidden}
.demande-illu .illu-etat{width:150px;height:auto}
.demande .sur{order:3}
@media (max-width:900px){.demande-illu{display:none}}

/* Sélecteur de projet (gélules) au-dessus des écrans d'un projet */
.selecteur{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.selecteur .gelules{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:1px}
.selecteur .gelules::-webkit-scrollbar{display:none}
.selecteur .gelule{flex:none;display:inline-flex;align-items:center;gap:8px}
.selecteur .gelule i{width:10px;height:10px;border-radius:50%;background:var(--p);border:1px solid color-mix(in srgb,var(--ink) 20%,transparent)}
.outils{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.outils .btn{height:40px;padding:0 14px;font-size:.875rem}
.outils .btn .ic{width:18px;height:18px}
.outils .btn .ic [fill^="var"]{fill:transparent}
.recherche{height:40px;min-width:220px;padding:0 14px;font:inherit;font-size:.9375rem;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-pill)}
.recherche:focus{outline:none;border-color:var(--ink)}

/* Accueil : le jour, puis la pilule des chiffres (la « tête » de KouriHome) */
.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px 32px;flex-wrap:wrap}
.hero .quand{display:flex;flex-direction:column;gap:6px;min-width:0}
.hero .salut{font-size:3.5rem;font-weight:600;letter-spacing:-.04em;line-height:1}
.hero .jour{font-size:1.25rem;font-weight:500;color:var(--muted);letter-spacing:-.012em}
.hero .jour::first-letter{text-transform:uppercase}
.pilule{display:flex;align-items:center;flex-wrap:nowrap;max-width:100%;min-width:0;gap:18px;border-radius:var(--r-pill);background:var(--soft);padding:14px 26px}
.pilule .seg{display:grid;gap:2px;min-width:0}
.pilule .seg + .seg{padding-left:18px;border-left:1px solid color-mix(in srgb,var(--ink) 16%,transparent)}
.pilule .lib{font-size:.8125rem;font-weight:600;color:color-mix(in srgb,var(--ink) 60%,transparent);white-space:nowrap}
.pilule .val{font-size:1.625rem;font-weight:600;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums;white-space:nowrap}
.pilule .val small{font-size:.9375rem;font-weight:500;letter-spacing:0;color:color-mix(in srgb,var(--ink) 60%,transparent);margin-left:4px}

/* Cartes projet : pastel = le projet */
.projets{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.projet{display:flex;flex-direction:column;gap:18px;padding:22px;border-radius:var(--r-panel);background:var(--p);color:var(--ink);min-height:300px;
  text-align:left;transition:transform .2s var(--ease)}
.projet:hover{transform:translateY(-3px)}
@media (prefers-reduced-motion:reduce){.projet:hover{transform:none}}
.projet-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.projet-nom{font-size:1.625rem;font-weight:700;letter-spacing:-.03em;line-height:1.1}
.projet-client{display:block;margin-top:4px;font-size:.875rem;color:color-mix(in srgb,var(--ink) 64%,transparent)}
.projet .pastille{background:color-mix(in srgb,var(--surface) 70%,transparent)}
.projet-chiffre{margin-top:auto}
.projet-chiffre .lib-mini,.projet-chiffre .valeur{display:block}
.projet-chiffre .valeur{font-size:3.25rem;font-weight:700;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.projet-chiffre .valeur small{font-size:1.125rem;font-weight:500;letter-spacing:0;margin-left:4px}
.projet .piste{background:color-mix(in srgb,var(--ink) 12%,transparent);margin-top:10px}
.projet-bas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding-top:14px;border-top:1px solid color-mix(in srgb,var(--ink) 12%,transparent)}
.projet-bas b{display:block;margin-top:4px;font-size:1.125rem;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.lib-mini{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:color-mix(in srgb,var(--ink) 64%,transparent)}
.projet.nouveau{background:transparent;border:1px dashed var(--gray-300);align-items:center;justify-content:center;color:var(--gray-600);min-height:300px}
.projet.nouveau:hover{border-color:var(--ink);color:var(--ink)}
.projet.nouveau .rond{width:52px;height:52px}

/* Indicateurs en rangée */
.indics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.indic{padding:18px 20px;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface)}
.indic .lib-mini{color:var(--muted)}
.indic .valeur small{margin-left:4px}
.indic .sous{font-size:.8125rem;color:var(--gray-600)}
.indic.plein{background:var(--p);border-color:transparent}
.indic.plein .lib-mini,.indic.plein .sous{color:color-mix(in srgb,var(--ink) 64%,transparent)}

/* Tableaux de données : chiffres à droite, lignes cliquables */
.tab th.n,.tab td.n{text-align:right;white-space:nowrap}
.tab tbody tr.clic{cursor:pointer;transition:background-color .12s}
.tab tbody tr.clic:hover td{background:var(--soft)}
.tab td .sous{display:block;font-size:.75rem;color:var(--gray-600);margin-top:2px}
.tab td b{font-weight:600}
.tab tr.groupe td{padding-top:22px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);border-bottom:1px solid var(--line)}
.tab tr.groupe:first-child td{padding-top:8px}
.tab tr.groupe td .n{float:right;letter-spacing:0;text-transform:none;font-size:.8125rem;color:var(--gray-600);font-variant-numeric:tabular-nums}
.tab tfoot td{padding:14px 12px 4px;border-top:1px solid var(--ink);border-bottom:0;font-weight:600}
.tab .barre-cell{min-width:120px}
.tab .barre-cell .piste{height:6px}
.tab .barre-cell small{display:block;font-size:.75rem;color:var(--gray-600);margin-top:4px;font-variant-numeric:tabular-nums}
.tab .pastilles{display:flex;flex-wrap:wrap;gap:4px}
.tab .ic.s20 [fill^="var"]{fill:transparent}
.tab .vide-cell{color:var(--faint)}
.lot-nom{display:flex;align-items:center;gap:10px}
.lot-nom .puce{flex:none;width:32px;height:32px;border-radius:10px;background:var(--soft);display:grid;place-items:center;font-size:.75rem;font-weight:600;color:var(--gray-600)}
.marque-approx{display:inline-block;margin-left:6px;font-size:.6875rem;font-weight:600;color:var(--gray-600);background:var(--peach);padding:1px 7px;border-radius:var(--r-pill)}

/* Graphique : une série à l'encre, grille et axes discrets, données au survol */
.graphique{width:100%;height:auto;display:block;overflow:visible}
.g-barre{fill:var(--ink)}
.g-zone{fill:transparent;cursor:default}
.g-zone:hover + .g-barre,.g-barre.survol{fill:var(--gray-600)}
.g-grille{stroke:var(--line);stroke-width:1}
.g-axe{font:500 11px "Fira Sans",sans-serif;fill:var(--muted)}
.infobulle{position:fixed;z-index:60;pointer-events:none;padding:6px 10px;border-radius:8px;background:var(--band);color:var(--band-ink);font-size:.8125rem;font-weight:500;white-space:nowrap}
.infobulle b{font-weight:700}

/* Journal de chantier */
.journal{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.journal li{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:14px;align-items:start;padding:14px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);cursor:pointer;transition:border-color .15s}
.journal li:hover{border-color:var(--gray-300)}
.journal .marque-j{width:44px;height:44px;border-radius:var(--r-pill);display:grid;place-items:center;background:var(--soft)}
.journal .marque-j .ic{width:20px;height:20px}
.journal .marque-j .ic [fill^="var"]{fill:transparent}
.journal li.probleme .marque-j{background:var(--blush)} .journal li.livraison .marque-j{background:var(--peach)}
.journal li.avancement .marque-j{background:var(--sage)} .journal li.reunion .marque-j{background:var(--sky)}
.journal li.visite .marque-j{background:var(--lilac)}
.journal b{display:block;font-weight:600;font-size:.9375rem}
.journal p{font-size:.875rem;color:var(--gray-600);margin-top:2px;white-space:pre-line;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.journal .meta{display:grid;justify-items:end;gap:6px;font-size:.75rem;color:var(--gray-600);font-variant-numeric:tabular-nums;white-space:nowrap}

/* Avancement par lot */
.avancements{display:grid;gap:12px}
.avancement{display:grid;grid-template-columns:minmax(140px,220px) 1fr 52px;gap:14px;align-items:center;font-size:.875rem;width:100%;text-align:left;
  padding:6px 8px;margin:0 -8px;border-radius:10px}
.avancement:hover{background:var(--soft)}
.avancement b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.avancement .num{text-align:right;font-weight:600}
.avancement .piste i.fini{background:var(--gray-600)}

/* Formulaires dans la feuille */
.champ textarea{width:100%;min-height:96px;padding:12px 16px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);
  border:1px solid var(--gray-300);border-radius:var(--r-btn);resize:vertical}
.champ textarea:focus,.champ select:focus{outline:none;border-color:var(--ink)}
.champ select{padding:0 12px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn)}
.champ .aide{display:block;margin-top:6px;font-size:.75rem;color:var(--gray-600)}
.champ input[type="range"]{height:auto;padding:0;border:0;accent-color:var(--ink)}
.coches{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px 14px;max-height:280px;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:var(--r-btn)}
.coches label{display:flex;align-items:center;gap:8px;font-size:.875rem;font-weight:400;color:var(--ink);margin:0;cursor:pointer}
.coches input{width:18px;height:18px;accent-color:var(--ink);flex:none}
.sheet-tete .h2{margin-top:4px}
.sheet-tete .eyebrow{display:block}
.sheet-corps .panneau{padding:16px}
.sheet-pied .btn.danger{margin-right:auto;background:transparent;color:#C2362F;border:1px solid color-mix(in srgb,#C2362F 40%,transparent)}
html[data-theme="dark"] .sheet-pied .btn.danger{color:#FF8A80;border-color:color-mix(in srgb,#FF8A80 40%,transparent)}
.sheet-corps .erreur-form{text-align:left;margin:0}
.statuts{display:flex;gap:8px;flex-wrap:wrap}
.statuts .btn{height:40px;font-size:.875rem;padding:0 14px}
.paiements{display:grid;gap:6px}
.paiement{display:grid;grid-template-columns:96px minmax(0,1fr) auto 32px;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;background:var(--soft);font-size:.875rem}
.paiement .num{font-weight:600;text-align:right}
.paiement small{display:block;font-size:.75rem;color:var(--gray-600);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.paiement .rond{width:32px;height:32px}
.paiement .rond svg{width:14px;height:14px}
.ajout-paiement{display:grid;grid-template-columns:150px 1fr 1.4fr auto;gap:8px}
.ajout-paiement input{height:44px;padding:0 12px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn);min-width:0}
.ajout-paiement input:focus{outline:none;border-color:var(--ink)}

/* Matrice des droits */
.matrice td,.matrice th{text-align:center}
.matrice td:first-child,.matrice th:first-child{text-align:left}
.matrice input{width:20px;height:20px;accent-color:var(--ink)}
.matrice tr.famille td{padding-top:18px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);text-align:left}

/* Pastilles de statut (achats, projets, groupes) */
.pastille.demande{background:var(--peach)} .pastille.valide{background:var(--sky)} .pastille.commande{background:var(--lilac)}
.pastille.livre{background:var(--sage)} .pastille.refuse{background:var(--blush)}
.pastille.etude{background:var(--sky)} .pastille.en_cours{background:var(--peach)} .pastille.reception{background:var(--mint)} .pastille.clos{background:var(--soft)}
.pastille.superadmin{background:var(--band);color:var(--band-ink)} .pastille.direction{background:var(--lilac)} .pastille.operationnel{background:var(--sage)}

.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:70;padding:12px 18px;border-radius:var(--r-pill);background:var(--band);color:var(--band-ink);font-size:.875rem;font-weight:500;animation:entre .25s var(--ease)}


/* Réglages : un résumé, puis six cartes illustrées */
.etats-resume{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:20px 24px;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface)}
.etats-score{display:flex;align-items:baseline;gap:12px}
.etats-score .valeur{font-size:3rem;font-weight:700;letter-spacing:-.04em;line-height:1}
.etats-score .valeur small{font-size:1.25rem;font-weight:500;color:var(--muted);letter-spacing:0}
.etats-score .lib{font-size:1rem;font-weight:500;color:var(--gray-600)}
.etats-points{display:flex;flex-wrap:wrap;gap:8px;flex:1}
.etat-point{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line);font-size:.875rem;font-weight:500}
.etat-point:hover{border-color:var(--gray-300)}
.etat-point i,.etat-badge i{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.etat-point.ok i,.etat-badge.ok i{background:#1F9D55}
.etat-point.attention i,.etat-badge.attention i{background:#F2A20C}
.etat-point.ko i,.etat-badge.ko i{background:#E5484D}
.etats-grille{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.etat-carte{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);overflow:hidden}
.etat-illu{background:var(--p);display:grid;place-items:center;height:170px}
.illu-etat{width:min(240px,80%);height:auto}
.il-t{fill:none;stroke:var(--ink);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.il-s{fill:var(--surface)}
.il-s.il-t{stroke:var(--ink)}
.il-k{fill:var(--ink)}
.il-tirets{stroke-dasharray:4 6}
.il-fin{stroke-width:.75;opacity:.45}
.etat-corps{display:flex;flex-direction:column;gap:14px;padding:20px;flex:1}
.etat-tete{display:flex;justify-content:space-between;align-items:center;gap:10px}
.etat-badge{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 12px;border-radius:var(--r-pill);font-size:.75rem;font-weight:600;white-space:nowrap;background:var(--soft)}
.etat-badge.ok{background:var(--sage)} .etat-badge.attention{background:var(--peach)} .etat-badge.ko{background:var(--blush)}
.etat-phrase{font-size:.9375rem;color:var(--gray-800);line-height:1.45}
.etat-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 14px;font-size:.8125rem;margin:0}
.etat-dl dt{color:var(--gray-600)} .etat-dl dd{margin:0;font-weight:500;min-width:0;overflow-wrap:anywhere}
.etat-carte code{font:500 .75rem ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--soft);padding:1px 6px;border-radius:6px}
.etat-actions{margin-top:auto;padding-top:4px;display:flex;gap:8px}
.etat-actions .btn{height:40px;font-size:.875rem}
.etat-note{font-size:.75rem;color:var(--gray-600);padding:8px 10px;border-radius:10px;background:var(--soft)}
.etat-actions{flex-wrap:wrap}
.etat-actions .btn .ic{width:18px;height:18px}
.etat-actions .btn .ic [fill^="var"]{fill:transparent}
.invit-tg{display:grid;gap:10px;padding:14px;border-radius:var(--r-card);background:var(--sky)}
.invit-lien{display:flex;gap:8px}
.invit-lien input{flex:1;min-width:0;height:40px;padding:0 12px;font:500 .8125rem ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn)}
.invit-envoi{display:flex;gap:8px;flex-wrap:wrap}
.invit-tg .btn{height:38px;font-size:.8125rem;padding:0 12px;background:var(--surface)}
.invit-tg .btn .ic{width:16px;height:16px}
.ct.a-relier{opacity:.55;outline:2px dashed #229ED9;outline-offset:2px}
.ct.a-relier:hover{opacity:1}
.tg-liaison h3{display:flex;align-items:center;gap:8px}
.tg-liaison h3 .ic,.tg-liaison .btn .ic{color:#229ED9;width:20px;height:20px}
.tg-liaison .btn:not(.contour) .ic{color:currentColor}
.tg-liaison p{margin-bottom:10px}
.test-res{margin:0;padding:10px 12px;border-radius:10px;font-size:.875rem;font-weight:500}
.test-res.ok{background:var(--sage)} .test-res.ko{background:var(--blush)}
.sauv-liste{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.sauv-liste li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;font-size:.8125rem;padding:6px 10px;border-radius:8px;background:var(--soft)}
.alerte-txt{color:#C2362F}
html[data-theme="dark"] .alerte-txt{color:#FF8A80}
.disque{display:grid;gap:6px}
.disque-tete{display:flex;justify-content:space-between;font-size:.8125rem;color:var(--gray-600)}
.disque-tete b{color:var(--ink)}
.piste i.plein{background:#E5484D}
@media (max-width:1180px){.etats-grille{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.etats-grille{grid-template-columns:minmax(0,1fr)}.etats-resume{gap:14px}.etats-resume .btn{width:100%}.etat-illu{height:140px}}

/* Derrière la messagerie, la page est floutée */
.ovl.flou{background:rgb(10 10 10/.18);backdrop-filter:blur(10px) saturate(.9);-webkit-backdrop-filter:blur(10px) saturate(.9)}
@media (prefers-reduced-transparency:reduce){.ovl.flou{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgb(10 10 10/.4)}}

/* ---------- Données de référence ---------- */
.ref-table td{padding:6px 8px}
.ref-champ,.ref-ajout input{width:100%;height:42px;padding:0 12px;font:inherit;font-size:15px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px}
.ref-champ:hover{border-color:var(--gray-300)} .ref-champ:focus,.ref-ajout input:focus{outline:none;border-color:var(--ink)}
.ref-table .rs-bouton{height:42px;font-size:15px;border-color:var(--line);border-radius:10px}
.ref-ordre{display:inline-flex;gap:4px}
.ref-ordre .rond,.ref-table .rond,.ref-ligne .rond,.ref-type .rond{width:32px;height:32px;font-size:.875rem}
.ref-ordre .rond:disabled{opacity:.3;cursor:default}
.ref-ajout{display:flex;gap:8px;margin-top:12px;align-items:center}
.ref-ajout > div{min-width:200px}
.ref-ajout .btn{height:42px;flex:none}
.ref-ajout .btn .ic{width:18px;height:18px}
.ref-types{display:grid;gap:14px}
.ref-type{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--r-card)}
.ref-type-tete{display:flex;align-items:center;gap:10px}
.ref-type-nom{font-weight:600;font-size:1.0625rem}
.ref-familles{display:grid;gap:10px}
.ref-familles .lib-mini{display:block;color:var(--muted);margin-bottom:6px}
.ref-zones{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
.ref-liste{display:grid;gap:6px}
.ref-ligne{display:flex;align-items:center;gap:6px}
.ref-ligne .ref-champ{flex:1;min-width:0}
@media (max-width:1180px){.ref-zones{grid-template-columns:minmax(0,1fr)}}

/* ---------- Clients ---------- */
.clients-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.client-carte{display:flex;flex-direction:column;gap:14px;padding:20px;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);cursor:pointer;transition:border-color .15s,transform .2s var(--ease)}
.client-carte:hover{border-color:var(--gray-300);transform:translateY(-2px)}
@media (prefers-reduced-motion:reduce){.client-carte:hover{transform:none}}
.client-tete{display:flex;align-items:center;gap:12px}
.client-avatar{flex:none;width:48px;height:48px;border-radius:var(--r-pill);display:grid;place-items:center;font-weight:600;color:var(--ink)}
.client-avatar.grand{width:64px;height:64px;font-size:1.25rem}
.client-nom{flex:1;min-width:0;display:grid}
.client-nom b{font-size:1.0625rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.client-nom span{font-size:.8125rem;color:var(--gray-600)}
.client-contact{font-size:.875rem;margin:0}
.client-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.client-stats > div{display:grid;gap:2px}
.client-stats .lib-mini{color:var(--muted)}
.client-stats b{font-size:1.25rem;font-weight:700;letter-spacing:-.02em}
.client-stats .alerte-chiffre b{color:#C2362F}
.client-pied{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;flex-wrap:wrap}
.client-projet{height:38px;font-size:.875rem;gap:8px;padding:0 12px}
.client-projet i{width:10px;height:10px;border-radius:50%;background:var(--p);border:1px solid color-mix(in srgb,var(--ink) 20%,transparent)}
.client-projet .ic{width:16px;height:16px}
.client-hero{display:grid;grid-template-columns:280px minmax(0,1fr);border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);overflow:hidden}
.client-hero-illu{background:var(--p);display:grid;place-items:center;min-height:220px}
.client-hero-illu .illu-etat{width:min(230px,85%)}
.client-hero-corps{padding:22px 24px;display:grid;gap:16px;align-content:start}
.client-hero-corps .client-tete{flex-wrap:wrap}
.client-fiche{display:grid;grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);gap:8px 16px;margin:0;font-size:.875rem}
.client-fiche dt{color:var(--gray-600)} .client-fiche dd{margin:0;font-weight:500;overflow-wrap:anywhere}
.client-fiche code{font:500 .8125rem ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--soft);padding:1px 6px;border-radius:6px}
@media (max-width:900px){.client-hero{grid-template-columns:minmax(0,1fr)}.client-hero-illu{min-height:150px}.client-fiche{grid-template-columns:auto minmax(0,1fr)}}

/* ---------- Facturation ---------- */
#fact-corps,#rec-corps,#pf-corps,#fact-vue,#fact-edit{display:grid;gap:18px}
.lignes-fact textarea{field-sizing:content;max-height:160px}
.fact-hero{display:grid;grid-template-columns:260px minmax(0,1fr);border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);overflow:hidden}
.fact-hero-illu{background:var(--p);display:grid;place-items:center;min-height:190px}
.fact-hero-illu .illu-etat{width:min(220px,85%)}
.fact-hero-corps{padding:22px 24px;display:flex;flex-direction:column;gap:14px;justify-content:center}
.fact-hero-corps p{max-width:70ch;font-size:.9375rem}
.fact-chiffres{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.fact-chiffres > div{display:grid;gap:2px}
.fact-chiffres .lib-mini{color:var(--muted)}
.fact-chiffres b{font-size:1.75rem;font-weight:700;letter-spacing:-.03em;line-height:1.1}
.fact-chiffres small{font-size:.8125rem;color:var(--gray-600)}
.fact-chiffres .alerte-chiffre b{color:#C2362F}
html[data-theme="dark"] .fact-chiffres .alerte-chiffre b{color:#FF8A80}
.fact-ia-rapide{display:flex;gap:8px;flex-wrap:wrap}
.fact-ia-rapide .btn,.ia-demande .btn{height:40px;font-size:.875rem}
.fact-ia-rapide .ic,.ia-demande .ic,.ia-tete .ic{width:18px;height:18px}
.fact-ia-rapide .ic [fill^="var"],.ia-demande .btn .ic [fill^="var"]{fill:transparent}
.fact-vide{display:grid;justify-items:center;gap:12px;padding:28px 12px;text-align:center;color:var(--gray-600)}
.fact-vide .illu-etat{width:180px;opacity:.85}
/* Assistant IA : un terminal, comme Gusto Club Secure */
.ia-panneau{border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);padding:14px;display:grid;gap:10px}
.ia-tete{display:flex;align-items:center;gap:8px}
.ia-tete .rond{margin-left:auto;width:32px;height:32px}
.terminal{margin:0;background:#0a0d0f;color:#d6dde3;font:12.5px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;border-radius:var(--r-card);
  padding:14px 16px;max-height:360px;min-height:120px;overflow:auto;white-space:pre-wrap;word-break:break-word}
.terminal .t-log{color:#8fd19e} .terminal .t-ia{color:#e6edf3} .terminal .t-err{color:#ff7b72;font-weight:600}
.ia-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ia-actions p{flex-basis:100%;margin:0}
.ia-actions .btn{height:40px;font-size:.875rem}
.ia-demande{display:grid;gap:10px}
.ia-demande textarea{width:100%;padding:10px 12px;font:inherit;font-size:15px;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn);resize:vertical}
.ia-demande textarea:focus{outline:none;border-color:var(--ink)}
/* Éditeur : formulaire à gauche, totaux et assistant collés à droite */
.fact-cols{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}
.fact-col-principale{display:grid;gap:16px;min-width:0}
.fact-col-cote{display:grid;gap:16px;position:sticky;top:16px;align-content:start}
.fact-edition .fp-section{grid-template-columns:minmax(0,1fr);gap:14px}
.fact-edition .fp-tete p{max-width:none}
.lignes-fact{width:100%;border-collapse:collapse;min-width:720px}
.lignes-fact th{text-align:left;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:0 6px 8px}
.lignes-fact td{padding:4px 3px;vertical-align:top}
.lignes-fact td:nth-child(1){width:40%}
.lignes-fact textarea,.lignes-fact input{width:100%;min-height:42px;padding:9px 10px;font:inherit;font-size:15px;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:10px;resize:vertical}
.lignes-fact textarea:focus,.lignes-fact input:focus{outline:none;border-color:var(--ink)}
.lignes-fact .rs-bouton{height:42px;font-size:15px;padding:0 8px 0 10px;border-radius:10px}
.lignes-fact .total-ligne{padding-top:14px;font-weight:600;white-space:nowrap}
.lignes-fact .rond{width:36px;height:36px;margin-top:3px}
.fact-outils-lignes{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.fact-outils-lignes .btn{height:40px;font-size:.875rem}
.fact-outils-lignes .ic{width:18px;height:18px} .fact-outils-lignes .ic [fill^="var"]{fill:transparent}
.totaux-fact{display:grid;grid-template-columns:1fr auto;gap:8px 12px;margin:12px 0 0;font-size:.9375rem}
.totaux-fact dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;font-weight:500}
.totaux-fact dt small{display:block;font-size:.75rem;color:var(--gray-600)}
.totaux-fact .ttc{padding-top:10px;border-top:1px solid var(--ink);font-size:1.25rem;font-weight:700}
.marches-fact{display:grid;gap:6px;max-height:420px;overflow:auto}
.marche-fact{display:grid;grid-template-columns:20px minmax(0,1fr) 92px;gap:10px;align-items:center;padding:10px 12px;border-radius:var(--r-card);background:var(--soft);cursor:pointer}
.marche-fact input[type=checkbox]{width:18px;height:18px;accent-color:var(--ink)}
.marche-fact small{display:block;font-size:.75rem;color:var(--gray-600)}
.marche-fact .pct{display:flex;align-items:center;gap:4px;font-size:.875rem}
.marche-fact .pct input{width:60px;height:36px;padding:0 8px;font:inherit;text-align:right;border:1px solid var(--gray-300);border-radius:8px;background:var(--surface);color:var(--ink)}
/* Facture émise : le document à gauche (comme imprimé), le suivi à droite */
.fact-vue{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}
.fact-doc{border:1px solid var(--line);border-radius:var(--r-panel);background:#fff;overflow:hidden}
.fact-doc iframe{display:block;width:100%;height:1050px;border:0;background:#fff}
.fact-actions{display:grid;gap:8px}
.fact-actions .btn{width:100%;height:42px;font-size:.875rem}
.fact-actions .ic{width:18px;height:18px} .fact-actions .ic [fill^="var"]{fill:transparent}
.outils a.btn .ic,.outils .btn .ic{width:18px;height:18px}
.btn.danger{background:transparent;color:#C2362F;border:1px solid color-mix(in srgb,#C2362F 40%,transparent)}
html[data-theme="dark"] .btn.danger{color:#FF8A80;border-color:color-mix(in srgb,#FF8A80 40%,transparent)}
/* Récurrences */
.rec-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.rec-carte{display:grid;gap:10px;padding:20px;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface)}
.rec-carte.en-pause{opacity:.6}
.rec-tete{display:flex;justify-content:space-between;align-items:center;gap:10px}
.rec-montant{font-size:1.5rem;font-weight:700;letter-spacing:-.03em}
.rec-montant small{font-size:.8125rem;font-weight:500;color:var(--gray-600);letter-spacing:0}
@media (max-width:1180px){.fact-cols,.fact-vue{grid-template-columns:minmax(0,1fr)}.fact-col-cote{position:static}.fact-chiffres{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.fact-hero{grid-template-columns:minmax(0,1fr)}.fact-hero-illu{min-height:140px}.fact-doc iframe{height:720px}}

/* Messagerie : contacts à gauche, historique à droite, saisie en bas */
.chat{display:grid;grid-template-columns:300px minmax(0,1fr);flex:1;min-height:0}
.chat-contacts{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);padding:16px 12px}
.chat-contacts input,.chat-filtre input{height:42px;padding:0 14px;font:inherit;font-size:16px;color:var(--ink);background:var(--soft);border:1px solid transparent;border-radius:var(--r-pill)}
.chat-contacts input:focus,.chat-filtre input:focus{outline:none;border-color:var(--ink);background:var(--surface)}
.chat-liste{overflow-y:auto;margin-top:10px;display:grid;gap:2px;align-content:start}
.chat-contact{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:10px;border-radius:var(--r-card);text-align:left}
.chat-contact:hover{background:var(--soft)}
.chat-contact.actif{background:var(--ink);color:var(--page)}
.chat-contact.actif .chat-contact-txt span,.chat-contact.actif small{color:color-mix(in srgb,var(--page) 70%,transparent)}
.chat-contact.actif .avatar-chat{border-color:var(--page)}
.chat-contact-txt{min-width:0}
.chat-contact-txt b{display:block;font-weight:600;font-size:.9375rem}
.chat-contact-txt span{display:block;font-size:.8125rem;color:var(--gray-600);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-contact-meta{display:grid;justify-items:end;gap:4px}
.chat-contact-meta small{font-size:.75rem;color:var(--gray-600)}
.pastille-nonlu{min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--ink);color:var(--page);font-size:.6875rem;display:grid;place-items:center}
.chat-contact.actif .pastille-nonlu{background:var(--page);color:var(--ink)}
.avatar-chat{width:40px;height:40px;border-radius:var(--r-pill);border:1px solid transparent;color:var(--ink);display:grid;place-items:center;font-size:.8125rem;font-weight:600;flex:none}
.chat-conv{display:flex;flex-direction:column;min-height:0;min-width:0}
.chat-vide{flex:1;display:grid;place-content:center;justify-items:center;gap:14px;color:var(--gray-600);text-align:center;padding:24px}
.chat-vide .ic [fill^="var"]{fill:transparent}
.chat-tete{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line)}
.chat-tete-txt{flex:1;min-width:0}
.chat-tete-txt b{display:block;font-weight:600}
.chat-tete-txt span{font-size:.8125rem;color:var(--gray-600)}
.chat-retour{display:none;font-size:1.5rem;line-height:1}
.chat-filtre{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--line)}
.chat-filtre input{flex:1;min-width:0;height:38px}
.chat-fil{flex:1;min-height:0;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:6px}
.chat-jour{display:flex;justify-content:center;margin:12px 0 6px}
.chat-jour span{font-size:.75rem;font-weight:600;color:var(--gray-600);background:var(--soft);padding:4px 12px;border-radius:var(--r-pill)}
.chat-jour span::first-letter{text-transform:uppercase}
.bulle{max-width:min(78%,560px);padding:10px 14px;border-radius:16px;font-size:.9375rem;line-height:1.45}
.bulle p{white-space:pre-wrap;word-wrap:break-word}
.bulle.moi{align-self:flex-end;background:var(--ink);color:var(--page);border-bottom-right-radius:6px}
.bulle.lui{align-self:flex-start;background:var(--soft);border-bottom-left-radius:6px}
.bulle-meta{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin-top:4px;font-size:.6875rem;opacity:.75}
.bulle-canal{display:inline-flex;align-items:center;gap:4px;font-weight:600}
.bulle-canal .ic{width:14px;height:14px}
.bulle-canal .echec{color:#E5484D}
.bulle.moi .bulle-canal .echec{color:#FF8A80}
.moi-tag{display:inline-block;margin-left:4px;padding:0 7px;border-radius:var(--r-pill);background:var(--sage);color:var(--ink);font-size:.6875rem;font-weight:600;vertical-align:1px}
.bulle-projet{color:var(--ink);padding:1px 8px;border-radius:var(--r-pill);font-weight:600}
.chat-saisie{border-top:1px solid var(--line);padding:12px 20px 16px;display:grid;gap:10px}
.chat-saisie textarea{width:100%;min-height:64px;max-height:200px;padding:12px 14px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn);resize:vertical}
.chat-saisie textarea:focus{outline:none;border-color:var(--ink)}
.chat-actions{display:flex;align-items:center;gap:10px}
.chat-projet{flex:1;min-width:0;max-width:280px}
.chat-projet .rs-bouton{height:40px;font-size:.875rem}
.chat-canaux{display:inline-flex;gap:6px;margin-left:auto}
.chat-canaux .ct{width:40px;height:40px}
.chat-canaux .ct:disabled{opacity:.3;cursor:not-allowed;transform:none}
.chat-erreur{margin:0;text-align:left}
.chat-erreur:empty{display:none}
#sheet.large:has(#chat){width:min(1100px,100%)}
@media (max-width:760px){
  .chat{grid-template-columns:minmax(0,1fr)}
  .chat-contacts{border-right:0}
  .chat.fil-ouvert .chat-contacts{display:none}
  .chat:not(.fil-ouvert) .chat-conv{display:none}
  .chat-retour{display:inline-flex}
  .chat-actions{flex-wrap:wrap}
  .chat-projet{max-width:none;flex-basis:100%}
  .chat-actions .btn{flex:1}
}

/* Listes avec recherche : le <select> d'origine reste caché dans le formulaire, un bouton le remplace */
.rs-natif{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;overflow:hidden}
.rs-bouton{display:flex;align-items:center;gap:10px;width:100%;height:52px;padding:0 14px 0 16px;font:inherit;font-size:16px;text-align:left;color:var(--ink);
  background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn);transition:border-color .15s var(--ease)}
.rs-bouton:hover{border-color:var(--muted)}
.rs-bouton[aria-expanded="true"],.rs-bouton:focus-visible{outline:none;border-color:var(--ink)}
.rs-bouton:disabled{cursor:default;color:var(--gray-600);background:var(--soft);border-color:var(--line)}
.rs-bouton.vide .rs-valeur{color:var(--muted)}
.rs-valeur{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rs-chevron{flex:none;width:18px;height:18px;color:var(--gray-600);transition:transform .2s var(--ease)}
.rs-bouton[aria-expanded="true"] .rs-chevron{transform:rotate(180deg)}
.rs-bouton.pilule-rs{width:auto;min-width:180px;height:40px;font-size:.9375rem;border-radius:var(--r-pill);border-color:var(--line)}
.rs-pop{position:fixed;z-index:80;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--ink);border-radius:var(--r-card);padding:8px}
.rs-cherche{flex:none;height:42px;padding:0 12px;margin-bottom:6px;font:inherit;font-size:16px;color:var(--ink);background:var(--soft);border:1px solid transparent;border-radius:10px}
.rs-cherche:focus{outline:none;border-color:var(--ink);background:var(--surface)}
.rs-liste{list-style:none;margin:0;padding:0;overflow-y:auto;min-height:0}
.rs-liste li{padding:10px 12px;border-radius:8px;font-size:.9375rem;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rs-liste li.actif{background:var(--soft)}
.rs-liste li.choisi{font-weight:600}
.rs-liste li.choisi::after{content:" ✓"}
.rs-liste li.neutre{color:var(--gray-600)}
.rs-liste li.rs-rien{color:var(--muted);cursor:default}
.tel .rs-bouton{padding:0 10px 0 12px}

/* Téléphone : l'indicatif à gauche, le numéro à droite */
.tel{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:8px}
.tel select,.tel input{height:52px;padding:0 12px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn);min-width:0;width:100%}
.tel select:focus,.tel input:focus{outline:none;border-color:var(--ink)}
.msg-meme{margin:-4px 0 12px;font-size:.875rem;font-weight:500}
.msg-meme + .msg-champ + .msg-meme{margin-top:0}
.msg-champ:not([hidden]){margin-bottom:4px}
.msg-meme.wa .ic{color:#1FAF57}
.msg-meme.tg .ic{color:#229ED9}
/* Pastilles de contact : rondes, cliquables ; WhatsApp et Telegram gardent leur couleur, seules couleurs de marque admises */
.contacts{display:inline-flex;gap:6px;align-items:center}
.ct{width:34px;height:34px;border-radius:var(--r-pill);display:grid;place-items:center;color:var(--ink);transition:transform .15s var(--ease)}
.ct .ic{width:18px;height:18px}
.ct:hover{transform:scale(1.08)}
.ct-mail{background:var(--sky)} .ct-tel{background:var(--sage)}
.ct-wa{background:#25D366;color:#FFFFFF}
.ct-tg{background:#26A5E4;color:#FFFFFF}
@media (prefers-reduced-motion:reduce){.ct:hover{transform:none}}

/* Page « Nouveau projet » : sections numérotées, titre à gauche, champs à droite, barre d'actions collée en bas */
.formulaire-page{display:grid;gap:16px;padding-bottom:8px}
.fp-section{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:24px 40px;padding:24px;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface)}
.fp-tete{display:flex;gap:14px;align-items:flex-start}
.fp-tete p{margin-top:6px;font-size:.875rem;color:var(--gray-600);max-width:34ch}
.fp-num{flex:none;width:32px;height:32px;border-radius:var(--r-pill);background:var(--ink);color:var(--page);display:grid;place-items:center;font-size:.875rem;font-weight:600}
.fp-corps{min-width:0}
.fp-corps .champ:last-child{margin-bottom:0}
.fp-corps input:not([type=checkbox]):not([type=radio]){width:100%;height:52px;padding:0 16px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);
  border:1px solid var(--gray-300);border-radius:var(--r-btn)}
.fp-corps input:focus{outline:none;border-color:var(--ink)}
.fp-corps input.fp-grand{height:60px;font-size:1.375rem;font-weight:600;letter-spacing:-.02em}
.choix-gelule{position:relative;cursor:pointer}
.choix-gelule input{position:absolute;opacity:0;pointer-events:none}
.choix-gelule span{display:inline-flex;align-items:center;height:40px;padding:0 16px;border-radius:var(--r-pill);border:1px solid var(--line);font-size:.875rem;font-weight:500;color:var(--gray-600);transition:border-color .15s,color .15s,background-color .15s}
.choix-gelule:hover span{border-color:var(--gray-300);color:var(--ink)}
.choix-gelule input:checked + span{background:var(--ink);border-color:var(--ink);color:var(--page)}
.choix-gelule input:focus-visible + span,.choix-couleur input:focus-visible + span,.puce-lot input:focus-visible + span{outline:2px solid var(--ink);outline-offset:2px}
.couleurs{display:flex;gap:10px;flex-wrap:wrap}
.choix-couleur{position:relative;cursor:pointer}
.choix-couleur input{position:absolute;opacity:0;pointer-events:none}
.choix-couleur span{display:block;width:40px;height:40px;border-radius:var(--r-pill);border:1px solid var(--line);transition:box-shadow .15s}
.choix-couleur input:checked + span{box-shadow:0 0 0 2px var(--page),0 0 0 4px var(--ink)}
.fp-outils{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.fp-outils .btn{height:36px;padding:0 10px;font-size:.8125rem}
.puces-lots{display:flex;flex-wrap:wrap;gap:8px}
.puce-lot{position:relative;cursor:pointer}
.puce-lot input{position:absolute;opacity:0;pointer-events:none}
.puce-lot span{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line);font-size:.875rem;color:var(--gray-600);transition:all .15s}
.puce-lot:hover span{border-color:var(--gray-300);color:var(--ink)}
.puce-lot input:checked + span{background:var(--peach);border-color:transparent;color:var(--ink);font-weight:500}
.puce-lot input:checked + span::before{content:"✓";font-weight:700}
.puce-lot.fige{cursor:default}
.puce-lot.fige input:checked + span{background:var(--soft)}
.fp-ajout{display:flex;gap:8px;margin-top:14px}
.fp-ajout input{flex:1;min-width:0}
.fp-ajout .btn{height:52px}
.fp-ajout .btn .ic{width:18px;height:18px}
.fp-section .btn.danger{background:transparent;color:#C2362F;border:1px solid color-mix(in srgb,#C2362F 40%,transparent)}
html[data-theme="dark"] .fp-section .btn.danger{color:#FF8A80;border-color:color-mix(in srgb,#FF8A80 40%,transparent)}
.fp-barre{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:10px;padding:14px 16px;margin:0 -4px;border:1px solid var(--line);border-radius:var(--r-panel);
  background:color-mix(in srgb,var(--page) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.fp-resume{flex:1;min-width:0;font-size:.875rem;color:var(--gray-600);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fp-barre .erreur-form{margin:0;text-align:left;order:-1}
.fp-barre .erreur-form:empty{display:none}
@media (max-width:860px){
  .fp-section{grid-template-columns:minmax(0,1fr);gap:16px;padding:18px}
  .fp-tete p{max-width:none}
  .fp-barre{flex-wrap:wrap}
  .fp-resume{flex-basis:100%}
  .fp-barre .btn{flex:1}
}

/* ---------- Responsive ---------- */
@media (max-width:1180px){
  .g-4,.indics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g-2-1,.g-3{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
  .appli{padding:16px 16px 32px}
  .entete{flex-direction:column;align-items:stretch;gap:12px}
  .marque{font-size:1.5rem}
  .entete-nav{gap:8px}
  .entete-nav a,.entete-nav button{width:46px;height:46px}
  .demande{padding:14px 16px;gap:14px}
  .demande .pas{width:44px;height:44px;border-radius:13px}
  .demande h1{font-size:1.375rem}
  .demande p{font-size:.9375rem}
  .demande .sur{display:none}
  .contenu{padding-top:16px;gap:18px}
  .g-2{grid-template-columns:minmax(0,1fr)}
  .indics{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
  .indic{padding:14px}
  .indic .valeur{font-size:1.5rem}
  .hero .salut{font-size:2.5rem}
  .hero .jour{font-size:1rem}
  .pilule{flex-wrap:wrap;border-radius:var(--r-panel);padding:14px 18px;gap:12px}
  .pilule .seg + .seg{padding-left:0;border-left:0}
  .projets{grid-template-columns:minmax(0,1fr)}
  .projet{min-height:0}
  .projet-chiffre .valeur{font-size:2.75rem}
  .recherche{min-width:0;flex:1}
  .champs2{grid-template-columns:1fr}
  .sheet-pied .btn{flex:1}
  .sheet-pied .btn.danger{margin-right:0}
  .avancement{grid-template-columns:minmax(0,1fr) 44px}
  .avancement .piste{grid-column:1/-1;grid-row:2}
  .journal li{grid-template-columns:44px minmax(0,1fr)}
  .journal .meta{grid-column:1/-1;justify-items:start;grid-auto-flow:column;justify-content:start;gap:10px}
  .ajout-paiement{grid-template-columns:1fr 1fr}
  .ajout-paiement .btn{grid-column:1/-1}
  .paiement{grid-template-columns:80px minmax(0,1fr) auto 32px}
  .tab.repli thead{display:none}
  .tab.repli tr.clic{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:12px 4px;border-bottom:1px solid var(--line)}
  .tab.repli tr.clic td{border:0;padding:0}
  .tab.repli tr.clic td.cache-m{display:none}
  .tab.repli tr.clic td.plein-m{grid-column:1/-1}
  .tab.repli tfoot tr{display:grid;grid-template-columns:1fr auto}
  .tab.repli tfoot td.cache-m{display:none}
  .tab.repli tr.groupe{display:block}
  .tab.repli tr.groupe td{display:block}
}
@media print{
  .entete-nav,.outils,.selecteur,.note-maquette{display:none!important}
  .appli{padding:0}
  .tab tbody tr.clic:hover td{background:none}
}

/* formulaire projet : choix du client + bouton « Nouveau client » ; bandeau de retour du formulaire client */
.fp-client{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.fp-client .champ{flex:1 1 260px;min-width:0;margin:0}
.fp-client>.btn{margin:0;height:52px}
.fp-retour{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 18px;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface)}
.fp-gps{display:flex;gap:10px;flex-wrap:wrap}
.fp-gps input{flex:1 1 260px;min-width:0}
.fp-gps .btn{height:auto}
.fp-carte{margin-top:10px;border:1px solid var(--line);border-radius:var(--r-panel);overflow:hidden;height:260px;background:var(--soft)}
.fp-carte iframe{display:block;width:100%;height:100%;border:0}
.fp-type-lots .puces-lots{margin-top:8px}
.fp-type-lots .puce-lot span{background:var(--peach);border-color:transparent;color:var(--ink);font-weight:500}
.fp-type-lots .puce-lot.deja span{background:var(--soft)}
.fp-type-lots .puce-lot.deja{opacity:1}
.erreur-txt{color:#C2362F}
html[data-theme="dark"] .erreur-txt{color:#FF8A80}
.chemin{font-size:.8125rem;overflow-wrap:anywhere}
.fp-type-lots:not(:empty){margin-bottom:14px}
/* Fenêtre centrée (assistant IA) : la feuille, posée au milieu */
.sheet.modale{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);width:min(760px,calc(100vw - 32px));max-height:min(88vh,860px);
  border:1px solid var(--line);border-radius:var(--r-panel);animation:pop .25s var(--ease)}
@keyframes pop{from{opacity:0;transform:translate(-50%,-48%)}}
.lib-ia{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.lib-ia label{margin:0}
.btn-ia{height:32px;padding:0 12px;font-size:.8125rem}
.ia-etat{display:flex;align-items:center;gap:10px;min-height:24px;font-size:.875rem}
.ia-reflexion{display:inline-flex;gap:4px}
.ia-reflexion i{width:6px;height:6px;border-radius:50%;background:var(--ink);animation:rebond 1s infinite ease-in-out}
.ia-reflexion i:nth-child(2){animation-delay:.15s}.ia-reflexion i:nth-child(3){animation-delay:.3s}
@keyframes rebond{0%,80%,100%{opacity:.2;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.ia-reflexion i{animation:none;opacity:.6}.sheet.modale{animation:none}}
#iad-texte{line-height:1.55}
.description-projet{margin-top:14px;font-size:.875rem;line-height:1.55;color:var(--gray-800);white-space:pre-line}
.coches.liste{grid-template-columns:1fr;max-height:none}
/* Fenêtre du code PIN (confirmation des suppressions) : au-dessus de tout, fond flou */
.pin-ovl{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:16px;background:rgb(10 10 10/.18);backdrop-filter:blur(10px) saturate(.9);-webkit-backdrop-filter:blur(10px) saturate(.9);animation:fondu .2s}
@media (prefers-reduced-transparency:reduce){.pin-ovl{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgb(10 10 10/.4)}}
@keyframes fondu{from{opacity:0}}
.pin-modale{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-panel);padding:28px 24px 22px;animation:pop2 .22s var(--ease)}
@keyframes pop2{from{opacity:0;transform:translateY(8px) scale(.98)}}
@media (prefers-reduced-motion:reduce){.pin-ovl,.pin-modale{animation:none}}
.pin-modale form{display:grid;gap:12px;text-align:center}
.pin-modale .champ{text-align:left;margin:0}
.pin-illu{justify-self:center;width:56px;height:56px;border-radius:50%;background:var(--blush);display:grid;place-items:center}
.pin-illu .ic{width:26px;height:26px}
.pin-quoi{font-weight:600;font-size:.9375rem;overflow-wrap:anywhere}
.pin-champ{text-align:center;font-size:1.5rem;letter-spacing:.5em;font-variant-numeric:tabular-nums;padding-left:.5em}
.pin-modale .erreur-form{margin:0}
.pin-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:4px}
.pin-actions .btn{flex:1 1 140px}
.btn.danger-plein{background:#C2362F;color:#fff;border-color:#C2362F}
.btn.danger-plein:hover{background:#A82D27}
/* ---------- Page d'un projet ---------- */
#contenu > .projet-id,#contenu > .prest,#contenu > .fil,#contenu > .encarts{margin-bottom:16px}
.projet-id{display:grid;gap:14px}
.projet-id-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.puces-info{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.puce-info{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--line);border-radius:var(--r-pill);font-size:.8125rem;font-weight:500;color:var(--ink);text-decoration:none}
a.puce-info:hover{border-color:var(--gray-300)}
.puce-info .ic{width:16px;height:16px}
.description-projet.repliee{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.projet-id .description-projet{margin:0;font-size:.9375rem}
.projet-id-pied{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-top:12px;border-top:1px solid var(--line)}
.projet-id-pied .lien{display:inline-flex;align-items:center;gap:4px;margin-left:auto}
.projet-id-pied .lien .ic{width:16px;height:16px}
.prest{display:grid;gap:14px}
.prest-titre{display:flex;align-items:center;gap:10px}
.prest-ico{width:34px;height:34px;border-radius:50%;display:grid;place-items:center}
.prest-ico .ic{width:18px;height:18px}
.prest-sous{margin:6px 0 0}
.etapes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;counter-reset:e}
.etapes li{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px dashed var(--line);border-radius:var(--r-card);font-size:.8125rem;color:var(--gray-600)}
.etape-num{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font-size:.75rem;font-weight:600;color:var(--ink)}
@media (max-width:900px){.etapes{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Fil du projet : alertes puis nouvelles, qui défilent ; pause au survol */
.fil{display:flex;align-items:center;gap:0;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);overflow:hidden;min-height:52px}
.fil-lib{display:inline-flex;align-items:center;gap:8px;align-self:stretch;padding:0 16px;background:var(--ink);color:var(--surface);font-size:.8125rem;font-weight:600;white-space:nowrap}
.fil.a-alertes .fil-lib{background:#C2362F;color:#fff}
.fil-lib .ic{width:16px;height:16px}
.fil-fenetre{flex:1;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent)}
.fil-piste{display:inline-flex;white-space:nowrap;animation:defile var(--duree,30s) linear infinite}
.fil:hover .fil-piste,.fil:focus-within .fil-piste{animation-play-state:paused}
.fil-double{display:inline-flex}
@keyframes defile{to{transform:translateX(-50%)}}
.fil-item{display:inline-flex;align-items:center;gap:8px;padding:0 22px;font-size:.875rem;color:var(--ink);text-decoration:none;border-right:1px solid var(--line)}
a.fil-item:hover{text-decoration:underline}
.fil-item i{width:7px;height:7px;border-radius:50%;background:var(--gray-300);flex:none}
.fil-item.alerte{font-weight:600}
.fil-item.alerte i{background:#C2362F}
.fil-vide{margin:0;padding:0 18px;font-size:.875rem;color:var(--gray-600)}
@media (prefers-reduced-motion:reduce){.fil-piste{animation:none;white-space:normal;flex-wrap:wrap;row-gap:8px;padding:10px 0}.fil-double{display:none}.fil-fenetre{mask-image:none}}
/* Encarts illustrés */
.encarts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media (max-width:1100px){.encarts{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:820px){.encarts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.encarts{grid-template-columns:minmax(0,1fr)}}
.encart{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface);overflow:hidden;text-decoration:none;color:var(--ink);text-align:left;padding:0;font:inherit;cursor:default;transition:border-color .15s,transform .15s}
a.encart,button.encart{cursor:pointer}
a.encart:hover,button.encart:hover{border-color:var(--gray-300);transform:translateY(-2px)}
@media (prefers-reduced-motion:reduce){a.encart:hover,button.encart:hover{transform:none}}
.encart-illu{background:var(--p);display:grid;place-items:center;height:120px}
.illu-encart{width:min(170px,80%);height:auto}
.encart-corps{display:flex;flex-direction:column;gap:4px;padding:14px 16px 16px;min-width:0}
.encart-titre{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--gray-600)}
.encart-valeur{font-size:1.5rem;font-weight:600;line-height:1.2}
.encart-detail{font-size:.8125rem;color:var(--gray-600);overflow-wrap:anywhere}
.encart-chemin{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:.6875rem;color:var(--gray-600);font-family:ui-monospace,Menlo,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.encart-chemin .ic{width:14px;height:14px;flex:none}
.avancements.deux-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px}
@media (max-width:820px){.avancements.deux-col{grid-template-columns:minmax(0,1fr)}}
.puce-dossier{cursor:pointer;background:none;font-family:ui-monospace,Menlo,monospace;font-size:.6875rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.projet-id{grid-template-columns:minmax(0,1fr)}
.puce-dossier{white-space:normal;overflow-wrap:anywhere;height:auto;min-height:32px;padding-top:6px;padding-bottom:6px;text-align:left}
/* ---------- Fournisseurs ---------- */
.four-carte{text-decoration:none;color:var(--ink)}
.four-carte.inactif{opacity:.55}
.four-logo{width:48px;height:48px;border-radius:12px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;overflow:hidden;flex:none;font-weight:600;font-size:.9375rem;color:var(--ink)}
.four-logo.vide{border-color:transparent}
.four-logo img{width:100%;height:100%;object-fit:contain;padding:4px}
.four-logo.grand{width:96px;height:96px;border-radius:18px;font-size:1.5rem}
.four-specs{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.faible{color:var(--gray-600)}
.four-nom-ligne{display:flex;gap:10px;flex-wrap:wrap}
.four-nom-ligne input{flex:1 1 280px;min-width:0}
.four-nom-ligne .btn{height:auto;min-height:44px}
.four-logo-ligne{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.four-logo-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.four-logo-actions .aide{flex-basis:100%}
.four-contacts{display:grid;gap:8px;margin-bottom:12px}
.four-contact{display:grid;grid-template-columns:24px repeat(2,minmax(0,1fr)) minmax(0,1.2fr) repeat(2,minmax(0,1fr)) minmax(0,1.3fr) 36px;gap:8px;align-items:center}
.four-contact-num{width:24px;height:24px;border-radius:50%;background:var(--soft);display:grid;place-items:center;font-size:.75rem;font-weight:600}
.four-contact input,.four-contact .rs-bouton{min-width:0}
@media (max-width:1100px){.four-contact{grid-template-columns:24px repeat(2,minmax(0,1fr)) 36px;padding:10px;border:1px solid var(--line);border-radius:var(--r-card)}
  .four-contact > select,.four-contact > .rs-bouton,.four-contact > input[data-k="telephone"],.four-contact > input[data-k="whatsapp"],.four-contact > input[data-k="email"]{grid-column:2 / 4}}
.four-rubriques{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media (max-width:900px){.four-rubriques{grid-template-columns:minmax(0,1fr)}}
.four-rubrique{display:grid;gap:6px;align-content:start}
.if-liste{display:grid;gap:6px}
.if-ligne{display:grid;grid-template-columns:20px 120px minmax(0,1fr);gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-card);font-size:.875rem;font-weight:400;margin:0;cursor:pointer;overflow-wrap:anywhere}
.if-ligne input{width:18px;height:18px;accent-color:var(--ink)}
.if-logo img{max-height:56px;max-width:180px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px}
#if-term{max-height:220px}
.four-logo-ligne{margin-bottom:14px}
/* Ressources du projet (fenêtre de test) */
.projet-id-tete .outils{display:flex;gap:8px;flex-wrap:wrap}
.bandeau-test{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-card);background:var(--peach);font-size:.8125rem;line-height:1.45;margin:0}
.bandeau-test .ic{width:18px;height:18px;flex:none;margin-top:1px}
.res-resume{display:flex;align-items:center;gap:8px;font-size:.9375rem}
.res-resume .ic{width:20px;height:20px}
.res-liste{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.res-ligne{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-card);transition:border-color .15s}
.res-ligne.en-cours{border-color:var(--ink)}
.res-ico{width:36px;height:36px;border-radius:10px;background:var(--soft);display:grid;place-items:center}
.res-ico .ic{width:18px;height:18px}
.res-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.res-txt b{overflow-wrap:anywhere;font-size:.875rem}
.res-detail:empty{display:none}
/* ---------- Plans, niveaux, pièces ---------- */
.sheet.modale.tres-large{width:min(1320px,calc(100vw - 32px));max-height:calc(100vh - 32px)}
.res-detecte{display:flex;gap:12px;padding:14px 16px;border-radius:var(--r-card);background:var(--sky);font-size:.9375rem;line-height:1.45}
.res-detecte > .ic{width:22px;height:22px;flex:none;margin-top:2px}
.res-detecte .coches{background:var(--surface)}
.vp{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:1000px){.vp{grid-template-columns:minmax(0,1fr)}}
.vp-plans,.vp-cote{display:grid;gap:16px;min-width:0}
.vp-plan{display:grid;gap:10px}
.vp-plan-tete{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.vp-plan-tete > input:not([type]){flex:1 1 180px;min-width:0}
.vp-court{width:90px}
.vp-apercu,.plan-vue{border:1px solid var(--line);border-radius:var(--r-card);background:#fff;color:#1d1d1f;overflow:hidden;display:grid;place-items:center;min-height:260px}
.vp-apercu svg,.plan-vue svg{width:100%;height:auto;max-height:72vh;display:block}
.vp-apercu img,.plan-vue img{max-width:100%;display:block}
.pb-piece{fill:var(--sky);fill-opacity:.0;stroke:none;transition:fill-opacity .18s,fill .18s;cursor:pointer}
.pb-piece:hover,.pb-piece.allumee{fill:#FFD60A;fill-opacity:.55}
.pb-nom{font-size:.32px;font-family:"Fira Sans",sans-serif;fill:#1d1d1f;text-anchor:start;pointer-events:none}
.vp-avis summary{cursor:pointer;font-size:.8125rem;font-weight:600;display:flex;align-items:center;gap:6px}
.vp-avis summary .ic{width:16px;height:16px}
.vp-avis p{font-size:.8125rem;line-height:1.5;color:var(--gray-800);margin:8px 0 0;white-space:pre-line}
.vp-table td{vertical-align:middle;padding-top:6px;padding-bottom:6px}
.vp-table input:not([type=checkbox]),.vp-table select{width:100%;min-width:0;height:34px;font-size:.8125rem}
.vp-table td .petit{display:block;margin-top:2px}
.vp-table tr.ecartee{opacity:.4}
.vp-table tr.survol,.piece-pave.survol{background:color-mix(in srgb,#FFD60A 25%,transparent)}
.vp-table input[type=checkbox]{width:18px;height:18px;accent-color:var(--ink)}
.vp-ajout{display:flex;gap:8px;margin-top:10px}
.vp-ajout input{flex:1;min-width:0}
.vp-remarques p{margin:6px 0 0;line-height:1.5}
.vp-remarques .h3{display:flex;align-items:center;gap:6px}
.bati-chiffres{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 18px}
@media (max-width:820px){.bati-chiffres{grid-template-columns:repeat(2,minmax(0,1fr))}}
.bati-chiffres > div{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-card);min-width:0}
.bati-chiffres b{font-size:1.25rem;font-weight:600}
#contenu > .bati,#contenu > .plans-projet,#contenu > .bati-grille{margin-bottom:16px}
.niv-liste{display:grid;gap:6px}
.niv-ligne{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:auto auto;column-gap:14px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-card);background:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.niv-ligne:disabled{cursor:default}
.niv-ligne:not(:disabled):hover{border-color:var(--gray-300)}
.niv-ligne b{grid-column:1}.niv-ligne .petit{grid-column:1;grid-row:2}.niv-ligne .num{grid-row:1 / 3;font-size:.875rem}
.pieces-etages{display:grid;gap:16px}
.pieces-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.piece-pave{display:flex;flex-direction:column;gap:2px;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-card);background:none;text-align:left;font:inherit;color:var(--ink)}
a.piece-pave{text-decoration:none;transition:border-color .15s var(--ease)}
a.piece-pave:hover{border-color:var(--ink)}
.piece-pave-haut{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}
.piece-pave-nom{overflow-wrap:anywhere}
.piece-pave-bas{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:auto;padding-top:10px}
.piece-pave-surf{font-size:1.25rem;font-weight:600;font-variant-numeric:tabular-nums}
@media (max-width:760px){.pieces-grille{grid-template-columns:repeat(2,minmax(0,1fr))}}
.plans-projet{display:grid;gap:12px}
.plans-projet .gelules{flex-wrap:wrap}
.vp{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
.vp-table{table-layout:fixed;min-width:640px}
.vp-table .rs-bouton{height:34px;font-size:.8125rem;min-width:0;width:100%;padding:0 8px}
.vp-table th,.vp-table td{padding-left:4px;padding-right:4px}
/* Plan simplifié : couleurs des pièces sous les murs, portes, fenêtres, cheminée */
.pb-piece{fill:var(--c,#C5E3F6);fill-opacity:.6;stroke:none;transition:fill-opacity .18s,stroke-width .18s;cursor:pointer}
.pb-piece:hover,.pb-piece.allumee{fill:#FFD60A;fill-opacity:.85;stroke:#1d1d1f;stroke-width:.05}
.plan-simple .pb-mur-s{fill:none;stroke:#1d1d1f;stroke-width:.07;stroke-linecap:square;stroke-linejoin:miter}
.plan-simple .pb-fenetre{fill:none;stroke:#1d1d1f;stroke-width:.06}
.plan-simple .pb-fenetre-int{fill:none;stroke:#7fb3d9;stroke-width:.025}
.plan-simple .pb-seuil{fill:#fff;stroke:none}
.plan-simple .pb-battant{stroke:#1d1d1f;stroke-width:.05;fill:none;stroke-linecap:round}
.plan-simple .pb-arc{stroke:#1d1d1f;stroke-width:.02;fill:none}
.plan-simple .pb-passage{stroke:#8a8a8a;stroke-width:.025;stroke-dasharray:.12 .08;fill:none}
.pb-cheminee rect{fill:#fff;stroke:#1d1d1f;stroke-width:.03}
.pb-cheminee path{fill:#F2A65A;stroke:#1d1d1f;stroke-width:.02}
.pb-cheminee text{font-size:.2px;text-anchor:middle;font-family:"Fira Sans",sans-serif;fill:#1d1d1f}
.pb-nom{font-size:.3px;font-weight:600;paint-order:stroke;stroke:#fff;stroke-width:.06px}
.plans-projet .outils{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
/* Pièces du plan : leur couleur à 60 %, 100 % au survol — rien d'autre */
.pb-piece,.pb-piece:hover,.pb-piece.allumee{fill:var(--c,#C5E3F6);stroke:none;stroke-width:0}
.pb-piece{fill-opacity:.6;transition:fill-opacity .15s}
.pb-piece:hover,.pb-piece.allumee{fill-opacity:1}
/* En-tête du projet */
.entete-projet{background:var(--soft);display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:20px;align-items:stretch}
.entete-texte{display:grid;gap:14px;min-width:0}
.entete-illu{background:var(--p);border-radius:var(--r-card);display:grid;place-items:center;min-height:150px}
.entete-illu svg{width:85%;height:auto}
.entete-date{display:inline-flex;align-items:center;gap:4px}
.entete-date .ic{width:15px;height:15px}
@media (max-width:820px){.entete-projet{grid-template-columns:minmax(0,1fr)}.entete-illu{min-height:120px}}
/* Configuration du projet */
#contenu > .config-projet{margin-bottom:16px}
.config-projet{display:grid;gap:12px;border-color:color-mix(in srgb,var(--sky) 70%,var(--line))}
.config-compte{font-size:.875rem;color:var(--gray-600);white-space:nowrap}
.config-compte b{font-size:1.25rem;color:var(--ink)}
.config-piste{height:6px}
.config-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
.config-item{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface)}
.config-ico{width:36px;height:36px;border-radius:10px;background:var(--soft);display:grid;place-items:center}
.config-ico .ic{width:20px;height:20px}
.config-lib{font-size:.875rem;font-weight:500}
.config-choix{display:flex;gap:6px}
.config-choix .btn{height:32px;padding:0 12px;font-size:.8125rem}
/* Le bâti */
.bati{display:grid;gap:14px}
.bati-heros{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:820px){.bati-heros{grid-template-columns:minmax(0,1fr)}}
.bati-hero{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:var(--r-card)}
.bati-hero > div:last-child{display:flex;flex-direction:column;gap:4px;min-width:0}
.bati-hero-illu{background:var(--p);border-radius:12px;display:grid;place-items:center;aspect-ratio:5/3}
.bati-hero-illu svg{width:90%;height:auto}
.bati-grand{font-size:2rem;font-weight:600;line-height:1.1}
.bati-chiffres{grid-template-columns:repeat(6,minmax(0,1fr))}
.bati-chiffres.c5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1100px){.bati-chiffres,.bati-chiffres.c5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.bati-chiffres,.bati-chiffres.c5{grid-template-columns:repeat(2,minmax(0,1fr))}}
.bati-ico{width:30px;height:30px;border-radius:9px;background:var(--soft);display:grid;place-items:center;margin-bottom:4px}
.bati-ico .ic{width:18px;height:18px}
.bati-options{display:flex;flex-wrap:wrap;gap:6px}
.bati-options .ic{width:15px;height:15px}
.puce-info.avec{background:var(--sage);border-color:transparent}
.puce-info.sans{color:var(--gray-600)}
.bn-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (max-width:620px){.bn-options{grid-template-columns:minmax(0,1fr)}}
.bn-option{display:grid;grid-template-columns:20px minmax(0,1fr) 120px;gap:8px;align-items:center;font-size:.8125rem;font-weight:500;margin:0}
.bn-option .ic{width:18px;height:18px}
.bn-option .rs-bouton{height:34px;font-size:.8125rem}
.bn-ligne{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) 36px;gap:8px;align-items:center;margin-bottom:8px}
.bn-ligne input{min-width:0}
.attention-txt{color:#B26B00}
/* En-tête : l'illustration à gauche */
.entete-projet{grid-template-columns:220px minmax(0,1fr)}
.entete-projet .entete-illu{order:-1}
@media (max-width:820px){.entete-projet{grid-template-columns:minmax(0,1fr)}}

/* Agents virtuels : cartes, adresse e-mail, « … écrit » dans la messagerie */
.agent-carte.inactif{opacity:.6}
.agent-mission{font-size:.875rem;color:var(--gray-600);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line}
.client-stats b.agent-date{font-size:.9375rem;font-weight:600;letter-spacing:0}
.agent-mail{display:flex;align-items:center;gap:8px}
.agent-mail input{flex:1;min-width:0}
.agent-mail span{font-weight:500;color:var(--gray-600);white-space:nowrap}
.agent-adresse{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.agent-projets{margin-top:12px}
.moi-tag.agent-tag{background:var(--lilac)}
.bulle.ecrit p{color:var(--gray-600);font-style:italic}
.bulle.ecrit .points{display:inline-flex;gap:3px;margin-left:6px;vertical-align:middle}
.bulle.ecrit .points i{width:5px;height:5px;border-radius:50%;background:currentColor;animation:points-ecrit 1.2s infinite ease-in-out}
.bulle.ecrit .points i:nth-child(2){animation-delay:.15s}
.bulle.ecrit .points i:nth-child(3){animation-delay:.3s}
@keyframes points-ecrit{0%,80%,100%{opacity:.25}40%{opacity:1}}
@media (prefers-reduced-motion:reduce){.bulle.ecrit .points i{animation:none;opacity:.6}}
.resume-projet{margin:0;font-size:1.0625rem;line-height:1.5;color:var(--ink);font-weight:500}
.desc-complete summary{cursor:pointer;font-size:.8125rem;font-weight:600;color:var(--gray-600)}
.desc-complete .description-projet{margin-top:8px}
.regles-outils{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.regles-outils .petit{margin-right:auto}
.regles-famille{display:grid;gap:2px;padding:12px 0;border-top:1px solid var(--line)}
.regles-famille .lib-mini{color:var(--muted);margin-bottom:4px}
.regle{display:flex;align-items:flex-start;gap:10px;padding:6px 0;font-size:.9375rem;line-height:1.4;cursor:pointer}
.regle input{flex:none;width:18px;height:18px;margin-top:1px;accent-color:var(--ink)}
.regle span:not(.pastille){flex:1}
.regle.fige{cursor:default}
.regle .pastille{flex:none}
.regle-retirer{flex:none;width:28px;height:28px}
.regle-retirer .ic{width:16px;height:16px}
.regle-ajout{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--line)}
.regle-ajout input{flex:1 1 260px;min-width:0}
.regle-ajout .rs-bouton,.regle-ajout select{flex:0 1 220px}
/* Titre d'un projet : pastilles d'informations ; la pastille (type de projet) à gauche de l'illustration */
.demande-illu{order:4}
.demande p.infos{display:flex;flex-wrap:wrap;gap:6px;max-width:none;margin-top:8px}
.info-projet{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r-pill);font-size:.8125rem;font-weight:500;color:var(--ink);background:var(--surface)}
.info-projet .ic{width:15px;height:15px}
.info-projet .ic [fill^="var"]{fill:transparent}

/* Page d'un agent : sa barre en haut, puis sa boîte e-mail (dossiers · liste · lecture ; une colonne sur mobile) */
.agent-barre{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.boite{padding:0;overflow:hidden}
.boite-entete{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:18px 20px;border-bottom:1px solid var(--line)}
.boite-entete .lien{font-size:inherit}
.boite-cadre{display:grid;grid-template-columns:180px minmax(260px,340px) 1fr;min-height:540px}
.boite-dossiers{display:grid;align-content:start;gap:2px;padding:12px;border-right:1px solid var(--line)}
.boite-dossier{display:flex;align-items:center;justify-content:space-between;gap:8px;height:40px;padding:0 12px;border-radius:var(--r-btn);font-size:.9375rem;font-weight:500;color:var(--gray-600);text-align:left}
.boite-dossier:hover{background:var(--soft);color:var(--ink)}
.boite-dossier.actif{background:var(--ink);color:var(--page)}
.boite-dossier b{font-size:.75rem;font-weight:600;min-width:22px;height:22px;padding:0 6px;border-radius:var(--r-pill);display:grid;place-items:center;background:var(--soft);color:var(--ink)}
.boite-dossier.actif b{background:var(--page);color:var(--ink)}
.boite-liste{display:flex;flex-direction:column;min-width:0;border-right:1px solid var(--line)}
.boite-cherche{margin:12px;width:auto;min-width:0}
.boite-lignes{flex:1;overflow-y:auto;max-height:66vh;border-top:1px solid var(--line)}
.boite-lignes .vide{padding:20px}
.boite-ligne{display:grid;gap:3px;width:100%;text-align:left;padding:12px 16px;border-bottom:1px solid var(--line)}
.boite-ligne:hover{background:var(--soft)}
.boite-ligne{border-left:3px solid transparent}
.boite-ligne.actif{background:var(--soft);border-left-color:var(--ink)}
.boite-ligne-haut{display:flex;justify-content:space-between;gap:8px}
.boite-ligne-haut b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.boite-ligne.non-lu .boite-ligne-haut b,.boite-ligne.non-lu .boite-ligne-sujet{font-weight:700}
.boite-ligne-haut small{flex:none;color:var(--muted);font-size:.75rem}
.boite-ligne-sujet{font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.boite-ligne-bas{display:flex;align-items:center;gap:8px;font-size:.8125rem;color:var(--gray-600)}
.boite-ligne-bas > span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.boite-ligne .pastille{flex:none}
.tag-brouillon{font-style:normal;font-size:.6875rem;font-weight:600;padding:0 6px;border-radius:var(--r-pill);background:var(--peach);color:var(--ink)}
.boite-lecture{padding:22px 26px;overflow-y:auto;max-height:72vh;display:grid;gap:14px;align-content:start;min-width:0}
.lecture-tete{display:flex;gap:10px;align-items:flex-start}
.lecture-tete .chat-retour{display:none}
.lecture-puces{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.lecture-info{font-size:.875rem;padding:10px 12px;border-radius:var(--r-btn);background:var(--soft)}
.lecture-corps{white-space:pre-wrap;word-wrap:break-word;font-size:.9375rem;line-height:1.6}
.lecture-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;padding-top:6px}
.lecture-brouillon{display:grid;gap:10px;padding-top:16px;border-top:1px solid var(--line)}
.lecture-brouillon .lib-mini{color:var(--muted)}
.envoi-mail{display:grid;gap:10px}
.envoi-mail .erreur-form:empty{display:none}
@media (max-width:1100px){
  .boite-cadre{grid-template-columns:minmax(240px,320px) 1fr}
  .boite-dossiers{grid-column:1 / -1;display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);scrollbar-width:none}
  .boite-dossier{flex:none}
}
@media (max-width:760px){
  .boite-cadre{grid-template-columns:1fr}
  .boite-liste{border-right:0}
  .boite-lignes{max-height:none}
  .boite-cadre.lecture-ouverte .boite-liste,.boite-cadre.lecture-ouverte .boite-dossiers{display:none}
  .boite-cadre:not(.lecture-ouverte) .boite-lecture{display:none}
  .lecture-tete .chat-retour{display:grid}
  .boite-lecture{max-height:none;padding:16px}
  .agent-barre .btn{flex:1}
}
/* Aperçu rapide du projet : plus grand */
.bati{padding:28px;gap:20px}
.bati .h2{font-size:1.625rem}
.bati .prest-ico{width:44px;height:44px}
.bati .prest-ico .ic{width:22px;height:22px}
.bati-heros{gap:18px}
.bati-hero{grid-template-columns:220px minmax(0,1fr);gap:22px;padding:20px}
.bati-grand{font-size:2.75rem;letter-spacing:-.02em}
.bati-hero .lib-mini{font-size:.75rem}
.bati-hero .petit{font-size:.9375rem}
.bati-chiffres{gap:16px}
.bati-chiffres > div{padding:16px 18px;gap:4px}
.bati-chiffres b{font-size:1.625rem}
.bati-ico{width:38px;height:38px;border-radius:11px}
.bati-ico .ic{width:22px;height:22px}
.bati-options .puce-info{height:36px;font-size:.875rem;padding:0 14px}
@media (max-width:820px){.bati-hero{grid-template-columns:120px minmax(0,1fr)}.bati-grand{font-size:2rem}}

/* Réglages : signature des e-mails des agents (l'aperçu reste blanc, comme l'e-mail reçu) */
.sig-logo{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sig-logo .bascule{margin-left:auto}
.sig-apercu{display:block;width:100%;height:340px;border:1px solid var(--line);border-radius:var(--r-card);background:#FFFFFF}
/* Niveaux de la fenêtre « Aperçu rapide » : mêmes champs que partout ailleurs */
.bn-entete,.bn-ligne{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) 40px;gap:10px;align-items:center}
.bn-entete{margin-bottom:6px}
.bn-entete span{font-size:.8125rem;font-weight:600;color:var(--ink)}
.bn-ligne{margin-bottom:10px}
.bn-ligne input{width:100%;min-width:0;height:52px;padding:0 16px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);
  border:1px solid var(--gray-300);border-radius:var(--r-btn);transition:border-color .15s}
.bn-ligne input:hover{border-color:var(--muted)}
.bn-ligne input:focus{outline:none;border-color:var(--ink)}
.bn-ligne input::placeholder{color:var(--faint)}
.ia-remplir{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:var(--r-card);background:var(--sky)}
.ia-remplir #bn-ia-etat{flex:1 1 260px}
.rempli-ia{border:2px solid #2F80ED !important;background:color-mix(in srgb,#2F80ED 6%,var(--surface)) !important}
.bati-chiffres > .bati-lien{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r-card);min-width:0;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.bati-lien:hover{border-color:var(--ink);transform:translateY(-2px)}
.bati-lien .lib-mini{display:flex;align-items:center;gap:4px}
.bati-lien .lib-mini .ic{width:12px;height:12px}
@media (prefers-reduced-motion:reduce){.bati-lien:hover{transform:none}}
#contenu > .page-bati{margin-bottom:16px}
/* (rétabli) Eau de la piscine dans les illustrations */
.il-eau{fill:#8FCFEA}
/* (rétabli) Retour : bouton fléché sous la pastille du titre, d'une autre couleur */
.demande{overflow:visible}
.sur-col{order:3;flex:none;align-self:stretch;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:8px}
.demande-illu{order:4}
.bouton-retour{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px 0 10px;border-radius:var(--r-pill);background:var(--sky);color:var(--ink);
  font-size:.8125rem;font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;transition:background .15s,transform .15s}
.bouton-retour:hover{background:color-mix(in srgb,var(--sky) 70%,var(--ink) 12%);transform:translateX(-2px)}
.bouton-retour .ic{width:16px;height:16px;flex:none}
.bouton-retour[hidden]{display:none}
@media (max-width:760px){.sur-col{align-self:center}}
.sur-col .sur{order:0}
/* Les outils du projet : encart sombre */
#contenu > .outils-projet{margin-bottom:16px}
.outils-projet{background:#141416;border-color:#141416;color:#f4f4f5;display:grid;gap:16px}
.outils-projet .h2{color:#f4f4f5}
.outils-projet .prest-ico{background:#2a2a2e;color:#f4f4f5}
.outils-grille{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:1000px){.outils-grille{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.outils-grille{grid-template-columns:minmax(0,1fr)}}
.outil{position:relative;display:flex;flex-direction:column;gap:4px;padding:18px;border-radius:var(--r-card);background:#202024;border:1px solid #2c2c31;color:#f4f4f5;text-decoration:none;transition:border-color .15s,transform .15s,background .15s}
.outil:hover{border-color:var(--p);background:#26262b;transform:translateY(-2px)}
@media (prefers-reduced-motion:reduce){.outil:hover{transform:none}}
.outil-ico{width:42px;height:42px;border-radius:12px;background:var(--p);color:#141416;display:grid;place-items:center;margin-bottom:8px}
.outil-ico .ic{width:22px;height:22px}
.outil-ico .ic [fill^="var"]{fill:transparent}
.outil-fleche{position:absolute;top:16px;right:16px;color:#8b8b93}
.outil-fleche .ic{width:18px;height:18px}
.outil:hover .outil-fleche{color:var(--p)}
.outil-val{font-size:1.75rem;font-weight:600;line-height:1.1}
.outil-val small{font-size:.875rem;font-weight:500;color:#a1a1aa}
.outil-titre{font-weight:600;font-size:1rem}
.outil-pied{font-size:.75rem;color:#a1a1aa;letter-spacing:.02em}
/* Pages provisoires */
.factice{display:grid;grid-template-columns:260px minmax(0,1fr);gap:24px;align-items:center}
.factice-illu{background:var(--soft);border-radius:var(--r-card);display:grid;place-items:center;aspect-ratio:5/3}
.factice-illu svg{width:85%;height:auto}
.factice > div:last-child{display:grid;gap:10px;justify-items:start}
.factice p{margin:0;color:var(--gray-800);line-height:1.55;max-width:70ch}
@media (max-width:760px){.factice{grid-template-columns:minmax(0,1fr)}}
/* Plans versionnés */
.plans-liste{display:grid;gap:16px}
.plan-carte{display:grid;grid-template-columns:240px minmax(0,1fr);gap:20px}
@media (max-width:820px){.plan-carte{grid-template-columns:minmax(0,1fr)}}
.plan-vignette{border:1px solid var(--line);border-radius:var(--r-card);background:#fff;display:grid;place-items:center;aspect-ratio:4/3;overflow:hidden}
.plan-vignette img{width:100%;height:100%;object-fit:contain}
.plan-vignette svg{width:80%;height:auto}
.plan-corps{display:grid;gap:12px;align-content:start;min-width:0}
.plan-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.indice{display:inline-flex;align-items:center;height:30px;padding:0 12px;border-radius:var(--r-pill);background:var(--ink);color:var(--page);font-size:.8125rem;font-weight:600;white-space:nowrap}
.plan-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.versions{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.versions li{display:grid;grid-template-columns:34px minmax(0,1fr);column-gap:10px;row-gap:2px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-card)}
.versions li.courante{border-color:var(--ink)}
.indice-mini{grid-row:1 / 3;width:34px;height:34px;border-radius:10px;background:var(--soft);display:grid;place-items:center;font-weight:700}
.versions li.courante .indice-mini{background:var(--ink);color:var(--page)}
.version-fichiers{display:flex;flex-wrap:wrap;gap:10px}
.version-fichiers .lien{display:inline-flex;align-items:center;gap:4px}
.version-fichiers .ic{width:14px;height:14px}
.champ-fichier{height:auto !important;padding:12px !important}
.plan-vignette{position:relative}
.plan-vignette img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:8px}
/* Une conversation : les messages l'un sous l'autre ; ceux de l'agent marqués d'un filet à gauche */
.boite-nb{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;margin-left:4px;border-radius:var(--r-pill);background:var(--soft);font-size:.6875rem;font-weight:600;vertical-align:1px}
.boite-ligne-bas .boite-ligne-sujet{flex:1;min-width:0;color:var(--ink)}
.mail-msg{display:grid;gap:10px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--soft)}
.mail-msg.envoye{background:var(--fond);border-color:transparent;margin-left:28px}
.mail-msg.recu{margin-right:28px}
.mail-msg header{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid color-mix(in srgb,var(--ink) 10%,transparent)}
.mail-msg header b{font-weight:600}
.mail-msg header span{font-size:.8125rem;color:var(--gray-600)}
.mail-msg .lecture-info{background:var(--surface)}
@media (max-width:760px){.mail-msg.envoye{margin-left:12px}.mail-msg.recu{margin-right:12px}}
/* Outils : cinq tuiles */
.outils-grille{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1200px){.outils-grille{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.outils-grille{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Budgets */
.budgets-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px}
.budget-carte{display:grid;gap:14px;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.budget-carte:hover{border-color:var(--ink);transform:translateY(-2px)}
.budget-carte-tete{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.budget-chiffres{display:grid;grid-template-columns:1.4fr 1fr .8fr;gap:10px}
.budget-chiffres > div{display:flex;flex-direction:column;gap:2px}
.budget-chiffres b{font-size:1.125rem}
.bud-tete{display:grid;gap:14px;margin-bottom:16px}
.bud-meta{display:grid;grid-template-columns:2fr 1.4fr 1fr .7fr;gap:12px}
.bud-meta .champ{margin:0}
@media (max-width:900px){.bud-meta{grid-template-columns:1fr 1fr}}
.bud-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}
.bud-actions #bud-etat{margin-right:auto}
.bud-grille{align-items:start}
.bud-table{table-layout:fixed;min-width:760px}
.bud-table td{padding:4px}
.bud-table input{width:100%;min-width:0;height:38px;padding:0 10px;font:inherit;font-size:.875rem;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-btn)}
.bud-table input:focus{outline:none;border-color:var(--ink)}
.bud-table .bud-num{text-align:right}
.bud-total{font-weight:600;white-space:nowrap}
.bud-cote{display:grid;gap:16px;position:sticky;top:16px}
.bud-totaux{display:grid;gap:10px}
.bud-tot{display:flex;justify-content:space-between;gap:10px;font-size:.9375rem}
.bud-tot.grand{border-top:2px solid var(--ink);padding-top:10px;font-size:1.25rem;font-weight:700}
.bud-lots{display:grid;gap:10px}
.bud-lots > div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;font-size:.875rem}
.bud-lots i{grid-column:1 / -1;height:5px;border-radius:3px;background:var(--mint)}

/* Données de référence › Ouvrages */
.ouv-choix{max-width:420px;margin:12px 0 16px}
.ouv-familles{display:grid;gap:16px}
.ouv-fam-tete{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.ouv-fam-tete .rond,.ouv-el .rond{width:32px;height:32px;font-size:.875rem}
.ouv-fam-tete .rond:disabled,.ouv-el .rond:disabled{opacity:.3;cursor:default}
.ouv-champ,.ouv-var-ajout{width:100%;min-width:0;height:42px;padding:0 12px;font:inherit;font-size:15px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px}
.ouv-champ:hover{border-color:var(--gray-300)}
.ouv-champ:focus,.ouv-var-ajout:focus{outline:none;border-color:var(--ink)}
.ouv-fam-nom{flex:1;font-weight:600;font-size:1.0625rem}
.ouv-liste{display:grid;gap:8px}
.ouv-el{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px}
.ouv-el.ouvert{border-color:var(--gray-300)}
.ouv-el-tete{display:flex;align-items:center;gap:6px}
.ouv-el-tete .ouv-nom{flex:1}
.ouv-el-tete .ouv-unite{flex:none;width:84px}
.ouv-ouvrir{flex:none;height:42px;white-space:nowrap}
.ouv-variantes{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding-left:76px}
.ouv-var{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 4px 0 12px;border-radius:var(--r-pill);background:var(--sky);font-size:.8125rem;color:var(--ink)}
.ouv-var button{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;border-radius:50%;background:transparent;color:var(--ink);cursor:pointer}
.ouv-var button:hover{background:color-mix(in srgb,var(--ink) 10%,transparent)}
.ouv-var .ic{width:14px;height:14px}
.ouv-var-ajout{width:140px;height:30px;border-style:dashed;border-radius:var(--r-pill);font-size:.8125rem}
.ouv-gammes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding-left:76px}
.ouv-gamme{display:grid;gap:6px;align-content:start}
.ouv-gamme .lib-mini{color:var(--muted)}
.ouv-desc{grid-column:1 / -1}
@media (max-width:760px){
  .ouv-variantes,.ouv-gammes{padding-left:0}
  .ouv-gammes{grid-template-columns:minmax(0,1fr)}
  .ouv-el-tete{flex-wrap:wrap}
  .ouv-el-tete .ouv-nom{flex:1 1 100%;order:-1}
  .ouv-el-tete .ouv-unite{flex:1}
}
/* Lots du projet : conseil « planning d'abord » */
#contenu > .conseil-planning{margin-bottom:16px}
.conseil-planning{display:grid;grid-template-columns:200px minmax(0,1fr);gap:22px;align-items:center;background:color-mix(in srgb,var(--peach) 55%,var(--surface));border-color:transparent}
.conseil-illu{background:var(--surface);border-radius:var(--r-card);display:grid;place-items:center;aspect-ratio:5/3}
.conseil-illu svg{width:85%;height:auto}
.conseil-planning > div:last-child{display:grid;gap:8px;justify-items:start}
.conseil-planning p{margin:0;line-height:1.55;max-width:75ch}
@media (max-width:760px){.conseil-planning{grid-template-columns:minmax(0,1fr)}}
.factice-modale{background:var(--soft);border-radius:var(--r-card);display:grid;place-items:center;aspect-ratio:3/1}
.factice-modale svg{height:85%;width:auto}
.sheet-corps > .pastille{justify-self:start}
/* Planning : diagramme de Gantt */
.gantt{display:grid;gap:2px;min-width:0;overflow-x:auto}
.gantt-entete,.gantt-ligne{display:grid;grid-template-columns:minmax(180px,26%) minmax(420px,1fr);gap:12px;align-items:center}
.gantt-axe{position:relative;height:26px;border-bottom:1px solid var(--line)}
.gantt-axe span{position:absolute;top:4px;font-size:.6875rem;font-weight:600;color:var(--gray-600);padding-left:4px;white-space:nowrap}
.gantt-phase{margin-top:10px;padding:4px 0;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--gray-600)}
.gantt-lib{font-size:.8125rem;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gantt-lib small{display:block;color:var(--gray-600);font-size:.6875rem}
.gantt-piste{position:relative;height:28px}
.gantt-piste i{position:absolute;top:0;bottom:0;border-left:1px dashed var(--line)}
.gantt-barre{position:absolute;top:6px;height:16px;border-radius:5px;background:var(--p);border:1px solid color-mix(in srgb,var(--p) 60%,var(--ink) 25%)}
.gantt-jalon{position:absolute;top:7px;width:13px;height:13px;margin-left:-6px;background:var(--ink);transform:rotate(45deg);border-radius:2px}
.gantt-auj{position:absolute;top:-2px;bottom:-2px;width:2px;background:#E5484D}
.ap-avis{display:flex;gap:10px;padding:12px 14px;border-radius:var(--r-card);background:var(--sky);line-height:1.5}
.ap-avis .ic{width:20px;height:20px;flex:none;margin-top:2px}
.ap-avis p{margin:0}
#ap-term{max-height:240px;white-space:pre-wrap}
.mail-pieces{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.8125rem;font-weight:500;padding-top:10px;border-top:1px solid color-mix(in srgb,var(--ink) 10%,transparent)}
.mail-pieces .ic{width:18px;height:18px}
/* Plannings */
.pln-meta{display:grid;grid-template-columns:1.6fr 170px 2fr;gap:12px}
.pln-meta .champ{margin:0}
@media (max-width:900px){.pln-meta{grid-template-columns:1fr}}
.pln-table{table-layout:fixed;min-width:980px}
.pln-table td{padding:4px}
.pln-table input:not([type=checkbox]){width:100%;min-width:0;height:36px;padding:0 8px;font:inherit;font-size:.8125rem;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-btn)}
.pln-table input:focus{outline:none;border-color:var(--ink)}
.pln-table input[type=checkbox]{width:18px;height:18px;accent-color:var(--ink)}
.mini-gantt{max-height:130px;overflow:hidden;border-top:1px solid var(--line);padding-top:8px;pointer-events:none}
.gantt.compact .gantt-lib,.gantt.compact .gantt-phase,.gantt.compact .gantt-axe span{display:none}
.gantt.compact .gantt-entete,.gantt.compact .gantt-ligne{grid-template-columns:0 1fr;gap:0}
.gantt.compact .gantt-piste{height:5px}
.gantt.compact .gantt-barre{top:0;height:4px;border:0}
.gantt.compact .gantt-jalon{top:-2px;width:7px;height:7px}
.gantt.compact .gantt-piste i,.gantt.compact .gantt-auj{display:none}
.gantt.compact .gantt-axe{height:2px}
.gantt.compact .gantt-entete,.gantt.compact .gantt-ligne{grid-template-columns:minmax(0,1fr)}
.terminal .t-pensee{color:#8b8b93;font-style:italic}
/* Pavé numérique du code PIN */
.pin-pave{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(260px,100%);justify-self:center}
.pin-pave button{height:52px;border-radius:14px;border:1px solid var(--line);background:var(--surface);font:inherit;font-size:1.375rem;font-weight:600;color:var(--ink);cursor:pointer;
  transition:background .12s,transform .08s}
.pin-pave button:hover{background:var(--soft)}
.pin-pave button:active{transform:scale(.96);background:var(--faint)}
.pin-pave .pin-ok{background:var(--ink);color:var(--page);border-color:var(--ink)}
.pin-pave .pin-ok .ic{width:22px;height:22px}
/* Barre d'actions d'une conversation (comme Gmail) et résumé par l'IA */
.lecture-outils{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:-8px 0 2px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.outil-mail{gap:6px;height:36px;padding:0 10px;font-size:.875rem}
.outil-mail .ic{width:18px;height:18px}
.outil-mail.danger-txt{color:#C2362F}
.resume-ia{white-space:pre-wrap;word-wrap:break-word;font-size:.9375rem;line-height:1.6;min-height:120px}
.resume-titre{display:inline-block;margin-top:10px;font-size:.6875rem;font-weight:600;letter-spacing:.14em;color:var(--muted)}
.resume-ia > .resume-titre:first-child{margin-top:0}
@media (max-width:760px){.outil-mail span{display:none}.outil-mail{width:40px;justify-content:center;padding:0}}

/* ---------- Export versionné : fichier prêt, télécharger ou envoyer ---------- */
.exp-attente{display:flex;align-items:center;gap:14px;padding:18px 0}
.exp-roue{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--ink);animation:exp-tourne .8s linear infinite;flex:none}
@keyframes exp-tourne{to{transform:rotate(360deg)}}
.exp-pret{display:flex;gap:14px;align-items:flex-start;padding:14px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--soft)}
.exp-pret > div{display:flex;flex-direction:column;gap:3px;min-width:0}
.exp-nom{word-break:break-all}
.exp-fichier{flex:none;width:44px;height:54px;border-radius:8px;display:grid;place-items:center;font-weight:700;font-size:12px;letter-spacing:.04em}
.exp-fichier.xlsx{background:var(--sage)} .exp-fichier.pdf{background:var(--blush)}
.exp-dossier{display:flex;align-items:center;gap:6px;font-size:13px;margin-top:4px}
.exp-dossier code{font-size:12px;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:1px 6px;word-break:break-all}
.exp-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 4px}
.exp-action{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);color:var(--ink);text-decoration:none;font:inherit;text-align:left;cursor:pointer}
.exp-action span{display:flex;flex-direction:column;min-width:0} .exp-action small{color:var(--muted);font-size:12px}
.exp-action:hover:not([disabled]){border-color:var(--ink)} .exp-action.actif{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.exp-action[disabled]{opacity:.45;cursor:not-allowed}
.exp-envoi{display:flex;flex-direction:column;gap:14px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.exp-etape{display:flex;gap:12px} .exp-etape > div{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.exp-num{flex:none;width:24px;height:24px;border-radius:50%;background:var(--ink);color:var(--inv);display:grid;place-items:center;font-size:12px;font-weight:600}
.exp-gens{display:flex;flex-wrap:wrap;gap:8px}
.exp-personne{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);font:inherit;color:var(--ink);cursor:pointer;text-align:left}
.exp-personne span:last-child{display:flex;flex-direction:column;line-height:1.2} .exp-personne small{color:var(--muted);font-size:11px}
.exp-personne .avatar-chat{width:30px;height:30px;font-size:11px}
.exp-personne.actif{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.exp-canaux{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.exp-canal{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 8px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);font:inherit;font-size:13px;color:var(--ink);cursor:pointer;text-align:center}
.exp-canal .ic{width:26px;height:26px;padding:5px;border-radius:50%;box-sizing:content-box}
.exp-canal.c-email .ic{background:var(--sky)} .exp-canal.c-whatsapp .ic{background:#25D366;color:#FFFFFF}
.exp-canal.c-telegram .ic{background:#26A5E4;color:#FFFFFF} .exp-canal.c-app .ic{background:var(--soft)}
.exp-canal small{font-size:11px;color:var(--muted);line-height:1.2}
.exp-canal:hover:not([disabled]){border-color:var(--ink)} .exp-canal.actif{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.exp-canal[disabled]{opacity:.5;cursor:not-allowed}
.exp-resultat{margin:14px 0 0;padding:10px 12px;border-radius:var(--r-btn)} .exp-resultat.ok{background:var(--sage)} .exp-resultat.echec{background:var(--blush)}
.exp-historique{display:flex;flex-direction:column;gap:6px;margin-top:16px;font-size:13px}
.exp-precedents{margin-top:14px;font-size:13px} .exp-precedents summary{cursor:pointer;color:var(--gray-600)}
.exp-precedents a{display:flex;align-items:center;gap:6px;padding:6px 0;color:var(--ink);text-decoration:none} .exp-precedents a:hover{text-decoration:underline}
@media (max-width:760px){.exp-actions{grid-template-columns:1fr}.exp-canaux{grid-template-columns:repeat(2,1fr)}}

/* ---------- Jours fériés : référentiel, Gantt, alertes du planning ---------- */
.fer-barre{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center;margin:4px 0 10px}
.fer-barre .outils{display:flex;flex-wrap:wrap;gap:8px}
.fer-resume{margin:0 0 10px}
.fer-table td:first-child,.fer-table td:nth-child(2){width:150px}
.fer-table tr.fer-ralenti td{background:#FDF6EA}
.gantt-ferie{position:absolute;top:0;bottom:0;pointer-events:auto;z-index:0}
.gantt-ferie.arret{background:rgba(232,140,60,.28);min-width:2px}
.gantt-ferie.ralenti{background:rgba(242,190,110,.13)}
.gantt-barre,.gantt-jalon{z-index:1}
.gantt-legende{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;margin-top:12px;font-size:12px}
.gantt-legende span{display:inline-flex;align-items:center;gap:6px}
.gantt-legende .gantt-ferie{position:static;display:inline-block;width:14px;height:12px;border-radius:3px}
.fer-alerte{display:flex;gap:12px;background:#FFF8EE;border-color:#F6DDB8}
.fer-alerte ul{margin:6px 0;padding-left:18px} .fer-alerte p{margin:6px 0}
.fer-ok{display:flex;align-items:center;gap:6px;margin:0 0 10px}

/* ---------- Boîte e-mail des utilisateurs : fiche (création) et menu E-mails ---------- */
.boite-creer{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.boite-creer input{flex:1;min-width:160px}
.boite-reglages,.boite-mdp{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.boite-mdp input{flex:1;min-width:200px}
.mail-meta{display:grid;gap:3px;font-size:.875rem;margin-top:6px}
.mail-meta .lib-mini{display:inline-block;min-width:24px}
.mail-actions{justify-content:flex-start;padding-top:0}
.mail-sep{flex:1}
.mail-pieces{display:flex;flex-wrap:wrap;gap:8px}
.mail-piece{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--r-pill);font-size:.8125rem;color:var(--ink);text-decoration:none;max-width:100%}
.mail-piece span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}
.mail-piece small{color:var(--muted)}
.mail-piece .rond{width:22px;height:22px}
a.mail-piece:hover{border-color:var(--ink)}
.mail-html{width:100%;min-height:62vh;border:1px solid var(--line);border-radius:var(--r-card);background:#FFFFFF}
.mail-pages{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid var(--line)}
.boite-ligne-bas .ic{width:14px;height:14px;flex:none;color:var(--muted)}
.mail-composer{display:grid;gap:10px}
.mail-champ{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:6px}
.mail-champ label{width:48px;flex:none;color:var(--muted);font-size:.875rem}
.mail-champ input{flex:1;border:0;background:transparent;padding:8px 0;font:inherit;color:var(--ink);outline:none;min-width:0}
.mail-composer textarea{min-height:280px;font:inherit;line-height:1.55}
.mail-joindre{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mail-joindre label.btn{cursor:pointer}
.tab .petit .ic{width:14px;height:14px;vertical-align:-2px;display:inline-block}

/* ---------- Lots de marché : liste, page d'un lot, assistant IA ---------- */
.lots-table .lot-nom > span:last-child{display:grid}
.lots-table .lot-desc{max-width:420px;font-size:.8125rem;color:var(--gray-600);line-height:1.45}
.lot-tete .lot-ident{display:grid;grid-template-columns:auto minmax(200px,1.4fr) minmax(160px,1fr) minmax(200px,1.2fr);gap:12px;align-items:end}
.lot-grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}
.lot-grille .panneau{display:grid;gap:10px;align-content:start}
.lot-grille textarea,section.panneau > textarea{width:100%;min-height:110px;line-height:1.5}
.lot-ouvrages input{width:100%;border:1px solid transparent;background:transparent;padding:6px 8px;border-radius:8px;font:inherit}
.lot-ouvrages input:hover,.lot-ouvrages input:focus{border-color:var(--line);background:var(--surface)}
.lot-ouvrages input.n{text-align:right}
.lot-marches{display:grid;gap:4px;font-size:.875rem;padding-top:6px;border-top:1px solid var(--line)}
.lia-liste{display:grid;gap:8px;max-height:52vh;overflow-y:auto;padding-right:4px}
.lia-lot{border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface)}
.lia-lot[open],.lia-lot.ouvert{border-color:var(--gray-300)}
.lia-tete{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;flex-wrap:wrap}
.lia-tete .second{flex:1;font-size:.8125rem;min-width:160px}
.lia-tete .num{font-weight:600;font-size:.875rem}
.lia-detail{padding:4px 16px 14px;display:grid;gap:8px;font-size:.875rem;line-height:1.5}
.lia-detail p{margin:0}
.lia-mode{display:grid;gap:8px;margin-top:12px;padding:12px 14px;border-radius:var(--r-card);background:var(--soft);font-size:.9375rem}
@media (max-width:900px){.lot-grille{grid-template-columns:1fr}.lot-tete .lot-ident{grid-template-columns:1fr 1fr}}
.lot-grille textarea,section.panneau > textarea,.mail-composer textarea{width:100%;padding:12px 14px;font:inherit;font-size:15px;line-height:1.55;color:var(--ink);background:var(--surface);
  border:1px solid var(--gray-300);border-radius:var(--r-btn);resize:vertical;field-sizing:content;min-height:110px;max-height:520px}
.lot-grille textarea:focus,section.panneau > textarea:focus,.mail-composer textarea:focus{outline:none;border-color:var(--ink)}
section.panneau > textarea + textarea{margin-top:10px}

/* ---------- Tableau de bord d'un utilisateur ---------- */
.udash-tete{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:20px;align-items:center}
.udash-avatar{width:76px;height:76px;border-radius:50%;display:grid;place-items:center;font-size:1.5rem;font-weight:600;color:var(--ink)}
.udash-ident{display:grid;gap:8px}
.udash-ident p{margin:0}
.udash-puces{display:flex;gap:6px;flex-wrap:wrap}
.udash-tuiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:16px 0}
.udash-tuile{display:grid;gap:4px;align-content:start}
.udash-tuile .ic{width:26px;height:26px;margin-bottom:4px}
.udash-grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.udash-grille > .panneau{display:grid;gap:10px;align-content:start}
.udash-grille .champ{margin:0}
.udash-activite{list-style:none;margin:0;padding:0;display:grid}
.udash-activite li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.udash-activite li:last-child{border-bottom:0}
.udash-activite li div{display:grid}
.udash-ico{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--p)}
.udash-ico .ic{width:18px;height:18px}
.udash-projets{display:flex;flex-wrap:wrap;gap:8px}
.udash-droits{margin:0;padding-left:18px;columns:2;font-size:.875rem;color:var(--gray-600);line-height:1.7}
@media (max-width:900px){.udash-tete{grid-template-columns:auto 1fr}.udash-actions{grid-column:1/-1}.udash-tuiles{grid-template-columns:1fr 1fr}.udash-grille{grid-template-columns:1fr}.udash-droits{columns:1}}
/* Plans techniques d'une pièce : onglets, mode Configurer (comme le plan de Gusto Club Secure), éléments posés.
   Le plan reste sur fond blanc dans les deux thèmes : ses traits sont à l'encre du plan (#1d1d1f), comme les murs. */
.pc-onglets{flex-wrap:wrap}
.pc-outils{flex-wrap:wrap}
.pc-outils .gelule{gap:6px}
.pe-ic{width:18px;height:18px}
.pe-ic .tx{font:700 7px "Fira Sans",sans-serif;text-anchor:middle;fill:currentColor;stroke:none}
.pe-ic .pl{fill:currentColor}
.pe-ic path,.pe-ic rect,.pe-ic circle:not(.pl),.pe-ic ellipse{stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.pc-aide{display:flex;align-items:center;gap:8px;margin:10px 0 0;padding:10px 14px;border-radius:var(--r-card);background:var(--band);color:var(--band-ink);font-size:.875rem;font-weight:500}
.pc-aide .ic{width:18px;height:18px}
.pc-aide .ic [fill^="var"]{fill:transparent}
.pc .plan-vue .pb-piece:not(.allumee){fill-opacity:.25}
.plan-vue.pose svg,.plan-vue.pose svg *{cursor:crosshair}
.pe-calque *{vector-effect:non-scaling-stroke}
.pe{cursor:pointer}
.pe path,.pe rect,.pe circle:not(.pl),.pe ellipse{fill:none;stroke:#1d1d1f;stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round}
.pe .pe-fond{fill:#fff;stroke-width:1.4px}
.pe .pl{fill:#1d1d1f;stroke:none}
.pe .tx{font:700 7px "Fira Sans",sans-serif;text-anchor:middle;fill:#1d1d1f;stroke:none}
.pe:hover .pe-fond{stroke-width:2.6px}
.pe-meuble .pm-corps{fill:#fff;fill-opacity:.9}
.pe-meuble:hover .pm-corps{stroke-width:2.4px}
.pe-meuble .pm-tx{font:700 .14px "Fira Sans",sans-serif;text-anchor:middle;dominant-baseline:middle;fill:#1d1d1f;stroke:none}
.pe-apercu{width:72px;height:72px;border-radius:var(--r-card);background:var(--soft);display:grid;place-items:center}
.pe-apercu .pe-ic{width:40px;height:40px}
/* Référentiel : plans techniques et leur catalogue */
.ref-pe{display:grid;gap:6px}
.ref-pe-ligne{display:grid;grid-template-columns:34px minmax(0,1.2fr) minmax(0,1.4fr) 84px 84px 32px;gap:8px;align-items:center}
.ref-pe-ligne .pe-ic{width:22px;height:22px;justify-self:center}
.ref-pe-tete span{font-size:.75rem;font-weight:600;color:var(--gray-600)}
@media (max-width:760px){.ref-pe-ligne{grid-template-columns:28px minmax(0,1fr) 32px}.ref-pe-ligne > :nth-child(3),.ref-pe-ligne > :nth-child(4),.ref-pe-ligne > :nth-child(5){grid-column:2}.ref-pe-tete{display:none}}
/* Feuille d'un élément posé : les quatre flèches de déplacement fin, en croix */
.pe-fleches{display:grid;grid-template-columns:repeat(3,40px);grid-template-rows:repeat(3,40px);gap:4px}
.pe-fleches .rond{width:40px;height:40px;font-size:1.125rem}
.pe-fleches [data-pe-pas="0,-1"]{grid-column:2;grid-row:1}
.pe-fleches [data-pe-pas="-1,0"]{grid-column:1;grid-row:2}
.pe-fleches [data-pe-pas="1,0"]{grid-column:3;grid-row:2}
.pe-fleches [data-pe-pas="0,1"]{grid-column:2;grid-row:3}

/* ---------- Infobulle détaillée du Gantt ---------- */
.gantt-barre[data-gt],.gantt-jalon[data-gt]{cursor:pointer}
.gantt-barre[data-gt]:hover,.gantt-barre[data-gt]:focus-visible{outline:2px solid var(--ink);outline-offset:1px}
.gantt-jalon[data-gt]:hover{outline:2px solid var(--ink)}
.gantt-tip{position:fixed;z-index:200;width:340px;max-width:calc(100vw - 16px);padding:14px 16px;background:var(--surface);color:var(--ink);
  border:1px solid var(--line);border-radius:var(--r-card);box-shadow:0 12px 32px rgba(0,0,0,.14);display:grid;gap:10px;font-size:.8125rem;line-height:1.45;pointer-events:none}
.gtip-tete{display:flex;align-items:center;gap:8px;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--gray-600)}
.gtip-tete i{width:10px;height:10px;border-radius:3px;flex:none;border:1px solid rgba(0,0,0,.15)}
.gtip-tete .pastille{margin-left:auto;text-transform:none;letter-spacing:0}
.gtip-titre{font-size:.9375rem;line-height:1.35}
.gtip-bloc{display:grid;gap:3px;padding-top:8px;border-top:1px solid var(--line)}
.gtip-bloc .lib-mini{color:var(--muted)}
.gtip-feries span:not(.second):not(.lib-mini){color:#B4641B}
.gtip-note{padding:8px 10px;border-radius:var(--r-btn);background:var(--soft);font-style:italic;color:#8A5A12}
.gtip-pied{font-size:.6875rem;color:var(--muted)}
.gtip-pied:empty{display:none}
.pln-table tr.pln-surligne td{background:color-mix(in srgb,var(--peach) 70%,transparent);transition:background .4s}

/* ---------- Versions d'un export, impression ---------- */
.expv-liste{display:grid;gap:8px;max-height:52vh;overflow-y:auto}
.expv-ligne{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-card)}
.expv-ligne.derniere{background:var(--soft)}
.expv-ligne .exp-fichier{width:36px;height:44px;font-size:11px}
.expv-info{display:grid;gap:2px;min-width:0}
.expv-info .second{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.expv-actions{display:flex;gap:6px;align-items:center}
.expv-vide{display:flex;align-items:center;gap:14px;padding:18px;border:1px dashed var(--gray-300);border-radius:var(--r-card)}
.exp-actions{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.exp-imprimer{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.exp-imprimer input{width:70px;margin-left:6px}
.imp-liste{display:grid;gap:6px;max-height:280px;overflow-y:auto;margin:8px 0 12px}
.imp-ligne{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-btn);cursor:pointer}
.imp-ligne span:nth-child(2){display:grid;min-width:0}
.imp-ligne small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem}
.imp-ligne:has(input:checked){border-color:var(--ink);background:var(--soft)}
.imp-boutons{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.imp-test{display:grid;gap:4px;padding:12px;border-radius:var(--r-btn);font-size:.875rem}
.imp-test.ok{background:var(--sage)} .imp-test.ko{background:var(--blush)}
.imp-test code{font-size:.75rem}
.imp-liste{flex:none;min-height:0} #imp-choisir{align-self:flex-start} .imp-boutons{flex:none}
.imp-absente{display:flex;gap:14px;align-items:flex-start;padding:16px;border-radius:var(--r-card);background:var(--soft)}
.imp-absente > .ic{width:34px;height:34px;flex:none}
.imp-absente > div{display:grid;gap:8px;justify-items:start}
.imp-absente p{margin:0}
.imp-cible{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--r-btn);background:var(--sky)}
.imp-choix{display:grid;gap:8px;margin:12px 0}
.imp-copies{display:inline-flex;align-items:center;gap:8px}
.imp-copies input{width:80px}
.imp-copies input,.exp-imprimer input{width:80px;padding:8px 10px;border:1px solid var(--gray-300);border-radius:var(--r-btn);font:inherit;background:var(--surface);color:var(--ink)}
/* Plans allumés ensemble : une rangée d'outils par plan en mode Configurer */
.pc-outils-plan{display:grid;gap:6px;margin-top:10px}
.pc-outils-plan .lib-mini{color:var(--gray-600)}
#pc-resume{line-height:1.6}
/* Assistant IA d'une pièce : l'extrait du plan de synthèse, puis la liste à valider, rangée par plan */
.pia-extrait{border:1px solid var(--line);border-radius:var(--r-card);background:#fff;overflow:hidden;margin-bottom:12px}
.pia-extrait img{display:block;width:100%;height:auto;max-height:340px;object-fit:contain}
.pia-liste{display:grid;gap:16px;margin-top:12px}
.pia-plan{display:grid;gap:6px}
.pia-plan > .lib-mini{color:var(--gray-600)}
.pia-el{display:grid;grid-template-columns:20px 24px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-card);cursor:pointer}
.pia-el input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--ink)}
.pia-el .pe-ic{width:22px;height:22px}
.pia-el:has(input:not(:checked)){opacity:.45}
/* Conformité NF C 15-100 d'une pièce : compteurs, règles (les non conformes d'abord), historique replié */
.nv{display:grid;gap:12px}
.nv-compte{display:flex;gap:6px;flex-wrap:wrap}
.nv-liste{display:grid;gap:6px}
.nv-regle{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-card)}
.nv-regle .pastille{justify-self:start}
.nv-historique > summary,.nv-ancien > summary{cursor:pointer;font-size:.875rem;font-weight:600;padding:6px 0}
.nv-ancien{margin-left:12px;display:grid;gap:8px}
@media (max-width:760px){.nv-regle{grid-template-columns:minmax(0,1fr)}}
/* Suivi d'une impression : pastille en bas à droite, d'une page à l'autre, jusqu'à la sortie du document */
.imp-suivi{position:fixed;right:16px;bottom:16px;z-index:60;display:grid;gap:8px;max-width:min(380px,calc(100vw - 32px))}
.imp-suivi[hidden]{display:none}
.imp-pastille{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border-radius:var(--r-card);background:var(--band);color:var(--band-ink);font-size:.875rem}
.imp-pastille small{color:var(--band-mute)}
.imp-pastille .ic{width:18px;height:18px}
.imp-pastille .ic [fill^="var"]{fill:transparent}
.imp-pastille .rond{width:30px;height:30px;background:transparent;color:var(--band-ink);border-color:var(--band-mute)}
.imp-pastille.arretee{background:var(--blush);color:var(--ink)} .imp-pastille.arretee small{color:var(--gray-600)} .imp-pastille.arretee .rond{color:var(--ink)}
.imp-cours,.imp-fin{display:flex;gap:14px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:var(--r-card)}
.imp-fin{background:var(--sage)}
.imp-cours .ic,.imp-fin .ic{width:24px;height:24px}
[data-imp-annuler].arme{border-color:#C2362F}
.imp-pastille .ia-reflexion i{background:var(--band-ink)} .imp-pastille.arretee .ia-reflexion i{background:var(--ink)}
/* Plan d'une pièce : le pincement zoome le plan seul ; glisser le déplace */
.pc .plan-vue{overscroll-behavior:contain;cursor:grab}
.pc .plan-vue.glisse,.pc .plan-vue.glisse *{cursor:grabbing}
.pc .plan-vue svg{user-select:none;-webkit-user-select:none}
/* Commande d'éclairage : ses luminaires à cocher ; simulation de nuit avec halos (seul dégradé admis : la lumière simulée) */
.pe-liens{display:grid;gap:4px;max-height:220px;overflow:auto;padding:6px;border:1px solid var(--line);border-radius:var(--r-btn)}
.pe-lien{display:grid;grid-template-columns:18px 22px minmax(0,1fr);gap:8px;align-items:center;padding:6px 8px;border-radius:8px;cursor:pointer}
.pe-lien:hover{background:var(--soft)}
.pe-lien input{width:16px;height:16px;accent-color:var(--ink)}
.plan-vue.nuit{background:#07080A}
.plan-vue.nuit .pb-piece{fill:#000 !important;fill-opacity:1 !important}
.plan-vue.nuit .pb-mur-s,.plan-vue.nuit .pb-battant,.plan-vue.nuit .pb-fenetre{stroke:#3A3F45}
.plan-vue.nuit .pb-arc,.plan-vue.nuit .pb-passage{stroke:#2A2E33}
.plan-vue.nuit .pb-seuil{fill:#07080A}
.plan-vue.nuit svg{background:#07080A}
.plan-vue.nuit .pe:not(.allume){opacity:.25}
.pe-halos{pointer-events:none;mix-blend-mode:screen}
.pe-halo{animation:pe-allume .5s var(--ease) both}
@keyframes pe-allume{from{opacity:0}to{opacity:1}}
.pe.allume .pe-fond{fill:#FFD60A;stroke:#FFD60A}
.pe.allume.commande .pe-fond{fill:#fff;stroke:#FFD60A;stroke-width:2.6px}
@media (prefers-reduced-motion:reduce){.pe-halo{animation:none}}

/* ---------- Images 3D ---------- */
.r3d-bloc{margin-top:16px}
.r3d-mosaique{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:repeat(3,120px);gap:8px}
.r3d-vignette{position:relative;padding:0;border:0;border-radius:var(--r-card);overflow:hidden;background:var(--soft);cursor:zoom-in}
.r3d-vignette.grande{grid-row:1 / span 3}
.r3d-vignette img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s var(--ease)}
.r3d-vignette:hover img{transform:scale(1.04)}
.r3d-plus{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.45);color:#fff;font-size:1.5rem;font-weight:600}
.r3d-bientot{display:grid;grid-template-columns:220px minmax(0,1fr);gap:22px;align-items:center;background:color-mix(in srgb,var(--lilac) 45%,var(--surface));border-color:transparent;margin-bottom:16px}
.r3d-bientot-illu{background:var(--surface);border-radius:var(--r-card);display:grid;place-items:center;aspect-ratio:5/3}
.r3d-bientot-illu svg{width:85%;height:auto}
.r3d-bientot p{margin:6px 0 0;line-height:1.55;max-width:80ch}
.r3d-galerie{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:10px 0 20px}
.r3d-carte{display:grid;gap:4px;text-align:left;padding:0 0 10px;border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;background:var(--surface);cursor:zoom-in;font:inherit;color:var(--ink)}
.r3d-carte img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block}
.r3d-carte span,.r3d-carte small{padding:0 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem}
.r3d-visionneuse{position:fixed;inset:0;z-index:300;background:rgba(10,10,12,.92);display:grid;place-items:center;padding:24px}
.r3d-visionneuse figure{margin:0;display:grid;gap:10px;max-width:94vw;max-height:92vh}
.r3d-visionneuse img{max-width:94vw;max-height:84vh;object-fit:contain;border-radius:10px;display:block;margin:auto}
.r3d-visionneuse figcaption{display:flex;justify-content:space-between;gap:12px;color:#ddd;font-size:.875rem}
.r3d-visionneuse figcaption a{color:#fff}
.r3d-fermer{position:absolute;top:18px;right:18px;background:#fff}
.r3d-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;border:0;background:rgba(255,255,255,.9);font-size:2rem;line-height:1;cursor:pointer}
.r3d-nav.prec{left:18px} .r3d-nav.suiv{right:18px}
@media (max-width:760px){.r3d-mosaique{grid-template-columns:1fr 1fr;grid-template-rows:200px 110px 110px}.r3d-vignette.grande{grid-row:auto;grid-column:1 / -1}.r3d-mosaique .r3d-vignette:nth-child(2){grid-column:auto}.r3d-bientot{grid-template-columns:1fr}}
/* Accueil : planning des chantiers, deux semaines côte à côte */
.sem{display:grid;gap:14px}
.sem .outils{display:flex;gap:8px;align-items:center}
.sem-grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:760px){.sem-grille{grid-template-columns:minmax(0,1fr)}}
.sem-carte{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--r-card);background:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer;min-width:0;transition:border-color .15s}
.sem-carte:hover{border-color:var(--ink)}
.sem-carte.courante{border-color:var(--ink);border-width:1.5px}
.sem-tete{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline}
.sem-tete b{font-size:1.0625rem}
.sem-projet{display:grid;gap:4px;padding-left:12px;border-left:3px solid var(--p,var(--soft))}
.sem-projet-tete{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sem-puce{width:10px;height:10px;border-radius:50%;background:var(--p,var(--soft));flex:none}
.sem-tache{font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sem-tache.realise{text-decoration:line-through;color:var(--gray-600)}
.sem-tache.en_cours::before{content:"● ";color:var(--ink)}
.sem-note{font-size:.8125rem;color:var(--gray-600);font-style:italic}
.sem-detail{display:grid;gap:16px}
.sem-bloc{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-left:4px solid var(--p,var(--soft));border-radius:var(--r-card)}
.sem-bloc-tete{display:flex;align-items:center;gap:8px}
.sem-bloc-tete a{margin-left:auto;display:inline-flex;align-items:center;gap:4px;color:var(--ink)}
.sem-taches{display:grid;gap:6px}
.sem-ligne{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;background:var(--soft)}
.sem-ligne .petit{display:block}
.sem-etat label{cursor:pointer}
.sem-bloc textarea{width:100%;min-height:56px;padding:10px 12px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-btn);resize:vertical}
@media (max-width:760px){.sem-ligne{grid-template-columns:minmax(0,1fr)}}
/* Une gélule en <label> (choix radio) centre son texte comme une gélule bouton */
label.gelule{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}
/* Exports PDF : versions précédentes avec l'œil « ouvrir dans le navigateur » */
.exp-prec{display:flex;align-items:center;gap:8px} .exp-prec > a:first-child{flex:1;min-width:0}
.exp-precedents a.exp-prec-oeil{flex:none;padding:4px;border-radius:8px;color:var(--gray-600)} .exp-precedents a.exp-prec-oeil:hover{background:var(--soft);color:var(--ink);text-decoration:none}

/* Réunions : cartes de la liste, fiche, formulaire (participants, lieu) */
.ic.s16{width:16px;height:16px}
.champs3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:760px){.champs3{grid-template-columns:1fr}}
.reunions-liste{display:grid;gap:8px}
.reunion-carte{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);transition:border-color .15s}
.reunion-carte:hover{border-color:var(--gray-300)}
.reunion-carte.annulee{opacity:.55}
.reunion-carte.annulee .reunion-txt b{text-decoration:line-through}
.reunion-carte > .pastille{flex:none}
.reunion-date{flex:none;width:52px;height:52px;border-radius:var(--r-btn);background:var(--fond);display:grid;place-items:center;align-content:center;line-height:1}
.reunion-date b{font-size:1.25rem;font-weight:700}
.reunion-date span{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb,var(--ink) 70%,transparent)}
.reunion-date.grande{width:72px;height:72px}
.reunion-date.grande b{font-size:1.75rem}
.reunion-txt{flex:1;min-width:0;display:grid;gap:3px}
.reunion-txt b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reunion-txt .second{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:.8125rem}
.reunion-gens{display:flex;align-items:center;gap:3px}
.reunion-gens i{font-style:normal;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--soft);font-size:.625rem;font-weight:600}
.reunion-gens small{font-size:.75rem;color:var(--muted);margin-left:2px}
.reunions-liste.compacte .reunion-gens{display:none}
.reunions-pied{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.reunion-tete{display:grid;gap:16px}
.reunion-quand{display:flex;gap:16px;align-items:flex-start}
.reunion-lieu{display:flex;align-items:flex-start;gap:8px;margin-top:8px}
.reunion-lieu .ic{width:20px;height:20px;flex:none;margin-top:1px}
.reunion-liens{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px}
.reunion-actions{display:flex;gap:8px;flex-wrap:wrap}
.reunion-tete .erreur-form:empty{display:none}
.grille-reunion{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:16px}
@media (max-width:900px){.grille-reunion{grid-template-columns:1fr}}
.reunion-taches{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.reunion-taches li{display:grid;font-size:.9375rem}
.reunion-taches .second{font-size:.8125rem}
.danger-txt{color:#C2362F}
.part-groupe{display:grid;gap:4px;padding:12px 0;border-top:1px solid var(--line)}
.part-groupe:first-child{border-top:0;padding-top:0}
.part-groupe .lib-mini{color:var(--muted);margin-bottom:4px}
.part-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:2px 16px}
.part{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:.9375rem;cursor:pointer}
.part input{flex:none;width:18px;height:18px;accent-color:var(--ink)}
.part > span:not(.pastille){flex:1;min-width:0}
.part .pastille{flex:none}
.part-entreprise{padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-card);margin-bottom:8px}
.part-entreprise-tete{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.part-entreprise-tete .second{font-size:.8125rem}
.part-ajout{max-width:360px}
.lieu-detail{margin:12px 0 4px}
.lieu-adresse{display:flex;align-items:center;gap:8px;font-size:.9375rem;padding:10px 12px;border-radius:var(--r-btn);background:var(--soft)}
.choix-gelule span .ic{margin-right:6px}
.choix-gelule[hidden]{display:none!important}
/* Formulaire projet : répéteur « Spécificités du projet » */
.spec-liste{display:flex;flex-direction:column;gap:8px}
.spec-ligne{display:flex;align-items:center;gap:10px}
.spec-ligne input{flex:1;min-width:0}
.spec-puce{flex:none;width:6px;height:6px;border-radius:50%;background:var(--faint)}
.spec-retirer{flex:none;width:32px;height:32px;color:var(--gray-600)}
.spec-ajout{margin-top:12px}
/* Plans : surface bâtie mesurée (périmètre extérieur des murs) */
.plan-vue .pb-emprise{fill:none;stroke:#C2410C;stroke-width:.06;stroke-dasharray:.25 .15;pointer-events:none}
.plan-mesure{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin:10px 0 0;font-size:14px}
.plan-mesure-trait{width:22px;height:0;border-top:2px dashed #C2410C}
/* Assistant ressources : pré-analyse (classement des fichiers) */
.pa{display:flex;flex-direction:column;gap:14px}
.pa-avis{display:flex;gap:10px;padding:14px 16px;border-radius:var(--r-card);background:var(--lilac)}
.pa-avis p{margin:4px 0 0}
.pa-questions{margin:8px 0 0;padding-left:18px}
.pa-question{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-card)}
.pa-liste{display:flex;flex-direction:column;gap:10px}
.pa-fichier{display:flex;gap:14px;padding:12px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface)}
.pa-fichier.a-classer{border-color:#E8A33D;box-shadow:0 0 0 2px rgba(232,163,61,.18)}
.pa-vignette{flex:none;width:150px;height:110px;border-radius:10px;background:var(--soft);display:flex;align-items:center;justify-content:center;overflow:hidden}
.pa-vignette img{max-width:100%;max-height:100%;object-fit:contain}
.pa-ext{font-weight:600;color:var(--muted)}
.pa-corps{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.pa-nomfichier{word-break:break-word}
.pa-raison{display:flex;gap:6px;align-items:flex-start;color:var(--gray-600)}
.pa-champs{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(140px,1fr) minmax(140px,1fr);gap:8px}
.pa-champs label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.pa-pages{display:flex;flex-wrap:wrap;gap:8px}
.pa-page{display:flex;flex-direction:column;gap:4px;width:120px}
.pa-page-img{height:80px;border-radius:8px;background:var(--soft);display:flex;align-items:center;justify-content:center;overflow:hidden}
.pa-page-img img{max-width:100%;max-height:100%}
.pa-chemin{display:flex;gap:6px;align-items:center;word-break:break-all}
.pa-verifie{display:flex;gap:8px;align-items:center;font-weight:500}
.pa-erreurs{margin:0;padding:10px 14px 10px 30px;border-radius:var(--r-card);background:#FDF1E1;color:#8A4B0F;font-size:13px}
@media (max-width:760px){.pa-fichier{flex-direction:column}.pa-vignette{width:100%}.pa-champs{grid-template-columns:1fr}}
/* Menuiseries du projet */
.men-resume{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.men-table td,.men-table th{white-space:nowrap}
/* Plan structure : béton armé */
.pe-meuble .pm-beton{fill:#3A3F45;stroke:#1d1d1f;stroke-width:.01}
.pe-meuble .pm-poutre{stroke:#2563EB;stroke-dasharray:.12 .08;fill:none}
.plan-vue .pb-structure{pointer-events:auto}
.plan-vue .st-dalle{fill:rgba(37,99,235,.05);stroke:#2563EB;stroke-width:.05;stroke-dasharray:.3 .15}
.plan-vue .st-mur{fill:#3A3F45;fill-opacity:.85}
.plan-vue .st-voile{fill:#C2410C}
.plan-vue .st-poteau{fill:#DC2626;stroke:#fff;stroke-width:.02}
.plan-vue .st-mur:hover,.plan-vue .st-voile:hover,.plan-vue .st-poteau:hover{fill:#F59E0B}
.st-grille{display:grid;grid-template-columns:1fr 1fr;gap:6px 28px}
.st-ligne{display:grid;grid-template-columns:minmax(150px,auto) auto 1fr;gap:4px 12px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--line)}
@media (max-width:760px){.st-grille{grid-template-columns:1fr}.st-ligne{grid-template-columns:1fr auto}.st-ligne .petit{grid-column:1/-1}}
/* Lecture du plan de synthèse */
.eq-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:14px 0}
.eq-liste{list-style:none;margin:6px 0 0;padding:0}
.eq-liste li{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px solid var(--line);font-size:14px}
/* Plan de la maison : interrupteurs à tester */
.plan-vue .pe-commande{cursor:pointer}
.plan-vue .pe-commande:hover .pe-fond{stroke:#F59E0B;stroke-width:.04}
/* Lots du projet en accordéon : familles → lots → détail */
.acc{display:flex;flex-direction:column;gap:12px}
.acc-outils{display:flex;justify-content:flex-end;gap:6px;margin:-4px 0 8px}
.acc-famille{padding:0;overflow:hidden}
.acc-famille>summary,.acc-lot>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr auto 150px 24px;align-items:center;gap:14px}
.acc-famille>summary::-webkit-details-marker,.acc-lot>summary::-webkit-details-marker{display:none}
.acc-famille>summary{padding:16px 20px}
.acc-fam-nom{display:flex;align-items:baseline;gap:10px;font-size:17px}
.acc-fam-nom .second{font-size:13px}
.acc-chevron{display:flex;justify-content:center;transition:transform .2s var(--ease);color:var(--muted)}
details[open]>summary .acc-chevron{transform:rotate(90deg)}
.acc-montant{white-space:nowrap;font-size:14px}
.acc-av{display:flex;align-items:center;gap:8px}
.acc-av small{min-width:34px;text-align:right}
.acc-lots{border-top:1px solid var(--line)}
.acc-lot{border-bottom:1px solid var(--line)}
.acc-lot:last-child{border-bottom:0}
.acc-lot>summary{padding:12px 20px 12px 28px}
.acc-lot>summary:hover,.acc-famille>summary:hover{background:var(--soft)}
.acc-lot[open]>summary{background:var(--soft)}
.acc-detail{padding:4px 20px 18px 28px;display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.acc-desc{margin:0;max-width:80ch}
.acc-detail .defile{width:100%}
.acc-infos{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 20px;width:100%}
.acc-infos p{margin:4px 0 0}
/* Sous-familles (nomenclature du 18/10/2026) : un intertitre repliable entre la famille et ses lots */
.acc-code{font-family:var(--font-titre,inherit);font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--muted);background:var(--soft);border-radius:6px;padding:1px 6px;align-self:center}
.acc-sfam{border-bottom:1px solid var(--line)}.acc-sfam:last-child{border-bottom:0}
.acc-sfam>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr auto 150px 24px;align-items:center;gap:14px;padding:10px 20px 10px 24px;background:var(--soft)}
.acc-sfam>summary::-webkit-details-marker{display:none}
.acc-sfam>summary .acc-fam-nom{font-size:13px;text-transform:uppercase;letter-spacing:.05em}.acc-sfam>summary .acc-fam-nom .second{text-transform:none;letter-spacing:0;font-size:12px}
.acc-sfam>summary .acc-montant{font-size:13px;color:var(--muted)}
.acc-sfam .acc-lots{border-top:1px solid var(--line)}.acc-sfam .acc-lot>summary{padding-left:36px}
@media (max-width:760px){.acc-famille>summary,.acc-lot>summary,.acc-sfam>summary{grid-template-columns:1fr 24px}.acc-montant,.acc-av{grid-column:1}.acc-lot>summary{padding-left:20px}.acc-detail{padding-left:20px}}
/* Export des lots : arbre de sélection (familles → lots → détail) */
.sel-lots{margin:12px 0;border:1px solid var(--line);border-radius:var(--r-card);padding:10px 14px}
.sel-lots>summary{cursor:pointer}
.sel-outils{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}
.sel-fam{padding:6px 0;border-top:1px solid var(--line)}
.sel-l1{display:flex;align-items:center;gap:8px}
.sel-lot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 0 2px 26px}
.sel-l2,.sel-l3{display:flex;align-items:center;gap:6px;font-size:14px}
.sel-l3 input:disabled+span{opacity:.4}
.acc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.acc-actions .btn.danger{margin-left:auto}
/* Marchés : échéancier, TS, décomptes ; offres */
.mc-bloc{margin-top:14px}
.mc-etapes{display:flex;flex-direction:column;gap:6px}
.mc-etape{display:grid;grid-template-columns:minmax(0,1fr) 64px auto 64px auto 32px;gap:8px;align-items:center}
.mc-court{width:64px;text-align:right}
.mc-outils,.mc-ajout{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;align-items:center}
.mc-ajout input,.mc-ajout select{flex:1;min-width:110px}.mc-ajout .mc-court{flex:none}
.mc-ts{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto 64px 32px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.mc-dc{border-bottom:1px solid var(--line);padding:8px 0}.mc-dc summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none}
.mc-dc summary::-webkit-details-marker{display:none}.mc-dc summary .num{margin-left:auto}
.acc-offres{width:100%}.acc-offres table{margin-top:6px}.offre-retenue td{background:var(--soft)}
@media (max-width:760px){.mc-etape{grid-template-columns:1fr 64px 64px 32px}.mc-etape span{display:none}.mc-ts{grid-template-columns:1fr auto}}

/* Lot par lot (#/projet/<id>/lots/defiler) : plan des lots à gauche, barre Précédent / Suivant, fiche du lot ; feuille « Lancer une consultation ». */
.ic.miroir{transform:scaleX(-1)}
.ic.s14{width:14px;height:14px}
.dfl{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start}
.dfl-plan{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;padding:14px}
.dfl-plan-pli>summary{display:flex;justify-content:space-between;align-items:center;cursor:pointer;list-style:none;margin-bottom:8px}
.dfl-plan-pli>summary::-webkit-details-marker{display:none}
.dfl-fam{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}
.dfl-fam-nom{display:flex;align-items:center;gap:6px;font-weight:600;font-size:.8125rem;padding:4px 6px}
.dfl-fam-nom .acc-code{font-size:.6875rem;color:var(--muted);font-weight:600}
.dfl-sf{font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:6px 6px 2px}
.dfl-lot{display:flex;align-items:center;gap:8px;padding:6px;border-radius:10px;font-size:.8125rem;color:var(--gray-600)}
.dfl-lot:hover{background:var(--soft);color:var(--ink)}
.dfl-lot.actif{background:var(--peach);color:var(--ink);font-weight:500}
.dfl-lot .puce{flex:none;width:26px;height:26px;border-radius:8px;background:var(--soft);display:grid;place-items:center;font-size:.6875rem;font-weight:600}
.dfl-lot.actif .puce{background:var(--surface)}
.dfl-lot-nom{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dfl-marque{display:inline-flex;align-items:center;gap:3px;font-size:.6875rem;color:var(--muted)}
.dfl-corps{display:flex;flex-direction:column;gap:16px;min-width:0}
.dfl-barre{display:flex;align-items:center;gap:10px;padding:10px;flex-wrap:wrap}
.dfl-barre .btn{height:40px;padding:0 14px;font-size:.875rem}
.dfl-barre .btn .ic{width:18px;height:18px}
.dfl-barre .btn[aria-disabled="true"]{opacity:.35;cursor:default}
.dfl-pos{flex:1;min-width:160px;display:flex;flex-direction:column;line-height:1.3}
.dfl-pos small{font-size:.75rem}
@media (max-width:900px){
  .dfl{grid-template-columns:minmax(0,1fr)}
  .dfl-plan{position:static;max-height:none}
  .dfl-plan-pli>summary{margin-bottom:0}.dfl-plan-pli[open]>summary{margin-bottom:8px}
  .dfl-barre [data-consulter]{order:3;width:100%}
  .dfl-pos{order:-1;flex-basis:100%}
  .dfl-barre>.btn.contour{flex:1}
}
.cons-bloc{margin-top:18px;display:flex;flex-direction:column;gap:8px}
.cons-autres>summary{cursor:pointer;list-style:none}.cons-autres>summary::-webkit-details-marker{display:none}
.cons-autres>summary::after{content:" ▾";color:var(--muted)}.cons-autres[open]>summary::after{content:" ▴"}
.cons-recherche{width:100%;margin-top:8px}
.cons-liste{max-height:340px}
.cons-liste .cons-ent{align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--line)}
.cons-liste .cons-ent:last-child{border-bottom:0}
.cons-ent input{margin-top:3px}
.cons-ent-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.cons-ent-txt small{font-size:.75rem}
.cons-canaux{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--gray-600)}
.cons-canaux span,.cons-canaux a{display:inline-flex;align-items:center;gap:4px;overflow-wrap:anywhere}
.cons-canaux a{text-decoration:underline}
.cons-injoignable{opacity:.6;cursor:default}
#cons-envoyer .ia-reflexion{display:inline-flex}
@media (max-width:760px){.lot-tete .lot-ident{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.lot-tete .lot-ident>*{min-width:0}}
.sheet-corps>.cons-bloc,.sheet-corps>p{min-width:0}
.cons-bloc>.btn{white-space:normal;height:auto;min-height:44px;padding-top:8px;padding-bottom:8px;text-align:center}

/* Rubrique Consultations du projet (#/projet/<id>/consultations) */
.cons-resume{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:16px 18px}
.cons-resume b{display:block;font-size:1.5rem;font-weight:500;line-height:1.2}
.cons-carte{display:flex;flex-direction:column;gap:12px}
.cons-carte-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.cons-carte-titre{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 320px}
.cons-carte-titre a:hover{text-decoration:underline}
.cons-jauge{height:6px;border-radius:var(--r-pill);background:var(--soft);overflow:hidden;max-width:320px;margin-top:4px}
.cons-jauge i{display:block;height:100%;background:var(--sage)}
.cons-carte-tete .outils .btn.danger{height:40px;font-size:.875rem;padding:0 14px}
.cons-tab td{vertical-align:top}
.cons-envois{display:flex;flex-direction:column;gap:4px}
.cons-envoi{display:inline-flex;align-items:center;gap:5px;font-size:.8125rem;color:var(--gray-600);white-space:nowrap}
.cons-envoi.echec{color:var(--ink);font-weight:500}.cons-envoi.echec .ic{background:var(--blush);border-radius:4px}
.cons-note{font-style:italic}
.cons-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.cons-actions .btn{height:34px;padding:0 12px;font-size:.8125rem}
@media (min-width:1201px){.outils-grille:has(>:nth-child(6)){grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (max-width:900px){.cons-resume{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:520px){.cons-resume{grid-template-columns:repeat(2,minmax(0,1fr))}.cons-actions{justify-content:flex-start}}

/* Lots : état et « hors budget » ; paiements par marché initial / TS (restructuration du 18/10/2026) */
.etat-lot{margin-left:8px;font-size:11px;vertical-align:middle}.etat-lot.hb{background:var(--soft);color:var(--muted)}
.paie-cibles{margin-top:10px}.paie-cibles tr.total td{border-top:1px solid var(--line)}.paie-cible{font-size:11px}

/* Travaux Supp. : badges et fenêtre de duplication */
.badge-ts{margin-left:8px;font-size:11px;vertical-align:middle;background:var(--soft)}.badge-ts.ts{background:var(--lilac)}
.dts-tete{display:flex;justify-content:space-between;align-items:center;margin:10px 0 6px}
.dts-liste{display:flex;flex-direction:column;gap:4px;max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:6px}
.dts-ouv{display:flex;gap:10px;align-items:flex-start;padding:6px 8px;border-radius:8px;cursor:pointer}.dts-ouv:hover{background:var(--soft)}.dts-ouv small{display:block}
.dts-nouv{display:grid;grid-template-columns:1fr 70px 70px 90px 32px;gap:6px;margin-bottom:6px}
@media (max-width:760px){.dts-nouv{grid-template-columns:1fr 1fr}}
/* Discussion WhatsApp d'un contact (feuille) : mêmes bulles que la messagerie interne */
.ct-disc{flex:1;min-height:0}
.ct-disc .chat-tete .ct-av{width:40px;height:40px}
.ct-disc .chat-tete-txt>span,.ct-disc .chat-tete-txt .rs-bouton{font-size:.8125rem}
.ct-disc .chat-tete-txt .rs-bouton{height:32px;margin-top:2px;max-width:280px}
.ct-disc-note{margin:0;padding:8px 20px;background:color-mix(in srgb,var(--peach) 45%,transparent);border-bottom:1px solid var(--line)}
.ct-disc .bulle.rate{opacity:.85;outline:1px dashed #E5484D;outline-offset:2px}
.ct-disc-raison{display:block;margin-top:4px;font-size:.6875rem;opacity:.8}
.ct-disc-sig{flex:1;min-width:0}
.ct-disc .chat-actions .btn .ic{width:18px;height:18px}
button.ct{border:0;cursor:pointer;padding:0}
#sheet.large:has(#ct-disc){width:min(720px,100%)}

/* ---------- Contacts (#/contacts) ---------- */
.ct-tete{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ct-vues{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:1px;max-width:100%}
.ct-vues::-webkit-scrollbar{display:none}
.ct-vues .gelule{flex:none}
.ct-intro{margin:14px 0 0}
.ct-lot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;padding:12px 14px;border:1px solid var(--ink);border-radius:var(--r-panel);background:var(--surface);position:sticky;top:8px;z-index:3}
.ct-lot b{margin-right:6px}
.ct-panneau{margin-top:14px;position:relative;padding:8px 44px 16px 8px}
.ct-compte{margin:8px 12px 4px}
.ct-liste{list-style:none;margin:0;padding:0}
.ct-lettre{position:sticky;top:0;z-index:1;background:var(--surface);padding:14px 12px 6px;font-weight:600;font-size:.8125rem;letter-spacing:.06em;color:var(--gray-600);border-bottom:1px solid var(--line);scroll-margin-top:80px}
.ct-ligne{display:grid;grid-template-columns:28px 40px minmax(0,1.4fr) minmax(0,1fr) 170px 118px;align-items:center;gap:12px;padding:9px 12px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:10px}
.ct-ligne:hover{background:var(--soft)}
.ct-ligne.choisi{background:color-mix(in srgb,var(--sage) 45%,transparent)}
.ct-ligne .contacts{justify-content:flex-end}
.ct-coche{display:grid;place-items:center}
.ct-coche input{width:18px;height:18px;accent-color:var(--ink)}
.ct-av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--p,var(--soft));color:var(--ink);font-weight:600;font-size:.875rem;overflow:hidden;flex:none;border:1px solid color-mix(in srgb,var(--ink) 10%,transparent)}
.ct-av img{width:100%;height:100%;object-fit:cover}
.ct-av.grand{width:72px;height:72px;font-size:1.375rem}
.ct-id{display:flex;flex-direction:column;min-width:0}
.ct-id b,.ct-id span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-fav .ic{vertical-align:-1px}
.ct-tags{display:flex;gap:6px;flex-wrap:wrap;min-width:0}
.ct-tags .pastille{display:inline-flex;align-items:center;gap:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pastille.ct-four{background:var(--lilac)}
.pastille.ct-partage{background:var(--sky)}
.pastille.ct-metier,.pastille.ct-raison{background:var(--peach)}
.ct-num{font-variant-numeric:tabular-nums;color:var(--gray-600);font-size:.875rem;white-space:nowrap}
.ct-sous-tel{display:none}
.ct-index{position:absolute;right:6px;top:12px;bottom:12px;display:flex;flex-direction:column;align-items:center;gap:1px}
.ct-index button{position:sticky;top:12px;width:28px;height:20px;border:0;background:none;font:inherit;font-size:.6875rem;font-weight:600;color:var(--gray-600);border-radius:6px;cursor:pointer}
.ct-index button:hover{background:var(--ink);color:var(--page)}
.ct-plus{margin:16px auto 0;display:flex}
.ct-fiche-tete{display:flex;align-items:center;gap:16px;margin-bottom:18px}
.ct-fiche-tete>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.ct-fiche-tete b{font-size:1.125rem}
.ct-pro{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:var(--r-panel);background:color-mix(in srgb,var(--peach) 55%,transparent);margin-bottom:16px}
.ct-pro>div{display:flex;flex-direction:column;flex:1;min-width:160px}
.ct-sec{font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--gray-600);margin:18px 0 8px}
.ct-coord{display:grid;grid-template-columns:150px minmax(0,1fr) 40px;gap:8px;align-items:end;margin-bottom:8px}
.ct-coord>.champ{margin:0}
.ct-coord .champ>label{display:none}
.ct-coord .rond{margin-bottom:2px}
.ct-dl{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px 14px;margin:0}
.ct-dl dt{color:var(--gray-600);font-size:.875rem}.ct-dl dd{margin:0;overflow-wrap:anywhere}
.ct-rappros{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;margin-top:14px}
.ct-rappro{display:flex;flex-direction:column;gap:12px}
.ct-rappro-paire{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:center;gap:10px}
.ct-rappro-qui{display:flex;align-items:center;gap:10px;min-width:0;color:inherit}
.ct-rappro-qui>div{display:flex;flex-direction:column;min-width:0}
.ct-rappro-qui b,.ct-rappro-qui span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-rappro-fl{color:var(--gray-600)}
.ct-rappro .coches{max-height:none;grid-template-columns:1fr}
.ct-rappro-pied{display:flex;justify-content:flex-end;gap:8px;margin-top:auto}
.ct-tete .recherche{min-width:280px}
.ct-tete>*{min-width:0}.ct-tete .ct-vues{flex:1 1 100%}
.ct-tete,.ct-panneau,.ct-lot{min-width:0;max-width:100%}
@media (max-width:760px){
  .ct-panneau{padding:4px 30px 12px 0}
  .ct-ligne{grid-template-columns:24px 40px minmax(0,1fr);gap:10px;padding:10px 8px}
  .ct-ligne .ct-tags,.ct-ligne .contacts{grid-column:3}
  .ct-ligne .contacts{justify-content:flex-start}
  .ct-ligne .ct-num{display:none}
  .ct-ligne .ct-tags:empty{display:none}
  .ct-sous-tel{display:inline}
  .ct-index{right:2px}.ct-index button{width:24px;height:17px;font-size:.625rem}
  .ct-coord{grid-template-columns:minmax(0,1fr) 40px}.ct-coord>.champ:first-child,.ct-coord>select{grid-column:1/-1}
  .ct-rappros{grid-template-columns:1fr}
  .ct-tete .outils{width:100%}.ct-tete .recherche{flex:1 1 100%;min-width:0}
}

/* Lots : « + » à côté de la flèche d'une famille, qui ouvre tous ses lots (sous-familles fermées par défaut) */
.acc-famille>summary{grid-template-columns:1fr auto 150px auto}
.acc-fin{display:flex;align-items:center;gap:6px;justify-content:flex-end}
.acc-plus{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--muted);font:600 15px/1 inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.acc-plus:hover{color:var(--ink);border-color:var(--ink)}
@media (max-width:760px){.acc-famille>summary{grid-template-columns:1fr auto}}

/* Lots : pastilles d'infos à droite du titre (popup) ; ouvrages décalés sous le titre */
.lot-infos{display:inline-flex;gap:4px;margin-left:10px;align-self:center;flex-wrap:wrap}
.lot-info{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--ink)}
.lot-info .ic{width:16px;height:16px}.lot-info:hover{border-color:var(--ink)}
.acc-lot .acc-detail{padding-left:72px}.acc-sfam .acc-lot .acc-detail{padding-left:80px}
@media (max-width:760px){.acc-lot .acc-detail,.acc-sfam .acc-lot .acc-detail{padding-left:20px}.lot-infos{margin-left:0}}

/* Champs des lignes d'ajout (offres reçues, Travaux Supp. d'un marché, paiements) : même allure que les champs de formulaire */
.mc-ajout input,.mc-ajout select,.ajout-paiement select{height:44px;padding:0 12px;font:inherit;font-size:16px;color:var(--ink);background:var(--surface);
  border:1px solid var(--gray-300);border-radius:var(--r-btn);min-width:0;transition:border-color .15s var(--ease)}
.mc-ajout input:hover,.mc-ajout select:hover,.ajout-paiement select:hover{border-color:var(--muted)}
.mc-ajout input:focus,.mc-ajout select:focus,.ajout-paiement select:focus{outline:none;border-color:var(--ink)}
.mc-ajout input::placeholder{color:var(--faint)}
.ajout-paiement:has(select){grid-template-columns:150px 1fr 1fr 1.4fr auto}
@media (max-width:760px){.mc-ajout input,.mc-ajout select{flex:1 1 100%}.ajout-paiement,.ajout-paiement:has(select){grid-template-columns:1fr 1fr}}

/* Lots : alignements. Toutes les flèches dans une colonne de 24 px (famille, sous-famille, lot) ;
   dans les sous-familles, code / nom / nombre de lots en colonnes fixes pour que les nombres s'alignent. */
.acc-chevron{width:24px;flex:none}
.acc-sfam>summary .acc-fam-nom{display:grid;grid-template-columns:40px minmax(0,300px) auto;align-items:baseline;gap:10px}
.acc-sfam>summary .acc-fam-nom .acc-code{justify-self:start}
@media (max-width:760px){.acc-sfam>summary .acc-fam-nom{grid-template-columns:34px minmax(0,1fr);row-gap:2px}.acc-sfam>summary .acc-fam-nom .second{grid-column:2}}

/* Lots dans l'accordéon : numéro, nom, badges (état, hors budget, Travaux Supp.), ouvrages · dévolution, pastilles d'infos — en colonnes alignées */
.lot-grille-acc{display:grid;grid-template-columns:34px minmax(0,300px) 190px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0}
.lot-grille-acc .lot-titre{font-weight:600;min-width:0}
.lot-grille-acc .lot-badges{display:flex;flex-wrap:wrap;gap:4px;min-width:0}
.lot-grille-acc .lot-badges .pastille{margin-left:0}
.lot-grille-acc .lot-sous{color:var(--muted);font-size:12px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lot-grille-acc .lot-infos{margin-left:0;justify-self:end;flex-wrap:nowrap}
@media (max-width:1100px){.lot-grille-acc{grid-template-columns:34px minmax(0,1fr) auto}.lot-grille-acc .lot-badges{grid-column:2}.lot-grille-acc .lot-sous{grid-column:2;white-space:normal}.lot-grille-acc .lot-infos{grid-column:3;grid-row:1}}

/* Lots : tableau des ouvrages encadré dans le détail d'un lot */
.acc-ouv-cadre{width:100%;max-width:1100px;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden}
.acc-ouv-tete{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:10px 16px;background:var(--soft);border-bottom:1px solid var(--line)}
.acc-ouv-cadre .defile{margin:0}
.acc-ouvrages{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.875rem}
.acc-ouvrages th{text-align:left;font-size:.6875rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;padding:9px 16px;border-bottom:1px solid var(--line)}
.acc-ouvrages td{padding:9px 16px;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}
.acc-ouvrages tbody tr:last-child td{border-bottom:0}
.acc-ouvrages tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--soft) 55%,transparent)}
.acc-ouvrages th.n,.acc-ouvrages td.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.acc-ouvrages td.u{color:var(--muted)}.acc-ouvrages td.h{color:var(--muted);font-size:.8125rem}
.acc-ouvrages tfoot td{border-top:1px solid var(--line);border-bottom:0;font-weight:600;background:var(--soft)}
@media (max-width:760px){.acc-ouvrages th,.acc-ouvrages td{padding:8px 10px}}

/* Lots : une seule grille de colonnes pour familles, sous-familles et lots — code ou numéro (40 px), nom (300 px), puis le reste,
   avec le même retrait à gauche : A2 tombe au-dessus de 02, « Bureaux d'études » au-dessus de « BET structure ». */
.acc-famille>summary,.acc-sfam>summary,.acc-lot>summary,.acc-sfam .acc-lot>summary{padding-left:24px}
.lot-grille-acc{grid-template-columns:40px minmax(0,300px) 190px minmax(0,1fr) auto}
.lot-grille-acc .puce{justify-self:start}
.acc-lot .acc-detail,.acc-sfam .acc-lot .acc-detail{padding-left:74px}
@media (max-width:1100px){.lot-grille-acc{grid-template-columns:40px minmax(0,1fr) auto}}
@media (max-width:760px){.acc-lot .acc-detail,.acc-sfam .acc-lot .acc-detail{padding-left:20px}}

/* Grandes familles : une seule ligne, même hauteur pour toutes ; le texte « n lots · rôle » est coupé avec « … » s'il est trop long */
.acc-famille>summary .acc-fam-nom{display:flex;align-items:baseline;gap:10px;min-width:0;white-space:nowrap}
.acc-famille>summary .acc-fam-nom b{flex:none}
.acc-famille>summary .acc-fam-nom .second{min-width:0;overflow:hidden;text-overflow:ellipsis}

/* Lots : les ouvrages, quatrième niveau de l'arbre, sur les colonnes des lots (plus de tableau encadré) */
.acc-detail.arbo,.acc-sfam .acc-lot .acc-detail.arbo{padding:0 0 14px;display:block}
.acc-ouv{display:grid;grid-template-columns:1fr auto 150px 24px;align-items:baseline;gap:14px;padding:5px 20px 5px 24px;font-size:13px;color:var(--muted)}
.acc-ouv:hover{background:var(--soft)}
.acc-ouv-g{display:grid;grid-template-columns:40px minmax(0,300px) 190px minmax(0,1fr);gap:10px;align-items:baseline;min-width:0}
.acc-ouv-m{text-align:center;color:var(--faint)}
.acc-ouv-d{color:var(--ink);min-width:0;overflow-wrap:anywhere}
.acc-ouv-q{font-variant-numeric:tabular-nums}
.acc-ouv-h{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acc-ouv .acc-montant{font-size:13px;color:var(--ink);text-align:right}
.acc-ouv.total{font-weight:600}.acc-ouv.total .acc-ouv-d{color:var(--ink)}
.acc-detail-suite{padding:10px 20px 0 74px;display:flex;flex-direction:column;gap:12px;align-items:flex-start}
@media (max-width:1100px){.acc-ouv-g{grid-template-columns:40px minmax(0,1fr) auto}.acc-ouv-h{display:none}}
@media (max-width:760px){.acc-ouv{grid-template-columns:1fr auto;padding-left:12px}.acc-ouv>span:nth-child(n+3){display:none}.acc-ouv-g{grid-template-columns:20px minmax(0,1fr) auto}
  .acc-detail-suite{padding-left:20px}}

/* Survol d'une grande famille : un gris un peu plus soutenu que le fond des sous-familles */
.acc-famille>summary:hover{background:color-mix(in srgb,var(--soft) 100%,var(--ink) 7%)}

/* Ouvrages : traits de séparation, alternance blanc / vert très léger, sous-total sur fond vert avec un trait plus épais dessous */
.acc-ouv{border-top:1px solid var(--line);background:var(--surface)}
.acc-ouv:nth-of-type(even){background:color-mix(in srgb,var(--sage) 30%,var(--surface))}
.acc-ouv:hover{background:color-mix(in srgb,var(--sage) 55%,var(--surface))}
.acc-ouv.total{background:color-mix(in srgb,var(--sage) 85%,var(--surface));border-top:1px solid color-mix(in srgb,var(--sage) 100%,var(--ink) 15%);
  border-bottom:2px solid color-mix(in srgb,var(--sage) 100%,var(--ink) 25%);padding-top:8px;padding-bottom:8px}

/* « + » d'une sous-famille, calé à droite juste avant la flèche */
.acc-fin-sf{display:flex;justify-content:flex-end}

/* Ouvrages d'un lot : petit tableau propre (en-tête, n° à gauche), décalé sous le nom du lot, sans s'aligner sur les colonnes du lot */
.acc-ouvs{margin:4px 20px 0 74px;max-width:1100px;border-bottom:2px solid var(--line)}
.acc-ouvs .acc-ouv{display:grid;grid-template-columns:52px minmax(0,1.3fr) 110px minmax(0,1fr);gap:12px;align-items:baseline;padding:6px 10px;font-size:13px;color:var(--muted)}
.acc-ouvs.avec-prix .acc-ouv{grid-template-columns:52px minmax(0,1.3fr) 110px minmax(0,1fr) 120px}
.acc-ouv-n{font-variant-numeric:tabular-nums;color:var(--faint);font-size:12px}
.acc-ouv-q{text-align:right;font-variant-numeric:tabular-nums}.acc-ouv-mt{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}
.acc-ouvs .acc-ouv.entete{background:transparent;border-top:0;border-bottom:1px solid var(--line);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.acc-ouvs .acc-ouv.entete:hover{background:transparent}.acc-ouvs .acc-ouv.entete .acc-ouv-n{color:var(--muted);font-size:11px}
.acc-ouvs .acc-ouv:nth-of-type(even):not(.entete):not(.total){background:color-mix(in srgb,var(--sage) 30%,var(--surface))}
.acc-ouvs .acc-ouv:nth-of-type(odd):not(.entete):not(.total){background:var(--surface)}
.acc-ouvs .acc-ouv.total{font-weight:600}
@media (max-width:1100px){.acc-ouvs .acc-ouv,.acc-ouvs.avec-prix .acc-ouv{grid-template-columns:40px minmax(0,1fr) 90px auto}.acc-ouvs .acc-ouv-h{display:none}}
@media (max-width:760px){.acc-ouvs{margin-left:12px;margin-right:12px}.acc-ouvs .acc-ouv,.acc-ouvs.avec-prix .acc-ouv{grid-template-columns:32px minmax(0,1fr) auto}.acc-ouvs .acc-ouv-q{display:none}}
@media (max-width:760px){.acc-ouvs .acc-ouv>.acc-ouv-mt{display:block}}

/* Ouvrages : boutons éditer / dupliquer / supprimer au bout de chaque ligne (visibles au survol sur ordinateur) */
.acc-ouvs.avec-actions .acc-ouv{grid-template-columns:52px minmax(0,1.3fr) 110px minmax(0,1fr) 92px}
.acc-ouvs.avec-prix.avec-actions .acc-ouv{grid-template-columns:52px minmax(0,1.3fr) 110px minmax(0,1fr) 120px 92px}
.acc-ouv-act{display:flex;gap:2px;justify-content:flex-end;opacity:.25;transition:opacity .15s}
.acc-ouv:hover .acc-ouv-act,.acc-ouv-act:focus-within{opacity:1}
.acc-ouv-act button{width:26px;height:26px;border:0;border-radius:8px;background:transparent;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.acc-ouv-act button .ic{width:15px;height:15px}.acc-ouv-act button:hover{background:var(--surface);color:var(--ink)}
.acc-ouv-act button.arme{background:var(--blush);color:var(--ink)}
@media (hover:none){.acc-ouv-act{opacity:1}}
@media (max-width:1100px){.acc-ouvs.avec-actions .acc-ouv,.acc-ouvs.avec-prix.avec-actions .acc-ouv{grid-template-columns:40px minmax(0,1fr) 90px auto 92px}}
@media (max-width:760px){.acc-ouvs.avec-actions .acc-ouv,.acc-ouvs.avec-prix.avec-actions .acc-ouv{grid-template-columns:32px minmax(0,1fr) auto 84px}}

/* Ouvrages : toute la largeur restante, du nom du lot jusqu'au bord droit */
.acc-ouvs{max-width:none}

/* Nouveau budget : page dédiée (modes, arbre des lots avec niveaux de détail, réglages IA) */
.nb{display:flex;flex-direction:column;gap:16px}
.nb-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.nb-mode{display:flex;flex-direction:column;gap:6px;padding:16px;border:1px solid var(--line);border-radius:16px;cursor:pointer;background:var(--surface)}
.nb-mode input[type=radio]{position:absolute;opacity:0;pointer-events:none}.nb-mode .ic{width:22px;height:22px}
.nb-mode.actif{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}.nb-mode select{margin-top:6px;height:40px;border:1px solid var(--gray-300);border-radius:var(--r-btn);padding:0 10px;font:inherit;background:var(--surface);color:var(--ink)}
.nb-arbre{display:flex;flex-direction:column;gap:10px}
.nb-fam{padding:0;overflow:hidden}.nb-fam>summary{list-style:none;cursor:pointer}.nb-fam>summary::-webkit-details-marker{display:none}
.nb-ligne{display:grid;grid-template-columns:minmax(0,1fr) auto 240px 24px;align-items:center;gap:12px;padding:12px 16px}
.nb-sf>.nb-ligne{grid-template-columns:minmax(0,1fr) 240px;padding:8px 16px 8px 40px;background:var(--soft)}
.nb-case{display:flex;align-items:center;gap:10px;min-width:0;cursor:pointer}.nb-case input,.nb-lot input{width:18px;height:18px;accent-color:var(--ink);flex:none}
.nb-ligne select{height:38px;border:1px solid var(--gray-300);border-radius:var(--r-btn);padding:0 10px;font:inherit;font-size:14px;background:var(--surface);color:var(--ink);min-width:0}
.nb-ligne select:disabled{opacity:.45}
details[open]>summary.nb-ligne .acc-chevron{transform:rotate(90deg)}
.nb-corps{border-top:1px solid var(--line)}
.nb-lots{display:flex;flex-direction:column}
.nb-lot{display:flex;align-items:center;gap:10px;padding:7px 16px 7px 64px;border-top:1px solid var(--line);cursor:pointer;font-size:14px}
.nb-lot:hover{background:var(--soft)}.nb-lot .puce{width:28px;height:24px;border-radius:8px;background:var(--soft);display:grid;place-items:center;font-size:.6875rem;font-weight:600;color:var(--gray-600);flex:none}
.nb-lot-nom{min-width:0}.nb-lot .second{margin-left:auto}
.nb-pied{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:8px;padding:12px 0;background:linear-gradient(transparent,var(--page) 30%)}
@media (max-width:760px){.nb-ligne{grid-template-columns:minmax(0,1fr) 24px}.nb-ligne select{grid-column:1/-1}.nb-ligne>.second{grid-column:1}
  .nb-sf>.nb-ligne{grid-template-columns:1fr;padding-left:24px}.nb-lot{padding-left:32px;flex-wrap:wrap}}

/* Export des lots : type de version (complète, simplifiée, minime) */
.sel-type{margin:0 0 12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px}.sel-type .coches{display:flex;flex-direction:column;gap:6px;margin-top:6px}

/* Lots : annotation sous le nom ; petits boutons éditer / supprimer sur les familles, sous-familles et lots */
.lot-annot{display:block;font-weight:400;font-size:12px;color:var(--muted);font-style:italic;margin-top:1px}
.acc-mini{width:26px;height:26px;border:0;border-radius:8px;background:transparent;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;opacity:.35;transition:opacity .15s}
.acc-mini .ic{width:15px;height:15px}.acc-mini:hover{background:var(--surface);color:var(--ink);opacity:1}
summary:hover .acc-mini,.acc-lot>summary:hover .acc-mini{opacity:1}
@media (hover:none){.acc-mini{opacity:1}}
.lot-actions{display:inline-flex;gap:2px;justify-self:end}
.lot-grille-acc{grid-template-columns:40px minmax(0,300px) 190px minmax(0,1fr) auto auto}
@media (max-width:1100px){.lot-grille-acc{grid-template-columns:40px minmax(0,1fr) auto}.lot-grille-acc .lot-actions{grid-column:3}}

/* Cartes de budget : statut + éditer / effacer en haut à droite */
.budget-carte-droite{display:inline-flex;align-items:center;gap:2px}.budget-carte .acc-mini{opacity:.5}.budget-carte:hover .acc-mini{opacity:1}

/* Budget rangé comme les lots : en-têtes famille / sous-famille / lot repliables ; camemberts */
#bud-lignes tr.cache{display:none}
#bud-lignes tr.bud-g{cursor:pointer}#bud-lignes tr.bud-g td{border-bottom:1px solid var(--line)}
#bud-lignes tr.bud-g .bud-g-in{display:flex;align-items:center;gap:8px;min-width:0}
#bud-lignes tr.bud-g .acc-chevron{transform:rotate(90deg)}#bud-lignes tr.bud-g.ferme .acc-chevron{transform:none}
#bud-lignes tr.bud-fam td{background:color-mix(in srgb,var(--soft) 100%,var(--ink) 7%);font-size:15px;padding-top:12px;padding-bottom:12px}
#bud-lignes tr.bud-sf td{background:var(--soft);font-size:13px}#bud-lignes tr.bud-sf td:first-child{padding-left:24px}
#bud-lignes tr.bud-lotg td{font-size:13px}#bud-lignes tr.bud-lotg td:first-child{padding-left:44px}
#bud-lignes tr.bud-g:hover td{background:color-mix(in srgb,var(--soft) 100%,var(--ink) 10%)}
.camembert{display:grid;grid-template-columns:120px 1fr;gap:14px;align-items:center;margin:4px 0 14px}
.camembert svg{width:120px;height:120px}.camembert path{stroke:var(--surface);stroke-width:2}
.camembert ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12px}
.camembert li{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:8px;align-items:center}.camembert li i{width:10px;height:10px;border-radius:3px}
.camembert li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Lots : flèches monter / descendre (dans la sous-famille) */
.acc-mini.fl-haut .ic{transform:rotate(-90deg)}.acc-mini.fl-bas .ic{transform:rotate(90deg)}.acc-mini-vide{width:26px;display:inline-block}

/* Paiements : fenêtre de saisie et page du projet */
.paie-resume{display:flex;flex-wrap:wrap;gap:6px 16px;padding:10px 12px;margin:0 0 12px;background:var(--soft);border-radius:12px;font-size:13px;color:var(--muted)}.paie-resume b{color:var(--ink)}
.paie-chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:12px}.paie-chiffres .panneau{display:flex;flex-direction:column;gap:4px}.paie-chiffres b{font-size:22px}
.paie-filtres{flex-wrap:wrap;gap:8px}.paie-filtres select{height:40px;border:1px solid var(--gray-300);border-radius:var(--r-btn);padding:0 10px;font:inherit;background:var(--surface);color:var(--ink)}
.paie-table td{vertical-align:top}

/* La dernière sous-famille ouverte : en-tête sur fond vert */
.acc-sfam.derniere>summary{background:color-mix(in srgb,var(--sage) 85%,var(--surface))}
.acc-sfam.derniere>summary:hover{background:var(--sage)}

/* Lots dans une sous-famille : retrait plus marqué et pointillés qui les relient à leur sous-famille (arborescence) */
.acc-sfam .acc-lot{position:relative}
.acc-sfam .acc-lot>summary,.acc-sfam .acc-lot>summary{padding-left:68px;position:relative}
.acc-sfam .acc-lot::before{content:"";position:absolute;left:38px;top:0;bottom:0;border-left:2px dotted var(--faint);pointer-events:none}
.acc-sfam .acc-lot:last-child::before{bottom:auto;height:30px}
.acc-sfam .acc-lot>summary::before{content:"";position:absolute;left:39px;top:29px;width:22px;border-top:2px dotted var(--faint);pointer-events:none}
.acc-sfam .acc-ouvs{margin-left:114px}.acc-sfam .acc-detail-suite{padding-left:114px}
@media (max-width:760px){.acc-sfam .acc-lot>summary{padding-left:36px}.acc-sfam .acc-lot::before{left:16px}.acc-sfam .acc-lot>summary::before{left:17px;width:12px}
  .acc-sfam .acc-ouvs{margin-left:36px}.acc-sfam .acc-detail-suite{padding-left:36px}}

/* Recherche dans les lots : champ en haut de l'accordéon, résultats surlignés en orange */
.lots-recherche{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:0 14px;height:48px;border:1px solid var(--gray-300);border-radius:var(--r-btn);background:var(--surface)}
.lots-recherche:focus-within{border-color:var(--ink)}.lots-rech-ico .ic{width:18px;height:18px}
.lots-recherche input{flex:1;border:0;outline:0;background:transparent;font:inherit;font-size:15px;color:var(--ink);min-width:0}
mark.surligne{background:#F6A04D;color:#1a1a19;border-radius:3px;padding:0 1px}

/* Grandes familles des lots : fond bleu très léger (un peu plus soutenu au survol) */
.acc-famille>summary{background:color-mix(in srgb,var(--sky) 45%,var(--surface))}
.acc-famille>summary:hover{background:color-mix(in srgb,var(--sky) 75%,var(--surface))}

/* Lots : dernière ligne « Total des lots », comme une famille, sur fond orange */
.acc-total{padding:0;overflow:hidden}
.acc-total-ligne{display:grid;grid-template-columns:1fr auto 150px auto;align-items:center;gap:14px;padding:16px 20px 16px 24px;background:color-mix(in srgb,var(--peach) 90%,var(--surface))}
.acc-total-ligne>span:last-child{width:24px}
.acc-total .acc-fam-nom{display:flex;align-items:baseline;gap:10px;white-space:nowrap;min-width:0}.acc-total .acc-fam-nom b{font-size:17px}
.acc-total .acc-montant{font-weight:700;font-size:15px}
@media (max-width:760px){.acc-total-ligne{grid-template-columns:1fr}}
/* Total des lots : textes en gros et en gras */
.acc-total .acc-fam-nom b{font-size:22px;font-weight:700}.acc-total .acc-fam-nom .second{font-size:15px;font-weight:600;color:var(--ink);opacity:.7}
.acc-total .acc-montant{font-size:22px;font-weight:700}.acc-total .acc-av small{font-size:15px;font-weight:700}
.acc-total-ligne{padding-top:20px;padding-bottom:20px}

/* Total des lots : avancement moyen (libellé, barre, %) à gauche du montant, montant calé à droite */
.acc-total-ligne{grid-template-columns:minmax(0,1fr) auto auto;padding-right:24px}
.acc-total-av{display:flex;align-items:center;gap:10px;white-space:nowrap}.acc-total-av .lib-av{font-size:13px;font-weight:600;opacity:.75}
.acc-total-av .piste,.acc-total-av [class*="piste"]{width:110px}.acc-total-av b{font-size:18px}
.acc-total .acc-montant{text-align:right;min-width:180px}
@media (max-width:760px){.acc-total-ligne{grid-template-columns:1fr}.acc-total .acc-montant{text-align:left;min-width:0}}

/* Nouveau budget par script : les niveaux par famille ne servent pas (le script les fixe) */
.nb-sans-niveaux [data-nb-niveau]{display:none}

/* Budget : cumul des paiements effectués et reliquat à payer dans les en-têtes et les totaux */
#bud-lignes tr.bud-g .bud-paye{margin-left:auto;display:inline-flex;gap:14px;font-size:12px;color:var(--muted);font-weight:400}
#bud-lignes tr.bud-g .bud-paye b{color:var(--ink);font-weight:600}
.bud-tot-paye{border-top:1px dashed var(--line);padding-top:8px;margin-top:6px}

/* Budget : en-têtes de groupe — payé et reliquat bien séparés, calés à droite de la cellule */
#bud-lignes tr.bud-g .bud-paye{gap:18px;white-space:nowrap}#bud-lignes tr.bud-g .bud-paye>span{display:inline-flex;gap:5px}
#bud-lignes tr.bud-g td.n{white-space:nowrap;font-weight:600}

/* Versions d'export : bouton retirer */
.expv-actions .expv-suppr{opacity:.6}.expv-actions .expv-suppr:hover{opacity:1}

/* Budgets : ruban « Nouveau » vert en haut à droite de la carte d'un budget qui vient d'être créé */
.budget-carte{position:relative;overflow:hidden}
.ruban-nouveau{position:absolute;top:14px;right:-34px;width:130px;transform:rotate(45deg);text-align:center;background:#2E9E5B;color:#fff;font-size:11px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;padding:4px 0;box-shadow:0 2px 6px rgba(0,0,0,.15);z-index:1}
.budget-carte.nouveau{box-shadow:0 0 0 2px #2E9E5B}
.budget-carte.nouveau .budget-carte-droite{margin-right:36px}

/* Budget : colonne « Payé » (en dur) des lignes */
.bud-paye-in{color:#2F6B2F}

/* Planning budgétaire : échéancier mensuel */
.ech-table td.ech-barre{width:34%}.ech-barre i{display:block;height:8px;border-radius:4px;background:var(--sage)}
.ech-table td{vertical-align:middle}.pln-table input.n{text-align:right}

/* Planning des travaux : paramètres et remarques (création et page du planning) */
.pt{display:grid;gap:18px}.pt-bloc{display:grid;gap:8px}
.pt-sp{display:grid;grid-template-columns:150px 150px 1fr 200px 36px;gap:8px;align-items:center}
@media (max-width:760px){.pt-sp{grid-template-columns:1fr 1fr}.pt-sp input[data-sp="motif"]{grid-column:1/-1}}
.pt-panneau>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px}
.pt-panneau>summary::-webkit-details-marker{display:none}.pt-panneau>summary .petit{display:block;margin-top:2px}
.pt-panneau[open]>summary{margin-bottom:16px}.pt-panneau[open]>summary .acc-chevron{transform:rotate(90deg)}
.pt-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:18px}
.pt-alerte{margin:0 0 14px;padding:10px 14px;border-radius:var(--r-btn);background:var(--peach);color:var(--ink)}.pt-alerte.ok{background:var(--sage)}

/* Fenêtres et feuilles : la zone centrale défile au lieu d'être coupée (fenêtre des fichiers PDF trop haute) */
.sheet>.sheet-corps{min-height:0;flex:1 1 auto}
.sel-type .coches{max-height:none}
.sheet.modale .expv-liste{max-height:30vh}
.sel-type .gelules{margin-top:6px}
.sel-type .coches.police-choix{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px 16px}.police-choix>.second{flex-basis:100%}

/* Gantt : repères du 1er, du 15 et de fin de mois ; annotation en petit sur chaque barre */
.gantt-axe.avec-jours{height:40px}
.gantt-axe span.j{top:auto;bottom:2px;font-size:.5625rem;font-weight:500;color:var(--faint);padding-left:2px}
.gantt-axe span.j.fin{transform:translateX(-100%);padding:0 2px 0 0}
.gantt-piste i.q{border-left:1px dotted var(--line);opacity:.7}
.gantt-note{position:absolute;top:8px;z-index:2;font-size:.625rem;line-height:12px;color:var(--ink);white-space:nowrap;pointer-events:none;padding-left:6px;
  max-width:60%;overflow:hidden;text-overflow:ellipsis}
.gantt-note.gauche{padding:0 6px 0 0;text-align:right}

/* Historique des versions d'un planning */
.hv-liste{display:grid;gap:8px}
.hv-ligne{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:start;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-card)}
.hv-ligne.actuelle{background:var(--soft)}
.hv-ico{width:32px;height:32px;border-radius:50%;background:var(--sky);display:grid;place-items:center}.hv-ico svg{width:16px;height:16px}
.hv-tete{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}.hv-demande{margin:4px 0;font-size:.875rem}
.hv-avis summary{cursor:pointer}.hv-avis p{margin:4px 0 0}

/* Plannings : couleurs par corps d'état (convention), commandes hachurées, légende, choix de couleur dans le tableau */
.gantt-barre.commande{background:repeating-linear-gradient(45deg,var(--p) 0 4px,var(--surface) 4px 8px)}
.gantt-coul{display:inline-block;width:16px;height:10px;border-radius:3px;background:var(--p);border:1px solid color-mix(in srgb,var(--p) 60%,var(--ink) 25%)}
.gantt-coul.commande{background:repeating-linear-gradient(45deg,var(--p) 0 3px,var(--surface) 3px 6px)}
.gantt-coul.jalon{width:9px;height:9px;background:var(--ink);border:0;transform:rotate(45deg);border-radius:1px}
.pln-coul-c{display:flex;align-items:center;gap:6px}
.pln-coul{flex:none;width:12px;height:12px;border-radius:3px;background:var(--p);border:1px solid color-mix(in srgb,var(--p) 60%,var(--ink) 25%)}
/* Planning : bandeau compact, Gantt dans sa propre zone qui déborde seule (zoom, glisser), une ligne par lot, recherche rapide */
.pln-tete{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;padding:12px 18px;margin-bottom:10px}
.pln-illu .illu-encart{width:84px;display:block}
.pln-titre{min-width:0}
.pln-nom{margin:2px 0;font-size:1.375rem;font-weight:700;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pln-titre p{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pln-actions{display:grid;gap:6px;justify-items:end}
.pln-act-l{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end}
.rond.pln-ic{width:34px;height:34px}
.rond.pln-ic svg{width:17px;height:17px}
.rond.pln-ic.danger:hover{color:#E5484D;border-color:#E5484D}
.pln-sep{width:1px;height:22px;background:var(--line);margin:0 2px}
.pln-vues{margin:6px 0 8px}
.pt-panneau{margin-bottom:8px}
#pln-zone:has(.gantt-zone){padding:12px 14px}
@media (max-width:760px){.pln-tete{grid-template-columns:minmax(0,1fr)}.pln-illu{display:none}.pln-actions{justify-items:start}.pln-act-l{justify-content:flex-start}}

.gantt-zone{display:grid;gap:8px;min-width:0}
.gantt-outils{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between}
.gantt-zoom{display:flex;gap:6px;align-items:center}
.gantt-zoom .rond{width:32px;height:32px;font-size:18px;line-height:1}
.gantt-cherche{position:relative;display:flex;align-items:center;gap:6px;flex:1 1 320px;max-width:560px;height:38px;padding:0 6px 0 10px;
  border:1px solid var(--line);border-radius:var(--r-pill);background:var(--soft);transition:border-color .15s,background .15s}
.gantt-cherche:focus-within{border-color:var(--ink);background:var(--surface)}
.gantt-cherche .gc-ico svg{width:18px;height:18px;display:block}
.gantt-cherche input{flex:1;min-width:0;border:0;background:transparent;outline:0;font:inherit;font-size:.875rem;padding:0;height:100%}
.gc-nb{white-space:nowrap}
.gc-nav{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:16px;line-height:1;cursor:pointer}
.gc-nav:hover{border-color:var(--ink)}
.gc-liste{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:6px;max-height:360px;overflow:auto}
.gc-item{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;cursor:pointer}
.gc-item:hover,.gc-item.actif{background:var(--soft)}
.gc-item>i{flex:none;width:12px;height:12px;border-radius:3px;border:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.gc-txt{flex:1;min-width:0;display:grid}
.gc-txt b{font-size:.8125rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gc-txt small{font-size:.6875rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gc-plus{margin:4px 8px}

.gantt-defile{overflow:auto;max-height:max(380px,calc(100vh - 230px));border:1px solid var(--line);border-radius:10px;overscroll-behavior:contain;cursor:grab;background:var(--surface)}
.gantt-defile.glisse{cursor:grabbing;user-select:none}
.gantt-defile .gantt{width:max-content;min-width:100%;overflow:visible;gap:0;--lw:250px}
.gantt-defile .gantt-entete,.gantt-defile .gantt-ligne{grid-template-columns:var(--lw) var(--gw);gap:0}
.gantt-defile .gantt-entete{position:sticky;top:0;z-index:6;background:var(--surface)}
.gantt-defile .gantt-entete .gantt-lib{align-self:stretch;border-bottom:1px solid var(--line)}
.gantt-defile .gantt-lib{position:sticky;left:0;z-index:4;align-self:stretch;display:flex;flex-direction:column;justify-content:center;
  padding:3px 12px;background:var(--surface);border-right:1px solid var(--line);cursor:default}
.gantt-defile .gantt-ligne{border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
.gantt-defile .gantt-ligne:hover .gantt-lib,.gantt-defile .gantt-ligne:hover .gantt-piste{background:color-mix(in srgb,var(--soft) 70%,transparent)}
.gantt-defile .gantt-phase{margin:0;padding:12px 12px 4px;position:sticky;left:0;width:var(--lw);box-sizing:border-box;z-index:4}
.gantt-defile .gantt-piste{height:28px}
.gantt-defile .gantt-barre{height:15px;overflow:hidden}
.gb-lib{display:block;padding:0 5px;font-size:.625rem;line-height:13px;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.gantt.serre .gantt-axe span.j{display:none}
.gantt.serre .gb-lib{display:none}
.gz-aide{margin-left:auto}
/* Recherche : les tâches trouvées ressortent, les autres pâlissent ; la tâche courante est entourée et pointée d'une flèche qui rebondit */
.gantt-zone.en-recherche [data-gt]:not(.trouve){opacity:.22}
.gantt-zone.en-recherche [data-gt].trouve{outline:2px solid var(--ink);outline-offset:1px}
.gantt-zone [data-gt].courant,.gantt-zone.en-recherche [data-gt].courant{outline:3px solid #E5484D;outline-offset:2px;opacity:1;z-index:3}
.gantt-fleche{position:absolute;z-index:5;width:0;height:0;margin-left:-7px;border:7px solid transparent;border-top:10px solid #E5484D;border-bottom:0;
  pointer-events:none;animation:gantt-rebond .9s ease-in-out infinite}
@keyframes gantt-rebond{0%,100%{transform:translateY(-3px)}50%{transform:translateY(2px)}}
@media (prefers-reduced-motion:reduce){.gantt-fleche{animation:none}}
.fiche-tache .gtip-titre{display:none}
.pln-illu{background:var(--peach);border-radius:14px;padding:8px 10px;align-self:stretch;display:flex;align-items:center}
.pln-illu .illu-encart{width:92px}
.pln-fil{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:2px}
.pln-retour{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;font-weight:600;color:var(--muted);text-decoration:none}
.pln-retour:hover{color:var(--ink)}
.pln-retour svg{width:14px;height:14px}
.pln-projet{font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:var(--r-pill);background:var(--peach);color:#0A0A0A}
.pln-tete{margin-top:4px}
.pt-panneau{padding:10px 18px}
@media (max-width:760px){.pln-illu{display:none}.gantt-defile .gantt{--lw:150px}.gz-aide{display:none}}
.pln-params.actif{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.pln-pt-ok{margin-left:4px;font-size:.75rem;color:#2F7D62}
.pln-params.actif .pln-pt-ok{color:inherit}
