/* Fases 02/03: flujo visual, dirección avanzada, revelado y composición. */
.flow-toolbar,.edit-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:15px 0}.flow-toolbar>span{font-size:12px;color:var(--muted);margin-right:auto}.flow-toolbar .btn,.edit-actions .btn{font:12px var(--font);min-height:38px;padding:8px 12px}.flow-viewport{overflow:auto;max-width:100%;height:650px;background:#17201b;border:1px solid #586b5e;position:relative;margin:18px 0}.flow-board{position:relative;width:1700px;height:1250px;transform-origin:0 0;background-image:radial-gradient(#91b69b35 1px,transparent 1px);background-size:20px 20px}.flow-lines{position:absolute;left:0;top:0;pointer-events:none}.flow-wire{stroke:#b9dec9;stroke-width:2;fill:none;opacity:.65}.flow-node{position:absolute;width:235px;min-height:145px;background:#f4f1e9;color:#18201b;border:1px solid #91a999;box-shadow:0 5px 15px #0003}.flow-node[data-selected=true]{outline:2px solid #b9dec9;outline-offset:3px}.flow-node-head{width:100%;padding:12px;background:#e1e8df;border:0;text-align:left;font:600 13px var(--font);color:#18201b;cursor:grab;touch-action:none}.flow-node p{font-size:11px;padding:10px 12px;line-height:1.6;max-height:58px;overflow:hidden}.flow-node>.btn,.flow-port{margin:0 8px 8px;min-height:32px;font-size:11px}.flow-port{background:#203b2a;border:1px solid #3e6751;color:#f3efe6;padding:6px 10px;cursor:pointer}.flow-port[aria-pressed=false]{background:#f4f1e9;color:#203b2a}.flow-inspector{padding:22px;border-block:1px solid var(--line);display:flex;flex-direction:column;align-items:start;gap:14px;margin-bottom:30px}.flow-inspector p,#flow-status{font-size:12px;line-height:1.7;color:var(--muted)}.flow-inspector textarea,.flow-inspector select{width:min(100%,600px);padding:10px}.flow-thumbs{display:flex;gap:10px;flex-wrap:wrap}.flow-thumbs img{width:100px;height:100px;object-fit:contain;background:#e7e9df}.rig-layout{display:grid;grid-template-columns:minmax(180px,300px) 1fr;gap:24px;margin-top:18px}.rig-layout svg{background:#17201b;width:100%;color:#c9dfd0}.rig-orbit{stroke:#819987;fill:none;stroke-dasharray:3 5}.rig-beam{stroke:#dce2ab;stroke-width:2}.rig-subject{fill:#b9dec9}.rig-light{fill:#fff2c5}.rig-camera{fill:#a3c2c4}.rig-layout text{fill:#c9dfd0;font:8px sans-serif}#shoot-light-rig{border-top:1px solid var(--line);padding-top:20px}#shoot-light-rig label{font-size:12px}#shoot-light-rig input[type=checkbox]{width:auto;min-height:20px}#shoot-light-rig input[type=range]{padding:0;min-height:28px;accent-color:#51705c}.rig-layout output{float:right;font-size:11px}
.delivery-tabs{display:flex!important;overflow-x:auto;gap:3px!important}.delivery-tabs button{flex:1;min-width:68px;font-size:11px;padding:10px 6px}.delivery-stage-head{flex-wrap:wrap}.delivery-stage-head .btn{background:transparent;border:1px solid #76877c;color:#dbe4dc;padding:7px 10px;min-height:34px;font-size:10px}.edit-range{display:flex;align-items:center;gap:10px}.edit-range output{min-width:32px;font-size:11px}#edit-tones,#edit-curve,#edit-mask-controls,#edit-layer-controls,#edit-geometry,#edit-grain{display:flex;flex-direction:column;gap:12px;margin:14px 0}.edit-layer-row .btn,#edit-masks .btn{font-size:11px;text-align:left;max-width:100%;overflow-wrap:anywhere}.edit-layer-row{margin:5px 0}#edit-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#delivery-canvas[data-edit-tool=mask]{cursor:crosshair}#delivery-canvas[data-edit-tool=layer]{cursor:move}.crop-dialog{background:#f3efe6;color:#18201b;width:min(920px,94vw);max-height:94dvh;overflow:auto;border:1px solid #7d9584;padding:25px}.crop-dialog::backdrop{background:#101713e8}.crop-dialog h2{font-size:28px;letter-spacing:-.04em;margin-bottom:12px}.crop-dialog p{font-size:12px;line-height:1.7;margin-bottom:15px}.crop-stage{position:relative;width:fit-content;max-width:100%;margin:0 auto;touch-action:none;cursor:crosshair;overflow:hidden}.crop-stage img{display:block;max-width:100%;max-height:50dvh;object-fit:contain;user-select:none}.crop-box{position:absolute;border:2px solid #b9dec9;box-shadow:0 0 0 2000px #07140b88;pointer-events:none;background:linear-gradient(90deg,transparent 33%,#ffffff66 33%,#ffffff66 calc(33% + 1px),transparent calc(33% + 1px),transparent 66%,#ffffff66 66%,#ffffff66 calc(66% + 1px),transparent calc(66% + 1px))}.crop-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:20px}.crop-fields label{font-size:12px}.crop-fields input{width:100%;min-height:35px}.crop-dialog select{padding:8px;margin-top:12px}.crop-dialog>.edit-actions{justify-content:flex-end}
@media(max-width:760px){.flow-viewport{height:500px}.rig-layout{grid-template-columns:1fr}.rig-layout svg{max-width:250px;justify-self:center}.delivery-stage{max-height:none}.crop-fields{grid-template-columns:1fr}.flow-inspector{padding:15px}.flow-toolbar .btn{font-size:11px}.delivery-tabs button{min-width:60px;font-size:10px}}

.flow-node-image{width:72px;height:44px;object-fit:contain;float:left;margin:10px 10px 0 12px;background:#d9dfd6}.flow-node>.flow-port{position:relative}.flow-node::after{content:'';position:absolute;right:-5px;top:43px;width:9px;height:9px;border-radius:50%;background:#b9dec9;border:1px solid #253b2d}.flow-toolbar select{max-width:min(100%,250px);font-size:12px;padding:7px}
.flow-view-switch{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:4px}.flow-view-switch .btn{border:0;background:transparent}.flow-view-switch .btn[aria-pressed=true]{background:#203b2a;color:#f4f1e9}.flow-entry{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 0;border-block:1px solid var(--line);margin:0 0 25px}.flow-entry strong{font-size:16px}.flow-entry p{font-size:12px;color:var(--muted);margin:7px 0 0}.flow-entry .btn{flex-shrink:0}@media(max-width:760px){.flow-entry{align-items:flex-start;flex-direction:column;gap:12px}}
@media(min-width:1001px){.delivery-preview img{max-height:max(180px,calc(100dvh - 300px))}}
/* Lienzo de nodos v2: coordenadas lógicas independientes del zoom. */
.flow-workspace{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:14px;min-width:0;align-items:start}.flow-viewport{height:680px;margin:0;overflow:hidden;touch-action:none;cursor:grab;border-radius:18px;background:#17201b;background-image:radial-gradient(#b9dec92c 1px,transparent 1px);isolation:isolate}.flow-viewport.is-panning{cursor:grabbing}.flow-board{position:absolute;inset:0 auto auto 0;width:12500px;height:12500px;background:none;transform-origin:0 0}.flow-lines{overflow:visible;pointer-events:none;z-index:0}.flow-wire{stroke-width:2.5;opacity:.8;vector-effect:non-scaling-stroke}.flow-wire[data-selected=true]{stroke-width:4;filter:drop-shadow(0 0 4px #b9dec9)}.flow-wire-preview{stroke-dasharray:8 5;opacity:1}.flow-edge-hit{fill:none;stroke:transparent;stroke-width:18;pointer-events:stroke;cursor:pointer}.flow-node{width:250px;min-height:170px;border:1px solid #738a79;border-radius:16px;background:#f3f0e7;user-select:none;box-shadow:0 8px 25px #0005;z-index:1;overflow:visible}.flow-node::after{display:none}.flow-node[data-selected=true]{outline:2px solid #c3e3cb;outline-offset:4px;z-index:2}.flow-node-head{display:flex;align-items:center;gap:9px;width:100%;padding:14px 16px;border:0;border-bottom:1px solid #cad1c5;border-radius:15px 15px 0 0;background:#e3e9df;color:#18201b;cursor:grab;touch-action:none;font:600 13px var(--font)}.flow-node-head:active{cursor:grabbing}.flow-node-grip{font-size:18px;color:#607765}.flow-node p{clear:both;font-size:12px;line-height:1.55;max-height:73px;padding:12px 16px;margin:0;overflow:hidden}.flow-node-image{display:block;float:none;width:calc(100% - 28px);height:92px;object-fit:contain;margin:12px 14px 0;background:#e7e8de;border-radius:9px;pointer-events:none}.flow-node-status{display:inline-block;margin:3px 10px 12px 14px;font-size:10px;color:#8a6655}.flow-node-status[data-connected=true]{color:#355e42}.flow-node>.btn{float:right;margin:0 14px 12px 0;font-size:11px;padding:6px 10px;min-height:30px}.flow-socket{position:absolute;width:18px;height:18px;padding:0;min-height:0;border:3px solid #17201b;border-radius:50%;background:var(--port-color);box-shadow:0 0 0 1.5px var(--port-color);cursor:crosshair;touch-action:none;z-index:4}.flow-socket:hover,.flow-socket:focus-visible{box-shadow:0 0 0 5px #f4f1e955,0 0 12px var(--port-color);outline:none}.flow-socket-output{right:-10px;top:64px}.flow-socket-input{left:-10px;top:7px}.flow-socket-input[data-connected=true]{border-color:var(--port-color);background:#17201b}.flow-input-row{position:relative;min-height:33px;font-size:12px;padding:6px 16px;color:#334a3c}.flow-scene-inputs{padding:11px 0 15px}.flow-node:has(.flow-scene-inputs){width:270px}.flow-inspector{margin:0;border:1px solid var(--line);border-radius:16px;padding:20px;background:#eeeee5;min-width:0;max-height:680px;overflow:auto;gap:14px}.flow-inspector h3{font-size:21px;line-height:1.2;letter-spacing:-.025em}.flow-inspector h4{font-size:12px;margin-top:8px}.flow-inspector .btn{font-size:11px;line-height:1.6;min-height:36px;white-space:normal;width:100%;text-align:left}.flow-field{display:flex;flex-direction:column;gap:7px;font-size:11px;width:100%;min-width:0}.flow-field input,.flow-field select,.flow-field textarea{width:100%;min-width:0;max-width:100%;font:12px var(--font);padding:9px}.flow-field input[type=checkbox]{width:18px;min-height:18px;align-self:flex-start}.flow-thumbs{gap:6px}.flow-thumbs img{width:65px;height:65px;object-fit:contain;border-radius:9px}.flow-instructions,#flow-status{font-size:11px;line-height:1.7;color:var(--muted);margin:8px 0 12px}.flow-palette{width:min(470px,92vw);border:1px solid #b7c5b6;border-radius:20px;padding:25px;background:#f3f0e7;color:#18201b}.flow-palette::backdrop{background:#0d1813b0;backdrop-filter:blur(6px)}.flow-palette h2{font-size:26px;margin:0 0 12px}.flow-palette p{font-size:12px;line-height:1.7;margin-bottom:16px;color:var(--muted)}.flow-palette input{width:100%;margin-bottom:14px}.flow-palette-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px}.flow-palette-list .btn{text-align:left}.flow-toolbar{gap:7px}.flow-toolbar>output{font-size:11px;min-width:40px;text-align:center}.flow-expanded #shoot-workflow{position:fixed;inset:0;z-index:100;background:#f3f0e7;padding:18px;display:flex;flex-direction:column;overflow:auto}.flow-expanded .flow-toolbar{margin-top:0}.flow-expanded .flow-workspace{flex:1;min-height:0;align-items:stretch}.flow-expanded .flow-viewport,.flow-expanded .flow-inspector{height:100%;max-height:none;min-height:300px}.flow-expanded .flow-workspace{grid-template-columns:minmax(0,1fr) 280px}
@media(max-width:1100px){.flow-workspace{grid-template-columns:minmax(0,1fr)}.flow-inspector{max-height:480px}.flow-expanded .flow-workspace{grid-template-columns:minmax(0,1fr)}.flow-expanded .flow-inspector{height:auto;max-height:240px;min-height:0}.flow-expanded .flow-viewport{height:60dvh;min-height:300px}.flow-viewport{height:620px}}
@media(max-width:600px){.flow-viewport{height:520px}.flow-toolbar .btn{min-height:40px}.flow-expanded #shoot-workflow{padding:10px}.flow-palette-list{grid-template-columns:1fr}}
.flow-node.flow-drop-target{outline:3px dashed #b9dec9;outline-offset:7px;background:#e1eddf}.flow-socket:disabled{cursor:not-allowed;opacity:.5}

/* Lienzo operativo: el resultado pertenece al nodo de su fotografía. */
.flow-photo-node{width:330px;min-height:330px;background:#f8f5ed}
.flow-photo-node .flow-node-head{background:#ece7dc;min-height:52px}
.canvas-photo-image{display:flex;align-items:center;justify-content:center;width:calc(100% - 24px);height:195px;margin:2px 12px 0;padding:0;border:0;border-radius:12px;background:#e6e6dc;overflow:hidden;cursor:zoom-in;color:#68756b;font:12px var(--font);line-height:1.6}
.canvas-photo-image:disabled{cursor:default;opacity:1}.canvas-photo-image span{padding:28px}.canvas-photo-image img{width:100%;height:100%;object-fit:contain;pointer-events:none}
.canvas-photo-state{font-size:11px;line-height:1.5;padding:11px 15px 5px;color:#4e6557}
.flow-photo-node[data-photo-state=running] .canvas-photo-state,.flow-photo-node[data-photo-state=queued] .canvas-photo-state{color:#7b591b}
.flow-photo-node[data-photo-state=approved]{border-color:#bbdfc5;box-shadow:0 0 0 2px #badfc433,0 8px 25px #0005}
.canvas-photo-actions{display:flex;flex-wrap:wrap;gap:7px;padding:8px 12px 13px;clear:both}
.canvas-photo-actions .btn{font:11px var(--font);line-height:1.5;white-space:normal;min-height:34px;padding:7px 10px;border:1px solid #a6b5a7;border-radius:10px;background:#f5f5ed;color:#243a2d;text-align:left;cursor:pointer}
.canvas-photo-actions .canvas-generate,.canvas-action-dialog .canvas-generate{background:#253f2f;color:#f7f3e9;border-color:#253f2f}
.canvas-photo-actions .canvas-approve,.canvas-action-dialog .canvas-approve{background:#c8e3cf;border-color:#92b49b;color:#1b3324}
.canvas-photo-actions button:disabled{cursor:not-allowed;opacity:.45}
.canvas-version-select{width:calc(100% - 24px);margin:3px 12px 4px;min-height:30px;padding:5px 8px;font:11px var(--font);background:#fffdf6;border:1px solid #bdc8bb;border-radius:9px}
.flow-inspector .canvas-version-select{width:100%;margin:0}
.canvas-photo-error{color:#943e31!important;max-height:100px!important}
.canvas-photo-rating{font-size:14px;letter-spacing:2px;color:#886723;margin:0 15px}
.flow-photo-node[data-review-color=red]{border-bottom:5px solid #c85b57}.flow-photo-node[data-review-color=orange]{border-bottom:5px solid #cf9259}.flow-photo-node[data-review-color=yellow]{border-bottom:5px solid #d1b457}.flow-photo-node[data-review-color=green]{border-bottom:5px solid #6b9e7d}.flow-photo-node[data-review-color=blue]{border-bottom:5px solid #628cba}.flow-photo-node[data-review-color=purple]{border-bottom:5px solid #9b7abd}
.flow-collection-node{width:310px;background:#e7eee3}.flow-collection-node .flow-node-head{background:#cddfcd}
.canvas-collection-summary{padding:15px 16px 5px;font:600 13px var(--font);line-height:1.7}
.canvas-result-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0 12px 14px;width:calc(100% - 24px)}
.canvas-result-grid:empty{display:none}.canvas-result-grid button{padding:0;background:#f8f5ed;border:1px solid #b5c5b3;aspect-ratio:1;border-radius:9px;overflow:hidden;cursor:pointer}
.canvas-result-grid img{display:block;width:100%;height:100%;object-fit:contain}
.flow-inspector .canvas-photo-actions{padding:0}.flow-inspector details{width:100%;font-size:12px;line-height:1.7}.flow-inspector details>summary{cursor:pointer;margin:8px 0}.flow-inspector details .flow-field{margin:12px 0}.canvas-download{font-size:12px;color:#345940;text-underline-offset:4px}
.canvas-metadata{display:grid;grid-template-columns:1fr;gap:5px;font-size:11px;overflow-wrap:anywhere}.canvas-metadata dt{margin-top:8px;color:#68766a}.canvas-metadata dd{margin:0;color:#263a2b}
.canvas-action-dialog{width:min(620px,94vw);max-height:92dvh;overflow:auto;padding:25px;border:1px solid #b0c0af;border-radius:24px;background:#f3f0e7;color:#17251c;box-shadow:0 30px 120px #07140b70;font-family:var(--font)}
.canvas-action-dialog::backdrop{background:#0c1711b8;backdrop-filter:blur(6px)}
.canvas-action-dialog header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}
.canvas-action-dialog h2{font:500 27px var(--font);letter-spacing:-.04em;line-height:1.2;margin:0}.canvas-action-dialog p{font-size:13px;line-height:1.8;margin:14px 0;color:#526356}
.canvas-action-dialog .btn{font:12px var(--font);line-height:1.5;padding:10px 14px;min-height:40px;border:1px solid #aabca9;border-radius:10px;background:#f8f6ef;color:#243c2a;cursor:pointer;white-space:normal}
.canvas-dialog-close{flex-shrink:0;background:transparent!important;border-color:transparent!important;padding:5px 8px!important;min-height:30px!important;color:#526b59!important}
.canvas-action-dialog input:not([type=checkbox]),.canvas-action-dialog select,.canvas-action-dialog textarea{min-height:40px;width:100%;border:1px solid #b0c0ad;border-radius:10px;background:#fffdf7;color:#203326;padding:10px;font:13px var(--font)}
.canvas-action-dialog .flow-field{margin:16px 0}.canvas-photo-types{display:grid;gap:10px;margin:20px 0;grid-template-columns:1fr 1fr}.canvas-photo-types .btn{text-align:left}
.canvas-run-list{margin:20px 0;padding-left:22px;font-size:13px;line-height:1.9}.canvas-cost{display:block;font:600 18px var(--font);margin-top:25px}.canvas-action-dialog .canvas-dialog-error{color:#923c32}
.canvas-pilot-dialog{width:min(880px,95vw)}.canvas-pilot-image{display:block;max-width:100%;width:100%;max-height:55dvh;object-fit:contain;background:#dfe4da;border-radius:14px}
.canvas-confirm-check{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.8;margin:15px 0}.canvas-confirm-check input{width:18px;min-height:18px;flex-shrink:0;margin-top:3px}
.canvas-direction-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.canvas-action-dialog button:focus-visible,.canvas-photo-image:focus-visible{outline:3px solid #6a9476;outline-offset:3px}
@media(max-width:600px){.canvas-action-dialog{padding:18px}.canvas-photo-types,.canvas-direction-grid{grid-template-columns:1fr}.canvas-action-dialog h2{font-size:23px}.flow-photo-node{width:310px}}
.flow-simulator-badge{font-size:11px;color:#c7e4d0;border:1px solid #547563;border-radius:999px;padding:6px 10px;white-space:nowrap}

/* Las acciones se usan a tamaño real; la vista general sirve para localizar una rama. */
.flow-toolbar .btn,.flow-node>.btn,.canvas-photo-actions .btn,.flow-inspector .btn{min-height:44px;font-size:12px}
.flow-viewport[data-overview=true]::after{content:'Vista general · toca un nodo para trabajar al 100 %';position:absolute;bottom:12px;left:12px;right:12px;pointer-events:none;background:#101b17ed;color:#e8f2e9;padding:12px;border-radius:12px;font:12px var(--font);z-index:5}
.canvas-photo-state{overflow-wrap:anywhere}.canvas-photo-state[data-state=incomplete]{color:#795123}
