:root { --bg-dark: #05070a; --panel-bg: rgba(10, 11, 30, 0.7); --neon-cyan: #00f3ff; --neon-magenta: #ff00ff; --text-main: #e0e0e0; --status-online: #00ff88; --status-offline: #ff4d4d; --font-inter: 'Inter', sans-serif; } body { background-color: var(--bg-dark); color: var(--text-main); font-family: var(--font-inter); margin: 0; overflow-x: hidden; min-height: 100vh; } /* Background Stars/Sparkle Effect */ body::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 50% 50%, rgba(0, 243, 255, 0.05) 0%, transparent 70%), url('data:image/svg+xml,'); background-repeat: repeat; z-index: -1; animation: twinkle 5s linear infinite; } @keyframes twinkle { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.5; } } .navbar { background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(10px); border-bottom: 1px solid var(--neon-cyan); box-shadow: 0 0 15px rgba(0, 243, 255, 0.3); } .navbar-brand { font-weight: 700; color: var(--neon-cyan) !important; text-transform: uppercase; letter-spacing: 2px; text-shadow: 0 0 10px var(--neon-cyan); } .card { background: var(--panel-bg); border: 1px solid rgba(0, 243, 255, 0.2); border-radius: 12px; backdrop-filter: blur(15px); transition: transform 0.3s ease, box-shadow 0.3s ease; } .card:hover { transform: translateY(-5px); box-shadow: 0 0 20px rgba(0, 243, 255, 0.2); } .neon-btn { background: transparent; border: 1px solid var(--neon-cyan); color: var(--neon-cyan); padding: 8px 20px; border-radius: 50px; text-transform: uppercase; font-size: 0.8rem; font-weight: 600; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 243, 255, 0.2); } .neon-btn:hover { background: var(--neon-cyan); color: var(--bg-dark); box-shadow: 0 0 20px var(--neon-cyan); } .monitor-card { padding: 1.5rem; } .status-indicator { width: 12px; height: 12px; border-radius: 50%; display: inline-block; margin-right: 8px; box-shadow: 0 0 8px currentColor; } .status-online { color: var(--status-online); background-color: var(--status-online); } .status-offline { color: var(--status-offline); background-color: var(--status-offline); } .status-unknown { color: #888; background-color: #888; } .form-control { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(0, 243, 255, 0.2); color: white; } .form-control:focus { background: rgba(255, 255, 255, 0.1); border-color: var(--neon-cyan); color: white; box-shadow: 0 0 10px rgba(0, 243, 255, 0.3); } .stats-value { font-size: 1.5rem; font-weight: 700; color: var(--neon-cyan); } .stats-label { font-size: 0.75rem; text-transform: uppercase; opacity: 0.7; } /* Battery Bars */ .health-bars { display: flex; gap: 2px; height: 24px; align-items: flex-end; } .health-segment { flex: 1; height: 100%; border-radius: 1px; min-width: 3px; transition: all 0.3s ease; } .segment-up { background: var(--status-online); box-shadow: 0 0 5px var(--status-online); } .segment-down { background: var(--status-offline); box-shadow: 0 0 5px var(--status-offline); } .segment-none { background: rgba(255, 255, 255, 0.1); } /* Candlestick Realtime Chart */ .sparkline-container { width: 100%; height: 60px; margin: 15px 0; position: relative; border-bottom: 1px solid rgba(0, 243, 255, 0.1); } .sparkline-canvas { width: 100%; height: 100%; } .pulse-mini { animation: pulse-mini 1s infinite alternate; } @keyframes pulse-mini { from { opacity: 1; transform: scale(1); } to { opacity: 0.7; transform: scale(0.95); } } .pulse-dot { display: inline-block; width: 8px; height: 8px; background-color: #ff00ff; border-radius: 50%; margin-right: 5px; box-shadow: 0 0 8px #ff00ff; animation: pulse-dot 1s infinite; } @keyframes pulse-dot { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.5); opacity: 0.5; } 100% { transform: scale(1); opacity: 1; } } .neon-glow-green { filter: drop-shadow(0 0 5px var(--status-online)); } .neon-glow-red { filter: drop-shadow(0 0 5px var(--status-offline)); }