/* Generate: an operations canvas, matching the existing light/dark dashboard. */
#view-generate{margin:0;--gen-accent:var(--accent);--gen-accent-soft:var(--accent-dim)}
.gen-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:18px}
.gen-toolbar h1{font-size:30px;margin:0 12px 0 0;letter-spacing:-.04em}
.gen-toolbar .grow{flex:1}.gen-toolbar select{max-width:260px}.gen-toolbar .btn.primary,.gen-dialog .btn.primary{background:var(--accent);border-color:var(--accent);color:var(--bg)}
.gen-workspace{display:grid;grid-template-columns:190px minmax(260px,1fr) 300px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface);height:min(730px,76vh);min-height:560px}
.gen-palette{padding:18px 14px;border-right:1px solid var(--border);overflow:auto}
.gen-palette h3{margin:0 0 12px}.gen-palette .gen-add{display:flex;gap:10px;align-items:center;text-align:left;width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text-pri);margin-bottom:7px;cursor:pointer;font-size:13px}
.gen-add:hover{background:var(--gen-accent-soft)!important;border-color:var(--gen-accent)!important}.gen-symbol{color:var(--gen-accent);font-size:19px;width:20px;text-align:center;flex-shrink:0}
.gen-palette hr{border:0;border-top:1px solid var(--border);margin:18px 0}.gen-palette .gen-template{display:block;border:0;text-align:left;padding:8px 0;background:transparent;color:var(--text-sec);cursor:pointer;font-size:13px}
.gen-stage{position:relative;overflow:hidden;background-color:var(--bg);background-image:radial-gradient(var(--border) 1px,transparent 1px);background-size:20px 20px;touch-action:none;outline:none}
.gen-world{position:absolute;left:0;top:0;width:1px;height:1px;transform-origin:0 0}.gen-wires{position:absolute;left:0;top:0;width:6000px;height:6000px;overflow:visible;pointer-events:none}.gen-wire{fill:none;stroke:var(--text-dim);stroke-width:2.1;pointer-events:stroke;cursor:pointer}.gen-wire.asset{stroke:var(--gen-accent);stroke-width:2.7}.gen-wire.selected{stroke:var(--accent);stroke-width:4}
.gen-node{position:absolute;width:216px;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 3px 12px rgba(25,40,48,.06);user-select:none}
.gen-node.selected{border-color:var(--gen-accent);box-shadow:0 0 0 2px var(--gen-accent-soft),0 3px 12px rgba(25,40,48,.06)}.gen-node.running{border-color:var(--amber)}.gen-node.failed,.gen-node.needs_review{border-color:var(--red)}
.gen-node-head{display:flex;align-items:center;gap:8px;padding:12px 14px;font-size:13px;cursor:grab;border-bottom:1px solid var(--border);font-weight:600;touch-action:none}.gen-node-head span:last-child{margin-left:auto;color:var(--text-dim)}
.gen-node-body{padding:12px 14px;font-size:12px;color:var(--text-sec);min-height:68px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:210px;overflow:hidden}
.gen-node-body img,.gen-node-body video{display:block;width:100%;max-height:160px;object-fit:contain;border-radius:6px;margin-top:8px;pointer-events:none}.gen-node-empty{background:var(--card-hover);border:1px dashed var(--border);border-radius:6px;padding:20px 10px;text-align:center;color:var(--text-dim)}
.gen-ports{position:relative;display:flex;justify-content:space-between;gap:8px;padding:0 0 10px;font-family:'DM Mono',monospace;font-size:10px;color:var(--text-dim)}.gen-port-column{display:flex;flex-direction:column;gap:6px;min-width:80px}.gen-port-row{display:flex;gap:6px;align-items:center;position:relative;height:18px}.gen-port-column.out .gen-port-row{justify-content:flex-end}.gen-port{width:12px;height:12px;padding:0;min-height:0;border-radius:50%;border:2px solid var(--card);background:var(--text-dim);cursor:crosshair;box-shadow:0 0 0 1px var(--border);flex-shrink:0;position:relative}.gen-port[data-type=asset]{background:var(--gen-accent)}.gen-port.armed{box-shadow:0 0 0 3px var(--accent)}.gen-port-column.in .gen-port{margin-left:-6px}.gen-port-column.out .gen-port{margin-right:-6px}
.gen-node-foot{border-top:1px solid var(--border);padding:6px 12px;font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between}.gen-node-foot .ok{color:var(--gen-accent)}
.gen-controls{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:5px;background:var(--surface);padding:5px;border:1px solid var(--border);border-radius:10px;white-space:nowrap}.gen-controls button{border:0;background:transparent;color:var(--text-pri);min-width:32px;padding:5px;cursor:pointer}.gen-controls span{font:12px 'DM Mono',monospace;padding:5px 4px}.gen-canvas-hint{position:absolute;top:12px;left:12px;max-width:85%;font-size:11px;color:var(--text-dim);pointer-events:none;background:var(--surface);padding:4px 8px;border-radius:5px}
.gen-inspector{border-left:1px solid var(--border);padding:18px;overflow:auto}.gen-inspector h3{margin:0 0 15px}.gen-inspector label,.gen-dialog label{display:block;font-size:12px;color:var(--text-sec);margin:14px 0 6px}.gen-inspector input,.gen-inspector select,.gen-inspector textarea,.gen-dialog input,.gen-dialog textarea,.gen-dialog select{width:100%;font-size:13px}.gen-inspector textarea{min-height:105px;resize:vertical}.gen-inspector .gen-json{font:12px/1.5 'DM Mono',monospace;min-height:130px}.gen-inspector small{display:block;font-size:11px;color:var(--text-dim);margin-top:6px}.gen-inspector .btn{margin-top:12px}.gen-inspector .gen-delete{color:var(--red);border-color:var(--red)}
.gen-run-panel{background:var(--card);border:1px solid var(--border);border-radius:12px;margin-top:16px;padding:18px}.gen-run-panel h3{margin:0 0 12px}.gen-run-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 0;border-top:1px solid var(--border)}.gen-run-row b{min-width:160px;font-size:13px}.gen-run-row small{font-size:11px;color:var(--text-dim)}.gen-status{font-size:11px;border-radius:6px;padding:4px 8px;background:var(--card-hover);color:var(--text-sec)}.gen-status.completed,.gen-status.connected{background:var(--gen-accent-soft);color:var(--gen-accent)}.gen-status.failed,.gen-status.needs_review{background:var(--red-dim);color:var(--red)}.gen-run-events{font-size:12px;color:var(--text-sec);padding:12px;background:var(--card-hover);border-radius:8px;max-height:250px;overflow:auto}.gen-result img,.gen-result video{max-width:200px;max-height:160px;border-radius:8px}.gen-result pre{white-space:pre-wrap;max-height:200px;overflow:auto;font:12px 'DM Mono',monospace}.gen-output-link{font-size:12px;color:var(--gen-accent);display:inline-block;margin:8px}
.gen-login{max-width:480px;margin:50px auto;padding:32px;background:var(--card);border:1px solid var(--border);border-radius:14px}.gen-login h2{margin:0}.gen-login input{display:block;width:100%;margin:14px 0}.gen-login p{font-size:13px}.gen-dialog{width:min(650px,calc(100vw - 32px));max-height:85vh;overflow:auto}.gen-connection{border:1px solid var(--border);border-radius:9px;padding:12px;margin:10px 0}.gen-connection strong{font-size:14px}.gen-connection small{display:block;color:var(--text-dim)}.gen-connection-actions{display:flex;gap:6px;margin-top:8px}.gen-inline{display:flex;align-items:center;gap:8px}.gen-inline input[type=checkbox]{width:auto}.gen-tabs{display:flex;gap:8px;margin-bottom:15px}.gen-message{font-size:12px;color:var(--text-sec);padding:10px;border-radius:8px;background:var(--card-hover)}
@media(max-width:1100px){.gen-workspace{grid-template-columns:155px minmax(200px,1fr) 250px}.gen-palette{padding:15px 9px}.gen-toolbar select{max-width:180px}}
@media(max-width:760px){#view-generate{margin:0}.gen-workspace{grid-template-columns:120px minmax(0,1fr);height:620px;min-height:0}.gen-inspector{grid-column:1/-1;max-height:310px;border-left:0;border-top:1px solid var(--border)}.gen-stage{min-height:350px}.gen-palette{grid-row:1;font-size:11px}.gen-palette .gen-add{padding:8px 5px;font-size:11px;gap:4px}.gen-palette .gen-symbol{font-size:15px;width:15px}.gen-toolbar{gap:7px}.gen-toolbar h1{width:100%;font-size:28px}.gen-toolbar .btn{font-size:12px;padding:6px 9px}.gen-toolbar select{max-width:160px}.gen-canvas-hint{display:none}.gen-controls{bottom:10px}.gen-run-row b{min-width:0}.gen-login{padding:22px;margin:20px 0}.gen-run-panel{padding:14px}.tabs .tab{padding:9px 10px;font-size:13px}}

.gen-enhancer{margin-top:20px;padding-top:18px;border-top:1px solid var(--border)}
.gen-enhancer .eyebrow{color:var(--gen-accent);margin:0 0 10px}
.gen-ref-drop{border:1px dashed var(--border);border-radius:8px;padding:12px;margin-top:16px;background:var(--card-hover)}
.gen-ref-drop p{margin:7px 0}.gen-ref-actions{display:flex;flex-wrap:wrap;gap:6px}
.gen-ref-list article{display:flex;align-items:start;gap:8px;margin:12px 0;padding-bottom:12px;border-bottom:1px solid var(--border)}
.gen-ref-list article>div{min-width:0;flex:1}.gen-ref-list b{display:block;overflow-wrap:anywhere;font-size:12px}.gen-ref-list img{width:48px;height:54px;object-fit:contain;background:var(--card-hover);border-radius:5px}
.gen-ref-list input,.gen-ref-list select{font-size:11px;margin-top:6px}.gen-ref-list article>.btn{margin-top:0;padding:2px 7px}.gen-ref-link{font-size:25px;color:var(--gen-accent)}
.gen-ref-result{display:block;width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere}
.gen-enhanced-drafts{margin-top:16px;padding:12px;border-radius:8px;background:var(--card-hover)}
.gen-enhanced-drafts textarea{min-height:140px;font-size:12px;line-height:1.6}.gen-enhancer details{margin-top:12px}.gen-enhancer details p{overflow-wrap:anywhere;white-space:pre-wrap}
#gen-enhance{width:100%}#gen-enhance-status:empty{display:none}
.gen-media-drop{border:1px dashed var(--accent);border-radius:10px;padding:14px;display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;background:var(--accent-dim)}.gen-media-drop small{width:100%}.gen-media-drop.dragging{outline:3px solid var(--accent)}.gen-media-slots article{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--border)}.gen-media-slots img,.gen-media-icon{width:50px;height:50px;object-fit:contain;flex-shrink:0;background:var(--bg);border-radius:7px}.gen-media-icon{display:grid;place-items:center;font-size:24px}.gen-media-slots article>div{min-width:0;flex:1}.gen-media-slots p{font-size:11px;overflow-wrap:anywhere}.gen-bank-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.gen-bank-filters input{flex:1}.gen-bank-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.gen-bank-card{background:var(--card);color:var(--text-pri);border:1px solid var(--border);border-radius:10px;overflow:hidden;padding:10px;text-align:left;cursor:pointer}.gen-bank-card img,.gen-bank-card>span{width:100%;height:90px;object-fit:contain;background:var(--bg);display:grid;place-items:center;font-size:26px}.gen-bank-card b,.gen-bank-card small{display:block;font-size:12px;overflow-wrap:anywhere;margin-top:6px}.gen-media-tags{display:flex;flex-wrap:wrap;gap:6px}#gen-media-request pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:10px;background:var(--bg);font-size:12px}

