*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;background:#0f172a;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}.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;gap:12px;padding:12px 16px;border-bottom:1px solid #1f2937;align-items:center}.table.inbounds .table-row{grid-template-columns:.6fr 1.4fr 1fr .6fr 1.4fr}.table.nodes .table-row{grid-template-columns:1.1fr 1fr 1.8fr .8fr 1.2fr 2fr}.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:flex;gap:8px;flex-wrap:wrap}.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-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}.grid-2{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.clients .table-row input{width:100%}.availability{display:flex;flex-direction:column;gap:6px}.availability.empty{font-size:12px;color:#94a3b8}.availability-bars{display:grid;grid-auto-flow:column;grid-auto-columns:6px;gap:4px;align-items:end}.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}
