:root{--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--radius:18px;--radius-lg:24px;--nav-h:74px;--safe-bottom:env(safe-area-inset-bottom);--safe-top:env(safe-area-inset-top);--bp-xs:360px;--bp-sm:390px;--bp-md:768px;--bp-lg:1024px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:Inter,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}html.light,html[data-theme=light]{--shadow:0 18px 46px #0f766e18;--surface:#fffffff0;--surface-2:#f2fbf7;--text:#102033;--muted:#5d7186;--border:#d8eadf;--primary:#0f9f8f;--ok:#16a34a;--warn:#d97706;--danger:#dc2626;--login-bg:radial-gradient(circle at 15% 10%, #86efac55 0, transparent 32%), radial-gradient(circle at 82% 18%, #67e8f944 0, transparent 28%), linear-gradient(135deg, #f7fbf8 0%, #eef8f4 52%, #fff 100%);--login-shell-bg:color-mix(in srgb, var(--surface) 88%, transparent);--login-hero-bg:linear-gradient(160deg, #ecfdf5ee, #dff7efcc 54%), radial-gradient(circle at 28% 26%, #22c55e33, transparent 30%);--login-card-bg:color-mix(in srgb, var(--surface) 94%, transparent);--login-field-bg:#fff;--login-field-text:var(--text);--login-accent-text:#0f766e;color:var(--text);background:radial-gradient(circle at 18% 2%,#86efac4d,#0000 32%),radial-gradient(circle at 92% 8%,#67e8f933,#0000 30%),linear-gradient(#f7fbf8 0%,#eef8f4 100%)}html.dark,html[data-theme=dark]{--shadow:0 20px 54px #0008;--surface:#111827ee;--surface-2:#08111f;--text:#e5eefc;--muted:#94a3b8;--border:#263447;--primary:#22d3ee;--ok:#22c55e;--warn:#f59e0b;--danger:#f87171;--login-bg:radial-gradient(circle at 15% 10%, #1d4ed866 0, transparent 32%), radial-gradient(circle at 82% 18%, #22c55e44 0, transparent 28%), linear-gradient(135deg, #020617 0%, #08111f 48%, #111827 100%);--login-shell-bg:#02061799;--login-hero-bg:linear-gradient(160deg, #172554dd, #02061788 54%), radial-gradient(circle at 28% 26%, #60a5fa77, transparent 28%);--login-card-bg:linear-gradient(180deg, #0f172af2, #020617f2);--login-field-bg:#020617;--login-field-text:#f8fafc;--login-accent-text:#93c5fd;color:var(--text);background:radial-gradient(circle at 20% 0,#2563eb38,#0000 32%),radial-gradient(circle at 88% 12%,#22c55e24,#0000 28%),linear-gradient(#020617 0%,#08111f 100%)}html.hacker,html[data-theme=hacker]{--shadow:0 18px 44px #00ff8840;--surface:#031107ee;--surface-2:#020403;--text:#bbf7d0;--muted:#86efac;--border:#166534;--primary:#22c55e;--ok:#22c55e;--warn:#facc15;--danger:#fb7185;--login-bg:linear-gradient(180deg, #000 0%, #020403 100%);--login-shell-bg:#000;--login-hero-bg:linear-gradient(180deg, #000 0%, #031107 100%);--login-card-bg:#000;--login-field-bg:#000;--login-field-text:#0f8;--login-accent-text:#0f8;--radius:0px;--radius-lg:0px;color:var(--text);background:radial-gradient(circle at 50% -10%,#00ff8820,#0000 34%),#020403;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}*{box-sizing:border-box}html.hacker .card,html.hacker .metricCard,html.hacker .pageSection,html.hacker .actionSheet,html.hacker .detailsDrawer,html.hacker .btn,html.hacker .badge,html.hacker input,html.hacker select,html[data-theme=hacker] .card,html[data-theme=hacker] .metricCard,html[data-theme=hacker] .pageSection,html[data-theme=hacker] .actionSheet,html[data-theme=hacker] .detailsDrawer,html[data-theme=hacker] .btn,html[data-theme=hacker] .badge,html[data-theme=hacker] input,html[data-theme=hacker] select{border-radius:0}html,body,#root{max-width:100%;overflow-x:hidden}body{min-width:0;margin:0}button,input,select,textarea{font:inherit;min-width:0;max-width:100%}input,select,textarea{border:1px solid var(--border);background:var(--surface);width:100%;min-height:44px;color:var(--text);border-radius:14px;padding:.7rem .85rem}textarea{resize:vertical}button:disabled{cursor:not-allowed;opacity:.65}:focus-visible{outline-offset:2px;outline:3px solid #38bdf866}.btn{background:var(--primary);color:#fff;cursor:pointer;border:0;border-radius:14px;justify-content:center;align-items:center;gap:.45rem;min-height:44px;padding:.72rem 1rem;font-weight:800;text-decoration:none;display:inline-flex}.btn.secondary{color:#fff;background:#1f2937}.btn.compact{width:auto;min-height:38px;padding:.4rem .7rem}.iconButton,.miniButton{border:1px solid var(--border);background:var(--surface);min-width:44px;min-height:44px;color:var(--text);border-radius:14px;font-weight:900}.miniButton{min-width:auto;min-height:34px;padding:.25rem .55rem}.card,.metricCard,.pageSection{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow-wrap:anywhere;min-width:0;padding:14px}.grid{gap:1rem;display:grid}.shell{min-height:100dvh}.side,.appTop{display:none}.main{width:100%;min-width:0;max-width:100%;padding:calc(.75rem + var(--safe-top)) .75rem calc(var(--nav-h) + var(--safe-bottom) + 1.25rem);margin:0 auto}.mobileTop{z-index:20;padding:calc(.65rem + var(--safe-top)) .75rem .65rem;background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--border);grid-template-columns:auto 1fr auto auto;align-items:center;gap:.5rem;margin:-.75rem -.75rem .85rem;display:grid;position:sticky;top:0}.mobileTop span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mobileBottomNav{z-index:40;padding:.45rem .5rem calc(.45rem + var(--safe-bottom));min-height:calc(var(--nav-h) + var(--safe-bottom));background:color-mix(in srgb, var(--surface) 90%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid var(--border);grid-template-columns:repeat(5,1fr);gap:.25rem;display:grid;position:fixed;bottom:0;left:0;right:0}.mobileBottomNav a,.mobileBottomNav button{min-height:44px;color:var(--text);background:0 0;border:0;border-radius:14px;justify-content:center;align-items:center;font-size:.78rem;font-weight:800;text-decoration:none;display:flex}.mobileBottomNav a.active,.mobileBottomNav button:hover{color:var(--primary);background:#2563eb18}.pageHeader{gap:.75rem;margin:0 0 1rem;display:grid}.pageTitleRow{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.pageHeader h1{letter-spacing:-.05em;margin:0;font-size:clamp(1.7rem,8vw,3rem)}.pageHeader p,.sectionHeader p,.muted{color:var(--muted);margin:.3rem 0 0;line-height:1.55}.responsiveGrid{grid-template-columns:1fr;gap:.75rem;margin:1rem 0;display:grid}.responsiveGrid.dense{grid-template-columns:1fr}.metricCard{gap:.45rem;display:grid}.metricTop{color:var(--muted);justify-content:space-between;gap:.5rem;font-weight:800;display:flex}.metricCard strong{font-size:clamp(1.5rem,7vw,2.2rem);line-height:1}.metricCard small{color:var(--muted)}.pageGrid,.mobileCards{grid-template-columns:1fr}.sectionHeader,.cardTop{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.sectionHeader h2,.card h3{margin:0}.sectionActions{align-items:center;gap:.5rem;display:flex}.sectionBody{gap:.75rem;margin-top:1rem;display:grid}.buttonRow{grid-template-columns:1fr;align-items:center;gap:.55rem;min-width:0;display:grid}.buttonRow .btn,.buttonRow button{width:100%}.chipRow{flex-wrap:wrap;gap:.4rem;margin:.6rem 0;display:flex}.badge,.statusBadge{overflow-wrap:anywhere;color:#1d4ed8;background:#dbeafe;border-radius:999px;align-items:center;gap:.25rem;max-width:100%;padding:.22rem .55rem;font-size:.74rem;font-weight:900;display:inline-flex}.statusBadge.online,.statusBadge.real,.statusBadge.mqtt,.statusBadge.espnow,.statusBadge.usb{color:#166534;background:#dcfce7}.statusBadge.offline{color:#991b1b;background:#fee2e2}.statusBadge.degraded,.statusBadge.warn{color:#92400e;background:#fef3c7}.statusBadge.simulated,.statusBadge.sim{color:#075985;background:#e0f2fe}.filterPanel{grid-template-columns:1fr;gap:.75rem;margin:1rem 0;display:grid}.touchField,.ledPanel label{color:var(--muted);gap:.4rem;font-weight:800;display:grid}.ledPanel{grid-template-columns:1fr;gap:.7rem;margin:1rem 0;display:grid}.colorInput{min-height:54px;padding:.2rem}.actionFeedback,.safeHint{color:var(--text);background:#f1f5f9;border-radius:14px;padding:.75rem;line-height:1.5}.dark .actionFeedback,.dark .safeHint{background:#0f172a}.listCard,.clientCard{border:1px solid var(--border);background:var(--surface-2);overflow-wrap:anywhere;border-radius:16px;gap:.6rem;padding:.75rem;display:grid}.kvCompact p{margin:.35rem 0}.kvList{gap:.65rem;margin:0;display:grid}.kvList div{border-bottom:1px solid var(--border);gap:.2rem;padding:.65rem;display:grid}.kvList dt{color:var(--muted);font-weight:900}.kvList dd{overflow-wrap:anywhere;margin:0}.copyable{flex-wrap:wrap;align-items:center;gap:.4rem;max-width:100%;display:inline-flex}.copyable code,.kvList code{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.sheetOverlay,.drawerOverlay{z-index:60;padding:1rem .5rem calc(.5rem + var(--safe-bottom));background:#02061780;align-items:flex-end;display:flex;position:fixed;inset:0}.actionSheet,.detailsDrawer{background:var(--surface);width:100%;max-height:min(82dvh,720px);color:var(--text);border:1px solid var(--border);border-radius:24px 24px 18px 18px;padding:1rem;overflow:auto;box-shadow:0 28px 80px #0008}.sheetHeader{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.sheetHeader h3{margin:0}.sheetActions,.sheetGroup{gap:.65rem;display:grid}.segmented{border:0;flex-wrap:wrap;gap:.35rem;margin:0;padding:0;display:flex}.segmented legend{width:100%;color:var(--muted);font-weight:900}.segmented button{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--text);border-radius:999px;padding:.5rem .9rem}.segmented button.active{background:var(--primary);color:#fff}.stateCard{border:1px dashed var(--border);color:var(--muted);background:var(--surface);border-radius:16px;align-items:center;gap:.6rem;padding:1rem;display:flex}.errorState{color:#991b1b;border-color:#fecaca}.spinner{border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:1rem;height:1rem;animation:.8s linear infinite spin}.signalBar{background:#e2e8f0;border-radius:999px;height:10px;overflow:hidden}.signalBar span{background:linear-gradient(90deg,#ef4444,#f59e0b,#22c55e);height:100%;display:block}.logToolbar{z-index:10;background:var(--surface);grid-template-columns:1fr;gap:.55rem;padding-bottom:.75rem;display:grid;position:sticky;top:55px}.log{height:calc(100dvh - 260px - var(--nav-h));color:#d1fae5;white-space:nowrap;background:#05070a;border-radius:16px;max-width:100%;min-height:320px;padding:.75rem;font-family:ui-monospace,monospace;overflow:auto}.consolePage{height:calc(100dvh - var(--nav-h));grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.consolePage .pageHeader{margin-bottom:.75rem}.consolePage .logCard{flex-direction:column;min-height:0;display:flex;overflow:hidden}.consolePage .logToolbar{position:static;top:auto}.consolePage .log{flex:auto;height:auto;min-height:0}.dashboardProgressive{margin:1rem 0}.dashboardProgressive>summary{cursor:pointer;margin-bottom:.5rem;font-weight:900;list-style:none}.dashboardProgressive>summary::-webkit-details-marker{display:none}@media (width<=767px){.dashboardHero{padding:.9rem}.dashboardProgressive:not([open]){border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-glass);padding:.85rem}}.logRow{border-bottom:1px solid #1f2937;padding:.55rem 0}.logRow summary{cursor:pointer;grid-template-columns:auto auto 1fr;align-items:start;gap:.45rem;display:grid}.logRow strong{grid-column:1/-1;font-weight:500}.desktopOnly{display:none}.settingsList,.wizard{gap:1rem;display:grid}.mobileMenuSelect{gap:.35rem;display:grid}.loginPage{background:var(--login-bg);min-height:100dvh;color:var(--text);place-items:stretch stretch;padding:.65rem;display:grid;overflow:hidden}.loginShell{z-index:1;border:1px solid var(--border);background:var(--login-shell-bg);width:100%;color:var(--text);box-shadow:var(--shadow), inset 0 0 0 1px color-mix(in srgb, var(--primary) 16%, transparent);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);border-radius:24px;grid-template-columns:1fr;gap:.65rem;padding:.55rem;display:grid;position:relative}.loginHero,.loginCard{border-radius:20px}.loginHero{background:var(--login-hero-bg);border:1px solid var(--border);min-height:auto;color:var(--text);flex-direction:column;justify-content:flex-end;padding:1.25rem;display:flex;overflow:hidden}.loginHero h1{letter-spacing:-.08em;margin:.35rem 0;font-size:clamp(2.2rem,13vw,4.75rem);line-height:.95}.loginEyebrow,.loginKicker{color:var(--login-accent-text);text-transform:uppercase;letter-spacing:.16em;margin:0;font-size:.76rem;font-weight:800}.loginIntro{max-width:58ch;color:var(--muted);margin:1rem 0 0;font-size:.95rem;line-height:1.65}.loginSignals{flex-wrap:wrap;gap:.45rem;margin-top:1rem;display:flex}.loginCard{background:var(--login-card-bg);border:1px solid var(--border);color:var(--text);flex-direction:column;justify-content:center;gap:1rem;padding:1.1rem;display:flex}.loginCardHeader{align-items:center;gap:.9rem;display:flex}.loginIcon{background:linear-gradient(135deg, var(--primary), var(--ok));color:#fff;border-radius:18px;place-items:center;width:52px;height:52px;font-size:1.6rem;font-weight:900;display:grid}.loginCard h2{margin:.1rem 0 0;font-size:clamp(1.55rem,7vw,2.35rem)}.field{color:var(--text);gap:.5rem;font-weight:700;display:grid}.field input,.field textarea{border-color:var(--border);background:var(--login-field-bg);min-height:52px;color:var(--login-field-text);border-radius:16px}.passwordField{gap:.5rem;display:grid}.passwordToggle{border:1px solid var(--border);background:var(--surface-2);min-height:46px;color:var(--text);border-radius:12px}.loginButton{background:linear-gradient(135deg, var(--primary), var(--ok));color:#fff;border:0;border-radius:16px;width:100%;min-height:56px;font-weight:900}.loginStatus{border:1px solid var(--border);background:var(--surface-2);min-height:48px;color:var(--text);overflow-wrap:anywhere;border-radius:16px;margin:.1rem 0 0;padding:.85rem 1rem;line-height:1.45}.loginStatusSuccess{border-color:color-mix(in srgb, var(--ok) 45%, var(--border));background:color-mix(in srgb, var(--ok) 16%, var(--surface-2));color:var(--text)}.loginStatusError{border-color:color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 16%, var(--surface-2));color:var(--text)}.loginFooter{color:#94a3b8;flex-wrap:wrap;justify-content:flex-start;gap:.4rem;display:flex}.loginFooter a{color:#93c5fd;align-items:center;min-height:44px;font-weight:800;text-decoration:none;display:inline-flex}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=390px){.responsiveGrid.dense,.buttonRow{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1024px){.main{padding:1.25rem}.mobileTop,.mobileBottomNav{display:none}.shell{grid-template-columns:minmax(188px,240px) minmax(0,1fr);display:grid}.side{border-right:1px solid var(--border);background:color-mix(in srgb, var(--surface) 78%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:5;height:100vh;padding:1rem;display:block;position:sticky;top:0}.appTop{margin-bottom:1rem;display:flex}.brandRow{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.brandRow h2{margin:.5rem 0 1rem}.nav{gap:.25rem;display:grid}.nav a{color:inherit;white-space:nowrap;border-radius:12px;padding:.75rem;text-decoration:none;display:block}.nav a:hover,.nav a.active{background:#22c55e14}.top{justify-content:flex-end;align-items:center;gap:1rem;min-width:0;display:flex}.safeNotice{max-width:58ch;line-height:1.35}.topControls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;min-width:0;display:flex}.main{max-width:1400px}.card,.metricCard,.pageSection{padding:1.1rem}.responsiveGrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.responsiveGrid.dense{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.pageGrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}.mobileCards{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}.filterPanel,.ledPanel{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}.buttonRow{flex-wrap:wrap;display:flex}.buttonRow .btn,.buttonRow button{width:auto}.sheetOverlay{background:0 0;padding:0;display:block;position:static}.actionSheet{border-radius:18px;max-height:none}.drawerOverlay{justify-content:flex-end;align-items:stretch;padding:0}.detailsDrawer{border-radius:24px 0 0 24px;max-width:460px;min-height:100dvh}.logToolbar{grid-template-columns:repeat(auto-fit,minmax(150px,auto));align-items:center;top:0}.log{height:min(56vh,560px)}.desktopOnly{display:inline-flex}.loginPage{place-items:center;padding:clamp(.75rem,3vw,2.5rem)}.loginShell{border-radius:32px;grid-template-columns:minmax(0,1.08fr) minmax(340px,.92fr);gap:1rem;width:min(1120px,100%);padding:1rem}.loginHero{border-radius:26px;min-height:560px;padding:clamp(1.5rem,4vw,3rem)}.loginHero h1{font-size:clamp(3rem,8vw,6.5rem);line-height:.9}.loginCard{border-radius:26px;padding:clamp(1.25rem,4vw,2.25rem)}.passwordField{align-items:center;display:flex;position:relative}.passwordField input{padding-right:6rem}.passwordToggle{width:auto;padding:.55rem .75rem;position:absolute;right:.45rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.guidedFlasher{gap:1rem;max-width:1040px;margin:0 auto 2rem;padding:0 1rem;display:grid}.guidedWizardToolbar{justify-content:flex-end;display:flex}.guidedStepper{grid-template-columns:repeat(5,1fr);gap:.5rem;display:grid}.guidedStepper button,.guidedStepSummary{border:1px solid var(--border,#d7dde8);background:var(--surface);min-height:44px;color:var(--text);text-align:left;border-radius:14px;padding:.8rem}.guidedStepper button.current,.guidedStepSummary.current,.roleChoiceCard.selected{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 24%, transparent)}.guidedStepper button.complete,.guidedStepSummary.complete{background:color-mix(in srgb, var(--ok) 14%, var(--surface));color:var(--text)}.guidedStepper button.locked,.guidedStepSummary.locked{opacity:.72}.guidedStepCard{background:var(--surface);color:var(--text);border:1px solid var(--border,#d7dde8);box-shadow:var(--shadow);border-radius:20px;padding:clamp(1rem,3vw,1.5rem)}.guidedStepCard h2{margin-top:0;font-size:clamp(1.25rem,4vw,1.8rem)}.guidedStepCard p,.guidedStepCard li,.guidedStepCard label,.guidedStepCard summary,.guidedStepCard span{color:inherit}.guidedStepSummary{justify-content:space-between;align-items:center;width:100%;display:flex}.guidedStepSummary span{color:var(--muted)}.guidedPrimaryAction{width:100%;min-height:48px;margin:1rem 0}.roleChoiceGrid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.roleChoiceCard{border:1px solid var(--border,#d7dde8);background:var(--surface);min-height:110px;color:var(--text);text-align:left;border-radius:18px;gap:.5rem;padding:1rem;display:grid}.gatewayConfigGrid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.gatewayConfigGrid label{gap:.35rem;display:grid}.gatewayConfigGrid input,.gatewayConfigGrid select{border:1px solid var(--border);background:var(--surface-2);min-height:44px;color:var(--text);border-radius:10px;padding:.65rem}.passwordField{grid-template-columns:1fr auto;gap:.5rem;display:grid}.passwordField button{min-width:82px}.flashProgressBar{background:color-mix(in srgb, var(--muted) 24%, var(--surface-2));border-radius:999px;height:18px;overflow:hidden}.flashProgressBar span{background:linear-gradient(90deg, var(--primary), var(--ok));height:100%;transition:width .2s;display:block}.flashEta{font-weight:600}.verifyChecklist{gap:.5rem;padding-left:1.2rem;display:grid}.guidedLogPanel pre{white-space:pre-wrap;color:#e5e7eb;background:#0f172a;border-radius:12px;max-height:280px;padding:1rem;overflow:auto}.badge.danger{color:#991b1b;background:#fee2e2;border-color:#fecaca}.badge.bluetooth{color:#1e40af;background:#dbeafe;border-color:#bfdbfe}.gatewayApLoop{margin:.35rem 0 .6rem}.gatewayApLoopList{gap:.2rem;margin:.3rem 0 0;padding-left:0;list-style:none;display:grid}.gatewayApLoopList li{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.gatewayApLoopIndex{color:var(--muted);font-weight:700}.badge.gatewayApLoopConnected{background:color-mix(in srgb, var(--ok) 16%, var(--surface));color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, var(--border));margin-left:.4rem}@media (width<=760px){.guidedStepper{grid-template-columns:1fr}.guidedStepper button:not(.current):not(.complete){display:none}.roleChoiceGrid,.gatewayConfigGrid{grid-template-columns:1fr}.guidedStepCard{border-radius:16px}.guidedPrimaryAction{z-index:2;position:sticky;bottom:.75rem}.guidedStepSummary{font-size:1rem}.guidedLogPanel pre{white-space:pre;max-height:220px;overflow:auto}}.verifyStatusBadge{width:fit-content;font-weight:900}.verifyChecklist{grid-template-columns:repeat(2,minmax(0,1fr));padding-left:0;list-style:none}.verifyChecklist li{border:1px solid var(--border);background:var(--surface-2);border-radius:14px;gap:.25rem;padding:.75rem;display:grid}.verifyChecklist li.ok{border-color:color-mix(in srgb, var(--ok) 50%, var(--border));background:color-mix(in srgb, var(--ok) 12%, var(--surface))}.verifyChecklist li.pending{border-color:color-mix(in srgb, var(--muted) 36%, var(--border))}.verifyChecklist li span{color:var(--muted);overflow-wrap:anywhere;font-size:.95rem}.badge.warning{color:#92400e;background:#fef3c7;border-color:#fde68a}.verifyLogPanel pre{max-height:320px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}@media (width<=760px){.verifyChecklist{grid-template-columns:1fr}.verifyLogPanel pre{max-height:280px}}:root,.dark{--surface:#0f172ad9;--surface-2:#08111fd9;--text:#e5eefc;--muted:#a8b3c7;--border:#ffffff20;--primary:#38bdf8;--shadow:0 22px 70px #0007, inset 0 1px 0 #ffffff12;background:radial-gradient(circle at 12% 6%,#1d4ed84d 0,#0000 30%),radial-gradient(circle at 86% 12%,#22c55e33 0,#0000 28%),linear-gradient(135deg,#020617 0%,#08111f 52%,#111827 100%)}.light{--surface:#fffffff0;--surface-2:#eef6fff0;--text:#172033;--muted:#52657f;--border:#c9d7ea;background:radial-gradient(circle at 8% 5%,#bfdbfe 0,#0000 30%),radial-gradient(circle at 88% 10%,#bbf7d0 0,#0000 25%),#f6f8fb}.hacker{--surface:#031107ee;--surface-2:#020403;--text:#bbf7d0;--muted:#86efac;--border:#166534;--primary:#22c55e;--radius:0px;--radius-lg:0px;background:#020403;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.shell{background:0 0}.card,.metricCard,.pageSection,.guidedStepCard,.actionSheet,.detailsDrawer{background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 94%, white 4%), color-mix(in srgb, var(--surface-2) 92%, transparent));border-color:var(--border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:relative}.card:before,.metricCard:before,.pageSection:before,.guidedStepCard:before{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#93c5fd66,#22c55e55,#0000);height:1px;position:absolute;inset:0 0 auto}.btn,.loginButton,.guidedPrimaryAction{background:linear-gradient(135deg,#2563eb,#16a34a);box-shadow:0 12px 28px #0284c733}.btn.secondary,.passwordToggle{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 72%, #020617 28%);color:var(--text);box-shadow:none}input,select,textarea{background:color-mix(in srgb, var(--surface-2) 78%, #020617 22%);border-color:var(--border);color:var(--text)}.pageHeader{padding:clamp(.2rem,2vw,.8rem) 0 .2rem}.pageHeader:after{content:"";background:linear-gradient(90deg,#2563eb,#22c55e,#0000);border-radius:999px;width:min(220px,62vw);height:3px}.mobileBottomNav,.mobileTop,.side{background:color-mix(in srgb, var(--surface) 78%, transparent);box-shadow:0 -16px 50px #0005}.mobileBottomNav a.active,.mobileBottomNav button:hover,.nav a:hover,.nav a.active{color:#93c5fd;background:linear-gradient(135deg,#2563eb29,#22c55e22);box-shadow:inset 0 0 0 1px #60a5fa33}.statusBadge,.badge{border:1px solid color-mix(in srgb, currentColor 20%, transparent);box-shadow:inset 0 1px #ffffff24}.dashboardHero{gap:.85rem;margin-bottom:1rem;padding:clamp(1rem,4vw,1.5rem);display:grid;overflow:hidden}.dashboardHero h2{letter-spacing:-.06em;margin:0;font-size:clamp(1.7rem,8vw,3.4rem)}.heroChips{flex-wrap:wrap;gap:.45rem;display:flex}body{background:inherit;color:var(--text)}html.light .btn.secondary,html[data-theme=light] .btn.secondary{color:#102033;border:1px solid var(--border);background:#fffc}html.light .mobileBottomNav a.active,html.light .mobileBottomNav button:hover{background:#14b8a626;box-shadow:0 0 24px #22c55e22}html.hacker .btn{color:#020403;background:linear-gradient(135deg,#14532d,#22c55e)}@media (width<=639px){.mobileCards,.pageGrid,.responsiveGrid,.responsiveGrid.dense{grid-template-columns:1fr!important}}.ledControl{--led-color:#0f8;--led-alpha:.25;border:1px solid var(--border);background:radial-gradient(circle at 12% 0%, color-mix(in srgb, var(--led-color) 16%, transparent), transparent 42%), color-mix(in srgb, var(--surface) 92%, transparent);box-shadow:var(--shadow);border-radius:24px;gap:.85rem;margin:1rem 0;padding:1rem;display:grid}.ledRemoteHeader{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.ledCompactRow{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;display:grid}.ledSwitch,.ledSwitchControl{background:color-mix(in srgb, var(--surface-2) 86%, transparent);width:100%;min-height:56px;color:var(--text);text-align:left;box-shadow:inset 0 0 0 1px var(--border);border:0;border-radius:22px;grid-template-columns:minmax(0,1fr) 82px;align-items:center;gap:.8rem;padding:.55rem;display:grid}.ledSwitch:disabled,.ledSwitchControl:disabled{opacity:.58;cursor:not-allowed}.ledSwitchLabel,.ledSwitchText{gap:.12rem;min-width:0;display:grid}.ledSwitchLabel strong,.ledSwitchText strong{font-size:1.05rem}.ledSwitchLabel small,.ledSwitchText small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ledSwitchTrack{background:#64748b66;border-radius:999px;width:78px;height:42px;transition:background .2s,box-shadow .2s;position:relative;box-shadow:inset 0 2px 8px #0005}.ledSwitch.on .ledSwitchTrack,.ledSwitchControl.on .ledSwitchTrack{background:var(--led-color);box-shadow:0 0 28px color-mix(in srgb, var(--led-color) 58%, transparent), inset 0 2px 8px #0004}.ledSwitchThumb{background:#fff;border-radius:999px;width:34px;height:34px;transition:transform .22s cubic-bezier(.2,.8,.2,1);position:absolute;top:4px;left:4px;box-shadow:0 8px 20px #0005}.ledSwitch.on .ledSwitchThumb,.ledSwitchControl.on .ledSwitchThumb{transform:translate(36px)}.ledPreview{border:2px solid color-mix(in srgb, var(--led-color) 45%, #fff);background:var(--led-color);width:52px;height:52px;opacity:calc(.48 + var(--led-alpha) * .52);box-shadow:0 0 calc(16px + 38px * var(--led-alpha)) color-mix(in srgb, var(--led-color) 58%, transparent);border-radius:18px}.ledOff .ledPreview{opacity:.5;filter:saturate(.72)}.ledCompactMeta{color:var(--muted);gap:.15rem;min-width:0;display:grid}.ledCompactMeta strong{color:var(--text);overflow-wrap:anywhere}.ledSheetButton{justify-content:center;width:100%;min-height:48px}.ledSheetBody{gap:.9rem;display:grid}.paletteWrap{scrollbar-width:thin;gap:.75rem;padding:.4rem .25rem .75rem;display:flex;overflow-x:auto}.colorSwatch{border:2px solid color-mix(in srgb, #fff 70%, var(--border));border-radius:999px;flex:none;width:52px;min-width:52px;height:52px;min-height:52px;position:relative;box-shadow:0 10px 24px #0003}.colorSwatch:disabled{opacity:.45;cursor:not-allowed}.colorSwatch.selected{outline:3px solid color-mix(in srgb, var(--primary) 70%, #fff);outline-offset:3px;transform:translateY(-1px)}.customSwatch{background:color-mix(in srgb, var(--surface) 76%, var(--primary));color:var(--text);font-weight:900}.brightnessControl{color:var(--muted);gap:.5rem;font-weight:850;display:grid}.brightnessControl input[type=range]{min-height:48px;accent-color:var(--primary);background:0 0;padding-inline:0}.actionFeedback.compact{background:color-mix(in srgb, var(--surface-2) 72%, transparent);border-radius:14px;margin:0;padding:.65rem .75rem}.actionFeedback.saving{border:1px solid #38bdf866}.miniConsole{border:1px solid var(--border);background:#020617;border-radius:18px;margin-top:1rem;overflow:hidden}.miniConsoleToggle{background:color-mix(in srgb, var(--surface-2) 30%, #020617);color:#e5f6ff;border:0;justify-content:space-between;align-items:center;width:100%;min-height:48px;padding:.75rem .9rem;font-weight:900;display:flex}.miniConsoleBody{color:#c7f9cc;white-space:nowrap;max-height:220px;padding:.7rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(.62rem,2.7vw,.72rem);line-height:1.35;overflow:auto}.miniConsoleLine{white-space:nowrap;overflow-wrap:normal;word-break:normal;grid-template-columns:max-content max-content max-content max-content max-content;align-items:baseline;gap:.35rem;width:max-content;min-width:max-content;padding:.16rem 0;display:inline-grid}.miniConsoleMore{color:#93c5fd;border-top:1px solid #ffffff1a;padding:.65rem .8rem;display:block}.networkScanPanel{gap:.8rem;margin-bottom:1rem;display:grid}@media (width>=1024px){.paletteWrap{flex-wrap:wrap;overflow-x:visible}}.espOnlineSummary{contain:layout paint;justify-content:space-between;align-items:center;gap:.75rem;min-height:0;margin:.6rem 0 .75rem;padding:.7rem .85rem;display:flex}.summaryMain{justify-content:space-between;align-items:center;gap:1rem;display:flex}.summaryMain span,.summaryChildren span{color:var(--muted);font-weight:900}.summaryMain strong{font-variant-numeric:tabular-nums;font-size:clamp(2rem,9vw,3rem);line-height:1}.summaryChildren{flex-wrap:nowrap;gap:.5rem;display:flex}.summaryChildren>div{border:1px solid var(--border);background:var(--surface-2);border-radius:14px;gap:.15rem;min-width:5.5rem;min-height:0;padding:.45rem .6rem;display:grid}.summaryChildren strong{font-variant-numeric:tabular-nums;font-size:1.2rem}.filterPanelCollapsible{margin:1rem 0}.filterPanelCollapsible summary{cursor:pointer;justify-content:space-between;align-items:center;gap:.75rem;font-weight:900;list-style:none;display:flex}.filterPanelCollapsible summary::-webkit-details-marker{display:none}.filterPanelCollapsible[open] summary{margin-bottom:.75rem}.deviceCard{contain:layout paint;min-height:320px}.ledSheetBody.inline{border:1px solid var(--border);background:var(--surface-2);border-radius:16px;gap:.8rem;padding:.8rem;display:grid;position:static}.ledSheetBody.disabled{opacity:.68}.ledCollapseButton{justify-self:stretch}.networkHelpDetails summary,.networkGroup summary{cursor:pointer;font-weight:700}.scanSessionControls .scanGrid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.deviceChecklist{gap:8px;display:grid}.deviceChecklist label{align-items:center;gap:8px;min-height:44px;display:flex}.networkGroup{margin-top:18px}.networkGroup>summary{list-style:none}.networkObservationList{gap:8px;display:grid}.networkObservationList>div{border:1px solid var(--border);border-radius:12px;gap:3px;padding:10px;display:grid}.networkObservationList>div.best{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent)}.lostNetworkCard{opacity:.82}.kvInline{justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}.activeScan{border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;padding:10px;display:flex}.btn.danger{color:#fff;background:#dc2626}@media (width<=700px){.scanSessionControls .scanGrid,.mobileCards{grid-template-columns:1fr}.networkScanPanel{padding-bottom:calc(16px + env(safe-area-inset-bottom))}.networkCard{width:100%}}:root{--surface-glass:color-mix(in srgb, var(--surface) 78%, transparent);--surface-hover:color-mix(in srgb, var(--primary) 10%, var(--surface));--radius-card:18px;--radius-control:14px;--terminal-border:color-mix(in srgb, var(--border) 88%, var(--primary));--led-glow:0 0 28px color-mix(in srgb, var(--led-color,#0f8) 45%, transparent);--signal-strong:#16a34a;--signal-medium:#d97706;--signal-weak:#f59e0b;--signal-dead:#dc2626}html.light,html[data-theme=light]{--surface-glass:#ffffffe6;--surface-hover:#e7f7ef;--radius-card:20px;--radius-control:14px;--signal-strong:#15803d;--signal-medium:#0f766e;--signal-weak:#b45309;--signal-dead:#b91c1c;background:radial-gradient(circle at 12% 3%,#bbf7d066,#0000 28%),radial-gradient(circle at 88% 7%,#bfdbfe80,#0000 26%),linear-gradient(#fbfdfc 0%,#eef6f2 100%)}html.dark,html[data-theme=dark]{--surface-glass:#0f172ac2;--surface-hover:#17255499;--radius-card:20px;--radius-control:14px;--signal-strong:#22c55e;--signal-medium:#38bdf8;--signal-weak:#f59e0b;--signal-dead:#f87171;background:radial-gradient(circle at 18% 0,#2563eb40,#0000 30%),radial-gradient(circle at 82% 16%,#10b98122,#0000 28%),linear-gradient(135deg,#020617 0%,#08111f 54%,#111827 100%)}html.hacker,html[data-theme=hacker]{--radius:2px;--radius-lg:4px;--radius-card:2px;--radius-control:2px;--shadow:0 0 24px #0f83;--surface:#020403f2;--surface-2:#000;--surface-glass:#000d;--surface-hover:#022c12;--text:#9cffb7;--muted:#55d982;--border:#008f4c;--terminal-border:#0f8;--primary:#0f8;--ok:#0f8;--warn:#d6ff5c;--danger:#ff5c7a;--led-glow:0 0 24px #00ff8870;background:#020403;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.hacker body:before,html[data-theme=hacker] body:before{content:"";pointer-events:none;z-index:9999;opacity:.08;background:repeating-linear-gradient(#0000 0 3px,#0f8 4px 5px);position:fixed;inset:0}.card,.metricCard,.pageSection,.clientCard,.networkCard,.deviceCard{border-radius:var(--radius-card)}.btn,.iconButton,input,select,textarea,.mobileBottomNav a,.mobileBottomNav button{border-radius:var(--radius-control)}.networkCard,.clientCard,.deviceCard{gap:.45rem;padding:.85rem}.networkCard h3,.clientCard h3,.deviceCard h3{font-size:1rem;line-height:1.2}.networkCard .chipRow,.deviceCard .chipRow{margin:.45rem 0}.kvInline{font-size:.86rem}.signalBar span{background:linear-gradient(90deg, var(--signal-dead), var(--signal-weak), var(--signal-strong))}.responsiveOverlay,.sheetOverlay,.drawerOverlay{z-index:70;padding:1rem .5rem calc(.5rem + var(--safe-bottom));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#02061780;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.responsivePanel,.actionSheet,.detailsDrawer{background:var(--surface-glass);width:min(100%,760px);max-height:min(82dvh,760px);color:var(--text);border:1px solid var(--border);border-radius:24px 24px var(--radius-card) var(--radius-card);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);padding:1rem;overflow:auto;box-shadow:0 28px 80px #0009,inset 0 1px #ffffff12}.responsiveOverlay.drawer{justify-content:flex-end}@media (width>=768px){.responsiveOverlay,.sheetOverlay,.drawerOverlay{align-items:center;padding:1.25rem}.responsivePanel.modal,.actionSheet{border-radius:var(--radius-card);max-width:680px}.responsivePanel.drawer,.detailsDrawer{border-radius:var(--radius-card) 0 0 var(--radius-card);width:min(460px,92vw);min-height:100dvh;max-height:100dvh}.responsiveOverlay.drawer,.drawerOverlay{justify-content:flex-end;align-items:stretch;padding:0}}@media (width>=1024px){.sheetOverlay{background:#02061780;padding:1.25rem;display:flex;position:fixed}.actionSheet{border-radius:var(--radius-card);max-height:min(82dvh,760px)}}.hacker .card,.hacker .networkTile,.hacker .networkCard,.hacker .espTile,.hacker .deviceCard,.hacker .clientTile,.hacker .clientCard,.hacker .detailsDrawer,.hacker .actionSheet,html[data-theme=hacker] .card,html[data-theme=hacker] .networkCard,html[data-theme=hacker] .deviceCard,html[data-theme=hacker] .clientCard,html[data-theme=hacker] .detailsDrawer,html[data-theme=hacker] .actionSheet{border-color:var(--terminal-border);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--terminal-border) 46%, transparent), 0 0 24px #0f83;background:#020403f2;border-radius:2px}.hacker .card:before,html[data-theme=hacker] .card:before{background:linear-gradient(90deg,#0f8,#0000)}.hacker .badge,.hacker .statusBadge,html[data-theme=hacker] .badge,html[data-theme=hacker] .statusBadge{color:#0f8;background:#001f0d;border-color:#0f8a;border-radius:2px;box-shadow:0 0 10px #0f83}.hacker .signalBar:before,html[data-theme=hacker] .signalBar:before{content:"[RSSI]";color:var(--primary);font-size:.68rem;position:absolute;transform:translateY(-1.3rem)}.hacker .btn,html[data-theme=hacker] .btn{color:#0f8;text-transform:uppercase;background:#001f0d;border:1px solid #0f8;border-radius:2px;box-shadow:0 0 14px #0f83}.hacker .btn:before,html[data-theme=hacker] .btn:before{content:"> "}.hacker input,.hacker select,.hacker textarea,html[data-theme=hacker] input,html[data-theme=hacker] select,html[data-theme=hacker] textarea{color:#0f8;background:#000;border-color:#0f8}.hacker .ledControl,html[data-theme=hacker] .ledControl{box-shadow:var(--led-glow);background:#000;border-radius:2px}.hacker .mobileBottomNav a.active,.hacker .nav a.active,html[data-theme=hacker] .mobileBottomNav a.active,html[data-theme=hacker] .nav a.active{color:#000;background:#0f8;box-shadow:0 0 18px #00ff8870}@media (prefers-reduced-motion:reduce){.hacker body:before,html[data-theme=hacker] body:before{opacity:.04}}.networkToolbar{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:.75rem;display:grid}.networkTileList{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:.75rem;width:100%;max-width:100%;display:grid;overflow-x:hidden}.networkTile{box-sizing:border-box;background:#0f172ad1;border:1px solid #94a3b838;border-radius:18px;width:100%;min-width:0;max-width:100%;padding:.9rem;overflow:hidden;box-shadow:0 12px 30px #00000038}.networkTile.lostNetworkCard,.lostNetworkCard{opacity:.62}.networkTileHeader{justify-content:space-between;align-items:flex-start;gap:.75rem;min-width:0;display:flex}.networkTileHeader h3{overflow-wrap:anywhere;min-width:0;margin:0 0 .35rem;line-height:1.15}.networkSignalIcon{align-items:center;gap:.35rem;font-size:.86rem;display:inline-flex}.networkSignalIcon.strong{color:#34d399}.networkSignalIcon.medium{color:#facc15}.networkSignalIcon.weak{color:#fb923c}.networkSignalIcon.dead{color:#94a3b8}.securityPill{border-radius:999px;padding:.28rem .55rem;font-size:.78rem;font-weight:800}.securityPill.danger{color:#fecaca;background:#f8717129}.securityPill.ok{color:#bbf7d0;background:#22c55e24}.securityPill.strong{color:#99f6e4;background:#14b8a62e}.securityPill.unknown{color:#cbd5e1;background:#94a3b829}.sourceEspPills{flex-wrap:wrap;gap:.35rem;margin-top:.65rem;display:flex}.networkDetailsGrid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;display:grid}.networkActionPanel,.networkConnectPanel{border-top:1px solid #94a3b82e;margin-top:1rem;padding-top:1rem}.networkActionPanel select,.networkConnectPanel select,.networkConnectPanel input{max-width:100%;margin:.35rem 0}.vulnerabilityList{gap:.5rem;display:grid}.riskNote{color:#fde68a;background:#fbbf241f;border:1px solid #fbbf2447;border-radius:12px;padding:.65rem .8rem}@media (width<=720px){.networkTileList,.networkToolbar{grid-template-columns:1fr}}.espTileGrid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.8rem}.espTile{isolation:isolate;background:radial-gradient(circle at 18% 0%, color-mix(in srgb, var(--led-color) 18%, transparent), transparent 48%), var(--surface-glass);border:1px solid color-mix(in srgb, var(--led-color) 24%, var(--border));min-height:138px;position:relative;overflow:hidden}.espTileGlow{z-index:-1;background:radial-gradient(circle at 22% 18%, color-mix(in srgb, var(--led-color) 26%, transparent), transparent 42%);filter:blur(10px);opacity:.9;position:absolute;inset:-30%}.espTileHeader{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.espTileHeader>div{min-width:0}.espTileHeader h3{overflow-wrap:anywhere;margin:0;line-height:1.15}.espMac{color:var(--muted);-webkit-user-select:all;user-select:all;margin:.18rem 0 0;font-size:.78rem;font-weight:700;line-height:1.15;display:block}.espTileButtons{flex:none;align-items:center;gap:.45rem;display:flex}.espStatePills{flex-wrap:wrap;gap:.28rem;margin-top:.65rem;display:flex}.ledRoundButton{border:2px solid color-mix(in srgb, #fff 55%, var(--led-color));background:var(--led-color);width:44px;min-width:44px;height:44px;box-shadow:0 0 calc(14px + 34px * var(--led-alpha)) color-mix(in srgb, var(--led-color) 62%, transparent), inset 0 0 14px #ffffff40;cursor:pointer;border-radius:999px;flex:0 0 44px}.ledRoundButton.off{background:#64748b;border-color:#94a3b8;box-shadow:inset 0 0 10px #0005,0 0 16px #64748b33}.ledControlOverlay{gap:1rem;width:min(100%,560px);margin:0 auto;padding:.25rem;display:grid}.ledStatePanel{border:1px solid var(--border);border-radius:var(--radius-card);background:radial-gradient(circle at 0 0, color-mix(in srgb, var(--led-color) 16%, transparent), transparent 55%), var(--surface-2);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.8rem;padding:.85rem;display:grid}.ledSwatchGrid{border:1px solid var(--border);border-radius:var(--radius-card);background:color-mix(in srgb, var(--surface-2) 74%, transparent);grid-template-columns:repeat(6,minmax(0,1fr));gap:.55rem;padding:.85rem;display:grid}.ledSwatchGrid.disabled{opacity:.62}.ledSwatchGrid .colorSwatch{width:100%;min-width:0;height:48px;min-height:48px}.ledSwatchGrid .customSwatch{grid-column:span 2;font-size:.78rem}.fullSpan{grid-column:1/-1}.offlineNotice{border:1px solid color-mix(in srgb, #f59e0b 35%, var(--border));border-radius:var(--radius-control);color:#fbbf24;background:#f59e0b1a;margin:0;padding:.7rem .85rem}.brightnessSlider{border:1px solid var(--border);border-radius:var(--radius-card);background:color-mix(in srgb, var(--led-color) 8%, var(--surface-2));gap:.55rem;width:100%;padding:.85rem;display:grid}.espDetailsSections{gap:1rem;display:grid}.detailsSection{border:1px solid var(--border);border-radius:var(--radius-card);background:color-mix(in srgb, var(--surface-2) 74%, transparent);gap:.65rem;padding:.9rem;display:grid}.detailsSection h4{margin:0}.taskInlineLaunchPanel{border:1px solid color-mix(in srgb, var(--primary) 34%, var(--border));border-radius:var(--radius-card);background:radial-gradient(circle at top left, color-mix(in srgb, var(--primary) 16%, transparent), transparent 44%), color-mix(in srgb, var(--surface-2) 82%, transparent);gap:.75rem;padding:.85rem;display:grid}.taskInlineLaunchHeader{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.taskInlineLaunchHeader h5{margin:.15rem 0 0;font-size:1rem}.taskInlineLaunchHeader .compact{width:auto;min-height:38px;padding:.4rem .7rem}.taskInlineDeviceCard{border:1px solid var(--border);border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface) 76%, transparent);gap:.25rem;padding:.75rem;display:grid}.taskInlineDeviceCard small{color:var(--muted);overflow-wrap:anywhere}.taskInlineLaunchPanel .scanGrid{margin-top:0}.taskInlineLaunchActions{margin-top:.15rem}.taskInlineLaunchPanel .actionFeedback.success{border:1px solid color-mix(in srgb, #22c55e 45%, var(--border));color:#86efac;background:color-mix(in srgb, #22c55e 12%, var(--surface-2))}.taskInlineLaunchPanel .actionFeedback.error{border:1px solid color-mix(in srgb, #ef4444 45%, var(--border));color:#fecaca;background:color-mix(in srgb, #ef4444 12%, var(--surface-2))}@media (width>=720px){.taskInlineLaunchActions{grid-template-columns:1fr 1fr}}.detailsList{grid-template-columns:minmax(8rem,auto) minmax(0,1fr);gap:.45rem .8rem;margin:0;display:grid}.detailsList dt{color:var(--muted);font-weight:900}.detailsList dd{overflow-wrap:anywhere;margin:0}.capabilityPills{flex-wrap:wrap;gap:.45rem;display:flex}.consoleInDetails .miniConsole{margin-top:0}.consoleInDetails{min-height:260px}.rawMetadata pre{border-radius:var(--radius-control);color:#c7f9cc;background:#020617;max-height:260px;padding:.8rem;overflow:auto}.miniConsoleLine{grid-template-columns:max-content max-content max-content max-content max-content}@media (width<=767px){.espTileGrid{grid-template-columns:1fr}.espOnlineSummary{max-height:90px}.summaryMain strong{font-size:1.35rem}.summaryChildren{font-size:.85rem}.ledSwatchGrid{grid-template-columns:repeat(4,minmax(0,1fr));padding:.65rem}.ledSwatchGrid .colorSwatch{height:44px}}html[data-theme=hacker] .espTile,.hacker .espTile{background:radial-gradient(circle at 14% 0%, color-mix(in srgb, var(--led-color) 14%, transparent), transparent 38%), #020403f2;border-color:#0f8;box-shadow:inset 0 0 0 1px #0f86,0 0 18px #0f83}html[data-theme=hacker] .espStatePills .statusBadge,.hacker .espStatePills .statusBadge{text-transform:uppercase}html[data-theme=hacker] .ledRoundButton,.hacker .ledRoundButton,html[data-theme=hacker] .colorSwatch,.hacker .colorSwatch{border-radius:2px}html[data-theme=hacker] .ledSwatchGrid,.hacker .ledSwatchGrid{background:#000;border-color:#0f8}.clientTile{border:1px solid var(--border);background:var(--surface-2);overflow-wrap:anywhere;border-radius:16px;gap:.55rem;padding:.7rem;display:grid}.clientTile.lost{opacity:.68}.clientTileHeader{justify-content:space-between;align-items:flex-start;gap:.7rem;display:flex}.clientIdentity{min-width:0}.clientIdentity h3{margin:.05rem 0;font-size:1rem;line-height:1.15}.clientMeta{color:var(--muted);margin:.2rem 0 0;font-size:.86rem}.sourceDevicePill{color:#5b21b6;background:#ede9fe}.consoleDeviceBadge{color:#a7f3d0;background:#052e2b;border:1px solid #065f46;border-radius:999px;align-items:center;padding:.1rem .45rem;font-weight:900;display:inline-flex}.logFollowToggle.active{background:var(--primary);color:#fff}.logRowDevice{white-space:nowrap}.logRowMeta{color:#9ca3af;font-size:.82rem}.deviceGroupToggle{min-width:max-content}.deviceToolbar{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end}.networkScanPanel summary{cursor:pointer;justify-content:space-between;align-items:center;gap:.7rem;font-weight:900;display:flex}.networkScanPanel[open] summary{margin-bottom:.7rem}.logRow summary{grid-template-columns:auto auto auto auto 1fr}.logRow strong{grid-column:1/-1}.miniConsoleBody{font-family:ui-monospace,monospace}.miniConsoleLine{grid-template-columns:auto auto auto auto 1fr;align-items:start;gap:.4rem;display:grid}@media (width<=700px){.logRow summary{grid-template-columns:auto auto 1fr}.logRowDevice{grid-column:1/-1}.miniConsoleLine{grid-template-columns:max-content max-content max-content max-content max-content}.miniConsoleLine span:last-child{grid-column:auto}}.consolePage{height:calc(100dvh - var(--mobile-top-height,56px) - var(--nav-h));grid-template-rows:auto minmax(0,1fr);gap:.5rem;min-height:0;display:grid;overflow:hidden}.consoleHeaderCompact{align-items:baseline;gap:.5rem;min-height:0;display:flex;overflow:hidden}.consoleHeaderCompact strong{font-size:.95rem}.consoleHeaderCompact span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.consoleShell{grid-template-rows:minmax(0,1fr) auto;gap:.6rem;min-height:0;display:grid}.consoleShellFull{height:100%;overflow:hidden}.consoleLogPane{flex-direction:column;min-height:0;display:flex;overflow:hidden}.consoleLogNotice{margin:0 0 .35rem}.consoleControlDock{border:1px solid var(--border);background:var(--surface);min-height:0;box-shadow:var(--shadow);border-radius:16px;gap:.45rem;padding:.55rem;display:grid;overflow:hidden}.consoleQuickRow{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.45rem;display:grid}.consoleQuickRow .btn{white-space:nowrap;padding-inline:.65rem}.consoleFilters{min-height:0;overflow:hidden}.consoleFilters>summary{cursor:pointer;width:100%;list-style:none}.consoleFilters>summary::-webkit-details-marker{display:none}.consoleFilters[open]{max-height:38dvh;padding-right:.1rem;overflow:auto}.consoleFilterGrid{gap:.45rem;padding-top:.45rem;display:grid}.consoleFilterGrid .chipRow{flex-wrap:wrap;gap:.35rem;display:flex}.consolePage .log,.consoleShell .log{flex:auto;height:100%;min-height:0;overflow:auto}.logRowSummary{grid-template-columns:minmax(0,1fr);gap:.22rem;display:grid}.logRowTop,.logRowMessage{align-items:baseline;gap:.45rem;min-width:0;display:flex}.logRowTop{flex-wrap:wrap}.logRowMessage strong{overflow-wrap:anywhere;min-width:0}.consoleDeviceBadge{color:#a7f3d0;background:#052e2b;border:1px solid #065f46;border-radius:999px;align-items:center;max-width:100%;padding:.1rem .45rem;font-weight:900;display:inline-flex}@media (width<=420px){.consoleQuickRow{grid-template-columns:minmax(0,1fr) 1fr}.consoleQuickRow .logFollowToggle{grid-column:1/-1}}@media (width>=1024px){.consolePage{height:calc(100dvh - 2.5rem - 54px)}.consoleHeaderCompact{display:none}.consoleShellFull{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) 320px}.consoleShellFull .consoleControlDock{align-content:start;max-height:100%;overflow:auto}.consoleShellFull .consoleQuickRow{grid-template-columns:minmax(0,1fr)}.consoleShellFull .consoleFilters{max-height:none;overflow:visible}.consoleShellFull .consoleFilters:not([open]) .consoleFilterGrid{display:grid}.consoleShellFull .consoleFilters>summary{cursor:default;pointer-events:none}}.inventoryTopBar{top:calc(var(--mobile-top-height,56px) + .35rem);z-index:20;border:1px solid var(--border);background:color-mix(in srgb, var(--surface-glass) 88%, transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:18px;justify-content:space-between;align-items:center;gap:.7rem;margin:.45rem 0 .7rem;padding:.55rem;display:flex;position:sticky}.inventoryCounts{color:var(--muted);white-space:nowrap;font-size:.84rem;font-weight:900}.inventorySummaryStrip{border:1px solid var(--border);background:var(--surface-2);color:var(--muted);border-radius:16px;flex-wrap:wrap;align-items:center;gap:.45rem;margin:.45rem 0;padding:.6rem .7rem;font-weight:800;display:flex}.inventorySummaryStrip span:not(:last-child):after{content:"·";color:var(--muted);margin-left:.45rem}.inventorySummaryStrip strong{color:var(--text);font-size:1.05rem}.compactActionToolbar{flex-wrap:wrap;gap:.45rem;min-width:0;display:flex}.toolbarButton{border:1px solid var(--border);background:var(--surface);min-height:42px;color:var(--text);cursor:pointer;border-radius:999px;padding:.55rem .75rem;font-weight:900}.filterSummaryButton{background:color-mix(in srgb, var(--primary) 12%, var(--surface));border-color:color-mix(in srgb, var(--primary) 35%, var(--border))}.mobileCollapsedPanel{gap:.75rem;display:grid}.networkTileHeader>div,.clientIdentity{min-width:0}.networkTile .chipRow,.clientTile .chipRow{gap:.3rem;margin:.45rem 0}.sourceEspPills{flex-wrap:wrap;gap:.3rem;max-width:100%;display:flex;overflow:hidden}.sourceEspPills .badge{white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:100%;overflow:hidden}.responsivePanel .mobileCollapsedPanel{max-height:calc(82dvh - 5rem);padding-bottom:calc(.5rem + env(safe-area-inset-bottom));overflow:auto}@media (width<=720px){.inventoryTopBar{top:calc(var(--mobile-top-height,56px) + .25rem);flex-direction:column;align-items:stretch}.compactActionToolbar{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.compactActionToolbar .toolbarButton{min-width:0;padding-inline:.55rem}.compactActionToolbar .toolbarButton:nth-child(3){grid-column:1/-1}.inventoryCounts{white-space:normal}.inventorySummaryStrip{gap:.3rem;padding:.55rem;font-size:.85rem}.networkTile,.clientTile{border-radius:14px;padding:.65rem}.networkTileHeader,.clientTileHeader{gap:.45rem}.networkTileHeader h3,.clientIdentity h3{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:1rem;overflow:hidden}.networkSignalIcon{font-size:.78rem}.networkSignalIcon svg{width:18px;height:18px}.networkTile .badge,.networkTile .securityPill,.clientTile .badge,.clientTile .statusBadge{padding:.18rem .42rem;font-size:.68rem}.clientMeta{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.78rem;display:-webkit-box;overflow:hidden}.sourceEspPills .badge{max-width:calc(50% - .2rem)}}.dashboardHealthGrid{gap:1rem;margin-bottom:1rem;display:grid}.healthHeroCompact{gap:1rem;padding:clamp(1rem,3vw,1.35rem);display:grid}.healthHeroHeader,.healthStatusRows>div,.lastCriticalEvent,.dashboardSecondaryLinks{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.healthHeroHeader h2{margin:.1rem 0 0;font-size:clamp(1.35rem,5vw,2rem)}.healthStatusRows{gap:.55rem;display:grid}.healthStatusRows>div,.lastCriticalEvent{border:1px solid var(--border);border-radius:calc(var(--radius-card) - 6px);background:color-mix(in srgb, var(--surface-2) 72%, transparent);min-height:48px;padding:.7rem .8rem}.healthStatusRows span,.lastCriticalEvent span,.primaryNavCards span{color:var(--muted);font-size:.88rem}.lastCriticalEvent{flex-direction:column;align-items:flex-start}.lastCriticalEvent strong{line-height:1.35}.primaryNavCards{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.primaryNavCards a{border:1px solid var(--border);border-radius:var(--radius-card);background:color-mix(in srgb, var(--surface) 86%, transparent);min-height:86px;color:var(--text);box-shadow:var(--shadow);align-content:center;gap:.25rem;padding:.95rem;text-decoration:none;display:grid}.primaryNavCards a:hover,.primaryNavCards a:focus-visible{border-color:color-mix(in srgb, var(--primary) 70%, var(--border));transform:translateY(-1px)}.primaryNavCards strong{font-size:1.05rem}.dashboardActivityGrid{gap:1rem;margin-bottom:1rem;display:grid}.criticalEventList{gap:.65rem;display:grid}.criticalEventList .listCard{margin:0}.dashboardSecondaryPanel{align-content:start;gap:.8rem;display:grid}.dashboardSecondaryLinks{flex-wrap:wrap;justify-content:flex-start}.dashboardDiagnosticsCollapsed{gap:.75rem;margin-bottom:1rem;display:grid}.dashboardDiagnosticsCollapsed .dashboardProgressive{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-glass);margin:0;padding:.85rem}.dashboardDiagnosticsCollapsed .dashboardProgressive[open]{gap:.8rem;display:grid}.dashboardDiagnosticsCollapsed summary{align-items:center;min-height:44px;display:flex}.textLink{color:var(--primary);font-weight:800;text-decoration:none}.textLink:hover{text-decoration:underline}@media (width>=900px){.dashboardHealthGrid{grid-template-columns:minmax(320px,.9fr) minmax(420px,1.1fr);align-items:stretch}.primaryNavCards{grid-template-columns:repeat(2,minmax(0,1fr))}.primaryNavCards a{min-height:126px}.dashboardActivityGrid{grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);align-items:start}.dashboardDiagnosticsCollapsed{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=639px){.dashboardHealthGrid,.dashboardActivityGrid,.dashboardDiagnosticsCollapsed{gap:.75rem}.primaryNavCards{grid-template-columns:1fr 1fr}.primaryNavCards a{min-height:76px;padding:.8rem}.primaryNavCards span{font-size:.78rem}.healthStatusRows>div,.lastCriticalEvent{padding:.65rem}}html.hacker .loginPage,html[data-theme=hacker] .loginPage{color:#0f8;background:#000}html.hacker .loginShell,html.hacker .loginHero,html.hacker .loginCard,html[data-theme=hacker] .loginShell,html[data-theme=hacker] .loginHero,html[data-theme=hacker] .loginCard{background:#000;border-color:#0f8;box-shadow:inset 0 0 0 1px #0f86,0 0 20px #00ff8828}html.hacker .loginHero:before,html[data-theme=hacker] .loginHero:before{content:"[ HACKYESP AUTH TERMINAL ]";color:#0f8;margin-bottom:.75rem;font-weight:900;display:block}html.hacker .loginButton,html[data-theme=hacker] .loginButton{color:#000;box-shadow:none;text-transform:uppercase;background:#0f8;border:1px solid #0f8}html.hacker .loginIcon,html[data-theme=hacker] .loginIcon{color:#0f8;background:#000;border:1px solid #0f8}html.hacker .loginSignals .badge,html[data-theme=hacker] .loginSignals .badge{color:#0f8;background:#000;border-color:#0f8}.loginUtilityBar{z-index:2;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;padding:.25rem;display:flex;position:relative}.loginLanguageSelect,.themeSwitcher,.themeSwitcherCompact{color:var(--text);align-items:center;gap:.35rem;font-size:.82rem;font-weight:800;display:inline-flex}.themeSwitcherCompact select,.loginLanguageSelect select{max-width:9.5rem;min-height:38px}@media (width>=768px){.loginUtilityBar{position:absolute;top:.85rem;right:.85rem}.loginCard{padding-top:3.2rem}}@media (width<=767px){.loginUtilityBar{justify-content:stretch;padding:0 .15rem}.loginUtilityBar>*{flex:auto}.loginUtilityBar select{width:100%}}.responsiveOverlay{z-index:1000;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#02061799;display:flex;position:fixed;inset:0}.responsivePanel{background:var(--surface-glass);color:var(--text);border:1px solid var(--border);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);padding:1rem;box-shadow:0 28px 80px #0009,inset 0 1px #ffffff12}@media (width<=767px){.responsiveOverlay{padding:0 .6rem calc(.6rem + env(safe-area-inset-bottom));justify-content:center;align-items:flex-end}.responsivePanel{border-radius:24px 24px var(--radius-card) var(--radius-card);width:min(100%,760px);max-height:min(88dvh,760px);overflow:auto}}@media (width>=768px){.responsiveOverlay{justify-content:center;align-items:center;padding:1.25rem}.responsivePanel.modal{border-radius:var(--radius-card);width:min(680px,100vw - 2.5rem);max-height:min(86dvh,760px);overflow:auto}.responsivePanel.drawer{border-radius:var(--radius-card) 0 0 var(--radius-card);width:min(480px,92vw);height:100dvh;max-height:100dvh;margin-left:auto;overflow:auto}.responsiveOverlay.drawer{justify-content:flex-end;align-items:stretch;padding:0}}.clientDetailsOverlayBody .metadataBlock{color:#c7f9cc;background:#020617;max-height:220px;padding:.75rem;display:block;overflow:auto}.main.mainConsole .mobileTop{margin-bottom:.5rem}.consoleShell .log{overscroll-behavior:contain;height:100%;min-height:0;overflow-y:auto}.consoleControlDock{max-height:34dvh;overflow:hidden}@media (width>=1024px){.main.mainConsole{grid-template-rows:minmax(0,1fr);height:100dvh;max-height:100dvh;padding:1.25rem;display:grid;overflow:hidden}.main.mainConsole .appTop,.main.mainConsole .mobileTop{display:none}.consoleShellFull{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) 320px;height:100%}.consoleControlDock{max-height:100%;overflow-y:auto}}html.hacker,html[data-theme=hacker]{--radius:0px;--radius-lg:0px;--radius-card:0px;--radius-control:0px}html.hacker *,html[data-theme=hacker] *{border-radius:0!important}.shell.shellConsole{height:100dvh;max-height:100dvh;overflow:hidden}body.consoleRoute{overflow:hidden}.main.mainConsole{height:calc(100dvh - var(--nav-h));max-height:calc(100dvh - var(--nav-h));padding:calc(.6rem + var(--safe-top)) .75rem calc(.45rem + var(--safe-bottom));grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.main.mainConsole .mobileTop{flex:none;margin-bottom:.5rem}.main.mainConsole .appTop{display:none}.consolePage{grid-template-rows:minmax(0,1fr);height:100%;min-height:0;display:grid;overflow:hidden}.consoleHeaderCompact{display:none}.consoleShellFull{grid-template-rows:minmax(0,1fr) auto;height:100%;min-height:0;display:grid;overflow:hidden}.consoleLogPane{min-height:0;overflow:hidden}.consoleShell .log{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;height:100%;min-height:0;overflow-y:auto}.consoleControlDock{flex:none;max-height:34dvh;overflow:hidden}.consoleFilters[open]{max-height:25dvh;overflow-y:auto}@media (width>=1024px){.main.mainConsole{grid-template-rows:minmax(0,1fr);height:100dvh;max-height:100dvh;padding:1.25rem;display:grid;overflow:hidden}.main.mainConsole .mobileTop,.main.mainConsole .appTop{display:none}.consoleShellFull{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) 320px;height:100%}.consoleControlDock{max-height:100%;overflow-y:auto}}.detectorPanel{margin:1rem 0}.warningBanner{background:#f59e0b1f;border:1px solid #f59e0b;border-radius:.75rem;padding:.75rem}.redIndicator{color:#ef4444;font-weight:700}.channelChecklist{flex-wrap:wrap;gap:.5rem 1rem;margin:.75rem 0;display:flex}.snifferTableWrap{margin-top:1rem;overflow-x:auto}.snifferTable{border-collapse:collapse;width:100%;font-size:.85rem}.snifferTable th{background:var(--panel,#111827);position:sticky;top:0}.snifferTable th,.snifferTable td{white-space:nowrap;border-bottom:1px solid #94a3b840;padding:.45rem .6rem}.consolePage .log,.consoleShell .log{scrollbar-gutter:stable;white-space:nowrap;overflow-wrap:normal;word-break:normal;font-size:.72rem;overflow:auto!important}.consoleShell .logRowSummary{white-space:nowrap;cursor:pointer;grid-template-columns:max-content max-content max-content max-content max-content;align-items:baseline;gap:.5rem;min-width:max-content;display:inline-grid}.consoleShell .logRowTop,.consoleShell .logRowMessage{white-space:nowrap;flex-wrap:nowrap;min-width:max-content;display:contents}.consoleShell .logRowSource,.consoleShell .logRowDevice,.consoleShell .logRowMessage,.consoleShell .logRowMessage strong,.consoleShell .logRowSummary time{white-space:nowrap;overflow-wrap:normal;word-break:normal}.consoleShell .logRow>.logRowMeta{white-space:pre;max-width:calc(100vw - 2rem);overflow:auto}@media (width<=700px){.consoleShell .logRowSummary{grid-template-columns:max-content max-content max-content max-content max-content!important}.consoleShell .logRowDevice,.consoleShell .logRowMessage{grid-column:auto!important}}.networkTile.focusedTarget,.clientTile.focusedTarget{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 30%, transparent), 0 0 24px color-mix(in srgb, var(--primary) 35%, transparent)}.associatedDeviceList{gap:.5rem;display:grid}.associatedDeviceRow{border:1px solid var(--border);border-radius:12px;grid-template-columns:minmax(140px,1fr) max-content max-content max-content max-content max-content;align-items:center;gap:.5rem;padding:.55rem;display:grid}.associatedDeviceRow div{gap:.15rem;min-width:0;display:grid}.associatedDeviceRow span{white-space:nowrap}.networkChip{text-decoration:none}.deviceFrameHistory{max-width:100%;overflow-x:auto}@media (width<=700px){.associatedDeviceRow{grid-template-columns:1fr max-content}.associatedDeviceRow>span{grid-column:1/-1}}.flashStatusPanel{border:1px solid var(--border);background:var(--surface-2);color:var(--text);box-shadow:var(--shadow-sm);border-radius:14px;gap:.35rem;padding:.85rem 1rem;display:grid}.flashStatusLabel{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.78rem;font-weight:800}.flashStatusValue{color:var(--text);overflow-wrap:anywhere;font-size:1rem;line-height:1.35}.flashEta{color:var(--text)}button:disabled,.btn:disabled{opacity:.72;color:var(--text);cursor:not-allowed}html.light .flashStatusPanel{color:#0f172a;background:#f8fafc;border-color:#94a3b8}html.light .flashStatusValue{color:#0f172a}html.dark .flashStatusPanel{color:#f9fafb;background:#111827;border-color:#475569}html.dark .flashStatusValue{color:#f9fafb}html.hacker .flashStatusPanel,html[data-theme=hacker] .flashStatusPanel{color:#d1fae5;background:#001b12;border-color:#10b981}html.hacker .flashStatusValue,html[data-theme=hacker] .flashStatusValue{color:#ecfdf5}html.hacker .safeHint,html[data-theme=hacker] .safeHint,html.hacker .mobileCollapsedPanel .safeHint,html[data-theme=hacker] .mobileCollapsedPanel .safeHint{color:#d1fae5;background:#001b12;border:1px solid #10b981}html.hacker .actionFeedback,html[data-theme=hacker] .actionFeedback{color:#dbeafe;background:#061423;border:1px solid #38bdf8}html.hacker .warningBanner,html[data-theme=hacker] .warningBanner,html.hacker .riskNote,html[data-theme=hacker] .riskNote{color:#fde68a;background:#241a00;border-color:#f59e0b}.associatedDeviceRow a.iconButton{justify-self:end}@media (width<=700px){.associatedDeviceRow{align-items:start}.associatedDeviceRow a.iconButton{grid-area:1/2}}.consoleShell .log{white-space:nowrap;font-size:.72rem;overflow:auto}.consoleShell .logRow{width:max-content;min-width:max-content}.consoleShell .logRowSummary{white-space:nowrap;grid-template-columns:max-content max-content max-content max-content max-content;width:max-content;min-width:max-content;display:inline-grid}.consoleShell .logRowSummary>*{white-space:nowrap;overflow-wrap:normal;word-break:normal}.miniConsoleBody{white-space:nowrap;font-size:clamp(.62rem,2.7vw,.72rem);line-height:1.35;overflow:auto}.miniConsoleLine{white-space:nowrap;overflow-wrap:normal;word-break:normal;grid-template-columns:max-content max-content max-content max-content max-content;align-items:baseline;gap:.35rem;width:max-content;min-width:max-content;display:inline-grid}.miniConsoleLine>span{white-space:nowrap;overflow-wrap:normal;word-break:normal}.miniConsoleLine span:last-child{grid-column:auto}.consoleInDetails{overflow:hidden}.consoleInDetails .miniConsole{max-width:100%}.consoleInDetails .miniConsoleBody{overflow:auto}.serialLog,.serialLogBody{white-space:pre;word-break:normal;overflow-wrap:normal;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;line-height:1.35;overflow:auto}.logList,.logViewerBody,.miniConsoleBody,.serialLog{overflow:auto}.logLine,.logEntry,.miniConsoleLine{white-space:nowrap;overflow-wrap:normal;word-break:normal;grid-template-columns:max-content max-content max-content max-content max-content;column-gap:.45rem;min-width:max-content;font-size:.72rem;display:inline-grid}.miniConsoleLine{font-size:.66rem}.logLine>*,.logEntry>*,.miniConsoleLine>*,.miniConsoleMessage,.miniConsoleSource{white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important;grid-column:auto!important}.serialLog{white-space:pre;overflow-wrap:normal;word-break:normal;font-size:.72rem}.espTaskState{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 72%, transparent);border-radius:14px;margin-top:.75rem;padding:.65rem .75rem;overflow:hidden}.espTaskHeader{justify-content:space-between;align-items:center;gap:.55rem;min-width:0;font-size:.88rem;display:flex}.espTaskHeader strong{overflow-wrap:anywhere;min-width:0}.espTaskIdleLine{align-items:center;gap:.45rem;min-width:0;display:inline-flex}.espTaskLastInline{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.espTaskLoader{border:2px solid color-mix(in srgb, var(--accent) 28%, transparent);border-top-color:var(--accent);border-radius:999px;flex:0 0 .9rem;width:.9rem;height:.9rem;animation:.85s linear infinite espTaskSpin}.espTaskIdleIcon{color:#fff;background:#16a34a;border-radius:999px;flex:0 0 1.15rem;place-items:center;width:1.15rem;height:1.15rem;font-size:.78rem;font-weight:800;display:inline-grid}.espTaskProgress{background:color-mix(in srgb, var(--muted) 18%, transparent);border-radius:999px;width:100%;height:.45rem;margin-top:.5rem;overflow:hidden}.espTaskProgressRow{align-items:center;gap:.45rem;display:flex}.espTaskProgressRow .espTaskProgress{flex:auto;min-width:0}.espTaskStopButton{white-space:nowrap;border:1px solid color-mix(in srgb, var(--danger) 55%, var(--border));background:color-mix(in srgb, var(--danger) 14%, var(--surface));width:1.55rem;min-width:1.55rem;height:1.55rem;color:var(--danger);border-radius:.42rem;flex:0 0 1.55rem;justify-content:center;align-items:center;margin-top:.5rem;font-size:.62rem;line-height:1;display:flex;overflow:hidden}.espTaskStopButton:disabled{cursor:wait;opacity:.55}.espTaskProgress>span{border-radius:inherit;background:var(--progress-color,var(--led-color,var(--accent)));width:0%;max-width:100%;height:100%;box-shadow:0 0 12px color-mix(in srgb, var(--progress-color,var(--led-color,var(--accent))) 55%, transparent);transition:width .18s,background-color .18s;display:block}.espTaskDetail{color:var(--muted);overflow-wrap:anywhere;margin-top:.35rem;font-size:.78rem}html[data-theme=hacker] .espTaskState,.hacker .espTaskState{background:#020403cc;border-color:#0f86}html[data-theme=hacker] .espTaskProgress>span,.hacker .espTaskProgress>span{background:var(--progress-color,var(--led-color,#0f8));box-shadow:0 0 10px color-mix(in srgb, var(--progress-color,var(--led-color,#0f8)) 65%, transparent)}@keyframes espTaskSpin{to{transform:rotate(360deg)}}@media (width<=560px){.espTaskHeader{align-items:flex-start}}.snifferLivePanel{background:#0f172a52;border:1px solid #94a3b847;border-radius:14px;margin:12px 0;padding:12px}.snifferBadgeRow,.snifferMetrics{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.snifferMetrics span{color:var(--muted,#94a3b8);font-size:.85rem}.espTaskProgress.cycle span{transition:width .25s,background-color .25s}.statusOk{color:#22c55e}.statusWarn{color:#f59e0b}.usersCreateCard,.usersTableCard{margin-bottom:1rem}.userForm,.usersGrid{gap:.75rem;display:grid}.userForm{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}.userRow{border:1px solid var(--border);background:var(--surface);border-radius:1rem;gap:.5rem;padding:.9rem;display:grid}.userRow label{gap:.25rem;display:grid}.danger{color:#fff;background:#dc2626}.accessDenied{max-width:42rem;margin:2rem auto}.topControls .themeSwitcher,.topControls .mobileMenuSelect{grid-template-rows:minmax(1.1rem,auto) 48px;align-items:end;gap:.35rem;margin:0;display:grid}.topControls .themeSwitcher span,.topControls .mobileMenuSelect span{min-height:1.1rem;line-height:1.1;font:inherit;align-items:flex-end;font-weight:700;display:flex}.topControls .themeSwitcher,.topControls .mobileMenuSelect{min-width:9rem}.topControls .themeSwitcher select,.topControls .mobileMenuSelect select{width:100%;min-width:9rem;height:48px;min-height:48px}.topControls .btn{align-self:end;min-height:48px}.consolePage .log{white-space:nowrap;overflow-x:auto}.consolePage .logRow{width:max-content;min-width:max-content}.consolePage .logRowSummary{white-space:nowrap;flex-wrap:nowrap;align-items:baseline;gap:.45rem;width:max-content;min-width:max-content;display:flex}.consolePage .logRowSummary>*{flex:none}.consolePage .logRowMessage,.consolePage .logRowMessage strong{white-space:nowrap;overflow-wrap:normal;word-break:normal;min-width:max-content}.guidedStatusRow{flex-wrap:wrap;gap:.5rem;margin:.75rem 0;display:flex}.guidedStatusChip{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .65rem;font-size:.85rem;font-weight:700;display:inline-flex}.guidedStatusChip.ok{color:#047857;border-color:#10b981}.guidedStatusChip.running{color:#1d4ed8;border-color:#3b82f6}.guidedStatusChip.warning{color:#b45309;border-color:#f59e0b}.guidedStatusChip.pending{color:var(--muted)}.guidedSmartAction{justify-content:center;width:min(100%,28rem);margin:.5rem 0 .75rem}.guidedTroubleshootingPanel,.guidedTechnicalDetails{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;margin:.75rem 0;padding:.75rem 1rem}.guidedTroubleshootingPanel>summary,.guidedTechnicalDetails>summary,.guidedLogPanel>summary{cursor:pointer;font-weight:800}.guidedLogPanel pre{white-space:pre;overflow-x:auto}.structuredLogRow{white-space:nowrap;align-items:center;gap:.5rem;min-width:max-content;display:flex;overflow-x:auto}.logChip{border:1px solid #94a3b859;border-radius:999px;align-items:center;padding:.15rem .5rem;font-size:.78rem;font-weight:700;display:inline-flex}.userChip{color:#bfdbfe;background:#3b82f624}.espChip{color:#99f6e4;background:#14b8a624}.actionChip{color:#e9d5ff;background:#a855f729}.resultChip.ok{color:#bbf7d0;background:#22c55e2e}.resultChip.failed{color:#fecaca;background:#ef44442e}.resultChip.warn{color:#fde68a;background:#f59e0b2e}.resultChip.pending{color:#e2e8f0;background:#94a3b82e}.logParams{font-family:var(--mono,monospace);opacity:.9;text-overflow:ellipsis;max-width:42rem;overflow:hidden}.page,main{max-width:100%}.statusBadge{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.statusBadge.warning{color:#92400e;background:#fef3c7}.statusBadge.danger{color:#991b1b;background:#fee2e2}.statusBadge.success{color:#166534;background:#dcfce7}.statusBadge.neutral{color:#334155;background:#e2e8f0}.dashboardQuickTiles{margin:0 0 1rem}.espTaskStopButton.dangerStop{color:#fee2e2;white-space:nowrap;background:#dc2626;border-color:#ef4444;justify-content:center;align-items:center;width:36px;min-width:36px;max-width:36px;height:36px;min-height:36px;padding:0;font-size:1rem;line-height:1;display:flex;overflow:hidden}@media (width<=767px){.responsivePanel{padding-bottom:calc(1rem + env(safe-area-inset-bottom) + var(--mobile-bottom-height,64px))}.sheetHeader{z-index:2;background:var(--surface-glass);position:sticky;top:0}}.rangeField{border:1px solid var(--border);background:#0f172a59;border-radius:14px;gap:.55rem;padding:.75rem;display:grid}.rangeFieldHeader{justify-content:space-between;align-items:center;gap:.75rem;font-weight:700;display:flex}.rangeValuePill{color:var(--accent);white-space:nowrap;background:#22d3ee29;border-radius:999px;padding:.2rem .55rem}.rangeField input[type=range]{width:100%;accent-color:var(--accent);min-height:32px}.rangeField small{color:var(--muted)}.deviceChecklist .disabledOption{opacity:.58;cursor:not-allowed}.rangeField{gap:.55rem;min-width:220px;display:grid}.rangeFieldHeader{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.rangeValuePill{border:1px solid var(--border,#334155);border-radius:999px;padding:.15rem .55rem;font-weight:700}.rangeField input[type=range]{width:100%;min-height:36px}.activeScan{border:1px solid var(--border,#334155);border-radius:14px;gap:.35rem;margin-top:.8rem;padding:.8rem;display:grid}.espTitleButton{max-width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:inline-block}.espTitleButton:disabled{cursor:default}.espTitleButton:not(:disabled):focus-visible h3,.espTitleButton:not(:disabled):hover h3{text-underline-offset:.18em;text-decoration:underline}.espRenameForm input{border:1px solid var(--border);width:min(100%,22rem);color:var(--text);background:var(--surface-glass);font:inherit;border-radius:.75rem;padding:.2rem .45rem;font-weight:800}.espRenameError{color:var(--danger,#fecaca);margin:.2rem 0 0;font-size:.78rem;font-weight:700}.taskCard{border:1px solid var(--border,#263244);background:#0f172a8c;border-radius:14px;align-items:center;gap:.75rem;margin-top:.75rem;padding:.75rem;display:flex}.taskStateIcon{place-items:center;width:1.8rem;display:grid}.taskBody{flex-direction:column;flex:1;gap:.25rem;display:flex}.taskProgressFill{background:var(--progress-color,var(--led-color));height:100%;box-shadow:0 0 0 1px #0f172a59,0 0 10px var(--progress-color,var(--led-color))}.dangerStop{min-width:2rem;color:#fff!important;background:#dc2626!important;border-radius:6px!important}.ledControlOverlay,.ledControlCard{background:#0f172a8c;border:1px solid #94a3b847;border-radius:18px;padding:1rem}.ledPreview{box-shadow:0 0 0 2px #ffffff38,0 0 22px var(--led-color);border:1px solid #0f172a73}.ledQuickCard{border:1px solid var(--border,#94a3b859);background:#0f172a73;border-radius:16px;flex-direction:row;justify-content:center;align-items:center;gap:.45rem;padding:.45rem;display:flex;box-shadow:inset 0 1px #ffffff0f}.ledQuickCard.isOn{border-color:color-mix(in srgb, var(--quick-led-color,#0f8) 45%, #94a3b859)}.ledQuickButton{background:var(--quick-led-color,#0f8)!important;border:2px solid #0f172ad9!important;position:static!important;box-shadow:inset 0 0 0 1px #ffffffbf,0 0 0 2px #0f172a8c,0 6px 14px #00000040!important}.ledQuickButton.isOn{box-shadow:inset 0 0 0 1px #ffffffd9, 0 0 0 2px #0f172a8c, 0 0 18px color-mix(in srgb, var(--quick-led-color,#0f8) 70%, transparent), 0 8px 18px #00000047!important}.ledQuickButton.off{opacity:.72;filter:grayscale(.25)}.ledRoundButtonWrap{place-items:center;display:inline-grid;position:relative}.ledPendingRing{border:3px solid #0000;border-top-color:var(--quick-led-color,#0f8);border-right-color:color-mix(in srgb, var(--quick-led-color,#0f8) 55%, transparent);pointer-events:none;border-radius:999px;animation:.7s linear infinite spin;position:absolute;inset:-7px}.ledFailedBadge{background:var(--danger,#dc2626);color:#fff;pointer-events:none;border-radius:999px;place-items:center;width:18px;height:18px;font-size:.72rem;font-weight:900;display:grid;position:absolute;top:-6px;right:-6px;box-shadow:0 0 0 2px #0f172a8c}@media (prefers-reduced-motion:reduce){.ledPendingRing{animation-duration:1.6s}}.ledQuickSwitch{cursor:pointer;background:0 0;border:0;width:2.35rem;height:4.1rem;padding:0}.ledQuickSwitch:disabled{opacity:.65;cursor:wait}.ledQuickSwitchTrack{background:linear-gradient(#1e293bf2,#0f172af2);border:1px solid #94a3b88c;border-radius:999px;grid-template-rows:1fr 1fr;place-items:center;width:100%;height:100%;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 2px 8px #00000059}.ledQuickSwitchThumb{background:#64748bf2;border-radius:999px;height:1.75rem;transition:transform .18s,background .18s;position:absolute;bottom:.22rem;left:.22rem;right:.22rem;box-shadow:0 3px 8px #00000059,inset 0 1px #ffffff59}.ledQuickSwitch.isOn .ledQuickSwitchThumb{background:var(--quick-led-color,#0f8);transform:translateY(-1.74rem)}.ledQuickSwitchLabelTop,.ledQuickSwitchLabelBottom{z-index:1;letter-spacing:.03em;color:#e2e8f0bf;pointer-events:none;font-size:.58rem;font-weight:900;position:relative}.ledQuickSwitch.isOn .ledQuickSwitchLabelTop,.ledQuickSwitch:not(.isOn) .ledQuickSwitchLabelBottom{color:#08111f}.taskCard{background:#0f172a73;border:1px solid #94a3b840;border-radius:14px;align-items:center;gap:.75rem;padding:.7rem;display:flex}.taskStateIcon{background:#ffffff0f;border-radius:.55rem;place-items:center;width:1.8rem;min-width:1.8rem;height:1.8rem;display:grid}.taskBody{flex-direction:column;flex:1;gap:.25rem;min-width:0;display:flex}.taskProgressTrack{background:#0f172abf;border:1px solid #94a3b873;border-radius:999px;height:.45rem;overflow:hidden}.taskProgressFill{background:var(--progress-color,var(--led-color,#22c55e));min-width:2px;height:100%;box-shadow:inset 0 0 0 1px #0f172a26}.taskSpinner{border:2px solid #94a3b873;border-top-color:var(--led-color,#22c55e);border-radius:50%;width:1rem;height:1rem;animation:.8s linear infinite spin}.espSelectorRow{border:1px solid #94a3b840;border-radius:12px;align-items:center;gap:.75rem;padding:.75rem;display:flex}.espSelectorRow input[type=checkbox]{flex:none;width:1.1rem;height:1.1rem}.modalStickyFooter{background:var(--surface,#0f172a);justify-content:flex-end;gap:.75rem;padding-top:.75rem;display:flex;position:sticky;bottom:0}@media (width<=640px){.taskCard{flex-wrap:wrap;align-items:flex-start}.espTaskStopButton{margin-left:auto}.ledQuickCard{flex-direction:row}}.statusError{color:#fecaca}.espTaskIdleIcon.failure{color:#f87171}.espTaskIdleIcon.warning{color:#f59e0b}.taskLaunchModal .card.compact{flex-direction:column;gap:.2rem;display:flex}.snifferTable tr{cursor:pointer}.advancedFields{grid-column:1/-1}.srOnly{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.taskStateIcon .successIcon{color:#22c55e;font-weight:800}.taskSpinner[role=status]{animation:1.6s linear infinite spin}.muted.compact{margin:.1rem 0 .35rem;font-size:.85rem}.taskProgressTrack[role=progressbar]{position:relative}.taskCard.snifferPhaseSniff{border-color:color-mix(in srgb, var(--led-color,var(--accent)) 45%, var(--border))}.taskCard.snifferPhaseEspnow{border-color:color-mix(in srgb, var(--progress-color,var(--accent)) 45%, var(--border))}.taskCard.snifferPhaseStop{border-color:color-mix(in srgb, #f59e0b 50%, var(--border))}.taskPhaseBadge{border:1px solid var(--border);width:fit-content;color:var(--muted);border-radius:999px;align-items:center;gap:.35rem;padding:.15rem .45rem;font-size:.75rem;display:inline-flex}.taskPhaseBadge.sniff{color:var(--text);border-color:color-mix(in srgb, var(--led-color,var(--accent)) 45%, var(--border))}.taskPhaseBadge.espnow{color:var(--text);border-color:color-mix(in srgb, var(--progress-color,var(--accent)) 45%, var(--border));background:color-mix(in srgb, var(--progress-color,var(--accent)) 12%, transparent)}.taskPhaseBadge.stop{color:#fde68a;border-color:color-mix(in srgb, #f59e0b 55%, var(--border))}.taskMetricsLine{color:var(--muted);font-size:.78rem;line-height:1.35}.taskStopPending{opacity:.72;cursor:wait}.gatewayWifiCredentialsPanel{gap:.8rem;display:grid}.gatewayWifiCredentialList{gap:.55rem;display:grid}.gatewayWifiCredentialRow{border:1px solid var(--border);border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface-2) 82%, transparent);justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.75rem;display:flex}.gatewayWifiCredentialRow strong{display:block}.gatewayWifiCredentialRow small{color:var(--muted)}.gatewayWifiCredentialForm{gap:.75rem;display:grid}.gatewayWifiCredentialForm label{color:var(--muted);gap:.35rem;font-weight:700;display:grid}.gatewayWifiCredentialForm input[type=text],.gatewayWifiCredentialForm input[type=password]{width:100%}.checkboxLine{grid-template-columns:auto 1fr;align-items:center;color:var(--text)!important;gap:.55rem!important;font-weight:600!important;display:flex!important}.checkboxLine input{width:auto}@media (width<=640px){.gatewayWifiCredentialRow{display:grid}}.firmwareBuildLivePanel{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:14px;gap:.75rem;margin:.75rem 0;padding:1rem;display:grid}.firmwareBuildLiveHeader{align-items:flex-start;gap:.75rem;min-width:0;display:flex}.firmwareBuildLiveHeader p,.firmwareBuildStatusDetail{color:var(--muted);margin:.2rem 0 0}.firmwareBuildSpinner{border:3px solid color-mix(in srgb, var(--primary) 24%, transparent);border-top-color:var(--primary);border-radius:50%;flex:none;width:1.15rem;height:1.15rem;margin-top:.15rem;animation:.8s linear infinite firmwareBuildSpin}.firmwareBuildMeta{color:var(--muted);flex-wrap:wrap;gap:.5rem .75rem;font-size:.92rem;display:flex}.firmwareBuildMeta span{border:1px solid var(--border);background:var(--surface-1);border-radius:999px;padding:.25rem .55rem}.firmwareBuildLatestLine{overflow-wrap:anywhere;word-break:break-word;font-family:var(--mono,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);color:var(--text);margin:0}.flashProgressBar.isBuildRunning span{background-image:linear-gradient(45deg, color-mix(in srgb, var(--primary) 78%, var(--surface-1)) 25%, var(--primary) 25%, var(--primary) 50%, color-mix(in srgb, var(--primary) 78%, var(--surface-1)) 50%, color-mix(in srgb, var(--primary) 78%, var(--surface-1)) 75%, var(--primary) 75%, var(--primary));background-size:1.5rem 1.5rem;animation:.8s linear infinite firmwareBuildProgressStripes}@keyframes firmwareBuildSpin{to{transform:rotate(360deg)}}@keyframes firmwareBuildProgressStripes{0%{background-position:0 0}to{background-position:1.5rem 0}}@media (width<=640px){.firmwareBuildLivePanel{padding:.85rem}.firmwareBuildLiveHeader{gap:.6rem}.firmwareBuildMeta{display:grid}}@media (prefers-reduced-motion:reduce){.firmwareBuildSpinner,.flashProgressBar.isBuildRunning span{animation:none}}.rangeFieldValueControls{justify-content:flex-end;align-items:center;display:inline-flex}.rangeNumberControl{border:1px solid var(--border);background:color-mix(in srgb, var(--surface-2) 82%, transparent);color:var(--text);border-radius:999px;align-items:center;gap:.35rem;padding:.15rem .5rem;display:inline-flex}.rangeNumberControl input{width:5.25rem;min-height:32px;color:inherit;font:inherit;text-align:right;background:0 0;border:0;outline:0;padding:.1rem .25rem;font-weight:800}.rangeNumberControl input:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 42%, transparent);border-radius:.35rem}.taskProgressFill,.espTaskProgress>span{background:linear-gradient(90deg, color-mix(in srgb, #94a3b8 82%, var(--progress-color,var(--led-color,var(--accent))) 18%), color-mix(in srgb, #64748b 76%, var(--progress-color,var(--led-color,var(--accent))) 24%));box-shadow:0 0 0 1px #0f172a61, 0 0 9px color-mix(in srgb, var(--progress-color,var(--led-color,var(--accent))) 24%, transparent)}html[data-theme=hacker] .espTaskProgress>span,.hacker .espTaskProgress>span{background:linear-gradient(90deg, color-mix(in srgb, #64748b 80%, var(--progress-color,var(--led-color,#0f8)) 20%), color-mix(in srgb, #475569 72%, var(--progress-color,var(--led-color,#0f8)) 28%))}.wifiDiscoveryTasksPanel{min-height:190px}.wifiDiscoveryTasksPanel .espTaskList{min-height:132px}.wifiDiscoveryTasksPanel .taskCard{align-items:flex-start;min-height:126px}.wifiDiscoveryTasksPanel .taskBody{justify-content:flex-start;min-height:100px}.wifiDiscoveryTasksPanel .taskMetricsLine{min-height:1.1em}.espTileGrid{align-items:start}.espTile{flex-direction:column;min-height:304px;display:flex}.espTileHeader{min-height:82px}.espStatePills{align-content:flex-start;min-height:32px}.espTaskState,.espTaskList{min-height:112px}.dashboardQuickTiles{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboardQuickTiles a{align-items:center;gap:.85rem;min-height:112px;display:flex}.dashboardQuickTileIcon{border:1px solid color-mix(in srgb, var(--primary) 30%, var(--border));width:46px;height:46px;color:var(--primary);background:color-mix(in srgb, var(--primary) 12%, var(--surface-2));border-radius:14px;flex:0 0 46px;place-items:center;display:grid}.dashboardQuickTileText{gap:.25rem;min-width:0;display:grid}.dashboardQuickTileText strong,.dashboardQuickTileText>span{display:block}.dashboardHealthGrid{grid-template-columns:minmax(0,1fr)!important}.dashboardHealthGrid .healthHeroCompact{width:100%}.espNowSignalChart{border-top:1px solid var(--border);gap:.75rem;margin-top:.9rem;padding-top:.9rem;display:grid}.espNowSignalPeriods{flex-wrap:wrap;gap:.45rem;display:flex}.espNowSignalPeriods button{border:1px solid var(--border);min-height:34px;color:var(--muted);background:var(--surface-2);border-radius:999px;padding:.35rem .75rem;font-weight:800}.espNowSignalPeriods button.active{border-color:color-mix(in srgb, var(--primary) 65%, var(--border));color:var(--text);background:color-mix(in srgb, var(--primary) 16%, var(--surface-2))}.espNowSignalChartFrame{border:1px solid var(--border);background:color-mix(in srgb, var(--surface-2) 82%, transparent);border-radius:14px;min-height:220px;padding:.5rem}.espNowSignalChartFrame svg{width:100%;height:210px;display:block;overflow:visible}.espNowSignalChartGrid{stroke:color-mix(in srgb, var(--muted) 28%, transparent);stroke-width:1px}.espNowSignalChartLine{fill:none;stroke:var(--primary);stroke-width:2.5px;vector-effect:non-scaling-stroke}.espNowSignalChartPoint{fill:var(--primary)}.espNowSignalChartLabel{fill:var(--muted);font-size:10px}@media (width<=1050px){.dashboardQuickTiles{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=639px){.dashboardQuickTiles a{min-height:94px;padding:.75rem}.dashboardQuickTileIcon{flex-basis:38px;width:38px;height:38px}.espTile{min-height:286px}.wifiDiscoveryTasksPanel{min-height:210px}}.wifiDiscoveryTasksPlaceholder{border:1px dashed var(--border);min-height:8.25rem;color:var(--muted);text-align:center;border-radius:.9rem;place-items:center;padding:1rem;display:grid}.brandRow h2{align-items:center;gap:.55rem;display:flex}.brandRow h2 svg{flex:none}.mobileTop span{align-items:center;gap:.4rem;display:inline-flex}.mobileTop span svg{flex:none}.loginHeroMark{align-self:flex-start;width:64px;height:64px;margin-bottom:.35rem}.loginIcon svg{width:30px;height:30px}.signalCadence{flex-direction:column;gap:.5rem;margin:.25rem 0 .75rem;display:flex}.signalCadenceHead{flex-direction:column;gap:.1rem;display:flex}.signalCadenceLabel{font-size:.9rem;font-weight:800}.signalCadenceSub{color:var(--muted);font-size:.78rem}.signalCadenceOptions{flex-wrap:wrap;gap:.45rem;display:flex}.signalCadenceOptions button{border:1px solid var(--border);min-width:74px;min-height:44px;color:var(--muted);background:var(--surface-2);cursor:pointer;border-radius:14px;flex-direction:column;align-items:center;gap:.05rem;padding:.3rem .8rem;display:flex}.signalCadenceOptions button:disabled{opacity:.55;cursor:default}.signalCadenceOptions button.active{border-color:color-mix(in srgb, var(--primary) 65%, var(--border));color:var(--text);background:color-mix(in srgb, var(--primary) 16%, var(--surface-2))}.signalCadenceOptionLabel{font-size:.85rem;font-weight:800}.signalCadenceOptionHint{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem}.signalCadenceError{color:var(--danger);margin:0;font-size:.78rem}.gatewayWifiSuggestion{border:1px solid color-mix(in srgb, var(--ok) 45%, var(--border));background:color-mix(in srgb, var(--ok) 12%, var(--surface-2));border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem .8rem;display:flex}.gatewayWifiSuggestion strong{font-size:.9rem;display:block}.gatewayWifiSuggestion small{color:var(--muted);font-size:.78rem}.gatewayWifiScanRow{flex-wrap:wrap;align-items:center;gap:.6rem;margin:.25rem 0;display:flex}.gatewayWifiCredentialRowSide{white-space:nowrap;flex-direction:column;align-items:flex-end;gap:.35rem;display:flex}.gatewayWifiCurrentTag{color:var(--ok);font-size:.72rem;font-weight:800}.internetOk{color:var(--ok,#16a34a);font-weight:800}.internetKo{color:var(--danger,#dc2626);font-weight:800}.gatewayWifiRowActions{flex-wrap:wrap;justify-content:flex-end;gap:.3rem;display:flex}.gatewayWifiLock{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;padding:.15rem .5rem;font-size:.72rem;font-weight:700;display:inline-flex}.btn.danger.compact{background:color-mix(in srgb, var(--danger,#dc2626) 16%, var(--surface-2));border-color:color-mix(in srgb, var(--danger,#dc2626) 55%, var(--border));color:var(--danger,#dc2626)}
