:root{--bg:#0a0a0a;--fg:#ededed;--muted:#a1a1aa;--accent:#22d3ee;--border:#27272a;--danger:#ef4444;--ok:#10b981}*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;overflow-x:hidden;background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}main{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem}.card{width:100%;max-width:520px;background:#111;border:1px solid var(--border);border-radius:12px;padding:2rem;box-shadow:0 1px 40px rgba(0,0,0,.4)}h1{font-size:1.75rem;font-weight:700;margin-bottom:.25rem;letter-spacing:-.02em}.subtitle{font-size:.9rem;margin-bottom:1.5rem}.subtitle,label{color:var(--muted)}label{display:block;font-size:.8rem;font-weight:600;margin:1rem 0 .4rem;text-transform:uppercase;letter-spacing:.05em}input,textarea{width:100%;padding:.75rem 1rem;background:#0a0a0a;border:1px solid var(--border);border-radius:8px;color:var(--fg);font-size:1rem;font-family:inherit}input:focus,textarea:focus{outline:none;border-color:var(--accent)}textarea{min-height:80px;resize:vertical}button{width:100%;margin-top:1.5rem;padding:.85rem 1rem;background:var(--accent);color:#0a0a0a;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .15s}button:hover{opacity:.9}button:disabled{opacity:.5;cursor:not-allowed}.status{margin-top:1.5rem;padding:1rem;background:#0a0a0a;border:1px solid var(--border);border-radius:8px;font-size:.9rem}.status-running{color:var(--accent)}.status-done{color:var(--ok)}.status-error{color:var(--danger)}.progress-bar{width:100%;height:8px;background:#000;border:1px solid var(--border);border-radius:4px;overflow:hidden;margin:.9rem 0 .5rem}.progress-bar-fill{height:100%;background:var(--accent);transition:width .9s linear;box-shadow:0 0 12px rgba(34,211,238,.4)}.progress-meta{display:flex;justify-content:space-between;font-size:.72rem;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-bottom:.5rem}.footer{margin-top:2rem;font-size:.75rem;color:var(--muted);text-align:center}.report-main{min-height:100vh;padding:2rem 1rem;display:flex;justify-content:center}.report-wrap{width:100%;max-width:860px;background:#111;border:1px solid var(--border);border-radius:12px;padding:2rem 2.5rem;box-shadow:0 1px 40px rgba(0,0,0,.4)}.report-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:1rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.report-header h1{margin:0;font-size:1.4rem}.report-jobid{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem}.btn-secondary{width:auto;margin:0;padding:.5rem 1rem;background:transparent;border:1px solid var(--border);color:var(--fg);font-size:.85rem}.btn-secondary:hover{border-color:var(--accent);color:var(--accent);opacity:1}.report{color:var(--fg);font-size:.93rem;line-height:1.65;overflow-wrap:break-word}.report h1{font-size:1.6rem;margin:1.5rem 0 .75rem;letter-spacing:-.01em;color:var(--fg)}.report h2{font-size:1.25rem;margin:1.8rem 0 .6rem;padding-bottom:.35rem;border-bottom:1px solid var(--border);color:var(--accent)}.report h3{font-size:1.05rem;margin:1.3rem 0 .5rem;color:var(--fg)}.report h4{font-size:.95rem;margin:1.1rem 0 .4rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.report p{margin:.6rem 0}.report ol,.report ul{margin:.5rem 0 .5rem 1.2rem}.report li{margin:.25rem 0}.report strong{color:var(--fg);font-weight:700}.report em{color:var(--accent);font-style:normal}.report a{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:rgba(34,211,238,.35);text-decoration-color:rgba(34,211,238,.35)}.report a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.report code{background:#0a0a0a;border:1px solid var(--border);padding:.1rem .4rem;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;color:var(--accent)}.report pre{background:#0a0a0a;border:1px solid var(--border);padding:.9rem 1rem;border-radius:6px;overflow-x:auto;margin:.75rem 0}.report pre code{background:transparent;border:none;padding:0;color:var(--fg)}.report blockquote{margin:.75rem 0;padding:.6rem 1rem;border-left:3px solid var(--accent);background:rgba(34,211,238,.05);color:var(--muted)}.report hr{border:none;border-top:1px solid var(--border);margin:1.75rem 0}.report table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.85rem}.report td,.report th{text-align:left;padding:.5rem .75rem;border:1px solid var(--border);vertical-align:top}.report th{background:#0a0a0a;color:var(--muted);font-weight:600;text-transform:uppercase;font-size:.7rem;letter-spacing:.05em}.report tr:nth-child(2n) td{background:hsla(0,0%,100%,.015)}.report img{display:block;max-width:100%;height:auto;margin:1rem auto;border:1px solid var(--border);border-radius:8px;background:#0a0a0a}.visuals-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem;margin:1rem 0}.visuals-tile{display:flex;flex-direction:column;gap:.35rem}.visuals-label{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.visuals-frame{aspect-ratio:4/3}.visuals-frame,.visuals-image{width:100%;border:1px solid var(--border);border-radius:8px;background:#0a0a0a;display:block}.visuals-image{max-height:560px;object-fit:contain}.visuals-tile-wide{grid-column:1/-1}.visuals-placeholder{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.85rem;font-style:italic}.visuals-links{text-align:center;font-size:.85rem;color:var(--muted);margin:.5rem 0 1.5rem}@media (max-width:700px){.visuals-grid{grid-template-columns:1fr;gap:.75rem}main{padding:1rem .75rem}.card{padding:1.25rem;border-radius:10px}h1{font-size:1.4rem}.report-main{padding:1rem .5rem}.report-wrap{padding:1.25rem 1rem;border-radius:10px}.report-header{flex-direction:column;align-items:flex-start;gap:.75rem}.report-header h1{font-size:1.2rem}.btn-secondary{width:100%}.report{font-size:.9rem}.report h1{font-size:1.35rem}.report h2{font-size:1.1rem;margin:1.4rem 0 .5rem}.report h3{font-size:.98rem}.report h4{font-size:.85rem}.report table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}.report td,.report th{padding:.4rem .6rem}.visuals-image{max-height:420px}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.dash-wrap{width:100%;max-width:1100px;background:#111;border:1px solid var(--border);border-radius:12px;padding:2rem 2.5rem;box-shadow:0 1px 40px rgba(0,0,0,.4)}.dash-header{justify-content:space-between;align-items:center;padding-bottom:1rem;border-bottom:1px solid var(--border)}.dash-header,.dash-stats{display:flex;margin-bottom:1.5rem}.dash-stats{gap:2rem}.stat{text-align:center}.stat-num{font-size:2rem;font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.stat-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.dash-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.dash-table{width:100%;border-collapse:collapse;font-size:.88rem}.dash-table th{text-align:left;background:#0a0a0a;color:var(--muted);font-weight:600;text-transform:uppercase;font-size:.7rem;letter-spacing:.05em}.dash-table td,.dash-table th{padding:.6rem .75rem;border-bottom:1px solid var(--border)}.dash-table td{vertical-align:middle}.row-running{background:rgba(34,211,238,.03)}.col-num{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;width:40px}.col-status{white-space:nowrap;font-weight:600;font-size:.82rem}.col-address{max-width:320px}.col-id code{background:#0a0a0a;border:1px solid var(--border);padding:.15rem .4rem;border-radius:4px;font-size:.78rem;color:var(--muted)}.col-time{color:var(--muted);font-size:.82rem;white-space:nowrap}.dash-link{color:var(--accent);font-weight:600;font-size:.85rem}.dash-link:hover{text-decoration:underline}.dash-muted{color:var(--muted);font-size:.82rem;font-style:italic}@media (max-width:700px){.dash-wrap{padding:1.25rem 1rem}.dash-stats{gap:1rem}.stat-num{font-size:1.5rem}.dash-header{flex-direction:column;align-items:flex-start;gap:.75rem}}