.notification-banner[data-v-fe664a05],.notification-banner-success[data-v-fe664a05],.notification-banner-error[data-v-fe664a05]{position:fixed;left:var(--page-pad);right:var(--page-pad);bottom:calc(var(--dock-height, 78px) + var(--dock-bottom) + 14px);z-index:30;min-height:56px;padding:10px 14px;border-radius:var(--dock-radius);display:flex;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.16);box-shadow:0 14px 30px #00000047;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.notification-banner[data-v-fe664a05]{background:#465f7dc2}.notification-banner-success[data-v-fe664a05]{background:#0f7634d1;border-color:#65d48f5c}.notification-banner-error[data-v-fe664a05]{background:#962628d6;border-color:#ff888861}.notification-text[data-v-fe664a05]{margin:0;min-width:0;flex:1 1 auto;color:#fffffff0;font-size:14px;font-weight:650;line-height:1.3;overflow-wrap:anywhere}.close-button[data-v-fe664a05]{width:32px;height:32px;display:grid;place-items:center;flex:0 0 auto;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:#ffffff0f;color:#ffffffe6;cursor:pointer}@media(min-width:900px){.notification-banner[data-v-fe664a05],.notification-banner-success[data-v-fe664a05],.notification-banner-error[data-v-fe664a05]{left:auto;right:24px;bottom:24px;width:min(380px,calc(100vw - 48px));min-height:52px;border-radius:18px}}.firmware-update-layer[data-v-b120ba1a]{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;padding:20px}.firmware-update-backdrop[data-v-b120ba1a]{position:absolute;inset:0;background:#020409bd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.firmware-update-modal[data-v-b120ba1a]{position:relative;z-index:1;width:min(100%,460px);max-height:min(720px,calc(100dvh - 40px));overflow:auto;border:1px solid rgba(255,255,255,.16);border-radius:24px;padding:24px;color:var(--text, #fff);background:radial-gradient(circle at 100% 0%,rgba(39,184,157,.18),transparent 48%),#1c2027;box-shadow:0 26px 80px #0000008c}.firmware-update-close[data-v-b120ba1a]{position:absolute;top:14px;right:14px;width:36px;height:36px;border:1px solid rgba(255,255,255,.16);border-radius:12px;color:#ffffffd9;background:#ffffff0f;font:400 26px/1 sans-serif;cursor:pointer}.firmware-update-kicker[data-v-b120ba1a],.firmware-update-notes>span[data-v-b120ba1a],.firmware-update-meta[data-v-b120ba1a]{color:#9bdcff;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}h2[data-v-b120ba1a]{margin:7px 40px 8px 0;font-size:1.55rem}.firmware-update-summary[data-v-b120ba1a],.firmware-update-warning[data-v-b120ba1a]{margin:0;color:#ffffffb8;font-size:14px;line-height:1.5}.firmware-update-summary strong[data-v-b120ba1a]{color:#fff}.firmware-update-notes[data-v-b120ba1a]{margin:18px 0 10px;padding:13px 14px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:#ffffff0b}.firmware-update-notes p[data-v-b120ba1a]{margin:6px 0 0;color:#ffffffd6;font-size:13px;line-height:1.45;white-space:pre-wrap}.firmware-update-meta[data-v-b120ba1a]{margin-top:17px;color:#9ae8c9}.firmware-update-warning[data-v-b120ba1a]{margin-top:8px;font-size:12px}.firmware-update-progress-panel[data-v-b120ba1a]{margin-top:20px;padding:16px;border:1px solid rgba(255,255,255,.11);border-radius:16px;background:#ffffff0b}.firmware-update-progress-panel.success[data-v-b120ba1a]{border-color:#68e5b44d;background:#46be9114}.firmware-update-progress-panel.error[data-v-b120ba1a]{border-color:#ff697452;background:#be324014}.firmware-update-progress-copy[data-v-b120ba1a]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;color:#ffffffdb;font-size:13px;line-height:1.4}.firmware-update-progress-copy strong[data-v-b120ba1a]{flex:0 0 auto;color:#fff}.firmware-update-progress-track[data-v-b120ba1a]{position:relative;height:9px;margin-top:13px;overflow:hidden;border-radius:999px;background:#ffffff1a}.firmware-update-progress-fill[data-v-b120ba1a]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#66c8e9,#80e2b9);box-shadow:0 0 16px #5ed3c25c;transition:width .18s ease}.firmware-update-progress-track.indeterminate .firmware-update-progress-fill[data-v-b120ba1a]{position:absolute;animation:firmware-progress-slide-b120ba1a 1.15s ease-in-out infinite}.firmware-update-error[data-v-b120ba1a]{margin:10px 0 0;color:#ffafb5;font-size:13px;line-height:1.45}@keyframes firmware-progress-slide-b120ba1a{0%{transform:translate(-120%)}to{transform:translate(310%)}}.firmware-update-actions[data-v-b120ba1a]{display:flex;gap:10px;margin-top:22px}.firmware-update-actions.single[data-v-b120ba1a]{justify-content:flex-end}.firmware-update-actions.single .firmware-update-button[data-v-b120ba1a]{flex:0 1 180px}.firmware-update-button[data-v-b120ba1a]{min-height:44px;flex:1;border-radius:13px;padding:0 14px;font:inherit;font-weight:800;cursor:pointer}.firmware-update-button.ghost[data-v-b120ba1a]{border:1px solid rgba(255,255,255,.17);color:#fff;background:#ffffff0a}.firmware-update-button.primary[data-v-b120ba1a]{border:1px solid rgba(104,229,180,.44);color:#06251b;background:linear-gradient(135deg,#8be7c5,#50bde0)}@media(max-width:600px){.firmware-update-layer[data-v-b120ba1a]{align-items:end;padding:12px 12px calc(var(--dock-height, 76px) + 12px)}.firmware-update-modal[data-v-b120ba1a]{width:100%;border-radius:22px;padding:20px}}.led[data-v-84429344]{flex:0 0 auto;left:8px;width:8px;height:8px;border-radius:999px;background:#2aff4e;box-shadow:0 0 6px #7dff32e6,0 0 14px #43ce2799,0 0 24px #33961466;animation:breathe-84429344 1.8s ease-in-out infinite}@keyframes breathe-84429344{0%{opacity:.4;transform:scale(.9);box-shadow:0 0 4px #32ff3c99,0 0 10px #32ff3c66,0 0 18px #32ff3c40}50%{opacity:1;transform:scale(1.15);box-shadow:0 0 8px #32ff3c,0 0 18px #32ff3ccc,0 0 32px #32ff3c99}to{opacity:.4;transform:scale(.9);box-shadow:0 0 4px #32ff3c99,0 0 10px #32ff3c66,0 0 18px #32ff3c40}}:root{color-scheme:dark;--bg: #070A12;--text: rgba(255, 255, 255, .92);--muted: rgba(255, 255, 255, .68);--glass: rgba(255, 255, 255, .08);--glass-strong: rgba(255, 255, 255, .11);--glass-border: rgba(255, 255, 255, .16);--radius: 18px;--radius-sm: 14px;--shadow: 0 10px 30px rgba(0, 0, 0, .35);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);--page-pad: 14px;--maxw: 980px;--tap: 44px;--dock-bottom: calc(10px + var(--safe-bottom));--dock-pad: 10px;--dock-radius: 22px}*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";overflow-x:hidden}select,option,optgroup{color:var(--text);background-color:#1a1f29}select{color-scheme:dark}a{color:inherit}.app{min-height:100vh;position:relative;overflow:hidden;padding-top:calc(10px + var(--safe-top));padding-bottom:calc(78px + var(--safe-bottom))}.bg{position:absolute;inset:0;pointer-events:none}.blob{position:absolute;width:520px;height:520px;filter:blur(60px);opacity:.55;border-radius:999px}.blob-a{top:-170px;left:-160px;background:radial-gradient(circle at 30% 30%,#7c3aed,transparent 60%)}.blob-b{bottom:-190px;right:-170px;background:radial-gradient(circle at 30% 30%,#06b6d4,transparent 60%)}.grid{position:absolute;inset:0;background:linear-gradient(to right,rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.05) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(circle at 50% 30%,#000,#0000 72%);mask-image:radial-gradient(circle at 50% 30%,#000,#0000 72%);opacity:.35}.shell{position:relative;z-index:1;margin:0 auto;padding:0 var(--page-pad) var(--page-pad)}.glass{background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow);border-radius:var(--radius)}.content{position:relative;z-index:1;padding:0 var(--page-pad) var(--page-pad);max-width:var(--maxw);margin:0 auto}.page{padding:10px 0 18px;min-width:0}.page-title{margin:6px 0 4px;font-size:22px;letter-spacing:.2px}.page-subtitle{margin:0 0 14px;color:var(--muted);font-size:14px;line-height:1.35}@media(max-width:899px){.page-subtitle{display:none}.page-title{margin-bottom:14px}}.topbar{position:sticky;top:10px;z-index:10;margin:0 var(--page-pad) 12px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.brand{display:inline-flex;align-items:center;gap:12px;min-width:0}.brand-dot{width:10px;height:10px;border-radius:999px;background:#ffffffe6;box-shadow:0 0 0 6px #ffffff14;flex:0 0 auto}.brand-text{min-width:0}.brand-title{font-weight:700;letter-spacing:.2px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-subtitle{margin-top:2px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-version{margin-left:5px;color:#ffffff7a;font-variant-numeric:tabular-nums}.topbar-actions{display:inline-flex;gap:10px;align-items:center;flex:0 0 auto}.pill{font-size:12px;padding:8px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:#ffffff0f;color:var(--muted);display:inline-flex;align-items:center;gap:8px;min-height:34px;max-width:42vw}.pill-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pill-dot{width:8px;height:8px;border-radius:999px;background:#ffffffb3;box-shadow:0 0 0 5px #ffffff0f;flex:0 0 auto}.card{padding:14px;border-radius:var(--radius);background:#ffffff0f;border:1px solid rgba(255,255,255,.14);min-width:0}.row{display:flex;gap:10px;flex-wrap:wrap;min-width:0}.hint{margin-top:10px;color:var(--muted);font-size:13px;line-height:1.4}.btn{appearance:none;border:1px solid rgba(255,255,255,.18);background:#ffffff1a;color:var(--text);padding:10px 12px;border-radius:12px;cursor:pointer;transition:transform .08s ease,background .2s ease;min-height:var(--tap)}.btn:not(:disabled):active{transform:scale(.98)}.btn:not(:disabled):hover{background:#ffffff24}.btn-ghost{background:#ffffff0d}.btn:disabled{opacity:.42;cursor:not-allowed;transform:none;filter:grayscale(.28);pointer-events:none;border-color:#ffffff1a;background:#ffffff09;color:#ffffff85}.tabbar{position:fixed;left:var(--page-pad);right:var(--page-pad);bottom:calc(10px + var(--safe-bottom));z-index:20;--tab-gap: 6px;--tab-pad: 8px;display:grid;grid-template-columns:repeat(5,1fr);gap:var(--tab-gap);padding:var(--tab-pad);border-radius:22px;overflow:hidden}.data-tabbar{position:fixed;left:var(--page-pad);right:var(--page-pad);bottom:calc(10px + var(--safe-bottom));z-index:20;--tab-gap: 6px;--tab-pad: 8px;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--tab-gap);padding:var(--tab-pad);border-radius:22px;overflow:hidden}.not-connected-tabbar{position:fixed;left:var(--page-pad);right:var(--page-pad);bottom:calc(10px + var(--safe-bottom));z-index:20;--tab-gap: 6px;--tab-pad: 8px;display:grid;grid-template-columns:repeat(2,1fr);padding:var(--tab-pad);border-radius:22px;overflow:hidden;justify-content:center}.tab{position:relative;z-index:1;text-decoration:none;text-align:center;padding:10px 8px;border-radius:16px;border:1px solid transparent;display:grid;place-items:center;gap:6px;min-height:var(--tap);min-width:0;color:var(--muted);font-size:12px}.tab-ico{width:20px;height:20px;opacity:.92}.desktop-analysis-tab{display:none}.tab-label{display:block;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.tab.active{color:var(--text);background:transparent;border-color:transparent}.tab-indicator{position:absolute;z-index:0;pointer-events:none;inset:var(--tab-pad);--i: 0}.tab-indicator:before{content:"";position:absolute;left:0;top:0;height:100%;width:20%;border-radius:18px;background:#ffffff14;box-shadow:0 12px 26px #00000038,0 0 0 6px #ffffff08;transform:translate(calc(var(--i) * 100%));transition:transform .24s ease}.tabbar:has(.tab:nth-child(1).active) .tab-indicator{--i: 0}.tabbar:has(.tab:nth-child(2).active) .tab-indicator{--i: 1}.tabbar:has(.tab:nth-child(3).active) .tab-indicator{--i: 2}.tabbar:has(.tab:nth-child(4).active) .tab-indicator{--i: 3}.tabbar:has(.tab:nth-child(5).active) .tab-indicator{--i: 4}@media(max-width:360px){.tab-label{display:none}.tab{gap:0}}@media(min-width:900px){.app{padding-bottom:14px}.shell{display:grid;grid-template-columns:92px 1fr;gap:14px;align-items:start;height:auto;min-height:100vh}.tabbar{position:sticky;top:calc(84px + var(--safe-top));left:auto;right:auto;bottom:auto;width:92px;padding:10px;grid-template-columns:1fr;grid-auto-rows:minmax(56px,auto);gap:10px;border-radius:22px;overflow:hidden}.desktop-analysis-tab{display:grid}.tab-indicator{inset:10px}.tab-indicator:before{width:100%;height:16.6667%;transform:translateY(calc(var(--i) * 100%))}.tabbar:has(.tab:nth-child(6).active) .tab-indicator{--i: 5}.tab{padding:12px 8px;gap:8px}.tab-label{display:block;font-size:12px}.content{padding:0;max-width:none;width:80%}.not-connected-tabbar{position:sticky;top:calc(84px + var(--safe-top));left:auto;right:auto;bottom:auto;width:92px;padding:10px;display:grid;grid-template-columns:1fr;padding:var(--tab-pad);border-radius:22px;overflow:hidden;justify-content:center;align-items:flex-start;min-height:45vh}.data-tabbar{position:sticky;top:calc(84px + var(--safe-top));left:auto;right:auto;bottom:auto;width:92px;padding:10px;grid-template-columns:1fr;grid-auto-rows:minmax(56px,auto);gap:10px;border-radius:22px;overflow:hidden}}
