:root{--bg:#0b0e0c;--bg-2:#121714;--surface:#171c18;--surface-2:#1e251f;--line:#2a332c;--text:#e7eee6;--muted:#8b978c;--lime:#c6f24e;--lime-dim:#c6f24e24;--teal:#6ee7c5;--danger:#ff6b6b;--warn:#f0c14a;--ok:#7ee787;--shadow:0 18px 50px #00000059;--radius:16px;--sidebar:232px}*{box-sizing:border-box}body,html{min-height:100%;margin:0}html{background:var(--bg);color:var(--text)}body{background:radial-gradient(1100px 520px at 92% -8%,#c6f24e12,transparent 55%),radial-gradient(700px 380px at -8% 108%,#6ee7c50f,transparent 50%),var(--bg);font-family:Manrope,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app{grid-template-columns:var(--sidebar) 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:#0c100ddb;flex-direction:column;gap:22px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.03em;align-items:center;gap:10px;padding:0 8px;font-family:Syne,sans-serif;font-size:20px;font-weight:800;display:flex}.brand-mark{background:var(--lime);color:#111;border-radius:9px;place-items:center;width:30px;height:30px;font-size:14px;display:grid}.nav{gap:4px;display:grid}.nav-label{letter-spacing:.14em;text-transform:uppercase;padding:14px 10px 6px;font-size:11px}.nav a,.nav-label{color:var(--muted)}.nav a{border-radius:12px;align-items:center;gap:8px;padding:9px 12px;font-size:14px;font-weight:600;display:flex}.nav a:hover{color:var(--text);background:var(--surface-2)}.nav a.is-on{background:var(--lime);color:#111}.sidebar__user{border:1px solid var(--line);border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px;margin-top:auto;padding:12px;display:flex}.sidebar__user strong{font-size:13px;display:block}.sidebar__user .hint,.sidebar__user strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sidebar__user .ghost{margin-left:auto}.top-nav{display:none}.content{min-width:0}.page{width:min(1080px,100% - 48px);margin:0 auto;padding:32px 0 72px}.btn,.ghost{border:1px solid var(--line);background:0 0;border-radius:999px;padding:10px 16px;font-size:13px;font-weight:700}.btn{background:var(--lime);color:#111;border-color:var(--lime)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.danger{background:var(--danger);border-color:var(--danger);color:#160707}.btn.secondary{background:var(--surface-2);border-color:var(--line)}.btn.secondary,.ghost{color:var(--text)}.btn.secondary:hover,.ghost:hover{border-color:var(--lime)}.icon-btn{border:1px solid var(--line);background:0 0;border-radius:10px;width:36px;height:36px;font-size:18px;line-height:1}h1,h2,h3{letter-spacing:-.04em;margin:0 0 6px;font-family:Syne,sans-serif}h1{font-size:34px}.lead{color:var(--muted);margin:0;line-height:1.45}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.page-head .lead{max-width:52ch;margin-top:6px}.page-head__actions{flex-wrap:wrap;gap:8px;display:flex}.kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:11px}.grid{gap:14px;display:grid}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.card{background:linear-gradient(180deg,var(--surface),#141916);border:1px solid var(--line);border-radius:var(--radius);padding:18px}a.card{transition:border-color .15s,transform .15s;display:block}a.card:hover{border-color:var(--lime);transform:translateY(-1px)}.stat{font-family:Syne,sans-serif;font-size:28px;font-weight:800}.field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.field>span:first-child{color:var(--muted);font-size:12px;font-weight:600}input,select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:12px;outline:none;padding:11px 12px}textarea{min-height:140px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px}input:focus,select:focus,textarea:focus{border-color:var(--lime)}.pill{background:var(--lime-dim);color:var(--lime);border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;font-weight:700;display:inline-flex}.pill.off{color:var(--danger);background:#ff6b6b1f}.pill.warn{color:var(--warn);background:#f0c14a1f}.mono{word-break:break-all;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px}.row{gap:8px}.row,.space{flex-wrap:wrap;align-items:center;display:flex}.space{justify-content:space-between;gap:12px}.err{color:var(--danger);margin:0 0 10px;font-size:13px}.ok{color:var(--ok)}.hint{margin:0;font-size:12px}.back,.hint{color:var(--muted)}.back{align-items:center;gap:6px;margin-bottom:14px;font-size:13px;font-weight:600;display:inline-flex}.back:hover{color:var(--text)}.pending{color:var(--muted);padding:24px 0}.field.check{flex-direction:row;align-items:center;gap:8px}.search{width:min(320px,100%);margin-bottom:16px}.snippet{background:#0a0c0a;border-radius:10px;max-height:120px;margin:12px 0 0;padding:12px;overflow:auto}.conn-group{gap:12px;margin-bottom:36px;display:grid}.conn-group h2{font-size:22px}.section-title{margin:28px 0 12px;font-size:20px}.quick-links{margin-top:20px}.login-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{width:min(400px,100%);padding:28px}.login-card h1{margin-bottom:8px;font-size:40px}.login-card .btn{width:100%;margin-top:6px}.modal-back{z-index:40;background:#00000094;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--line);border-radius:20px;width:min(560px,100%);max-height:90vh;padding:22px;overflow:auto}.modal--wide{width:min(720px,100%)}.modal-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.modal-head h2{margin:0}.modal-foot{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.check-list{gap:8px;max-height:220px;display:grid;overflow:auto}.check-list label{align-items:center;gap:8px;font-size:14px;display:flex}.pick-list{gap:6px;max-height:240px;margin-bottom:12px;display:grid;overflow:auto}.pick-item{text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:12px;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;display:flex}.pick-item--row{flex-direction:row;align-items:center;gap:10px}.pick-item.is-on,.pick-item:hover:not(:disabled){border-color:var(--lime)}.pick-item.is-on{background:var(--lime-dim)}.progress{background:#222;border-radius:99px;height:8px;overflow:hidden}.progress>span{background:var(--lime);height:100%;display:block}.progress.warn>span{background:var(--warn)}.progress.full>span{background:var(--danger)}.traffic{gap:6px;min-width:140px;display:grid}.traffic__head{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.traffic__head strong{font-size:16px}.traffic.compact .traffic__head strong{font-size:13px}.traffic__io{font-size:12px}.traffic__parts{gap:2px;margin-top:2px;display:grid}.avatar{background:var(--lime);color:#111;border-radius:12px;flex:none;place-items:center;width:40px;height:40px;font-size:13px;font-weight:800;display:grid}.avatar--sm{border-radius:8px;width:28px;height:28px;font-size:11px}.empty{text-align:center;border:1px dashed var(--line);border-radius:var(--radius);background:#171c1880;padding:48px 20px}.empty__actions{margin-top:16px}.ticket{gap:16px;display:grid}.ticket h3{margin:0;font-size:20px}.ticket__top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ticket__meta{grid-template-columns:1.4fr 1fr;gap:16px;display:grid}.ticket__actions{gap:8px;display:grid}.access-row{border:1px solid var(--line);background:var(--bg);border-radius:14px;grid-template-columns:1fr auto;align-items:center;gap:10px 16px;padding:14px 16px;display:grid}.access-row .btn{min-width:148px}.access-row__info{align-items:center;gap:10px;min-width:0;display:flex}.access-row__info strong{font-size:14px}.access-row__raw{background:#0a0c0a;border-radius:8px;grid-column:1/-1;max-height:140px;margin:0;padding:10px;overflow:auto}.access-row__qr{width:100%;max-width:260px;margin:12px auto 0;display:block}.person{grid-template-columns:1.3fr 1fr auto;align-items:center;gap:16px;display:grid}.person__who{align-items:center;gap:12px;min-width:0;display:flex}.person__who strong{display:block}.person__who .hint,.person__who strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.person__meta{justify-items:start;gap:6px;display:grid}.person .row{justify-content:flex-end}.conn-tile .stat{margin:6px 0 2px;font-size:22px}.tile-row{justify-content:space-between;align-items:center;gap:10px;margin-top:12px;display:flex}.more-fold summary,.settings-fold summary{cursor:pointer;color:var(--muted);font-weight:700;list-style:none}.more-fold{margin:4px 0 14px}.cred{background:var(--bg);border-radius:12px;gap:6px;margin:12px 0;padding:14px;display:grid}.xlist{gap:18px;display:grid}.xgroup{border:1px solid var(--line);background:linear-gradient(180deg,var(--surface),#141916);border-radius:16px;scroll-margin-top:16px;overflow:hidden}.xgroup__head{background:var(--surface-2);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.xgroup__head h2{margin:0;font-size:18px}.xcols,.xrow{grid-template-columns:minmax(180px,1.5fr) minmax(150px,1.1fr) 140px 88px auto;align-items:center;gap:10px 14px;padding:10px 16px;display:grid}.xcols{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:11px}.xcols,.xrow{border-top:1px solid var(--line)}.xrow{font-size:14px}.xrow:hover{background:#c6f24e0a}.xempty{color:var(--muted);border-top:1px solid var(--line);padding:16px;font-size:14px}@media (width<=860px){.app{grid-template-columns:1fr}.sidebar{display:none}.top-nav{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.top-nav .nav{gap:4px;display:flex;overflow:auto}.top-nav .nav a{white-space:nowrap;padding:8px 10px;font-size:13px}.page{width:min(1080px,100% - 28px);padding-top:22px}h1{font-size:28px}.access-row,.person,.ticket__meta,.xcols,.xrow{grid-template-columns:1fr}.xcols{display:none}.xgroup__head{align-items:stretch}.page-head,.xgroup__head{flex-direction:column}}
