:root{--ink:#172033;--muted:#667085;--line:#d9e0ea;--surface:#fff;--nav:#111827;--accent:#1f5fbf}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:#f6f7fb}a{text-decoration:none;color:var(--accent)}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:#eef2ff;display:flex;flex-direction:column;padding:22px 16px}.brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.brand-mark{width:42px;height:42px;border-radius:8px;background:#f8fafc;color:#111827;display:grid;place-items:center;font-weight:900}.brand span{display:block;color:#aeb8ce;font-size:.86rem}.nav-list{display:grid;gap:4px}.nav-list a{color:#d8deef;padding:10px 12px;border-radius:7px;font-weight:700}.nav-list a:hover{background:#263142;color:#fff}.sidebar-footer{margin-top:auto;color:#aeb8ce;padding:16px 8px 4px}.app-main{min-width:0;display:flex;flex-direction:column}.topbar{height:78px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px}.topbar h1{margin:0;font-size:1.32rem}.topbar p{margin:2px 0 0;color:var(--muted);font-size:.88rem}.topbar-user{display:flex;align-items:center;gap:12px}.content-wrap{padding:24px 28px 32px;flex:1}.footer{border-top:1px solid var(--line);color:var(--muted);background:#fff;padding:12px 28px;display:flex;justify-content:space-between;font-size:.84rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid transparent;border-radius:7px;padding:.56rem .85rem;font-weight:700;cursor:pointer;min-height:38px}.btn-sm{font-size:.875rem;padding:.35rem .58rem;min-height:32px}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-outline-primary{background:#fff;color:var(--accent);border-color:#b8c9e8}.btn-outline-secondary{background:#fff;color:#344054;border-color:#c9d1df}.btn-danger{background:#b42318;color:#fff;border-color:#b42318}.w-100{width:100%}.form-control,.form-select{width:100%;min-height:40px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;padding:.58rem .68rem;color:var(--ink)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:.72rem;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:middle}.table thead th{font-size:.78rem;text-transform:uppercase;color:#667085;background:#f8fafc}.table-responsive{overflow:auto}.alert{border-radius:8px;padding:.75rem .9rem;margin-bottom:1rem;border:1px solid transparent}.alert-success{background:#ecfdf3;color:#027a48;border-color:#abefc6}.alert-danger{background:#fef3f2;color:#b42318;border-color:#fecdca}.alert-warning{background:#fffaeb;color:#b54708;border-color:#fedf89}.alert-info{background:#eff8ff;color:#175cd3;border-color:#b2ddff}.metric-grid{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:14px;margin-bottom:18px}.metric-card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 1px 2px rgba(16,24,40,.05)}.metric-card{padding:16px;min-height:104px;display:flex;flex-direction:column;justify-content:space-between}.metric-card span{color:var(--muted);font-weight:700;font-size:.86rem}.metric-card strong{font-size:2rem;line-height:1}.grid-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin-bottom:18px}.panel{padding:18px;overflow:auto}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.panel-title h2{margin:0;font-size:1.05rem}.compact th,.compact td{padding:.58rem .5rem;font-size:.9rem}.muted{color:var(--muted)}.status-chip{display:inline-flex;align-items:center;border-radius:999px;padding:.2rem .5rem;background:#eef4ff;color:#1849a9;font-size:.78rem;font-weight:800}.status-en_stock{background:#ecfdf3;color:#027a48}.status-affecte{background:#eff8ff;color:#175cd3}.status-perdu,.status-vole{background:#fef3f2;color:#b42318}.status-desactive,.status-detruit{background:#f2f4f7;color:#344054}.status-casse,.status-remplace{background:#fffaeb;color:#b54708}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}.stack-form{display:grid;gap:14px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1/-1}label{display:grid;gap:6px;font-weight:700;color:#344054}.check-row{display:flex;align-items:center;gap:8px}.check-row input{width:auto}.uid-result-panel{margin-bottom:18px}.uid-scan-input{min-width:min(420px,100%)}.event-row{display:grid;gap:3px;padding:10px 0;border-bottom:1px solid #edf0f5}.event-row small{color:var(--muted)}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#eef4ff,#f8fafc 44%,#eefdf8)}.login-panel{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:8px;padding:28px;box-shadow:0 18px 45px rgba(16,24,40,.12)}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.login-brand h1{margin:0;font-size:1.35rem}.login-brand p{margin:3px 0 0;color:var(--muted)}.login-hint{color:var(--muted);margin:16px 0 0;font-size:.88rem}.signature-pad{border:1px dashed #98a2b3;border-radius:8px;background:#fff;width:100%;height:150px;touch-action:none}.qr-box svg{max-width:420px;height:auto;border:1px solid #e5e7eb}.detail-list{display:grid;grid-template-columns:145px minmax(0,1fr);gap:8px 12px}.detail-list dt{font-weight:800}.detail-list dd{margin:0}code{color:#1849a9;font-weight:800}.mt-3{margin-top:1rem}@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}}@media(max-width:780px){.app-shell{grid-template-columns:1fr}.nav-list{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar,.footer{padding-left:16px;padding-right:16px}.content-wrap{padding:18px 16px}.metric-grid,.form-grid{grid-template-columns:1fr}.topbar{height:auto;padding-top:14px;padding-bottom:14px;align-items:flex-start;gap:12px;flex-direction:column}}
