*,*:before,*:after{box-sizing:border-box}:root{--primary: #6366f1;--primary-dark: #4f46e5;--danger: #ef4444;--success: #22c55e;--warning: #f59e0b;--sidebar-bg: #0f172a;--sidebar-text: #94a3b8;--sidebar-active: #e2e8f0;--bg: #f8fafc;--card-bg: #ffffff;--border: #e2e8f0;--text: #334155;--text-muted: #64748b;--heading: #0f172a;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px}body{margin:0;background:var(--bg);color:var(--text)}#root{width:100%;min-height:100vh;text-align:left;border:none;margin:0;display:block}h1,h2,h3,h4{margin:0;color:var(--heading);font-weight:600}p{margin:0}a{color:var(--primary);text-decoration:none}button{cursor:pointer;font-family:inherit;font-size:14px}input,select,textarea{font-family:inherit;font-size:14px}.layout{display:flex;min-height:100vh}.sidebar{width:240px;flex-shrink:0;background:var(--sidebar-bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:100;overflow-y:auto}.sidebar-logo{padding:20px 16px;border-bottom:1px solid rgba(255,255,255,.08);font-size:18px;font-weight:700;color:#e2e8f0;letter-spacing:-.5px}.sidebar-logo span{color:var(--primary)}.sidebar-nav{padding:12px 8px;flex:1}.sidebar-section{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#475569;padding:12px 8px 4px}.sidebar-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;color:var(--sidebar-text);transition:all .15s;margin-bottom:2px;text-decoration:none;font-size:13.5px}.sidebar-link:hover{background:#ffffff0f;color:var(--sidebar-active)}.sidebar-link.active{background:#6366f133;color:#a5b4fc}.sidebar-link svg{width:16px;height:16px;flex-shrink:0}.main-content{margin-left:240px;flex:1;min-height:100vh;display:flex;flex-direction:column}.topbar{height:56px;border-bottom:1px solid var(--border);background:var(--card-bg);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:50}.topbar-title{font-size:16px;font-weight:600;color:var(--heading)}.topbar-actions{display:flex;align-items:center;gap:12px}.page-content{padding:24px;flex:1}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:10px}.card-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:15px;font-weight:600;color:var(--heading)}.card-body{padding:20px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat-card{padding:20px;border-radius:10px;background:var(--card-bg);border:1px solid var(--border)}.stat-label{font-size:12px;color:var(--text-muted);font-weight:500;margin-bottom:8px}.stat-value{font-size:28px;font-weight:700;color:var(--heading)}.stat-sub{font-size:12px;color:var(--text-muted);margin-top:4px}.stat-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:6px;font-weight:500;border:1px solid transparent;transition:all .15s;font-size:13.5px;line-height:1}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:#fff;color:var(--text);border-color:var(--border)}.btn-secondary:hover{background:var(--bg)}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger:hover{background:#dc2626}.btn-sm{padding:5px 10px;font-size:12.5px}.btn svg{width:14px;height:14px}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:500;color:var(--heading);margin-bottom:6px}.form-control{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);outline:none;transition:border-color .15s}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-row{display:grid;gap:16px}.form-row.cols-2{grid-template-columns:1fr 1fr}.form-row.cols-3{grid-template-columns:1fr 1fr 1fr}.form-hint{font-size:12px;color:var(--text-muted);margin-top:4px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{font-size:11.5px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;padding:10px 16px;border-bottom:1px solid var(--border);text-align:left;background:var(--bg)}td{padding:12px 16px;border-bottom:1px solid var(--border);font-size:13.5px}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg)}.table-actions{display:flex;gap:6px}.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:20px;font-size:11.5px;font-weight:500}.badge-success{background:#dcfce7;color:#15803d}.badge-danger{background:#fee2e2;color:#dc2626}.badge-warning{background:#fef3c7;color:#d97706}.badge-info{background:#e0f2fe;color:#0369a1}.badge-gray{background:#f1f5f9;color:#475569}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.login-card{background:#fff;border-radius:12px;padding:40px;width:400px;box-shadow:0 20px 60px #0003}.login-logo{text-align:center;margin-bottom:28px}.login-logo h1{font-size:28px;color:var(--primary)}.login-logo p{color:var(--text-muted);font-size:14px;margin-top:4px}.alert{padding:12px 16px;border-radius:8px;font-size:13.5px;margin-bottom:16px}.alert-error{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5}.alert-success{background:#dcfce7;color:#15803d;border:1px solid #86efac}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:20px}.tab{padding:10px 18px;font-size:13.5px;font-weight:500;color:var(--text-muted);border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.tab:hover{color:var(--heading)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal{background:#fff;border-radius:12px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:0 25px 50px #00000040}.modal-header{padding:20px 24px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:16px;font-weight:600}.modal-body{padding:24px}.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}.modal-close{background:none;border:none;padding:4px;color:var(--text-muted);border-radius:4px;display:flex}.modal-close:hover{color:var(--heading);background:var(--bg)}.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}.chart-card{padding:0}.chart-header{padding:16px 20px 8px}.chart-body{padding:0 8px 8px}.monitor-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.monitor-stat{padding:20px;background:var(--card-bg);border:1px solid var(--border);border-radius:10px}.monitor-label{font-size:12px;color:var(--text-muted);font-weight:500;margin-bottom:4px}.monitor-value{font-size:32px;font-weight:700;color:var(--heading)}.monitor-unit{font-size:14px;color:var(--text-muted)}.progress-bar-wrap{height:6px;background:var(--border);border-radius:3px;margin-top:8px;overflow:hidden}.progress-bar{height:100%;border-radius:3px;transition:width .5s}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.text-muted{color:var(--text-muted);font-size:13px}.text-sm{font-size:12.5px}.font-mono{font-family:ui-monospace,monospace;font-size:12.5px}.empty-state{text-align:center;padding:48px 24px;color:var(--text-muted)}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-center{display:flex;align-items:center;justify-content:center;padding:48px}
