*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;background:#0c0f14;color:#e2e8f0}a{color:inherit;text-decoration:none}.page{padding:24px;max-width:1200px;margin:0 auto}.center{display:flex;min-height:100vh;align-items:center;justify-content:center}.card{background:#111827;border:1px solid #1f2937;padding:24px;border-radius:12px;box-shadow:0 12px 30px #0000004d}.card h1,.card h3{margin-top:0}.card label{display:block;margin-bottom:12px;font-size:14px}.card input,.card textarea{width:100%;margin-top:6px;padding:8px 10px;border-radius:8px;border:1px solid #334155;background:#0b1220;color:#e2e8f0}.header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:20px}.form-grid textarea{grid-column:1 / -1}.add-node-panel{display:flex;flex-direction:column;gap:16px}.add-node-toggle{align-self:flex-start}.checkbox{display:flex;align-items:center;gap:8px}.file-input{display:flex;flex-direction:column;gap:6px;font-size:14px}.file-input input[type=file]{padding:6px 0;background:transparent;border:none}button,.link-button{background:#2563eb;color:#fff;border:none;padding:8px 12px;border-radius:8px;cursor:pointer}button:hover,.link-button:hover{background:#1d4ed8}button.danger{background:#ef4444}button.danger:hover{background:#dc2626}.table{border:1px solid #1f2937;border-radius:10px;overflow:hidden}.table-row{display:grid;grid-template-columns:1.2fr 1fr 2fr 2fr;column-gap:16px;row-gap:10px;padding:16px 20px;border-bottom:1px solid #1f2937;align-items:center}.table-row>div{min-width:0}.table.inbounds .table-row{grid-template-columns:.6fr 1.4fr 1fr .6fr 1.4fr}.table.nodes .table-row{grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr) minmax(0,1.7fr) minmax(0,.9fr) minmax(200px,2fr) 160px}.table.compact .table-row{grid-template-columns:1.4fr 1.6fr .6fr 1fr 1fr .8fr .8fr .8fr}.table-row.head{background:#0b1220;font-weight:600}.table-row:last-child{border-bottom:none}.table-row .actions{display:grid;grid-auto-rows:minmax(36px,auto);gap:8px;width:100%;min-width:0;align-items:center;justify-items:stretch}.table-row .actions button,.table-row .actions .link-button{width:100%}.table-row>div:not(.actions){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nodes-cards{display:flex;flex-direction:column;gap:20px}.nodes-cards-head{display:flex;justify-content:space-between;align-items:center;padding:6px 4px}.nodes-cards-head h3{margin:0}.muted{color:#94a3b8}.muted.small{font-size:12px}.validation-summary{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0 16px}.validation-badge{display:inline-flex;align-items:center;gap:6px}.validation-detail{font-size:12px;color:#94a3b8}.node-card{background:linear-gradient(145deg,#121720,#0d121a);border:1px solid #1c2431;border-radius:16px;padding:18px;box-shadow:0 18px 36px #00000073;display:flex;flex-direction:column;gap:14px}.node-card-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}.node-card-title{display:flex;flex-direction:column;gap:6px;min-width:0}.node-name-row{display:flex;gap:12px;align-items:center}.node-name{font-size:20px;font-weight:700;color:#f8fafc}.tag-row{display:flex;gap:6px;flex-wrap:wrap}.chip.subtle{background:#1b2432;border-color:#2a3445}.node-link a{color:#9cc1ff}.node-versions{display:flex;gap:12px;flex-wrap:wrap}.node-uptime{text-align:right;min-width:120px;display:flex;flex-direction:column;align-items:flex-end;gap:2px}.uptime-value{font-size:24px;font-weight:700;color:#e0f2fe}.uptime-label{color:#94a3b8;font-size:12px}.uptime-arrow{font-size:12px;color:#64748b}.node-availability{background:#101722;border:1px solid #1d2531;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px}.availability-header{display:flex;justify-content:space-between;align-items:center}.node-availability .availability{gap:8px}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.metrics.empty{color:#94a3b8}.metric{background:#0f1724;border:1px solid #1d2531;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.metric-header{display:flex;justify-content:space-between;align-items:center}.metric-bars{display:grid;grid-auto-flow:column;grid-auto-columns:4px;gap:3px;align-items:end}.metric-bar{width:4px;border-radius:999px;background:#334155}.metric-bar.cpu{background:#38bdf8}.metric-bar.mem{background:#22c55e}.metric-bar.disk{background:#fbbf24}.node-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.meta-box{background:#101722;border:1px solid #1d2531;border-radius:10px;padding:10px 12px}.meta-label{font-size:12px;color:#94a3b8}.meta-value{font-size:14px;color:#e2e8f0;word-break:break-all}.node-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.node-actions button,.node-actions .link-button{min-width:90px}button.primary{background:#2563eb}button.primary:hover{background:#1d4ed8}button.secondary{background:#1f2937}button.secondary:hover{background:#2a3547}button.warning{background:#f59e0b;color:#0b0f17}button.warning:hover{background:#d97706}button.ghost{background:#b91c1c}button.ghost:hover{background:#991b1b}.error{background:#7f1d1d;padding:10px 12px;border-radius:8px;margin:12px 0}.hint{font-size:12px;color:#94a3b8}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172acc;display:flex;align-items:center;justify-content:center;padding:20px}.modal-content{background:#0b1220;border:1px solid #1f2937;padding:20px;border-radius:12px;width:min(900px,90vw);max-height:90vh;overflow:auto}.modal-content textarea{width:100%;background:#0f172a;color:#e2e8f0;border-radius:8px;border:1px solid #334155;padding:10px;font-family:Courier New,monospace}.modal-content.wide{width:min(1100px,92vw)}.modal-content h3{margin:0}.modal-content label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:#cbd5f5}.modal-content input,.modal-content select,.modal-content textarea{width:100%;background:#0f1724;border:1px solid #2a3344;color:#e2e8f0;border-radius:8px;padding:8px 10px}.modal-content select{height:36px}.modal-content .actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.plan-steps ul{margin:6px 0 0;padding-left:18px;color:#e2e8f0}.modal-header{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab{background:#1e293b;color:#cbd5f5;border:1px solid #334155;padding:6px 10px;border-radius:8px;cursor:pointer}.tab.active{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 6px 14px #2563eb4d}.grid-2{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.clients .table-row input{width:100%}.clients-cards-mobile,.inbounds-cards-mobile{display:none}.inbound-card{background:#0d1522;border:1px solid #1f2937;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px;margin-top:12px}.inbound-card-row{display:flex;justify-content:space-between;gap:12px;align-items:center}.inbound-card .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}.client-card{background:#0d1522;border:1px solid #1f2937;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:12px;margin-top:12px}.client-card .field-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;margin-bottom:6px}.client-card .row{display:flex;gap:8px}.client-card .row input{flex:1}.clients-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px;flex-wrap:wrap}.clients-toolbar input{flex:1}.pagination{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pagination select{background:#0f1724;border:1px solid #2a3344;color:#e2e8f0;border-radius:8px;padding:6px 8px}.table.inbounds{margin-top:12px;background:#0d1522;border:1px solid #1f2937;border-radius:12px;overflow:hidden}.table.inbounds .table-row{background:#0d1522}.table.inbounds .table-row.head{background:#101827}.table.inbounds .table-row:not(.head):hover{background:#111e30}.table.inbounds .table-row .actions{justify-self:end}@media (max-width: 900px){.tabs{flex-wrap:wrap;gap:6px;padding-bottom:0}.tab{padding:4px 8px;font-size:12px;border-radius:7px}.table.inbounds{overflow-x:auto;-webkit-overflow-scrolling:touch}.table.inbounds .table-row{grid-template-columns:180px 260px 80px 160px 180px 120px 120px 120px;min-width:1220px;width:max-content}.table.inbounds .table-row>div{min-width:120px}.table.inbounds .table-row input,.table.inbounds .table-row select{min-width:140px}.table.inbounds .table-row .actions{min-width:120px}.clients-table .table-row.head{display:none!important}.clients-table .table-row{display:flex!important;flex-direction:column;gap:12px;padding:14px;width:100%}.clients-table .table-row>div{display:flex;flex-direction:column;gap:6px;min-width:0}.clients-table .table-row>div:before{content:attr(data-label);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8}.clients-table .table-row input,.clients-table .table-row select,.clients-table .table-row button{width:100%}.clients-table .table-row div[data-label=Enable]{flex-direction:row;align-items:center;gap:10px}.clients-table .table-row div[data-label=Enable]:before{margin-right:4px}.clients-table .table-row div[data-label=Actions]{align-items:stretch}.clients-table-desktop{display:none}.clients-cards-mobile{display:flex;flex-direction:column}.inbounds-table-desktop{display:none!important}.inbounds-cards-mobile{display:flex!important;flex-direction:column}}@media (max-width: 600px){.inbounds-table-desktop{display:none!important}.inbounds-cards-mobile{display:flex!important}}.availability{display:flex;flex-direction:column;gap:6px;min-width:0;overflow:hidden;width:100%}.availability.empty{font-size:12px;color:#94a3b8}.availability-bars{display:grid;grid-auto-flow:column;grid-auto-columns:6px;gap:4px;align-items:end;max-width:100%;overflow:hidden;justify-content:end;width:100%;min-width:0}.availability .bar{width:6px;height:18px;border-radius:4px;background:#334155}.availability .bar.online{background:#22c55e}.availability .bar.degraded{background:#f59e0b}.availability .bar.offline{background:#ef4444}.availability-meta{display:flex;justify-content:space-between;font-size:11px;color:#94a3b8}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:12px;background:#334155;color:#e2e8f0;text-transform:uppercase}.badge.online{background:#14532d;color:#bbf7d0}.badge.degraded{background:#7c2d12;color:#fde68a}.badge.offline{background:#7f1d1d;color:#fecaca}.list-editor{display:flex;flex-direction:column;gap:8px}.list-label{font-size:13px;color:#cbd5f5}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{background:#1e293b;border:1px solid #334155;color:#e2e8f0;padding:2px 8px;border-radius:999px;display:inline-flex;gap:6px;align-items:center;font-size:12px}.chip button{background:transparent;border:none;color:#94a3b8;cursor:pointer;padding:0}.list-input{display:flex;gap:8px}.list-input input{flex:1}
