:root{color:#29384b;background:#edf1f6;font-family:Segoe UI,Microsoft YaHei,sans-serif;font-size:13px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer;color:inherit;background:0 0;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;gap:6px;display:inline-flex}button:hover{background:#e7edf5}button:disabled{opacity:.45;cursor:not-allowed}a{color:#266b9c;align-items:center;gap:4px;text-decoration:none;display:inline-flex}input[type=checkbox]{accent-color:#246b9e}.workbench{flex-direction:column;min-width:1000px;height:100dvh;min-height:700px;display:flex}.titlebar{color:#edf4fb;background:#152a41;flex-shrink:0;align-items:center;gap:26px;height:53px;padding:0 22px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand b{letter-spacing:-.5px;font-size:20px}.brand b span{color:#9ac9e5;font-weight:400}.brand i{color:#b9cada;border-left:1px solid #496076;margin-left:14px;padding-left:18px;font-size:12px;font-style:normal}.connection{color:#b9cada;align-items:center;gap:7px;margin-left:auto;font-size:11px;display:flex}.dot{background:#6edab0;border-radius:50%;width:6px;height:6px}.dot.off{background:#f4b866}.local{letter-spacing:1.4px;color:#91a9bf;font-size:9px}.ribbon{background:#fff;border-bottom:1px solid #d2dae5;flex-shrink:0;align-items:center;gap:10px;height:84px;padding:10px 19px;display:flex}.tool{text-align:left;gap:12px;min-width:145px;height:61px;padding:10px 17px}.tool small{color:#8b98a7;margin-top:4px;font-size:10px;display:block}.tool.selected{color:#205f93;background:#eaf2fa;border-color:#bcd2e6}.ribbon-note{color:#778697;border-left:1px solid #dde4ec;margin-left:auto;padding-left:22px;font-size:11px}.ribbon-note span{color:#9aa6b4;margin-top:5px;font-size:10px;display:block}.workspace{flex:1;min-height:0;display:flex}.panel{background:#fff}.panel-title{border-bottom:1px solid #e5eaf0;flex-shrink:0;align-items:center;gap:7px;height:42px;padding:0 14px;font-size:12px;font-weight:600;display:flex}.panel-title span{color:#8c99a8;margin-left:auto;font-size:10px;font-weight:400}.tree{border-right:1px solid #d6dfe9;flex-shrink:0;width:230px;overflow:auto}.tree-tools{border-bottom:1px solid #edf0f4;flex-wrap:wrap;gap:10px;padding:8px 10px;font-size:11px;display:flex}.tree-tools button{white-space:nowrap;min-height:32px;padding:4px 8px}.tree-tools label{align-items:center;gap:6px;width:100%;line-height:1.5;display:flex}.tree-tools input{flex-shrink:0}.displacement-tree{border-bottom:1px solid #edf0f4;padding:12px 10px;font-size:12px}.displacement-tree>h3{margin:0 0 10px;font-size:13px}.displacement-tree>.utility-launch{width:100%;min-width:0;padding:10px 8px}.displacement-tree>.utility-launch small{display:none}.displacement-tree>div{overflow-wrap:anywhere;padding:6px 0}.empty-small{text-align:center;color:#9ba9b8;padding:60px 12px}.empty-small svg{margin:auto}.empty-small p{color:#6e7e90}.empty-small small{font-size:11px}.tree-root{overflow-wrap:anywhere;margin:17px 10px 12px;font-weight:600}details summary{cursor:pointer}details:not(.advanced) summary{align-items:center;gap:6px;padding:5px 10px;display:flex}.object-id{color:#91a0af;padding:0 0 7px 35px;font-size:9px;display:block}.face{border-radius:0;flex-wrap:wrap;justify-content:flex-start;width:100%;padding:5px 12px 5px 35px;font-size:11px;display:flex}.face small{color:#a2acb9;width:100%;padding-left:18px;font-size:9px;display:block}.face.chosen{color:#9c660b;background:#fff2d9}.tree-hint{color:#8e9bab;border-top:1px solid #e5eaf0;margin:18px 14px;padding:12px 0;font-size:10px;line-height:1.8}.viewport{background:#edf2f7;flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.viewbar{background:#f8fafc;border-bottom:1px solid #d6dfe9;flex-shrink:0;align-items:center;gap:13px;height:42px;padding:0 12px;font-size:11px;display:flex}.viewbar label{align-items:center;gap:3px;display:flex}.viewbar>button{margin-left:auto;padding:4px}.segmented{border:1px solid #d7e1eb;border-radius:5px;padding:2px;display:flex}.segmented button{padding:3px 10px}.segmented .on{color:#296b99;background:#fff;box-shadow:0 1px 3px #14283f18}.canvas{flex:1;min-height:0}.canvas canvas{display:block}.viewport-foot{color:#8191a2;border-top:1px solid #dbe3ed;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;height:29px;padding:0 10px;font-size:9px;display:flex}.viewport-foot span{align-items:center;gap:4px;display:flex}.welcome{text-align:center;pointer-events:none;width:90%;position:absolute;top:47%;left:50%;transform:translate(-50%,-50%)}.welcome-icon{color:#7798b3;background:#e3ebf4;border:1px solid #d4e0eb;border-radius:24px;place-items:center;width:95px;height:95px;margin:0 auto 22px;display:grid;transform:rotate(-5deg)}.welcome h1{letter-spacing:1px;color:#405970;margin:0 0 12px;font-size:22px;font-weight:500}.welcome p{color:#8b9aaa;font-size:12px}.welcome button{pointer-events:auto;color:#336c98;background:#fff;border:1px solid #cbdbea;margin:12px auto;padding:9px 17px}.parameters{border-left:1px solid #d6dfe9;flex-direction:column;flex-shrink:0;width:285px;display:flex}.params-body{flex:1;padding:21px 19px;overflow:auto}.section-label{letter-spacing:1.4px;color:#9ba8b7;margin-bottom:8px;font-size:9px}h2{margin:0 0 16px;font-size:17px;font-weight:600}.muted{color:#8a98a9;font-size:11px;line-height:1.8}.field{color:#69798b;margin:17px 0;font-size:11px;display:block}.field input,.field textarea,.field select{color:#344d65;resize:vertical;background:#fafbfd;border:1px solid #d5dfea;border-radius:5px;width:100%;margin-top:7px;padding:8px 10px;font-size:12px;display:block}.field textarea{font-family:Consolas,monospace;line-height:1.7}.field input:focus,.field select:focus,.field textarea:focus{border-color:#6798bf;outline:2px solid #bdd4e9}.callout{color:#7c8fa2;background:#f0f5fa;border-left:2px solid #9bbcd9;margin:20px 0;padding:12px;font-size:11px;line-height:1.9}.target{color:#54738e;overflow-wrap:anywhere;background:#f3f6f9;border-radius:4px;gap:7px;padding:10px;font-size:11px;display:flex}.check{align-items:center;gap:7px;margin:15px 0;font-size:11px;display:flex}.advanced{color:#8492a2;border-top:1px solid #e3e9ef;margin-top:25px;padding-top:15px;font-size:11px}.advanced small{font-size:10px;line-height:1.7}.advanced fieldset{opacity:.5;border:0;padding:0}.run-area{text-align:center;border-top:1px solid #e5eaf0;padding:14px 18px}.primary{color:#fff;background:#266998;width:100%;padding:11px;font-weight:600;box-shadow:0 2px 3px #1f63951c}.primary:hover{background:#1d5882}.run-area small{color:#a0aebb;margin-top:8px;font-size:9px;display:block}.error{color:#a64537;overflow-wrap:anywhere;background:#fff1ed;margin-top:12px;padding:10px;font-size:11px;line-height:1.7}.error button{font-size:10px;text-decoration:underline}.console{background:#fff;border-top:1px solid #d3dde8;flex-direction:column;flex-shrink:0;height:192px;display:flex}.console-tabs{border-bottom:1px solid #e3e9f0;flex-shrink:0;gap:10px;height:36px;padding:0 12px;display:flex}.console-tabs button{color:#7d8a9a;border-radius:0;padding:0 12px;font-size:11px}.console-tabs button.active{color:#286c9d;border-bottom:2px solid #286c9d}.console-tabs b{background:#e9eff5;border-radius:3px;padding:1px 5px;font-size:9px}.console-tabs .refresh{margin-left:auto}.job-list{flex:1;overflow:auto}.no-jobs{color:#9ba7b5;text-align:center;padding:42px;font-size:11px}.job-row{border-bottom:1px solid #eef1f5;align-items:center;gap:14px;min-height:39px;padding:5px 15px;font-size:10px;display:flex}.job-row.current{background:#f2f7fb}.job-row>button:first-child{justify-content:flex-start;gap:10px}.job-row b{white-space:nowrap;font-size:11px;font-weight:500}.job-row code{color:#9aa7b5;text-overflow:ellipsis;max-width:155px;font-size:9px;overflow:hidden}.job-dot{background:#dba648;border-radius:50%;width:6px;height:6px}.job-dot.succeeded{background:#43a886}.job-dot.failed{background:#d66858}.job-error{color:#b36155;overflow-wrap:anywhere;flex:1}.job-row a{white-space:nowrap;font-size:10px}.log{color:#66788c;white-space:pre-wrap;overflow-wrap:anywhere;flex:1;margin:0;padding:12px 18px;font-family:Consolas,Microsoft YaHei,monospace;font-size:11px;line-height:1.7;overflow:auto}.statusbar{color:#7f91a5;background:#e8eef5;flex-shrink:0;align-items:center;gap:25px;height:24px;padding:0 15px;font-size:9px;display:flex}.statusbar span:last-child{margin-left:auto}@media (max-width:1200px){.tree{width:190px}.parameters{width:255px}.tool{min-width:133px;padding:9px}.ribbon-note{display:none}.connection{font-size:10px}.local,.viewport-foot span:first-child{display:none}}@media (max-width:1050px){.workbench{min-width:760px}.tree{width:170px}.parameters{width:235px}.tool{min-width:128px}.titlebar{gap:10px;padding:0 15px}.brand i{margin-left:5px;padding-left:10px}.viewbar{gap:6px;padding:0 7px}.viewbar label{font-size:10px}.viewport-foot{font-size:9px}.job-row{gap:7px}.job-row code{max-width:110px}.panel-title{padding:0 10px}.params-body{padding:18px 15px}}.preview-error{color:#9c3f2e;z-index:2;background:#fff1ed;border:1px solid #e6b3a7;border-radius:6px;padding:14px 18px;font-size:12px;line-height:1.8;position:absolute;top:55px;left:16px;right:16px}.viewport-foot span:last-child{overflow-wrap:anywhere;line-height:1.3}.viewport-foot{height:auto;min-height:36px}.utility-dock{background:#f6f8fc;border-bottom:1px solid #dce4ee;flex-shrink:0;gap:10px;padding:10px 18px;display:flex}.utility-launch{text-align:left;color:#29465e;cursor:pointer;background:#fff;border:1px solid #dce4ee;border-radius:9px;flex:1;align-items:center;gap:12px;min-width:220px;padding:12px 16px;transition:border-color .15s,box-shadow .15s;display:flex}.utility-launch:hover{border-color:#4189c3;box-shadow:0 3px 12px #163c6012}.utility-launch span{flex:1}.utility-launch strong{font-size:13px;display:block}.utility-launch small{color:#718399;margin-top:4px;font-size:11px;display:block}.utility-dialog{color:#243c52;background:#fff;border:1px solid #dce4ee;border-radius:14px;width:min(760px,90vw);max-height:85dvh;margin:auto;padding:0;overflow:auto;box-shadow:0 24px 100px #0b253544}.utility-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#102c4680}.utility-dialog>header{z-index:2;background:#f6f9fc;border-bottom:1px solid #dce4ee;justify-content:space-between;align-items:flex-start;padding:22px 26px;display:flex;position:sticky;top:0}.utility-dialog h2{margin:5px 0 7px;font-size:21px}.utility-dialog header small{color:#477997;letter-spacing:2px;font-size:10px}.utility-dialog header p{color:#738297;margin:0;font-size:12px}.utility-close{cursor:pointer;background:#fff;border:1px solid #dce4ee;border-radius:8px;place-items:center;width:34px;height:34px;display:grid}.utility-body{padding:24px 26px;font-size:13px;line-height:1.75}.utility-body h3{margin:20px 0 10px;font-size:15px}.utility-body button,.socket-console button,.credit-recharge{color:#304e69;cursor:pointer;background:#f8fafc;border:1px solid #cfdae6;border-radius:7px;min-height:38px;margin:8px 8px 8px 0;padding:8px 15px;font-weight:600;transition:background .15s}.utility-body button:hover,.socket-console button:hover{background:#eaf2fa;border-color:#669abe}.utility-body button:disabled,.socket-console button:disabled{opacity:.45;cursor:not-allowed}.utility-body .primary-action,.credit-recharge{color:#fff;background:#176da4;border-color:#176da4}.utility-body .primary-action:hover,.credit-recharge:hover{color:#fff;background:#115984}.utility-body input:not([type=checkbox]),.utility-body select,.utility-body textarea{color:#233c52;width:100%;min-height:42px;font:inherit;background:#fff;border:1px solid #c8d5e2;border-radius:7px;margin:7px 0 12px;padding:10px 12px;display:block}.utility-body textarea{resize:vertical;min-height:135px;font-family:Consolas,monospace}:is(.utility-body :focus-visible,.utility-launch:focus-visible,.socket-console :focus-visible,.credits-bar :focus-visible){outline-offset:2px;outline:3px solid #80b8e7}.utility-label{margin-top:16px;font-size:12px;font-weight:600;display:block}.utility-label small{color:#788799;font-weight:400;display:block}.utility-form-grid{grid-template-columns:1fr 1fr;gap:18px;display:grid}.utility-status{overflow-wrap:anywhere;background:#edf6fd;border-left:3px solid #347eae;border-radius:4px;padding:12px 15px}.utility-body p{color:#667a8f}.utility-body .danger-heading{color:#b64545;border-top:1px solid #e1e7ef;margin-top:30px;padding-top:20px}.utility-body .danger-button{color:#b53a3a;background:#fff5f4;border-color:#e5bbbb}.technical-detail,.utility-body>details,.socket-console details{background:#f8fafc;border:1px solid #e0e7ef;border-radius:8px;margin:14px 0;padding:12px 14px}.technical-detail summary,.utility-body details summary,.socket-console summary{cursor:pointer;color:#4b647c;font-weight:600}.utility-body pre,.socket-console pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#eef2f6;border-radius:6px;max-height:300px;padding:14px;font-size:11px;line-height:1.65;overflow:auto}.utility-body [role=alert]{color:#a63e37;background:#fff2ef;border-radius:6px;padding:12px}.utility-body a{color:#176da4;padding:8px;text-decoration:underline;display:inline-block}.utility-body code{overflow-wrap:anywhere}.credits-bar{background:#fff;border-bottom:1px solid #dce4ee;flex-shrink:0;align-items:center;gap:16px;padding:6px 20px;font-size:12px;display:flex}.credits-bar strong{color:#176da4;font-variant-numeric:tabular-nums;font-size:15px}.credits-bar>span{color:#788799}.credits-bar details{margin-left:auto}.credits-bar summary{cursor:pointer;color:#386483}.socket-console{padding:18px;font-size:12px;line-height:1.7}.socket-console>strong{font-size:15px}.socket-console h4{color:#326889;margin-top:20px}.socket-console label{background:#f0f5fa;border-radius:6px;align-items:center;gap:7px;padding:8px;display:inline-flex}@media (max-width:900px){.utility-dock{gap:6px;padding:8px}.utility-launch{min-width:0;padding:10px}.utility-launch small{display:none}.utility-form-grid{grid-template-columns:1fr}.credits-bar>span{display:none}}.material-workspace{background:#dce4ee;flex:1;grid-template-columns:280px minmax(0,1fr);gap:1px;min-height:0;display:grid;overflow:auto}.material-list,.material-editor{background:#fff;padding:18px;overflow:auto}.material-list .panel-title,.material-editor .panel-title{padding:0 0 16px}.material-actions{gap:10px;margin:16px 0;display:flex}.material-actions button,.material-item{cursor:pointer;background:#fff;border:1px solid #dce4ee;border-radius:6px;padding:10px 14px}.material-actions .primary{color:#fff;background:#2563eb}.material-item{text-align:left;align-items:center;gap:10px;width:100%;margin:8px 0;display:flex}.material-item.active{background:#eff6ff;border-color:#2563eb}.material-item i{border-radius:3px;width:14px;height:14px}.material-item small{color:#64748b;margin-top:4px;display:block}.material-editor form{max-width:900px}.material-editor fieldset{border:0;margin:0;padding:0}.material-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.material-fields input,.material-fields select{width:100%;min-height:36px}.material-group{border-top:1px solid #e2e8f0;padding:14px 0}.material-group>.material-fields{margin-top:14px}.material-success{color:#16703b}.material-workspace button:disabled{opacity:.5;cursor:wait}@media (max-width:900px){.material-workspace{grid-template-columns:220px minmax(0,1fr)}.material-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}.property-nav{border-bottom:1px solid #e2e8f0;padding:12px}.property-nav summary{cursor:pointer;font-weight:600}.property-nav button{text-align:left;width:100%;padding:9px 20px;display:block}.property-nav .chosen{color:#2563eb;background:#eff6ff}.workspace>.material-workspace{grid-template-columns:210px minmax(0,1fr)}.workspace>.material-workspace .material-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.material-link{background:#f1f5f9;border-radius:6px;margin-bottom:16px;padding:12px}.material-link dl{font-size:12px}.material-link dd{overflow-wrap:anywhere;margin:4px 0 12px}.material-modal{z-index:100;background:#fff;border-radius:8px;flex-direction:column;display:flex;position:fixed;inset:8vh 4vw;overflow:hidden;box-shadow:0 0 0 100vmax #18263899}.material-modal>.panel-title{justify-content:space-between;padding:16px;display:flex}
