/* Domogénie : jetons de la maquette v1 validée (charte Urbanicia). Nuit par défaut. */
:root{--bg:#FFF9F2;--surface:#FFFFFF;--sunken:#FBF3E8;--sb:#132E32;--sb-t:#FFF9F2;--sb-m:#9FB0AC;--sb-a:rgba(255,255,255,.08);
--text:#051A1D;--text2:#3D4A55;--muted:#7D8599;--border:#D9D9D9;--bs:#5C6478;
--accent:#75B72A;--accent-t:#051A1D;--accent-fg:#4A7A17;--accent-bg:#EEF7E0;
--ok:#1F8A4C;--ok-bg:#E3F3E6;--warn:#A8710A;--warn-bg:#FAEDD3;--danger:#B3261E;--danger-bg:#F8DEDC;
--shadow:0 1px 2px rgba(5,26,29,.06),0 1px 8px rgba(5,26,29,.04);--r:14px;color-scheme:light}
:root[data-theme=nuit]{--bg:#051A1D;--surface:#132E32;--sunken:#0D2529;--text:#FFF9F2;--text2:#C9D3D0;--muted:#93A5A1;
--border:rgba(255,249,242,.12);--bs:#4A7A80;--accent-fg:#75B72A;--accent-bg:rgba(117,183,42,.14);
--ok:#6FD69A;--ok-bg:rgba(111,214,154,.14);--warn:#F0B854;--warn-bg:rgba(240,184,84,.14);--danger:#F0827C;--danger-bg:rgba(240,130,124,.14);
--shadow:0 1px 2px rgba(0,0,0,.24),0 1px 8px rgba(0,0,0,.18);color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 13px/1.45 Inter,system-ui,sans-serif}
h1,h2,h3{font-family:Outfit,Inter,sans-serif;color:var(--text);margin:0}
a{color:var(--accent-fg)}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
.cache{display:none!important}

/* connexion */
.connexion{min-height:100%;display:grid;place-items:center;padding:16px}
.connexion .card{width:min(380px,100%);padding:28px}
.connexion h1{font-size:22px;margin-bottom:4px}
.connexion p{margin:0 0 16px;color:var(--text2)}
label{display:block;margin:12px 0 4px;font-size:12px;color:var(--text2)}
input[type=email],input[type=password],input[type=search]{width:100%;padding:9px 12px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);outline:0}
input:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.err{color:var(--danger);margin:10px 0 0;min-height:1.4em}

/* coque */
.app{display:flex;min-height:100%}
aside.sb{width:240px;flex:none;background:var(--sb);color:var(--sb-t);padding:24px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.logo{display:flex;align-items:center;gap:10px;font-family:Outfit;font-weight:700;font-size:15px;letter-spacing:.04em;margin-bottom:28px}
.logo i{width:26px;height:26px;border-radius:7px;background:var(--accent);display:block}
.nav{display:flex;flex-direction:column;gap:4px}
.nav a{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:8px;font-size:14px;font-weight:500;color:var(--sb-m);text-decoration:none}
.nav a.act{background:var(--sb-a);color:var(--sb-t)}
.sb .bas{margin-top:auto;font-size:12px;color:var(--sb-m)}
.col{flex:1;min-width:0;display:flex;flex-direction:column}
header.haut{display:flex;align-items:center;gap:16px;padding:12px 32px}
.recherche{flex:1;max-width:560px}
.recherche input{border-radius:999px;padding:9px 18px;font-size:14px}
.pastille{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:6px 14px;font-weight:500}
.sp{flex:1}
main{padding:0 32px 32px}
.pt{padding:4px 0 16px}.pt h1{font-size:24px;font-weight:700}.pt p{margin:2px 0 0;color:var(--text2);font-size:14px}
.fil{font-size:13px;margin-bottom:8px;color:var(--text2)}

/* composants */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 18px}
.btn{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:8px 20px;font-size:14px;font-weight:600;border:1px solid transparent;background:var(--accent);color:var(--accent-t)}
.grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
a.secteur{display:block;text-decoration:none;color:inherit}
a.secteur:hover{border-color:var(--accent)}
.secteur .code{font:700 12px Outfit;color:var(--accent-fg);letter-spacing:.06em}
.secteur h3{font-size:16px;margin:4px 0 10px}
.secteur .n{font:700 24px Outfit}
.secteur small{color:var(--text2)}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-size:12px;color:var(--text2);font-weight:600;padding:8px 12px;border-bottom:1px solid var(--border)}
td{padding:9px 12px;border-bottom:1px solid var(--border)}
tr:last-child td{border-bottom:0}
td.num{font-variant-numeric:tabular-nums}
.tag{display:inline-block;border-radius:999px;padding:1px 10px;font-size:12px;font-weight:600;background:var(--sunken);border:1px solid var(--border)}
.tag.a{background:var(--accent-bg);border-color:var(--accent)}
.tag.hors{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}
.vide{color:var(--muted);padding:20px 0}
h2.sous{font-size:16px;margin:20px 0 10px}

