:root{--conect-dark-blue:#081126;--conect-light-blue:#2d5f8a;--conect-red:#d32f2f;--conect-white:#fff;--text:#1c1c1e;--text-h:var(--conect-dark-blue);--bg:var(--conect-white);--border:#dde1e7;--code-bg:#eef1f5;--accent:var(--conect-light-blue);--accent-soft:#2d5f8a1f;--accent-contrast:var(--conect-white);--danger:var(--conect-red);--success:#2e7d32;--shadow:0 1px 2px #0f172a0f, 0 6px 20px #0f172a14;--radius:10px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/145% var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#d1d5db;--text-h:#f3f4f6;--bg:var(--conect-dark-blue);--border:#253150;--code-bg:#101c38;--accent:#5c8fc0;--accent-soft:#5c8fc02e;--accent-contrast:var(--conect-white);--success:#66bb6a;--shadow:0 1px 2px #00000059, 0 10px 28px #0006}}body{margin:0}button{transition:background-color .12s,border-color .12s,color .12s,box-shadow .12s,transform .12s,opacity .12s}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input[type=checkbox]{accent-color:var(--accent)}.connectivity-banner{z-index:1000;border-radius:var(--radius);max-width:min(480px,100vw - 32px);box-shadow:var(--shadow);background:var(--danger);color:var(--conect-white);align-items:center;gap:12px;padding:12px 16px;font-size:14px;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%)}.connectivity-banner span{flex:1}.connectivity-banner button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0 6px;font-size:18px;line-height:1}.loading-overlay{z-index:1000;pointer-events:none;position:fixed;top:72px;right:24px}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}h1{color:var(--text-h);margin:0 0 16px;font-size:28px}.logo{width:auto;height:40px}.logo-dark{display:none}@media (prefers-color-scheme:dark){.logo-light{display:none}.logo-dark{display:block}}.login-screen{flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100svh;display:flex}.login-screen .logo{height:64px}.login-link{color:var(--accent-contrast);background:var(--accent);border-radius:6px;padding:10px 20px;font-weight:500;text-decoration:none}.app-shell nav{background:var(--bg);border-bottom:1px solid var(--border);box-shadow:var(--shadow);z-index:5;align-items:center;gap:12px;padding:14px 24px;display:flex;position:relative}.app-shell nav .nav-logo{height:28px;margin-right:8px}.app-shell nav .logo-link{cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:flex}.app-shell nav .nav-link{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:6px 10px}.app-shell nav .nav-link:hover{background:var(--code-bg);border-radius:6px}.app-shell nav .nav-link.active{border-bottom-color:var(--accent);color:var(--text-h);font-weight:600}.app-shell nav .spacer{flex:1}.app-shell nav .user-menu{position:relative}.app-shell nav .avatar-button{cursor:pointer;background:0 0;border:none;padding:0}.app-shell nav .avatar{background:var(--accent);width:36px;height:36px;color:var(--accent-contrast);box-shadow:0 0 0 2px var(--bg), 0 0 0 3px var(--border);border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:600;transition:transform .12s,box-shadow .12s;display:flex}.app-shell nav .avatar-button:hover .avatar{box-shadow:0 0 0 2px var(--bg), 0 0 0 3px var(--accent);transform:scale(1.06)}.app-shell nav .user-menu-dropdown{z-index:10;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);min-width:180px;box-shadow:var(--shadow);flex-direction:column;padding:8px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.app-shell nav .user-menu-username{color:var(--text-h);border-bottom:1px solid var(--border);margin-bottom:4px;padding:6px 10px;font-weight:600}.app-shell nav .user-menu-dropdown button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 10px}.app-shell nav .user-menu-dropdown button:hover{background:var(--code-bg)}.app-shell nav .user-menu-dropdown button.active{color:var(--text-h);font-weight:600}.app-shell nav button{font:inherit;border:1px solid var(--border);color:inherit;cursor:pointer;background:0 0;border-radius:6px;padding:6px 14px}.app-shell main{padding:24px 20px}.admin-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:20px;display:flex}.admin-tabs button{font:inherit;color:inherit;opacity:.65;cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;padding:10px 16px}.admin-tabs button:hover{opacity:.9}.admin-tabs button.active{border-bottom-color:var(--accent);color:var(--text-h);opacity:1;font-weight:600}.table-card{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.admin-table{border-collapse:collapse;width:100%}.admin-table th{background:var(--code-bg);border-bottom:1px solid var(--border);text-align:left;text-transform:uppercase;letter-spacing:.04em;opacity:.7;padding:10px 12px;font-size:11px;font-weight:600}.admin-table td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:nth-child(2n){background:var(--code-bg)}.admin-table tbody tr:hover{background:var(--accent-soft)}.admin-table tbody tr.clickable{cursor:pointer}.admin-table tbody tr.active{background:var(--accent-soft);font-weight:600}.admin-table th.role-col,.admin-table td.role-col{text-align:center;font-family:var(--mono);font-size:12px}.admin-table button{font:inherit;border:1px solid var(--danger);color:var(--danger);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px}.admin-table button:hover{background:var(--danger);color:var(--conect-white)}.admin-hint{color:var(--text);opacity:.7;margin-top:12px;font-size:13px}.admin-error{color:var(--danger);margin-top:8px;font-size:13px}.upstream-picker-form{align-items:center;gap:8px;margin-left:8px;display:inline-flex}.new-user{margin-bottom:16px}.new-user h2{color:var(--text-h);margin:0 0 12px;font-size:18px}.new-user>button{font:inherit;border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:8px;padding:8px 16px}.new-user>button:hover{background:var(--accent);color:var(--accent-contrast)}.new-user-form{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;max-width:420px;margin-top:12px;padding:20px;display:flex}.new-user-form label{opacity:.85;flex-direction:column;gap:4px;font-size:13px;display:flex}.new-user-form input,.new-user-form select{font:inherit;border:1px solid var(--border);color:inherit;background:0 0;border-radius:6px;padding:6px 10px}.new-user-form fieldset{border:1px solid var(--border);border-radius:6px;padding:8px 12px}.new-user-form legend{opacity:.7;padding:0 4px;font-size:13px}.new-user-form .role-checkbox{font-family:var(--mono);flex-direction:row;align-items:center;gap:6px;font-size:12px}.new-user-actions{align-items:center;gap:10px;display:flex}.new-user-actions button[type=submit]{font:inherit;background:var(--accent);color:var(--accent-contrast);cursor:pointer;border:none;border-radius:8px;padding:8px 16px}.new-user-actions button[type=submit]:hover{opacity:.9}.new-user-actions button[type=button]{font:inherit;border:1px solid var(--border);color:inherit;cursor:pointer;background:0 0;border-radius:8px;padding:8px 16px}.new-user-actions button[type=button]:hover{background:var(--code-bg)}.password-reset{border-top:1px solid var(--border);margin-top:24px;padding-top:20px}.password-reset button{font:inherit;border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:8px;padding:8px 16px}.password-reset button:hover{background:var(--accent);color:var(--accent-contrast)}.admin-table input[type=tel],.admin-table input[type=text]{font:inherit;border:1px solid var(--border);width:100%;color:inherit;background:0 0;border-radius:4px;padding:4px 6px}.profile-card{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-width:560px;padding:24px}.profile-fields{grid-template-columns:max-content 1fr;gap:8px 16px;display:grid}.profile-fields dt{color:var(--text);opacity:.7;align-self:center;font-size:13px}.profile-fields dd{align-items:center;gap:8px;margin:0;display:flex}.profile-fields dd.roles{flex-wrap:wrap}.profile-fields dd.roles code{font-family:var(--mono);background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.profile-fields input[type=tel]{font:inherit;border:1px solid var(--border);color:inherit;background:0 0;border-radius:6px;padding:6px 10px}.profile-fields button{font:inherit;border:1px solid var(--border);color:inherit;cursor:pointer;background:0 0;border-radius:6px;padding:6px 12px}.profile-saved{color:var(--accent);font-size:13px}.placeholder-card{border:1px dashed var(--border);border-radius:var(--radius);color:var(--text);opacity:.7;text-align:center;padding:32px}.gateway-layout{align-items:flex-start;gap:20px;display:flex}.gateway-list{border:1px solid var(--border);border-radius:var(--radius);max-height:70vh;box-shadow:var(--shadow);flex:0 0 280px;overflow-y:auto}.gateway-list-item{border:none;border-bottom:1px solid var(--border);width:100%;color:inherit;text-align:left;font:inherit;cursor:pointer;background:0 0;align-items:center;gap:10px;padding:12px 14px;display:flex}.gateway-list-item:last-child{border-bottom:none}.gateway-list-item:hover,.gateway-list-item.active{background:var(--accent-soft)}.gateway-list-item .gateway-title{color:var(--text-h);font-weight:600}.gateway-list-item .gateway-subtitle{font-family:var(--mono);opacity:.65;font-size:12px}.gateway-detail{flex:1;min-width:0}.gateway-detail-header{font-family:var(--mono);font-size:18px}.status-dot{background:#9aa3af;border-radius:50%;flex-shrink:0;width:10px;height:10px}.status-dot.online{background:var(--success)}.cbor-decoded{background:var(--code-bg);border-radius:var(--radius);font-family:var(--mono);white-space:pre-wrap;margin:0;padding:12px;font-size:12px;overflow-x:auto}
