*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-base: #e8f4fd;--bg-surface: #ffffff;--bg-elevated: #f0f7fe;--bg-card: #ffffff;--bg-hover: #e2eef8;--nav-dark: #0d1b2e;--nav-dark-2: #112240;--nav-border: #1e3a5f;--border: #c8dff0;--border-muted: #deeef8;--border-card: #cce0f0;--text-primary: #0d1b2e;--text-secondary: #2d5a8a;--text-muted: #6b9cbd;--text-nav: #e6f1fb;--text-nav-muted: #7fafd4;--blue: #1565c0;--blue-mid: #1976d2;--blue-light: #42a5f5;--blue-sky: #87ceeb;--blue-pale: #bbdefb;--blue-muted-bg: #e3f2fd;--green: #2e7d32;--green-light: #43a047;--green-bg: #e8f5e9;--green-border: #a5d6a7;--amber: #e65100;--amber-bg: #fff3e0;--amber-border: #ffcc02;--red: #c62828;--red-light: #ef5350;--red-bg: #ffebee;--red-border: #ef9a9a;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 18px;--radius-2xl: 24px;--shadow-sm: 0 1px 4px rgba(13,27,46,.08);--shadow-md: 0 4px 16px rgba(13,27,46,.12);--shadow-lg: 0 8px 40px rgba(13,27,46,.16);--shadow-card: 0 2px 12px rgba(21,101,192,.1);--transition: .2s ease}html,body{height:100%;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-elevated)}::-webkit-scrollbar-thumb{background:var(--blue-pale);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--blue-sky)}@keyframes blink{0%,to{opacity:1}50%{opacity:.35}}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes floatUp{0%{transform:translateY(0);opacity:.7}50%{transform:translateY(-8px);opacity:1}to{transform:translateY(0);opacity:.7}}@keyframes pulse-ring{0%{transform:scale(1);opacity:.8}to{transform:scale(2.4);opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes dashDraw{to{stroke-dashoffset:0}}@keyframes nodePulse{0%,to{r:4;opacity:.9}50%{r:6;opacity:1}}@keyframes dataFlow{0%{stroke-dashoffset:60;opacity:0}20%{opacity:1}to{stroke-dashoffset:0;opacity:0}}@keyframes rackBlink{0%,to{fill:#1565c0;opacity:.8}50%{fill:#42a5f5;opacity:1}}@keyframes scanLine{0%{transform:translateY(0);opacity:.6}to{transform:translateY(180px);opacity:0}}
