:root{--bg: #0b0e14;--bg-2: #0e1219;--panel: #141925;--panel-2: #1b2230;--panel-3: #222b3b;--border: #232c3c;--border-strong: #324056;--text: #e8eef6;--muted: #93a1b5;--muted-2: #6b7888;--accent: #4c8dff;--accent-2: #2f6fed;--accent-soft: rgba(76, 141, 255, .14);--green: #3fb950;--red: #f85149;--yellow: #d29922;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px -12px rgba(0, 0, 0, .55);--shadow-lg: 0 24px 60px -20px rgba(0, 0, 0, .7);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-feature-settings:"cv05","ss01"}*{box-sizing:border-box}html,body{height:100%}body{margin:0;color:var(--text);background:radial-gradient(1200px 700px at 100% -10%,rgba(76,141,255,.08),transparent 60%),radial-gradient(900px 600px at -10% 110%,rgba(47,111,237,.06),transparent 55%),var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--muted-2);background-clip:padding-box}.app{display:flex;min-height:100vh}.sidebar{width:248px;flex-shrink:0;background:linear-gradient(180deg,var(--panel) 0%,var(--bg-2) 100%);border-right:1px solid var(--border);padding:22px 16px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:flex-start;gap:11px;font-weight:700;font-size:26px;letter-spacing:-.01em;text-transform:uppercase;margin-bottom:22px;padding:4px 8px}.brand-name{position:relative;display:inline-block;background:linear-gradient(100deg,var(--text) 0%,var(--text) 38%,#cfe0ff 47%,#ffffff 50%,#cfe0ff 53%,var(--text) 62%,var(--text) 100%);background-size:280% 100%;background-position:130% 0;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:brand-flare 4.5s ease-in-out infinite}@keyframes brand-flare{0%{background-position:130% 0}45%{background-position:-30% 0}to{background-position:-30% 0}}@media (prefers-reduced-motion: reduce){.brand-name{animation:none;background:none;color:var(--text);-webkit-text-fill-color:currentColor}}.brand small{display:block;color:var(--muted);font-weight:400;font-size:11.5px;letter-spacing:0;margin-top:1px;text-transform:none}.brand small.brand-version{color:var(--muted-2, var(--muted));font-size:10.5px;margin-top:3px;opacity:.85}.brand-mark{width:34px;height:34px;flex-shrink:0;border-radius:9px;background:linear-gradient(150deg,var(--accent) 0%,var(--accent-2) 100%);display:grid;place-items:center;color:#fff;box-shadow:0 4px 14px -4px #4c8dff99,inset 0 1px #ffffff40}.nav-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-2);padding:6px 10px 4px}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--muted);font-size:14px;font-weight:500;position:relative;transition:background .15s,color .15s}.nav a:hover{background:var(--panel-2);color:var(--text);text-decoration:none}.nav a.active{background:var(--accent-soft);color:var(--text)}.nav a.active:before{content:"";position:absolute;left:-16px;top:50%;transform:translateY(-50%);width:3px;height:20px;border-radius:0 3px 3px 0;background:var(--accent)}.nav a svg{width:17px;height:17px;flex-shrink:0;opacity:.9}.sidebar .spacer{flex:1}.userbox{border-top:1px solid var(--border);padding-top:14px}.userrow{display:flex;align-items:center;gap:10px}.userrow .who{min-width:0}.userrow .name{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.userbox .email{color:var(--muted);font-size:12px;word-break:break-all}.avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;object-fit:cover;background:var(--panel-3);display:grid;place-items:center;font-size:13px;font-weight:600;color:var(--text);border:1px solid var(--border-strong)}.main{flex:1;padding:34px 40px;max-width:1180px;width:100%}.h1{font-size:23px;font-weight:680;letter-spacing:-.02em;margin:0 0 5px}.sub{color:var(--muted);margin:0 0 24px;font-size:14.5px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:18px;box-shadow:var(--shadow)}.card h2,.card h3{letter-spacing:-.01em}.btn{background:linear-gradient(180deg,var(--accent) 0%,var(--accent-2) 100%);color:#fff;border:none;border-radius:var(--radius-sm);padding:9px 15px;font-size:14px;font-weight:600;cursor:pointer;transition:filter .15s,transform .05s,box-shadow .15s;box-shadow:0 1px 2px #0000004d,inset 0 1px #ffffff1f}.btn:hover{filter:brightness(1.08)}.btn:active{transform:translateY(1px)}.btn.secondary{background:var(--panel-2);border:1px solid var(--border-strong);color:var(--text);box-shadow:none}.btn.secondary:hover{background:var(--panel-3);filter:none}.btn.danger{background:transparent;border:1px solid rgba(248,81,73,.5);color:var(--red);box-shadow:none}.btn.danger:hover{background:#f851491f;filter:none}.btn.small{padding:6px 11px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;filter:none}input,textarea,select{background:var(--bg-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);padding:9px 11px;font-size:14px;width:100%;transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--muted-2)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}label{display:block;font-size:12.5px;color:var(--muted);margin:10px 0 5px;font-weight:500}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--border);font-size:14px}thead th{border-bottom:1px solid var(--border-strong)}th{color:var(--muted-2);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.06em}tbody tr{transition:background .12s}tbody tr:hover{background:#ffffff06}tbody tr:last-child td{border-bottom:none}.row{display:flex;gap:10px;align-items:center}.row.between{justify-content:space-between}.tag{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500}.tag:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.tag.on{background:#3fb95024;color:var(--green)}.tag.off{background:#f8514924;color:var(--red)}.tag.master{background:#3fb95024;color:var(--green)}.tag.member{background:var(--accent-soft);color:var(--accent)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.center-screen{display:grid;place-items:center;min-height:100vh}.login-card{text-align:center;width:380px;padding:32px;box-shadow:var(--shadow-lg)}.secret-box{background:#d299220f;border:1px dashed rgba(210,153,34,.55);border-radius:var(--radius-sm);padding:14px;margin-top:12px}.secret-box .mono{word-break:break-all}.muted{color:var(--muted)}.error{color:#ffb4ad;font-size:13.5px;background:#f8514914;border:1px solid rgba(248,81,73,.25);border-radius:var(--radius-sm);padding:8px 12px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.kpi{font-size:30px;font-weight:720;letter-spacing:-.02em;line-height:1.1}.empty{color:var(--muted);padding:32px;text-align:center;font-size:14px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm)}.stat-strip{display:flex;gap:14px;flex-wrap:wrap}.stat-tile{flex:1;min-width:150px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px}.stat-tile .label{color:var(--muted);font-size:12px;font-weight:500;margin-bottom:6px}.stat-tile .kpi{font-size:26px}.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .track{position:relative;width:40px;height:22px;flex:none;background:var(--panel-3);border:1px solid var(--border-strong);border-radius:999px;transition:background .15s,border-color .15s}.switch .track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--muted);transition:transform .15s,background .15s}.switch input:checked+.track{background:var(--accent-soft);border-color:var(--accent)}.switch input:checked+.track:after{transform:translate(18px);background:var(--accent)}.switch input:disabled+.track{opacity:.5;cursor:default}.switch input:focus-visible+.track{box-shadow:0 0 0 3px var(--accent-soft)}.switch .switch-label{font-size:14px}.mesh-graph{width:100%}.mesh-scroll{width:100%;overflow-x:auto;overflow-y:hidden;border:1px solid var(--border);border-radius:8px;background:var(--bg-soft, transparent)}.mesh-graph svg{display:block;max-width:none}.mesh-edge{stroke:var(--border-strong);stroke-width:1.5}.mesh-edge.backbone{stroke:var(--green);stroke-width:2;opacity:.7}.mesh-node circle{stroke-width:2}.mesh-node.master circle{fill:#3fb95029;stroke:var(--green)}.mesh-node.member circle{fill:var(--accent-soft);stroke:var(--accent)}.mesh-id{fill:var(--muted);font-size:11px;font-family:var(--mono, ui-monospace, monospace)}.mesh-count{fill:var(--text);font-size:13px;font-weight:700}.mesh-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:10px;font-size:13px;color:var(--muted)}.mesh-key{display:inline-flex;align-items:center;gap:6px}.mesh-key i{width:12px;height:12px;border-radius:50%;border:2px solid}.mesh-key.master i{background:#3fb95029;border-color:var(--green)}.mesh-key.member i{background:var(--accent-soft);border-color:var(--accent)}.log{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto;font-family:var(--mono, ui-monospace, monospace);font-size:13px}.log li{padding:3px 0;border-bottom:1px solid var(--border)}.log li:last-child{border-bottom:none}.log-in{color:var(--green)}.log-out{color:var(--muted)}.log-error{color:var(--red)}.log-info{color:var(--muted-2)}@media (max-width: 760px){.grid-2{grid-template-columns:1fr}.main{padding:24px 18px}}
