:root{--chrome:#ececec;--chrome-2:#f5f5f5;--panel:#fbfbfb;--border:#c7c7c7;--border-soft:#e0e0e0;--text:#2b2b2b;--text-dim:#6e6e6e;--accent:#0696d7;--hover:#e6f2fb;--hover-bd:#9cd2ee;--sel:#cde8f7;color:var(--text);-webkit-font-smoothing:antialiased;font-family:Segoe UI,Roboto,system-ui,sans-serif;font-size:13px}:root[data-theme=dark]{--chrome:#23272d;--chrome-2:#2b3037;--panel:#262b31;--border:#3a4048;--border-soft:#333a42;--text:#d7dde3;--text-dim:#97a1ab;--accent:#3aa0e0;--hover:#2f3944;--hover-bd:#3a5064;--sel:#274b63}@media (prefers-color-scheme:dark){:root:not([data-theme]){--chrome:#23272d;--chrome-2:#2b3037;--panel:#262b31;--border:#3a4048;--border-soft:#333a42;--text:#d7dde3;--text-dim:#97a1ab;--accent:#3aa0e0;--hover:#2f3944;--hover-bd:#3a5064;--sel:#274b63}}:root[data-theme=dark] .panel-menu,:root[data-theme=dark] .cmd-palette{color:var(--text);background:#262b31;border-color:#3a4048}:root[data-theme=dark] .panel-menu-item{color:#cdd4db}:root[data-theme=dark] .panel-menu-divider{background:#3a4048}:root[data-theme=dark] .modal-backdrop{background:#00000080}:root[data-theme=dark] input,:root[data-theme=dark] select{color:#d7dde3;background:#2b3037;border-color:#3a4048}@media (prefers-color-scheme:dark){:root:not([data-theme]) .panel-menu,:root:not([data-theme]) .cmd-palette{color:var(--text);background:#262b31;border-color:#3a4048}:root:not([data-theme]) .panel-menu-item{color:#cdd4db}:root:not([data-theme]) .modal-backdrop{background:#00000080}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--chrome);-webkit-user-select:none;user-select:none;overflow:hidden}button{font-family:inherit}.app{grid-template-rows:auto 1fr auto;width:100vw;height:100vh;display:grid}.ribbon-shell{min-width:0;overflow:hidden}.startup-restore-gate{z-index:50000;color:#176b95;letter-spacing:.02em;pointer-events:auto;background:#f5f9fce0;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex;position:fixed;inset:0}.topbar{background:var(--chrome);border-bottom:1px solid var(--border-soft);overscroll-behavior-x:contain;scrollbar-width:thin;align-items:center;gap:4px;min-width:0;height:32px;padding:0 8px;display:flex;overflow:auto hidden}.tb-btn{color:#555;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;min-width:26px;height:24px;padding:0 4px;font-size:14px;display:inline-flex}.tb-btn:hover{background:var(--hover);border-color:var(--hover-bd)}.tb-sep{background:var(--border-soft);width:1px;height:18px;margin:0 4px}.dim-menu-item:hover{background:#eef4fb}.tb-spacer{flex:1}.doc-tab{border:1px solid var(--border-soft);color:#333;background:#fff;border-bottom:none;border-radius:4px 4px 0 0;align-items:center;gap:6px;height:24px;padding:0 10px;font-size:12px;display:inline-flex}.doc-tab .dot{background:#f0a020;border-radius:50%;width:7px;height:7px}.doc-cube{background:linear-gradient(135deg,#ffb74d,#f0a020);border:1px solid #e09010;border-radius:2px;width:11px;height:11px}.doc-name{color:#333;text-align:center;background:0 0;border:none;outline:none;width:120px;font-size:12px}.doc-name:hover,.doc-name:focus{background:#f5f8fb;border-radius:3px}.tb-user{color:#fff;background:#f0a020;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;display:inline-flex}.ribbon{background:var(--chrome-2);border-bottom:1px solid var(--border);min-width:0}.ribbon-main{flex:1;min-width:0;overflow:hidden}.ribbon-tabs{border-bottom:1px solid var(--border-soft);overscroll-behavior-x:contain;scrollbar-width:thin;align-items:stretch;gap:2px;height:26px;padding:0 6px;display:flex;overflow:auto hidden}.ribbon-tabs::-webkit-scrollbar{height:4px}.ws-big{border:1px solid var(--border);cursor:pointer;color:#333;background:#fff;border-radius:4px;justify-content:center;align-items:center;gap:6px;width:92px;margin:6px;font-size:13px;font-weight:600;display:flex;position:relative}.ws-big:hover{background:var(--hover)}.ws-big-caret{color:#777;font-size:10px}.ribbon-tab{white-space:nowrap;cursor:pointer;color:#555;border-bottom:2px solid #0000;flex:none;align-items:center;padding:0 11px;font-size:12px;display:inline-flex}.ribbon-tab:hover{color:#222}.ribbon-tab.active{color:#222;border-bottom-color:#333;font-weight:700}.ribbon-panels{overscroll-behavior-x:contain;scrollbar-gutter:stable both-edges;scrollbar-width:thin;align-items:stretch;height:60px;padding:3px 4px 0;display:flex;overflow:auto hidden}.ribbon-panels::-webkit-scrollbar{height:5px}.panel{flex-direction:column;flex:none;min-width:max-content;padding:0 2px;display:flex}.panel-tools{align-items:center;gap:1px;height:40px;padding:0 2px;display:flex}.panel-label{text-align:center;color:var(--text-dim);white-space:nowrap;padding-top:1px;font-size:10px}.panel-label:hover{color:#333}.panel-divider{background:var(--border-soft);width:1px;margin:2px 4px}.ribbon-panels>.panel:last-of-type .panel-divider{display:none}.tool-btn{color:#3b6e8f;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;flex:0 0 34px;justify-content:center;align-items:center;width:34px;height:36px;padding:0;display:flex}@media (width>=821px) and (width<=1440px){.ribbon-panels{padding-inline:2px}.panel{padding-inline:1px}.panel-tools{gap:0;padding-inline:1px}.tool-btn{flex-basis:30px;width:30px}}.tool-btn:hover{background:var(--hover);border-color:var(--hover-bd)}.tool-btn:active{background:#d4e9f7}.tool-btn:focus-visible{outline-offset:1px;background:#eef6fc;outline:2px solid #1572c4}.tool-btn svg{display:block}.vp-display-menu{gap:2px;width:auto;min-width:58px;padding:0 5px}.vp-display-label{white-space:nowrap;font-size:10px;line-height:1}.panel-menu{box-sizing:border-box;overscroll-behavior:contain;background:#fff;border:1px solid #c4ccd4;border-radius:6px;min-width:188px;max-width:calc(100vw - 16px);max-height:min(480px,100vh - 110px);padding:4px;overflow:visible auto;box-shadow:0 6px 24px #0000002e}.panel-menu-item{cursor:pointer;white-space:nowrap;color:#2a2f35;border-radius:4px;align-items:center;gap:8px;padding:5px 10px;font-size:13px;display:flex}button.panel-menu-item{text-align:left;width:100%;font:inherit;background:0 0;border:0}.panel-menu-item:hover{background:var(--hover)}.vp-appearance-color{color:#2a3b49;justify-content:space-between;align-items:center;gap:12px;padding:5px 10px 4px;font-size:12px;display:flex}.vp-appearance-color label{font-weight:600}.vp-appearance-color input[type=color]{cursor:pointer;background:#fff;border:1px solid #637b8d;border-radius:4px;width:42px;height:24px;padding:1px}.vp-contrast-swatches{align-items:center;gap:6px;padding:2px 10px 7px;display:flex}.vp-contrast-swatch{cursor:pointer;border:2px solid #fff;border-radius:4px;outline:1px solid #8595a2;width:24px;height:24px;box-shadow:inset 0 0 0 1px #0000001f}.vp-contrast-swatch:hover,.vp-contrast-swatch.selected{outline:2px solid #1572c4}.vp-contrast-reset{color:#205f8f;cursor:pointer;background:#e7f1f8;border:0;border-radius:4px;margin-left:2px;padding:4px 6px;font:600 11px inherit}.vp-contrast-reset:hover{background:#d4e8f6}.panel-menu-item.off{color:#aab2ba;cursor:not-allowed;opacity:.65}.panel-menu-item.off:hover{background:0 0}.panel-menu-kbd{opacity:.5;font-size:11px}.panel-menu-divider{background:#e6e9ee;height:1px;margin:4px 6px}.panel-menu-head{letter-spacing:.04em;text-transform:uppercase;color:#8a97a2;padding:5px 10px 2px;font-size:10.5px;font-weight:700}.modal-backdrop{z-index:300;background:#141a2057;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ribbon-tab.ctx{color:#222;background:#fdebd0;border-bottom-color:#333;border-radius:3px 3px 0 0;font-weight:700}.finish-sketch{cursor:pointer;color:#2e7d32;background:0 0;border:1px solid #0000;border-radius:4px;flex-direction:column;align-self:center;align-items:center;gap:2px;min-width:82px;height:50px;margin-left:auto;margin-right:8px;padding:3px 9px;font-size:12px;font-weight:600;display:flex}.finish-sketch:hover{background:#e8f5e9;border-color:#a5d6a7}.finish-check{color:#fff;background:#43a047;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:16px;font-weight:900;display:flex}.tool-btn.active{background:#d4e9f7;border-color:#7fb8dc}.tool-btn.teach-pulse{z-index:5;animation:.8s ease-in-out 3 teachPulse;position:relative}@keyframes teachPulse{0%,to{background:var(--hover,#eef6fc);box-shadow:0 0 #ff950000}50%{background:#fff3e0;transform:scale(1.12);box-shadow:0 0 0 4px #ff95008c,0 0 12px 3px #ff950073}}.teach-pointer{z-index:25000;pointer-events:none;flex-direction:column;align-items:center;animation:.18s ease-out teachFade;display:flex;position:fixed;transform:translate(-50%)}.teach-arrow{filter:drop-shadow(0 -1px 2px #0000004d);border-bottom:11px solid #ff9500;border-left:8px solid #0000;border-right:8px solid #0000;width:0;height:0;animation:.7s ease-in-out infinite teachBounce}.teach-pill{color:#fff;white-space:nowrap;background:#ff9500;border-radius:11px;margin-top:2px;padding:3px 9px;font-size:11.5px;font-weight:600;box-shadow:0 2px 8px #00000047}@keyframes teachBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes teachFade{0%{opacity:0}to{opacity:1}}.tool-btn.sk{flex-direction:column;flex-basis:auto;gap:2px;width:auto;min-width:52px;height:40px;padding:2px 7px;overflow:hidden}.sk-glyph{color:#2a5d80;flex:none;font-size:19px;line-height:1}.sk-label{color:#4a545e;white-space:nowrap;flex:none;font-size:10.5px;line-height:1.15}.cmd-palette-body input[type=number]{cursor:ew-resize}.cmd-palette{z-index:200;background:#fff;border:1px solid #c7d0d8;border-radius:8px;width:256px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);font-size:13px;position:fixed;top:min(150px,100vh - 180px);right:20px;box-shadow:0 8px 28px #0003}.cmd-palette-head{border-bottom:1px solid var(--border-soft);align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.cmd-palette-x{cursor:pointer;color:#8a939c;background:0 0;border:0;margin-left:auto;padding:0 4px;line-height:1}.cmd-palette-x:hover{color:#d6694e}.cmd-palette-x:focus-visible,.cmd-ok:focus-visible,.cmd-cancel:focus-visible{outline-offset:2px;outline:2px solid #1572c4}.cmd-palette-body{flex-direction:column;gap:7px;max-height:min(60vh,100vh - 180px);padding:10px 12px;display:flex;overflow-y:auto}.cmd-palette-body label{color:#4a545e;justify-content:space-between;align-items:center;gap:6px;display:flex}.cmd-palette-foot{border-top:1px solid var(--border-soft);justify-content:flex-end;gap:6px;padding:10px 12px;display:flex}.cmd-ok{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:5px;padding:6px 18px;font-weight:700}.cmd-ok:hover{filter:brightness(1.08)}.cmd-cancel{color:#444;border:1px solid var(--border-soft);cursor:pointer;background:#f1f3f5;border-radius:5px;padding:6px 14px}.cmd-ok:disabled{cursor:default;filter:none;background:#9aa6af}.cmd-palette-summary{color:#8a939c;padding:0 12px 8px;font-size:11px}.info-card{color:#eaf2f8;background:#0f1b24;border:1px solid #2a3a46;border-radius:8px;box-shadow:0 8px 28px #00000052}.info-card-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.info-card-head span:first-child{font-weight:700}.info-card-x{cursor:pointer;color:#c66;font-weight:700}.tb-on{background:var(--sel)!important;border-color:var(--hover-bd)!important}.sel-chip{border:1px solid var(--hover-bd);color:#1572c4;white-space:nowrap;background:#d8eafa;border-radius:11px;align-items:center;gap:6px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.sel-chip-x{cursor:pointer;color:#5a8fb8;font-weight:400}.sel-chip-x:hover{color:#d6694e}.sel-chip.empty{color:#8a939c;white-space:normal;text-align:right;background:#f6f8fa;border:1px dashed #c4ccd4;max-width:158px;font-size:11px;font-weight:400;line-height:1.25}.mm-btn{z-index:61;cursor:pointer;color:#2a5d80;background:#fff;border:1px solid #c4ccd4;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:1px;width:58px;height:58px;margin:-29px 0 0 -29px;padding:0;display:flex;position:fixed;box-shadow:0 4px 14px #0000002e}.mm-btn:hover{background:var(--hover);border-color:var(--hover-bd)}.mm-btn.hot{background:var(--hover);border-color:var(--accent);box-shadow:0 0 0 2px #0696d74d,0 4px 14px #0000002e}.mm-btn.off{opacity:.38;cursor:default}.mm-btn.off:hover{background:#fff;border-color:#c4ccd4}.mm-glyph{font-size:18px;line-height:1}.mm-label{color:#4a545e;white-space:nowrap;max-width:52px;font-size:9.5px;line-height:1.1;overflow:hidden}.mm-center{z-index:61;background:var(--accent);pointer-events:none;border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:fixed;box-shadow:0 0 0 3px #0696d740}.main{grid-template-columns:clamp(208px,18vw,248px) minmax(0,1fr);min-height:0;display:grid}.browser{background:var(--panel);border-right:1px solid var(--border);font-size:12.5px;overflow:auto}.browser-head{height:26px;color:var(--text-dim);border-bottom:1px solid var(--border-soft);letter-spacing:.5px;background:var(--panel);align-items:center;padding:0 8px;font-size:11px;display:flex;position:sticky;top:0}.tree-row{white-space:nowrap;cursor:default;color:#333;align-items:center;gap:4px;height:22px;padding:0 6px;display:flex}.tree-row:hover{background:#eef4f8}.tree-row.sel{background:var(--sel)}.tw-toggle{color:#888;cursor:pointer;justify-content:center;width:12px;display:inline-flex}.tw-eye{color:#9a9a9a;cursor:pointer;width:16px;font-size:11px;display:inline-flex}.tw-act{color:#b7b7b7;cursor:pointer;opacity:0;text-align:center;width:16px;font-size:11px;transition:opacity .12s}.tree-row:hover .tw-act{opacity:1}.tw-act:hover{color:var(--accent)}.tw-swatch{border:1px solid var(--border-soft);cursor:pointer;opacity:0;background:0 0;border-radius:3px;width:15px;height:15px;padding:0;transition:opacity .12s}.tree-row:hover .tw-swatch,.tree-row.sel .tw-swatch{opacity:1}.tree-showall{color:#5a8fb8;cursor:pointer;font-size:11.5px}.tree-showall:hover{color:var(--accent)}.tree-rename{border:1px solid var(--accent);border-radius:3px;width:110px;padding:1px 4px;font-size:12px}.tw-ico{color:#6b86a3;width:16px;display:inline-flex}.viewport{background:radial-gradient(120% 130% at 50% 0,#e9eef2 0%,#d4dde4 45%,#eef2f5 100%);min-width:0;position:relative}.viewport canvas{display:block}.vp-toolbar{border:1px solid var(--border-soft);background:#ffffffd9;border-radius:16px;align-items:center;gap:3px;padding:3px 6px;display:flex;position:absolute;top:10px;left:12px;box-shadow:0 1px 4px #0000001f}.vp-toolbar input[type=range]{width:90px}.vp-navbar{z-index:80;box-sizing:border-box;white-space:nowrap;border:1px solid var(--border-soft);background:#ffffffd9;border-radius:16px;align-items:center;gap:2px;width:min(760px,100vw - 36px);max-width:calc(100vw - 36px);padding:3px 6px;display:flex;position:absolute;bottom:120px;left:50%;overflow:auto hidden;transform:translate(-50%);box-shadow:0 1px 4px #0000001f}.vp-navbar::-webkit-scrollbar{height:4px}.vp-navbar{scrollbar-width:thin;scrollbar-color:#52697894 transparent}.vp-navbar.vp-navbar-menu-open{overflow:visible}.vp-hud-dragged{transform:none!important}.vp-hud-handle{color:#84919b;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;letter-spacing:-2px;justify-content:center;align-items:center;width:13px;min-height:20px;font-size:14px;display:inline-flex}.vp-hud-handle:active{cursor:grabbing}.vp-hud-collapse{color:#647581;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;width:18px;height:18px;padding:0;font-size:14px;line-height:14px}.vp-hud-collapse:hover{background:var(--hover);border-color:var(--border-soft)}.vp-hud-reset{color:#647581;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;width:18px;height:18px;padding:0;font-size:13px;line-height:14px}.vp-hud-reset:hover{background:var(--hover);border-color:var(--border-soft)}.vp-navbar.vp-hud-collapsed,.vp-badge.vp-hud-collapsed,.vp-props.vp-hud-collapsed{white-space:nowrap;width:auto;max-width:none;height:30px;min-height:30px;padding:4px 6px;font-size:0;overflow:hidden}.vp-navbar.vp-hud-collapsed>:not(.vp-hud-handle):not(.vp-hud-collapse){display:none}.vp-badge.vp-hud-collapsed{display:inline-flex}.vp-props.vp-hud-collapsed{display:block}.vp-props.vp-hud-collapsed>:not(.vp-hud-handle):not(.vp-hud-collapse){display:none}.vp-hud-collapsed .vp-hud-handle{float:none;margin:0}.vp-hud-collapsed .vp-hud-collapse{font-size:14px}.vp-badge{color:#6d7780;text-align:left;border:1px solid var(--border-soft);z-index:41;background:#ffffffd6;border-radius:6px;align-items:flex-start;gap:4px;max-width:min(26vw,360px);padding:4px 7px;font-size:11px;line-height:1.45;display:flex;position:absolute;bottom:172px;right:12px;box-shadow:0 1px 4px #00000014}.vp-status-message{min-width:0;line-height:1.7}.vp-build-warning{z-index:60;box-sizing:border-box;color:#7a5b12;background:#fff7e6;border:1px solid #e8c26a;border-radius:6px;width:min(360px,100vw - 24px);padding:6px 8px;font-size:11px;position:fixed;top:130px;right:12px;box-shadow:0 1px 4px #00000026}.vp-build-warning-message{overflow-wrap:anywhere;word-break:normal;margin-top:3px;line-height:2}.vp-busy{color:#fff;background:#141414d1;border-radius:16px;padding:6px 14px;font-size:12px;position:absolute;top:16px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000040}.vp-props{color:#495560;border:1px solid var(--border-soft);z-index:40;background:#ffffffeb;border-radius:5px;max-width:min(42vw,720px);max-height:54px;padding:5px 9px;font-size:11px;line-height:1.45;position:absolute;bottom:172px;left:12px;overflow:auto}.vp-props>.vp-hud-handle{float:left;margin:-1px 5px 0 -3px}.vp-measure{color:#fff;background:#ff3b30eb;border-radius:16px;padding:5px 14px;font-size:12px;font-weight:600;position:absolute;top:52px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0003}.tb-text{color:#2a5c75;gap:5px;width:auto;min-width:0;font-size:12px;padding:0 9px!important}.tb-color-control{color:#35516a;border:1px solid var(--border-soft);cursor:pointer;background:#ffffffc7;border-radius:4px;align-items:center;gap:4px;height:24px;margin-left:4px;padding:0 5px;font-size:11px;font-weight:600;display:inline-flex}.tb-color-control:hover{background:#f5faff;border-color:#4b83b5}.tb-color{cursor:pointer;background:0 0;border:1px solid #71879a;border-radius:3px;width:28px;height:20px;padding:0}.tb-mat{height:24px;color:var(--text);background:var(--panel);border:1px solid var(--border-soft);cursor:pointer;border-radius:4px;margin-left:4px;padding:0 4px;font-size:12px}.tb-btn.tb-on{background:var(--accent);color:#fff;border-color:var(--accent)}.tl-hint{color:#b0b0b0;font-size:11px}.sketch-bar{border:1px solid var(--border);color:#333;background:#fffffff5;border-radius:8px;flex-wrap:nowrap;align-items:center;gap:10px;max-width:calc(100vw - 24px);padding:6px 12px;font-size:12px;display:flex;position:absolute;top:12px;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:0 2px 12px #00000029}.sketch-bar::-webkit-scrollbar{height:6px}.sketch-bar .sb-title{color:var(--accent);font-weight:600}.sketch-bar button{border:1px solid var(--border-soft);cursor:pointer;background:#fff;border-radius:5px;padding:4px 10px}.sketch-bar .sb-tool.active{background:var(--hover);border-color:var(--hover-bd);color:var(--accent)}.sketch-bar .sb-finish{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.sketch-bar .sb-finish:hover{background:#057fb8}.sketch-bar input{border:1px solid var(--border-soft);border-radius:4px;width:56px;padding:2px 5px}.sketch-bar .sb-hint{color:#9a9a9a}.sketch-bar .sb-spacer{width:6px}.sketch-display-dock{z-index:116;border:1px solid var(--border);background:#fffffff5;border-radius:7px;align-items:center;padding:4px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #00000029}.sketch-display-dock .tb-btn{white-space:nowrap;min-height:27px;padding:3px 9px}@media (width<=640px){.sketch-display-dock{bottom:12px;left:auto;right:12px;transform:none}.sketch-display-dock .tb-btn span{display:none}}.physics-lab-backdrop{z-index:700;background:#0d172194;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.physics-lab{color:#24313c;background:#f5f8fa;border:1px solid #9eabb5;border-radius:12px;flex-direction:column;width:min(1420px,100%);height:min(820px,100vh - 36px);min-height:520px;display:flex;overflow:hidden;box-shadow:0 24px 70px #0000006b}.physics-lab header{color:#fff;background:linear-gradient(105deg,#174e78,#177d96);justify-content:space-between;align-items:center;gap:10px;min-height:56px;padding:9px 15px;display:flex}.physics-lab header b{font-size:16px;display:block}.physics-lab header small{opacity:.84;margin-top:2px;font-size:11px;display:block}.physics-lab-header-actions{flex:none;align-items:center;gap:6px;display:flex}.physics-lab-header-actions button{color:#fff;cursor:pointer;background:#ffffff26;border:0;border-radius:6px;min-height:31px;padding:0 9px;font-size:12px;line-height:1}.physics-lab-header-actions button:hover:not(:disabled){background:#ffffff42}.physics-lab-header-actions button:disabled{opacity:.45;cursor:default}.physics-lab-header-actions .primary{background:#0787c2}.physics-lab-header-actions .close{width:31px;padding:0;font-size:24px}.physics-lab main{flex:1;grid-template-columns:250px minmax(360px,1fr) 240px;min-height:0;display:grid}.physics-lab aside{background:#fff;border-right:1px solid #d5dde3;padding:14px;font-size:12px;overflow:auto}.physics-lab-readout{border-left:1px solid #d5dde3;border-right:0!important}.physics-lab h3{color:#17618a;margin:2px 0 12px;font-size:13px}.physics-lab label{grid-template-columns:1fr auto;gap:4px 7px;margin:0 0 12px;display:grid}.physics-lab label input{accent-color:#1185b7;grid-column:1/-1}.physics-lab output{color:#5d6d79;font-variant-numeric:tabular-nums}.physics-lab label.physics-lab-toggle{grid-template-columns:1fr auto;align-items:center}.physics-lab label.physics-lab-toggle input{grid-column:auto;width:16px;height:16px;margin:0}.physics-lab-actions{gap:7px;margin:15px 0 18px;display:flex}.physics-lab-actions button{color:#334450;cursor:pointer;background:#fff;border:1px solid #b8c7d1;border-radius:5px;flex:1;min-height:30px}.physics-lab-actions .primary{color:#fff;background:#098ac5;border-color:#087db2}.physics-lab-presets{grid-template-columns:1fr;gap:6px;margin:-4px 0 14px;display:grid}.physics-lab-presets button{color:#24546c;text-align:left;cursor:pointer;background:#f7fbfd;border:1px solid #bbced8;border-radius:5px;min-height:28px;padding:4px 7px}.physics-lab-presets button:hover{color:#0875aa;background:#e8f6fb;border-color:#1789bd}.physics-lab-canvas{background:radial-gradient(circle at 50% 32%,#dcebf2,#9aafb9);min-width:0;position:relative}.physics-lab-canvas canvas{display:block;width:100%!important;height:100%!important}.physics-lab p{margin:0 0 9px;line-height:1.45}.physics-lab-note{color:#586b76;background:#eef4f7;border-left:3px solid #69aeca;border-radius:3px;padding:8px}.physics-lab dl{margin:0}.physics-lab dt{color:#74838d;margin-top:12px;font-size:11px}.physics-lab dd{color:#193e53;overflow-wrap:anywhere;margin:3px 0 0;font-family:ui-monospace,Consolas,monospace;font-size:12px}.physics-lab-events{color:#52636f;max-height:118px;margin:0 0 12px;padding-left:18px;font-size:11px;line-height:1.55;overflow:auto}.physics-lab-events b{color:#16749c;font-family:ui-monospace,Consolas,monospace}@media (width<=960px){.physics-lab{height:calc(100vh - 18px)}.physics-lab main{grid-template-columns:210px minmax(260px,1fr)}.physics-lab-readout{display:none}}@media (width<=650px){.physics-lab-backdrop{padding:6px}.physics-lab{height:calc(100vh - 12px);min-height:0}.physics-lab header{min-height:48px;padding:7px 9px}.physics-lab header small{display:none}.physics-lab-header-actions{gap:3px}.physics-lab-header-actions button{padding:0 6px;font-size:11px}.physics-lab main{grid-template-rows:205px minmax(280px,1fr);grid-template-columns:1fr}.physics-lab aside{border-bottom:1px solid #d5dde3;border-right:0}.physics-lab-canvas{min-height:280px}}.timeline{position:relative}.tl-chip{color:#2a5c75;cursor:pointer;background:#eaf4fb;border:1px solid #b9def0;border-radius:4px;flex:none;justify-content:center;align-items:center;width:26px;height:26px;margin-right:3px;padding:0;display:inline-flex;position:relative}.tl-chip:hover{background:#dcecfa}.tl-chip.sel{background:var(--accent);color:#fff;border-color:var(--accent)}.tl-chip.sel svg{color:#fff}.tl-chip.suppressed{opacity:.42;filter:grayscale(.85);background-image:linear-gradient(135deg,#0000 calc(50% - 1px),#6b7580 calc(50% - 1px) calc(50% + 1px),#0000 calc(50% + 1px))}.tl-chip svg{color:#2a7aa8}.tl-chip.cut{background:#f3e9fb;border-color:#d4b8ee}.tl-chip.cut svg{color:#8a4fc0}.tl-chip.cut:after{content:"";border-top:6px solid #e0442e;border-left:6px solid #0000;width:0;height:0;position:absolute;top:1px;right:1px}.tl-chip.cut.sel{background:#8a4fc0;border-color:#8a4fc0}.tl-chip.cut.sel svg{color:#fff}.tl-chip.err{border-color:#e0442e;box-shadow:inset 0 0 0 1px #e0442e}.tl-chip.err:before{content:"!";color:#fff;text-align:center;z-index:2;background:#e0442e;border-radius:50%;width:13px;height:13px;font-size:9px;font-weight:700;line-height:13px;position:absolute;top:-5px;right:-5px}.tree-row.err>span:nth-child(3){color:#c0392b}.tw-err{margin-left:4px;font-size:10px}.fe-errbar{color:#b5311f;background:#fdecea;border:1px solid #f3b5ab;border-radius:6px;align-items:center;gap:8px;margin:4px 0;padding:4px 8px;font-size:11px;display:flex}.fe-errsup{color:#e0442e;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #e0442e;border-radius:4px;padding:1px 6px}.fe-errsup:hover{color:#fff;background:#e0442e}.feat-editor{border:1px solid var(--border);color:#333;z-index:20;background:#fff;border-radius:8px;align-items:center;gap:14px;padding:9px 16px;font-size:12px;display:flex;position:absolute;bottom:calc(100% + 6px);left:130px;box-shadow:0 4px 18px #0000002e}.feat-editor .fe-title{color:var(--accent);align-items:center;gap:5px;font-weight:600;display:inline-flex}.feat-editor label{align-items:center;gap:6px;display:inline-flex}.feat-editor input{border:1px solid var(--border-soft);border-radius:4px;width:64px;padding:3px 6px}.feat-editor .fe-del{color:#c0392b;cursor:pointer;background:#fff;border:1px solid #e3b4ae;border-radius:5px;padding:4px 12px}.feat-editor .fe-del:hover{background:#fdf0ee}.feat-editor .fe-close{color:#555;border:1px solid var(--border-soft);cursor:pointer;background:#fff;border-radius:5px;padding:4px 12px}.timeline{z-index:90;background:var(--chrome-2);border-top:1px solid var(--border);align-items:center;gap:6px;min-height:38px;padding:0 8px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 8px #00000014}.tl-panel-head{color:#5a6b78;cursor:grab;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:4px;font-size:11px;display:inline-flex}.tl-panel-head:active{cursor:grabbing}.tl-panel-count{color:#8a97a2}.tl-panel-toggle{border:1px solid var(--border-soft);cursor:pointer;color:#53636f;background:#fff;border-radius:4px;width:22px;height:22px;padding:0}.timeline:has(.tl-panel-head-collapsed){border:1px solid var(--border);border-radius:7px;width:auto;min-height:32px;padding:4px 6px;bottom:12px;left:auto;right:12px;box-shadow:0 2px 10px #00000029}.tl-controls{align-items:center;gap:1px;display:flex}.tl-track{border:1px solid var(--border-soft);color:#b0b0b0;background:#fff;border-radius:3px;flex:0 auto;align-items:center;max-width:calc(100vw - 240px);height:32px;padding:0 5px;font-size:11px;display:flex;overflow:auto hidden}.tl-track::-webkit-scrollbar{height:4px}.tl-marker{background:var(--accent);cursor:ew-resize;touch-action:none;border-radius:2px;flex:none;width:4px;height:26px;margin:0 3px 0 0}.tl-marker:hover{box-shadow:0 0 0 2px var(--hover-bd)}.csketch{z-index:50;background:#fbfcfd;flex-direction:column;display:flex;position:fixed;inset:0}.cs-toolbar{background:var(--chrome-2);border-bottom:1px solid var(--border);overscroll-behavior-x:contain;scrollbar-width:thin;flex-wrap:nowrap;align-items:center;gap:6px;min-height:44px;padding:6px 10px;display:flex;overflow:auto hidden}.cs-toolbar::-webkit-scrollbar{height:5px}.cs-toolbar>*{white-space:nowrap;flex:none}.cs-title{color:var(--accent);margin-right:6px;font-weight:600}.cs-btn{border:1px solid var(--border-soft);cursor:pointer;color:#333;background:#fff;border-radius:5px;padding:4px 9px;font-size:12px}.cs-btn:hover{background:var(--hover)}.cs-btn.on{background:var(--hover);border-color:var(--hover-bd);color:var(--accent);font-weight:600}.cs-btn.cs-cstr{color:#2a5c75}.cs-btn.cs-finish{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.cs-btn.cs-finish:hover{background:#057fb8}.pick-slot.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600;animation:1.5s ease-in-out infinite pickSlotPulse;box-shadow:0 0 0 2px #1572c459}.pick-slot.active:hover{background:#057fb8}@keyframes pickSlotPulse{0%,to{box-shadow:0 0 0 2px #1572c459}50%{box-shadow:0 0 0 4px #1572c42e}}.cs-div{background:var(--border-soft);width:1px;height:20px;margin:0 4px}.cs-spacer{flex:0 0 8px}.cs-h input{border:1px solid var(--border-soft);border-radius:4px;width:56px;padding:2px 5px}.cs-svg{cursor:crosshair;touch-action:none;background:radial-gradient(120% 130% at 50% 40%,#fff,#eef2f5);flex:1;width:100%}.cs-dims{border:1px solid var(--border);background:#fff;border-radius:8px;width:min(188px,100vw - 28px);max-height:calc(100vh - 92px);padding:9px;font-size:12px;position:absolute;top:56px;right:14px;overflow:auto;box-shadow:0 2px 12px #00000024}.cs-dims-title{color:var(--text-dim);margin-bottom:6px}.cs-dim{align-items:center;gap:6px;margin-bottom:4px;display:flex}.cs-dim span{color:#555;width:32px}.cs-dim input{border:1px solid var(--border-soft);border-radius:4px;width:70px;padding:2px 4px}.cs-x{color:#c0392b;cursor:pointer;background:0 0;border:none;padding:0 2px}.cs-status{background:var(--chrome-2);border-top:1px solid var(--border);color:#444;padding:5px 12px;font-size:12px}.cs-status.bad{color:#c0392b;font-weight:600}.joints-panel{background:var(--panel);border:1px solid var(--border);z-index:15;border-radius:8px;width:min(330px,100vw - 28px);max-height:min(62vh,100vh - 246px);padding:10px;font-size:12px;position:fixed;bottom:210px;right:14px;overflow:auto;box-shadow:0 2px 14px #00000029}.joints-pill{z-index:15;background:var(--panel);border:1px solid var(--border);color:#2a5c75;cursor:pointer;border-radius:14px;padding:4px 12px;font-size:12px;position:fixed;bottom:210px;right:14px;box-shadow:0 1px 6px #00000024}.joints-pill:hover{background:var(--hover)}.params-panel{background:var(--panel);border:1px solid var(--border);z-index:15;border-radius:8px;width:min(290px,100vw - 28px);max-height:min(60vh,100vh - 164px);padding:10px;font-size:12px;position:fixed;top:128px;bottom:auto;left:14px;overflow:auto;box-shadow:0 2px 14px #00000029}.params-pill{z-index:15;background:var(--panel);border:1px solid var(--border);color:#2a5c75;cursor:pointer;border-radius:14px;padding:4px 12px;font-size:12px;position:fixed;top:128px;bottom:auto;left:14px;box-shadow:0 1px 6px #00000024}.params-pill:hover{background:var(--hover)}.params-panel .pp-title .vp-hud-handle{float:none;vertical-align:middle;margin:0 4px 0 0}.info-card{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;max-width:calc(100vw - 28px);max-height:min(58vh,100vh - 246px);overflow:auto;box-shadow:0 2px 14px #00000029}@media (width<=900px){.ws-big{width:72px;margin:4px;font-size:12px}.ribbon-tab{padding:0 7px;font-size:11px}.tool-btn{flex-basis:30px;width:30px;height:34px}.tool-btn svg{transform:scale(.9)}.main{grid-template-columns:minmax(180px,28vw) minmax(0,1fr)}.joints-panel,.joints-pill{bottom:166px}.vp-navbar{bottom:76px}.vp-badge,.vp-props{bottom:128px}}@media (height<=680px){.joints-panel{max-height:calc(100vh - 154px);bottom:118px}.joints-pill{bottom:118px}.params-panel{max-height:calc(100vh - 154px)}.vp-navbar{bottom:54px}.vp-badge,.vp-props{bottom:104px}}.pp-title{color:var(--accent);justify-content:space-between;margin-bottom:4px;font-weight:600;display:flex}.pp-x{cursor:pointer;color:#999}.pp-hint,.pp-empty{color:#8a929a;margin-bottom:6px;font-size:11px}.pp-row,.pp-add{align-items:center;gap:6px;margin-bottom:5px;display:flex}.pp-name{color:#2a5c75;flex:1;font-family:monospace}.pp-name-in{flex:1;width:60px}.pp-val{border:1px solid var(--border-soft);border-radius:4px;width:58px;padding:2px 5px}.pp-expr{border:1px solid var(--border-soft);border-radius:4px;width:66px;padding:2px 5px;font-family:monospace;font-size:11px}.pp-used{color:#9aa6af;font-size:11px}.pp-del{cursor:pointer}.fe-param{border:1px solid var(--border-soft);color:#2a7aa8;cursor:pointer;background:#f3f8fb;border-radius:4px;margin-left:4px;font-size:11px}.drawing-overlay{z-index:100;background:#141c2473;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.drawing-modal{background:#f6f7f9;border-radius:10px;width:min(92vw,1000px);max-height:88vh;padding:14px 18px;overflow:auto;box-shadow:0 8px 40px #0000004d}.dw-head{color:var(--accent);justify-content:space-between;margin-bottom:12px;font-size:15px;font-weight:600;display:flex}.dw-x{cursor:pointer;color:#999}.dw-views{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.dw-view{border:1px solid var(--border);background:#fff;border-radius:6px;padding:6px}.dw-vtitle{text-align:center;color:#5a6b78;margin-bottom:4px;font-size:12px}.dw-dim{text-align:center;color:#2a7aa8;margin-top:3px;font-family:monospace;font-size:11px}.dw-foot{justify-content:flex-end;align-items:center;gap:10px;margin-top:12px;display:flex}.dw-legend{color:#8a929a;margin-right:auto;font-size:12px}.help-modal{background:#fff;border-radius:10px;width:min(92vw,880px);max-height:88vh;padding:16px 20px;overflow:auto;box-shadow:0 8px 40px #0000004d}.intro-card-body{overflow-wrap:anywhere}@media (height<=760px){.intro-card-modal{max-height:82vh}.intro-card-body{padding-block:12px!important;font-size:13px!important}.intro-card-body .cs-btn{min-height:30px}}.help-grid{color:#3a4650;grid-template-columns:1fr 1fr;gap:18px;font-size:12.5px;line-height:1.5;display:grid}.help-grid h4{color:var(--accent);margin:10px 0 3px;font-size:13px}.help-grid p{margin:0 0 4px}.help-keys{margin:4px 0;padding:0;list-style:none}.help-keys li{margin:3px 0}.help-keys kbd{background:#eef1f4;border:1px solid #c7ccd2;border-radius:4px;padding:1px 6px;font-family:monospace;font-size:11px}.jp-title{color:var(--accent);margin-bottom:8px;font-weight:600}.jp-joint{border:1px solid var(--border-soft);border-radius:6px;margin-bottom:6px;padding:6px 8px}.jp-row{align-items:center;gap:6px;display:flex}.jp-row b{color:#333}.jp-type{color:#2a5c75;background:#eaf4fb;border:1px solid #b9def0;border-radius:9px;padding:0 7px}.jp-cc{color:var(--text-dim);flex:1;font-size:11px}.jp-drive{color:#555;align-items:center;gap:6px;margin-top:5px;display:flex}.jp-drive input[type=range]{flex:1}.jp-drive span{text-align:right;width:36px}.jp-lim{color:#888;align-items:center;gap:4px;margin-top:3px;font-size:11px;display:flex}.jp-lim input{border:1px solid var(--border-soft);border-radius:3px;width:48px;padding:1px 3px}.jp-add{border-top:1px solid var(--border-soft);flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;padding-top:8px;display:flex}.jp-add select{border:1px solid var(--border-soft);border-radius:4px;max-width:90px;padding:2px 4px;font-size:12px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:2px solid var(--panel);background:#c3c3c3;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#a9a9a9}@media (width<=860px){.main{grid-template-columns:184px 1fr}.doc-name{width:84px}.topbar{gap:3px}.app{grid-template-columns:minmax(0,1fr);overflow-x:hidden}.main{min-width:0}.main>*{min-width:0;overflow:hidden}}@media (width<=560px){.main{grid-template-columns:148px 1fr}.doc-name{width:56px}.topbar{gap:2px;padding:0 4px}.cmd-palette{left:8px;right:8px;width:auto!important}.cmd-palette-body{max-height:50vh}}@media (width<=380px){.main{grid-template-columns:0 1fr}}
