:root{color-scheme:dark;--bg:#101a23;--panel:#14212c;--line:#293a46;--muted:#8ba0af;--text:#edf4f8;--accent:#83d9dc;--warn:#e4b572;--red:#ff887e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow:hidden}button,input,select{font:inherit}button,.button{color:var(--text);background:#1c2c38;border:1px solid #354a58;border-radius:5px;padding:7px 11px;cursor:pointer;transition:background .15s,border-color .15s;color-scheme:dark}button:hover,.button:hover{background:#2b414f;border-color:#587381}button:disabled{opacity:.4;cursor:wait}button.active,button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:#25404a}.primary{background:var(--accent);color:#102c34;border-color:var(--accent);font-weight:650}.primary:hover{background:#b1eff0;color:#102c34}.primary span{margin-left:12px}input,select{min-width:0;color:var(--text);border:1px solid var(--line);background:#0d1922;border-radius:4px;padding:8px;outline:none}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input[type=checkbox]{accent-color:var(--accent);vertical-align:middle;margin:0 6px 0 0}input[type=range]{padding:0;accent-color:var(--accent);height:24px;background:none;cursor:pointer}header{height:68px;display:flex;align-items:center;gap:22px;padding:0 22px;border-bottom:1px solid var(--line);background:#101c26}.brand{font-size:24px;font-weight:750;letter-spacing:2px;display:flex;align-items:baseline;gap:13px}.brand span{font-size:10px;letter-spacing:2px;font-weight:500;color:var(--muted)}.rev{font:11px ui-monospace,SFMono-Regular,monospace;color:#aab9c2}.rev span{color:#44606f;margin:0 6px}.header-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.file-label input{display:none}main{height:calc(100dvh - 68px);display:grid;grid-template-columns:236px minmax(250px,1fr) 286px}.parts-panel,.inspector{background:var(--panel);overflow:auto;scrollbar-width:thin;scrollbar-color:#3b5261 transparent}.parts-panel{border-right:1px solid var(--line);display:flex;flex-direction:column;padding:20px 14px 12px}.panel-title{display:flex;align-items:center;justify-content:space-between;padding:0 5px 12px}.panel-title h1{margin:0;font-size:16px}.panel-title span{font-size:11px;color:var(--muted)}#search{width:100%;background:#101e29}h2{font-weight:550;letter-spacing:-.6px}.parts-tools{display:flex;gap:6px;margin:12px 0}.parts-tools button{flex:1;font-size:11px;padding:6px}.group-title{font:10px ui-monospace,monospace;letter-spacing:1px;color:var(--muted);margin:21px 4px 7px;text-transform:uppercase}.part-row{display:flex;align-items:center;gap:8px;border:1px solid transparent;border-radius:5px;padding:9px 7px;margin:2px 0;cursor:pointer;transition:background .15s}.part-row:hover{background:#203440}.part-row.selected{background:#24404b;border-color:#52757d}.part-row.excluded{opacity:.45}.part-row.colliding{border-color:var(--red)}.part-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;border:1px solid #ffffff45}.part-label{line-height:1.3;flex:1;font-size:12px}.part-row .eye{padding:0 4px;background:none;border:0;font-size:15px;color:#8ba0af}.part-row .eye.off{opacity:.4}.reference-link{margin-top:22px;padding:12px 5px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);text-decoration:none;display:flex;justify-content:space-between}.reference-link:hover{color:var(--accent)}#workspace{position:relative;overflow:hidden;min-height:0;background:#182734}#canvas-host{width:100%;height:100%;position:absolute;inset:0}canvas{display:block;width:100%;height:100%;touch-action:none}.view-toolbar{position:absolute;top:14px;left:14px;right:14px;display:flex;gap:6px;flex-wrap:wrap}.view-toolbar button{font-size:11px;padding:7px 9px;background:#12232ce6}.segmented{display:flex}.segmented button{border-radius:0}.segmented button+button{margin-left:-1px}.segmented button:first-child{border-radius:5px 0 0 5px}.segmented button:last-child{border-radius:0 5px 5px 0}.workspace-label{position:absolute;top:69px;left:26px;pointer-events:none}.eyebrow{font:10px ui-monospace,monospace;letter-spacing:1.35px;color:#8cafbd}.workspace-label h2{font-size:25px;margin:6px 0 3px}.workspace-label p{margin:0;color:#94afbd;font-size:12px;max-width:380px}.bottom-controls{position:absolute;bottom:37px;left:22px;right:22px;background:#11232ce8;border:1px solid #45606b66;border-radius:7px;padding:10px 13px;backdrop-filter:blur(12px)}.explode-control{display:flex;gap:12px;align-items:center}.explode-control button{font-size:12px;white-space:nowrap}.explode-control input{flex:1;width:30px}.explode-control output{font:11px ui-monospace,monospace;min-width:32px;color:var(--accent)}.view-options{display:flex;gap:16px;margin-top:9px;align-items:center;color:var(--muted);font-size:11px}.view-options button{margin-left:auto;padding:3px 9px;font-size:11px}.canvas-footer{position:absolute;bottom:9px;left:22px;right:22px;display:flex;justify-content:space-between;font-size:9px;color:#8aabb8;gap:20px;pointer-events:none}.inspector{border-left:1px solid var(--line);padding:24px 20px}.inspector h2{font-size:23px;line-height:1.2;margin:10px 0 14px}.inspector p{color:#9bb0bd;font-size:12px}.intro-line{padding:15px 0;border-top:1px solid var(--line);display:flex;gap:17px;font-size:12px;align-items:flex-start;color:#b0c1ca}.intro-line:first-of-type{margin-top:29px}.intro-line b{font:10px ui-monospace,monospace;color:var(--accent);padding-top:3px}.scope-note{border-top:1px solid #394956;margin-top:28px;padding-top:18px;font-size:11px;color:var(--muted)}.scope-note strong{color:#c5d3dd;font-size:12px}.scope-note p{font-size:11px;line-height:1.65}.selected-heading{display:flex;align-items:center;justify-content:space-between}.icon-btn{border:0;background:none;padding:0 6px;font-size:21px;line-height:1.2;color:var(--muted)}.confidence{color:var(--warn)!important;font-size:11px!important}.dimension-block{padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:16px 0}.dimension-block>div{display:flex;justify-content:space-between;align-items:center;font:9px ui-monospace,monospace;color:var(--muted);letter-spacing:1px}.dimension-block select{padding:1px 5px;font-size:11px}.dimension-block strong{display:block;font:17px ui-monospace,monospace;letter-spacing:-.6px;margin:8px 0 3px}.dimension-block small{font-size:10px;color:var(--muted)}.transform-modes{margin:15px 0}.transform-modes button{flex:1;font-size:11px}.field-heading{font-size:10px;color:var(--muted);display:flex;justify-content:space-between;align-items:center}#transform-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-top:8px}#transform-fields label{color:#90adbc;font:10px ui-monospace,monospace}#transform-fields input{display:block;width:100%;margin-top:5px;padding:7px 5px;font:12px ui-monospace,monospace}.selected-actions{display:flex;gap:6px;margin:12px 0 16px}.selected-actions button{flex:1;padding:6px 4px;font-size:11px}.part-inclusion{display:flex;gap:12px;font-size:11px;margin:16px 0}details{border-top:1px solid var(--line);padding:13px 0;font-size:11px}summary{cursor:pointer;color:#cbd8df;font-size:12px}details p{font-size:11px!important;line-height:1.65}details small{display:block;color:var(--muted);font-size:10px;line-height:1.6}details a{color:var(--accent)}details label{display:block;font-size:11px;color:var(--muted);margin:10px 0}details label input,details select{width:100%;display:block;margin-top:5px}#test-pull{width:100%;margin:4px 0}#pull-result{color:var(--accent)}#load-overlay{position:absolute;inset:0;background:#182734f2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;z-index:8}#load-overlay span{color:var(--muted);font-size:12px}#load-overlay progress{width:190px;height:4px;accent-color:var(--accent);border:0}.loader-ring{width:31px;height:31px;border:2px solid #365463;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#toast{position:absolute;left:50%;top:130px;transform:translate(-50%,-8px);background:#0c1b25ed;border:1px solid #43616f;color:#dfeef2;border-radius:5px;padding:9px 14px;font-size:12px;max-width:80%;opacity:0;transition:.2s;pointer-events:none;z-index:6}#toast.shown{opacity:1;transform:translate(-50%,0)}#measure-readout{position:absolute;top:145px;left:26px;color:var(--accent);font:13px ui-monospace,monospace;background:#0c1b25d9;padding:8px 12px;border-radius:4px;pointer-events:none}#results{position:fixed;bottom:0;left:236px;right:286px;max-height:38vh;overflow:auto;background:#12232ef5;border:1px solid #49616e;box-shadow:0 -10px 40px #0004;padding:20px 24px;z-index:10;backdrop-filter:blur(12px)}#results h2{font-size:20px;margin:5px 0}#results p{font-size:11px;color:var(--muted);max-width:630px;margin:5px 0 12px}#close-results{position:absolute;right:12px;top:12px}.collision-row{display:flex;gap:12px;justify-content:space-between;text-align:left;width:100%;background:transparent;border-color:#663b3e;color:#f8b5ae;margin-top:6px;font-size:11px}.clear-result{border-left:2px solid var(--accent);padding-left:12px;color:var(--accent);font-size:12px}.error-text{color:var(--red)!important}dialog{background:#172935;color:var(--text);border:1px solid #496775;border-radius:9px;padding:30px;max-width:570px;width:calc(100vw - 32px);box-shadow:0 30px 100px #0008}dialog::backdrop{background:#07101bba;backdrop-filter:blur(4px)}dialog h2{font-size:26px;line-height:1.2;margin:12px 0 20px}dialog p,dialog li{font-size:13px;color:#b8c9d3;line-height:1.7}dialog ol{padding-left:22px}dialog li{margin:12px 0}.dialog-close:not(.primary){position:absolute;right:14px;top:12px;font-size:24px;border:0;background:none;padding:0 6px;color:var(--muted)}dialog .primary{margin-top:12px}.ruler-wrap{min-height:65px;overflow:auto;padding:20px 1px}.ruler-wrap>div{height:12px;border:1px solid var(--accent);border-width:0 1px 2px;width:378px;position:relative}#calibration-line span{display:block;text-align:center;font:11px ui-monospace,monospace;position:relative;top:-10px;color:var(--accent)}#calibration-pixels{margin:7px 0;display:block;width:130px}#exit-calibration{margin-top:12px}.mobile-only{display:none}[hidden]{display:none!important}@media(max-width:1200px){main{grid-template-columns:205px minmax(220px,1fr) 260px}.brand span{display:none}.inspector{padding:20px 15px}.view-toolbar{gap:5px}.view-toolbar button{padding:5px 7px}.workspace-label{top:85px}.workspace-label h2{font-size:21px}.canvas-footer span:last-child{display:none}#results{left:205px;right:260px}.bottom-controls{left:12px;right:12px}.view-options{gap:9px}.header-actions{gap:5px}.header-actions button,.header-actions .button{padding:6px 8px}}@media(max-width:900px){main{grid-template-columns:180px minmax(220px,1fr)}.inspector{position:fixed;right:12px;top:128px;width:255px;max-height:calc(100dvh - 270px);border:1px solid var(--line);border-radius:7px;z-index:4;box-shadow:0 12px 40px #0005}.inspector:has(#selected-inspector[hidden]){display:none}.parts-panel{padding:16px 10px}.view-toolbar{right:10px}.workspace-label p{max-width:200px}.header-actions #help-btn{display:none}#results{left:180px;right:0}.brand{font-size:20px}.rev{display:none}}@media(max-width:650px){header{height:58px;padding:0 11px;gap:10px}.header-actions .file-label{display:none}.header-actions button{font-size:11px}.brand{font-size:17px;letter-spacing:1px}.mobile-only{display:block}main{height:calc(100dvh - 58px);display:block}.parts-panel{position:fixed;left:0;top:58px;bottom:0;width:215px;z-index:7;transform:translateX(-100%);transition:transform .2s;box-shadow:15px 0 50px #0005}.parts-panel.open{transform:none}#workspace{height:100%}.workspace-label{left:17px;top:91px}.workspace-label h2{font-size:20px}.workspace-label p{display:none}.inspector{top:auto;bottom:0;right:0;width:100%;max-height:44vh;border-radius:12px 12px 0 0;padding:18px 20px;z-index:5}.inspector h2{font-size:20px;margin:6px 0}.dimension-block{margin:10px 0;padding:9px 0}.dimension-block strong{font-size:15px}.transform-modes{margin:10px 0}.canvas-footer{font-size:9px;left:15px}.view-options{font-size:10px}.explode-control{gap:7px}.explode-control button{font-size:10px;padding:6px}.bottom-controls{padding:8px}.view-toolbar button{font-size:10px}#results{left:0;right:0;max-height:45vh;z-index:11}.workspace-label .eyebrow{font-size:9px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:.01ms!important}}

a.button{text-decoration:none}.engineering-link{font-size:11px}@media(max-width:650px){.header-actions #save-btn{display:none}.engineering-link{font-size:10px;padding:6px!important}}

.thermal-panel{grid-column:3;grid-row:1}.thermal-panel label{display:block;color:var(--muted);font-size:12px;margin:12px 0}.thermal-panel label>input[type=number],.thermal-panel select{display:block;width:100%;margin-top:5px}.thermal-big{display:block;font-size:38px;font-weight:500;letter-spacing:-1px;margin:5px 0}.heat-key{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.heat-scale{height:5px;margin-top:7px;background:linear-gradient(90deg,#469de0,#ff643a);border-radius:4px}.thermal-fine{font-size:11px!important;line-height:1.6}.thermal-transport{display:flex;justify-content:space-between;align-items:center;margin:15px 0 5px}.thermal-transport output{font:12px ui-monospace,monospace;color:var(--accent)}#thermal-time{width:100%}.thermal-toggles{display:flex;gap:14px}.thermal-toggles label{font-size:11px}.thermal-metrics{display:flex;gap:16px;padding:12px 0;border-block:1px solid var(--line)}.thermal-metrics div{flex:1}.thermal-metrics dt{font-size:10px;color:var(--muted)}.thermal-metrics dd{margin:5px 0 0;font-size:13px;white-space:nowrap}.thermal-warning{color:var(--warn)!important;font-size:11px!important}.thermal-panel a{color:var(--accent);font-size:12px}.thermal-panel button{font-size:11px;margin:3px 2px 0 0}.panel-title{align-items:flex-start}.panel-title span{max-width:108px;text-align:right;line-height:1.4}@media(max-width:900px){.thermal-panel{max-height:calc(100dvh - 200px)}.inspector[hidden]{display:none!important}}@media(max-width:650px){.thermal-panel{max-height:43vh}#thermal-toggle{color:var(--accent)}}

.service-panel>p{font-size:14px;line-height:1.55}.service-panel>label{display:grid;gap:8px;margin:18px 0 10px}.service-panel select{width:100%;max-width:100%;white-space:normal}.service-panel .service-reference{display:flex;align-items:center}.service-panel>h2{font-size:30px}.service-actions{display:flex;flex-wrap:wrap;gap:8px}.connection-status{display:block;color:#e8ba71;font-size:14px;line-height:1.4;margin:12px 0}.connection-endpoints{display:grid;gap:5px}.connection-endpoints>span{text-align:center;color:#91c9ca}.connection-endpoints button{text-align:left;white-space:normal;height:auto;padding:12px;display:grid;gap:5px}.connection-endpoints small{font-size:12px;color:#94b0bc}.connection-endpoints span{font-size:14px}.service-panel table{width:100%;font-size:14px;border-collapse:collapse;margin:12px 0}.service-panel th,.service-panel td{text-align:left;padding:7px 4px;border-bottom:1px solid #385260}.service-panel>a{display:block;font-size:14px;margin:16px 0}.service-panel .thermal-fine{font-size:13px}.service-panel .thermal-warning{padding:12px;background:#3b3025;border-left:2px solid #e8ba71}.service-panel[hidden]{display:none!important}

#recording-panel>input[type=range]{width:100%}.assumption-opt-in{display:flex;gap:12px;font-size:16px;line-height:1.5;margin:22px 0;padding:18px;background:#3b3025;border:1px solid #76613e}

#airflow-panel .thermal-warning{border-left:3px solid #d3a45d;padding-left:12px}#airflow-panel label{display:block;margin:14px 0}#airflow-panel select{width:100%;margin-top:7px}#airflow-panel .thermal-transport{align-items:center;gap:16px}#airflow-panel .heat-scale{background:linear-gradient(90deg,#3dc4ff,#ff713d)}
