@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Instrument+Sans:wght@400;500;600;700&family=Sora:wght@500;600;700;800&display=swap";.cv-flow .cv-compare-img{object-fit:cover!important;object-position:center!important;width:100%!important;max-width:none!important;height:100%!important;max-height:none!important}.cv-flow .cv-compare-divider{z-index:6!important;opacity:1!important}.cv-flow .cv-compare-grip{z-index:7!important;opacity:1!important}.cv-flow .cv-tool-icon-btn{place-items:center!important;width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important;padding:0!important;display:inline-grid!important}.cv-flow .cv-node-icon-action{width:100%!important;min-height:calc(38px * var(--cv-node-scale))!important;place-items:center!important;padding:0!important;display:inline-grid!important}:root{--bg:#070b12;--bg-canvas:#070b12;--bg-elevated:#0d131d;--panel:#0d131de0;--panel-raised:#111926f5;--panel-soft:#ffffff0a;--panel-soft-strong:#ffffff12;--text:#f4f7fb;--text-primary:#f4f7fb;--text-secondary:#afbdd0;--text-soft:#cfd8e7;--text-muted:#7f8da3;--border:#ffffff14;--surface-border:#ffffff14;--surface-border-strong:#ffffff24;--accent:#7a5cff;--accent-strong:#9f8bff;--accent-soft:#c7bdff;--accent-dim:#7a5cff29;--accent-color:var(--accent);--text-color:var(--text);--green:#3ccf91;--success:#3ccf91;--danger:#ff6978;--warning:#ffb65c;--radius-xl:28px;--radius-lg:20px;--radius-md:16px;--radius-sm:12px;--shadow-lg:0 26px 60px #00000057;--shadow-md:0 14px 28px #00000038;--font-display:"Sora", sans-serif;--font-body:"Instrument Sans", sans-serif;--font-mono:"IBM Plex Mono", monospace;--ease-out:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}html{scroll-behavior:smooth}body{min-height:100%;font-family:var(--font-body);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at 0 0,#7a5cff1a,#0000 30%),radial-gradient(circle at 82% 10%,#ffffff08,#0000 24%),radial-gradient(circle at 75% 100%,#ffffff06,#0000 26%),linear-gradient(#0a0e15 0%,#070b12 54%,#04070d 100%);margin:0;font-size:15px;line-height:1.6;overflow:hidden}body.meem-light-mode{--bg:#f4f7fb;--bg-canvas:#edf2f8;--bg-elevated:#fff;--panel:#ffffffeb;--panel-raised:#fffffffa;--panel-soft:#121b2b0b;--panel-soft-strong:#121b2b14;--text:#121b2b;--text-primary:#121b2b;--text-secondary:#3f4f67;--text-soft:#233149;--text-muted:#66748b;--border:#121b2b1f;--surface-border:#121b2b1f;--surface-border-strong:#121b2b33;color:var(--text);background:radial-gradient(circle at 0 0,#7a5cff1f,#0000 30%),radial-gradient(circle at 85% 10%,#45d6ff1f,#0000 28%),linear-gradient(#f7f9fd 0%,#edf2f8 100%)}body.meem-light-mode .top-nav,body.meem-light-mode .settings-modal,body.meem-light-mode .tool-panel,body.meem-light-mode .cv-palette,body.meem-light-mode .cv-panel,body.meem-light-mode .cv-toolbar,body.meem-light-mode .cv-node{color:var(--text);border-color:var(--surface-border);background:#ffffffeb}body.meem-light-mode .cv-flow .react-flow,body.meem-light-mode .canvas-stage,body.meem-light-mode .workspace-shell{background:radial-gradient(circle at 50% 20%,#7a5cff14,#0000 38%),#eef3fa}body.meem-light-mode .cv-node-head{background:linear-gradient(#eef2faf5,#dfe6f2eb)}body.meem-light-mode .cv-node-canvas,body.meem-light-mode .cv-compare-stage{background:#e8eef7}body:before{content:"";opacity:.22;pointer-events:none;background-image:linear-gradient(#ffffff06 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-size:64px 64px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(circle,#000 18%,#0000 74%);mask-image:radial-gradient(circle,#000 18%,#0000 74%)}body:after{content:"";pointer-events:none;background:linear-gradient(#ffffff05,#0000 28%);position:fixed;inset:0}a{color:inherit}button,input,select,textarea{font:inherit}button{outline:none}#root{width:100vw;height:100vh}.shell-panel,.sidebar,.top-nav,.display-stage-header,.modal-content,.history-card,.template-card,.sidebar-card{border:1px solid var(--surface-border);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(#0e141fe0,#090d15eb)}.top-nav{border-radius:var(--radius-xl);justify-content:space-between;align-items:center;gap:20px;margin:10px;padding:18px 22px;display:flex}.top-nav-brand,.brand-copy,.top-nav-center,.top-nav-meta,.top-nav-settings,.runtime-stack,.nav-tabs-list{display:flex}.top-nav-brand{align-items:center;gap:14px;min-width:0}.brand-mark{cursor:pointer;width:50px;height:50px;transition:transform .18s var(--ease-out);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:inline-flex;position:relative}.brand-mark:before{content:"";filter:blur(7px);opacity:.85;z-index:0;background:radial-gradient(circle at 50% 45%,#7a5cff73,#7a5cff14 60%,#0000 72%);border-radius:50%;transition:opacity .2s,transform .2s;position:absolute;inset:-6px}.brand-mark:hover{transform:translateY(-1px)}.brand-mark:hover:before{opacity:1;transform:scale(1.08)}.brand-logo-image{z-index:1;object-fit:cover;border-radius:50%;width:42px;height:42px;position:relative}.brand-tip{color:var(--text-primary);font-family:var(--font-display);white-space:nowrap;opacity:0;pointer-events:none;z-index:30;background:#080a10f5;border:1px solid #ffffff1a;border-radius:8px;padding:4px 10px;font-size:.78rem;font-weight:600;transition:opacity .16s,transform .16s;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(-4px)}.brand-mark:hover .brand-tip{opacity:1;transform:translate(-50%)translateY(0)}.brand-copy{flex-direction:column;min-width:0}.top-nav-logo{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.08rem;font-weight:700;line-height:1.1}.top-nav-subtitle{color:var(--text-muted);font-size:.78rem}.top-nav-meta{flex:none;justify-content:flex-end;align-items:center;gap:12px;margin-left:auto}.top-nav-settings{flex-wrap:nowrap;align-items:center;gap:10px;padding:8px}.top-nav-center{flex:auto;justify-content:center}.runtime-stack{flex-direction:column;gap:4px}.runtime-status-btn{cursor:pointer}.runtime-dot-button{border:1px solid var(--surface-border);background:#ffffff0a;border-radius:999px;place-items:center;width:38px;height:38px;padding:0;transition:transform .16s,background-color .16s,border-color .16s;display:inline-grid}.runtime-dot-button:hover{background:#ffffff14;border-color:#ffffff2e;transform:translateY(-1px)}.runtime-input{border:1px solid var(--surface-border);width:240px;min-height:40px;color:var(--text-secondary);font-family:var(--font-mono);background:#04080e94;border-radius:14px;padding:10px 14px;font-size:.72rem}.settings-runtime-input{width:100%}.runtime-caption{font-family:var(--font-mono);color:var(--text-muted);padding-left:6px;font-size:.62rem}.nav-tabs,.segmented-control{background:#ffffff0a;border:1px solid #ffffff0f;border-radius:18px;align-items:center;gap:10px;padding:8px;display:flex}.nav-tabs{justify-content:center;min-width:340px}.nav-tabs-list{flex-wrap:wrap;gap:10px}.settings-tab-btn{width:42px;height:42px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;border-radius:14px;justify-content:center;align-items:center;transition:transform .16s,background-color .16s,color .16s;display:inline-flex}.settings-tab-btn:hover{color:var(--text-primary);background:#ffffff0f}.nav-tab,.segmented-button,.seed-mode-btn{min-height:42px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:.88rem;font-weight:600;transition:transform .16s,background-color .16s,color .16s,box-shadow .16s;display:inline-flex}.nav-tab:hover,.segmented-button:hover,.seed-mode-btn:hover{color:var(--text-primary);background:#ffffff0f}.nav-tab.active,.segmented-button.active,.seed-mode-btn.active,.seed-mode-btn.fixed{color:var(--text-primary);background:linear-gradient(#7a5cff47,#7a5cff24);border:1px solid #9f8bff38;box-shadow:inset 0 1px #ffffff0f,0 8px 18px #7a5cff24}.nav-tab:disabled,.segmented-button:disabled{color:var(--text-muted);box-shadow:none;background:0 0;border-color:#0000}.nav-tab-icon{padding:10px 14px;position:relative}.nav-tab-icon .nav-tab-tip{color:var(--text-primary);white-space:nowrap;opacity:0;pointer-events:none;z-index:30;background:#080a10f5;border:1px solid #ffffff1a;border-radius:8px;padding:4px 10px;font-size:.76rem;font-weight:600;transition:opacity .15s,transform .15s;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(-4px)}.nav-tab-icon:hover .nav-tab-tip,.nav-tab-icon:focus-visible .nav-tab-tip{opacity:1;transform:translate(-50%)translateY(0)}.nav-tab-icon:disabled:hover .nav-tab-tip{opacity:0}.pill-chip,.workflow-chip,.surface-chip,.status-pill{border:1px solid var(--surface-border);min-height:40px;color:var(--text-secondary);background:#ffffff0a;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:.76rem;font-weight:600;display:inline-flex}.workflow-chip-label{color:var(--accent-soft)}.runtime-badge-dot{background:var(--runtime-dot-color);width:9px;height:9px;box-shadow:0 0 0 4px color-mix(in srgb, var(--runtime-dot-color) 16%, transparent);border-radius:999px;flex-shrink:0;animation:1.8s ease-in-out infinite runtime-dot-pulse}.runtime-dot-button.is-error .runtime-badge-dot{animation-duration:2.4s}@keyframes runtime-dot-pulse{0%,to{opacity:.78;transform:scale(1)}50%{opacity:1;transform:scale(1.35)}}@media (prefers-reduced-motion:reduce){.runtime-badge-dot{animation:none}}.secondary-button,.view-btn,.settings-btn,.top-nav-home,.launch-link{border:1px solid var(--surface-border-strong);min-height:42px;color:var(--text-soft);cursor:pointer;background:#ffffff0a;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:600;text-decoration:none;transition:background-color .16s,color .16s,border-color .16s,transform .16s;display:inline-flex}.secondary-button:hover,.view-btn:hover,.settings-btn:hover,.top-nav-home:hover,.launch-link:hover{color:var(--text-primary);background:#ffffff14;border-color:#ffffff38}.secondary-button.danger,.settings-btn.danger{color:var(--danger);background:#ff697814;border-color:#ff697852}.secondary-button.danger:hover,.settings-btn.danger:hover{color:#fff;background:#ff69782e;border-color:#ff697894}.secondary-button.small,.settings-btn.small{min-height:34px;padding:0 12px;font-size:.75rem}.accent-button,.generate-btn,.settings-btn.primary{color:#fff;cursor:pointer;min-height:48px;transition:transform .18s var(--ease-out), box-shadow .18s ease, opacity .18s ease;background:linear-gradient(135deg,#7a5cffeb,#5946e6eb);border:1px solid #9f8bff3d;border-radius:16px;justify-content:center;align-items:center;gap:10px;padding:0 20px;font-weight:700;display:inline-flex;box-shadow:0 18px 30px #4a38b433}.accent-button:hover,.generate-btn:hover,.settings-btn.primary:hover{transform:translateY(-1px);box-shadow:0 22px 36px #4a38b442}.generate-btn.stop-mode{box-shadow:none;background:#ffffff0a;border:1px solid #9f8bff4d;position:relative;overflow:hidden}.generate-btn.stop-mode:hover{transform:none}.run-cancel-content{z-index:2;justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex;position:relative}.generation-ring{width:var(--generation-ring-size);height:var(--generation-ring-size);color:#9de8ff;flex:none;place-items:center;display:inline-grid;position:relative}.generation-ring-svg{position:absolute;inset:0;transform:rotate(-90deg)}.generation-ring-svg.spinning{animation:.95s linear infinite generation-ring-spin}.generation-ring-track,.generation-ring-fill{fill:none}.generation-ring-track{stroke:#82daff2e}.generation-ring-fill{stroke:url(#generationRingGradient);filter:drop-shadow(0 0 7px #45d6ff70);transition:stroke-dashoffset .22s}.generation-ring-percent{font-family:var(--font-display);color:var(--text-primary);font-size:.74rem;font-weight:800;line-height:1}.generation-ring.compact .generation-ring-percent{font-size:.58rem}.generation-ring-corner{z-index:24;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#080c14d6;border:1px solid #82daff57;border-radius:999px;place-items:center;padding:5px;display:grid;position:absolute;top:14px;right:14px;box-shadow:0 12px 26px #00000057}@keyframes generation-ring-spin{to{transform:rotate(270deg)}}.check-btn{border:1px solid var(--surface-border-strong);width:42px;min-height:42px;color:var(--text-soft);cursor:pointer;background:#ffffff0a;border-radius:14px;padding:0;transition:background-color .16s,color .16s,border-color .16s}.check-btn:hover{color:var(--text-primary);background:#ffffff14}.app-body{gap:8px;height:calc(100vh - 102px);padding:0 10px 10px;display:flex}.launch-blurred{filter:blur(8px);pointer-events:none;-webkit-user-select:none;user-select:none;transition:filter .22s,transform .22s;transform:scale(.995)}.sidebar{border-radius:var(--radius-xl);flex-shrink:0;width:380px;overflow-y:auto}.sidebar-content{flex-direction:column;gap:12px;padding:12px;display:flex}.sidebar-card,.template-card,.history-card{border-radius:var(--radius-lg)}.sidebar-tight-card{padding:16px}.sidebar-section{flex-direction:column;gap:12px;display:flex}.sidebar-hero-card{flex-direction:column;align-items:stretch}.page-hero{flex-wrap:wrap;justify-content:space-between;gap:18px;display:flex}.page-hero-title,.template-picker-title,.display-stage-title,.empty-canvas-title{font-family:var(--font-display);letter-spacing:-.04em;color:var(--text-primary);line-height:1.12}.page-hero-title{font-size:1.5rem}.display-stage-title{font-size:1.15rem}.section-label,label,.advanced-status,.status-line{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:8px;font-size:.68rem;font-weight:600;display:inline-flex}.sidebar-copy,.template-picker-subtitle,.empty-canvas-copy{color:var(--text-secondary);font-size:.92rem}.page-hero-meta,.chip-row,.history-actions{flex-wrap:wrap;gap:10px;display:flex}.control-group{flex-direction:column;gap:8px;display:flex}.control-header-row{justify-content:space-between;align-items:center;min-height:42px;margin-bottom:.45rem;display:flex}.control-header-spacer{flex:0 0 93px;width:93px;height:42px}.toggle-row{cursor:pointer;color:var(--text-soft);text-transform:none;letter-spacing:normal;font-size:.85rem;font-family:var(--font-body);align-items:center;gap:10px;display:inline-flex;position:relative}.toggle-row input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}input[type=text],input[type=number],textarea,select{border:1px solid var(--surface-border);width:100%;color:var(--text-primary);background:#04080e94;border-radius:18px;outline:none;padding:14px 16px;transition:border-color .16s,box-shadow .16s,background-color .16s;box-shadow:inset 0 1px #ffffff08}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus,textarea:focus,select:focus{border-color:#9f8bff61;box-shadow:0 0 0 4px #7a5cff1f}textarea{resize:vertical;min-height:120px}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%237f8da3'/%3E%3C/svg%3E");background-position:right 16px center;background-repeat:no-repeat;padding-right:40px}.grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.image-dropzone{cursor:pointer;min-height:320px;box-shadow:var(--shadow-md);background:linear-gradient(#0f1622fa,#080c14fa);border:1.5px dashed #ffffff1f;border-radius:28px;place-items:center;padding:24px;transition:border-color .18s,background-color .18s,transform .18s,box-shadow .18s;display:grid;position:relative;overflow:hidden}.image-dropzone:hover,.image-dropzone.drag-active{background:linear-gradient(#7a5cff26,#0c1018f2);border-color:#9f8bff73;box-shadow:0 24px 54px #00000047}.image-dropzone img{object-fit:contain;border-radius:20px;width:100%;height:auto;display:block}.image-corner-action{width:40px;height:40px;color:var(--text-primary);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;background:#090d14d1;border:1px solid #ffffff1f;border-radius:999px;justify-content:center;align-items:center;transition:transform .16s,background-color .16s,border-color .16s;display:inline-flex;box-shadow:0 12px 24px #0000003d}.image-corner-action:hover{background:#7a5cff33;border-color:#9f8bff59;transform:translateY(-1px)}.image-corner-actions{justify-content:flex-end;align-items:center;display:flex;position:absolute;top:14px;right:14px}.image-state-badge{color:var(--text-primary);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;background:#7a5cff2e;border:1px solid #9f8bff47;border-radius:999px;justify-content:center;align-items:center;padding:8px 12px;font-size:.68rem;display:inline-flex;position:absolute;top:14px;left:14px}.input-action-row{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.image-tool-btn{border:1px solid var(--surface-border-strong);width:42px;height:42px;color:var(--text-soft);cursor:pointer;background:#ffffff0a;border-radius:14px;justify-content:center;align-items:center;transition:transform .16s,background-color .16s,border-color .16s,color .16s;display:inline-flex}.image-tool-btn:hover{color:var(--text-primary);background:#7a5cff24;border-color:#9f8bff57;transform:translateY(-1px)}.dropzone-hint{text-align:center;width:100%;max-width:460px;color:var(--text-primary);font-family:var(--font-display);justify-items:center;gap:16px;font-size:1.48rem;line-height:1.15;display:grid}.dropzone-icon,.empty-canvas-icon{background:linear-gradient(#7a5cff38,#ffffff0d);border:1px solid #9f8bff33;border-radius:24px;place-items:center;width:84px;height:84px;font-size:2rem;display:grid;box-shadow:0 18px 32px #4a38b429}.restore-meta-btn,.advanced-toggle{border:1px solid var(--surface-border-strong);width:100%;color:var(--text-soft);cursor:pointer;background:#ffffff0a;border-radius:16px;justify-content:space-between;align-items:center;padding:14px 16px;transition:background-color .16s,color .16s,border-color .16s;display:flex}.restore-meta-btn:hover,.advanced-toggle:hover{color:var(--text-primary);background:#ffffff14;border-color:#ffffff38}.advanced-panel{flex-direction:column;gap:12px;padding-top:8px;display:flex}.advanced-panel.hidden{display:none}.advanced-toolbar{justify-content:space-between;align-items:center;gap:10px;display:flex}.progress-bar-bg{z-index:1;transition:width .3s ease-out;position:absolute;top:0;bottom:0;left:0}.generate-btn span{z-index:2;position:relative}.action-card{position:sticky;bottom:0}.display-area{border-radius:var(--radius-xl);background:linear-gradient(#0e141fc7,#080c14d6);border:1px solid #ffffff0f;flex-direction:column;flex:1;gap:16px;min-width:0;padding:16px;display:flex;position:relative;overflow:hidden}.display-area:before{content:"";opacity:.18;pointer-events:none;background-image:linear-gradient(#ffffff07 1px,#0000 1px),linear-gradient(90deg,#ffffff07 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0}.display-stage-header{z-index:1;border-radius:var(--radius-lg);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 20px;display:flex;position:relative}.view-controls{z-index:20;gap:8px;display:flex;position:absolute;bottom:24px;right:24px}.icon-view-btn{width:52px;padding:10px}.download-btn{color:#fff;background:linear-gradient(135deg,#7a5cffeb,#5946e6eb);border-color:#9f8bff4d}.comparer-wrapper{border:1px solid var(--surface-border);width:100%;min-height:0;box-shadow:var(--shadow-lg);-webkit-user-select:none;user-select:none;background:linear-gradient(#0f1622fa,#080c14fa);border-radius:28px;flex:1;position:relative;overflow:hidden}.comparer-wrapper.pan-enabled{cursor:grab}.comparer-wrapper.pan-enabled:active{cursor:grabbing}.comparer-image{object-fit:contain;pointer-events:none;transform-origin:50%;width:100%;height:100%;position:absolute;inset:0}.viewer-zoomable{transition:transform .12s ease-out}.compare-clip-layer{pointer-events:none;z-index:2;position:absolute;inset:0}.badge{border:1px solid var(--surface-border);color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:6;background:#090d14d1;border-radius:999px;align-items:center;gap:8px;padding:10px 14px;font-size:.68rem;display:flex;position:absolute;top:18px}.badge.left{left:18px}.badge.right{right:18px}.live-badge{color:var(--accent-soft);border-color:#9f8bff57}.live-dot{background:var(--accent);border-radius:999px;width:8px;height:8px;animation:1s ease-in-out infinite pulse}.slider-handle-container{cursor:ew-resize;z-index:10;touch-action:none;justify-content:center;align-items:center;width:56px;display:flex;position:absolute;top:0;bottom:0;transform:translate(-50%)}.slider-handle{background:#ffffffe6;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 8px #ffffff40}.slider-knob{width:42px;height:42px;color:var(--text-primary);background:#090d14eb;border:2px solid #ffffffe0;border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,border-color .15s,color .15s;display:flex;box-shadow:0 2px 8px #0009}.slider-handle-container:hover .slider-knob{border-color:var(--accent-strong);color:var(--accent-strong);transform:scale(1.08)}.slider-handle-container:hover .slider-handle{background:var(--accent-strong)}.empty-canvas{z-index:1;text-align:center;background:linear-gradient(#0a0f18b8,#070b12d6);border:1px dashed #ffffff1a;border-radius:28px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;min-height:0;padding:32px;display:flex;position:relative}.empty-canvas-title{font-size:1.32rem}.empty-canvas-copy{max-width:440px}.history-shell{flex-direction:column;flex:1;min-height:0;display:flex}.projects-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px 4px;display:flex}.projects-tabs{flex:1;align-items:center;gap:8px;min-width:0;padding-bottom:2px;display:flex;overflow-x:auto}.project-tab{border:1px solid var(--surface-border);min-height:34px;color:var(--text-secondary);font-family:var(--font-mono);cursor:pointer;white-space:nowrap;background:#ffffff09;border-radius:999px;align-items:center;gap:7px;padding:0 13px;font-size:.68rem;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.project-tab:hover{color:var(--text-primary);border-color:#9f8bff4d}.project-tab.active{color:var(--text-primary);background:#7a5cff2e;border-color:#9f8bff57}.project-tab.is-live{border-color:#4ade8066}.project-tab.starred-tab svg{color:#facc15}.project-tab-count{color:var(--text-muted);background:#ffffff12;border-radius:999px;padding:1px 7px;font-size:.62rem}.project-tab.active .project-tab-count{color:var(--text-primary);background:#7a5cff4d}.project-live-badge{color:#4ade80;text-transform:uppercase;letter-spacing:.08em;background:#4ade8029;border:1px solid #4ade8066;border-radius:999px;padding:1px 8px;font-size:.58rem;font-weight:700}.projects-toolbar-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.project-activate-btn{color:#4ade80!important;border-color:#4ade8066!important}.project-activate-btn:hover{background:#4ade801f!important}.projects-active-hint{border:1px solid var(--surface-border);color:var(--text-muted);background:#ffffff08;border-radius:12px;align-items:center;gap:9px;margin:6px 16px 0;padding:8px 14px;font-size:.74rem;display:flex}.projects-active-hint.on{color:var(--text-secondary);background:#4ade800d;border-color:#4ade8040}.projects-active-hint strong{color:var(--text-primary);font-weight:700}.projects-active-dot{background:var(--text-muted);opacity:.5;border-radius:50%;flex-shrink:0;width:8px;height:8px}.projects-active-hint.on .projects-active-dot{opacity:1;background:#4ade80;animation:2s ease-in-out infinite projectsActivePulse;box-shadow:0 0 8px #4ade80b3}@keyframes projectsActivePulse{0%,to{opacity:1}50%{opacity:.45}}.projects-area{flex-direction:column;flex:1;gap:6px;padding:8px 8px 16px;display:flex;overflow-y:auto}.projects-area .history-empty{text-align:center;color:var(--text-muted);font-family:var(--font-mono);margin-top:48px}.projects-area .history-area{flex:none;padding:10px 8px 18px;overflow:visible}.workflow-folder{border-radius:var(--radius-lg);border:1px solid #0000}.workflow-folder-header{border:1px solid var(--surface-border);width:100%;color:var(--text-secondary);cursor:pointer;background:#ffffff09;border-radius:12px;align-items:center;gap:9px;padding:9px 14px;transition:border-color .15s,background .15s;display:flex}.workflow-folder-header:hover{color:var(--text-primary);background:#7a5cff14;border-color:#9f8bff4d}.workflow-folder-header svg:first-child{color:var(--accent-soft,#a78bfa);flex-shrink:0}.workflow-folder-name{font-family:var(--font-display);font-size:.84rem;font-weight:700}.workflow-folder-count{font-family:var(--font-mono);color:var(--accent-soft,#a78bfa);background:#7a5cff29;border-radius:999px;padding:1px 8px;font-size:.62rem}.workflow-folder-caret{margin-left:auto;transition:transform .18s}.workflow-folder-caret.collapsed{transform:rotate(-90deg)}.history-star-btn{z-index:2;width:30px;height:30px;color:var(--text-muted);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#05080eb8;border:1px solid #ffffff24;border-radius:50%;place-items:center;transition:color .15s,border-color .15s,transform .15s;display:grid;position:absolute;top:8px;right:8px}.history-star-btn:hover{color:#facc15;border-color:#facc1580;transform:scale(1.08)}.history-star-btn.starred{color:#facc15;background:#facc151f;border-color:#facc158c}.history-area{flex:1;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:8px;display:grid;overflow-y:auto}.history-empty{text-align:center;color:var(--text-muted);font-family:var(--font-mono);grid-column:1/-1;margin-top:48px}.history-img-wrapper{aspect-ratio:16/9;border-bottom:1px solid var(--surface-border);background:#000}.history-img-wrapper img{object-fit:contain;width:100%;height:100%}.history-time{color:var(--text-primary);margin-bottom:4px}.history-link{color:var(--accent-soft);cursor:pointer;text-decoration:none}.history-button{background:0 0;border:0;padding:0}.modal-overlay{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020408c7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.image-editor-overlay{padding:18px}.image-editor-shell{border-radius:30px;flex-direction:column;gap:14px;width:min(1560px,100%);height:min(94vh,1020px);padding:16px;display:flex}.mask-editor-shell{width:min(1700px,100%);height:min(96vh,1100px)}.image-editor-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.image-editor-toolbar-group{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.image-editor-toolbar-controls{justify-content:flex-end}.image-editor-mode-btn{border:1px solid var(--surface-border);height:42px;color:var(--text-secondary);cursor:pointer;background:#ffffff0a;border-radius:14px;padding:0 14px;transition:transform .16s,background-color .16s,border-color .16s,color .16s}.image-editor-mode-btn:hover{color:var(--text-primary);border-color:#9f8bff47;transform:translateY(-1px)}.image-editor-mode-btn.active{color:var(--text-primary);background:#7a5cff2e;border-color:#9f8bff61}.image-editor-tip{color:var(--text-muted);font-family:var(--font-mono);max-width:880px;font-size:.72rem}.image-editor-icon-btn{border:1px solid var(--surface-border);width:42px;height:42px;color:var(--text-soft);cursor:pointer;background:#ffffff0a;border-radius:14px;justify-content:center;align-items:center;transition:transform .16s,background-color .16s,border-color .16s,color .16s;display:inline-flex}.image-editor-icon-btn:hover{color:var(--text-primary);background:#7a5cff24;border-color:#9f8bff47;transform:translateY(-1px)}.image-editor-icon-btn:disabled{transform:none}.image-editor-icon-btn.text-btn{width:auto;min-width:54px;padding:0 12px;font-size:.72rem;font-weight:700}.image-editor-field{border:1px solid var(--surface-border);color:var(--text-secondary);background:#ffffff0a;border-radius:14px;align-items:center;gap:10px;padding:10px 12px;font-size:.8rem;display:flex}.image-editor-color-field input{background:0 0;border:0;width:38px;height:38px;padding:0}.image-editor-range-field input{width:140px}.image-editor-canvas-wrap{border:1px solid var(--surface-border);background:linear-gradient(#ffffff06 1px,#0000 1px) 0 0/28px 28px,linear-gradient(90deg,#ffffff06 1px,#0000 1px) 0 0/28px 28px,linear-gradient(#0c111bfa,#070a11fa);border-radius:26px;flex:1;min-height:0;position:relative;overflow:hidden}.image-editor-overlay-chip{z-index:2;color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#060a12d6;border:1px solid #ffffff1a;border-radius:999px;align-items:center;gap:10px;padding:10px 14px;font-size:.72rem;display:inline-flex;position:absolute;top:16px;left:16px}.image-editor-viewport{cursor:crosshair;width:100%;height:100%;position:relative;overflow:hidden}.image-editor-viewport.panning{cursor:grab}.image-editor-viewport.panning:active{cursor:grabbing}.image-editor-stage{border-radius:18px;position:absolute;overflow:hidden;box-shadow:0 24px 80px #0000007a}.image-editor-image,.image-editor-canvas{width:100%;height:100%;position:absolute;inset:0}.image-editor-image{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none}.image-editor-canvas{touch-action:none}.modal-content{border-radius:28px;width:min(760px,92vw);max-height:88vh;padding:22px;overflow-y:auto}.modal-header{border-bottom:1px solid var(--surface-border);font-family:var(--font-display);justify-content:space-between;align-items:center;gap:16px;padding-bottom:14px;font-size:1.12rem;display:flex}.modal-close{width:36px;height:36px;color:var(--text-muted);cursor:pointer;background:#ffffff0a;border:0;border-radius:999px}.modal-close:hover{color:var(--text-primary)}.modal-subtitle{color:var(--text-secondary);font-family:var(--font-body);margin-top:6px;font-size:.86rem;line-height:1.4}.missing-models-modal{width:min(860px,94vw)}.missing-models-list{flex-direction:column;gap:12px;padding:18px 0;display:flex}.missing-model-dialog-row{background:#ffffff09;border:1px solid #e6b4503d;border-radius:16px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px;display:grid}.missing-model-dialog-row.ready{border-color:#4ade8038}.missing-model-dialog-row.missing{border-color:#e6b4504d}.missing-model-main{flex-direction:column;gap:8px;min-width:0;display:flex}.missing-model-title-row,.missing-model-actions,.missing-models-footer{align-items:center;gap:10px;display:flex}.missing-model-title-row{justify-content:space-between}.missing-model-title{color:var(--text-primary);font-weight:700}.missing-model-path{color:var(--text-muted);font-family:var(--font-mono);word-break:break-all;font-size:.68rem}.model-source-pill{border:1px solid var(--surface-border);color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;flex:none;padding:5px 8px;font-size:.6rem}.model-source-pill.auto{color:#85efac;background:#4ade8014;border-color:#4ade8052}.model-source-pill.ready{color:#85efac;background:#4ade801a;border-color:#4ade8061}.model-source-pill.manual{color:#ffd166;background:#e6b45014;border-color:#e6b45057}.model-action-progress{color:var(--text-secondary);grid-template-columns:minmax(120px,1fr) auto;align-items:center;gap:10px;font-size:.75rem;display:grid}.model-action-progress-bar{background:#ffffff14;border-radius:999px;height:8px;overflow:hidden}.model-action-progress-bar>div{border-radius:inherit;background:linear-gradient(90deg,#7c5cff,#45d6ff);height:100%;transition:width .22s}.model-action-error{color:#ff6b6b;font-size:.78rem}.missing-models-footer{border-top:1px solid var(--surface-border);justify-content:flex-end;padding-top:12px}.settings-row{align-items:center;gap:12px;display:flex}.settings-section{border-bottom:1px solid var(--surface-border);flex-direction:column;gap:14px;padding:8px 0 18px;display:flex}.settings-subtabs{justify-content:flex-start;margin-top:16px;margin-bottom:10px}.settings-section-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-color);font-size:.72rem}.settings-status-row{align-items:flex-start}.settings-status-copy{flex-direction:column;gap:6px;min-width:0;display:flex}.settings-status-text{font-family:var(--font-mono);color:var(--text-soft);font-size:.7rem}.settings-status-help{font-family:var(--font-mono);color:var(--text-muted);font-size:.62rem;line-height:1.5}.settings-appearance-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;display:grid}.settings-appearance-btn{border:1px solid var(--surface-border);color:var(--text-secondary);cursor:pointer;font-size:.72rem;font-family:var(--font-mono);letter-spacing:.03em;background:#ffffff08;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:18px 12px;transition:background .15s,border-color .15s,color .15s;display:flex}.settings-appearance-btn:hover{color:var(--text-color);background:#7a5cff14;border-color:#7a5cff4d}.settings-appearance-btn.active{color:var(--accent);background:#7a5cff26;border-color:#7a5cff80}.settings-toggle-row{border:1px solid var(--surface-border);cursor:pointer;background:#ffffff08;border-radius:14px;justify-content:space-between;align-items:center;gap:16px;padding:12px 14px;display:flex}.settings-toggle-row input{width:44px;height:24px;accent-color:var(--accent);cursor:pointer;flex:none}.local-runtime-panel{justify-content:space-between;gap:18px;padding:12px 0}.local-runtime-summary{flex-direction:row;align-items:center;gap:12px}.install-progress-card{background:#ffffff09;border:1px solid #9f8bff38;border-radius:16px;flex-direction:column;gap:10px;padding:12px;display:flex}.install-progress-head{font-family:var(--font-mono);color:var(--text-soft);justify-content:space-between;gap:12px;font-size:.68rem;display:flex}.install-progress-track{background:#ffffff14;border-radius:999px;height:9px;overflow:hidden}.install-progress-fill{border-radius:inherit;background:linear-gradient(90deg,#7c5cff,#45d6ff);height:100%;transition:width .24s}.model-workflow-list{flex-direction:column;gap:10px;margin-top:.75rem;display:flex}.model-workflow-item{border:1px solid var(--surface-border);background:#ffffff06;border-radius:14px;transition:border-color .16s,background-color .16s;overflow:hidden}.model-workflow-item.expanded{background:#ffffff0a;border-color:#9f8bff47}.model-workflow-tab{width:100%;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto 24px;align-items:center;gap:12px;padding:14px 12px;display:grid}.model-workflow-tab:hover{background:#ffffff09}.model-workflow-name{min-width:0;font-family:var(--font-mono);font-size:.72rem}.model-workflow-chevron{width:24px;height:24px;color:var(--text-muted);font-family:var(--font-mono);background:#ffffff0f;border-radius:999px;place-items:center;font-size:.8rem;display:inline-grid}.model-workflow-details{flex-direction:column;gap:8px;padding:0 12px 12px;display:flex}.model-missing-row{background:#03070c57;border:1px solid #ffffff0e;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:10px;display:flex}.model-missing-row .settings-btn{flex:none}.model-missing-copy{flex-direction:column;gap:4px;min-width:0;display:flex}.model-missing-name{font-family:var(--font-mono);color:var(--text-primary);font-size:.66rem}.model-missing-path{font-family:var(--font-mono);color:var(--text-muted);overflow-wrap:anywhere;font-size:.56rem}.model-empty-state{font-family:var(--font-mono);color:#4caf50;padding:10px;font-size:.62rem}.app-update-toast{z-index:80;width:min(420px,100vw - 44px);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0d131df0;border:1px solid #9f8bff4d;border-radius:18px;justify-content:space-between;align-items:center;gap:14px;padding:14px;display:flex;position:fixed;top:104px;right:22px}.app-update-toast.error{border-color:#e6394673}.app-update-copy{min-width:0}.app-update-title{font-family:var(--font-mono);color:var(--text-primary);font-size:.72rem}.app-update-subtitle{font-family:var(--font-mono);color:var(--text-muted);overflow-wrap:anywhere;margin-top:4px;font-size:.6rem}.release-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.release-form-wide{grid-column:1/-1}.release-log-box{border:1px solid var(--surface-border);min-height:180px;max-height:280px;color:var(--text-soft);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;background:#050505;border-radius:12px;padding:12px;font-size:.62rem;line-height:1.55;overflow:auto}.model-state{font-size:.62rem;font-family:var(--font-mono);flex-shrink:0}.model-state.ready{color:#4caf50}.model-state.missing{color:#e6b450}.settings-tooltip-container{display:inline-block;position:relative}.settings-tooltip-content{border:1px solid var(--surface-border-strong);border-radius:var(--radius-md);width:min(320px,100vw - 48px);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;visibility:hidden;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out), visibility .2s var(--ease-out);pointer-events:none;z-index:1000;background:#0d131dfa;flex-direction:column;gap:10px;padding:16px;display:flex;position:absolute;bottom:calc(100% + 12px);right:0;transform:translateY(10px)}.settings-tooltip-content:after{content:"";border:8px solid #0000;border-top-color:#0d131dfa;position:absolute;top:100%;right:24px}.settings-tooltip-container:hover .settings-tooltip-content,.settings-tooltip-container:focus-within .settings-tooltip-content{opacity:1;visibility:visible;transform:translateY(0)}.checkbox-label{cursor:pointer;align-items:center;gap:10px;display:flex}.warning-card{border:1px solid #ff697873;border-radius:18px;margin-bottom:12px;overflow:hidden}.warning-card-header,.warning-card-footer{font-family:var(--font-mono);padding:10px 12px;font-size:.68rem}.warning-card-header{color:var(--danger);background:#ff697814;border-bottom:1px solid #ff697833}.warning-card-footer{color:var(--text-muted)}.warning-row{border-bottom:1px solid var(--surface-border);justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.warning-row:last-of-type{border-bottom:0}.template-picker{border-radius:var(--radius-xl);background:linear-gradient(#0e141fc7,#080c14d6);border:1px solid #ffffff0f;flex-direction:column;flex:1;gap:18px;padding:18px;display:flex;overflow-y:auto}.template-picker-header{text-align:center;flex-direction:column;align-self:center;align-items:center;gap:8px;max-width:760px;display:flex}.template-picker-title{font-size:clamp(2rem,4vw,3.4rem)}.template-grid{grid-template-columns:repeat(auto-fit,minmax(280px,360px));justify-content:center;gap:18px;display:grid}.playbook-category-grid{align-items:start}.playbook-category-card{max-width:360px}.playbook-category-card .template-info{text-align:center;justify-content:space-between;min-height:212px}.playbook-category-card .template-tags{justify-content:center}.playbook-category-detail{width:min(100%,1160px);animation:playbookDrillIn .28s var(--ease-out) both;flex-direction:column;gap:18px;margin:0 auto;display:flex}.playbook-detail-header{grid-template-columns:auto minmax(180px,1fr) minmax(220px,460px);align-items:end;gap:18px;padding:14px 0 4px;display:grid}.playbook-category-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.35rem;line-height:1.15}.playbook-category-desc{max-width:460px;color:var(--text-secondary);text-align:right;font-size:.9rem}@keyframes playbookDrillIn{0%{opacity:0;filter:blur(6px);transform:translate(18px)scale(.985)}to{opacity:1;filter:blur();transform:translate(0)scale(1)}}.workflow-placeholder-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.workflow-placeholder{text-align:left;min-height:190px;color:var(--text-primary);cursor:pointer;background:linear-gradient(135deg,#7a5cff14,#0000 42%),#070b128f;border:1px solid #ffffff1c;border-radius:18px;flex-direction:column;justify-content:space-between;gap:18px;padding:16px;transition:border-color .2s,transform .2s,background-color .2s;display:flex}.workflow-placeholder:hover{background-color:#ffffff0e;border-color:#9f8bff61;transform:translateY(-2px)}.workflow-placeholder.selected{background-color:#7a5cff1f;border-color:#9f8bff80}.workflow-placeholder.models-missing,.template-card.models-missing{border-color:#e6b45070;box-shadow:0 18px 36px #e6b45014}.workflow-placeholder.models-missing:hover,.template-card.models-missing:hover{border-color:#e6b450ad;box-shadow:0 22px 42px #e6b4501f}.workflow-placeholder.models-unchecked,.template-card.models-unchecked{border-color:#94a3b847}.workflow-placeholder.coming-soon{cursor:not-allowed;opacity:.7}.workflow-placeholder-topline,.workflow-placeholder-footer{color:var(--text-muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:12px;font-size:.64rem;display:flex}.workflow-placeholder-body{flex-direction:column;gap:14px;display:flex}.workflow-placeholder-name{font-family:var(--font-display);color:var(--text-primary);font-size:1.04rem;line-height:1.2}.workflow-placeholder-icon{width:56px;height:56px;color:var(--accent-soft,#a78bfa);background:#7a5cff24;border:1px solid #9f8bff52;border-radius:16px;place-items:center;display:inline-grid;box-shadow:inset 0 1px #ffffff0f}.workflow-placeholder-desc{color:var(--text-secondary);margin-top:8px;font-size:.9rem}.workflow-placeholder-tags{flex-wrap:wrap;gap:8px;display:flex}.workflow-placeholder-tags span{border:1px solid var(--surface-border);color:var(--text-secondary);background:#ffffff0f;border-radius:999px;padding:6px 10px;font-size:.72rem;font-weight:600}.template-card{cursor:pointer;flex-direction:column;padding:0;transition:border-color .25s,transform .25s,box-shadow .25s;display:flex;overflow:hidden}.template-card:hover{border-color:#9f8bff47;transform:translateY(-2px);box-shadow:0 22px 40px #00000052}.template-card.selected{border-color:#9f8bff57;box-shadow:0 22px 40px #543fbb2e}.template-card.coming-soon{cursor:not-allowed;opacity:.7}.template-thumb-wrapper{aspect-ratio:16/10;border-bottom:1px solid var(--surface-border);position:relative;overflow:hidden}.template-thumb{object-fit:cover;width:100%;height:100%;transition:filter .3s,transform .4s}.template-card:hover .template-thumb{transform:scale(1.03)}.template-thumb-overlay{background:linear-gradient(#0000 30%,#070b12b8 100%);position:absolute;inset:0}.template-info{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex}.template-name{font-family:var(--font-display);color:var(--text-primary);font-size:1.12rem}.template-desc{min-height:48px;color:var(--text-secondary)}.template-tags{flex-wrap:wrap;gap:8px;display:flex}.template-tag,.template-badge{border:1px solid var(--surface-border);color:var(--text-secondary);background:#ffffff0a;border-radius:999px;justify-content:center;align-items:center;padding:6px 10px;font-size:.72rem;font-weight:600;display:inline-flex}.template-badge.active{color:var(--text-primary);background:#7a5cff29;border-color:#9f8bff57}.template-badge.missing{color:#ffd166;background:#e6b4501f;border-color:#e6b4505c}.template-badge.pending{color:var(--text-secondary);background:#94a3b81a;border-color:#94a3b83d}.template-open-btn{color:var(--text-soft);justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding-top:4px;font-weight:600;display:flex}.template-card-actions{justify-content:flex-end;align-items:center;gap:10px;min-width:0;display:inline-flex}.template-card-actions>span{white-space:nowrap}.template-models-btn{color:#c4b5fd;min-height:30px;font-family:var(--font-body);cursor:pointer;letter-spacing:.01em;background:#7a5cff38;border:1.5px solid #9f8bffa6;border-radius:999px;padding:6px 12px;font-size:.76rem;font-weight:700;transition:border-color .15s,background .15s,color .15s}.template-models-btn:hover{color:#fff;background:#7a5cff61;border-color:#a78bfae6}.template-models-btn:disabled{cursor:progress;opacity:.6}::selection{color:#fff;background:#7a5cff52}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:#ffffff0a}::-webkit-scrollbar-thumb{background:#9f8bff52 padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#9f8bff80 padding-box padding-box;border:2px solid #0000}button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (width<=1280px){.top-nav{flex-direction:column;align-items:stretch}.top-nav-meta{justify-content:space-between}}@media (width<=1100px){.app-body{flex-direction:column;height:auto}.sidebar{width:100%;max-height:none}.display-area{min-height:70vh}}@media (width<=800px){.top-nav,.template-picker,.display-area{padding:14px}.view-controls{flex-wrap:wrap;margin-top:-4px;display:flex;position:static}.grid-2{grid-template-columns:1fr}.runtime-input{width:100%}.template-grid{grid-template-columns:1fr}.playbook-detail-header{grid-template-columns:1fr;align-items:flex-start}.playbook-category-desc{text-align:left}.image-editor-overlay{padding:10px}.image-editor-shell{height:95vh;padding:14px}.mask-editor-shell{height:96vh}.image-editor-toolbar-controls{justify-content:flex-start}.image-editor-range-field{width:100%}.image-editor-field{justify-content:space-between;width:100%}.image-editor-range-field input{width:100%}.settings-tooltip-content{left:0;right:auto}.settings-tooltip-content:after{left:24px;right:auto}}.history-area{flex:1;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:start;gap:20px;padding:16px;display:grid;overflow-y:auto}.history-card{border-radius:var(--radius-lg);border:1px solid var(--surface-border);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(#0e141fe0,#090d15eb);transition:box-shadow .25s;overflow:hidden}.history-card:hover{box-shadow:0 8px 32px #0006}.history-media-pair{background:var(--surface-border);border-bottom:1px solid var(--surface-border);grid-template-columns:.86fr 1.14fr;gap:1px;display:grid;position:relative}.history-media-tile{aspect-ratio:4/3;min-width:0;color:var(--text-primary);cursor:pointer;background:#03060a;border:0;padding:0;position:relative;overflow:hidden}.history-media-tile img{object-fit:contain;width:100%;height:100%;transition:transform .22s,filter .22s}.history-card:hover .history-media-tile img{transform:scale(1.04)}.history-media-tile.input img{filter:brightness(.82)}.history-media-tile.empty{cursor:default;justify-content:center;align-items:center;padding:14px;display:flex}.history-media-label{z-index:1;color:var(--text-secondary);font-family:var(--font-mono);text-transform:uppercase;background:#03060ab8;border:1px solid #ffffff1a;border-radius:999px;padding:4px 7px;font-size:.56rem;position:absolute;top:8px;left:8px}.history-text-input-preview{font-family:var(--font-mono);color:var(--text-muted);text-align:left;overflow-wrap:anywhere;font-size:.62rem;line-height:1.45}.history-img-wrapper{aspect-ratio:16/9;cursor:pointer;background:#000;position:relative;overflow:hidden}.history-img-wrapper img{object-fit:contain;width:100%;height:100%;transition:transform .3s}.history-card:hover .history-img-wrapper img{transform:scale(1.08)}.history-img-hover-overlay{opacity:0;pointer-events:none;background:#00000080;justify-content:center;align-items:center;transition:opacity .25s;display:flex;position:absolute;inset:0}.history-card:hover .history-img-hover-overlay{opacity:1}.history-img-zoom-icon{color:#000;background:#ffffffe6;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:flex;box-shadow:0 4px 12px #0000004d}.history-meta{font-family:var(--font-mono);color:var(--text-muted);padding:14px;font-size:.72rem;line-height:1.6}.history-card-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.history-tool-name{color:var(--accent-soft);align-items:center;gap:6px;font-size:.78rem;font-weight:600;display:flex}.history-time{color:var(--text-secondary);font-size:.7rem}.history-seed{color:var(--text-secondary);margin-bottom:6px}.history-detail-line{color:var(--text-muted);margin-bottom:4px}.history-prompt{word-break:break-word;margin-bottom:10px;line-height:1.5}.history-group-select{border:1px solid var(--surface-border);width:100%;min-height:34px;color:var(--text-secondary);font-family:var(--font-mono);background:#ffffff0a;border-radius:10px;margin-bottom:10px;padding:0 10px;font-size:.68rem}.history-group-dialog{border-radius:18px;flex-direction:column;gap:14px;width:min(420px,100vw - 36px);padding:20px;display:flex}.history-group-dialog-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.1rem;font-weight:700}.history-group-input{border:1px solid var(--surface-border);min-height:46px;color:var(--text-primary);font-family:var(--font-mono);background:#04080eb8;border-radius:14px;outline:none;padding:0 14px}.history-group-input:focus{border-color:#9f8bff7a;box-shadow:0 0 0 4px #7a5cff24}.history-group-dialog-actions{justify-content:flex-end;gap:10px;display:flex}.history-actions{gap:8px;display:flex}.history-action-btn{border:1px solid var(--surface-border);color:var(--text-secondary);font-size:.72rem;font-family:var(--font-mono);cursor:pointer;background:#ffffff0d;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-weight:600;text-decoration:none;transition:all .2s;display:flex}.history-action-btn:hover{color:var(--text-primary);background:#ffffff1a;border-color:#fff3}.history-reuse-btn{color:var(--accent-soft);background:#8b5cf626;border-color:#8b5cf64d}.history-reuse-btn:hover{background:#8b5cf640;border-color:#8b5cf680}.launch-overlay{z-index:1600;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:radial-gradient(circle at 50% 36%,#7a5cff33,#0000 38%),#03060cc7;place-items:center;animation:.32s ease-out both launchOverlayIn;display:grid;position:fixed;inset:0;overflow:hidden}.launch-aurora{pointer-events:none;filter:blur(70px);opacity:.55;position:absolute;inset:0}.launch-blob{border-radius:50%;position:absolute}.launch-blob-a{background:radial-gradient(circle,#7a5cff80,#0000 65%);width:420px;height:420px;animation:11s ease-in-out infinite alternate launchDriftA;top:8%;left:14%}.launch-blob-b{background:radial-gradient(circle,#38bdf857,#0000 65%);width:360px;height:360px;animation:13s ease-in-out infinite alternate launchDriftB;top:30%;right:10%}.launch-blob-c{background:radial-gradient(circle,#d946ef42,#0000 65%);width:320px;height:320px;animation:15s ease-in-out infinite alternate launchDriftC;bottom:4%;left:38%}.launch-particles{pointer-events:none;position:absolute;inset:0}.launch-particles span{opacity:0;background:#c4b5fdb3;border-radius:50%;width:4px;height:4px;animation:linear infinite launchRise;position:absolute;bottom:-8px;box-shadow:0 0 8px #9f8bffcc}.launch-card{background:#0b101bc7;border:1px solid #9f8bff4d;border-radius:26px;justify-items:center;gap:14px;max-width:420px;padding:40px 52px 32px;animation:.48s cubic-bezier(.2,.9,.3,1.2) both launchCardIn;display:grid;position:relative;box-shadow:0 28px 90px #00000080,0 0 60px #7a5cff1f,inset 0 1px #ffffff0f}.launch-logo-wrap{place-items:center;width:96px;height:96px;display:grid;position:relative}.launch-glow{background:radial-gradient(circle,#7a5cff73,#0000 70%);border-radius:50%;animation:2.4s ease-in-out infinite launchGlowPulse;position:absolute;inset:14px}.launch-logo{object-fit:contain;filter:drop-shadow(0 10px 24px #7a5cff73);width:52px;height:52px;animation:3.2s ease-in-out infinite launchLogoFloat;position:relative}.launch-orbit{border:1.5px solid #9f8bff29;border-top-color:#82daffe6;border-radius:50%;animation:1.4s linear infinite launchSpin;position:absolute;inset:10px}.launch-orbit-outer{border-width:1px;border-color:#9f8bff1a #9f8bff1a #d946efb3;animation:2.6s linear infinite launchSpinReverse;inset:0}.launch-orbit-dot{border-radius:50%;animation:1.4s linear infinite launchSpin;position:absolute;inset:0}.launch-orbit-dot:after{content:"";background:#82daff;border-radius:50%;width:6px;height:6px;margin-left:-3px;position:absolute;top:6px;left:50%;box-shadow:0 0 10px #82daffe6}.launch-brand{font-family:var(--font-display);background:linear-gradient(100deg,#e8e4ff 20%,#a78bfa 40%,#82daff 60%,#e8e4ff 80%) 0 0/220%;color:#0000;letter-spacing:.04em;-webkit-background-clip:text;background-clip:text;font-size:1.05rem;font-weight:800;animation:3.4s linear infinite launchShimmer}.launch-word{font-family:var(--font-display);color:var(--text-primary);letter-spacing:.02em;font-size:1.34rem;font-weight:800;display:flex}.launch-word>span{animation:1.5s ease-in-out infinite launchLetter;display:inline-block}.launch-ellipsis{display:inline-flex}.launch-ellipsis span{color:var(--accent-soft,#a78bfa);animation:1.5s ease-in-out infinite launchLetter;display:inline-block}.launch-progress{background:#9f8bff24;border-radius:999px;width:220px;height:4px;overflow:hidden}.launch-progress-bar{background:linear-gradient(90deg,#0000,#8b5cf6 30%,#82daff 70%,#0000);border-radius:999px;width:40%;height:100%;animation:1.6s ease-in-out infinite launchProgressSlide;display:block}.launch-caption{font-family:var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:.14em;font-size:.68rem}.launch-tip{background:#7a5cff14;border:1px solid #9f8bff2e;border-radius:14px;align-items:flex-start;gap:10px;max-width:320px;min-height:52px;margin-top:6px;padding:10px 14px;animation:.42s ease-out both launchTipIn;display:flex}.launch-tip-label{color:#c4b5fd;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;background:#8b5cf64d;border-radius:999px;flex-shrink:0;margin-top:1px;padding:2px 8px;font-size:.6rem;font-weight:700}.launch-tip-text{color:var(--text-secondary);text-align:left;font-size:.78rem;line-height:1.45}@keyframes launchOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes launchCardIn{0%{opacity:0;transform:translateY(14px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes launchSpin{to{transform:rotate(360deg)}}@keyframes launchSpinReverse{to{transform:rotate(-360deg)}}@keyframes launchGlowPulse{0%,to{opacity:.55;transform:scale(.94)}50%{opacity:1;transform:scale(1.08)}}@keyframes launchLogoFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes launchShimmer{to{background-position:-220%}}@keyframes launchLetter{0%,to{opacity:.54;transform:translateY(0)}45%{opacity:1;transform:translateY(-5px)}}@keyframes launchProgressSlide{0%{transform:translate(-110%)}to{transform:translate(380%)}}@keyframes launchTipIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes launchDriftA{to{transform:translate(70px,50px)scale(1.15)}}@keyframes launchDriftB{to{transform:translate(-60px,-40px)scale(1.1)}}@keyframes launchDriftC{to{transform:translate(40px,-60px)scale(1.2)}}@keyframes launchRise{0%{opacity:0;transform:translateY(0)scale(.6)}12%{opacity:.9}85%{opacity:.4}to{opacity:0;transform:translateY(-104vh)scale(1)}}@media (prefers-reduced-motion:reduce){.launch-overlay,.launch-card,.launch-glow,.launch-logo,.launch-orbit,.launch-orbit-dot,.launch-brand,.launch-blob,.launch-particles span,.launch-progress-bar,.launch-tip,.launch-word>span,.launch-ellipsis span{animation:none}}.install-ring-wrap{place-items:center;margin-top:.9rem;display:grid}.install-ring{justify-items:center;gap:7px;padding:14px 0 8px;display:grid}.install-ring-stage{place-items:center;display:grid;position:relative}.install-ring-svg{transform:rotate(-90deg)}.install-ring-svg.spinning{animation:1.2s linear infinite launchSpin}.install-ring-track{fill:none;stroke:#9f8bff24}.install-ring-fill{fill:none;stroke:url(#installRingGradient);filter:drop-shadow(0 0 6px #7a5cff8c);transition:stroke-dashoffset .32s}.install-ring-logo{object-fit:contain;filter:drop-shadow(0 6px 16px #7a5cff66);width:40%;height:40%;animation:3.2s ease-in-out infinite launchLogoFloat;position:absolute}.install-ring-percent{font-family:var(--font-display);color:var(--text-primary);margin-top:2px;font-size:1.32rem;font-weight:800;line-height:1}.install-ring-label{font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;color:var(--text-muted);font-size:.66rem}.install-ring-detail{font-family:var(--font-mono);color:var(--text-soft);text-align:center;max-width:320px;font-size:.66rem;line-height:1.5}.install-ring.is-failed .install-ring-fill{stroke:#f87171;filter:none}.install-ring.is-failed .install-ring-label,.install-ring.is-failed .install-ring-detail{color:#fca5a5}.install-ring.is-done .install-ring-fill{stroke:#4ade80;filter:drop-shadow(0 0 6px #4ade8080)}@media (prefers-reduced-motion:reduce){.install-ring-svg.spinning,.install-ring-logo{animation:none}}.fullscreen-viewer-overlay{z-index:1000;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000000f2;justify-content:center;align-items:center;padding:24px;animation:.2s ease-out viewerFadeIn;display:flex;position:fixed;inset:0}@keyframes viewerFadeIn{0%{opacity:0}to{opacity:1}}.fullscreen-viewer-container{flex-direction:column;gap:16px;width:100%;max-width:1800px;height:100%;max-height:1000px;animation:.25s ease-out viewerSlideIn;display:flex}@keyframes viewerSlideIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.fullscreen-viewer-header{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#141a28e6;border:1px solid #ffffff1a;border-radius:16px;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.fullscreen-viewer-title{color:var(--text-primary);font-size:1rem;font-weight:600;font-family:var(--font-sans);align-items:center;gap:10px;display:flex}.fullscreen-viewer-meta{color:var(--text-secondary);font-size:.85rem;font-family:var(--font-mono);align-items:center;gap:10px;display:flex}.fullscreen-viewer-divider{color:var(--text-muted)}.fullscreen-viewer-close{width:40px;height:40px;color:var(--text-secondary);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff26;border-radius:10px;justify-content:center;align-items:center;transition:all .2s;display:flex}.fullscreen-viewer-close:hover{color:var(--text-primary);background:#ffffff1a;border-color:#ffffff40}.fullscreen-viewer-image-wrapper{cursor:grab;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.fullscreen-viewer-image-wrapper:active{cursor:grabbing}.fullscreen-viewer-image-wrapper img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;transform-origin:50%;max-width:100%;max-height:100%;display:block}.fullscreen-viewer-controls{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#141a28e6;border:1px solid #ffffff1a;border-radius:16px;justify-content:center;align-items:center;gap:12px;padding:12px 20px;display:flex}.viewer-control-btn{width:44px;height:44px;color:var(--text-secondary);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff26;border-radius:10px;justify-content:center;align-items:center;transition:all .2s;display:flex}.viewer-control-btn:hover:not(:disabled){color:var(--text-primary);background:#ffffff1a;border-color:#ffffff40}.viewer-control-btn:disabled{opacity:.4;cursor:not-allowed}.viewer-control-btn-reset{color:var(--accent-soft);background:#8b5cf626;border-color:#8b5cf64d}.viewer-control-btn-reset:hover:not(:disabled){background:#8b5cf640;border-color:#8b5cf680}.viewer-zoom-level{text-align:center;min-width:60px;color:var(--text-primary);font-family:var(--font-mono);font-size:.9rem;font-weight:600}.viewer-interaction-hint{color:var(--text-muted);font-size:.75rem;font-family:var(--font-mono);border-left:1px solid #ffffff26;margin-left:16px;padding-left:16px}@keyframes modalPop{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes emptyFloat{0%{opacity:.75;transform:translateY(-4px)}to{opacity:1;transform:translateY(4px)}}.modal-overlay{animation:viewerFadeIn .18s var(--ease-out)}.modal-content,.image-editor-shell,.history-group-dialog{animation:modalPop .22s var(--ease-out)}.template-picker,.history-shell,.sidebar,.display-area{animation:fadeInUp .22s var(--ease-out)}.template-card{animation:fadeInUp .26s var(--ease-out) both}.template-card:not(.coming-soon):hover{box-shadow:0 0 0 1px #7a5cff59,0 18px 44px #7a5cff29}.history-card{animation:fadeInUp .26s var(--ease-out) both}.history-card:hover{border-color:#9f8bff66;box-shadow:0 0 0 1px #7a5cff47,0 16px 38px #7a5cff24}.empty-canvas-icon{animation:3.5s ease-in-out infinite alternate emptyFloat}.comparer-wrapper{animation:fadeIn .24s var(--ease-out)}.status-line{animation:fadeIn .18s var(--ease-out)}input:not([type=range]),textarea,select{transition:border-color .18s var(--ease-out), box-shadow .18s var(--ease-out)}input:not([type=range]):focus-visible,textarea:focus-visible,select:focus-visible{box-shadow:0 0 0 3px var(--accent-dim);border-color:#9f8bff8c;outline:none}button{transition:opacity .18s var(--ease-out), filter .18s var(--ease-out)}button:disabled{filter:saturate(.55)}.toast-stack{z-index:2000;pointer-events:none;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--panel-raised);border:1px solid var(--surface-border-strong);border-left:3px solid var(--accent);border-radius:var(--radius-sm);max-width:360px;box-shadow:var(--shadow-md);font-family:var(--font-body);color:var(--text-soft);animation:fadeInUp .22s var(--ease-out) both;align-items:center;gap:10px;padding:11px 16px 11px 13px;font-size:.86rem;display:flex}.toast-icon{color:var(--accent-soft);flex-shrink:0;display:inline-flex}.toast--success{border-left-color:var(--green)}.toast--success .toast-icon{color:var(--green)}.toast--error{border-left-color:var(--danger)}.toast--error .toast-icon{color:var(--danger)}.toast-message{overflow-wrap:anywhere;white-space:pre-line;line-height:1.4}.drop-overlay{z-index:1700;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);pointer-events:none;animation:viewerFadeIn .15s var(--ease-out);background:#020408a8;justify-content:center;align-items:center;padding:28px;display:flex;position:fixed;inset:0}.drop-overlay-panel{border-radius:var(--radius-lg);width:100%;height:100%;color:var(--accent-soft);background:#7a5cff12;border:2px dashed #9f8bff99;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}.drop-overlay-title{font-family:var(--font-display);color:var(--text);font-size:1.05rem;font-weight:600}.shortcuts-modal{width:min(480px,92vw)}.shortcuts-list{flex-direction:column;gap:4px;padding:6px 0 4px;display:flex}.shortcut-row{border-bottom:1px solid var(--border);color:var(--text-secondary);align-items:center;gap:14px;padding:7px 4px;font-size:.88rem;display:flex}.shortcut-row:last-child{border-bottom:none}.shortcut-row kbd{background:var(--panel-soft-strong);border:1px solid var(--surface-border-strong);min-width:118px;font-family:var(--font-mono);color:var(--accent-soft);text-align:center;border-radius:7px;flex-shrink:0;padding:4px 9px;font-size:.76rem}@media (prefers-reduced-motion:reduce){.modal-overlay,.modal-content,.image-editor-shell,.history-group-dialog,.template-picker,.history-shell,.sidebar,.display-area,.template-card,.history-card,.comparer-wrapper,.status-line,.empty-canvas-icon,.toast,.drop-overlay{animation:none!important}}.cv-tab-host{flex:1;min-width:0;min-height:0}.cv-shell{flex:1;gap:0;min-height:0;display:flex}.cv-palette{border-right:1px solid var(--surface-border);background:#080c1399;flex-direction:column;flex-shrink:0;gap:16px;width:210px;padding:16px 12px;display:flex;overflow-y:auto}.cv-palette-group{flex-direction:column;gap:6px;display:flex}.cv-palette-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:2px;font-size:.6rem}.cv-palette-btn{border:1px solid var(--surface-border);color:var(--text-secondary);cursor:pointer;text-align:left;background:#ffffff09;border-radius:10px;align-items:center;gap:8px;padding:8px 10px;font-size:.78rem;transition:border-color .15s,background .15s,color .15s;display:flex}.cv-palette-btn:hover{color:var(--text-primary);background:#7a5cff1f;border-color:#9f8bff66}.cv-palette-btn svg{color:var(--accent-soft,#a78bfa);flex-shrink:0}.cv-flow{flex:1;min-width:0;position:relative}.cv-hint{z-index:5;border:1px solid var(--surface-border);max-width:560px;color:var(--text-muted);text-align:center;pointer-events:none;background:#0d131de6;border-radius:12px;padding:10px 16px;font-size:.78rem;position:absolute;top:18px;left:50%;transform:translate(-50%)}.cv-hint strong{color:var(--text-primary)}.cv-flow .react-flow__attribution{display:none}.cv-flow .react-flow__handle{background:#82daff;border:2px solid #0b1019;width:11px;height:11px;box-shadow:0 0 6px #82daffb3}.cv-node{width:250px;color:var(--text-primary);background:linear-gradient(#111825fa,#0b101afa);border:1px solid #9f8bff47;border-radius:14px;font-size:.78rem;overflow:visible;box-shadow:0 12px 36px #00000073}.cv-node-workflow.status-running{border-color:#82daff99}.cv-node-head{border-bottom:1px solid var(--surface-border);background:#7a5cff1a;border-radius:14px 14px 0 0;align-items:center;gap:8px;padding:9px 12px;display:flex}.cv-node-title{font-family:var(--font-display);flex:1;font-size:.82rem;font-weight:700}.cv-node-x{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1.1rem;line-height:1}.cv-node-x:hover{color:#f87171}.cv-node-body{flex-direction:column;gap:8px;padding:10px 12px;display:flex}.cv-field{flex-direction:column;gap:4px;display:flex}.cv-field>span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.66rem}.cv-field textarea,.cv-field input{border:1px solid var(--surface-border);width:100%;color:var(--text-primary);font-size:.76rem;font-family:var(--font-body);resize:vertical;background:#00000047;border-radius:8px;padding:6px 8px}.cv-field textarea:focus,.cv-field input:focus{border-color:#9f8bff80;outline:none}.cv-in-label{color:var(--text-muted);font-size:.6rem;font-family:var(--font-mono);pointer-events:none;position:absolute;left:8px}.cv-in-image{top:58px}.cv-in-mask{top:82px}.cv-in-a{top:46px}.cv-in-b{top:70px}.cv-ports-out{text-align:right;position:absolute;bottom:8px;right:8px}.cv-port-label{color:var(--text-muted);font-size:.6rem;font-family:var(--font-mono);line-height:1.6}.cv-thumb{border:1px solid var(--surface-border);background:#03060a;border-radius:8px;position:relative;overflow:hidden}.cv-thumb img{object-fit:contain;width:100%;max-height:150px;display:block}.cv-thumb-tag{background:#7a5cffb3;border-radius:999px;padding:1px 6px;font-size:.58rem;position:absolute;bottom:4px;right:4px}.cv-result-thumb{border-color:#4ade8066}.cv-drop{color:var(--text-muted);cursor:pointer;background:#7a5cff0f;border:1px dashed #9f8bff66;border-radius:10px;flex-direction:column;align-items:center;gap:8px;padding:22px 12px;font-size:.74rem;display:flex}.cv-drop:hover{color:var(--text-primary);border-color:#9f8bffb3}.cv-drop svg{color:var(--accent-soft,#a78bfa)}.cv-btn-row{gap:6px;display:flex}.cv-btn{border:1px solid var(--surface-border);color:var(--text-secondary);cursor:pointer;background:#ffffff0a;border-radius:8px;flex:1;padding:6px 8px;font-size:.72rem}.cv-btn:hover{color:var(--text-primary);border-color:#9f8bff73}.cv-run-btn{color:#fff;cursor:pointer;background:linear-gradient(90deg,#7a5cff,#8b5cf6);border:1px solid #9f8bff80;border-radius:9px;width:100%;padding:8px;font-size:.78rem;font-weight:700}.cv-run-btn:hover{filter:brightness(1.08)}.cv-run-btn.running{background:linear-gradient(90deg,#4a5578,#5b6896)}.cv-empty{color:var(--text-muted);text-align:center;padding:16px 8px;font-size:.72rem}.cv-compare-stage{border:1px solid var(--surface-border);background:#03060a;border-radius:8px;min-height:80px;position:relative;overflow:hidden}.cv-compare-img{object-fit:contain;width:100%;max-height:180px;display:block}.cv-compare-clip .cv-compare-img{width:100%;height:100%;position:absolute;inset:0}.cv-compare-divider{background:#f4f7fbe6;width:2px;position:absolute;top:0;bottom:0;transform:translate(-1px)}.cv-compare-range{width:100%}.cv-painter{border:1px solid var(--surface-border);background:var(--panel-raised);border-radius:16px;flex-direction:column;width:min(900px,92vw);max-height:90vh;display:flex;overflow:hidden}.cv-painter-head{border-bottom:1px solid var(--surface-border);justify-content:space-between;align-items:center;padding:12px 16px;font-weight:600;display:flex}.cv-painter-stage{background:#03060a;flex:1;place-items:center;min-height:0;padding:16px;display:grid;overflow:auto}.cv-painter-canvas{cursor:crosshair;touch-action:none;border-radius:8px;max-width:100%;max-height:64vh}.cv-painter-tools{border-top:1px solid var(--surface-border);align-items:center;gap:14px;padding:12px 16px;font-size:.78rem;display:flex}.cv-painter-tools label{color:var(--text-secondary);align-items:center;gap:6px;display:flex}.cv-flow .react-flow__controls{border-radius:10px;overflow:hidden;box-shadow:0 8px 24px #00000080}.cv-flow .react-flow__controls-button{border-bottom:1px solid var(--surface-border);color:var(--text-secondary);fill:var(--text-secondary);background:#111825f5}.cv-flow .react-flow__controls-button:hover{background:#7a5cff33}.cv-flow .react-flow__minimap{border:1px solid var(--surface-border);background:#080c13eb;border-radius:10px}.cv-shell{--cv-node-scale:1;background:radial-gradient(circle at 18% 10%,#5c7dff14,#0000 28%),linear-gradient(#05090ffa,#04080efa);flex:1;min-height:0;display:flex}.cv-shell.palette-collapsed{grid-template-columns:auto 1fr}.cv-palette{background:#080c14db;border-right:1px solid #8694b429;flex-direction:column;gap:12px;width:248px;padding:14px 12px;display:flex;overflow:auto}.cv-palette-rail{width:42px;min-width:42px;color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:#080c14e6;border:0;border-right:1px solid #8694b429;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:12px 0;font-size:.68rem;display:flex}.cv-palette-rail span{writing-mode:vertical-rl}.cv-palette-rail:hover{color:var(--text-primary);background:#121823f5}.cv-palette-top{justify-content:space-between;align-items:center;gap:10px;padding:2px 2px 8px;display:flex}.cv-palette-top-title{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-size:.64rem;font-weight:800}.cv-palette-collapse{width:26px;height:26px;color:var(--text-secondary);cursor:pointer;background:#ffffff0a;border:1px solid #8694b433;border-radius:8px;place-items:center;transition:background-color .14s,color .14s;display:grid}.cv-palette-collapse:hover{color:var(--text-primary);background:#7a5cff24;border-color:#7a5cff66}.cv-nav-toggle{z-index:6;height:30px;color:var(--text-secondary);cursor:pointer;background:#0a0e16eb;border:1px solid #8694b438;border-radius:9px;align-items:center;gap:6px;padding:0 9px;transition:background-color .14s,color .14s,border-color .14s;display:inline-flex;position:absolute;bottom:168px;right:14px;box-shadow:0 8px 20px #00000059}.cv-nav-toggle:hover{color:var(--text-primary);background:#7a5cff29;border-color:#7a5cff6b}.cv-nav-toggle.is-collapsed{bottom:14px}.cv-nav-toggle-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:.62rem}.cv-panel{background:#070b12b8;border:1px solid #8d9abe2e;border-radius:12px;overflow:hidden}.cv-panel-head{width:100%;min-height:38px;color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:#111722d1;border:0;justify-content:space-between;align-items:center;gap:10px;padding:0 10px;font-size:.66rem;font-weight:800;display:flex}.cv-panel-head:hover{color:var(--text-primary)}.cv-panel-body{flex-direction:column;gap:10px;padding:10px;display:flex}.cv-nodes-panel-body{gap:14px}.cv-palette-group{gap:7px}.cv-palette-label{letter-spacing:.13em;font-size:.62rem}.cv-palette-btn{color:#c8d1e3;background:#121823eb;border:1px solid #8d9abe2e;border-radius:8px;min-height:38px;padding:9px 10px;line-height:1.2}.cv-palette-btn:hover{background:#1a2333fa;border-color:#82daff61}.cv-presets-group{border-bottom:1px solid #8694b424;padding-bottom:12px}.cv-preset-save{grid-template-columns:1fr auto;gap:6px;display:grid}.cv-preset-save input,.cv-search-input{min-width:0;color:var(--text-primary);font:inherit;background:#03070dd1;border:1px solid #8d9abe33;border-radius:8px;padding:8px 9px}.cv-preset-save button,.cv-preset-delete,.cv-tool-btn,.cv-search-head button{color:#d6deef;cursor:pointer;background:#181f2df0;border:1px solid #8d9abe38;border-radius:8px}.cv-preset-save button{padding:0 10px;font-weight:700}.cv-presets-list{flex-direction:column;gap:6px;max-height:190px;display:flex;overflow:auto}.cv-preset-item{grid-template-columns:1fr 28px;gap:6px;display:grid}.cv-preset-item>button:first-child{min-width:0;color:var(--text-secondary);text-align:left;cursor:pointer;background:#ffffff09;border:1px solid #8d9abe29;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 9px;display:flex}.cv-preset-item span{text-overflow:ellipsis;white-space:nowrap;width:100%;overflow:hidden}.cv-preset-item small,.cv-presets-empty{color:var(--text-muted);font-size:.66rem}.cv-preset-delete{width:28px;padding:0}.cv-flow{flex:1;min-width:0;position:relative;overflow:hidden}.cv-toolbar{z-index:12;pointer-events:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;top:12px;left:14px;right:14px}.cv-toolbar-left{pointer-events:auto;background:#080c14e0;border:1px solid #8d9abe2e;border-radius:12px;align-items:center;gap:8px;padding:7px;display:flex;box-shadow:0 14px 34px #00000057}.cv-tool-btn{min-height:30px;padding:0 12px;font-size:.76rem;font-weight:700}.cv-tool-btn.primary{color:#f7f4ff;background:#7257ef;border-color:#a894ff7a}.cv-tool-btn.danger{color:#ffd2d2}.cv-tool-btn:disabled{opacity:.45;cursor:not-allowed}.cv-hint{z-index:9;background:#0b111ce0;border-radius:12px;top:68px}.cv-flow .react-flow{background:radial-gradient(circle at 50% 20%,#2b385229,#0000 38%),#060a11}.cv-flow .react-flow__edge-path{stroke:#7e68ff;stroke-width:2.2px}.cv-edge-group{cursor:pointer}.cv-edge-group.hovered .react-flow__edge-path,.cv-flow .react-flow__edge:hover .react-flow__edge-path{stroke:#82daff;stroke-width:2.8px;filter:drop-shadow(0 0 8px #82daff8c)}.cv-flow .react-flow__edgelabel-renderer{z-index:18;pointer-events:none}.cv-edge-delete{z-index:15;color:#ffd6d6;cursor:pointer;pointer-events:all;opacity:0;visibility:visible;background:#1a090ff0;border:1px solid #f8717173;border-radius:999px;place-items:center;width:24px;height:24px;font-size:.78rem;font-weight:800;line-height:1;transition:opacity .14s,transform .14s,visibility .14s;display:grid;position:absolute;box-shadow:0 8px 24px #0000006b,0 0 0 3px #f8717114}.cv-edge-delete.visible,.cv-edge-delete:hover{opacity:1}.cv-edge-delete:hover{background:#3c111cfa;border-color:#f87171bd}.cv-flow .react-flow__connection-path{stroke:#8b78ff;stroke-width:2.4px}.cv-flow .react-flow__handle{border:2px solid var(--accent-strong);background:#0a0f18;width:13px;height:13px;transition:background-color .14s,box-shadow .14s,transform .14s;box-shadow:0 0 0 3px #7a5cff29,0 0 10px #7a5cff80}.cv-flow .react-flow__handle:hover,.cv-flow .react-flow__handle.connecting{background:var(--accent-strong);transform:scale(1.12);box-shadow:0 0 0 4px #7a5cff3d,0 0 14px #7a5cffb3}.cv-flow .react-flow__handle-left{left:calc(-7px * var(--cv-node-scale))}.cv-flow .react-flow__handle-right{right:calc(-7px * var(--cv-node-scale))}.cv-node{box-sizing:border-box;border-radius:calc(16px * var(--cv-node-scale));width:100%;min-width:0;height:100%;min-height:170px;color:var(--text-primary);font-size:calc(.78rem * var(--cv-node-scale));background:linear-gradient(#161d2cfa,#090e17fc),#0a0f18;border:1px solid #8697be3d;flex-direction:column;display:flex;position:relative;overflow:visible;box-shadow:0 18px 50px #0000006b,inset 0 1px #ffffff0d}.cv-corner-resize{border:2px solid var(--accent-strong);z-index:12;background:#08111e;border-radius:4px;width:14px;height:14px;padding:0;position:absolute;box-shadow:0 0 0 3px #7a5cff29,0 0 12px #7a5cff80}.cv-corner-top-left{top:-7px;left:-7px}.cv-corner-top-right{top:-7px;right:-7px}.cv-corner-bottom-left{bottom:-7px;left:-7px}.cv-corner-bottom-right{bottom:-7px;right:-7px}.cv-corner-top-left,.cv-corner-bottom-right{cursor:nwse-resize}.cv-corner-top-right,.cv-corner-bottom-left{cursor:nesw-resize}.cv-node-workflow.status-running{border-color:#7a5cffb8;box-shadow:0 18px 50px #0000006b,0 0 0 1px #7a5cff24}.cv-node-workflow.status-done{border-color:#4ade808c}.cv-node-workflow.status-error{border-color:#f87171ad}.cv-node-workflow.status-cancelled{border-color:#facc1573}.cv-node-head{min-height:calc(56px * var(--cv-node-scale));align-items:center;gap:calc(9px * var(--cv-node-scale));padding:calc(10px * var(--cv-node-scale)) calc(12px * var(--cv-node-scale));border-radius:calc(16px * var(--cv-node-scale)) calc(16px * var(--cv-node-scale)) 0 0;background:linear-gradient(#32355d80,#1c213780);border-bottom:1px solid #8694b424;grid-template-columns:auto minmax(0,1fr) auto auto;display:grid}.cv-node-icon{color:#c7bbff;place-items:center;display:grid}.cv-node-head-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.cv-node-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--font-display);font-weight:800;font-size:calc(.9rem * var(--cv-node-scale));overflow:hidden}.cv-node-subtitle{text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:calc(.62rem * var(--cv-node-scale));overflow:hidden}.cv-node-x{width:calc(24px * var(--cv-node-scale));height:calc(24px * var(--cv-node-scale));color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px}.cv-node-x:hover{color:#ffb4b4;background:#f8717114;border-color:#f8717140}.cv-node-tool{width:calc(28px * var(--cv-node-scale));height:calc(28px * var(--cv-node-scale));border-radius:calc(8px * var(--cv-node-scale));color:#d8d0ff;cursor:pointer;background:#ffffff09;border:1px solid #8694b42e;place-items:center;display:grid}.cv-node-tool:hover,.cv-node-tool.active{color:#efeaff;background:#7a5cff24;border-color:#7a5cff6b}.cv-status-pill{max-width:calc(92px * var(--cv-node-scale));padding:calc(3px * var(--cv-node-scale)) calc(7px * var(--cv-node-scale));color:#c7d1e5;font-size:calc(.58rem * var(--cv-node-scale));white-space:nowrap;background:#8d9abe1f;border-radius:999px;justify-self:end;align-items:center;font-weight:800;display:inline-flex}.cv-status-pill.status-running{color:var(--accent-soft);background:#7a5cff24}.cv-status-pill.status-done{color:#96f4b1;background:#4ade801f}.cv-status-pill.status-error{color:#ffb4b4;background:#f871711f}.cv-status-pill.status-cancelled{color:#ffe08a;background:#facc151f}.cv-node-body{gap:calc(10px * var(--cv-node-scale));min-height:0;padding:calc(12px * var(--cv-node-scale));padding-bottom:calc(16px * var(--cv-node-scale));flex-direction:column;flex:1;display:flex;overflow:auto}.cv-node-canvas{min-height:calc(128px * var(--cv-node-scale));border-radius:calc(10px * var(--cv-node-scale));background-color:#04070d;background-image:linear-gradient(45deg,#ffffff06 25%,#0000 25%),linear-gradient(-45deg,#ffffff06 25%,#0000 25%),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:18px 18px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:1px solid #8694b42e;flex:auto;place-items:center;display:grid;position:relative;overflow:hidden}.cv-node-canvas img{object-fit:contain;width:100%;height:100%;max-height:none;display:block}.cv-thumb img{width:100%;max-height:calc(190px * var(--cv-node-scale));object-fit:contain;display:block}.cv-node-empty,.cv-drop{justify-content:center;align-items:center;gap:calc(9px * var(--cv-node-scale));min-height:calc(118px * var(--cv-node-scale));width:100%;height:100%;color:var(--text-muted);text-align:center;font-size:calc(.72rem * var(--cv-node-scale));background:0 0;border:0;flex-direction:column;display:flex}.cv-drop{cursor:pointer}.cv-drop:hover{color:var(--text-primary)}.cv-node-canvas.cv-drag-active{border-color:#7a5cffb3;box-shadow:inset 0 0 0 2px #7a5cff73}.cv-node-canvas.cv-drag-active .cv-drop{color:var(--accent-soft)}.cv-drop-overlay{color:var(--accent-soft);pointer-events:none;background:#080b12a8;place-items:center;font-size:.78rem;font-weight:700;display:grid;position:absolute;inset:0}.cv-node-timer{color:var(--accent-soft);font-family:var(--font-mono);background:#7a5cff1f;border:1px solid #7a5cff38;border-radius:999px;align-self:flex-start;align-items:center;gap:5px;padding:3px 8px;font-size:.62rem;font-weight:700;display:inline-flex}.cv-node-timer.running{animation:1.4s ease-in-out infinite cv-timer-pulse}@keyframes cv-timer-pulse{0%,to{opacity:.75}50%{opacity:1}}.cv-tool-icon-btn{place-items:center;width:34px;padding:0;display:inline-grid}.cv-tool-icon-btn:disabled{opacity:.4;cursor:not-allowed}.cv-node-compare .cv-node-body,.cv-node-save .cv-node-body{overflow:hidden}.cv-preview-tags{left:calc(8px * var(--cv-node-scale));bottom:calc(8px * var(--cv-node-scale));flex-wrap:wrap;gap:5px;display:flex;position:absolute}.cv-preview-tags span{color:#d8e2f3;font-size:calc(.58rem * var(--cv-node-scale));background:#03070dc2;border:1px solid #ffffff1a;border-radius:999px;padding:3px 7px;font-weight:700}.cv-node-busy{place-items:center;gap:calc(8px * var(--cv-node-scale));padding:calc(16px * var(--cv-node-scale));color:#e9f7ff;text-align:center;background:#03070db8;font-weight:800;display:grid;position:absolute;inset:0}.cv-node-busy>span:last-child{text-overflow:ellipsis;white-space:nowrap;text-shadow:0 8px 22px #000000b8;max-width:86%;overflow:hidden}.cv-progress-ring{color:var(--accent-soft);place-items:center;display:grid;position:relative}.cv-progress-ring-svg{position:absolute;inset:0;transform:rotate(-90deg)}.cv-progress-ring-svg.spinning{animation:.95s linear infinite cv-spin}.cv-progress-ring-track,.cv-progress-ring-fill{fill:none}.cv-progress-ring-track{stroke:#82daff2e}.cv-progress-ring-fill{stroke:#82daff;filter:drop-shadow(0 0 7px #82daff85);transition:stroke-dashoffset .22s}.cv-progress-ring span{font-family:var(--font-display);font-size:calc(.66rem * var(--cv-node-scale));color:#f2fbff;font-weight:800}.cv-spinner{width:calc(24px * var(--cv-node-scale));height:calc(24px * var(--cv-node-scale));border:3px solid #82daff38;border-top-color:#82daff;border-radius:999px;animation:.85s linear infinite cv-spin}@keyframes cv-spin{to{transform:rotate(360deg)}}.cv-node-meta{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;display:grid}.cv-node-meta span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-muted);font-size:calc(.62rem * var(--cv-node-scale));background:#ffffff09;border-radius:8px;padding:6px 8px;overflow:hidden}.cv-field{gap:calc(5px * var(--cv-node-scale));flex-direction:column;display:flex}.cv-field>span{font-size:calc(.62rem * var(--cv-node-scale));color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.cv-field textarea,.cv-field input,.cv-seed-toggle{width:100%;min-height:calc(42px * var(--cv-node-scale));border-radius:calc(9px * var(--cv-node-scale));color:var(--text-primary);padding:calc(8px * var(--cv-node-scale)) calc(10px * var(--cv-node-scale));font-size:calc(.76rem * var(--cv-node-scale));font-family:var(--font-body);resize:vertical;background:#00000047;border:1px solid #8694b42e}.cv-seed-toggle{cursor:pointer;justify-content:center;align-items:center;font-weight:800;display:inline-flex}.cv-seed-toggle.active{color:#f5f1ff;background:#7a5cff38;border-color:#a894ff70}.cv-field textarea{min-height:calc(92px * var(--cv-node-scale))}.cv-field textarea:focus,.cv-field input:focus,.cv-seed-toggle:focus{border-color:#82daff75;outline:none}.cv-node-actions{grid-template-columns:repeat(auto-fit, minmax(calc(76px * var(--cv-node-scale)), 1fr));gap:calc(7px * var(--cv-node-scale));display:grid}.cv-btn,.cv-run-btn{min-width:0;min-height:calc(38px * var(--cv-node-scale));padding:calc(8px * var(--cv-node-scale)) calc(10px * var(--cv-node-scale));border-radius:calc(9px * var(--cv-node-scale));white-space:nowrap;text-overflow:ellipsis;line-height:1.15;overflow:hidden}.cv-btn{color:#c9d4e8;font-size:calc(.72rem * var(--cv-node-scale));cursor:pointer;background:#ffffff0b;border:1px solid #8694b433}.cv-btn:disabled{opacity:.45;cursor:not-allowed}.cv-btn:hover:not(:disabled){color:var(--text-primary);border-color:#82daff61}.cv-run-btn{color:#fff;font-weight:800;font-size:calc(.78rem * var(--cv-node-scale));cursor:pointer;background:#7357ef;border:1px solid #a894ff7a}.cv-run-btn.running{color:#ffd6d6;background:#f871712e;border-color:#f8717175}.cv-run-btn:disabled{opacity:.5;cursor:not-allowed}.cv-error{color:#ffc0c0;font-size:calc(.7rem * var(--cv-node-scale));line-height:1.45}.cv-error.muted{color:#ffe08a}.cv-port-hint{z-index:2;max-width:calc(56px * var(--cv-node-scale));text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-family:var(--font-mono);font-size:calc(.55rem * var(--cv-node-scale));pointer-events:none;background:#04080ee6;border:1px solid #8694b42e;border-radius:999px;padding:2px 5px;position:absolute;overflow:hidden}.cv-port-in{left:calc(-44px * var(--cv-node-scale));top:calc(94px * var(--cv-node-scale));text-align:right}.cv-port-in.second{top:calc(122px * var(--cv-node-scale))}.cv-port-out{right:calc(-62px * var(--cv-node-scale));bottom:calc(29px * var(--cv-node-scale))}.cv-port-out.second{bottom:calc(1px * var(--cv-node-scale))}.cv-port-out.top{bottom:auto;top:calc(94px * var(--cv-node-scale))}.cv-port-out.top.second{top:calc(122px * var(--cv-node-scale))}.cv-compare-stage{min-height:calc(178px * var(--cv-node-scale));border-radius:calc(10px * var(--cv-node-scale));cursor:ew-resize;-webkit-user-select:none;user-select:none;touch-action:none;background:#03060a;border:1px solid #8694b42e;flex:auto;position:relative;overflow:hidden}.cv-compare-img{object-fit:cover;object-position:center;width:100%;max-width:none;height:100%;max-height:none;display:block;position:absolute;inset:0}.cv-compare-clip{position:absolute;inset:0;overflow:hidden}.cv-compare-clip .cv-compare-img{position:absolute;inset:0}.cv-compare-divider{pointer-events:none;background:#f4f7fbe6;width:2px;position:absolute;top:0;bottom:0;transform:translate(-1px);box-shadow:0 0 10px #7a5cff8c}.cv-compare-grip{background:var(--accent);border:2px solid #f5f7fbfa;border-radius:999px;width:15px;height:15px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 3px #7a5cff4d,0 6px 16px #00000073}.cv-compare-stage{cursor:ew-resize}.cv-compare-label{top:calc(8px * var(--cv-node-scale));z-index:4;color:var(--text-secondary);font-family:var(--font-mono);font-size:calc(.56rem * var(--cv-node-scale));pointer-events:none;background:#03070db8;border-radius:999px;padding:3px 7px;position:absolute}.cv-compare-label-before{left:calc(8px * var(--cv-node-scale))}.cv-compare-label-after{right:calc(8px * var(--cv-node-scale))}.cv-compare-range{width:100%;margin:0}.cv-compare-overlay{z-index:9000;cursor:ew-resize;-webkit-user-select:none;user-select:none;touch-action:none;background:#020408f5;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cv-compare-overlay-stage{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.cv-compare-overlay-stage .cv-compare-img{object-fit:contain;object-position:center}.cv-compare-overlay-stage .cv-compare-label{padding:5px 12px;font-size:.8rem;top:20px}.cv-compare-overlay-stage .cv-compare-label-before{left:20px}.cv-compare-overlay-stage .cv-compare-label-after{right:20px}.cv-compare-overlay-stage .cv-compare-grip{width:24px;height:24px}.cv-compare-overlay-close{z-index:9001;color:var(--text-secondary);cursor:pointer;background:#141824d9;border:1px solid #8694b447;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;transition:background .15s,color .15s;display:flex;position:absolute;top:18px;right:18px}.cv-compare-overlay-close:hover{color:#fff;background:#7a5cff33}.cv-search-popover{z-index:30;background:#0a0f18fa;border:1px solid #8d9abe3d;border-radius:14px;width:326px;position:absolute;overflow:hidden;box-shadow:0 24px 60px #00000085}.cv-search-head{border-bottom:1px solid #8d9abe24;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-weight:800;display:flex}.cv-search-head button{width:26px;height:26px}.cv-search-input{width:calc(100% - 20px);margin:10px}.cv-search-list{flex-direction:column;gap:5px;max-height:330px;padding:0 10px 10px;display:flex;overflow:auto}.cv-search-list button{color:var(--text-secondary);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:9px;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:9px;padding:9px;display:grid}.cv-search-list button:hover{background:#82daff12;border-color:#82daff3d}.cv-search-list strong,.cv-search-list small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.cv-search-list strong{color:var(--text-primary);font-size:.78rem}.cv-search-list small{color:var(--text-muted);font-size:.66rem}.cv-search-empty{color:var(--text-muted);padding:12px;font-size:.75rem}.cv-painter{background:#0b1019fa;border-radius:16px}.run-mode-toggle{border:1px solid var(--surface-border);background:#ffffff0d;border-radius:12px;gap:4px;margin-bottom:10px;padding:3px;display:flex}.run-mode-option{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;padding:7px 8px;font-size:.74rem;font-weight:600;transition:background .15s,color .15s}.run-mode-option:hover{color:var(--text-primary,#fff)}.run-mode-option.active{color:#0b1019;background:linear-gradient(135deg,#8b5cf6,#45d6ff)}.run-mode-hint{color:var(--text-muted);margin-bottom:10px;font-size:.7rem;line-height:1.4}.link-btn{color:#45d6ff;font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.cloud-auth-card{width:min(420px,92vw)!important;padding:26px!important}.cloud-auth-card .modal-title{font-family:var(--font-display);margin:0 0 6px;font-size:1.2rem}.cloud-auth-card .modal-subtitle{color:var(--text-muted);margin:0 0 18px;font-size:.8rem;line-height:1.45}.cloud-auth-form{flex-direction:column;gap:6px;display:flex}.cloud-auth-form label{color:var(--text-muted);margin-top:8px;font-size:.72rem;font-weight:600}.cloud-auth-form input{border:1px solid var(--surface-border);color:var(--text-primary,#fff);background:#ffffff0a;border-radius:10px;padding:10px 12px;font-size:.85rem}.cloud-auth-form .primary-btn{color:#0b1019;cursor:pointer;background:linear-gradient(135deg,#8b5cf6,#45d6ff);border:none;border-radius:12px;margin-top:16px;padding:11px;font-size:.85rem;font-weight:700}.cloud-auth-form .primary-btn:disabled{opacity:.6;cursor:default}.cloud-auth-error{color:#ff8d8d;background:#ff5a5a1f;border-radius:9px;margin-top:12px;padding:9px 11px;font-size:.76rem}.cloud-auth-switch,.cloud-auth-close{width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:none;margin-top:12px;font-size:.76rem;display:block}.cloud-auth-switch{color:#45d6ff}.host-panel{width:100%;max-width:980px;margin:0 auto;padding:28px 32px;overflow-y:auto}.host-panel-head{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px;display:flex}.host-title{font-family:var(--font-display);margin:0 0 6px;font-size:1.5rem}.host-subtitle{color:var(--text-muted);max-width:620px;margin:0;font-size:.82rem;line-height:1.5}.host-state-badge{white-space:nowrap;border:1px solid var(--surface-border);border-radius:999px;align-items:center;gap:7px;padding:7px 13px;font-size:.76rem;font-weight:600;display:inline-flex}.host-state-badge .host-state-dot{background:var(--text-muted);border-radius:50%;width:8px;height:8px}.host-state-badge.ok{color:#4ade80}.host-state-badge.ok .host-state-dot{background:#4ade80;box-shadow:0 0 8px #4ade80}.host-state-badge.warn{color:#fbbf24}.host-state-badge.warn .host-state-dot{background:#fbbf24}.host-state-badge.idle{color:var(--text-muted)}.host-warning{color:#fbbf24;background:#fbbf241f;border-radius:12px;margin-bottom:18px;padding:12px 14px;font-size:.8rem}.host-warning code{background:#0000004d;border-radius:5px;padding:1px 6px}.host-grid{grid-template-columns:1.3fr 1fr;gap:18px;display:grid}@media (width<=820px){.host-grid{grid-template-columns:1fr}}.host-card{border:1px solid var(--surface-border);background:#ffffff08;border-radius:18px;padding:18px}.host-card label{color:var(--text-muted);margin:12px 0 5px;font-size:.72rem;font-weight:600;display:block}.host-card .host-dim{opacity:.7;font-weight:400}.host-card input{border:1px solid var(--surface-border);width:100%;color:var(--text-primary,#fff);background:#ffffff0a;border-radius:9px;padding:9px 11px;font-size:.82rem}.host-card input:disabled{opacity:.55}.host-actions{align-items:center;gap:10px;margin-top:18px;display:flex}.host-actions .primary-btn{color:#0b1019;cursor:pointer;background:linear-gradient(135deg,#8b5cf6,#45d6ff);border:none;border-radius:11px;padding:10px 18px;font-size:.82rem;font-weight:700}.host-actions .danger-btn{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:11px;padding:10px 18px;font-size:.82rem;font-weight:700}.host-actions .ghost-btn{border:1px solid var(--surface-border);color:var(--text-primary,#fff);cursor:pointer;background:0 0;border-radius:11px;padding:10px 16px;font-size:.82rem}.host-actions button:disabled{opacity:.5;cursor:default}.host-saved{color:#4ade80;font-size:.76rem}.host-status-list{margin:0;padding:0;list-style:none}.host-status-list li{border-bottom:1px solid var(--surface-border);justify-content:space-between;align-items:center;padding:9px 0;font-size:.82rem;display:flex}.host-status-list li:last-child{border-bottom:none}.host-status-list span{color:var(--text-muted)}.host-status-list strong{font-weight:600}.host-status-list strong.ok{color:#4ade80}.host-status-list strong.warn{color:#fbbf24}.host-status-list strong.idle{color:var(--text-muted)}.host-error{color:#ff8d8d;background:#ef44441f;border-radius:9px;margin-top:12px;padding:9px 11px;font-size:.78rem}.host-lastjob{color:var(--text-muted);margin-top:10px;font-size:.74rem}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}
