:root{--bl-window:#1d1d1d;--bl-border:#161616;--bl-header:#303030;--bl-region:#282828;--bl-topbar:#181818;--bl-text:#e6e6e6;--bl-text-dim:#a6a6a6;--bl-widget:#545454;--bl-widget-active:#4772b3;--bl-viewport:#3d3d3d}.bl-app{background:var(--bl-border);color:var(--bl-text);-webkit-user-select:none;user-select:none;flex-direction:column;font:12px/1.2 Inter,DejaVu Sans,system-ui,sans-serif;display:flex;position:absolute;inset:0;overflow:hidden}.bl-topbar,.bl-statusbar{background:var(--bl-topbar);flex:none;align-items:center;gap:2px;padding:0 6px;display:flex}.bl-topbar{height:26px}.bl-statusbar{height:22px;color:var(--bl-text-dim)}.bl-logo{color:#e87d0d;width:16px;height:16px;margin:0 8px 0 2px;display:inline-flex}.bl-logo svg{width:16px;height:16px}.bl-menu{color:var(--bl-text);border-radius:3px;padding:3px 7px}.bl-workspaces{gap:1px;min-width:0;margin-left:12px;display:flex;overflow:hidden}.bl-tab{color:var(--bl-text-dim);white-space:nowrap;border-radius:4px 4px 0 0;padding:4px 10px}.bl-tab.is-active{background:var(--bl-header);color:var(--bl-text)}.bl-spacer{flex:1}.bl-field,.bl-dropdown{white-space:nowrap;background:#282828;border:1px solid #3d3d3d;border-radius:4px;padding:2px 10px}.bl-dropdown:after{content:" ▾";color:var(--bl-text-dim)}.bl-main{flex:1;gap:2px;min-height:0;padding:2px 0;display:flex}.bl-area{background:var(--bl-region);border-radius:6px;flex-direction:column;min-width:0;display:flex;overflow:hidden}.bl-area-view3d{flex:1}.bl-right{flex-direction:column;flex:none;gap:2px;width:300px;min-height:0;display:flex}.bl-area-outliner{flex:none;height:34%}.bl-area-properties{flex:1;min-height:0}.bl-props{flex:1;min-height:0;display:flex}.bl-props-tabs{background:var(--bl-header);flex-direction:column;flex:none;align-items:center;gap:2px;width:30px;padding:4px 0;display:flex;overflow-y:auto}.bl-props-tab{cursor:pointer;background:0 0;border:none;border-radius:4px;width:24px;height:24px;padding:3px}.bl-props-tab svg{width:18px;height:18px;display:block}.bl-props-tab.is-active{background:var(--bl-region)}.bl-props-tab.is-inactive{cursor:default;opacity:.4}.bl-props-tab-gap{flex:none;height:6px}.bl-props-body{flex:1;min-width:0;padding:6px 8px;overflow:hidden auto}.bl-props-context{color:var(--bl-text);gap:6px;margin-bottom:8px;display:flex}.bl-props-context-sep{opacity:.6}.bl-props-add{width:100%;color:var(--bl-text);font:inherit;cursor:pointer;background:#545454;border:1px solid #3d3d3d;border-radius:4px;margin-bottom:8px;padding:3px 8px;display:block}.bl-props-add.is-open{background:var(--bl-widget-active)}.bl-mod-panel{background:#3d3d3d;border-radius:4px;margin-bottom:4px}.bl-mod-panel.is-dragging{opacity:.5}.bl-mod-panel.is-drop-before{box-shadow:0 -2px 0 var(--bl-widget-active)}.bl-mod-panel.is-drop-after{box-shadow:0 2px 0 var(--bl-widget-active)}.bl-mod-header{align-items:center;gap:2px;height:24px;padding:0 4px;display:flex}.bl-mod-arrow,.bl-mod-more,.bl-mod-remove,.bl-mod-toggle{width:20px;height:20px;color:var(--bl-text);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:3px;flex:none;padding:2px;line-height:16px}.bl-mod-toggle{opacity:.45}.bl-mod-toggle.is-on{opacity:1;background:#545454}.bl-mod-toggle svg,.bl-mod-icon svg{width:16px;height:16px;display:block}.bl-mod-icon{color:var(--bl-text);flex:none}.bl-mod-name{min-width:0;height:20px;color:var(--bl-text);font:inherit;background:#282828;border:none;border-radius:3px;flex:1;padding:0 6px}.bl-mod-name:focus{outline:1px solid var(--bl-widget-active)}.bl-mod-grip{text-align:center;opacity:.6;cursor:grab;touch-action:none;flex:none;width:14px}.bl-mod-warning{color:#e8c96a;margin:0;padding:4px 8px 6px;line-height:1.4}.bl-mod-body:empty{display:none}.bl-mod-body{padding:2px 8px 8px 4px}.bl-mp-row{grid-template-columns:42% minmax(0,1fr);align-items:center;gap:6px;margin:2px 0;display:grid}.bl-mp-row[hidden]{display:none}.bl-mp-label{text-align:right;text-overflow:ellipsis;white-space:nowrap;color:var(--bl-text-dim);overflow:hidden}.bl-mp-color{cursor:pointer;background:0 0;border:none;border-radius:4px;width:100%;height:20px;padding:0}.bl-mp-color::-webkit-color-swatch-wrapper{padding:0}.bl-mp-color::-webkit-color-swatch{border:none;border-radius:4px}.bl-mp-check-number{align-items:center;gap:6px;min-width:0;display:flex}.bl-num.is-inactive{opacity:.5}.bl-data-panel{background:#3d3d3d;border-radius:4px;margin-bottom:2px}.bl-data-panel.is-inactive{opacity:.45}.bl-data-header{align-items:center;gap:6px;height:24px;padding:0 8px;display:flex}.bl-data-header.is-interactive{cursor:pointer}.bl-data-arrow{width:10px}.bl-mp-stacked{margin:4px 0 2px}.bl-mp-stacked>.bl-mp-label{text-align:left;margin-bottom:2px;display:block}.bl-mp-row .bl-num:has(.bl-num-label:empty){justify-content:center}.bl-mp-check{color:var(--bl-text);font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;display:flex}.bl-mp-check:disabled{opacity:.45;cursor:default}.bl-mp-check-box{color:#fff;text-align:center;background:#545454;border-radius:3px;flex:none;width:14px;height:14px;font-size:11px;line-height:14px}.bl-mp-check.is-on .bl-mp-check-box{background:var(--bl-widget-active)}.bl-mp-segmented{gap:1px;min-width:0;margin:2px 0;display:flex}.bl-mp-seg{min-width:0;height:20px;color:var(--bl-text);font:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:#545454;border:none;flex:1;padding:0 4px;overflow:hidden}.bl-mp-seg:first-child{border-radius:4px 0 0 4px}.bl-mp-seg:last-child{border-radius:0 4px 4px 0}.bl-mp-seg.is-on{background:var(--bl-widget-active)}.bl-mp-seg:disabled{color:var(--bl-text-dim);cursor:default}.bl-mp-dropdown{min-width:0;height:20px;color:var(--bl-text);font:inherit;text-align:left;cursor:pointer;background:#282828;border:none;border-radius:4px;flex:1;padding:0 18px 0 8px;position:relative}.bl-mp-dropdown:after{content:"▾";opacity:.7;position:absolute;right:6px}.bl-mp-object{gap:2px;display:flex}.bl-mp-clear{width:20px;height:20px;color:var(--bl-text);cursor:pointer;background:#282828;border:none;border-radius:4px;flex:none}.bl-mp-sub{background:#373737;border-radius:4px;margin-top:6px}.bl-mp-sub-header{align-items:center;gap:4px;height:22px;padding:0 4px;display:flex}.bl-mp-sub-title{cursor:pointer;flex:1}.bl-mp-sub-body{padding:0 6px 6px 0}.bl-mp-sub-body.is-inactive{opacity:.5}.bl-menu-search{background:#1d1d1d;border-radius:3px;margin-bottom:2px;padding:3px 8px}.bl-props-note{opacity:.7;margin:4px 0;line-height:1.4}.bl-header{background:var(--bl-header);flex:none;align-items:center;gap:2px;height:26px;padding:0 4px;display:flex}.bl-editor-type{color:var(--bl-text-dim);padding:2px 6px}.bl-search{background:#1d1d1d;border-radius:9px;flex:1;height:18px;margin:0 4px}.bl-viewport{background:var(--bl-viewport);touch-action:none;flex:1;min-height:0;position:relative;overflow:hidden}.bl-viewport-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.bl-view-text{color:#fff;text-shadow:0 0 3px #000,0 1px 1px #000;pointer-events:none;font-size:12px;line-height:1.45;position:absolute;top:8px;left:10px}.bl-camera-frame{pointer-events:none;box-sizing:border-box;border:1px solid #000;position:absolute;box-shadow:0 0 0 100000px #00000080}.bl-navgizmo{flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:10px;right:14px}.bl-navgizmo-axes{display:block}.bl-navgizmo-buttons{flex-direction:column;gap:4px;display:flex}.bl-navgizmo-button{color:#e6e6e6;cursor:pointer;background:#0003;border:none;border-radius:50%;width:28px;height:28px;padding:6px}.bl-navgizmo-button:hover,.bl-navgizmo-button.is-active{background:#ffffff2e}.bl-navgizmo-button svg{width:16px;height:16px;display:block}.bl-status-left{gap:14px;display:flex}.bl-status-item{align-items:center;gap:4px;display:inline-flex}.bl-mouse-icon{width:10px;height:15px}.bl-version{color:var(--bl-text-dim)}.bl-select-box{pointer-events:none;box-sizing:border-box;outline-offset:-2px;border:1px dashed #fff;outline:1px dashed #000;position:absolute}.bl-crosshair{pointer-events:none;border:0 dashed #fffc;position:absolute}.bl-crosshair-h{border-top-width:1px;left:0;right:0}.bl-crosshair-v{border-left-width:1px;top:0;bottom:0}.bl-viewport.is-box-modal{cursor:crosshair}.bl-outliner{background:#282828;flex:1;padding:2px 0;overflow:auto}.bl-ol-row{height:20px;padding-left:calc(4px + var(--depth) * 18px);color:var(--bl-text);cursor:default;align-items:center;padding-right:6px;display:flex}.bl-ol-row:nth-child(2n){background:#2b2b2b}.bl-ol-row:hover{background:#333}.bl-ol-row.is-selected{background:#334d80}.bl-ol-row.is-selected.is-active{background:#3d5a94}.bl-ol-row.is-active .bl-ol-name{color:#fff}.bl-ol-expand{width:14px;color:var(--bl-text-dim);font-size:10px}.bl-ol-icon{width:16px;height:16px;margin-right:5px;display:inline-flex}.bl-ol-icon svg{width:16px;height:16px}.bl-ol-name{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.bl-ol-right{gap:2px;display:inline-flex}.bl-ol-restrict{color:#cfcfcf;margin-right:0}.bl-header.is-modal>:not(.bl-header-text){display:none}.bl-header-text{white-space:pre;color:var(--bl-text);padding:0 8px}.bl-transform-guides{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.bl-key{min-width:10px;font:inherit;text-align:center;color:var(--bl-text);border:1px solid #6a6a6a;border-radius:3px;margin-right:2px;padding:0 3px;font-size:10px;line-height:13px;display:inline-block}.bl-sidebar{width:var(--sidebar-w);z-index:2;background:#282828eb;display:flex;position:absolute;top:0;bottom:0;right:0}.bl-sidebar-content{flex:1;padding:6px;overflow:auto}.bl-sidebar-tabs{background:#1d1d1d;flex-direction:column;gap:2px;width:22px;padding-top:6px;display:flex}.bl-sidebar-tab{writing-mode:vertical-rl;color:var(--bl-text-dim);border-radius:0 4px 4px 0;padding:8px 3px}.bl-sidebar-tab.is-active{color:var(--bl-text);background:#303030}.bl-panel{background:#303030;border-radius:4px}.bl-panel-header{padding:5px 8px;font-weight:600}.bl-panel-header:before{content:"▾ ";color:var(--bl-text-dim)}.bl-panel-body{padding:0 8px 8px}.bl-prop-title{color:var(--bl-text);margin:8px 0 3px}.bl-prop-row{align-items:center;gap:4px;margin-bottom:1px;display:flex}.bl-num{cursor:ew-resize;background:#545454;border-radius:4px;flex:1;justify-content:space-between;align-items:center;height:20px;padding:0 8px;display:flex;position:relative}.bl-num:hover{background:#656565}.bl-num.is-dragging{background:#6e6e6e}.bl-num-label{color:var(--bl-text-dim)}.bl-num-input{box-sizing:border-box;color:#fff;width:100%;font:inherit;outline:1px solid var(--bl-widget-active);background:#1d1d1d;border:none;border-radius:4px;padding:0 8px;position:absolute;inset:0}.bl-lock{width:16px;height:16px;color:var(--bl-text-dim)}.bl-lock svg{width:16px;height:16px}.bl-rotation-mode{flex:1;margin:3px 20px 0 0}.bl-viewport.has-sidebar .bl-navgizmo{right:264px}.bl-menu.is-interactive{cursor:default}.bl-menu.is-interactive:hover,.bl-menu.is-open{background:#454545}.bl-menu-dropdown{z-index:20;position:absolute}.bl-menu-list{background:#181818;border:1px solid #2c2c2c;border-radius:6px;min-width:220px;padding:4px 0;box-shadow:0 6px 16px #00000080}.bl-menu-item{white-space:nowrap;align-items:center;gap:6px;padding:3px 10px 3px 6px;display:flex;position:relative}.bl-menu-item:hover,.bl-menu-item.is-open{background:var(--bl-widget-active)}.bl-menu-check{width:14px;color:var(--bl-text-dim)}.bl-menu-label{flex:1}.bl-menu-shortcut{color:var(--bl-text-dim);padding-left:24px}.bl-menu-sep{background:#2f2f2f;height:1px;margin:4px 6px}.bl-menu-item.has-submenu>.bl-menu-list{display:none;position:absolute;top:-5px;left:100%}.bl-menu-item.has-submenu.is-open>.bl-menu-list{display:block}.bl-menu-item.has-submenu>.bl-menu-list.opens-left{left:auto;right:100%}.bl-pie{z-index:30;width:0;height:0;position:absolute}.bl-pie-centre{background:#28282899;border:2px solid #1d1d1d;border-radius:50%;width:28px;height:28px;position:absolute;top:-14px;left:-14px}.bl-pie-title{color:var(--bl-text);white-space:nowrap;background:#181818;border-radius:4px;padding:2px 10px;position:absolute;top:-160px;left:0;transform:translate(-50%)}.bl-pie-item{min-width:110px;color:var(--bl-text);font:inherit;white-space:nowrap;cursor:pointer;background:#282828;border:1px solid #2c2c2c;border-radius:12px;padding:4px 10px;position:absolute;transform:translate(-50%,-50%)}.bl-pie-item.is-checked{background:#3d3d3d}.bl-pie-item.is-highlighted,.bl-pie-item:hover:not(:disabled){background:var(--bl-widget-active)}.bl-pie-item:disabled{color:var(--bl-text-dim);cursor:default}.bl-shading{margin-left:4px}.bl-selectmode{border-radius:4px;margin:0 6px 0 2px;display:inline-flex;overflow:hidden}.bl-selectmode-button{width:26px;height:20px;color:var(--bl-text);cursor:pointer;background:#282828;border:none;padding:2px 5px}.bl-selectmode-button+.bl-selectmode-button{border-left:1px solid #1d1d1d}.bl-selectmode-button.is-active{background:var(--bl-widget-active)}.bl-header-toggle{width:26px;height:20px;color:var(--bl-text);cursor:pointer;background:#282828;border:none;border-radius:4px;padding:2px 5px}.bl-header-toggle.is-active{background:var(--bl-widget-active)}.bl-header-toggle svg,.bl-selectmode-button svg{width:16px;height:16px;display:block}.bl-stats{margin-top:6px}.bl-stats>div{grid-template-columns:72px auto;display:grid}.bl-report{color:var(--bl-text);background:#3d3d3d;border-radius:3px;margin-left:16px;padding:0 8px}.bl-menu-item.is-disabled{color:#6b6b6b}.bl-menu-item.is-disabled:hover{background:0 0}.bl-menu-title{color:var(--bl-text-dim);border-bottom:1px solid #2f2f2f;margin-bottom:3px;padding:3px 10px 5px}.bl-adjust{z-index:4;background:#282828f2;border-radius:6px;min-width:220px;position:absolute;bottom:10px;left:10px;box-shadow:0 2px 8px #0006}.bl-adjust-header{cursor:default;padding:5px 8px}.bl-adjust-row{align-items:center;gap:8px;padding:2px 8px 4px;display:flex}.bl-adjust-label{width:70px;color:var(--bl-text-dim);text-align:right}.bl-adjust-row .bl-num{justify-content:center}.bl-viewport.has-adjust .lab-keys{bottom:120px}.bl-viewport.is-click-tool{cursor:crosshair}[hidden]{display:none!important}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#111418;--surface-low:#191c20;--surface:#1d2024;--surface-high:#272a2e;--line:#2c343d;--text:#e1e2e8;--text-muted:#bacac5;--text-faint:#859490;--accent:#57f1db;--accent-strong:#2dd4bf;--accent-tint:#57f1db1f;--on-accent:#003731;--axis-x:#ff6b6b;--axis-y:#8bc34a;--axis-z:#6ea8ff;--grid:#3c4a4659;--radius:4px;--radius-panel:6px;--font:"Space Grotesk", "Helvetica Neue", Arial, sans-serif;--mono:"JetBrains Mono", Consolas, monospace;--step--1:.8rem;--step-0:1rem;--step-1:1.25rem;--step-2:1.5625rem;--step-3:1.953rem;--step-4:2.441rem;--titleblock-height:44px;--panel-width:344px}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f6f8;--surface-low:#edf0f3;--surface:#e8ecef;--surface-high:#dde2e6;--line:#c9d1d8;--text:#14181c;--text-muted:#4a5754;--text-faint:#5d6b68;--accent:#0f766e;--accent-strong:#0b6b63;--accent-tint:#0f766e1a;--on-accent:#fff;--axis-x:#c62828;--axis-y:#3d7420;--axis-z:#1d5fd1;--grid:#9aaab44d}html,body{background:var(--bg);color:var(--text);margin:0}.lab-page{font:400 17px / 1.5 var(--font);color:var(--text);-webkit-font-smoothing:antialiased}.lab-page h1,.lab-page h2,.lab-page h3{font-family:var(--font);letter-spacing:-.01em;font-weight:700;line-height:1.15}.lab-page a{color:var(--accent);text-underline-offset:3px}.lab-page :focus-visible{outline:2px solid var(--accent);outline-offset:2px}.axis{font-weight:700}.axis-x{color:var(--axis-x)}.axis-y{color:var(--axis-y)}.axis-z{color:var(--axis-z)}.grid-paper{background-color:var(--surface-low);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-position:-1px -1px;background-size:20px 20px}.lab-button{font:500 15px/1.3 var(--font);border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-high);color:var(--text);cursor:pointer;align-items:center;gap:8px;padding:8px 14px;text-decoration:none;display:inline-flex}.lab-button:hover{border-color:var(--accent)}.lab-button-primary,.lab-page a.lab-button-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.lab-button-primary:hover,.lab-page a.lab-button-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.lab-button[disabled]{opacity:.4;cursor:default;border-color:var(--line)}.lab-link-button{color:var(--accent);font:500 15px/1.4 var(--font);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;text-decoration:underline}.lab-kbd{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-high);min-width:1.2em;color:var(--text);font:500 14px/1.5 var(--font);text-align:center;border-bottom-width:2px;padding:2px 8px;transition:transform 80ms,background-color 80ms,border-color 80ms,color 80ms;display:inline-block}.lab-kbd.is-pressed{border-bottom-width:1px;border-color:var(--accent);background:var(--accent-tint);color:var(--accent);margin-bottom:1px;transform:translateY(1px)}.lab-switch{cursor:pointer;align-items:flex-start;gap:10px;padding:8px 0;display:flex}.lab-switch input{appearance:none;border:1px solid var(--line);background:var(--surface-high);cursor:pointer;border-radius:9px;flex:none;width:34px;height:18px;margin:3px 0 0;position:relative}.lab-switch input:after{content:"";background:var(--text-faint);border-radius:50%;width:12px;height:12px;transition:transform .15s;position:absolute;top:2px;left:2px}.lab-switch input:checked{background:var(--accent);border-color:var(--accent)}.lab-switch input:checked:after{background:var(--on-accent);transform:translate(16px)}.lab-switch-text{flex-direction:column;font-size:15px;display:flex}.lab-switch-text strong{font-weight:600}.lab-switch-text small{color:var(--text-muted);font-size:13.5px;line-height:1.45}.lab-intro,.lab-real,.lab-footer{max-width:44rem;margin:0 auto;padding:40px 24px}.lab-back{font-size:15px}.lab-eyebrow{color:var(--accent);font:500 14px/1.4 var(--mono);margin:28px 0 6px}.lab-title{font-size:clamp(var(--step-3), 5vw, var(--step-4));margin:0 0 14px}.lab-intro h2,.lab-real h2{font-size:var(--step-1);margin:32px 0 10px}.lab-lead{color:var(--text-muted);max-width:38rem;font-size:18px}.lab-controls{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 24px;margin:0 0 28px;padding-left:18px;display:grid}.lab-real ul{padding-left:18px}.lab-real li{margin-bottom:8px}.lab-footer{color:var(--text-muted);border-top:1px solid var(--line);padding-top:16px;font-size:14px}.lab-shell{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;height:100vh;min-height:600px;display:flex}.lab-titleblock{height:var(--titleblock-height);border-bottom:1px solid var(--line);background:var(--surface-low);flex:none;align-items:stretch;font-size:15px;display:flex}.lab-tb-cell{border-right:1px solid var(--line);background:var(--surface-low);white-space:nowrap;align-items:center;padding:0 16px;display:flex}.lab-tb-number{color:var(--accent);font:600 14px/1 var(--mono)}.lab-tb-title{font-weight:700;font-size:var(--step-1);text-overflow:ellipsis;background-color:var(--surface-low);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:20px 20px;border-right:0;flex:1;min-width:0;overflow:hidden}.lab-tb-stage{border-left:1px solid var(--line);color:var(--text-muted);font:500 13px/1 var(--mono)}.lab-tb-button{font:inherit;color:var(--text-muted);border:0;border-right:1px solid var(--line);cursor:pointer}.lab-tb-button:hover{color:var(--text)}.lab-page a.lab-tb-link{border-right:0;font-weight:600;text-decoration:none}.lab-page a.lab-tb-link:hover{text-decoration:underline}.lab-tb-button:focus-visible,.lab-page a.lab-tb-link:focus-visible{outline-offset:-3px}.lab-body{grid-template-columns:minmax(0, 1fr) var(--panel-width);flex:1;min-height:0;transition:grid-template-columns .2s ease-out;display:grid}.lab-body.is-folded{grid-template-columns:minmax(0,1fr) 44px}.lab-replica{min-width:0;min-height:0;position:relative}.lab-replica-host{position:absolute;inset:0}.lab-panel{background:var(--surface);border-left:1px solid var(--line);flex-direction:column;min-height:0;font-size:16px;display:flex}.lab-panel-head{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.lab-panel-head h2{font-size:var(--step-0);margin:0}.lab-fold{font:500 14px/1 var(--font);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-high);color:var(--text);cursor:pointer;padding:6px 10px}.lab-fold:hover{border-color:var(--accent)}.lab-fold:after{content:" ›"}.lab-panel-scroll{flex-direction:column;flex:1;gap:20px;min-height:0;padding:0 16px 20px;display:flex;overflow-y:auto}.lab-panel-tab{background:var(--surface);color:var(--accent);font:600 14px/1 var(--mono);writing-mode:vertical-rl;text-align:start;cursor:pointer;border:0;flex:1;margin:0;padding:16px 0}.lab-panel-tab:before{content:"‹ "}.lab-panel-tab:hover{background:var(--surface-high)}.lab-steps{flex-direction:column;gap:1px;margin:0;padding:10px 0 0;list-style:none;display:flex}.lab-step{border-radius:0 var(--radius) var(--radius) 0;width:100%;color:var(--text-faint);font:400 15px/1.35 var(--font);text-align:left;cursor:pointer;background:0 0;border:0;border-left:2px solid #0000;grid-template-columns:24px minmax(0,1fr) auto;align-items:baseline;gap:8px;padding:5px 8px;display:grid}.lab-step:hover{background:var(--surface-low);color:var(--text)}.lab-step-n{font:500 13px/1.35 var(--mono);text-align:right}.lab-step-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lab-step-state{font:500 12px/1.35 var(--mono);color:var(--accent)}.lab-step-state:before{content:"✓ "}.lab-step.is-done{color:var(--text-muted)}.lab-step.is-current{color:var(--text);border-left-color:var(--accent);background:var(--accent-tint);font-weight:600}.lab-step.is-current .lab-step-n{color:var(--accent)}.lab-current{border-top:1px solid var(--line);flex-direction:column;gap:14px;padding-top:18px;display:flex}.lab-current>*{margin:0}.lab-current-count{color:var(--accent);font:500 13px/1.4 var(--mono)}.lab-current-count+.lab-current-title{margin-top:-10px}.lab-current-title{font-size:var(--step-1)}.lab-instruction{line-height:1.55}.lab-keychips{flex-wrap:wrap;gap:6px;display:flex}.lab-hints{flex-direction:column;gap:10px;display:flex}.lab-hint{border-left:3px solid var(--line);padding:2px 0 2px 12px;animation:.18s ease-out lab-unfold}.lab-hint strong{font:500 13px/1.4 var(--mono);color:var(--text-muted)}.lab-hint p{margin:2px 0 0}.lab-status{flex-direction:column;gap:6px;display:flex}.lab-status:empty{display:none}.lab-status p{margin:0}.lab-note,.lab-muted{color:var(--text-muted);font-size:14px}.lab-feedback{color:var(--text-muted)}.lab-feedback.is-fix{color:var(--text);padding-left:16px;position:relative}.lab-feedback.is-fix:before{content:"";background:var(--axis-x);width:8px;height:8px;position:absolute;top:.45em;left:0}.lab-stats{font-weight:600}.lab-seal{border:1px solid var(--accent);border-radius:var(--radius-panel);background:var(--accent-tint);grid-template-columns:52px 1fr;align-items:center;gap:12px;padding:12px;display:grid}.lab-seal-mark{border:2px solid var(--accent);outline:1px solid var(--accent);outline-offset:3px;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.lab-seal-mark:after{content:"";border-left:3px solid var(--accent);border-bottom:3px solid var(--accent);width:16px;height:8px;transform:translateY(-2px)rotate(-45deg)}.lab-seal-text strong{color:var(--accent);font-weight:700}.lab-seal-text p{margin:2px 0 0}.lab-seal.is-new .lab-seal-mark{animation:.45s cubic-bezier(.2,.9,.3,1.2) lab-stamp}.lab-seal.is-new .lab-seal-text{animation:.45s ease-out lab-appear}.lab-actions{flex-wrap:wrap;gap:8px;display:flex}.lab-tools:empty{display:none}.lab-prefs{border-top:1px solid var(--line);margin-top:auto;padding-top:12px}.lab-prefs summary{cursor:pointer;font-weight:600}.lab-analyzer,.lab-meter{border-top:1px solid var(--line);padding-top:12px}.lab-meter h2{font-size:var(--step-0);margin:0 0 4px}.lab-meter-buttons{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;display:flex}.lab-meter-buttons .is-active{border-color:var(--accent);color:var(--accent)}.lab-meter-reading{border-left:3px solid var(--accent);margin:8px 0;padding:2px 0 2px 12px;font-size:15px}.lab-meter-reading ul{color:var(--text-muted);margin:4px 0 0;padding-left:16px}.lab-meter-ratio{font-family:var(--mono);margin:8px 0 0}.lab-analyzer h2{font-size:var(--step-0);margin:0 0 4px}.lab-analyzer-list{flex-direction:column;gap:10px;margin:8px 0 0;padding:0;list-style:none;display:flex}.lab-analyzer-item{border-left:3px solid var(--line);padding:2px 0 2px 12px;font-size:15px}.lab-analyzer-item p{color:var(--text-muted);margin:2px 0 0;font-size:14px}.lab-analyzer-item.is-ngons{border-left-color:#ffd21f}.lab-analyzer-item.is-triangles{border-left-color:#3aa0ff}.lab-analyzer-item.is-duplicates,.lab-analyzer-item.is-nonManifold{border-left-color:#ff3b3b}.lab-analyzer-item.is-flipped{border-left-color:#ff3ea5}.lab-toast{z-index:10;border-radius:var(--radius-panel);background:var(--surface);border:1px solid var(--accent);width:min(440px,100% - 40px);font:400 15px/1.5 var(--font);color:var(--text);padding:14px 16px;animation:.2s ease-out lab-appear;position:absolute;top:60px;left:50%;transform:translate(-50%)}.lab-toast p{margin:0 0 10px}.lab-keys{pointer-events:none;z-index:3;font:600 15px/1.2 var(--font);flex-direction:column;align-items:flex-start;gap:4px;display:flex;position:absolute;bottom:12px;left:12px}.lab-keys-item{border-radius:var(--radius);color:#e1e2e8;background:#1d2024;border:1px solid #2c343d;border-bottom:2px solid #57f1db;padding:5px 10px;animation:2.5s forwards lab-fade}.lab-device-warning{z-index:100;background:color-mix(in srgb, var(--bg) 92%, transparent);place-items:center;padding:16px;display:grid;position:fixed;inset:0}.lab-device-box{border-radius:var(--radius-panel);background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);max-width:420px;color:var(--text);font:400 17px/1.5 var(--font);padding:24px}.lab-device-box h2{font-size:var(--step-2);margin:0 0 8px;font-weight:700;line-height:1.15}.lab-device-box :focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bp-svg{--bp-stroke:.45;width:100%;height:100%;display:block;overflow:visible}.bp-line path{fill:none;stroke:var(--text-faint);stroke-width:var(--bp-stroke);stroke-dasharray:1.4 1.2;stroke-linejoin:round;opacity:.55;transition:stroke .15s,opacity .15s}.bp-line text{fill:var(--text-faint);font:500 3.2px var(--mono);text-anchor:middle;dominant-baseline:middle;opacity:.55}.bp-line.is-earned path{stroke:var(--accent);stroke-dasharray:none;opacity:1}.bp-line.is-earned text{fill:var(--accent);opacity:1}.bp-line.is-earned.bp-hidden path{stroke-dasharray:1.2 .9}.bp-line.bp-axis path{stroke-width:calc(var(--bp-stroke) * .6);stroke-dasharray:4 1 .6 1}.bp-line.bp-dimension path{stroke-width:calc(var(--bp-stroke) * .6)}.bp-has-highlight .bp-line path,.bp-has-highlight .bp-line text{opacity:.25}.bp-has-highlight .bp-line.is-highlight path,.bp-has-highlight .bp-line.is-highlight text{opacity:1}.bp-has-highlight .bp-line.is-highlight:not(.is-earned) path{stroke:var(--text)}.bp-line.is-drawing path{stroke-dasharray:1;stroke-dashoffset:1px;animation:.8s ease-out forwards bp-draw}@keyframes bp-draw{to{stroke-dashoffset:0}}.lab-blueprint{grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0 0;display:grid}.lab-blueprint-view{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--radius);background-color:var(--surface-low);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:10px 10px;padding:6px}.lab-blueprint .bp-svg{--bp-stroke:.9}.lab-blueprint .bp-line text{display:none}@keyframes lab-stamp{0%{opacity:0;transform:scale(1.6)rotate(-12deg)}60%{opacity:1;transform:scale(.94)rotate(2deg)}to{transform:none}}@keyframes lab-appear{0%{opacity:0}}@keyframes lab-unfold{0%{opacity:0;transform:translateY(-4px)}}@keyframes lab-fade{0%,75%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.lab-body,.lab-kbd,.lab-switch input:after{transition:none}.lab-seal.is-new .lab-seal-mark,.lab-seal.is-new .lab-seal-text,.lab-hint,.lab-toast,.lab-keys-item{animation:none}.lab-kbd.is-pressed{transform:none}.bp-line path{transition:none}}
