:root { --bg:#080b0e; --panel:#101419; --line:#262d34; --muted:#89939d; --text:#f5f7f8; --lime:#c9ff4a; --danger:#ff6b6b; }
* { box-sizing:border-box; }
body { margin:0; min-height:100vh; background:radial-gradient(circle at 70% 10%,#172019 0,transparent 32%),linear-gradient(145deg,#080b0e,#0c1014 55%,#080b0e); color:var(--text); font-family:Inter,"Segoe UI",Arial,sans-serif; }
body::before { content:""; position:fixed; inset:0; pointer-events:none; opacity:.18; background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px); background-size:48px 48px; mask-image:linear-gradient(to bottom,black,transparent 80%); }
.shell { width:min(920px,calc(100% - 32px)); margin:0 auto; padding:36px 0 24px; position:relative; }
.brand { display:flex; align-items:center; gap:12px; font-weight:750; letter-spacing:.04em; margin-bottom:72px; }
.brand-mark { width:28px; height:28px; display:flex; align-items:flex-end; gap:3px; padding:4px; border:1px solid #3d464e; border-radius:8px; }
.brand-mark i { width:5px; background:var(--lime); border-radius:2px; transform:skew(-12deg); }.brand-mark i:nth-child(1){height:9px}.brand-mark i:nth-child(2){height:17px}.brand-mark i:nth-child(3){height:12px}
.brand-sub { font-size:10px; font-weight:600; color:#66717b; border-left:1px solid #333b42; padding-left:12px; letter-spacing:.18em; }
.card { background:linear-gradient(145deg,rgba(19,24,29,.98),rgba(12,16,20,.98)); border:1px solid var(--line); border-radius:22px; padding:38px; box-shadow:0 32px 80px rgba(0,0,0,.38); }
.auth-card { max-width:500px; margin:0 auto; }.installer-card{max-width:760px;margin:0 auto}
.eyebrow { color:var(--lime); font-size:10px; font-weight:800; letter-spacing:.22em; margin-bottom:12px; }
h1 { font-size:clamp(28px,5vw,42px); letter-spacing:-.04em; margin:0; line-height:1.05; }.intro{color:var(--muted);line-height:1.7;margin:18px 0 30px}
form { display:grid; gap:18px; } label { display:grid; gap:9px; color:#aeb6bd; font-size:13px; font-weight:650; }
input { width:100%; border:1px solid #303942; background:#090c0f; color:var(--text); border-radius:11px; padding:14px 15px; font:inherit; outline:none; transition:.2s; }
input:focus { border-color:#8fb931; box-shadow:0 0 0 3px rgba(201,255,74,.09); }
button { border:0; border-radius:11px; padding:14px 17px; color:#10130b; background:var(--lime); font:700 14px/1 inherit; cursor:pointer; display:flex; align-items:center; justify-content:space-between; transition:transform .18s,filter .18s; }
button:hover { filter:brightness(1.06); transform:translateY(-1px); } button:disabled{opacity:.48;cursor:not-allowed;transform:none}.ghost{background:transparent;border:1px solid #343d45;color:#aeb6bd;width:auto;padding:10px 15px}.ghost:hover{border-color:#68737d}
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.cluster-pill{display:inline-flex;align-items:center;gap:8px;margin:24px 0 28px;padding:8px 12px;border:1px solid #2d363e;border-radius:999px;color:#b8c0c7;font-size:12px;background:#0b0f12}.cluster-pill span{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 12px var(--lime)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.wide{grid-column:1/-1}.message{min-height:20px;margin:14px 0 0;color:var(--danger);font-size:13px}.hidden{display:none!important}
.progress{margin-top:28px;border:1px solid #2c353c;background:#0a0e11;border-radius:14px;padding:20px}.progress-top{display:flex;align-items:center;gap:10px}.progress-top strong{font-size:14px}.progress-top #status-time{margin-left:auto;color:#78838c;font:12px ui-monospace,monospace}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:0 0 14px var(--lime);animation:pulse 1.3s infinite}.status-dot.failed{background:var(--danger);box-shadow:0 0 14px var(--danger);animation:none}.status-dot.success{animation:none}.track{height:3px;background:#20272d;border-radius:3px;margin:18px 0 13px;overflow:hidden}.track i{display:block;width:12%;height:100%;background:var(--lime);border-radius:3px;transition:width .5s}.progress p{margin:0;color:#8e99a2;font-size:13px}.node-result{margin-top:16px;padding-top:16px;border-top:1px solid #252c32;color:#c6ced4;font:12px ui-monospace,monospace}footer{text-align:center;color:#515b63;font-size:11px;margin-top:44px;letter-spacing:.02em}
@keyframes pulse{50%{opacity:.35;transform:scale(.75)}}
@media(max-width:620px){.shell{padding-top:24px}.brand{margin-bottom:44px}.card{padding:26px 20px;border-radius:17px}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.card-head h1{font-size:32px}}

.dashboard{display:grid;gap:22px}.dashboard-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:4px}.dashboard-head h1{font-size:40px}.dashboard .installer-card{max-width:none;margin:0}.nodes-card{padding:30px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.section-head h2{font-size:24px;letter-spacing:-.025em;margin:0}.section-head .eyebrow{margin-bottom:8px}.compact{width:auto;padding:10px 14px;font-size:12px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:24px 0}.stats>div{border:1px solid #293139;background:#0a0e11;border-radius:12px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between}.stats span{color:#77828b;font-size:11px;text-transform:uppercase;letter-spacing:.1em}.stats strong{font:700 24px ui-monospace,monospace}.online-stat strong{color:var(--lime)}.offline-stat strong{color:#ff7f7f}.node-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:8px 0 14px}.filters,.batch-actions{display:flex;align-items:center;gap:8px}.filter{width:auto;background:transparent;color:#7f8992;border:1px solid transparent;padding:8px 12px;font-size:12px}.filter.active{background:#20272c;color:#eef1f3;border-color:#303941}.secondary{width:auto;background:#263017;color:var(--lime);border:1px solid #435324}.danger{width:auto;background:#2a1719;color:#ff8a8a;border:1px solid #533034}.batch-actions>span{font-size:11px;color:#6f7a83;margin-right:3px}.table-wrap{overflow:auto;border:1px solid #293139;border-radius:12px}.node-table{width:100%;border-collapse:collapse;min-width:650px}.node-table th,.node-table td{padding:13px 14px;text-align:left;border-bottom:1px solid #232a30;font-size:12px}.node-table th{background:#0b0f12;color:#68737c;font-size:10px;letter-spacing:.08em;text-transform:uppercase}.node-table tr:last-child td{border-bottom:0}.node-table tr.offline-row{background:rgba(255,107,107,.025)}.node-name{display:flex;align-items:center;gap:10px}.node-name strong{font-size:13px}.node-name small{display:block;color:#68727b;font:10px ui-monospace,monospace;margin-top:3px}.state-badge,.install-badge{display:inline-flex;align-items:center;gap:7px;border:1px solid #313a41;border-radius:999px;padding:6px 9px;color:#aeb6bd;font-size:10px}.state-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:#77818a}.state-badge.online{color:#d8ffa2;border-color:#3d4c28;background:#141b0d}.state-badge.online::before{background:var(--lime);box-shadow:0 0 8px var(--lime)}.state-badge.offline{color:#ffacac;border-color:#513034;background:#1b1012}.state-badge.offline::before{background:#ff6b6b}.install-badge.running{color:#ffd875;border-color:#564725}.group-row td{padding:9px 14px;background:#0d1215;color:#69747d;font-size:10px;letter-spacing:.11em;text-transform:uppercase}.group-row i{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:7px;background:#6b747b}.group-row.online-group i{background:var(--lime)}.group-row.offline-group i{background:#ff6b6b}.empty{text-align:center!important;color:#67717a;padding:30px!important}input[type="checkbox"]{appearance:auto;width:16px;height:16px;padding:0;margin:0;accent-color:var(--lime);box-shadow:none}.nodes-card .message{margin-bottom:-6px}
@media(max-width:720px){.dashboard-head h1{font-size:32px}.stats{grid-template-columns:1fr}.node-toolbar{align-items:flex-start;flex-direction:column}.batch-actions{width:100%;flex-wrap:wrap}.nodes-card{padding:22px 16px}.section-head{align-items:flex-start}.section-head .cluster-pill{margin:0}.dashboard-head{align-items:center}}
.message.success-message{color:var(--lime)}
