 * {
   margin: 0;
   padding: 0;
   box-sizing: border-box;
 }

 body {
   transition: background-color 0.3s ease, color 0.3s ease;
   overflow-x: hidden;
 }

 /* Page Container */
 .page {
   display: none;
 }

 .page.active {
   display: block;
 }

 /* Login Page */
 .login-page {
   min-height: 100vh;
   display: flex;
   align-items: center;
   justify-content: center;
   background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
   padding: 1rem;
 }

 .login-card {
   background: var(--bs-body-bg);
   border-radius: 16px;
   box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
   width: 100%;
   max-width: 420px;
   padding: 2.5rem;
 }

 .login-logo {
   width: 200px;
   height: auto;
   margin: 0 auto 1.5rem;
   border-radius: 20px;
   display: flex;
   align-items: center;
   justify-content: center;
   font-size: 2rem;
   color: white;
 }

 .login-logo img {
   width: 99%;
   height: auto;
 }

 .login-title {
   text-align: center;
   font-size: 1.75rem;
   font-weight: 700;
   margin-bottom: 0.5rem;
 }

 .login-subtitle {
   text-align: center;
   color: var(--bs-secondary);
   margin-bottom: 2rem;
 }

 .form-floating {
   margin-bottom: 1rem;
 }

 .btn-login {
   width: 100%;
   padding: 0.75rem;
   font-weight: 600;
   background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
   border: none;
   transition: all 0.3s ease;
 }

 .btn-login:hover {
   transform: translateY(-2px);
   box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
 }

 /* Loading Skeleton */
 .skeleton-loader {
   position: fixed;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   background: var(--bs-body-bg);
   z-index: 9999;
   display: flex;
   flex-direction: column;
   transition: opacity 0.5s ease;
 }

 .skeleton-loader.hide {
   opacity: 0;
   pointer-events: none;
 }

 .skeleton-navbar {
   height: 60px;
   background: var(--bs-body-bg);
   border-bottom: 1px solid var(--bs-border-color);
   display: flex;
   align-items: center;
   padding: 0 1rem;
   gap: 1rem;
 }

 .skeleton-content {
   display: flex;
   flex: 1;
   overflow: hidden;
 }

 .skeleton-sidebar {
   width: 280px;
   background: var(--bs-body-bg);
   border-right: 1px solid var(--bs-border-color);
   padding: 1rem;
 }

 .skeleton-main {
   flex: 1;
   padding: 1.5rem;
   overflow-y: auto;
 }

 .skeleton {
   background: linear-gradient(90deg, var(--bs-secondary-bg) 25%, var(--bs-tertiary-bg) 50%, var(--bs-secondary-bg) 75%);
   background-size: 200% 100%;
   animation: loading 1.5s infinite;
   border-radius: 8px;
 }

 @keyframes loading {
   0% {
     background-position: 200% 0;
   }

   100% {
     background-position: -200% 0;
   }
 }

 .skeleton-rect {
   height: 40px;
   margin-bottom: 1rem;
 }

 .skeleton-circle {
   width: 40px;
   height: 40px;
   border-radius: 50%;
 }

 .skeleton-device {
   display: flex;
   align-items: center;
   gap: 0.75rem;
   margin-bottom: 0.75rem;
 }

 .skeleton-device-icon {
   width: 35px;
   height: 35px;
   border-radius: 8px;
 }

 .skeleton-device-info {
   flex: 1;
 }

 .skeleton-device-name {
   height: 16px;
   width: 80px;
   margin-bottom: 0.5rem;
 }

 .skeleton-device-status {
   height: 12px;
   width: 50px;
 }

 .skeleton-header {
   height: 100px;
   margin-bottom: 1.5rem;
 }

 .skeleton-stats {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
   gap: 1rem;
   margin-bottom: 1.5rem;
 }

 .skeleton-stat-card {
   height: 120px;
 }

 .skeleton-chart {
   height: 400px;
   margin-bottom: 1.5rem;
 }

 @media (max-width: 767.98px) {
   .skeleton-sidebar {
     display: none;
   }

   .skeleton-stats {
     grid-template-columns: 1fr;
   }
 }

 /* Navbar */
 .navbar-custom {
   position: fixed;
   top: 0;
   left: 0;
   right: 0;
   z-index: 2147483647;
   height: 60px;
   box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
   transition: all 0.3s ease;
 }

 /* Sidebar */
 .sidebar {
   position: fixed;
   top: 60px;
   left: 0;
   bottom: 0;
   width: 280px;
   background: var(--bs-body-bg);
   border-right: 1px solid var(--bs-border-color);
   transition: all 0.3s ease;
   z-index: 2147483646;
   overflow: hidden;
   display: flex;
   flex-direction: column;
 }

 .sidebar.hidden {
   left: -280px;
 }

 .sidebar-header {
   padding: 1rem;
   border-bottom: 1px solid var(--bs-border-color);
   flex-shrink: 0;
 }

 .search-box {
   position: relative;
 }

 .search-box input {
   padding-left: 2.5rem;
 }

 .search-box i {
   position: absolute;
   left: 0.75rem;
   top: 50%;
   transform: translateY(-50%);
   color: var(--bs-secondary);
 }

 /* Device List Container */
 .device-list-container {
   flex: 1;
   overflow-y: auto;
   overflow-x: hidden;
 }

 .device-list-container::-webkit-scrollbar {
   width: 6px;
 }

 .device-list-container::-webkit-scrollbar-track {
   background: transparent;
 }

 .device-list-container::-webkit-scrollbar-thumb {
   background: var(--bs-secondary);
   border-radius: 3px;
 }

 /* Device List */
 .device-list {
   padding: 0;
   margin: 0;
   list-style: none;
 }

 .device-item {
   padding: 0.75rem 1rem;
   cursor: pointer;
   transition: all 0.3s ease;
   border-left: 3px solid transparent;
   display: flex;
   align-items: center;
   gap: 0.75rem;
 }

 .device-item:hover {
   background: var(--bs-secondary-bg);
 }

 .device-item.active {
   background: var(--bs-primary-bg-subtle);
   border-left-color: var(--bs-primary);
   color: var(--bs-primary);
 }

 .device-icon {
   width: 35px;
   height: 35px;
   border-radius: 8px;
   background: var(--bs-primary);
   display: flex;
   align-items: center;
   justify-content: center;
   color: white;
   font-size: 0.875rem;
   font-weight: 600;
 }

 .device-item.active .device-icon {
   background: var(--bs-primary);
   box-shadow: 0 2px 8px rgba(13, 110, 253, 0.3);
 }

 .device-info {
   flex: 1;
 }

 .device-name {
   font-weight: 500;
   margin-bottom: 0.125rem;
 }

 .device-status {
   font-size: 0.75rem;
   color: var(--bs-secondary);
   display: flex;
   align-items: center;
   gap: 0.35rem;
 }

 /* Animated Online Indicator */
 .status-indicator {
   position: relative;
   display: inline-flex;
   align-items: center;
   justify-content: center;
   width: 20px;
   /* Ensure it has a size */
   height: 20px;
   /* Ensure it has a size */
   border-radius: 50%;
   transition: background-color 0.3s ease, transform 0.3s ease;
 }


 @keyframes pulse {
   0% {
     transform: scale(1);
   }

   50% {
     transform: scale(1.2);
     /* Grow during animation */
   }

   100% {
     transform: scale(1);
   }
 }

 /* Main Content */
 .main-content {
   margin-left: 280px;
   margin-top: 60px;
   padding: 1.5rem;
   transition: all 0.3s ease;
   min-height: calc(100vh - 60px);
 }

 .main-content.expanded {
   margin-left: 0;
 }

 /* Content Card */
 .content-card {
   background: var(--bs-body-bg);
   border: 1px solid var(--bs-border-color);
   border-radius: 12px;
   padding: 1.5rem;
   margin-bottom: 1.5rem;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
 }

 [data-bs-theme="dark"] .content-card {
   background: rgba(255, 255, 255, 0.03);
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
 }

 /* Device Header */
 .device-header {
   background: var(--bs-body-bg);
   border: 1px solid var(--bs-border-color);
   border-radius: 8px;
   padding: 1.5rem;
   margin-bottom: 1.5rem;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
 }

 [data-bs-theme="dark"] .device-header {
   background: rgba(255, 255, 255, 0.03);
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
 }

 .device-title {
   font-size: 1.5rem;
   font-weight: 600;
   margin-bottom: 0.5rem;
   display: flex;
   align-items: center;
   gap: 1rem;
 }

 .device-datetime {
   color: var(--bs-secondary);
   font-size: 0.875rem;
 }

 /* Stats Grid */
 .stats-grid {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
   gap: 1rem;
   margin-bottom: 1.5rem;
 }

 .stat-card {
   min-height: 130px;
   background: var(--bs-body-bg);
   border: none;
   border-radius: 12px;
   padding: 1.5rem;
   transition: all 0.3s ease;
   position: relative;
   overflow: hidden;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
 }

 .stat-card::before {
   content: '';
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   height: 4px;
   background: var(--card-color);
 }

 .stat-card:hover {
   transform: translateY(-5px);
   box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
 }

 [data-bs-theme="dark"] .stat-card {
   background: rgba(255, 255, 255, 0.03);
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
 }

 [data-bs-theme="dark"] .stat-card:hover {
   box-shadow: 0 8px 20px rgba(0, 0, 0, 0.5);
 }

 .stat-card-content {
   display: flex;
   justify-content: space-between;
   align-items: center;
 }

 .stat-icon {
   width: 60px;
   height: 60px;
   border-radius: 12px;
   display: flex;
   align-items: center;
   justify-content: center;
   font-size: 1.75rem;
   color: white;
   background: var(--card-color);
   box-shadow: 0 4px 12px var(--card-shadow);
 }

 .stat-details {
   flex: 1;
   text-align: right;
 }

 .stat-label {
   color: var(--bs-secondary);
   font-size: 0.875rem;
   font-weight: 500;
   margin-bottom: 0.5rem;
 }

 .stat-value {
   font-size: 2rem;
   font-weight: 700;
   margin: 0;
   color: var(--card-color);
 }

 .stat-unit {
   font-size: 1.1rem;
   color: var(--bs-secondary);
   margin-left: 0.25rem;
   font-weight: 400;
 }

 /* Color Variants */
 .stat-card.blue {
   --card-color: #0d6efd;
   --card-shadow: rgba(13, 110, 253, 0.3);
   background: linear-gradient(135deg, rgba(13, 110, 253, 0.05) 0%, rgba(13, 110, 253, 0.02) 100%);
 }

 .stat-card.green {
   --card-color: #198754;
   --card-shadow: rgba(25, 135, 84, 0.3);
   background: linear-gradient(135deg, rgba(25, 135, 84, 0.05) 0%, rgba(25, 135, 84, 0.02) 100%);
 }

 .stat-card.purple {
   --card-color: #6f42c1;
   --card-shadow: rgba(111, 66, 193, 0.3);
   background: linear-gradient(135deg, rgba(111, 66, 193, 0.05) 0%, rgba(111, 66, 193, 0.02) 100%);
 }

 .stat-card.orange {
   --card-color: #fd7e14;
   --card-shadow: rgba(253, 126, 20, 0.3);
   background: linear-gradient(135deg, rgba(253, 126, 20, 0.05) 0%, rgba(253, 126, 20, 0.02) 100%);
 }

 .stat-card.red {
   --card-color: #dc3545;
   --card-shadow: rgba(220, 53, 69, 0.3);
   background: linear-gradient(135deg, rgba(220, 53, 69, 0.05) 0%, rgba(220, 53, 69, 0.02) 100%);
 }

 .stat-card.teal {
   --card-color: #20c997;
   --card-shadow: rgba(32, 201, 151, 0.3);
   background: linear-gradient(135deg, rgba(32, 201, 151, 0.05) 0%, rgba(32, 201, 151, 0.02) 100%);
 }

 .stat-card.indigo {
   --card-color: #6610f2;
   --card-shadow: rgba(102, 16, 242, 0.3);
   background: linear-gradient(135deg, rgba(102, 16, 242, 0.05) 0%, rgba(102, 16, 242, 0.02) 100%);
 }

 .stat-card.cyan {
   --card-color: #0dcaf0;
   --card-shadow: rgba(13, 202, 240, 0.3);
   background: linear-gradient(135deg, rgba(13, 202, 240, 0.05) 0%, rgba(13, 202, 240, 0.02) 100%);
 }

 .stat-card.pink {
   --card-color: #d63384;
   --card-shadow: rgba(214, 51, 132, 0.3);
   background: linear-gradient(135deg, rgba(214, 51, 132, 0.05) 0%, rgba(214, 51, 132, 0.02) 100%);
 }

 .stat-card.yellow {
   --card-color: #ffc107;
   --card-shadow: rgba(255, 193, 7, 0.3);
   background: linear-gradient(135deg, rgba(255, 193, 7, 0.05) 0%, rgba(255, 193, 7, 0.02) 100%);
 }

 .stat-card.lime {
   --card-color: #84cc16;
   --card-shadow: rgba(132, 204, 22, 0.3);
   background: linear-gradient(135deg, rgba(132, 204, 22, 0.05) 0%, rgba(132, 204, 22, 0.02) 100%);
 }

 .stat-card.emerald {
   --card-color: #10b981;
   --card-shadow: rgba(16, 185, 129, 0.3);
   background: linear-gradient(135deg, rgba(16, 185, 129, 0.05) 0%, rgba(16, 185, 129, 0.02) 100%);
 }

 [data-bs-theme="dark"] .stat-card.blue {
   background: linear-gradient(135deg, rgba(13, 110, 253, 0.1) 0%, rgba(13, 110, 253, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.green {
   background: linear-gradient(135deg, rgba(25, 135, 84, 0.1) 0%, rgba(25, 135, 84, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.purple {
   background: linear-gradient(135deg, rgba(111, 66, 193, 0.1) 0%, rgba(111, 66, 193, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.orange {
   background: linear-gradient(135deg, rgba(253, 126, 20, 0.1) 0%, rgba(253, 126, 20, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.red {
   background: linear-gradient(135deg, rgba(220, 53, 69, 0.1) 0%, rgba(220, 53, 69, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.teal {
   background: linear-gradient(135deg, rgba(32, 201, 151, 0.1) 0%, rgba(32, 201, 151, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.indigo {
   background: linear-gradient(135deg, rgba(102, 16, 242, 0.1) 0%, rgba(102, 16, 242, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.cyan {
   background: linear-gradient(135deg, rgba(13, 202, 240, 0.1) 0%, rgba(13, 202, 240, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.pink {
   background: linear-gradient(135deg, rgba(214, 51, 132, 0.1) 0%, rgba(214, 51, 132, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.yellow {
   background: linear-gradient(135deg, rgba(255, 193, 7, 0.1) 0%, rgba(255, 193, 7, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.lime {
   background: linear-gradient(135deg, rgba(132, 204, 22, 0.1) 0%, rgba(132, 204, 22, 0.03) 100%);
 }

 [data-bs-theme="dark"] .stat-card.emerald {
   background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(16, 185, 129, 0.03) 100%);
 }

 /* Chart Cards */
 .chart-card {
   background: var(--bs-body-bg);
   border: none;
   border-radius: 12px;
   padding: 1.5rem;
   margin-bottom: 1.5rem;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
   transition: all 0.3s ease;
 }

 .chart-card:hover {
   box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
 }

 [data-bs-theme="dark"] .chart-card {
   background: rgba(255, 255, 255, 0.03);
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
 }

 [data-bs-theme="dark"] .chart-card:hover {
   box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
 }

 .chart-title {
   color: var(--bs-body-color);
   font-size: 1rem;
   font-weight: 600;
   margin-bottom: 1rem;
   display: flex;
   align-items: center;
   gap: 0.5rem;
 }

 .chart-title i {
   color: var(--bs-primary);
 }

 .chart-container {
   width: 100%;
   height: 350px;
 }

 /* Theme Toggle */
 .theme-toggle {
   width: 40px;
   height: 40px;
   border-radius: 50%;
   border: none;
   background: transparent;
   cursor: pointer;
   transition: all 0.3s ease;
   display: flex;
   align-items: center;
   justify-content: center;
 }

 .theme-toggle:hover {
   background-color: rgba(0, 0, 0, 0.1);
 }

 [data-bs-theme="dark"] .theme-toggle:hover {
   background-color: rgba(255, 255, 255, 0.1);
 }

 .theme-toggle i {
   font-size: 1.2rem;
   transition: all 0.3s ease;
 }

 .toggle-sidebar {
   background: transparent;
   border: none;
   font-size: 1.25rem;
   cursor: pointer;
   padding: 0.5rem;
   color: var(--bs-body-color);
   transition: all 0.3s ease;
 }

 .toggle-sidebar:hover {
   color: var(--bs-primary);
 }

 .user-avatar {
   width: 35px;
   height: 35px;
   border-radius: 50%;
   background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
   display: flex;
   align-items: center;
   justify-content: center;
   color: white;
   font-weight: 600;
   font-size: 0.9rem;
 }

 .dropdown-menu {
   border: none;
   box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
 }

 .drawer-overlay {
   position: fixed;
   top: 60px;
   left: 0;
   right: 0;
   bottom: 0;
   background: rgba(0, 0, 0, 0.5);
   z-index: 2147483645;
   display: none;
   opacity: 0;
   transition: opacity 0.3s ease;
 }

 .drawer-overlay.show {
   display: block;
   opacity: 1;
 }

 /* Profile & Settings Specific */
 .profile-avatar-large {
   width: 120px;
   height: 120px;
   border-radius: 50%;
   background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
   display: flex;
   align-items: center;
   justify-content: center;
   color: white;
   font-size: 3rem;
   font-weight: 700;
   margin: 0 auto 1.5rem;
   box-shadow: 0 8px 24px rgba(102, 126, 234, 0.3);
 }

 /* Responsive */
 @media (max-width: 1199.98px) {
   .sidebar {
     left: -280px;
   }

   .sidebar.show {
     left: 0;
     box-shadow: 2px 0 10px rgba(0, 0, 0, 0.2);
   }

   .main-content {
     margin-left: 0;
   }
 }

 @media (max-width: 991.98px) {
   .stats-grid {
     grid-template-columns: repeat(2, 1fr);
   }
 }

 @media (max-width: 767.98px) {
   .main-content {
     padding: 1rem;
   }

   .navbar-custom .navbar-brand span {
     font-size: 0.9rem;
   }

   .device-header {
     padding: 1rem;
   }

   .device-title {
     font-size: 1.25rem;
   }

   .stat-card {
     padding: 1rem;
   }

   .stat-value {
     font-size: 1.5rem;
   }

   .stat-icon {
     width: 50px;
     height: 50px;
     font-size: 1.5rem;
   }

   .chart-container {
     height: 280px;
   }

   .login-card {
     padding: 1.5rem;
   }
 }

 @media (max-width: 575.98px) {
   .stats-grid {
     grid-template-columns: 1fr;
   }

   .stat-value {
     font-size: 1.5rem;
   }

   .stat-icon {
     width: 50px;
     height: 50px;
     font-size: 1.35rem;
   }
 }

 @media (min-width: 1200px) {
   .drawer-overlay {
     display: none !important;
   }
 }



 /* Animated Online Indicator */
 .status-indicator {
   position: relative;
   display: inline-flex;
   align-items: center;
   justify-content: center;
 }

 .status-dot {
   width: 12px;
   height: 12px;
   border-radius: 50%;
   background-color: var(--bs-success);
   position: relative;
   z-index: 2;
 }

 .status-dot.offline {
   background-color: var(--bs-secondary);
 }

 .status-pulse {
   position: absolute;
   width: 8px;
   height: 8px;
   border-radius: 50%;
   background-color: var(--bs-success);
   animation: pulse-animation 2s infinite;
 }

 .status-pulse.offline {
   display: none;
 }

 @keyframes pulse-animation {
   0% {
     transform: scale(1);
     opacity: 0.8;
   }

   50% {
     transform: scale(2.5);
     opacity: 0.3;
   }

   100% {
     transform: scale(3.5);
     opacity: 0;
   }
 }