/* Production recipes stay compact and readable in the existing canvas palette. */
.gen-palette-help{font-size:11px;line-height:1.5;color:var(--text-dim);margin:0 0 12px}
#gen-search,#gen-production-group{width:100%;font-size:12px;margin-bottom:9px;min-width:0}
.gen-production{display:flex;gap:9px;align-items:flex-start;width:100%;text-align:left;white-space:normal;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text-pri);padding:10px;margin-bottom:7px;cursor:pointer}
.gen-production>span:last-child{min-width:0}.gen-production b{display:block;font-size:12px;line-height:1.4}.gen-production small{display:block;font-size:10px;line-height:1.5;color:var(--text-dim);margin-top:4px}
.gen-production:hover,.gen-production:focus-visible{border-color:var(--gen-accent);background:var(--gen-accent-soft)}
.gen-advanced{margin-top:16px}.gen-advanced summary{font-size:12px;color:var(--text-sec);cursor:pointer;margin-bottom:10px}
.gen-palette [hidden]{display:none!important}
@media(max-width:760px){.gen-production{padding:8px 5px;gap:4px}.gen-production .gen-symbol{width:12px;font-size:14px}.gen-production b{font-size:11px}.gen-production small{font-size:10px}}

.gen-credit-control{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-sec);white-space:nowrap}
.gen-credit-control input{width:94px;min-width:0;padding:8px;font-size:13px}
.gen-reference-previews{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;white-space:normal}
.gen-reference-previews.single{grid-template-columns:1fr}.gen-reference-previews figure{margin:0;min-width:0}
.gen-node-body .gen-reference-previews img{width:100%;height:66px;object-fit:contain;margin:0;background:var(--bg)}
.gen-node-body .gen-reference-previews.single img{height:110px}
.gen-reference-previews figcaption{font:10px 'DM Mono',monospace;color:var(--text-dim);padding-top:3px}