.burger,.voile{display:none}
@media (max-width:820px){
  html{-webkit-text-size-adjust:100%}
  .app{flex-direction:column}
  /* menu : tiroir qui s'ouvre avec le bouton ☰ */
  aside.sb{position:fixed;top:0;bottom:0;left:0;width:260px;height:100%;z-index:60;transform:translateX(-105%);transition:transform .2s ease;overflow-y:auto;padding:20px 16px}
  .app.menu-ouvert aside.sb{transform:none;box-shadow:0 0 40px rgba(0,0,0,.45)}
  .voile{position:fixed;inset:0;z-index:55;background:rgba(0,0,0,.45)}
  .app.menu-ouvert .voile{display:block}
  .burger{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;border:1px solid var(--border);background:var(--surface);font-size:22px;line-height:1;color:var(--text)}
  .nav a,.nav-titre{padding:12px;font-size:15px}
  .sb .bas{display:block}
  /* en-tête : bouton, recherche sur sa ligne, pastilles réduites */
  header.haut{padding:10px 16px;flex-wrap:wrap;gap:10px;position:sticky;top:0;z-index:40;background:var(--bg)}
  .recherche{order:5;flex-basis:100%;max-width:none}
  .sp{display:none}
  header.haut .pastille{padding:8px 12px}
  #nom-utilisateur{display:none}
  main{padding:0 16px 32px}
  .pt h1{font-size:21px}
  .card{padding:14px}
  .entete{flex-direction:column;align-items:stretch}
  .entete .btns,.entete>a.btn{align-self:flex-start}
  /* grilles à une colonne, jamais plus larges que l'écran */
  .grille-fiche,.formulaire{grid-template-columns:1fr}
  .colonne-large{grid-column:auto}
  .formulaire .large{grid-column:auto}
  /* tableaux : défilement horizontal plutôt que débordement de page */
  main table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .card.tableau,.tableau-etroit{overflow-x:auto}
  /* doigts : cibles de 44 px, champs à 16 px (évite le zoom automatique d'iPhone) */
  .btn,.btn-s,.pastille,button.tag{min-height:40px}
  .btn-s{padding:8px 16px;font-size:13px}
  input,select,textarea{font-size:16px!important;min-height:44px}
  textarea{min-height:90px}
  input[type=checkbox]{min-height:0;width:20px;height:20px}
  .barre-outils{flex-wrap:wrap}.barre-outils input[type=search]{max-width:none;width:100%}
  .actions{white-space:normal}
  #b-suggestion p{line-height:2.8}
}

/* fiches du bâti */
.code-fiche{font:700 12px Outfit;color:var(--accent-fg);letter-spacing:.06em}
.miroir{margin:0 0 12px;color:var(--text2)}
.chapo{margin-bottom:12px;font-size:15px;line-height:1.6}
.chapo p{margin:0}
.genie{color:var(--text2);margin:0 0 16px}
.fiche{display:flex;flex-direction:column;gap:16px;max-width:860px}
.rubrique h2{font-size:17px;margin-bottom:10px}
.rubrique h2 .n{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent-bg);color:var(--accent-fg);font-size:13px;margin-right:10px}
.texte{font-size:15px;line-height:1.65}
.texte p{margin:0 0 12px}
.texte h3{font-size:15px;margin:18px 0 6px}
.texte ul,.texte ol{margin:0 0 12px;padding-left:22px}
.texte table{margin:8px 0 14px;font-size:14px}
.texte th,.texte td{vertical-align:top}
.texte .piege,.texte .encadre,.texte .alimente,.texte .limite,.texte .terrain{border-left:4px solid var(--accent);background:var(--accent-bg);border-radius:8px;padding:10px 14px;margin:12px 0}
.texte .piege{border-color:var(--warn);background:var(--warn-bg)}
.texte .etiquette{display:inline-block;font:700 11px Outfit;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px}
a.resultat{display:block;text-decoration:none;color:inherit;margin-bottom:10px}
a.resultat:hover{border-color:var(--accent)}
a.resultat p{margin:6px 0 0;color:var(--text2);font-size:13px}
a.resultat .rub{color:var(--text2)}

