/* CrowdSec Dashboard - Cyberpunk Theme */ /* Neon glow effects with orange/cyan accents */ /* Theme-specific variables */ .cs-dashboard.theme-cyberpunk { --cs-bg-primary: #0a0a0f; --cs-bg-secondary: #12121a; --cs-bg-tertiary: #1a1a25; --cs-border: #2a2a3a; --cs-accent: #ff5f1f; --cs-accent-alt: #00ffff; --cs-success: #00ff88; --cs-warning: #ffaa00; --cs-danger: #ff3366; } .theme-cyberpunk { padding: var(--cs-space-lg); background: linear-gradient(135deg, #0a0a0f 0%, #12121a 50%, #0a0a0f 100%); } /* Scanline effect overlay */ .theme-cyberpunk::before { content: ''; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: repeating-linear-gradient( 0deg, rgba(0, 0, 0, 0.1) 0px, rgba(0, 0, 0, 0.1) 1px, transparent 1px, transparent 2px ); pointer-events: none; z-index: 1000; opacity: 0.3; } /* Header - Neon glow */ .theme-cyberpunk .cs-header { display: flex; justify-content: space-between; align-items: center; padding: var(--cs-space-lg); margin-bottom: var(--cs-space-xl); border-bottom: 2px solid var(--cs-accent); box-shadow: 0 2px 20px rgba(255, 95, 31, 0.3); } .theme-cyberpunk .cs-title { font-size: 24px; font-weight: 700; color: var(--cs-accent); text-shadow: 0 0 10px rgba(255, 95, 31, 0.5), 0 0 20px rgba(255, 95, 31, 0.3); display: flex; align-items: center; gap: var(--cs-space-sm); text-transform: uppercase; letter-spacing: 2px; } .theme-cyberpunk .cs-title svg { width: 32px; height: 32px; fill: var(--cs-accent); filter: drop-shadow(0 0 5px var(--cs-accent)); } .theme-cyberpunk .cs-status { display: flex; align-items: center; gap: var(--cs-space-sm); font-size: var(--cs-font-size-xs); text-transform: uppercase; letter-spacing: 1px; font-family: var(--cs-font-mono); } .theme-cyberpunk .cs-status-dot { width: 10px; height: 10px; border-radius: 50%; animation: cs-pulse 1s infinite; } .theme-cyberpunk .cs-status-dot.online { background: var(--cs-success); box-shadow: 0 0 10px var(--cs-success), 0 0 20px var(--cs-success); } .theme-cyberpunk .cs-status-dot.offline { background: var(--cs-danger); box-shadow: 0 0 10px var(--cs-danger); animation: none; } /* Navigation - Glitch style */ .theme-cyberpunk .cs-nav { display: flex; gap: var(--cs-space-xs); margin-bottom: var(--cs-space-xl); padding-bottom: var(--cs-space-sm); border-bottom: 1px solid var(--cs-border); } .theme-cyberpunk .cs-nav a { color: var(--cs-text-muted); text-decoration: none; padding: var(--cs-space-sm) var(--cs-space-lg); font-size: var(--cs-font-size-sm); font-family: var(--cs-font-mono); text-transform: uppercase; letter-spacing: 1px; transition: all var(--cs-transition-fast); border: 1px solid transparent; } .theme-cyberpunk .cs-nav a:hover { color: var(--cs-accent-alt); border-color: var(--cs-accent-alt); text-shadow: 0 0 5px var(--cs-accent-alt); } .theme-cyberpunk .cs-nav a.active { color: var(--cs-accent); border-color: var(--cs-accent); background: rgba(255, 95, 31, 0.1); box-shadow: 0 0 10px rgba(255, 95, 31, 0.3); } /* Stats - Holographic cards */ .theme-cyberpunk .cs-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--cs-space-md); margin-bottom: var(--cs-space-xl); } .theme-cyberpunk .cs-stat { background: linear-gradient(135deg, var(--cs-bg-secondary), var(--cs-bg-tertiary)); border: 1px solid var(--cs-accent); border-radius: var(--cs-radius-sm); padding: var(--cs-space-lg); text-align: center; position: relative; overflow: hidden; } .theme-cyberpunk .cs-stat::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 95, 31, 0.1), transparent); animation: scan 3s linear infinite; } @keyframes scan { to { left: 100%; } } .theme-cyberpunk .cs-stat-value { font-size: 32px; font-weight: 700; font-family: var(--cs-font-mono); color: var(--cs-accent-alt); text-shadow: 0 0 10px var(--cs-accent-alt); } .theme-cyberpunk .cs-stat-label { font-size: var(--cs-font-size-xs); text-transform: uppercase; letter-spacing: 1px; color: var(--cs-text-muted); margin-top: var(--cs-space-sm); font-family: var(--cs-font-mono); } .theme-cyberpunk .cs-stat.danger .cs-stat-value { color: var(--cs-danger); text-shadow: 0 0 10px var(--cs-danger); } .theme-cyberpunk .cs-stat.warning .cs-stat-value { color: var(--cs-warning); text-shadow: 0 0 10px var(--cs-warning); } .theme-cyberpunk .cs-stat.success .cs-stat-value { color: var(--cs-success); text-shadow: 0 0 10px var(--cs-success); } /* Cards - Terminal style */ .theme-cyberpunk .cs-card { background: var(--cs-bg-secondary); border: 1px solid var(--cs-border); border-radius: var(--cs-radius-sm); margin-bottom: var(--cs-space-lg); } .theme-cyberpunk .cs-card-header { padding: var(--cs-space-sm) var(--cs-space-md); background: var(--cs-bg-primary); border-bottom: 1px solid var(--cs-accent); font-size: var(--cs-font-size-sm); font-weight: 600; font-family: var(--cs-font-mono); text-transform: uppercase; letter-spacing: 1px; color: var(--cs-accent); display: flex; justify-content: space-between; align-items: center; } .theme-cyberpunk .cs-card-header::before { content: '>'; margin-right: var(--cs-space-sm); color: var(--cs-accent-alt); } .theme-cyberpunk .cs-card-body { padding: var(--cs-space-md); font-family: var(--cs-font-mono); } /* Tables - Matrix style */ .theme-cyberpunk .cs-table { width: 100%; border-collapse: collapse; font-size: var(--cs-font-size-sm); font-family: var(--cs-font-mono); } .theme-cyberpunk .cs-table th { text-align: left; padding: var(--cs-space-sm); background: var(--cs-bg-primary); color: var(--cs-accent); font-weight: 500; font-size: var(--cs-font-size-xs); text-transform: uppercase; letter-spacing: 1px; border-bottom: 1px solid var(--cs-accent); } .theme-cyberpunk .cs-table td { padding: var(--cs-space-sm); border-bottom: 1px solid var(--cs-border); color: var(--cs-accent-alt); } .theme-cyberpunk .cs-table tr:hover td { background: rgba(0, 255, 255, 0.05); text-shadow: 0 0 5px var(--cs-accent-alt); } /* Grid layouts */ .theme-cyberpunk .cs-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cs-space-lg); } @media (max-width: 900px) { .theme-cyberpunk .cs-grid-2 { grid-template-columns: 1fr; } } /* Buttons - Neon */ .theme-cyberpunk .cs-btn { background: transparent; border: 1px solid var(--cs-accent); color: var(--cs-accent); padding: 6px 16px; font-size: var(--cs-font-size-sm); font-family: var(--cs-font-mono); text-transform: uppercase; letter-spacing: 1px; cursor: pointer; transition: all var(--cs-transition-fast); } .theme-cyberpunk .cs-btn:hover { background: var(--cs-accent); color: #000; box-shadow: 0 0 15px rgba(255, 95, 31, 0.5); } /* Empty state */ .theme-cyberpunk .cs-empty { text-align: center; padding: var(--cs-space-xl); color: var(--cs-text-muted); font-family: var(--cs-font-mono); } .theme-cyberpunk .cs-empty-icon { font-size: 40px; margin-bottom: var(--cs-space-md); filter: drop-shadow(0 0 10px var(--cs-accent)); }