/* Merxalis : charte de l'interface de travail (docs/CHARTE-INTERFACE.md, validée le 5-6 octobre 2026).
   Geist servie par l'hébergement, couleurs et composants de la charte, menu latéral fixe de 248 px, contenu sur toute la largeur.
   Les éléments de base sont posés dans :where(body.appli,.avisCadre) (spécificité nulle) : chaque composant garde la main sur son propre style. */
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/geist-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
 --fond-page:#F7F8FA;--surface:#FFFFFF;--bord:#E4E7EE;--ligne:#EEF0F4;--champ:#DCE0E8;--entete:#FBFBFD;
 --texte:#0D1220;--texte2:#4A5163;--discret:#626A7D;
 --accent:#2F54EB;--accent-fonce:#1A36B8;--accent-leger:#EEF2FF;--accent-tres-leger:#F3F6FF;
 --vert:#0F7A4A;--vert-fond:#E6F4EC;--ambre:#8A5300;--ambre-fond:#FFF4E0;--bleu:#2440C4;--neutre:#4A5163;--neutre-fond:#F1F3F7;--erreur:#B42318;--erreur-fond:#FDECEA;
 --menu:248px;--police:Geist,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}
*{box-sizing:border-box}
[hidden]{display:none!important}

/* ---- Base ---- */
body.appli{margin:0;background:var(--fond-page);color:var(--texte);font-family:var(--police);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
body.avecMenu{padding-left:var(--menu)}
body.appli main{display:block;max-width:none;margin:0;padding:0}
:where(body.appli,.avisCadre) :is(h1,h2,h3,h4){color:var(--texte);font-family:var(--police)}
:where(body.appli,.avisCadre) h1{font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1.3;margin:0}
:where(body.appli,.avisCadre) h2{font-size:16px;font-weight:600;margin:0 0 8px}
:where(body.appli,.avisCadre) h3{font-size:16px;font-weight:600}
:where(body.appli,.avisCadre) a{color:var(--accent-fonce)}
:where(body.appli,.avisCadre) :is(input,select,textarea,button){font-family:var(--police)}
:where(body.appli,.avisCadre) label{display:block;font-size:14px;font-weight:600;margin-bottom:8px}
:where(body.appli,.avisCadre) :is(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color]),select,textarea){font-weight:400;height:42px;padding:0 12px;border:1px solid var(--champ);border-radius:10px;background:var(--surface);color:var(--texte);font-size:15px;min-width:0;max-width:100%}
:where(body.appli,.avisCadre) :is(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color]),textarea){width:100%}
:where(body.appli,.avisCadre) textarea{height:auto;min-height:84px;padding:10px 12px}
:where(body.appli,.avisCadre) :is(input,select,textarea)::placeholder{color:var(--discret)}
:where(body.appli,.avisCadre) :is(input[type=checkbox],input[type=radio],input[type=range]){accent-color:var(--accent)}
:where(body.appli,.avisCadre) input[type=checkbox]{width:16px;height:16px}
:where(body.appli,.avisCadre) button{min-height:38px;padding:0 16px;border:0;border-radius:10px;background:var(--accent);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}
:where(body.appli,.avisCadre) button:hover{background:var(--accent-fonce)}
:where(body.appli,.avisCadre) button:disabled{opacity:.5;cursor:not-allowed}
:where(body.appli,.avisCadre) :is(button.ghost,.btnlink){background:var(--surface);color:var(--texte);border:1px solid var(--champ);font-weight:500}
:where(body.appli,.avisCadre) :is(button.ghost,.btnlink):hover{background:var(--neutre-fond)}
.btnlink{display:inline-flex;align-items:center;min-height:38px;padding:0 14px;border-radius:10px;text-decoration:none;font-size:14px}
body.appli :is(input,select,textarea,button,a,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}
body.appli :is(input,select,textarea):focus{border-color:var(--accent)}
:where(body.appli,.avisCadre) :is(th){font-size:12px;font-weight:600;color:var(--discret);text-align:left;background:var(--entete);border-bottom:1px solid var(--bord);padding:12px}
:where(body.appli,.avisCadre) :is(td){font-size:14px;padding:12px;border-bottom:1px solid var(--ligne);vertical-align:top}
:where(body.appli,.avisCadre) table{border-collapse:collapse;width:100%}
:where(body.appli,.avisCadre) tbody tr[aria-selected=true]{background:var(--accent-tres-leger)}
.skipLink{position:fixed;left:16px;top:-100px;z-index:100;background:#fff;padding:12px;border-radius:8px;color:var(--accent-fonce)}
.skipLink:focus{top:12px}
.footnote,footer{font-size:12px;color:var(--discret);line-height:1.6}
body.appli footer{margin:0;padding:20px 28px 28px}
body.appli .footnote{margin:20px 0 0}

/* ---- Menu latéral fixe ---- */
#appSidebar,.appTopbar,.pageHead{font-family:var(--police)}
#appSidebar{position:fixed;inset:0 auto 0 0;z-index:30;width:var(--menu);display:flex;flex-direction:column;gap:2px;padding:18px 14px;background:var(--surface);border-right:1px solid var(--bord);overflow-y:auto;font-size:14px;color:var(--texte2)}
.appBrand{display:flex;align-items:center;gap:10px;padding:4px 8px 14px}
.brandMark{flex:0 0 34px;width:34px;height:34px;border-radius:9px;background:var(--texte);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;overflow:hidden}
.brandMark img{width:100%;height:100%;object-fit:cover}
.brandMarkPetit{flex-basis:30px;width:30px;height:30px;font-size:13px}
.appBrandNoms{min-width:0}
.appBrandNoms strong{display:block;font-size:15px;font-weight:700;color:var(--texte);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.appBrandNoms small{display:block;font-size:12px;color:var(--discret)}
.appNav{display:flex;flex-direction:column;gap:2px}
.navGroupLabel{margin:14px 8px 4px;font-size:12px;font-weight:600;color:var(--discret)}
.navGroupe:first-child .navGroupLabel{margin-top:6px}
.navGroupe{display:flex;flex-direction:column;gap:2px}
.navLien,.qualityAdminButton{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;padding:8px 10px;border-radius:8px;border:0;background:transparent;color:var(--texte2);font:400 14px/1.3 var(--police);text-decoration:none;text-align:left;cursor:pointer;transition:background .15s}
.navLien:hover,.qualityAdminButton:hover{background:var(--neutre-fond);color:var(--texte)}
.navLien[aria-current=page]{background:var(--accent-leger);color:var(--accent-fonce);font-weight:600}
.navLien.desactive{color:var(--discret);cursor:default}
.navLien.desactive:hover{background:transparent;color:var(--discret)}
.navLien em{font-style:normal;font-size:12px;font-weight:500;padding:1px 8px;border-radius:999px;background:var(--neutre-fond);color:var(--discret)}
.qualityAdminButton{margin:10px 0 0;width:100%}
.sidebarAccount{margin-top:auto;border-top:1px solid var(--bord);padding:12px 8px 0;display:flex;flex-direction:column;gap:10px}
.cadreUtilisateur{display:grid;grid-template-columns:30px minmax(0,1fr);gap:0 10px;align-items:center}
.cadrePastille{grid-row:1/span 3;width:30px;height:30px;border-radius:50%;background:var(--accent-leger);color:var(--bleu);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}
.cadreNom,.cadreRole{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cadreNom{color:var(--texte);font-weight:500;font-size:13px}
.cadreRole{font-size:12px;color:var(--discret)}
#appSidebar .cadreSortie{font-family:var(--police);grid-column:2;justify-self:start;min-height:32px;padding:0;border:0;background:transparent;color:var(--accent-fonce);font-size:12px;font-weight:500}
#appSidebar .cadreSortie:hover{background:transparent;text-decoration:underline}
.cadrePropulse{margin:0;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--discret)}
.appTopbar{display:none}
.sidebarBackdrop{display:none}

/* ---- Tête de page et zone de travail ---- */
.pageHead h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1.3;color:var(--texte);font-family:var(--police)}
.pageHead{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;min-height:64px;padding:12px 28px;background:var(--surface);border-bottom:1px solid var(--bord)}
.pageHeadTexte{display:flex;align-items:baseline;gap:4px 16px;flex-wrap:wrap;min-width:0}
.pageHead .intro,.pageHead .pageSous{margin:0;font-size:14px;color:var(--discret)}
.pageActions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pageMarque{display:none;align-items:center;gap:10px;text-decoration:none;color:var(--texte);font-weight:700;margin-right:6px}
body:not(.avecMenu) .pageMarque{display:inline-flex}
#workspace,#login{padding:24px 28px 8px}
#workspace{background:transparent;border:0}
#login{max-width:460px;margin:48px auto 0;background:var(--surface);border:1px solid var(--bord);border-radius:16px;padding:28px}
#login h2{font-size:18px}
.loginIntro{color:var(--texte2);margin:0 0 16px}
#loginMessage{color:var(--discret);min-height:20px;margin:12px 0 0}
#status{padding:10px 0;font-size:14px;color:var(--texte2)}
#status:empty{display:none}
.filterNote,.marketStatus{font-size:13px;line-height:1.55;color:var(--discret);margin:10px 0 0}
.marketStatus{margin:12px 0}
.intro{color:var(--discret)}

/* Étapes de la recherche par adresse : visibles seulement dans cette vue */
.steps{display:none;gap:6px 18px;flex-wrap:wrap;margin:0 0 4px;font-size:12px;color:var(--discret)}
body[data-view=address] .steps{display:flex}
.footnote{display:none}
body[data-view=address] .footnote,body[data-view=company] .footnote{display:block}

/* ---- Panneaux (une seule couche : pas de carte dans une carte) ---- */
:is(#pistesForm,#companyForm,#searchForm,#filters,.marketFilters,.result,.piste,.bienFiche,.xp,.valCard,.resultsMap,.buildingPreview,#progressPanel,.qualityDialog,.campaignDialog){background:var(--surface);border:1px solid var(--bord);border-radius:14px;box-shadow:none}
:is(#pistesForm,#companyForm,#searchForm,#filters,.marketFilters){padding:20px;margin:0 0 16px}
#entryNotice{background:transparent;border:0;padding:0;margin:0 0 16px}
#entryNotice>h2,#entryNotice>p:not(.marketStatus){display:none}
body[data-view=scpi] #entryNotice>p{display:block}
:is(.result,.piste,.bienFiche,.xp,.buildingPreview) :is(.inlineLocal,.inlineDossier,.officerChainGroup,.parcelChooser,.companyBox,.bienItem,.officerContact,.ownerGuide,.epc){border:0;border-top:1px solid var(--ligne);border-radius:0;background:transparent;padding:14px 0 0;margin:14px 0 0;box-shadow:none}
.inlineLocal,.inlineDossier,.officerChainGroup,.parcelChooser{border:0;border-top:1px solid var(--ligne);border-radius:0;background:transparent;padding:14px 0 0;box-shadow:none}
.result{padding:20px;margin-top:12px}
.piste{padding:20px;margin:0}
.piste h3{font-size:18px;margin:0 0 12px}
.piste .why{background:var(--accent-leger);color:var(--accent-fonce);padding:12px;border-radius:10px;margin:12px 0}
.piste .label{display:block;font-size:12px;font-weight:600;color:var(--discret);margin-bottom:2px}
.piste .acts{border-top:1px solid var(--ligne);padding-top:14px;margin-top:16px}
.result h3,.bienFiche h3{font-size:18px}
.bienFiche{padding:20px}
.bienFiche h4,.xpCol h4,.smTitre{font-size:13px;font-weight:600;color:var(--discret);margin:18px 0 8px}
.search{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.search>input,.search>.combo{flex:1 1 220px}
.combo{position:relative;min-width:0}
#suggestions,.addressOptions{box-shadow:0 8px 24px rgba(13,18,32,.12)}
.famFilters{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;font-size:14px;margin:12px 0}
.famFilters label{display:inline-flex;gap:8px;align-items:center;font-weight:500;margin:0;min-height:32px}
.famTitre{font-size:13px;font-weight:600;color:var(--discret);flex-basis:100%}
.geoMulti{max-width:none}
#coverage:not(:empty){background:var(--neutre-fond);border:0;border-radius:10px;color:var(--texte2);font-size:13px;padding:10px 14px;margin:12px 0}
#filters strong{display:block;font-size:14px;margin-bottom:12px}
#filters label{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:14px;line-height:1.45;margin-bottom:10px;cursor:pointer}
#versionBanner{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 16px;padding:10px 14px;border-radius:10px;background:var(--ambre-fond);color:var(--ambre);font-size:14px}
#versionBanner button{min-height:32px;padding:0 12px;font-size:13px}
.usageState{font-size:13px;line-height:1.5;margin:0 0 12px;padding:10px 12px;border-radius:10px;background:var(--neutre-fond);color:var(--texte2)}
.usageState.ok{background:var(--vert-fond);color:var(--vert)}
.usageState.ko{background:var(--ambre-fond);color:var(--ambre)}
.moreBtn{min-height:38px;border:1px solid var(--champ);background:var(--surface);color:var(--texte);border-radius:10px;padding:0 14px}
progress{accent-color:var(--accent)}

/* ---- Étiquettes d'état (999 px) ---- */
.pri,.badge,.bienBadge,.xpUrg,.profileState,.plPastille,.tenantMatchBadge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.4}
.plPastille.confirme{background:var(--vert-fond);color:var(--vert)}
.plPastille.probable{background:var(--accent-leger);color:var(--bleu)}
.plPastille.candidat{background:var(--ambre-fond);color:var(--ambre)}
.plPastille.absent{background:var(--neutre-fond);color:var(--neutre)}

/* ---- Pipeline des biens (maquette AppPipeline) ---- */
.plPage{display:flex;flex-direction:column;gap:16px}
.plBarre{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap}
.plBarreGauche,.plBarreDroite{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.plCompte{font-size:14px;color:var(--discret)}
.plBascule{display:flex;padding:3px;border-radius:10px;background:var(--neutre-fond)}
.plBascule button{min-height:30px;padding:0 12px;border-radius:8px;background:transparent;color:var(--texte2);font-size:13px;font-weight:600}
.plBascule button:hover{background:transparent;color:var(--texte)}
.plBascule button[aria-pressed=true]{background:var(--surface);color:var(--texte)}
.plRecherche{display:flex;align-items:center;gap:8px;margin:0;height:38px;width:300px;max-width:100%;padding:0 12px;border:1px solid var(--champ);border-radius:10px;background:var(--surface);color:var(--discret);font-weight:400}
.plRecherche svg{width:15px;height:15px;flex:none}
.plRecherche input{height:36px;padding:0;border:0;border-radius:0;flex:1;min-width:0;background:transparent;font-size:14px}
.plRecherche input:focus{outline:0}
.plRecherche:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.plPuces{display:flex;gap:8px;flex-wrap:wrap}
.plPuce{min-height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--champ);background:var(--surface);color:var(--texte);font-size:13px;font-weight:500}
.plPuce:hover{background:var(--neutre-fond)}
.plPuce span{color:var(--discret);margin-left:2px}
.plPuce[aria-pressed=true]{background:var(--texte);border-color:var(--texte);color:#fff}
.plPuce[aria-pressed=true] span{color:#C3C9D6}
.plCorps{display:flex;gap:20px;align-items:flex-start}
.plListe{flex:1 1 auto;min-width:0;background:var(--surface);border:1px solid var(--bord);border-radius:14px;overflow:hidden}
.plTable{border-collapse:collapse;width:100%}
.plTable th{white-space:nowrap}
.plLigne{cursor:pointer}
.plLigne:hover{background:var(--entete)}
.plLigne[aria-selected=true]{background:var(--accent-tres-leger)}
.plLigne td{vertical-align:middle}
.plAdresse strong{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis}
.plAdresse span{display:block;font-size:13px;color:var(--discret)}
.plAgent{white-space:nowrap;font-size:13px;color:var(--texte2)}
.plAvatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-right:8px;border-radius:50%;background:var(--accent-leger);color:var(--bleu);font-size:12px;font-weight:600;vertical-align:middle}
.plPriorite{min-width:130px;white-space:nowrap}
.plJauge{display:inline-block;width:70px;height:6px;border-radius:3px;background:var(--ligne);overflow:hidden;vertical-align:middle;margin-right:10px}
.plJauge span{display:block;height:100%}
.plJauge .haut{background:var(--accent)}.plJauge .moyen{background:#6F8CF2}.plJauge .bas{background:#B7C3F7}
.plPriorite b{display:inline-block;min-width:28px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.plNum,.plDate{font-variant-numeric:tabular-nums;color:var(--texte2);white-space:nowrap}
.plDate{font-size:13px;color:var(--discret)}
.plAucun td{text-align:center;color:var(--discret);padding:28px}
.plVide{color:var(--discret)}
.plPanneau{flex:0 0 340px;display:flex;flex-direction:column;gap:18px;padding:20px;background:var(--surface);border:1px solid var(--bord);border-radius:14px}
.plPetit{margin:0;font-size:13px;color:var(--discret)}
.plAdresseTitre{margin:4px 0 0;font-size:18px;font-weight:700;letter-spacing:-.01em}
.plVille{margin:2px 0 0;color:var(--texte2)}
.plTuiles{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,.8fr) minmax(0,1.4fr);gap:10px}
.plTuile:last-child .plValeur{font-size:15px;font-weight:600}
.plTuile{padding:12px;border-radius:10px;background:var(--fond-page)}
.plTuile p{margin:0;font-size:12px;color:var(--discret)}
.plTuile .plValeur{margin-top:4px;font-size:18px;white-space:nowrap;font-weight:700;color:var(--texte);font-variant-numeric:tabular-nums}
.plEtats{display:flex;flex-direction:column;gap:10px}
.plEtats>div{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--texte2)}
.plActions{display:flex;flex-direction:column;gap:8px}
.plActions button{height:42px}
.plNote{margin:auto 0 0;font-size:12px;line-height:1.5;color:var(--discret)}
body[data-view=pipeline] :is(#searchForm,#pistesForm,#companyForm,.steps,.footnote,#status,#coverage){display:none}
#bienBox:not(:empty){margin-top:0}
.bienTable th{font-size:12px}

/* ---- Vues de l'appli ---- */
body.appli label:has(>input[type=checkbox]){display:flex;flex-direction:row;align-items:center;gap:8px;font-weight:500;text-align:left}
#pistesDept,#pistesDays,#pistesSource,#companyDept,#filterLevel{height:42px;padding:0 12px;border:1px solid var(--champ);border-radius:10px;font-size:15px;width:auto;min-width:0;background:var(--surface)}
#filterLevel{min-width:230px}
fieldset{border:0;margin:16px 0 0;padding:12px 0 0;min-width:0;border-top:1px solid var(--ligne)}
fieldset legend{padding:0 10px 0 0;font-size:13px;font-weight:600;color:var(--discret)}
fieldset label{display:inline-flex;align-items:center;gap:8px;margin:4px 16px 4px 0;font-weight:500}
body[data-view=pistes] #results,body[data-view=judicial] #results{display:block}
body[data-view=market] #results{display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);gap:20px;align-items:start}
.pistePick{background:var(--surface);color:var(--texte);border:1px solid var(--bord);border-radius:12px;padding:14px 16px;box-shadow:none;min-height:44px;text-align:left}
.pistePick:hover{background:var(--entete)}
.pistePick[aria-pressed=true]{background:var(--accent-tres-leger);border-color:var(--accent);box-shadow:none}
.pistePick strong{font-size:14px;font-weight:600}
.pistePick span{font-size:13px;color:var(--discret)}
.pistePick span:last-child{color:var(--accent-fonce)}
.tabs[hidden]{display:none}
#dossierNav{display:flex;gap:4px;flex-wrap:wrap;margin:0 0 16px;padding:3px;border-radius:10px;background:var(--neutre-fond);width:fit-content;max-width:100%}
#dossierNav button{min-height:34px;padding:0 14px;border-radius:8px;background:transparent;color:var(--texte2);font-size:13px;font-weight:600}
#dossierNav button:hover{background:transparent;color:var(--texte)}
#dossierNav button[aria-pressed=true]{background:var(--surface);color:var(--texte);box-shadow:none}
.mobileResultBack{display:none}
.returnToResults{margin:0 0 16px}
.marketField input,.marketField select{height:42px;min-height:42px}
.marketTypeChoices label{min-height:38px;border-radius:999px;border:1px solid var(--champ);background:var(--surface);font-weight:500;font-size:14px}
.marketTypeChoices label:has(input:checked){background:var(--accent-leger);border-color:var(--accent);color:var(--accent-fonce)}
.marketFilterActions{border-color:var(--ligne)}
.valSegBtn{border:2px solid var(--bord);border-radius:12px;background:var(--surface);color:var(--texte)}
.valSegBtn.on{border-color:var(--accent);background:var(--accent-tres-leger);color:var(--texte)}
.valChip{border-radius:999px;border:1px solid var(--champ);background:var(--surface);font-size:14px;min-height:36px}
.valChip.on{border-color:var(--accent);background:var(--accent-leger);color:var(--accent-fonce)}
.valBar{background:var(--accent);opacity:1}
.valStats .valCard{background:var(--surface)}
body[data-view=tenants] #results{display:block}
.tenantDrawer{background:var(--fond-page);color:var(--texte);box-shadow:-12px 0 32px rgba(13,18,32,.16)}
.tenantDrawer>header{display:flex;background:var(--surface);color:var(--texte);padding:20px 22px}
.tenantDrawer>header h2{font-size:18px;margin:0}
.tenantDetailTabs button{min-height:38px;background:var(--surface);color:var(--texte2);border:1px solid var(--champ)}
.tenantDetailTabs button[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}
.profileActions .profileConfirm,.profileActions .profileSelect{background:var(--accent);border-color:var(--accent)}
.campaignSelection{background:var(--accent-leger);border:1px solid var(--accent)}
.geoChips button{background:var(--accent-leger);color:var(--accent-fonce);border:1px solid var(--accent);border-radius:999px;min-height:34px}
.qualityDialog::backdrop,.campaignDialog::backdrop{background:rgba(13,18,32,.4)}
.resultsMapHeader h2{font-size:16px}

/* ---- Avis de valeur : saisie (report.html ; le document produit garde sa propre mise en page) ---- */
.avisCadre{display:flex;gap:24px;align-items:flex-start;padding:28px;background:var(--fond-page);font-family:var(--police);font-size:14px;line-height:1.5;color:var(--texte)}
.avisCadre .saisie{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:22px}
.avisPanneau{background:var(--surface);border:1px solid var(--bord);border-radius:16px;padding:28px}
.avisLateral{flex:0 0 380px;display:flex;flex-direction:column;gap:20px}
.avisLateral .avisPanneau{padding:20px}
.avisLateral h2{margin:0;font-size:16px;font-weight:600}
.avisListe{margin:14px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px;color:var(--texte2)}
.avisListe li{display:flex;gap:10px;margin:0;font-size:14px;line-height:1.5}
.avisListe li::before{content:"";flex:0 0 6px;height:6px;margin-top:8px;border-radius:50%;background:var(--accent)}
.segCartes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.segBtn{font-family:var(--police);cursor:pointer}
.segBtn em{font-style:normal;font-size:12px;font-weight:500;padding:1px 8px;border-radius:999px;background:var(--neutre-fond);color:var(--discret)}
.segBtn[disabled]{cursor:not-allowed;opacity:.65}
.segCartes .segBtn{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"titre badge" "desc desc";align-items:center;gap:4px 8px;height:auto;min-height:0;padding:16px 18px;text-align:left;border:2px solid var(--bord);border-radius:12px;background:var(--surface);color:var(--texte)}
.segCartes .segBtn span{grid-area:titre;font-size:16px;font-weight:600}
.segCartes .segBtn small{grid-area:desc;font-size:13px;line-height:1.45;font-weight:400;color:var(--texte2);margin:0;display:block}
.segCartes .segBtn em{grid-area:badge}
.segCartes .segBtn.on{border-color:var(--accent);background:var(--accent-tres-leger)}
.segPuces{display:flex;gap:8px;flex-wrap:wrap}
.segPuces .segBtn{display:inline-flex;align-items:center;gap:8px;min-height:36px;height:36px;padding:0 14px;border:1px solid var(--champ);border-radius:999px;background:var(--surface);color:var(--texte);font-size:14px;font-weight:500}
.segPuces .segBtn.on{background:var(--accent-leger);border-color:var(--accent);color:var(--accent-fonce)}
.fldGroupe{display:flex;flex-direction:column;gap:10px}
.fldTitre{font-size:14px;font-weight:600;color:var(--texte);margin:0}
.fld{display:flex;flex-direction:column;gap:8px;margin:0;min-width:0}
.fld>span:first-child{font-size:14px;font-weight:600;color:var(--texte)}
.fld input:not([type=checkbox]),.fld select{height:44px;padding:0 12px;border:1px solid var(--champ);border-radius:10px;background:var(--surface);color:var(--texte);font:400 15px var(--police);width:100%}
.fld.wide input{height:50px;font-size:16px;border-radius:12px;padding:0 14px}
.unit{position:relative;display:block}
.unit input{padding-right:52px!important}
.unit i{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;font-size:13px;color:var(--discret);pointer-events:none}
.avisGrille{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:end}
.avisGrille .wide{grid-column:1/-1}
.fldPleine{grid-column:1/-1}
.adv{border-top:1px solid var(--ligne);padding-top:16px;font-size:14px}
.adv summary{cursor:pointer;font-weight:600}
.adv .fld{margin-top:12px;max-width:280px}
.avisPied{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap}
.avisPied .actions{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}
.avisCadre .saisieState{flex:1 1 220px;margin:0;font-size:14px;color:var(--erreur)}
.avisCadre .saisieState:empty{display:none}
.avisCadre .plafondMsg{flex:1 1 100%;max-width:none;margin:0;order:-1;border-radius:12px;font-family:var(--police)}
#go{height:50px;padding:0 26px;border-radius:12px;font-size:16px}
#print{height:50px;padding:0 22px;border-radius:12px;font-size:15px}
.avisCadre .addressCompletion{display:block}
.progress{max-width:210mm;margin:0 auto 16px;padding:20px 24px 18px;background:var(--surface);border:1px solid var(--bord);border-radius:14px;font-family:var(--police)}
.progHead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:12px}
.progTitle{font-size:16px;font-weight:600;color:var(--texte)}
.progAddr{font-size:13px;color:var(--discret);margin-top:3px}
.progPct{font-size:22px;font-weight:600;color:var(--accent-fonce);font-variant-numeric:tabular-nums;line-height:1}
.progBar{height:6px;background:var(--ligne);border-radius:3px;overflow:hidden}
.progFill{height:100%;width:0;background:var(--accent);transition:width .5s ease;border-radius:3px}
.progress[data-state=error] .progFill{background:var(--erreur)}
.progress[data-state=success] .progFill{background:var(--vert)}
.progSteps{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:2px}
.pgStep{display:flex;gap:12px;align-items:flex-start;padding:7px 0;color:var(--discret);font-size:14px;transition:color .3s}
.pgIcon{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--champ);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;margin-top:1px}
.pgText{display:flex;flex-direction:column;gap:2px}
.pgSub{font-size:13px;color:var(--discret);font-weight:400}
.pgStep.done{color:var(--texte2)}.pgStep.done .pgIcon{background:var(--vert);border-color:var(--vert)}
.pgStep.on{color:var(--texte);font-weight:600}.pgStep.on .pgIcon{border-color:var(--accent);border-top-color:transparent;animation:pgSpin .9s linear infinite}
.pgStep.failed{color:var(--erreur);font-weight:600}.pgStep.failed .pgIcon{background:var(--erreur);border-color:var(--erreur)}
@keyframes pgSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.pgStep.on .pgIcon{animation:none;border-top-color:var(--accent)}.progFill{transition:none}}
.progNote{margin-top:12px;padding-top:10px;border-top:1px solid var(--ligne);font-size:13px;color:var(--discret)}
.demoBanner{max-width:210mm;margin:0 auto 16px;padding:12px 16px;background:var(--surface);border:1px solid var(--bord);border-radius:12px;font:400 13px/1.55 var(--police);color:var(--discret)}
@media(max-width:1100px){.avisCadre{flex-direction:column;align-items:stretch}.avisLateral{flex:none}}
@media(max-width:900px){
 .avisCadre{padding:16px;gap:16px}
 .avisPanneau{padding:18px}
 .segCartes{grid-template-columns:1fr}
 .avisGrille{grid-template-columns:1fr}
 .avisPied .actions{width:100%;margin-left:0}
 .avisPied .actions button{flex:1 1 100%}
 .progress,.demoBanner{margin-left:16px;margin-right:16px}
}

/* ---- Écrans étroits : le menu devient un tiroir ---- */
@media(max-width:1100px){
 .plCorps{flex-direction:column}
 .plPanneau{flex:none;width:100%}
 body[data-view=market] #results{grid-template-columns:minmax(0,1fr)}
 .marketFilterGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .mobileResultBack{display:inline-flex;margin-bottom:12px}
}
@media(max-width:900px){
 body.avecMenu{padding-left:0}
 .appTopbar{display:flex;position:sticky;top:0;z-index:20;align-items:center;gap:10px;height:56px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--bord)}
 .appTopbar strong{flex:1;min-width:0;font-size:16px;color:var(--texte);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .appTopbar button{min-height:44px;padding:0 16px;border:1px solid var(--champ);border-radius:10px;background:var(--surface);color:var(--texte);font:500 14px var(--police);cursor:pointer}
 #appSidebar{width:min(300px,86vw);transform:translateX(-100%);visibility:hidden;transition:transform .2s,visibility .2s}
 .menuOpen #appSidebar{transform:none;visibility:visible}
 .menuOpen .sidebarBackdrop{display:block;position:fixed;inset:0;z-index:25;min-height:0;padding:0;border-radius:0;background:rgba(13,18,32,.4)}
 .navLien,.qualityAdminButton{min-height:44px}
 .pageHead{padding:12px 16px}
 .pageHead .intro{display:none}
 #workspace,#login{padding:16px 16px 8px}
 #login{margin:24px 16px 0;padding:20px}
 body.appli footer{padding:16px}
 :is(#pistesForm,#companyForm,#searchForm,#filters,.marketFilters){padding:16px}
 .search>*{flex:1 1 100%;width:100%}
 :where(body.appli,.avisCadre) button{min-height:44px}
 .plRecherche{width:100%}
 .plBarreDroite{width:100%}
 .plBarreDroite button{flex:none}
 .marketFilterGrid{grid-template-columns:minmax(0,1fr)}
 .marketFilterActions>div{width:100%}
 .marketFilterActions button{flex:1}
 /* Tableau du pipeline : une ligne devient un bloc */
 .plTable thead{position:absolute;left:-9999px}
 .plTable,.plTable tbody{display:block}
 .plCorps{align-items:stretch}
 .plLigne{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 14px;border-bottom:1px solid var(--ligne)}
 .plLigne td{display:block;padding:0;border:0}
 .plLigne .plAdresse{flex:1 1 100%}
 .plLigne .plPriorite{min-width:0}
 .plLigne td[data-label]::before{content:attr(data-label) ' ';color:var(--discret);font-size:12px}
 .plLigne td.plNum{margin-left:auto}
 .plLigne td:is(.plPastille,[data-label=Local],[data-label=Propriétaire])::before{content:attr(data-label) ' ';display:block;margin-bottom:2px}
 .plAucun{display:block}
 .plAucun td{display:block}
}
@media(prefers-reduced-motion:reduce){#appSidebar,.sidebarBackdrop,:where(body.appli,.avisCadre) button{transition:none!important}}
@media print{
 #appSidebar,.appTopbar,.sidebarBackdrop,.skipLink,.pageHead{display:none!important}
 body.avecMenu{padding-left:0!important}
}