/* méthode */
.onglets{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.onglets a{border:1px solid var(--border);border-radius:999px;padding:6px 16px;font-weight:500;text-decoration:none;color:var(--text2);background:var(--surface)}
.onglets a.act{background:var(--accent-bg);border-color:var(--accent);color:var(--text)}
.filtres{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 4px}
.filtres a.tag{text-decoration:none;color:var(--text)}
.muted{color:var(--muted)}
.avertissement{background:var(--warn-bg);border:1px solid var(--warn);border-radius:8px;padding:10px 14px;margin:8px 0 16px;color:var(--text)}
tr.detail td{border-bottom:1px solid var(--border);padding-top:0}
details summary{cursor:pointer;color:var(--accent-fg);font-weight:500}
details pre{white-space:pre-wrap;font:12.5px/1.5 ui-monospace,Consolas,monospace;background:var(--sunken);border-radius:8px;padding:12px;margin:8px 0 0}

/* barème modifiable */
.barre-valid{display:flex;gap:12px;align-items:center;margin:0 0 12px;flex-wrap:wrap}
.barre-valid .ok{color:var(--ok);font-weight:600}
.btn-s{border:1px solid var(--bs);background:transparent;border-radius:999px;padding:3px 12px;font-size:12px;font-weight:500}
.btn-s:hover{border-color:var(--accent)}
td.actions{white-space:nowrap}
tr.edition td{background:var(--sunken)}
.form-ed{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;padding:6px 0}
.form-ed label{margin:0;min-width:180px}
.form-ed label.large{flex:1;min-width:240px}
.form-ed input[type=text]{width:100%;padding:8px 12px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);outline:0;margin-top:4px}
.form-ed .btns{display:flex;gap:8px;align-items:center}
.form-ed table{width:100%}

