:root{--bg-primary:#f0f4f8;--bg-secondary:#e2e8f0;--bg-card:#fff;--bg-glass:rgba(255,255,255,0.72);--text-primary:#1a202c;--text-secondary:#64748b;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-light:rgba(37,99,235,0.08);--accent-glow:rgba(37,99,235,0.25);--button:#2563eb;--button-hover:#1d4ed8;--border:#e2e8f0;--border-light:#f1f5f9;--error:#dc2626;--error-bg:#fef2f2;--success:#16a34a;--success-bg:rgba(22,163,74,0.08);--warning:#d97706;--warning-bg:rgba(217,119,6,0.08);--shadow-sm:0 1px 2px rgba(0,0,0,0.04);--shadow:0 1px 3px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 6px -1px rgba(0,0,0,0.07),0 2px 4px -2px rgba(0,0,0,0.05);--shadow-lg:0 10px 15px -3px rgba(0,0,0,0.08),0 4px 6px -4px rgba(0,0,0,0.05);--shadow-hover:0 10px 25px -5px rgba(0,0,0,0.1),0 8px 10px -6px rgba(0,0,0,0.06);--metric-color:#059669;--radius:12px;--radius-sm:8px;--radius-lg:16px;--header-bg:linear-gradient(135deg,#1e3a5f 0,#2563eb 100%);--login-bg:linear-gradient(135deg,#0f172a 0,#1e3a5f 50%,#1e40af 100%)}html[data-theme="dark"],[data-theme="dark"]{--bg-primary:#0f172a;--bg-secondary:#1e293b;--bg-card:#1e293b;--bg-glass:rgba(30,41,59,0.8);--text-primary:#f1f5f9;--text-secondary:#94a3b8;--accent:#3b82f6;--accent-hover:#60a5fa;--accent-light:rgba(59,130,246,0.12);--accent-glow:rgba(59,130,246,0.3);--button:#3b82f6;--button-hover:#60a5fa;--border:#334155;--border-light:#1e293b;--error:#f87171;--error-bg:rgba(248,113,113,0.1);--success:#4ade80;--success-bg:rgba(74,222,128,0.1);--warning:#fbbf24;--warning-bg:rgba(251,191,36,0.1);--shadow-sm:0 1px 2px rgba(0,0,0,0.2);--shadow:0 1px 3px rgba(0,0,0,0.3),0 1px 2px rgba(0,0,0,0.2);--shadow-md:0 4px 6px -1px rgba(0,0,0,0.4),0 2px 4px -2px rgba(0,0,0,0.3);--shadow-lg:0 10px 15px -3px rgba(0,0,0,0.4),0 4px 6px -4px rgba(0,0,0,0.3);--shadow-hover:0 10px 25px -5px rgba(0,0,0,0.5),0 8px 10px -6px rgba(0,0,0,0.4);--metric-color:#34d399;--radius:12px;--radius-sm:8px;--radius-lg:16px;--header-bg:linear-gradient(135deg,#0f172a 0,#1e3a5f 100%);--login-bg:linear-gradient(135deg,#020617 0,#0f172a 50%,#172554 100%)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .35s ease,color .35s ease}.container{max-width:1440px;margin:0 auto;padding:1rem}@keyframes fadeInUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes slideInLeft{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInRight{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes pulse-ring{0%{transform:scale(1);opacity:.6}100%{transform:scale(1.6);opacity:0}}@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}@keyframes modalSlideIn{from{opacity:0;transform:translateY(-20px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes scaleIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}}header{background:var(--header-bg);color:white;padding:0;box-shadow:0 4px 20px rgba(0,0,0,0.15);position:sticky;top:0;z-index:100;backdrop-filter:blur(12px)}header .container{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;padding:.75rem 1.5rem}.header-left{display:flex;align-items:center;gap:2rem}.header-nav{display:flex;gap:.35rem}.nav-tab{color:rgba(255,255,255,0.8);text-decoration:none;padding:.5rem 1.25rem;background-color:rgba(255,255,255,0.06);border-radius:var(--radius-sm);transition:all .2s ease;font-weight:500;font-size:.9rem;border:1px solid transparent}.nav-tab:hover{background-color:rgba(255,255,255,0.14);color:white;border-color:rgba(255,255,255,0.1)}.nav-tab.active{background-color:rgba(255,255,255,0.2);color:white;font-weight:600;border-color:rgba(255,255,255,0.15);box-shadow:0 2px 8px rgba(0,0,0,0.12)}header h1{font-size:1.3rem;font-weight:700;letter-spacing:-.02em}.header-actions{display:flex;align-items:center;gap:.5rem}.user-info{display:flex;align-items:center;gap:.5rem}.user-info span{font-size:.9rem;opacity:.9}.user-info a{color:white;text-decoration:none;padding:.4rem .9rem;background-color:rgba(255,255,255,0.1);border-radius:var(--radius-sm);transition:all .2s ease;font-size:.85rem;border:1px solid rgba(255,255,255,0.08)}.user-info a:hover{background-color:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.15)}.logout-btn{color:white;background-color:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.08);padding:.4rem .9rem;border-radius:var(--radius-sm);cursor:pointer;font:inherit;font-size:.85rem;transition:all .2s ease}.logout-btn:hover{background-color:rgba(239,68,68,0.25);border-color:rgba(239,68,68,0.3)}.admin-button-header{color:white;text-decoration:none;padding:.4rem .9rem;background-color:rgba(255,255,255,0.1);border-radius:var(--radius-sm);transition:all .2s ease;font-size:.85rem;white-space:nowrap;border:1px solid rgba(255,255,255,0.08)}.admin-button-header:hover{background-color:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.15)}.theme-toggle-header{display:flex;align-items:center}.theme-toggle-header #theme-btn{background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.08);color:white;font-size:1.25rem;cursor:pointer;padding:.4rem;border-radius:var(--radius-sm);transition:all .25s ease;width:2.2rem;height:2.2rem;display:flex;align-items:center;justify-content:center}.theme-toggle-header #theme-btn:hover{background-color:rgba(255,255,255,0.18);transform:rotate(15deg)}.theme-toggle{display:flex;align-items:center}#theme-btn{background:var(--button);color:white;border:0;padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-size:1.2rem;transition:all .2s ease}#theme-btn:hover{background:var(--button-hover)}.login-box{max-width:420px;margin:0 auto;padding:2.5rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow-lg);animation:fadeInUp .5s ease-out;position:relative}.login-box::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:60%;height:3px;background:linear-gradient(90deg,transparent,var(--accent),transparent);border-radius:0 0 4px 4px}.login-box h2{margin-bottom:1.5rem;text-align:center;color:var(--text-primary);font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.login-box label{display:block;margin-bottom:.5rem;color:var(--text-secondary);font-weight:500;font-size:.9rem}.login-box input{width:100%;padding:.75rem 1rem;margin-bottom:1.25rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);font-size:.95rem;font-family:inherit;transition:border-color .2s,box-shadow .2s}.login-box input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.login-box button{width:100%;padding:.75rem;background:var(--button);color:white;border:0;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;font-family:inherit}.login-box button:hover{background:var(--button-hover);box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}.login-box button:active{transform:translateY(0)}.error{color:var(--error);margin-top:1rem;padding:.75rem 1rem;background:var(--error-bg);border-radius:var(--radius-sm);text-align:center;font-size:.9rem;border:1px solid rgba(220,38,38,0.15);animation:fadeIn .3s ease}.dashboard-layout{display:flex;min-height:calc(100vh - 56px)}.sidebar{width:260px;background:var(--bg-card);border-right:1px solid var(--border);padding:1.25rem;display:flex;flex-direction:column;animation:slideInLeft .4s ease-out;flex-shrink:0}.sidebar-header{margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-light)}.sidebar-header h3{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.companies-menu{display:flex;flex-direction:column;gap:.2rem;flex:1;overflow-y:auto}.company-item{margin-bottom:.25rem}.company-toggle{width:100%;padding:.6rem .85rem;background:transparent;color:var(--text-primary);border:0;border-radius:var(--radius-sm);cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:.9rem;transition:all .15s ease;text-align:left;font-family:inherit}.company-toggle:hover{background:var(--accent-light);color:var(--accent)}.toggle-icon{font-size:.7rem;transition:transform .25s ease;opacity:.5}.groups-list{margin-top:.15rem;margin-left:.5rem;padding-left:.75rem;border-left:2px solid var(--border-light);display:flex;flex-direction:column;gap:.1rem}.group-item{padding:.45rem .85rem;color:var(--text-primary);text-decoration:none;border-radius:var(--radius-sm);transition:all .15s ease;display:flex;justify-content:space-between;align-items:center;font-size:.88rem}.group-item:hover{background:var(--accent-light);color:var(--accent)}.group-item.active{background:var(--accent);color:white;font-weight:600}.device-count{font-size:.75rem;opacity:.6;background:var(--bg-secondary);padding:.1rem .45rem;border-radius:6px}.group-item.active .device-count{background:rgba(255,255,255,0.2);opacity:1}.sidebar-footer{margin-top:auto;padding-top:1rem;border-top:1px solid var(--border-light)}.admin-button{display:block;width:100%;padding:.65rem 1rem;background:var(--button);color:white;text-decoration:none;text-align:center;border-radius:var(--radius-sm);font-weight:600;font-size:.9rem;transition:all .2s ease}.admin-button:hover{background:var(--button-hover);box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}.dashboard-content{flex:1;padding:1.5rem 2rem;overflow-y:auto;animation:fadeIn .4s ease}.dashboard{padding:1.5rem 0}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.dashboard-header h2{font-size:1.6rem;font-weight:700;letter-spacing:-.02em}.devices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem}.device-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);transition:all .25s ease;position:relative;animation:fadeInUp .4s ease-out both;overflow:hidden}.device-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--success));opacity:0;transition:opacity .25s ease}.device-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);border-color:var(--accent)}.device-card:hover::before{opacity:1}.device-card:nth-child(1){animation-delay:0ms}.device-card:nth-child(2){animation-delay:60ms}.device-card:nth-child(3){animation-delay:120ms}.device-card:nth-child(4){animation-delay:180ms}.device-card:nth-child(5){animation-delay:240ms}.device-card:nth-child(6){animation-delay:300ms}.device-card:nth-child(7){animation-delay:360ms}.device-card:nth-child(8){animation-delay:420ms}.device-card:nth-child(9){animation-delay:480ms}.device-card.subscription-expired{filter:blur(3px);pointer-events:none;opacity:.6}.expired-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.65);backdrop-filter:blur(4px);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;z-index:10;filter:none;pointer-events:auto}.expired-message{background:var(--bg-card);padding:2rem;border-radius:var(--radius);text-align:center;max-width:280px;margin:1rem;box-shadow:var(--shadow-lg);animation:scaleIn .3s ease}.expired-message h4{color:var(--error);margin-bottom:.75rem;font-size:1.1rem}.expired-message p{color:var(--text-primary);margin-bottom:.5rem;line-height:1.6;font-size:.9rem}.expired-message small{color:var(--text-secondary);font-size:.8rem}.device-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-light)}.device-header h3{font-size:1.1rem;font-weight:700;letter-spacing:-.01em}.device-id{font-size:.8rem;color:var(--text-secondary);background:var(--bg-secondary);padding:.15rem .5rem;border-radius:6px;font-family:'SF Mono','Consolas',monospace}.device-info{margin-bottom:.75rem}.info-row{display:flex;justify-content:space-between;margin-bottom:.35rem;font-size:.88rem}.label{color:var(--text-secondary);font-weight:500}.value{color:var(--text-primary);font-weight:500}.telemetry{margin-top:.75rem}.metric{display:flex;justify-content:space-between;padding:.4rem 0;border-bottom:1px solid var(--border-light)}.metric:last-child{border-bottom:0}.metric-label{color:var(--text-secondary);font-size:.88rem}.metric-value{color:var(--text-primary);font-weight:600}.telemetry-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem}.metric-mini{background:var(--bg-secondary);border-radius:var(--radius-sm);padding:.45rem .3rem;text-align:center;transition:all .2s ease;border:1px solid transparent}.metric-mini:hover{border-color:var(--accent);background:var(--accent-light)}[data-theme="dark"] .metric-mini{background:rgba(15,23,42,0.6)}.metric-mini-label{display:block;font-size:.6rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.metric-mini-value{display:block;font-size:.95rem;font-weight:700;color:var(--metric-color);font-family:'Inter',monospace;line-height:1.3}.last-update{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-light);font-size:.8rem;color:var(--text-secondary);text-align:center}.no-data{text-align:center;color:var(--text-secondary);padding:2rem;font-style:italic}.device-status{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-light);font-size:.8rem;color:var(--text-secondary)}.device-actions{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-light)}.btn-detail{display:block;width:100%;padding:.65rem;background:var(--button);color:white;text-decoration:none;text-align:center;border-radius:var(--radius-sm);font-weight:600;font-size:.9rem;transition:all .2s ease}.btn-detail:hover{background:var(--button-hover);box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}.empty-state{text-align:center;padding:4rem 2rem;color:var(--text-secondary);animation:fadeIn .5s ease}.company-section{margin-bottom:3rem;animation:fadeInUp .4s ease-out}.company-title{font-size:1.5rem;font-weight:700;margin-bottom:1.25rem;padding-bottom:.5rem;border-bottom:2px solid var(--accent);letter-spacing:-.02em}.group-section{margin-bottom:2rem}.group-title{font-size:1.2rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary)}.empty-group{text-align:center;padding:2rem;color:var(--text-secondary);font-style:italic}.error-banner{background:var(--error-bg);border:1px solid var(--error);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1.5rem;color:var(--error);animation:fadeIn .3s ease}.admin-panel{padding:1.5rem 0;animation:fadeIn .4s ease}.admin-panel h2{font-size:1.8rem;margin-bottom:1.5rem;font-weight:700;letter-spacing:-.02em}.admin-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem;box-shadow:var(--shadow);transition:box-shadow .2s ease;animation:fadeInUp .4s ease-out both}.admin-section:nth-child(odd){animation-delay:0ms}.admin-section:nth-child(even){animation-delay:80ms}.admin-section:hover{box-shadow:var(--shadow-md)}.admin-section h3{font-size:1.2rem;margin-bottom:1.25rem;color:var(--text-primary);font-weight:700}.admin-form{display:grid;gap:1rem}.form-group{display:flex;flex-direction:column}.form-group label{margin-bottom:.4rem;color:var(--text-secondary);font-weight:500;font-size:.88rem}.form-group input,.form-group select,.form-group textarea{padding:.65rem .85rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);font-size:.95rem;font-family:inherit;transition:border-color .2s,box-shadow .2s}.form-group textarea{resize:vertical}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.admin-form button{padding:.65rem 1.5rem;background:var(--button);color:white;border:0;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;justify-self:start;font-family:inherit}.admin-form button:hover{background:var(--button-hover);box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}.admin-form button:active{transform:translateY(0)}.data-table{width:100%;border-collapse:collapse;margin-top:1rem;font-size:.9rem}.data-table th,.data-table td{padding:.7rem .85rem;text-align:left;border-bottom:1px solid var(--border-light)}.data-table th{background:var(--bg-secondary);font-weight:600;color:var(--text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.data-table tbody tr{transition:background-color .15s ease}.data-table tbody tr:hover{background:var(--accent-light)}.error-message{background:var(--error-bg);color:var(--error);padding:.85rem 1rem;border-radius:var(--radius-sm);margin-bottom:1.25rem;font-size:.9rem;border:1px solid rgba(220,38,38,0.15);animation:fadeIn .3s ease}.success-message{background:var(--success-bg);color:var(--success);padding:.85rem 1rem;border-radius:var(--radius-sm);margin-bottom:1.25rem;border:1px solid rgba(22,163,74,0.2);font-size:.9rem;animation:fadeIn .3s ease}.btn-small{padding:.25rem .6rem;font-size:.8rem;background:var(--error);color:white;border:0;border-radius:6px;cursor:pointer;transition:all .15s ease;font-family:inherit}.btn-small:hover{background:#b91c1c;transform:translateY(-1px)}.device-detail{padding:1.5rem 2rem;animation:fadeIn .4s ease}.detail-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border-light);animation:fadeInUp .4s ease-out}.back-link{color:var(--accent);text-decoration:none;margin-bottom:.4rem;display:inline-flex;align-items:center;gap:.35rem;font-size:.9rem;font-weight:500;transition:all .15s ease}.back-link:hover{color:var(--accent-hover);transform:translateX(-2px)}.detail-header h1{font-size:1.75rem;margin:.4rem 0;font-weight:700;letter-spacing:-.02em}.device-meta{color:var(--text-secondary);font-size:.88rem}.detail-actions{display:flex;gap:.75rem}.btn-report{padding:.6rem 1.25rem;background:var(--button);color:white;text-decoration:none;border-radius:var(--radius-sm);font-weight:600;font-size:.9rem;transition:all .2s ease}.btn-report:hover{background:var(--button-hover);box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}.api-key-section{margin-top:.75rem;padding:.85rem 1rem;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border)}.api-key-container{display:flex;align-items:center;gap:.5rem;margin-top:.4rem}.api-key{flex:1;padding:.6rem .85rem;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;font-family:'SF Mono','Consolas','Courier New',monospace;font-size:.85rem;word-break:break-all;color:var(--text-primary)}.btn-copy{padding:.45rem .85rem;background:var(--button);color:white;border:0;border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .15s ease;white-space:nowrap;font-family:inherit}.btn-copy:hover{background:var(--button-hover)}.btn-copy:active{transform:scale(0.95)}.device-title-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.btn-module-status{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .85rem;background:var(--bg-secondary);color:var(--text-primary);border:1.5px solid var(--border);border-radius:20px;cursor:pointer;font-size:.82rem;font-weight:500;transition:all .2s ease;white-space:nowrap;font-family:inherit}.btn-module-status:hover{background:var(--accent);color:white;border-color:var(--accent);box-shadow:0 2px 8px var(--accent-glow)}.module-status-indicator{font-size:.85rem;color:var(--text-secondary);transition:color .3s ease}.instrument-panel{margin-bottom:1.5rem;animation:fadeInUp .4s ease-out .1s both}.instrument-panel h2{font-size:1.3rem;margin-bottom:.85rem;font-weight:700}.gauges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.85rem}.gauge-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem;text-align:center;transition:all .25s ease;position:relative;overflow:hidden}.gauge-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent),var(--metric-color));opacity:0;transition:opacity .25s ease}.gauge-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--accent)}.gauge-card:hover::after{opacity:1}.gauge-wrapper{display:flex;justify-content:center;margin-bottom:.15rem}.gauge-info{padding-top:.15rem}.gauge-value{font-size:1.4rem;font-weight:800;color:var(--text-primary);font-family:'Inter',monospace}.gauge-label{font-size:.75rem;color:var(--text-secondary);margin-top:.15rem;font-weight:500}.dtc-section{margin:1.5rem 0;animation:fadeInUp .4s ease-out .2s both}.dtc-section h2{font-size:1.3rem;margin-bottom:.85rem;font-weight:700}.dtc-summary{display:flex;gap:.75rem;margin-bottom:.85rem;flex-wrap:wrap}.dtc-counter{display:flex;flex-direction:column;align-items:center;padding:.65rem 1.25rem;border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);min-width:110px;transition:all .2s ease}.dtc-counter:hover{box-shadow:var(--shadow-md)}.dtc-counter.dtc-active{border-left:4px solid var(--accent)}.dtc-counter.dtc-warnings{border-left:4px solid var(--warning)}.dtc-counter.dtc-critical{border-left:4px solid var(--error)}.dtc-count-number{font-size:1.6rem;font-weight:800;color:var(--text-primary)}.dtc-count-label{font-size:.75rem;color:var(--text-secondary);font-weight:500}.dtc-list{display:flex;flex-direction:column;gap:.5rem}.dtc-empty{text-align:center;padding:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary)}.dtc-empty-icon{font-size:2.5rem;margin-bottom:.5rem;opacity:.5}.dtc-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.85rem 1rem;transition:all .2s ease;animation:fadeInUp .3s ease-out both}.dtc-card:hover{box-shadow:var(--shadow-md)}.dtc-card.dtc-severity-critical{border-left:4px solid var(--error)}.dtc-card.dtc-severity-warning{border-left:4px solid var(--warning)}.dtc-card.dtc-severity-info{border-left:4px solid var(--accent)}.dtc-card-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.4rem}.dtc-icon{font-size:1rem}.dtc-code{font-weight:700;font-family:'SF Mono','Consolas',monospace;color:var(--text-primary);font-size:.9rem}.dtc-oc{margin-left:auto;background:var(--bg-secondary);padding:.1rem .5rem;border-radius:10px;font-size:.75rem;color:var(--text-secondary);font-weight:500}.dtc-card-body{margin-bottom:.4rem}.dtc-description{color:var(--text-primary);font-weight:500;margin-bottom:.15rem;font-size:.9rem}.dtc-details{display:flex;gap:.75rem;flex-wrap:wrap}.dtc-spn-desc,.dtc-fmi-desc{font-size:.8rem;color:var(--text-secondary)}.dtc-card-footer{display:flex;justify-content:space-between;align-items:center;padding-top:.4rem;border-top:1px solid var(--border-light)}.dtc-time{font-size:.75rem;color:var(--text-secondary)}.dtc-badge{padding:.12rem .65rem;border-radius:10px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.dtc-badge-critical{background:rgba(220,38,38,0.1);color:var(--error)}.dtc-badge-warning{background:rgba(217,119,6,0.1);color:var(--warning)}.dtc-badge-info{background:rgba(37,99,235,0.1);color:var(--accent)}.error-journal-section{margin:1.5rem 0;animation:fadeInUp .4s ease-out .3s both;content-visibility:auto;contain-intrinsic-size:0 400px}.error-journal-section h2{font-size:1.3rem;margin-bottom:.85rem;font-weight:700}.error-journal-list{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;max-height:400px;overflow-y:auto}.error-journal-list::-webkit-scrollbar{width:6px}.error-journal-list::-webkit-scrollbar-track{background:transparent}.error-journal-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.error-journal-empty{text-align:center;padding:2rem;color:var(--text-secondary)}.error-journal-item{display:flex;align-items:center;gap:.6rem;padding:.6rem 1rem;border-bottom:1px solid var(--border-light);font-size:.85rem;transition:background-color .15s ease}.error-journal-item:hover{background:var(--accent-light)}.error-journal-item:last-child{border-bottom:0}.error-journal-item.error-severity-critical{border-left:3px solid var(--error)}.error-journal-item.error-severity-error{border-left:3px solid var(--error)}.error-journal-item.error-severity-warning{border-left:3px solid var(--warning)}.error-journal-item.error-severity-info{border-left:3px solid var(--accent)}.ej-icon{flex-shrink:0;font-size:.9rem}.ej-type{flex-shrink:0;font-weight:600;font-size:.72rem;padding:.12rem .5rem;background:var(--bg-secondary);border-radius:4px;min-width:55px;text-align:center;text-transform:uppercase;letter-spacing:.03em}.ej-message{flex:1;color:var(--text-primary)}.ej-time{flex-shrink:0;font-size:.75rem;color:var(--text-secondary);white-space:nowrap;font-family:'SF Mono','Consolas',monospace}.ej-resolved{opacity:.5;border-left-color:var(--text-secondary) !important}.ej-resolved .ej-message{text-decoration:line-through;color:var(--text-secondary)}.ej-resolved .ej-type{background:var(--bg-secondary);color:var(--text-secondary)}.ej-resolved-tag{flex-shrink:0;font-size:.65rem;padding:.1rem .4rem;border-radius:4px;background:var(--success);color:#fff;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.modal-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);z-index:1000;justify-content:center;align-items:center;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.modal-overlay.active{display:flex}.modal-content{background:var(--bg-card);border-radius:var(--radius-lg);width:92%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 25px 50px -12px rgba(0,0,0,0.35);animation:modalSlideIn .3s ease-out;border:1px solid var(--border)}.modal-content::-webkit-scrollbar{width:6px}.modal-content::-webkit-scrollbar-track{background:transparent}.modal-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 1.5rem;border-bottom:1px solid var(--border)}.modal-header h3{font-size:1.15rem;font-weight:700}.modal-close{background:var(--bg-secondary);border:1px solid var(--border);font-size:1.2rem;color:var(--text-secondary);cursor:pointer;padding:.25rem .55rem;border-radius:var(--radius-sm);transition:all .15s ease;line-height:1}.modal-close:hover{background:var(--error);color:white;border-color:var(--error)}.modal-body{padding:1.25rem 1.5rem}.module-section{margin-bottom:1.25rem}.module-section h4{font-size:.75rem;font-weight:700;color:var(--text-secondary);margin-bottom:.6rem;text-transform:uppercase;letter-spacing:.06em}.module-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.module-item{display:flex;align-items:flex-start;gap:.6rem;padding:.65rem;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border-light);transition:all .15s ease}.module-item:hover{border-color:var(--accent);background:var(--accent-light)}.module-icon{font-size:1.35rem;flex-shrink:0;width:1.75rem;text-align:center}.module-details{flex:1;min-width:0}.module-param-name{font-size:.72rem;color:var(--text-secondary);margin-bottom:.1rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em}.module-param-value{font-size:.9rem;font-weight:700;color:var(--text-primary)}.module-param-sub{font-size:.7rem;color:var(--text-secondary);margin-top:.05rem}.module-footer{text-align:center;padding-top:.85rem;border-top:1px solid var(--border-light);font-size:.8rem;color:var(--text-secondary)}.expired-banner{background:var(--error-bg);border:1px solid var(--error);border-radius:var(--radius);padding:1.25rem;margin-bottom:1.5rem;animation:fadeIn .3s ease}.expired-banner h4{color:var(--error);margin-bottom:.4rem}.current-status{margin-bottom:1.5rem}.current-status h2{font-size:1.3rem;margin-bottom:.85rem;font-weight:700}.status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.85rem;margin-bottom:.75rem}.engine-params-grid{grid-template-columns:repeat(2,1fr);gap:.6rem}@media(min-width:640px){.engine-params-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:768px){.engine-params-grid{grid-template-columns:repeat(4,1fr);gap:.75rem}}@media(min-width:1024px){.engine-params-grid{grid-template-columns:repeat(5,1fr)}}@media(min-width:1200px){.engine-params-grid{grid-template-columns:repeat(7,1fr)}}.status-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem .65rem;text-align:center;transition:all .2s ease;position:relative;overflow:hidden}.status-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--metric-color);opacity:0;transition:opacity .2s ease}.status-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--accent)}.status-card:hover::after{opacity:1}[data-theme="dark"] .engine-params-grid .status-card{background:rgba(15,23,42,0.6);border-color:#334155}.status-label{color:var(--text-secondary);font-size:.72rem;margin-bottom:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.status-value{color:var(--metric-color);font-size:1.5rem;font-weight:800;font-family:'Inter',monospace;line-height:1.2}[data-theme="dark"] .status-value{color:var(--metric-color)}.status-unit{color:var(--text-secondary);font-size:.7rem;margin-top:1px;font-weight:500}.last-update-info{color:var(--text-secondary);font-size:.82rem;text-align:center;margin-top:.4rem}.charts-section{margin-top:2rem;animation:fadeInUp .4s ease-out .4s both;content-visibility:auto;contain-intrinsic-size:0 500px}.charts-section h2{font-size:1.3rem;margin-bottom:1rem;font-weight:700}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:1.25rem}.chart-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;transition:all .2s ease}.chart-container:hover{box-shadow:var(--shadow-md)}.chart-container h3{margin-bottom:.75rem;font-size:1rem;font-weight:700}.chart-canvas-wrap{position:relative;height:250px;width:100%}.chart-container canvas{position:absolute;top:0;left:0;width:100% !important;height:100% !important}.no-data-message{text-align:center;padding:4rem 2rem;color:var(--text-secondary)}.reports-page{padding:1.5rem 2rem;animation:fadeIn .4s ease}.reports-header{margin-bottom:1.5rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border-light)}.reports-header h1{font-size:1.75rem;margin:.4rem 0;font-weight:700;letter-spacing:-.02em}.reports-content{max-width:800px}.report-filters{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem;box-shadow:var(--shadow)}.report-filters h3{margin-bottom:1.25rem;font-weight:700}.report-form{display:flex;flex-direction:column;gap:1.25rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.85rem}.btn-download{padding:.65rem 1.75rem;background:var(--button);color:white;border:0;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;align-self:flex-start;font-family:inherit}.btn-download:hover{background:var(--button-hover);box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}.multi-select-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;max-height:320px;overflow-y:auto;padding:.5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-primary)}.checkbox-card{display:flex;flex-direction:column;gap:.15rem;padding:.6rem .75rem;border:1px solid var(--border-light);border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:border-color .15s,background .15s}.checkbox-card:hover{border-color:var(--accent);background:var(--accent-bg)}.checkbox-card:has(input:checked){border-color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 1px var(--accent)}.checkbox-card input[type="checkbox"]{display:none}.checkbox-label{font-weight:600;font-size:.85rem;color:var(--text-primary)}.checkbox-meta{font-size:.75rem;color:var(--text-secondary)}.reports-info{background:var(--bg-secondary);border-radius:var(--radius);padding:1.25rem;border:1px solid var(--border-light)}.reports-info h3{margin-bottom:.85rem;font-weight:700}.reports-info ul{list-style:none;padding:0}.reports-info li{padding:.4rem 0;color:var(--text-secondary);font-size:.9rem}.reports-main-page{padding:1.5rem 0;animation:fadeIn .4s ease}.reports-main-page h2{font-size:1.8rem;margin-bottom:.4rem;color:var(--text-primary);font-weight:700;letter-spacing:-.02em}.page-description{color:var(--text-secondary);margin-bottom:1.5rem;font-size:1rem}.reports-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;margin-top:1.5rem}.report-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;transition:all .25s ease;display:flex;flex-direction:column;animation:fadeInUp .4s ease-out both;position:relative;overflow:hidden}.report-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--success));opacity:0;transition:opacity .25s ease}.report-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);border-color:var(--accent)}.report-card:hover::before{opacity:1}.report-card:nth-child(1){animation-delay:0ms}.report-card:nth-child(2){animation-delay:60ms}.report-card:nth-child(3){animation-delay:120ms}.report-card:nth-child(4){animation-delay:180ms}.report-card:nth-child(5){animation-delay:240ms}.report-card:nth-child(6){animation-delay:300ms}.report-card:nth-child(7){animation-delay:360ms}.report-card:nth-child(8){animation-delay:420ms}.report-icon{font-size:2.5rem;margin-bottom:.85rem;text-align:center}.report-card h3{font-size:1.15rem;margin-bottom:.5rem;color:var(--text-primary);font-weight:700}.report-card p{color:var(--text-secondary);margin-bottom:.85rem;flex-grow:1;line-height:1.6;font-size:.9rem}.report-features{display:flex;gap:.4rem;margin-bottom:.85rem;flex-wrap:wrap}.feature-badge{background:var(--accent-light);color:var(--accent);padding:.2rem .65rem;border-radius:10px;font-size:.78rem;border:1px solid transparent;font-weight:500}.btn-report{display:block;text-align:center;padding:.65rem 1.25rem;background:var(--button);color:white;text-decoration:none;border-radius:var(--radius-sm);font-weight:600;font-size:.9rem;transition:all .2s ease;margin-top:auto}.btn-report:hover{background:var(--button-hover);box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent);color:white}@media(max-width:1024px){.charts-grid{grid-template-columns:1fr}}@media(max-width:768px){.dashboard-layout{flex-direction:column}.sidebar{width:100%;border-right:0;border-bottom:1px solid var(--border);max-height:200px;overflow-y:auto}.companies-menu{flex-direction:row;overflow-x:auto;flex-wrap:wrap}.devices-grid{grid-template-columns:1fr}.dashboard-content{padding:1rem}.dashboard-header{flex-direction:column;gap:.75rem;align-items:flex-start}.data-table{font-size:.82rem}.data-table th,.data-table td{padding:.5rem}.device-detail{padding:1rem}.detail-header{flex-direction:column;gap:.75rem}.charts-grid{grid-template-columns:1fr}header .container{padding:.5rem .75rem;gap:.5rem}header h1{font-size:1.1rem}.nav-tab{padding:.4rem .75rem;font-size:.82rem}.module-grid{grid-template-columns:1fr}.dtc-summary{flex-direction:column}.dtc-counter{flex-direction:row;justify-content:center;gap:.75rem}.reports-grid{grid-template-columns:1fr}}@media(max-width:480px){.header-left{gap:.5rem}.header-nav{display:none}.user-info span{display:none}.telemetry-mini-grid{grid-template-columns:repeat(2,1fr)}}.login-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 56px);padding:2rem}.login-logo{text-align:center;margin-bottom:1rem}.login-subtitle{text-align:center;color:var(--text-secondary);font-size:.9rem;margin-bottom:1.75rem}.login-field{margin-bottom:1.25rem}.login-field label{display:block;margin-bottom:.35rem;color:var(--text-secondary);font-weight:500;font-size:.88rem}.login-field input{width:100%;padding:.7rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);font-size:.95rem;font-family:inherit;transition:border-color .2s,box-shadow .2s}.login-field input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.login-field input::placeholder{color:var(--text-secondary);opacity:.5}