@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap";:root{--bg-base:#060d1a;--bg-surface:#0d1526;--bg-card:#ffffff0a;--bg-card-hover:#ffffff12;--border:#ffffff14;--border-strong:#ffffff24;--accent:#3b82f6;--accent-dim:#3b82f61f;--emerald:#10b981;--emerald-dim:#10b9811f;--amber:#ffb800;--amber-dim:#ffb80026;--red:#f44;--red-dim:#ff444426;--text-primary:#f0f4ff;--text-secondary:#f0f4ff99;--text-muted:#f0f4ff59;--sidebar-w:240px;--sidebar-w-collapsed:68px;--topbar-h:64px;--radius:14px;--radius-sm:8px;--shadow:0 4px 12px #0000004d;--transition:.2s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-base);height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}.app-shell{height:100vh;display:flex;overflow:hidden}.main-area{margin-left:var(--sidebar-w);transition:margin-left var(--transition);flex-direction:column;flex:1;display:flex;overflow:hidden}.main-area.sidebar-collapsed{margin-left:var(--sidebar-w-collapsed)}.page-content{margin-top:var(--topbar-h);flex:1;padding:28px 32px;overflow-y:auto}.sidebar{width:var(--sidebar-w);background:var(--bg-surface);border-right:1px solid var(--border);z-index:100;height:100vh;transition:width var(--transition);flex-direction:column;display:flex;position:fixed;top:0;left:0;overflow:visible}.sidebar.collapsed{width:var(--sidebar-w-collapsed)}.sidebar-logo{border-bottom:1px solid var(--border);min-height:var(--topbar-h);flex-shrink:0;align-items:center;gap:12px;padding:20px 18px;display:flex}.sidebar-logo-icon{background:var(--accent);color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;font-weight:800;display:flex}.sidebar-logo-text{letter-spacing:-.3px;white-space:nowrap;opacity:1;transition:opacity var(--transition);font-size:16px;font-weight:700;overflow:hidden}.sidebar.collapsed .sidebar-logo-text{opacity:0;pointer-events:none}.sidebar-nav{flex-direction:column;flex:1;gap:4px;padding:12px 10px;display:flex;overflow-y:auto}.nav-item{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;text-align:left;width:100%;transition:background var(--transition), color var(--transition);white-space:nowrap;background:0 0;border:none;align-items:center;gap:12px;padding:10px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.nav-item:hover{background:var(--bg-card-hover);color:var(--text-primary)}.nav-item.active{background:var(--accent-dim);color:var(--accent)}.nav-item .nav-icon{stroke-width:1.8px;flex-shrink:0;width:20px;height:20px}.nav-label{opacity:1;transition:opacity var(--transition);overflow:hidden}.sidebar.collapsed .nav-label{opacity:0;pointer-events:none}.sidebar-footer{border-top:1px solid var(--border);padding:12px 10px}.sidebar-toggle{background:var(--bg-surface);border:1px solid var(--border-strong);cursor:pointer;width:24px;height:24px;color:var(--text-secondary);z-index:9999;transition:background var(--transition), color var(--transition);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:22px;right:-12px}.sidebar-toggle:hover{background:var(--bg-card-hover);color:var(--accent)}.topbar{height:var(--topbar-h);background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:90;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);top:0;right:0;left:var(--sidebar-w);transition:left var(--transition);align-items:center;gap:16px;padding:0 24px;display:flex;position:fixed}.topbar.sidebar-collapsed{left:var(--sidebar-w-collapsed)}.topbar-title{letter-spacing:-.3px;flex:1;font-size:18px;font-weight:700}.topbar-actions{align-items:center;gap:12px;display:flex}.icon-btn{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);cursor:pointer;width:38px;height:38px;color:var(--text-secondary);transition:background var(--transition), color var(--transition), border-color var(--transition);justify-content:center;align-items:center;display:flex;position:relative}.icon-btn:hover{background:var(--bg-card-hover);color:var(--text-primary);border-color:var(--border-strong)}.notif-badge{background:var(--red);color:#fff;border:2px solid var(--bg-surface);border-radius:99px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-size:9px;font-weight:700;display:flex;position:absolute;top:-4px;right:-4px}.user-avatar{border-radius:var(--radius-sm);background:var(--accent);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:14px;font-weight:700;display:flex}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color var(--transition), box-shadow var(--transition);padding:20px}.card:hover{border-color:var(--border-strong)}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition), transform var(--transition);flex-direction:column;gap:8px;padding:20px;display:flex}.stat-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.6px;font-size:12px;font-weight:500}.stat-value{letter-spacing:-1px;font-size:28px;font-weight:800;line-height:1}.stat-sub{color:var(--text-secondary);font-size:12px}.stat-icon{border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;margin-bottom:4px;display:flex}.section-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.section-title{letter-spacing:-.2px;font-size:16px;font-weight:700}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);letter-spacing:.1px;border:none;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);color:#060d1a}.btn-primary:hover{background:#2563eb}.btn-ghost{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-card-hover);border-color:var(--border-strong);color:var(--text-primary)}.btn-danger{background:var(--red-dim);border:1px solid var(--red);color:var(--red)}.btn-danger:hover{background:var(--red);color:#fff}.btn-sm{padding:6px 12px;font-size:13px}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-secondary);font-size:13px;font-weight:500}.form-input{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);transition:border-color var(--transition), box-shadow var(--transition);background:#ffffff0a;outline:none;width:100%;padding:10px 14px;font-family:inherit;font-size:14px}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.form-input::placeholder{color:var(--text-muted)}.form-hint{color:var(--text-muted);font-size:12px}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.toggle-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 0;display:flex}.toggle-row:last-child{border-bottom:none}.toggle-info{flex-direction:column;gap:3px;display:flex}.toggle-name{font-size:14px;font-weight:500}.toggle-desc{color:var(--text-muted);font-size:12px}.toggle{flex-shrink:0;width:44px;height:24px;position:relative}.toggle input{display:none}.toggle-track{background:var(--border-strong);cursor:pointer;width:100%;height:100%;transition:background var(--transition);border-radius:99px;display:block}.toggle input:checked+.toggle-track{background:var(--accent)}.toggle-thumb{width:20px;height:20px;transition:left var(--transition);pointer-events:none;background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.toggle input:checked~.toggle-thumb{left:22px}.slider{-webkit-appearance:none;background:var(--border-strong);border-radius:99px;outline:none;width:100%;height:4px}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:16px;height:16px}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--radius-sm);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);pointer-events:auto;align-items:center;gap:10px;min-width:260px;padding:12px 18px;font-size:14px;font-weight:500;animation:.3s toast-in;display:flex}@keyframes toast-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast-success{background:var(--emerald-dim);border:1px solid var(--emerald);color:var(--emerald)}.toast-error{background:var(--red-dim);border:1px solid var(--red);color:var(--red)}.toast-info{background:var(--accent-dim);border:1px solid var(--accent);color:var(--accent)}.notif-item{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-card);transition:border-color var(--transition);cursor:default;align-items:flex-start;gap:14px;padding:16px;display:flex}.notif-item.unread{border-left:3px solid var(--accent)}.notif-item.critical{border-left-color:var(--red)!important}.notif-item.warn{border-left-color:var(--amber)!important}.notif-item.info{border-left-color:var(--emerald)!important}.notif-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.notif-dot-critical{background:var(--red)}.notif-dot-warn{background:var(--amber)}.notif-dot-info{background:var(--emerald)}.notif-body{flex:1}.notif-msg{font-size:14px;line-height:1.5}.notif-meta{color:var(--text-muted);align-items:center;gap:8px;margin-top:4px;font-size:12px;display:flex}.ring-container{justify-content:center;align-items:center;display:inline-flex;position:relative}.ring-label{text-align:center;pointer-events:none;position:absolute}.sensor-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.sensor-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition), transform var(--transition);padding:18px}.sensor-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}.sensor-card.critical{border-top:2px solid var(--red)}.sensor-card.warning{border-top:2px solid var(--amber)}.sensor-card.normal{border-top:2px solid var(--emerald)}.sensor-card-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.sensor-name{font-size:15px;font-weight:600}.level-badge{border-radius:99px;padding:3px 8px;font-size:11px;font-weight:600}.badge-critical{background:var(--red-dim);color:var(--red)}.badge-warning{background:var(--amber-dim);color:var(--amber)}.badge-normal{background:var(--emerald-dim);color:var(--emerald)}.sensor-metrics{grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;display:grid}.metric{flex-direction:column;gap:2px;display:flex}.metric-label{color:var(--text-muted);font-size:11px}.metric-value{font-size:14px;font-weight:600}.fill-bar{background:var(--border);border-radius:99px;width:100%;height:6px;margin-top:12px;overflow:hidden}.fill-bar-inner{border-radius:99px;height:100%;transition:width .6s cubic-bezier(.4,0,.2,1)}.profile-avatar{background:var(--accent);color:#fff;border-radius:20px;justify-content:center;align-items:center;width:80px;height:80px;font-size:28px;font-weight:800;display:flex}.filter-tabs{flex-wrap:wrap;gap:8px;display:flex}.filter-tab{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--transition);background:0 0;border-radius:99px;padding:6px 14px;font-size:13px;font-weight:500}.filter-tab:hover{border-color:var(--border-strong);color:var(--text-primary)}.filter-tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#ffffff0a 25%,#ffffff14 50%,#ffffff0a 75%) 0 0/200% 100%;animation:1.5s infinite shimmer}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-4{gap:16px}.gap-2{gap:8px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.mt-4{margin-top:16px}.w-full{width:100%}.text-accent{color:var(--accent)}.text-emerald{color:var(--emerald)}.text-red{color:var(--red)}.text-amber{color:var(--amber)}.text-muted{color:var(--text-muted)}.text-sm{font-size:13px}.text-xs{font-size:12px}.font-bold{font-weight:700}.font-semibold{font-weight:600}:root{--auth-accent:#3b82f6;--auth-accent-dim:#3b82f61f;--auth-emerald:#10b981;--auth-red:#ef4444;--auth-border:#ffffff14;--auth-glass:#080e1cd1;--auth-glass-light:#ffffff08}.auth-page{font-family:Inter,system-ui,sans-serif;display:flex;position:fixed;inset:0;overflow:hidden}.auth-bg{z-index:0;background-position:50%;background-size:cover;transition:opacity .9s cubic-bezier(.4,0,.2,1);position:absolute;inset:0}.auth-bg-next{opacity:0}.auth-bg-active{opacity:1}.auth-bg-overlay{z-index:1;background:linear-gradient(135deg,#040a16d1 0%,#040a168c 50%,#040a16bf 100%);position:absolute;inset:0}.auth-content{z-index:2;width:100%;height:100%;display:flex;position:relative}.auth-form-side{border-right:1px solid var(--auth-border);flex-shrink:0;justify-content:center;align-items:center;width:40%;padding:32px 48px;display:flex}.auth-info{color:#fff;flex-direction:column;flex:1;justify-content:space-between;padding:52px 64px;display:flex}.auth-brand{align-items:center;gap:14px;margin-bottom:0;display:flex}.auth-brand-icon{background:linear-gradient(135deg, var(--auth-accent), #1d4ed8);border-radius:13px;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:46px;display:flex;box-shadow:0 8px 30px #0000004d}.auth-brand-name{letter-spacing:-.5px;color:var(--auth-accent);font-size:22px;font-weight:900}.auth-info-body{flex-direction:column;flex:1;justify-content:center;padding:40px 0;display:flex}.auth-info-tag{color:var(--auth-accent);letter-spacing:.8px;text-transform:uppercase;background:#00d4ff1f;border:1px solid #00d4ff40;border-radius:99px;align-items:center;gap:7px;width:fit-content;margin-bottom:24px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-flex}.auth-info-headline{letter-spacing:-1px;color:#fff;margin-bottom:18px;font-size:clamp(28px,3.2vw,46px);font-weight:900;line-height:1.12}.auth-info-headline span{color:var(--auth-accent)}.auth-info-sub{color:#ffffffa6;max-width:380px;margin-bottom:36px;font-size:15px;font-weight:400;line-height:1.7}.auth-features{flex-direction:column;gap:14px;display:flex}.auth-feature{align-items:center;gap:12px;display:flex}.auth-feature-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.auth-feature-text{color:#fffc;font-size:14px;font-weight:500}.auth-info-footer{color:#ffffff59;font-size:12px}.auth-card{background:var(--auth-glass);border:1px solid var(--auth-border);-webkit-backdrop-filter:blur(28px);border-radius:22px;width:100%;max-width:440px;padding:44px;box-shadow:0 32px 80px #00000080,inset 0 0 0 1px #ffffff0a}.auth-card-title{letter-spacing:-.6px;color:#fff;margin-bottom:6px;font-size:28px;font-weight:800}.auth-card-sub{color:#ffffff73;margin-bottom:30px;font-size:14px}.auth-card-error{color:#ff7070;background:#ff44441a;border:1px solid #ff444459;border-radius:10px;margin-bottom:18px;padding:11px 14px;font-size:13.5px}.auth-field{margin-bottom:16px}.auth-label{letter-spacing:.3px;color:#ffffff8c;text-transform:uppercase;margin-bottom:7px;font-size:12.5px;font-weight:600;display:block}.auth-input{color:#fff;box-sizing:border-box;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:11px;outline:none;width:100%;padding:13px 16px;font-family:inherit;font-size:15px;transition:border-color .2s,background .2s,box-shadow .2s}.auth-input::placeholder{color:#ffffff40}.auth-input:focus{border-color:var(--auth-accent);background:#3b82f60a;box-shadow:0 0 0 3px #3b82f61a}.auth-input.error{border-color:var(--auth-red);box-shadow:0 0 0 3px #ff44441a}.auth-field-error{color:#ff7070;margin-top:5px;font-size:12px}.auth-pw-wrap{position:relative}.auth-pw-wrap .auth-input{padding-right:46px}.auth-pw-toggle{cursor:pointer;color:#ffffff59;background:0 0;border:none;align-items:center;padding:4px;transition:color .2s;display:flex;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.auth-pw-toggle:hover{color:var(--auth-accent)}.auth-submit{background:var(--auth-accent);color:#fff;cursor:pointer;letter-spacing:.2px;border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;width:100%;margin-top:8px;padding:14px;font-family:inherit;font-size:15px;font-weight:700;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;box-shadow:0 4px 12px #0003}.auth-submit:hover:not(:disabled){background:#2563eb;transform:translateY(-1px);box-shadow:0 8px 25px #0000004d}.auth-submit:disabled{opacity:.55;cursor:not-allowed}.auth-switch{text-align:center;color:#fff6;margin-top:22px;font-size:14px}.auth-switch a{color:var(--auth-accent);margin-left:4px;font-weight:600;text-decoration:none;transition:opacity .2s}.auth-switch a:hover{opacity:.8;text-decoration:underline}.auth-divider{color:#ffffff2e;align-items:center;gap:12px;margin:20px 0;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:#ffffff1a;flex:1;height:1px}@media (width<=860px){.auth-info{display:none}.auth-form-side{padding:24px 20px}.auth-card{padding:32px 28px}}
