@import url(https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700;900&display=swap);.login-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffffff5;border:1px solid #94a3b838;border-radius:32px;box-shadow:0 24px 60px #0f172a24;max-width:420px;padding:40px 36px;width:100%}.login-brand{align-items:center;display:flex;gap:12px;justify-content:center;margin-bottom:26px}.login-brand-icon,.login-brand-text{display:block;height:44px;object-fit:contain}.login-brand-text{height:28px}.login-card h1{color:#0f172a;font-size:2rem;margin:0 0 16px;text-align:center}.login-subtitle{color:#475569;font-size:1rem;margin:0 0 24px;text-align:center}.login-form{grid-gap:16px;display:grid;gap:16px}.login-form label{color:#334155;font-size:.95rem;font-weight:600}.login-form input{background:#f8fafc;border:1px solid #94a3b83d;border-radius:16px;color:#0f172a;font-size:.96rem;padding:16px 18px;width:100%}.login-form input:focus{border-color:#2563eb;box-shadow:0 0 0 4px #3b82f61f;outline:none}.login-form button{background:linear-gradient(135deg,#2563eb,#0ea5e9);border:none;border-radius:16px;box-shadow:0 16px 32px #2563eb38;color:#fff;cursor:pointer;font-weight:700;padding:16px 18px;transition:transform .18s ease,box-shadow .18s ease;width:100%}.login-form button:hover{box-shadow:0 18px 36px #2563eb47;opacity:.95;transform:translateY(-1px)}.login-message{background:#f871711f;border-radius:16px;color:#b91c1c;font-size:.95rem;margin-top:18px;padding:16px 18px;text-align:center}:root{--bg-app:#f4f7fb;--bg-panel:#fff;--bg-panel-strong:#f8fbff;--bg-hover:#eef4ff;--border:#94a3b857;--border-strong:#2563eb3d;--text-main:#0f172a;--text-muted:#475569;--text-soft:#64748b;--accent:#2563eb;--success:#16a34a;--danger:#dc2626;--mono-font:"Roboto",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--ui-font:"Roboto",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.app-shell{background:radial-gradient(circle at top right,#2563eb1a,#0000 24%),radial-gradient(circle at top left,#0ea5e914,#0000 26%),#f4f7fb;background:radial-gradient(circle at top right,#2563eb1a,#0000 24%),radial-gradient(circle at top left,#0ea5e914,#0000 26%),var(--bg-app);color:#0f172a;color:var(--text-main);min-height:100vh}.login-screen{display:grid;min-height:100vh;padding:24px;place-items:center}.login-panel{max-width:420px;width:100%}.workspace-shell{align-items:start;display:grid;grid-template-columns:270px minmax(0,1fr);min-height:100vh}.workspace-main{min-width:0;overflow-x:hidden;padding:22px 22px 28px}.sidebar{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffeb;border-right:1px solid #94a3b847;box-shadow:10px 0 30px #0f172a0d;display:flex;flex-direction:column;gap:24px;height:100vh;padding:24px 18px;position:-webkit-sticky;position:sticky;top:0}.sidebar-user{grid-gap:8px;border-bottom:1px solid #6e91b924;display:grid;gap:8px;padding:6px 6px 20px}.sidebar-label{color:#64748b;color:var(--text-soft);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.sidebar-username{color:#0f172a;color:var(--text-main);font-family:Roboto,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--mono-font);font-size:1rem;line-height:1.4;word-break:break-word}.sidebar-nav{grid-gap:10px;display:grid;gap:10px}.sidebar-footer{grid-gap:14px;border-top:1px solid #94a3b83d;display:grid;gap:14px;margin-top:auto;padding-top:16px}.sidebar-user-chip{grid-gap:4px;background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid #94a3b83d;border-radius:14px;box-shadow:0 8px 24px #0f172a0f;display:grid;gap:4px;padding:14px 16px}.sidebar-link,.sidebar-signout{background:#0000;border:1px solid #94a3b829;border-radius:14px;color:#475569;color:var(--text-muted);font-weight:600;padding:14px 16px;text-align:left;text-decoration:none;transition:background .18s ease,color .18s ease,border-color .18s ease}.sidebar-link:hover,.sidebar-signout:hover{background:#f1f6ff;color:#0f172a;color:var(--text-main)}.sidebar-link.active{background:#eff6ff;border-color:#2563eb47;box-shadow:inset 3px 0 0 #2563eb,0 8px 20px #2563eb14;box-shadow:inset 3px 0 0 var(--accent),0 8px 20px #2563eb14;color:#1d4ed8}.sidebar-signout{background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 8px 24px #0f172a0f;cursor:pointer}.sidebar-user-meta{color:#64748b;color:var(--text-soft);font-size:.84rem;word-break:break-word}.brand-lockup{align-items:center;display:inline-flex;gap:12px;justify-content:center;min-height:52px;width:100%}.brand-image{display:block;flex-shrink:0;height:42px;object-fit:contain;width:auto}.brand-image-text{height:32px}.brand-image-icon{height:42px}.brand-text{display:none}.dashboard-page{grid-gap:18px;display:grid;gap:18px}.dashboard-toolbar{align-items:flex-start;display:flex;gap:18px;justify-content:space-between}.dashboard-title{font-size:clamp(1.8rem,2vw,2.2rem);margin:0}.dashboard-subtitle{color:#475569;color:var(--text-muted);margin:8px 0 0;max-width:620px}.eyebrow{color:#64748b;color:var(--text-soft);font-size:.74rem;font-weight:600;letter-spacing:.16em;margin:0 0 8px;text-transform:uppercase}.dashboard-actions{align-items:center;display:flex;gap:14px}.dashboard-toolbar-inline{justify-content:flex-end}.dashboard-actions-inline{flex-wrap:wrap;justify-content:flex-end;margin-left:auto}.status-stack{grid-gap:6px;display:grid;gap:6px;justify-items:end}.status-chip,.status-chip-warning{align-items:center;background:#ffffffeb;border:1px solid #94a3b857;border:1px solid var(--border);border-radius:999px;box-shadow:0 6px 16px #0f172a0d;color:#0f172a;color:var(--text-main);display:inline-flex;font-size:.82rem;gap:8px;padding:8px 12px}.status-chip-warning:before,.status-chip:before{background:#16a34a;background:var(--success);border-radius:999px;content:"";height:8px;width:8px}.status-chip-warning:before{background:#dc2626;background:var(--danger)}.dashboard-updated{color:#64748b;color:var(--text-soft);font-size:.82rem;white-space:nowrap}.toolbar-button{background:linear-gradient(135deg,#2563eb,#0ea5e9);border:1px solid #2563eb3d;border:1px solid var(--border-strong);border-radius:12px;box-shadow:0 12px 24px #2563eb2e;color:#fff;cursor:pointer;font-weight:600;padding:11px 16px}.toolbar-button:hover:not(:disabled),button.primary:hover:not(:disabled){filter:brightness(1.07)}.toolbar-button:disabled,button:disabled{cursor:not-allowed;opacity:.6}.dashboard-banner{background:#fff5f5;border:1px solid #dc26262e;border-radius:12px;color:#b91c1c;padding:12px 14px}.metrics-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.metric-card{grid-gap:10px;align-content:start;background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid #94a3b857;border:1px solid var(--border);border-radius:18px;box-shadow:0 14px 34px #0f172a14;display:grid;gap:10px;min-height:118px;overflow:hidden;padding:18px 20px;position:relative}.metric-card:before{background:#6e91b952;bottom:0;content:"";left:0;position:absolute;top:0;width:3px}.metric-card-warning:before{background:#2563eb;background:var(--accent)}.metric-card-success:before{background:#16a34a;background:var(--success)}.metric-card-danger:before{background:#dc2626;background:var(--danger)}.metric-label{color:#64748b;color:var(--text-soft);font-size:.74rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase}.metric-value{font-size:clamp(1.7rem,2.2vw,2.6rem);line-height:1}.metric-helper{color:#475569;color:var(--text-muted)}.dashboard-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.card,.dashboard-state,.panel-card{background:linear-gradient(180deg,#fff,#f9fbff);border:1px solid #94a3b857;border:1px solid var(--border);border-radius:20px;box-shadow:0 18px 42px #0f172a14}.panel-header{border-bottom:1px solid #94a3b82e;display:flex;gap:14px;justify-content:space-between;padding:14px 16px 12px}.panel-header,.panel-header-spread{align-items:center}.panel-header h2,.section-header h2{color:#0f172a;color:var(--text-main);font-size:1.1rem;letter-spacing:.06em;margin:0;text-transform:uppercase}.table-filter,input[type=file],select{background:#fff;border:1px solid #94a3b842;border-radius:12px;color:#0f172a;color:var(--text-main);padding:10px 12px;width:100%}.table-filter{font-family:Roboto,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--mono-font);width:230px}.table-shell{overflow:hidden;padding:14px 16px 10px}.table-shell-scroll{max-height:none;overflow:visible}.dashboard-table th .table-sort{justify-content:space-between;width:100%}.table-sort{box-sizing:border-box}.dashboard-table{border-collapse:collapse;table-layout:fixed;width:100%}.table-col-user{width:36%}.table-col-version{width:52%}.table-col-number{width:18%}.table-col-ratio{width:26%}.table-col-time{width:20%}.dashboard-table td,.dashboard-table th{border-bottom:1px solid #e2e8f0eb;box-sizing:border-box;padding:14px 16px;vertical-align:middle}.dashboard-table th{padding:0;text-align:left}.dashboard-table tbody tr:hover{background:#f8fbff}.dashboard-table tbody tr:last-child td{border-bottom:none}.cell-strong{color:#0f172a;color:var(--text-main);font-weight:700;overflow-wrap:anywhere}.table-number{font-feature-settings:"tnum";color:#475569;color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.table-head-left{text-align:left}.table-head-right{text-align:right}.table-ratio-cell{padding-right:16px}.table-sort{align-items:center;background:#0000;border:none;color:#64748b;color:var(--text-soft);cursor:pointer;display:flex;font-size:.76rem;font-weight:700;gap:8px;justify-content:flex-start;letter-spacing:.12em;padding:0;text-transform:uppercase;width:100%}.dashboard-table th .table-sort{padding:14px 16px}.table-sort-right{justify-content:flex-end}.table-sort-label{line-height:1;white-space:nowrap}.table-sort.active{color:#2563eb;color:var(--accent)}.table-sort-arrow{flex:0 0 11px;min-width:11px;text-align:center}.ratio-cell{grid-gap:12px;align-items:center;display:grid;gap:12px;grid-template-columns:minmax(0,1fr) auto;width:100%}.ratio-track{background:#e2e8f0;border-radius:999px;display:flex;height:10px;overflow:hidden}.ratio-success{background:#16a34a;background:var(--success)}.ratio-fail{background:#dc2626;background:var(--danger)}.ratio-value{font-feature-settings:"tnum";font-size:.96rem;font-variant-numeric:tabular-nums;min-width:52px;text-align:right}.ratio-value.positive{color:#16a34a;color:var(--success)}.ratio-value.negative{color:#dc2626;color:var(--danger)}.empty-row{color:#64748b;color:var(--text-soft);padding:30px 18px;text-align:center}.data-font,.metric-value,.ratio-value,.sidebar-username,.table-filter,.table-number{font-family:Roboto,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--mono-font)}.dashboard-state{margin:48px auto;max-width:540px;padding:28px}.dashboard-state h1{margin:0 0 12px}.dashboard-state p{color:#475569;color:var(--text-muted);margin:0}.dashboard-state.error{border-color:#f46d5e40}.card{padding:24px}.firmware-card{max-width:760px}.section-header{margin-bottom:20px}.section-header p{color:#475569;color:var(--text-muted);margin:8px 0 0}.form-row{grid-gap:10px;display:grid;gap:10px;margin-bottom:18px}label{color:#0f172a;color:var(--text-main);font-weight:600}button.primary{background:linear-gradient(135deg,#2563eb,#0ea5e9);border:1px solid #2563eb29;border-radius:12px;box-shadow:0 12px 24px #2563eb2e;color:#fff;cursor:pointer;font-weight:700;padding:14px 18px}.file-details{color:#475569;color:var(--text-muted);display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.detail-label{font-weight:600}.result-box,.status-box{border-top:1px solid #94a3b833;margin-top:18px;padding-top:18px}.result-row,.status-row{border-bottom:1px solid #e2e8f0e6;display:flex;gap:12px;justify-content:space-between;padding:8px 0}.result-row:last-child,.status-row:last-child{border-bottom:none}.progress-container{background:#e2e8f0;border-radius:999px;height:16px;margin-top:12px;overflow:hidden;position:relative}.progress-container span{color:#0f172a;color:var(--text-main);font-size:.75rem;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.progress-bar{background:linear-gradient(90deg,#16a34a,#47a8ff);background:linear-gradient(90deg,var(--success),#47a8ff);height:100%;transition:width .2s ease}@media (max-width:1320px){.metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:1080px){.workspace-shell{grid-template-columns:1fr}.sidebar{align-items:center;border-bottom:1px solid #94a3b83d;border-right:none;flex-direction:row;flex-wrap:wrap;height:auto;position:-webkit-sticky;position:sticky;top:0;z-index:4}.sidebar-nav{grid-auto-columns:-webkit-max-content;grid-auto-columns:max-content;grid-auto-flow:column}.sidebar-footer{align-items:center;border-top:none;display:flex;gap:12px;margin-left:auto;margin-top:0;padding-top:0}.sidebar-user-chip{min-width:220px}.dashboard-grid{grid-template-columns:1fr}}@media (max-width:820px){.workspace-main{padding:18px 14px 24px}.dashboard-actions,.dashboard-toolbar{align-items:stretch;flex-direction:column}.dashboard-actions-inline{margin-left:0}.status-stack{justify-items:start}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel-header,.panel-header-spread{align-items:stretch;flex-direction:column}.table-filter{width:100%}.dashboard-table td,.dashboard-table th{padding:12px 10px}.dashboard-table{table-layout:auto}}@media (max-width:560px){.metrics-grid{grid-template-columns:1fr}.sidebar{padding:18px 12px}.sidebar-nav{grid-auto-flow:row}.sidebar-footer{align-items:stretch;flex-direction:column;width:100%}.sidebar-signout,.sidebar-user-chip{width:100%}.brand-text{font-size:1.08rem;letter-spacing:.08em}.dashboard-actions-inline{gap:10px}.dashboard-updated{white-space:normal}.sidebar-signout{width:100%}}*{box-sizing:border-box}#root,body,html{min-height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f4f7fb;color:#0f172a;font-family:Roboto,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;margin:0}button,input,select,textarea{font:inherit}a{color:inherit}
/*# sourceMappingURL=main.ba48a04c.css.map*/