:root{
  --bg:#0b1020; --bg2:#121a33; --card:#151d36; --line:#243056;
  --fg:#e8ecf8; --dim:#94a1c4; --accent:#5b8cff; --ok:#38d39f; --bad:#ff6b81;
}
*{box-sizing:border-box}
body{
  margin:0; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",
  "Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:radial-gradient(1200px 600px at 20% -10%,#1a2a55 0%,transparent 60%),
             radial-gradient(900px 500px at 90% 0%,#1b3b4a 0%,transparent 55%),var(--bg);
  color:var(--fg); min-height:100vh; display:flex; flex-direction:column;
}
.wrap{width:100%; max-width:960px; margin:0 auto; padding:0 18px}
.topbar{border-bottom:1px solid var(--line); background:rgba(10,15,30,.6); backdrop-filter:blur(8px)}
.topbar .wrap{display:flex; align-items:center; justify-content:space-between; height:58px}
.brand{font-weight:700; letter-spacing:.3px}
.nav a{color:var(--dim); text-decoration:none; margin-left:16px; font-size:14px}
.nav a:hover{color:var(--fg)}
main{flex:1; padding:34px 0 60px}
.card{background:linear-gradient(180deg,var(--card),#121a30); border:1px solid var(--line);
  border-radius:16px; padding:26px; margin-bottom:20px; box-shadow:0 12px 40px rgba(0,0,0,.28)}
.card.narrow{max-width:430px; margin:40px auto}
h1{font-size:22px; margin:0 0 8px}
h2{font-size:17px; margin:0 0 14px}
h3{font-size:14px; margin:18px 0 8px; color:var(--dim)}
.sub{color:var(--dim); font-size:14px; margin:0 0 20px; line-height:1.6}
.field{display:block; margin-bottom:16px}
.field span{display:block; font-size:13px; color:var(--dim); margin-bottom:7px}
.field em{display:block; font-size:12px; color:var(--dim); margin-top:6px; font-style:normal}
input,textarea,select{
  width:100%; background:#0d1428; color:var(--fg); border:1px solid var(--line);
  border-radius:10px; padding:11px 13px; font-size:14px; outline:none;
}
input:focus,textarea:focus{border-color:var(--accent); box-shadow:0 0 0 3px rgba(91,140,255,.15)}
textarea{resize:vertical}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.box{font-size:13px}
.btn{display:inline-block; border:1px solid var(--line); background:#1a2342; color:var(--fg);
  padding:11px 18px; border-radius:10px; font-size:14px; cursor:pointer; text-decoration:none; text-align:center}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:linear-gradient(180deg,#4b7dff,#3563e9); border-color:#3563e9; font-weight:600}
.btn.tiny{padding:5px 10px; font-size:12px}
.btn:disabled{opacity:.55; cursor:not-allowed}
.inline{display:inline}
.hint{color:var(--dim); font-size:12.5px; margin:8px 0 0}
.alert{background:rgba(255,107,129,.12); border:1px solid rgba(255,107,129,.4);
  color:#ffd3da; padding:11px 13px; border-radius:10px; font-size:13.5px; margin-bottom:16px}
.steps{display:flex; gap:14px; margin-top:18px; color:var(--dim); font-size:12.5px}
.bar{height:10px; background:#0d1428; border:1px solid var(--line); border-radius:99px; overflow:hidden; margin:18px 0 8px}
.bar-in{height:100%; width:0%; background:linear-gradient(90deg,#4b7dff,#38d39f); transition:width .5s ease}
.meta{display:flex; justify-content:space-between; color:var(--dim); font-size:12.5px}
.result{margin-top:22px; padding-top:20px; border-top:1px solid var(--line)}
.ok{color:var(--ok); font-weight:700; margin-bottom:12px}
.bad{color:var(--bad); font-weight:700; margin-bottom:12px}
.linkrow{display:flex; gap:10px}
.linkrow input{flex:1}
.qr{width:200px; height:200px; background:#fff; border-radius:12px; padding:8px; margin:6px 0 16px}
.row{display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap}
.row.spread{justify-content:space-between; align-items:center}
.field.sm{width:110px; margin-bottom:0}
.field.grow{flex:1; min-width:180px; margin-bottom:0}
.grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:14px; margin-bottom:20px}
.stat{background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px}
.stat b{display:block; font-size:24px; margin-bottom:4px}
.stat span{color:var(--dim); font-size:12.5px}
table{width:100%; border-collapse:collapse; font-size:13px}
th,td{text-align:left; padding:9px 8px; border-bottom:1px solid var(--line); vertical-align:middle}
th{color:var(--dim); font-weight:500; font-size:12px}
td.small{font-size:11.5px; color:var(--dim)}
td a{color:#a9c2ff; text-decoration:none}
.pill{padding:2px 9px; border-radius:99px; font-size:11.5px; border:1px solid var(--line)}
.pill.unused{color:var(--ok); border-color:rgba(56,211,159,.4)}
.pill.used{color:var(--dim)}
.pill.locked{color:#ffce6b; border-color:rgba(255,206,107,.4)}
.pill.disabled{color:var(--bad); border-color:rgba(255,107,129,.4)}
.pill.done{color:var(--ok)}
.pill.failed{color:var(--bad)}
.pill.running,.pill.queued{color:#8fb0ff}
.chip{display:inline-block; margin:6px 6px 0 0; padding:5px 10px; border-radius:99px;
  border:1px solid var(--line); color:var(--dim); font-size:12px; text-decoration:none}
.chip:hover{color:var(--fg); border-color:var(--accent)}
.foot{border-top:1px solid var(--line); color:var(--dim); font-size:12.5px; padding:16px 0; background:rgba(10,15,30,.5)}
