:root{--bg: #12151a;--surface: #1a1f26;--surface-raised: #20262e;--grid-line: #262d36;--border: #2c333c;--text: #e8ecef;--text-muted: #7c8590;--accent-active: #ff7a33;--accent-done: #4fd8c4;--accent-error: #ff5c5c;--font-display: "Space Grotesk", sans-serif;--font-body: "Inter", sans-serif;--font-mono: "JetBrains Mono", monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:linear-gradient(var(--grid-line) 1px,transparent 1px) 0 0 / 32px 32px,linear-gradient(90deg,var(--grid-line) 1px,transparent 1px) 0 0 / 32px 32px,var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased}button{font-family:inherit}a{color:var(--accent-done)}.page{max-width:1100px;margin:0 auto;padding:32px 24px 80px}.topbar{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:28px;flex-wrap:wrap;gap:12px}.wordmark{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.02em}.wordmark .eyebrow{display:block;font-family:var(--font-mono);font-size:11px;font-weight:400;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;margin-bottom:4px}.ops-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:18px 20px;margin-bottom:24px}.ops-metrics{display:flex;flex-wrap:wrap;gap:24px}.metric{display:flex;flex-direction:column;gap:3px}.metric-value{font-family:var(--font-mono);font-size:18px;font-weight:500}.metric-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.metric-active .metric-value{color:var(--accent-active)}.metric-error .metric-value{color:var(--accent-error)}.alert-feed{margin-top:16px;border-top:1px solid var(--border);padding-top:12px;display:flex;flex-direction:column;gap:8px}.alert-feed-header{display:flex;align-items:center;justify-content:space-between}.alert-feed-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.alert-row{display:grid;grid-template-columns:70px 1fr auto auto;align-items:center;gap:12px;font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}.alert-level{font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:100px;border:1px solid var(--border);text-align:center}.alert-critical .alert-level,.alert-error .alert-level{color:var(--accent-error);border-color:var(--accent-error)}.alert-warning .alert-level{color:var(--accent-active);border-color:var(--accent-active)}.alert-message{color:var(--text);overflow-wrap:anywhere}.alert-time{white-space:nowrap}.orphan-banner{margin-top:14px;padding:10px 12px;border:1px solid var(--accent-error);border-radius:6px;color:var(--accent-error);font-family:var(--font-mono);font-size:12px;background:#ff5c5c14}.fleet-list{margin-top:16px;border-top:1px solid var(--border);padding-top:12px;display:flex;flex-direction:column;gap:8px}.fleet-row{display:grid;grid-template-columns:60px 1fr 90px 1fr auto;align-items:center;gap:12px;font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}.fleet-id{color:var(--text)}.upload-zone{border:1px dashed var(--border);border-radius:10px;background:var(--surface);padding:28px;text-align:center;cursor:pointer;transition:border-color .15s ease,background .15s ease;margin-bottom:36px}.upload-zone:hover,.upload-zone.dragging{border-color:var(--accent-active);background:var(--surface-raised)}.upload-zone h2{font-family:var(--font-display);font-size:16px;margin:0 0 6px}.upload-zone p{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);margin:0}.upload-zone input[type=file]{display:none}.size-control{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-family:var(--font-mono);font-size:12px;color:var(--text-muted);cursor:default}.size-control input{width:64px;background:var(--surface-raised);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:var(--font-mono);font-size:13px;padding:5px 8px;text-align:center}.job-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.empty-state{font-family:var(--font-mono);color:var(--text-muted);font-size:13px;padding:40px 0;text-align:center;border:1px dashed var(--border);border-radius:10px}.job-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;position:relative}.job-card .viewport{height:180px;background:var(--surface-raised);position:relative;overflow:hidden}.job-card .viewport img,.job-card .viewport model-viewer{width:100%;height:100%;object-fit:cover}.job-card .scanline{position:absolute;left:0;right:0;height:2px;background:var(--accent-active);box-shadow:0 0 8px 1px var(--accent-active);animation:sweep 1.8s ease-in-out infinite}@keyframes sweep{0%{top:0}50%{top:calc(100% - 2px)}to{top:0}}@media (prefers-reduced-motion: reduce){.scanline{animation:none;top:50%}}.job-card .body{padding:14px 16px 16px}.job-card .row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.job-card .readout{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);display:flex;flex-direction:column;gap:2px;margin-top:10px}.job-card .readout span b{color:var(--text);font-weight:500}.status-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:100px;border:1px solid var(--border);color:var(--text-muted)}.status-badge.active{color:var(--accent-active);border-color:var(--accent-active)}.status-badge.done{color:var(--accent-done);border-color:var(--accent-done)}.status-badge.failed{color:var(--accent-error);border-color:var(--accent-error)}.btn{font-family:var(--font-mono);font-size:12px;background:transparent;border:1px solid var(--border);color:var(--text);padding:7px 12px;border-radius:6px;cursor:pointer;transition:border-color .15s ease,color .15s ease}.btn:hover{border-color:var(--accent-done);color:var(--accent-done)}.btn.danger:hover{border-color:var(--accent-error);color:var(--accent-error)}
