:root{--color-primary: #3B82F6;--color-secondary: #06B6D4;--color-accent: #F59E0B;--color-bg: #0A0F1E;--color-sidebar: #0F1629;--color-text: #F1F5F9;--radius: 8px;--font-family: "DM Sans", system-ui, -apple-system, sans-serif}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{margin:0;font-weight:700}p{margin:0}button{font-family:var(--font-family)}a{color:var(--color-primary);text-decoration:none}#root{min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#fff3}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius);border:none;font-family:var(--font-family);font-size:13.5px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;text-decoration:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(1.12)}.btn-secondary{background:#ffffff12;color:var(--color-text);border:1px solid rgba(255,255,255,.1)}.btn-secondary:hover:not(:disabled){background:#ffffff1f}.btn-danger{background:#ef444426;color:#f87171;border:1px solid rgba(239,68,68,.25)}.btn-danger:hover:not(:disabled){background:#ef444440}.btn-ghost{background:none;color:#f1f5f999;border:1px solid rgba(255,255,255,.08)}.btn-ghost:hover:not(:disabled){background:#ffffff0f;color:var(--color-text)}.btn-sm{padding:5px 12px;font-size:12px}.btn-icon{padding:7px}.form-field{margin-bottom:16px}.label{display:block;font-size:12px;font-weight:600;color:#f1f5f98c;margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}.input{width:100%;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);color:var(--color-text);font-family:var(--font-family);font-size:14px;padding:9px 12px;transition:border-color .15s,background .15s;outline:none}.input::placeholder{color:#f1f5f940}.input:focus{border-color:#3b82f680;background:#ffffff12}.input:disabled{opacity:.4;cursor:not-allowed}select.input{cursor:pointer}textarea.input{resize:vertical;min-height:80px}.tabs{display:flex;gap:2px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:calc(var(--radius) + 2px);padding:3px}.tab-btn{flex:1;padding:7px 14px;border:none;border-radius:var(--radius);background:none;color:#f1f5f973;font-family:var(--font-family);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.tab-btn:hover{color:#f1f5f9cc}.tab-btn.active{background:#3b82f633;color:var(--color-text);font-weight:600;box-shadow:inset 0 0 0 1px #3b82f64d}.card{background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:calc(var(--radius) + 4px);padding:20px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-title{font-size:14px;font-weight:700}.section-title{font-size:11px;font-weight:700;color:#f1f5f959;text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px}.table-wrap{overflow-x:auto;border-radius:calc(var(--radius) + 4px);border:1px solid rgba(255,255,255,.07)}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{background:#ffffff08;padding:10px 14px;text-align:left;font-size:11px;font-weight:700;color:#f1f5f959;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid rgba(255,255,255,.07);white-space:nowrap}tbody tr{border-bottom:1px solid rgba(255,255,255,.04);transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#ffffff08}tbody td{padding:11px 14px;vertical-align:middle}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:600;white-space:nowrap}.badge-green{background:#22c55e1f;color:#4ade80}.badge-yellow{background:#eab3081f;color:#facc15}.badge-red{background:#ef44441f;color:#f87171}.badge-blue{background:#3b82f61f;color:#60a5fa}.badge-gray{background:#ffffff12;color:#f1f5f980}.badge-purple{background:#a855f71f;color:#c084fc}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.15);border-top-color:var(--color-primary);border-radius:50%;animation:spin .65s linear infinite;display:inline-block;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.alert-bar{padding:10px 14px;border-radius:var(--radius);font-size:13px;font-weight:500}.alert-bar-error{background:#ef44441a;color:#fca5a5;border:1px solid rgba(239,68,68,.2)}.alert-bar-success{background:#22c55e1a;color:#86efac;border:1px solid rgba(34,197,94,.2)}.alert-bar-warning{background:#eab3081a;color:#fde68a;border:1px solid rgba(234,179,8,.2)}.alert-bar-info{background:#3b82f61a;color:#93c5fd;border:1px solid rgba(59,130,246,.2)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-title{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-bottom:2px}.page-subtitle{font-size:13px;color:#f1f5f966}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:#0f1629;border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:28px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 32px 100px #0009}.modal-title{font-size:17px;font-weight:700;margin-bottom:20px}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot.online{background:#22c55e;box-shadow:0 0 6px #22c55e80}.status-dot.warning{background:#eab308;box-shadow:0 0 6px #eab30880}.status-dot.offline{background:#ef4444;box-shadow:0 0 6px #ef444480}.status-dot.pending{background:#94a3b8}
