:root{--bg:#0b0c0f;--backdrop:#0f1115;--panel:#14161b;--panel-2:#1a1d23;--panel-3:#21252c;--line:#242831;--line-2:#2e333d;--text:#e8eaef;--text-2:#aeb4bf;--text-3:#767d8a;--accent:#2cc5e8;--accent-hover:#5ad4f0;--accent-soft:#2cc5e821;--accent-line:#2cc5e866;--danger:#f06b6b;--danger-soft:#f06b6b1c;--warn:#f2b33d;--warn-soft:#f2b33d1a;--ok:#3fd49b;--g-source:#a78bfa;--g-extract:#2cc5e8;--g-moire:#f472b6;--g-project:#f2b33d;--g-post:#3fd49b;--g-compose:#6ea8fe;--g-legacy:#8b93a1;--radius:9px;--radius-sm:6px;--font:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Code", "Segoe UI Mono", Consolas, monospace;--shadow:0 16px 48px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.45 var(--font);-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}::selection{background:#2cc5e84d}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#2a2e37 padding-box padding-box;border:3px solid #0000;border-radius:10px}::-webkit-scrollbar-thumb:hover{background-color:#3a3f4a}::-webkit-scrollbar-track{background:0 0}.muted{color:var(--text-3)}.spacer{flex:1}.mono{font-family:var(--mono)}.studio{grid-template-rows:48px minmax(0,1fr);grid-template-columns:296px minmax(0,1fr) 336px;height:100vh;display:grid}.panel{background:var(--panel);flex-direction:column;min-height:0;display:flex}.panel-left{border-right:1px solid var(--line)}.panel-right{border-left:1px solid var(--line)}.section{border-bottom:1px solid var(--line);padding:12px}.section-grow{border-bottom:0;flex:1;min-height:0;padding-bottom:24px;overflow:auto}.section-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-size:11px;font-weight:600}.topbar{background:var(--panel);border-bottom:1px solid var(--line);grid-column:1/-1;align-items:center;gap:6px;min-width:0;padding:0 10px;display:flex}.brand{letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:9px;padding-right:6px;font-weight:650;display:flex}.brand-mark{background:conic-gradient(from 210deg,#2cc5e8,#a78bfa,#f472b6,#f2b33d,#2cc5e8);border-radius:6px;place-items:center;width:22px;height:22px;display:grid}.brand-mark:after{content:"";background:var(--panel);border-radius:50%;width:9px;height:9px}.brand small{color:var(--text-3);font-weight:500}.topbar-sep{background:var(--line);flex:none;width:1px;height:22px;margin:0 4px}.recipe-name{border-radius:var(--radius-sm);text-overflow:ellipsis;background:0 0;border:1px solid #0000;outline:none;width:220px;min-width:80px;height:30px;padding:0 8px;font-weight:550}.recipe-name:hover{border-color:var(--line-2)}.recipe-name:focus{border-color:var(--accent);background:var(--bg)}.run-status{color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:7px;padding:0 8px;font-size:12px;display:flex}.status-dot{background:var(--text-3);border-radius:50%;flex:none;width:7px;height:7px}.status-dot.ok{background:var(--ok)}.status-dot.busy{background:var(--accent);animation:1s ease-in-out infinite pulse}.status-dot.error{background:var(--danger)}.btn{border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--panel-2);height:30px;color:var(--text);cursor:pointer;white-space:nowrap;flex:none;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-weight:500;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--panel-3);border-color:#3b414d}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#031418;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--panel-3);color:var(--text);border-color:#0000}.btn-danger{color:var(--danger)}.btn-sm{height:26px;padding:0 8px;font-size:12px}.icon-btn{width:30px;padding:0}.icon-btn.btn-sm{width:26px}.icon{flex:none;display:block}.input,.select{border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--bg);outline:none;min-width:0;height:28px;padding:0 8px;transition:border-color .12s}.input:hover,.select:hover{border-color:#3b414d}.input:focus,.select:focus{border-color:var(--accent)}.input-full{width:100%}.select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23767d8a' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;width:100%;padding-right:26px}.select option{background:var(--panel-2)}.num{text-align:right;width:72px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12px}.num-wrap{align-items:center;gap:5px;display:inline-flex}.unit{color:var(--text-3);white-space:nowrap;font-size:11px}.range{appearance:none;cursor:pointer;background:0 0;width:100%;height:18px;margin:4px 0 0;display:block}.range::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--fill), var(--line-2) var(--fill));border-radius:2px;height:4px}.range::-webkit-slider-thumb{-webkit-appearance:none;background:#f3f5f8;border:0;border-radius:50%;width:14px;height:14px;margin-top:-5px;box-shadow:0 0 0 3px #2cc5e859,0 1px 3px #00000080}.range:hover::-webkit-slider-thumb{box-shadow:0 0 0 4px #2cc5e873,0 1px 3px #00000080}.range::-moz-range-track{background:var(--line-2);border-radius:2px;height:4px}.range::-moz-range-progress{background:var(--accent);border-radius:2px;height:4px}.range::-moz-range-thumb{background:#f3f5f8;border:0;border-radius:50%;width:14px;height:14px;box-shadow:0 0 0 3px #2cc5e859}.switch{background:var(--line-2);cursor:pointer;border:0;border-radius:9px;flex:none;width:30px;height:18px;padding:0;transition:background .15s;position:relative}.switch span{background:#d7dbe2;border-radius:50%;width:14px;height:14px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.switch.on{background:var(--accent)}.switch.on span{background:#fff;transform:translate(12px)}.switch:disabled{opacity:.4;cursor:not-allowed}.color-input{border:1px solid var(--line-2);border-radius:var(--radius-sm);cursor:pointer;background:0 0;flex:none;width:28px;height:28px;padding:0}.color-input::-webkit-color-swatch-wrapper{padding:3px}.color-input::-webkit-color-swatch{border:0;border-radius:4px}.color-input::-moz-color-swatch{border:0;border-radius:4px}.swatch{border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 1px #ffffff52}.badge{background:var(--panel-3);height:18px;color:var(--text-2);white-space:nowrap;border-radius:9px;align-items:center;padding:0 7px;font-size:10.5px;font-weight:550;display:inline-flex}.badge-accent{background:var(--accent-soft);color:var(--accent)}.kbd{font-family:var(--mono);border:1px solid var(--line-2);background:var(--panel-2);color:var(--text-2);border-radius:4px;padding:1px 5px;font-size:11px}.asset-row{border-radius:var(--radius-sm);align-items:center;gap:9px;padding:5px 4px;display:flex}.asset-row+.asset-row{margin-top:2px}.asset-thumb{background:var(--panel-2);border:1px solid var(--line);width:36px;height:36px;color:var(--text-3);border-radius:6px;flex:none;place-items:center;display:grid;overflow:hidden}.asset-thumb img{object-fit:cover;width:100%;height:100%}.asset-info{flex:1;min-width:0}.asset-name{white-space:nowrap;text-overflow:ellipsis;font-weight:550;overflow:hidden}.asset-detail{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.stage-list{flex-direction:column;gap:2px;display:flex}.stage{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;outline:none;align-items:center;gap:6px;min-height:42px;padding:5px 5px 5px 12px;display:flex;position:relative}.stage:before{content:"";background:var(--group-color,var(--g-legacy));border-radius:2px;width:3px;position:absolute;top:9px;bottom:9px;left:4px}.stage:hover{background:var(--panel-2)}.stage:focus-visible{border-color:var(--accent-line)}.stage.selected{background:var(--accent-soft);border-color:var(--accent-line)}.stage.disabled .stage-label,.stage.disabled .stage-sub{opacity:.45}.stage.disabled .stage-label{text-decoration:line-through;-webkit-text-decoration-color:var(--text-3);text-decoration-color:var(--text-3)}.stage.failed{background:var(--danger-soft);border-color:#f06b6b8c}.stage.dragging{opacity:.4}.stage-grip{color:var(--text-3);cursor:grab;opacity:.6;margin-left:-4px;display:flex}.stage:hover .stage-grip{opacity:1}.stage-body{flex:1;min-width:0}.stage-label{white-space:nowrap;text-overflow:ellipsis;font-weight:550;overflow:hidden}.stage-sub{color:var(--text-3);white-space:nowrap;align-items:center;gap:5px;font-size:11.5px;display:flex;overflow:hidden}.stage-sub .sep{opacity:.5}.stage-time{font:10.5px var(--mono);color:var(--text-3);white-space:nowrap}.stage-actions{gap:1px;display:none}.stage:hover .stage-actions,.stage.selected .stage-actions,.stage:focus-within .stage-actions{display:flex}.stage:hover .stage-time,.stage.selected .stage-time,.stage:focus-within .stage-time{display:none}.stage-alert{color:var(--danger)}.drop-line{background:var(--accent);height:2px;box-shadow:0 0 6px var(--accent);border-radius:1px;margin:-2px 4px 0}.add-stage,.add-branch{border-radius:var(--radius-sm);border:1px dashed var(--line-2);width:100%;height:32px;color:var(--text-3);cursor:pointer;background:0 0;align-items:center;gap:6px;margin-top:4px;padding:0 10px;display:flex}.add-stage:hover,.add-branch:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.add-branch{border-style:dashed;width:calc(100% - 20px);height:26px;margin:2px 0 6px 20px;font-size:12px}.branch{border-left:1px solid var(--line-2);margin:2px 0 2px 18px;padding:2px 0 2px 8px}.branch-head{height:28px;color:var(--text-2);align-items:center;gap:6px;font-size:12px;display:flex}.branch-name{background:0 0;border:1px solid #0000;border-radius:5px;outline:none;flex:1;min-width:0;height:24px;padding:0 5px;font-weight:550}.branch-name:hover{border-color:var(--line-2)}.branch-name:focus{border-color:var(--accent);background:var(--bg)}.list-empty-hint{color:var(--text-3);padding:6px 10px;font-size:12px}.pipeline-empty{text-align:center;color:var(--text-3);padding:18px 10px 6px}.pipeline-empty strong{color:var(--text-2);margin-bottom:4px;display:block}.popover{z-index:55;background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:var(--shadow);animation:.1s ease-out pop;position:fixed}.menu{flex-direction:column;width:340px;max-height:min(540px,72vh);display:flex}.menu-search{border-bottom:1px solid var(--line);color:var(--text-3);align-items:center;gap:8px;padding:8px 10px;display:flex}.menu-search input{height:26px;color:var(--text);background:0 0;border:0;outline:none;flex:1}.menu-list{padding:4px;overflow:auto}.menu-group{color:var(--text-3);text-transform:uppercase;letter-spacing:.07em;align-items:center;gap:7px;padding:10px 8px 4px;font-size:10.5px;font-weight:600;display:flex}.menu-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;width:100%;padding:7px 9px;display:block}.menu-item.active{background:var(--panel-3)}.menu-item-label{font-weight:550}.menu-item-desc{color:var(--text-3);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:1px;font-size:11.5px;display:-webkit-box;overflow:hidden}.menu-empty{text-align:center;color:var(--text-3);padding:20px}.tabs{border-bottom:1px solid var(--line);flex:none;gap:2px;padding:0 8px;display:flex}.tab{height:40px;color:var(--text-3);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:0 12px;font-weight:550;display:flex}.tab:hover{color:var(--text-2)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.tab-count{color:var(--text-3);font-size:10.5px;font-weight:500}.inspector-scroll{scrollbar-gutter:stable;flex:1;min-height:0;overflow:auto}.inspector-head{border-bottom:1px solid var(--line);padding:14px 14px 12px}.inspector-kicker{text-transform:uppercase;letter-spacing:.08em;color:var(--group-color);align-items:center;gap:6px;font-size:10.5px;font-weight:650;display:flex}.inspector-title{letter-spacing:-.01em;margin:3px 0 4px;font-size:16px;font-weight:650}.inspector-desc{color:var(--text-2);margin:0;font-size:12.5px}.inspector-meta{color:var(--text-3);font-variant-numeric:tabular-nums;margin-top:8px;font-size:11.5px}.inspector-actions{color:var(--text-2);align-items:center;gap:8px;margin-top:10px;font-size:12px;display:flex}.fields{padding:4px 14px 24px}.field{border-bottom:1px solid #ffffff08;padding:8px 0}.field:last-child{border-bottom:0}.field-row{justify-content:space-between;align-items:center;gap:10px;min-height:26px;display:flex}.field-label{color:var(--text-2);align-items:center;gap:5px;min-width:0;font-size:12.5px;display:flex}.field-label>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.field-reset{cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:14px;height:14px;padding:0;display:grid}.field-reset:after{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px}.field-reset:hover:after{box-shadow:0 0 0 3px var(--accent-soft)}.field-control{align-items:center;gap:8px;margin-top:6px;display:flex}.field-inline-nums{gap:4px;display:flex}.field-inline-nums .num{width:58px}.inline-error{border-radius:var(--radius);background:var(--danger-soft);color:#f7b4b4;border:1px solid #f06b6b66;gap:9px;margin:12px 14px 0;padding:10px 12px;font-size:12.5px;display:flex}.inline-error .icon{color:var(--danger);margin-top:1px}.inline-note{border-radius:var(--radius);background:var(--panel-2);border:1px solid var(--line);color:var(--text-2);margin:12px 14px 0;padding:10px 12px;font-size:12.5px}.list-editor{border:1px solid var(--line);border-radius:var(--radius-sm);margin-top:6px;overflow:hidden}.list-editor table{border-collapse:collapse;width:100%}.list-editor th{text-align:left;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;background:var(--panel-2);padding:5px 4px;font-size:10.5px;font-weight:600}.list-editor td{padding:2px}.list-editor .num{background:0 0;border-color:#0000;width:100%;height:26px}.list-editor .num:hover{border-color:var(--line-2)}.list-editor .num:focus{border-color:var(--accent);background:var(--bg)}.list-remove{color:var(--text-3);cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;width:22px;height:22px;display:grid}.list-remove:hover{color:var(--danger);background:var(--danger-soft)}.list-add{border:0;border-top:1px solid var(--line);width:100%;height:28px;color:var(--text-3);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.list-add:hover{color:var(--accent);background:var(--accent-soft)}.list-empty{text-align:center;color:var(--text-3);padding:8px;font-size:12px}.panel-block{border-bottom:1px solid var(--line);padding:12px 14px}.panel-block h3{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin:0 0 10px;font-size:11px;font-weight:600}.pen-row{border-bottom:1px solid #ffffff08;grid-template-columns:18px 28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 0;display:grid}.pen-row:last-child{border-bottom:0}.pen-slot{font:11px var(--mono);color:var(--text-3);text-align:center}.pen-main{flex-direction:column;gap:4px;min-width:0;display:flex}.pen-line{align-items:center;gap:6px;min-width:0;display:flex}.pen-line .input{flex:1}.pen-meta{color:var(--text-3);align-items:center;gap:8px;font-size:11.5px;display:flex}.pen-id{font:11px var(--mono);color:var(--text-3);background:0 0;border-color:#0000;width:96px;height:22px;padding:0 4px}.pen-id:hover{border-color:var(--line-2)}.pen-tools{flex-direction:column;gap:1px;display:flex}.grid-2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.label-sm{color:var(--text-3);margin-bottom:4px;font-size:11.5px;display:block}.shortcuts{color:var(--text-2);grid-template-columns:1fr auto;gap:6px 12px;font-size:12px;display:grid}.viewport{background:var(--backdrop);flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.canvas-wrap{flex:1;min-height:0;position:relative;overflow:hidden}.canvas-wrap canvas{touch-action:none;cursor:grab;width:100%;height:100%;position:absolute;inset:0}.canvas-wrap.panning canvas{cursor:grabbing}.vp-toolbar,.vp-status{border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:3;background:#14161be0;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;top:10px}.vp-toolbar{left:10px}.vp-status{color:var(--text-2);font-variant-numeric:tabular-nums;gap:8px;padding:3px 3px 3px 10px;font-size:12px;right:10px}.vp-toggle.active{color:var(--accent);background:var(--accent-soft)}.vp-zoom{font:11.5px var(--mono);color:var(--text-2);text-align:center;cursor:pointer;background:0 0;border:0;border-radius:5px;min-width:50px;height:26px}.vp-zoom:hover{background:var(--panel-3)}.progress-track{z-index:4;height:2px;position:absolute;top:0;left:0;right:0;overflow:hidden}.progress-track:after{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);width:35%;animation:1.1s ease-in-out infinite slide;position:absolute;top:0;bottom:0}.spinner{border:2px solid var(--line-2);border-top-color:var(--accent);border-radius:50%;flex:none;width:13px;height:13px;animation:.7s linear infinite spin}.vp-center{pointer-events:none;z-index:2;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.vp-card{pointer-events:auto;text-align:center;border:1px solid var(--line-2);width:min(420px,100%);box-shadow:var(--shadow);background:#14161bf0;border-radius:14px;padding:22px}.vp-card-icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent);border-radius:12px;place-items:center;margin:0 auto 12px;display:grid}.vp-card h3{margin:0 0 6px;font-size:15px}.vp-card p{color:var(--text-2);margin:0 0 14px}.vp-card-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.vp-error{z-index:3;border-radius:var(--radius);width:min(560px,100% - 28px);box-shadow:var(--shadow);background:#261416f5;border:1px solid #f06b6b73;align-items:flex-start;gap:10px;padding:11px 12px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.vp-error .icon{color:var(--danger);margin-top:1px}.vp-error-body{flex:1;min-width:0}.vp-error-title{color:#fbc9c9;font-weight:600}.vp-error-msg{color:#e8b3b3;overflow-wrap:anywhere;margin-top:2px;font-size:12.5px}.drag-overlay{border:2px dashed var(--accent);z-index:6;pointer-events:none;color:var(--accent);background:#2cc5e812;border-radius:14px;place-items:center;font-size:15px;font-weight:600;display:grid;position:absolute;inset:10px}.vp-hint{border:1px solid var(--line);color:var(--text-2);z-index:2;white-space:nowrap;background:#14161be6;border-radius:16px;padding:7px 12px;font-size:12px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.stale canvas{filter:saturate(.6)opacity(.75)}.statsbar{border-top:1px solid var(--line);background:var(--panel);scrollbar-width:thin;flex:none;align-items:center;gap:6px;min-height:44px;padding:7px 10px;display:flex;overflow-x:auto}.pen-chip{border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:14px;flex:none;align-items:center;gap:7px;height:28px;padding:0 11px;font-size:12px;display:flex}.pen-chip:hover{border-color:#3b414d}.pen-chip.off{opacity:.45}.pen-chip.off .swatch{box-shadow:inset 0 0 0 1.5px var(--text-3);background:0 0!important}.pen-chip.off .chip-label{text-decoration:line-through;-webkit-text-decoration-color:var(--text-3);text-decoration-color:var(--text-3)}.chip-label{font-weight:550}.chip-stat{color:var(--text-2)}.chip-stat.muted{color:var(--text-3)}.stat-total{white-space:nowrap;color:var(--text-3);font-variant-numeric:tabular-nums;flex:none;padding-left:10px;font-size:12px}.stat-total b{color:var(--text);font-weight:600}.modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:60;background:#040507a8;place-items:center;padding:24px;animation:.12s ease-out fade;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line-2);width:min(900px,100%);max-height:calc(100vh - 48px);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;animation:.14s ease-out pop;display:flex}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 12px 12px 18px;display:flex}.modal-title{font-size:15px;font-weight:650}.modal-sub{color:var(--text-3);margin-top:1px;font-size:12.5px}.modal-body{padding:18px;overflow:auto}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:8px;padding:12px 18px;display:flex}.preset-grid{grid-template-columns:repeat(auto-fill,minmax(236px,1fr));gap:12px;display:grid}.preset-card{text-align:left;border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;border-radius:11px;padding:0;transition:border-color .12s,transform .12s;overflow:hidden}.preset-card:hover{border-color:var(--accent-line);transform:translateY(-1px)}.preset-art{background:#f8f6f1;width:100%;height:108px;display:block}.preset-info{padding:10px 12px 12px}.preset-name{justify-content:space-between;align-items:center;gap:8px;font-weight:600;display:flex}.preset-blurb{color:var(--text-3);margin-top:4px;font-size:12px}.export-grid{grid-template-columns:230px minmax(0,1fr);gap:18px;display:grid}.format-list{flex-direction:column;gap:8px;display:flex}.format-option{text-align:left;border-radius:var(--radius);border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;gap:10px;padding:11px 12px;display:flex}.format-option:hover{border-color:#3b414d}.format-option.active{border-color:var(--accent);background:var(--accent-soft)}.format-option .icon{color:var(--text-2);margin-top:1px}.format-option.active .icon{color:var(--accent)}.format-name{font-weight:600}.format-desc{color:var(--text-3);margin-top:2px;font-size:12px}.export-settings{flex-direction:column;gap:14px;min-width:0;display:flex}.segmented{background:var(--bg);border:1px solid var(--line-2);border-radius:7px;padding:2px;display:inline-flex}.segmented button{height:26px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:5px;padding:0 12px;font-weight:550}.segmented button.active{background:var(--panel-3);color:var(--text);box-shadow:0 1px 2px #0006}.settings-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.check-row{color:var(--text-2);cursor:pointer;align-items:center;gap:9px;display:flex}.summary-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12.5px}.summary-table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);border-bottom:1px solid var(--line);padding:6px 8px;font-size:10.5px;font-weight:600}.summary-table td{border-bottom:1px solid #ffffff0a;padding:7px 8px}.summary-table td.num-cell,.summary-table th.num-cell{text-align:right}.ack{border-radius:var(--radius);background:var(--warn-soft);color:#f1d7a4;cursor:pointer;border:1px solid #f2b33d59;gap:10px;padding:11px 12px;font-size:12.5px;display:flex}.ack input{accent-color:var(--warn);flex:none;margin-top:2px}.file-list{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.file-row{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:8px 10px;display:flex}.file-row:last-child{border-bottom:0}.file-name{min-width:0;font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.file-size{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:12px}.toasts{z-index:80;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(560px,100vw - 24px);display:flex;position:fixed;bottom:58px;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;background:var(--panel-3);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:10px;max-width:100%;padding:8px 8px 8px 12px;animation:.14s ease-out pop;display:flex}.toast.error{border-color:#f06b6b80}.toast.error>.icon{color:var(--danger)}.toast-msg{flex:1;min-width:0}.engine-banner{grid-column:1/-1}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--panel-2), var(--panel-3), var(--panel-2));background-size:200% 100%;height:42px;margin-bottom:4px;animation:1.2s linear infinite shimmer}@keyframes pulse{50%{opacity:.35}}@keyframes slide{0%{left:-35%}to{left:100%}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(4px)scale(.99)}}@keyframes shimmer{to{background-position:-200% 0}}.only-narrow{display:none!important}@media (width<=1220px){.studio{grid-template-columns:264px minmax(0,1fr) 310px}.recipe-name{width:160px}}@media (width<=940px){.studio{grid-template-columns:minmax(0,1fr)}.panel-left,.panel-right{z-index:45;width:min(340px,90vw);box-shadow:var(--shadow);transition:transform .18s ease-out;position:fixed;top:48px;bottom:0}.panel-left{left:0;transform:translate(-105%)}.panel-right{right:0;transform:translate(105%)}.panel-left.open,.panel-right.open{transform:none}.only-narrow{display:inline-flex!important}.hide-narrow{display:none!important}.export-grid{grid-template-columns:1fr}.format-list{flex-direction:row;overflow-x:auto}.format-option{min-width:200px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.scene-wrap{background:var(--backdrop)}.scene-paper{background:#fbfaf6;position:absolute;box-shadow:0 8px 30px #0000008c}.scene-host{position:absolute;overflow:hidden}.scene-host canvas,.scene-gl{cursor:grab;outline:none;display:block;width:100%!important;height:100%!important}.scene-host canvas:active{cursor:grabbing}.scene-overlay{pointer-events:none;transition:opacity .15s;position:absolute}.scene-overlay.stale-lines{opacity:.22}.view-switch{z-index:5;border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14161beb;border-radius:9px;gap:2px;padding:3px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.view-switch button{height:26px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 14px;font-size:12px;font-weight:600}.view-switch button.active{background:var(--accent);color:#031418}.view-switch button:not(.active):hover{background:var(--panel-3);color:var(--text)}.handles{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.handle{pointer-events:all;cursor:grab}.handle:active{cursor:grabbing}.well-field{fill:#2cc5e814;stroke:#2cc5e8e6;stroke-width:1.5px;stroke-dasharray:4 3}.well-core{fill:#2cc5e840;stroke:#0e8fae;stroke-width:1.5px}.well-dot{fill:#0e8fae}.well.repel .well-field{fill:#f472b614;stroke:#ec4899e6}.well.repel .well-core{fill:#f472b640;stroke:#c0267a}.well.repel .well-dot{fill:#c0267a}.handle:hover .well-field{stroke-width:2.5px}.emitter-spread{fill:none;stroke:#d98c148c;stroke-width:1.2px;stroke-dasharray:3 3}.emitter-arrow{stroke:#d98c14;stroke-width:2px}.emitter-origin{fill:#f2b33d;stroke:#8a5406;stroke-width:1.5px}.emitter-tip{fill:#fff;stroke:#d98c14;stroke-width:2px}.handle circle:hover{filter:drop-shadow(0 0 4px #00000059)}.vp-actions{z-index:3;border:1px solid var(--line);border-radius:var(--radius);background:#14161be6;gap:6px;padding:3px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.advanced-toggle{border:0;border-top:1px solid var(--line);width:100%;color:var(--text-3);cursor:pointer;background:0 0;align-items:center;gap:6px;margin-top:10px;padding:8px 0;font-size:12px;font-weight:550;display:flex}.advanced-toggle:hover{color:var(--accent)}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.link-btn:hover{text-decoration:underline}.object-list{border:1px solid var(--line);border-radius:var(--radius-sm);margin-top:6px;overflow:hidden}.object-row{cursor:pointer;border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:3px 4px 3px 10px;display:flex}.object-row:last-child{border-bottom:0}.object-row:hover{background:var(--panel-2)}.object-row.selected{background:var(--accent-soft)}.object-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:550;overflow:hidden}.object-props{border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--line);margin-top:10px;padding:2px 10px}.preset-section+.preset-section{margin-top:22px}.preset-section-head{align-items:baseline;gap:10px;margin-bottom:10px;display:flex}.preset-section-head h3{margin:0;font-size:13px;font-weight:650}.preset-section-head .muted{font-size:12px}.quick-start{pointer-events:auto;text-align:center;border:1px solid var(--line-2);width:min(760px,100%);box-shadow:var(--shadow);background:#14161bf2;border-radius:16px;padding:26px}.quick-start h2{letter-spacing:-.01em;margin:0 0 16px;font-size:18px}.quick-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:14px;display:grid}.quick-card{border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;transition:border-color .12s,transform .12s;display:flex}.quick-card:hover{border-color:var(--accent-line);transform:translateY(-1px)}.quick-card .vp-card-icon{margin:0 0 4px}.quick-title{font-weight:650}.quick-text{color:var(--text-3);font-size:12px}.quick-start .muted{margin:0;font-size:12px}.list-cards{border:0;flex-direction:column;gap:6px;display:flex;overflow:visible}.list-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);padding:6px 8px 8px}.list-card-head{color:var(--text-2);justify-content:space-between;align-items:center;margin-bottom:4px;font-size:11.5px;font-weight:600;display:flex}.list-card-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px 8px;display:grid}.list-card-field{flex-direction:column;gap:2px;min-width:0;display:flex}.list-card-field>span{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.list-card-field .num{width:100%;height:26px}.list-cards .list-add{border:1px dashed var(--line-2);border-radius:var(--radius-sm)}.studio.app{grid-template-columns:280px minmax(0,1fr) 330px}.app .panel-left .section-grow{padding-bottom:12px}.layer-list{flex-direction:column;gap:2px;display:flex}.layer-row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;outline:none;align-items:center;gap:8px;min-height:46px;padding:5px 6px;display:flex;position:relative}.layer-row:hover{background:var(--panel-2)}.layer-row:focus-visible{border-color:var(--accent-line)}.layer-row.selected{background:var(--accent-soft);border-color:var(--accent-line)}.layer-row.hidden-layer .layer-body,.layer-row.hidden-layer .layer-thumb{opacity:.4}.layer-row.failed{background:var(--danger-soft);border-color:#f06b6b8c}.layer-row.dragging{opacity:.4}.layer-row.drop-before:before,.layer-row.drop-after:after{content:"";background:var(--accent);height:2px;box-shadow:0 0 6px var(--accent);border-radius:1px;position:absolute;left:6px;right:6px}.layer-row.drop-before:before{top:-2px}.layer-row.drop-after:after{bottom:-2px}.layer-eye{color:var(--text-3);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;place-items:center;width:22px;height:22px;padding:0;display:grid}.layer-eye:hover{color:var(--text);background:var(--panel-3)}.layer-thumb{color:#2a2a2a;background:#f3efe4;border-radius:7px;flex:none;place-items:center;width:32px;height:32px;display:grid;position:relative}.pen-dots{display:flex;position:absolute;bottom:-4px;right:-4px}.pen-dot{width:10px;height:10px;box-shadow:0 0 0 2px var(--panel);border-radius:50%;margin-left:-3px}.layer-body{flex:1;min-width:0}.layer-name{white-space:nowrap;text-overflow:ellipsis;font-weight:550;overflow:hidden}.layer-name-input{width:100%;height:22px;padding:0 4px}.layer-sub{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.layer-actions{gap:1px;display:none}.layer-row:hover .layer-actions,.layer-row.selected .layer-actions,.layer-row:focus-within .layer-actions{display:flex}.layers-empty{text-align:center;color:var(--text-3);padding:18px 10px;font-size:12.5px}.layers-empty strong{color:var(--text-2);margin-bottom:4px;display:block}.pens-panel{border-top:1px solid var(--line);padding:10px 12px 12px}.pen-item{align-items:center;gap:6px;padding:2px 0;display:flex}.pen-item .input{flex:1;min-width:0;height:26px}.pen-slot-num{font:11px var(--mono);color:var(--text-3);text-align:center;flex:none;width:12px}.pen-color{cursor:pointer;border-radius:50%;flex:none;width:20px;height:20px;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff59}.pen-color input{opacity:0;cursor:pointer;width:36px;height:36px;position:absolute;inset:-8px}.pen-add{margin-top:6px}.app .panel-left>.section:last-child{border-top:1px solid var(--line);border-bottom:0}.tool-rail{z-index:4;border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14161beb;border-radius:12px;flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.tool-btn{width:38px;height:38px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.tool-btn:hover:not(:disabled){background:var(--panel-3);color:var(--text)}.tool-btn.active{background:var(--accent);color:#031418}.tool-btn:disabled{opacity:.3;cursor:not-allowed}.tool-btn kbd{font:600 8.5px var(--mono);opacity:.55;position:absolute;bottom:1px;right:3px}.vp-toolbar.vp-toolbar-bottom{top:auto;bottom:10px;left:10px}.canvas-wrap.drawing canvas{cursor:crosshair}.canvas-wrap.moving canvas{cursor:move}.app .vp-hint{text-overflow:ellipsis;max-width:calc(100% - 360px);bottom:12px;overflow:hidden}.h-outline{fill:none;stroke:#0ea5c9;stroke-width:1.3px;stroke-dasharray:6 4;pointer-events:none}.h-outline-hit{fill:none;stroke:#0000;stroke-width:14px;pointer-events:stroke;cursor:move}.h-knob{fill:#fff;stroke:#0e8fae;stroke-width:2px;pointer-events:all;cursor:grab}.h-knob:hover{fill:#c9f3fd}.h-vertex{fill:#fff;stroke:#0e8fae;stroke-width:1.8px;pointer-events:all;cursor:grab}.h-vertex:hover{fill:#c9f3fd}.h-stem{stroke:#0e8fae;stroke-width:1.5px;pointer-events:none}.h-pin{fill:#f2b33d;stroke:#6b4304;stroke-width:1.5px;pointer-events:all;cursor:grab}.h-pin:hover{fill:#ffd27a}.h-quad{fill:none;stroke:#d98c14;stroke-width:1.3px;stroke-dasharray:5 4;pointer-events:none}.h-dial-ring{fill:none;stroke:#0e8fae80;stroke-width:1px;stroke-dasharray:2 4;pointer-events:none}.h-dial-line{stroke:#0e8fae;stroke-width:1.6px;pointer-events:none}.h-dial-knob{fill:#0e8fae;stroke:#fff;stroke-width:2.5px;pointer-events:all;cursor:grab}.h-dial-knob:hover{fill:#22c3ea}.h-center{fill:#fff;stroke:#c0267a;stroke-width:2.2px;pointer-events:all;cursor:move}.h-center-cross{stroke:#c0267a;stroke-width:1.6px;pointer-events:none}.h-label{font:650 11px var(--font);fill:#0b3d4a;paint-order:stroke;stroke:#fffffff2;stroke-width:3.5px;stroke-linejoin:round;pointer-events:none}.h-guide{fill:none;stroke:#db2777cc;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke;cursor:pointer}.h-guide-arrow{fill:none;stroke:#db2777e6;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.h-draft{fill:#2cc5e814;stroke:#0ea5c9;stroke-width:1.6px;stroke-dasharray:6 4;pointer-events:none}.h-draft-stroke{fill:none;stroke:#db2777d9;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.h-draft-path{fill:none;stroke:#0ea5c9;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.pad-bg{fill:#14161bf0;stroke:var(--line-2);pointer-events:all;cursor:crosshair}.pad-grid{stroke:#ffffff14;stroke-width:1px;pointer-events:none}.pad-grid.major{stroke:#2cc5e847}.pad-text{font:10px var(--mono);fill:var(--text-3);pointer-events:none}.pad-title{font:650 11px var(--font);fill:#1c2330;paint-order:stroke;stroke:#ffffffe6;stroke-width:3px;pointer-events:none}.pad-dot{fill:var(--accent);stroke:#fff;stroke-width:2.5px;pointer-events:none}.insp-head{border-bottom:1px solid var(--line);flex-direction:column;gap:10px;padding:12px 14px 14px;display:flex}.insp-name{height:32px;font-size:14px;font-weight:600}.fill-button{border-radius:var(--radius);border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;text-align:left;align-items:center;gap:10px;width:100%;padding:8px 10px;display:flex}.fill-button:hover{border-color:var(--accent-line)}.fill-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent);border-radius:8px;flex:none;place-items:center;display:grid}.fill-button-sub{color:var(--text-3);font-size:11px;display:block}.fill-button-label{font-size:14px;font-weight:650;display:block}.fill-button-change{color:var(--accent);align-items:center;gap:3px;font-size:12px;font-weight:600;display:inline-flex}.fill-desc{color:var(--text-2);margin:0;font-size:12.5px}.fill-grid-group+.fill-grid-group{margin-top:10px}.fill-grid-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);margin:0 0 6px 2px;font-size:10.5px;font-weight:600}.fill-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:6px;display:grid}.fill-tile{border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;color:var(--text-2);text-align:center;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:9px 4px 8px;font-size:11.5px;font-weight:550;line-height:1.2;display:flex}.fill-tile:hover{border-color:var(--accent-line);color:var(--text)}.fill-tile.active{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.fill-tile .icon{color:var(--accent)}.fill-tile small{color:var(--warn);font-size:10px;font-weight:500}.fill-menu{width:380px;max-height:min(620px,80vh);padding:12px;overflow:auto}.fill-menu-title{margin-bottom:6px;font-weight:650}.insp-section{border-bottom:1px solid var(--line);padding:12px 14px}.insp-section h3{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);justify-content:space-between;align-items:center;gap:8px;min-height:26px;margin:0 0 8px;font-size:11px;font-weight:600;display:flex}.insp-section .fields{padding:0}.insp-note{color:var(--text-3);margin:0 0 8px;font-size:12px}.pen-picks{flex-wrap:wrap;gap:6px;display:flex}.pen-pick{border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;height:28px;color:var(--text-2);border-radius:14px;align-items:center;gap:6px;padding:0 10px 0 6px;font-size:12px;font-weight:550;display:inline-flex}.pen-pick .swatch{width:15px;height:15px}.pen-pick:hover{color:var(--text);border-color:#3b414d}.pen-pick.active{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.pen-label{color:var(--text-2);margin:8px 0 6px;font-size:12px}.pen-label:first-of-type{margin-top:0}.toggle-row{min-height:34px;color:var(--text-2);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:3px 0;font-size:12.5px;display:flex}.toggle-row .hint{color:var(--text-3);font-size:11.5px;display:block}.shape-kinds{width:100%;margin-bottom:6px;display:flex}.shape-kinds button{flex:1;place-items:center;padding:0;display:grid}.handle-hint{color:var(--accent);align-items:flex-start;gap:7px;margin:0 0 6px;font-size:12px;display:flex}.handle-hint .icon{margin-top:2px}.insp-actions{flex-wrap:wrap;gap:6px;padding:12px 14px 28px;display:flex}.insp-empty{text-align:center;color:var(--text-3);padding:30px 18px}.insp-empty .vp-card-icon{margin:0 auto 10px}.insp-empty h3{color:var(--text);margin:0 0 4px;font-size:14px}.insp-empty p{margin:0}.tool-tips{text-align:left;gap:10px;margin-top:18px;display:grid}.tool-tip{color:var(--text-2);align-items:center;gap:10px;font-size:12.5px;display:flex}.tool-tip .icon{color:var(--accent)}.starter-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;display:grid}.starter-card{text-align:left;border:1px solid var(--line-2);background:var(--panel-2);cursor:pointer;border-radius:11px;flex-direction:column;padding:0;transition:border-color .12s,transform .12s;display:flex;overflow:hidden}.starter-card:hover{border-color:var(--accent-line);transform:translateY(-1px)}.starter-art{aspect-ratio:1;background:#f6f3ea;width:100%;display:block}.starter-art-empty{color:#9a9384;place-items:center;display:grid}.starter-info{padding:9px 11px 12px;display:block}.starter-name{justify-content:space-between;align-items:center;gap:6px;font-weight:600;display:flex}.starter-blurb{color:var(--text-3);margin-top:3px;font-size:12px;display:block}@media (width<=1220px){.studio.app{grid-template-columns:250px minmax(0,1fr) 300px}}@media (width<=940px){.studio.app{grid-template-columns:minmax(0,1fr)}.app .vp-hint{display:none}}.h-split{stroke:#d98c14;stroke-width:1.4px;stroke-dasharray:8 5;pointer-events:none}.h-split-knob{fill:#f2b33d;stroke:#6b4304;stroke-width:2px;pointer-events:all;cursor:move}.h-split-knob:hover{fill:#ffd27a}.pad-frame{fill:#14161bf2;stroke:var(--line-2);pointer-events:all}.pad-heading{font:650 12px var(--font);fill:var(--text);pointer-events:none}.pad .pad-bg{fill:#ffffff08;stroke:var(--line-2)}.h-pan{fill:#ffffffeb;stroke:#7c3aed;stroke-width:2.2px;pointer-events:all;cursor:grab}.h-pan:hover{fill:#ede9fe}.h-pan-cross{fill:none;stroke:#7c3aed;stroke-width:1.6px;stroke-linecap:round;pointer-events:none}.textarea{resize:vertical;width:100%;height:auto;min-height:58px;margin-top:6px;padding:7px 9px;font-size:14px;line-height:1.4;display:block}
