@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}@keyframes spin{to{transform:rotate(360deg)}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:#f0f2f5;color:#212529;margin:0;padding:0;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:#667eea33;color:#212529}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f8f9fa;border-radius:4px}::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#764ba2}h1,h2,h3,h4,h5,h6{font-weight:600;color:#212529;margin-bottom:1rem}a{color:#667eea;text-decoration:none;transition:color .3s cubic-bezier(.4,0,.2,1)}a:hover{color:#764ba2}.card{background:#fff;border:none;border-radius:12px;box-shadow:0 2px 8px #00000014;transition:all .3s cubic-bezier(.4,0,.2,1)}.card:hover{box-shadow:0 4px 16px #0000001f}.device-card{cursor:pointer;background:#fff;border:none;border-radius:16px;box-shadow:0 2px 8px #00000014;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.device-card:hover{transform:translateY(-4px);box-shadow:0 10px 30px #00000026}.device-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:transparent;transition:all .3s cubic-bezier(.4,0,.2,1)}.device-card:hover:before{background:linear-gradient(135deg,#667eea,#764ba2)}.device-card.active{background:#667eea26;box-shadow:0 4px 16px #0000001f}.device-card.active:before{background:linear-gradient(135deg,#667eea,#764ba2)}.stat-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #00000014;transition:all .3s cubic-bezier(.4,0,.2,1)}.stat-card:hover{transform:translateY(-4px);box-shadow:0 10px 30px #00000026}.stat-card .stat-icon{width:56px;height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:1.5rem;margin-bottom:1rem}.stat-card .stat-value{font-size:1.75rem;font-weight:700;color:#212529;display:block}.stat-card .stat-label{font-size:.875rem;color:#6c757d}#map{height:600px;width:100%;border-radius:12px;box-shadow:0 4px 16px #0000001f;overflow:hidden}.navbar{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 4px 16px #0000001f;padding:.5rem 1.5rem}.badge{font-weight:500;padding:6px 12px;border-radius:20px;font-size:.75rem}.badge-severity-low{background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.badge-severity-medium{background:linear-gradient(135deg,#ffc107,#fd7e14);color:#212529}.badge-severity-high{background:linear-gradient(135deg,#dc3545,#bd2130);color:#fff}.badge-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.badge-success{background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.badge-warning{background:linear-gradient(135deg,#ffc107,#fd7e14);color:#212529}.badge-danger{background:linear-gradient(135deg,#dc3545,#bd2130);color:#fff}.badge-info{background:linear-gradient(135deg,#17a2b8,#138496);color:#fff}.spinner-border-sm{width:1rem;height:1rem}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.form-control,.form-select{border:2px solid #e9ecef;border-radius:8px;padding:.5rem 1rem;font-size:1rem;transition:all .3s cubic-bezier(.4,0,.2,1)}.form-control:focus,.form-select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 4px #667eea26}.form-control::placeholder,.form-select::placeholder{color:#ced4da}.form-label{font-weight:500;color:#495057;margin-bottom:.25rem}.btn{border-radius:8px;font-weight:500;padding:.5rem 1.5rem;transition:all .3s cubic-bezier(.4,0,.2,1)}.btn:focus{box-shadow:0 0 0 4px #667eea26}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:12px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-success{background:linear-gradient(135deg,#28a745,#20c997);color:#fff;border:none}.btn-success:hover{background:linear-gradient(135deg,#23923d,#1cb386);transform:translateY(-2px);box-shadow:0 8px 20px #28a74566}.btn-warning{background:linear-gradient(135deg,#ffc107,#fd7e14);color:#212529;border:none}.btn-warning:hover{background:linear-gradient(135deg,#edb100,#f57102);transform:translateY(-2px)}.btn-danger{background:linear-gradient(135deg,#dc3545,#bd2130);color:#fff;border:none}.btn-danger:hover{background:linear-gradient(135deg,#d32535,#a71d2a);transform:translateY(-2px);box-shadow:0 8px 20px #dc354566}.btn-outline-primary{border:2px solid #667eea;color:#667eea;background:transparent}.btn-outline-primary:hover{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent}.btn-outline-secondary{border:2px solid #ced4da;color:#6c757d;background:transparent}.btn-outline-secondary:hover{background:#f8f9fa;border-color:#adb5bd;color:#495057}.btn-light{background:#fff;color:#495057;border:1px solid #e9ecef}.btn-light:hover{background:#f8f9fa;border-color:#dee2e6}.alert{border-radius:12px;border:none;padding:1rem 1.5rem;animation:slideIn .3s ease-out}.alert i{margin-right:.5rem}.alert-success{background:#28a7451a;color:#1e7e34;border-left:4px solid #28a745}.alert-warning{background:#ffc1071a;color:#c35a02;border-left:4px solid #ffc107}.alert-danger{background:#dc35451a;color:#dc3545;border-left:4px solid #dc3545}.alert-info{background:#667eea1a;color:#764ba2;border-left:4px solid #667eea}.modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:400;animation:fadeIn .2s ease}.modal-content{background:#fff;border-radius:16px;box-shadow:0 25px 50px #00000040;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;animation:slideDown .3s ease}.modal-content .modal-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem 2rem;border-radius:16px 16px 0 0;display:flex;justify-content:space-between;align-items:center}.modal-content .modal-header h2{margin:0;font-size:1.25rem;color:#fff}.modal-content .modal-header .btn-close{filter:brightness(0) invert(1);opacity:.8}.modal-content .modal-header .btn-close:hover{opacity:1}.modal-content .modal-body{padding:2rem}.modal-content .modal-footer{padding:1rem 2rem;border-top:1px solid #e9ecef;display:flex;justify-content:flex-end;gap:1rem}.details-sidebar{position:fixed;top:0;right:0;width:420px;max-width:100%;height:100%;background:#fff;box-shadow:-5px 0 30px #0003;z-index:600;display:flex;flex-direction:column;animation:slideInRight .3s ease}.details-sidebar .sidebar-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem;display:flex;justify-content:space-between;align-items:center}.details-sidebar .sidebar-header h2,.details-sidebar .sidebar-header h4{margin:0;font-size:1.25rem}.details-sidebar .sidebar-header h2 i,.details-sidebar .sidebar-header h4 i{margin-right:.5rem}.details-sidebar .sidebar-header .btn-close{filter:brightness(0) invert(1)}.details-sidebar .sidebar-body{flex:1;padding:2rem;overflow-y:auto}.details-sidebar .sidebar-footer{padding:1rem 2rem;border-top:1px solid #e9ecef;display:flex;gap:1rem}.details-overlay{position:fixed;inset:0;background:#00000080;z-index:400;animation:fadeIn .2s ease}.page-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem 2rem;border-radius:16px;margin-bottom:2rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.page-header h1,.page-header h2,.page-header h3{color:#fff;margin:0}.page-header h1 i,.page-header h2 i,.page-header h3 i{margin-right:.5rem}.page-header p{color:#ffffffd9;margin:.25rem 0 0}.page-header .header-content h1{font-size:1.75rem;margin-bottom:.25rem}.page-header .header-content h1 i{margin-right:.5rem}.page-header .header-actions{display:flex;gap:.5rem}.empty-state{text-align:center;padding:3rem;background:#fff;border-radius:16px;box-shadow:0 2px 8px #00000014}.empty-state i{font-size:4rem;color:#dee2e6;margin-bottom:1.5rem;display:block}.empty-state h3{color:#495057;margin-bottom:.5rem}.empty-state p{color:#adb5bd;margin-bottom:1.5rem}.filters-card{background:#fff;padding:1rem 1.5rem;border-radius:12px;box-shadow:0 1px 3px #00000014;margin-bottom:1.5rem}.summary-footer{display:flex;gap:3rem;justify-content:center;padding:2rem;margin-top:2rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014}.summary-footer .stat{text-align:center}.summary-footer .stat .label{display:block;color:#6c757d;font-size:.875rem;margin-bottom:.25rem}.summary-footer .stat .value{font-size:1.5rem;font-weight:700;color:#212529}code{background:#f8f9fa;padding:2px 8px;border-radius:4px;font-size:.85em;color:#764ba2}.table{margin:0}.table thead{background:#fafbfc}.table thead th{padding:1rem 1.5rem;font-weight:600;color:#495057;border-bottom:2px solid #e9ecef;white-space:nowrap}.table tbody td{padding:1rem 1.5rem;vertical-align:middle;border-bottom:1px solid #f8f9fa}.table tbody tr{transition:all .3s cubic-bezier(.4,0,.2,1)}.table tbody tr:hover{background:#667eea14}.icon-primary{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.icon-success{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.icon-warning{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#ffc107,#fd7e14);color:#212529}.icon-danger{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#dc3545,#bd2130);color:#fff}.icon-info{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#17a2b8,#138496);color:#fff}.text-gradient{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.bg-gradient-primary{background:linear-gradient(135deg,#667eea,#764ba2)}.bg-gradient-success{background:linear-gradient(135deg,#28a745,#20c997)}.bg-gradient-warning{background:linear-gradient(135deg,#ffc107,#fd7e14)}.bg-gradient-info{background:linear-gradient(135deg,#17a2b8,#138496)}.animate-fadeIn{animation:fadeIn .4s ease-out}.animate-slideIn{animation:slideIn .3s ease-out}.animate-pulse{animation:pulse 2s ease-in-out infinite}@media (max-width: 768px){.page-header{padding:1rem;flex-direction:column;align-items:flex-start}.page-header .header-actions{width:100%;justify-content:flex-start}.details-sidebar{width:100%}.summary-footer{flex-direction:column;gap:1rem}}.toast-success,.toast-error{padding:1rem;border-radius:12px;margin-bottom:1.5rem;display:flex;align-items:center;gap:.5rem;animation:slideIn .3s ease-out}.toast-success i,.toast-error i{font-size:1.25rem;flex-shrink:0}.toast-success span,.toast-error span{font-size:.875rem;line-height:1.4}.toast-success{background:#28a7451a;color:#1e7e34;border:1px solid rgba(40,167,69,.2)}.toast-error{background:#dc35451a;color:#dc3545;border:1px solid rgba(220,53,69,.2)}.link-button{background:none;border:none;padding:0;color:#667eea;font-weight:500;cursor:pointer;transition:color .3s cubic-bezier(.4,0,.2,1)}.link-button:hover:not(:disabled){color:#764ba2;text-decoration:underline}.link-button:disabled{opacity:.6;cursor:not-allowed}
