:root{color-scheme:dark;--canvas-bg:#111315;--canvas-panel:#222426;--canvas-border:rgba(242,246,245,.1);--canvas-muted:#858b8d;--canvas-teal:#70d4c6}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:var(--canvas-bg);color:#f1f3f2;font-family:Inter,"Noto Sans SC","Microsoft YaHei",sans-serif}button,a{font:inherit;color:inherit}button{cursor:pointer}.canvas-app{width:100%;height:100%;position:relative;background:#111315}.canvas-topbar{height:64px;position:absolute;z-index:20;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:rgba(19,21,23,.9);border-bottom:1px solid var(--canvas-border);backdrop-filter:blur(18px)}.canvas-brandline,.canvas-top-actions{display:flex;align-items:center;gap:13px}.back-home{width:34px;height:34px;display:grid;place-items:center;text-decoration:none;border:1px solid var(--canvas-border);border-radius:10px;background:rgba(255,255,255,.035);color:#c4cbca;font-size:20px}.brand-mark{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(112,212,198,.35);border-radius:9px;background:rgba(112,212,198,.12);color:#aaf0e6;font-size:15px;font-weight:700}.canvas-title-wrap{display:grid;gap:3px}.canvas-title-wrap strong{font-size:13px}.canvas-title-wrap span,.save-state{font-size:11px;color:var(--canvas-muted)}.save-state{margin-right:7px}.save-state.is-saving{color:#e5bf80}.save-state.is-saved{color:#83d8bc}.top-action{height:32px;padding:0 12px;border:1px solid var(--canvas-border);border-radius:9px;background:rgba(255,255,255,.035);color:#bac1c0;font-size:12px}.top-action:hover,.back-home:hover{background:rgba(255,255,255,.08)}.top-action.primary{border-color:rgba(112,212,198,.28);background:rgba(60,158,146,.16);color:#c3f3ec}.canvas-viewport{position:absolute;inset:64px 0 70px;overflow:auto;background-color:#151719;background-image:radial-gradient(rgba(222,229,226,.22) .8px,transparent .9px);background-size:20px 20px;scrollbar-width:thin;scrollbar-color:#414648 transparent}.canvas-world{width:2600px;height:1800px;position:relative;transform-origin:top left}.canvas-empty{position:absolute;left:50%;top:50%;width:min(1040px,calc(100vw - 48px));transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:34px;pointer-events:none}.canvas-empty>*{pointer-events:auto}.canvas-hint{margin:0;color:#959c9d;font-size:14px;font-weight:500;letter-spacing:.02em}.cursor-icon{margin-right:6px;color:#d4d8d7;font-size:15px}.quick-create{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;width:100%}.quick-card{height:57px;display:flex;align-items:center;gap:13px;padding:0 12px;border:1px solid rgba(242,246,245,.075);border-radius:15px;background:rgba(35,37,39,.95);box-shadow:0 9px 24px rgba(0,0,0,.12);text-align:left;transition:background .16s,border-color .16s,transform .16s}.quick-card:hover{transform:translateY(-2px);border-color:rgba(112,212,198,.32);background:#2a2d2e}.quick-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:rgba(255,255,255,.07);color:#e1e7e5;font-size:20px}.quick-card strong{font-size:13px;font-weight:600}.node-layer{position:absolute;inset:0;pointer-events:none}.canvas-node{position:absolute;width:310px;min-height:250px;border:1px solid rgba(236,241,239,.14);border-radius:14px;background:rgba(35,37,39,.98);box-shadow:0 14px 36px rgba(0,0,0,.28);pointer-events:auto;overflow:visible}.canvas-node.selected{border-color:rgba(112,212,198,.62);box-shadow:0 0 0 2px rgba(112,212,198,.1),0 14px 36px rgba(0,0,0,.32)}.node-head{height:43px;padding:0 12px;display:flex;align-items:center;gap:8px;border-bottom:1px solid rgba(242,246,245,.07);cursor:grab;user-select:none}.node-head:active{cursor:grabbing}.node-kind-icon{width:23px;height:23px;display:grid;place-items:center;border-radius:7px;background:rgba(112,212,198,.12);color:#9ce8dc;font-size:14px}.node-title{min-width:0;flex:1;overflow:hidden;color:#dce2e0;font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.node-number{color:#777e7e;font-size:10px;font-weight:400}.node-action{width:24px;height:24px;padding:0;border:0;border-radius:6px;background:transparent;color:#8c9393;font-size:16px}.node-action:hover{background:rgba(255,255,255,.08);color:white}.node-body{padding:12px;display:grid;gap:11px}.node-field{display:grid;gap:6px}.node-field>span,.node-label{color:#8e9696;font-size:10px}.node-field textarea,.node-field input,.node-field select{width:100%;min-width:0;border:1px solid rgba(242,246,245,.09);border-radius:8px;outline:none;background:#191b1d;color:#e2e7e5;font-size:11px}.node-field textarea{height:64px;padding:9px;resize:vertical;line-height:1.5}.node-field input,.node-field select{height:33px;padding:0 9px}.node-field textarea:focus,.node-field input:focus,.node-field select:focus{border-color:rgba(112,212,198,.5)}.node-fields-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.node-choice-row{display:flex;flex-wrap:wrap;gap:5px}.node-choice{height:25px;padding:0 8px;border:1px solid rgba(242,246,245,.1);border-radius:7px;background:#25282a;color:#aeb5b4;font-size:10px}.node-choice.active{border-color:rgba(112,212,198,.44);background:rgba(81,174,162,.16);color:#c3f3ec}.node-footer{height:33px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(242,246,245,.07);color:#7e8585;font-size:10px}.node-port{position:absolute;left:50%;bottom:-6px;width:11px;height:11px;border:2px solid #393d3e;border-radius:50%;background:#8cdacf;transform:translateX(-50%)}.node-upload-preview{padding:9px;border:1px solid rgba(242,246,245,.08);border-radius:8px;background:#191b1d;color:#c8cfcd;font-size:11px;overflow-wrap:anywhere}.node-upload-preview small{display:block;margin-top:4px;color:#798181}.node-upload-preview img{display:block;max-width:100%;max-height:96px;margin:0 auto 7px;border-radius:5px;object-fit:contain}.canvas-dock{height:50px;position:absolute;z-index:20;left:50%;bottom:13px;display:flex;align-items:center;gap:7px;padding:6px 8px;transform:translateX(-50%);border:1px solid rgba(242,246,245,.13);border-radius:13px;background:rgba(34,36,38,.97);box-shadow:0 12px 35px rgba(0,0,0,.32);white-space:nowrap}.canvas-dock button{height:35px;padding:0 12px;display:flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:9px;background:transparent;color:#bdc5c3;font-size:12px}.canvas-dock button:hover{background:rgba(255,255,255,.08);color:#f4f6f5}.canvas-dock .dock-add{background:#303335;color:#eef2f1}.dock-add span{font-size:18px}.dock-upload span{font-size:17px}.dock-divider{width:1px;height:20px;background:rgba(242,246,245,.12)}.dock-hint{padding:0 6px;color:#6f7777;font-size:10px}.zoom-tools{display:flex;align-items:center;gap:3px;padding-left:7px;border-left:1px solid rgba(242,246,245,.1);color:#929999;font-size:10px}.zoom-tools button{width:27px;padding:0;font-size:16px}.canvas-toast{position:absolute;z-index:40;left:50%;top:78px;max-width:calc(100% - 30px);padding:9px 14px;transform:translate(-50%,-8px);border:1px solid var(--canvas-border);border-radius:9px;background:#25282a;color:#dce2e0;font-size:12px;opacity:0;pointer-events:none;transition:.2s}.canvas-toast.show{transform:translate(-50%,0);opacity:1}.add-menu{position:absolute;z-index:35;left:calc(50% - 326px);bottom:72px;width:220px;padding:9px;border:1px solid rgba(242,246,245,.12);border-radius:13px;background:#232527;box-shadow:0 18px 44px rgba(0,0,0,.42)}.add-menu[hidden],.menu-scrim[hidden]{display:none}.add-menu-heading{height:32px;padding:0 7px;display:flex;align-items:center;justify-content:space-between;color:#8f9796;font-size:11px}.add-menu-heading button{border:0;background:transparent;color:#aab1b0;font-size:20px}.add-menu>button{width:100%;height:37px;padding:0 9px;display:flex;align-items:center;gap:12px;border:0;border-radius:8px;background:transparent;color:#d5dad8;text-align:left;font-size:12px}.add-menu>button:hover{background:rgba(255,255,255,.07)}.add-menu>button span{width:19px;color:#c5cecb;font-size:17px;text-align:center}.add-menu-divider{margin:8px 5px 4px;padding-top:10px;border-top:1px solid rgba(242,246,245,.08);color:#777f7e;font-size:10px}.menu-scrim{position:absolute;z-index:30;inset:0;background:transparent}.canvas-viewport.is-panning{cursor:grabbing}.canvas-viewport.is-panning *{cursor:grabbing!important}@media(max-width:760px){.canvas-topbar{height:58px;padding:0 12px}.canvas-top-actions{gap:5px}.save-state{display:none}.top-action{height:30px;padding:0 9px;font-size:11px}.canvas-viewport{inset:58px 0 67px}.canvas-world{width:1900px;height:1400px}.canvas-empty{width:min(680px,calc(100vw - 28px));gap:23px}.quick-create{grid-template-columns:repeat(2,minmax(130px,1fr));gap:7px}.quick-card{height:51px;padding:0 9px;gap:9px}.quick-icon{width:29px;height:29px}.quick-card strong{font-size:11px}.canvas-dock{max-width:calc(100vw - 16px);bottom:8px;gap:2px;padding:5px}.canvas-dock button{padding:0 8px;font-size:11px}.dock-hint,.dock-divider{display:none}.zoom-tools{margin-left:2px;padding-left:3px}.add-menu{left:8px;bottom:65px;width:210px}.canvas-node{width:285px}.node-body{padding:10px}.canvas-brandline{gap:8px}.canvas-title-wrap span{display:none}}@media(max-width:390px){.top-action:first-of-type{display:none}.canvas-node{width:270px}.canvas-dock{gap:0}.canvas-dock button{padding:0 6px}.zoom-tools{gap:0}.zoom-tools button{width:23px}}

.canvas-empty[hidden]{display:none!important}

/* Canvas project controls, shared asset drawer and shortcuts. */
.project-name-input{width:min(270px,42vw);padding:1px 0;border:0;outline:0;background:transparent;color:#eef3f1;font-size:13px;font-weight:650}.canvas-title-wrap label{color:#747d7c;font-size:9px;letter-spacing:.04em}.project-name-input:focus{border-bottom:1px solid rgba(112,212,198,.55)}.canvas-viewport{inset:64px 0 72px 0}.canvas-frame{position:absolute;left:860px;top:650px;width:880px;height:495px;border:1px solid rgba(214,230,226,.15);border-radius:4px;background:rgba(200,226,219,.018);pointer-events:none;transition:width .2s,height .2s}.canvas-frame>span{position:absolute;top:-22px;left:0;color:#6d7776;font-size:10px}.connection-layer{position:absolute;inset:0;width:2600px;height:1800px;overflow:visible;pointer-events:none}.connection-path{fill:none;stroke:rgba(103,203,192,.65);stroke-width:2}.canvas-node.multi-selected{outline:1px solid rgba(255,207,133,.72);outline-offset:2px}.canvas-node.grouped:before{content:"已成组";position:absolute;top:-20px;left:4px;color:#80cfc4;font-size:9px}.canvas-node.connect-source{border-color:#e3bd7c;box-shadow:0 0 0 2px rgba(227,189,124,.12)}.canvas-node .node-port{cursor:crosshair}.canvas-node .node-in-port{position:absolute;left:-6px;top:50%;width:11px;height:11px;border:2px solid #393d3e;border-radius:50%;background:#d5b578;transform:translateY(-50%);cursor:crosshair}.canvas-left-dock{position:absolute;z-index:22;left:14px;bottom:14px;height:42px;display:flex;align-items:center;gap:5px;padding:4px 5px;border:1px solid rgba(242,246,245,.12);border-radius:11px;background:rgba(31,33,35,.97);box-shadow:0 10px 30px rgba(0,0,0,.24)}.left-dock-button,.zoom-display{height:32px;padding:0 9px;display:flex;align-items:center;gap:6px;border:0;border-radius:7px;background:transparent;color:#b6bfbd;font-size:11px}.left-dock-button:hover,.zoom-display:hover{background:rgba(255,255,255,.07);color:white}.left-dock-button>span:first-child{color:#aab6b3;font-size:13px}.zoom-display{margin-left:2px;padding:0 8px;border-left:1px solid rgba(242,246,245,.1);border-radius:0;color:#d5dcda}.canvas-dock{height:48px;bottom:12px;gap:3px;padding:5px 7px;border-radius:13px}.canvas-dock button{width:36px;height:34px;padding:0;font-size:15px}.canvas-dock .dock-add{width:38px;background:#f0f2f1;color:#171a1b;font-size:22px}.canvas-dock .dock-tool.selected{background:#474a4c;color:#eff4f2;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}.canvas-dock .history-tool{color:#8f9997}.canvas-dock .history-tool:disabled{opacity:.38;cursor:default}.canvas-create-floating{display:none}.add-menu{left:calc(50% - 120px);bottom:69px}.asset-drawer{width:320px;position:absolute;z-index:26;inset:64px auto 70px 0;display:flex;flex-direction:column;border-right:1px solid rgba(242,246,245,.1);background:rgba(25,27,29,.98);box-shadow:14px 0 38px rgba(0,0,0,.24)}.asset-drawer[hidden]{display:none}.drawer-header{height:60px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(242,246,245,.08)}.drawer-header>div{display:grid;gap:5px}.drawer-header strong{font-size:13px}.drawer-header span{color:#7f8988;font-size:10px}.drawer-header button{width:27px;height:27px;border:0;border-radius:7px;background:transparent;color:#aab1b0;font-size:20px}.drawer-tabs{height:42px;padding:6px 12px;display:flex;gap:7px;border-bottom:1px solid rgba(242,246,245,.07)}.drawer-tab{min-width:66px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:#8e9795;font-size:11px}.drawer-tab.selected{background:#363a3c;color:#e0e8e5}.drawer-search{height:35px;margin:12px 12px 8px;padding:0 9px;display:flex;align-items:center;gap:7px;border:1px solid rgba(242,246,245,.09);border-radius:8px;background:#1c1e20}.drawer-search>span{color:#9aa3a1;font-size:17px}.drawer-search input{width:100%;border:0;outline:0;background:transparent;color:#e3e9e7;font-size:11px}.drawer-search kbd{flex:none;color:#697270;font-size:9px}.drawer-filter{height:28px;padding:0 14px;display:flex;align-items:center;justify-content:space-between;color:#727b79;font-size:10px}.drawer-filter button{border:0;background:transparent;color:#9ca5a3;font-size:10px}.drawer-list{flex:1;min-height:0;overflow:auto;padding:4px 9px 12px}.drawer-empty{padding:22px 10px;color:#76807e;font-size:11px;line-height:1.6;text-align:center}.drawer-item{width:100%;min-height:47px;padding:6px 7px;display:flex;align-items:center;gap:9px;border:0;border-radius:9px;background:transparent;color:#d1d8d6;text-align:left}.drawer-item:hover{background:rgba(255,255,255,.06)}.drawer-item-icon{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:8px;background:#373a3c;color:#a6e4da;font-size:15px}.drawer-item-copy{min-width:0;flex:1;display:grid;gap:4px}.drawer-item-copy strong{overflow:hidden;font-size:11px;font-weight:550;text-overflow:ellipsis;white-space:nowrap}.drawer-item-copy small{color:#7e8785;font-size:9px}.drawer-upload{height:36px;margin:9px 12px 12px;border:1px solid rgba(242,246,245,.1);border-radius:8px;background:rgba(255,255,255,.04);color:#cbd3d1;font-size:11px}.drawer-upload:hover{background:rgba(255,255,255,.08)}.aspect-menu{position:absolute;z-index:35;left:148px;bottom:67px;width:220px;padding:13px;border:1px solid rgba(242,246,245,.12);border-radius:12px;background:#232527;box-shadow:0 16px 40px rgba(0,0,0,.42)}.aspect-menu[hidden],.shortcut-modal[hidden]{display:none}.aspect-menu>strong{display:block;margin:1px 2px 10px;color:#cbd2d0;font-size:11px}.aspect-menu>div{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.aspect-choice{height:30px;border:1px solid rgba(242,246,245,.1);border-radius:7px;background:#292c2e;color:#acb5b2;font-size:10px}.aspect-choice.selected{border-color:rgba(112,212,198,.5);background:rgba(73,156,146,.2);color:#c6f1eb}.shortcut-modal{position:absolute;z-index:60;left:50%;top:50%;width:min(1160px,calc(100% - 40px));padding:22px 24px 25px;transform:translate(-50%,-50%);border:1px solid rgba(242,246,245,.13);border-radius:16px;background:rgba(36,38,40,.985);box-shadow:0 26px 90px rgba(0,0,0,.55)}.shortcut-modal>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.shortcut-modal h2{margin:0;color:#e3e9e7;font-size:15px}.shortcut-modal>header button{width:30px;height:30px;border:0;border-radius:7px;background:transparent;color:#b6bfbd;font-size:22px}.shortcut-columns{display:grid;grid-template-columns:repeat(4,1fr)}.shortcut-columns section{padding:0 20px;border-right:1px solid rgba(242,246,245,.09)}.shortcut-columns section:first-child{padding-left:0}.shortcut-columns section:last-child{padding-right:0;border:0}.shortcut-columns h3{margin:0 0 12px;color:#51c8df;font-size:12px}.shortcut-columns p{min-height:30px;margin:7px 0;display:flex;align-items:center;gap:5px;color:#a3adaa;font-size:11px}.shortcut-columns p>span:first-child{flex:1}.shortcut-columns b{color:#69716f;font-weight:400}.shortcut-columns kbd{padding:3px 6px;border:1px solid rgba(242,246,245,.1);border-radius:6px;background:#292c2e;color:#d0d7d5;font-family:inherit;font-size:10px}.canvas-app.asset-open .canvas-viewport{padding-left:0}.canvas-viewport.is-panning,.canvas-viewport.tool-hand{cursor:grab}.canvas-viewport.is-panning{cursor:grabbing}.canvas-viewport.tool-select{cursor:default}@media(max-width:760px){.canvas-topbar{height:58px}.canvas-viewport{inset:58px 0 68px}.asset-drawer{inset:58px auto 67px 0;width:min(320px,86vw)}.canvas-left-dock{left:6px;bottom:8px;height:38px;gap:1px;padding:3px}.left-dock-button,.zoom-display{height:30px;padding:0 6px;font-size:9px;gap:4px}.canvas-dock{bottom:7px;height:42px;gap:0;padding:3px}.canvas-dock button{width:31px;height:32px;font-size:13px}.canvas-dock .dock-add{width:34px}.history-tool{display:none!important}.aspect-menu{left:7px;bottom:57px}.shortcut-modal{width:calc(100% - 22px);max-height:calc(100% - 80px);overflow:auto;padding:17px}.shortcut-columns{grid-template-columns:repeat(2,1fr);gap:12px}.shortcut-columns section{padding:0 10px 8px;border:0;border-bottom:1px solid rgba(242,246,245,.08)}.shortcut-columns section:nth-child(odd){padding-left:0}.shortcut-columns section:nth-child(even){padding-right:0}.canvas-create-floating{display:none}.project-name-input{width:min(175px,38vw);font-size:12px}}

/* Infinite workspace, labeled tool switch, and dock-anchored shortcuts. */
.canvas-world{width:8000px;height:6000px}
.connection-layer{width:100%;height:100%}
.tool-switch{display:flex;align-items:center;gap:2px;padding:2px;border:1px solid rgba(242,246,245,.09);border-radius:10px;background:rgba(255,255,255,.025)}
.canvas-dock .tool-switch .dock-tool{width:auto;min-width:78px;height:34px;padding:0 9px;gap:7px;font-size:12px}
.tool-switch .dock-tool>span:first-child{font-size:15px}
.tool-switch .dock-tool>span:last-child{font-size:11px}
.shortcut-modal{top:auto;bottom:72px;width:min(1200px,calc(100% - 40px));max-height:calc(100% - 105px);overflow:auto;padding:23px 25px 26px;transform:translateX(-50%)}
.shortcut-modal>header{margin-bottom:20px}
.shortcut-modal h2{font-size:18px}
.shortcut-columns h3{font-size:15px;margin-bottom:14px}
.shortcut-columns p{min-height:34px;margin:8px 0;font-size:13px;gap:7px}
.shortcut-columns kbd{padding:4px 7px;font-size:12px}
.canvas-viewport.tool-select{cursor:default}
@media(max-width:760px){.canvas-world{width:8000px;height:6000px}.canvas-dock .tool-switch .dock-tool{min-width:62px;padding:0 6px;gap:5px}.shortcut-modal{bottom:54px;max-height:calc(100% - 92px);padding:16px}.shortcut-columns p{font-size:12px;min-height:30px}.shortcut-columns kbd{font-size:11px}.shortcut-modal h2{font-size:16px}}

/* Refined feature icons, text-selection cleanup, and magnetic grid snapping. */
.canvas-viewport{background-image:none}
.canvas-world{background-image:radial-gradient(rgba(222,229,226,.22) .8px,transparent .9px);background-size:20px 20px}
.canvas-viewport,.canvas-viewport *{-webkit-user-select:none;user-select:none}
.canvas-viewport input,.canvas-viewport textarea,.canvas-viewport select,.canvas-viewport [contenteditable="true"]{-webkit-user-select:text;user-select:text}
.quick-icon svg,.menu-icon svg,.snap-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.quick-icon{font-size:0}
.add-menu>button .menu-icon{width:21px;flex:0 0 21px;padding:0;display:grid;place-items:center;color:#c7d5d1;font-size:0}
.add-menu>button>span:last-child{width:auto;flex:1;text-align:left;font-size:12px}
.quick-card:hover .quick-icon{color:#98eadc;background:rgba(112,212,198,.14)}
.snap-toggle.is-on{background:rgba(87,185,171,.13);color:#b7f0e6}
.snap-toggle.is-on .snap-icon{color:#8be0d3}
.snap-toggle:not(.is-on){color:#89918f}
@media(max-width:760px){.canvas-left-dock{max-width:calc(100vw - 8px);left:4px}.snap-toggle>span:last-child{display:none}.left-dock-button.snap-toggle{width:32px;justify-content:center;padding:0}}
.canvas-node .node-port,.canvas-node .node-in-port{position:absolute;top:50%;bottom:auto;left:auto;z-index:3;width:25px;height:25px;padding:0;display:grid;place-items:center;border:1px solid rgba(112,212,198,.72);border-radius:50%;background:#202827;color:#a8eee4;font-size:19px;font-weight:400;line-height:1;transform:translateY(-50%);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .16s,background .16s,border-color .16s,transform .16s;box-shadow:0 0 0 4px rgba(112,212,198,.08)}
.canvas-node .node-in-port{left:-13px;border-color:rgba(213,181,120,.78);background:#28251f;color:#f0d49d}
.canvas-node .node-port{right:-13px;cursor:crosshair}
.canvas-node .node-in-port{left:-32px}
.canvas-node .node-port{right:-32px}
.canvas-node.selected .node-in-port,.canvas-node.selected .node-port,.canvas-node.connect-source .node-port,.canvas-node.connection-compatible .node-in-port,.canvas-node.connection-compatible-source .node-port,.canvas-node.connection-target .node-in-port,.canvas-node.connection-invalid .node-in-port{opacity:1;visibility:visible;pointer-events:auto}
.canvas-node .node-in-port:hover,.canvas-node .node-port:hover{transform:translateY(-50%) scale(1.12);background:#303d3b}
.canvas-node.connect-source .node-port,.canvas-node.connection-compatible .node-in-port{border-color:#78ded1;color:#b9fff4}
.canvas-node.connection-target{border-color:rgba(112,212,198,.82);box-shadow:0 0 0 2px rgba(112,212,198,.16),0 0 24px rgba(112,212,198,.12)}
.canvas-node.connection-invalid{border-color:rgba(232,132,121,.78);box-shadow:0 0 0 2px rgba(232,132,121,.1)}
.canvas-node.connection-invalid .node-in-port{border-color:#d78379;background:#342321;color:#ffc0b7}
.canvas-node.connection-target-output .node-port,.canvas-node.connection-invalid-output .node-port{opacity:1;visibility:visible;pointer-events:auto}
.canvas-node.connection-invalid-output .node-port{border-color:#d78379;background:#342321;color:#ffc0b7}
.connection-path{stroke:rgba(236,242,240,.78);stroke-width:2;stroke-linecap:round;transition:stroke .16s,opacity .16s}
.connection-flow{fill:none;stroke:rgba(113,195,255,.95);stroke-width:4;stroke-linecap:round;stroke-dasharray:2 25;filter:drop-shadow(0 0 4px rgba(76,171,255,.9));animation:connection-flow 1.25s linear infinite;pointer-events:none}
.connection-draft{stroke:#9eece2;stroke-width:2.5;stroke-dasharray:7 6;animation:connection-dash .7s linear infinite}
.connection-draft.is-invalid{stroke:#e78378}
.add-menu.connection-picker{width:230px}
.add-menu.connection-picker>button.is-disabled,.add-menu.connection-picker>button:disabled{opacity:.3;filter:saturate(.25);cursor:not-allowed}
.add-menu.connection-picker>button:not(:disabled){border:1px solid rgba(112,212,198,.14);background:rgba(112,212,198,.035)}
.add-menu.connection-picker>button:not(:disabled):hover{border-color:rgba(112,212,198,.44);background:rgba(112,212,198,.12)}
@keyframes connection-dash{to{stroke-dashoffset:-26}}
@keyframes connection-flow{to{stroke-dashoffset:-54}}
.canvas-node.grouped:before{content:none}
.canvas-group{position:absolute;z-index:0;border:1px dashed rgba(221,231,228,.32);border-radius:14px;background:rgba(215,228,224,.035);pointer-events:none}
.canvas-node{z-index:1}
.canvas-group-name{position:absolute;top:-34px;left:8px;width:152px;height:27px;padding:0 9px;border:1px solid transparent;border-radius:7px;outline:0;background:rgba(25,27,29,.82);color:#aeb9b6;font-size:12px;pointer-events:auto}
.canvas-group-name:hover,.canvas-group-name:focus{border-color:rgba(112,212,198,.32);background:#202426;color:#e8efed}
.selection-box{position:absolute;z-index:2;border:1px solid rgba(94,208,193,.9);border-radius:3px;background:rgba(81,194,180,.12);box-shadow:0 0 0 1px rgba(81,194,180,.14);pointer-events:none}
.selection-toolbar{position:absolute;z-index:38;display:flex;align-items:center;gap:12px;padding:7px 9px 7px 14px;transform:translateX(-50%);border:1px solid rgba(242,246,245,.13);border-radius:11px;background:rgba(36,39,41,.97);box-shadow:0 12px 34px rgba(0,0,0,.4);color:#c9d2cf;font-size:12px;white-space:nowrap}
.selection-toolbar[hidden]{display:none}
.selection-toolbar button{height:30px;padding:0 14px;border:1px solid rgba(112,212,198,.35);border-radius:8px;background:rgba(77,161,150,.18);color:#c8f3ec;font-size:12px}
.selection-toolbar button:hover{background:rgba(77,161,150,.32)}
.canvas-node.multi-selected{outline:1px solid rgba(112,212,198,.7);outline-offset:2px}
.canvas-viewport.middle-pan-active{cursor:grabbing}
.canvas-dock .dock-tool.temporary-active{background:#474a4c;color:#eff4f2;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.canvas-viewport{inset:0!important;overflow:hidden!important;scrollbar-width:none;background:transparent!important}
.canvas-viewport::-webkit-scrollbar{display:none;width:0;height:0}
.canvas-world{background-image:radial-gradient(rgba(222,229,226,.15) .65px,transparent .75px)!important;background-size:10px 10px!important}
.canvas-topbar{background:rgba(19,21,23,.46);border-bottom-color:rgba(242,246,245,.045);backdrop-filter:blur(12px)}
.canvas-group{overflow:visible;pointer-events:none}
.canvas-group.group-selected{border-color:rgba(112,212,198,.72);background:rgba(112,212,198,.055);box-shadow:0 0 0 1px rgba(112,212,198,.13)}
.canvas-group-hit{position:absolute;z-index:0;inset:0;border-radius:inherit;background:transparent;pointer-events:auto;cursor:grab}
.canvas-group-hit:active{cursor:grabbing}
.canvas-group-move{position:absolute;left:0;right:0;top:-31px;height:29px;pointer-events:auto;cursor:grab}
.canvas-group-move:active{cursor:grabbing}
.canvas-group-name{top:0;left:5px;width:160px;height:27px}
.canvas-group-resize{position:absolute;z-index:4;width:11px;height:11px;padding:0;border:1px solid rgba(218,228,225,.84);border-radius:2px;background:#9ba5a2;opacity:0;pointer-events:auto;transition:opacity .14s,transform .14s}
.canvas-group:hover .canvas-group-resize,.canvas-group:focus-within .canvas-group-resize{opacity:.9}
.canvas-group-resize:hover{transform:scale(1.18);background:#70d4c6}
.resize-nw{left:-6px;top:-6px;cursor:nwse-resize}.resize-n{left:calc(50% - 5px);top:-6px;cursor:ns-resize}.resize-ne{right:-6px;top:-6px;cursor:nesw-resize}.resize-e{right:-6px;top:calc(50% - 5px);cursor:ew-resize}.resize-se{right:-6px;bottom:-6px;cursor:nwse-resize}.resize-s{left:calc(50% - 5px);bottom:-6px;cursor:ns-resize}.resize-sw{left:-6px;bottom:-6px;cursor:nesw-resize}.resize-w{left:-6px;top:calc(50% - 5px);cursor:ew-resize}
@media(max-width:760px){.canvas-viewport{inset:0!important}}
.node-kind-icon svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.canvas-node.text-manual{width:520px;min-height:420px}
.text-manual-body{gap:9px}
.text-node-intro{min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;color:#9ba4a2;text-align:center;font-size:12px}
.text-node-illustration{width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(112,212,198,.14);border-radius:13px;background:rgba(112,212,198,.06);color:#84918e}
.text-node-illustration svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.text-node-try-label{color:#929a99;font-size:11px}
.text-node-manual-button{width:100%;height:39px;padding:0 11px;display:flex;align-items:center;gap:10px;border:1px solid rgba(242,246,245,.08);border-radius:9px;background:#1c1f20;color:#d6dddb;text-align:left;font-size:12px}
.text-node-manual-button:hover{border-color:rgba(112,212,198,.34);background:#242a2a}
.text-node-option-icon{width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:rgba(112,212,198,.1);color:#a3e7de;font-size:16px}
.text-node-option-arrow{margin-left:auto;color:#77817e}
.text-manual .text-manual-body{padding-top:9px}
.rich-text-toolbar{min-height:36px;padding:4px 6px;display:flex;align-items:center;gap:3px;overflow-x:auto;border:1px solid rgba(242,246,245,.08);border-radius:9px;background:#1b1d1f;scrollbar-width:none}
.rich-text-toolbar::-webkit-scrollbar{display:none}
.rich-text-toolbar button{height:27px;min-width:27px;padding:0 7px;border:0;border-radius:6px;background:transparent;color:#aeb7b4;font-size:11px;white-space:nowrap}
.rich-text-toolbar button:hover,.rich-text-toolbar button.active{background:rgba(255,255,255,.09);color:#e6eeeb}
.rich-text-toolbar button[title="加粗"]{font-weight:750}.rich-text-toolbar button[title="斜体"]{font-style:italic}
.rich-text-toolbar>i{width:1px;height:19px;flex:none;margin:0 3px;background:rgba(242,246,245,.1)}
.rich-text-color{position:relative;width:29px;height:27px;flex:none;display:grid;place-items:center;border-radius:6px;color:#aab3b1;cursor:pointer}
.rich-text-color:hover{background:rgba(255,255,255,.09)}
.rich-text-color input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.text-inline-content{min-height:280px;max-height:540px;padding:18px;border:1px solid rgba(242,246,245,.13);border-radius:12px;outline:none;background:#17191a;color:#e8eceb;font-size:16px;line-height:1.75;overflow:auto;resize:vertical;overflow-wrap:anywhere;white-space:pre-wrap}
.text-inline-content:focus{border-color:rgba(202,211,208,.62);box-shadow:0 0 0 1px rgba(225,233,230,.07)}
.text-inline-content:empty:before,.text-expanded-content:empty:before{content:attr(data-placeholder);color:#616968;pointer-events:none}
.text-inline-content.text-no-wrap,.text-expanded-content.text-no-wrap{white-space:pre;overflow-x:auto;overflow-wrap:normal}
.text-inline-content h1,.text-expanded-content h1{font-size:28px}.text-inline-content h2,.text-expanded-content h2{font-size:22px}.text-inline-content h3,.text-expanded-content h3{font-size:18px}
.text-assistant-panel{position:absolute;z-index:27;min-height:142px;padding:12px 15px 11px;border:1px solid rgba(242,246,245,.12);border-radius:16px;background:rgba(35,37,39,.98);box-shadow:0 18px 48px rgba(0,0,0,.44);transition:width .18s,top .18s}
.text-assistant-panel[hidden],.text-editor-overlay[hidden]{display:none}
.text-assistant-input{min-height:75px;display:flex;align-items:flex-start;gap:8px;border-bottom:1px solid rgba(242,246,245,.09)}
.text-assistant-input textarea{width:100%;min-height:66px;padding:8px 3px;resize:none;border:0;outline:0;background:transparent;color:#e6ece9;font-family:inherit;font-size:13px;line-height:1.7}
.text-assistant-input textarea::placeholder{color:#78817f}
.text-assistant-input button{width:28px;height:28px;flex:none;border:0;border-radius:7px;background:transparent;color:#909997;font-size:17px}
.text-assistant-input button:hover{background:rgba(255,255,255,.08);color:#e4ebe8}
.text-assistant-controls{height:43px;display:flex;align-items:center;gap:10px;padding-top:8px}
.text-model-select{height:31px;display:flex;align-items:center;gap:6px;color:#e0e7e4;font-size:12px}
.text-model-select>span{color:#a7e8df;font-size:15px}
.text-model-select select{max-width:150px;border:0;outline:0;background:transparent;color:#dce4e1;font-size:12px}
.text-model-select option{background:#25282a}
.text-assistant-note{min-width:0;flex:1;overflow:hidden;color:#7d8785;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.text-generate-button{height:32px;min-width:74px;padding:0 5px 0 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:0;border-radius:9px;background:#d9e0de;color:#202525;font-size:12px;font-weight:600}
.text-generate-button:hover{background:#f0f4f2}
.text-generate-button b{width:24px;height:24px;display:grid;place-items:center;border-radius:7px;background:rgba(20,28,27,.1);font-size:17px}
.text-assistant-panel.is-expanded{min-height:290px}
.text-assistant-panel.is-expanded .text-assistant-input{min-height:220px}
.text-assistant-panel.is-expanded textarea{height:205px}
.text-editor-overlay{position:absolute;z-index:70;inset:0;background:rgba(10,11,12,.985)}
.text-editor-header{height:48px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(242,246,245,.06);color:#d8dfdd}
.text-editor-header strong{font-size:13px;font-weight:550}
.text-editor-header button{width:30px;height:30px;border:0;border-radius:7px;background:transparent;color:#8f9896;font-size:22px}
.text-editor-header button:hover{background:rgba(255,255,255,.08);color:#fff}
.text-editor-workspace{width:min(900px,calc(100% - 40px));height:calc(100% - 106px);margin:28px auto 30px;display:flex;flex-direction:column;gap:18px}
.text-editor-toolbar{align-self:center;max-width:100%}
.text-expanded-content{flex:1;min-height:0;padding:10px 4px;outline:0;color:#e8eceb;font-size:17px;line-height:1.85;overflow:auto;overflow-wrap:anywhere;white-space:pre-wrap}
.text-expanded-content h1{font-size:32px}.text-expanded-content h2{font-size:25px}.text-expanded-content h3{font-size:20px}
@media(max-width:760px){.canvas-node.text-manual{width:min(520px,calc(100vw - 34px))}.text-inline-content{min-height:230px;padding:13px}.text-assistant-panel{max-width:calc(100vw - 20px);padding:10px}.text-assistant-controls{gap:5px}.text-assistant-note{font-size:9px}.text-editor-workspace{width:calc(100% - 28px);height:calc(100% - 88px);margin:16px auto}.text-editor-header{height:44px;padding:0 14px}}
.image-node-body{gap:8px}.image-node-preview{position:relative;aspect-ratio:16/9;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(242,246,245,.07);border-radius:8px;background:linear-gradient(145deg,#25282a,#1d1f21)}.image-node-preview-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:rgba(112,212,198,.1);color:#8edfd3}.image-node-preview-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}.image-node-preview>small{position:absolute;right:8px;bottom:7px;color:#858d8b;font-size:9px}.image-node-try-label{margin-top:1px;color:#8e9696;font-size:10px}.image-node-reference{min-height:36px;padding:0 9px;display:flex;align-items:center;gap:8px;border:1px solid rgba(242,246,245,.08);border-radius:8px;background:rgba(255,255,255,.025);color:#dce2e0;text-align:left}.image-node-reference:hover{border-color:rgba(112,212,198,.3);background:rgba(112,212,198,.06)}.image-node-reference>span{width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:rgba(112,212,198,.12);color:#94e3d8;font-size:15px}.image-node-reference strong{font-size:11px;font-weight:600}.image-node-reference small{margin-left:auto;color:#7d8785;font-size:9px}.image-generation-panel{position:absolute;z-index:28;min-height:174px;padding:11px 14px 10px;border:1px solid rgba(242,246,245,.12);border-radius:16px;background:rgba(35,37,39,.985);box-shadow:0 18px 48px rgba(0,0,0,.44)}.image-generation-panel[hidden]{display:none}.image-prompt-tools{height:27px;display:flex;align-items:center;gap:8px}.image-prompt-tools>button:first-child{height:24px;padding:0 9px;border:0;border-radius:7px;background:rgba(255,255,255,.07);color:#c7cfcc;font-size:10px}.image-prompt-tools>button:first-child:hover{background:rgba(112,212,198,.15);color:#c6f1eb}.image-prompt-tools>span{flex:1;color:#737d7b;font-size:9px}.image-prompt-tools>button:last-child{width:26px;height:25px;border:0;border-radius:6px;background:transparent;color:#8d9694;font-size:15px}.image-prompt-tools>button:last-child:hover{background:rgba(255,255,255,.07);color:#e1e8e5}.image-generation-panel>textarea{width:100%;height:52px;min-height:52px;padding:9px 2px;resize:none;border:0;outline:0;background:transparent;color:#e6ece9;font-family:inherit;font-size:12px;line-height:1.65}.image-generation-panel>textarea::placeholder{color:#737d7b}.image-generation-controls{height:39px;display:flex;align-items:center;gap:8px;padding-top:7px;border-top:1px solid rgba(242,246,245,.08)}.image-model-select{height:29px;display:flex;align-items:center;gap:6px;color:#e0e7e4;font-size:11px}.image-model-select>span{color:#a7e8df;font-size:14px}.image-model-select select{max-width:150px;border:0;outline:0;background:transparent;color:#dce4e1;font-size:11px}.image-model-select option{background:#25282a}.image-size-trigger{height:29px;max-width:250px;padding:0 8px;display:flex;align-items:center;gap:7px;border:1px solid rgba(242,246,245,.09);border-radius:7px;background:rgba(255,255,255,.035);color:#bdc7c3;font-size:10px}.image-size-trigger:hover{border-color:rgba(112,212,198,.3)}.image-size-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-size-trigger b{color:#76807d;font-weight:400}.image-generation-note{min-width:0;flex:1;overflow:hidden;color:#77817f;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.image-generation-panel.is-expanded>textarea{height:116px}.image-generation-panel.is-expanded{min-height:240px}.image-size-popover{position:absolute;z-index:42;right:112px;bottom:55px;width:332px;max-height:min(540px,calc(100vh - 95px));padding:13px;overflow:auto;border:1px solid rgba(242,246,245,.13);border-radius:14px;background:rgba(37,39,41,.99);box-shadow:0 20px 55px rgba(0,0,0,.55)}.image-size-popover[hidden]{display:none}.image-size-section{display:grid;gap:7px;margin-bottom:11px}.image-size-section:last-child{margin-bottom:0}.image-size-section>span{color:#aeb6b3;font-size:10px}.image-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.image-choice-grid button{height:32px;border:1px solid rgba(242,246,245,.11);border-radius:7px;background:#282b2d;color:#aeb6b3;font-size:10px}.image-choice-grid button:hover,.image-ratio-grid button:hover{border-color:rgba(112,212,198,.35);color:#d8efeb}.image-choice-grid button.selected,.image-ratio-grid button.selected{border-color:#d7dfdc;background:#303436;color:#f1f4f2;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}.image-ratio-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.image-ratio-grid button{height:53px;display:grid;align-content:center;justify-items:center;gap:3px;border:1px solid rgba(242,246,245,.11);border-radius:7px;background:#282b2d;color:#aeb6b3;font-size:15px}.image-ratio-grid button small{font-size:9px}.image-generation-panel .text-generate-button{flex:none}@media(max-width:760px){.image-generation-panel{max-width:calc(100vw - 20px);padding:9px}.image-generation-controls{gap:4px}.image-model-select select{max-width:105px}.image-size-trigger{max-width:150px;padding:0 5px;font-size:9px}.image-generation-note{display:none}.image-generation-panel .text-generate-button{min-width:66px;padding-left:8px}.image-size-popover{right:8px;width:min(332px,calc(100vw - 38px));bottom:53px}.image-node-preview{aspect-ratio:16/9}}
.video-node-body{gap:8px}.video-node-preview{position:relative;aspect-ratio:16/9;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(242,246,245,.07);border-radius:8px;background:linear-gradient(145deg,#25282a,#1d1f21)}.video-node-play{color:#697170;font-size:36px;line-height:1}.video-node-preview>small{position:absolute;right:8px;bottom:7px;color:#858d8b;font-size:9px}.video-generation-panel{position:absolute;z-index:28;min-height:174px;padding:11px 14px 10px;border:1px solid rgba(242,246,245,.12);border-radius:16px;background:rgba(35,37,39,.985);box-shadow:0 18px 48px rgba(0,0,0,.44)}.video-generation-panel[hidden]{display:none}.video-prompt-tools{height:27px;display:flex;align-items:center;gap:8px}.video-prompt-tools>button:first-child{height:24px;padding:0 9px;border:0;border-radius:7px;background:rgba(255,255,255,.07);color:#c7cfcc;font-size:10px}.video-prompt-tools>button:first-child:hover{background:rgba(112,212,198,.15);color:#c6f1eb}.video-reference-status{flex:1;color:#89928f;font-size:10px}.video-prompt-tools>button:last-child{width:26px;height:25px;border:0;border-radius:6px;background:transparent;color:#8d9694;font-size:15px}.video-prompt-tools>button:last-child:hover{background:rgba(255,255,255,.07);color:#e1e8e5}.video-generation-panel>textarea{width:100%;height:52px;min-height:52px;padding:9px 2px;resize:none;border:0;outline:0;background:transparent;color:#e6ece9;font-family:inherit;font-size:12px;line-height:1.65}.video-generation-panel>textarea::placeholder{color:#737d7b}.video-generation-controls{height:39px;display:flex;align-items:center;gap:7px;padding-top:7px;border-top:1px solid rgba(242,246,245,.08)}.video-generation-panel.is-expanded{min-height:240px}.video-generation-panel.is-expanded>textarea{height:116px}.video-model-select{flex:none}.video-model-select select{max-width:125px}.video-mode-wrap{position:relative;flex:none}.video-mode-trigger{max-width:150px}.video-size-trigger{max-width:230px}.video-mode-popover{position:absolute;z-index:44;left:0;bottom:37px;width:190px;padding:9px;border:1px solid rgba(242,246,245,.13);border-radius:12px;background:rgba(37,39,41,.99);box-shadow:0 18px 45px rgba(0,0,0,.5)}.video-mode-popover[hidden],.video-size-popover[hidden]{display:none}.video-mode-popover>strong{display:block;padding:5px 7px 9px;color:#818b88;font-size:10px;font-weight:500}.video-mode-popover>button{width:100%;min-height:33px;padding:0 8px;display:flex;align-items:center;border:0;border-radius:7px;background:transparent;color:#d0d7d5;text-align:left;font-size:11px}.video-mode-popover>button:hover:not(:disabled),.video-mode-popover>button.selected{background:#414547;color:#f1f4f2}.video-mode-popover>button:disabled{color:#606765;cursor:not-allowed;opacity:.55}.video-mode-popover>button small{margin-left:auto;color:#737d7a;font-size:8px}.video-size-popover{position:absolute;z-index:43;right:124px;bottom:55px;width:350px;max-height:min(540px,calc(100vh - 95px));padding:13px;overflow:auto;border:1px solid rgba(242,246,245,.13);border-radius:14px;background:rgba(37,39,41,.99);box-shadow:0 20px 55px rgba(0,0,0,.55)}.video-ratio-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.video-ratio-grid button{height:48px}.video-resolution-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.video-duration-section>div{display:flex;align-items:center;gap:10px}.video-duration-section input{min-width:0;flex:1;accent-color:#50c5db}.video-duration-section output{min-width:40px;padding:4px 8px;border-radius:6px;background:#292c2e;color:#d5ddda;font-size:10px;text-align:center}.video-audio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:760px){.video-generation-panel{max-width:calc(100vw - 20px);padding:9px}.video-generation-controls{gap:3px}.video-model-select select{max-width:82px;font-size:9px}.video-mode-trigger{max-width:110px}.video-size-trigger{max-width:150px;padding:0 5px;font-size:9px}.video-generation-panel .text-generate-button{min-width:58px;padding-left:6px}.video-size-popover{right:4px;width:min(350px,calc(100vw - 38px));bottom:53px}.video-mode-popover{left:auto;right:0}}
.audio-node-body{min-height:190px;display:grid;place-items:center}.audio-node-preview{width:100%;min-height:190px;display:grid;place-items:center}.audio-node-visual-icon{width:58px;height:58px;display:grid;place-items:center;border-radius:17px;background:rgba(112,212,198,.08);color:#687472}.audio-node-visual-icon svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8}.audio-generation-panel{position:absolute;z-index:28;min-height:138px;padding:11px 14px 10px;border:1px solid rgba(242,246,245,.12);border-radius:16px;background:rgba(35,37,39,.985);box-shadow:0 18px 48px rgba(0,0,0,.44)}.audio-generation-panel[hidden]{display:none}.audio-prompt-tools{height:25px;display:flex;align-items:center;gap:8px}.audio-prompt-tools>button{height:23px;padding:0 9px;border:0;border-radius:7px;background:rgba(255,255,255,.07);color:#c7cfcc;font-size:10px}.audio-prompt-tools>button:hover{background:rgba(112,212,198,.15);color:#c6f1eb}.audio-prompt-tools>span{flex:1;color:#737d7b;font-size:9px}.audio-generation-panel>textarea{width:100%;height:51px;min-height:51px;padding:8px 2px;resize:none;border:0;outline:0;background:transparent;color:#e6ece9;font-family:inherit;font-size:12px;line-height:1.65}.audio-generation-panel>textarea::placeholder{color:#737d7b}.audio-generation-controls{height:39px;display:flex;align-items:center;gap:8px;padding-top:6px;border-top:1px solid rgba(242,246,245,.08)}.audio-model-select select{width:132px;max-width:132px}.audio-param-trigger{max-width:180px}.audio-param-popover{position:absolute;z-index:44;right:260px;bottom:54px;width:350px;padding:13px;overflow:auto;border:1px solid rgba(242,246,245,.13);border-radius:14px;background:rgba(37,39,41,.99);box-shadow:0 20px 55px rgba(0,0,0,.55)}.audio-param-popover[hidden],.audio-advanced-settings[hidden]{display:none}.audio-language-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.audio-sample-grid,.audio-format-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.audio-advanced-trigger{width:31px;height:29px;flex:none;border:0;border-radius:7px;background:transparent;color:#b7c0bd;font-size:16px}.audio-advanced-trigger:hover,.audio-advanced-trigger[aria-expanded="true"]{background:rgba(255,255,255,.08);color:#e9efed}.audio-character-count{flex:none;color:#858d8b;font-size:10px;font-variant-numeric:tabular-nums}.audio-generation-note{flex:none;color:#858d8b;font-size:10px}.audio-generate-button{width:34px;min-width:34px;height:34px;padding:3px;flex:none;justify-content:center}.audio-generate-button b{width:27px;height:27px}.audio-advanced-settings{display:grid;gap:8px;margin-top:8px;padding-top:10px;border-top:1px solid rgba(242,246,245,.08)}.audio-advanced-settings>strong{color:#9da6a3;font-size:10px;font-weight:500}.audio-advanced-settings>label{display:grid;grid-template-columns:48px minmax(80px,1fr) 58px;align-items:center;gap:12px;color:#d1d8d5;font-size:11px}.audio-advanced-settings input{width:100%;accent-color:#50c5db}.audio-advanced-settings output{padding:5px 8px;border-radius:7px;background:#292c2e;color:#e0e6e4;font-size:11px;text-align:center;font-variant-numeric:tabular-nums}@media(max-width:760px){.audio-generation-panel{max-width:calc(100vw - 20px);padding:9px}.audio-generation-controls{gap:4px}.audio-model-select select{width:95px;max-width:95px;font-size:9px}.audio-param-trigger{max-width:130px;padding:0 5px;font-size:9px}.audio-character-count{font-size:9px}.audio-generation-note{display:none}.audio-param-popover{right:6px;width:min(350px,calc(100vw - 38px));bottom:52px}.audio-advanced-settings>label{grid-template-columns:42px minmax(70px,1fr) 50px;gap:7px}}

@media(max-width:760px){.audio-generation-controls{gap:2px}.audio-model-select select{width:75px;max-width:75px}.audio-param-trigger{max-width:105px}.audio-advanced-trigger{width:26px;padding:0}.audio-character-count{font-size:8px}.audio-generate-button{width:31px;min-width:31px}}

.script-node-body{min-height:285px;padding:18px 15px 16px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:20px}
.script-node-illustration{flex:1;min-height:68px;display:grid;place-items:center;color:#697170}
.script-node-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:rgba(255,255,255,.035);color:#6f7776}
.script-node-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.7}
.script-node-steps{width:min(100%,250px);display:flex;align-items:flex-start;justify-content:center}
.script-node-step{min-width:62px;display:grid;justify-items:center;gap:7px;color:#aeb6b3;text-align:center}
.script-node-step>span{width:25px;height:25px;display:grid;place-items:center;border:2px solid #c9d0ce;border-radius:50%;color:#e6ebe9;font-size:12px;font-weight:600}
.script-node-step>small{font-size:10px;white-space:nowrap}
.script-node-step-line{height:1px;flex:1;margin:12px 3px 0;background:rgba(227,234,231,.28)}
.script-generation-panel{position:absolute;z-index:28;min-height:150px;padding:11px 14px 10px;border:1px solid rgba(242,246,245,.12);border-radius:16px;background:rgba(35,37,39,.985);box-shadow:0 18px 48px rgba(0,0,0,.44)}
.script-generation-panel[hidden]{display:none}
.script-prompt-tools{height:25px;display:flex;align-items:center;justify-content:space-between;color:#89928f;font-size:10px}
.script-prompt-tools button{width:26px;height:25px;border:0;border-radius:6px;background:transparent;color:#8d9694;font-size:15px}
.script-prompt-tools button:hover{background:rgba(255,255,255,.07);color:#e1e8e5}
.script-generation-panel>textarea{width:100%;height:56px;min-height:56px;padding:8px 2px;resize:none;border:0;outline:0;background:transparent;color:#e6ece9;font-family:inherit;font-size:12px;line-height:1.65}
.script-generation-panel>textarea::placeholder{color:#737d7b}
.script-generation-controls{height:39px;display:flex;align-items:center;gap:9px;padding-top:6px;border-top:1px solid rgba(242,246,245,.08)}
.script-model-select select{max-width:160px}
.script-generation-panel .text-generate-button{flex:none}
.script-generation-panel.is-expanded{min-height:235px}
.script-generation-panel.is-expanded>textarea{height:140px}
@media(max-width:760px){.script-node-body{min-height:245px;padding:14px 11px}.script-node-step{min-width:54px}.script-node-step>small{font-size:9px}.script-generation-panel{max-width:calc(100vw - 20px);padding:9px}.script-generation-controls{gap:5px}.script-model-select select{max-width:105px;font-size:10px}.script-generation-panel .image-generation-note{font-size:8px}.script-generation-panel .text-generate-button{min-width:62px;padding-left:8px}}

.canvas-topbar{padding:0 20px}
.canvas-brandline{gap:10px}
.project-menu{position:relative;z-index:30}
.project-menu>summary{height:36px;padding:3px 5px 3px 3px;display:flex;align-items:center;gap:7px;border:1px solid rgba(242,246,245,.1);border-radius:10px;background:rgba(255,255,255,.045);cursor:pointer;list-style:none}
.project-menu>summary::-webkit-details-marker{display:none}
.project-menu .brand-mark img{width:19px;height:19px;object-fit:contain}
.project-menu>summary:hover,.project-menu[open]>summary{background:rgba(255,255,255,.09)}
.project-menu-chevron{color:#8d9794;font-size:12px;transition:transform .15s}
.project-menu[open] .project-menu-chevron{transform:rotate(180deg)}
.project-menu-dropdown{position:absolute;top:calc(100% + 9px);left:0;width:224px;padding:8px;border:1px solid rgba(242,246,245,.13);border-radius:13px;background:rgba(35,37,39,.99);box-shadow:0 18px 48px rgba(0,0,0,.46)}
.project-menu-dropdown>a,.project-menu-dropdown>button{width:100%;height:38px;padding:0 10px;display:flex;align-items:center;border:0;border-radius:8px;background:transparent;color:#d9dfdd;text-decoration:none;text-align:left;font-size:12px}
.project-menu-dropdown>a:hover,.project-menu-dropdown>button:hover{background:rgba(255,255,255,.07);color:#fff}
.project-menu-dropdown .save-state{display:block;height:auto;margin:2px 10px 7px;color:#7d8785;font-size:10px}
.project-menu-divider{height:1px;margin:5px 4px;background:rgba(242,246,245,.08)}
.project-menu-dropdown>button.project-menu-danger{color:#c18d87}
.project-menu-dropdown>button.project-menu-danger:hover{background:rgba(184,88,78,.1);color:#e4aaa2}
.canvas-node.material-node{width:300px;min-height:0;background:rgba(29,31,33,.98)}
.node-name-label{position:absolute;left:2px;top:-23px;z-index:2;max-width:calc(100% - 38px);overflow:hidden;color:#899291;font-size:11px;font-weight:500;text-overflow:ellipsis;white-space:nowrap;cursor:text;pointer-events:auto}
.node-title-input{width:min(250px,calc(100vw - 70px));height:25px;padding:2px 5px;border:1px solid rgba(112,212,198,.42);border-radius:5px;outline:0;background:#17191b;color:#e8efed;font:inherit}
.material-node .node-head{cursor:grab}
.material-node .node-upload-preview{padding:8px;border-radius:9px}
.material-preview-content{min-height:70px;display:grid;place-items:center;overflow:hidden;border-radius:6px;background:#141617}
.material-preview-content img,.material-preview-content video{display:block;width:100%;max-height:190px;object-fit:contain}
.material-preview-content audio{width:100%;height:38px}
.material-text-preview{width:100%;max-height:150px;margin:0;padding:9px;overflow:auto;color:#bfc8c5;font:10px/1.6 ui-monospace,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}
.node-upload-preview .material-metadata{padding:1px 1px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.canvas-viewport.is-file-dragging{outline:2px dashed rgba(112,212,198,.6);outline-offset:-10px;background-color:rgba(74,146,137,.07)!important}
.canvas-viewport.is-file-dragging:after{content:"松开以添加图片、视频、音频或文本素材";position:fixed;z-index:50;left:50%;top:76px;padding:10px 16px;transform:translateX(-50%);border:1px solid rgba(112,212,198,.35);border-radius:10px;background:rgba(28,37,37,.96);color:#c7f3ec;font-size:12px;pointer-events:none}
.canvas-title-wrap{display:block;min-width:0}
.project-name-input{width:min(260px,35vw);padding:5px 1px;border:0;outline:0;background:transparent;color:#e4eae8;font-size:13px;font-weight:600}
.project-name-input:focus{border-bottom:1px solid rgba(112,212,198,.55)}
.canvas-top-actions{gap:8px}
.canvas-credit-store{height:32px;padding:0 10px;display:flex;align-items:center;gap:6px;border:1px solid rgba(112,212,198,.27);border-radius:8px;background:rgba(73,156,146,.13);color:#c1ece5;font-size:11px;white-space:nowrap}
.canvas-credit-store:hover{border-color:rgba(112,212,198,.48);background:rgba(73,156,146,.22)}
.canvas-credit-store>span{width:17px;height:17px;display:grid;place-items:center;border-radius:50%;background:#46bfae;color:#11201e;font-size:15px;line-height:1}
.canvas-credit-store>strong{font-size:10px;font-weight:550}
.canvas-membership{height:32px;padding:0 10px;display:flex;align-items:center;gap:6px;border:1px solid rgba(112,212,198,.17);border-radius:8px;background:rgba(73,156,146,.11);color:#c1ece5;font-size:11px;white-space:nowrap}
.membership-gem{color:#8ee5da;font-size:12px}
.canvas-membership small{padding:2px 5px;border-radius:4px;background:rgba(222,103,92,.18);color:#edaaa2;font-size:9px}
.canvas-credit-balance{height:32px;padding:0 9px;display:flex;align-items:center;gap:5px;border:1px solid rgba(242,246,245,.1);border-radius:8px;background:rgba(255,255,255,.04);color:#e5e9e7;font-size:11px}
.credit-bolt{color:#e7c37e;font-size:15px}
.canvas-credit-balance strong{font-size:12px;font-variant-numeric:tabular-nums}
.canvas-credit-balance small{color:#858d8b;font-size:9px}
.canvas-user-avatar{width:32px;height:32px;display:grid;place-items:center;border:1px solid rgba(112,212,198,.32);border-radius:50%;background:linear-gradient(145deg,#425b56,#243532);color:#b8eee5}
.canvas-user-avatar svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}

.prompt-expand-scrim{position:absolute;z-index:60;inset:64px 0 70px;background:rgba(7,9,10,.48);backdrop-filter:blur(2px)}
.prompt-expand-scrim[hidden]{display:none}
.text-assistant-panel{min-height:184px}
.text-assistant-input{min-height:103px}
.text-assistant-input textarea{min-height:92px}
.image-generation-panel,.video-generation-panel,.audio-generation-panel,.script-generation-panel{min-height:184px}
.image-generation-panel>textarea,.video-generation-panel>textarea{height:72px;min-height:72px}
.audio-generation-panel>textarea,.script-generation-panel>textarea{height:72px;min-height:72px}
.text-assistant-panel.is-expanded:not([hidden]),.image-generation-panel.is-expanded:not([hidden]),.video-generation-panel.is-expanded:not([hidden]),.audio-generation-panel.is-expanded:not([hidden]),.script-generation-panel.is-expanded:not([hidden]){position:absolute;z-index:70;left:50%!important;top:50%!important;width:min(920px,calc(100vw - 56px))!important;height:min(74vh,760px);min-height:360px;max-height:calc(100vh - 104px);transform:translate(-50%,-50%);display:flex;flex-direction:column;padding:18px 22px 16px;transition:none}
.text-assistant-panel.is-expanded .text-assistant-input{min-height:0;flex:1}
.text-assistant-panel.is-expanded .text-assistant-input textarea{height:100%;min-height:0;flex:1;font-size:15px;line-height:1.8}
.text-assistant-panel.is-expanded .text-assistant-controls{flex:none;height:48px}
.image-generation-panel.is-expanded>textarea,.video-generation-panel.is-expanded>textarea,.audio-generation-panel.is-expanded>textarea,.script-generation-panel.is-expanded>textarea{height:auto;min-height:0;flex:1;padding:18px 3px;font-size:15px;line-height:1.8}
.image-generation-panel.is-expanded .image-generation-controls,.video-generation-panel.is-expanded .video-generation-controls,.audio-generation-panel.is-expanded .audio-generation-controls,.script-generation-panel.is-expanded .script-generation-controls{flex:none}
.image-generation-panel.is-expanded .image-prompt-tools,.video-generation-panel.is-expanded .video-prompt-tools,.audio-generation-panel.is-expanded .audio-prompt-tools,.script-generation-panel.is-expanded .script-prompt-tools{flex:none}
@media(max-width:760px){.canvas-topbar{padding:0 9px}.canvas-brandline{gap:6px}.project-name-input{width:min(150px,32vw);font-size:11px}.canvas-top-actions{gap:4px}.canvas-credit-store{height:28px;padding:0 6px;gap:4px;font-size:9px}.canvas-credit-store>strong{font-size:9px}.canvas-membership{height:28px;padding:0 6px;gap:4px;font-size:9px}.canvas-membership small{display:none}.canvas-credit-balance{height:28px;padding:0 5px;gap:3px;font-size:9px}.canvas-credit-balance strong{font-size:10px}.canvas-credit-balance small{display:none}.canvas-user-avatar{width:28px;height:28px}.text-assistant-panel.is-expanded:not([hidden]),.image-generation-panel.is-expanded:not([hidden]),.video-generation-panel.is-expanded:not([hidden]),.audio-generation-panel.is-expanded:not([hidden]),.script-generation-panel.is-expanded:not([hidden]){width:calc(100vw - 24px)!important;height:min(76vh,680px);min-height:300px;padding:13px 14px 12px}.prompt-expand-scrim{inset:58px 0 68px}}
.audio-prompt-tools>button:last-child{width:26px;height:25px;padding:0;border:0;border-radius:6px;background:transparent;color:#8d9694;font-size:15px}
.audio-prompt-tools>button:last-child:hover{background:rgba(255,255,255,.07);color:#e1e8e5}
@media(max-width:520px){.canvas-membership{padding:0 5px}.canvas-membership>span:not(.membership-gem){display:none}.canvas-membership .membership-gem{font-size:14px}.project-name-input{width:min(130px,30vw)}}

/* Connected canvas assets available from each module's prompt. */
.canvas-linked-references{height:48px;display:flex;align-items:center;gap:7px;margin:1px 0 3px;padding:2px 1px;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid rgba(242,246,245,.06);scrollbar-width:none;overscroll-behavior-x:contain}
.canvas-linked-references::-webkit-scrollbar{display:none}
.canvas-linked-references[hidden]{display:none!important}
.canvas-linked-reference{position:relative;width:38px;height:42px;flex:0 0 38px;padding:0;overflow:visible;border:1px solid rgba(242,246,245,.14);border-radius:7px;background:#292c2e;color:#c8d2ce;cursor:pointer;transition:border-color .15s,transform .15s}
.canvas-linked-reference:hover,.canvas-linked-reference.is-mentioned{border-color:rgba(104,220,205,.75);transform:translateY(-1px)}
.canvas-linked-reference-preview{width:100%;height:100%;display:grid;place-items:center;overflow:hidden;border-radius:6px;color:#9eaca8;font-size:15px}
.canvas-linked-reference-preview img{display:block;width:100%;height:100%;object-fit:cover}
.canvas-linked-reference>b{position:absolute;top:-5px;left:-5px;min-width:15px;height:15px;padding:0 4px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:#111415;color:#e5ece9;font-size:9px;line-height:13px;font-weight:600}
.canvas-linked-reference.is-mentioned>b{background:#55cbbd;color:#09201e;border-color:#8ce8dc}

/* Rich prompt input renders connected references as draggable, removable image chips. */
.canvas-prompt-editor{display:block;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;outline:none;color:#e6ece9;caret-color:#73d7ca;font-family:inherit;font-size:12px;line-height:1.65}
.canvas-prompt-editor:empty:before{content:attr(data-placeholder);color:#737d7b;pointer-events:none}
.canvas-prompt-editor:focus{outline:none}
.text-assistant-input .canvas-prompt-editor{width:100%;min-height:66px;flex:1;padding:8px 3px;resize:none}
.image-generation-panel>.canvas-prompt-editor,.video-generation-panel>.canvas-prompt-editor{width:100%;height:72px;min-height:72px;padding:9px 2px}
.audio-generation-panel>.canvas-prompt-editor{width:100%;height:51px;min-height:51px;padding:8px 2px}
.script-generation-panel>.canvas-prompt-editor{width:100%;height:72px;min-height:72px;padding:9px 2px}
.image-generation-panel.is-expanded>.canvas-prompt-editor,.video-generation-panel.is-expanded>.canvas-prompt-editor,.audio-generation-panel.is-expanded>.canvas-prompt-editor,.script-generation-panel.is-expanded>.canvas-prompt-editor{height:auto;min-height:0;flex:1;padding:18px 3px;font-size:15px;line-height:1.8}
.text-assistant-panel.is-expanded .text-assistant-input .canvas-prompt-editor{height:100%;min-height:0;flex:1;font-size:15px;line-height:1.8}
.canvas-prompt-editor.is-drop-target{outline:1px dashed rgba(104,220,205,.78);outline-offset:-3px;border-radius:7px;background:rgba(63,166,157,.08)}
.canvas-prompt-mention{position:relative;display:inline-flex;vertical-align:middle;align-items:center;width:29px;height:36px;margin:1px 3px;border:1px solid rgba(104,220,205,.4);border-radius:6px;background:#262a2b;user-select:none}
.canvas-prompt-mention-preview{width:100%;height:100%;display:grid;place-items:center;overflow:hidden;border-radius:5px;color:#aebbb7;font-size:13px}
.canvas-prompt-mention-preview img{display:block;width:100%;height:100%;object-fit:cover}
.canvas-prompt-mention>b{position:absolute;top:-5px;left:-5px;min-width:13px;height:13px;padding:0 3px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.2);border-radius:8px;background:#101314;color:#e7efec;font-size:8px;line-height:11px}
.canvas-prompt-mention-remove{position:absolute;z-index:2;top:-6px;right:-6px;width:14px;height:14px;padding:0;border:1px solid rgba(255,255,255,.3);border-radius:50%;background:#181c1d;color:#fff;font:12px/12px sans-serif;cursor:pointer;opacity:0;transition:opacity .12s}
.canvas-prompt-mention:hover .canvas-prompt-mention-remove,.canvas-prompt-mention:focus-within .canvas-prompt-mention-remove{opacity:1}
.canvas-linked-reference{cursor:grab}
.canvas-linked-reference:active{cursor:grabbing}
.canvas-reference-popover{position:fixed;z-index:240;width:236px;max-height:min(300px,calc(100vh - 24px));padding:8px;overflow:auto;border:1px solid rgba(242,246,245,.15);border-radius:12px;background:rgba(34,37,38,.99);box-shadow:0 16px 45px rgba(0,0,0,.55);color:#dbe2df}
.canvas-reference-popover[hidden]{display:none!important}
.canvas-reference-popover>strong{display:block;padding:4px 7px 8px;color:#929c99;font-size:10px;font-weight:500}
.canvas-reference-popover>p{margin:4px 7px 7px;color:#858e8c;font-size:11px}
.canvas-reference-option{position:relative;width:100%;height:43px;padding:3px 8px;display:flex;align-items:center;gap:9px;border:0;border-radius:7px;background:transparent;color:#dbe2df;text-align:left;font-size:11px;cursor:pointer}
.canvas-reference-option:hover,.canvas-reference-option.selected{background:rgba(255,255,255,.09)}
.canvas-reference-option-thumb{width:34px;height:34px;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(242,246,245,.12);border-radius:6px;background:#282c2d;color:#afc0ba;font-size:13px}
.canvas-reference-option-thumb img{width:100%;height:100%;object-fit:cover}
.canvas-reference-option>b{position:absolute;left:7px;top:2px;min-width:12px;height:12px;display:grid;place-items:center;border-radius:7px;background:#101314;color:#f2f6f4;font-size:8px}
@media(max-width:760px){.canvas-reference-popover{width:min(236px,calc(100vw - 20px))}.canvas-prompt-mention{width:26px;height:32px}}
