:root { --bg:#f4f5f7; --fg:#1d2330; --muted:#6b7385; --line:#dfe2e8; --brand:#3b3bd6; --danger:#c62828; --ok:#1b7f4b; }
* { box-sizing: border-box; }
body { margin:0; font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif; background:var(--bg); color:var(--fg); }
a { color:var(--brand); }
.topbar { display:flex; justify-content:space-between; align-items:center; padding:12px 24px; background:#fff; border-bottom:1px solid var(--line); }
.topbar nav { display:flex; gap:16px; align-items:center; }
.brand { font-weight:700; text-decoration:none; color:var(--fg); }
.container { max-width:1200px; margin:24px auto; padding:0 16px; }
.card { background:#fff; border:1px solid var(--line); border-radius:8px; padding:20px; margin-bottom:20px; }
.narrow { max-width:640px; margin-left:auto; margin-right:auto; }
.head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
h1,h2,h3 { margin:0 0 8px; } h1 { font-size:22px; } h2 { font-size:18px; } h3 { font-size:15px; }
.muted { color:var(--muted); }
.url { word-break:break-all; font-size:13px; }
.stack { display:flex; flex-direction:column; gap:12px; }
.grid-form { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; align-items:end; }
label { display:flex; flex-direction:column; gap:4px; font-weight:600; font-size:13px; }
input { padding:8px 10px; border:1px solid var(--line); border-radius:6px; font:inherit; width:100%; }
button { padding:9px 16px; border:0; border-radius:6px; background:var(--brand); color:#fff; font:inherit; cursor:pointer; }
a.button { display:inline-block; padding:14px 24px; border-radius:6px; background:var(--brand); color:#fff; font-size:1.1em; text-decoration:none; }
button.danger { background:var(--danger); margin-left:8px; }
button.link { background:none; color:var(--brand); padding:0; }
form.inline { display:inline; }
.error { color:var(--danger); }
.alert { padding:10px 14px; border-radius:6px; margin-bottom:16px; }
.alert-ok { background:#e5f5ec; color:var(--ok); }
.alert-closed { background:#fdecea; color:var(--danger); }
.invite { border-color:var(--brand); background:#f0f0ff; }
.invite-code { font-family:ui-monospace,Menlo,Consolas,monospace; font-size:40px; font-weight:700; letter-spacing:4px; margin:8px 0; user-select:all; }
.invite .warning { color:var(--danger); font-weight:600; }
table { width:100%; border-collapse:collapse; }
th,td { text-align:left; padding:8px; border-bottom:1px solid var(--line); }
.badge { display:inline-block; padding:1px 8px; border-radius:10px; font-size:12px; background:#e8eaf0; }
.badge-running { background:#e0ecff; } .badge-finished { background:#e5f5ec; } .badge-stopped { background:#fff3d6; } .badge-failed,.badge-blocked { background:#fdecea; color:var(--danger); }
.badge-area { background:#ece8ff; color:var(--brand); }
.badge-http-4,.badge-http-5 { background:#fdecea; color:var(--danger); }
.counters { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:16px 0 0; }
.counters div { background:var(--bg); border-radius:6px; padding:10px; }
.counters dt { color:var(--muted); font-size:12px; } .counters dd { margin:0; font-size:22px; font-weight:700; }
.report { overflow-x:auto; } .report h1,.report h2,.report h3 { margin-top:16px; }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(420px,1fr)); gap:16px; margin-bottom:20px; }
.page-card { background:#fff; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.thumb { display:block; width:100%; height:220px; object-fit:cover; object-position:top; background:#eee; }
.thumb-empty { display:flex; align-items:center; justify-content:center; color:var(--muted); }
.page-body { padding:12px 14px; }
.functions,.features,.findings { padding-left:18px; margin:6px 0; }
.features li.blocked { color:var(--danger); }
.kind { display:inline-block; min-width:48px; font-size:11px; color:var(--muted); text-transform:uppercase; }
code { background:var(--bg); padding:2px 6px; border-radius:4px; word-break:break-all; }
