:root{--bg:#08080a;--bg-canvas:#0b0b0c;--panel:#101012;--panel-2:#141417;--field:#17171a;--media:#0e0e10;--raise:#1e1e22;--chip:#1c1c20;--line-0:#1c1c20;--line-1:#202024;--line-2:#26262c;--line-3:#2a2a2f;--line-4:#3a3a41;--text:#ebe8e4;--text-2:#c9c5bf;--text-3:#97938d;--text-4:#6a6660;--text-5:#5c5852;--text-6:#4a4740;--accent:#ff8b3d;--accent-ink:#140c05;--accent-12:rgba(255,139,61,0.12);--accent-14:rgba(255,139,61,0.14);--accent-16:rgba(255,139,61,0.16);--accent-18:rgba(255,139,61,0.18);--ok:#7fae76;--ok-14:rgba(127,174,118,0.14);--bad:#d96b62;--bad-line:#4a2c2a;--bad-08:rgba(217,107,98,0.08);--mono:ui-monospace,Menlo,Consolas,monospace;--sans:system-ui,-apple-system,"Segoe UI",Helvetica,sans-serif}*{box-sizing:border-box}body,html{margin:0;height:100%;background:var(--bg-canvas);color:var(--text);font:13px/1.45 var(--sans);-webkit-font-smoothing:antialiased}body{overflow:hidden}a{color:var(--accent);text-decoration:none}a:hover{color:#ffa669}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--accent-18)}.app{display:flex;flex-direction:column;height:100vh}.app-body{flex:1 1;display:flex;min-height:0}.mono{font-family:var(--mono)}.label{letter-spacing:.12em;text-transform:uppercase}.hint,.label{color:var(--text-4)}.hint,.hint-6,.label{font:500 11px/1 var(--mono)}.hint-6{color:var(--text-6)}.t3{color:var(--text-3)}.t4{color:var(--text-4)}.t2{color:var(--text-2)}.ok{color:var(--ok)}.bad{color:var(--bad)}.acc{color:var(--accent)}.topbar{height:40px;flex:0 0 40px;border-bottom:1px solid var(--line-1);background:var(--panel);display:flex;align-items:center;gap:14px;padding:0 12px}.brand{font:600 12px/1 var(--mono);letter-spacing:.16em;color:var(--accent)}.crumb{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-3)}.crumb b{font-weight:400;color:var(--text)}.crumb .sep{color:var(--text-6)}.tabs{display:flex;gap:2px;margin-left:18px}.tab{padding:4px 9px;border-radius:4px;font-size:12px;color:var(--text-3)}.tab.on{color:var(--text)}.meter,.tab.on{background:var(--line-1)}.meter{width:112px;height:5px;border-radius:3px;overflow:hidden}.meter>div{height:5px;background:var(--accent)}.vsep{width:1px;height:18px;background:var(--line-2)}.avatar{width:22px;height:22px;border-radius:50%;background:var(--line-3);display:flex;align-items:center;justify-content:center;font:600 10px/1 var(--mono);color:var(--text-2)}.side{width:300px;flex:0 0 300px;border-right:1px solid var(--line-1);background:var(--panel);display:flex;flex-direction:column}.side-scroll{flex:1 1;overflow:auto;gap:14px}.side-foot,.side-scroll{padding:12px;display:flex;flex-direction:column}.side-foot{border-top:1px solid var(--line-1);gap:7px}.group{display:flex;flex-direction:column;gap:6px}.field,.select{display:flex;align-items:center;justify-content:space-between;background:var(--field);border:1px solid var(--line-3);border-radius:4px;padding:7px 9px;font-size:13px;width:100%;text-align:left}.select select{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.select{position:relative}.caret{color:var(--text-4);font-size:10px}textarea.prompt{width:100%;min-height:96px;resize:vertical;background:var(--field);border:1px solid var(--line-4);border-radius:4px;padding:8px 9px;font-size:13px;line-height:1.5;color:var(--text);outline:none}textarea.prompt:focus{border-color:var(--accent)}input.neg,input.txt{width:100%;background:var(--field);border:1px solid var(--line-3);border-radius:4px;padding:7px 9px;font-size:12px;color:var(--text);outline:none}input.neg::placeholder,input.txt::placeholder,textarea::placeholder{color:var(--text-4)}.row{gap:6px}.between,.row{display:flex;align-items:center}.between{justify-content:space-between}.chip{padding:5px 10px;border:1px solid var(--line-3);border-radius:4px;font-size:12px;color:var(--text-3);background:var(--field);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:center}.chip.on{border-color:var(--accent);color:var(--accent);background:var(--accent-12)}.chip.off{border:1px dashed var(--line-2);color:#3f3c37;text-decoration:line-through;background:transparent;cursor:default}.chip.flex{flex:1 1;padding:5px 0}.chip.sm{padding:4px 9px}.seg{display:flex;border:1px solid var(--line-3);border-radius:4px;overflow:hidden;background:var(--field)}.seg>div{flex:1 1;text-align:center;padding:6px 0;font-size:12px;color:var(--text-3);cursor:pointer}.seg>div.on{background:var(--accent-14);color:var(--accent);box-shadow:inset 0 0 0 1px rgba(255,139,61,.5)}.toggle{width:28px;height:16px;border-radius:9px;background:var(--line-2);position:relative;cursor:pointer;flex:0 0 28px}.toggle>div{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text-4);transition:left .12s}.toggle.on{background:rgba(255,139,61,.3)}.toggle.on>div{left:14px;background:var(--accent)}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:8px 9px;background:var(--field);border:1px solid var(--line-3);border-radius:4px;font-size:12px}.btn{padding:8px 12px;border:1px solid var(--line-4);border-radius:4px;font-size:13px;color:var(--text);background:transparent}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:600}.btn.danger{border-color:var(--bad);color:var(--bad)}.btn.dead{border-color:var(--line-2);color:var(--text-6);cursor:default}.btn.big{padding:11px;text-align:center;font-size:14px;width:100%}.btn.sm{padding:5px 9px;font-size:12px}.btn:disabled{opacity:.5;cursor:default}.mbtn{padding:6px 9px;border-radius:3px;font:600 11px/1 var(--mono);letter-spacing:.06em;border:1px solid var(--line-4);color:var(--text);background:transparent}.mbtn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.mbtn.soft{background:var(--accent-14);color:var(--accent);border-color:transparent}.mbtn.dead{border-color:var(--line-2);color:var(--text-6);cursor:default}.mbtn.danger{border-color:var(--bad);color:var(--bad)}.mbtn.xs{padding:4px 7px;font-size:10px}.linkbtn,.mbtn.xs{letter-spacing:.08em}.linkbtn{background:none;border:none;padding:0;font:500 10px/1 var(--mono);color:var(--accent)}.linkbtn.bad{color:var(--bad)}.badge{display:inline-block;font:600 11px/1 var(--mono);letter-spacing:.1em;padding:3px 5px;border-radius:3px;background:var(--chip);color:var(--text-3);white-space:nowrap}.badge.draft{background:rgba(8,8,10,.8);border:1px solid var(--line-4);color:var(--text-2)}.badge.final{background:var(--accent-16);color:var(--accent)}.badge.acc{background:var(--accent-18);color:var(--accent)}.badge.ok{background:var(--ok-14);color:var(--ok)}.badge.dim{background:rgba(8,8,10,.8);color:var(--text-3)}.badge.dimmer{background:rgba(8,8,10,.85);color:var(--text-4)}.badge.outline{background:transparent;border:1px solid var(--line-4);color:var(--text-2)}.state{display:flex;align-items:center;gap:5px;font:600 11px/1 var(--mono);letter-spacing:.1em;white-space:nowrap}.state .dot{width:5px;height:5px;border-radius:50%}.state.queued{color:var(--text-3)}.state.queued .dot{background:var(--text-4)}.state.running{color:var(--accent)}.state.running .dot{background:var(--accent)}.state.succeeded{color:var(--text-2)}.state.succeeded .dot{background:var(--ok)}.state.blocked,.state.failed,.state.rejected,.state.timedout{color:var(--bad)}.state.blocked .dot,.state.failed .dot,.state.rejected .dot,.state.timedout .dot{background:var(--bad)}.state.cancelled,.state.killed{color:var(--text-4)}.state.cancelled .dot,.state.killed .dot{background:var(--text-6)}.node{width:190px;background:var(--field);border:1px solid var(--line-3);border-radius:5px;overflow:hidden;position:relative}.node.wide{width:222px}.node.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-14)}.node.hover-ring{border-color:var(--line-4)}.node.bad{border-color:var(--bad-line)}.node.killed{background:var(--panel);border:1px dashed var(--line-3);opacity:.72}.node .media{position:relative;height:106px;background:var(--media);display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line-3);overflow:hidden}.node.wide .media{height:124px}.node.killed .media{background:#0d0d0f;border-bottom-color:var(--line-1)}.node .media img,.node .media video{max-width:100%;max-height:100%;object-fit:contain;display:block}.node .media .msg{font:500 11px/1.6 var(--mono);color:var(--text-4);text-align:center;padding:0 14px}.node .tl{left:6px}.node .tl,.node .tr{position:absolute;top:6px}.node .tr{right:6px}.node .bl{position:absolute;bottom:6px;left:6px}.node .progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:#1a1a1d}.node .progress>div{height:3px;background:var(--accent)}.node .progress.dead>div{background:var(--bad-line)}.node .body{padding:7px 8px;display:flex;flex-direction:column;gap:5px}.node.wide .body{padding:8px;gap:6px}.node .cost{font:500 11px/1 var(--mono);color:var(--text-3)}.node .cost.est,.node .sub{color:var(--text-4)}.node .sub{font-size:11px;display:flex;justify-content:space-between;gap:6px}.node .why{font-size:11px;line-height:1.45;color:var(--text-3)}.node .play{position:absolute;inset:0;pointer-events:none}.node .play,.node .play>div{display:flex;align-items:center;justify-content:center}.node .play>div{width:22px;height:22px;border-radius:50%;background:rgba(8,8,10,.72);border:1px solid var(--line-4);font-size:8px;color:var(--text)}.wave{display:flex;align-items:center;gap:2px;padding:0 8px;height:100%;width:100%}.wave>i{flex:1 1;background:var(--line-4);display:block}.jobnode{width:216px;background:var(--panel-2);border:1px solid var(--line-4);border-radius:5px;padding:8px 9px;display:flex;flex-direction:column;gap:6px;position:relative}.jobnode.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-14)}.jobnode .prompt{font-size:12px;line-height:1.4;color:var(--text-2);max-height:34px;overflow:hidden}.actionbar{display:flex;align-items:center;background:var(--raise);border:1px solid var(--line-4);border-radius:5px;box-shadow:0 6px 18px rgba(0,0,0,.5);overflow:hidden;font:500 10px/1 var(--mono);letter-spacing:.08em}.actionbar>button{padding:7px 9px;color:var(--text-2);background:none;border:none;white-space:nowrap}.actionbar>button:hover{background:var(--line-3)}.actionbar>button.kill{color:var(--bad)}.actionbar>button.on{background:var(--accent-14);color:var(--accent)}.actionbar>button .k{color:var(--text-5);margin-left:3px}.actionbar>i{width:1px;align-self:stretch;background:var(--line-3)}.canvas{flex:1 1;position:relative;background:var(--bg-canvas);background-image:radial-gradient(#191919 1px,transparent 0);background-size:24px 24px;overflow:hidden;cursor:-webkit-grab;cursor:grab}.canvas.panning{cursor:-webkit-grabbing;cursor:grabbing}.canvas .world{position:absolute;left:0;top:0;transform-origin:0 0}.canvas .zoom{position:absolute;left:14px;bottom:12px;display:flex;align-items:center;gap:6px;background:rgba(16,16,18,.92);border:1px solid var(--line-3);border-radius:5px;padding:5px 8px;font:500 11px/1 var(--mono);color:var(--text-3)}.canvas .zoom button{background:none;border:none;color:var(--text-3);padding:0 2px;font:inherit}.canvas .zoom b{color:var(--text);font-weight:500}.selbar{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;background:var(--raise);border:1px solid var(--line-4);border-radius:5px;padding:6px 8px 6px 10px;box-shadow:0 8px 24px rgba(0,0,0,.55)}.selbar .n{letter-spacing:.08em;color:var(--text-2)}.selbar .chip,.selbar .n{font:500 11px/1 var(--mono)}.selbar .chip{padding:4px 8px;border-radius:3px}.empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:500 12px/1.6 var(--mono);color:var(--text-4);text-align:center;pointer-events:none}.drawer{width:380px;flex:0 0 380px;border-left:1px solid var(--line-3);background:var(--panel);display:flex;flex-direction:column}.drawer-head{padding:10px 12px;border-bottom:1px solid var(--line-1);display:flex;align-items:center;gap:10px}.drawer-body{flex:1 1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:11px}.drawer-foot{padding:10px 12px;border-top:1px solid var(--line-1);display:flex;gap:6px}.kv{border:1px solid var(--line-2);border-radius:4px;overflow:hidden;font:400 12px/1 var(--mono)}.kv>div{display:flex;justify-content:space-between;gap:10px;padding:6px 8px;background:var(--field)}.kv>div:nth-child(2n){background:var(--panel-2)}.kv>div>span:first-child{color:var(--text-4)}.kv>div>span:last-child{color:var(--text);text-align:right}.box{background:var(--field);border:1px solid var(--line-2);border-radius:4px;padding:8px}.mono-box{font:400 12px/1.55 var(--mono)}.mono-box,.refrow{color:var(--text-2)}.refrow{display:flex;align-items:center;gap:8px;background:var(--field);border:1px solid var(--line-2);border-radius:4px;padding:6px 8px;font:400 12px/1.4 var(--mono)}.refrow.bad{border-color:var(--bad-line)}.costcell{flex:1 1;background:var(--field);border:1px solid var(--line-2);border-radius:4px;padding:7px 8px;display:flex;flex-direction:column;gap:4px}.costcell .v{font:500 13px/1 var(--mono);color:var(--text)}.costcell .v.dim{color:var(--text-3)}.timeline{display:flex;flex-direction:column;gap:6px;font:400 12px/1 var(--mono)}.timeline>div{display:flex;gap:8px;align-items:center}.timeline .t{color:var(--text-4);width:62px}.timeline .dot{width:5px;height:5px;border-radius:50%;background:var(--text-4);flex:0 0 5px}.alert{background:var(--bad-08);border:1px solid var(--bad-line);border-radius:4px;padding:10px;display:flex;flex-direction:column;gap:8px}.alert p{margin:0;font-size:12px;line-height:1.55;color:var(--text-2)}.page{flex:1 1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:14px}.filterbar{height:46px;flex:0 0 46px;border-bottom:1px solid var(--line-1);background:var(--media);gap:16px;padding:0 16px}.filterbar,.filterbar .g{display:flex;align-items:center}.filterbar .g{gap:6px}.filterbar .g>.label{color:var(--text-6)}.grid-wrap{display:flex;flex-wrap:wrap;gap:12px;align-content:flex-start}.card{flex-direction:column;gap:10px}.card,.stat{background:var(--panel-2);border:1px solid var(--line-3);border-radius:5px;padding:12px;display:flex}.stat{flex:1 1;flex-direction:column;gap:7px}.stat .big{font:500 26px/1 var(--mono);color:var(--text)}.bar{flex:1 1;background:var(--chip);overflow:hidden}.bar,.bar>div{height:8px;border-radius:2px}.bar>div{background:var(--accent)}.barrow{display:flex;align-items:center;gap:10px;font:400 12px/1 var(--mono)}.barrow .name{width:170px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.barrow .amt{width:78px;text-align:right;color:var(--text)}.barrow .pct{width:52px;text-align:right;color:var(--text-4)}.budgetbar{position:relative;background:var(--chip)}.budgetbar,.budgetbar>div{height:9px;border-radius:2px}.budgetbar>div{background:var(--accent)}.budgetbar>i{position:absolute;top:-3px;width:1px;height:15px;background:var(--text-5)}.table{display:flex;flex-direction:column;font:400 12px/1 var(--mono)}.table .th{display:flex;gap:10px;padding:0 0 7px;border-bottom:1px solid var(--line-2);font:500 11px/1 var(--mono);letter-spacing:.08em;color:var(--text-6)}.table .tr{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line-0)}.center-card{width:380px;margin:80px auto;background:var(--panel);border:1px solid var(--line-3);border-radius:6px;padding:20px;display:flex;flex-direction:column;gap:12px}.err{color:var(--bad);font-size:12px}.kbd{padding:3px 6px;background:var(--chip);border:1px solid var(--line-3);border-radius:3px;color:var(--text);font:400 12px/1 var(--mono)}.preset{width:308px;background:var(--panel-2);border:1px solid var(--line-3);border-radius:5px;overflow:hidden;display:flex;flex-direction:column}.preset.on{border-color:var(--line-4)}.preset .thumbs{display:flex;gap:2px;height:88px;background:var(--media)}.preset .thumbs>div{flex:1 1;overflow:hidden}.preset .thumbs img{width:100%;height:100%;object-fit:cover}.preset .pbody{padding:10px;display:flex;flex-direction:column;gap:8px}.params{display:flex;flex-wrap:wrap;gap:4px;font:500 11px/1 var(--mono);color:var(--text-4)}.params>span{padding:3px 5px;background:var(--chip);border-radius:3px}.stripes{background:repeating-linear-gradient(135deg,#2b2b30 0 5px,#1e1e22 5px 10px)}.swatch{flex:1 1;display:flex;flex-direction:column;gap:4px}.swatch>div{height:44px;border-radius:3px}.swatch>span{font:400 10px/1 var(--mono);color:var(--text-4)}