/** * 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; } /* SecuBox Help Bonus Page */ .secubox-help-page { display: flex; flex-direction: column; gap: 20px; } .secubox-help-hero { display: flex; gap: 32px; align-items: center; background: linear-gradient(135deg, #312e81 0%, #0f172a 60%, #1e293b 100%); border: 1px solid rgba(255, 255, 255, 0.08); box-shadow: 0 20px 60px rgba(15, 23, 42, 0.45); color: #eef2ff; } .secubox-help-hero-text { flex: 1; } .secubox-help-eyebrow { display: inline-flex; align-items: center; gap: 6px; text-transform: uppercase; letter-spacing: 0.2em; font-size: 11px; font-weight: 600; color: rgba(255, 255, 255, 0.6); } .secubox-help-subtitle { color: rgba(255, 255, 255, 0.9); font-size: 15px; margin: 12px 0 0 0; } .secubox-help-hero-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-top: 20px; } .secubox-help-hero-stat { background: rgba(15, 23, 42, 0.55); border-radius: 10px; padding: 14px 16px; border: 1px solid rgba(255, 255, 255, 0.1); } .secubox-help-hero-stat-icon { font-size: 22px; margin-bottom: 6px; } .secubox-help-hero-stat-value { display: block; font-size: 20px; font-weight: 700; } .secubox-help-hero-stat-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.04em; color: rgba(255, 255, 255, 0.7); } .secubox-help-hero-actions { display: flex; flex-direction: column; gap: 12px; min-width: 230px; } .secubox-help-cta { background: linear-gradient(135deg, #22c55e 0%, #15803d 100%) !important; box-shadow: 0 10px 30px rgba(21, 128, 61, 0.45); } .secubox-card-title-row { display: flex; justify-content: space-between; align-items: center; gap: 16px; } .secubox-card-hint { font-size: 13px; color: var(--sb-text-muted); } .secubox-help-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-top: 16px; } .secubox-help-card { background: var(--sb-bg-card); border: 1px solid var(--sb-border); border-radius: 12px; padding: 18px; display: flex; flex-direction: row; gap: 16px; align-items: center; text-decoration: none; color: inherit; transition: all 0.2s ease; } .secubox-help-card-body { flex: 1; } .secubox-help-card:hover { border-color: var(--sb-primary); transform: translateY(-2px); box-shadow: 0 12px 24px var(--sb-hover-shadow); } .secubox-help-card-icon { font-size: 28px; width: 48px; height: 48px; border-radius: 10px; background: rgba(99, 102, 241, 0.12); display: flex; align-items: center; justify-content: center; } .secubox-help-card-title { margin: 0; font-size: 16px; font-weight: 600; color: var(--sb-text); } .secubox-help-card-text { margin: 4px 0 8px 0; font-size: 13px; color: var(--sb-text-muted); } .secubox-help-card-link { font-size: 12px; font-weight: 600; color: var(--sb-primary); text-transform: uppercase; letter-spacing: 0.08em; } .secubox-help-support-grid { margin-top: 16px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; } .secubox-help-support-item { border: 1px dashed var(--sb-border); border-radius: 10px; padding: 16px; background: rgba(99, 102, 241, 0.04); } .secubox-help-support-icon { font-size: 24px; margin-bottom: 8px; } .secubox-help-support-title { font-weight: 600; margin-bottom: 6px; color: var(--sb-text); } .secubox-help-support-text { margin: 0; font-size: 13px; color: var(--sb-text-muted); line-height: 1.5; } .secubox-help-support-actions { margin-top: 20px; display: flex; flex-wrap: wrap; gap: 12px; } .secubox-help-footer { background: var(--sb-bg-card); border: 1px solid var(--sb-border); border-radius: 14px; padding: 20px; text-align: center; } .secubox-help-footer-text { font-size: 14px; color: var(--sb-text-muted); margin-bottom: 10px; } .secubox-help-footer-links { display: inline-flex; justify-content: center; gap: 8px; color: var(--sb-primary); font-weight: 600; } .secubox-help-footer-links .sep { color: var(--sb-text-muted); } /* Settings preference showcase */ .secubox-pref-wrapper { margin: 20px 0 30px; padding: 22px; border-radius: 18px; background: linear-gradient(135deg, rgba(99, 102, 241, 0.14), rgba(14, 165, 233, 0.08)) border-box, var(--sb-bg-card); border: 1px solid rgba(99, 102, 241, 0.3); box-shadow: 0 20px 45px rgba(14, 19, 34, 0.45); } .secubox-pref-header { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 12px; } .secubox-pref-kicker { text-transform: uppercase; letter-spacing: 0.2em; font-size: 11px; margin: 0 0 6px; color: var(--sb-text-muted); } .secubox-pref-title { margin: 0; font-size: 20px; color: var(--sb-text); } .secubox-pref-subtitle { margin: 6px 0 0; color: var(--sb-text-muted); } .secubox-pref-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-top: 20px; } .secubox-pref-card { padding: 16px; border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.05); background: rgba(15, 23, 42, 0.55); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02); min-height: 150px; transition: transform 0.2s ease, border-color 0.2s ease; } .secubox-pref-card:hover { transform: translateY(-2px); border-color: rgba(99, 102, 241, 0.4); } .secubox-pref-card.success { border-color: rgba(34, 197, 94, 0.3); } .secubox-pref-card.danger { border-color: rgba(239, 68, 68, 0.35); } .secubox-pref-card.info { border-color: rgba(14, 165, 233, 0.35); } .secubox-pref-icon { font-size: 26px; line-height: 1; margin-bottom: 12px; } .secubox-pref-label { font-size: 13px; text-transform: uppercase; letter-spacing: 0.3em; color: var(--sb-text-muted); margin: 0 0 6px; } .secubox-pref-value { margin: 0; font-size: 20px; font-weight: 600; color: var(--sb-text); } .secubox-pref-detail { margin: 8px 0 0; color: var(--sb-text-muted); font-size: 13px; line-height: 1.5; } .theme-preview-panel { border-radius: 12px; border: 1px solid rgba(148, 163, 184, 0.3); background: rgba(15, 23, 42, 0.45); } /* Settings form details */ .secubox-settings-page .cbi-map { border: none; padding: 0; margin: 0; } .secubox-settings-page .cbi-section { margin: 0 0 28px; padding: 18px 20px; border-radius: 18px; background: rgba(15, 23, 42, 0.6); border: 1px solid rgba(255, 255, 255, 0.04); box-shadow: 0 10px 30px rgba(8, 12, 20, 0.4); } .secubox-settings-page .cbi-section legend, .secubox-settings-page .cbi-section h3 { margin: 0 0 18px; font-size: 18px; color: var(--sb-text); font-weight: 600; } .secubox-settings-page .cbi-value { border-bottom: 1px solid rgba(255, 255, 255, 0.04); padding: 14px 0; } .secubox-settings-page .cbi-value:last-child { border-bottom: none; } .secubox-settings-page .cbi-value-title label, .secubox-settings-page .cbi-value-title { color: var(--sb-text); font-weight: 500; font-size: 15px; } .secubox-settings-page .cbi-value-field { color: var(--sb-text-muted); } .secubox-settings-page select, .secubox-settings-page input[type="text"], .secubox-settings-page input[type="number"] { width: 100%; background: rgba(15, 23, 42, 0.8); color: var(--sb-text); border: 1px solid rgba(99, 102, 241, 0.3); border-radius: 10px; padding: 10px 12px; transition: border-color 0.2s ease, box-shadow 0.2s ease; } .secubox-settings-page select:focus, .secubox-settings-page input[type="text"]:focus, .secubox-settings-page input[type="number"]:focus { outline: none; border-color: var(--sb-primary); box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.25); } .secubox-settings-page .cbi-section-descr, .secubox-settings-page .cbi-value-description { color: var(--sb-text-muted); font-size: 13px; } /* 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; } .secubox-help-hero { flex-direction: column; text-align: center; } .secubox-help-hero-actions { width: 100%; flex-direction: row; justify-content: center; } .secubox-help-card { flex-direction: column; text-align: center; } .secubox-help-support-actions { justify-content: center; } }