:root{--bg: #f7f8f8;--surface: #ffffff;--surface-2: #f2f4f3;--border: #e6e8e8;--text: #14181f;--text-dim: #5b6472;--text-faint: #8b95a3;--primary: #25D366;--primary-hover: #1FBE5A;--primary-active: #17A34A;--primary-dim: #E9F9EF;--primary-border: #C5EDD4;--primary-strong: #0F7A3C;--focus-ring: rgba(37, 211, 102, .32);--ok: #17A34A;--warn: #b26a06;--err: #dc2626;--shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .06);font-family:Poppins,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-size:14px;font-family:Poppins,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}input,select{font:inherit}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:500;transition:background .13s ease,border-color .13s ease}.btn:hover{background:var(--surface-2)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-primary:active{background:var(--primary-active);border-color:var(--primary-active)}.btn-sm{padding:4px 9px;font-size:12px}.input{width:100%;padding:8px 11px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text)}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--focus-ring)}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow)}.card-p{padding:16px}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.tiny{font-size:12px}.h1{font-size:20px;font-weight:650}.h2{font-size:15px;font-weight:600}.row{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between}.stack{display:flex;flex-direction:column;gap:4px}.badge{display:inline-flex;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:var(--surface-2);color:var(--text-dim);text-transform:uppercase}.badge.ok{background:var(--primary-dim);color:var(--primary-strong)}.badge.warn{background:#fef2e2;color:#b26a06}.badge.err{background:#fdecec;color:#c0271f}.badge.LOW{background:var(--surface-2)}.badge.MEDIUM{background:#fef2e2;color:#b26a06}.badge.HIGH,.badge.CRITICAL{background:#fdecec;color:#c0271f}.shell{display:grid;grid-template-columns:210px 1fr;min-height:100vh}.sidebar{border-right:1px solid var(--border);background:var(--surface);padding:16px 10px;display:flex;flex-direction:column;gap:3px}.sidebar .brand{font-weight:700;padding:6px 10px 14px}.sidebar a{padding:8px 10px;border-radius:7px;color:var(--text-dim);font-weight:500}.sidebar a:hover{background:var(--surface-2);color:var(--text)}.sidebar a.active{background:var(--primary-dim);color:var(--primary-strong);font-weight:600;box-shadow:inset 2px 0 0 var(--primary)}.content{padding:24px;max-width:1200px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.kpi{padding:15px}.kpi .n{font-size:24px;font-weight:680}.kpi .l{color:var(--text-dim);font-size:12px}table.tbl{width:100%;border-collapse:collapse}table.tbl th{text-align:left;font-size:11px;text-transform:uppercase;color:var(--text-faint);padding:9px 11px;border-bottom:1px solid var(--border)}table.tbl td{padding:10px 11px;border-bottom:1px solid var(--border)}.auth-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}label.field span{display:block;font-size:12px;color:var(--text-dim);margin:10px 0 5px}.toast-wrap{position:fixed;bottom:20px;right:20px;z-index:100}.toast{background:var(--text);color:var(--bg);padding:10px 15px;border-radius:8px;font-size:13px;margin-top:8px}
