:root{--bg: #0f1115;--panel: #181b22;--panel2: #1f232d;--border: #2a2f3a;--text: #e8eaf0;--muted: #9aa3b2;--accent: #f5a623;--accent-text: #10131a;--ok: #34c07c;--warn: #e5b567;--danger: #e2604f;--info: #5aa7e8}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100vh}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:15px}a{color:var(--info);text-decoration:none}.layout{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 0;position:sticky;top:0;height:100vh}.sidebar .brand{font-size:20px;font-weight:700;padding:4px 20px 16px;color:var(--accent);letter-spacing:.5px}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{padding:10px 20px;color:var(--muted);border-left:3px solid transparent}.sidebar nav a:hover{color:var(--text);background:var(--panel2)}.sidebar nav a.active{color:var(--text);border-left-color:var(--accent);background:var(--panel2)}.sidebar .spacer{flex:1}.sidebar .whoami{padding:12px 20px;font-size:13px;color:var(--muted);border-top:1px solid var(--border)}.sidebar .whoami strong{color:var(--text);display:block}.sidebar .whoami button{margin-top:8px}.main{flex:1;padding:24px 32px;max-width:1200px}.main h1{font-size:22px;margin:0 0 4px}.main .subtitle{color:var(--muted);margin:0 0 20px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px 18px;margin-bottom:16px}.card h2{font-size:15px;margin:0 0 12px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:1fr 1fr}.grid.cols-3{grid-template-columns:1fr 1fr 1fr}.grid.cols-4{grid-template-columns:repeat(4,1fr)}@media(max-width:900px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.sidebar{display:none}.main{padding:16px}.mobilebar{display:flex!important}}.stat{text-align:left}.stat .value{font-size:26px;font-weight:700}.stat .label{color:var(--muted);font-size:13px}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px;padding:8px 10px;border-bottom:1px solid var(--border)}td{padding:10px;border-bottom:1px solid var(--border);vertical-align:middle}tr:last-child td{border-bottom:none}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--panel2)}.tag{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.tag.STOCK{background:#143324;color:var(--ok)}.tag.PERSONNE{background:#10263c;color:var(--info)}.tag.CHANTIER{background:#33270f;color:var(--warn)}.tag.ATELIER{background:#2b1f38;color:#b78ae8}.tag.MAINTENANCE{background:#33270f;color:var(--warn)}.tag.REBUT{background:#3a1713;color:var(--danger)}.tag.SANS_MOUVEMENT,.tag.neutral{background:var(--panel2);color:var(--muted)}.tag.OUVERT{background:#143324;color:var(--ok)}.tag.CLOS{background:var(--panel2);color:var(--muted)}.tag.NON_ASSIGNEE{background:#10263c;color:var(--info)}.tag.ASSIGNEE{background:#143324;color:var(--ok)}.tag.ANNULEE{background:#3a1713;color:var(--danger)}button,.btn{background:var(--accent);color:var(--accent-text);border:none;padding:9px 16px;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;font-family:inherit}button:hover,.btn:hover{filter:brightness(1.1)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary,.btn.secondary{background:var(--panel2);color:var(--text);border:1px solid var(--border)}button.danger{background:var(--danger);color:#fff}button.small{padding:5px 10px;font-size:13px}input,select,textarea{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-size:14px;font-family:inherit;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}label.field{display:block;margin-bottom:12px}label.field span{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.end{justify-content:flex-end}.row.between{justify-content:space-between}.error-box{background:#3a1713;color:#f2a297;border:1px solid #5c2018;padding:10px 14px;border-radius:8px;margin-bottom:12px}.success-box{background:#143324;color:#7fd7a8;border:1px solid #1d5c39;padding:10px 14px;border-radius:8px;margin-bottom:12px}.muted{color:var(--muted)}.mono{font-family:Consolas,monospace}.small{font-size:13px}.login-page{display:grid;place-items:center;min-height:100vh}.login-page .card{width:360px}.login-page .brand{font-size:26px;font-weight:700;color:var(--accent);text-align:center;margin-bottom:4px}.login-page .sub{text-align:center;color:var(--muted);margin-bottom:20px;font-size:13px}.mobilebar{display:none;position:sticky;top:0;z-index:10;background:var(--panel);border-bottom:1px solid var(--border);padding:10px 12px;gap:6px;overflow-x:auto}.mobilebar a{color:var(--muted);padding:6px 10px;border-radius:6px;white-space:nowrap;font-size:13px}.mobilebar a.active{background:var(--panel2);color:var(--accent)}.timeline{list-style:none;margin:0;padding:0}.timeline li{padding:10px 0 10px 20px;border-left:2px solid var(--border);position:relative}.timeline li:before{content:"";position:absolute;left:-6px;top:16px;width:10px;height:10px;border-radius:50%;background:var(--accent)}.timeline .when{color:var(--muted);font-size:12px}.scanbox video{width:100%;max-width:480px;border-radius:10px;border:1px solid var(--border);background:#000}.label-sheet{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.label-cell{border:1px dashed var(--border);border-radius:6px;padding:10px;text-align:center;background:#fff;color:#000}.label-cell img{width:90px;height:90px}.label-cell .code{font-family:Consolas,monospace;font-weight:700;font-size:14px}@media print{body{background:#fff;color:#000}.sidebar,.mobilebar,.no-print{display:none!important}.main{padding:0;max-width:none}.card{border:none;padding:0}.label-sheet{grid-template-columns:repeat(4,1fr)}.label-cell{border:1px dashed #999}}
