:root{--bg:#08090d;--bg2:#0c0e14;--panel:#10131b;--panel2:#141824;--line:rgba(255,255,255,.08);--line2:rgba(255,255,255,.14);--ink:#e8ebf2;--ink2:#a6b0c3;--ink3:#69738a;--ice:#7ee7ff;--ice2:#3ec5e8;--hot:#ff6b4a;--gold:#e8c47a;--green:#7ee0a8;--mono:"SF Mono","JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;--sans:"PingFang SC","Helvetica Neue",-apple-system,"Segoe UI","Noto Sans SC",sans-serif}*{margin:0;padding:0;box-sizing:border-box}body,html{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}.gridbg{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(1100px 500px at 75% -5%,rgba(62,197,232,.1),transparent 60%),radial-gradient(900px 500px at -10% 40%,rgba(26,111,138,.12),transparent 60%),linear-gradient(rgba(255,255,255,.028) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.028) 1px,transparent 0);background-size:auto,auto,56px 56px,56px 56px}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:26px;padding:0 28px;height:56px;background:rgba(8,9,13,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.logo{font-family:var(--mono);font-weight:800;font-size:15px;color:var(--ice);text-decoration:none;letter-spacing:.08em}.logo span{color:var(--ink2);font-weight:400}.nav-links{display:flex;gap:18px}.nav-links a{color:var(--ink2);text-decoration:none;font-size:13px;padding:4px 2px}.nav-links a:hover{color:var(--ice)}.nav-tag{margin-left:auto;font-family:var(--mono);font-size:9px;letter-spacing:.22em;color:var(--hot);border:1px dashed rgba(255,107,74,.5);border-radius:3px;padding:4px 10px}.wrap{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:34px 24px 90px}h1.title{font-size:26px;font-weight:800;letter-spacing:-.01em}.sub{color:var(--ink2);font-size:13px;margin:8px 0 26px;line-height:1.7}.kicker{font-family:var(--mono);font-size:10px;letter-spacing:.3em;color:var(--ice2);margin-bottom:10px}.panel{background:linear-gradient(160deg,var(--panel),var(--bg2));border:1px solid var(--line);border-radius:6px;padding:22px;margin-bottom:14px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}label{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--ink3);margin:14px 0 6px}input,textarea{width:100%;background:var(--panel2);border:1px solid var(--line2);border-radius:4px;color:var(--ink);padding:10px 12px;font-size:13.5px;font-family:var(--sans);outline:none}input:focus,textarea:focus{border-color:var(--ice2)}button{background:linear-gradient(120deg,rgba(62,197,232,.18),rgba(26,111,138,.14));border:1px solid rgba(126,231,255,.4);color:var(--ice);font-size:13px;font-weight:600;padding:9px 18px;border-radius:4px;cursor:pointer;font-family:var(--sans)}button:hover{background:linear-gradient(120deg,rgba(62,197,232,.3),rgba(26,111,138,.2))}button:disabled{opacity:.4;cursor:not-allowed}button.ghost{background:transparent;border-color:var(--line2);color:var(--ink2)}button.warn{border-color:rgba(255,107,74,.4);color:var(--hot);background:rgba(255,107,74,.06)}.btnrow{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}.card{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:16px 18px;margin-bottom:10px;display:block;text-decoration:none}.card:hover{border-color:rgba(126,231,255,.35)}.card .b{font-size:16px;font-weight:700;color:var(--ink)}.card .m{font-size:10.5px;color:var(--ink3);margin-top:5px;letter-spacing:.06em}.badge,.card .m{font-family:var(--mono)}.badge{display:inline-block;font-size:9.5px;letter-spacing:.16em;padding:3px 9px;border-radius:2px;margin-left:10px;vertical-align:2px}.badge.run{background:rgba(62,197,232,.14);color:var(--ice)}.badge.done{background:rgba(126,224,168,.12);color:var(--green)}.badge.fail{background:rgba(255,107,74,.12);color:var(--hot)}.badge.pend{background:rgba(255,255,255,.06);color:var(--ink3)}.steps{margin:16px 0}.step{display:flex;gap:14px;align-items:flex-start;padding:12px 4px;border-bottom:1px solid var(--line)}.step:last-child{border-bottom:none}.step .n{font-family:var(--mono);font-size:11px;color:var(--ink3);width:26px;flex:none;padding-top:2px}.step .t{font-size:13.5px;font-weight:600}.step .d{font-size:11.5px;color:var(--ink3);margin-top:3px;font-family:var(--mono);word-break:break-all}.dot{width:9px;height:9px;border-radius:50%;flex:none;margin-top:5px}.dot.done{background:var(--green);box-shadow:0 0 8px rgba(126,224,168,.6)}.dot.run{background:var(--ice);box-shadow:0 0 8px rgba(126,231,255,.7);animation:pulse 1.2s infinite}.dot.fail{background:var(--hot)}.dot.pend{background:var(--ink3);opacity:.4}@keyframes pulse{50%{opacity:.35}}.err{margin-top:8px;font-size:11.5px;color:var(--hot);font-family:var(--mono);background:rgba(255,107,74,.06);border:1px solid rgba(255,107,74,.25);border-radius:3px;padding:8px 10px}.ok{color:var(--green)}.warn{color:var(--gold)}.bad{color:var(--hot)}.mono{font-family:var(--mono)}.hint{font-size:11.5px;color:var(--ink3);line-height:1.8;margin-top:8px}a.link{color:var(--ice);text-decoration:none}.preview{width:100%;height:520px;border:1px solid var(--line2);border-radius:6px;background:#000;margin-top:10px}