:root{--orange:#f29400;--orange-dk:#d07e00;--orange-light:#fff5e6;--orange-mid:#ffe5b4;--orange-glow:#f294002e;--ink:#1a1612;--ink2:#3a3530;--ink3:#7a736a;--ink4:#a89f94;--white:#fff;--bg:#f8f7f4;--bg2:#f0ede7;--bg3:#e8e3da;--border:#e2ddd7;--border2:#cdc8c0;--green:#1d9e75;--green-light:#e1f5ee;--red:#e03b3b;--red-light:#fff0f0;--blue:#185fa5;--blue-light:#e6f1fb;--purple:#8b5cf6;--purple-light:#f3eeff;--font-head:"Bricolage Grotesque", sans-serif;--font-body:"Plus Jakarta Sans", sans-serif;--r:10px;--r-lg:16px;--shadow-sm:0 2px 8px #1a161212;--shadow-md:0 8px 32px #1a16121a;--shadow-lg:0 24px 64px #1a16121f;--transition:background .2s, transform .15s, box-shadow .2s}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-body);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.6}img,svg,video{max-width:100%;display:block}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}a{color:inherit;text-decoration:none}h1{font-family:var(--font-head);letter-spacing:-.01em;color:var(--ink);font-size:clamp(32px,5vw,56px);font-weight:800;line-height:1.05}h2{font-family:var(--font-head);color:var(--ink);font-size:clamp(24px,3.5vw,40px);font-weight:700;line-height:1.15}h3{font-family:var(--font-head);color:var(--ink);font-size:20px;font-weight:700}h4{font-family:var(--font-head);letter-spacing:.05em;text-transform:uppercase;color:var(--ink3);font-size:16px;font-weight:700}p{color:var(--ink2);font-size:16px;line-height:1.65}small{color:var(--ink4);font-size:12px}.label-caps{font-family:var(--font-head);letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);font-size:11px;font-weight:700}.btn{font-family:var(--font-body);border-radius:var(--r);cursor:pointer;transition:var(--transition);white-space:nowrap;border:none;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;line-height:1;display:inline-flex}.btn-primary{background:var(--orange);color:var(--white)}.btn-primary:hover{background:var(--orange-dk);box-shadow:var(--shadow-md);transform:translateY(-2px)}.btn-secondary{background:var(--white);color:var(--ink2);border:1.5px solid var(--border2)}.btn-secondary:hover{background:var(--bg2);border-color:var(--orange)}.btn-ghost{color:var(--orange);background:0 0}.btn-ghost:hover{background:var(--orange-light)}.btn-danger{background:var(--red-light);color:var(--red)}.btn-danger:hover{background:var(--red);color:var(--white)}.btn-sm{padding:7px 14px;font-size:13px}.btn-lg{padding:14px 28px;font-size:16px}.badge{font-size:11px;font-weight:600;font-family:var(--font-head);letter-spacing:.06em;text-transform:uppercase;border-radius:20px;align-items:center;padding:3px 10px;line-height:1.4;display:inline-flex}.badge-nouvelle,.badge-a-affecter{background:var(--orange-light);color:var(--orange-dk)}.badge-planifiee,.badge-en-attente{background:var(--blue-light);color:var(--blue)}.badge-en-cours{background:var(--orange-mid);color:var(--orange-dk)}.badge-terminee,.badge-payee{background:var(--green-light);color:var(--green)}.badge-annulee,.badge-impayee{background:var(--red-light);color:var(--red)}.badge-echu{color:var(--red);border:1px solid var(--red);background:#fff0f0}.badge-devis-envoye,.badge-a-signer{background:var(--purple-light);color:var(--purple)}.urgence-critique{background:var(--red);color:var(--white)}.urgence-haute{background:var(--orange);color:var(--white)}.urgence-normale{background:var(--bg3);color:var(--ink3)}.urgence-faible{background:var(--green-light);color:var(--green)}.card{background:var(--white);border-radius:var(--r-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);padding:24px}.card-interactive{transition:var(--transition);cursor:pointer}.card-interactive:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}.card-kpi{background:var(--white);border-radius:var(--r-lg);border:1.5px solid var(--border);padding:20px 24px}.kpi-value{font-family:var(--font-head);color:var(--ink);font-size:28px;font-weight:800;line-height:1.1}.kpi-label{font-family:var(--font-head);letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);font-size:11px;font-weight:700}input,select,textarea{font-family:var(--font-body);border-radius:var(--r);border:1.5px solid var(--border2);background:var(--white);color:var(--ink);outline:none;width:100%;padding:10px 14px;font-size:14px;font-weight:500;transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-glow)}input::placeholder,textarea::placeholder{color:var(--ink4)}label{color:var(--ink2);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-group{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}table{border-collapse:collapse;width:100%}thead th{font-family:var(--font-head);letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);border-bottom:2px solid var(--border);text-align:left;padding:10px 16px;font-size:11px;font-weight:700}tbody td{color:var(--ink2);border-bottom:1px solid var(--border);padding:12px 16px;font-size:14px}tbody tr:hover{background:var(--bg2)}tbody tr:last-child td{border-bottom:none}.alert-item{border-radius:var(--r);color:var(--ink2);border-left:3px solid;align-items:flex-start;gap:12px;padding:12px 16px;font-size:13px;display:flex}.alert-warning{background:var(--orange-light);border-color:var(--orange)}.alert-error{background:var(--red-light);border-color:var(--red)}.alert-success{background:var(--green-light);border-color:var(--green)}.alert-info{background:var(--blue-light);border-color:var(--blue)}.sidebar{background:var(--ink);z-index:50;flex-direction:column;width:220px;height:100vh;padding:24px 0;display:flex;position:fixed;top:0;left:0}.sidebar-logo{font-family:var(--font-head);color:var(--white);letter-spacing:.04em;border-bottom:1px solid #ffffff1a;padding:0 20px 24px;font-size:18px;font-weight:800}.nav-item{color:#fff9;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:0;align-items:center;gap:12px;width:100%;padding:10px 20px;font-size:14px;font-weight:500;transition:background .15s,color .15s;display:flex}.nav-item:hover{color:var(--white);background:#ffffff14}.nav-item.active{background:var(--orange);color:var(--white)}.text-orange{color:var(--orange)}.text-muted{color:var(--ink3)}.text-small{font-size:12px}.text-center{text-align:center}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mt-32{margin-top:32px}.mb-4{margin-bottom:4px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.mb-32{margin-bottom:32px}.gap-8{gap:8px}.gap-16{gap:16px}.gap-24{gap:24px}.flex{align-items:center;display:flex}.flex-col{flex-direction:column;display:flex}.flex-wrap{flex-wrap:wrap}.justify-between{justify-content:space-between}.grid-2{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}@media(max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.sidebar{z-index:100;transition:transform .25s;transform:translate(-100%)}.sidebar.open{transform:translate(0)}h1{font-size:clamp(28px,6vw,40px)}}
