/* AHU-EGA Portal UI v2 — wspolny system skórek.
   Nowy motyw = 1 blok html[data-ui-theme="..."] z samymi zmiennymi. */
:root,
html[data-ui-theme="cloud"]{
  --ui-bg:#eef2f8;--ui-bg-top:#f8fafc;--ui-surface:rgba(255,255,255,.92);--ui-surface-solid:#fff;--ui-surface-soft:#f8fafc;
  --ui-ink:#0f172a;--ui-muted:#64748b;--ui-edge:#e2e8f0;--ui-edge-strong:#cbd5e1;
  --ui-primary:#2563eb;--ui-accent:#0ea5e9;--ui-primary-soft:#eff6ff;--ui-primary-edge:#bfdbfe;
  --ui-good:#16a34a;--ui-good-soft:#f0fdf4;--ui-warn:#d97706;--ui-warn-soft:#fff7ed;--ui-bad:#dc2626;--ui-bad-soft:#fff1f2;
  --ui-hero1:#0f172a;--ui-hero2:#1d4ed8;--ui-hero3:#0ea5e9;--ui-logo1:#0f172a;--ui-logo2:#2563eb;
  --ui-shadow:0 16px 42px rgba(15,23,42,.08);--ui-shadow-sm:0 8px 24px rgba(15,23,42,.06);--ui-radius:22px;--ui-radius-sm:14px;
  --ui-glow-a:#dbeafe;--ui-glow-b:#e0f2fe;--ui-topbar:rgba(248,250,252,.86)
}
html[data-ui-theme="slate"]{
  --ui-bg:#edf1f5;--ui-bg-top:#f7f9fb;--ui-surface:rgba(255,255,255,.94);--ui-surface-solid:#fff;--ui-surface-soft:#f4f6f8;
  --ui-ink:#172033;--ui-muted:#667085;--ui-edge:#d8dee8;--ui-edge-strong:#b8c2d1;
  --ui-primary:#475569;--ui-accent:#64748b;--ui-primary-soft:#f1f5f9;--ui-primary-edge:#cbd5e1;
  --ui-good:#15803d;--ui-good-soft:#f0fdf4;--ui-warn:#b45309;--ui-warn-soft:#fffbeb;--ui-bad:#b91c1c;--ui-bad-soft:#fff1f2;
  --ui-hero1:#172033;--ui-hero2:#334155;--ui-hero3:#64748b;--ui-logo1:#172033;--ui-logo2:#475569;
  --ui-shadow:0 16px 42px rgba(30,41,59,.09);--ui-shadow-sm:0 8px 24px rgba(30,41,59,.07);
  --ui-glow-a:#e2e8f0;--ui-glow-b:#f1f5f9;--ui-topbar:rgba(247,249,251,.88)
}
html[data-ui-theme="emerald"]{
  --ui-bg:#edf7f2;--ui-bg-top:#f7fbf9;--ui-surface:rgba(255,255,255,.93);--ui-surface-solid:#fff;--ui-surface-soft:#f4fbf7;
  --ui-ink:#10251d;--ui-muted:#5f746b;--ui-edge:#d6e7df;--ui-edge-strong:#b8d3c7;
  --ui-primary:#047857;--ui-accent:#10b981;--ui-primary-soft:#ecfdf5;--ui-primary-edge:#a7f3d0;
  --ui-good:#15803d;--ui-good-soft:#f0fdf4;--ui-warn:#b45309;--ui-warn-soft:#fffbeb;--ui-bad:#b91c1c;--ui-bad-soft:#fff1f2;
  --ui-hero1:#102a24;--ui-hero2:#047857;--ui-hero3:#10b981;--ui-logo1:#102a24;--ui-logo2:#059669;
  --ui-shadow:0 16px 42px rgba(6,78,59,.08);--ui-shadow-sm:0 8px 24px rgba(6,78,59,.06);
  --ui-glow-a:#d1fae5;--ui-glow-b:#ccfbf1;--ui-topbar:rgba(247,251,249,.88)
}
html[data-ui-theme="amber"]{
  --ui-bg:#f8f2ea;--ui-bg-top:#fffaf5;--ui-surface:rgba(255,255,255,.93);--ui-surface-solid:#fff;--ui-surface-soft:#fffaf5;
  --ui-ink:#2a1b12;--ui-muted:#7b685c;--ui-edge:#eaded4;--ui-edge-strong:#d4c2b4;
  --ui-primary:#c2410c;--ui-accent:#f59e0b;--ui-primary-soft:#fff7ed;--ui-primary-edge:#fed7aa;
  --ui-good:#15803d;--ui-good-soft:#f0fdf4;--ui-warn:#c2410c;--ui-warn-soft:#fff7ed;--ui-bad:#b91c1c;--ui-bad-soft:#fff1f2;
  --ui-hero1:#431407;--ui-hero2:#c2410c;--ui-hero3:#f59e0b;--ui-logo1:#431407;--ui-logo2:#ea580c;
  --ui-shadow:0 16px 42px rgba(124,45,18,.08);--ui-shadow-sm:0 8px 24px rgba(124,45,18,.06);
  --ui-glow-a:#ffedd5;--ui-glow-b:#fef3c7;--ui-topbar:rgba(255,250,245,.89)
}