/* atlas */
.alerte{display:inline-block;border-radius:999px;padding:1px 10px;font-size:12px;font-weight:700;border:1px solid}
.alerte.ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok)}
.alerte.warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn)}
.alerte.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}
.rubrique.bascule{border-left:4px solid var(--danger)}
.texte .encadre{border-left:4px solid var(--accent);background:var(--accent-bg);border-radius:8px;padding:10px 14px;margin:12px 0}
.texte figure.schema{margin:12px 0;text-align:center}
.texte figure.schema img{max-width:100%;background:#fff;border-radius:8px;padding:8px}
.texte figure.schema figcaption{font-size:12px;color:var(--text2);margin-top:4px}
.liens{margin:16px 0;max-width:860px}
.liens p{margin:8px 0;line-height:1.9}
.liens a.tag,.rubrique a.tag{text-decoration:none;color:var(--text)}
.occurrences{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
.occ header{margin-bottom:6px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.occ p{margin:6px 0;line-height:1.5}
.occ details summary{font-size:12px}
.rubrique details summary{cursor:pointer;color:var(--accent-fg);font-weight:600}

/* photos attendues */
.photos-attendues{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-bottom:8px}
.photo-cadre{margin:0}
.photo-cadre img{width:100%;border-radius:10px;display:block;object-fit:cover}
.photo-cadre.paysage .attente-photo{aspect-ratio:4/3}
.photo-cadre.portrait .attente-photo{aspect-ratio:3/4}
.attente-photo{border:2px dashed var(--bs);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:12px;color:var(--text2);background:var(--sunken)}
.attente-photo strong{font:700 12px Outfit;letter-spacing:.06em;text-transform:uppercase;color:var(--warn)}
.attente-photo span{font-size:11px;word-break:break-all}
.photo-cadre.presente .attente-photo{display:none}
.photo-cadre figcaption{font-size:12px;color:var(--text2);margin-top:6px;line-height:1.4}
.photo-cadre img[hidden]{display:none}

.photos-a-prendre{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin:12px 0}
.attente-photo em{font-style:normal;font-weight:600;color:var(--text);font-size:13px}
.photo-cadre figcaption .num{font:700 12px Outfit;color:var(--accent-fg);margin-right:4px}
.photo-cadre figcaption a{font-size:11px}
.photo-cadre .legende-planche{font-style:normal;color:var(--muted)}

/* tarif */
.form-tarif{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 12px;max-width:760px}
.form-tarif input{flex:1;min-width:240px;border-radius:999px;padding:9px 18px;font-size:14px}
.pagination{margin:14px 0;display:flex;gap:10px;align-items:center;flex-wrap:wrap;color:var(--text2)}
.pagination a.tag{text-decoration:none;color:var(--text)}
td small a{color:var(--muted);text-decoration:none}
td small a:hover{color:var(--accent-fg);text-decoration:underline}

/* favoris */
th.etoile,td.etoile{width:44px;text-align:center;padding-left:4px;padding-right:4px}
.etoile-btn{background:transparent;border:0;font-size:20px;line-height:1;color:var(--muted);padding:4px 6px;border-radius:6px}
.etoile-btn:hover{color:var(--accent-fg)}
.etoile-btn.on{color:var(--warn)}
.etoile-btn:disabled{opacity:.5}

/* navigation : séparation entre le travail et les référentiels */
.nav-titre{display:flex;align-items:center;justify-content:space-between;width:calc(100% - 24px);margin:16px 12px 4px;padding:4px 0;background:transparent;border:0;border-radius:6px;font:600 11px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--sb-m);cursor:pointer;text-align:left}
.nav-titre:hover{color:var(--sb-t)}
.nav-titre .chevron{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);margin-right:4px;transition:transform .15s}
.nav-titre.replie .chevron{transform:rotate(-45deg)}
.nav-groupe{display:flex;flex-direction:column;gap:4px}
.nav-groupe.replie{display:none}

/* affaires et contacts */
.entete{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.entete h1{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.barre-outils{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin:4px 0 8px}
.barre-outils input[type=search]{max-width:420px;border-radius:999px;padding:9px 18px;font-size:14px}
label.case{display:inline-flex;gap:8px;align-items:center;margin:0;font-size:13px;color:var(--text);cursor:pointer}
label.case input{width:auto}
.formulaire{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:4px 20px;max-width:none}
.formulaire .large{grid-column:1/-1}
.formulaire label{margin:8px 0 0;color:var(--text2)}
.formulaire label.case{color:var(--text)}
.formulaire input[type=text],.formulaire input[type=email],.formulaire input[type=date],.formulaire input[type=month],.formulaire input[type=number],.formulaire select,.formulaire textarea{width:100%;margin-top:4px;padding:9px 12px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text);outline:0;font:inherit}
.formulaire textarea{resize:vertical}
.formulaire small{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.formulaire fieldset{border:1px solid var(--border);border-radius:8px;padding:8px 14px;margin:8px 0 0}
.formulaire legend{padding:0 6px;color:var(--text2);font-size:12px}
.btns{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn-s.danger{border-color:var(--danger);color:var(--danger)}
a.btn-s{text-decoration:none;display:inline-block}
.grille-fiche{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;margin-top:12px}
.grille-fiche h3{font-size:15px;margin-bottom:8px}
.grille-fiche h4{font-size:13px;margin:14px 0 6px}
.liste-contacts{list-style:none;margin:0 0 8px;padding:0}
.liste-contacts li{padding:6px 0;border-bottom:1px solid var(--border);line-height:1.9}
.liste-contacts li:last-child{border-bottom:0}
.ligne-ajout{display:flex;gap:8px;flex-wrap:wrap}
.ligne-ajout input[type=search]{flex:1;min-width:180px;border-radius:999px;padding:8px 16px}
.ligne-ajout select{border-radius:999px;padding:8px 12px;border:1px solid var(--bs);background:var(--surface);color:var(--text)}
.coord{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0}
.coord dt{color:var(--text2)}
.coord dd{margin:0}
.texte-libre{white-space:pre-wrap}
#panneau-etat{margin:12px 0}

/* téléphones, ajout à une liste */
.tel{display:flex;gap:6px;margin-top:4px}
.tel select{width:auto;min-width:86px;margin-top:0!important;padding:9px 6px!important}
.tel input{flex:1;margin-top:0!important}
.ajout-liste{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px}
.ajout-liste input{flex:1;min-width:160px;padding:7px 10px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text)}
.ajout-liste .err{margin:0;min-height:0}

/* projets */
.type-projet{display:inline-grid;place-items:center;min-width:26px;height:26px;border-radius:7px;font:700 13px Outfit;background:var(--sunken);border:1px solid var(--bs);color:var(--text)}
.type-projet.t-I{background:var(--accent-bg);border-color:var(--accent)}
.type-projet.t-T{background:var(--warn-bg);border-color:var(--warn)}
.type-projet.t-A{background:var(--ok-bg);border-color:var(--ok)}
.liste-projets{list-style:none;margin:0 0 8px;padding:0}
.liste-projets li{padding:8px 0;border-bottom:1px solid var(--border);line-height:1.8}
.liste-projets li:last-child{border-bottom:0}
.colonne-large{grid-column:1/-1}
.duo{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;align-items:start}
.tableau-etroit{overflow-x:auto}
.liste-prestations{list-style:none;margin:8px 0;padding:0}
.liste-prestations li{padding:6px 0;border-bottom:1px solid var(--border);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.liste-prestations select{border-radius:999px;padding:4px 10px;border:1px solid var(--bs);background:var(--surface);color:var(--text)}

/* honoraires */
.resume-hono{border-top:1px solid var(--border);margin:10px 0;padding-top:6px}
.resume-hono h4{margin:6px 0}
.resume-hono p{margin:6px 0;line-height:1.5}

/* conventions */
.edit-lignes{width:100%;margin:6px 0}
.edit-lignes input[type=text]{width:100%;padding:7px 10px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text)}
.edit-lignes td{padding:4px 8px;vertical-align:middle}
.edit-lignes .tr-lib{white-space:nowrap;color:var(--text2)}
.modele h3{margin-bottom:6px}
.modele table{margin:8px 0;max-width:640px}
#bloc-convention h4{margin:14px 0 6px}

.tag.faible{opacity:.55}
.tag.choisi{outline:2px solid var(--accent);outline-offset:1px;font-weight:700;opacity:1}
button.tag{cursor:pointer;font:inherit;font-size:12px;font-weight:600;color:var(--text)}
#b-suggestion p{line-height:2.6;margin:6px 0}
#b-suggestion button.tag{margin:2px 0}

/* visite guidée */
.visite-haut{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}
.chrono{font:700 30px Outfit;font-variant-numeric:tabular-nums}
.comp{padding:6px 16px;margin-top:10px}
.comp-tete{display:flex;gap:12px;align-items:center;width:100%;text-align:left;background:none;border:0;padding:10px 0;font:inherit;color:inherit;cursor:pointer}
.comp-titre{flex:1;font-weight:600}
.comp-etat{white-space:nowrap}
.comp-corps{padding:4px 0 12px}
.comp-corps textarea,#vi-notes{width:100%;margin:8px 0;padding:10px 12px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text);font:inherit}
.groupe-btn{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.groupe-btn button{border:1px solid var(--bs);background:transparent;color:var(--text);border-radius:999px;padding:8px 16px;font:inherit;font-weight:500;cursor:pointer;min-height:40px}
.groupe-btn button.actif{background:var(--accent);color:var(--accent-t);border-color:var(--accent);font-weight:700}
#vi-filtres button.tag{cursor:pointer;font:inherit;font-size:12px;font-weight:600;color:var(--text)}

/* relevé commercial */
.pt-ligne{display:grid;grid-template-columns:minmax(200px,34%) 1fr;gap:6px 16px;align-items:start;padding:7px 0;border-bottom:1px solid var(--border)}
.pt-ligne:last-child{border-bottom:0}
.pt-etiq{font-weight:500;color:var(--text2)}
.pt-ctl{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pt-ctl input[type=text],.pt-ctl input[type=date]{flex:1;min-width:140px}
.pt-ctl select{min-width:100px}
.pt-ctl input,.pt-ctl select,.ligne-tete input{padding:8px 10px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text);font:inherit}
.connu{padding:6px 0}
.ligne-carte{border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin:10px 0;background:var(--sunken)}
.ligne-tete{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:4px}
.ligne-tete .lib-ligne{flex:2;min-width:160px;font-weight:700}
.ligne-tete .niv-ligne{flex:1;min-width:110px}
@media (max-width:820px){.pt-ligne{grid-template-columns:1fr}}

/* la question de la copropriété, première du formulaire du bien */
.copro-q{border:2px solid var(--accent);border-radius:12px;padding:14px 16px;background:var(--sunken);margin-bottom:8px}
.copro-q b{font-size:17px}
.copro-q .groupe-btn button{font-size:15px;padding:10px 18px}

/* choix de plusieurs contacts, mandants et propriétaires */
.liste-choix{max-height:320px;overflow:auto;border:1px solid var(--border);border-radius:8px;margin:8px 0;padding:4px 10px;background:var(--surface)}
.choix-ligne{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--border)}
.choix-ligne:last-child{border-bottom:0}
.choix-ligne .quote{margin-left:auto;max-width:150px;padding:6px 8px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text);font:inherit}
#p-filtre{width:100%;padding:8px 12px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text);font:inherit}
.mandant-ligne{padding:6px 0;border-bottom:1px solid var(--border)}
.rep-ligne{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:4px 0 4px 28px;color:var(--text2)}
.rep-ligne select{padding:6px 10px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text);font:inherit}

/* photos des relevés et des audits */
.zone-photos{margin-top:10px}
.photos-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:8px}
.photo-carte{margin:0;display:flex;flex-direction:column;gap:6px}
.photo-carte img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;border:1px solid var(--border);cursor:zoom-in;background:var(--sunken)}
.photo-leg{padding:6px 8px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);color:var(--text);font:inherit;font-size:13px}
.voile-photo{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.85);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;cursor:zoom-out}
.voile-photo img{max-width:100%;max-height:85vh;border-radius:8px}

