:root { --bg:#0b0f14; --card:#121820; --border:#2a3542; --text:#dbe7ff; --muted:#9db0cc; --brand:#3bd16f; --accent:#58a6ff; --warn:#ff7b72; }
* { box-sizing: border-box; }
body { margin:0; background: radial-gradient(1200px 600px at 50% -100px, #182030, #0b0f14); color: var(--text); font-family: ui-rounded, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif; }
.wrap { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.card { width: 100%; max-width: 560px; border:1px solid var(--border); background: linear-gradient(180deg, #101722, #0b0f14); border-radius: 12px; padding: 20px; box-shadow: 0 20px 60px rgba(0,0,0,0.35) inset, 0 12px 30px rgba(0,0,0,0.35); }
.title { display:flex; align-items:center; gap:12px; }
.cab { width: 36px; height: 36px; background: #0f141c; border: 1px solid var(--border); border-radius: 8px; display:grid; place-items:center; color:#7dcfff; }
.muted { color: var(--muted); }
.row { display:flex; gap: 12px; flex-wrap: wrap; }
input[type=text], input[type=password] { width:100%; padding:10px 12px; border-radius: 8px; border:1px solid var(--border); background:#0f141c; color: var(--text); }
button { padding:10px 14px; border-radius: 8px; border:1px solid #2a6342; background: var(--brand); color:#05140a; font-weight: 700; cursor: pointer; }
button.secondary { background: #0f141c; color: var(--text); border:1px solid var(--border); }
.panel { border:1px dashed #334055; border-radius: 8px; padding: 10px; }
.prog { height: 8px; border:1px solid var(--border); border-radius: 999px; background:#0f141c; overflow: hidden; }
.bar { height: 100%; width:0%; background: linear-gradient(90deg, #42ff95, #4ad6ff); transition: width 300ms; }
.err { color: var(--warn); font-weight: 600; }
.tiny { font-size: 12px; }
.center { text-align: center; }
a { color: var(--accent); text-decoration: none; }
.ip { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; color:#9fc5ff; }