*{box-sizing:border-box} :root{font-family:-apple-system,BlinkMacSystemFont,"PingFang TC","Microsoft JhengHei",sans-serif;color:#243746;background:#f5f8fb;font-size:13px} body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer;border:1px solid #ccd9e5;border-radius:6px;background:#fff;color:#243746;padding:8px 11px;min-height:34px}button:hover{border-color:#7a9ab8;background:#f0f5fa}button:disabled{opacity:.5;cursor:not-allowed}button.primary,.primary{color:white;background:#155bd6;border:1px solid #155bd6}.primary:hover{background:#124cae}a{color:#155bd6;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,p{margin:0}h2{font-size:15px}h3{font-size:15px}input,textarea,select{max-width:100%;width:100%;border:1px solid #c9d6e3;border-radius:5px;padding:8px;background:#fff;color:#243746}textarea{min-height:76px;resize:vertical;line-height:1.6}label{display:block;line-height:1.55}label>input,label>select{margin-top:5px}small,.muted{color:#718396}small{font-size:13px;line-height:1.55}details summary{cursor:pointer;color:#48647f;padding:9px 0}details p{line-height:1.65}pre{overflow:auto;font-size:13px;max-height:240px;background:#f4f7fa;padding:10px;white-space:pre-wrap;overflow-wrap:anywhere}[hidden]{display:none!important}
.topbar{height:52px;background:#17364e;color:#fff;display:flex;align-items:center;padding:0 22px;gap:20px}.brand{color:#fff;display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;letter-spacing:.5px}.brand b{font-size:20px;border:1px solid #6e92b0;border-radius:5px;padding:2px 7px}.brand span{font-size:13px;font-weight:400;border-left:1px solid #597184;margin-left:8px;padding-left:18px}.env{color:#c9d8e4;font-size:13px;border:1px solid #536f87;border-radius:4px;padding:3px 6px}.platform{position:relative;margin-left:auto;font-size:13px}.platform summary{color:#d6e1eb}.platform[open]{z-index:50}.platform[open] p,.platform[open] a,.platform[open] small{display:block;background:#fff;padding:8px 15px;color:#385471}.platform[open]{background:#fff;width:310px;box-shadow:0 10px 30px #132d4f30;border-radius:6px;align-self:flex-start}.platform[open] summary{background:#264962;padding:17px}
#notice{position:fixed;top:62px;left:50%;transform:translateX(-50%);z-index:100;background:#17364e;color:#fff;border-radius:7px;box-shadow:0 4px 18px #193c5a22;max-width:75vw;padding:10px 18px;pointer-events:none;line-height:1.6}#notice:empty{display:none}#notice.error{background:#9d3a28}#notice button{pointer-events:auto}.asset-head{height:82px;display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-bottom:1px solid #d5dfe8;background:#fff}.asset-head h1{font-size:22px;margin-top:5px;color:#183b56}.asset-head h1 span{font-size:15px;font-weight:400;color:#6d8297}.back{font-size:13px}.head-actions{display:flex;align-items:center;gap:17px}#save-status{font-size:13px;color:#657e91}#save-status.dirty{color:#a55c0a}.workbench{display:grid;grid-template-columns:240px minmax(340px,1fr) 312px;height:calc(100vh - 134px);min-height:540px}.navigator,.inspector{background:#fff;min-height:0;overflow:auto}.navigator{display:flex;flex-direction:column;border-right:1px solid #d5dfe8}.inspector{border-left:1px solid #d5dfe8}.section-head{display:flex;justify-content:space-between;align-items:center;padding:14px 14px 9px}.section-head span{font-size:13px;color:#7b8fa2}.part-tools{padding:0 12px 10px}.inline-check{display:flex;align-items:center;gap:6px;font-size:13px;color:#657e91;margin-top:8px}.inline-check input{width:14px;height:14px;margin:0}.parts-list{flex:0 1 235px;min-height:140px;overflow:auto;border-bottom:1px solid #e0e7ee;padding:0 8px 8px}.part-row,.interface-row{display:flex;width:100%;text-align:left;border:0;background:transparent;align-items:flex-start;gap:8px;border-radius:5px;margin:2px 0;padding:9px 7px;line-height:1.45}.part-row.active,.interface-row.active{background:#e9f1fc;color:#1456b6}.part-row strong,.interface-row strong{font-weight:500;display:block;font-size:13px}.part-row .count{margin-left:auto;font-size:13px;border-radius:10px;padding:0 5px;background:#edf2f7;color:#557087}.part-row small,.interface-row small{display:block;margin-top:3px;font-size:13px}.part-icon{color:#8ba0b3}.interfaces-list{overflow:auto;flex:1;padding:0 8px 12px}.pin-number{width:22px;height:22px;border:1px solid #abc4df;color:#316eab;flex-shrink:0;border-radius:50%;font-size:13px;display:grid;place-items:center;background:#fff}.interface-row.active .pin-number{background:#e9942d;color:white;border-color:#e9942d}.waiting{border-style:dashed;color:#9a7b4b}.empty{padding:20px 12px;color:#7c8c9c;line-height:1.75;font-size:13px}.model-column{min-width:0;display:flex;flex-direction:column}.viewport-toolbar{min-height:48px;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:7px 10px;background:#f7f9fc;border-bottom:1px solid #d5dfe8}.viewport-toolbar button{font-size:13px;padding:6px 8px;min-height:30px}.viewport-toolbar button[aria-pressed=true],#pick.active{background:#e0ecfd;border-color:#6594d0;color:#1456b6}#viewport{position:relative;flex:1;min-height:320px;overflow:hidden}#canvas,#markers{position:absolute;inset:0}#canvas canvas{width:100%;height:100%;display:block;touch-action:none}.picking canvas{cursor:crosshair}#markers{pointer-events:none}.model-pin{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);border:1px solid #fff;outline:1px solid #347eb6;border-radius:50%;width:23px;height:23px;min-height:0;padding:0;font-size:13px;background:#eaf4ffeb;color:#1e64a0;box-shadow:0 1px 3px #17364e30}.model-pin.selected{background:#ed952a;color:#fff;outline:2px solid #fff;z-index:10;width:27px;height:27px}.model-pin:hover{z-index:11;outline:2px solid #195ab2}.view-caption{position:absolute;top:18px;left:20px;pointer-events:none;max-width:calc(100% - 40px)}.view-caption span{display:block;font-size:14px;color:#294b68;font-weight:600}.view-caption small{display:block;margin-top:6px;font-size:13px}.axis-caption{position:absolute;bottom:16px;right:16px;color:#7c8fa0;font-size:13px;pointer-events:none}.scene-status{padding:8px 12px;background:#f9fbfd;border-top:1px solid #d5dfe8;display:flex;justify-content:space-between;gap:10px;font-size:13px;color:#668095}#model-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:14px;background:#fff;border-radius:6px;color:#58758f}#pick-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);background:#17364e;color:white;padding:8px 14px;border-radius:6px;white-space:nowrap;font-size:13px}#pick-hint button{margin-left:8px;min-height:24px;padding:3px 8px;font-size:13px}
.detail-head{padding:18px 18px 14px;border-bottom:1px solid #e0e7ee}.detail-head .eyebrow{font-size:13px;color:#8193a4;letter-spacing:1.5px}.detail-head h2{font-size:18px;margin:7px 0 8px;line-height:1.4}.tag{display:inline-block;border:1px solid #cbd8e4;background:#f3f7fa;border-radius:4px;padding:3px 6px;font-size:13px;color:#59738a}.tag.warn{background:#fff5e5;color:#9a6519;border-color:#f0dfbd}.tabs{display:flex;border-bottom:1px solid #e0e7ee;padding:0 10px}.tabs button{flex:1;border:0;border-radius:0;font-size:13px;background:transparent;padding:12px 2px;color:#718396}.tabs button.active{border-bottom:2px solid #155bd6;color:#155bd6}.panel-body{padding:17px}.field{margin-bottom:15px}.field label{font-size:13px;color:#4d677d}.field small{display:block;margin-top:5px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.source-summary{padding:11px;background:#f4f7fa;border-radius:5px;color:#5d748a;font-size:13px;line-height:1.7;margin-bottom:16px}.source-summary b{color:#2b5679;font-weight:600}.section-title{margin:18px 0 10px;font-weight:600;color:#365873;font-size:13px}.position{font-family:ui-monospace,monospace;font-size:13px;margin:8px 0;color:#536d84}.subtle-warning{padding:10px 12px;background:#fff8ee;color:#9d6e25;font-size:13px;line-height:1.65;border-left:2px solid #d6a45a;margin:10px 0}.provenance{display:grid;gap:6px}.provenance input{font-size:13px;background:#f8fafc}.rule-field{padding:10px 0;border-bottom:1px solid #e6edf3}.rule-field label{font-size:13px}.rule-field .provenance{margin-top:7px}.rule-field .value{display:flex;align-items:center;gap:7px}.rule-field input{font-size:13px}.note-block{font-size:13px;line-height:1.65;color:#7c8e9e}.missing{padding-left:17px;color:#9b7539;font-size:13px;line-height:1.8}.wide{width:100%;margin-top:8px}.history{padding:11px 0;border-bottom:1px solid #e0e7ee;line-height:1.65;font-size:13px}.library-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.library-head h1{font-size:30px;margin:8px 0;color:#183b56}.library-head p{color:#718396}.eyebrow{font-size:13px;letter-spacing:2px;color:#7c92a7}#assets{max-width:1060px;margin:50px auto;padding:0 24px}.asset-card{display:grid;grid-template-columns:55% 45%;border:1px solid #cedbe7;border-radius:10px;overflow:hidden;background:white;box-shadow:0 10px 25px #183b5607}.asset-card>button{padding:0;border:0;border-radius:0;background:#eaf0f6;position:relative;min-height:330px}.asset-card img{width:100%;height:330px;object-fit:cover;display:block}.asset-card>button>span{position:absolute;bottom:18px;right:18px;background:#fff;padding:8px 14px;border-radius:5px}.asset-info{padding:30px}.asset-info h2{font-size:26px;margin:13px 0 7px}.asset-info p{font-size:13px;line-height:1.7;margin:10px 0}.asset-metrics{display:flex;gap:24px;margin:24px 0;color:#718396;font-size:13px}.asset-metrics b{display:block;font-size:22px;color:#2a4e6d;font-weight:500;margin-bottom:5px}.library-boundary{max-width:800px;color:#8798a7;font-size:13px;line-height:1.75;margin:24px 0 10px}
@media(max-width:1150px){.workbench{grid-template-columns:205px minmax(270px,1fr) 285px}.scene-status{flex-direction:column;gap:4px}.head-actions{gap:10px}.brand span{display:none}}
@media(max-width:860px){.workbench{height:auto;display:grid;grid-template-columns:210px minmax(0,1fr);min-height:0}.model-column{grid-column:2;grid-row:1;height:540px}.navigator{grid-column:1;grid-row:1;height:540px}.inspector{grid-column:1/-1;border-top:1px solid #d5dfe8}.asset-head{height:auto;gap:15px;flex-wrap:wrap}.head-actions{margin-left:auto}.asset-card{grid-template-columns:1fr}#assets{margin-top:25px}.library-head{display:block}.library-head>.tag{margin-top:15px}.topbar{padding:0 12px;gap:10px}.panel-body{max-width:760px}.grid2{gap:18px}}
@media(max-width:560px){.workbench{display:flex;flex-direction:column}.model-column{order:0;height:440px;flex:none}.navigator{order:1;height:400px}.inspector{order:2}.parts-list{min-height:120px}.asset-head h1{font-size:18px}.head-actions{width:100%;justify-content:space-between}.head-actions a{font-size:13px}.env{display:none}.view-caption span{font-size:13px}.platform{font-size:13px}.viewport-toolbar{gap:4px}.asset-info{padding:22px}#save-status{font-size:13px}}

/* 恢復辨識、取捨、組合與定義的一體流程 */
.process{height:46px;display:flex;align-items:center;justify-content:center;gap:16px;background:#fff;border-bottom:1px solid #d5dfe8}.process button{border:0;padding:5px 8px;background:transparent;color:#8091a2;font-size:13px}.process button.active{color:#155bd6;background:#edf3fe}.process i{font-style:normal;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#e7eef5;font-size:13px;margin-right:5px}.process button.active i{background:#155bd6;color:white}.process>span{color:#aebcca}.workbench{height:calc(100vh - 180px);grid-template-columns:224px minmax(350px,1fr) 352px}.parts-list{flex:1;max-height:none;min-height:180px}.groups-list{flex:0 1 180px;overflow:auto;padding:0 9px}.group-row{display:flex;width:100%;text-align:left;gap:8px;align-items:center;padding:10px 7px;border:0;line-height:1.5;margin:2px 0}.group-row.active{background:#e9f1fc;color:#155bd6}.group-row span{flex:1}.group-row small{white-space:nowrap}.part-progress{padding:12px;font-size:13px;color:#7a8da0;border-top:1px solid #e2e9f0}.part-progress button{width:100%;font-size:13px}.part-group-heading{font-size:13px;color:#8193a5;padding:10px 8px 4px}.curation-head{padding:14px 14px 10px;border-bottom:1px solid #e1e8ef}.curation-head h2{line-height:1.45;margin-bottom:10px}.recognition-actions{display:flex;gap:7px}.recognition-actions button{flex:1;font-size:13px}.bucket-tabs{display:flex;margin-top:12px;background:#eef3f8;border-radius:5px;padding:3px}.bucket-tabs button{flex:1;border:0;background:transparent;font-size:13px;padding:6px 2px;min-height:30px}.bucket-tabs button.active{background:white;color:#155bd6;box-shadow:0 1px 4px #183b5615}.filters-row{display:flex;gap:7px;padding:10px 14px 7px;align-items:center}.filters-row select{font-size:13px}.filters-row button{font-size:13px;white-space:nowrap}.points-list{max-height:220px;overflow:auto;padding:0 10px 8px;border-bottom:1px solid #e1e8ef}.point-row{display:flex;align-items:center;gap:6px;min-height:36px;border-radius:4px;padding:3px 5px}.point-row.active{background:#e9f1fc}.point-row>input{width:14px;height:14px;margin:0;flex:none}.point-row button{border:0;background:transparent;min-height:28px;padding:3px;text-align:left;font-size:13px}.point-row .point-name{flex:1}.point-row small{font-size:13px;white-space:nowrap}.point-row .same-dia{color:#3977b7;font-size:13px;white-space:nowrap}.select-summary{padding:9px 14px;display:flex;justify-content:space-between;align-items:center;font-size:13px;background:#f7fafe}.selection-actions{padding:0 14px 12px;display:flex;flex-wrap:wrap;gap:7px;border-bottom:1px solid #e1e8ef}.selection-actions button{font-size:13px;flex:1;white-space:nowrap}.selection-actions .group-action{flex-basis:100%}.danger{color:#a9483b;background:#fff;border-color:#e1c9c6}.detail-head{padding:14px}.detail-head h2{font-size:16px}.panel-body{padding:14px}.group-form{padding:14px;background:#f0f6ff;border-bottom:1px solid #d5e4f5}.group-form input{margin:7px 0}.group-form .actions{display:flex;gap:8px}.selection-hint{font-size:13px;color:#6c8194;line-height:1.75;padding:18px 14px}.inspector .field{margin-bottom:11px}.inspector input,.inspector select,.inspector textarea{font-size:13px}.inspector .grid2{gap:8px}.model-pin{width:10px;height:10px;border:1px solid #fff;outline:1px solid #347eb6;background:#c8e3f7f2;box-shadow:none}.model-pin.selected{width:21px;height:21px;outline:1px solid #fff;font-size:13px}.model-pin:hover{width:17px;height:17px;background:#f5c477}.model-pin.selected:hover{width:21px;height:21px}.head-actions{gap:9px}.head-actions>button:not(.primary){padding:6px 8px;font-size:13px}.member-links{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:12px}.member-links button{font-size:13px;min-height:25px;padding:4px 7px}.subtle-warning{font-size:13px}.field-note{font-size:13px;color:#7d90a3;margin-top:5px}.old-condition{font-size:13px;color:#8e7a5e}
@media(max-width:1150px){.workbench{grid-template-columns:185px minmax(270px,1fr) 320px}.process{gap:6px}.process button{font-size:13px}.process i{margin-right:3px}}
@media(max-width:860px){.workbench{height:auto;grid-template-columns:180px minmax(0,1fr)}.model-column,.navigator{height:520px}.inspector{grid-column:1/-1}.points-list{max-height:260px}.process{gap:0;justify-content:space-around}.process>span{display:none}.process button{font-size:13px}.head-actions{flex-wrap:wrap}}
@media(max-width:560px){.workbench{display:flex}.process i{display:block;margin:0 auto 2px}.process{height:58px}.model-column{height:410px}.navigator{height:400px}.asset-head{padding:10px 12px}.head-actions>button{font-size:13px}.head-actions{gap:5px}#save-status{font-size:13px}.head-actions a{font-size:13px}}

/* 全局连接点清单与3D使用同一显示范围，点击后保留列表上下文。 */
.global-total{float:right;font-size:13px;color:#657e91;font-weight:500}.global-points-list{max-height:min(56vh,530px);min-height:210px;padding:0 10px 8px;scrollbar-gutter:stable}.global-point-group{margin:0 0 10px}.global-group-heading{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px;background:#eef3f8;padding:9px 8px;font-size:13px;line-height:1.5;border-bottom:1px solid #dce6ef}.global-group-heading span{min-width:0}.global-group-heading small{white-space:nowrap}.global-point{width:100%;border:0;display:flex;align-items:center;justify-content:space-between;gap:9px;text-align:left;padding:9px 8px;min-height:47px;margin:2px 0;background:#fff}.global-point>span:first-child{min-width:0}.global-point strong{display:block;font-size:13px;font-weight:500;overflow-wrap:anywhere}.global-point small{display:block;margin-top:3px;font-size:13px}.global-point .pending{color:#a56a16}.global-point.active{background:#e9f1fc;color:#155bd6}.global-point .point-locate{font-size:13px;color:#6b88a3;white-space:nowrap;flex:none}

/* 连接配置独立于旧单点/组合字段，沿用同一3D工作台。 */
.detail-config-tabs{display:flex;position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid #d5dfe8;padding:5px 12px 0;gap:8px}.detail-config-tabs button{flex:1;border:0;border-radius:0;background:transparent;font-size:13px;color:#6e8297;padding:11px 4px}.detail-config-tabs button.active{color:#155bd6;border-bottom:2px solid #155bd6;background:#f4f8ff}.cp-heading{padding:16px 14px 10px;border-bottom:1px solid #e1e8ef}.cp-heading h2{font-size:16px;line-height:1.5;margin:7px 0}.cp-body{padding:14px}.cp-field{display:block;font-size:13px;line-height:1.5;color:#48637a;margin:8px 0}.cp-field input,.cp-field select{margin-top:5px;max-width:100%;min-width:0}.cp-field input:invalid{border-color:#bc533c;background:#fff8f4}.cp-section{border-top:1px solid #e1e8ef;margin-top:15px;padding-top:11px}.cp-section>summary{font-weight:600;font-size:13px;color:#294c6b;cursor:pointer;margin-bottom:9px}.cp-section>summary small{font-size:13px;font-weight:400;color:#8292a3;display:block;margin-left:13px;margin-top:3px}.cp-add{display:flex;align-items:flex-end;gap:6px;margin:8px 0}.cp-add .cp-field{flex:1;min-width:0;margin:0}.cp-add button{font-size:13px;white-space:nowrap}.cp-standard{padding:9px;border:1px solid #dce6ef;border-radius:5px;margin:12px 0;background:#f9fbfe;min-width:0}.cp-standard legend{font-size:13px;color:#52748f}.cp-standard .cp-field{margin:4px 0}.cp-remove{font-size:13px;border:0;color:#9b685d;background:transparent;margin-top:7px;padding:3px;min-height:22px}.cp-dimension{padding:3px 0 10px;border-bottom:1px dashed #e1e8ef}.cp-dimension details>summary{font-size:13px;color:#6b83a0;cursor:pointer}.cp-actions{display:flex;gap:7px;margin:8px 0;flex-wrap:wrap}.cp-actions button{flex:1;font-size:13px;padding:7px}.cp-reserved{margin-top:18px;padding:12px;background:#f2f5f9;border:1px dashed #bacada;border-radius:6px}.cp-reserved b{font-size:13px;color:#4f6c83}.cp-reserved p{font-size:13px;line-height:1.7;color:#758ba0}.cp-reserved button:disabled{opacity:.7;cursor:not-allowed}.cp-body #cp-error{font-size:13px;color:#ad432d;line-height:1.6}.cp-body .grid2>*{min-width:0}

/* 标准连接件沿用右侧配置面板 */
.fp-steps{color:#2e58a8;font-weight:650;font-size:13px;margin-bottom:12px}.fp-summary{background:#eef5fc;padding:10px;border-radius:6px;margin-bottom:12px;font-size:13px}.fp-vector{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.fp-confirm{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.6;margin:12px 0}.fp-confirm input{width:16px;height:16px;flex-shrink:0;margin-top:2px}.fp-body h3{font-size:14px;margin-top:20px}.fp-body #fp-errors{color:#a53628;line-height:1.6;font-size:13px;margin:10px 0}.fp-rejected{font-size:13px;line-height:1.6;border-bottom:1px solid #e5eaf0;padding:8px 0}.fp-instance{border:1px solid #dbe3ed;border-radius:7px;padding:10px;margin-top:10px}.fp-instance b,.fp-instance small{display:block;margin-bottom:7px}.fp-instance small{overflow-wrap:anywhere;color:#687988}.fp-instance .tag{display:inline-block;margin:4px 0 9px}.fp-body a{color:#255cc1;font-size:13px}#fastener-view-status{position:absolute;bottom:30px;left:16px;max-width:90%;background:#fffdf3ec;color:#755713;padding:8px 12px;border:1px solid #e9d399;border-radius:6px;font-size:13px;pointer-events:none;z-index:8}.detail-config-tabs button{font-size:13px;min-width:0}

/* 联动与预检问题跟随3D坐标，不修改配合件原位置。 */
.fp-mate{border:1px solid #d9cce9;background:#f8f5fc;border-radius:7px;padding:10px;margin:14px 0}.fp-mate h3{margin:0}.fp-mate .fp-confirm{margin:8px 0}.fp-issue{display:block;width:100%;text-align:left;font-size:13px;line-height:1.6;padding:9px;margin:6px 0;background:#f7f9fc;border:1px solid #dfe5ed;color:#52687c}.fp-issue.error{background:#fff0ed;border-color:#efb8af;color:#a43828}.fp-issue.warning{background:#fff8e9;border-color:#e9c785;color:#8e651d}#fp-check-results h3 small{display:block;font-size:13px;font-weight:500;margin-top:6px}.inspection-pin{position:absolute;transform:translate(-50%,-100%);background:#fff6d9ee;color:#885a0b;border:1px solid #d59421;box-shadow:0 2px 5px #0002;border-radius:4px;white-space:nowrap;font-size:13px;padding:4px 6px;min-height:24px;pointer-events:auto;z-index:16}.inspection-pin.error{background:#fff0eeee;border-color:#d94c41;color:#ae3027}.inspection-pin[hidden]{display:none}

#part-organizer{padding:10px;background:#f6f8fb;border-bottom:1px solid #dce4ee;font-size:13px;max-height:42vh;overflow:auto}#part-organizer label{display:block;margin:6px 0}#part-organizer input,#part-organizer select{width:100%;box-sizing:border-box}#part-organizer button{margin:3px 0;width:100%}.part-check{display:flex;align-items:center;gap:5px;font-size:13px;padding:3px 10px;color:#63758c}.explode-label{display:inline-flex;align-items:center;gap:4px;font-size:13px}.explode-label input{width:75px}#edit-parts{margin:0 10px 8px;text-align:left}.navigator{overflow:hidden}#part-organizer[hidden]{display:none}

#platform-workflow{margin:0 24px;padding:10px 14px;background:#f4f7fb;border-bottom:1px solid #d8e2ec;font-size:13px}#platform-workflow input,#platform-workflow select,#order-search{padding:8px;border:1px solid #ccd9e4;border-radius:5px}#platform-workflow form{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:12px 0}#platform-workflow label{display:grid;gap:4px}.flow-heading{display:flex;align-items:center;gap:16px}.flow-heading #platform-logout{margin-left:auto}.work-order-flow{margin-top:10px}.work-order-flow details{margin-top:8px}.flow-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.order-row{display:grid;grid-template-columns:2fr 2fr 1fr;padding:14px;border-bottom:1px solid #d8e2ec;text-decoration:none;color:#274058}.order-row:hover{background:#e8f2ff}#upload-orders{margin-bottom:30px}.draft-import{cursor:pointer;font-size:13px;text-decoration:underline}.explode-label{display:flex;align-items:center;font-size:13px}.explode-label input{width:80px}#part-organizer{padding:10px;background:#f4f7fb}

/* 原①配件樹交互移入④；工具固定、清單獨立滾動，不占用3D畫布。 */
#part-organizer{padding:6px 8px 8px;max-height:none;overflow:visible;background:#fff;flex:none}
#part-organizer .tree-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}
#part-organizer button{width:auto;margin:0;font-size:13px;padding:7px 3px;white-space:nowrap}
.tree-selection{display:flex;align-items:center;gap:5px;min-height:27px;font-size:13px;color:#66778b}.tree-selection span{flex:1}
#part-organizer .tree-selection button{font-size:13px;padding:3px;border:0;color:#245fa5;background:transparent}
.parts-list{padding:0 5px 8px}.tree-root{position:sticky;top:0;z-index:2;display:flex;width:100%;gap:4px;align-items:center;text-align:left;background:#f4f7fb;font-size:13px;border:1px dashed #cfdae5;margin-bottom:5px;padding:8px 5px}.tree-root span{margin-left:auto;font-size:13px;color:#718196}
.visual-tree-line{display:flex;align-items:center;gap:2px;padding-left:calc(var(--tree-depth,0)*10px);border:1px solid transparent;border-radius:5px;min-height:42px;position:relative}
.visual-tree-line.active{background:#e9f1fc;color:#1456b6}.visual-tree-line.drop-target,.tree-root.drop-target{border-color:#277bd3;background:#d9ebff;outline:1px solid #277bd3}
.visual-tree-line .tree-check{width:12px;height:12px;margin:0 1px;flex:none;accent-color:#266fc0}.tree-chevron{width:15px;padding:3px 0;flex:none;border:0;background:transparent;font-size:13px}.tree-chevron:disabled{opacity:.3}
.visual-tree-row{display:flex;flex:1;min-width:0;align-items:flex-start;gap:4px;text-align:left;padding:7px 2px;border:0;background:transparent;line-height:1.35;touch-action:none;user-select:none;cursor:grab;color:inherit}.visual-tree-row:active{cursor:grabbing}.tree-symbol{color:#6d8ba8;flex:none;font-size:13px}.tree-label{min-width:0;flex:1}.tree-label strong{font-size:13px;display:block;font-weight:500;overflow-wrap:anywhere}.tree-label small{font-size:13px;display:block;color:#718196;margin-top:3px}
.part-dialog{border:1px solid #d6dfe9;border-radius:12px;padding:22px;width:min(430px,calc(100vw - 50px));box-shadow:0 20px 75px #18375538;color:#25384c}.part-dialog::backdrop{background:#142a4266}.part-dialog h2{font-size:17px;margin:0 0 18px}.part-dialog label{display:block;font-size:13px}.part-dialog input,.part-dialog select{display:block;box-sizing:border-box;width:100%;margin-top:7px;padding:10px;border:1px solid #c3d0de;border-radius:6px;font-size:14px}.part-dialog p{font-size:13px;line-height:1.65}.part-dialog .field-note{color:#677a90;font-size:13px}.part-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:17px}.part-dialog-actions button{padding:8px 15px}.part-dialog-error{color:#af302b;min-height:1em}

/* 閱讀性修正：工作台以視窗剩餘高度排版，清單是左側主要捲動區。 */
:root{font-size:15px;--text-secondary:#587086}
small,.muted,.field-note,.note-block{color:var(--text-secondary)}
button{min-height:38px;font-size:14px;line-height:1.4}
input,select,textarea,.inspector input,.inspector select,.inspector textarea{font-size:15px}
h2,h3,.section-head h2{font-size:16px}
body:has(#workbench:not([hidden])){height:100dvh;display:flex;flex-direction:column;overflow:hidden}
body:has(#workbench:not([hidden]))>.topbar{height:38px;min-height:38px;padding:0 16px;gap:12px}
.topbar>a:last-child{margin-left:auto;color:#e5eff8;font-size:14px}
body:has(#workbench:not([hidden]))>#platform-workflow{margin:0;padding:5px 16px;flex:none;max-height:24dvh;overflow:auto}
#platform-workflow{font-size:14px}
#platform-workflow .flow-heading{min-height:30px;gap:12px;flex-wrap:wrap}
#platform-workflow .flow-heading button{min-height:32px;padding:4px 10px}
#workbench{display:flex;flex-direction:column;flex:1;min-height:0}
.asset-head{height:auto;min-height:64px;flex:none;padding:8px 16px;gap:12px;flex-wrap:wrap}
.asset-head h1{font-size:21px;margin-top:3px}.asset-head h1 span{font-size:15px}
.back{font-size:13px}.head-actions{gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}
.head-actions>button:not(.primary),.head-actions a,.draft-import{font-size:14px}
#save-status{font-size:13px}.head-actions>button{font-size:14px}
.process{height:40px;min-height:40px;flex:none;gap:10px;padding:0 8px}
.process button{font-size:14px;min-height:34px;padding:4px 8px;white-space:nowrap}
.process i{font-size:13px;display:inline-grid;margin:0 4px 0 0}
.workbench{flex:1;min-height:0;height:auto;grid-template-columns:292px minmax(260px,1fr) 360px}
.navigator,.model-column,.inspector{min-height:0;height:auto;grid-column:auto;grid-row:auto}
.navigator .section-head{padding:10px 12px 8px;flex:none}
.navigator .section-head span{font-size:13px}.part-tools{padding:0 10px 6px;flex:none}
.part-tools input{min-height:38px;padding:7px 9px}
#part-organizer{padding:0 10px 8px}
#part-organizer .tree-actions{gap:5px}
#part-organizer button{font-size:14px;min-height:36px;padding:6px 4px}
.tree-selection{font-size:13px;min-height:34px}.tree-selection.is-empty{display:none}
#part-organizer .tree-selection button{font-size:13px;min-height:30px;padding:4px}
.parts-list{flex:1 1 0;min-height:100px;max-height:none;padding:0 6px 6px;scrollbar-gutter:stable;overscroll-behavior:contain}
.tree-root{font-size:13px;padding:5px 6px;min-height:34px;margin-bottom:3px}.tree-root span{font-size:13px}
.visual-tree-line{min-height:40px;gap:2px;padding-left:calc(var(--tree-depth,0)*12px)}
.visual-tree-line .tree-check{width:16px;height:16px;margin:0 2px}
.tree-chevron{width:24px;min-height:38px;font-size:16px;padding:3px 0}
.visual-tree-row{min-height:38px;padding:6px 2px;align-items:center;gap:5px}
.tree-symbol{font-size:15px}.tree-label{display:flex;align-items:center;gap:6px}
.tree-label strong{font-size:15px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.tree-label small{font-size:13px;line-height:1.5;margin:0;white-space:nowrap;flex:none;color:#587086}
.part-context{flex:none;border-top:1px solid #d5dfe8;background:#f7f9fc}
.part-context>summary{font-size:14px;font-weight:600;padding:11px 12px;line-height:20px;min-height:42px;color:#294b68}
.part-context>summary span{float:right;font-size:13px;font-weight:400;border-radius:10px;background:#e7eef8;padding:0 7px}
.part-context .groups-list{max-height:150px;max-height:min(22dvh,150px);padding:0 8px;overflow:auto}
.part-context .group-row{font-size:14px;min-height:40px;padding:8px;overflow-wrap:anywhere}
.part-context .part-progress{padding:8px 10px}.part-progress button{font-size:14px;min-height:36px}
.part-context .empty{padding:10px}.part-progress:empty{display:none}
.viewport-toolbar{padding:6px 8px;gap:5px;flex:none;min-height:44px}
.viewport-toolbar button{font-size:14px;min-height:36px;padding:6px 8px}
.explode-label{font-size:13px;min-height:32px;margin:0}.explode-label input{margin:0;padding:0;min-height:24px;width:90px}
#viewport{min-height:160px}.view-caption{top:12px;left:14px;max-width:calc(100% - 28px)}
.view-caption span{font-size:15px}.view-caption small,.axis-caption{font-size:13px;line-height:1.5;color:#587086}
.scene-status{font-size:13px;padding:6px 10px;flex-wrap:wrap;gap:4px 10px;flex:none;color:#587086}
.model-pin.selected{font-size:13px;width:25px;height:25px}.model-pin.selected:hover{width:25px;height:25px}
.field label,.cp-field,.cp-standard legend{font-size:14px}
.detail-config-tabs{gap:3px;padding:3px 8px 0}.detail-config-tabs button{font-size:14px;min-height:42px;padding:9px 3px;white-space:nowrap}
.recognition-actions button,.bucket-tabs button,.filters-row select,.filters-row button,.selection-actions button,.point-row button{font-size:14px}
.point-row{min-height:40px}.point-row>input{width:16px;height:16px}.point-row button{min-height:34px}
.member-links button,.cp-actions button{font-size:13px;min-height:34px}
.group-form,.panel-body,.cp-body{font-size:15px}.detail-head h2{font-size:18px}
.part-dialog h2{font-size:19px}.part-dialog label,.part-dialog p,.part-dialog .field-note{font-size:14px}
.part-dialog input,.part-dialog select{font-size:16px;min-height:42px}.part-dialog-actions button{min-height:40px;font-size:15px}
:where(button,a,input,select,textarea,summary):focus-visible{outline:2px solid #2b75d0;outline-offset:2px}
@media(max-width:1100px){.workbench{grid-template-columns:260px minmax(240px,1fr) 320px}.process{gap:3px}.head-actions{gap:6px}.scene-status{flex-direction:column}.env{font-size:13px}}
@media(max-width:819px){body:has(#workbench:not([hidden])){height:auto;min-height:100dvh;overflow:auto}#workbench{display:block}.workbench{display:grid;grid-template-columns:260px minmax(0,1fr)}.navigator,.model-column{height:max(540px,calc(100dvh - 200px))}.navigator{grid-column:1;grid-row:1}.model-column{grid-column:2;grid-row:1}.inspector{grid-column:1/-1;border-top:1px solid #d5dfe8}.process{gap:0;justify-content:space-around}.process>span{display:none}.process button{font-size:13px;padding:4px}.process i{margin-right:2px}.asset-head{gap:8px}.topbar .env{display:none}}
@media(max-width:559px){.workbench{display:flex;flex-direction:column}.model-column{order:0;height:480px}.navigator{order:1;height:600px}.inspector{order:2}.head-actions{width:100%;justify-content:flex-start;gap:7px}.process{height:60px}.process i{display:grid;margin:0 auto 2px}.asset-head h1{font-size:20px}.tree-label strong{font-size:15px}.view-caption span{font-size:15px}}

/* 未選連接點保持藍色；深色邊緣加白色光暈，兼顧深淺模型背景。 */
.model-pin:not(.selected){width:16px;height:16px;min-height:0;padding:0;background:#087ce8;border:2px solid #073c79;outline:2px solid #fff;outline-offset:0;box-shadow:0 1px 5px #132b5266}
.model-pin:not(.selected):hover{width:20px;height:20px;background:#005fce;border-color:#052b59;outline:2px solid #fff;z-index:11}
.model-pin:focus-visible{outline:3px solid #142b49;outline-offset:3px;z-index:12}

/* 遮擋只是視覺狀態：保留藍/橙選取語義、點位、點擊及複選。 */
.model-pin.occluded{opacity:.38;border-style:dashed;box-shadow:none;filter:saturate(.65)}
.model-pin.occluded:hover,.model-pin.occluded:focus-visible{opacity:.78;border-style:dashed;filter:none}
.marker-legend{position:absolute;left:14px;bottom:62px;z-index:20;display:flex;gap:12px;padding:4px 8px;border-radius:5px;background:#ffffffdb;color:#275c96;font-size:13px;line-height:1.5;pointer-events:none}
.marker-legend span:last-child{color:#607b95}
@media(prefers-reduced-motion:no-preference){.model-pin{transition:opacity .1s ease}}

/* 可調面板只改原節點的版面；不卸載表單與模型，也不觸發業務保存。 */
body:has(.workbench.adjustable):has(#workbench:not([hidden])){height:100dvh;min-height:0;overflow:hidden}
#workbench:has(.adjustable){display:flex;min-height:0;flex:1}
.workbench.adjustable{display:grid;flex:1;min-height:0;height:auto;overflow:hidden;grid-template-rows:minmax(0,1fr)}
.workbench.adjustable>.navigator,.workbench.adjustable>.model-column,.workbench.adjustable>.inspector{grid-row:1;min-width:0;min-height:0;height:auto;order:initial}
.workbench.adjustable>.navigator{grid-column:1;border-right:0}
.workbench.adjustable>.model-column{grid-column:3}
.workbench.adjustable>.inspector{grid-column:5;border-left:0;border-top:0}
.workbench.adjustable .panel-hidden{visibility:hidden;pointer-events:none;overflow:hidden}
.panel-divider{grid-row:1;position:relative;min-width:0;background:#e6edf4;z-index:5}
.left-divider{grid-column:2}.right-divider{grid-column:4}
.panel-grip{height:100%;width:100%;cursor:col-resize;touch-action:none;outline-offset:-2px;position:relative}
.panel-grip:after{content:"";position:absolute;top:50%;left:3px;right:3px;height:38px;border-radius:3px;background:#9eb2c6;transform:translateY(-50%)}
.panel-grip:hover,.panel-grip:focus-visible,.panel-resizing .panel-grip{background:#d4e5fa}
.panel-grip:hover:after,.panel-grip:focus-visible:after{background:#2b75d0}
.panel-resizing,.panel-resizing *{cursor:col-resize!important;user-select:none!important}
.panel-collapse{padding:0;min-height:28px;width:28px;flex:none;font-size:23px;line-height:24px;color:#476785;background:#f7faff;border-color:#d7e1ec}
.navigator .section-head{gap:6px}.navigator .section-head h2{min-width:0;flex:1}.navigator .section-head>span{flex:none}
.inspector-layout-head{position:sticky;top:0;z-index:6;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 10px;background:#f7f9fc;border-bottom:1px solid #d5dfe8;min-height:39px;font-size:14px}
.workbench.adjustable .inspector .detail-config-tabs{top:39px}
.panel-reopen{writing-mode:vertical-rl;text-orientation:upright;display:flex;align-items:center;justify-content:flex-start;gap:6px;width:32px;height:100%;padding:14px 5px;border:0;border-radius:0;background:#f4f7fb;color:#2c5c8b;font-size:14px;letter-spacing:2px;white-space:nowrap}
.panel-reopen:hover{background:#e0edfc;color:#155bd6}.panel-reopen:focus-visible{outline-offset:-3px}
.workbench.adjustable .scene-status{overflow-wrap:anywhere}
@media(max-width:819px){.workbench.adjustable #viewport{min-height:80px}.workbench.adjustable .viewport-toolbar{max-height:36%;overflow:auto;align-content:flex-start}.workbench.adjustable .parts-list{min-height:0}.workbench.adjustable .process{overflow:auto}}

/* 3D 雲端入口：沿用原工作台，不增加另一套資料庫。 */
.cloud-login{max-width:720px;margin:36px auto 20px;padding:30px;border:1px solid #dce3ed;border-radius:16px;background:#fff;box-shadow:0 8px 30px #182d4b08}.cloud-login h2{margin:8px 0 12px;font-size:27px}.cloud-login p{line-height:1.8;color:#536174}.cloud-login .login-kicker{font-size:12px;font-weight:700;letter-spacing:1.5px;color:#315fa6}.cloud-login .login-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:22px 0 14px}.cloud-login button{padding:11px 22px}.cloud-login .login-state{min-height:28px;font-size:14px}.cloud-login a{color:#315fa6}.cloud-login .login-note{font-size:12px;border-top:1px solid #edf0f5;padding-top:16px;margin:16px 0 0}.cloud-login [hidden]{display:none!important}body:has(.cloud-login) #upload-orders{display:none}body:has(.cloud-login) #assets .library-head{display:none}
