:root{--bg-primary:#f5f0eb;--bg-secondary:#fff;--bg-sidebar:#2c2c2c;--text-primary:#1a1a1a;--text-secondary:#666;--text-sidebar:#e0e0e0;--accent:#e85d2a;--accent-hover:#d14e1f;--status-healthy:#2ecc71;--status-warning:#f39c12;--status-blocked:#e74c3c;--status-unknown:#95a5a6;--status-skip:#bdc3c7;--font-ui:"Inter", -apple-system, sans-serif;--font-data:"JetBrains Mono", "Fira Code", monospace;--sidebar-width:200px;--sidebar-collapsed:60px;--topbar-height:48px}*{box-sizing:border-box}body{font-family:var(--font-ui);background:var(--bg-primary);color:var(--text-primary);margin:0}.app-layout{grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--topbar-height) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--bg-sidebar);color:var(--text-sidebar);flex-direction:column;grid-row:1/-1;height:100vh;padding:16px 0;display:flex;position:sticky;top:0;overflow-y:auto}.topbar{background:var(--bg-secondary);z-index:100;border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:sticky;top:0}.main-content{padding:24px;overflow-y:auto}.hamburger-btn{cursor:pointer;color:var(--text-primary);background:0 0;border:none;font-size:20px;display:none}@media (width<=1024px){.app-layout{grid-template-columns:var(--sidebar-collapsed) 1fr}.sidebar .nav-label{display:none}.sidebar .nav-item{justify-content:center;padding:12px 0}.sidebar .sidebar-header,.sidebar .sidebar-footer{display:none}}@media (width<=768px){.app-layout{grid-template-columns:1fr;grid-template-rows:var(--topbar-height) 1fr}.sidebar{z-index:1000;width:240px;height:100vh;display:none;position:fixed;top:0;left:0;box-shadow:4px 0 12px #0000004d}.sidebar.open{display:flex}.sidebar.open .nav-label{display:inline}.sidebar.open .sidebar-header,.sidebar.open .sidebar-footer,.hamburger-btn{display:block}.sidebar-overlay{z-index:999;background:#0006;position:fixed;inset:0}}.stat-card{background:var(--bg-secondary);border-radius:4px;padding:16px;box-shadow:0 1px 2px #00000014}.btn-primary{background:var(--accent);color:#fff;cursor:pointer;font-family:var(--font-ui);border:none;border-radius:4px;padding:8px 16px;font-size:14px;font-weight:500}.btn-primary:hover{background:var(--accent-hover)}.data-table{border-collapse:collapse;width:100%;font-family:var(--font-data);font-size:13px}.data-table th{text-align:left;border-bottom:2px solid #e0e0e0;padding:8px 12px;font-weight:600}.data-table td{border-bottom:1px solid #f0f0f0;padding:8px 12px}.status-badge{border-radius:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.status-healthy{color:#2ecc71;background:#e8f8f0}.status-warning{color:#f39c12;background:#fef5e7}.status-blocked{color:#e74c3c;background:#fdedee}.login-container{background:var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--bg-secondary);border-radius:4px;width:360px;max-width:90vw;padding:40px;box-shadow:0 1px 2px #00000014}.login-card h1{color:var(--text-primary);margin-bottom:8px;font-size:24px}.login-card p{color:var(--text-secondary);margin-bottom:24px;font-size:14px}.login-card input{box-sizing:border-box;width:100%;font-size:14px;font-family:var(--font-ui);border:1px solid #d0d0d0;border-radius:4px;margin-bottom:16px;padding:10px 12px}.login-card input:focus{border-color:var(--accent);outline:none}.login-card .error{color:var(--status-blocked);margin-bottom:12px;font-size:13px}@media (width<=768px){.main-content{padding:12px}.stat-card{padding:10px}.data-table{font-size:11px}.data-table th,.data-table td{padding:6px 8px}}
