:root{--bg:#0b0f17;--panel:#0f1724;--card:#131c2c;--text:#e5e7eb;--muted:#9aa4b2;--accent:#60a5fa;--danger:#ef4444}*{box-sizing:border-box}body{color:var(--text);background:linear-gradient(#0b0f17 0%,#0e1422 100%);margin:0;font-family:Inter,Poppins,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.dashboard-container{max-width:1200px;margin:0 auto;padding:24px}.dashboard-header{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:14px;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.dashboard-title{align-items:center;gap:10px;margin:0;font-size:22px;display:flex}.system-status{gap:16px;margin-top:6px;display:flex}.status-dot{background:var(--accent);border-radius:50%;width:10px;height:10px;box-shadow:0 0 8px rgba(96,165,250,.7)}.refresh-btn{color:var(--text);cursor:pointer;background:#18243a;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:8px 10px}.dashboard-body{grid-template-columns:300px 1fr;gap:16px;margin-top:16px;display:grid}.control-panel{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:14px}.panel-section+.panel-section{margin-top:16px}.panel-section h3{color:var(--muted);margin:0 0 10px;font-size:14px;font-weight:600}.toggle-group{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.toggle-option{cursor:pointer;background:#162133;border:1px solid rgba(255,255,255,.06);border-radius:10px;flex-direction:column;align-items:center;gap:6px;padding:10px;display:flex}.toggle-option span{color:var(--muted);font-size:12px}.toggle-ring{display:none}.metric-card{background:#162133;border:1px solid rgba(255,255,255,.06);border-radius:12px;align-items:center;gap:10px;padding:10px;display:flex}.metric-card+.metric-card{margin-top:10px}.metric-icon{border-radius:8px;place-items:center;width:36px;height:36px;display:grid}.metric-value{font-size:20px;font-weight:700}.metric-label{color:var(--muted);font-size:12px}.main-content{flex-direction:column;gap:16px;display:flex}.graph-section,.table-section{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:14px}.graph-container{height:320px;position:relative}.table-container{border:1px solid rgba(255,255,255,.06);border-radius:10px;overflow:auto}.events-table{border-collapse:collapse;width:100%;font-size:14px}.events-table th,.events-table td{text-align:left;padding:10px 12px}.events-table thead th{color:var(--muted);background:#0f1724;font-weight:600;position:-webkit-sticky;position:sticky;top:0}.events-table tbody tr{border-top:1px solid rgba(255,255,255,.06)}.events-table tbody tr.malicious{background:rgba(239,68,68,.06)}.log-viewer{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:14px;margin-top:16px}.log-header{justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.log-content{border-top:1px solid rgba(255,255,255,.06);padding:10px 14px}.log-entry{color:var(--muted);gap:8px;font-size:13px;display:flex}:root{--bg-primary:#fff;--bg-secondary:#f9fafb;--bg-tertiary:#f3f4f6;--neon-green:#10b981;--neon-red:#ef4444;--electric-blue:#3b82f6;--neon-purple:#8b5cf6;--text-primary:#111827;--text-secondary:#4b5563;--text-tertiary:#6b7280;--grid-color:#e5e7eb;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.1);--font-primary:"Poppins",sans-serif;--font-secondary:"Inter",sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-primary);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;position:relative;overflow-x:hidden}.dashboard-container{z-index:10;flex-direction:column;min-height:100vh;display:flex;position:relative}.background-effects,.particle{display:none}@keyframes float{0%{opacity:0;transform:translateY(100vh)translate(0)}10%{opacity:.7}90%{opacity:.7}to{opacity:0;transform:translateY(-100px)translate(100px)}}.dashboard-header{background:var(--bg-primary);border-bottom:2px solid var(--grid-color);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;padding:1.5rem 2rem;display:flex;position:relative}.dashboard-header:before{content:"";background:linear-gradient(90deg,var(--neon-green),var(--electric-blue),var(--neon-purple));height:3px;position:absolute;top:0;left:0;right:0}@keyframes pulse-gradient{0%,to{opacity:.5}50%{opacity:1}}.header-left{align-items:center;gap:2rem;display:flex}.dashboard-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:1.8rem;font-weight:700;display:flex}.dashboard-title i{color:var(--neon-green)}.pulse{animation:2s ease-in-out infinite pulse-icon}@keyframes pulse-icon{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.system-status{gap:1.5rem;display:flex}.status-indicator{color:var(--text-secondary);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.status-dot{border-radius:50%;width:12px;height:12px;animation:2s ease-in-out infinite status-pulse;position:relative}.status-dot.mongodb{background:var(--neon-green)}.status-dot.ml{background:var(--electric-blue)}@keyframes status-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}.header-right{align-items:center;gap:1rem;display:flex}.last-updated{color:var(--text-tertiary);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.refresh-btn{border:2px solid var(--electric-blue);color:var(--electric-blue);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem;font-size:1rem;transition:all .3s}.refresh-btn:hover{background:var(--electric-blue);color:#fff;box-shadow:var(--shadow-md);transform:rotate(180deg)}.dashboard-body{flex:1;gap:1.5rem;padding:1.5rem;display:flex}.control-panel{background:var(--bg-primary);border:1px solid var(--grid-color);width:320px;box-shadow:var(--shadow-md);border-radius:16px;height:-moz-fit-content;height:fit-content;padding:1.5rem}.panel-section{margin-bottom:2rem}.panel-section h3{color:var(--text-primary);text-transform:uppercase;letter-spacing:1px;margin-bottom:1rem;font-size:1.1rem;font-weight:600}.toggle-group{flex-direction:column;gap:.5rem;display:flex}.toggle-option{background:var(--bg-tertiary);cursor:pointer;border:2px solid transparent;border-radius:12px;align-items:center;gap:1rem;padding:1rem;transition:all .3s;display:flex;position:relative;overflow:hidden}.toggle-option:hover{border-color:var(--electric-blue);background:var(--bg-secondary);box-shadow:var(--shadow-sm)}.toggle-option.active{border-color:var(--neon-green);background:#f0fdf4}.toggle-option.active .toggle-ring{background:var(--neon-green);animation:2s ease-in-out infinite ring-pulse}.toggle-ring{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:20px;height:20px;transition:all .3s}@keyframes ring-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.toggle-option i{color:var(--text-secondary);flex-shrink:0;font-size:1.2rem}.toggle-option.active i{color:var(--neon-green)}.toggle-option span{color:var(--text-secondary);font-weight:500}.toggle-option.active span{color:var(--text-primary)}.metric-card{background:var(--bg-tertiary);border:1px solid var(--grid-color);border-radius:12px;align-items:center;gap:1rem;margin-bottom:.5rem;padding:1rem;transition:all .3s;display:flex}.metric-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.metric-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;display:flex}.metric-icon.benign{color:#059669;background:#d1fae5}.metric-icon.malicious{color:#dc2626;background:#fee2e2}.metric-icon.total{color:#2563eb;background:#dbeafe}.metric-content{flex:1}.metric-value{color:var(--text-primary);font-size:1.5rem;font-weight:700;line-height:1}.metric-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin-top:.25rem;font-size:.8rem}.health-indicators{flex-direction:column;gap:1rem;display:flex}.health-item{flex-direction:column;gap:.5rem;display:flex}.health-item span{color:var(--text-secondary);font-size:.9rem;font-weight:500}.health-bar{background:var(--bg-primary);border-radius:4px;height:8px;position:relative;overflow:hidden}.health-fill{background:linear-gradient(90deg,var(--neon-green),var(--electric-blue));border-radius:4px;height:100%;transition:width .8s;position:relative}.health-fill:after{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:2s ease-in-out infinite health-shimmer;position:absolute;top:0;bottom:0;left:0;right:0}@keyframes health-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.main-content{flex-direction:column;flex:1;gap:1.5rem;display:flex}.graph-section{background:var(--bg-primary);border:1px solid var(--grid-color);box-shadow:var(--shadow-md);border-radius:16px;flex:1;padding:1.5rem}.graph-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.graph-header h2{color:var(--text-primary);align-items:center;gap:.5rem;font-size:1.4rem;font-weight:600;display:flex}.graph-controls{gap:.5rem;display:flex}.graph-btn{border:2px solid var(--grid-color);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1rem;font-size:.9rem;font-weight:500;transition:all .3s}.graph-btn:hover{border-color:var(--electric-blue);color:var(--electric-blue);background:#eff6ff}.graph-btn.active{border-color:var(--neon-green);color:var(--neon-green);background:#f0fdf4}.graph-container{position:relative}.graph-counters{gap:2rem;margin-bottom:1rem;display:flex}.counter{flex-direction:column;align-items:center;gap:.25rem;display:flex}.counter-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:1px;font-size:.8rem;font-weight:500}.counter-value{transform-origin:50%;font-size:1.8rem;font-weight:700;line-height:1;transition:all .4s cubic-bezier(.4,0,.2,1)}.counter-value.updating{animation:.4s cubic-bezier(.4,0,.2,1) counter-update}@keyframes counter-update{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.counter.benign .counter-value{color:#059669}.counter.malicious .counter-value{color:#dc2626;animation:2s ease-in-out infinite malicious-pulse}@keyframes malicious-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}.counter.total .counter-value{color:#2563eb}.chart-stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:1.5rem;display:grid}.stat-item{border-radius:12px;flex-direction:column;align-items:center;gap:.75rem;padding:1.5rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.08)}.stat-item:before{content:"";height:3px;transition:all .3s;position:absolute;top:0;left:0;right:0}.stat-item:hover{transform:translateY(-4px);box-shadow:0 6px 20px rgba(0,0,0,.12)}.stat-item.benign{background:linear-gradient(135deg,#f0fdf4 0%,#d1fae5 100%);border:1px solid #a7f3d0}.stat-item.benign:before{background:#10b981}.stat-item.malicious{background:linear-gradient(135deg,#fef2f2 0%,#fee2e2 100%);border:1px solid #fecaca}.stat-item.malicious:before{background:#ef4444}.stat-item.total{background:linear-gradient(135deg,#eff6ff 0%,#dbeafe 100%);border:1px solid #bfdbfe}.stat-item.total:before{background:#3b82f6}.stat-label{color:#6b7280;text-transform:uppercase;letter-spacing:1px;font-size:.85rem;font-weight:600}.stat-value{font-size:2.5rem;font-weight:700;line-height:1;transition:all .4s cubic-bezier(.4,0,.2,1)}.stat-item.benign .stat-value{color:#059669}.stat-item.malicious .stat-value{color:#dc2626;animation:2s ease-in-out infinite malicious-pulse}.stat-item.total .stat-value{color:#2563eb}.ecg-chart-container{background:var(--bg-secondary);border:1px solid var(--grid-color);border-radius:12px;height:450px;padding:1.5rem;position:relative;overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.05)}.grid-overlay{display:none}#ecgChart{z-index:2;background:0 0;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative}.chart-animate-in{animation:.6s cubic-bezier(.4,0,.2,1) chart-fade-in}@keyframes chart-fade-in{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.chart-line-glow{filter:drop-shadow(0 0 8px)drop-shadow(0 0 16px);animation:3s ease-in-out infinite line-pulse}@keyframes line-pulse{0%,to{filter:drop-shadow(0 0 8px)}50%{filter:drop-shadow(0 0 16px)drop-shadow(0 0 24px)}}.table-section{background:var(--bg-secondary);border:1px solid var(--grid-color);border-radius:16px;flex-direction:column;max-height:500px;padding:1.5rem;display:flex}.table-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.table-header h3{color:var(--text-primary);font-size:1.2rem;font-weight:600}.table-controls{gap:.5rem;display:flex}.table-btn{border:2px solid var(--grid-color);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1rem;font-size:.9rem;font-weight:500;transition:all .3s}.table-btn:hover{border-color:var(--electric-blue);color:var(--electric-blue);background:#eff6ff}.table-btn.active{border-color:var(--neon-green);color:var(--neon-green);background:#f0fdf4}.table-container{border-radius:12px;flex:1;overflow:auto}.events-table{border-collapse:collapse;background:var(--bg-primary);border-radius:12px;width:100%;overflow:hidden}.events-table th{background:var(--bg-tertiary);text-align:left;color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--grid-color);padding:1rem;font-size:.8rem;font-weight:600}.events-table td{border-bottom:1px solid var(--grid-color);color:var(--text-secondary);vertical-align:middle;padding:1rem}.events-table tr{transition:all .3s}.events-table tr:hover{background:var(--bg-secondary)}.events-table tr.malicious{border-left:3px solid var(--neon-red);background:#fef2f2}.events-table tr.malicious:hover{background:#fee2e2}.action-buttons{gap:.5rem;display:flex}.action-btn{cursor:pointer;text-transform:uppercase;letter-spacing:.5px;border:none;border-radius:6px;padding:.5rem 1rem;font-size:.8rem;font-weight:500;transition:all .3s}.action-btn.allow{color:#059669;background:#d1fae5;border:1px solid #a7f3d0}.action-btn.allow:hover{color:#fff;box-shadow:var(--shadow-md);background:#10b981}.action-btn.block{color:#dc2626;background:#fee2e2;border:1px solid #fca5a5}.action-btn.block:hover{color:#fff;box-shadow:var(--shadow-md);background:#ef4444}.threat-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:20px;padding:.25rem .75rem;font-size:.7rem;font-weight:600}.threat-badge.sql-injection{color:#dc2626;background:#fee2e2;border:1px solid #fca5a5}.threat-badge.xss{color:#ea580c;background:#fed7aa;border:1px solid #fb923c}.threat-badge.ddos{color:#7c3aed;background:#e9d5ff;border:1px solid #c084fc}.threat-badge.brute-force{color:#db2777;background:#fce7f3;border:1px solid #f9a8d4}.log-viewer{background:var(--bg-primary);border-top:2px solid var(--grid-color);z-index:1000;border-radius:16px 16px 0 0;max-height:300px;transition:all .3s;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 6px -1px rgba(0,0,0,.1)}.log-viewer.collapsed .log-content{display:none}.log-header{cursor:pointer;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.log-header h4{color:var(--text-primary);font-size:1rem;font-weight:600}.log-toggle{color:var(--electric-blue);cursor:pointer;background:0 0;border:none;font-size:1.2rem;transition:all .3s}.log-toggle:hover{transform:scale(1.1)}.log-content{max-height:200px;padding:0 1.5rem 1rem;font-family:Courier New,monospace;overflow-y:auto}.log-entry{border-bottom:1px solid var(--grid-color);align-items:center;gap:1rem;padding:.5rem 0;font-size:.85rem;animation:.5s ease-in-out log-fade-in;display:flex}@keyframes log-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.log-time{color:var(--text-tertiary);min-width:80px}.log-level{text-transform:uppercase;text-align:center;border-radius:4px;min-width:80px;padding:.25rem .5rem;font-size:.7rem;font-weight:600}.log-level.info{color:#2563eb;background:#dbeafe}.log-level.success{color:#059669;background:#d1fae5}.log-level.warning{color:#ea580c;background:#fed7aa}.log-level.error{color:#dc2626;background:#fee2e2}.log-message{color:var(--text-secondary);flex:1}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-primary);border-radius:4px}::-webkit-scrollbar-thumb{background:var(--electric-blue);border-radius:4px;transition:all .3s}::-webkit-scrollbar-thumb:hover{background:var(--neon-green)}@media (max-width:1200px){.dashboard-body{flex-direction:column}.control-panel{width:100%}.graph-counters{justify-content:space-around}}@media (max-width:768px){.dashboard-header,.header-left{flex-direction:column;gap:1rem}.system-status{justify-content:center}.graph-header,.table-header{flex-direction:column;gap:1rem}.events-table{font-size:.8rem}.events-table th,.events-table td{padding:.5rem}}.slide-in{animation:.5s ease-out forwards slide-in}@keyframes slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.fade-in{animation:.3s ease-in-out fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.glow-pulse{animation:2s ease-in-out infinite glow-pulse}@keyframes glow-pulse{0%,to{filter:drop-shadow(0 0 5px)}50%{filter:drop-shadow(0 0 20px)drop-shadow(0 0 30px)}}.loading{position:relative;overflow:hidden}.loading:after{content:"";background:linear-gradient(90deg,transparent,rgba(0,191,255,.2),transparent);width:100%;height:100%;animation:1.5s ease-in-out infinite loading-shimmer;position:absolute;top:0;left:-100%}@keyframes loading-shimmer{0%{left:-100%}to{left:100%}}
