*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--bg-card:#1a1d27;--bg-card-hover:#222632;--border:#2a2e3a;--text:#e4e4e7;--text-muted:#71717a;--accent:#6366f1;--accent-hover:#818cf8;--radius:10px;--sk-base:#232733;--sk-highlight:#2e3342}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}a{color:var(--accent-hover)}code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.muted{color:var(--text-muted)}.sk{vertical-align:-.1em;background:linear-gradient(90deg, var(--sk-base) 0%, var(--sk-highlight) 50%, var(--sk-base) 100%);background-position:100% 0;background-size:200% 100%;border-radius:4px;width:100%;max-width:100%;height:.8em;animation:1.4s ease-in-out .15s infinite sk-shimmer;display:inline-block}.sk-block{vertical-align:initial;display:block}@keyframes sk-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.sk{animation:none}}.boot{min-height:100vh;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex}.btn{font:inherit;color:var(--text);background:var(--bg-card);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:13px}.btn:hover:not(:disabled){border-color:var(--accent);background:var(--bg-card-hover)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.topbar{border-bottom:1px solid var(--border);background:var(--bg-card);flex-wrap:wrap;align-items:center;gap:24px;padding:12px 24px;display:flex}.topbar .brand{color:var(--text);font-size:15px;font-weight:700;text-decoration:none}.topbar nav{gap:4px;display:flex}.topbar nav a{color:var(--text-muted);border-radius:6px;padding:5px 10px;font-size:13px;text-decoration:none}.topbar nav a:hover{color:var(--text);background:var(--bg-card-hover)}.topbar nav a.active{color:#e6ebff;background:#6366f12e}.topbar .who{align-items:center;gap:12px;margin-left:auto;font-size:12px;display:flex}.shell main{padding:20px 24px 32px}.notfound{color:var(--text-muted);flex-direction:column;gap:8px;display:flex}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:16px;width:100%;max-width:440px;padding:24px;display:flex}.login-card h1{font-size:18px}.login-card h2{font-size:15px}.login-card p,.login-card li{color:var(--text-muted);font-size:13px;line-height:1.5}.steps{gap:6px;display:flex}.steps span{background:var(--border);border-radius:2px;flex:1;height:4px}.steps span.done{background:var(--accent)}.steps span.current{background:var(--accent-hover)}.login-card form{flex-direction:column;gap:12px;display:flex}.field{color:var(--text-muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.field input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:14px}.field input:focus{border-color:var(--accent);outline:none}.field input.code{letter-spacing:.3em;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:20px}.alert{color:#fca5a5;background:#4a1f1f;border-radius:6px;padding:8px 10px;font-size:12.5px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.qr{background:#fff;border-radius:8px;align-self:center;width:208px;height:208px;padding:8px}.qr svg{width:100%;height:100%;display:block}.secret{align-items:center;gap:8px;display:flex}.secret code{background:var(--bg);border:1px solid var(--border);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:6px;flex:1;padding:8px 10px;font-size:13px}.uri{word-break:break-all;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);-webkit-user-select:all;user-select:all;border-radius:6px;padding:8px 10px;font-size:11px}.linkbtn{color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:none;align-self:flex-start;font-size:12px;text-decoration:underline}.audit{flex-direction:column;gap:14px;max-width:1400px;font-size:13px;display:flex}.audit .head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:16px;padding-bottom:12px;display:flex}.audit h1{font-size:20px;font-weight:700}.chips{gap:6px;display:flex}.chip{font:inherit;color:var(--text-muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;padding:3px 12px;font-size:12px}.chip:hover{border-color:var(--accent);color:var(--text)}.chip.on{color:#e6ebff;border-color:var(--accent);background:#6366f12e}.audit .table-wrap{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;overflow-x:auto}.audit table{border-collapse:collapse;width:100%;font-size:12.5px}.audit thead th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:9px 12px;font-size:10.5px;font-weight:600}.audit tbody tr{border-bottom:1px solid #ffffff0a}.audit tbody tr:last-child{border-bottom:none}.audit tbody td{white-space:nowrap;padding:8px 12px}.audit td.ua{text-overflow:ellipsis;max-width:260px;color:var(--text-muted);overflow:hidden}.audit .num{font-variant-numeric:tabular-nums}.audit .ok{color:#4ade80;font-weight:600}.audit .bad{color:#f87171;font-weight:600}.audit .empty{text-align:center;color:var(--text-muted);padding:24px}.audit .attribution{font-size:11px}.services{flex-direction:column;gap:18px;max-width:1400px;font-size:13px;display:flex}.services h1{border-bottom:1px solid var(--border);padding-bottom:12px;font-size:20px;font-weight:700}.services .hostcard{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:14px;padding:16px;scroll-margin-top:16px;display:flex}.services .hostcard:target{border-color:var(--accent)}.services .hosthead{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.services .hosthead h2{font-size:17px;font-weight:700}.services .hosthead .meta{color:var(--text-muted);flex-wrap:wrap;gap:14px;font-size:12px;display:flex}.services .hosthead .age{color:var(--text-muted);margin-left:auto;font-size:12px}.services .hosthead .age.stale{color:#fde68a;background:#4a3a1f;border-radius:4px;padding:2px 8px}.services .hosthead .age.never{color:#fca5a5;background:#4a1f1f;border-radius:4px;padding:2px 8px}.services .failed{color:#fca5a5;background:#4a1f1f;border-radius:6px;padding:8px 12px;font-size:12.5px}.services h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:6px;font-size:11px;font-weight:600}.services .table-wrap{border:1px solid var(--border);background:var(--bg);border-radius:8px;overflow-x:auto}.services table{border-collapse:collapse;width:100%;font-size:12.5px}.services thead th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:8px 12px;font-size:10.5px;font-weight:600}.services tbody tr{border-bottom:1px solid #ffffff0a}.services tbody tr:last-child{border-bottom:none}.services tbody td{vertical-align:top;padding:7px 12px}.services td.nowrap{white-space:nowrap}.services td.ports{word-break:break-word;max-width:320px;color:var(--text-muted);font-size:11px}.services .name{font-weight:600}.services .tag{color:var(--text-muted);background:#ffffff0f;border-radius:3px;margin-left:6px;padding:1px 6px;font-size:10px;display:inline-block}.services .dot{background:#777;border-radius:50%;width:8px;height:8px;display:inline-block}.services .dot.ok{background:#4ade80;box-shadow:0 0 6px #4ade8066}.services .dot.warn{background:#facc15}.services .dot.bad{background:#f87171}.services .none{color:var(--text-muted);padding:12px}.services .error{text-align:center;color:var(--text-muted);border:1px solid var(--border);border-radius:8px;padding:24px}.devices .devhead{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:12px;padding-bottom:12px;display:flex}.devices .devhead h1{border-bottom:none;padding-bottom:0}.devices .devhead .age{color:var(--text-muted);margin-left:auto;font-size:12px}.devices .devhead .age.stale{color:#fde68a;background:#4a3a1f;border-radius:4px;padding:2px 8px}.devices .devhead .age.never{color:#fca5a5;background:#4a1f1f;border-radius:4px;padding:2px 8px}.devices .toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.devices .search{min-width:240px;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;margin-left:auto;padding:6px 10px;font-size:12.5px}.devices .search:focus{border-color:var(--accent);outline:none}.devices .chips.kinds{flex-wrap:wrap}.devices .devsection{flex-direction:column;gap:14px;margin-top:8px;display:flex}.devices .devsection .hosthead h2{font-size:15px}.devices .devgroup h3{align-items:center;gap:6px;display:flex}.devices .devgrid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));align-items:start;gap:12px;display:grid}.devices .devcard{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.devices .devbanner{--hue:220;height:84px;color:hsl(var(--hue) 85% 82%);background:linear-gradient(135deg, hsl(var(--hue) 45% 30%), hsl(var(--hue) 40% 15%));border-bottom:1px solid var(--border);justify-content:center;align-items:center;display:flex;position:relative}.devices .devbanner .dot{position:absolute;top:10px;right:10px}.devices .devbanner.k-computer{--hue:235}.devices .devbanner.k-mobile{--hue:200}.devices .devbanner.k-wearable{--hue:170}.devices .devbanner.k-media{--hue:280}.devices .devbanner.k-smart-home{--hue:35}.devices .devbanner.k-printer{--hue:15}.devices .devbanner.k-console{--hue:330}.devices .devbanner.k-server{--hue:140}.devices .devbanner.k-network{--hue:190}.devices .devbanner.k-unknown{color:#a1a1aa;background:linear-gradient(135deg,#34363f,#1f2129)}.devices .devsection.away .devbanner{filter:grayscale(.85)brightness(.8)}.devices .devsection.away .devcard .name{color:var(--text-muted)}.devices .devbody{flex-direction:column;gap:2px;min-width:0;padding:12px 14px 10px;display:flex}.devices .devbody .name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.devices .model{white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.devices .devbody dl{grid-template-columns:auto minmax(0,1fr);gap:3px 10px;margin-top:8px;font-size:12px;display:grid}.devices .devbody dt{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;line-height:18px}.devices .devbody dd{white-space:nowrap;text-overflow:ellipsis;line-height:18px;overflow:hidden}.devices .devcard .why{font:inherit;text-align:left;color:var(--text-muted);border:none;border-top:1px solid var(--border);cursor:pointer;background:0 0;align-self:stretch;padding:7px 14px;font-size:11.5px}.devices .devcard .why:hover,.devices .devcard .why[aria-expanded=true]{color:var(--text);background:#ffffff08}.devices .devcard .evidence{color:var(--text-muted);background:#ffffff08;padding:0 14px 10px;font-size:12px}.devices .devcard .evidence ul{margin:0;padding-left:16px}.devices .devcard .evidence li{margin:2px 0}.devices .devcard .identity{border-top:1px solid var(--border);margin-top:8px;padding-top:8px}.devices .devcard .identity h5{text-transform:uppercase;letter-spacing:.04em;margin:0 0 4px;font-size:11px;font-weight:600}.devices .devcard .identity ul{padding:0;list-style:none}.devices .devcard .identity li{overflow-wrap:anywhere}.devices .devcard .identity .mono{color:var(--text)}.devices .devcard .identity .linkbtn{margin-left:6px;font-size:11.5px}.devices .devcard .mergerow{gap:6px;margin-top:8px;display:flex}.devices .devcard .mergerow select{min-width:0;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;flex:1;padding:4px 6px;font-size:12px}.devices .devcard .mergerow button{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:12px}.devices .devcard .mergerow button:disabled{opacity:.5;cursor:default}.devices .devcard .identity .failed{margin-top:6px}.guests .addform{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.guests .addform input,.guests .addform select,.guests .cell-input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;border-radius:6px;padding:6px 10px;font-size:12.5px}.guests .addform input:first-of-type{min-width:240px}.guests .addform input:focus,.guests .addform select:focus,.guests .cell-input:focus{border-color:var(--accent);outline:none}.guests .addform .failed{flex-basis:100%}.guests .cell-input{width:100%;min-width:150px;padding:4px 8px}.guests td.actions{text-align:right}.guests .iconbtn{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;margin-left:2px;display:inline-flex}.guests .iconbtn:hover:not(:disabled){color:var(--text);border-color:var(--border);background:var(--bg-card-hover)}.guests .iconbtn:disabled{opacity:.5;cursor:default}.guests .bad{color:#f87171}.guests .actions .failed{text-align:left;white-space:normal;margin-top:6px}
