/* S04 visual campaign canvas. Reference lock: existing Brad–Sterling shell palette, Keap-style journey geometry, compact operational density. */
.campaign-builder{position:relative;display:grid;grid-template-columns:178px minmax(420px,1fr) 274px;min-height:620px;border:1px solid #d7dce3;background:#fff;box-shadow:0 16px 36px rgba(23,25,39,.08)}
.canvas-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;align-items:center;gap:12px;margin-bottom:10px;padding:10px 12px;border:1px solid #dfe3e8;background:#fff}
.canvas-toolbar label{display:flex;align-items:center;gap:8px;font:600 11px/1.2 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.06em;color:#596171}.canvas-toolbar select{min-width:220px;border:1px solid #ccd2da;background:#fff;padding:8px 30px 8px 10px;color:#171927;font:600 12px/1.2 Inter,sans-serif}
.canvas-status{display:flex;align-items:center;gap:7px;color:#637083;font:500 11px/1.2 'DM Mono',monospace}.canvas-status i{width:7px;height:7px;border-radius:50%;background:#17845f}.canvas-status.saving i{background:#f6bd31}.canvas-status.error i{background:#c54242}
.canvas-actions{display:flex;align-items:center;gap:4px}.canvas-actions button{min-height:34px;border:1px solid #d5dae1;background:#fff;color:#273041;padding:7px 10px;font-weight:700}.canvas-actions button:hover,.canvas-actions button:focus-visible{border-color:#245fbb;color:#245fbb}.canvas-actions output{min-width:52px;text-align:center;font:600 10px/1 'DM Mono',monospace;color:#596171}
.node-palette{display:flex;flex-direction:column;border-right:1px solid #dfe3e8;background:#f7f8fa}.node-palette header{padding:18px 15px 12px;border-bottom:1px solid #e1e5ea}.node-palette h2{margin:0;font-size:15px;letter-spacing:-.02em}.node-palette header p:last-child{margin:6px 0 0;color:#737b87;font-size:11px;line-height:1.45}.node-palette>div{display:grid;gap:5px;padding:10px}.palette-node{display:grid;grid-template-columns:29px 1fr;align-items:center;gap:8px;width:100%;border:1px solid #dfe3e8;background:#fff;padding:8px;text-align:left;color:#252a36;cursor:grab}.palette-node:hover,.palette-node:focus-visible{border-color:var(--node-color);box-shadow:inset 3px 0 var(--node-color)}.palette-node i,.graph-node .node-icon{display:grid;place-items:center;width:29px;height:29px;background:color-mix(in srgb,var(--node-color) 12%,white);color:var(--node-color);font-style:normal;font-weight:800}.palette-node strong{display:block;font-size:11px}.palette-node small{display:block;margin-top:2px;color:#7b8390;font-size:9px}.node-palette footer{margin-top:auto;padding:13px 14px;border-top:1px solid #e1e5ea;background:#eef7f5}.node-palette footer span{font:700 9px/1 'DM Mono',monospace;letter-spacing:.1em;color:#0b8f87}.node-palette footer p{margin:5px 0 0;color:#4e655f;font-size:10px;line-height:1.45}
.graph-canvas{position:relative;min-width:0;overflow:hidden;outline:none;background-color:#f2f4f7;background-image:linear-gradient(#dfe3e9 1px,transparent 1px),linear-gradient(90deg,#dfe3e9 1px,transparent 1px);background-size:24px 24px;cursor:grab;touch-action:none}.graph-canvas.is-panning{cursor:grabbing}.graph-canvas:focus-visible{box-shadow:inset 0 0 0 3px rgba(36,95,187,.28)}.canvas-help{position:absolute;z-index:8;left:12px;bottom:10px;padding:6px 8px;background:rgba(255,255,255,.88);border:1px solid #dce1e7;color:#6c7480;font:500 9px/1.2 'DM Mono',monospace;pointer-events:none}.graph-world{position:absolute;inset:0;transform-origin:0 0;will-change:transform}.edge-layer,.node-layer{position:absolute;left:0;top:0;width:2400px;height:1600px;overflow:visible}.edge-layer path.edge{fill:none;stroke:#929ba9;stroke-width:2;marker-end:url(#edgeArrow);vector-effect:non-scaling-stroke}.edge-layer path.edge[data-type="approved"]{stroke:#17845f}.edge-layer path.edge[data-type="review"]{stroke:#c98a12;stroke-dasharray:6 5}.edge-layer path.edge[data-type="blocked"]{stroke:#c54242;stroke-dasharray:3 4}
.graph-node{position:absolute;width:220px;min-height:108px;border:1px solid #cfd5dd;border-top:3px solid var(--node-color);background:#fff;box-shadow:0 5px 14px rgba(27,34,45,.09);cursor:grab;user-select:none}.graph-node:hover{border-color:#aab3c0}.graph-node.selected{box-shadow:0 0 0 3px rgba(36,95,187,.2),0 10px 22px rgba(27,34,45,.14);border-color:#245fbb}.graph-node.dragging{cursor:grabbing;z-index:4}.graph-node header{display:grid;grid-template-columns:29px 1fr auto;gap:8px;align-items:center;padding:10px 11px 7px}.graph-node .node-icon{width:29px;height:29px}.graph-node h3{margin:0;font-size:12px;line-height:1.25}.graph-node .node-kind{font:700 8px/1 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--node-color)}.graph-node .node-menu{border:0;background:transparent;color:#7a828e;font-size:16px}.graph-node p{margin:1px 11px 10px;padding-top:7px;border-top:1px solid #edf0f3;color:#6b7380;font-size:10px;line-height:1.4}.node-port{position:absolute;top:50%;display:grid;place-items:center;width:15px;height:15px;padding:0;border:2px solid #fff;border-radius:50%;background:#758091;box-shadow:0 0 0 1px #a7afba;transform:translateY(-50%);cursor:crosshair}.node-port:hover,.node-port:focus-visible{background:#245fbb;box-shadow:0 0 0 3px rgba(36,95,187,.2)}.node-port.input{left:-8px}.node-port.output{right:-8px}.graph-node.connecting .node-port.output{background:#245fbb;box-shadow:0 0 0 5px rgba(36,95,187,.2)}
.node-inspector{border-left:1px solid #dfe3e8;background:#fff;overflow:auto}.node-inspector .empty-inspector{display:grid;place-items:center;align-content:center;min-height:100%;padding:28px;text-align:center;color:#838b97}.node-inspector .empty-inspector span{font-size:31px}.node-inspector .empty-inspector h2{margin:10px 0 4px;font-size:15px}.node-inspector .empty-inspector p{margin:0;font-size:11px;line-height:1.5}.inspector-title{padding:18px;border-bottom:1px solid #e4e7eb;background:#f7f8fa}.inspector-title small{font:700 9px/1 'DM Mono',monospace;letter-spacing:.1em;color:var(--node-color)}.inspector-title h2{margin:6px 0 0;font-size:17px}.node-form{display:grid;gap:13px;padding:16px}.node-form label{display:grid;gap:5px;color:#5f6875;font:600 10px/1.2 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.05em}.node-form input,.node-form select,.node-form textarea{width:100%;border:1px solid #ccd2da;background:#fff;padding:9px;color:#1d2330;font:500 12px/1.4 Inter,sans-serif;text-transform:none;letter-spacing:normal}.node-form textarea{min-height:82px;resize:vertical}.node-form input:focus,.node-form select:focus,.node-form textarea:focus{outline:2px solid rgba(36,95,187,.22);border-color:#245fbb}.inspector-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px}.inspector-meta div{padding:9px;background:#f3f5f7}.inspector-meta span{display:block;color:#7a8290;font-size:9px}.inspector-meta strong{display:block;margin-top:3px;font-size:11px}.danger-action{border:1px solid #e1bcbc;background:#fff;color:#b53434;padding:9px;font-weight:700}.danger-action:hover{background:#fff3f3}.connect-toast{position:absolute;z-index:10;left:50%;top:12px;transform:translateX(-50%);padding:8px 12px;background:#10151e;color:#fff;font:600 10px/1.2 'DM Mono',monospace;box-shadow:0 8px 20px rgba(0,0,0,.16)}
@media(max-width:1120px){.campaign-builder{grid-template-columns:154px minmax(400px,1fr) 240px}.palette-node{grid-template-columns:25px 1fr;padding:7px}.palette-node i{width:25px;height:25px}.node-inspector{font-size:11px}}
@media(max-width:820px){.canvas-toolbar{grid-template-columns:1fr auto}.canvas-status{grid-column:1/-1;grid-row:2}.campaign-builder{grid-template-columns:minmax(0,1fr);min-width:0;width:100%;min-height:760px}.node-palette{min-width:0;max-width:100%;overflow:hidden;border-right:0;border-bottom:1px solid #dfe3e8}.node-palette header{padding:13px}.node-palette>div{display:flex;min-width:0;max-width:100%;overflow-x:auto}.palette-node{min-width:118px}.node-palette footer{display:none}.graph-canvas{min-width:0;width:100%;min-height:500px}.node-inspector{position:absolute;z-index:20;right:12px;left:12px;bottom:12px;max-height:54%;border:1px solid #cdd3da;box-shadow:0 14px 34px rgba(21,27,38,.22);display:none}.node-inspector.open{display:block}.node-inspector .empty-inspector{display:none}.canvas-help{display:none}}
@media(max-width:520px){.mm-main{padding-left:12px;padding-right:12px}.metric-grid{grid-template-columns:1fr 1fr}.canvas-toolbar{grid-template-columns:1fr}.canvas-toolbar label{display:grid}.canvas-toolbar select{min-width:0;width:100%}.canvas-actions{grid-row:2;justify-content:space-between}.canvas-status{grid-row:3}.campaign-builder{min-height:720px}.graph-canvas{min-height:470px}.palette-node small{display:none}.palette-node{min-width:96px}.graph-node{width:196px}.edge-layer,.node-layer{width:2200px}.run-strip{margin-top:12px}}
/* S05 signal model: responsibility color is isolated to owner markers; status remains labeled text. */
.signal-legend{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:1px;margin:0 0 10px;border:1px solid #d7dce3;background:#d7dce3}.signal-legend>div{min-width:0;padding:8px 10px;background:#fff}.signal-legend strong{display:block;color:#313846;font:700 9px/1.2 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.06em}.signal-legend span{display:flex;align-items:center;gap:5px;margin-top:4px;color:#6f7885;font-size:9px}.owner-swatch,.node-owner i,.inspector-owner i{display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--owner-color,#245fbb)}
.graph-node{min-height:184px}.node-owner{display:grid;grid-template-columns:8px auto minmax(0,1fr);align-items:center;gap:5px;margin:0 11px 6px;color:#78818e;font:700 8px/1.2 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.05em}.node-owner strong{min-width:0;overflow:hidden;text-overflow:ellipsis;color:#354050;font-size:8px;white-space:nowrap}.graph-node p{min-height:29px;margin-bottom:7px}.node-signals{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin:0 10px 10px}.node-signals .signal{display:flex;align-items:center;gap:4px;min-width:0;padding:4px 5px;border:1px solid #e0e4e9;background:#f8f9fa;color:#505967;font:600 8px/1.15 'DM Mono',monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-signals .signal b{display:grid;place-items:center;flex:0 0 14px;width:14px;height:14px;border-radius:50%;background:#e5e8ec;color:#4d5663;font-size:7px}.node-signals .performance{grid-column:1/-1}.node-signals [data-value="verified"] b,.node-signals [data-value="complete"] b,.node-signals [data-value="approved"] b,.node-signals [data-value="strong"] b{background:#dff1e8;color:#176344}.node-signals [data-value="active"] b,.node-signals [data-value="partial"] b{background:#e2ebfa;color:#245fbb}.node-signals [data-value="waiting"] b,.node-signals [data-value="pending"] b{background:#fff0cf;color:#8d5d0a}.node-signals [data-value="blocked"] b,.node-signals [data-value="issue"] b,.node-signals [data-value="expired"] b{background:#f9dddd;color:#a33131}.inspector-owner{display:flex;align-items:center;gap:6px;margin-top:8px;color:#5f6875;font:600 9px/1.2 'DM Mono',monospace}.signal-editor{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0;padding:12px;border:1px solid #dfe3e8}.signal-editor legend{padding:0 5px;color:#343c48;font:700 9px/1.2 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.07em}.signal-editor label:last-child{grid-column:1/-1}.signal-note{margin:0;padding:9px;background:#f2f5f8;color:#667180;font-size:9px;line-height:1.45}
@media(max-width:1120px){.signal-legend{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.signal-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.graph-node{min-height:184px}}
@media(max-width:520px){.signal-legend{grid-template-columns:1fr 1fr}.signal-legend>div{padding:7px}.signal-editor{grid-template-columns:1fr}.signal-editor label:last-child{grid-column:auto}}
@media(prefers-reduced-motion:reduce){.graph-world{will-change:auto}.graph-node{transition:none}}
