:root{color-scheme:light;--bg: #f3f4f6;--bg-elev: #ffffff;--bg-sunken: #e9ebee;--fg: #1c1e22;--fg-muted: #6b7280;--border: #d9dce1;--accent: #2f7df6;--accent-fg: #ffffff;--sel-bg: #dbe8ff;--sel-fg: #0f3f8f;--hover-bg: #eef1f5;--danger: #c62828;--danger-bg: #fdecec;--shadow: 0 6px 24px rgba(0, 0, 0, .14);--kind-group: #8a8f98;--kind-panel: #c99a5b;--kind-profile: #b58a5a;--kind-revolve: #9c7bd6;--kind-fastener: #7c8aa0;--kind-hardware: #5fa37a;--kind-mesh: #4f8fd6;--kind-other: #a0a4ab}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--bg: #17191d;--bg-elev: #1f2227;--bg-sunken: #121417;--fg: #e6e8eb;--fg-muted: #9aa1ab;--border: #2f343b;--accent: #4d8ef7;--accent-fg: #ffffff;--sel-bg: #243a63;--sel-fg: #dce8ff;--hover-bg: #262a30;--danger: #ff6b6b;--danger-bg: #3a1f1f;--shadow: 0 6px 24px rgba(0, 0, 0, .5)}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);font:13px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow:hidden;-webkit-font-smoothing:antialiased}button,input{font:inherit;color:inherit}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.muted{color:var(--fg-muted)}.app{--pane-left: 280px;height:100%;display:grid;grid-template-columns:var(--pane-left) minmax(0,1fr) 280px;grid-template-rows:40px minmax(0,1fr);grid-template-areas:"top top top" "left main right";background:var(--bg)}.topbar{grid-area:top;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--bg-elev);border-bottom:1px solid var(--border);min-width:0}.brand{font-weight:600;letter-spacing:.01em;white-space:nowrap}.model-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg)}.stats{display:flex;gap:12px;color:var(--fg-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.stats b{color:var(--fg);font-weight:600}.pane{display:flex;flex-direction:column;min-height:0;background:var(--bg-elev);border-right:1px solid var(--border)}.pane-left{grid-area:left;position:relative}.pane-resizer{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:3}.pane-resizer:hover{background:var(--accent);opacity:.35}.pane-right{grid-area:right;border-right:0;border-left:1px solid var(--border)}.pane-header{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;font-weight:600;color:var(--fg-muted);text-transform:uppercase;font-size:11px;letter-spacing:.06em;cursor:default}.pane-toggle{display:none}.pane-body{flex:1 1 auto;min-height:0;overflow:auto}.main{grid-area:main;display:flex;flex-direction:column;min-width:0;min-height:0}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:4px 12px;min-height:34px;background:var(--bg-elev);border-bottom:1px solid var(--border)}.toolbar-check{display:inline-flex;align-items:center;gap:5px;cursor:pointer;user-select:none;white-space:nowrap}.toolbar-check input{margin:0;accent-color:var(--accent)}.toolbar-spacer{flex:1 1 auto}.btn{padding:3px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg-elev);cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--hover-bg)}.btn:disabled{opacity:.5;cursor:default}.btn.is-active{background:var(--sel-bg);color:var(--sel-fg);border-color:transparent}.btn.is-active:hover:not(:disabled){background:var(--sel-bg);filter:brightness(.97)}.btn-icon{display:inline-flex;align-items:center;gap:6px}.btn-icon svg{flex:0 0 auto}.btn-badge{display:inline-block;margin-left:6px;padding:0 6px;border-radius:8px;font-size:11px;line-height:16px;background:var(--accent);color:var(--accent-fg);font-variant-numeric:tabular-nums}.btn-primary{background:var(--accent);color:var(--accent-fg);border-color:transparent}.btn-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}button.link{padding:0;border:0;background:none;color:var(--accent);cursor:pointer;text-decoration:underline}.viewport{position:relative;flex:1 1 auto;min-height:0;background:var(--bg-sunken)}.viewport-canvas{position:absolute;inset:0;overflow:hidden}.viewport-canvas canvas{outline:none}.viewport-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.viewport-empty-card{pointer-events:auto;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:18px 22px;max-width:360px;text-align:center;box-shadow:var(--shadow)}.viewport-empty-title{font-weight:600;margin-bottom:6px}.viewport-empty-hint{color:var(--fg-muted);font-size:12px;margin-top:10px}.tree{padding:4px 0;font-variant-numeric:tabular-nums}.tree-empty,.props-empty{padding:12px 10px;color:var(--fg-muted)}.tree-row{display:flex;align-items:center;gap:4px;height:24px;padding-right:8px;cursor:pointer;white-space:nowrap;user-select:none}.tree-row:hover{background:var(--hover-bg)}.tree-row.is-selected{background:var(--sel-bg);color:var(--sel-fg)}.tree-caret{flex:0 0 16px;width:16px;height:16px;padding:0;border:0;background:none;color:var(--fg-muted);font-size:11px;line-height:16px;text-align:center;cursor:pointer}.tree-caret.is-leaf{cursor:default}.tree-chip{flex:0 0 14px;width:14px;height:14px;border-radius:3px;font-size:9px;line-height:14px;text-align:center;color:#fff;background:var(--kind-other)}.kind-group{background:var(--kind-group)}.kind-panel{background:var(--kind-panel)}.kind-profile{background:var(--kind-profile)}.kind-revolve{background:var(--kind-revolve)}.kind-fastener{background:var(--kind-fastener)}.kind-hardware{background:var(--kind-hardware)}.kind-mesh{background:var(--kind-mesh)}.tree-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.tree-article{color:var(--fg-muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;max-width:40%}.tree-tag{flex:0 0 auto;color:var(--fg-muted);font-size:10px;padding:0 5px;border-radius:8px;border:1px solid var(--border);white-space:nowrap}.tree-count{flex:0 0 auto;color:var(--fg-muted);font-size:11px;padding:0 5px;border-radius:8px;background:var(--bg-sunken)}.tree-row.is-selected .tree-tag{flex:0 0 auto;color:var(--fg-muted);font-size:10px;padding:0 5px;border-radius:8px;border:1px solid var(--border);white-space:nowrap}.tree-count{background:#00000014}.tree-row.is-dimmed .tree-chip,.tree-row.is-dimmed .tree-name,.tree-row.is-dimmed .tree-article,.tree-row.is-dimmed .tree-tag{flex:0 0 auto;color:var(--fg-muted);font-size:10px;padding:0 5px;border-radius:8px;border:1px solid var(--border);white-space:nowrap}.tree-count{opacity:.45}.tree-row.is-hidden .tree-name{text-decoration:line-through;text-decoration-color:var(--fg-muted)}.tree-icon{flex:0 0 20px;width:20px;height:20px;margin-left:2px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:4px;background:none;color:var(--fg-muted);opacity:.4;cursor:pointer}.tree-row:hover .tree-icon{opacity:.85}.tree-icon:hover{opacity:1!important;background:#00000012;color:var(--fg)}.tree-icon.is-on{opacity:1;color:var(--accent)}.tree-row.is-selected .tree-icon{color:var(--sel-fg)}.tree-row.is-selected .tree-icon.is-on{color:var(--accent)}@media (prefers-color-scheme: dark){.tree-icon:hover{background:#ffffff14}}.props{padding:6px 0;font-variant-numeric:tabular-nums}.props-section{padding:6px 10px 10px;border-bottom:1px solid var(--border)}.props-section:last-child{border-bottom:0}.props-title{font-weight:600;margin-bottom:6px;overflow-wrap:anywhere}.props-heading{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted);margin-bottom:6px}.prop-row{display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px;padding:2px 0}.prop-label{color:var(--fg-muted)}.prop-value{overflow-wrap:anywhere}.props-list{margin:0;padding-left:16px;color:var(--fg)}.props-list li{padding:1px 0;overflow-wrap:anywhere}.props-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px}.props-note{font-size:12px}.props-anim{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:3px 0}.props-anim-name{color:var(--fg-muted)}.btn.is-active .props-anim-name{color:inherit;opacity:.8}.color-chip-wrap{display:inline-flex;align-items:center;gap:6px}.color-chip{width:14px;height:14px;border-radius:3px;border:1px solid var(--border);flex:0 0 auto}.color-info{display:flex;flex-direction:column;gap:2px}.color-source{font-size:12px}.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.props-placeholder{font-size:12px;color:var(--fg-muted);font-style:italic;margin-bottom:4px}.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#00000040;z-index:50}.overlay-card{width:320px;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:16px 18px;box-shadow:var(--shadow)}.overlay-title{font-weight:600;margin-bottom:10px}.overlay-pct{margin-top:6px;color:var(--fg-muted);font-variant-numeric:tabular-nums;text-align:right}.progress{height:6px;border-radius:3px;background:var(--bg-sunken);overflow:hidden}.progress-bar{height:100%;background:var(--accent);transition:width .12s linear}.progress.is-indeterminate .progress-bar{width:35%!important;animation:slide 1.1s ease-in-out infinite}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.drop-hint{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#2f7df61f;outline:3px dashed var(--accent);outline-offset:-8px;pointer-events:none}.drop-hint-card{background:var(--bg-elev);border:1px solid var(--accent);border-radius:8px;padding:12px 18px;font-weight:600;box-shadow:var(--shadow)}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:70;display:flex;align-items:center;gap:10px;max-width:min(640px,calc(100vw - 32px));padding:10px 12px 10px 14px;border-radius:6px;box-shadow:var(--shadow);border:1px solid var(--border);background:var(--bg-elev)}.toast-error{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.toast-text{overflow-wrap:anywhere}.toast-close{border:0;background:none;font-size:18px;line-height:1;cursor:pointer;color:inherit;padding:0 2px}@media (max-width: 800px){body{overflow:auto}.app{display:flex;flex-direction:column;height:auto;min-height:100%}.topbar{order:0;flex-wrap:wrap;height:auto;min-height:40px;padding:6px 10px}.stats{width:100%;font-size:12px;gap:10px;overflow-x:auto}.main{order:1;flex:0 0 auto;height:55vh}.pane{flex:0 0 auto;border-right:0;border-left:0;border-top:1px solid var(--border)}.pane-left{order:2}.pane-right{order:3}.pane-header{cursor:pointer}.pane-toggle{display:inline}.pane-body{max-height:40vh}.pane.is-collapsed .pane-body{display:none}}.pane-tabs{padding:0 4px 0 0;gap:0;cursor:default}.pane-tab{flex:1 1 auto;padding:7px 6px;border:0;border-bottom:2px solid transparent;background:none;color:var(--fg-muted);font:inherit;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;white-space:nowrap}.pane-tab:hover{color:var(--fg)}.pane-tab.is-active{color:var(--accent);border-bottom-color:var(--accent)}.pane-tab .btn-badge{margin-left:5px;font-weight:500;letter-spacing:0;text-transform:none}.pane-tabs .pane-toggle{display:none;border:0;background:none;color:var(--fg-muted);cursor:pointer;padding:0 6px}.search{display:flex;flex-direction:column;min-height:100%}.search-head{padding:8px 10px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.search-input{width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--fg)}.search-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{padding:1px 8px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elev);color:var(--fg-muted);font-size:11px;cursor:pointer}.chip:hover{background:var(--hover-bg);color:var(--fg)}.chip.is-on{background:var(--sel-bg);color:var(--sel-fg);border-color:transparent}.search-isolate,.search-summary{font-size:12px}.search-results{padding:4px 0}.search-group-head{display:flex;align-items:center;gap:6px;padding:6px 10px 2px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted);position:sticky;top:0;background:var(--bg-elev)}.search-group-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-hit{display:flex;align-items:center;gap:6px;padding:3px 10px 3px 14px;cursor:pointer;min-height:24px}.search-hit:hover{background:var(--hover-bg)}.search-hit.is-selected{background:var(--sel-bg);color:var(--sel-fg)}.search-hit-text{display:flex;flex-direction:column;min-width:0;line-height:1.25}.search-hit-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-hit-sub{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-hit.is-selected .search-hit-sub{color:inherit;opacity:.75}.search-more{padding:2px 14px 6px;font-size:11px}.spec{font-variant-numeric:tabular-nums}.spec-header{padding:8px 10px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:4px}.spec-title{font-weight:600;overflow-wrap:anywhere}.spec-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px}.spec-actions .toolbar-check{font-size:12px}.spec-section{padding:8px 10px;border-bottom:1px solid var(--border)}.spec-scroll{overflow:visible}.spec-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed}.spec-table th,.spec-table td{padding:3px 6px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spec-table th{color:var(--fg-muted);font-weight:600;font-size:11px;position:sticky;top:0;z-index:1;background:var(--bg-elev)}.spec-panels .c-pos{width:40px}.spec-panels .c-name{width:24%}.spec-panels .c-mat{width:26%}.spec-panels .c-size{width:84px}.spec-panels .c-thk{width:48px}.spec-panels .c-edge{width:18%}.spec-panels .c-qty{width:50px}.spec-tag{display:inline-block;margin-left:6px;padding:0 5px;border-radius:8px;font-size:10px;line-height:14px;background:var(--bg-sunken);color:var(--fg-muted);vertical-align:1px}.spec-table tr.is-part td:nth-child(2){color:var(--fg-muted)}.spec-table tr.is-active.is-part td{color:var(--sel-fg)}.spec-table th.is-sortable{cursor:pointer;user-select:none}.spec-table th.num,.spec-table td.num{text-align:right}.spec-table tbody tr{cursor:pointer}.spec-table tbody tr:hover{background:var(--hover-bg)}.spec-table tbody tr.is-active{background:var(--sel-bg);color:var(--sel-fg)}.spec-table tbody tr.is-muted{color:var(--fg-muted);cursor:default}.spec-collapse{border:0;background:none;padding:0;color:var(--fg);cursor:pointer;font-weight:600}.spec-xml{margin:8px 0 0;padding:8px;max-height:320px;overflow:auto;background:var(--bg-sunken);border-radius:4px;font-size:11px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}.mat-list{display:flex;flex-direction:column;gap:2px}.mat-item{display:flex;align-items:center;gap:8px;width:100%;padding:3px 6px;border:1px solid transparent;border-radius:4px;background:none;text-align:left;cursor:pointer}.mat-item:hover:not(:disabled){background:var(--hover-bg)}.mat-item:disabled{color:var(--fg-muted);cursor:default}.mat-item.is-on{background:var(--sel-bg);color:var(--sel-fg)}.mat-name{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}.btn-badge.is-quiet{background:var(--bg-sunken);color:var(--fg-muted)}.mat-item.is-on .btn-badge{background:var(--accent);color:var(--accent-fg)}.label-layer{z-index:2}.dim-label{padding:1px 5px;border-radius:3px;background:#ffffffe6;color:#1c1e22;border:1px solid rgba(0,0,0,.18);font:600 11px/1.3 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap;user-select:none}.dim-label-sel{background:var(--accent);color:var(--accent-fg);border-color:transparent}.dim-label-model{background:#ffffffb3;color:var(--fg-muted)}.dim-label-measure{background:#d92d20;color:#fff;border-color:transparent;font-size:12px}@media (prefers-color-scheme: dark){.dim-label{background:#202329eb;color:#e6e8eb;border-color:#fff3}.dim-label-model{background:#202329b3}.dim-label-sel{background:var(--accent);color:var(--accent-fg)}.dim-label-measure{background:#d92d20;color:#fff}}.measure-hint{position:absolute;top:10px;left:50%;transform:translate(-50%);padding:4px 10px;border-radius:4px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow);font-size:12px;pointer-events:none;z-index:3}.app.is-presentation{grid-template-columns:0 minmax(0,1fr) 0;grid-template-areas:"top top top" "main main main"}.app.is-presentation .topbar{background:transparent;border-bottom-color:transparent;position:relative;z-index:4}.app.is-presentation .main{grid-area:main}.app.is-presentation .viewport{background:transparent}.pbar{position:absolute;left:50%;bottom:16px;transform:translate(-50%);z-index:5;display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px;padding:8px 12px;border-radius:10px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow);max-width:calc(100% - 32px)}.pbar-hint{font-size:11px;white-space:nowrap}.main{position:relative}.toast-info{border-color:var(--accent)}@media (max-width: 800px){.pane-tabs .pane-toggle{display:inline}.pane-resizer{display:none}.spec-scroll{overflow-x:auto}.spec-panels{min-width:620px}}.explode-card{position:absolute;top:44px;right:12px;z-index:6;width:300px;max-width:calc(100% - 24px);padding:10px 12px;border-radius:8px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px}.app.is-presentation .explode-card{top:12px}.explode-head{display:flex;align-items:center;justify-content:space-between}.explode-title{font-weight:600}.explode-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.explode-label{flex:0 0 76px;color:var(--fg-muted)}.explode-row input[type=range]{flex:1 1 auto;min-width:100px;accent-color:var(--accent);margin:0}.explode-value{flex:0 0 44px;text-align:right;font-variant-numeric:tabular-nums}.explode-axes{display:flex;gap:10px}.explode-note{padding-left:84px;font-size:12px;overflow-wrap:anywhere}.explode-foot{padding-top:4px;border-top:1px solid var(--border)}.chip:disabled{opacity:.5;cursor:default}.props-explode{font-weight:600}.spec-panels .c-draw{width:26px}.spec-table td.c-draw{padding:1px 2px;text-align:center}.spec-draw{opacity:.55}.spec-table tbody tr:hover .spec-draw{opacity:1}.drawing-overlay{position:fixed;inset:0;z-index:80;display:flex;flex-direction:column;background:var(--bg)}.drawing-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 12px;background:var(--bg-elev);border-bottom:1px solid var(--border)}.drawing-title{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40%}.drawing-nav{display:inline-flex;align-items:center;gap:6px}.drawing-page{font-variant-numeric:tabular-nums}.drawing-zoom{font-variant-numeric:tabular-nums;min-width:44px;text-align:right}.drawing-stage{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#9aa0a8;cursor:grab;touch-action:none}.drawing-stage:active{cursor:grabbing}.drawing-sheet{background:#fff;box-shadow:0 8px 32px #00000059;transform-origin:center center;user-select:none}.drawing-opt{display:inline-flex;align-items:center;gap:4px;font-size:12px}.drawing-opt select{padding:2px 4px;border:1px solid var(--border);border-radius:4px;background:var(--bg-elev);color:var(--fg)}.drawing-sheet svg{display:block;width:100%;height:100%}.drawing-print{display:none}@media print{@page{size:A4 landscape;margin:0}body{overflow:visible;background:#fff}.app,.drawing-bar,.drawing-stage,.toast,.overlay{display:none!important}.drawing-overlay{position:static;display:block;background:#fff}.drawing-print{display:block}.drawing-print-page{width:297mm;height:210mm;page-break-after:always;break-after:page;overflow:hidden}.drawing-print-page svg{width:100%;height:100%;display:block}}
