/* ═══════════════════════════════════════════════════════════════════
   LE CHÂSSIS D'ADOPT[CREW]. Une seule charte, un seul fichier.

   Toutes les pages du CRM et de ses modules pointent ici : jetons de
   couleur, polices, barre du haut, colonne latérale, cartes, boutons,
   pastilles et points de rupture. Changer une couleur se fait une fois.

   Avant ce fichier, cette charte existait en CINQ exemplaires copiés à la
   main. Ils étaient encore identiques, mais par chance : le premier oubli
   aurait fait diverger un module du reste du CRM.

   Les règles propres à une page restent dans sa balise <style>, qui vient
   APRÈS ce lien et l'emporte donc dans la cascade.
   Source : crew-chassis/, généré par unifier.py.
   ═══════════════════════════════════════════════════════════════════ */

:root{--signal:#00D68A;--signal-dim:rgba(0,214,138,.12);--deep:#0A0E14;--surface:#111820;--s2:#1A2330;--s3:#232F3E;--border:rgba(255,255,255,.08);--border-h:rgba(255,255,255,.14);--text:#F0F4F8;--muted:#8090A8;--faint:#4A5568;--coral:#FF6B6B;--amber:#FFBD2E;--blue:#60a5fa;--purple:#a78bfa;--sans:'Space Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;--mono:'IBM Plex Mono',ui-monospace,Consolas,monospace}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--sans);background:var(--deep);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
button{font-family:var(--sans);cursor:pointer}
a{color:inherit}
.mono{font-family:var(--mono)}
.topbar{min-height:58px;display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top) 20px 0;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:50;gap:12px}
.logo{font-weight:800;font-size:16px;letter-spacing:-.03em;white-space:nowrap}.logo span{color:var(--signal)}.logo small{color:var(--muted);font-weight:600;font-size:12px;margin-left:8px}
.tb-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.pill{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:4px 10px;border-radius:20px;border:1px solid var(--border-h);color:var(--muted);white-space:nowrap}
.pill.ok{color:var(--signal);border-color:rgba(0,214,138,.4)}.pill.warn{color:var(--amber);border-color:rgba(255,189,46,.4)}.pill.bad{color:var(--coral);border-color:rgba(255,107,107,.4)}
.shell{display:flex;min-height:calc(100vh - 58px)}
.side{width:212px;flex-shrink:0;border-right:1px solid var(--border);padding:16px 12px;background:var(--surface)}
.side a{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:8px;color:var(--muted);font-weight:600;font-size:13px;margin-bottom:3px;cursor:pointer;text-decoration:none;transition:.15s}
.side a:hover{background:var(--s2);color:var(--text)}.side a.active{background:rgba(96,165,250,.16);color:var(--blue)}
.side .grp{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);padding:14px 12px 6px}
.side .badge{margin-left:auto;font-family:var(--mono);font-size:10px;background:var(--coral);color:#fff;border-radius:10px;padding:1px 7px}
.main{flex:1;padding:24px 28px;min-width:0;max-width:1400px}
h1{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-bottom:3px}
.sub{color:var(--muted);font-size:13px;margin-bottom:22px}
.bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px;flex-wrap:wrap}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;min-width:0}
.kpi .n{font-family:var(--mono);font-size:22px;font-weight:600;color:var(--signal);overflow-wrap:anywhere}.kpi .n.neutral{color:var(--text)}.kpi .n.warn{color:var(--amber)}.kpi .n.bad{color:var(--coral)}.kpi .n.blue{color:var(--blue)}
.kpi .l{font-size:12px;color:var(--muted);margin-top:2px}.kpi .h{font-size:11px;color:var(--faint);margin-top:4px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:14px}
.card h3{font-size:13px;font-weight:700;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.sec{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--signal);margin:22px 0 10px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.tblw{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{text-align:left;padding:10px 12px;color:var(--muted);font-size:11.5px;font-weight:700;border-bottom:1px solid var(--border);background:var(--surface);white-space:nowrap}
tbody td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr.click{cursor:pointer}tbody tr.click:hover{background:var(--s2)}
td.num,th.num{text-align:right;font-family:var(--mono);white-space:nowrap}
tfoot td{padding:10px 12px;font-weight:700;border-top:1px solid var(--border-h);background:var(--s2)}
.st{font-family:var(--mono);font-size:10px;padding:3px 9px;border-radius:20px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;display:inline-block}
.st.ok{background:var(--signal-dim);color:var(--signal)}.st.open{background:rgba(96,165,250,.14);color:var(--blue)}.st.late{background:rgba(255,107,107,.14);color:var(--coral)}.st.warn{background:rgba(255,189,46,.14);color:var(--amber)}.st.muted{background:var(--s2);color:var(--muted)}.st.purple{background:rgba(167,139,250,.16);color:var(--purple)}
.btn{background:var(--signal);color:var(--deep);border:none;border-radius:8px;padding:9px 16px;font-weight:700;font-size:13px;white-space:nowrap}
.btn.ghost{background:none;border:1px solid var(--border-h);color:var(--text)}.btn.sm{padding:6px 12px;font-size:12px}.btn.danger{background:var(--coral);color:#fff}.btn.blue{background:var(--blue);color:var(--deep)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.minibtn{background:var(--s2);border:1px solid var(--border-h);color:var(--text);border-radius:7px;padding:7px 11px;font-size:12px}
.minibtn.on{border-color:var(--signal);color:var(--signal)}
.empty{color:var(--faint);text-align:center;padding:36px;font-size:13px}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.field input,.field select,.field textarea{background:var(--deep);border:1px solid var(--border-h);border-radius:8px;color:var(--text);padding:9px 11px;font-family:var(--sans);font-size:13px;width:100%}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--signal)}
.field textarea{resize:vertical;min-height:70px}
.frow{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:12px}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.62);z-index:150;display:flex;align-items:center;justify-content:center;padding:16px}
.modal{background:var(--deep);border:1px solid var(--border-h);border-radius:14px;padding:22px;width:560px;max-width:96vw;max-height:92vh;overflow-y:auto}
.modal h2{font-size:16px;margin-bottom:14px}
.modal .acts{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;flex-wrap:wrap}
.alert{border:1px solid var(--border);border-left:3px solid var(--blue);background:var(--surface);border-radius:10px;padding:10px 14px;margin-bottom:8px;font-size:13px}
.alert.warn{border-left-color:var(--amber)}.alert.danger{border-left-color:var(--coral)}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--signal);color:var(--deep);font-weight:700;padding:12px 22px;border-radius:10px;z-index:300;opacity:0;transition:.3s;font-size:13px;pointer-events:none;max-width:90vw}
.toast.show{opacity:1}.toast.err{background:var(--coral);color:#fff}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--border-h);border-radius:20px;padding:5px 12px;font-size:12px;color:var(--muted);cursor:pointer;background:none;font-weight:600}.chip .cnt{opacity:.55;font-variant-numeric:tabular-nums;margin-left:2px}
.chip.on .cnt{opacity:.8}
.chip.on{border-color:var(--signal);color:var(--signal);background:var(--signal-dim)}
.dl{display:flex;gap:12px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--border)}
.dl:last-child{border-bottom:none}
.dl input[type=checkbox]{width:18px;height:18px;margin-top:2px;accent-color:var(--signal);flex:none}
.dl .t{font-weight:600}.dl .m{font-size:12px;color:var(--muted)}.dl .d{font-family:var(--mono);font-size:12px;color:var(--text);min-width:86px;flex:none}
.dl.done .t{text-decoration:line-through;color:var(--faint)}
.dl.late .d{color:var(--coral)}.dl.soon .d{color:var(--amber)}
.kind{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:10px;background:var(--s2);color:var(--muted);margin-left:6px}
details.more summary{cursor:pointer;font-size:12px;color:var(--blue);list-style:none;margin-top:4px}
details.more summary::-webkit-details-marker{display:none}
details.more div{font-size:12px;color:var(--muted);margin-top:6px;white-space:pre-wrap}
.vatgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.vatcell{background:var(--deep);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.vatcell b{font-family:var(--mono);font-size:12px;color:var(--blue)}.vatcell .v{font-family:var(--mono);font-size:16px;margin-top:3px}.vatcell .lbl{font-size:11px;color:var(--muted)}
.bars{display:flex;gap:6px;align-items:flex-end;height:140px;padding:10px 0;border-bottom:1px solid var(--border);overflow-x:auto}
.barc{flex:1;min-width:44px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:10px;color:var(--muted)}
.barc .b{width:100%;display:flex;gap:2px;align-items:flex-end;height:110px}
.barc .b i{flex:1;display:block;border-radius:3px 3px 0 0}
.barc .b i.in{background:var(--signal)}.barc .b i.out{background:var(--coral)}
.drop{border:1.5px dashed var(--border-h);border-radius:12px;padding:22px;text-align:center;color:var(--muted);font-size:13px;cursor:pointer}
.drop.over{border-color:var(--signal);color:var(--signal)}
.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:12px}
.tabs{display:flex;gap:4px;overflow-x:auto;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface);display:none}
.tabs a{white-space:nowrap;padding:7px 12px;border-radius:8px;font-size:12px;font-weight:600;color:var(--muted);text-decoration:none}.tabs a.active{background:rgba(96,165,250,.16);color:var(--blue)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.right{margin-left:auto}
@media(max-width:900px){.side{display:none}.tabs{display:flex}.main{padding:16px 14px}.kpis{grid-template-columns:1fr 1fr}.grid2,.grid3{grid-template-columns:1fr}.modal{padding:16px}}
@media(max-width:560px){.kpis{grid-template-columns:1fr}}
