:root{color-scheme:dark;font-family:Microsoft YaHei,Segoe UI,sans-serif;font-synthesis:none;--panel: rgba(17, 21, 23, .92);--panel-soft: rgba(25, 30, 32, .86);--line: rgba(255, 255, 255, .12);--text: #f3f6f6;--muted: #aeb8b9;--accent: #58d6ca;--accent-soft: rgba(88, 214, 202, .15)}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden;background:#fff}button{font:inherit;letter-spacing:0}#scene{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;cursor:grab;touch-action:none}#scene:active{cursor:grabbing}.topbar{position:absolute;z-index:10;top:0;left:0;right:0;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px 14px 10px 18px;color:var(--text);background:var(--panel);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.identity{display:grid;gap:2px;min-width:190px}.identity strong{font-size:16px;font-weight:650}.identity span{color:var(--muted);font-size:12px}.toolbar{display:flex;align-items:center;gap:4px}.tool-button,.icon-button,.joint-nav button{color:var(--muted);background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease}.tool-button{min-width:62px;height:40px;padding:0 9px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px}.tool-button svg,.icon-button svg,.joint-nav svg{width:17px;height:17px}.tool-button:hover,.icon-button:hover,.joint-nav button:hover{color:var(--text);background:#ffffff12}.tool-button.active{color:var(--accent);background:var(--accent-soft);border-color:#58d6ca59}.tool-button:disabled{color:#aeb8b961;cursor:not-allowed;background:transparent}.parts-panel{position:absolute;z-index:8;top:82px;left:18px;width:244px;color:var(--text);background:var(--panel-soft);border:1px solid var(--line);border-radius:7px;overflow:hidden;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.panel-heading{height:43px;padding:0 8px 0 13px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line)}.icon-button{width:32px;height:32px;display:grid;place-items:center}.parts-list{display:grid}.part-item{width:100%;min-height:61px;padding:9px 12px;display:grid;grid-template-columns:28px minmax(0,1fr) 12px;align-items:center;gap:9px;color:var(--text);text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);cursor:pointer}.part-item:last-child{border-bottom:0}.part-item:hover{background:#ffffff0d}.part-item.active{background:var(--accent-soft)}.part-number{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.part-copy{min-width:0;display:grid;gap:3px}.part-copy strong{font-size:13px;font-weight:600;white-space:nowrap}.part-copy span{color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-dot{width:9px;height:9px;border-radius:50%;border:1px solid rgba(255,255,255,.38);background:transparent;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.part-item.active .material-dot{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 3px #58d6ca24}.assembly-icon{width:15px;height:15px;color:var(--muted)}.assembly-item.active .assembly-icon{color:var(--accent)}.detail-panel{position:absolute;z-index:8;right:18px;bottom:18px;width:286px;min-height:126px;padding:14px 16px;display:grid;align-content:start;gap:5px;color:var(--text);background:var(--panel-soft);border:1px solid var(--line);border-radius:7px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.detail-label{color:var(--accent);font-size:11px}.detail-panel strong{font-size:16px}.detail-panel>span{color:var(--muted);font-size:12px}.detail-panel p{margin:6px 0 0;color:#dbe2e2;font-size:12px;line-height:1.55}.joint-nav{position:absolute;z-index:8;right:18px;top:82px;display:flex;gap:6px}.joint-nav button{height:38px;padding:0 11px;display:inline-flex;align-items:center;gap:6px;color:var(--text);background:var(--panel-soft);border-color:var(--line);font-size:12px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.loading{position:absolute;z-index:20;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;gap:13px;color:#384244;background:#fff;font-size:13px;transition:opacity .3s ease,visibility .3s ease}.loading.hidden{opacity:0;visibility:hidden}.loading-line{width:180px;height:3px;overflow:hidden;background:#1e282a1f}.loading-line span{display:block;width:0;height:100%;background:#168f88;transition:width .18s ease}@media(max-width:820px){.topbar{min-height:58px;padding:8px 10px 8px 13px}.identity{min-width:132px}.identity strong{font-size:14px}.identity span{font-size:10px}.toolbar{max-width:calc(100vw - 158px);overflow-x:auto;scrollbar-width:none}.toolbar::-webkit-scrollbar{display:none}.toolbar{gap:2px}.tool-button{min-width:34px;width:34px;padding:0}.tool-button span{display:none}.parts-panel{top:70px;left:10px;width:202px}.part-item{min-height:52px;padding:7px 9px;grid-template-columns:23px minmax(0,1fr) 10px;gap:6px}.part-copy strong{font-size:12px}.part-copy span{font-size:10px}.joint-nav{top:auto;bottom:11px;left:10px;right:auto}.joint-nav button{height:36px;padding:0 9px}.detail-panel{right:10px;bottom:11px;width:min(232px,calc(100vw - 204px));min-height:104px;padding:11px 12px}.detail-panel p{display:none}}@media(max-width:560px){.parts-panel{top:auto;bottom:57px;left:8px;right:8px;width:auto}.panel-heading{display:none}.parts-list{grid-template-columns:repeat(6,minmax(0,1fr))}.part-item{min-height:60px;grid-template-columns:1fr;justify-items:center;gap:3px;padding:7px 4px;border-bottom:0;border-right:1px solid var(--line);text-align:center}.part-item:last-child{border-right:0}.part-copy span,.material-dot,.assembly-icon{display:none}.part-copy strong{white-space:normal;line-height:1.15}.detail-panel{display:none}.joint-nav{bottom:8px;left:8px;right:8px;justify-content:center}.joint-nav button{flex:1;justify-content:center}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important}}
