:root{--bg:#f5f7fa;--panel:#fff;--panel2:#f0f3f7;--elev:#fff;--stroke:#d8dee6;--stroke2:#c2cad4;--split:#eceff3;--ink:#1a1f26;--text:#1a1f26;--text2:#5a6472;--text3:#8a94a3;--accent:#2f6bff;--accent2:#1f56e0;--green:#22a06b;--amber:#c78200;--red:#d64545;--mono:ui-monospace,Menlo,Consolas,monospace;--sidebar-w:360px;--r:10px;--r-sm:7px}*{box-sizing:border-box}html,body{background:var(--bg)}body{color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans TC,sans-serif;font-size:14px;line-height:1.55}.app{width:100%;max-width:none;margin:0;padding:20px 24px 52px}.topbar{border-bottom:1px solid var(--stroke);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding-bottom:14px;display:flex}.brand-title{letter-spacing:.2px;font-size:20px;font-weight:800}.brand-sub{color:var(--text3);margin-top:2px;font-size:12px}.topbar-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--stroke2);color:var(--text2);border-radius:var(--r-sm);cursor:pointer;background:#fff;padding:7px 13px;font-family:inherit;font-size:13px}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent2);color:#fff}.btn.sm{padding:5px 10px;font-size:12px}.btn.file{align-items:center;display:inline-flex}.btn.render{background:var(--green);border-color:var(--green);color:#fff;font-weight:700}.btn.render:hover{color:#fff;background:#1c8457;border-color:#1c8457}.sw-params{border:1px solid var(--stroke);border-radius:var(--r-sm);background:var(--panel2);margin-top:10px}.sw-params-hd{color:var(--text2);text-transform:uppercase;letter-spacing:.3px;margin:2px 0 8px;font-size:11px;font-weight:700}.sw-params .sw-params-hd:not(:first-child){margin-top:12px}.collapsible summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.collapsible summary::-webkit-details-marker{display:none}.collapsible summary:before{content:"▸";color:var(--text3);margin-right:7px;transition:transform .12s;display:inline-block}.collapsible[open] summary:before{transform:rotate(90deg)}.sw-params>summary{color:var(--text2);text-transform:uppercase;letter-spacing:.3px;padding:10px;font-size:11px;font-weight:700}.collapsible-bd{padding:0 10px 10px}.layout{grid-template-columns:var(--sidebar-w) 10px minmax(0,1fr);align-items:start;gap:10px;width:100%;margin-top:16px;display:grid}.sidebar{flex-direction:column;gap:13px;max-height:calc(100vh - 28px);padding-right:2px;display:flex;position:sticky;top:14px;overflow-y:auto}.sidebar-title{background:var(--panel);border:1px solid var(--stroke);border-radius:var(--r);justify-content:space-between;align-items:center;gap:12px;padding:12px 13px;display:flex}.sidebar-title-main{color:var(--text);font-size:16px;font-weight:800;line-height:1.2}.sidebar-title-sub{color:var(--text3);margin-top:2px;font-size:11.5px}.splitter{cursor:col-resize;touch-action:none;background:0 0;border-radius:999px;height:calc(100vh - 28px);position:sticky;top:14px}.splitter:before{content:"";background:var(--stroke);border-radius:999px;width:2px;height:100%;margin:0 auto;transition:background .12s,width .12s;display:block}.splitter:hover:before,.splitter.dragging:before,.splitter:focus-visible:before{background:var(--accent);width:4px}body.resizing-layout{cursor:col-resize;-webkit-user-select:none;user-select:none}.main{flex-direction:column;gap:14px;min-width:0;display:flex}.panel{background:var(--panel);border:1px solid var(--stroke);border-radius:var(--r);overflow:visible}.panel-hd{color:var(--text);border-bottom:1px solid var(--stroke);background:var(--panel2);align-items:center;gap:8px;padding:10px 13px;font-size:12.5px;font-weight:700;display:flex}.panel-bd{padding:12px 13px}.fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;display:grid}.field{color:var(--text2);flex-direction:column;gap:5px;min-width:0;font-size:11.5px;display:flex}.field-wide{grid-column:1/-1}.advanced-toggle{border:1px solid var(--stroke);background:var(--panel2);border-radius:var(--r-sm);color:var(--text);white-space:nowrap;flex-direction:row;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-size:12px;font-weight:700;display:flex}.advanced-toggle input{width:auto;height:auto;box-shadow:none}.advanced-only{display:none}.advanced .advanced-only{display:flex}.sw-params.advanced-only{display:none}.advanced .sw-params.advanced-only{display:block}.reference-only{display:none}.sidebar.reference .reference-only{display:flex}#refCard{display:none}input:disabled,select:disabled,textarea:disabled{color:var(--text3);border-color:var(--stroke);cursor:not-allowed;-webkit-text-fill-color:var(--text3);background:repeating-linear-gradient(135deg,#eef1f5,#eef1f5 6px,#e6eaef 6px 12px);border-style:dashed}:is(.sidebar.reference .field:has(input:disabled),.sidebar.reference .field:has(select:disabled)){color:var(--text3)}.sidebar.reference .field:has(input:disabled):after{content:"auto";letter-spacing:.3px;color:var(--text3);text-transform:uppercase;opacity:.8;align-self:flex-start;margin-top:-2px;font-size:9.5px;font-weight:700}.sidebar.reference .field:has(select:disabled):after{content:"auto";letter-spacing:.3px;color:var(--text3);text-transform:uppercase;opacity:.8;align-self:flex-start;margin-top:-2px;font-size:9.5px;font-weight:700}.ref-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.ref-cell{border:1px solid var(--stroke);border-radius:var(--r-sm);background:var(--panel2);min-width:0;padding:9px 11px}.ref-key{color:var(--text2);text-transform:uppercase;letter-spacing:.3px;margin-bottom:3px;font-size:10.5px;font-weight:700}.ref-val{color:var(--text);font-size:12.5px;font-family:var(--mono);overflow-wrap:anywhere}#refDocLink{color:var(--accent);font-weight:600;text-decoration:none}#refDocLink:hover{text-decoration:underline}.fields.stacked{grid-template-columns:1fr!important}.fields.stacked .field-wide{grid-column:auto!important}.sidebar .fields{grid-template-columns:1fr!important}.sidebar .field-wide{grid-column:auto!important}.sidebar .fields.compact{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}.sidebar .fields.compact .field-wide{grid-column:1/-1!important}input,select,textarea{border:1px solid var(--stroke2);width:100%;min-width:0;max-width:100%;color:var(--text);border-radius:var(--r-sm);background:#fff;height:34px;padding:0 9px;font-family:inherit;font-size:13px}textarea{height:auto;font-family:var(--mono);resize:vertical;padding:8px 9px;font-size:12px;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #2f6bff26}select{cursor:pointer}.derived{color:var(--text3);overflow-wrap:anywhere;margin:10px 0 0;font-size:11px;line-height:1.5}.derived b{color:var(--text2)}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.editor{margin-top:10px}.editor textarea{width:100%}.card{background:var(--panel);border:1px solid var(--stroke);border-radius:var(--r);overflow:hidden}.card-hd{border-bottom:1px solid var(--stroke);background:var(--panel2);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:13px;font-weight:700;display:flex}.collapsible-card{display:block}.collapsible-card>summary.card-hd{cursor:pointer;justify-content:flex-start;list-style:none}.collapsible-card>summary.card-hd::-webkit-details-marker{display:none}.collapsible-card>summary.card-hd:before{content:"▸";color:var(--text3);margin-right:7px;transition:transform .12s;display:inline-block}.collapsible-card[open]>summary.card-hd:before{transform:rotate(90deg)}.collapsible-card:not([open])>summary.card-hd{border-bottom:0}.card-bd{padding:12px 14px}.card-bd.nopad{padding:0}.diagram-tools{align-items:center;gap:6px;display:inline-flex}.zoom-btn{text-align:center;min-width:30px;padding:5px 8px;font-weight:700;line-height:1}.zoom-level{text-align:center;font-variant-numeric:tabular-nums;min-width:44px;color:var(--text2)}.diagram-viewport{border-top:1px solid var(--split);border-bottom:1px solid var(--split);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#fff;width:100%;height:min(68vh,780px);min-height:460px;position:relative;overflow:hidden}.diagram-viewport.panning{cursor:grabbing}.diagram-stage{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.diagram-3d{background:linear-gradient(#0d1626,#1a2438);position:absolute;inset:0}.viewer-mode{border:1px solid var(--stroke2);border-radius:var(--r-sm);margin-right:4px;display:inline-flex;overflow:hidden}.viewer-mode .mode-btn{border:0;border-radius:0;padding:5px 12px}.viewer-mode .mode-btn.active{background:var(--accent);color:#fff}.viewer-mode .mode-btn.active:hover{background:var(--accent2);color:#fff}.diagram{background:#fff;width:100%}.diagram svg{display:block}@media (width<=760px){.diagram-viewport{height:60vh;min-height:380px}}#viewerCard:fullscreen{background:#fff;border-radius:0;flex-direction:column;display:flex}#viewerCard:fullscreen .card-bd{flex:1;min-height:0;display:flex}#viewerCard:fullscreen .diagram-viewport{flex:1;height:100%}.expr{font-family:var(--mono);color:var(--accent2);background:var(--panel2);border:1px solid var(--stroke);border-radius:var(--r-sm);white-space:pre-wrap;word-break:break-word;margin-bottom:10px;padding:8px 10px;font-size:12px}.codeblock{font-family:var(--mono);color:#233;white-space:pre;background:#fff;max-height:320px;margin:0;padding:12px 14px;font-size:11.5px;line-height:1.5;overflow:auto}.grid-2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.table-scroll{background:#fff;overflow:auto}.bom-table{border-collapse:collapse;width:100%;min-width:980px;font-size:12px}.bom-table th,.bom-table td{border-bottom:1px solid var(--split);vertical-align:top;text-align:left;padding:10px 12px}.bom-table th{background:var(--panel2);color:var(--text2);text-transform:uppercase;letter-spacing:.3px;z-index:1;font-size:11px;position:sticky;top:0}.bom-table td{color:var(--text)}.bom-table .num{font-family:var(--mono);text-align:right;white-space:nowrap}.bom-table .muted{color:var(--text3)}.bom-table a{color:var(--accent);text-decoration:none}.bom-table a:hover{text-decoration:underline}.field-inline{align-items:center;gap:8px;min-width:0;display:flex}.field-inline select{flex:1;min-width:0}.help-btn{border:1px solid var(--stroke2);width:26px;height:26px;color:var(--text2);cursor:pointer;background:#fff;border-radius:999px;flex:none;padding:0;font-size:13px;font-weight:700;line-height:1}.help-btn:hover{border-color:var(--accent);color:var(--accent)}.modal-overlay{z-index:1000;background:#14192380;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--stroke);border-radius:var(--r);flex-direction:column;width:min(1320px,97vw);max-height:calc(100vh - 32px);display:flex;overflow:hidden;box-shadow:0 18px 48px #14192347}.modal-hd{border-bottom:1px solid var(--stroke);background:var(--panel2);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.modal-title{color:var(--text);font-size:15px;font-weight:800}.modal-bd{padding:16px;overflow:auto}.help-text p{color:var(--text);margin:0 0 12px;font-size:13px;line-height:1.6}.help-3d{border:1px solid var(--stroke);border-radius:var(--r-sm);background:linear-gradient(#0d1626,#1a2438);width:100%;height:min(64vh,620px);margin:6px 0 14px;position:relative;overflow:hidden}.flow3d-legend{color:#e8eef7;border-radius:var(--r-sm);background:#0a101ab8;border:1px solid #ffffff24;flex-direction:column;gap:2px;max-width:min(420px,100% - 24px);padding:6px 8px;font-size:12px;line-height:1.6;display:flex;position:absolute;bottom:12px;left:12px}.flow3d-row{text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;color:inherit;font:inherit;overflow-wrap:anywhere;background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;padding:3px 6px;display:flex}.flow3d-row:hover{background:#ffffff14}.flow3d-row.off{opacity:.4}.flow3d-row.off .flow3d-dot{box-shadow:none;border:1.5px solid;background:0 0!important}.flow3d-row b{color:#fff}.flow3d-dot{border-radius:999px;flex:none;width:11px;height:11px;box-shadow:0 0 6px}.flow3d-hint{color:#9fb0c8;pointer-events:none;overflow-wrap:anywhere;white-space:normal;margin-top:4px;padding:0 6px;font-size:11px}.flow3d-info{color:#e8eef7;border-radius:var(--r-sm);overflow-wrap:anywhere;background:#0a101ad9;border:1px solid #ffd24a80;max-width:min(320px,100% - 24px);padding:8px 11px;font-size:12px;line-height:1.5;position:absolute;top:12px;right:12px}.flow3d-info-title{color:#ffd24a;margin-bottom:4px;font-size:12.5px;font-weight:800}.flow3d-info-row{color:#cfe0ff}.flow3d-info-hint{color:#8fa0bc;margin-top:5px;font-size:10.5px}.help-section{border-top:1px solid var(--stroke);margin:10px 0 14px;padding-top:12px}.help-section-title{color:var(--text);margin-bottom:6px;font-size:14px;font-weight:800}.help-figs{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin:8px 0 12px;display:grid}.help-fig{border:1px solid var(--stroke);border-radius:var(--r-sm);background:#fff;margin:0;padding:8px}.help-fig-svg{width:100%;overflow:hidden}.help-fig-svg svg{width:100%;height:auto;display:block}.help-fig figcaption{color:var(--text3);text-align:center;margin-top:6px;font-size:11.5px}.callout{border:1px solid var(--amber);border-radius:var(--r-sm);color:#6b5200;background:#fff8e8;border-left-width:3px;padding:6px 10px;font-size:11.5px;line-height:1.4}.callout .t{text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;font-size:11px;font-weight:700}.refs ul{margin:0 0 8px;padding-left:18px}.refs li{color:var(--text2);margin-bottom:4px;font-size:12.5px;line-height:1.6}.refs a{color:var(--accent);text-decoration:none}.refs a:hover{text-decoration:underline}.tiny{color:var(--text3);margin:0;font-size:11.5px;line-height:1.55}code{font-family:var(--mono);background:var(--panel2);border:1px solid var(--stroke);border-radius:5px;padding:1px 5px;font-size:.92em}@media (width<=1040px){.layout{grid-template-columns:1fr;gap:16px}.sidebar{max-height:none;position:static}.splitter{display:none}}@media (width<=760px){.grid-2,.fields{grid-template-columns:1fr}.field-wide{grid-column:auto}}
