/** * SecuBox Dashboard Styles * Copyright (C) 2025 CyberMind.fr * SPDX-License-Identifier: Apache-2.0 * Theme-aware styles with dark/light mode support * Version: 0.3.0 */ /* Common colors (theme-independent) */ :root { --sb-primary: #3b82f6; --sb-primary-dark: #1e40af; --sb-success: #22c55e; --sb-warning: #f59e0b; --sb-danger: #ef4444; } /* Dark theme (default) */ :root, [data-theme="dark"] { --sb-bg: #0f172a; --sb-bg-card: #1e293b; --sb-border: #334155; --sb-text: #f1f5f9; --sb-text-muted: #94a3b8; --sb-shadow: rgba(0, 0, 0, 0.3); --sb-hover-shadow: rgba(0, 0, 0, 0.4); } /* Light theme */ [data-theme="light"] { --sb-bg: #f8fafc; --sb-bg-card: #ffffff; --sb-border: #e2e8f0; --sb-text: #0f172a; --sb-text-muted: #64748b; --sb-shadow: rgba(0, 0, 0, 0.08); --sb-hover-shadow: rgba(0, 0, 0, 0.12); } .secubox-dashboard { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } /* Stats Overview */ .secubox-stats-overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin: 20px 0; } .secubox-stat-box { background: var(--sb-bg-card); border: 1px solid var(--sb-border); border-radius: 8px; padding: 20px; display: flex; align-items: center; gap: 16px; transition: all 0.2s ease; } .secubox-stat-box:hover { transform: translateY(-2px); box-shadow: 0 4px 12px var(--sb-shadow); } .secubox-stat-icon { font-size: 36px; line-height: 1; } .secubox-stat-content { flex: 1; } .secubox-stat-value { font-size: 32px; font-weight: 700; color: var(--sb-text); line-height: 1; margin-bottom: 4px; } .secubox-stat-label { font-size: 12px; color: var(--sb-text-muted); text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; } /* SecuBox brand colors for each module */ .sb-color-crowdsec { --module-color: #22c55e; } .sb-color-netdata { --module-color: #00ab44; } .sb-color-netifyd { --module-color: #8b5cf6; } .sb-color-wireguard { --module-color: #06b6d4; } .sb-color-network-modes { --module-color: #f97316; } .sb-color-client-guardian { --module-color: #ef4444; } .sb-color-system-hub { --module-color: #6366f1; } .sb-color-cdn-cache { --module-color: #06b6d4; } /* System Health Section */ .secubox-health-section { margin: 20px 0; padding: 20px; background: var(--sb-bg-card); border-radius: 8px; border: 1px solid var(--sb-border); } .secubox-health-section h3 { margin: 0 0 16px 0; color: var(--sb-text); font-size: 18px; font-weight: 600; } .secubox-health-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; } .secubox-gauge { display: flex; flex-direction: column; align-items: center; padding: 16px; background: rgba(15, 23, 42, 0.5); border-radius: 8px; } .secubox-gauge-label { font-size: 14px; font-weight: 600; color: var(--sb-text); margin-bottom: 8px; } .secubox-gauge-chart { margin: 8px 0; } .secubox-gauge-details { font-size: 12px; color: var(--sb-text-muted); text-align: center; margin-top: 8px; } /* Quick Actions Section */ .secubox-quick-actions { margin: 20px 0; padding: 20px; background: var(--sb-bg-card); border-radius: 8px; border: 1px solid var(--sb-border); } .secubox-quick-actions h3 { margin: 0 0 16px 0; color: var(--sb-text); font-size: 18px; font-weight: 600; } .secubox-actions-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; } .secubox-quick-actions .cbi-button-action { padding: 12px 16px; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Alerts Section */ .secubox-alerts-section { margin: 20px 0; padding: 20px; background: var(--sb-bg-card); border-radius: 8px; border: 1px solid var(--sb-border); } .secubox-alerts-section h3 { margin: 0 0 16px 0; color: var(--sb-text); font-size: 18px; font-weight: 600; } .secubox-alerts-list { display: flex; flex-direction: column; gap: 8px; } .secubox-alert { padding: 12px 16px; border-radius: 6px; border-left: 4px solid; font-size: 14px; } .secubox-alert-warning { background: rgba(245, 158, 11, 0.1); border-left-color: var(--sb-warning); color: #fbbf24; } .secubox-alert-error { background: rgba(239, 68, 68, 0.1); border-left-color: var(--sb-danger); color: #fca5a5; } .secubox-alert-info { background: rgba(59, 130, 246, 0.1); border-left-color: var(--sb-primary); color: #93c5fd; } /* Modules Section */ .secubox-modules-section { margin: 20px 0; } .secubox-modules-section h3 { margin: 0 0 16px 0; color: var(--sb-text); font-size: 18px; font-weight: 600; } .secubox-modules-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; } .secubox-module-card { background: var(--sb-bg-card); border: 1px solid var(--sb-border); border-radius: 8px; padding: 16px; transition: all 0.2s ease; display: flex; flex-direction: column; } .secubox-module-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px var(--sb-hover-shadow); border-color: var(--sb-primary); } .secubox-module-card[data-status="running"] { border-left: 4px solid var(--sb-success); } .secubox-module-card[data-status="stopped"] { border-left: 4px solid var(--sb-danger); } .secubox-module-card[data-status="not-installed"] { opacity: 0.6; } .secubox-module-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .secubox-module-icon { width: 48px; height: 48px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 24px; } .secubox-module-status { font-size: 20px; font-weight: bold; } .secubox-module-body { flex: 1; margin-bottom: 12px; } .secubox-module-name { font-size: 16px; font-weight: 600; color: var(--sb-text); margin-bottom: 4px; } .secubox-module-description { font-size: 13px; color: var(--sb-text-muted); margin-bottom: 8px; line-height: 1.4; } .secubox-module-category { display: inline-block; padding: 4px 8px; background: rgba(59, 130, 246, 0.2); color: var(--sb-primary); border-radius: 4px; font-size: 11px; text-transform: uppercase; font-weight: 600; letter-spacing: 0.5px; } .secubox-module-footer { padding-top: 12px; border-top: 1px solid var(--sb-border); } .secubox-module-footer .cbi-button-link { width: 100%; text-align: center; padding: 8px; } .secubox-not-installed { display: block; text-align: center; color: var(--sb-text-muted); font-size: 13px; font-style: italic; } /* Responsive Design */ @media (max-width: 768px) { .secubox-health-grid { grid-template-columns: repeat(2, 1fr); } .secubox-actions-grid { grid-template-columns: 1fr; } .secubox-modules-grid { grid-template-columns: 1fr; } }