/* fiche de synthèse à l'écran */
.syn-ecran h1{font-size:22px;margin:0 0 4px}.syn-sous{margin:0 0 12px;color:var(--text2)}
.syn-ecran h2{font-size:17px;border-bottom:1px solid var(--border);padding-bottom:4px;margin:20px 0 8px}
.syn-ecran h3{font-size:14px;margin:12px 0 4px}.syn-ecran h4{font-size:13px;margin:8px 0 2px}
.syn-dl{display:grid;grid-template-columns:minmax(140px,36%) 1fr;gap:3px 14px;margin:0 0 6px}.syn-dl dt{color:var(--text2)}.syn-dl dd{margin:0}
.syn-ligne{border-left:3px solid var(--border);padding-left:10px;margin:8px 0}
.syn-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:6px 0}
.syn-photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;border:1px solid var(--border)}.syn-photos figure{margin:0}.syn-photos figcaption{font-size:12px;color:var(--text2)}
@media (max-width:820px){.syn-dl{grid-template-columns:1fr}.syn-dl dt{margin-top:6px}}

/* mandat : citations du texte (clause de non-contournement) */
.apercu-doc .cit,.doc .cit{margin:0 0 6px 22px;padding-left:10px;border-left:3px solid var(--border)}

.syn-ecran h2 .n{color:var(--accent-fg);margin-right:8px}.syn-ecran h2{display:flex;align-items:baseline}

.casesx{padding:6px 0}.casesx-ligne{display:flex;gap:22px;flex-wrap:wrap;margin-top:4px}.casesx .case{display:flex;gap:8px;align-items:center}

