.env-banner[data-v-16a48378]{height:var(--env-banner-height);z-index:200;color:#fff;font-family:var(--font-title);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;pointer-events:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-weight:700;display:flex;position:fixed;top:0;left:0;right:0}.env-banner--red[data-v-16a48378]{background:#ff0c00}.env-banner--purple[data-v-16a48378]{background:#8b5cf6}.landing-page[data-v-3601f9ec]{min-height:var(--app-height);background:linear-gradient(135deg, var(--color-surface-soft), #e2e8f0);color:var(--color-secondary);place-items:center;padding:2rem;display:grid}.landing-card[data-v-3601f9ec]{border-radius:var(--radius-card);background:var(--color-surface);width:min(100%,420px);box-shadow:var(--shadow-card);text-align:center;padding:2rem}.landing-card h1[data-v-3601f9ec]{color:var(--color-secondary);margin:0 0 .75rem}.landing-card p[data-v-3601f9ec]{color:var(--color-text-muted);margin:0 0 1.25rem}.landing-button[data-v-3601f9ec]{background:var(--color-primary);color:var(--color-primary-contrast);border-radius:999px;padding:.8rem 1.25rem;font-weight:600;text-decoration:none;display:inline-block}.landing-actions[data-v-3601f9ec]{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.builder-header[data-v-b2977705]{top:var(--env-banner-height);height:var(--header-height);justify-content:space-between;align-items:center;gap:var(--space-6);padding:0 var(--space-7);background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:22;display:flex;position:fixed;left:0;right:0}.header-left[data-v-b2977705],.header-right[data-v-b2977705]{align-items:center;gap:var(--space-4);min-width:0;display:flex}.header-btn[data-v-b2977705]{border:1px solid var(--border);background:0 0;text-decoration:none}.header-btn[data-v-b2977705]:hover,.header-btn.is-active[data-v-b2977705]{background:var(--bg-element)}.header-sep[data-v-b2977705]{height:32px;margin:0 var(--space-2)}.name-input[data-v-b2977705]{width:220px}.header-action[data-v-b2977705]{height:36px}.workflows-wrap[data-v-b2977705]{position:relative}.workflows-dropdown[data-v-b2977705]{gap:var(--space-3);width:260px;box-shadow:var(--shadow-md);z-index:30;flex-direction:column;display:flex;position:absolute;top:calc(100% + 8px);right:0}.workflow-load[data-v-b2977705]{cursor:pointer;font-family:inherit;font-size:var(--text-sm);text-align:left;background:0 0;border:none;padding:0}.theme-icon-enter-active[data-v-b2977705],.theme-icon-leave-active[data-v-b2977705]{transition:opacity var(--transition), transform var(--transition)}.theme-icon-enter-from[data-v-b2977705]{opacity:0;transform:rotate(-90deg)scale(.6)}.theme-icon-leave-to[data-v-b2977705]{opacity:0;transform:rotate(90deg)scale(.6)}.builder-left-sidebar[data-v-2d033037]{top:var(--content-top);width:var(--sidebar-left-width);background:var(--bg-surface);border-right:1px solid var(--border);z-index:21;flex-direction:column;display:flex;position:fixed;bottom:0;left:0}.panel-content[data-v-2d033037]{padding:var(--space-5);flex:1}.panel-heading[data-v-2d033037]{padding:var(--space-2) 0 var(--space-2);color:var(--text);display:block}.module-row[data-v-2d033037]{cursor:grab}.module-row[data-v-2d033037]:active{cursor:grabbing}.element-form[data-v-2d033037]{gap:var(--space-3);padding:var(--space-4);background:var(--bg-inset);border-radius:var(--radius-sm);flex-direction:column;display:flex}.form-actions[data-v-2d033037]{justify-content:flex-end;gap:var(--space-2);display:flex}.builder-right-sidebar[data-v-c70eb855]{top:var(--content-top);width:var(--sidebar-right-width);background:var(--bg-surface);border-left:1px solid var(--border);z-index:21;flex-direction:column;display:flex;position:fixed;bottom:0;right:0}.panel-content[data-v-c70eb855]{padding:var(--space-5);flex:1}.panel-heading[data-v-c70eb855]{color:var(--text);display:block}.selected-note[data-v-c70eb855]{align-items:center;gap:var(--space-3);display:flex}.custom-field-row[data-v-c70eb855]{align-items:center;gap:var(--space-2);display:flex}.module-node[data-v-6b0e839b]{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-md);min-width:190px;max-width:240px;padding:var(--space-4) var(--space-5);gap:var(--space-3);box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;display:flex}.module-node.is-selected[data-v-6b0e839b]{border-color:var(--accent-strong);box-shadow:var(--focus-ring)}.module-node-header[data-v-6b0e839b]{align-items:center;gap:var(--space-4);min-width:0;display:flex}.module-node-icon[data-v-6b0e839b]{background:var(--accent-soft);width:30px;height:30px;color:var(--accent-strong);border-radius:var(--radius-sm);font-size:var(--text-sm);flex-shrink:0;justify-content:center;align-items:center;display:flex}.module-node.is-custom .module-node-icon[data-v-6b0e839b]{background:var(--warning-soft);color:var(--warning)}.module-node-titles[data-v-6b0e839b]{flex-direction:column;min-width:0;display:flex}.module-node-title[data-v-6b0e839b]{color:var(--text-strong);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.module-node-sub[data-v-6b0e839b]{color:var(--text-muted);font-size:var(--text-2xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.module-node-meta[data-v-6b0e839b]{align-items:center;gap:var(--space-3);color:var(--text-muted);font-size:var(--text-2xs);display:flex}.module-node-handle[data-v-6b0e839b]{background:var(--accent);border:2px solid var(--bg-surface);width:10px;height:10px}.vue-flow{z-index:0;direction:ltr;width:100%;height:100%;position:relative;overflow:hidden}.vue-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.vue-flow__pane{z-index:1}.vue-flow__pane.draggable{cursor:grab}.vue-flow__pane.selection{cursor:pointer}.vue-flow__pane.dragging{cursor:grabbing}.vue-flow__transformationpane{transform-origin:0 0;z-index:2;pointer-events:none}.vue-flow__viewport{z-index:4;overflow:clip}.vue-flow__selection{z-index:6}.vue-flow__edge-labels{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible{outline:none}.vue-flow .vue-flow__edges{pointer-events:none;overflow:visible}.vue-flow__edge-path,.vue-flow__connection-path{stroke:#b1b1b7;stroke-width:1px;fill:none}.vue-flow__edge{pointer-events:visibleStroke;cursor:pointer}.vue-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.vue-flow__edge.animated path.vue-flow__edge-interaction{stroke-dasharray:none;animation:none}.vue-flow__edge.inactive{pointer-events:none}.vue-flow__edge.selected,.vue-flow__edge:focus,.vue-flow__edge:focus-visible{outline:none}.vue-flow__edge.selected .vue-flow__edge-path,.vue-flow__edge:focus .vue-flow__edge-path,.vue-flow__edge:focus-visible .vue-flow__edge-path{stroke:#555}.vue-flow__edge-textwrapper{pointer-events:all}.vue-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.vue-flow__connection{pointer-events:none}.vue-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.vue-flow__connectionline{z-index:1001}.vue-flow__nodes{pointer-events:none;transform-origin:0 0}.vue-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.vue-flow__node.draggable{cursor:grab;pointer-events:all}.vue-flow__node.draggable.dragging{cursor:grabbing}.vue-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.vue-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.vue-flow__nodesselection-rect.dragging{cursor:grabbing}.vue-flow__handle{pointer-events:none;min-width:5px;min-height:5px;position:absolute}.vue-flow__handle.connectable{pointer-events:all;cursor:crosshair}.vue-flow__handle-bottom{bottom:0;left:50%;transform:translate(-50%,50%)}.vue-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.vue-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.vue-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.vue-flow__edgeupdater{cursor:move;pointer-events:all}.vue-flow__panel{z-index:5;margin:15px;position:absolute}.vue-flow__panel.top{top:0}.vue-flow__panel.bottom{bottom:0}.vue-flow__panel.left{left:0}.vue-flow__panel.right{right:0}.vue-flow__panel.center{left:50%;transform:translate(-50%)}@keyframes dashdraw{0%{stroke-dashoffset:10px}}:root{--vf-node-bg:#fff;--vf-node-text:#222;--vf-connection-path:#b1b1b7;--vf-handle:#555}.vue-flow__edge.updating .vue-flow__edge-path{stroke:#777}.vue-flow__edge-text{font-size:10px}.vue-flow__edge-textbg{fill:#fff}.vue-flow__connection-path{stroke:var(--vf-connection-path)}.vue-flow__node{cursor:grab}.vue-flow__node.selectable:focus,.vue-flow__node.selectable:focus-visible{outline:none}.vue-flow__node-default,.vue-flow__node-input,.vue-flow__node-output{text-align:center;width:150px;color:var(--vf-node-text);background-color:var(--vf-node-bg);border-style:solid;border-width:1px;border-color:var(--vf-node-color);border-radius:3px;padding:10px;font-size:12px}.vue-flow__node-default.selected,.vue-flow__node-default.selected:hover,.vue-flow__node-input.selected,.vue-flow__node-input.selected:hover,.vue-flow__node-output.selected,.vue-flow__node-output.selected:hover{box-shadow:0 0 0 .5px var(--vf-box-shadow)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible,.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible,.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{border:1px solid #555;outline:none}.vue-flow__node-default .vue-flow__handle,.vue-flow__node-input .vue-flow__handle,.vue-flow__node-output .vue-flow__handle{background:var(--vf-handle)}.vue-flow__node-default.selectable:hover,.vue-flow__node-input.selectable:hover,.vue-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.vue-flow__node-input{--vf-node-color:var(--vf-node-color,#0041d0);--vf-handle:var(--vf-node-color,#0041d0);--vf-box-shadow:var(--vf-node-color,#0041d0);background:var(--vf-node-bg);border-color:var(--vf-node-color,#0041d0)}.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible{border:1px solid var(--vf-node-color,#0041d0);outline:none}.vue-flow__node-default{--vf-handle:var(--vf-node-color,#1a192b);--vf-box-shadow:var(--vf-node-color,#1a192b);background:var(--vf-node-bg);border-color:var(--vf-node-color,#1a192b)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible{border:1px solid var(--vf-node-color,#1a192b);outline:none}.vue-flow__node-output{--vf-handle:var(--vf-node-color,#ff0072);--vf-box-shadow:var(--vf-node-color,#ff0072);background:var(--vf-node-bg);border-color:var(--vf-node-color,#ff0072)}.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{border:1px solid var(--vf-node-color,#ff0072);outline:none}.vue-flow__nodesselection-rect,.vue-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible,.vue-flow__selection:focus,.vue-flow__selection:focus-visible{outline:none}.vue-flow__handle{background:var(--vf-handle);border:1px solid #fff;border-radius:100%;width:6px;height:6px}.builder-canvas[data-v-37da7bc9]{background:var(--bg-app);width:100%;height:100%;position:relative}.canvas-empty[data-v-37da7bc9]{justify-content:center;align-items:center;gap:var(--space-3);pointer-events:none;text-align:center;padding:var(--space-8);flex-direction:column;display:flex;position:absolute;inset:0}.canvas-empty i[data-v-37da7bc9]{color:var(--text-faint);margin-bottom:var(--space-3);font-size:2rem}.builder-canvas .vue-flow__edge-path{stroke:var(--border-strong);stroke-width:2px}.builder-canvas .vue-flow__edge.selected .vue-flow__edge-path,.builder-canvas .vue-flow__edge:hover .vue-flow__edge-path{stroke:var(--accent-strong)}.builder-canvas .vue-flow__arrowhead polyline{stroke:var(--border-strong);fill:var(--border-strong)}.builder-canvas .vue-flow__connection-path{stroke:var(--accent-strong);stroke-width:2px}.builder-canvas .vue-flow__handle{background:var(--accent);border:2px solid var(--bg-surface);width:10px;height:10px}.builder-canvas .vue-flow__node{cursor:grab}.builder-canvas .vue-flow__node:active{cursor:grabbing}.builder-layout[data-v-96dd5359]{min-height:var(--app-height);--sidebar-left-width:260px;--sidebar-right-width:300px}.builder-main[data-v-96dd5359]{top:var(--content-top);left:var(--sidebar-left-width);right:var(--sidebar-right-width);position:fixed;bottom:0;overflow:hidden}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-Dm3htQBi.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-app:#0b0f14;--bg-surface:#11161e;--bg-elevated:#161d28;--bg-inset:#131a25;--bg-element:#1d2533;--bg-element-hover:#243044;--border:#1d2533;--border-strong:#2a3a52;--border-dashed:#263042;--text-strong:#fff;--text:#9aafc4;--text-muted:#4a5e7a;--text-faint:#2e3f56;--accent:#357591;--accent-strong:#4596b8;--accent-contrast:#fff;--accent-soft:#3575912e;--danger:#e05555;--danger-soft:#dc323229;--success:#3fa374;--success-soft:#3fa37429;--warning:#d9a03f;--warning-soft:#d9a03f29;--mask-red:#e05555;--mask-blue:#4a8fe0;--mask-green:#3fa374;--mask-yellow:#d9c33f;--font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, "Cascadia Code", "Segoe UI Mono", Consolas, monospace;--font-title:"Space Grotesk Variable", "Space Grotesk", var(--font-sans);--brand-wordmark:#00acff;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.875rem;--text-lg:1rem;--text-xl:1.25rem;--space-1:.125rem;--space-2:.25rem;--space-3:.375rem;--space-4:.5rem;--space-5:.75rem;--space-6:1rem;--space-7:1.25rem;--space-8:1.5rem;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-full:999px;--shadow-sm:0 2px 8px #0006;--shadow-md:0 6px 20px #00000073;--shadow-lg:0 16px 40px #00000080;--transition-fast:.15s ease;--transition:.2s ease;--focus-ring:0 0 0 2px #4596b873;--header-height:64px;--footer-height:56px;--env-banner-height:0px;--app-height:calc(100vh - var(--env-banner-height));--content-top:calc(var(--env-banner-height) + var(--header-height));--color-bg:var(--bg-app);--color-bg-soft:#111827;--color-surface:#fff;--color-surface-soft:#f8fafc;--color-text:#f8fafc;--color-text-muted:#94a3b8;--color-primary:#2563eb;--color-primary-contrast:#fff;--color-secondary:#111827;--shadow-card:0 16px 40px #0f172a29;--radius-card:20px}[data-theme=light]{--bg-app:#eef1f5;--bg-surface:#fff;--bg-elevated:#fff;--bg-inset:#f1f4f8;--bg-element:#e8edf3;--bg-element-hover:#dde4ee;--border:#dde4ee;--border-strong:#c3cedd;--border-dashed:#cdd7e4;--text-strong:#101828;--text:#3b4a5e;--text-muted:#6a7c93;--text-faint:#9aa9bc;--accent:#2f7ea1;--accent-strong:#256a89;--accent-soft:#2f7ea124;--brand-wordmark:#003757;--shadow-sm:0 2px 8px #10182814;--shadow-md:0 6px 20px #1018281a;--shadow-lg:0 16px 40px #10182824}.ds-panel{gap:var(--space-5);flex-direction:column;display:flex}.ds-section{gap:var(--space-3);flex-direction:column;display:flex}.ds-panel--cards{gap:var(--space-4)}.ds-panel--cards>.ds-divider{display:none}.ds-panel--cards>.ds-section{padding:var(--space-5);background:var(--bg-elevated);border:1px solid var(--border);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);border-radius:14px}.ds-panel--cards>.ds-section:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.ds-card{padding:var(--space-6);background:var(--bg-elevated);border:1px solid var(--border);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);border-radius:14px}.ds-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.ds-card-label{color:var(--accent-strong);letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:750}.ds-section-header{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;min-height:22px;display:flex}.ds-divider{background:var(--border);flex-shrink:0;height:1px}.ds-divider--v{align-self:stretch;width:1px;height:auto}.ds-collapsible-toggle{align-items:center;gap:var(--space-2);min-width:0;padding:var(--space-3) 0;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;font-family:inherit;display:flex}.ds-collapsible-chevron{color:var(--text-muted);font-size:var(--text-2xs);text-align:center;width:12px;transition:transform var(--transition-fast);flex-shrink:0}.ds-collapsible-chevron.is-collapsed{transform:rotate(-90deg)}.ds-title{color:var(--text-strong);font-size:var(--text-md);margin:0;font-weight:600}.ds-label{color:var(--text-muted);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.ds-sublabel{color:var(--text-muted);font-size:var(--text-xs)}.ds-text{color:var(--text);font-size:var(--text-sm)}.ds-meta{color:var(--text-muted);font-size:var(--text-2xs)}.ds-btn{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);background:var(--bg-element);border-radius:var(--radius-sm);color:var(--text);font-family:inherit;font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;font-weight:500;display:inline-flex}.ds-btn:hover{background:var(--bg-element-hover);color:var(--text-strong)}.ds-btn:disabled{opacity:.45;cursor:not-allowed}.ds-btn--primary{background:var(--accent);color:var(--accent-contrast)}.ds-btn--primary:hover{background:var(--accent-strong);color:var(--accent-contrast)}.ds-btn--ghost{background:0 0}.ds-btn--ghost:hover{background:var(--bg-element)}.ds-btn--danger:hover{background:var(--danger-soft);color:var(--danger)}.ds-btn--block{width:100%}.ds-btn--sm{padding:var(--space-2) var(--space-4);font-size:var(--text-xs)}.ds-icon-btn{background:var(--bg-element);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ds-icon-btn:hover,.ds-icon-btn.is-active{background:var(--bg-element-hover);color:var(--text-strong)}.ds-icon-btn:disabled{opacity:.45;cursor:not-allowed}.ds-icon-btn--ghost{background:0 0}.ds-icon-btn--ghost:hover{background:var(--bg-element)}.ds-icon-btn--sm{border-radius:var(--radius-xs);width:22px;height:22px;font-size:.7rem}.ds-icon-btn--lg{border-radius:var(--radius-md);width:36px;height:36px;font-size:var(--text-md)}.ds-icon-btn--danger:hover{background:var(--bg-element-hover);color:var(--danger)}.ds-icon-btn--ghost.ds-icon-btn--danger:hover{background:var(--bg-element)}.ds-input,.ds-select,.ds-textarea{background:var(--bg-element);border-radius:var(--radius-sm);width:100%;color:var(--text);font-family:inherit;font-size:var(--text-sm);padding:var(--space-3) var(--space-4);transition:border-color var(--transition-fast), background var(--transition-fast);border:1px solid #0000;outline:none}.ds-input::placeholder,.ds-textarea::placeholder{color:var(--text-faint)}.ds-input:hover,.ds-select:hover,.ds-textarea:hover{background:var(--bg-element-hover)}.ds-input:focus,.ds-select:focus,.ds-textarea:focus{border-color:var(--accent);background:var(--bg-element)}.ds-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%234a5e7a' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-4) center;padding-right:calc(var(--space-4) * 2 + 10px)}.ds-select option{background:var(--bg-elevated);color:var(--text)}.ds-textarea{resize:none;min-height:64px;line-height:1.45}input:-webkit-autofill{transition:background-color 0s 600000s, color 0s 600000s, border-color var(--transition-fast);-webkit-text-fill-color:var(--text);caret-color:var(--text)}input:-webkit-autofill:hover{transition:background-color 0s 600000s, color 0s 600000s, border-color var(--transition-fast);-webkit-text-fill-color:var(--text);caret-color:var(--text)}input:-webkit-autofill:focus{transition:background-color 0s 600000s, color 0s 600000s, border-color var(--transition-fast);-webkit-text-fill-color:var(--text);caret-color:var(--text)}input:-webkit-autofill:active{transition:background-color 0s 600000s, color 0s 600000s, border-color var(--transition-fast);-webkit-text-fill-color:var(--text);caret-color:var(--text)}textarea:-webkit-autofill{transition:background-color 0s 600000s, color 0s 600000s, border-color var(--transition-fast);-webkit-text-fill-color:var(--text);caret-color:var(--text)}select:-webkit-autofill{transition:background-color 0s 600000s, color 0s 600000s, border-color var(--transition-fast);-webkit-text-fill-color:var(--text);caret-color:var(--text)}:is(input:autofill,textarea:autofill,select:autofill){transition:background-color 0s 600000s, color 0s 600000s, border-color var(--transition-fast);-webkit-text-fill-color:var(--text);caret-color:var(--text);filter:none}.ds-input:-webkit-autofill{box-shadow:0 0 0 1000px var(--bg-element) inset}.ds-input:-webkit-autofill:focus{box-shadow:0 0 0 1000px var(--bg-element) inset}.ds-select:-webkit-autofill{box-shadow:0 0 0 1000px var(--bg-element) inset}.ds-textarea:-webkit-autofill{box-shadow:0 0 0 1000px var(--bg-element) inset}:-webkit-any(.ds-input:-webkit-autofill:hover,.ds-select:-webkit-autofill:hover,.ds-textarea:-webkit-autofill:hover){box-shadow:0 0 0 1000px var(--bg-element-hover) inset}:is(.ds-input:autofill:hover,.ds-select:autofill:hover,.ds-textarea:autofill:hover){box-shadow:0 0 0 1000px var(--bg-element-hover) inset}.ds-input-group{align-items:center;gap:var(--space-2);background:var(--bg-element);border-radius:var(--radius-sm);min-width:0;padding:var(--space-2) var(--space-4);transition:border-color var(--transition-fast);border:1px solid #0000;flex:1;display:flex}.ds-input-group:focus-within{border-color:var(--accent)}.ds-input-group .ds-input-affix{color:var(--text-muted);font-size:var(--text-xs);flex-shrink:0}.ds-input-group input{width:0;min-width:0;color:var(--text);font-family:inherit;font-size:var(--text-sm);padding:var(--space-1) 0;background:0 0;border:none;outline:none;flex:1}.ds-input-group input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ds-input-group input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ds-input-group input[type=number]{-moz-appearance:textfield}.ds-slider{appearance:none;background:var(--bg-element);border-radius:var(--radius-full);cursor:pointer;outline:none;width:100%;height:4px}.ds-slider::-webkit-slider-thumb{appearance:none;background:var(--accent-strong);cursor:pointer;width:12px;height:12px;transition:transform var(--transition-fast);border:none;border-radius:50%}.ds-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.ds-slider::-moz-range-thumb{background:var(--accent-strong);cursor:pointer;border:none;border-radius:50%;width:12px;height:12px}.ds-slider::-moz-range-track{background:var(--bg-element);border-radius:var(--radius-full);height:4px}.ds-slider-row{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.ds-slider-value{color:var(--text);font-size:var(--text-xs);font-variant-numeric:tabular-nums;text-align:right;min-width:36px}.ds-checkbox{align-items:center;gap:var(--space-3);color:var(--text-muted);font-size:var(--text-xs);cursor:pointer;-webkit-user-select:none;user-select:none;display:flex}.ds-checkbox:hover{color:var(--text)}.ds-checkbox input{appearance:none;background:var(--bg-element);border:1px solid var(--border-strong);border-radius:var(--radius-xs);cursor:pointer;width:14px;height:14px;transition:background var(--transition-fast), border-color var(--transition-fast);flex-shrink:0;place-content:center;margin:0;display:grid}.ds-checkbox input:checked{background:var(--accent);border-color:var(--accent)}.ds-checkbox input:checked:before{content:"";background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M1 4.2 3.2 6.4 7 1.6' stroke='white' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50%/contain no-repeat;width:8px;height:8px}.ds-switch{background:var(--bg-element);border-radius:var(--radius-full);cursor:pointer;width:34px;height:20px;transition:background var(--transition);border:none;flex-shrink:0;padding:0;position:relative}.ds-switch.is-on{background:var(--accent)}.ds-switch-thumb{width:14px;height:14px;transition:transform var(--transition);pointer-events:none;background:#fff;border-radius:50%;position:absolute;top:3px;left:3px}.ds-switch.is-on .ds-switch-thumb{transform:translate(14px)}.ds-segmented{background:var(--bg-element);border-radius:var(--radius-sm);gap:2px;padding:2px;display:flex}.ds-segmented-btn{padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);white-space:nowrap;background:0 0;border:none;flex:1}.ds-segmented-btn:hover{color:var(--text)}.ds-segmented-btn.is-active{background:var(--bg-element-hover);color:var(--text-strong)}.ds-tabs{gap:var(--space-2);border-bottom:1px solid var(--border);display:flex}.ds-tab{padding:var(--space-3) var(--space-4);color:var(--text-muted);font-family:inherit;font-size:var(--text-sm);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px}.ds-tab:hover{color:var(--text)}.ds-tab.is-active{color:var(--text-strong);border-bottom-color:var(--accent-strong)}.ds-option-grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.ds-option-grid--2{grid-template-columns:repeat(2,1fr)}.ds-option-grid--4{grid-template-columns:repeat(4,1fr)}.ds-option-btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--bg-element);border-radius:var(--radius-sm);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);border:1px solid #0000;flex-direction:column;display:flex}.ds-option-btn:hover{background:var(--bg-element-hover);color:var(--text)}.ds-option-btn.is-active{background:var(--bg-element-hover);border-color:var(--accent);color:var(--text-strong)}.ds-chip{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-4);background:var(--bg-element);border-radius:var(--radius-full);color:var(--text);font-size:var(--text-xs);white-space:nowrap;max-width:100%;display:inline-flex}.ds-chip>span{text-overflow:ellipsis;overflow:hidden}.ds-chip--accent{background:var(--accent-soft);color:var(--accent-strong)}.ds-chip-remove{width:14px;height:14px;color:inherit;cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:.6rem;display:inline-flex}.ds-chip-remove:hover{opacity:1}.ds-chip-list{gap:var(--space-2);flex-wrap:wrap;display:flex}.ds-badge{padding:var(--space-1) var(--space-4);background:var(--bg-element);border-radius:var(--radius-full);color:var(--text);font-size:var(--text-xs);align-items:center;font-weight:500;display:inline-flex}.ds-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4)}.ds-row{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-3) var(--space-2);border-radius:var(--radius-sm);flex-wrap:wrap;min-width:0;display:flex}.ds-row--hover:hover{background:var(--bg-element)}.ds-row-main{align-items:center;gap:var(--space-4);min-width:0;color:var(--text);font-size:var(--text-sm);display:flex}.ds-row-main i{color:var(--text-muted);text-align:center;flex-shrink:0;width:14px}.ds-row-actions{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.ds-list{gap:var(--space-1);flex-direction:column;display:flex}.ds-upload-zone{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);border:1px dashed var(--border-dashed);border-radius:var(--radius-sm);color:var(--text-faint);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast);text-align:center;flex-direction:column;display:flex}.ds-upload-zone:hover{border-color:var(--accent);color:var(--text-muted);background:var(--accent-soft)}.ds-upload-zone i{font-size:var(--text-xl)}.ds-upload-zone--compact{padding:var(--space-4);flex-direction:row}.ds-upload-zone--compact i{font-size:var(--text-md)}.ds-hint{color:var(--text-faint);font-size:var(--text-xs);padding:var(--space-4);border:1px dashed var(--border-dashed);border-radius:var(--radius-sm);text-align:center}.ds-note{color:var(--text-muted);font-size:var(--text-xs);padding:var(--space-3) var(--space-4);background:var(--bg-inset);border-radius:var(--radius-sm);line-height:1.4}.ds-note--accent{background:var(--accent-soft);color:var(--accent-strong)}.ds-field-error{color:var(--danger);font-size:var(--text-xs)}.ds-toolbar{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.ds-toolbar-group{align-items:center;gap:var(--space-2);display:flex}.ds-toolbar-sep{background:var(--border);width:1px;height:20px;margin:0 var(--space-2)}.ds-swatch-row{gap:var(--space-3);display:flex}.ds-swatch{border-radius:var(--radius-xs);cursor:pointer;width:22px;height:22px;transition:transform var(--transition-fast), border-color var(--transition-fast);border:2px solid #0000;padding:0}.ds-swatch:hover{transform:scale(1.1)}.ds-swatch.is-active{border-color:var(--text-strong)}.ds-scroll{min-height:0;overflow:hidden auto}.ds-toast-host{right:var(--space-6);bottom:calc(var(--footer-height) + var(--space-6));gap:var(--space-3);z-index:100;pointer-events:none;flex-direction:column;display:flex;position:fixed}.ds-toast{align-items:center;gap:var(--space-4);min-width:220px;max-width:340px;padding:var(--space-4) var(--space-5);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);color:var(--text);font-size:var(--text-sm);pointer-events:auto;cursor:pointer;display:flex}.ds-toast i{font-size:var(--text-sm);flex-shrink:0}.ds-toast--success i{color:var(--success)}.ds-toast--error i{color:var(--danger)}.ds-toast--info i{color:var(--accent-strong)}.ds-toast-enter-active,.ds-toast-leave-active{transition:opacity var(--transition), transform var(--transition)}.ds-toast-enter-from,.ds-toast-leave-to{opacity:0;transform:translate(16px)}.ds-zoomable{cursor:zoom-in}.ds-media{position:relative}.ds-media-actions{top:var(--space-2);right:var(--space-2);gap:var(--space-2);opacity:0;transition:opacity var(--transition-fast);z-index:1;display:flex;position:absolute}.ds-media:hover .ds-media-actions,.ds-media:focus-within .ds-media-actions{opacity:1}.ds-lightbox{top:var(--env-banner-height);-webkit-backdrop-filter:blur(8px);z-index:90;background:#080a0ed1;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.ds-lightbox-top{justify-content:space-between;align-items:center;gap:var(--space-5);padding:var(--space-4) var(--space-5);flex-shrink:0;display:flex}.ds-lightbox-info{align-items:baseline;gap:var(--space-4);min-width:0;display:flex}.ds-lightbox-title{color:#ffffffeb;font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.ds-lightbox-meta{color:#ffffff8c;font-size:var(--text-xs);font-variant-numeric:tabular-nums;flex-shrink:0}.ds-lightbox-actions{gap:var(--space-2);flex-shrink:0;display:flex}.ds-lightbox-btn{border-radius:var(--radius-md);color:#ffffffd9;width:36px;height:36px;font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:#ffffff14;border:none;justify-content:center;align-items:center;display:inline-flex}.ds-lightbox-btn:hover{color:#fff;background:#ffffff2e}.ds-lightbox-stage{min-height:0;margin:0 var(--space-6) var(--space-6);cursor:zoom-out;flex:1;position:relative}.ds-lightbox-img{object-fit:contain;border-radius:var(--radius-md);width:100%;height:100%;box-shadow:var(--shadow-lg);cursor:default;transition:transform var(--transition)}.ds-lightbox-enter-active,.ds-lightbox-leave-active{transition:opacity var(--transition)}.ds-lightbox-enter-from,.ds-lightbox-leave-to{opacity:0}.ds-lightbox-enter-from .ds-lightbox-img,.ds-lightbox-leave-to .ds-lightbox-img{transform:scale(.96)}.ds-progress{background:var(--bg-element);border-radius:var(--radius-full);width:100%;height:4px;overflow:hidden}.ds-progress-bar{background:var(--accent-strong);border-radius:var(--radius-full);height:100%;transition:width .2s}.ds-busy{position:relative}.ds-busy>:not(.ds-busy-shimmer){opacity:.45;filter:grayscale(.4);pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity var(--transition)}.ds-busy-shimmer{inset:calc(-1 * var(--space-2));z-index:5;border-radius:var(--radius-md);pointer-events:all;position:absolute;overflow:hidden}.ds-busy-shimmer:after{content:"";background:linear-gradient(100deg,#0000 30%,#ffffff1f 50%,#0000 70%);animation:1.4s infinite ds-shimmer;position:absolute;inset:0}[data-theme=light] .ds-busy-shimmer:after{background:linear-gradient(100deg,#0000 30%,#1018280f 50%,#0000 70%)}.ds-skeleton{background:var(--bg-element);border-radius:var(--radius-sm);position:relative;overflow:hidden}.ds-skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff0f,#0000);animation:1.4s infinite ds-shimmer;position:absolute;inset:0}@keyframes ds-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.ds-locked{pointer-events:none;-webkit-user-select:none;user-select:none}.ds-locked>*{opacity:.45;filter:grayscale(.4);transition:opacity var(--transition)}.ds-spinner{border:2px solid var(--bg-element-hover);border-top-color:var(--accent-strong);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.7s linear infinite ds-spin}@keyframes ds-spin{to{transform:rotate(360deg)}}.ds-btn:focus-visible,.ds-icon-btn:focus-visible,.ds-lightbox-btn:focus-visible,.ds-segmented-btn:focus-visible,.ds-option-btn:focus-visible,.ds-tab:focus-visible,.ds-switch:focus-visible,.ds-swatch:focus-visible,.ds-slider:focus-visible,.ds-input:focus-visible,.ds-select:focus-visible,.ds-textarea:focus-visible,.ds-upload-zone:focus-visible{box-shadow:var(--focus-ring);outline:none}:root{background-color:var(--color-bg)}html,body,#app{width:100%;min-height:100%;font-family:var(--font-sans);background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;padding:0;line-height:1.5}#app{padding-top:var(--env-banner-height)}*,:before,:after{box-sizing:border-box}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0;margin:8px 0}::-webkit-scrollbar-thumb{background:#788cb459;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#788cb48c}::-webkit-scrollbar-thumb:active{background:#8aa6ddb3}
