*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-base:#0a0c10;--bg-surface:#0f1218;--bg-elevated:#161b26;--bg-hover:#1e2536;--border:#1e2536;--border-light:#2a3347;--accent:#4f8ef7;--accent-glow:#4f8ef740;--accent-dark:#3a6fd8;--danger:#f7524f;--danger-dark:#d93c39;--success:#34c97a;--warning:#f0a429;--text-primary:#e8edf5;--text-secondary:#8b95a7;--text-muted:#4a5468;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 16px #00000080;--shadow-lg:0 8px 40px #0009;--font-sans:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace}html,body,#root{height:100%;font-family:var(--font-sans);background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.6}.app{flex-direction:column;min-height:100%;display:flex}.navbar{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:100;background:#0a0c10d9;justify-content:space-between;align-items:center;height:60px;padding:0 2rem;display:flex;position:sticky;top:0}.navbar-brand{letter-spacing:-.3px;color:var(--text-primary);align-items:center;gap:10px;font-size:1.1rem;font-weight:700;text-decoration:none;display:flex}.navbar-brand .dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 8px var(--accent);border-radius:50%;animation:2s infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 8px var(--accent)}50%{box-shadow:0 0 18px var(--accent), 0 0 30px var(--accent-glow)}}.navbar-actions{align-items:center;gap:12px;display:flex}.user-badge{color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);font-size:.78rem;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;max-width:220px;padding:4px 10px;overflow:hidden}.main{flex:1;width:100%;max-width:900px;margin:0 auto;padding:2.5rem 2rem}.login-page{background:radial-gradient(ellipse 80% 60% at 50% -10%, #4f8ef71f 0%, transparent 70%), var(--bg-base);justify-content:center;align-items:center;min-height:100%;display:flex}.login-card{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius-xl);width:100%;max-width:420px;box-shadow:var(--shadow-lg), 0 0 0 1px var(--border);padding:3rem 2.5rem;animation:.4s fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{letter-spacing:-.5px;margin-bottom:6px;font-size:1.6rem;font-weight:700}.login-header p{color:var(--text-secondary);font-size:.9rem}.login-header .logo-glyph{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--accent) 0%, #7b5cf7 100%);justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:1.2rem;font-size:1.5rem;display:inline-flex;box-shadow:0 4px 20px #4f8ef759}.form-group{flex-direction:column;gap:6px;margin-bottom:1.1rem;display:flex}.form-group label{color:var(--text-secondary);letter-spacing:.3px;text-transform:uppercase;font-size:.82rem;font-weight:500}.form-group input,.form-group select{background:var(--bg-elevated);border:1px solid var(--border-light);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);outline:none;width:100%;padding:10px 14px;font-size:.95rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.form-group input::placeholder{color:var(--text-muted)}.btn{font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:6px;padding:9px 18px;font-size:.9rem;font-weight:600;text-decoration:none;transition:opacity .15s,transform .15s,box-shadow .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg, var(--accent) 0%, #7b5cf7 100%);color:#fff;box-shadow:0 2px 12px #4f8ef759}.btn-primary:hover:not(:disabled){opacity:.88}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-dark)}.btn-ghost{background:var(--bg-elevated);color:var(--text-secondary);border:1px solid var(--border-light)}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn-success{background:var(--success);color:#0a0c10}.btn-success:hover:not(:disabled){opacity:.85}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-full{width:100%}.btn-sm{border-radius:var(--radius-sm);padding:6px 12px;font-size:.8rem}.section-header{justify-content:space-between;align-items:center;margin-bottom:1.4rem;display:flex}.section-header h2{letter-spacing:-.3px;font-size:1.2rem;font-weight:700}.section-header p{color:var(--text-secondary);margin-top:2px;font-size:.85rem}.host-list{flex-direction:column;gap:10px;display:flex}.host-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;transition:border-color .2s,background .2s;display:flex}.host-card:hover{border-color:var(--border-light);background:var(--bg-elevated)}.host-info{flex-direction:column;gap:2px;min-width:0;display:flex}.host-name{font-family:var(--font-mono);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:500;overflow:hidden}.host-meta{color:var(--text-muted);font-size:.78rem}.host-meta span{margin-right:10px}.host-actions{flex-shrink:0;gap:6px;display:flex}.add-host-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:2rem;padding:1.5rem}.add-host-panel h3{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:1.2rem;font-size:.8rem;font-weight:600}.add-host-form{grid-template-columns:1fr 1fr auto;align-items:end;gap:10px;display:grid}@media (width<=640px){.add-host-form{grid-template-columns:1fr}}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#000000bf;justify-content:center;align-items:center;padding:1rem;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius-xl);width:100%;max-width:500px;box-shadow:var(--shadow-lg);padding:2rem;animation:.25s fadeUp}.modal-header{align-items:flex-start;gap:12px;margin-bottom:1.5rem;display:flex}.modal-icon{border-radius:var(--radius-md);background:#f0a42926;border:1px solid #f0a4294d;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;font-size:1.2rem;display:flex}.modal-title h3{margin-bottom:4px;font-size:1.05rem;font-weight:700}.modal-title p{color:var(--text-secondary);font-size:.85rem;line-height:1.5}.token-display{background:var(--bg-elevated);border:1px solid var(--border-light);border-radius:var(--radius-md);font-family:var(--font-mono);color:var(--success);word-break:break-all;margin-bottom:1.2rem;padding:14px 16px;font-size:.82rem;line-height:1.6;position:relative}.modal-warning{border-radius:var(--radius-md);color:var(--warning);background:#f0a42914;border:1px solid #f0a42933;align-items:flex-start;gap:8px;margin-bottom:1.5rem;padding:12px 14px;font-size:.83rem;line-height:1.5;display:flex}.modal-actions{justify-content:flex-end;gap:10px;display:flex}.alert{border-radius:var(--radius-md);align-items:center;gap:8px;margin-bottom:1.2rem;padding:12px 16px;font-size:.88rem;animation:.25s fadeUp;display:flex}.alert-error{color:var(--danger);background:#f7524f1a;border:1px solid #f7524f40}.alert-success{color:var(--success);background:#34c97a1a;border:1px solid #34c97a40}.alert-warning{color:var(--warning);background:#f0a4291a;border:1px solid #f0a42940}.zone-hint{color:var(--success);align-items:center;gap:4px;margin-top:4px;font-size:.78rem;animation:.2s fadeUp;display:flex}.zone-warn{margin-top:6px;margin-bottom:0;font-size:.82rem}.empty-state{text-align:center;color:var(--text-muted);padding:4rem 2rem}.empty-state svg{opacity:.4;margin-bottom:1rem}.empty-state p{font-size:.9rem}.spinner{border:2px solid #0000;border-top-color:currentColor;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.divider{background:var(--border);height:1px;margin:2rem 0}.skeleton{background:linear-gradient(90deg, var(--bg-elevated) 25%, var(--bg-hover) 50%, var(--bg-elevated) 75%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{height:64px;margin-bottom:10px}
