:root{--bg:#f5f7fb;--card:#fff;--text:#172033;--muted:#5d6779;--border:#dde3ee;--primary:#3550e8;--primary-dark:#2439b8;--pass:#138a4b;--pass-bg:#e3f6eb;--fail:#c62d2d;--fail-bg:#fde8e8;--idle-bg:#eceff5}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}.page{max-width:1100px;margin:0 auto;padding:32px 20px 64px}.hero{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.hero h1{color:var(--primary-dark);margin:0;font-size:2.2rem}.hero p{color:var(--muted);margin:4px 0 0}.banner{background:var(--fail-bg);color:var(--fail);border:1px solid #f5c2c2;border-radius:10px;padding:12px 16px}.summary{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.summary div{background:var(--card);border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:10px 16px}.summary strong{color:var(--text);font-size:1.2rem}.summary .pass strong{color:var(--pass)}.summary .fail strong{color:var(--fail)}.layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:24px;display:grid}@media (max-width:820px){.layout{grid-template-columns:1fr}.layout aside{order:-1}}.tests{gap:16px;display:grid}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px}.card h2{margin:0 0 4px;font-size:1.1rem}.empty p,.hint,.muted,.expect,.optional{color:var(--muted)}.hint{margin:0 0 16px;font-size:.9rem}.test-head{justify-content:space-between;gap:12px;display:flex}.target{word-break:break-all;margin:0}.method{background:var(--idle-bg);border-radius:4px;padding:1px 6px;font-size:.75rem;font-weight:700}.expect{margin:4px 0 0;font-size:.9rem}.badge{white-space:nowrap;border-radius:999px;align-self:flex-start;padding:4px 12px;font-size:.85rem;font-weight:600}.badge.pass{background:var(--pass-bg);color:var(--pass)}.badge.fail{background:var(--fail-bg);color:var(--fail)}.badge.idle{background:var(--idle-bg);color:var(--muted)}.last-run{margin:12px 0 0}.test-actions{gap:8px;margin-top:14px;display:flex}details{margin-top:12px;font-size:.9rem}summary{cursor:pointer;color:var(--primary)}.history{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.dot{border-radius:50%;width:10px;height:10px;margin-right:8px;display:inline-block}.dot.pass{background:var(--pass)}.dot.fail{background:var(--fail)}.new-test{gap:12px;display:grid;position:sticky;top:20px}.new-test .hint{margin:0}label{gap:4px;font-size:.9rem;font-weight:600;display:grid}.optional{font-weight:400}input,select{font:inherit;border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;padding:8px 10px;font-weight:400}input:focus,select:focus{outline:2px solid var(--primary);outline-offset:1px}.row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.button{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:8px;padding:8px 16px;font-weight:600}.button:disabled{opacity:.6;cursor:progress}.button.primary{background:var(--primary);color:#fff}.button.primary:hover:not(:disabled){background:var(--primary-dark)}.button.secondary{border-color:var(--border);color:var(--text);background:#fff}.button.danger{color:var(--fail);background:#fff;border-color:#f0c4c4}.action-form{justify-items:end;gap:4px;display:grid}.test-actions .action-form{justify-items:start}.form-error{color:var(--fail);margin:0;font-size:.85rem}.form-note{color:var(--pass);margin:0;font-size:.85rem}