.etapes{list-style:none;margin:10px 0;padding:0;counter-reset:et}.etape{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--border);counter-increment:et}.etape:first-child{border-top:0}.etape>div:first-child:before{content:counter(et) '. ';color:var(--muted)}.et-a_venir{opacity:.6}.et-bloquee{opacity:.85}.etape .actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.prochaine{margin:6px 0 10px}.liste-prochaines{list-style:none;margin:0;padding:0}.liste-prochaines li{padding:8px 0;border-top:1px solid var(--border)}.liste-prochaines li:first-child{border-top:0}

.logo img{height:34px;width:auto;display:block}.logo .l-c{display:none}
.logo img{height:auto;width:100%;max-width:190px}

.liste-metre{list-style:none;margin:10px 0;padding:0}.piece-metre{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--border)}.piece-metre:first-child{border-top:0}.totaux-metre{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:12px 0}.totaux-metre .tot{background:var(--sunken);border:1px solid var(--border);border-radius:12px;padding:8px 12px;display:flex;flex-direction:column}

.mt-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 20px;align-items:end}.mt-grille label{display:flex;flex-direction:column;gap:4px}.mt-murs{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:start}.mt-mur{display:flex;flex-direction:column;gap:8px;padding:10px 12px;background:var(--sunken);border:1px solid var(--border);border-radius:12px}.mt-mur .case{flex-direction:row;align-items:center;gap:8px}#mt-form h4{margin:18px 0 8px}

.champ-u{position:relative;display:block}.champ-u input{width:100%;padding-right:36px;text-align:right}.champ-u i{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;color:var(--muted);pointer-events:none}.miroir{color:var(--accent);font-weight:700}.ligne-ajout .champ-u{display:inline-block;width:150px}.res-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.res{background:var(--sunken);border:1px solid var(--border);border-radius:12px;padding:8px 12px;display:flex;flex-direction:column}.res.hi{border-color:var(--accent)}

.mt-titre{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.t-devis{width:100%;border-collapse:collapse}.t-devis th{font-size:12px;text-align:left;white-space:nowrap}.t-devis td{padding:4px 6px;vertical-align:middle}.t-devis input[type=number],.t-devis input[type=text],.t-devis select{width:100%;min-width:80px}.t-devis input.ql{min-width:90px;font-weight:700}.t-devis tr.ss td{background:var(--sunken);font-weight:700;padding:8px 6px}.t-devis tr.vide-q td{opacity:.62}.t-devis tr.vide-q td:focus-within,.t-devis tr.vide-q:hover td{opacity:1}.lot-devis{border:1px solid var(--border);border-radius:12px;margin:10px 0;padding:6px 12px}.lot-devis>summary{cursor:pointer;display:flex;gap:10px;align-items:center;padding:6px 0}.lot-devis>summary .num{margin-left:auto;font-weight:700}.totaux-metre .tot.hi{border-color:var(--accent)}.texte-libre{white-space:pre-line}


.titre-devis{border:0;background:transparent;color:var(--text2);font:inherit;width:min(360px,70vw);padding:2px 6px;border-radius:6px}.titre-devis:focus{background:var(--sunken);outline:1px solid var(--accent)}.calc-val{display:block;padding:6px 10px;background:var(--sunken);border-radius:6px;font-weight:600}.lot-devis{border:1px solid var(--border);border-radius:12px;margin-top:10px;background:var(--surface);overflow:hidden}.lot-h{display:flex;align-items:center;gap:10px;width:100%;background:var(--sunken);border:0;padding:10px 14px;text-align:left;font:600 13px Outfit,sans-serif;color:var(--text);cursor:pointer}.lot-h .ic{transition:transform .15s}.lot-devis.closed .lot-h .ic{transform:rotate(-90deg)}.lot-h .n{font:400 11.5px Inter,sans-serif;color:var(--text2)}.lot-h .sp{flex:1}.lot-h .sub{font:700 13px Inter,sans-serif;font-variant-numeric:tabular-nums}.lot-devis.closed .lot-b{display:none}.lot-b{padding:4px 14px 12px}.lot-devis.vide .lot-h strong{opacity:.75}.t-lignes{width:100%;border-collapse:collapse}.t-lignes th{font-size:12px;text-align:left;white-space:nowrap;padding:6px 8px}.t-lignes th.num,.t-lignes td.num{text-align:right}.t-lignes td{padding:5px 8px;vertical-align:top}.t-lignes tr.lg td{border-top:1px solid var(--border)}.t-lignes tr.ss td{background:var(--sunken);font-weight:700;padding:8px;border-top:0}.t-lignes tr.off td.d,.t-lignes tr.off td.u,.t-lignes tr.off td.pu,.t-lignes tr.off td.tt{opacity:.55}.t-lignes td.q input{width:104px;text-align:right}.t-lignes td.tv select{min-width:84px}.t-lignes td.d{min-width:260px}.t-lignes td.ac{white-space:nowrap}.t-lignes tr.det td{background:var(--sunken)}.t-lignes tr.gm td{background:var(--surface)}.descr{font-size:12px;color:var(--text2);margin-top:4px;line-height:1.5}.gamme-t{margin:8px 0 0}.chip-s{border:1px solid var(--accent);background:var(--accent-bg);color:var(--text);border-radius:999px;font-size:11px;padding:1px 9px;margin-left:8px;cursor:pointer}.obs{background:var(--sunken);border-radius:10px;padding:10px 12px;margin:8px 0 0;font-size:12.5px;color:var(--text2)}.t-param tr.tr-fin td{border-top:1px solid var(--border);padding-top:6px}.niveau-sel td{background:var(--accent-bg);font-weight:700}

.bloc-calc{background:var(--sunken);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:8px 0}.bloc-calc h4{margin:0 0 8px}.calc-liste{display:grid;grid-template-columns:minmax(200px,1fr) 2fr;gap:6px 16px;margin:8px 0}.calc-liste dt{font-weight:600}.calc-liste dd{margin:0}.calc-liste small{margin-left:8px}.solutions-ret{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:6px 16px}

.base-l{margin:6px 0 2px}.base-l label{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--text2)}.base-l input{width:110px;text-align:right}.chips{display:block}.classe-conseillee{margin:8px 0 0;padding:8px 10px;background:var(--accent-bg);border:1px solid var(--accent);border-radius:8px;font-size:13px}

