:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{color:#e2e8f0;background:#0f172a;margin:0;font-family:-apple-system,system-ui,sans-serif}#root{max-width:480px;text-align:initial;margin-inline:auto;padding:64px 16px 90px}h1{margin:8px 0 20px;font-size:1.3rem}h2{margin:0 0 4px;font-size:1rem}p{margin:0 0 8px}.tiles{flex-direction:column;gap:16px;display:flex}.tile-col{display:contents}.masonry{grid-template-columns:1fr;grid-auto-rows:4px;grid-auto-flow:dense;gap:16px;display:grid}.masonry-item{min-width:0}.masonry-item .card{margin-bottom:0}.tile-full{margin-top:16px}@media (width>=700px){#root{max-width:960px}.tiles{flex-flow:wrap;align-items:flex-start;gap:20px}.tile-col{flex-direction:column;flex:280px;gap:16px;min-width:0;display:flex}.masonry{grid-template-columns:repeat(2,1fr);gap:20px}.tile-full{margin-top:20px}}@media (width>=1000px){#root{max-width:1300px}.tiles{gap:24px}.tile-col{gap:20px}.masonry{grid-template-columns:repeat(3,1fr);gap:24px}.tile-full{margin-top:24px}}@media (width>=1500px){#root{max-width:1600px}}.topbar{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));z-index:11;gap:8px;display:flex;position:fixed;top:0;right:0}.topbar a{color:#93c5fd;white-space:nowrap;background:#1e293b;border:1px solid #334155;border-radius:999px;align-items:center;gap:5px;padding:7px 14px;font-size:.78rem;font-weight:600;text-decoration:none;display:inline-flex;box-shadow:0 2px 8px #00000059}.topbar a:active{background:#334155}.topbar a.active{color:#60a5fa;border-color:#2563eb}.topbar button.logout-pill{color:#93c5fd;white-space:nowrap;background:#1e293b;border:1px solid #334155;border-radius:999px;align-items:center;gap:5px;width:auto;padding:7px 14px;font-size:.78rem;font-weight:600;display:inline-flex;box-shadow:0 2px 8px #00000059}.topbar button.logout-pill:active{background:#334155}.login-screen{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{text-align:center;width:100%;max-width:340px;margin-bottom:0}.login-card h1{margin:0 0 6px}.login-card .card-summary{margin-bottom:16px}.login-card form{text-align:left}.login-card .passkey-btn{margin-top:10px}.tabbar{-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:env(safe-area-inset-bottom);z-index:10;background:#1e293b;border-top:1px solid #334155;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.tabbar::-webkit-scrollbar{display:none}.tabbar a{text-align:center;color:#94a3b8;flex:0 0 25%;padding:12px 4px 10px;font-size:.78rem;font-weight:600;text-decoration:none}.tabbar a.active{color:#60a5fa}.card{background:#1e293b;border-radius:16px;margin-bottom:16px;padding:18px}.tiles .card{margin-bottom:0}.card-header{align-items:center;gap:12px;width:100%;display:flex}.card-header-toggle{width:auto;min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex:auto;align-items:center;margin:0;padding:0;font-family:inherit;display:flex}.card-header-text{flex-direction:column;gap:4px;min-width:0;display:flex}.card-summary{color:#94a3b8;font-size:.85rem}.card-chevron-btn{cursor:pointer;width:auto;color:inherit;background:0 0;border:none;flex-shrink:0;margin:0;padding:0}.card-chevron{color:#64748b;font-size:.8rem;transition:transform .15s}.card-chevron.open{transform:rotate(180deg)}.pill-link{color:#93c5fd;white-space:nowrap;background:#334155;border-radius:999px;flex-shrink:0;align-items:center;padding:6px 14px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.pill-link:hover{background:#3b4a63}.card-body{margin-top:14px}.pill{border-radius:999px;padding:6px 14px;font-size:.95rem;font-weight:600;display:inline-block}.pill.on{color:#86efac;background:#14532d}.pill.off{color:#fca5a5;background:#450a0a}.pill.mode{color:#bfdbfe;background:#1e3a8a}.pill.warn{color:#fde68a;background:#78350f}.meter{background:#334155;border-radius:999px;height:8px;margin:2px 0 10px;overflow:hidden}.meter-fill{border-radius:999px;height:100%;transition:width .3s}.row{color:#94a3b8;justify-content:space-between;align-items:center;margin:8px 0;font-size:.92rem;display:flex}.row b{color:#e2e8f0;font-weight:500}.row-hint{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;margin:-4px 0 10px;font-size:.78rem;line-height:1.3;display:block;overflow:hidden}.row-hint.expanded{white-space:normal}button,input[type=submit]{cursor:pointer;border:none;border-radius:10px;width:100%;padding:12px 18px;font-family:inherit;font-size:1rem;font-weight:600}button:disabled{opacity:.6;cursor:default}.btn-on{color:#fff;background:#16a34a}.btn-off{color:#fff;background:#dc2626}.btn-neutral{color:#e2e8f0;background:#334155}.devices{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin:10px 0 0;padding:0;list-style:none;display:grid}.devices li{background:#0f172a;border-radius:10px;justify-content:space-between;align-items:center;min-width:0;padding:10px 12px;font-size:.9rem;display:flex}.devices button.remove{background:#334155;width:auto;padding:6px 12px;font-size:.82rem}.devices li:has(a.view-more){background:0 0;padding:0}.devices a.view-more{color:#60a5fa;background:#0f172a;border-radius:10px;justify-content:center;align-items:center;width:100%;height:100%;padding:10px 12px;font-size:.9rem;font-weight:600;text-decoration:none;display:flex}.devices a.view-more:hover{background:#17233a}input[type=text],input[type=password]{color:#e2e8f0;background:#0f172a;border:1px solid #334155;border-radius:8px;width:100%;margin-bottom:8px;padding:10px;font-family:inherit;font-size:.95rem}select{color:#e2e8f0;background:#0f172a;border:1px solid #334155;border-radius:8px;width:100%;padding:10px;font-size:.95rem}textarea{color:#e2e8f0;resize:vertical;background:#0f172a;border:1px solid #334155;border-radius:8px;width:100%;margin-bottom:8px;padding:10px;font-family:ui-monospace,monospace;font-size:.8rem}.muted-label{color:#64748b;margin:10px 0 6px;font-size:.78rem}.switch-row{gap:8px;display:flex}.switch-row button{flex-shrink:0;width:auto;padding:10px 16px}.seg{background:#0f172a;border-radius:999px;gap:2px;margin:10px 0 4px;padding:3px;display:inline-flex}.seg button{color:#94a3b8;background:0 0;border-radius:999px;width:auto;padding:6px 14px;font-size:.78rem;font-weight:600}.seg button.active{color:#e2e8f0;background:#334155}.dropzone{text-align:center;color:#94a3b8;cursor:pointer;border:2px dashed #334155;border-radius:10px;margin-bottom:8px;padding:16px;font-size:.85rem}.dropzone.drag{color:#bfdbfe;background:#1e3a8a33;border-color:#2563eb}.msg{border-radius:10px;margin-bottom:16px;padding:10px 14px;font-size:.9rem}.msg.ok{color:#86efac;background:#14532d}.msg.err{color:#fca5a5;background:#450a0a}small{color:#64748b}.disclosure{margin-top:14px}.disclosure summary{cursor:pointer;color:#e2e8f0;text-align:center;background:#334155;border-radius:10px;padding:12px 18px;font-weight:600;list-style:none}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:before{content:"+ "}.disclosure[open] summary:before{content:"−"}.disclosure[open] summary{border-radius:10px 10px 0 0}.verify-panel{border-radius:10px;margin:10px 0 0;padding:12px 14px;font-size:.88rem}.verify-panel.verify-good{color:#86efac;background:#14532d}.verify-panel.verify-bad{color:#fca5a5;background:#450a0a}.verify-panel code{background:#0f172a;border-radius:4px;padding:1px 5px}.hint-toggle{text-align:left;cursor:pointer;background:0 0;border:none;width:100%;margin:0;padding:0;font-family:inherit;display:block}.hint-toggle small{-webkit-line-clamp:1;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.hint-toggle.open small{-webkit-line-clamp:unset;overflow:visible}.conn-row{flex-direction:column;align-items:flex-start;gap:4px}.conn-row .conn-meta{color:#64748b;font-size:.8rem}.badge-wrap{display:inline-block;position:relative}.badge{cursor:pointer;border:none;border-radius:999px;margin-left:6px;padding:2px 8px;font-family:inherit;font-size:.72rem;font-weight:600;display:inline-block}.badge-info{z-index:10;color:#cbd5e1;background:#0f172a;border:1px solid #1e293b;border-radius:8px;width:max-content;max-width:min(240px,100vw - 16px);padding:8px 10px;font-size:.75rem;font-weight:400;line-height:1.35;position:fixed;box-shadow:0 4px 12px #0006}.badge.lan{color:#93c5fd;background:#1e3a5f}.badge.dns{color:#86efac;background:#14532d}.badge.vpn{color:#d8b4fe;background:#3b1e5f}.badge.upnp{color:#fed7aa;background:#7c2d12}.badge.mdns{color:#a5f3fc;background:#164e63}.badge.warn{color:#fde68a;background:#78350f}.badge.danger{color:#fca5a5;background:#450a0a}.stub-card{text-align:center;color:#94a3b8;padding:48px 20px}.docs-list{flex-direction:column;gap:12px;display:flex}.doc-card{color:inherit;flex-direction:column;gap:4px;text-decoration:none;display:flex}.docs-back{color:#60a5fa;margin-bottom:12px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-block}.markdown-body{overflow-wrap:anywhere;font-size:.92rem;line-height:1.6}.markdown-body>:first-child{margin-top:0}.markdown-body h1,.markdown-body h2,.markdown-body h3{margin:22px 0 10px;line-height:1.3}.markdown-body h1{font-size:1.2rem}.markdown-body h2{border-bottom:1px solid #334155;padding-bottom:6px;font-size:1.05rem}.markdown-body h3{color:#cbd5e1;font-size:.96rem}.markdown-body p,.markdown-body ul,.markdown-body ol{margin:0 0 12px}.markdown-body ul,.markdown-body ol{padding-left:22px}.markdown-body li{margin:4px 0}.markdown-body a{color:#60a5fa}.markdown-body strong{color:#f1f5f9}.markdown-body blockquote{color:#94a3b8;border-left:3px solid #334155;margin:0 0 12px;padding:4px 14px}.markdown-body hr{border:none;border-top:1px solid #334155;margin:20px 0}.markdown-body code{background:#0f172a;border-radius:4px;padding:1px 5px;font-family:ui-monospace,monospace;font-size:.85em}.markdown-body pre{background:#0f172a;border-radius:10px;margin:0 0 12px;padding:14px;overflow-x:auto}.markdown-body pre code{background:0 0;padding:0}.markdown-body table{border-collapse:collapse;width:100%;margin:0 0 12px;font-size:.85rem;display:block;overflow-x:auto}.markdown-body th,.markdown-body td{text-align:left;border:1px solid #334155;padding:6px 10px}.markdown-body th{color:#cbd5e1;background:#0f172a}
