:root{--dg-red: #E41818;--dg-dark: #1D1D1B;--grad-yellow: #F9B03D;--grad-orange: #EB5B28;--grad-red: #E41F1D;--dg-gradient: linear-gradient(90deg, #F9B03D 0%, #EB5B28 50%, #E41F1D 100%);--bg-0: #1D1D1B;--bg-1: #252523;--bg-2: #2f2f2c;--bg-3: #3a3a36;--fg-0: #f5f5f3;--fg-1: #b8b8b3;--fg-2: #7d7d78;--accent: #E41818;--accent-dim: #b31313;--accent-glow: rgba(228, 24, 24, .18);--danger: #E41818;--warn: #F9B03D;--ok: #46c46e;--info: #6ba8ff;--border: #353532;--border-bright: #4a4a45;--radius: 3px;--gap: 16px;--font-logo: "New Amsterdam", "Bebas Neue", sans-serif;--font-display: "Bebas Neue", sans-serif;--font-accent: "Righteous", sans-serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "SF Mono", "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg-0);color:var(--fg-0);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.dg-logo{font-family:var(--font-logo);letter-spacing:1px;line-height:1;text-transform:uppercase}.dg-logo .drone{color:var(--dg-red)}.dg-logo .guard{color:#fff}.dg-gradient-line{height:3px;background:var(--dg-gradient);border:none;width:100%}.app-shell{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--bg-1);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:0 0 20px;flex-shrink:0}.brand{padding:22px 20px 18px;position:relative}.brand .dg-logo{font-size:30px}.brand-sub{font-family:var(--font-accent);font-size:10px;color:var(--fg-2);text-transform:uppercase;letter-spacing:2px;margin-top:6px}.brand:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--dg-gradient)}nav{margin-top:12px}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 20px;color:var(--fg-1);font-size:13px;font-weight:500;cursor:pointer;border-left:3px solid transparent}.nav-item:hover{background:var(--bg-2);color:var(--fg-0);text-decoration:none}.nav-item.active{background:var(--bg-2);color:#fff;border-left-color:var(--dg-red)}.nav-item .ico{width:18px;text-align:center;font-size:15px;color:var(--accent)}.sidebar-footer{margin-top:auto;padding:16px 20px 0;border-top:1px solid var(--border)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:60px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:var(--bg-1)}.topbar-title{font-family:var(--font-display);font-size:24px;letter-spacing:1px;color:var(--fg-0);text-transform:uppercase}.content{padding:28px;flex:1;overflow-y:auto}.card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:20px;position:relative}.card-title{font-family:var(--font-accent);font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--fg-2);margin-bottom:14px}.grid{display:grid;gap:var(--gap)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.stat-value{font-family:var(--font-display);font-size:42px;font-weight:400;color:var(--fg-0);line-height:1;letter-spacing:1px}.stat-value.accent{color:var(--accent)}.stat-label{font-family:var(--font-accent);font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:var(--fg-2);margin-top:10px}.btn{font-family:var(--font-sans);font-size:13px;font-weight:600;padding:10px 18px;border-radius:var(--radius);border:1px solid var(--border-bright);background:var(--bg-2);color:var(--fg-0);cursor:pointer;transition:all .12s}.btn:hover{background:var(--bg-3);border-color:var(--fg-2)}.btn-primary{background:var(--dg-red);color:#fff;border-color:var(--dg-red)}.btn-primary:hover{background:var(--accent-dim);border-color:var(--accent-dim)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-ghost{background:transparent}.btn-danger{color:var(--danger);border-color:var(--danger);background:transparent}.btn-sm{padding:6px 12px;font-size:12px}.field{margin-bottom:16px}.field label{display:block;font-size:12px;color:var(--fg-1);margin-bottom:6px}.input,.select{width:100%;padding:10px 12px;background:var(--bg-0);border:1px solid var(--border-bright);border-radius:var(--radius);color:var(--fg-0);font-size:14px;font-family:var(--font-sans)}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-family:var(--font-accent);font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--fg-2);padding:10px 12px;border-bottom:1px solid var(--border)}.table td{padding:12px;border-bottom:1px solid var(--border);font-size:13px}.table tr:hover td{background:var(--bg-2)}.mono{font-family:var(--font-mono);font-size:12px}.badge{display:inline-block;font-family:var(--font-mono);font-size:11px;font-weight:700;padding:3px 9px;border-radius:2px;letter-spacing:.5px}.badge-CRITICAL{background:var(--dg-red);color:#fff}.badge-VIOLATION{background:#eb5b282e;color:var(--grad-orange);border:1px solid var(--grad-orange)}.badge-WARNING{background:#f9b03d26;color:var(--grad-yellow);border:1px solid var(--grad-yellow)}.badge-OK{background:#46c46e26;color:var(--ok);border:1px solid var(--ok)}.badge-done{background:#46c46e26;color:var(--ok)}.badge-error{background:var(--dg-red);color:#fff}.badge-running{background:#6ba8ff26;color:var(--info)}.alert{padding:12px 16px;border-radius:var(--radius);font-size:13px;margin-bottom:16px;border:1px solid}.alert-error{background:#e418181a;border-color:var(--dg-red);color:#ffb3b3}.alert-ok{background:#46c46e1a;border-color:var(--ok);color:#a6e8bd}.alert-info{background:#6ba8ff14;border-color:var(--info);color:#c2dbff}.alert-warn{background:#f9b03d1a;border-color:var(--grad-yellow);color:#ffe0ad}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% -10%,rgba(228,24,24,.08),transparent 55%),var(--bg-0)}.auth-card{width:380px;background:var(--bg-1);border:1px solid var(--border);border-radius:5px;overflow:hidden}.auth-card-inner{padding:32px}.auth-brand{font-family:var(--font-logo);font-size:44px;text-align:center;letter-spacing:1.5px;line-height:1;margin-bottom:4px;text-transform:uppercase}.auth-tagline{font-family:var(--font-accent);text-align:center;font-size:11px;color:var(--fg-2);text-transform:uppercase;letter-spacing:2.5px;margin-bottom:28px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000c7;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{width:560px;max-height:85vh;overflow-y:auto;background:var(--bg-1);border:1px solid var(--border-bright);border-radius:5px;padding:28px}.modal-title{font-family:var(--font-display);font-size:22px;letter-spacing:.5px;margin-bottom:16px;text-transform:uppercase}.consent-text{font-size:13px;line-height:1.6;color:var(--fg-1);white-space:pre-wrap;background:var(--bg-0);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:20px;max-height:320px;overflow-y:auto}.dropzone{border:2px dashed var(--border-bright);border-radius:5px;padding:40px;text-align:center;cursor:pointer;transition:all .15s}.dropzone:hover,.dropzone.over{border-color:var(--accent);background:var(--accent-glow)}.dropzone .big{font-size:15px;margin-bottom:6px}.dropzone .small{font-size:12px;color:var(--fg-2)}.file-chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;background:var(--bg-2);padding:6px 12px;border-radius:2px;border:1px solid var(--border-bright)}.row{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.muted{color:var(--fg-2)}.mt{margin-top:16px}.mb{margin-bottom:16px}.spinner{width:16px;height:16px;border:2px solid var(--border-bright);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.toggle-group{display:inline-flex;border:1px solid var(--border-bright);border-radius:var(--radius);overflow:hidden}.toggle-group button{padding:8px 16px;background:var(--bg-1);border:none;color:var(--fg-1);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font-sans)}.toggle-group button.active{background:var(--dg-red);color:#fff}@media (max-width: 720px){.sidebar{display:none}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.auth-card{width:100%}}