.regle{display:inline-block;margin-top:2px}

.chip-s.chip-m{border-color:var(--ok);background:var(--ok-bg)}

/* Icônes des titres et du menu (assets/icones.js) */
svg.ico{width:1.05em;height:1.05em;flex:none;vertical-align:-.14em;margin-right:.5em;color:var(--accent-fg,var(--accent))}
h1 svg.ico{width:1.1em;height:1.1em;margin-right:.45em}
.nav a svg.ico,.nav-groupe a svg.ico{width:17px;height:17px;margin:0;vertical-align:0;color:inherit;opacity:.85}
.nav a.act svg.ico{opacity:1}
.rubrique h2 .n + svg.ico{margin-left:0}

/* Consentement signé sur téléphone (assets/signature.js) */
.signature-canvas{display:block;width:100%;height:180px;background:#fff;border:2px dashed var(--border);border-radius:10px;touch-action:none;cursor:crosshair}
.texte-consent{padding:14px 16px;border:1px solid var(--border);border-radius:10px;line-height:1.55}
.texte-consent h2{font-size:18px;margin:0 0 10px}
.texte-consent p{margin:0 0 10px}

/* EBE : page de paramétrage */
.tbl-saisie input[type=text]{width:100%;min-width:70px;max-width:190px}
.tbl-saisie td{vertical-align:middle}
.tbl-saisie td.actions{white-space:nowrap}
.calcule{font-weight:600;white-space:nowrap}
details.critere{border-top:1px solid var(--border);padding:6px 0}
details.critere summary{cursor:pointer}

.tbl-cx td:first-child{min-width:260px}
.tbl-cx select{min-width:70px}
.resume-cx{font-size:15px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;display:inline-block}

/* EBE : lots en cartes, lignes, fenêtre des mesures */
details.lot-ebe{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin:10px 0;box-shadow:var(--shadow)}
details.lot-ebe>summary{cursor:pointer;padding:12px 16px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;list-style:none}
details.lot-ebe>summary::-webkit-details-marker{display:none}
.lot-num{font-family:Outfit,Inter,sans-serif;color:var(--accent-fg);font-weight:600}
.lot-total{margin-left:auto;font-weight:600}
.lot-corps{padding:0 16px 14px}
.tbl-lignes td{vertical-align:middle}
.tbl-lignes td.code{white-space:nowrap;font-variant-numeric:tabular-nums}
.tbl-lignes input.desig{min-width:260px;max-width:none;width:100%}
.tbl-lignes input.court{min-width:44px;width:56px}
.tbl-lignes input.num{min-width:70px;width:84px;text-align:right}
.tbl-lignes td.qte{white-space:nowrap}
.tbl-lignes td.qte input{width:84px}
.tbl-lignes select{max-width:170px}
.tbl-lignes td.total{white-space:nowrap;font-weight:600}
.tbl-lignes td.actions{white-space:nowrap}
input.auto{border-color:var(--accent-fg)}
input.impose{border-color:var(--warn);background:var(--warn-bg)}
.panneau-ajout{border-top:1px dashed var(--border);margin-top:8px;padding-top:8px}
.kpi-ebe{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
.kpi-ebe>div{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:10px 16px;display:flex;flex-direction:column;min-width:150px}
.kpi-ebe strong{font-size:18px;font-family:Outfit,Inter,sans-serif}
.ebe-fond{position:fixed;inset:0;background:rgba(5,26,29,.55);display:grid;place-items:center;z-index:50;padding:16px}
.ebe-modale{background:var(--surface);color:var(--text);border-radius:var(--r);padding:18px 20px;max-width:520px;width:100%;max-height:90vh;overflow:auto;box-shadow:var(--shadow)}
.ebe-modale table{width:100%;border-collapse:collapse}
.ebe-modale td{padding:6px 8px;border-bottom:1px solid var(--border)}
.liste-offres{list-style:none;margin:0;padding:0}
.liste-offres li{padding:2px 0;white-space:nowrap}
.retenue-etoile{background:none;border:0;padding:0 2px;cursor:pointer;font-size:18px;line-height:1;color:var(--muted)}
.retenue-etoile.on{color:var(--warn)}
.retenue-etoile:disabled{opacity:.35;cursor:not-allowed}

/* Menu compact sur ordinateur (15 octobre 2026, demande de Franck) : tout le menu visible sans défilement. Le téléphone garde son tiroir. */
@media (min-width:821px){
  aside.sb{padding:14px 12px;overflow-y:auto;scrollbar-width:thin}
  aside.sb .logo{margin-bottom:10px}
  .nav{gap:0}
  .nav a{padding:5px 10px;gap:10px;font-size:13px;line-height:1.25;border-radius:6px}
  .nav a svg.ico,.nav-groupe a svg.ico{width:15px;height:15px}
  .nav-titre{margin:8px 10px 2px;padding:2px 0}
  .nav-groupe{gap:0}
}

/* Fiche projet : sections repliables, pour ne pas faire défiler des écrans de cartes vides (16 octobre 2026) */
.barre-repli{display:flex;gap:8px;align-items:center;margin:12px 0 0}
.repliable > section.card > h3:first-child{cursor:pointer;user-select:none;margin:0;display:flex;align-items:center;gap:8px}
.repliable > section.card > h3:first-child::before{content:"\25BE";display:inline-block;width:14px;color:var(--muted);transition:transform .15s}
.repliable > section.card.replie > h3:first-child::before{transform:rotate(-90deg)}
.repliable > section.card:not(.replie) > h3:first-child{margin-bottom:8px}
.repliable > section.card.replie{padding-top:10px;padding-bottom:10px;grid-column:auto}
.repliable > section.card.replie > :not(h3:first-child){display:none}
.repliable > section.card > h3:first-child:focus-visible{outline:2px solid var(--accent,#7bc96f);outline-offset:3px;border-radius:4px}

/* Dossier de cadrage (lot C1, 16 octobre 2026) : compact, deux ou trois questions par rang, cases alignées en colonnes */
.cad-sec{margin-top:12px}
.cad-sec > summary{cursor:pointer;font:600 15px var(--font-titre,inherit);display:flex;align-items:center;gap:8px;list-style:none}
.cad-sec > summary::-webkit-details-marker{display:none}
.cad-sec > summary::before{content:"▸";color:var(--muted);transition:transform .15s}
.cad-sec[open] > summary::before{transform:rotate(90deg)}
.cad-sec h4{font-size:12px;margin:14px 0 4px;color:var(--text2);text-transform:uppercase;letter-spacing:.04em}
.cad-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:0 20px}
.cad-q{padding:6px 0 8px;border-top:1px solid var(--border);min-width:0}
.cad-large{grid-column:1/-1}
.cad-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:3px}
.cad-top label{font-weight:500;font-size:12.5px;line-height:1.25}
.cad-s{display:flex;gap:4px;align-items:center;flex-shrink:0}
.cad-s select{width:92px;padding:2px 4px;font-size:11.5px}
.cad-nb{padding:2px 7px;font-size:11.5px}
.cad-h{display:block;margin:-2px 0 3px}
.cad-q .cad-r input[type=text],.cad-q .cad-r select,.cad-q .cad-r textarea{width:100%;padding:5px 8px;font-size:13px}
.cad-q .cad-r textarea{min-height:48px}
.cad-q .cad-r input.cad-nombre{width:9em}
.cad-q .cad-n textarea{width:100%;margin-top:4px;font-size:12.5px}
.cad-multi{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:3px 12px}
.cad-multi label.case{display:flex;align-items:flex-start;gap:7px;margin:0;font-size:12.5px;line-height:1.25}
.cad-multi label.case input{margin:2px 0 0;flex:0 0 auto}
.cad-ef{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cad-ef-col{grid-template-columns:1fr;gap:6px}
.cad-ef small{display:block;margin-bottom:2px}
.cad-lot .cad-top{margin:0}
.cd-resume{margin:4px 0}
@media (max-width:820px){.cad-grille{grid-template-columns:1fr}.cad-ef{grid-template-columns:1fr}.cad-s select{width:84px}}

/* Dossier de cadrage, lots C2 à C4 */
.cad-champs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 10px}
.cad-champs label{display:block;font-size:11.5px;color:var(--muted)}
.cad-champs input,.cad-champs select{width:100%;padding:4px 6px;font-size:13px}
.cad-liens{font-size:12.5px;margin:4px 0}
.cad-somme{margin:6px 0 2px;font-size:14px}
.cad-sec.cache{display:none}
