:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#f4f6fa;--color-header:#e6ebf3;--color-surface:#fff;--color-surface-sunken:#f6f8fb;--color-hover:#f1f4f9;--color-hover-strong:#e1e6ee;--color-selected:#eef3fb;--color-border:#d3dae5;--color-border-soft:#e3e8ef;--color-switch-off:#c9d0dc;--color-text:#2f3647;--color-text-muted:#5e6679;--color-text-faint:#8a91a3;--color-text-scratch:#575e75;--color-accent:#4c97ff;--color-accent-hover:#4280d7;--color-accent-active:#3373cc;--color-link:#3373cc;--color-accent-strong:#2a5fa8;--color-accent-soft:#eaf2ff;--color-accent-ring:#4c97ff38;--color-on-accent:#fff;--color-on-accent-soft:#ffffff38;--color-on-accent-divider:#ffffff59;--color-danger:#d93f47;--color-danger-hover:#c0343c;--color-danger-text:#c8323a;--color-danger-soft:#fdf0f0;--color-success:#59c059;--color-warning:#ffab19;--color-success-bg:#ebf8ec;--color-success-border:#b9e3bd;--color-success-text:#1e5e27;--color-warning-bg:#fff6e3;--color-warning-border:#f3d59a;--color-warning-text:#7a4d00;--color-error-bg:#fdeeee;--color-error-border:#f2c0c3;--color-error-text:#9b2229;--color-grid:#d8d8d8;--color-scrim:#21293a52;--color-pointer:#464c5c6b;--color-pointer-strong:#2f36479e;--color-pointer-pad:#2f364724;--shadow-popover:0 12px 32px #18223829;--shadow-modal:0 24px 64px #141e3247;--color-cat-looks:#96f;--color-cat-looks-edge:#774dcb;--color-cat-data:#ff8c1a;--color-cat-data-edge:#db6e00;--color-cat-list:#ff661a;--color-cat-list-edge:#e64d00;--color-cat-event:#ffbf00;--color-cat-event-edge:#c90;--color-cat-more:#ff6680;--color-cat-more-edge:#f35;--color-cat-motion:#4c97ff;--color-cat-motion-edge:#3373cc;--color-cat-pen:#0fbd8c;--color-cat-pen-edge:#0b8e69;--dark-header:#0b0b0b;--dark-bg:#141414;--dark-canvas:#1e1e1e;--dark-flyout:#2b2b2b;--dark-surface:#353535;--dark-hover:#404040;--dark-hover-strong:#4d4d4d;--dark-selected:#535353;--dark-border:#5c5c5c;--dark-border-soft:#444;--dark-text:#f5f5f5;--dark-text-muted:#c2c2c2;--dark-text-faint:#929292;--dark-grid:#5a5a5a;--dark-link:#7fb2ff;--font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;--font-size-base:14px;--font-size-caption:13px;--font-size-small:12px}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:var(--dark-bg);--color-header:var(--dark-header);--color-surface:var(--dark-surface);--color-surface-sunken:var(--dark-bg);--color-hover:var(--dark-hover);--color-hover-strong:var(--dark-hover-strong);--color-selected:var(--dark-selected);--color-border:var(--dark-border);--color-border-soft:var(--dark-border-soft);--color-switch-off:var(--dark-hover-strong);--color-text:var(--dark-text);--color-text-muted:var(--dark-text-muted);--color-text-faint:var(--dark-text-faint);--color-text-scratch:var(--dark-text-muted);--color-link:#7fb2ff;--color-accent-strong:#9cc3ff;--color-accent-soft:#243650;--color-danger-text:#ff8a8f;--color-danger-soft:#3a2326;--color-success-bg:#1f3324;--color-success-border:#2f5a37;--color-success-text:#a5e3ad;--color-warning-bg:#3a2f17;--color-warning-border:#6b5424;--color-warning-text:#f5cf7f;--color-error-bg:#3a2124;--color-error-border:#6e3035;--color-error-text:#ff9aa0;--color-grid:var(--dark-grid);--color-scrim:#00000080;--shadow-popover:0 12px 32px #00000073;--shadow-modal:0 24px 64px #0000008c;--color-pointer:#dce2ee73;--color-pointer-strong:#ebf0fab3;--color-pointer-pad:#ebf0fa29}*,:before,:after{box-sizing:border-box}body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.45}a{color:var(--color-link);text-decoration:none}a:hover{color:var(--color-accent-strong);text-decoration:underline}button{white-space:nowrap;cursor:pointer;font-family:inherit}input:not(.blocklyHtmlInput){font:inherit}input::placeholder{color:var(--color-text-faint)}.app{--palette-width:310px;--strip-height:55px;flex-direction:column;min-width:760px;height:100vh;display:flex}.header{background:var(--color-header);border-bottom:1px solid var(--color-border);flex-shrink:0;align-items:stretch;height:56px;display:flex}.logo{flex-shrink:0;align-items:center;margin:0;padding:0 16px;display:flex}.logo-yellow{fill:var(--color-cat-event);stroke:var(--color-cat-event-edge)}.logo-blue{fill:var(--color-cat-motion);stroke:var(--color-cat-motion-edge)}.logo-text{fill:var(--color-on-accent);font-size:19px;font-weight:700}.tabs{scrollbar-width:none;flex:1;align-items:flex-end;gap:2px;min-width:0;margin-bottom:-1px;padding:0 8px;display:flex;overflow:auto hidden}.tab{min-width:96px;max-width:200px;height:38px;color:var(--color-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:9px 9px 0 0;flex:0 auto;align-items:center;gap:4px;margin-bottom:1px;padding:0 6px 0 14px;display:flex}.tab:hover{background:var(--color-hover);color:var(--color-text)}.tab.active{background:var(--color-surface);border-color:var(--color-border);border-bottom-color:var(--color-surface);min-width:150px;max-width:220px;height:44px;color:var(--color-text);cursor:default;border-radius:10px 10px 0 0;flex-shrink:0;margin-bottom:0}.tab-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tab.active .tab-name{font-weight:600}.icon-btn{width:24px;height:24px;color:var(--color-text-faint);background:0 0;border:0;border-radius:6px;flex-shrink:0;place-items:center;padding:0;font-size:17px;line-height:1;display:grid}.icon-btn:hover{background:var(--color-hover-strong);color:var(--color-text)}.tab.active .icon-btn{color:var(--color-text-muted)}.tab.active .icon-btn:hover{background:var(--color-selected)}.tab .icon-btn svg{display:block}.new-tab{width:30px;height:30px;color:var(--color-text-muted);border-radius:8px;flex-shrink:0;align-self:flex-end;margin:0 0 7px 4px;font-size:20px}.header-actions{flex-shrink:0;align-items:center;padding:0 14px;display:flex}.copy-split{display:flex}.theme-toggle{width:36px;height:36px;color:var(--color-text-muted);border-radius:9px;margin-right:8px}.copy-main,.copy-caret{background:var(--color-accent);height:36px;color:var(--color-on-accent);border:0}.copy-main:hover,.copy-caret:hover{background:var(--color-accent-hover)}.copy-main:active,.copy-caret:active{background:var(--color-accent-active)}.copy-main{border-radius:9px 0 0 9px;align-items:center;gap:8px;padding:0 10px 0 14px;font-size:14px;font-weight:600;display:flex}.copy-badge{background:var(--color-on-accent-soft);font-size:var(--font-size-small);border-radius:5px;padding:1px 6px}.copy-caret{border-left:1px solid var(--color-on-accent-divider);border-radius:0 9px 9px 0;place-items:center;width:32px;padding:0;display:grid}.backdrop{z-index:39;position:fixed;inset:0}.popover{z-index:40;background:var(--color-surface);border:1px solid var(--color-border-soft);box-shadow:var(--shadow-popover);border-radius:12px;position:fixed}.menu{width:220px;padding:6px}.menu-item{width:100%;height:34px;color:var(--color-text);text-align:left;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;padding:0 10px;font-size:14px;display:flex}.menu-item:hover{background:var(--color-selected)}.menu-item.danger{color:var(--color-danger-text)}.menu-item.danger:hover{background:var(--color-danger-soft)}.menu-item:disabled,.menu-item:disabled:hover{color:var(--color-text-faint);cursor:default;background:0 0}.menu-hint{color:var(--color-text-faint);font-size:var(--font-size-small)}.menu-sep{background:var(--color-border-soft);height:1px;margin:4px 6px}.panel{flex-direction:column;gap:10px;width:280px;padding:14px;display:flex}.panel-title{font-weight:700}.panel-text{font-size:var(--font-size-caption);color:var(--color-text-muted);margin-top:-4px}.actions{justify-content:flex-end;gap:8px;display:flex}.btn{border:1px solid var(--color-border);background:var(--color-surface);height:32px;color:var(--color-text);font-size:var(--font-size-caption);border-radius:8px;padding:0 12px;font-weight:600}.btn:hover{background:var(--color-bg)}.btn:disabled{opacity:.5;cursor:default}.btn-primary,.btn-danger{color:var(--color-on-accent);border:0;padding:0 14px}.btn-primary{background:var(--color-accent)}.btn-primary:hover{background:var(--color-accent-hover)}.btn-danger{background:var(--color-danger)}.btn-danger:hover{background:var(--color-danger-hover)}.btn-lg{height:36px;font-size:14px}.field{font-size:var(--font-size-caption);color:var(--color-text-muted);flex-direction:column;gap:6px;font-weight:600;display:flex}.input{border:1px solid var(--color-border);height:36px;color:var(--color-text);background:var(--color-surface);border-radius:8px;outline:none;padding:0 10px;font-size:14px;font-weight:400}.input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-ring)}.hint{font-size:var(--font-size-small);color:var(--color-text-muted);text-wrap:pretty}.copy-menu{flex-direction:column;gap:10px;width:268px;padding:12px;display:flex}.row{justify-content:space-between;align-items:baseline;display:flex}.label{font-size:var(--font-size-caption);color:var(--color-text-muted);font-weight:600}.fine{align-items:center;gap:10px;display:flex}.slider{min-width:0;accent-color:var(--color-accent);cursor:pointer;flex:1}.fine-value{text-align:center;min-width:46px;font-size:var(--font-size-caption);font-variant-numeric:tabular-nums;font-weight:600}.copy-menu .menu-sep{margin:0 -12px}.download{color:var(--color-text);text-align:left;background:0 0;border:0;border-radius:8px;flex-direction:column;align-items:flex-start;gap:1px;margin:-2px -4px -4px;padding:7px 8px;font-size:14px;display:flex}.download:hover{background:var(--color-selected)}.download span{font-size:var(--font-size-small);color:var(--color-text-muted);text-overflow:ellipsis;max-width:100%;overflow:hidden}.toolbar{z-index:41;width:var(--palette-width);height:var(--strip-height);background:var(--color-surface);border-bottom:1px solid var(--color-border-soft);align-items:center;gap:8px;padding:10px;display:flex;position:absolute;top:0;left:0}.zoom-level{z-index:41;border:1px solid var(--color-border);background:var(--color-surface);min-width:44px;color:var(--color-text-muted);font-size:var(--font-size-small);font-variant-numeric:tabular-nums;text-align:center;cursor:default;border-radius:10px;padding:2px 8px;font-weight:600;position:absolute;transform:translate(-50%,calc(-100% - 8px))}.sidebar-edge{top:0;bottom:0;left:calc(var(--palette-width) - 1px);z-index:41;background:var(--color-border);pointer-events:none;width:1px;position:absolute}.search-wrap{flex:1;min-width:0;display:flex;position:relative}.search-icon{color:var(--color-text-faint);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search{border:1px solid var(--color-border);background:var(--color-surface-sunken);min-width:0;height:34px;color:var(--color-text);border-radius:8px;outline:none;flex:1;padding:0 10px;font-size:14px;padding-left:32px!important}.search:focus{border-color:var(--color-accent);background:var(--color-surface);box-shadow:0 0 0 3px var(--color-accent-ring)}.stage{background:var(--color-surface);flex-direction:column;flex:1;min-height:0;display:flex}.workspace-wrap{isolation:isolate;flex:1;min-height:0;position:relative}.workspace{position:absolute;inset:0}.empty-hint{top:0;bottom:0;right:0;left:var(--palette-width);pointer-events:none;z-index:1;place-items:center;display:grid;position:absolute}.empty-hint strong{color:var(--color-text-scratch);font-size:15px}.workspace .blocklyToolbox{--colour-toolbox:var(--color-surface);--colour-toolboxSelected:var(--color-selected);--colour-toolboxText:var(--color-text-muted);border-color:var(--color-border-soft);top:var(--strip-height)!important;height:calc(100% - var(--strip-height))!important}.workspace .blocklyToolboxCategory{border-radius:8px;margin:2px 4px;padding:6px 0}.workspace .blocklyToolboxCategory:hover{background:var(--color-bg);color:inherit}.workspace .blocklyToolboxSelected,.workspace .blocklyToolboxSelected:hover{background:var(--color-selected)}.workspace .blocklyToolboxCategoryLabel{width:54px;font-size:11px;line-height:1.15}.workspace-wrap.ext .blocklyToolboxCategoryLabel{width:86px}.workspace .blocklyToolboxSelected .blocklyToolboxCategoryLabel{color:var(--color-text);font-weight:700}.workspace .ext-sep{justify-content:center;padding:6px 0;display:flex}.ext-toggle{border:1px solid var(--color-border);background:var(--color-surface);width:34px;height:24px;color:var(--color-text-muted);border-radius:12px;place-items:center;padding:0;display:grid}.ext-toggle:hover{border-color:var(--color-accent);color:var(--color-accent-strong)}.ext-toggle svg{transition:transform .25s}.ext-toggle.open svg{transform:rotate(180deg)}@keyframes ext-slide-in{0%{opacity:0;max-height:0}to{opacity:1;max-height:90px}}@keyframes ext-slide-out{0%{opacity:1;max-height:90px}to{opacity:0;max-height:0}}.workspace-wrap.ext-opening .ext-sep~*{animation:.35s both ext-slide-in;overflow:hidden}.workspace-wrap.ext-closing .ext-sep~*{animation:.25s both ext-slide-out;overflow:hidden}.workspace .categoryIconBubble{border:1px solid var(--color-cat-pen-edge);background:var(--color-cat-pen);border-radius:50%;width:22px;height:22px;padding:3px;display:block}.help-btn{z-index:41;border:1px solid var(--color-border);background:var(--color-surface);width:38px;height:38px;color:var(--color-text-muted);border-radius:50%;place-items:center;padding:0;font-size:18px;font-weight:700;display:grid;position:absolute;bottom:14px;left:12px}.help-btn:hover{color:var(--color-accent-strong);border-color:var(--color-accent)}.help-btn.hidden{visibility:hidden}.workspace-wrap.ext .help-btn{left:28px}.workspace .blocklyToolbox{padding-bottom:64px}.tutorial-blocker{z-index:60;position:fixed;inset:0}.tutorial{z-index:62;background:var(--color-surface);border:1px solid var(--color-border-soft);width:340px;box-shadow:var(--shadow-modal);border-radius:14px;flex-direction:column;gap:6px;padding:16px 18px;transition:left .35s,top .35s,transform .35s,opacity .35s;display:flex;position:fixed}.tutorial.folded{opacity:0;transform:scale(.1)}.tutorial.slow{transition-duration:.7s}.tutorial.placing{transition:none}.tutorial-head{justify-content:space-between;align-items:center;margin:-4px -8px 0 0;display:flex}.tutorial-step{font-size:var(--font-size-small);color:var(--color-accent-strong);text-transform:uppercase;letter-spacing:.04em;font-weight:700}.tutorial-title{font-size:17px;font-weight:700}.tutorial-text{color:var(--color-text-muted);text-wrap:pretty;font-size:14px}.tutorial-foot{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.tutorial-ghost{z-index:61;pointer-events:none;opacity:.85;filter:drop-shadow(0 6px 10px var(--color-scrim));transition-property:transform;transition-timing-function:ease-in-out;position:fixed;top:0;left:0}.fake-cursor{z-index:63;pointer-events:none;width:0;height:0;transition-property:transform;transition-timing-function:ease-in-out;position:fixed;top:0;left:0}.fake-cursor-shape{background:var(--color-pointer);transition:width .2s,height .2s,border-radius .2s,background-color .15s,transform .15s;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}.fake-cursor-shape.beam{background:var(--color-pointer-strong)}.fake-cursor-shape.pad{background:var(--color-pointer-pad)}.fake-cursor.pressed .fake-cursor-shape{background:var(--color-pointer-strong);transform:translate(-50%,-50%)scale(.85)}.fake-cursor.pressed .fake-cursor-shape.pad{background:var(--color-pointer-pad);transform:translate(-50%,-50%)scale(.96)}.search.demo-focus{border-color:var(--color-accent);background:var(--color-surface);box-shadow:0 0 0 3px var(--color-accent-ring)}.copy-main.demo-press{background:var(--color-accent-active)}.tooltip{z-index:100;background:var(--color-text);color:var(--color-bg);font-size:var(--font-size-small);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-popover);border-radius:8px;padding:7px 11px;font-weight:600;line-height:1.3;position:fixed}.toast{z-index:45;background:var(--color-surface);border:1px solid var(--color-border-soft);max-width:min(420px,100vw - 28px);box-shadow:var(--shadow-popover);border-radius:12px;align-items:center;gap:12px;padding:10px 10px 10px 14px;display:flex;position:fixed;top:64px;right:14px}.toast.success{background:var(--color-success-bg);border-color:var(--color-success-border);color:var(--color-success-text)}.toast.warning{background:var(--color-warning-bg);border-color:var(--color-warning-border);color:var(--color-warning-text)}.toast.error{background:var(--color-error-bg);border-color:var(--color-error-border);color:var(--color-error-text)}.toast .toast-body span,.toast .icon-btn{color:inherit}.toast .toast-body span{opacity:.85}.toast .icon-btn:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.toast.at-pointer{z-index:100001;right:auto}.toast-icon{flex-shrink:0}.toast-body{flex-direction:column;min-width:0;display:flex}.toast-body strong{font-size:14px}.toast-body span{font-size:var(--font-size-caption);color:var(--color-text-muted);text-wrap:pretty}.dot{border:1px solid #0000;border-radius:50%;flex-shrink:0;width:10px;height:10px}.dot.success{background:var(--color-success)}.dot.warning{background:var(--color-warning)}.dot.error{background:var(--color-danger)}.scrim{z-index:50;background:var(--color-scrim);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:var(--color-surface);width:min(420px,100%);box-shadow:var(--shadow-modal);border-radius:14px;overflow:hidden}.modal.wide{width:min(560px,100%)}.modal-head{align-items:center;gap:10px;padding:18px 20px 12px;display:flex}.modal-head .dot{width:12px;height:12px}.modal-title{flex:1;font-size:17px;font-weight:700}.modal-head .icon-btn{width:28px;height:28px;font-size:18px}.modal-body{flex-direction:column;gap:8px;padding:0 20px;display:flex}.modal-body .input{height:38px;padding:0 12px;font-size:15px}.modal-foot{justify-content:flex-end;gap:8px;padding:16px 20px 18px;display:flex}.dot.looks{background:var(--color-cat-looks);border-color:var(--color-cat-looks-edge)}.dot.data{background:var(--color-cat-data);border-color:var(--color-cat-data-edge)}.dot.list{background:var(--color-cat-list);border-color:var(--color-cat-list-edge)}.dot.event{background:var(--color-cat-event);border-color:var(--color-cat-event-edge)}.dot.more{background:var(--color-cat-more);border-color:var(--color-cat-more-edge)}.dot.motion{background:var(--color-cat-motion);border-color:var(--color-cat-motion-edge)}.preview{border:1px solid var(--color-border-soft);background-color:var(--color-surface-sunken);background-image:radial-gradient(var(--color-grid) 1px, transparent 1.3px);background-size:27px 27px;border-radius:10px;place-items:center;height:132px;margin-bottom:6px;display:grid;overflow:hidden}.preview svg{max-width:100%}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--color-border);background:var(--color-surface);height:28px;color:var(--color-text);font-size:var(--font-size-small);border-radius:14px;padding:0 10px;font-weight:600}.chip:hover{background:var(--color-bg)}.footer{background:var(--color-bg);border-top:1px solid var(--color-border);font-size:var(--font-size-caption);color:var(--color-text-muted);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:6px 24px;padding:9px 16px;display:flex}.footer-credits{text-wrap:pretty;flex:520px;min-width:0}.footer-repo{flex-shrink:0;align-items:center;gap:8px;display:flex}.footer-repo a{font-weight:600}:root[data-theme=dark] body{background-color:var(--dark-bg)}:root[data-theme=dark] .header{background:var(--dark-header);border-bottom-color:var(--dark-border)}:root[data-theme=dark] .tab{color:var(--dark-text-muted)}:root[data-theme=dark] .tab:hover{background:var(--dark-hover);color:var(--dark-text)}:root[data-theme=dark] .tab.active{background:var(--dark-surface);border-color:var(--dark-border);border-bottom-color:var(--dark-surface);color:var(--dark-text)}:root[data-theme=dark] .header .icon-btn{color:var(--dark-text-muted)}:root[data-theme=dark] .header .icon-btn:hover{background:var(--dark-hover);color:var(--dark-text)}:root[data-theme=dark] .toolbar{background:var(--dark-surface);border-bottom-color:var(--dark-border-soft)}:root[data-theme=dark] .search{background:var(--dark-bg);border-color:var(--dark-border);color:var(--dark-text)}:root[data-theme=dark] .search:focus{background:var(--dark-surface);border-color:var(--color-accent)}:root[data-theme=dark] .search::placeholder,:root[data-theme=dark] .search-icon{color:var(--dark-text-faint)}:root[data-theme=dark] .sidebar-edge{background:var(--dark-border)}:root[data-theme=dark] .workspace{--colour-workspace:var(--dark-canvas);--colour-flyout:var(--dark-flyout)}:root[data-theme=dark] .workspace .blocklyToolbox{--colour-toolbox:var(--dark-surface);--colour-toolboxSelected:var(--dark-selected);--colour-toolboxText:var(--dark-text-muted);border-color:var(--dark-border-soft)}:root[data-theme=dark] .workspace .blocklyToolboxCategory:hover{background:var(--dark-hover)}:root[data-theme=dark] .workspace .blocklyToolboxSelected,:root[data-theme=dark] .workspace .blocklyToolboxSelected:hover{background:var(--dark-selected)}:root[data-theme=dark] .workspace .blocklyToolboxSelected .blocklyToolboxCategoryLabel{color:var(--dark-text)}:root[data-theme=dark] .workspace .blocklyFlyoutLabelText{fill:var(--dark-text-muted)}:root[data-theme=dark] .workspace .blocklyMainBackground{stroke:var(--dark-border)}.workspace pattern line{stroke:var(--color-grid)}:root[data-theme=dark] .ext-toggle,:root[data-theme=dark] .help-btn,:root[data-theme=dark] .zoom-level{background:var(--dark-surface);border-color:var(--dark-border);color:var(--dark-text-muted)}:root[data-theme=dark] .empty-hint strong{color:var(--dark-text-muted)}:root[data-theme=dark] .footer{background:var(--dark-bg);border-top-color:var(--dark-border);color:var(--dark-text-muted)}:root[data-theme=dark] .footer a{color:var(--dark-link)}
