/* Clef en Main — feuille de style unique (écran, mobile, impression).
   Polices système : aucune requête vers un service tiers (hors connexion, confidentialité). */
:root{
  --ink:#1E2A38; --ink-soft:#4A5768; --muted:#6B7480; --paper:#F6F5F1; --raised:#FFFFFF; --line:#DEDAD0; --line-soft:#EDEAE2;
  --amber:#E3A038; --amber-deep:#8A5A12; --amber-bg:#FCF1DC;
  --teal:#2E7267; --teal-deep:#1F534B; --teal-bg:#E1EEEB;
  --brick:#B5482E; --brick-deep:#8F3521; --brick-bg:#F5E2DC;
  --ok:#2F7A4F; --shadow:0 2px 10px rgba(30,42,56,.07),0 1px 2px rgba(30,42,56,.05);
  --serif: "Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --safe-b: env(safe-area-inset-bottom, 0px);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--sans);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.45;-webkit-text-size-adjust:100%}
h1,h2,h3{font-family:var(--serif);line-height:1.2}
a{color:var(--teal-deep)}
button{font-family:inherit;cursor:pointer;color:inherit}
input,select,textarea{font-family:inherit;font-size:16px}
:focus-visible{outline:3px solid var(--amber);outline-offset:2px}

/* ---------- structure ---------- */
#app{display:flex;min-height:100vh}
.sidebar{width:232px;flex-shrink:0;background:var(--ink);color:#EDE9DF;display:flex;flex-direction:column;padding:20px 12px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px 18px;margin-bottom:10px;border-bottom:1px solid rgba(255,255,255,.12)}
.brand .mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--amber),var(--brick));display:flex;align-items:center;justify-content:center;font-size:18px}
.brand .name{font-family:var(--serif);font-size:19px;font-weight:600}
.brand .sub{font-size:10.5px;color:#B9C0C9;letter-spacing:.05em;text-transform:uppercase}
.navitem{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:9px;border:0;background:none;color:#CBD2D9;font-size:14.5px;font-weight:500;text-align:left;margin-bottom:2px}
.navitem:hover{background:rgba(255,255,255,.07);color:#fff}
.navitem.active{background:rgba(227,160,56,.18);color:#F7DFAE}
.sidebar-foot{margin-top:auto;padding:10px 8px 0;font-size:11.5px;color:#8C96A2;line-height:1.5}
.sidebar-foot .warnc{color:#F2B880}
.main{flex:1;min-width:0;padding:30px 38px 60px;max-width:1120px}
.tabbar{display:none}
@media (max-width:820px){
  #app{display:block}
  .sidebar{display:none}
  .main{padding:16px 16px calc(92px + var(--safe-b))}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:1px solid var(--line);padding:4px 4px calc(4px + var(--safe-b))}
  .tabbar button{flex:1;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:11px;font-weight:600;color:var(--muted);padding:6px 0;border-radius:10px;min-height:52px}
  .tabbar button span{font-size:20px}
  .tabbar button.on{color:var(--teal-deep);background:var(--teal-bg)}
}

/* ---------- titres ---------- */
.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:20px;flex-wrap:wrap}
.pagehead h1{font-size:27px;margin:0 0 4px;font-weight:600}
.pagehead p{margin:0;color:var(--ink-soft);font-size:14.5px;max-width:720px}
.sect{font-size:19px;margin:28px 0 12px;display:flex;align-items:center;gap:8px}
.fsect{font-size:15.5px;margin:20px 0 8px;font-family:var(--sans);font-weight:700;color:var(--ink-soft);text-transform:none}
h3{font-size:17px;margin:0 0 10px}
.back{margin-bottom:10px}
.muted{color:var(--muted)} .small{font-size:12.5px} .center{text-align:center} .right{text-align:right} .nowrap{white-space:nowrap} .pad{padding:14px}
.neg{color:var(--brick-deep);font-weight:600} .pos{color:var(--ok);font-weight:600} .warnc{color:var(--amber-deep);font-weight:600}
.hint{font-size:12.5px;color:var(--muted);margin:6px 0}
.badge{display:inline-block;background:var(--brick);color:#fff;border-radius:100px;font-size:11.5px;font-weight:700;padding:1px 8px;font-family:var(--sans)}

/* ---------- blocs ---------- */
.card{background:var(--raised);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:var(--shadow);margin-bottom:16px}
.card.flat{box-shadow:none;background:#FBFAF7}
.card.list{padding:4px 0}
.card.empty{text-align:center;padding:40px 20px;color:var(--ink-soft)} .card.empty.small{padding:22px}
.card.empty .ic{font-size:34px;margin-bottom:6px}
.card.cta{display:flex;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(135deg,#FFF8EA,#fff);border-color:#EED8AE;flex-wrap:wrap}
.card.cta.brick{background:linear-gradient(135deg,#FBEDE8,#fff);border-color:#E9C6BA}
.card.cta h2{margin:0 0 6px;font-size:20px} .card.cta p{margin:0;color:var(--ink-soft);max-width:640px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media (max-width:900px){.grid3{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.grid2,.grid3{grid-template-columns:1fr}}
.grid2>.card,.grid3>.card{margin-bottom:0}
.grid2+.card,.grid2+.grid2,.grid3+.card{margin-top:16px}
.infobox{background:var(--teal-bg);border-radius:10px;padding:12px 14px;font-size:13.5px;margin:10px 0;color:var(--teal-deep)}
.infobox.warn{background:var(--amber-bg);color:#5B3C0B}
.prose p,.prose li{line-height:1.55}
.result{margin-top:8px;font-size:15px;min-height:22px}

/* ---------- formulaires ---------- */
.field{margin-bottom:13px}
.field label,.flabel{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:5px}
.field input[type=text],.field input[type=date],.field input[type=search],.field input:not([type]),.field select,.field textarea,select{width:100%;padding:11px 12px;border:1.5px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);min-height:44px}
.field textarea{resize:vertical;min-height:70px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--teal)}
.field .err,input.err,select.err{border-color:var(--brick)!important;background:#FFF6F3}
.field.inline{display:flex;align-items:center;gap:10px} .field.inline label{margin:0;white-space:nowrap} .field.inline select{max-width:520px}
.req{color:var(--brick)}
.check{display:flex;gap:9px;align-items:flex-start;font-size:14px;cursor:pointer;margin:6px 0}
.check input{width:20px;height:20px;margin:1px 0 0;flex-shrink:0;accent-color:var(--teal)}
.radios{display:flex;flex-direction:column;gap:8px}
.radio{display:flex;gap:10px;align-items:flex-start;border:1.5px solid var(--line);border-radius:10px;padding:12px 14px;cursor:pointer;background:#fff;font-size:14.5px}
.radio input{width:19px;height:19px;margin:1px 0 0;accent-color:var(--teal);flex-shrink:0}
.radio.on{border-color:var(--teal);background:var(--teal-bg)}
.btnrow select{width:auto;min-width:110px}

/* ---------- boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border-radius:9px;border:0;font-weight:600;font-size:14.5px;min-height:42px;text-decoration:none;transition:filter .15s,transform .1s}
.btn:active{transform:translateY(1px)} .btn:hover{filter:brightness(1.05)}
.btn-amber{background:var(--amber);color:#3B2A0C} .btn-teal{background:var(--teal);color:#fff} .btn-brick{background:var(--brick);color:#fff}
.btn-ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)} .btn-ink{background:var(--ink);color:#fff}
.btn-sm{padding:6px 11px;font-size:13px;min-height:34px;border-radius:8px} .btn-lg{padding:14px 24px;font-size:16px}
.btn.danger,.btn-ghost.danger{color:var(--brick-deep);border-color:#E9C6BA}
.linkbtn{background:none;border:0;color:var(--teal-deep);text-decoration:underline;font-size:13px;padding:4px}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0} .btnrow.center{justify-content:center} .btnrow.nowrap{flex-wrap:nowrap;margin:0}
label.btn input[hidden]{display:none}

/* ---------- pastilles ---------- */
.pill{display:inline-block;padding:4px 10px;border-radius:100px;font-size:12px;font-weight:700;white-space:nowrap}
.pill-amber{background:var(--amber-bg);color:var(--amber-deep)} .pill-teal{background:var(--teal-bg);color:var(--teal-deep)} .pill-brick{background:var(--brick-bg);color:var(--brick-deep)} .pill-grey{background:#ECEAE4;color:#5F6670}
.dpe{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-weight:800;font-size:13px;color:#fff}
.dpe-A{background:#009C6D}.dpe-B{background:#52B153}.dpe-C{background:#A5CC74;color:#1d3a0f}.dpe-D{background:#F4E70F;color:#4a4400}.dpe-E{background:#F0B40F;color:#4a3300}.dpe-F{background:#EB8235}.dpe-G{background:#D7221F}
.dpebig{display:flex;gap:6px;margin:6px 0 10px} .dpebig .dpe{opacity:.35;width:34px;height:34px} .dpebig .dpe.on{opacity:1;transform:scale(1.15);box-shadow:0 2px 6px rgba(0,0,0,.25)}

/* ---------- accueil ---------- */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:8px}
@media (max-width:640px){.kpis{grid-template-columns:1fr 1fr}.kpis .kpi:first-child{grid-column:1/-1}}
.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.kpi .k{font-size:12.5px;color:var(--muted);font-weight:600} .kpi .v{font-size:22px;font-weight:700;margin-top:2px} .kpi .v small{font-size:14px;color:var(--muted);font-weight:500} .kpi .s{font-size:12px;color:var(--muted)}
.kpi.bad{border-color:#E9C6BA;background:#FFF8F5} .kpi.bad .v{color:var(--brick-deep)}
.kpi .bar{height:6px;background:var(--line-soft);border-radius:4px;margin-top:8px;overflow:hidden} .kpi .bar span{display:block;height:100%;background:var(--teal)}
.alerts{display:flex;flex-direction:column;gap:10px}
.alert{display:flex;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.alert-dot{width:10px;height:10px;border-radius:50%;margin-top:6px;flex-shrink:0;background:#B9C0C9}
.alert.lv1{border-left:4px solid var(--brick)} .alert.lv1 .alert-dot{background:var(--brick)}
.alert.lv2{border-left:4px solid var(--amber)} .alert.lv2 .alert-dot{background:var(--amber)}
.alert.lv3{border-left:4px solid var(--teal)} .alert.lv3 .alert-dot{background:var(--teal)}
.alert-t{font-weight:700;font-size:14.5px} .alert-d{font-size:13.5px;color:var(--ink-soft);margin-top:2px}
.alert .btnrow{margin:8px 0 0}
.hero{max-width:640px;margin:30px auto;text-align:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:34px 26px;box-shadow:var(--shadow)}
.hero-ic{font-size:44px} .hero h1{font-size:28px;margin:10px 0} .hero p{color:var(--ink-soft)}
.steps{padding-left:22px;text-align:left} .steps li{margin:8px 0} .steps.big li{font-size:15px}

/* ---------- listes ---------- */
.lrow{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line-soft)}
.lrow:last-child{border-bottom:0}
.lmain{flex:1;min-width:0;cursor:pointer} .lmain b{display:block} .lmain span{display:block;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.lamt{font-weight:700;white-space:nowrap;text-align:right} .lamt small{display:block;font-weight:500;color:var(--muted);font-size:11.5px}
.lact{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:640px){ .lrow{flex-wrap:wrap} .lmain{flex-basis:100%} .lact{flex:1} }
.tablewrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px} .tbl th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:9px 12px;border-bottom:1px solid var(--line)}
.tbl td{padding:9px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top} .tbl td small{color:var(--muted)} .tbl .num{text-align:right;white-space:nowrap} .tbl tr.tot td{font-weight:700;border-top:2px solid var(--line)}
.tbl.small td{font-size:12.5px}
.dl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:14px} .dl dt{color:var(--muted)} .dl dd{margin:0}
@media (max-width:480px){.dl{grid-template-columns:1fr}.dl dd{margin-bottom:6px}}
.journal{padding-left:18px;font-size:13px} .journal li{margin:4px 0}
.checks{list-style:none;padding:0;margin:6px 0} .checks li{padding:7px 10px 7px 30px;position:relative;font-size:13.5px;border-radius:8px;margin-bottom:5px;background:#FAF9F5}
.checks li::before{position:absolute;left:9px;top:7px}
.checks li.ok::before{content:'✓';color:var(--ok);font-weight:800} .checks li.warn{background:var(--amber-bg)} .checks li.warn::before{content:'!';color:var(--amber-deep);font-weight:800} .checks li.err{background:var(--brick-bg)} .checks li.err::before{content:'✕';color:var(--brick-deep);font-weight:800}
.chips{display:flex;flex-wrap:wrap;gap:8px} .chip{border:1.5px solid var(--line);background:#fff;border-radius:100px;padding:8px 14px;font-size:13px;font-weight:600}
.chip:hover{border-color:var(--teal)}
.monthnav{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:14px;font-size:17px}

/* ---------- biens ---------- */
.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media (max-width:900px){.slots{grid-template-columns:1fr 1fr}} @media (max-width:560px){.slots{grid-template-columns:1fr}.slot-empty{min-height:76px;flex-direction:row;gap:10px}.slot-empty small{display:none}.bcard{min-height:0}}
.bcard{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow);cursor:pointer;transition:transform .12s,box-shadow .12s;min-height:170px}
.bcard:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(30,42,56,.1)}
.bc-top{display:flex;justify-content:space-between;align-items:center} .bc-ic{font-size:24px}
.bcard h3{margin:10px 0 2px;font-size:17px} .bc-addr{font-size:12.5px;color:var(--muted)} .bc-loc{font-size:13.5px;margin-top:10px}
.bc-meta{display:flex;justify-content:space-between;margin-top:8px;font-size:13px;font-weight:600}
.bcard .dpe{position:absolute;right:14px;bottom:14px;width:22px;height:22px;font-size:11px}
.slot-empty{border:2px dashed var(--line);border-radius:14px;background:transparent;min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--muted);font-weight:600;font-size:14px}
.slot-empty span{font-size:30px;color:var(--amber)} .slot-empty small{font-weight:500} .slot-empty:hover{border-color:var(--amber);color:var(--ink)}
.arch{margin-top:18px} .arch summary{cursor:pointer;font-weight:600}
.tabs{display:flex;gap:4px;border-bottom:1.5px solid var(--line);margin-bottom:18px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tabs button{border:0;background:none;padding:10px 14px;font-weight:600;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1.5px;white-space:nowrap;font-size:14.5px}
.tabs button.on{color:var(--ink);border-bottom-color:var(--amber)}
.docgroup{background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:0 14px}
.docgroup summary{cursor:pointer;padding:13px 0;font-weight:700;font-size:15px} .docgroup summary small{color:var(--muted);font-weight:500}
.docgroup .grid3{padding-bottom:14px}
.actiontile{display:flex;flex-direction:column;gap:5px;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:14px;transition:border-color .12s,transform .1s;min-height:96px}
.actiontile:hover{transform:translateY(-2px)} .actiontile .ic{font-size:21px} .actiontile .t{font-weight:700;font-size:14px} .actiontile .d{font-size:12.5px;color:var(--ink-soft);line-height:1.4}
.actiontile.amber:hover{border-color:var(--amber)} .actiontile.teal:hover{border-color:var(--teal)} .actiontile.brick:hover{border-color:var(--brick)}
.doclist{display:flex;flex-direction:column;gap:8px}
.docrow{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px 14px;flex-wrap:wrap}
.docrow .di{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.swatch{width:36px;height:36px;border-radius:9px;background:var(--paper);display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.docrow .t{font-weight:600;font-size:14px} .docrow .s{font-size:12px;color:var(--muted)}

/* ---------- fenêtres ---------- */
.modalbg{position:fixed;inset:0;background:rgba(30,42,56,.48);display:flex;align-items:flex-start;justify-content:center;padding:28px 14px;overflow-y:auto;z-index:60}
.modal{background:var(--raised);border-radius:16px;max-width:560px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.25);margin:auto 0}
.modal.wide{max-width:860px}
.modal-head{padding:16px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px;position:sticky;top:0;background:var(--raised);border-radius:16px 16px 0 0;z-index:2}
.modal-head h2{margin:0;font-size:19px}
.modal-body{padding:18px 22px}
.modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;position:sticky;bottom:0;background:var(--raised);border-radius:0 0 16px 16px}
.closebtn{background:none;border:0;font-size:20px;color:var(--muted);padding:6px;min-width:40px;min-height:40px}
@media (max-width:640px){ .modalbg{padding:0} .modal,.modal.wide{border-radius:0;min-height:100vh;max-width:none} .modal-head,.modal-foot{border-radius:0} .modal-foot{padding-bottom:calc(14px + var(--safe-b))} .modal-foot .btn{flex:1} }
.menu-list{display:flex;flex-direction:column;gap:8px} .menu-item{display:flex;align-items:center;gap:12px;border:1.5px solid var(--line);border-radius:12px;padding:14px;background:#fff;text-align:left;font-size:15px;font-weight:600} .menu-item span{font-size:20px}
.sendgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}
@media (max-width:560px){.sendgrid{grid-template-columns:1fr 1fr}}
.sendtile{display:flex;flex-direction:column;align-items:center;gap:2px;border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:14px 8px;text-align:center}
.sendtile span{font-size:24px} .sendtile small{color:var(--muted);font-size:11.5px} .sendtile:hover{border-color:var(--teal)}
.wizbar{height:6px;background:var(--line-soft);border-radius:4px;overflow:hidden;margin-bottom:16px} .wizbar span{display:block;height:100%;background:var(--amber);transition:width .25s}
.wizstep{display:block;font-family:var(--sans);font-size:12px;color:var(--muted);font-weight:600}
.locblock{border:1px solid var(--line);border-radius:10px;padding:10px 14px 2px;margin:0 0 12px} .locblock legend{font-weight:700;font-size:13px;padding:0 6px}
.preview{background:#E9E7E1;padding:12px;border-radius:10px;overflow-x:auto} .preview .docsheet{box-shadow:var(--shadow);margin:0 auto;max-width:800px}

/* ---------- état des lieux ---------- */
.elroom{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;overflow:hidden}
.elroom.closed .elitems{display:none}
.elroom-head{display:flex;align-items:center;gap:6px;background:#F7F5EF;padding:6px 8px;flex-wrap:wrap}
.elroom-name{flex:1;min-width:140px;border:0;background:transparent;font-weight:700;font-size:15px;padding:6px;border-radius:6px} .elroom-name:focus{background:#fff;outline:1px solid var(--line)}
.elitem{display:grid;grid-template-columns:minmax(120px,1.2fr) 150px 2fr 40px;gap:8px;align-items:center;padding:8px 10px;border-top:1px solid var(--line-soft)}
.elitem.changed{background:#FFF6EC}
.elitem select,.elitem input[type=text]{width:100%;padding:8px;border:1px solid var(--line);border-radius:7px;font-size:14px;min-height:38px;background:#fff}
.eln{font-weight:600;font-size:13.5px} .eln .was{display:block;font-weight:500;font-size:11.5px;color:var(--amber-deep)}
.phbtn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:8px;background:var(--teal-bg);cursor:pointer;font-size:16px}
.phthumbs{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}
.phthumb{position:relative;width:54px;height:54px} .phthumb img{width:54px;height:54px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.phthumb button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:var(--brick);color:#fff;border:0;font-size:10px;padding:0}
@media (max-width:640px){ .elitem{grid-template-columns:1fr 44px} .elitem .eln{grid-column:1/-1} .elitem select{grid-column:1/2} .elitem input[type=text]{grid-column:1/-1;order:3} .elitem .phbtn{grid-row:2;grid-column:2} }
.eladdroom{display:flex;gap:8px;margin:6px 0 10px} .eladdroom select{flex:1}
.invlist{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.invrow{display:grid;grid-template-columns:2fr 56px 140px 2fr 28px;gap:6px;align-items:center}
.invrow input,.invrow select{padding:7px;border:1px solid var(--line);border-radius:7px;font-size:13.5px;min-height:36px;width:100%}
@media (max-width:640px){.invrow{grid-template-columns:1fr 56px;}.invrow .eln{grid-column:1/-1}.invrow select{grid-column:1/-1}.invrow input:not(.qte){grid-column:1/-1}}

/* ---------- messages ---------- */
.toast{position:fixed;bottom:calc(24px + var(--safe-b));left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 20px;border-radius:14px;font-size:14px;font-weight:500;box-shadow:0 6px 20px rgba(0,0,0,.25);z-index:100;max-width:min(92vw,560px);text-align:center}
@media (max-width:820px){.toast{bottom:calc(90px + var(--safe-b))}}
.toast.withact{display:flex;gap:14px;align-items:center} .toast.withact button{background:var(--amber);color:#3B2A0C;border:0;border-radius:8px;padding:7px 12px;font-weight:700;white-space:nowrap}
.updbar{position:fixed;top:0;left:0;right:0;z-index:120;background:var(--teal-deep);color:#fff;padding:10px 16px;text-align:center;font-size:14px}
.updbar button{margin-left:10px;background:var(--amber);border:0;border-radius:8px;padding:6px 12px;font-weight:700;color:#3B2A0C}

/* =====================================================================================
   DOCUMENTS (aperçu, PDF, impression A4)
   ===================================================================================== */
#printArea{display:none}
.pdfhost{position:fixed;left:-10000px;top:0;width:794px;background:#fff}
.docsheet{background:#fff;color:#1c1c1c;font-family:Georgia,"Times New Roman",serif;font-size:12.5px;line-height:1.55;padding:44px 50px;width:100%}
.docsheet h1{font-size:19px;margin:0 0 6px;font-family:Georgia,serif} .docsheet h1 small{font-size:13px;font-weight:normal;display:block;margin-top:4px}
.docsheet h2{font-size:14px;margin:20px 0 6px;border-bottom:1px solid #bbb;padding-bottom:3px;break-after:avoid;page-break-after:avoid}
.docsheet h3{font-size:13px;margin:12px 0 4px;font-family:Georgia,serif}
.docsheet p{margin:6px 0} .docsheet ul{margin:6px 0;padding-left:20px}
.docsheet .center{text-align:center} .docsheet .small{font-size:10.5px;color:#444}
.docsheet table{width:100%;border-collapse:collapse;margin:8px 0;break-inside:auto}
.docsheet td,.docsheet th{border:1px solid #c8c8c8;padding:5px 8px;font-size:12px;text-align:left;vertical-align:top}
.docsheet th{background:#f2f1ec} .docsheet td.num{text-align:right;white-space:nowrap} .docsheet tr.tot td{font-weight:bold;background:#f7f6f2}
.docsheet tr.diff td{background:#FFF1E0}
.docsheet .legal{font-size:10px;color:#555;background:#f6f5f1;padding:10px 12px;border-radius:4px;margin-top:16px;line-height:1.5}
.docsheet .letterhead{display:flex;justify-content:space-between;gap:20px;border-bottom:2px solid #1E2A38;padding-bottom:12px;margin-bottom:18px;font-size:11.5px}
.docsheet .letterhead .right{text-align:right}
.docsheet .sigrow{display:flex;justify-content:space-between;gap:20px;margin-top:30px;break-inside:avoid;page-break-inside:avoid;flex-wrap:wrap}
.docsheet .sigrow.multi .sigbox{width:30%}
.docsheet .sigbox{width:45%;font-size:12px}
.docsheet .sigbox .line{border-top:1px solid #999;margin-top:56px;padding-top:4px;font-size:10px;color:#555}
.docsheet .photogrid{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.docsheet .photobox{width:120px;break-inside:avoid} .docsheet .photobox img{width:120px;height:120px;object-fit:cover;border:1px solid #ccc;border-radius:3px;display:block} .docsheet .photobox .cap{font-size:9px;color:#666;text-align:center}
.docsheet ul.checks{list-style:none;padding-left:0} .docsheet ul.checks li{background:none;padding:3px 0}
.docsheet ul.checks li::before{content:none}
/* lettre : adresse destinataire placée pour une enveloppe à fenêtre DL (fenêtre à droite, ~45 mm du haut) */
.lettre .l-exp{font-size:11.5px;line-height:1.45;min-height:95px}
.lettre .l-dest{margin-left:52%;margin-top:6px;min-height:80px;font-size:12.5px;line-height:1.45}
.lettre .l-date{text-align:right;margin:18px 0 8px}
.lettre .l-envoi{font-weight:bold;font-size:11.5px;text-transform:uppercase;letter-spacing:.02em;margin-bottom:6px}
.lettre .l-objet{margin:10px 0 2px}
.lettre .l-ref{font-size:11px;color:#555;margin-bottom:14px}
.lettre .l-sign{margin:26px 0 0 52%;break-inside:avoid}
.lettre .l-sign .sigspace{height:56px;font-size:10px;color:#999}
.lettre .l-pj{font-size:11px;margin-top:22px}
.lettre .emarg{margin-top:26px;border:1px dashed #999;padding:12px;font-size:11px;min-height:70px}
@page{size:A4;margin:14mm 12mm}
@media print{
  body{background:#fff}
  #app,.modalbg,.toast,.updbar,.tabbar{display:none!important}
  #printArea{display:block!important}
  .docsheet{padding:0;font-size:11.5pt}
  .docsheet .sigrow,.docsheet tr,.docsheet .photobox{page-break-inside:avoid}
}

/* ---------- charges ---------- */
.pvrow{display:grid;grid-template-columns:1.4fr 1.4fr 110px 28px;gap:6px;align-items:center;margin-bottom:6px}
.pvrow select,.pvrow input,.dcrow select,.dcrow input{padding:8px;border:1px solid var(--line);border-radius:7px;font-size:14px;min-height:38px;width:100%;background:#fff}
.dctable{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:8px}
.dchead,.dcrow{display:grid;grid-template-columns:1.5fr 1.5fr 100px 70px 100px 28px;gap:6px;align-items:center;padding:6px 8px}
.dchead{background:#F7F5EF;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase}
.dcrow{border-top:1px solid var(--line-soft)} .dcrow .num{text-align:right;font-weight:600;font-size:13px}
.dchint{grid-column:1/-1;color:var(--muted);font-size:11.5px}
@media (max-width:640px){ .dchead{display:none} .dcrow{grid-template-columns:1fr 1fr} .dcrow [data-f=libelle]{grid-column:1/-1} .pvrow{grid-template-columns:1fr 90px 28px} .pvrow [data-f=libelle]{display:none} }

.codebox{width:100%;font-family:ui-monospace,Consolas,monospace;font-size:12.5px;padding:10px;border:1.5px solid var(--line);border-radius:9px;word-break:break-all;background:#FBFAF7}
.btn[disabled]{opacity:.5;cursor:wait}
.tabs{scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}

/* ---------- aide, lexique, bandeaux ---------- */
.helpbtn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line);background:#fff;color:var(--teal-deep);font:700 14px var(--sans);vertical-align:middle;margin-left:6px}
.term{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline dotted var(--teal);text-underline-offset:3px;cursor:help}
.lexique dt{font-weight:700;margin-top:10px} .lexique dd{margin:2px 0 0;font-size:13.5px;color:var(--ink-soft)}
.copiebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.texteoff{margin-top:24px;border-top:1px solid #bbb;padding-top:10px;font-size:11px;break-before:page;page-break-before:always}
.texteoff h3{font-size:12.5px}

/* ---------- courrier rapide ---------- */
.xpgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.xpdoc{text-align:left;border:1.5px solid var(--line);border-radius:10px;background:#fff;padding:11px 12px;font-size:14px;font-weight:600;min-height:46px}
.xpdoc:hover{border-color:var(--amber)}
