:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e1726;--surface:#16213a;--surface-2:#1c2945;--surface-3:#243354;--canvas:#0b1322;--line:#2a3a5c;--line-strong:#3a4d75;--text:#e6edf7;--text-2:#c3cee0;--muted:#9aa9c2;--accent:#22d3ee;--accent-soft:#22d3ee24;--accent-ink:#052129;--run:#ffc93c;--run-hover:#ffd666;--run-ink:#2b1f00;--stop:#f87171;--stop-soft:#f8717124;--ok:#34d399;--ok-soft:#34d39924;--warn:#fbbf24;--warn-soft:#fbbf2424;--font-ui:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Fira Code", ui-monospace, "Cascadia Code", Consolas, monospace;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--r-sm:6px;--r:8px;--r-lg:12px;--rail-w:76px;--topbar-h:60px;--shadow:0 8px 24px #03081273;--ease:cubic-bezier(.2, .8, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);font:500 14px/1.45 var(--font-ui);-webkit-font-smoothing:antialiased;display:flex;overflow:hidden}::selection{color:#fff;background:#22d3ee59}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:8px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent);text-underline-offset:3px}svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}[hidden]{display:none!important}#rail{width:var(--rail-w);scrollbar-width:none;background:var(--surface);border-right:1px solid var(--line);height:100dvh;padding:var(--s3) var(--s2);align-items:stretch;gap:var(--s1);z-index:20;flex-direction:column;flex-shrink:0;display:flex;overflow:hidden auto}.brand{padding-bottom:var(--s3);margin-bottom:var(--s2);border-bottom:1px solid var(--line);letter-spacing:.02em;color:var(--text-2);justify-items:center;gap:2px;font-size:11px;font-weight:800;display:grid}.brand svg{width:26px;height:26px}.rail-btn{padding:var(--s2) 0;border-radius:var(--r);color:var(--muted);font:700 12px/1.1 var(--font-ui);cursor:pointer;transition:background .15s var(--ease), color .15s var(--ease);background:0 0;border:0;justify-items:center;gap:3px;display:grid;position:relative}.rail-btn svg{width:22px;height:22px}a.rail-btn{text-decoration:none}.rail-btn:hover{background:var(--surface-2);color:var(--text)}.rail-btn.active{background:var(--accent-soft);color:var(--accent)}.rail-btn.active:before{content:"";left:calc(-1 * var(--s2));background:var(--accent);border-radius:0 3px 3px 0;width:3px;position:absolute;top:10px;bottom:10px}.rail-spacer{flex:1}#rail::-webkit-scrollbar{display:none}@media (width>=901px) and (height<=860px){#rail{padding:var(--s2) 6px;gap:2px}.brand{padding-bottom:var(--s2);margin-bottom:2px}.brand span{display:none}.rail-btn{gap:2px;padding:6px 0;font-size:11px}.rail-btn svg{width:20px;height:20px}.rail-btn.active:before{top:8px;bottom:8px;left:-6px}}@media (width>=901px) and (height<=700px){.rail-btn span{font-size:10px}.rail-btn{padding:4px 0}.rail-btn svg{width:18px;height:18px}}#main{flex-direction:column;flex:1;min-width:0;display:flex}#topbar{height:var(--topbar-h);align-items:center;gap:var(--s4);padding:0 var(--s5);border-bottom:1px solid var(--line);background:var(--bg);flex-shrink:0;display:flex}.topbar-title{min-width:0}.topbar-title h1{font-size:18px;font-weight:800;line-height:1.2}.topbar-title p{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.loaded{gap:var(--s2);margin-left:auto;display:flex}.chip{height:32px;padding:0 var(--s3);border:1px solid var(--line);background:var(--surface);color:var(--text-2);font:700 12px var(--font-ui);cursor:pointer;border-radius:999px;align-items:center;gap:6px;max-width:360px;display:inline-flex}.chip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip svg{width:16px;height:16px;color:var(--accent);flex-shrink:0}.chip:hover{border-color:var(--line-strong);color:var(--text)}#status-pill{font:600 12px var(--font-ui);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:280px;overflow:hidden}.btn{height:36px;padding:0 var(--s4);border-radius:var(--r);border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);font:700 13px var(--font-ui);cursor:pointer;white-space:nowrap;transition:background .15s var(--ease), border-color .15s var(--ease), transform .1s;justify-content:center;align-items:center;gap:6px;display:inline-flex}.btn svg{width:16px;height:16px}.btn:hover{background:var(--surface-3);border-color:#4a5f8c}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:#5ee2f3;border-color:#5ee2f3}.btn-run{background:var(--run);border-color:var(--run);color:var(--run-ink);min-width:92px}.btn-run svg{fill:currentColor;stroke:none}.btn-run:hover{background:var(--run-hover);border-color:var(--run-hover)}.btn-stop{color:var(--stop);background:0 0;border-color:#f871718c}.btn-stop svg{fill:currentColor;stroke:none}.btn-stop:hover{background:var(--stop-soft);border-color:var(--stop)}.btn-quiet{border-color:var(--line);color:var(--text-2);background:0 0}.btn-quiet:hover{background:var(--surface-2);color:var(--text)}.btn-danger{color:var(--stop);background:0 0;border-color:#f8717173}.btn-danger:hover{background:var(--stop-soft)}.btn-sm{height:30px;padding:0 var(--s3);font-size:12px}.btn-row{gap:var(--s2);flex-wrap:wrap;display:flex}.btn-row .btn{flex:1}.icon-btn{border-radius:var(--r);width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;place-items:center;display:inline-grid}.icon-btn svg{width:16px;height:16px}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.field{color:var(--text-2);flex-wrap:wrap;align-items:baseline;gap:6px;font-size:12px;font-weight:700;display:flex}.unit{color:var(--muted);font-weight:600;font-family:var(--font-mono);font-size:11px}.field>input,.field>select,.field>.vec-grid{flex-basis:100%}input[type=text],input[type=search],input[type=password],input[type=email],input[type=number],select{width:100%;min-width:0;height:36px;padding:0 var(--s3);border-radius:var(--r);border:1px solid var(--line-strong);background:var(--canvas);color:var(--text);font:600 13px var(--font-ui);transition:border-color .15s}input[type=number]{font-family:var(--font-mono);font-weight:500}input::placeholder{color:#7d8ca8}input:hover,select:hover{border-color:#4a5f8c}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' fill='none' stroke='%239aa9c2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;background-size:14px;padding-right:30px}.field-row{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.field-row.three{grid-template-columns:repeat(3,1fr)}.inline-field{align-items:center;gap:var(--s2);color:var(--muted);font-size:12px;font-weight:700;display:inline-flex}.inline-field select{width:auto;height:32px}.switch-row{justify-content:space-between;align-items:center;gap:var(--s3);color:var(--text-2);font-size:13px;font-weight:700;display:flex}.switch-row select{width:96px}.note{color:var(--muted);font-size:12px;line-height:1.5}.panel{flex:1;min-height:0;display:none;overflow:hidden}.panel.active{display:flex}.page-pad{padding:var(--s5);align-content:start;gap:var(--s4);flex:1;display:grid;overflow-y:auto}.page-pad.narrow{max-width:720px}.section-title{margin-top:var(--s3);font-size:15px;font-weight:800}.page-actions{gap:var(--s2);flex-wrap:wrap;display:flex}.group{gap:var(--s3);padding:var(--s4);border-bottom:1px solid var(--line);display:grid}.group:last-child{border-bottom:0}.group h3{color:var(--text);font-size:13px;font-weight:800}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s5);gap:var(--s4);display:grid}.card-head{justify-content:space-between;align-items:flex-start;gap:var(--s4);display:flex}.card-title{font-size:16px;font-weight:800}.form-grid{gap:var(--s3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;display:grid}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;color:var(--muted);padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);font-size:12px;font-weight:700}.table td{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);vertical-align:middle}.table td:first-child{font-family:var(--font-mono);color:var(--muted)}.table tr:hover td{background:#ffffff04}.table td input,.table td select{height:32px}.table .empty td{color:var(--muted);text-align:center;padding:var(--s5)}.mat-layout{flex:1;grid-template-columns:280px minmax(0,1fr) 300px;min-height:0;display:grid}.mat-list,.mat-settings{background:var(--surface);overflow-y:auto}.mat-list{border-right:1px solid var(--line);padding:var(--s3) var(--s2)}.mat-settings{border-left:1px solid var(--line)}.mat-settings>.note{padding:var(--s4);border-bottom:1px solid var(--line)}.dl-head{color:var(--muted);margin-top:var(--s1);font-size:12px;font-weight:800}.dl-list{margin:calc(var(--s2) * -1) 0 0;gap:2px;padding:0;list-style:none;display:grid}.dl-list a{align-items:flex-start;gap:var(--s2);padding:var(--s2);border-radius:var(--r-sm);color:var(--text);font-size:13px;font-weight:700;line-height:1.35;text-decoration:none;display:flex}.dl-list a:hover{background:var(--surface-2)}.dl-list a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-list svg{width:16px;height:16px;color:var(--accent);flex:none;margin-top:1px}.dl-list small{color:var(--muted);font-size:12px;font-weight:600;display:block}.mat-group-title{color:var(--muted);padding:var(--s3) var(--s2) var(--s2);align-items:center;gap:6px;font-size:12px;font-weight:800;display:flex}.mat-group-title .count{font-family:var(--font-mono);font-weight:500}.mat-item{gap:var(--s3);width:100%;padding:6px var(--s2);border-radius:var(--r);color:var(--text);text-align:left;cursor:pointer;font:inherit;background:0 0;border:1px solid #0000;grid-template-columns:56px 1fr;align-items:center;display:grid}.mat-item:hover{background:var(--surface-2)}.mat-item[aria-pressed=true]{background:var(--accent-soft);border-color:#22d3ee66}.mat-item img,.mat-item .swatch{object-fit:cover;background:var(--surface-3);border:1px solid var(--line);border-radius:4px;width:56px;height:auto;max-height:56px}.mat-item strong{font-size:13px;font-weight:700;line-height:1.25;display:block}.mat-item small{font:600 12px var(--font-ui);color:var(--muted);display:block}.badge{font:700 10px/16px var(--font-ui);background:var(--accent-soft);color:var(--accent);vertical-align:1px;border-radius:999px;margin-left:4px;padding:0 6px;display:inline-block}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.mat-stage{gap:var(--s4);padding:var(--s5);background:radial-gradient(circle at 1px 1px, #9aa9c21f 1px, transparent 0) 0 0 / 16px 16px, var(--canvas);grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:0;display:grid}.mat-preview-frame{place-items:center;min-height:0;display:grid}#mat-preview{background:#fff;border-radius:6px;max-width:100%;max-height:100%;box-shadow:0 12px 32px #00000080}.mat-meta{justify-content:space-between;align-items:center;gap:var(--s4);flex-wrap:wrap;display:flex}.mat-actions{flex:none}.mat-filter{padding:var(--s1) var(--s2) var(--s2)}.mat-list .empty-state{margin:var(--s2);font-size:12px}.mat-meta h2{font-size:18px;font-weight:800}.mat-meta p{color:var(--muted);font-size:12px}.dropzone{gap:var(--s3);padding:var(--s4);border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);cursor:pointer;color:var(--muted);align-items:center;font-size:12px;transition:border-color .15s,background .15s;display:flex}.dropzone svg{width:22px;height:22px;color:var(--accent);flex-shrink:0}.dropzone strong{color:var(--text);font-size:13px;display:block}.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:var(--accent-soft)}input:focus-visible+.dropzone,.dropzone:focus-within{outline:2px solid var(--accent)}.empty-state{border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);padding:var(--s5);color:var(--muted);font-size:13px}.empty-state strong{color:var(--text);margin-bottom:4px;display:block}.robots-layout{flex:1;grid-template-columns:320px minmax(0,1fr);min-height:0;display:grid}.robots-list{background:var(--surface);border-right:1px solid var(--line);padding:var(--s3) var(--s2) var(--s4);overflow-y:auto}.list-actions{gap:var(--s2);padding:0 var(--s2) var(--s2);display:flex}.list-actions .btn:first-child{flex:1}.robot-rows{gap:2px;display:grid}.robot-row{gap:var(--s3);width:100%;padding:6px var(--s2);border-radius:var(--r);color:var(--text);text-align:left;font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;grid-template-columns:72px 1fr;align-items:center;display:grid}.robot-row:hover{background:var(--surface-2)}.robot-row[aria-pressed=true]{background:var(--accent-soft);border-color:#22d3ee66}.robot-row .mini{background:var(--canvas);border-radius:6px;place-items:center;width:72px;height:48px;display:grid;overflow:hidden}.robot-row .mini img{max-width:100%;max-height:100%}.robot-row .mini svg{width:22px;height:22px;color:var(--line-strong)}.robot-row strong{align-items:center;gap:6px;font-size:13px;font-weight:700;display:flex}.robot-row small{font:600 12px var(--font-ui);color:var(--muted);display:block}.robot-row .live{background:var(--ok);border-radius:50%;width:7px;height:7px}.robot-rows .empty-state{margin:0 var(--s2);padding:var(--s4);font-size:12px}.robot-stage{background:radial-gradient(circle at 1px 1px, #9aa9c21f 1px, transparent 0) 0 0 / 16px 16px, var(--canvas);grid-template-rows:minmax(0,1fr) auto;min-height:0;display:grid}.robot-stage .hero{min-height:0;padding:var(--s5);place-items:center;display:grid}.robot-stage .hero img{object-fit:contain;max-width:min(640px,100%);max-height:100%}.robot-stage .hero svg{width:96px;height:96px;color:var(--line-strong)}.robot-stage .info{gap:var(--s5);padding:var(--s5);border-top:1px solid var(--line);background:var(--surface);grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;align-items:start;display:grid}.robot-stage h2{align-items:center;gap:var(--s2);font-size:20px;font-weight:800;display:flex}.robot-stage .desc{color:var(--text-2);max-width:60ch;margin-top:4px;font-size:13px}.robot-stage .summary-list{margin-top:var(--s3)}.robot-stage .stage-actions{gap:var(--s2);min-width:180px;display:grid}.robot-stage .stage-actions .row{gap:var(--s2);display:flex}.robot-stage .stage-actions .row .btn{flex:1}.ports{gap:var(--s2);display:grid}.port-strip{flex-wrap:wrap;gap:6px;display:flex}.port{border:1px solid var(--line-strong);background:var(--canvas);min-width:34px;height:30px;font:600 12px var(--font-mono);color:var(--muted);border-radius:6px;place-items:center;padding:0 6px;display:grid;position:relative}.port.on{border-color:var(--accent);color:var(--accent-ink);background:var(--accent)}.port.drive:after{content:"";background:var(--text);border-radius:2px;width:14px;height:3px;position:absolute;bottom:-5px}.port-legend{color:var(--muted);font-size:11px}#panel-builder{display:none}#panel-builder.active{grid-template-columns:290px minmax(0,1fr) 300px;display:grid}.build-library,.build-inspector{background:var(--surface);min-height:0;overflow-y:auto}.build-library{border-right:1px solid var(--line);flex-direction:column;display:flex}.build-inspector{border-left:1px solid var(--line)}.lib-head{z-index:2;background:var(--surface);padding:var(--s3);gap:var(--s2);border-bottom:1px solid var(--line);display:grid;position:sticky;top:0}.search{position:relative}.search svg{width:16px;height:16px;color:var(--muted);position:absolute;top:10px;left:10px}.search-row{align-items:stretch;gap:6px;display:flex}.search-row .search{flex:1;min-width:0}.filter-toggle{border:1px solid var(--line);color:var(--text-2);font:700 12px var(--font-ui);cursor:pointer;background:0 0;border-radius:8px;flex:none;align-items:center;gap:5px;padding:0 10px;display:inline-flex;position:relative}.filter-toggle:hover{border-color:var(--line-strong);color:var(--text)}.filter-toggle[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.filter-toggle svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;width:15px;height:15px}.filter-toggle .dot{background:var(--accent);border-radius:50%;width:7px;height:7px;position:absolute;top:4px;right:4px}.search input{padding-left:34px}.tabs{background:var(--canvas);border-radius:var(--r);border:1px solid var(--line);gap:4px;padding:3px;display:flex}.tabs button{height:28px;color:var(--muted);font:700 12px var(--font-ui);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:1}.tabs button[aria-pressed=true]{background:var(--surface-3);color:var(--text)}.cat-chips{flex-wrap:wrap;gap:4px;display:flex}.cat-chips[hidden]{display:none}.cat-chips button{border:1px solid var(--line);height:26px;color:var(--text-2);font:700 11px var(--font-ui);cursor:pointer;background:0 0;border-radius:999px;padding:0 10px}.cat-chips button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.lib-body{padding:var(--s2) var(--s3) var(--s4);gap:var(--s3);display:grid}.lib-cat h4{color:var(--muted);margin:var(--s2) 0;font-size:12px;font-weight:800}.part-grid{gap:var(--s2);grid-template-columns:repeat(2,1fr);display:grid}.part-tile{border-radius:var(--r);border:1px solid var(--line);background:var(--canvas);color:var(--text);cursor:grab;text-align:left;font:inherit;transition:border-color .15s, transform .12s var(--ease);grid-template-rows:84px auto;display:grid;overflow:hidden}.part-tile:hover{border-color:var(--accent);transform:translateY(-1px)}.part-tile:active{cursor:grabbing}.part-tile .thumb{background:#101b30;place-items:center;display:grid}.part-tile img{object-fit:contain;width:84px;height:84px}.part-tile img[data-state=loading]{opacity:.25;filter:blur(2px)}.part-tile .meta{padding:6px 8px 8px}.part-tile strong{font-size:12px;font-weight:700;line-height:1.25;display:block}.part-tile small{font:600 11px var(--font-ui);color:var(--muted)}.build-stage{background:var(--canvas);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;position:relative}.stage-toolbar{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.seg{background:var(--canvas);border:1px solid var(--line);border-radius:var(--r);gap:2px;padding:4px;display:inline-flex}.seg .tool{height:28px}.tool{height:32px;color:var(--text-2);font:700 12px var(--font-ui);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.tool svg{width:16px;height:16px}.tool:hover{background:var(--surface-2);color:var(--text)}.tool.active{background:var(--accent-soft);color:var(--accent)}.tool.icon{justify-content:center;width:32px;padding:0}.tool:disabled{opacity:.4;cursor:not-allowed;background:0 0}.tool.toggle{border:1px solid var(--line)}.tool.toggle.active{border-color:#22d3ee73}.tool-sep{background:var(--line);width:1px;height:22px;margin:0 4px}#build-canvas-container{min-height:0;position:relative;overflow:hidden}#build-canvas-container canvas{display:block}#build-canvas-container.drop-active{box-shadow:inset 0 0 0 2px var(--accent)}.stage-empty{text-align:center;pointer-events:none;max-width:320px;color:var(--muted);gap:4px;font-size:13px;display:grid;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}.stage-empty strong{color:var(--text);font-size:15px}.stage-hint{padding:6px var(--s3);color:var(--muted);border-top:1px solid var(--line);background:var(--surface);font-size:11px}.inspector-head{gap:var(--s3);align-items:center;display:flex}.inspector-head img{border-radius:var(--r);background:var(--canvas);border:1px solid var(--line);object-fit:contain;width:48px;height:48px}.inspector-head strong{font-size:13px;display:block}.inspector-head small{font:500 11px var(--font-mono);color:var(--muted)}.vec{grid-template-columns:18px 1fr;align-items:center;gap:6px;display:grid}.vec span{font:600 11px var(--font-mono);color:var(--muted)}.vec-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.vec-grid input{height:30px;padding:0 6px;font-size:12px}.axis-x{color:#f87171!important}.axis-y{color:#34d399!important}.axis-z{color:#60a5fa!important}.part-rows{gap:2px;display:grid}.part-row{cursor:pointer;color:var(--text-2);border-radius:6px;grid-template-columns:1fr auto auto;align-items:center;gap:6px;padding:4px 6px 4px 10px;font-size:12px;display:grid}.part-row:hover{background:var(--surface-2)}.part-row.selected{background:var(--accent-soft);color:var(--text)}.part-row .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.part-row .port-tag{font:600 11px var(--font-mono);color:var(--accent)}.part-row .icon-btn{width:26px;height:26px}.summary-list{gap:6px;font-size:12px;display:grid}.summary-list div{justify-content:space-between;gap:var(--s2);display:flex}.summary-list dt{color:var(--muted)}.summary-list dd{font-family:var(--font-mono);color:var(--text)}.issue{color:var(--text-2);gap:8px;font-size:12px;line-height:1.4;display:flex}.issue svg{color:var(--accent)}.issue.warn,.issue.warn svg{color:var(--warn)}.issue.ok,.issue.ok svg{color:var(--ok)}.issue svg{flex-shrink:0;width:15px;height:15px;margin-top:1px}#panel-simulate{flex-direction:column}.sim-toolbar{align-items:center;gap:var(--s3);padding:var(--s2) var(--s4);border-bottom:1px solid var(--line);background:var(--surface);z-index:6;flex-wrap:wrap;display:flex;position:relative}.run-state{border:1px solid var(--line);background:var(--canvas);line-height:16px;font:700 12px var(--font-ui);color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;margin-left:auto;padding:6px 12px;display:inline-flex}.run-state i{background:var(--muted);border-radius:50%;width:8px;height:8px}.run-state[data-state=running]{color:var(--text);border-color:#22d3ee80}.run-state[data-state=running] i{background:var(--accent);animation:1.2s ease-in-out infinite pulse}.run-state[data-state=done] i{background:var(--ok)}.run-state[data-state=stopped] i{background:var(--text-2)}.run-state[data-state=error],.run-state[data-state=fell]{color:#fecaca;border-color:#f8717180}.run-state[data-state=error] i,.run-state[data-state=fell] i{background:var(--stop)}.run-state .t{font-family:var(--font-mono);color:var(--muted);font-weight:500}@keyframes pulse{50%{opacity:.35}}.start-pop{position:relative}.start-pop summary{height:32px;list-style:none}.start-pop summary::-webkit-details-marker{display:none}.start-pop .pop{width:320px;padding:var(--s4);gap:var(--s3);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:var(--shadow);display:grid;position:absolute;top:calc(100% + 8px);left:0}.sim-body{flex:1;min-height:0;position:relative}#simulate-canvas-container{position:absolute;inset:0}#simulate-canvas-container canvas{display:block}.readout{left:var(--s4);bottom:var(--s4);pointer-events:none;flex-wrap:wrap;gap:2px;max-width:calc(100% - 260px);display:flex;position:absolute}.readout .cell{border:1px solid var(--line);background:#0e1726db;align-items:center;gap:8px;min-width:78px;padding:6px 10px;font-size:12px;display:flex}.readout .cell:first-child{border-radius:var(--r) 0 0 var(--r)}.readout .cell:last-child{border-radius:0 var(--r) var(--r) 0}.readout .cell>span:last-child,.readout .hubcell{gap:1px;display:grid}.readout .port{min-width:26px;height:26px;font-size:12px}.readout .motor .port{color:var(--accent);background:0 0}.readout .k{font:700 11px var(--font-ui);color:var(--muted)}.readout .v{color:var(--text);font-family:var(--font-mono);font-size:12px}.readout .swatch{vertical-align:0;border:1px solid #ffffff4d;border-radius:2px;width:9px;height:9px;margin-right:5px;display:inline-block}.mission{top:var(--s4);left:var(--s4);z-index:6;border:1px solid var(--line-strong);border-radius:var(--r-lg);width:min(340px,100% - 260px);max-height:calc(100% - 150px);box-shadow:var(--shadow);background:#16213af5;flex-direction:column;display:flex;position:absolute}.mission>summary{justify-content:space-between;align-items:center;gap:var(--s3);padding:10px var(--s3);cursor:pointer;border-radius:var(--r-lg);list-style:none;display:flex}.mission>summary::-webkit-details-marker{display:none}.mission>summary:hover{background:var(--surface-2)}.mission[open]>summary{border-bottom:1px solid var(--line);border-radius:var(--r-lg) var(--r-lg) 0 0}.mission-title{align-items:center;gap:8px;font-size:13px;font-weight:800;display:flex}.mission-title:before{content:"";border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);width:8px;height:8px;transition:transform .15s var(--ease);transform:rotate(-45deg)}.mission[open] .mission-title:before{transform:rotate(45deg)}.mission-score{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 10px;font-size:13px;font-weight:600}.mission-score:empty{display:none}.mission-body{max-height:max(160px,100dvh - 360px);padding:var(--s3);gap:var(--s3);font-size:12.5px;display:grid;overflow-y:auto}.mission-goal{color:var(--text);font-weight:600;line-height:1.45}.mission-tasks{color:var(--text-2);gap:4px;margin:0;padding-left:18px;line-height:1.4;display:grid}.mission-tasks li::marker{color:var(--accent);font-family:var(--font-mono);font-size:11px}.mission-verdict{color:var(--text);margin-bottom:6px;font-weight:800}.mission-items{border-top:1px solid var(--line);padding:0;padding-top:var(--s2);gap:2px;margin:0;list-style:none;display:grid}.mission-items li{color:var(--text-2);grid-template-columns:14px 1fr auto;align-items:start;gap:8px;padding:4px 0;line-height:1.35;display:grid}.mi-mark{border:1.5px solid var(--line-strong);border-radius:50%;width:12px;height:12px;margin-top:2px}.mission-items li[data-state=done] .mi-mark{background:var(--ok);border-color:var(--ok)}.mission-items li[data-state=done]{color:var(--text)}.mission-items li[data-state=manual] .mi-mark{border-style:dashed}.mi-value{color:var(--text);white-space:nowrap;font-size:11.5px}.mission-items li[data-state=manual] .mi-value{color:var(--muted)}.mission-rules{color:var(--muted);gap:3px;margin:0;padding-left:16px;font-size:12px;font-weight:600;display:grid}.mission-limit{color:var(--text-2);cursor:pointer;align-items:center;gap:8px;font-size:12px;font-weight:700;display:flex}.mission-limit input{accent-color:var(--accent);width:15px;height:15px}.mission-source{color:var(--muted);border-top:1px solid var(--line);padding-top:var(--s2);font-size:11px;font-weight:600}#brick{top:var(--s4);right:var(--s4);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-lg);width:210px;padding:var(--s3);gap:var(--s2);z-index:5;box-shadow:var(--shadow);display:grid;position:absolute}.brick-head{width:100%;color:inherit;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;padding:0;display:flex}.brick-body{gap:var(--s2);display:grid}.brick-head{cursor:grab;touch-action:none}#brick.dragging{cursor:grabbing;box-shadow:0 16px 36px #03081299}#brick.dragging .brick-head{cursor:grabbing}#brick.collapsed .brick-body{display:none}.brick-title{color:var(--text-2);font-size:12px;font-weight:800}.brick-led{background:var(--surface-3);border-radius:4px;width:28px;height:8px;transition:background .2s}#brick-screen{width:100%;height:auto;image-rendering:pixelated;background:#c9d6b9;border-radius:6px}.brick-buttons{grid-template-columns:repeat(3,1fr);grid-template-areas:".up.""left center right"".down.";gap:4px;display:grid}.brick-buttons button{border:1px solid var(--line-strong);background:var(--surface-2);height:30px;color:var(--text-2);cursor:pointer;border-radius:6px;place-items:center;display:grid}.brick-buttons svg{stroke-width:2.2px;width:13px;height:13px}.brick-buttons svg .fill{fill:currentColor;stroke:none}.brick-buttons button:hover{background:var(--surface-3)}.brick-buttons button.pressed,.brick-buttons button:active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.brick-buttons [data-btn=UP]{grid-area:up}.brick-buttons [data-btn=LEFT]{grid-area:left}.brick-buttons [data-btn=CENTER]{grid-area:center}.brick-buttons [data-btn=RIGHT]{grid-area:right}.brick-buttons [data-btn=DOWN]{grid-area:down}.spike-matrix{background:#e8edf3;border-radius:10px;grid-template-columns:repeat(5,1fr);gap:5px;width:132px;margin:0 auto;padding:12px;display:grid;box-shadow:inset 0 0 0 4px #f6c90e}.spike-matrix span{aspect-ratio:1;background:#c7ced8;border-radius:3px;transition:background 80ms}.spike-matrix span.on{background:#fff;box-shadow:0 0 6px #ffffffe6}.spike-buttons{justify-content:center;align-items:center;gap:10px;display:flex}.spike-buttons button{border:1px solid var(--line-strong);background:var(--surface-2);width:34px;height:30px;color:var(--text-2);cursor:pointer;border-radius:8px;place-items:center;display:grid}.spike-buttons svg{stroke-width:2.2px;width:13px;height:13px}.spike-buttons .center{background:#f3f5f8;border-color:#c7ced8;border-radius:50%;width:30px}.spike-buttons button.pressed,.spike-buttons button:active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}#brick[data-hub=spike] .brick-led{display:none}#brick-log{max-height:90px;font:11px/1.5 var(--font-mono);color:var(--text-2);overflow-y:auto}#brick-log:empty{display:none}#panel-program{flex-direction:column}#program-topbar{align-items:center;gap:var(--s2);padding:var(--s2) var(--s4);border-bottom:1px solid var(--line);background:var(--surface);flex-shrink:0;display:flex}.prog-files{gap:4px;display:flex}#program-body{flex:1;min-height:0;display:flex}#blockly-wrapper{flex:1;min-width:0;position:relative;overflow:hidden}#blocklyDiv{position:absolute;inset:0}#code-panel{background:var(--surface);border-left:1px solid var(--line);flex-direction:column;flex-shrink:0;width:min(460px,40%);min-height:0;display:flex}.code-head{align-items:center;gap:var(--s2);padding:var(--s3);border-bottom:1px solid var(--line);display:flex}.code-target{align-items:center;gap:var(--s2);min-width:0;color:var(--muted);flex:1;font-size:12px;font-weight:700;display:flex}.code-target select{flex:1;height:32px}.code-actions{gap:6px;display:flex}.code-actions .btn{height:32px;padding:0 var(--s3)}#robot-setup{border-bottom:1px solid var(--line)}#robot-setup summary{padding:var(--s3);cursor:pointer;color:var(--text-2);font-size:13px;font-weight:800}#robot-setup summary:hover{color:var(--text)}.setup-grid{gap:var(--s3);padding:0 var(--s3) var(--s3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.setup-grid .span-2{grid-column:1/-1}.setup-grid input,.setup-grid select{height:32px}.setup-note{color:var(--muted);font-size:12px}#spike-ports{grid-template-columns:repeat(4,minmax(0,1fr))}#spike-ports label{color:var(--muted);gap:4px;font-size:11px;font-weight:700;display:grid}#code-view{padding:var(--s3) var(--s4);background:var(--canvas);font:12.5px/1.65 var(--font-mono);color:var(--text);tab-size:4;flex:1;overflow:auto}#code-view .k{color:#f0abfc}#code-view .s{color:#86efac}#code-view .c{color:#8291ad;font-style:italic}#code-view .n{color:#a5b4fc}#code-view .f{color:var(--accent)}.code-help{padding:var(--s3);border-top:1px solid var(--line);color:var(--text-2);font-size:12px;line-height:1.55}.blocklyToolboxDiv{border-right:1px solid var(--line)!important}.blocklyTreeRow{border-radius:6px;height:auto!important;margin:1px 6px!important;padding:6px 12px!important}.blocklyTreeRow:hover{background:var(--surface-2)!important}.blocklyTreeSelected{background:var(--accent-soft)!important}.blocklyTreeLabel{font:700 13px var(--font-ui)!important;color:var(--text)!important}.blocklyMainBackground{stroke:none!important}.blocklyText,.blocklyFlyoutLabelText{font-family:var(--font-ui)!important}.blocklyScrollbarHandle{fill:var(--line-strong)!important}.season-list{gap:var(--s2);display:grid}.season-item{gap:var(--s4);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r);background:var(--canvas);grid-template-columns:120px 1fr auto;align-items:center;display:grid}.season-item .preview{background:var(--surface-3);object-fit:cover;border-radius:4px;width:120px;height:58px}.season-item h4{font-size:14px;font-weight:800}.season-item p{color:var(--muted);font-size:12px}.season-item .actions{gap:6px;display:flex}dialog{width:min(400px,100vw - 32px);padding:var(--s5);border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow);margin:auto}dialog::backdrop{background:#050a1499}dialog h2{margin-bottom:var(--s4);font-size:18px;font-weight:800}.dialog-close-form{top:var(--s3);right:var(--s3);position:absolute}.auth-form{gap:var(--s3);display:grid}.auth-alt{text-align:center;color:var(--muted);font-size:12px}.auth-msg{padding:var(--s2) var(--s3);border-radius:var(--r);border:1px solid;font-size:12px}.auth-msg.error{color:#fecaca;background:var(--stop-soft);border-color:#f8717173}.auth-msg.ok{color:#bbf7d0;background:var(--ok-soft);border-color:#34d39973}.profile-list{gap:var(--s2);font-size:13px;display:grid}.profile-list div{justify-content:space-between;gap:var(--s4);display:flex}.profile-list dt{color:var(--muted)}@media (width<=1180px){.mat-layout{grid-template-columns:240px minmax(0,1fr)}.mat-settings{border-left:0;border-top:1px solid var(--line);grid-column:1/-1;grid-template-columns:1fr 1fr;display:grid}#panel-builder.active{grid-template-columns:250px minmax(0,1fr) 260px}.robots-layout{grid-template-columns:280px minmax(0,1fr)}.robot-stage .info{grid-template-columns:1fr 1fr}.robot-stage .stage-actions{grid-column:1/-1}.topbar-title p{display:none}.chip{max-width:190px}}@media (width<=900px){body{flex-direction:column-reverse}#main,.panel,.mat-layout,.page-pad,.robots-layout,#panel-builder.active{min-height:0}#rail{border-right:0;border-top:1px solid var(--line);flex-direction:row;width:100%;height:64px;padding:6px;overflow:auto hidden}.brand,.rail-spacer{display:none}.rail-btn{flex:1;min-width:56px}.rail-btn.active:before{border-radius:3px 3px 0 0;width:auto;height:3px;inset:auto 12px -6px}#topbar{padding:0 var(--s4)}.topbar-title p,#status-pill{display:none}.mat-layout{grid-template-columns:1fr;overflow-y:auto}.robots-layout{grid-template-rows:auto auto;grid-template-columns:1fr;overflow-y:auto}.robots-list{border-right:0;border-bottom:1px solid var(--line);overflow:visible}.robot-stage{grid-template-rows:220px auto}.robot-stage .info{grid-template-columns:1fr}.mat-list{border-right:0;max-height:220px}.mat-stage{min-height:300px}.mat-settings{grid-template-columns:1fr}#panel-builder.active{grid-template-rows:46vh auto auto;grid-template-columns:1fr;overflow-y:auto}.build-stage{grid-row:1}.build-library{grid-row:2;height:60vh}.build-inspector{border-left:0;grid-row:3}#program-body{flex-direction:column}#code-panel{border-left:0;border-top:1px solid var(--line);width:100%;height:45vh}.prog-files{display:none}#brick{top:auto;bottom:var(--s4);width:168px}.mission{top:var(--s2);left:var(--s2);right:var(--s2);background:var(--surface);width:auto;max-height:70%}.mission-body{max-height:50dvh}.mission:not([open])~.readout,.mission:not([open])~#sim-overlay{top:64px}#brick.collapsed{width:auto;padding:var(--s2) var(--s3)}#brick.collapsed .brick-head{gap:var(--s3)}#program-topbar .tool-sep,.loaded{display:none}.run-state{padding:5px 10px}#code-toggle-btn{margin-left:auto}.readout{bottom:auto;top:var(--s3);max-width:calc(100% - 32px)}.season-item{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.add-pop .pop{gap:var(--s3);width:300px;display:grid}.pop-title{color:var(--text-2);font-size:12px;font-weight:700}.pop-note{color:var(--muted);font-size:11.5px;font-weight:600;line-height:1.4}.add-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.add-tile{border:1px solid var(--line-strong);border-radius:var(--r);background:var(--canvas);color:var(--text);font:700 12px var(--font-ui);cursor:pointer;transition:border-color .15s var(--ease), background .15s var(--ease);justify-items:center;gap:4px;padding:10px 4px 8px;display:grid}.add-tile small{color:var(--muted);font-size:10.5px;font-weight:600}.add-tile:hover{border-color:var(--accent);background:var(--accent-soft)}.add-tile:active{transform:translateY(1px)}.add-swatch{background:var(--c);border-radius:50%;width:18px;height:18px;box-shadow:inset 0 -3px #00000040}.add-swatch.sq{border-radius:4px}.add-swatch.bar{border-radius:2px;width:8px;height:22px}.start-pop .pop{z-index:20}.injectionDiv svg,.blocklyWidgetDiv svg,.blocklyDropDownDiv svg,.blocklyTooltipDiv svg{fill:initial;stroke:initial;stroke-width:initial;stroke-linecap:initial;stroke-linejoin:initial}.zelos-renderer .rs-light-block>.blocklyText,.zelos-renderer .rs-light-block>g>.blocklyText,.zelos-renderer .rs-light-block>.blocklyDropdownField>.blocklyText{stroke:#462d008c;stroke-width:2.4px;stroke-linejoin:round;paint-order:stroke fill;font-weight:800;fill:#fff!important}.zelos-renderer .rs-light-block>g>.blocklyDropdownArrow,.zelos-renderer .rs-light-block>g>image.blocklyDropdownArrow{filter:brightness(0)invert()drop-shadow(0 0 1px #462d00b3)}.blocklyFlyoutButton{fill:var(--accent);cursor:pointer}.blocklyFlyoutButton:hover{fill:#5ee2f3}.blocklyFlyoutButton .blocklyText{font-weight:800;fill:var(--accent-ink)!important}.blocklyFlyoutLabelText{fill:var(--muted)!important}#program-topbar .seg-choice{padding:2px}#program-topbar .seg-choice span{height:28px;padding:0 var(--s3);font-size:12.5px}#program-topbar{flex-wrap:wrap;row-gap:6px}#program-body{position:relative}#program-body.code-wide #blockly-wrapper{visibility:hidden;flex:0 0 0}#program-body.code-wide #code-panel{border-left:0;flex:1;width:auto}#program-body.code-wide #code-view{font-size:13.5px}#program-body.python-mode #blockly-wrapper,#program-body.python-mode #code-panel{display:none}#py-editor{background:var(--canvas);flex-direction:column;flex:1;min-width:0;display:flex}#py-editor[hidden]{display:none}.py-head{padding:6px var(--s3);border-bottom:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.py-tabs{scrollbar-width:none;gap:2px;min-width:0;display:flex;overflow-x:auto}.py-tab{height:30px;padding:0 var(--s3);border-radius:var(--r-sm);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;font-size:12.5px}.py-tab:hover{color:var(--text);background:var(--surface-2)}.py-tab[aria-selected=true]{color:var(--text);background:var(--canvas);border-color:var(--line-strong)}.py-tab:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.py-head-gap{flex:1}.py-head .btn svg{width:14px;height:14px}#py-cm{flex:1;min-height:0;overflow:hidden}#py-cm .cm-editor{height:100%}.py-status{padding:6px var(--s3);border-top:1px solid var(--line);font-size:12px;font-family:var(--font-mono);color:var(--muted);background:var(--surface);min-height:30px}.py-status[data-kind=error]{color:#fca5a5}.py-status[data-kind=ok]{color:#86efac}#ai-panel{z-index:5;background:var(--surface);border-left:1px solid var(--line-strong);flex-direction:column;width:min(380px,100%);display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-12px 0 32px #03081273}#ai-panel[hidden]{display:none}.ai-head{align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);display:flex}.ai-head h2{align-items:center;gap:var(--s2);flex:1;font-size:14px;font-weight:800;display:flex}.ai-head h2 svg{width:16px;height:16px;color:var(--accent)}.ai-log{padding:var(--s3);gap:var(--s2);flex-direction:column;flex:1;display:flex;overflow-y:auto}.ai-msg{gap:var(--s2);max-width:92%;padding:var(--s2) var(--s3);border-radius:var(--r-lg);font-size:13px;line-height:1.5;display:grid}.ai-msg p{white-space:pre-line}.ai-msg.assistant{background:var(--surface-2);color:var(--text);border-bottom-left-radius:4px;align-self:flex-start}.ai-msg.user{background:var(--accent-soft);color:var(--text);border:1px solid #22d3ee4d;border-bottom-right-radius:4px;align-self:flex-end}.ai-msg.pending p{color:var(--accent)}.ai-msg.pending p:before{content:"";vertical-align:-1px;border:2px solid;border-right-color:#0000;border-radius:50%;width:10px;height:10px;margin-right:8px;animation:.8s linear infinite ai-spin;display:inline-block}.ai-msg.error{background:var(--stop-soft);color:#fecaca}.ai-msg .btn{justify-self:start}.ai-msg .btn svg{width:14px;height:14px}.ai-choices{flex-wrap:wrap;gap:6px;display:flex}.ai-choices .btn{white-space:normal;height:auto;min-height:30px;padding:4px var(--s3);text-align:left;flex:0 auto}.ai-compose{gap:var(--s2);padding:var(--s3);border-top:1px solid var(--line);display:grid}.ai-compose textarea{min-height:64px;max-height:160px}.ai-compose .btn{justify-self:end;min-width:96px}#ai-off{padding:var(--s3)}#ai-toggle-btn[aria-pressed=true]{color:var(--accent);background:var(--accent-soft)}#ai-toggle-btn svg{color:var(--accent)}@media (width<=900px){#program-body.python-mode{flex-direction:column}#ai-panel{width:100%}.py-head .btn{height:30px}}.run-source{border:1px solid var(--line-strong);height:26px;font:700 12px var(--font-ui);color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;padding:0 10px;display:inline-flex}.run-source:empty{display:none}.run-source[data-mode=python]{color:var(--run);border-color:#ffc93c80}.zelos-renderer .rs-light-block>image,.zelos-renderer .rs-light-block>g>image{filter:brightness(.12)}.rl{padding:var(--s6) var(--s4);color:var(--muted);font:700 13px var(--font-ui);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.rl-bot{width:64px;height:64px;overflow:visible}.rl-sm .rl-bot{width:40px;height:40px}.rl-lg .rl-bot{width:104px;height:104px}.rl-face,.rl-ear{fill:#7b96c6}.rl-stalk{stroke:#7b96c6;stroke-width:3.5px;stroke-linecap:round}.rl-tip{fill:var(--accent);transform-box:fill-box;transform-origin:50%;animation:1.2s ease-in-out infinite rl-tip}.rl-eyes circle{fill:var(--canvas);transform-box:fill-box;transform-origin:50%;animation:3.2s infinite rl-blink}.rl-head{transform-box:fill-box;transform-origin:50% 100%;animation:1.2s ease-in-out infinite rl-bob}.rl-ear-l{transform-box:fill-box;transform-origin:100%;animation:1.2s ease-in-out infinite rl-ear}.rl-ear-r{transform-box:fill-box;transform-origin:0;animation:1.2s ease-in-out infinite reverse rl-ear}.rl-dots{gap:6px;display:flex}.rl-dots i{background:var(--accent);opacity:.25;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite rl-dot}.rl-dots i:nth-child(2){animation-delay:.15s}.rl-dots i:nth-child(3){animation-delay:.3s}@keyframes rl-bob{0%,to{transform:translateY(0)rotate(0)}25%{transform:translateY(-3px)rotate(-3deg)}75%{transform:translateY(-3px)rotate(3deg)}}@keyframes rl-tip{0%,to{opacity:.45;filter:none;transform:scale(.85)}50%{opacity:1;filter:drop-shadow(0 0 4px var(--accent));transform:scale(1.25)}}@keyframes rl-blink{0%,44%,50%,to{transform:scaleY(1)}47%{transform:scaleY(.1)}}@keyframes rl-ear{0%,to{transform:scaleX(1)}50%{transform:scaleX(.6)}}@keyframes rl-dot{0%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}@media (prefers-reduced-motion:reduce){.rl-head,.rl-tip,.rl-eyes circle,.rl-ear-l,.rl-ear-r,.rl-dots i{animation:none}.rl-dots i{opacity:.7}}#app-loader{z-index:1000;background:var(--bg);transition:opacity .35s var(--ease);place-items:center;display:grid;position:fixed;inset:0}#app-loader .rl{color:var(--text-2);font-size:14px}#app-loader.rl-done{opacity:0;pointer-events:none}#brick[data-hub=vexiq] #brick-screen{image-rendering:auto;background:#0d1b2a;border:3px solid #1d2b3a}#brick[data-hub=v5] #brick-screen{image-rendering:auto;cursor:pointer;background:#000;border:4px solid #2a2f36}#brick[data-hub=matrix] #brick-screen{image-rendering:auto;background:#02060c;border:3px solid #12324a;width:72%;margin:0 auto;display:block}.vex-buttons .check{color:#10181f;background:#e9eef4;border-color:#c7ced8;border-radius:50%;width:36px;height:36px}.vex-buttons .check svg{stroke-width:2.6px}.r4-buttons button{font:800 12px var(--font-ui)}.r4-leds{gap:6px;display:inline-flex}.r4-leds i{background:#23303d;border-radius:50%;width:10px;height:10px;box-shadow:inset 0 0 0 1px #ffffff26}#brick[data-hub=matrix] .brick-led{display:none}.invite-link{align-items:center;gap:var(--s2);margin:0 0 var(--s3);padding:var(--s2) var(--s3);border:1px dashed var(--line-strong);border-radius:var(--r);background:var(--surface-2);flex-wrap:wrap;display:flex}.invite-link input{background:var(--surface);flex:1;min-width:200px;height:32px;font-size:12px}.coach-find input{width:220px;max-width:100%;height:34px}.coach-table td small{color:var(--muted)}.coach-table tr[hidden]{display:none}.dot-ok{background:var(--ok,#34d399);vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.challenge-list{margin:var(--s3) 0;gap:var(--s2);padding:0;list-style:none;display:grid}.challenge-row{justify-content:space-between;align-items:flex-start;gap:var(--s3);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2);display:flex}.challenge-row small{color:var(--muted);margin-top:2px;display:block}.challenge-top{color:var(--text-2);margin:6px 0 0;padding-left:18px;font-size:12px}.challenge-top .mono{color:var(--accent);margin-left:4px}.coach-new-challenge{margin-top:var(--s3)}.coach-new-challenge summary{cursor:pointer;color:var(--accent);font-weight:800}.challenge-form{gap:var(--s3);margin-top:var(--s3);display:grid}.cc-grid{gap:var(--s3);grid-template-columns:2fr 1.4fr 1fr;display:grid}.cc-classes{gap:var(--s2) var(--s4);border:1px solid var(--line);border-radius:var(--r);padding:var(--s2) var(--s3);flex-wrap:wrap;margin:0;display:flex}.cc-classes legend{color:var(--text-2);padding:0 4px;font-size:12px;font-weight:700}.cc-classes label{align-items:center;gap:6px;font-weight:600;display:flex}.cc-classes small{color:var(--muted)}@media (width<=700px){.cc-grid{grid-template-columns:1fr}.challenge-row{flex-direction:column}}
