:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c0e11;--panel:#12151a;--line:#232a33;--text:#d6dae0;--muted:#7f8894;--ok:#10b981;--warn:#fbbf24;--err:#ef4444;--nav-height:44px}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);margin:0;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}a{color:inherit;text-decoration:none}.app{grid-template-rows:var(--nav-height) 1fr;height:100%;display:grid}.nav{background:var(--panel);border-bottom:1px solid var(--line);white-space:nowrap;align-items:center;gap:4px;padding:0 12px;display:flex;overflow-x:auto}.nav-brand{letter-spacing:.12em;color:var(--muted);text-transform:uppercase;margin-right:14px}.nav-link{color:var(--muted);border-radius:3px;padding:4px 10px}.nav-link:hover,.nav-link.active{color:var(--text);background:#1a1f27}.nav-spacer{flex:1}.nav-user{color:var(--muted);margin-right:10px}.page{padding:16px;overflow-y:auto}.page h1{letter-spacing:.1em;text-transform:uppercase;color:var(--text);margin:0 0 4px;font-size:13px;font-weight:500}.page-hint{color:var(--muted);margin:0 0 16px}.button{font:inherit;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;padding:4px 10px;font-size:11px}.button:hover:not(:disabled){color:var(--text);border-color:#39424e}.button:disabled{opacity:.5;cursor:default}.button.primary{color:var(--ok);border-color:var(--ok)}.field{flex-direction:column;gap:4px;display:flex}.field label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:10px}.input{font:inherit;color:var(--text);background:#1a1a2e;border:1px solid #444;border-radius:3px;padding:6px 8px}.input:focus{border-color:#5a6472;outline:none}.error{color:var(--err);margin:0}.empty{color:var(--muted);margin:0}.login{place-items:center;height:100%;display:grid}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:4px;flex-direction:column;gap:14px;width:280px;padding:24px;display:flex}.login-card h1{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-align:center;margin:0;font-size:12px;font-weight:500}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--line);padding:4px 8px;font-size:10px;font-weight:500}td{border-bottom:1px solid #1b2028;padding:5px 8px}tr:last-child td{border-bottom:none}.num{text-align:right;font-variant-numeric:tabular-nums}.section{margin:0 0 24px}.section h2{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:11px;font-weight:500}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:8px;display:flex}.breadcrumb{color:var(--muted);margin:0 0 4px}.link{color:#93a4b8}.link:hover{color:var(--text);text-decoration:underline}.muted{color:var(--muted)}.warn{color:var(--warn)}.notes{white-space:pre-wrap;color:var(--muted);margin:8px 0 0}code{font:inherit;color:#93a4b8}.card{background:var(--panel);border:1px solid var(--line);border-radius:4px;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:12px;padding:12px;display:flex}.form-row .field{min-width:140px}.field.grow{flex:1;min-width:220px}.form-actions{align-items:center;gap:8px;display:flex}.error.full,.field.full{flex-basis:100%}.button.danger{color:var(--err);border-color:#3a2630}.button.danger:hover:not(:disabled){border-color:var(--err)}textarea.input{resize:vertical;font:inherit}.facts{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px 20px;margin:0 0 12px;display:grid}.facts div{flex-direction:column;gap:1px;display:flex}.facts dt{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:10px}.facts dd{margin:0}.topics{color:var(--muted)}.clamp{text-overflow:ellipsis;white-space:nowrap;max-width:38ch;display:block;overflow:hidden}.tick{width:26px}tr.row-selected td{background:#10b98114}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.toolbar-title{letter-spacing:.06em;min-width:130px}.toolbar-count{color:var(--muted)}.scan{align-items:center;gap:10px;display:flex}.scan-detail{color:var(--muted)}.calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:24px;display:grid}.calendar-label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding:2px 4px;font-size:10px}.calendar-cell{font:inherit;text-align:left;min-height:62px;color:var(--muted);background:var(--panel);border:1px solid var(--line);cursor:default;border-radius:3px;flex-direction:column;gap:4px;padding:6px 7px;display:flex}.calendar-cell.empty-cell{background:0 0;border-color:#0000}.calendar-cell.has-sessions{color:var(--text);cursor:pointer}.calendar-cell.has-sessions:hover{border-color:var(--ok)}.calendar-cell.selected{border-color:var(--ok);box-shadow:inset 0 0 0 1px var(--ok)}.calendar-day{font-variant-numeric:tabular-nums}.calendar-meta{color:var(--text);opacity:.85;font-size:10px}@media (width<=720px){.calendar-cell{min-height:50px}.calendar-meta{display:none}}.pill{letter-spacing:.5px;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);border-radius:3px;padding:2px 7px;font-size:10px}.pill.ok{color:var(--ok);border-color:var(--ok)}.pill.warn{color:var(--warn);border-color:var(--warn)}.pill.err{color:var(--err);border-color:var(--err)}.pill.muted{color:var(--muted)}dd.ok{color:var(--ok)}.progress-bar{border:1px solid var(--line);background:#1a1f27;border-radius:3px;height:6px;margin:4px 0;overflow:hidden}.progress-fill{background:var(--ok);height:100%;transition:width .24s ease-out}.job-error{white-space:pre-wrap;word-break:break-word;background:#1a1014;border:1px solid #3a2630;border-radius:3px;max-height:200px;margin:8px 0 0;padding:8px;overflow-y:auto}.clamp-cell{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.progress-fill.err{background:var(--err)}.button.small{padding:2px 8px;font-size:11px}.mini-bar{vertical-align:middle;border:1px solid var(--line);background:#1a1f27;border-radius:3px;width:90px;height:5px;margin-right:6px;display:inline-block;overflow:hidden}.mini-bar i{background:var(--ok);height:100%;display:block}.last-run{align-items:center;gap:4px;display:inline-flex}.last-run:hover .muted{color:var(--text)}.stages{flex-wrap:wrap;gap:4px;margin:12px 0;padding:0;list-style:none;display:flex}.stages li{border:1px solid var(--line);color:var(--muted);border-radius:3px;padding:3px 8px;font-size:11px}.stages li.done{color:var(--ok);border-color:#1d4b3c}.stages li.done:before{content:"✓ "}.stages li.current{color:var(--text);border-color:var(--ok);background:#0f1f19}.stages li.failed{color:var(--err);border-color:var(--err);background:#221214}.stages li.failed:before{content:"✕ "}.stages li.stopped{color:var(--text);border-color:var(--muted)}.stages li.stopped:before{content:"■ "}.confirm{background:#1a1012;border:1px solid #3a2630;border-radius:3px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 10px;display:flex}.slots{align-items:center;gap:6px;display:flex}.slot{border:1px solid var(--line);border-radius:2px;width:14px;height:14px}.slot.busy{background:var(--ok);border-color:var(--ok)}.process-form{align-items:flex-start;gap:20px}.process-form .field{gap:6px;min-width:240px}.process-form .field label.checkline{color:var(--text);font-size:inherit;letter-spacing:normal;text-transform:none}.process-form .dock-row{gap:10px}.process-form .dock-row .dock-session{min-width:170px;font-size:12px}.picked-tray{border-top:2px solid var(--ok);padding-top:12px}.anchor-pill{margin-left:8px}.trajectory-legend{flex-wrap:wrap;gap:14px;font-size:12px}.field-label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:10px}.hint{color:var(--muted);font-size:11px}.form-actions.full{flex-basis:100%}tr.form-row-inline td{background:#10b98114;padding:0 8px 10px}tr.form-row-inline .card{margin:0}.result{grid-template-columns:minmax(0,3fr) minmax(260px,2fr);align-items:start;gap:16px;display:grid}@media (width<=860px){.result{grid-template-columns:1fr}}.map-frame{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:8px}.map-frame img{max-width:100%;max-height:70vh;image-rendering:pixelated;background:#cdcdcd;margin:0 auto;display:block}.map-caption{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:6px;display:flex}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#161a20}.viewer{background:var(--panel);border:1px solid var(--line);border-radius:3px;margin-top:12px}.viewer-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex}.viewer pre{max-height:420px;margin:0;padding:10px;overflow:auto}.viewer .k{color:#93a4b8}.viewer .s{color:#a7d7a0}.viewer .n{color:#e6c07b}.viewer-empty{color:var(--muted);padding:16px 10px}.map-canvas{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.map-canvas canvas{max-width:100%;image-rendering:pixelated;border:1px solid var(--line);background:#0f1216;border-radius:3px}.log-tail{background:var(--panel);border:1px solid var(--line);border-radius:3px;max-height:320px;padding:8px;overflow-y:auto}.log-line{gap:8px;padding:1px 0;display:flex}.log-line .log-time{color:var(--muted)}.log-line .log-level{width:46px;color:var(--muted);text-transform:uppercase;font-size:10px}.log-line .log-text{word-break:break-word;flex:1}.log-line.warn .log-level{color:var(--warn)}.log-line.error .log-level,.log-line.error .log-text{color:var(--err)}.map-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.map-card{background:var(--panel);border:1px solid var(--line);color:inherit;border-radius:4px;flex-direction:column;display:flex;overflow:hidden}.map-card:hover{border-color:#39424e}.map-thumb{border-bottom:1px solid var(--line);background:#0f1216;place-items:center;height:150px;display:grid;overflow:hidden}.map-thumb img{object-fit:contain;max-width:100%;max-height:100%;image-rendering:pixelated}.map-preview-switch{width:100%;height:100%;position:relative}.map-preview-switch canvas{width:100%;height:100%;display:block}.preview-arrow{width:22px;height:30px;font:inherit;color:var(--text);border:1px solid var(--line);cursor:pointer;opacity:.55;background:#0c0e11b8;border-radius:3px;padding:0;font-size:18px;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.preview-arrow.left{left:6px}.preview-arrow.right{right:6px}.map-card:hover .preview-arrow{opacity:1}.preview-arrow:hover{border-color:#39424e}.preview-caption{color:var(--muted);white-space:nowrap;pointer-events:none;background:#0c0e11b8;border-radius:3px;padding:1px 7px;font-size:10px;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.map-card-body{flex-direction:column;gap:8px;padding:10px 12px 12px;display:flex}.map-card-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.map-card-desc{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.card-facts{grid-template-columns:repeat(2,1fr);gap:4px 12px;margin:0;display:grid}.card-facts div{justify-content:space-between;gap:8px;display:flex}.card-facts dt{color:var(--muted)}.card-facts dd{font-variant-numeric:tabular-nums;margin:0}.map-card-robots{flex-wrap:wrap;gap:4px;display:flex}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip{font:inherit;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;padding:2px 8px;font-size:11px}.chip:hover:not(:disabled){color:var(--text);border-color:#39424e}.chip.on{color:var(--ok);border-color:var(--ok)}.map-preview{max-width:100%;image-rendering:pixelated;border:1px solid var(--line);background:#0f1216;border-radius:3px}a.button{text-decoration:none;display:inline-block}.studio{grid-template-rows:auto 1fr;height:100%;min-height:0;display:grid;overflow:hidden}.studio-bar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;display:flex}.studio-tools{gap:4px;display:flex}.studio-inflation{color:var(--muted);align-items:center;gap:6px;display:inline-flex}.studio-inflation .input{width:76px}.studio-error{margin:6px 12px}.studio-body{grid-template-columns:1fr 280px;min-height:0;display:grid}.studio-canvas{touch-action:none;background:#0f1216;min-height:0;position:relative;overflow:hidden}.studio-canvas canvas{display:block}.studio-readout,.studio-zoom{border:1px solid var(--line);background:#0c0e11d1;border-radius:3px;padding:4px 8px;position:absolute}.studio-readout{font-variant-numeric:tabular-nums;bottom:10px;left:10px}.studio-zoom{gap:4px;padding:4px;display:flex;bottom:10px;right:10px}.studio-panel{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;gap:10px;padding:12px;display:flex;overflow-y:auto}.studio-panel h2{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0;font-size:11px;font-weight:500}.annotation-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.annotation-list li{cursor:pointer;border:1px solid #0000;border-radius:3px;align-items:center;gap:7px;padding:4px 6px;display:flex}.annotation-list li:hover{background:#1a1f27}.annotation-list li.selected{border-color:var(--line);background:#1a1f27}.annotation-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.swatch{border-radius:2px;flex:none;width:9px;height:9px}.annotation-editor{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.checkline{color:var(--muted);align-items:center;gap:7px;display:flex}.layer-list,.layer-legend{flex-direction:column;gap:3px;margin:0;padding:0;list-style:none;display:flex}.layer-list .checkline{color:var(--text);cursor:pointer}.layer-title{flex:1}.layer-legend{margin:2px 0 4px 22px}.layer-legend li{align-items:center;gap:7px;font-size:12px;display:flex}.annotation-list li.hidden-layer{opacity:.45}.metadata-editor{flex-direction:column;gap:8px;display:flex}.metadata-row{grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto;gap:4px;margin-bottom:4px;display:grid}.metadata-row .input{min-width:0}.metadata-issue{color:var(--warn);grid-column:1/-1;font-size:11px}.metadata-add{align-self:flex-start}.checks{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.checks-clear{color:var(--ok);margin:0}.check-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.check-list li{grid-template-columns:auto 1fr;align-items:start;gap:3px 8px;font-size:12px;display:grid}.check-list .check-message{line-height:1.4}.link-button{font:inherit;color:var(--ok);cursor:pointer;background:0 0;border:none;grid-column:2;justify-self:start;padding:0;font-size:11px;text-decoration:underline}@media (width<=860px){.studio-body{grid-template-rows:1fr auto;grid-template-columns:1fr}.studio-panel{border-left:none;border-top:1px solid var(--line);max-height:45%}}.secret-card{border-color:var(--warn)}.secret{color:var(--text);border:1px solid var(--line);-webkit-user-select:all;user-select:all;word-break:break-all;white-space:pre-wrap;background:#0f1216;border-radius:3px;padding:10px 12px;display:block}.warn.full,.page-hint.full{flex-basis:100%;margin:0}.param-drawer{top:var(--nav-height);background:var(--panel);border-left:1px solid var(--line);z-index:20;flex-direction:column;gap:10px;width:min(460px,100vw);padding:12px 16px 24px;display:flex;position:fixed;bottom:0;right:0;overflow-y:auto;box-shadow:-8px 0 24px #0006}.param-drawer h2{letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:12px;font-weight:500}.param-drawer-head{align-items:center;gap:10px;display:flex}.param-drawer-head h2{flex:1}.param-summary{margin:-4px 0 0}.param-tools{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.param-tools .input{flex:1;min-width:140px}.param-presets{border-bottom:1px solid var(--line);flex-direction:column;gap:6px;padding-bottom:8px;display:flex}.param-group{border-bottom:1px solid var(--line);padding-bottom:6px}.param-group-head{align-items:center;gap:8px;display:flex}.param-group-toggle{text-align:left;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;flex:1;padding:6px 0}.param-caret{width:14px;color:var(--muted);display:inline-block}.param-rows{flex-direction:column;gap:8px;padding:4px 0 6px 14px;display:flex}.param-row{border-left:2px solid #0000;grid-template-columns:1fr auto;gap:2px 10px;padding:4px 6px;display:grid}.param-row.changed{border-left-color:var(--warn);background:#fbbf240d}.param-name{flex-direction:column;min-width:0;display:flex}.param-key{color:var(--muted);overflow-wrap:anywhere;font-size:10px}.param-value{align-items:center;gap:6px;display:flex}.param-input{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.param-input .input{text-align:right;width:110px}.param-input .error{text-align:right;flex-basis:100%;margin:0;font-size:10px}.param-help{color:#9aa3ae;grid-column:1/-1;margin:0;font-size:11px}.input.invalid{border-color:var(--err)}.hint.changed{color:var(--warn)}.debug-viewer{flex-direction:column;gap:6px;display:flex}.debug-toolbar{flex-wrap:wrap;align-items:center;gap:6px 14px;display:flex}.debug-toolbar .checkline{color:var(--text)}.debug-toolbar-spacer{flex:1}.button.debug-fit{color:var(--text);border-color:#39424e;padding:6px 18px;font-size:13px}.swatch{border-radius:2px;width:10px;height:10px;display:inline-block}.debug-canvas{border:1px solid var(--line);touch-action:none;cursor:grab;background:#0f1216;border-radius:3px;width:100%}.debug-canvas:active{cursor:grabbing}.debug-canvas.map,.debug-canvas.lidar{height:min(62vh,640px)}.debug-split{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:0 16px;display:grid}.debug-split>.section{min-width:0}.debug-split .section-head{align-items:center;min-height:28px}.debug-split .debug-collapse{padding:0}.debug-split.lidar-closed{grid-template-columns:minmax(0,1fr) auto}@media (width<=1100px){.debug-split,.debug-split.lidar-closed{grid-template-columns:minmax(0,1fr)}}.debug-collapse{flex:0 auto;align-items:center;gap:2px;display:flex}.debug-collapse h2{margin:0}.map-canvas .map-preview-switch{border:1px solid var(--line);background:#0f1216;border-radius:3px;align-self:stretch;height:min(70vh,640px)}.map-canvas .map-preview-switch canvas{border:0;max-height:none}
