:root{--c-pose:#3b82ff;--c-zone:#ff3b5c;--c-sub:#f5a524;--c-routine:#19d3c5;--c-logic:#8b5cf6;--c-teleop:#a3e635;--grad-ship:linear-gradient(90deg, var(--c-pose), var(--c-routine), var(--c-teleop));--bg:#07090f;--sunken:#05060b;--panel:#0e131c;--panel-2:#161d29;--panel-3:#1c2431;--line:#253042;--line-2:#303c52;--line-3:#3d4a63;--text:#e8eef7;--text-2:#b9c3d4;--muted:#8a97ab;--faint:#5f6b7d;--accent:var(--c-sub);--accent-hi:#ffb640;--accent-ink:#1c1203;--accent-2:#3fb8ff;--red:var(--c-zone);--blue:var(--c-pose);--ok:#3fcf8e;--radius:12px;--radius-sm:8px;--radius-xs:6px;--ring:0 0 0 3px #3fb8ff38;--ease:cubic-bezier(.2, .7, .3, 1);--topbar-h:56px;--font-display:"Space Grotesk", "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-body);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.45}*{box-sizing:border-box}body{background:var(--bg);margin:0}::selection{background:#f5a5244d}*{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-2);background-clip:padding-box;border:3px solid #0000;border-radius:10px}::-webkit-scrollbar-thumb:hover{background-color:var(--line-3)}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}.app{flex-direction:column;height:100dvh;display:flex}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--line);background:linear-gradient(to bottom, #0d121a, var(--bg));flex-shrink:0;align-items:center;gap:20px;padding:0 20px;display:flex}.brand{flex:1 1 0;align-items:center;gap:10px;min-width:0;display:flex}.brand-home{color:var(--text);font-family:var(--font-display);letter-spacing:-.01em;white-space:nowrap;border-radius:var(--radius-sm);align-items:center;gap:9px;margin-left:-4px;padding:4px 6px 4px 4px;font-size:15px;font-weight:600;text-decoration:none;transition:background .15s;display:inline-flex}.brand-home:hover{background:var(--panel-2)}.brand-home:focus-visible{outline:2px solid var(--accent-2);outline-offset:1px}.mark{flex-shrink:0;display:block}.crumb{color:var(--line-3)}.project-name{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.logo{color:var(--accent)}.muted{color:var(--muted);font-weight:400}.steps{background:var(--sunken);border:1px solid var(--line);border-radius:11px;flex-shrink:0;gap:2px;padding:3px;display:flex}.tab{height:32px;color:var(--muted);cursor:pointer;white-space:nowrap;font:500 13px/1 var(--font-body);background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:0 12px 0 7px;transition:color .15s,background-color .15s;display:inline-flex}.step-n{width:19px;height:19px;font:500 11px/1 var(--font-mono);color:var(--faint);border:1px solid var(--line-2);border-radius:6px;place-items:center;transition:background-color .15s,color .15s,border-color .15s;display:grid}.tab:hover{color:var(--text);background:var(--panel)}.tab:hover .step-n{color:var(--text-2);border-color:var(--line-3)}.tab.active{color:var(--text);background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--line-2), 0 1px 2px #0006}.tab.active .step-n{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.tab:focus-visible{outline:2px solid var(--accent-2);outline-offset:1px}.tab[data-tab=subsystems].active .step-n{background:var(--c-sub);border-color:var(--c-sub);color:var(--accent-ink)}.tab[data-tab=field].active .step-n{background:var(--c-pose);border-color:var(--c-pose);color:#06111f}.tab[data-tab=autos].active .step-n{background:var(--c-routine);border-color:var(--c-routine);color:#06211f}.tab[data-tab=teleop].active .step-n{background:var(--c-teleop);border-color:var(--c-teleop);color:#0e1400}.tab[data-tab=generate].active .step-n{background:var(--grad-ship);color:#06111f;border-color:#0000}.saved{color:var(--faint);white-space:nowrap;flex:1 1 0;justify-content:flex-end;align-items:center;gap:7px;font-size:12px;display:flex}.saved-dot{background:var(--ok);width:7px;height:7px;animation:saved-pulse 1s var(--ease);border-radius:50%;box-shadow:0 0 #3fcf8e80}@keyframes saved-pulse{0%{box-shadow:0 0 #3fcf8e8c}to{box-shadow:0 0 0 7px #3fcf8e00}}.screen{flex:1;padding:20px 24px;overflow:auto}@media (width<=1080px){.topbar{flex-wrap:wrap;gap:8px 12px;height:auto;padding:10px 16px 0}.steps{scrollbar-width:none;background:0 0;border:0;border-radius:0;flex:1 0 calc(100% + 32px);order:3;gap:4px;margin:0 -16px;padding:0 16px 10px;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),#0000)}.steps::-webkit-scrollbar{display:none}.tab{flex-shrink:0}.tab.active{background:var(--panel-2)}.screen{padding:16px}}@media (width<=520px){.saved-text{display:none}.project-name{max-width:140px}}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px;padding:18px;box-shadow:inset 0 1px #ffffff06}.card .card{background:var(--bg);box-shadow:none;border-radius:10px;margin:0 0 10px;padding:14px}.card h2,.card h3{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text);margin:0 0 14px;font-weight:600}.card h2{font-size:17px}.card h3{font-size:15px}.card>:last-child{margin-bottom:0}.card .row>:is(h2,h3){margin:0}.card>.row:first-child:has(>:is(h2,h3)){margin-bottom:12px}.card ol,.card ul{color:var(--text-2);margin:10px 0 14px;padding-left:20px;line-height:1.7}.card li::marker{color:var(--faint);font-family:var(--font-mono);font-size:12px}.card.error{color:var(--text);background:#ff5d5d0f;border-color:#ff5d5d59}.card.error h3{color:var(--red)}.card.hint{border-style:dashed;border-color:var(--line-2);box-shadow:none;text-align:center;color:var(--muted);background:0 0;margin:0 0 14px;padding:36px 20px;font-size:13px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.grid2{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px 12px;display:grid}.split{grid-template-columns:minmax(0,1fr) 340px;gap:20px;height:100%;display:grid}.split>.card,.split>aside{align-self:start}@media (width<=900px){.split{grid-template-columns:1fr;height:auto}}.hint{color:var(--muted);margin:6px 0 0;font-size:12.5px;line-height:1.5}.error{color:var(--red)}p.error{font-size:13px}:where(.app) code{font-family:var(--font-mono);background:var(--panel-2);border:1px solid var(--line);color:var(--text-2);border-radius:5px;padding:1px 5px;font-size:.88em}:where(.app) b{font-weight:600}:where(.app) label{color:var(--muted);flex-direction:column;gap:6px;font-size:12px;font-weight:500;display:flex}:where(.app) :where(input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea){background:var(--sunken);color:var(--text);border:1px solid var(--line-2);border-radius:var(--radius-sm);font:400 13.5px/1.2 var(--font-body);min-width:0;padding:0 10px;transition:border-color .15s,box-shadow .15s,background-color .15s}:where(.app) :where(input:not([type=checkbox],[type=radio],[type=range],[type=file]),select){height:32px}:where(.app) input[type=number]{font-variant-numeric:tabular-nums}:where(.app) textarea{font:12.5px/1.5 var(--font-mono);resize:vertical;padding:8px 10px}:where(.app) :is(input,select,textarea):hover{border-color:var(--line-3)}:where(.app) :is(input,select,textarea):focus{border-color:var(--accent-2);box-shadow:var(--ring);outline:none}:where(.app) :is(input,select,textarea)::placeholder{color:var(--faint)}:where(.app) select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none' stroke='%238592a3' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 1l4 4 4-4'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:28px}:where(.app) select option{background:var(--panel)}:where(.app) input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:15px;height:15px;margin:0 2px 0 0}:where(.app) input[type=range]{accent-color:var(--accent);cursor:pointer}:where(.app) label:has(>input[type=checkbox]){cursor:pointer;align-items:center}.btn{white-space:nowrap;cursor:pointer;background:var(--panel-2);height:32px;color:var(--text);border:1px solid var(--line-2);border-radius:var(--radius-sm);font:500 13px/1 var(--font-body);flex-direction:row;justify-content:center;align-items:center;gap:6px;padding:0 12px;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform 80ms;display:inline-flex;box-shadow:inset 0 1px #ffffff0a}.btn:hover{background:var(--panel-3);border-color:var(--line-3)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600;box-shadow:inset 0 1px #ffffff4d,0 1px 2px #0006}.btn.primary:hover{background:var(--accent-hi);border-color:var(--accent-hi)}.btn.ghost{box-shadow:none;color:var(--text-2);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--panel-2);color:var(--text)}.btn.danger{color:var(--text-2)}.btn.danger:hover{color:#ff8585;background:#ff5d5d1a;border-color:#ff5d5d73}.btn.small{border-radius:var(--radius-xs);height:26px;padding:0 9px;font-size:12px}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn:disabled:hover{background:var(--panel-2);border-color:var(--line-2)}.btn.primary:disabled:hover{background:var(--accent);border-color:var(--accent)}label.btn{color:var(--text);font-size:13px}.btn.ship{background:var(--grad-ship);color:#06111f;border-color:#0000;font-weight:600;box-shadow:inset 0 1px #ffffff59,0 1px 2px #0006}.btn.ship:hover:not(:disabled){filter:brightness(1.08)}.btn.ship:disabled:hover{background:var(--grad-ship);border-color:#0000}.help-link{vertical-align:middle;border:1px solid var(--line-2);width:17px;height:17px;color:var(--muted);font:600 10.5px/1 var(--font-mono);border-radius:50%;flex-shrink:0;place-items:center;margin-left:6px;text-decoration:none;transition:color .15s,border-color .15s,background-color .15s;display:inline-grid}.help-link:hover{color:var(--text);border-color:var(--accent-2);background:var(--panel-2)}.help-link:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.toasts{z-index:60;flex-direction:column;gap:8px;max-width:min(360px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.toast{border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--line-2);color:var(--text);animation:toast-in .2s var(--ease);padding:10px 14px;font-size:13px;line-height:1.4;box-shadow:0 10px 30px #00000073}.toast.error{border-color:var(--red);color:#ffc2cd;background:#ff3b5c1f}.toast.ok{border-color:var(--ok)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.pill{background:var(--panel-2);border:1px solid var(--line-2);height:20px;color:var(--text-2);font:500 11px/1 var(--font-mono);white-space:nowrap;border-radius:999px;align-items:center;padding:0 7px;display:inline-flex}.list-item{border-radius:var(--radius-sm);cursor:pointer;min-height:36px;color:var(--text-2);align-items:center;gap:8px;margin:0 -8px 2px;padding:5px 8px 5px 10px;transition:background-color .12s,color .12s;display:flex}.list-item:hover{background:var(--panel-2);color:var(--text)}.list-item.selected{color:var(--text);box-shadow:inset 2px 0 0 var(--accent);background:#f5a52414}.list-item.selected .pill{color:var(--accent);border-color:#f5a52459}pre.code{background:var(--sunken);border:1px solid var(--line);font:12.5px/1.6 var(--font-mono);color:#c9d4e0;tab-size:4;border-radius:10px;max-height:70vh;margin:0 0 10px;padding:14px 16px;overflow:auto}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}.flow-canvas{background:var(--sunken)}.flow-canvas .react-flow{--xy-background-color:var(--sunken)}.flow-canvas>.hint{text-align:center;place-items:center;height:100%;margin:0;display:grid}.flow-canvas .react-flow__controls{box-shadow:none;border:1px solid var(--line-2);border-radius:var(--radius-sm);overflow:hidden}.flow-canvas .react-flow__controls-button{background:var(--panel-2);border-color:var(--line-2);color:var(--text-2)}.flow-canvas .react-flow__controls-button:hover{background:var(--panel-3)}.flow-canvas .react-flow__attribution{opacity:.45;background:0 0}.flow-block{background:var(--panel-2);width:190px;color:var(--text);cursor:pointer;transition:transform .12s var(--ease);border:1px solid;border-left-width:4px;border-radius:9px;padding:9px 11px;font-size:13px;box-shadow:0 6px 16px -8px #0009}.flow-block:hover{transform:translateY(-1px)}.flow-block.over{outline:2px dashed var(--accent-2);outline-offset:3px}.flow-block .react-flow__handle{opacity:0;pointer-events:none}.palette-block{justify-content:flex-start}.auto-chip{background:var(--panel-2);border:1px solid var(--c-routine);border-radius:10px;flex-direction:column;gap:6px;min-width:150px;padding:10px;display:flex}.auto-chip.slot{border-color:var(--accent);border-style:dashed}.field-svg{aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;width:100%;display:block}.field-card{height:calc(100vh - var(--topbar-h) - 40px);flex-direction:column;gap:10px;min-height:380px;margin:0;display:flex}.field-card .field-svg{aspect-ratio:auto;flex:1;min-height:0}.field-card .hint{margin:0}.field-side{max-height:calc(100vh - var(--topbar-h) - 40px);overflow:auto}.field-label{fill:var(--text);text-anchor:middle;paint-order:stroke;stroke:#000a;stroke-width:.8px;pointer-events:none;font-size:3.2px}.handle{cursor:grab}@media (width<=900px){.field-card{height:auto}.field-card .field-svg{aspect-ratio:1;flex:none}.field-side{max-height:none}}.timeline{align-items:center;gap:8px;display:flex}.timeline input[type=range]{flex:1;min-width:0}.timeline-time{font:12px var(--font-mono);color:var(--text-2);white-space:nowrap;font-variant-numeric:tabular-nums}.marker-tag{color:var(--accent);font-size:10.5px;font-family:var(--font-mono);white-space:nowrap;text-overflow:ellipsis;margin-top:3px;overflow:hidden}.marker-tag:before{content:"";background:var(--accent);vertical-align:1px;border-radius:50%;width:6px;height:6px;margin-right:5px;display:inline-block}.markers{flex-direction:column;gap:8px;margin-top:10px;display:flex}.marker-row{border-radius:var(--radius-sm);background:var(--panel-2);border-left:3px solid var(--accent);flex-direction:column;gap:6px;padding:8px;display:flex}.sim-body{grid-template-columns:minmax(0,360px) minmax(0,1fr);align-items:start;gap:16px;margin-top:12px;display:grid}@media (width<=700px){.sim-body{grid-template-columns:1fr}}.sim-clock{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:64px;font-weight:700;line-height:1}.sim-clock span{opacity:.7;margin-left:4px;font-size:24px}.sim-clock.good{color:var(--ok)}.sim-clock.warn{color:var(--accent)}.sim-clock.bad{color:var(--red)}.sim-over{color:var(--red);margin-top:6px;font-weight:600}.gantt{cursor:pointer;flex-direction:column;gap:4px;margin-top:14px;display:flex}.gantt-lane{grid-template-columns:90px minmax(0,1fr);align-items:center;gap:8px;display:grid}.gantt-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.gantt-track{background:var(--sunken);border-radius:var(--radius-xs);height:22px;position:relative;overflow:hidden}.gantt-bar{white-space:nowrap;text-overflow:ellipsis;color:var(--text);border-radius:4px;padding:0 4px;font-size:10.5px;line-height:16px;position:absolute;top:3px;bottom:3px;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff2e}.gantt-bar.path{background:#3b82ff73}.gantt-bar.action{background:#f5a52473}.gantt-bar.wait{background:#8a97ab4d}.gantt-limit{border-left:1px dashed var(--red);width:0;position:absolute;top:0;bottom:0}.gantt-head{background:var(--text);pointer-events:none;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.setup-step{border-top:1px solid var(--line);padding:12px 0}.setup-step h3{align-items:center;gap:10px;margin-bottom:10px;display:flex}.step-n{width:22px;height:22px;font:600 12px var(--font-mono);background:var(--panel-3);color:var(--text-2);border-radius:50%;place-items:center;display:inline-grid}.setup-step.done .step-n{background:var(--ok);color:var(--sunken)}.setup-list{list-style:none;margin:0!important;padding-left:0!important}.setup-list .setup-list{padding-left:14px!important}.setup-list summary{cursor:pointer;overflow-wrap:anywhere;padding:4px 0}.setup-list summary:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px;border-radius:var(--radius-xs)}.diff{max-height:360px}.diff>span{min-height:1lh;display:block}.diff .add{color:var(--ok);background:#3fcf8e1a}.diff .del{color:var(--red);background:#ff5d5d1a}.ok{color:var(--ok)}@media (width<=640px){.hw-row,.preset-row{grid-template-columns:1fr 1fr;gap:6px;display:grid}.hw-row>*,.preset-row>*{width:100%;min-width:0}.hw-reversed,.preset-unit,.hw-row>button:last-child,.preset-row>button:last-child{grid-column:1/-1}}
