:root{--brand: #2563eb;--brand-dark: #1d4ed8;--bg: #f6f7f9;--surface: #ffffff;--border: #e4e7ec;--text: #1f2430;--muted: #6b7280;--ok: #16a34a;--warn: #d97706;--err: #dc2626;--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.app{display:flex;min-height:100vh}.sidebar{width:232px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;gap:4px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;padding:8px 10px 16px}.brand .dot{width:26px;height:26px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:800}.nav a{display:block;padding:9px 12px;border-radius:8px;color:var(--text);font-weight:500}.nav a:hover{background:var(--bg);text-decoration:none}.nav a.active{background:color-mix(in srgb,var(--brand) 12%,transparent);color:var(--brand-dark)}.sidebar .spacer{flex:1}.userbox{font-size:12px;color:var(--muted);padding:10px;border-top:1px solid var(--border)}.main{flex:1;min-width:0}.topbar{height:56px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:5}.content{padding:24px;max-width:1180px}h1{font-size:22px;margin:0 0 4px}h2{font-size:16px;margin:0 0 12px}.subtitle{color:var(--muted);margin:0 0 20px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.kpi .v{font-size:28px;font-weight:700}.kpi .l{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border)}th{background:#fafbfc;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:none}.btn{display:inline-flex;align-items:center;gap:6px;background:var(--brand);color:#fff;border:none;padding:9px 14px;border-radius:8px;font-weight:600;cursor:pointer;font-size:14px}.btn:hover{background:var(--brand-dark)}.btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn.secondary:hover{background:var(--bg)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.sm{padding:5px 10px;font-size:13px}input,select,textarea{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;font:inherit;background:#fff}textarea{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px}label{display:block;font-weight:600;margin:0 0 6px;font-size:13px}.field{margin-bottom:14px}.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1;min-width:140px}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600}.badge.active,.badge.running{background:#e0edff;color:var(--brand-dark)}.badge.done,.badge.succes{background:#dcfce7;color:#15803d}.badge.waiting,.badge.awaiting_result{background:#fef3c7;color:#92400e}.badge.stopped,.badge.ferme,.badge.failed{background:#fee2e2;color:#991b1b}.badge.epuise,.badge.expire,.badge.draft{background:#eef0f3;color:#4b5563}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px}.error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;padding:10px 14px;border-radius:8px;margin-bottom:14px}.ok-msg{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;padding:10px 14px;border-radius:8px;margin-bottom:14px}.muted{color:var(--muted)}.split{display:grid;grid-template-columns:380px 1fr;gap:20px;align-items:start}.login-wrap{min-height:100vh;display:grid;place-items:center}.login-card{width:380px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px}.bar{height:10px;border-radius:6px;background:var(--brand)}.barrow{display:flex;align-items:center;gap:10px;margin:6px 0}.barrow .name{width:130px;font-size:13px}.barrow .track{flex:1;background:var(--bg);border-radius:6px;overflow:hidden}.barrow .val{width:40px;text-align:right;font-variant-numeric:tabular-nums}