/* Mapa tokenów dla zaakceptowanego dashboardu Stage 1. */
html[data-ui-theme]{--p-bg:var(--ui-bg);--p-surface:var(--ui-surface);--p-surface-strong:var(--ui-surface-solid);--p-ink:var(--ui-ink);--p-muted:var(--ui-muted);--p-edge:var(--ui-edge);--p-primary:var(--ui-primary);--p-primary2:var(--ui-accent);--p-good:var(--ui-good);--p-warn:var(--ui-warn);--p-bad:var(--ui-bad);--p-shadow:var(--ui-shadow);--p-shadow-sm:var(--ui-shadow-sm);--p-r:var(--ui-radius)}
.portal-body{background:radial-gradient(900px 560px at -10% -10%,var(--ui-glow-a) 0,transparent 58%),radial-gradient(850px 560px at 110% 0,var(--ui-glow-b) 0,transparent 55%),linear-gradient(180deg,var(--ui-bg-top),var(--ui-bg))!important;color:var(--ui-ink)!important}
.portal-topbar{background:var(--ui-topbar)!important;border-bottom-color:color-mix(in srgb,var(--ui-edge) 80%,transparent)!important}.portal-logo{background:linear-gradient(145deg,var(--ui-logo1),var(--ui-logo2))!important}.portal-hero{background:linear-gradient(135deg,var(--ui-hero1),var(--ui-hero2) 72%,var(--ui-hero3))!important;box-shadow:0 24px 58px color-mix(in srgb,var(--ui-primary) 20%,transparent)!important}.portal-btn.primary{background:linear-gradient(135deg,var(--ui-primary),var(--ui-accent))!important}.portal-hero .portal-btn.primary{background:#fff!important;color:var(--ui-ink)!important}.portal-nav-link.active{color:var(--ui-primary)!important;background:var(--ui-primary-soft)!important;border-color:var(--ui-primary-edge)!important}.portal-firmware{color:var(--ui-primary)!important;background:var(--ui-primary-soft)!important}.portal-empty-icon,.portal-stat-icon.neutral{color:var(--ui-primary)!important;background:var(--ui-primary-soft)!important}.portal-search input:focus{border-color:var(--ui-primary-edge)!important;box-shadow:0 0 0 4px color-mix(in srgb,var(--ui-primary) 14%,transparent)!important}.portal-pagination button.active{background:var(--ui-primary)!important;border-color:var(--ui-primary)!important}

/* Globalny przełącznik motywu — wstrzykiwany przez portal-theme.js. */
.ui-theme-switcher{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:5px 7px 5px 10px;border:1px solid var(--ui-edge);border-radius:12px;background:var(--ui-surface);color:var(--ui-muted);box-shadow:var(--ui-shadow-sm);font-size:11px;font-weight:900;white-space:nowrap}.ui-theme-switcher>span{letter-spacing:.25px}.ui-theme-switcher select{width:auto!important;min-width:96px!important;min-height:30px!important;margin:0!important;padding:4px 25px 4px 7px!important;border:0!important;border-radius:8px!important;background:var(--ui-surface-soft)!important;color:var(--ui-ink)!important;font:inherit!important;font-size:11px!important;font-weight:900!important;outline:none!important;box-shadow:none!important}.ui-theme-floating{position:fixed;right:14px;top:14px;z-index:1000}.ui-theme-icon{font-size:14px;line-height:1}

/* Stare widoki użytkownika/admina dostają ten sam shell bez zmian backendu. */
.portal-legacy{margin:0;min-height:100vh;color:var(--ui-ink)!important;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif!important;background:radial-gradient(900px 560px at -10% -10%,var(--ui-glow-a) 0,transparent 58%),radial-gradient(850px 560px at 110% 0,var(--ui-glow-b) 0,transparent 55%),linear-gradient(180deg,var(--ui-bg-top),var(--ui-bg))!important}.portal-legacy a{color:var(--ui-primary)}
.portal-legacy>header{position:sticky;top:0;z-index:50;height:auto!important;min-height:76px;padding:10px max(20px,calc((100vw - 1240px)/2))!important;background:var(--ui-topbar)!important;border-bottom:1px solid color-mix(in srgb,var(--ui-edge) 82%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:none!important}.portal-legacy>header>div:first-child{display:flex;align-items:center;gap:11px;min-width:210px}.portal-legacy>header>div:first-child:before{content:'✣';display:grid;place-items:center;width:46px;height:46px;flex:0 0 46px;border-radius:15px;color:#fff;font-size:28px;background:linear-gradient(145deg,var(--ui-logo1),var(--ui-logo2));box-shadow:0 12px 26px color-mix(in srgb,var(--ui-primary) 18%,transparent)}.portal-legacy>header>div:first-child strong{font-size:20px;font-weight:950;letter-spacing:-.4px;color:var(--ui-ink)}.portal-legacy .header-sub{display:block;margin:2px 0 0!important;color:var(--ui-muted)!important;font-size:11px;font-weight:800}.portal-legacy .user{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.portal-legacy .user>a,.portal-legacy .user>span,.portal-legacy>header>div:last-child>a{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:9px 12px;border:1px solid transparent;border-radius:12px;color:#475569!important;background:transparent;text-decoration:none;font-size:13px;font-weight:850}.portal-legacy .user>a:hover,.portal-legacy>header>div:last-child>a:hover{background:var(--ui-surface-solid);border-color:var(--ui-edge);box-shadow:var(--ui-shadow-sm);color:var(--ui-ink)!important}.portal-legacy .user>span{border-color:var(--ui-edge);background:var(--ui-surface);color:var(--ui-ink)!important}.portal-legacy .logout{width:auto!important;min-height:40px;margin:0!important;padding:9px 12px!important;border:1px solid var(--ui-edge)!important;border-radius:12px!important;color:#475569!important;background:var(--ui-surface-solid)!important}.portal-legacy .logout:hover{color:var(--ui-bad)!important;border-color:#fecaca!important;background:var(--ui-bad-soft)!important}
.portal-legacy>main{width:min(1240px,calc(100% - 28px));max-width:1240px!important;margin:0 auto!important;padding:28px 0 44px!important}.portal-legacy .panel,.portal-legacy .stat,.portal-legacy .admin-card,.portal-legacy .admin-stat,.portal-legacy .admin-big-link{color:var(--ui-ink)!important;background:var(--ui-surface)!important;border:1px solid var(--ui-edge)!important;border-radius:var(--ui-radius)!important;box-shadow:var(--ui-shadow)!important;backdrop-filter:blur(10px)}.portal-legacy .panel{padding:22px!important}.portal-legacy h1,.portal-legacy h2,.portal-legacy h3,.portal-legacy strong{color:var(--ui-ink)}.portal-legacy .muted,.portal-legacy .ota-muted,.portal-legacy .admin-info,.portal-legacy .admin-lead,.portal-legacy .firmware-form small,.portal-legacy .firmware-hash,.portal-legacy .firmware-notes{color:var(--ui-muted)!important}
.portal-legacy input,.portal-legacy select,.portal-legacy textarea{border:1px solid var(--ui-edge-strong)!important;border-radius:12px!important;background:var(--ui-surface-solid)!important;color:var(--ui-ink)!important;outline:none!important}.portal-legacy input:focus,.portal-legacy select:focus,.portal-legacy textarea:focus{border-color:var(--ui-primary-edge)!important;box-shadow:0 0 0 4px color-mix(in srgb,var(--ui-primary) 13%,transparent)!important}.portal-legacy label{color:var(--ui-muted)!important;font-weight:800}.portal-legacy button{border-radius:12px}.portal-legacy form button:not(.logout):not(.admin-danger):not(.admin-delete-button):not(.fw-admin-clear):not(.fw-admin-page-btn){border:0;color:#fff;background:linear-gradient(135deg,var(--ui-primary),var(--ui-accent));font-weight:900;box-shadow:0 10px 22px color-mix(in srgb,var(--ui-primary) 18%,transparent)}
.portal-legacy table{color:var(--ui-ink);background:var(--ui-surface-solid)}.portal-legacy th,.portal-legacy td{border-bottom-color:var(--ui-edge)!important}.portal-legacy th{color:var(--ui-muted)!important;background:var(--ui-surface-soft);font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.35px}.portal-legacy .online{display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border:1px solid #bbf7d0;border-radius:999px;color:#166534!important;background:var(--ui-good-soft);font-size:10px;font-weight:950}.portal-legacy .offline{display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border:1px solid var(--ui-edge);border-radius:999px;color:var(--ui-muted)!important;background:var(--ui-surface-soft);font-size:10px;font-weight:950}.portal-legacy .error,.portal-legacy .admin-error{color:#991b1b!important;background:var(--ui-bad-soft)!important;border:1px solid #fecaca!important}.portal-legacy .success,.portal-legacy .admin-success{color:#166534!important;background:var(--ui-good-soft)!important;border:1px solid #bbf7d0!important}.portal-legacy .error,.portal-legacy .success,.portal-legacy .admin-error,.portal-legacy .admin-success{padding:13px 15px!important;border-radius:14px!important;font-weight:800}

/* Konto i parowanie */
.portal-legacy .account-panel,.portal-legacy .pairing-panel{max-width:680px!important}.portal-legacy .pairing-device{background:var(--ui-surface-soft)!important;border-color:var(--ui-edge)!important;border-radius:16px!important}.portal-legacy .pairing-device span,.portal-legacy .pairing-device small,.portal-legacy .pairing-help,.portal-legacy .pairing-note{color:var(--ui-muted)!important}.portal-legacy .pairing-note{border-top-color:var(--ui-edge)!important}.portal-legacy .pairing-panel form>button,.portal-legacy .account-panel form>button{width:100%!important;max-width:none!important;margin-top:18px!important;min-height:44px}

/* Aktualizacje OTA */
.portal-legacy .ota-panel{overflow:visible}.portal-legacy .ota-device-grid{gap:14px}.portal-legacy .ota-device-card{border:1px solid var(--ui-edge)!important;border-radius:18px!important;background:var(--ui-surface-solid)!important;box-shadow:var(--ui-shadow-sm)!important}.portal-legacy .ota-device-id,.portal-legacy .ota-version-row span{color:var(--ui-muted)!important}.portal-legacy .ota-version-row{border-top-color:var(--ui-edge)!important}.portal-legacy .ota-refresh{color:var(--ui-primary)!important;background:var(--ui-primary-soft)!important;border:1px solid var(--ui-primary-edge)!important}.portal-legacy .ota-update-btn{background:linear-gradient(135deg,var(--ui-primary),var(--ui-accent))!important}.portal-legacy .ota-ok{color:#166534!important;background:var(--ui-good-soft)!important}.portal-legacy .ota-warning{color:#9a3412!important;background:var(--ui-warn-soft)!important}.portal-legacy .list-search-input{background:var(--ui-surface-solid)!important;color:var(--ui-ink)!important;border-color:var(--ui-edge-strong)!important}.portal-legacy .list-search-meta,.portal-legacy .list-search-empty{color:var(--ui-muted)!important}

/* Admin */
.portal-admin .admin-container{width:min(1400px,calc(100% - 28px));max-width:1400px!important;margin:0 auto!important;padding:26px 0 44px!important}.portal-admin .admin-nav{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 18px;padding:7px;border:1px solid var(--ui-edge);border-radius:16px;background:var(--ui-surface);box-shadow:var(--ui-shadow-sm)}.portal-admin .admin-nav a{padding:10px 14px!important;border:1px solid transparent!important;border-radius:11px!important;background:transparent!important;color:var(--ui-muted)!important;font-weight:900}.portal-admin .admin-nav a:hover,.portal-admin .admin-nav a.ui-active{color:var(--ui-primary)!important;background:var(--ui-primary-soft)!important;border-color:var(--ui-primary-edge)!important}.portal-admin .admin-stats{gap:13px}.portal-admin .admin-stat{padding:18px!important}.portal-admin .admin-stat span{color:var(--ui-muted)!important}.portal-admin .admin-grid-home{gap:13px}.portal-admin .admin-big-link{text-decoration:none!important}.portal-admin .admin-big-link span{color:var(--ui-muted)!important}.portal-admin .admin-layout{gap:14px}.portal-admin .admin-table-wrap,.portal-admin .firmware-table-wrap{overflow:auto;border:1px solid var(--ui-edge);border-radius:16px;background:var(--ui-surface-solid)}.portal-admin .admin-card,.portal-admin .firmware-upload-card,.portal-admin .firmware-latest-card,.portal-admin .firmware-list-card{background:var(--ui-surface)!important;border-color:var(--ui-edge)!important;color:var(--ui-ink)!important;box-shadow:var(--ui-shadow)!important}.portal-admin .firmware-form input[type=text],.portal-admin .firmware-form input[type=file],.portal-admin .firmware-form textarea,.portal-admin .firmware-form select{background:var(--ui-surface-solid)!important;color:var(--ui-ink)!important;border-color:var(--ui-edge-strong)!important}.portal-admin .firmware-form input[type=file]::file-selector-button{background:var(--ui-primary-soft)!important;color:var(--ui-primary)!important}.portal-admin .firmware-table th,.portal-admin .firmware-table td{border-bottom-color:var(--ui-edge)!important}.portal-admin .firmware-actions button{background:var(--ui-surface-soft)!important;color:var(--ui-ink)!important;border-color:var(--ui-edge)!important;box-shadow:none!important}.portal-admin .firmware-actions button:hover{background:var(--ui-primary-soft)!important;color:var(--ui-primary)!important}.portal-admin .firmware-actions .admin-danger,.portal-admin .admin-danger-link{background:var(--ui-bad-soft)!important;color:#b91c1c!important;border-color:#fecaca!important}.portal-admin .admin-delete-card{background:var(--ui-surface)!important;border-color:#fecaca!important;box-shadow:var(--ui-shadow)!important}.portal-admin .admin-delete-summary div{background:var(--ui-surface-soft)!important;border-color:var(--ui-edge)!important}.portal-admin .admin-delete-summary span{color:var(--ui-muted)!important}.portal-admin .admin-check-row{color:var(--ui-ink)!important}.portal-admin .admin-cancel-link{background:var(--ui-surface-soft)!important;border-color:var(--ui-edge)!important;color:var(--ui-ink)!important}.portal-admin .admin-danger-box{background:var(--ui-bad-soft)!important;color:#991b1b!important}.portal-admin .fw-admin-search label,.portal-admin .fw-admin-size label,.portal-admin .fw-admin-meta,.portal-admin .fw-admin-page-info,.portal-admin .fw-admin-no-results{color:var(--ui-muted)!important}.portal-admin .fw-admin-search input,.portal-admin .fw-admin-size select,.portal-admin .fw-admin-clear,.portal-admin .fw-admin-page-btn{border-color:var(--ui-edge)!important;background:var(--ui-surface-solid)!important;color:var(--ui-ink)!important}.portal-admin .fw-admin-clear:hover,.portal-admin .fw-admin-page-btn:hover:not(:disabled){background:var(--ui-primary-soft)!important;color:var(--ui-primary)!important}

/* Ekrany logowania/rejestracji — ta sama estetyka, bez zmiany formularzy. */
.portal-auth{color:var(--ui-ink)!important;background:radial-gradient(900px 560px at -10% -10%,var(--ui-glow-a) 0,transparent 58%),radial-gradient(850px 560px at 110% 0,var(--ui-glow-b) 0,transparent 55%),linear-gradient(180deg,var(--ui-bg-top),var(--ui-bg))!important}.portal-auth .auth-card{background:var(--ui-surface)!important;border:1px solid var(--ui-edge)!important;box-shadow:0 28px 72px color-mix(in srgb,var(--ui-ink) 12%,transparent)!important}.portal-auth .auth-brand-icon{background:linear-gradient(145deg,var(--ui-logo1),var(--ui-logo2))!important;color:#fff!important}.portal-auth .logo,.portal-auth .auth-heading h1,.portal-auth .auth-action-card strong{color:var(--ui-ink)!important}.portal-auth .subtitle,.portal-auth .auth-brand-note,.portal-auth .auth-action-card small,.portal-auth .auth-security{color:var(--ui-muted)!important}.portal-auth .auth-form label{color:var(--ui-muted)!important}.portal-auth .auth-input-wrap{background:var(--ui-surface-solid)!important;border-color:var(--ui-edge-strong)!important}.portal-auth .auth-input-wrap:focus-within{border-color:var(--ui-primary-edge)!important;box-shadow:0 0 0 4px color-mix(in srgb,var(--ui-primary) 13%,transparent)!important}.portal-auth .auth-input-wrap input{background:transparent!important;color:var(--ui-ink)!important}.portal-auth .auth-input-wrap svg{color:var(--ui-muted)!important}.portal-auth .auth-submit{background:linear-gradient(135deg,var(--ui-primary),var(--ui-accent))!important;color:#fff!important}.portal-auth .auth-action-card{background:var(--ui-surface-soft)!important;border-color:var(--ui-edge)!important;color:var(--ui-ink)!important}.portal-auth .auth-action-card:hover{background:var(--ui-primary-soft)!important;border-color:var(--ui-primary-edge)!important}.portal-auth .auth-action-card-accent{background:var(--ui-primary-soft)!important;border-color:var(--ui-primary-edge)!important}.portal-auth .auth-action-icon,.portal-auth .auth-action-card-accent .auth-action-icon{background:color-mix(in srgb,var(--ui-primary) 10%,transparent)!important;color:var(--ui-primary)!important}.portal-auth .auth-security{border-top-color:var(--ui-edge)!important}.portal-auth .auth-message-error{background:var(--ui-bad-soft)!important;border-color:#fecaca!important;color:#991b1b!important}.portal-auth .auth-message-success{background:var(--ui-good-soft)!important;border-color:#bbf7d0!important;color:#166534!important}

/* Panel urządzenia już ma ten język wizualny. Tu tylko wspólne "skóry" chromu. */
.portal-device-ui .ui-theme-switcher{box-shadow:none;background:rgba(255,255,255,.86)}.portal-device-ui .top{background:var(--ui-topbar)!important}.portal-device-ui .card,.portal-device-ui .livePanel{border-color:color-mix(in srgb,var(--ui-primary) 12%,rgba(148,163,184,.20))!important}.portal-device-ui .footer{color:var(--ui-muted)!important}

@media(max-width:900px){.portal-admin .admin-stats,.portal-admin .admin-grid-home,.portal-admin .admin-layout{grid-template-columns:1fr!important}}
@media(max-width:760px){.portal-legacy>header{position:relative;align-items:flex-start!important;gap:10px!important;padding:10px!important}.portal-legacy>header>div:first-child{min-width:0}.portal-legacy .user{justify-content:flex-end}.portal-legacy .user>span{display:none}.portal-legacy>main{width:min(100% - 20px,1240px)!important;padding-top:16px!important}.portal-admin .admin-container{width:min(100% - 20px,1400px)!important;padding-top:16px!important}.ui-theme-switcher>span:not(.ui-theme-icon){display:none}.ui-theme-switcher select{min-width:86px!important}}
@media(max-width:520px){.portal-legacy>header>div:first-child:before{width:40px;height:40px;flex-basis:40px;border-radius:13px}.portal-legacy>header>div:first-child strong{font-size:18px}.portal-legacy .header-sub{display:none}.portal-legacy .user>a{padding:8px 9px;font-size:12px}.ui-theme-floating{right:8px;top:8px}.ui-theme-floating .ui-theme-switcher{padding-left:7px}}

/* UI V3: global contrast fixes after legacy dark CSS */
.portal-legacy .ota-device-top h3,.portal-legacy .ota-version-row strong,.portal-legacy .ota-latest-card strong{color:var(--ui-ink)!important}
.portal-legacy .ota-device-card{color:var(--ui-ink)!important}
.portal-legacy .firmware-latest-card strong,.portal-legacy .firmware-list-card strong,.portal-admin .firmware-table strong{color:var(--ui-ink)!important}
.portal-admin .firmware-upload-card,.portal-admin .firmware-latest-card,.portal-admin .firmware-list-card{color:var(--ui-ink)!important}
.portal-admin .firmware-latest-card [style*="border-bottom"]{border-bottom-color:var(--ui-edge)!important}
.portal-admin .firmware-list-card .online{color:#166534!important}.portal-admin .firmware-list-card .offline{color:var(--ui-muted)!important}
