
:root{color-scheme:dark;--bg:#07111d;--panel:#0b1b2a;--panel2:#0d2233;--border:#224054;--border2:#193346;--accent:#45e3ec;--accent2:#87fbff;--muted:#7695a8;--text:#dce9f2;--orange:#eda768;--pad:18px}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0}body{background:var(--bg);font-family:Inter,'Segoe UI',sans-serif;color:var(--text);overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.33;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #56edff;outline-offset:2px}.app{display:flex;flex-direction:column;background:linear-gradient(125deg,#091523,#081522 55%,#0b1b2b)}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);padding:0 24px;background:linear-gradient(90deg,#0a1a2b,#0c1f30 50%,#091522);gap:14px;flex:none}.brand{display:flex;align-items:center;gap:12px;min-width:236px}.logo-mark{width:45px;height:45px;background:linear-gradient(140deg,#0a3442,#0b2034);border:1px solid #36bfca;display:grid;place-items:center;color:#e9ffff;font-family:'Barlow Condensed','Arial Narrow',Impact,'Segoe UI',sans-serif;font-size:22px;font-weight:800;letter-spacing:-2px;box-shadow:0 0 18px #0bd5e51b}.logo-mark span{color:var(--accent)}.brand-main{font-family:'Barlow Condensed','Arial Narrow',Impact,'Segoe UI',sans-serif;font-weight:800;font-size:21px;letter-spacing:1px;line-height:1}.brand-main span{color:var(--accent)}.brand-main small{font-size:10px;color:#93e5ef;margin-left:2px}.brand-sub,.serial,.caption-lite,.panel-kicker,.pane-sub,.section-small,.section-title,.view-label,.viewport-chip,.viewport-bottom,.bottom-status,.data-row,.part-eyebrow,.chip-cyan,.chip-status,.progress-label,.sub-info,.knob-row,.hydraulic-numbers span,.search-key,.tiny-btn,.toast,.nudge-hint,.tolerance,.engineering-note,.assembly-control-caption{font-family:'IBM Plex Mono',monospace}.brand-sub{font-size:8px;letter-spacing:1.55px;color:#668599;margin-top:5px}.header-title{display:flex;flex-direction:column;min-width:240px;align-items:center;gap:1px}.serial{font-size:9px;letter-spacing:2px;color:var(--accent)}.header-title strong{font-family:'Barlow Condensed','Arial Narrow',Impact,'Segoe UI',sans-serif;font-size:29px;line-height:1;letter-spacing:2px;font-weight:700}.header-title strong span{color:#87a4b9}.caption-lite{font-size:9px;letter-spacing:.4px;color:#7e9bab}.top-actions{display:flex;align-items:center;gap:9px;justify-content:end;min-width:280px}.status-on{font-family:'IBM Plex Mono';font-size:10px;letter-spacing:.3px;color:#50e6c6;margin-right:9px}.status-on span{color:#95acbc}.quiet-btn,.icon-btn{min-height:32px;min-width:34px;padding:0 11px;background:#11283a;color:#a9c5d3;border:1px solid #2b495a;border-radius:3px;font-size:12px}.icon-btn{font-size:19px;padding:0 8px;font-family:monospace}.quiet-btn:hover,.icon-btn:hover,.camera-btn:hover{border-color:var(--accent);color:var(--accent)}.workspace{display:flex;min-height:0;flex:1}.side-pane{width:267px;flex:none;background:#0b1b29;border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.right{width:324px;border-right:0;border-left:1px solid var(--border);background:#0b1b2a}.pane-top{padding:23px 20px 18px;border-bottom:1px solid var(--border2);position:relative}.panel-kicker{color:var(--accent);font-size:9px;letter-spacing:1.6px;font-weight:600}.pane-title{font-family:'Barlow Condensed','Arial Narrow',Impact,'Segoe UI',sans-serif;font-size:28px;font-weight:800;letter-spacing:1.15px;line-height:1.1;margin-top:6px}.pane-title em{font-style:normal;color:var(--accent)}.pane-sub{font-size:9px;color:#668aa0;letter-spacing:.6px;margin-top:7px}.dot-spacer{padding:0 5px;color:#386276}.search-wrap{position:relative;margin:16px 14px 11px}.search-wrap input{width:100%;height:37px;background:#091725;color:#cce5ef;border:1px solid #25495a;border-radius:2px;outline:0;padding:0 27px 0 32px;font-size:12px}.search-wrap input:focus{border-color:#3ad4e6}.search-wrap input::placeholder{color:#50758a}.search-icon{position:absolute;left:10px;top:5px;color:var(--accent);font-size:23px}.search-key{position:absolute;right:10px;top:11px;color:#5f7f93;font-size:11px}.tree-toolbar{display:flex;gap:5px;padding:0 14px 12px;border-bottom:1px solid var(--border2)}.tiny-btn{color:#63849a;font-size:8px;letter-spacing:.4px;white-space:nowrap;padding:8px 5px;border:1px solid transparent;background:#102338}.tiny-btn.active{color:var(--accent);border-color:#2e6774;background:#0b303e}.tiny-btn:hover{color:#fff}.tree{overflow-y:auto;flex:1;padding-bottom:16px;scrollbar-width:thin;scrollbar-color:#26546a transparent}.tree-group{margin-top:12px}.tree-group-title{width:100%;display:flex;align-items:center;gap:8px;background:transparent;border:0;color:#a9c0cf;padding:8px 17px;text-align:left;font-family:'IBM Plex Mono';font-size:10px;font-weight:600;letter-spacing:.3px}.tree-group-title .group-caret{color:var(--accent);font-size:11px;min-width:9px}.tree-group-title .group-count{margin-left:auto;color:#4d7289}.tree-item{width:100%;display:flex;align-items:center;gap:10px;border:0;border-left:2px solid transparent;background:transparent;color:#829cad;text-align:left;padding:8px 12px 8px 27px;font-size:11px;line-height:1.3}.tree-item:hover{background:#13334a;color:#ccebf5}.tree-item.selected{background:linear-gradient(90deg,#153e4b,#0e2a3b);border-left-color:var(--accent);color:#e8ffff}.part-icon{font-family:monospace;color:#51869a;font-size:15px}.tree-item.selected .part-icon{color:var(--accent)}.tree-item .text-trunc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-item .tree-state{margin-left:auto;color:#4a7186}.tree-item.uninstalled .tree-state{color:#e8aa77}.left-footer{padding:15px 16px 16px;border-top:1px solid var(--border);background:#0a1a27}.progress-label{display:flex;justify-content:space-between;align-items:center;gap:5px;font-size:9px;color:#8eb4c4}.progress-label strong{color:var(--accent);font-size:10px}.progress-track{height:4px;margin-top:13px;background:#17384a;border-radius:5px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#16a2bd,#7bffff);box-shadow:0 0 10px #00cfff6b;transition:width .3s}.sub-info{display:flex;justify-content:space-between;font-size:8px;color:#608598;margin-top:10px}.sub-info span:last-child{color:#9bc9d6}.main-panel{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.viewport{position:relative;min-height:260px;flex:1;background:radial-gradient(ellipse at 45% 40%,#102e43 0%,#071b2c 50%,#050c18 100%);overflow:hidden}.viewport canvas#scene{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.viewport canvas#scene.dragging{cursor:grabbing}.guide-overlay{position:absolute;inset:0;pointer-events:none;width:100%;height:100%;display:block}.viewport::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#081523a8,transparent 18%,transparent 80%,#06132038);box-shadow:inset 0 0 55px #030c164f}.viewport-top,.viewport-bottom{position:absolute;z-index:2;display:flex;justify-content:space-between;left:21px;right:21px;pointer-events:none}.viewport-top{top:16px;align-items:center}.view-label,.viewport-chip{font-size:9px;letter-spacing:.7px;color:#a1becd;background:#081724a6;border:1px solid #214459;padding:8px 10px}.view-label b{color:#2e6d79;margin:0 4px}.led{display:inline-block;background:#54f0ce;border-radius:50%;width:6px;height:6px;margin-right:6px;box-shadow:0 0 10px #54f0ce}.viewport-chip{color:var(--accent);border-color:#276475}.viewport-right{position:absolute;z-index:3;right:20px;top:72px;display:flex;flex-direction:column;gap:5px}.camera-btn{width:35px;height:33px;background:#091e30cb;border:1px solid #2c4d5b;color:#9ab6c8;font-family:'IBM Plex Mono';font-size:10px;font-weight:600}.camera-btn.active{color:var(--accent);border-color:#3cb6c6}.reticle{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#3ad9e535;font-size:25px;pointer-events:none}.viewport-bottom{bottom:18px;align-items:center;gap:10px;font-size:8px;letter-spacing:.5px;color:#6e9bad}.viewport-bottom .coordinate b{color:var(--accent)}.metrics{display:flex;gap:16px}.tip{position:absolute;bottom:47px;left:50%;transform:translateX(-50%);z-index:5;padding:9px 15px;background:#071e2de6;border:1px solid #2f5e70;color:#add1dd;font:10px 'IBM Plex Mono';letter-spacing:.1px;text-align:center;white-space:normal;max-width:86%;opacity:1;transition:opacity .35s;pointer-events:none}.tip.fade{opacity:0}.control-panel{flex:none;background:#0c1e2d;border-top:1px solid var(--border);padding:14px 20px 16px}.mode-row{display:flex;align-items:center;gap:20px}.section-small{color:#89adbf;font-size:9px;letter-spacing:1px;font-weight:500;white-space:nowrap}.mode-buttons{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;flex:1}.mode{background:#102b3b;color:#92acbd;border:1px solid #25475a;padding:9px 6px;font-family:'IBM Plex Mono';font-weight:500;font-size:10px;letter-spacing:.2px;min-height:36px;white-space:nowrap}.mode:hover{color:var(--accent);border-color:#2e8491}.mode.active{border-color:#52ddeb;color:#dfffff;background:linear-gradient(90deg,#075668,#0d3346);box-shadow:inset 0 0 9px #139db832}.mode::first-letter{color:var(--accent)}.divider-line{height:1px;background:var(--border);margin:13px 0 15px}.control-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:18px}.control-grid>section:not(:first-child){border-left:1px solid var(--border2);padding-left:18px}.section-small strong{float:right;color:var(--accent);font-size:12px}.slider-wrap{display:flex;gap:12px;align-items:center;margin:15px 0;color:#6995a5;font:10px 'IBM Plex Mono'}input[type=range]{width:100%;accent-color:#48e9f1;cursor:pointer;height:4px}.slider-wrap input{flex:1}.select-line{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}.select-line label{font:9px 'IBM Plex Mono';color:#628a9d;white-space:nowrap}.select-line select,.transport select{background:#091c2c;border:1px solid #254a5d;color:#a7cad7;padding:7px;font:10px 'IBM Plex Mono';min-width:0;max-width:160px}.transport{display:flex;align-items:center;gap:6px;margin-top:9px}.transport button{width:33px;height:31px;color:#9bbac8;border:1px solid #2a5263;background:#112c3c}.transport button:hover{color:var(--accent);border-color:var(--accent)}.transport .transport-play{background:#0f5262;color:#71f9ff}.transport select{margin-left:auto}.assembly-modes{display:flex;gap:5px;margin-top:10px}.assembly-modes button{flex:1;min-height:31px;background:#112c3d;border:1px solid #2d4b60;color:#94acbb;font:9px 'IBM Plex Mono';padding:0 3px}.assembly-modes button.active,.assembly-modes button:hover{border-color:var(--accent);color:var(--accent)}.assembly-control-caption{font-size:9px;line-height:1.6;color:#7197a9;margin-top:10px}.bottom-status{display:flex;align-items:center;justify-content:space-between;min-height:31px;background:#081623;border-top:1px solid #1d3549;padding:5px 19px;gap:8px;color:#64879c;font-size:8px;letter-spacing:.3px}.bottom-status b{color:var(--accent)}.bottom-status button{color:#9bb3c0;background:transparent;border:0;font-size:9px;font-family:'IBM Plex Mono'}.bottom-status button:hover{color:#ffb0b0}.right-top{padding-bottom:17px}.inspector-scroll{overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:#315467 transparent}.inspector-hero{padding:22px 20px 23px;border-bottom:1px solid var(--border)}.part-eyebrow{color:#5f93a9;font-size:9px;letter-spacing:1.15px}.inspector-hero h2{font-family:'Barlow Condensed','Arial Narrow',Impact,'Segoe UI',sans-serif;font-size:28px;line-height:1.08;font-weight:700;margin:10px 0 14px;letter-spacing:.3px}.part-badges{display:flex;flex-wrap:wrap;gap:5px}.chip-cyan,.chip-status{background:#0c3646;border:1px solid #2f7c87;padding:6px 8px;color:var(--accent);font-size:9px;letter-spacing:.2px}.chip-status{background:#142f2d;border-color:#2f7165;color:#6be4b8}.chip-status.missing{background:#3b2a27;color:#f0a982;border-color:#895b3e}.inspector-section{padding:17px 20px;border-bottom:1px solid var(--border2)}.section-title{display:flex;align-items:center;justify-content:space-between;color:#a6c5d3;font-size:10px;letter-spacing:1.3px;margin-bottom:14px}.section-title span{color:var(--accent)}.data-row{display:flex;justify-content:space-between;font-size:10px;margin:11px 0;color:#7797aa}.data-row strong{color:#d2e7ef;font-size:10px;font-weight:500}.component-description{font-size:11px;color:#8da9bb;line-height:1.8;margin:14px 0 2px}.action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:7px}.action-grid button{min-height:48px;background:#102b3d;color:#8cb2c5;border:1px solid #2b495f;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:18px}.action-grid button span{font-size:9px;font-family:'IBM Plex Mono'}.action-grid button:hover{background:#124353;color:var(--accent);border-color:#48a3b7}.action-grid .accent-button,.accent-button{border-color:#3398a8;color:#6ceef4;background:#0d4352}.tolerance{margin-top:13px;padding:12px;background:#0a2131;border:1px solid #1d3e4c;display:flex;justify-content:space-between;gap:8px}.tolerance>div{display:flex;flex-direction:column;gap:5px}.tolerance span{font-size:8px;color:#648d9f}.tolerance strong{font-size:13px;color:#d1f8f6}.nudge-hint{font-size:9px;letter-spacing:.5px;color:#86a7b8;margin:15px 0 7px}.nudge-hint small{display:block;font-size:8px;color:#527c90;margin-top:2px}.nudge-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.nudge-grid button{height:28px;border:1px solid #2b495b;background:#11283b;color:#a0c4d2;font:10px 'IBM Plex Mono'}.nudge-grid button:hover{color:#4ee3f0;border-color:#3d8993}.knob-row{display:flex;justify-content:space-between;align-items:center;gap:5px;color:#769cae;font-size:9px;margin:12px 0 9px}.knob-row strong{font-size:10px;color:#e9f8f6}.operation-section input[type=range]{margin-bottom:12px}.small-live{font-size:9px!important;color:#57ebc6!important}.hydraulic-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:12px}.hydraulic-numbers div{padding:12px 3px;background:#0f2b3d;border:1px solid #1e4555;text-align:center}.hydraulic-numbers strong{display:block;font-family:'Barlow Condensed','Arial Narrow',Impact,'Segoe UI',sans-serif;font-size:22px;letter-spacing:.4px;color:var(--accent)}.hydraulic-numbers span{font-size:8px;color:#7396a8}.engineering-note{font-size:9px;color:#668da0;line-height:1.65;margin:12px 0 1px}.wide-button{width:100%;text-align:center;background:#123044;border:1px solid #326d7c;color:#b9d7e4;font:10px 'IBM Plex Mono';padding:11px;margin:12px 0}.wide-button:hover{color:var(--accent);border-color:var(--accent)}#learning-status{font-size:10px;line-height:1.6;color:#7c9baa}.toast{position:fixed;z-index:50;bottom:25px;left:50%;transform:translateX(-50%);background:#103345;border:1px solid #348a99;box-shadow:0 15px 45px #020c19bb;color:#d6f9ff;min-width:min(90%,300px);max-width:580px;text-align:center;padding:13px 18px;font-size:11px;pointer-events:none;opacity:0;transition:opacity .2s}.toast.show{opacity:1}.toast.warning{border-color:#b87958;color:#ffe6d8}dialog{max-width:min(840px,92vw);width:820px;background:#0b2030;color:#d9eaf2;border:1px solid #4bb0bf;box-shadow:0 30px 90px #020710;max-height:86vh;overflow:auto;padding:27px}dialog::backdrop{background:#020a12dd;backdrop-filter:blur(5px)}.dialog-title{font:11px 'IBM Plex Mono';letter-spacing:1.5px;color:var(--accent);display:flex;justify-content:space-between}.dialog-title button{background:none;border:0;color:var(--accent);font-size:25px}.help-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.help-columns strong{font:11px 'IBM Plex Mono';color:var(--accent)}dialog h2{font-family:'Barlow Condensed','Arial Narrow',Impact,'Segoe UI',sans-serif;font-size:31px}dialog p{font-size:12px;line-height:1.8;color:#abc3d1}#dialog-start{padding:12px 18px;margin-top:15px;font:11px 'IBM Plex Mono'}.mobile,.close-mobile{display:none}#scene:focus{outline:none}
@media (max-width:1250px){.side-pane{width:235px}.right{width:300px}.header-title strong{font-size:24px}.brand{min-width:188px}.brand-sub{display:none}.top-actions{min-width:235px}.control-grid{gap:10px}.control-grid>section:not(:first-child){padding-left:10px}.section-small{font-size:8px}.control-panel{padding:12px}.mode{font-size:9px;padding:8px 2px}}
@media (max-width:1040px){.left{width:210px}.right{width:265px}.topbar{padding:0 13px}.brand{min-width:165px}.brand-main{font-size:18px}.header-title{min-width:175px}.top-actions{min-width:195px}.status-on span{display:none}.pane-top,.inspector-hero,.inspector-section{padding-left:13px;padding-right:13px}.tree-item{padding-left:18px}.mode span{font-size:8px}.mode-row{gap:8px}}
@media (max-width:800px){body{overflow:hidden}.app{height:100dvh}.topbar{height:58px;min-height:58px;padding:0 10px}.logo-mark{width:35px;height:35px;font-size:18px}.brand-main{font-size:16px}.brand{min-width:0}.brand-sub,.serial,.caption-lite{display:none}.header-title{min-width:0}.header-title strong{font-size:20px;white-space:nowrap}.top-actions{min-width:0;gap:4px}.top-actions .quiet-btn span,.status-on{display:none}.top-actions button{min-width:29px;padding:0 6px;height:30px}.mobile{display:inline-flex}.side-pane{position:fixed;top:58px;bottom:0;left:0;width:min(84vw,350px);z-index:30;transform:translateX(-105%);transition:transform .22s;box-shadow:10px 0 30px #01071099}.side-pane.open{transform:translateX(0)}.right{left:auto;right:0;transform:translateX(105%);width:min(87vw,365px);box-shadow:-10px 0 30px #01071099}.right.open{transform:translateX(0)}.close-mobile{position:absolute;right:12px;top:12px;background:transparent;border:0;font-size:30px;color:#9dc3d4}.main-panel{width:100%}.viewport{min-height:180px}.control-panel{padding:10px 8px}.mode-row{display:block}.mode-row>.section-small{display:none}.mode-buttons{gap:3px}.mode{min-height:38px;font-size:12px;padding:5px 2px}.mode span{display:block;font-size:7px}.divider-line{margin:9px 0}.control-grid{grid-template-columns:1fr 1fr;gap:9px}.control-grid .assembly-control{grid-column:span 2;border-left:0;border-top:1px solid var(--border);padding:7px 0 0}.assembly-modes{margin-top:5px}.assembly-control-caption{display:none}.select-line label{font-size:8px}.select-line select{max-width:110px;font-size:9px}.transport{gap:3px}.transport button{width:25px;height:27px;font-size:11px}.transport select{padding:5px 3px;max-width:70px}.bottom-status{min-height:25px;padding:5px 8px;font-size:7px}.bottom-status>span:nth-child(2){display:none}.viewport-bottom{left:10px;right:10px;bottom:10px;font-size:7px}.metrics span:last-child{display:none}.viewport-top{left:10px;right:10px;top:9px}.view-label,.viewport-chip{font-size:7px;padding:6px}.viewport-right{right:7px;top:48px}.camera-btn{width:27px;height:28px;font-size:8px}.tip{bottom:35px;font-size:9px}.view-label span:last-child{display:none}.help-columns{grid-template-columns:1fr}dialog{padding:16px}.inspector-scroll{padding-bottom:50px}}
@media(max-height:680px) and (min-width:800px){.topbar{height:62px}.control-panel{padding:8px 14px}.control-grid{gap:8px}.divider-line{margin:7px 0}.mode{min-height:30px}.slider-wrap{margin:8px 0}.viewport{min-height:200px}}
/* Explicitly inherit light text in browsers that apply a dark-mode UA style to controls/headings. */
.app,.side-pane,.topbar,.control-panel{color:#dce9f2}
.brand-main,.header-title strong,.pane-title,.inspector-hero h2{color:#edfaff}
.panel-kicker{color:#55e5e9}

@media(max-width:800px){.header-title{display:none}.brand{max-width:170px}.topbar{gap:5px}.top-actions{margin-left:auto}.brand-main{font-size:15px}}

.guide-link{font:9px 'IBM Plex Mono',monospace;color:#4fceda;text-decoration:none}.guide-link:hover{text-decoration:underline}
