:root{--bg:#eef2f7;--surface:#ffffff;--sunk:#f5f7fb;--ink:#14213d;--muted:#56627a;--line:#d3dae6;--accent:#f2b705;--accent-ink:#14213d;--drive:#2457c5;--turn:#d9661a;--arm:#cf3434;--sense:#1a8f62;--misc:#6b7690;--field:#f4f8f2;--fieldgrid:#dfe7dc;--code-bg:#101a30;--code-fg:#dfe6f5;--code-ins:#2fbf71;--code-del:#ff5c5c;--code-kw:#ffcf4a;--code-str:#8fe3b4;--code-num:#ffa36b;--code-com:#7f8db0;--display:"Chakra Petch", "Trebuchet MS", sans-serif;--body:"Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, Menlo, Consolas, monospace}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#0c1322;--surface:#141e33;--sunk:#101829;--ink:#e7ecf6;--muted:#9ba7bf;--line:#27344f;--drive:#729cff;--turn:#ff9b52;--arm:#ff6f6f;--sense:#45d29b;--misc:#9aa5bd;--field:#13231c;--fieldgrid:#1f3529;--code-bg:#070c18;color-scheme:dark}}:root[data-theme=dark]{--bg:#0c1322;--surface:#141e33;--sunk:#101829;--ink:#e7ecf6;--muted:#9ba7bf;--line:#27344f;--drive:#729cff;--turn:#ff9b52;--arm:#ff6f6f;--sense:#45d29b;--misc:#9aa5bd;--field:#13231c;--fieldgrid:#1f3529;--code-bg:#070c18;color-scheme:dark}*{box-sizing:border-box}html{color-scheme:light}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--body);padding:env(safe-area-inset-top,0px) 16px calc(48px + env(safe-area-inset-bottom,0px))}img{max-width:100%}[hidden]{display:none!important}.wrap{max-width:1280px;margin:0 auto}h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0;line-height:1.15}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.wrap>header{padding-block:20px 0;display:flex;flex-direction:column;gap:10px}.eyebrow{font:600 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}#team{font:700 clamp(28px,5vw,44px)/1.1 var(--display);border:0;background:transparent;width:100%;padding:2px 0;border-bottom:2px dashed transparent}#team:hover,#team:focus{border-bottom-color:var(--line);outline:none}.beam{height:18px;border-radius:9px;background:var(--accent);background-image:radial-gradient(circle at 9px 9px,var(--bg) 0 4.5px,transparent 5px);background-size:24px 18px;background-repeat:repeat-x;background-position:3px 0}nav{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}nav button{border:0;background:transparent;padding:10px 14px;font:700 15px var(--display);letter-spacing:.03em;color:var(--muted);border-bottom:4px solid transparent;cursor:pointer}nav button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}main{display:grid;gap:20px;margin-top:20px}@media (min-width:980px){main{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:start}.side{position:sticky;top:calc(env(safe-area-inset-top,0px) + 12px)}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px;min-width:0}.stack{display:flex;flex-direction:column;gap:16px;min-width:0}.muted{color:var(--muted)}.small{font-size:14px}.runs{display:flex;gap:8px;flex-wrap:wrap}.run{border:2px solid var(--line);background:var(--sunk);border-radius:8px;padding:6px 12px;cursor:pointer;font:700 15px var(--display)}.run[aria-pressed=true]{border-color:var(--ink);background:var(--accent);color:var(--accent-ink)}.run.add{border-style:dashed;color:var(--muted);background:transparent}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:end}label.f{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);font-weight:700}label.f input,label.f select,.step input,.step select{background:var(--sunk);border:1px solid var(--line);border-radius:6px;padding:7px 9px;color:var(--ink);font-weight:400;font-size:15px}label.f input[type=number]{width:96px}label.grow{flex:1 1 220px}label.grow input{width:100%}.check{display:flex;gap:8px;align-items:center;font-size:15px}ol.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;counter-reset:s}.step{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:8px;align-items:center;background:var(--sunk);border:1px solid var(--line);border-left:6px solid var(--c);border-radius:8px;padding:6px 8px}.step .n{font:600 13px var(--mono);color:var(--muted);text-align:center}.step .body{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0;min-height:30px}.step .kind{font:700 13px var(--display);color:var(--c);letter-spacing:.04em;text-transform:uppercase;min-width:6.4em}.step .fld{display:inline-flex;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:0 8px 0 0;cursor:text}.step .fld:focus-within{border-color:var(--c);box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 30%,transparent)}.step .fld input{border:0;background:transparent;width:4.1em;height:28px;padding:0 2px 0 8px;font:500 14px var(--mono);text-align:right;outline:none;-moz-appearance:textfield}.step .fld input::-webkit-outer-spin-button,.step .fld input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.step .fld .unit{font:12px var(--mono);color:var(--muted);padding-left:3px}.step select{padding:0 6px;font-size:14px;height:30px}.step .hint{font-size:13px;color:var(--muted)}.tools{display:flex;gap:2px}.icon{border:1px solid transparent;background:transparent;border-radius:6px;width:26px;height:28px;cursor:pointer;color:var(--muted);font:600 15px var(--mono)}.icon:hover{border-color:var(--line);color:var(--ink)}.empty{border:2px dashed var(--line);border-radius:8px;padding:18px;text-align:center;color:var(--muted)}.palette{display:flex;flex-wrap:wrap;gap:8px}.palette button{border:0;border-radius:999px;padding:7px 13px;cursor:pointer;font:700 14px var(--body);background:color-mix(in srgb,var(--c) 14%,var(--surface));color:var(--c);box-shadow:inset 0 0 0 1.5px var(--c)}.palette button:hover{background:var(--c);color:var(--surface)}.warn{font-size:14px;color:var(--arm);font-weight:700}.btn{border:2px solid var(--ink);background:var(--surface);border-radius:8px;padding:8px 14px;cursor:pointer;font:700 14px var(--body)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.danger{border-color:var(--arm);color:var(--arm)}a.btn{text-decoration:none;color:var(--ink);display:inline-block}.fieldhead,.codehead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}canvas{display:block;width:100%;max-width:100%;border-radius:6px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-top:8px}.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}.code{background:var(--code-bg);color:var(--code-fg);border-radius:8px;overflow:auto;max-height:520px;margin:0;padding:14px 16px;font:13px/1.6 var(--mono);-moz-tab-size:4;tab-size:4}.code .k{color:var(--code-kw)}.code .s{color:var(--code-str)}.code .d{color:var(--code-num)}.code .c{color:var(--code-com);font-style:italic}.toast{font-size:14px;color:var(--sense);font-weight:700}.lesson h3{font-size:20px;margin-bottom:6px}.lesson p,.lesson li{max-width:65ch}.lesson ol,.lesson ul{padding-left:22px;margin:6px 0}table{border-collapse:collapse;font-size:15px;width:100%}th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font:700 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}td code,p code,li code{font:13px var(--mono);background:var(--sunk);padding:1px 5px;border-radius:4px}.tablewrap{overflow-x:auto}.calc{display:grid;gap:12px}.result{font:600 15px var(--mono)}textarea{width:100%;min-height:90px;background:var(--sunk);border:1px solid var(--line);border-radius:6px;padding:8px;font:12px var(--mono)}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.hub{display:flex;flex-direction:column;gap:12px}.hubhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dot{width:12px;height:12px;border-radius:50%;background:var(--misc);flex:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--misc) 25%,transparent)}.dot.connecting{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent);animation:pulse 1s infinite alternate}.dot.connected{background:var(--sense);box-shadow:0 0 0 3px color-mix(in srgb,var(--sense) 30%,transparent)}.dot.running{background:var(--drive);box-shadow:0 0 0 3px color-mix(in srgb,var(--drive) 30%,transparent);animation:pulse .6s infinite alternate}@keyframes pulse{to{opacity:.45}}.hubname{font:700 16px var(--display);letter-spacing:.02em}.hubmeta{font:12px var(--mono);color:var(--muted)}.hubhead .spacer{flex:1}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.go{background:var(--sense);border-color:var(--sense);color:var(--surface)}.progress{height:8px;border-radius:4px;background:var(--sunk);overflow:hidden;border:1px solid var(--line)}.progress span{display:block;height:100%;background:var(--accent);transition:width .15s}.notice{border-radius:8px;padding:10px 12px;font-size:14px;background:var(--sunk);border:1px solid var(--line)}.notice.err{border-color:var(--arm);color:var(--arm);white-space:pre-wrap;font-family:var(--mono);font-size:13px}.notice.onhub{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.chip{font:700 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:var(--accent);color:var(--accent-ink)}.chip.test{background:color-mix(in srgb,var(--turn) 22%,var(--surface));color:var(--turn)}.console{background:var(--code-bg);color:var(--code-fg);border-radius:8px;margin:0;padding:10px 12px;font:12px/1.5 var(--mono);max-height:160px;overflow:auto;white-space:pre-wrap;min-height:44px}.console:empty:before{content:"Messages from the robot (print and errors) show up here.";color:var(--code-com)}.consolehead{display:flex;justify-content:space-between;align-items:center}.linkbtn{border:0;background:none;color:var(--muted);text-decoration:underline;cursor:pointer;font-size:13px;padding:0}@media (prefers-reduced-motion:reduce){.dot{animation:none!important}}fieldset{margin:0;min-width:0}fieldset.plain{border:0;padding:0}fieldset:disabled .palette,fieldset:disabled .tools{opacity:.4}.editing{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--sense);margin-left:6px;vertical-align:2px;box-shadow:0 0 0 2px var(--surface)}.topline{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.topline .spacer{flex:1}.pill{display:inline-flex;align-items:center;gap:6px;font:600 12px var(--mono);padding:4px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--muted)}.pill i{width:8px;height:8px;border-radius:50%;background:var(--misc)}.pill.online i{background:var(--sense)}.pill.saving i{background:var(--accent)}.pill.offline{color:var(--arm);border-color:var(--arm)}.pill.offline i{background:var(--arm)}.banner{border-radius:8px;padding:10px 14px;font-weight:700;background:color-mix(in srgb,var(--accent) 22%,var(--surface));border:1px solid var(--accent)}.toastbar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom,0px));max-width:min(560px,calc(100vw - 32px));background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:8px;font-size:14px;z-index:10;box-shadow:0 6px 20px #00000040}#team[readonly]{cursor:default}.join{max-width:560px}.jointitle{font-size:clamp(28px,6vw,40px);margin:4px 0 6px}.joincard{margin-top:20px}.joincard label.f input{width:100%;font-size:16px}.codeinput{font:600 22px var(--mono)!important;letter-spacing:.12em;text-transform:uppercase}.teamcode{font:700 28px var(--mono);letter-spacing:.12em;padding:6px 14px;border-radius:8px;background:var(--sunk);border:2px dashed var(--line);-webkit-user-select:all;user-select:all}ul.deleted{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}ul.deleted li{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;background:var(--sunk);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.loading{padding-block:80px;text-align:center;color:var(--muted)}input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}.histhead{display:flex;justify-content:space-between;align-items:end;gap:12px;flex-wrap:wrap}.histhead select{max-width:min(100%,360px)}.histmeta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.chip.act-create,.chip.act-restore{background:color-mix(in srgb,var(--sense) 22%,var(--surface));color:var(--sense)}.chip.act-delete{background:color-mix(in srgb,var(--arm) 20%,var(--surface));color:var(--arm)}.chip.act-edit{background:color-mix(in srgb,var(--drive) 18%,var(--surface));color:var(--drive)}ul.difflist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:15px}ul.difflist li{display:flex;gap:10px;align-items:baseline;padding:4px 10px;border-radius:6px;background:var(--sunk)}ul.difflist .mark{font:700 14px var(--mono);width:12px;flex:none;text-align:center}.d-add{box-shadow:inset 3px 0 0 var(--sense)}.d-add .mark{color:var(--sense)}.d-remove{box-shadow:inset 3px 0 0 var(--arm)}.d-remove .mark{color:var(--arm)}.d-change{box-shadow:inset 3px 0 0 var(--turn)}.d-change .mark{color:var(--turn)}.d-move{box-shadow:inset 3px 0 0 var(--drive)}.d-move .mark{color:var(--drive)}.codediff{max-height:360px;padding:8px 0}.codediff div{padding:0 14px;white-space:pre}.codediff .op{display:inline-block;width:18px;color:var(--code-com)}.codediff .ins{background:color-mix(in srgb,var(--code-ins) 22%,transparent)}.codediff .del{background:color-mix(in srgb,var(--code-del) 22%,transparent)}.codediff .ins .op{color:var(--code-ins)}.codediff .del .op{color:var(--code-del)}.whoami{font:600 12px var(--mono);color:var(--muted)}.fieldtools{align-items:center}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;background:var(--surface);padding:7px 12px;font:600 14px var(--body);cursor:pointer;color:var(--muted)}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-checked=true]{background:var(--accent);color:var(--accent-ink)}.fieldcanvas{touch-action:none;border-radius:6px}.fieldcanvas.tool-move{cursor:grab}.fieldcanvas.tool-area,.fieldcanvas.tool-line,.fieldcanvas.tool-place{cursor:crosshair}.subhead{font-size:16px}table.fieldtable{font-size:14px}table.fieldtable td{padding:3px 6px;border-bottom:1px solid var(--line)}table.fieldtable input{width:100%;min-width:9em;background:var(--sunk);border:1px solid var(--line);border-radius:6px;padding:5px 7px;color:var(--ink);font:inherit}table.fieldtable input.numcell,.arearow input.numcell{min-width:0;width:5.5em;font-family:var(--mono)}table.fieldtable tr.sel td{background:color-mix(in srgb,var(--drive) 12%,transparent)}.arearow{padding:6px 8px;border-radius:8px}.arearow.sel{background:color-mix(in srgb,var(--drive) 12%,transparent)}fieldset:disabled .linkbtn{display:none}