.gen-template-text{white-space:pre-wrap;overflow-wrap:anywhere;max-height:250px;overflow:auto;padding:12px;background:var(--bg);font-size:12px}
.gen-prompt-file{display:block;text-align:left;width:100%;white-space:normal;overflow-wrap:anywhere;margin:7px 0!important}
.gen-model-controls{margin-top:18px;padding-top:12px;border-top:1px solid var(--border)}.gen-model-controls h4{margin:0}
.gen-model-check{display:flex!important;align-items:center;justify-content:space-between;gap:8px}.gen-model-check input{width:auto}
.gen-tool-advanced{margin:18px 0}.gen-tool-advanced summary{font-size:12px;cursor:pointer;color:var(--text-dim)}
#gen-output-player video,#gen-output-player img{display:block;width:100%;max-height:330px;background:var(--bg);border-radius:8px}
.gen-output-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;max-height:260px;overflow:auto}
.gen-output-node .gen-node-body video{pointer-events:auto}
.gen-workshop-messages{max-height:280px;overflow:auto;padding:8px;background:var(--bg);border-radius:8px}
.gen-workshop-message{padding:10px 12px;margin-bottom:8px;background:var(--card);border:1px solid var(--border);border-radius:8px;font-size:13px}
.gen-workshop-message.from-user{border-color:var(--gen-accent)}.gen-workshop-message p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}
.gen-workshop-questions{font-size:13px}.gen-workshop-drafts{margin-top:15px;padding:12px;background:var(--card-hover);border-radius:8px}
.gen-workshop-drafts textarea{min-height:95px}.gen-workshop-drafts summary{cursor:pointer;font-size:13px}
#gen-workshop{width:100%}
.is-image-drop-target{outline:2px dashed var(--accent);outline-offset:3px}
