:root{--bg-primary: #080d1a;--bg-secondary: #0d1528;--bg-card: #111827;--bg-card-hover: #162033;--bg-glass: rgba(17, 24, 39, .75);--neon-cyan: #00e5ff;--neon-blue: #2979ff;--neon-purple: #7c3aed;--neon-green: #00e676;--neon-yellow: #ffd600;--neon-red: #ff1744;--neon-orange: #ff6d00;--text-primary: #e2e8f0;--text-secondary:#94a3b8;--text-muted: #475569;--text-accent: #00e5ff;--border: rgba(0, 229, 255, .12);--border-glow: rgba(0, 229, 255, .35);--gradient-card: linear-gradient(135deg, #111827 0%, #0d1528 100%);--gradient-neon: linear-gradient(135deg, #00e5ff 0%, #2979ff 100%);--gradient-green: linear-gradient(135deg, #00e676 0%, #00b248 100%);--gradient-red: linear-gradient(135deg, #ff1744 0%, #b71c1c 100%);--gradient-yellow: linear-gradient(135deg, #ffd600 0%, #ff6d00 100%);--radius-sm: 6px;--radius-md: 12px;--radius-lg: 18px;--radius-xl: 24px;--shadow-card: 0 4px 32px rgba(0, 0, 0, .4);--shadow-glow-cyan: 0 0 20px rgba(0, 229, 255, .25);--shadow-glow-green: 0 0 20px rgba(0, 230, 118, .25);--shadow-glow-red: 0 0 20px rgba(255, 23, 68, .25);--shadow-glow-yellow: 0 0 20px rgba(255, 214, 0, .25);--transition-fast: .15s ease;--transition-smooth: .3s cubic-bezier(.4, 0, .2, 1);--transition-spring: .5s cubic-bezier(.34, 1.56, .64, 1);--font-body: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--font-display: "Orbitron", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-glow);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--neon-cyan)}#root{min-height:100vh;display:flex;flex-direction:column}.bg-grid{display:none}.bg-glow{position:fixed;width:600px;height:600px;border-radius:50%;filter:blur(120px);pointer-events:none;z-index:0;opacity:.15}.bg-glow-1{background:var(--neon-blue);top:-200px;left:-200px}.bg-glow-2{background:var(--neon-purple);bottom:-200px;right:-200px}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-muted{color:var(--text-muted)}.text-cyan{color:var(--neon-cyan)}.card{background:var(--gradient-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;position:relative;overflow:hidden;transition:border-color var(--transition-smooth),box-shadow var(--transition-smooth),transform var(--transition-smooth)}.card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,rgba(0,229,255,.04) 0%,transparent 60%);pointer-events:none}.card:hover{border-color:var(--border-glow);box-shadow:var(--shadow-glow-cyan);transform:translateY(-2px)}.card-sm{padding:1rem;border-radius:var(--radius-md)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1.75rem;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all var(--transition-smooth);position:relative;overflow:hidden;white-space:nowrap}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff0f;opacity:0;transition:opacity var(--transition-fast)}.btn:hover:after{opacity:1}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:active{transform:none}.btn-primary{background:var(--gradient-neon);color:#080d1a;box-shadow:0 4px 20px #00e5ff59}.btn-primary:hover{box-shadow:0 6px 28px #00e5ff80;transform:translateY(-1px)}.btn-danger{background:var(--gradient-red);color:#fff;box-shadow:0 4px 20px #ff17444d}.btn-danger:hover{box-shadow:0 6px 28px #ff174480;transform:translateY(-1px)}.btn-warning{background:linear-gradient(135deg,#ff6d00,#ffd600);color:#080d1a;box-shadow:0 4px 20px #ff6d0059}.btn-warning:hover{box-shadow:0 6px 28px #ff6d008c;transform:translateY(-1px)}.btn-success{background:var(--gradient-green);color:#080d1a;box-shadow:0 4px 20px #00e67659}.btn-success:hover{box-shadow:0 6px 28px #00e6768c;transform:translateY(-1px)}.btn-lg{padding:1rem 2.5rem;font-size:1.0625rem;border-radius:var(--radius-lg)}.btn-md{padding:.75rem 2rem;font-size:.9375rem}.btn-sm{padding:.5rem 1rem;font-size:.8125rem}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.btn-ghost:hover{border-color:var(--border-glow);color:var(--text-primary);background:#00e5ff0d}.scan-info-box{display:flex;align-items:flex-start;gap:.5rem;padding:.875rem 1rem;background:#00e5ff0d;border:1px solid rgba(0,229,255,.18);border-radius:var(--radius-md);color:var(--text-secondary);font-size:.8125rem;line-height:1.55;max-width:500px;width:100%;text-align:left}.scan-info-box strong{color:var(--neon-cyan)}.badge-demo{background:#7c3aed33;color:#a78bfa;border:1px solid rgba(124,58,237,.35);border-radius:4px;font-size:.55rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;padding:2px 5px}@keyframes ring-expand{0%{transform:scale(.85);opacity:.6}to{transform:scale(1.15);opacity:0}}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .75rem;border-radius:99px;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.badge-active{background:#00e67626;color:var(--neon-green);border:1px solid rgba(0,230,118,.3)}.badge-inactive{background:#ff174426;color:var(--neon-red);border:1px solid rgba(255,23,68,.3)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse-dot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.4);opacity:.7}}@keyframes rotate-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}.animate-fadeInUp{animation:fadeInUp .5s ease both}.animate-fadeIn{animation:fadeIn .4s ease both}.animate-float{animation:float 3s ease-in-out infinite}.stagger-1{animation-delay:.05s}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.spinner{width:20px;height:20px;border:2.5px solid rgba(0,229,255,.25);border-top-color:var(--neon-cyan);border-radius:50%;animation:rotate-slow .7s linear infinite}.spinner-lg{width:40px;height:40px;border-width:3.5px}.status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-dot.connected{background:var(--neon-green);animation:pulse-dot 1.5s ease-in-out infinite;box-shadow:0 0 8px var(--neon-green)}.status-dot.disconnected{background:var(--neon-red)}.grid{display:grid;gap:1.25rem}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 1024px){.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){.grid-4{grid-template-columns:1fr}}.section-label{font-size:.6875rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.75rem}.header-wrapper{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:#080d1ae6;border-bottom:1px solid var(--border);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);position:sticky;top:0;z-index:50;gap:1rem}.header-left{display:flex;align-items:center;flex-shrink:0}.header-logo{display:flex;align-items:center;gap:.875rem}.header-logoIcon{width:42px;height:42px;border-radius:var(--radius-md);background:var(--gradient-neon);display:flex;align-items:center;justify-content:center;font-size:1.375rem;color:#080d1a;box-shadow:var(--shadow-glow-cyan);flex-shrink:0}.header-title{font-size:1.0625rem;font-weight:800;letter-spacing:.12em;color:var(--neon-cyan);line-height:1;margin-bottom:2px}.header-subtitle{font-size:.6875rem;color:var(--text-muted);letter-spacing:.05em;font-weight:400}.header-deviceChip{display:flex;align-items:center;gap:.5rem;padding:.4rem 1rem;background:#00e5ff12;border:1px solid var(--border-glow);border-radius:99px;animation:fadeIn .4s ease}@media (max-width: 768px){.header-title{font-size:.9rem}}.conn-screen{flex:1;display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 70px);padding:2rem;position:relative;overflow:hidden}.conn-rings{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.conn-ring{position:absolute;border-radius:50%;border:1px solid rgba(0,229,255,.08);animation:ring-expand 4s ease-in-out infinite}.conn-ring1{width:300px;height:300px;animation-delay:0s}.conn-ring2{width:500px;height:500px;animation-delay:1s}.conn-ring3{width:700px;height:700px;animation-delay:2s}.conn-content{display:flex;flex-direction:column;align-items:center;gap:1.5rem;max-width:520px;width:100%;position:relative;z-index:1;text-align:center}.conn-iconWrap{position:relative;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(0,229,255,.15) 0%,transparent 70%);border:2px solid var(--border-glow);display:flex;align-items:center;justify-content:center;transition:all var(--transition-smooth);animation:float 3s ease-in-out infinite}.conn-iconWrap.conn-scanning{border-color:var(--neon-cyan);box-shadow:0 0 30px #00e5ff59}.conn-btIcon{font-size:3.5rem;color:var(--neon-cyan);filter:drop-shadow(0 0 12px rgba(0,229,255,.6))}.conn-scanRing{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:2px solid transparent;border-top-color:var(--neon-cyan);border-right-color:var(--neon-cyan);animation:rotate-slow 1s linear infinite}.conn-heading{font-size:2rem;font-weight:700;letter-spacing:.08em;color:var(--text-primary);line-height:1.2}.conn-description{color:var(--text-secondary);font-size:.9375rem;line-height:1.65;max-width:380px}.conn-connectBtn{min-width:260px;font-size:1rem!important;letter-spacing:.04em;position:relative;overflow:hidden}.conn-connectBtn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);transform:translate(-100%);transition:transform .5s ease}.conn-connectBtn:hover:before{transform:translate(100%)}.conn-ripple{animation:ripple-effect .6s ease-out}.conn-warning{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:#ffd60014;border:1px solid rgba(255,214,0,.25);border-radius:var(--radius-md);color:var(--neon-yellow);font-size:.85rem;max-width:400px}.conn-errorBox{padding:.75rem 1rem;background:#ff17441a;border:1px solid rgba(255,23,68,.3);border-radius:var(--radius-md);color:var(--neon-red);max-width:400px}@media (max-width: 480px){.conn-heading{font-size:1.5rem}.conn-iconWrap{width:90px;height:90px}.conn-btIcon{font-size:2.5rem}}.dash-wrapper{display:flex;flex-direction:column;gap:1.25rem;padding:1.5rem;max-width:1600px;margin:0 auto;width:100%}.dash-topBar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem}.dash-topLeft{display:flex;align-items:center;gap:.75rem}.dash-topIcon{font-size:1.5rem;color:var(--neon-cyan);opacity:.7}.dash-pageTitle{font-size:1.125rem;font-weight:700;letter-spacing:.08em;color:var(--text-primary);line-height:1.2}.dash-topRight{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}@media (max-width: 640px){.dash-wrapper{padding:1rem;gap:1rem}.dash-topBar{flex-direction:column;align-items:flex-start}.dash-topRight{flex-wrap:wrap}}.card-status{display:flex;flex-direction:column;gap:1rem;position:relative;overflow:hidden;transition:all var(--transition-smooth)}.card-cornerAccent{position:absolute;top:0;right:0;width:48px;height:48px;clip-path:polygon(100% 0,0 0,100% 100%);opacity:.6}.card-accent-cyan{background:var(--neon-cyan)}.card-accent-green{background:var(--neon-green)}.card-accent-red{background:var(--neon-red)}.card-accent-yellow{background:var(--neon-yellow)}.card-accent-purple{background:var(--neon-purple)}.card-header{display:flex;align-items:flex-start;gap:.75rem}.card-iconBox{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.card-icon-cyan{background:#00e5ff26;color:var(--neon-cyan);border:1px solid rgba(0,229,255,.25)}.card-icon-green{background:#00e67626;color:var(--neon-green);border:1px solid rgba(0,230,118,.25)}.card-icon-red{background:#ff174426;color:var(--neon-red);border:1px solid rgba(255,23,68,.25)}.card-icon-yellow{background:#ffd6001f;color:var(--neon-yellow);border:1px solid rgba(255,214,0,.2)}.card-icon-purple{background:#7c3aed26;color:#a78bfa;border:1px solid rgba(124,58,237,.25)}.card-labelGroup{display:flex;flex-direction:column;gap:2px}.card-label{margin-bottom:0!important}.card-subLabel{font-size:.6875rem;color:var(--text-muted)}.card-valueRow{display:flex;align-items:baseline;gap:.3rem}.card-value{font-size:2.25rem;font-weight:700;line-height:1;transition:color var(--transition-smooth)}.card-val-cyan{color:var(--neon-cyan)}.card-val-green{color:var(--neon-green)}.card-val-red{color:var(--neon-red)}.card-val-yellow{color:var(--neon-yellow)}.card-val-purple{color:#a78bfa}.card-unit{font-size:1rem;font-weight:500;color:var(--text-secondary)}.card-extra{margin-top:-.25rem}.card-status-flash{animation:card-flash .5s ease-out}.card-status-cyan:hover{border-color:#00e5ff66!important;box-shadow:var(--shadow-glow-cyan)!important}.card-status-green:hover{border-color:#00e67666!important;box-shadow:var(--shadow-glow-green)!important}.card-status-red:hover{border-color:#ff174466!important;box-shadow:var(--shadow-glow-red)!important}.card-status-yellow:hover{border-color:#ffd60066!important;box-shadow:var(--shadow-glow-yellow)!important}.batt-wrapper{display:flex;align-items:center;gap:.625rem;width:100%}.batt-icon{font-size:1.375rem;flex-shrink:0;line-height:1}.batt-track{flex:1;height:10px;background:#ffffff12;border-radius:99px;overflow:hidden;position:relative}.batt-fill{height:100%;border-radius:99px;position:relative;transition:width .7s cubic-bezier(.4,0,.2,1);min-width:4px}.batt-green{color:var(--neon-green)}.batt-yellow{color:var(--neon-yellow)}.batt-red{color:var(--neon-red)}.batt-fill.batt-green{background:linear-gradient(90deg,#00b248,var(--neon-green));box-shadow:0 0 10px #00e67666}.batt-fill.batt-yellow{background:linear-gradient(90deg,#e65100,var(--neon-yellow));box-shadow:0 0 10px #ffd60066}.batt-fill.batt-red{background:linear-gradient(90deg,#b71c1c,var(--neon-red));box-shadow:0 0 10px #ff174466}.batt-shimmer{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.25) 50%,transparent 100%);background-size:200% 100%;animation:shimmer 2s linear infinite}.batt-label{font-family:var(--font-mono);font-size:.875rem;font-weight:600;min-width:52px;text-align:right;flex-shrink:0}.table-row-hover{transition:background var(--transition-fast) ease}.table-row-hover:hover{background:#00e5ff0a!important}.toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:10px;z-index:9999;max-width:380px;width:calc(100% - 48px);pointer-events:none}.toast{pointer-events:auto;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:1rem 1.25rem;box-shadow:var(--shadow-card);color:var(--text-primary);display:flex;align-items:center;gap:12px;animation:slide-in .3s cubic-bezier(.34,1.56,.64,1) forwards}.toast-success{border-color:#00e67666;box-shadow:var(--shadow-glow-green)}.toast-error{border-color:#ff174466;box-shadow:var(--shadow-glow-red)}.toast-info{border-color:#00e5ff66;box-shadow:var(--shadow-glow-cyan)}.toast-warning{border-color:#ffd60066;box-shadow:var(--shadow-glow-yellow)}@keyframes slide-in{0%{transform:translate(120%);opacity:0}to{transform:translate(0);opacity:1}}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;width:100%;margin-top:1rem}.device-card{background:#ffffff05;border:1px solid var(--border);border-radius:var(--radius-md);padding:1rem;display:flex;flex-direction:column;gap:8px;transition:all var(--transition-smooth);cursor:pointer;position:relative;overflow:hidden;text-align:left}.device-card:hover{border-color:var(--border-glow);box-shadow:var(--shadow-glow-cyan);transform:translateY(-2px);background:#ffffff0a}.device-card.connected{border-color:#00e67666;box-shadow:var(--shadow-glow-green);background:#00e67608}.device-header{display:flex;justify-content:space-between;align-items:flex-start}.device-name{font-weight:600;color:var(--text-primary);font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.device-rssi-container{display:flex;align-items:center;gap:4px;font-size:.75rem;color:var(--text-secondary)}.rssi-bars{display:flex;align-items:flex-end;gap:2px;height:12px;width:14px}.rssi-bar{width:2px;background:#fff3;border-radius:99px;transition:background .3s}.rssi-bar:nth-child(1){height:25%}.rssi-bar:nth-child(2){height:50%}.rssi-bar:nth-child(3){height:75%}.rssi-bar:nth-child(4){height:100%}.rssi-strong .rssi-bar{background:var(--neon-green)}.rssi-medium .rssi-bar:nth-child(-n+3){background:var(--neon-yellow)}.rssi-weak .rssi-bar:nth-child(-n+2){background:var(--neon-orange)}.rssi-poor .rssi-bar:nth-child(1){background:var(--neon-red)}.warn-banner{background:#ff174414;border:1px solid rgba(255,23,68,.3);border-radius:var(--radius-md);padding:1rem 1.25rem;color:var(--neon-red);display:flex;align-items:center;gap:12px;width:100%;box-shadow:var(--shadow-glow-red);animation:pulse-warn 2s ease-in-out infinite}@keyframes pulse-warn{0%,to{border-color:#ff17444d;box-shadow:var(--shadow-glow-red)}50%{border-color:#ff174499;box-shadow:0 0 24px #ff174466}}@media (max-width: 640px){.header-wrapper{flex-direction:row;align-items:center;justify-content:space-between;padding:.75rem 1rem;gap:.5rem}.header-left{width:auto;justify-content:flex-start}.header-logo{flex-direction:row;align-items:center;gap:.5rem}.header-wrapper>div:last-child{width:auto;justify-content:flex-end;flex-wrap:nowrap;gap:.5rem}.header-deviceChip{padding:.35rem .6rem;font-size:.75rem}.header-deviceId{display:none}.dash-wrapper{padding:.75rem;gap:.75rem}.dash-topBar{flex-direction:column;align-items:center;text-align:center;gap:.75rem;width:100%}.dash-topLeft{flex-direction:column;gap:.25rem;align-items:center}.dash-topRight{width:100%;justify-content:center;gap:.5rem}.dash-topRight .btn{flex:1;min-width:130px;max-width:200px}.conn-screen{padding:1.5rem 1rem}.conn-heading{font-size:1.5rem}.conn-iconWrap{width:80px;height:80px}.conn-btIcon{font-size:2.2rem}.conn-description{font-size:.825rem;line-height:1.5}.conn-connectBtn{width:100%;min-width:unset;max-width:280px}.card{padding:1rem;border-radius:var(--radius-md)}.card-value{font-size:1.75rem}.card-iconBox{width:36px;height:36px;font-size:1.1rem}}.loc-card{cursor:default;transition:all var(--transition-smooth);grid-column:1 / -1}.loc-card.loc-card-active{cursor:pointer;border-color:#00e67640}.loc-card.loc-card-active:hover{border-color:#00e67680!important;box-shadow:0 0 24px #00e67633!important;transform:translateY(-2px)}.loc-map-hint{margin-left:auto;display:flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:600;color:var(--neon-cyan);opacity:.75;letter-spacing:.05em;text-transform:uppercase;transition:opacity var(--transition-fast)}.loc-card.loc-card-active:hover .loc-map-hint{opacity:1}.loc-coords{display:flex;flex-direction:column;gap:.5rem}.loc-coord-row{display:flex;align-items:center;gap:.75rem}.loc-coord-label{font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);width:28px;flex-shrink:0}.loc-coord-value{font-size:1rem;font-weight:600;color:var(--neon-green);letter-spacing:.02em}.loc-accuracy{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.loc-waiting,.loc-error{display:flex;align-items:center;gap:.625rem;font-size:.85rem;color:var(--text-secondary)}.loc-error{color:var(--neon-red)}@keyframes loc-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loc-spin{animation:loc-spin 1s linear infinite}.map-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#080d1ae0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:1rem;animation:fadeIn .25s ease both}.map-modal{width:100%;max-width:900px;height:min(80vh,620px);background:var(--bg-card);border:1px solid var(--border-glow);border-radius:var(--radius-xl);box-shadow:0 0 60px #00e5ff26,var(--shadow-card);display:flex;flex-direction:column;overflow:hidden;animation:fadeInUp .3s cubic-bezier(.34,1.56,.64,1) both}.map-modal-header{display:flex;align-items:center;gap:1rem;padding:.875rem 1.25rem;background:#080d1ae6;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}.map-modal-title{display:flex;align-items:center;gap:.625rem;flex-shrink:0}.map-device-chip{background:#00e5ff1a;border:1px solid rgba(0,229,255,.25);border-radius:99px;padding:.2rem .65rem;font-size:.75rem;font-family:var(--font-mono);color:var(--neon-cyan)}.map-modal-coords{display:flex;align-items:center;gap:.5rem;flex:1}.map-accuracy-chip{background:#00e6761f;border:1px solid rgba(0,230,118,.25);border-radius:99px;padding:.15rem .5rem;font-size:.7rem;font-family:var(--font-mono);color:var(--neon-green)}.map-close-btn{margin-left:auto;flex-shrink:0;padding:.4rem .65rem!important}.map-container{flex:1;width:100%;min-height:0}.map-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-card);padding:2rem;text-align:center}@media (max-width: 640px){.map-modal{height:90vh;border-radius:var(--radius-lg)}.map-modal-header{gap:.5rem;padding:.75rem 1rem}.map-modal-coords{display:none}.loc-coord-value{font-size:.875rem}}.bt-status-panel{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.bt-status-badge{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .8rem;border-radius:99px;font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border:1px solid transparent;white-space:nowrap}.bt-badge-connected{background:#00e6761f;color:var(--neon-green);border-color:#00e6764d;box-shadow:0 0 10px #00e67626}.bt-badge-connecting{background:#00e5ff1a;color:var(--neon-cyan);border-color:#00e5ff4d;animation:pulse-badge 1.5s ease-in-out infinite}.bt-badge-fetching{background:#7c3aed1f;color:#a78bfa;border-color:#7c3aed4d;animation:pulse-badge 1.5s ease-in-out infinite}.bt-badge-disconnected{background:#ff17441a;color:var(--neon-red);border-color:#ff174440}@keyframes pulse-badge{0%,to{opacity:1}50%{opacity:.65}}.status-dot.pulsing{background:var(--neon-cyan);animation:pulse-dot 1s ease-in-out infinite;box-shadow:0 0 6px var(--neon-cyan)}.bt-device-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .7rem;background:#00e5ff12;border:1px solid rgba(0,229,255,.2);border-radius:99px;font-size:.75rem;color:var(--neon-cyan);white-space:nowrap;max-width:220px;overflow:hidden}.bt-device-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bt-device-id{font-size:.65rem;opacity:.6;flex-shrink:0}.bt-error-banner{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;background:#ff174414;border:1px solid rgba(255,23,68,.3);border-radius:var(--radius-md);color:var(--neon-red);font-size:.875rem}.fetch-result-box{border-radius:var(--radius-md);border:1px solid;overflow:hidden}.fetch-result-success{background:#00e6760d;border-color:#00e6764d}.fetch-result-error{background:#ff17440f;border-color:#ff17444d}.fetch-result-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;background:#ffffff08;border-bottom:1px solid rgba(255,255,255,.07)}.fetch-result-title{display:flex;align-items:center;gap:.4rem;font-size:.8125rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary)}.fetch-result-body{padding:.875rem 1rem;font-size:.8125rem;line-height:1.6;color:var(--text-primary);max-height:200px;overflow-y:auto}.dash-scan-panel{background:#080d1ab3;border:1px solid rgba(0,229,255,.15);border-radius:var(--radius-lg);padding:1.25rem;display:flex;flex-direction:column;gap:1rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dash-scan-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.dash-scan-empty{padding:1.5rem;text-align:center;color:var(--text-muted);font-size:.875rem;border:1px dashed var(--border);border-radius:var(--radius-md)}@media (max-width: 640px){.bt-status-panel{width:100%;justify-content:center}.bt-device-chip{max-width:160px}.bt-device-id{display:none}.btn-label{font-size:.7rem;letter-spacing:.01em}.dash-topRight .btn{font-size:.7rem;padding:.45rem .6rem;gap:.3rem;min-width:0}.dash-scan-panel{padding:1rem}.fetch-result-body{font-size:.75rem}}@media (max-width: 480px){.bt-status-badge{font-size:.65rem;padding:.25rem .6rem}}.update-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#080d1ad9;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:fadeIn .35s ease}.update-modal-force{background:#04070ff7}.update-modal-card{background:linear-gradient(145deg,#111827,#0a1020);border:1px solid rgba(0,229,255,.28);border-radius:var(--radius-xl);padding:2rem;max-width:420px;width:100%;position:relative;overflow:hidden;box-shadow:0 0 0 1px #00e5ff14,0 20px 60px #000000b3,0 0 80px #00e5ff14;display:flex;flex-direction:column;gap:1.25rem}.update-modal-card:before{content:"";position:absolute;top:0;left:10%;right:10%;height:2px;background:linear-gradient(90deg,transparent,var(--neon-cyan),transparent);border-radius:0 0 2px 2px}.update-modal-corner{position:absolute;top:0;right:0;width:64px;height:64px;clip-path:polygon(100% 0,0 0,100% 100%);background:linear-gradient(135deg,var(--neon-cyan),var(--neon-blue));opacity:.35}.update-modal-header{display:flex;align-items:center;gap:1rem}.update-modal-icon-wrap{width:52px;height:52px;border-radius:var(--radius-md);background:#00e5ff1f;border:1px solid rgba(0,229,255,.3);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 0 20px #00e5ff33;animation:float 3s ease-in-out infinite}.update-modal-icon{font-size:1.5rem;color:var(--neon-cyan);filter:drop-shadow(0 0 6px rgba(0,229,255,.7))}.update-modal-title{font-size:1.125rem;font-weight:700;letter-spacing:.06em;color:var(--text-primary);margin-bottom:.2rem}.update-modal-subtitle{font-size:.8125rem;color:var(--text-secondary);line-height:1.5}.update-modal-versions{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem;background:#00e5ff0a;border:1px solid rgba(0,229,255,.1);border-radius:var(--radius-md)}.update-modal-version-chip{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.5rem 1rem;border-radius:var(--radius-sm);min-width:90px}.update-modal-version-old{background:#94a3b814;border:1px solid rgba(148,163,184,.15)}.update-modal-version-new{background:#00e5ff1a;border:1px solid rgba(0,229,255,.3);box-shadow:0 0 12px #00e5ff26}.update-modal-version-label{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted)}.update-modal-version-val{font-family:var(--font-mono);font-size:1rem;font-weight:700;color:var(--text-primary)}.update-modal-version-new .update-modal-version-val{color:var(--neon-cyan)}.update-modal-arrow{font-size:1.25rem;color:var(--neon-cyan);opacity:.7}.update-modal-notes{background:#2979ff12;border:1px solid rgba(41,121,255,.2);border-radius:var(--radius-md);padding:.875rem 1rem}.update-modal-notes-label{display:block;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--neon-blue);margin-bottom:.4rem}.update-modal-notes-text{font-size:.8125rem;color:var(--text-secondary);line-height:1.6}.update-modal-progress-wrap{display:flex;flex-direction:column;gap:.625rem}.update-modal-progress-header{display:flex;align-items:center;justify-content:space-between}.update-modal-progress-label{font-size:.8125rem;color:var(--text-secondary);font-weight:500}.update-modal-progress-pct{font-family:var(--font-mono);font-size:.9375rem;font-weight:700;color:var(--neon-cyan)}.update-modal-progress-track{width:100%;height:10px;background:#00e5ff14;border-radius:99px;overflow:hidden;border:1px solid rgba(0,229,255,.12)}.update-modal-progress-fill{height:100%;background:linear-gradient(90deg,var(--neon-blue),var(--neon-cyan));border-radius:99px;position:relative;transition:width .4s cubic-bezier(.4,0,.2,1);min-width:6px;box-shadow:0 0 10px #00e5ff80}.update-modal-progress-shimmer{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.3) 50%,transparent 100%);background-size:200% 100%;animation:shimmer 1.2s linear infinite;border-radius:99px}.update-modal-progress-hint{font-size:.725rem;color:var(--text-muted);text-align:center}.update-modal-installing{display:flex;align-items:center;justify-content:center;gap:.875rem;padding:1rem;background:#00e5ff0f;border-radius:var(--radius-md);border:1px solid rgba(0,229,255,.15)}.update-modal-installing-text{font-size:.9rem;font-weight:600;color:var(--neon-cyan)}.update-modal-error{display:flex;align-items:flex-start;gap:.625rem;padding:.875rem 1rem;background:#ff174414;border:1px solid rgba(255,23,68,.3);border-radius:var(--radius-md)}.update-modal-error-icon{font-size:1rem;line-height:1.5;color:var(--neon-red);flex-shrink:0}.update-modal-error-text{font-size:.8125rem;color:var(--neon-red);line-height:1.55}.update-modal-actions{display:flex;flex-direction:column;gap:.625rem}.update-modal-btn-update{width:100%;font-size:1rem!important;letter-spacing:.05em;position:relative;overflow:hidden}.update-modal-btn-update:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.18),transparent);transform:translate(-100%);transition:transform .5s ease}.update-modal-btn-update:hover:before{transform:translate(100%)}.update-modal-btn-icon{font-size:1.1rem}.update-modal-btn-later{width:100%;font-size:.875rem!important;opacity:.7}.update-modal-btn-later:hover{opacity:1}.update-modal-lock-note{font-size:.75rem;color:var(--text-muted);text-align:center;margin-top:-.25rem}@media (max-width: 480px){.update-modal-card{padding:1.5rem 1.25rem}.update-modal-title{font-size:1rem}.update-modal-versions{gap:.5rem}.update-modal-version-chip{min-width:75px;padding:.4rem .75rem}}
