:root{--bg:#0b0e14;--panel:#161b26;--panel-2:#10141d;--border:#263041;--text:#e2e8f0;--muted:#8494ab;--accent:#3b82f6;--danger:#ef4444;--ok:#22c55e;--warn:#f59e0b;--accent2:#2ee6a6;--accent2-border:#2ee6a680;--accent2-bg:#2ee6a624;--overlay-bg:#0b0f14d9;--overlay-bg-soft:#0b0f14c7;--sensor-title:#8fd6ff;--overlay-muted:#8a929b;--mono:"SF Mono", "Cascadia Code", "Fira Code", Menlo, Consolas, monospace}:root[data-theme=light]{--bg:#f2f4f8;--panel:#fff;--panel-2:#e9edf3;--border:#ccd5e0;--text:#1c2530;--muted:#5b6b80;--accent:#2563eb;--danger:#dc2626;--ok:#15803d;--warn:#b45309;--accent2:#0a8f66;--accent2-border:#0a8f6680;--accent2-bg:#0a8f661a;--overlay-bg:#ffffffe6;--overlay-bg-soft:#ffffffd9;--sensor-title:#1f6f9e;--overlay-muted:#5b6b80}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;overflow:hidden}h1,h2,h3{margin:0;font-weight:600}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.small{font-size:12px}.pad{padding:8px 12px}.accent{color:var(--accent)}.spacer{flex:1}.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.input{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:4px;outline:none;width:100%;padding:8px 10px;font-size:14px}.input:focus{border-color:var(--accent)}.input-sm{padding:5px 8px;font-size:13px}select.input{appearance:auto}.field-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:10px 0 4px;font-size:11px;display:block}.btn{background:var(--panel);border:1px solid var(--border);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:4px;padding:7px 14px;font-size:13px}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:#2f6fe0}.btn-danger{color:#f87171;border-color:#5a2430}.btn-danger:hover:not(:disabled){border-color:var(--danger)}.btn-sm{padding:4px 10px;font-size:12px}.icon-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:1px 5px;font-size:13px;line-height:1.2}.icon-btn:hover{color:var(--text);background:var(--border)}.icon-btn.danger:hover{color:var(--danger)}.error-box{color:#fca5a5;background:#ef444414;border:1px solid #ef444466;border-radius:4px;margin:10px 0;padding:8px 10px;font-size:13px}.login-wrap{justify-content:center;align-items:center;height:100%;display:flex}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:340px;padding:32px}.login-title{letter-spacing:.02em;text-align:center;font-size:26px}.login-sub{text-align:center;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:4px 0 12px;font-size:12px}.login-buttons{gap:8px;margin-top:18px;display:flex}.login-buttons .btn{flex:1}.page{flex-direction:column;height:100%;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:12px;height:44px;padding:0 12px;display:flex}.app-name{font-size:15px;font-weight:600}.projects-main{width:100%;max-width:1000px;margin:0 auto;padding:28px;overflow-y:auto}.projects-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.inline-form{align-items:center;gap:8px;display:flex}.inline-form .input{width:220px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.project-card{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:16px;transition:border-color .12s}.project-card:hover{border-color:var(--accent)}.project-card-name{margin-bottom:8px;font-size:15px;font-weight:600}.project-card-meta{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.role-chip{border:1px solid var(--border);color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:1px 8px;font-size:11px}.role-owner{border-color:var(--accent);color:var(--accent)}.workspace{grid-template-rows:44px 1fr auto;height:100%;display:grid}.workspace-main{grid-template-columns:280px 1fr 300px;min-height:0;display:grid}.sidebar-left{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;min-height:0;display:flex;overflow-y:auto}.sidebar-right{background:var(--panel);border-left:1px solid var(--border);min-height:0;overflow-y:auto}.panel-header{letter-spacing:.08em;color:var(--muted);border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;padding:8px 12px;font-size:11px;font-weight:600;display:flex}.panel-subheader{letter-spacing:.08em;color:var(--muted);margin:14px 0 6px;font-size:10px;font-weight:600}.newfile-form{border-bottom:1px solid var(--border);padding:6px 10px}.file-tree{padding:4px 0 12px}.dir-row{color:var(--muted);padding:4px 12px 2px;font-size:12px;font-weight:600}.file-row{cursor:pointer;justify-content:space-between;align-items:center;padding:3px 8px 3px 12px;font-size:13px;display:flex}.file-row:hover{background:var(--panel-2)}.file-row-active{background:#3b82f61f}.file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row-actions{flex:none;display:none}.file-row:hover .row-actions{gap:2px;display:inline-flex}.lib-row .row-actions{display:inline-flex}.library-list{padding:4px 0 12px}.lib-section-title{color:var(--muted);letter-spacing:.05em;padding:6px 12px 2px;font-size:11px;font-weight:600}.lib-row{cursor:default}.center-pane{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.tab-strip{background:var(--panel-2);border-bottom:1px solid var(--border);flex:none;display:flex;overflow-x:auto}.tab{color:var(--muted);border-right:1px solid var(--border);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:7px 12px;font-size:13px;display:flex}.tab:hover{color:var(--text)}.tab-active{background:var(--bg);color:var(--text);box-shadow:inset 0 2px 0 var(--accent)}.dirty-dot{background:var(--warn);border-radius:50%;flex:none;width:7px;height:7px}.tab-close{color:var(--muted);border-radius:3px;padding:0 2px}.tab-close:hover{color:var(--text);background:var(--border)}.center-content{flex:1;min-height:0;position:relative}.viewport-holder,.editor-holder{position:absolute;inset:0}.drone-label{background:var(--overlay-bg);border:1px solid var(--border);color:var(--text);white-space:nowrap;border-radius:4px;padding:2px 7px;font-size:11px}.sim-controls{padding:4px 12px 16px}.btn-row{gap:6px;margin-top:10px;display:flex}.btn-row .btn{flex:1;padding-left:4px;padding-right:4px}input[type=range]{width:100%;accent-color:var(--accent)}.sim-live{flex-direction:column;gap:3px;margin-top:10px;font-size:13px;display:flex}.team-legend{flex-direction:column;gap:4px;display:flex}.team-row{align-items:center;gap:7px;font-size:13px;display:flex}.team-dot{border-radius:50%;flex:none;width:10px;height:10px}.team-name{text-overflow:ellipsis;flex:1;overflow:hidden}.learn-btn{width:100%;margin-top:14px}.event-list{flex-direction:column;gap:3px;max-height:220px;font-size:12px;display:flex;overflow-y:auto}.event-row{text-overflow:ellipsis;white-space:nowrap;line-height:1.4;overflow:hidden}.console-panel{background:var(--panel);border-top:1px solid var(--border);flex-direction:column;height:180px;display:flex}.console-panel.collapsed{height:auto}.console-scroll{font-family:var(--mono);flex:1;padding:6px 12px;font-size:12.5px;overflow-y:auto}.console-line{white-space:pre-wrap;word-break:break-word;margin:0 0 2px;font-family:inherit}pre.console-input{color:#93c5fd}.console-info{color:var(--muted)}.console-error{color:#f87171}.console-output{color:var(--text)}.console-input-row{border-top:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:4px 12px;display:flex}.console-prompt{color:var(--accent);font-family:var(--mono)}input.console-input{color:var(--text);font-family:var(--mono);background:0 0;border:none;outline:none;flex:1;padding:4px 0;font-size:12.5px}.toast{background:var(--panel);border:1px solid var(--accent);z-index:100;border-radius:6px;max-width:420px;padding:10px 16px;font-size:13px;position:fixed;bottom:18px;right:18px;box-shadow:0 6px 24px #00000080}:root[data-theme=light] .toast{box-shadow:0 6px 24px #00000026}.toast-error{border-color:var(--danger);color:#fca5a5}.status-chip{font-family:var(--mono);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:11.5px}.status-running{color:var(--ok);border-color:#22c55e80}.status-paused{color:var(--warn);border-color:#f59e0b80}.status-finished{color:var(--accent);border-color:#3b82f680}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px}::-webkit-scrollbar-track{background:0 0}.wm-tree{max-height:260px;font-size:12px;line-height:1.5;overflow-y:auto}.wm-tree summary{cursor:pointer;-webkit-user-select:none;user-select:none}.wm-tree summary:hover{color:var(--accent,#7dd3fc)}.wm-nested{margin-left:14px}.wm-kind{color:#a78bfa;text-transform:uppercase;letter-spacing:.05em;font-size:10px}.wm-attrs{margin-left:24px}.wm-attr{white-space:nowrap;text-overflow:ellipsis;margin-left:14px;overflow:hidden}.viewport-wrap{position:absolute;inset:0}.chase-exit{background:var(--overlay-bg);color:var(--accent2);border:1px solid var(--accent2-border);letter-spacing:.04em;cursor:pointer;border-radius:7px;padding:5px 12px;font-size:12px;font-weight:700;position:absolute;top:12px;left:50%;transform:translate(-50%)}.chase-exit:hover{background:var(--accent2-bg)}.chase-hint{color:var(--overlay-muted);pointer-events:none;font-size:11px;position:absolute;bottom:10px;left:12px}.metrics-empty{padding:16px 12px}.metrics-body{flex-direction:column;gap:12px;padding:10px 12px;display:flex}.metric-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.metric-card{background:var(--bg,#0b0f14);border:1px solid var(--border);border-radius:8px;padding:8px 10px}.metric-label{letter-spacing:.05em;color:var(--muted);text-transform:uppercase;font-size:10px}.metric-value{font-variant-numeric:tabular-nums;margin-top:2px;font-size:20px;font-weight:700}.metric-sub{color:var(--muted);margin-top:2px;font-size:10px}.metric-block{flex-direction:column;gap:4px;display:flex}.metric-bar{background:#ffffff0f;border-radius:4px;height:7px;overflow:hidden}.metric-bar-fill{border-radius:4px;height:100%;transition:width .25s}.param-row{margin-bottom:6px}.wm-details{margin-top:10px}.wm-details>summary{cursor:pointer;border:none;margin-bottom:6px;padding:0}.timeline{background:var(--overlay-bg-soft);border:1px solid var(--border);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:9px;align-items:center;gap:10px;padding:6px 12px;display:flex;position:absolute;bottom:10px;left:12px;right:12px}.timeline-scrub{accent-color:var(--accent2);cursor:pointer;flex:1}.timeline-time{color:var(--sensor-title);text-align:right;min-width:46px;font-size:12px}.btn.live-on{color:var(--accent2);border-color:var(--accent2-border)}.rewind-badge{background:var(--accent2-bg);color:var(--accent2);border:1px solid var(--accent2-border);letter-spacing:.08em;pointer-events:none;border-radius:7px;padding:4px 12px;font-size:12px;font-weight:700;position:absolute;top:12px;left:50%;transform:translate(-50%)}.viewport-tools{gap:6px;display:flex;position:absolute;top:12px;right:12px}.viewport-tools button{background:var(--overlay-bg-soft);color:var(--text);border:1px solid var(--border);cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap;border-radius:7px;padding:5px 11px;font-size:12px}.viewport-tools button:hover{border-color:var(--accent2);color:var(--accent2)}.sensor-pip{pointer-events:none;width:340px;position:absolute;bottom:54px;right:12px}.sensor-tabs{pointer-events:auto;align-items:center;gap:4px;margin-bottom:4px;display:flex}.sensor-name{color:var(--sensor-title);letter-spacing:.06em;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:10px;font-weight:700;overflow:hidden}.sensor-tabs button{background:var(--overlay-bg);color:var(--overlay-muted);border:1px solid var(--border);letter-spacing:.06em;cursor:pointer;border-radius:5px;padding:2px 9px;font-size:10px;font-weight:700}.sensor-tabs button.on{color:var(--accent2);border-color:var(--accent2-border);background:var(--accent2-bg)}.sensor-frame{background:repeating-linear-gradient(#0000 0 2px,#ffffff06 2px 3px);border:1px solid #8fd6ff73;border-radius:3px;width:340px;height:212px;position:relative}.sensor-frame.sensor-ir{background:repeating-linear-gradient(#0000 0 2px,#ffffff0d 2px 3px);border-color:#f0f0f080}.sensor-frame.sensor-rf{background:repeating-linear-gradient(#0000 0 3px,#37ff8b0d 3px 4px);border-color:#37ff8b8c}.sensor-note{color:#37ff8bbf;letter-spacing:.05em;font-size:9px;position:absolute;bottom:6px;left:8px}
