:root{--bg0: #0b1210;--bg1: #121c18;--panel: rgba(22, 36, 30, .88);--line: rgba(120, 160, 140, .18);--text: #e8f0eb;--muted: #8aa396;--accent: #2f9e7a;--accent-soft: rgba(47, 158, 122, .16);--warn: #d4a24c;--err: #e07070;--ok: #5ecf9a;--shadow: 0 24px 60px rgba(0, 0, 0, .45);--radius: 14px}*{box-sizing:border-box}body{margin:0;color:var(--text);font-family:DM Sans,sans-serif;background:radial-gradient(1200px 700px at 12% -10%,rgba(47,158,122,.18),transparent 55%),linear-gradient(160deg,var(--bg0),var(--bg1) 55%,#0e1714);min-height:100vh}.shell{max-width:1180px;margin:0 auto;padding:1.5rem 1.15rem 2.5rem;display:grid;gap:1rem}.brand h1{margin:0;font-size:clamp(1.6rem,3vw,2.2rem);letter-spacing:-.03em}.brand h1 span{color:var(--accent)}.brand p{margin:.35rem 0 0;color:var(--muted);max-width:46rem}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.form-panel{padding:1.1rem 1.2rem;display:grid;gap:.9rem}.fields{display:grid;grid-template-columns:1fr 1.4fr;gap:.75rem}@media (max-width: 780px){.fields{grid-template-columns:1fr}}label{display:grid;gap:.35rem;font-size:.75rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600}input{width:100%;border:1px solid var(--line);background:#080e0ca6;color:var(--text);border-radius:10px;padding:.72rem .85rem;font:500 .95rem/1.2 DM Sans,sans-serif;outline:none}input:focus{border-color:#2f9e7aa6;box-shadow:0 0 0 3px var(--accent-soft)}.actions{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center}button{border:0;border-radius:10px;padding:.72rem 1.1rem;font:600 .92rem/1 DM Sans,sans-serif;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.btn-run{background:linear-gradient(180deg,#3bb589,var(--accent));color:#04140e}.btn-stop{background:#e0707029;color:#ffb4b4;border:1px solid rgba(224,112,112,.35)}.btn-ghost{background:#ffffff0f;color:var(--text);border:1px solid var(--line)}.status-pill{margin-left:auto;font-size:.82rem;color:var(--muted);display:inline-flex;gap:.4rem;align-items:center}.dot{width:8px;height:8px;border-radius:50%;background:#556}.dot.on{background:var(--ok);box-shadow:0 0 0 4px #5ecf9a2e}.screen-wrap{padding:.85rem}.screen-head{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.55rem;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.screen-img{width:100%;aspect-ratio:1280 / 800;height:auto;max-height:560px;object-fit:fill;background:#000;border-radius:10px;cursor:crosshair;border:1px solid var(--line);display:block;outline:none}.screen-img.armed{border-color:#2f9e7a8c;box-shadow:0 0 0 2px #2f9e7a33}.screen-img:focus{border-color:#2f9e7a8c}.screen-url{color:var(--muted);font-size:.78rem;margin-top:.4rem;word-break:break-all}.layout{display:grid;grid-template-columns:1.45fr .95fr;gap:1rem}@media (max-width: 960px){.layout{grid-template-columns:1fr}}.log-head{display:flex;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--line);color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.log{margin:0;height:min(42vh,420px);overflow:auto;padding:.9rem 1rem;font:400 .78rem/1.5 IBM Plex Mono,monospace;white-space:pre-wrap;background:#060a098c}.l-info{color:#c5d6cc}.l-ok{color:var(--ok)}.l-warn{color:var(--warn)}.l-error{color:var(--err)}.stats{padding:1rem;display:grid;gap:.75rem}.stats h2{margin:0;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.stat{border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem;background:#080e0c66}.stat .k{font-size:.7rem;color:var(--muted);text-transform:uppercase}.stat .v{margin-top:.15rem;font-size:1.15rem;font-weight:700}.list-block h3{margin:.3rem 0 .4rem;font-size:.75rem;text-transform:uppercase;color:var(--muted);letter-spacing:.04em}.list{max-height:150px;overflow:auto;display:grid;gap:.4rem;font-size:.8rem}.list-item{border-left:2px solid rgba(47,158,122,.45);padding:.3rem .5rem;background:#080e0c59;border-radius:0 8px 8px 0}.list-item.err{border-left-color:var(--err)}.list-item .t{color:var(--muted);font-size:.72rem}.empty{color:var(--muted);font-size:.85rem}
