:root{--bg: #0b0e13;--bg-panel: #121722;--bg-elevated: #1a2130;--border: #232c3d;--text: #d5dbe6;--text-dim: #7f8a9e;--accent: #4da3ff;--accent-dim: #244a73;--green: #3ecf8e;--amber: #f5b83d;--red: #f36c6c;--mono: "SFMono-Regular", ui-monospace, "Cascadia Mono", Menlo, monospace;--sans: "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.layout{display:flex;min-height:100vh}.sidebar{width:210px;flex-shrink:0;background:var(--bg-panel);border-right:1px solid var(--border);padding:16px 0;display:flex;flex-direction:column}.sidebar .brand{font-family:var(--mono);font-weight:700;font-size:16px;color:var(--accent);padding:0 16px 16px;border-bottom:1px solid var(--border);letter-spacing:.5px}.sidebar nav{display:flex;flex-direction:column;margin-top:8px}.sidebar nav a{padding:9px 16px;color:var(--text-dim);font-size:13px}.sidebar nav a.active{color:var(--text);background:var(--bg-elevated);border-left:2px solid var(--accent)}.sidebar nav a:hover{color:var(--text);text-decoration:none}.sidebar .foot{margin-top:auto;padding:12px 16px;font-size:11px;color:var(--text-dim);font-family:var(--mono)}.main{flex:1;padding:24px 28px;max-width:1280px}h1{font-size:20px;margin:0 0 16px;font-weight:600}h2{font-size:15px;margin:24px 0 10px;font-weight:600;color:var(--text)}h3{font-size:13px;margin:14px 0 8px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px}.banner{background:var(--accent-dim);border:1px solid var(--accent);color:var(--text);padding:8px 14px;border-radius:6px;font-size:12.5px;margin-bottom:16px}.grid{display:grid;gap:14px}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px}.card .stat{font-size:26px;font-weight:700;font-family:var(--mono)}.card .label{color:var(--text-dim);font-size:12px;text-transform:uppercase;letter-spacing:.5px}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--text-dim);font-weight:500;font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;padding:8px 10px;border-bottom:1px solid var(--border)}td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle}tr:hover td{background:var(--bg-elevated)}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-family:var(--mono);border:1px solid var(--border);color:var(--text-dim);white-space:nowrap}.badge.completed,.badge.completed_with_warnings,.badge.ok{color:var(--green);border-color:var(--green)}.badge.completed_with_warnings{color:var(--amber);border-color:var(--amber)}.badge.failed{color:var(--red);border-color:var(--red)}.badge.queued,.badge.draft{color:var(--text-dim)}.badge.running,.badge.validating,.badge.generating_mesh,.badge.blender_import,.badge.uploading,.badge.validation,.badge.downloading_source{color:var(--accent);border-color:var(--accent)}.badge.cancelled{color:var(--text-dim);text-decoration:line-through}button,.btn{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text);padding:7px 14px;border-radius:6px;cursor:pointer;font-size:13px;font-family:var(--sans)}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:#0b0e13;font-weight:600;border-color:var(--accent)}button.danger{border-color:var(--red);color:var(--red)}button:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:7px 10px;border-radius:6px;font-size:13px;width:100%;font-family:var(--sans)}textarea.code,pre.code{font-family:var(--mono);font-size:12px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}label{display:block;font-size:12px;color:var(--text-dim);margin:10px 0 4px}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center}pre.code{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px;overflow-x:auto;color:var(--text);white-space:pre-wrap;word-break:break-word}.progress{background:var(--bg);border:1px solid var(--border);border-radius:6px;height:10px;overflow:hidden}.progress>div{background:var(--accent);height:100%;transition:width .4s}.timeline{list-style:none;padding:0;margin:0}.timeline li{display:flex;gap:10px;padding:6px 0;border-bottom:1px dashed var(--border);font-family:var(--mono);font-size:12px}.timeline .t-status{width:90px;flex-shrink:0}.dropzone{border:1.5px dashed var(--border);border-radius:8px;padding:22px;text-align:center;color:var(--text-dim);cursor:pointer}.dropzone.active{border-color:var(--accent);color:var(--accent)}.viewer-shell{background:#05070a;border:1px solid var(--border);border-radius:8px;overflow:hidden;position:relative}.viewer-hud{position:absolute;top:10px;left:10px;z-index:5;background:#0a0e14d9;border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-family:var(--mono);font-size:11.5px;color:var(--text-dim);line-height:1.7}.viewer-controls{position:absolute;top:10px;right:10px;z-index:5;display:flex;flex-direction:column;gap:6px}.viewer-controls button{font-size:11.5px;padding:5px 10px}.viewer-controls button.on{border-color:var(--accent);color:var(--accent)}.muted{color:var(--text-dim)}.mono{font-family:var(--mono)}.small{font-size:12px}.mt{margin-top:14px}.error-text{color:var(--red);font-size:12.5px}.warn-text{color:var(--amber);font-size:12.5px}
