:root{--bg-primary: #eae8e4;--bg-secondary: #f0efeb;--bg-tertiary: #e4e1de;--accent: #e07b2a;--accent-hover: #c4621a;--text-primary: #1a1714;--text-muted: #6e6660;--border: #dcd9d4;--sel-color: #e07b2a;--bg-panel: #f0efeb;--bg-sidebar: #eae8e4;--bg-row: #edebe7;--bg-row-hover: #e4e1de}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);height:100vh;overflow:hidden}#app{display:flex;flex-direction:column;height:100vh}#toolbar{flex-shrink:0;min-height:52px;background:var(--bg-secondary);border-bottom:1px solid var(--border);display:flex;align-items:center;flex-wrap:wrap;padding:6px 18px;gap:8px}.back-to-dash{display:flex;align-items:center;gap:5px;text-decoration:none;font-size:12px;color:var(--text-muted);border:1px solid var(--border);border-radius:7px;padding:5px 10px;flex-shrink:0;transition:color .15s,border-color .15s}.back-to-dash:hover{color:var(--accent);border-color:var(--accent)}.logo{font-size:15px;font-weight:700;letter-spacing:.4px;color:var(--accent);-webkit-user-select:none;user-select:none}.logo span{color:var(--text-primary)}.divider{width:1px;height:24px;background:var(--border)}.file-btn{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:5px 12px;font-size:12px;font-weight:500;cursor:pointer;transition:background .18s;line-height:1;white-space:nowrap;flex-shrink:0}.file-btn:hover{background:var(--accent-hover)}.file-btn.file-btn-disabled{opacity:.45;pointer-events:none;cursor:not-allowed}.file-btn svg{flex-shrink:0}#file-input{display:none}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s;flex-shrink:0}.icon-btn:hover{color:var(--text-primary);border-color:var(--accent)}.toolbar-secondary{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);flex-wrap:nowrap}.toolbar-secondary label{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:6px}.toolbar-secondary input[type=checkbox]{accent-color:var(--accent)}.toolbar-secondary .model-opacity{display:inline-flex;align-items:center;gap:6px;padding-left:6px;margin-left:2px;border-left:1px solid var(--border)}.toolbar-secondary select{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-size:12px;max-width:220px}.toolbar-secondary input[type=range]{width:90px;accent-color:var(--accent)}.grid-y-control{display:inline-flex;align-items:center;gap:4px;padding-left:8px;margin-left:2px;border-left:1px solid var(--border)}.grid-y-control .grid-y-lbl{font-size:11px;color:var(--text-muted);white-space:nowrap}.grid-y-control input[type=range]{width:72px}.grid-y-control .grid-y-val{font-size:11px;color:var(--text-muted);width:34px;text-align:right;font-variant-numeric:tabular-nums}.grid-y-control .grid-y-reset{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:4px;padding:1px 6px;font-size:11px;cursor:pointer;line-height:1.3}.grid-y-control .grid-y-reset:hover{color:var(--text-primary);border-color:var(--accent)}.btn-clear{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:4px 8px;font-size:11.5px;cursor:pointer;white-space:nowrap}.btn-clear:hover{color:var(--text-primary);border-color:var(--accent)}#loading{display:none;align-items:center;gap:8px;color:var(--text-muted);font-size:13px}#loading.visible{display:flex}#loading-progress-wrap{width:150px;height:6px;border-radius:999px;overflow:hidden;background:var(--border);display:none}#loading-progress-wrap.visible{display:block}#loading-progress-bar{height:100%;width:0%;background:var(--accent);transition:width .16s linear}.spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.spacer{flex:1}#status-text{color:var(--text-muted);font-size:12px}#main{flex:1;display:flex;overflow:hidden}#canvas-wrap{flex:1;position:relative;overflow:hidden;background:var(--bg-primary)}#canvas{display:block;width:100%;height:100%}.canvas-overlay{position:absolute;bottom:14px;left:50%;transform:translate(-50%);background:#e6e4e0eb;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:var(--text-muted);font-size:12px;padding:5px 14px;border-radius:20px;border:1px solid var(--border);pointer-events:none;white-space:nowrap;transition:opacity .3s}.canvas-overlay.hidden{opacity:0}#props-panel{width:340px;flex-shrink:0;background:var(--bg-secondary);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}#models-panel{width:300px;flex-shrink:0;background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}#models-scroll{flex:1;overflow-y:auto;padding:12px}#models-scroll::-webkit-scrollbar{width:5px}#models-scroll::-webkit-scrollbar-track{background:transparent}#models-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.model-card{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:10px}.model-title{font-size:12px;font-weight:700;color:var(--text-primary);margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model-row{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--text-muted);font-size:12px}.model-vis-toggle{display:inline-flex;align-items:center;gap:4px;-webkit-user-select:none;user-select:none;cursor:pointer;color:var(--text-muted);white-space:nowrap}.model-vis-toggle input{accent-color:var(--accent);width:13px;height:13px}.model-row input[type=range]{flex:1;min-width:120px;accent-color:var(--accent)}.model-pct{width:42px;text-align:right;font-variant-numeric:tabular-nums}.model-workset-wrap{margin-top:8px;border-top:1px solid var(--border);padding-top:7px}.model-workset-loading{font-size:11px;color:var(--text-muted)}.model-workset-summary{width:100%;text-align:left;background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:4px 8px;font-size:11px;cursor:pointer;transition:color .15s,border-color .15s;list-style:none;-webkit-user-select:none;user-select:none}.model-workset-summary::-webkit-details-marker{display:none}.model-workset-summary:before{content:"▸";display:inline-block;margin-right:6px;transition:transform .15s}.model-workset-details[open] .model-workset-summary:before{transform:rotate(90deg)}.model-workset-summary:hover{color:var(--text-primary);border-color:var(--accent)}.model-workset-list{max-height:180px;overflow-y:auto;margin-top:6px;padding-right:2px;display:flex;flex-direction:column;gap:5px}.model-workset-item{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--text-primary);-webkit-user-select:none;user-select:none;cursor:pointer}.model-workset-item input{flex-shrink:0;accent-color:var(--accent)}.model-workset-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model-workset-count{flex-shrink:0;color:var(--text-muted);font-variant-numeric:tabular-nums}.panel-header{padding:10px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.9px;color:var(--text-muted);border-bottom:1px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel-toggle-btn{width:24px;height:24px;border:1px solid var(--border);border-radius:6px;background:var(--bg-tertiary);color:var(--text-muted);font-size:14px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:color .15s,border-color .15s}.panel-toggle-btn:hover{color:var(--text-primary);border-color:var(--accent)}@media (min-width: 768px){#models-panel.desktop-collapsed,#props-panel.desktop-collapsed{width:44px;min-width:44px}#models-panel.desktop-collapsed #models-scroll,#props-panel.desktop-collapsed #props-scroll,#models-panel.desktop-collapsed .panel-title,#props-panel.desktop-collapsed .panel-title{display:none}#models-panel.desktop-collapsed .panel-header,#props-panel.desktop-collapsed .panel-header{justify-content:center;padding:8px 6px}}#props-scroll{flex:1;overflow-y:auto;padding:12px}#props-scroll::-webkit-scrollbar{width:5px}#props-scroll::-webkit-scrollbar-track{background:transparent}#props-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.props-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 20px;color:var(--text-muted);font-size:13px;text-align:center}.props-empty svg{opacity:.35}.el-card{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:12px}.el-type{font-size:13px;font-weight:700;color:var(--accent);margin-bottom:3px}.el-name{font-size:13px;color:var(--text-primary)}.el-id{font-size:11px;color:var(--text-muted);margin-top:5px;font-family:Consolas,monospace}.similar-btn{display:inline-flex;align-items:center;gap:5px;margin-top:9px;background:#f08a241f;border:1px solid rgba(240,138,36,.35);color:var(--accent);border-radius:5px;padding:4px 9px;font-size:11px;cursor:pointer;transition:background .15s,border-color .15s}.similar-btn:hover{background:#f08a2438;border-color:var(--accent)}.props-section{margin-bottom:10px}.sec-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);padding:4px 2px 6px}.prop-table{width:100%;border-collapse:collapse;font-size:12px}.prop-table tr{border-bottom:1px solid var(--border)}.prop-table tr:last-child{border-bottom:none}.prop-table td{padding:5px 4px;vertical-align:top}.prop-table .k{color:var(--text-muted);width:42%;padding-right:8px}.prop-table .v{color:var(--text-primary);word-break:break-all}details.pset{margin-bottom:7px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:7px;overflow:hidden}details.pset summary{display:flex;align-items:center;gap:7px;padding:9px 12px;font-size:12px;font-weight:600;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}details.pset summary::-webkit-details-marker{display:none}.pset-arrow{width:14px;height:14px;fill:none;stroke:var(--text-muted);stroke-width:2;flex-shrink:0;transition:transform .15s}details.pset[open] .pset-arrow{transform:rotate(90deg)}.pset-inner{padding:0 12px 10px}.no-psets{font-size:12px;color:var(--text-muted);padding:4px 2px;font-style:italic}.btn-spec{display:flex;align-items:center;gap:4px;padding:4px 8px;background:#f08a24;color:#fff;border:none;border-radius:5px;font-size:11.5px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s,box-shadow .15s}.btn-spec:hover{background:#cf7116;box-shadow:0 0 0 3px #f08a2440}#spec-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}#spec-modal.open{display:flex;align-items:flex-start;justify-content:center;padding-top:48px}#spec-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000004d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}#spec-modal-box{position:relative;z-index:1;width:min(960px,95vw);max-height:calc(100vh - 80px);background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 20px 60px #0000002e;display:flex;flex-direction:column;overflow:hidden}#spec-modal-header{display:flex;align-items:center;gap:8px;padding:13px 16px;border-bottom:1px solid var(--border);background:var(--bg-sidebar);font-size:13px;font-weight:700;color:var(--text-primary);flex-shrink:0}#spec-modal-header svg{color:#ffab56;flex-shrink:0}#spec-modal-header span{flex:1}#spec-modal-close{background:transparent;border:none;padding:4px;border-radius:4px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;transition:color .15s,background .15s}#spec-modal-close:hover{color:var(--text-primary);background:var(--bg-row-hover)}#spec-modal-content{overflow-y:auto}.spec-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 24px;color:var(--text-muted);text-align:center}.spec-empty p{margin:0;font-size:13px;line-height:1.6}.spec-summary{display:flex;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}.spec-stat{background:var(--bg-row);border:1px solid var(--border);border-radius:8px;padding:8px 16px;min-width:100px;text-align:center}.spec-stat-val{font-size:20px;font-weight:700;color:#ffab56;line-height:1.2}.spec-stat-lbl{font-size:11px;color:var(--text-muted);margin-top:2px}.spec-table-wrap{overflow-x:auto;padding:0 16px 4px}.spec-table{width:100%;border-collapse:collapse;font-size:12px;color:var(--text-primary)}.spec-table th{background:var(--bg-sidebar);padding:8px 10px;text-align:left;font-size:11px;font-weight:600;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap}.spec-table td{padding:7px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.spec-table tbody tr:hover td{background:var(--bg-row-hover)}.spec-num{color:var(--text-muted);text-align:center;width:36px}.spec-type{max-width:160px}.spec-name{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spec-cnt{text-align:center;width:60px;font-weight:600}.spec-val{text-align:right;width:100px;font-variant-numeric:tabular-nums}.spec-type-badge{display:inline-block;background:#f08a2424;color:#ffab56;border:1px solid rgba(240,138,36,.32);border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spec-table tfoot .spec-totals td{background:var(--bg-sidebar);font-weight:700;border-top:2px solid var(--border)}.spec-actions{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg-sidebar);flex-shrink:0}.spec-export-btn{display:flex;align-items:center;gap:6px;padding:7px 16px;background:#f08a24;color:#fff;border:none;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.spec-export-btn:hover{background:#cf7116}.spec-hint{font-size:11px;color:var(--text-muted)}.btn-section{display:flex;align-items:center;gap:4px;padding:4px 8px;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:5px;font-size:11.5px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.btn-section:hover{background:var(--bg-row-hover);color:var(--text-primary)}.btn-section.active{background:#fb923c1f;color:#fb923c;border-color:#fb923c66}#section-bar{display:flex;align-items:center;gap:0;background:var(--bg-sidebar);border-bottom:1px solid var(--border);overflow:hidden;max-height:0;transition:max-height .2s ease,padding .2s ease;padding:0 12px}#section-bar.open{max-height:52px;padding:6px 12px}.sec-axis-group{display:flex;align-items:center;gap:6px;padding:0 14px 0 0;margin-right:14px;border-right:1px solid var(--border)}.sec-axis-group:last-of-type{border-right:none}.sec-axis-label{font-size:11px;font-weight:700;width:14px;text-align:center;flex-shrink:0}.sec-axis-label.lbl-x{color:#ff9f43}.sec-axis-label.lbl-y{color:#c8b8a7}.sec-axis-label.lbl-z{color:#e6d9cc}.sec-toggle{width:14px;height:14px;cursor:pointer;flex-shrink:0;accent-color:#fb923c}.sec-range{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:140px;height:4px;background:var(--border);border-radius:2px;cursor:pointer;outline:none;transition:opacity .15s}.sec-range:disabled{opacity:.35;cursor:default}.sec-range::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fb923c;cursor:pointer;box-shadow:0 0 0 2px #fb923c40}.sec-range::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:50%;background:#fb923c;cursor:pointer}.sec-val{font-size:11px;color:var(--text-muted);min-width:52px;text-align:right;font-variant-numeric:tabular-nums}.sec-flip{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:3px;padding:1px 5px;font-size:11px;cursor:pointer;transition:background .12s,color .12s;flex-shrink:0}.sec-flip:hover{background:var(--bg-row-hover);color:var(--text-primary)}.sec-flip.flipped{background:#fb923c26;color:#fb923c;border-color:#fb923c66}#sec-reset-btn{margin-left:auto;padding:4px 10px;background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:5px;font-size:11px;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap;flex-shrink:0}#sec-reset-btn:hover{background:var(--bg-row-hover);color:var(--text-primary)}.btn-measure{display:flex;align-items:center;gap:4px;padding:4px 8px;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:5px;font-size:11.5px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.btn-measure:hover{background:var(--bg-row-hover);color:var(--text-primary)}.btn-measure.active{background:#f08a2426;color:var(--accent);border-color:var(--accent)}.btn-measure-clear{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:5px;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,opacity .15s}.btn-measure-clear:hover:not(:disabled){background:var(--bg-row-hover);color:var(--text-primary)}.btn-measure-clear:disabled{cursor:not-allowed}.btn-measure-area{display:flex;align-items:center;gap:4px;padding:4px 8px;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:5px;font-size:11.5px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.btn-measure-area:hover{background:var(--bg-row-hover);color:var(--text-primary)}.btn-measure-area.active{background:#2e7da82e;color:#1a6b8a;border-color:#3a9cbd}#measure-label{position:absolute;display:none;background:#e6e4e0f7;color:var(--accent);border:1px solid var(--accent);border-radius:8px;padding:5px 12px;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;transform:translate(-50%,-140%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);letter-spacing:.3px;z-index:10}#measure-label:after{content:"";position:absolute;left:50%;bottom:-6px;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--accent);border-bottom:none}#measure-cursor-hint{position:absolute;display:none;background:#e6e4e0f2;color:var(--text-muted);border:1px solid var(--border);border-radius:6px;padding:3px 9px;font-size:11px;white-space:nowrap;pointer-events:none;transform:translate(14px,-50%);z-index:10}#measure-snap-marker{position:absolute;display:none;width:10px;height:10px;margin:0;border-radius:50%;box-sizing:border-box;pointer-events:none;transform:translate(-50%,-50%);z-index:11}.measure-result-label{position:absolute;display:flex;align-items:center;gap:5px;background:#e6e4e0f7;color:var(--accent);border:1px solid var(--accent);border-radius:8px;padding:4px 6px 4px 11px;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;transform:translate(-50%,-150%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;pointer-events:auto;-webkit-user-select:none;user-select:none}.measure-result-label:after{content:"";position:absolute;left:50%;bottom:-6px;transform:translate(-50%);border:6px solid transparent;border-top-color:#f08a24;border-bottom:none}.measure-del-btn{background:transparent;border:none;color:#f08a248c;cursor:pointer;font-size:13px;line-height:1;padding:0 2px;flex-shrink:0;transition:color .15s}.measure-del-btn:hover{color:#ff6b6b}#measure-status{position:absolute;bottom:14px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:10px;background:#f08a241f;color:var(--accent);border:1px solid rgba(240,138,36,.35);font-size:12px;padding:5px 8px 5px 16px;border-radius:20px;white-space:nowrap;z-index:10;pointer-events:none}#measure-clear-all-btn{pointer-events:auto;background:#f08a2426;border:1px solid rgba(240,138,36,.4);color:var(--accent);border-radius:12px;padding:2px 9px;font-size:11px;cursor:pointer;transition:background .15s;display:none}#measure-clear-all-btn:hover{background:#f08a2447}#measure-clear-all-btn:disabled{opacity:.55;cursor:not-allowed}.measure-sum-row{display:none;align-items:center;gap:5px;pointer-events:auto;cursor:pointer;font-size:11px;color:var(--text-primary);-webkit-user-select:none;user-select:none}.measure-sum-row input{cursor:pointer;margin:0}.measure-sum-value{display:none;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent);pointer-events:none}.measure-chain-row{display:none;align-items:center;gap:5px;pointer-events:auto;cursor:pointer;font-size:11px;color:var(--text-primary);-webkit-user-select:none;user-select:none}.measure-chain-row input{cursor:pointer;margin:0}#measure-area-result{display:none;font-size:11px;font-weight:600;color:#1a6b8a;pointer-events:none;max-width:220px;white-space:normal;line-height:1.25}.btn-flight,.btn-filter{display:inline-flex;align-items:center;gap:4px;background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:4px 8px;font-size:11.5px;cursor:pointer;transition:color .15s,border-color .15s,background .15s;white-space:nowrap}.btn-flight:hover,.btn-filter:hover{color:var(--text-primary);border-color:var(--accent)}.btn-flight.active{background:#f08a2426;border-color:var(--accent);color:var(--accent)}.btn-filter.active{background:#f08a241f;border-color:var(--accent);color:var(--accent)}.btn-view{display:inline-flex;align-items:center;gap:4px;background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:4px 8px;font-size:11.5px;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap}.btn-view:hover{color:var(--text-primary);border-color:var(--accent)}.btn-view.active{background:#f08a241f;border-color:var(--accent);color:var(--accent)}.btn-view.is-disabled,.btn-flight.is-disabled,.btn-filter.is-disabled,.btn-view:disabled,.btn-flight:disabled,.btn-filter:disabled{color:#9a938d;border-color:#d9d5d0;background:#ece9e5;cursor:not-allowed;opacity:.8}.btn-view.is-disabled:hover,.btn-flight.is-disabled:hover,.btn-filter.is-disabled:hover,.btn-view:disabled:hover,.btn-flight:disabled:hover,.btn-filter:disabled:hover{color:#9a938d;border-color:#d9d5d0;background:#ece9e5}#view-panel{display:none;position:absolute;top:8px;right:250px;width:220px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;overflow:hidden;z-index:15;box-shadow:0 4px 24px #0000001f;flex-direction:column}#view-panel.visible{display:flex}.view-panel-head{padding:10px 14px 8px;border-bottom:1px solid var(--border);font-size:12px;font-weight:600;color:var(--text-primary)}.view-panel-body{padding:10px 14px;display:flex;flex-direction:column;gap:12px}.view-row{display:flex;flex-direction:column;gap:5px}.view-row-label{font-size:11px;color:var(--text-muted);display:flex;justify-content:space-between}.view-row-label span{color:var(--accent);font-variant-numeric:tabular-nums}.view-check-row{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--text-primary);-webkit-user-select:none;user-select:none;cursor:pointer}.view-check-row input{accent-color:var(--accent)}.view-check-row input:disabled+span{color:var(--text-muted)}.view-select{width:100%;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer;outline:none;transition:border-color .15s}.view-select:focus{border-color:var(--accent)}.view-slider{width:100%;accent-color:var(--accent)}#flight-hint{display:none;position:absolute;bottom:22px;left:50%;transform:translate(-50%);background:#e6e4e0f5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--accent);box-shadow:0 4px 20px #0000001f;border-radius:14px;padding:14px 24px;color:var(--text-primary);font-size:12px;line-height:1.9;text-align:center;pointer-events:none;z-index:20}#flight-hint.visible{display:block}#flight-hint .hint-key{display:inline-block;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:5px;padding:1px 7px;font-size:11px;color:var(--accent);font-family:monospace}#flight-hint .hint-key.active{background:var(--accent);color:#fff;border-color:var(--accent)}#flight-hint .hint-speed-row{margin-top:4px;display:flex;align-items:center;justify-content:center;gap:6px}#flight-hint .hint-speed-label{font-size:11px;color:var(--text-muted);margin-right:4px}@keyframes fadeOut{0%,60%{opacity:1}to{opacity:0}}#filter-panel{display:none;position:absolute;top:8px;right:8px;width:288px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;overflow:hidden;z-index:15;box-shadow:0 4px 24px #0006}#filter-panel.visible{display:flex;flex-direction:column}.filter-panel-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 8px;border-bottom:1px solid var(--border);font-size:12px;font-weight:600;color:var(--text-primary)}.filter-panel-actions{display:flex;gap:6px}.filter-act-btn{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:5px;padding:2px 7px;font-size:10px;cursor:pointer;transition:color .15s,border-color .15s}.filter-act-btn:hover{color:var(--accent);border-color:var(--accent)}.filter-search-wrap{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--bg-tertiary)}.filter-search-wrap svg{flex-shrink:0;color:var(--text-muted)}#filter-search{flex:1;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:12px}#filter-search::placeholder{color:var(--text-muted)}#filter-list{overflow-y:auto;max-height:340px;padding:6px 0}.filter-item{display:flex;align-items:center;gap:9px;padding:5px 14px;cursor:pointer;transition:background .12s;-webkit-user-select:none;user-select:none}.filter-item:hover{background:var(--bg-tertiary)}.filter-mode-tabs{display:flex;border-bottom:1px solid var(--border)}.filter-tab{flex:1;padding:8px 6px;font-size:11px;font-weight:600;border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:color .15s,background .15s}.filter-tab:hover{color:var(--text-primary);background:var(--bg-tertiary)}.filter-tab.active{color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}.filter-section-actions{display:flex;justify-content:flex-end;gap:6px;padding:6px 10px;border-bottom:1px solid var(--border)}#filter-name-list{overflow-y:auto;max-height:280px;padding:4px 0}.filter-name-item{display:flex;align-items:flex-start;gap:8px;padding:5px 12px;font-size:11px;cursor:pointer;transition:background .12s}.filter-name-item:hover{background:var(--bg-tertiary)}.filter-name-item input{flex-shrink:0;margin-top:2px}.filter-name-label{flex:1;min-width:0;line-height:1.35;word-break:break-word}.filter-name-id{flex-shrink:0;font-size:10px;color:var(--text-muted);font-family:Consolas,monospace}.filter-name-status{font-size:10px;padding:4px 12px 8px;color:var(--text-muted)}.filter-item input[type=checkbox]{accent-color:var(--accent);flex-shrink:0}.filter-label{flex:1;font-size:12px;color:var(--text-primary)}.filter-count{font-size:10px;color:var(--text-muted);flex-shrink:0}.filter-empty{padding:18px 14px;font-size:12px;color:var(--text-muted);text-align:center}.mob-panel-btn{display:none;position:fixed;bottom:72px;z-index:55;width:44px;height:44px;border-radius:50%;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-muted);box-shadow:0 2px 14px #0000002e;align-items:center;justify-content:center;cursor:pointer;transition:color .15s,border-color .15s,background .15s;flex-shrink:0}.mob-panel-btn:hover{color:var(--accent);border-color:var(--accent)}.mob-panel-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.mob-panel-left{left:10px}.mob-panel-right{right:10px}.mob-panel-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;z-index:45;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.mob-panel-backdrop.active{display:block}@media (max-width: 1023px){#models-panel{width:240px}#props-panel{width:280px}#view-panel{right:200px}}@media (max-width: 767px){.panel-toggle-btn{display:none}#toolbar{height:auto;min-height:48px;padding:6px 10px;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:8px}#toolbar::-webkit-scrollbar{display:none}.toolbar-secondary{flex-wrap:nowrap;gap:6px;flex-shrink:0}.toolbar-secondary label:first-child,#status-text,.spacer{display:none}#models-panel{position:fixed;left:0;top:0;bottom:0;z-index:50;transform:translate(-100%);transition:transform .28s ease;width:min(300px,88vw)!important;box-shadow:4px 0 28px #0003}#models-panel.mobile-open{transform:translate(0)}#props-panel{position:fixed;right:0;top:0;bottom:0;z-index:50;transform:translate(100%);transition:transform .28s ease;width:min(340px,92vw)!important;box-shadow:-4px 0 28px #0003}#props-panel.mobile-open{transform:translate(0)}.mob-panel-btn{display:flex}#section-bar{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:0}#section-bar::-webkit-scrollbar{display:none}#section-bar.open{max-height:54px}.sec-range{width:100px}#filter-panel{right:0!important;left:0!important;top:auto!important;bottom:0!important;width:100%!important;max-height:72vh;overflow-y:auto;border-radius:16px 16px 0 0;border-bottom:none;box-shadow:0 -4px 32px #00000026}#view-panel{right:0!important;left:0!important;top:auto!important;bottom:0!important;width:100%!important;border-radius:16px 16px 0 0;border-bottom:none;box-shadow:0 -4px 32px #0000001f}#flight-hint{left:10px;right:10px;transform:none;font-size:11px;padding:10px 16px;line-height:1.75}#spec-modal{padding-top:0;align-items:flex-end}#spec-modal-box{width:100%;max-height:88vh;border-radius:16px 16px 0 0;border-bottom:none;border-left:none;border-right:none}.canvas-overlay{font-size:11px;padding:4px 12px;white-space:normal;text-align:center;max-width:82vw;line-height:1.5}#filter-list{max-height:46vh}#filter-name-list{max-height:40vh}}@media (max-width: 480px){.file-btn span,.grid-y-control{display:none}}#welcome-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;display:flex;align-items:center;justify-content:center}#welcome-overlay.hidden{display:none}#welcome-modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:18px;width:min(680px,96vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 64px #0000002e}#welcome-header{display:flex;align-items:center;gap:14px;padding:22px 24px 16px;border-bottom:1px solid var(--border)}#welcome-logo{width:46px;height:46px;flex-shrink:0;background:#f08a241f;border:1px solid rgba(240,138,36,.28);border-radius:12px;display:flex;align-items:center;justify-content:center}#welcome-title{font-size:17px;font-weight:600;color:var(--text-primary)}#welcome-subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}#welcome-close{margin-left:auto;background:none;border:none;color:var(--text-muted);font-size:16px;cursor:pointer;padding:4px 8px;border-radius:6px;line-height:1;transition:color .15s,background .15s}#welcome-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}#welcome-tabs{display:flex;gap:0;padding:0 24px;border-bottom:1px solid var(--border)}.wtab{background:none;border:none;cursor:pointer;padding:12px 18px;font-size:13px;color:var(--text-muted);border-bottom:2px solid transparent;transition:color .15s,border-color .15s;margin-bottom:-1px}.wtab:hover{color:var(--text-primary)}.wtab.active{color:var(--accent);border-bottom-color:var(--accent)}#welcome-body{flex:1;overflow-y:auto;padding:20px 24px}.wtab-content{display:none}.wtab-content.active{display:block}.wfeature-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width: 520px){.wfeature-grid{grid-template-columns:1fr}}.wfeature{display:flex;gap:12px;align-items:flex-start;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:10px;padding:14px}.wfeature-icon{width:28px;height:28px;flex-shrink:0;color:var(--accent)}.wfeature-icon svg{width:28px;height:28px;display:block}.wfeature-title{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.wfeature-desc{font-size:11px;color:var(--text-muted);line-height:1.55}.wchangelog{display:flex;flex-direction:column;gap:10px}.wchangelog-version{display:flex;align-items:center;gap:10px}.wv-badge{background:var(--accent);color:#fff;font-size:11px;font-weight:700;padding:2px 10px;border-radius:20px;letter-spacing:.5px}.wv-badge.wv-old{background:var(--bg-tertiary);color:var(--text-muted);border:1px solid var(--border)}.wv-date{font-size:11px;color:var(--text-muted)}.wv-list{padding-left:18px;display:flex;flex-direction:column;gap:7px}.wv-list li{font-size:12px;color:var(--text-muted);line-height:1.55}.wv-list li::marker{color:var(--accent)}#welcome-footer{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-top:1px solid var(--border);gap:12px}#welcome-noshowtip{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}#welcome-noshowtip input{accent-color:var(--accent);cursor:pointer}#welcome-start{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:9px 22px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}#welcome-start:hover{background:var(--accent-hover)}
