:root{--bg:#f5f6fa;--card:#fff;--ink:#1c2030;--mut:#6b7285;--line:#e2e5ee;--pri:#4f46e5;--pri2:#4338ca;--ok:#15803d;--warn:#b45309;--bad:#b91c1c}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
header{background:#fff;border-bottom:1px solid var(--line);padding:12px 20px;display:flex;gap:16px;align-items:center;position:sticky;top:0;z-index:5}
header .logo{font-weight:700;font-size:17px;cursor:pointer;display:flex;align-items:center;gap:8px}
header .logo i{width:24px;height:24px;border-radius:7px;background:var(--pri);display:inline-block}
header nav{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
main{max-width:1040px;margin:0 auto;padding:22px 16px 60px}
h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:0 0 10px}
.sub{color:var(--mut);margin:0 0 18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:16px}
button,.btn{font:inherit;border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 14px;cursor:pointer;color:var(--ink);text-decoration:none;display:inline-block}
button:hover,.btn:hover{background:#f0f1f7}
button.pri{background:var(--pri);border-color:var(--pri);color:#fff}button.pri:hover{background:var(--pri2)}
button.bad{color:var(--bad)}button:disabled{opacity:.5;cursor:default}
button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--pri);outline-offset:2px}
label{display:block;font-weight:600;margin:12px 0 4px}
input,textarea,select{font:inherit;width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}
textarea{min-height:320px;resize:vertical;font-family:ui-monospace,Consolas,monospace;font-size:13px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.site{cursor:pointer;margin:0}.site:hover{border-color:var(--pri)}
.site h3{margin:0 0 4px;font-size:16px}.mut{color:var(--mut);font-size:13px}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;background:#eceefd;color:var(--pri2)}
.badge.live{background:#dcfce7;color:var(--ok)}.badge.hosted{background:#fef3c7;color:var(--warn)}
.badge.error,.badge.draft{background:#fee2e2;color:var(--bad)}.badge.running{background:#e0f2fe;color:#0369a1}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);font-size:14px}
code{background:#eef0f6;padding:1px 6px;border-radius:5px;font-size:13px}
.err{color:var(--bad);margin:8px 0}.ok{color:var(--ok)}
.msg{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:10px 12px;margin:10px 0;font-size:14px}
.steps{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 14px}
.step{padding:4px 11px;border-radius:99px;background:#eceef5;color:var(--mut);font-size:13px}.step.on{background:var(--pri);color:#fff}.step.done{background:#dcfce7;color:var(--ok)}
.login{max-width:380px;margin:12vh auto}
.log{max-height:220px;overflow:auto;font-size:13px;color:var(--mut)}
.bar{height:6px;background:#e5e7f0;border-radius:4px;overflow:hidden;margin:10px 0}.bar i{display:block;height:100%;width:40%;background:var(--pri);animation:sl 1.4s infinite ease-in-out}
@keyframes sl{0%{margin-left:-40%}100%{margin-left:100%}}
@media(prefers-reduced-motion:reduce){.bar i{animation:none;width:100%}}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);max-width:min(560px,92vw);padding:12px 18px;border-radius:10px;background:#1c2030;color:#fff;font-size:14px;opacity:0;pointer-events:none;transition:.2s;z-index:50;box-shadow:0 8px 28px rgba(0,0,0,.25)}
#toast.show{opacity:1;transform:translate(-50%,0)}#toast.bad{background:#b91c1c}#toast.ok{background:#15803d}
a.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}
