@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";
@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap";
:root{--bg-primary:#08090a;--bg-secondary:#0d0e10;--bg-elevated:#121315;--bg-surface:#ffffff07;--bg-surface-hover:#ffffff0b;--text-primary:#f7f8f8;--text-secondary:#8a8f98;--text-tertiary:#62666d;--text-muted:#4a4d53;--accent:#5e6ad2;--accent-hover:#6e79d6;--accent-glow:#5e6ad224;--emerald:#4cb782;--emerald-glow:#4cb7821a;--amber:#f2c94c;--amber-glow:#f2c94c1a;--rose:#eb5757;--rose-glow:#eb57571a;--border:#ffffff0e;--border-hover:#ffffff17;--border-strong:#ffffff21;--border-accent:#5e6ad259;--indigo:#818cf8;--indigo-glow:#818cf826;--log-mqtt:#a78bfa;--log-camera:#f472b6;--log-upload:#38bdf8;--log-ota:var(--amber);--log-system:#94a3b8;--media-bg:#000;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono","Cascadia Code",monospace;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:12px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--text-xs:11px;--text-sm:12px;--text-base:13px;--text-md:14px;--text-lg:16px;--shadow-sm:0 1px 2px #0003;--shadow-md:0 4px 12px #00000040;--shadow-lg:0 8px 32px #00000073;--shadow-glow:0 0 0 3px var(--accent-glow);--transition-fast:.1s cubic-bezier(.25,.1,.25,1);--transition-base:.14s cubic-bezier(.25,.1,.25,1);--transition-slow:.24s cubic-bezier(.25,.1,.25,1)}
*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scrollbar-color:var(--border-hover)transparent;scrollbar-width:thin}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}body{background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.5}.app-container{max-width:1440px;padding:var(--space-5)var(--space-5);margin:0 auto}@media (max-width:768px){.app-container{padding:var(--space-4)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.5}}
