
:root{--bg:#07111b;--panel:#0b1924;--surface:#102332;--line:#1f3744;--muted:#7994a1;--text:#e8f2f6;--cyan:#36efdc;--shadow:rgba(0,0,0,.25)}*{box-sizing:border-box}html,body{width:100%;min-height:100%;margin:0;background:var(--bg);color:var(--text);font:13px 'DM Sans',Inter,'Segoe UI',sans-serif}button,input,select{font:inherit}button,select{cursor:pointer}button{border:1px solid #29414d;background:#112735;color:#d9eff5;min-height:34px;padding:7px 11px;border-radius:5px;transition:.15s ease}button:hover{border-color:var(--cyan);background:#193747;color:white}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}button:disabled{opacity:.4;cursor:not-allowed}select{color:var(--text);background:#102632;border:1px solid #2b4450;border-radius:5px;padding:9px 10px;width:100%;min-height:35px}input[type=range]{width:100%;height:4px;appearance:none;border-radius:10px;outline:none;background:linear-gradient(90deg,var(--cyan),#24515c)}input[type=range]::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;border:2px solid #d5fffa;background:var(--cyan);box-shadow:0 0 0 4px #30f5dc25;cursor:ew-resize}input[type=search]{width:100%;min-width:0;border:0;outline:0;color:var(--text);background:transparent}h2,h3,p{margin:0}h2{font:700 22px 'Barlow Condensed',sans-serif;letter-spacing:.025em}h3{font:700 24px 'Barlow Condensed',sans-serif}strong,b{font-weight:700}.eyebrow,.section-label,.deck-title,.tree-head,.progress-header,.range-caption{font:700 10px 'DM Sans',sans-serif;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}.small{font-size:11px}.muted{color:var(--muted)}.dot{color:var(--cyan)}#app{width:100%;min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;display:flex;align-items:center;gap:25px;padding:0 25px;background:#0b1b26;border-bottom:1px solid #223d49}.brand{display:flex;align-items:center;gap:8px}.symbol{font:800 42px 'Barlow Condensed',sans-serif;color:var(--cyan);letter-spacing:-5px}.symbol-dot{color:#dff}.brand-words{font:800 19px 'Barlow Condensed',sans-serif;letter-spacing:.08em;line-height:1.02}.brand-words span{color:var(--cyan)}.brand-words small{display:block;font:600 8px 'DM Sans',sans-serif;color:#708b98;letter-spacing:.16em;margin-top:4px}.divider-vert{height:38px;width:1px;background:var(--line)}.model-heading{display:flex;flex-direction:column;gap:4px}.model-heading strong{font:700 25px 'Barlow Condensed',sans-serif;letter-spacing:.06em}.model-heading strong em{color:var(--cyan);font-style:normal}.top-actions{display:flex;align-items:center;gap:10px;margin-left:auto}.status{font-size:11px;color:var(--cyan);white-space:nowrap}.top-actions button{font-size:11px}.modebar{height:54px;display:flex;align-items:stretch;padding:0 23px;gap:2px;background:#0c1a25;border-bottom:1px solid var(--line)}.mode-btn{border:0;border-radius:0;background:transparent;min-width:105px;text-align:center;color:#7692a1;font-size:10px;letter-spacing:.08em;position:relative}.mode-btn b{font:600 15px 'Barlow Condensed',sans-serif;margin-left:4px;letter-spacing:.04em}.mode-btn:hover{background:#142935;color:#d9fff7}.mode-btn.active{color:var(--cyan);background:#132a34}.mode-btn.active:after{position:absolute;bottom:0;left:5%;width:90%;height:2px;background:var(--cyan);content:''}.modebar-spacer{flex:1}.modebar .small{align-self:center;white-space:nowrap}.workbench{height:calc(100vh - 165px);min-height:635px;display:grid;grid-template-columns:280px minmax(370px,1fr) 306px;flex:1}.side{background:#091722;display:flex;flex-direction:column;min-height:0}.left-side{border-right:1px solid var(--line)}.right-side{border-left:1px solid var(--line)}.panel-heading{padding:23px 18px 18px;display:flex;justify-content:space-between;align-items:center;gap:5px}.panel-heading .eyebrow{font-size:9px}.panel-heading h2{margin-top:5px}.token{font-size:9px;letter-spacing:.1em;border:1px solid #2f6470;color:var(--cyan);border-radius:4px;padding:6px}.search-box{margin:0 14px 9px;display:flex;align-items:center;gap:8px;background:#102633;border:1px solid #254552;border-radius:6px;padding:10px;color:var(--cyan)}#group-filter{margin:0 14px 12px;width:calc(100% - 28px)}.tree-head{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:11px 15px;display:flex;justify-content:space-between}.assembly-tree{overflow:auto;flex:1;min-height:100px;scrollbar-width:thin;scrollbar-color:#29505c transparent}.tree-group{position:sticky;top:0;background:#0e2631;color:#b8d0d6;font:700 11px 'DM Sans',sans-serif;text-transform:uppercase;letter-spacing:.08em;padding:10px 13px;border-bottom:1px solid #29424b;z-index:1;display:flex;justify-content:space-between}.tree-group small{color:#6c9ca5}.part-row{display:flex;gap:9px;align-items:center;text-align:left;width:100%;border:0;border-radius:0;border-left:2px solid transparent;background:transparent;padding:10px 13px;font-size:11px;color:#adcad4;min-height:34px}.part-row:hover{background:#15323d}.part-row.selected{border-left-color:var(--cyan);background:#16323b;color:#f0ffff}.part-node{font-size:13px;color:#7496a1;min-width:15px;text-align:center}.part-row.installed .part-node{color:#38d9c0}.part-row:not(.installed) .part-node{color:#ffa573}.part-label-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.sidebar-footer{border-top:1px solid var(--line);padding:15px}.progress-header{display:flex;justify-content:space-between}.progress-header strong{color:var(--cyan);font-size:13px}.progress-track{height:5px;margin:11px 0 8px;background:#203843;border-radius:7px;overflow:hidden}.progress-track div{background:linear-gradient(90deg,#1c9b98,#46eeda);height:100%;transition:width .25s}.sidebar-footer .muted{font-size:11px;margin-bottom:12px}.wide{width:100%}.action-strong{background:var(--cyan);border-color:var(--cyan);color:#05232a;font-weight:700}.action-strong:hover{background:#b3fff6;color:#061d24}.workspace{background:#081a25;display:flex;flex-direction:column;min-width:0;min-height:0}.viewport{position:relative;flex:1;min-height:280px;overflow:hidden;background:radial-gradient(ellipse at 51% 45%,#173040,#08141f 70%)}#view{display:block;width:100%;height:100%;touch-action:none;cursor:grab}#view:active{cursor:grabbing}.viewport-overlay{position:absolute;pointer-events:none;z-index:2}.top-left{left:23px;top:20px;display:flex;gap:12px;align-items:center}.frame-corner{font-size:20px;color:#2d7b87}.viewport-kicker{display:flex;flex-direction:column;gap:4px;font:600 10px 'DM Sans',sans-serif;letter-spacing:.10em}.viewport-kicker b{color:var(--cyan)}.viewport-kicker span{color:#668998}.top-right{right:21px;top:20px;display:flex;gap:9px;align-items:center}.floating-chip{padding:8px 9px;font:700 10px 'DM Sans',sans-serif;background:#081b27bc;color:#89aeba;border:1px solid #244b57;border-radius:4px}.mini-ghost{pointer-events:auto;font:600 10px 'DM Sans',sans-serif;background:#102735b8}.bottom-left{bottom:19px;left:20px;max-width:65%}.control-hint{color:#628f9d;letter-spacing:.08em;font-size:9px}.control-hint i{font-style:normal;color:var(--cyan);padding:0 3px}.event-message{font-size:11px;color:#bce7e6;margin-top:8px;line-height:1.4}.bottom-right{bottom:18px;right:23px}.axes-indicator{font:700 11px 'DM Sans',sans-serif}.axes-indicator span{display:inline-flex;align-items:center;justify-content:center;height:24px;width:24px;margin-left:4px;border-radius:50%;background:#0d2a37;border:1px solid #365f6c}.axis-x{color:#fa7474}.axis-y{color:#70f6a2}.axis-z{color:#7aabff}.part-label{position:absolute;z-index:5;pointer-events:none;border:1px solid #69b9ba;background:#081922ed;border-radius:5px;padding:9px 12px;min-width:135px;box-shadow:0 6px 32px #000a;transform:translate(20px,-70px)}.part-label b{font:700 13px 'Barlow Condensed',sans-serif;color:#f7ffff;display:block}.part-label-meta{font-size:9px;color:var(--cyan)}.label-pulse{position:absolute;top:50%;left:-25px;width:22px;height:1px;background:var(--cyan)}.control-deck{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:15px;padding:18px 20px 13px;background:#0d222f;border-top:1px solid #1a4650}.deck-block{min-width:0}.deck-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.deck-title strong{font-size:13px;color:var(--cyan)}.deck-block select{margin-top:0}.range-caption{margin-top:10px;display:flex;justify-content:space-between;font-size:9px;color:#668b95}.transport{display:flex;justify-content:space-between;padding:12px 18px;background:#0b1d29;border-top:1px solid #183745;gap:12px}.transport-group{display:flex;gap:6px;flex-wrap:wrap}.transport-group button{font-size:11px}.speed-zone{display:flex;align-items:center;gap:13px;min-width:185px}.speed-zone label{font-size:9px;letter-spacing:.08em;color:var(--muted);width:115px}.speed-zone strong{display:block;margin-top:3px;color:var(--cyan);font-size:12px}.speed-zone input{width:92px}.bottom-section{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);padding:11px 20px;min-height:74px;background:#091b27}.bottom-section #mode-description{font-size:10px;color:#89a5af;line-height:1.6;max-width:420px}.camera-controls{display:flex;align-items:center;flex-wrap:wrap;gap:4px;justify-content:flex-end}.camera-controls span{font-size:9px;letter-spacing:.12em;color:#638b96;margin-right:5px}.camera-controls button{font-size:10px;min-height:28px;padding:5px 7px}.right-side .panel-heading{padding-bottom:15px}.inspector-scroll{overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:#29505c transparent}.preview-card{position:relative;background:radial-gradient(ellipse at 50% 0,#133c4d,#0b1c28 70%);margin:0 12px 14px;min-height:158px;border:1px solid #284954;overflow:hidden;padding:73px 16px 16px}.preview-ring{font-size:120px;color:#215c6690;position:absolute;top:-37px;right:10px;font-family:'Barlow Condensed',sans-serif}.preview-card .eyebrow{color:var(--cyan);position:relative}.preview-card h3{margin-top:5px;line-height:1.02;max-width:235px;position:relative}.preview-card #selected-id{display:block;font-size:9px;margin-top:7px;color:#8ca8ad;letter-spacing:.1em;position:relative}.detail-section{padding:15px 17px;border-top:1px solid #213a46}.detail-section .section-label{display:block;margin-bottom:12px;color:#5ca4ad}.field{display:flex;justify-content:space-between;gap:14px;font-size:11px;line-height:1.48;margin-bottom:12px}.field>span:first-child{color:#839faa;flex:0 0 95px}.field strong,.field .long-val{text-align:right;color:#e1f0f4;font-weight:600;overflow-wrap:anywhere}.field .long-val{font-weight:400;color:#a6c0c7}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:8px}.action-grid button{font-size:11px}.detail-section>button.wide{font-size:11px}.rotate-controls{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:11px}.rotate-controls span{grid-column:1/-1;font-size:9px;letter-spacing:.08em;color:#698b97}.rotate-controls button{font-size:11px}.detail-section>label{display:block;font-size:10px;color:#8bacb6;margin-bottom:7px}.hint{padding:10px 11px;margin:10px 0;border-left:2px solid var(--cyan);background:#13303b;color:#b7ced6;font-size:11px;line-height:1.5}.operations label{display:flex;justify-content:space-between;letter-spacing:.08em;font-size:9px;color:var(--muted);margin-top:13px}.operations strong{color:var(--cyan)}.operations input{margin:7px 0 4px}.button-label{cursor:pointer;text-align:center;border:1px solid #29414d;background:#112735;padding:9px 11px;border-radius:5px;color:#d9eff5;font-size:11px}.inspector-foot{padding:13px 15px;border-top:1px solid var(--line);font-size:9px;letter-spacing:.07em;color:#688b97}.bottom-status{min-height:34px;background:#08151e;border-top:1px solid #1a3643;display:flex;justify-content:space-between;align-items:center;padding:0 20px;font-size:9px;letter-spacing:.09em;color:#658894}.bottom-status span:nth-child(2){color:#80b9c2}#message.warning{color:#ffbe8f}#message.ok{color:#77f7d9}
@media(max-width:1250px){.workbench{grid-template-columns:230px minmax(320px,1fr) 260px}.topbar{gap:13px;padding:0 14px}.bottom-section{flex-direction:column;align-items:stretch}.camera-controls{justify-content:flex-start}.control-deck{gap:8px;padding:13px}.panel-heading{padding:14px 12px}.mode-btn{min-width:86px}.top-actions .status{display:none}}
@media(max-width:920px){.workbench{grid-template-columns:1fr;min-height:0;height:auto;display:flex;flex-direction:column}.workspace{order:0;height:auto;min-height:590px}.viewport{height:min(55vh,530px);flex:none;min-height:330px}.left-side{order:1;max-height:300px;border:0;border-top:1px solid var(--line)}.right-side{order:2;border:0;border-top:1px solid var(--line)}.inspector-scroll{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.inspector-scroll .preview-card{grid-row:span 2}.left-side .assembly-tree{max-height:190px}.topbar{height:68px}.modebar{height:50px;padding:0 7px}.mode-btn{min-width:0;flex:1;padding:5px 2px;font-size:9px}.mode-btn b{display:block;font-size:13px;margin:3px 0 0}.modebar .small{display:none}.control-deck{grid-template-columns:1fr 1fr}.large-deck{grid-column:1/-1}.bottom-status{display:none}.inspector-foot{display:none}}
@media(max-width:560px){.brand-words small{display:none}.brand-words{font-size:14px}.symbol{font-size:30px}.divider-vert{display:none}.model-heading .eyebrow{display:none}.model-heading strong{font-size:19px}.topbar{padding:0 8px;height:57px;gap:7px}.top-actions button{padding:6px 7px;min-height:28px}.top-actions button#save{display:none}.modebar{height:52px}.mode-btn{font-size:8px}.mode-btn b{font-size:12px}.workspace{min-height:630px}.viewport{height:380px;min-height:300px}.top-left{top:12px;left:13px}.top-right{top:12px;right:10px}.floating-chip{display:none}.bottom-left{bottom:12px;left:13px;max-width:78%}.control-hint{font-size:8px}.control-deck{padding:14px 10px;gap:10px}.transport{flex-direction:column;padding:10px}.speed-zone{justify-content:space-between}.speed-zone input{width:140px}.bottom-section{padding:10px}.bottom-section #mode-description{font-size:10px}.camera-controls{justify-content:center}.camera-controls button{font-size:9px}.right-side .inspector-scroll{grid-template-columns:1fr}.inspector-scroll .preview-card{grid-row:auto;margin-top:9px}.panel-heading{padding:13px}.detail-section{padding:14px}.preview-card{min-height:132px;padding-top:60px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
/* Desktop viewport must establish a bounded flex height, otherwise the complete
   148-item tree incorrectly expands the 3D scene to thousands of pixels. */
@media(min-width:921px){#app{height:100vh;min-height:650px}.workbench{height:auto;min-height:0;flex:1;overflow:hidden}.side,.workspace{min-height:0}.assembly-tree,.inspector-scroll{min-height:0;overflow-y:auto}}
@media(max-width:920px){#app{height:auto;min-height:100vh}.workbench{height:auto;overflow:visible}.side,.workspace{min-height:0}}
.brand,.model-heading,.panel-heading,.preview-card{color:var(--text)}
/* Force readable hierarchy even when a host applies forced dark form styles. */
.brand-words,.model-heading strong,.panel-heading h2,.preview-card h3,.progress-header strong,.deck-title strong,.tree-head,.panel-heading .eyebrow,.model-heading .eyebrow{color:#e4f5fa!important}
.preview-card .eyebrow,.progress-header strong,.deck-title strong{color:#36efdc!important}
.action-strong,.sidebar-footer .action-strong{color:#082329!important}
