/* ── cockpit.css — Automation Cockpit visual builder (Arc A sitting 1) ──
   v17.12.97. Ported from the execbot-automation-cockpit.html mock. Every
   class is `ck-` prefixed: the mock's generic names (.node/.port/.canvas/
   .stat/.sw/.btn/.tab/.ghost/.hint/.palette/.edge …) ALL collide with
   shell.css / index.html / mindmap.css and — critically — with shell.js'
   bindStaticViewInteractions() which binds a visual toggle to every global
   `.sw`. Prefixing isolates the whole surface (the shell-* prefix rule,
   extended to CSS).

   Retheme: the mock was dark-only. Every hardcoded hue → a token. Canvas
   chrome uses the NEW --ck-* canvas set (tokens.css); node/edge accents use
   the status tokens + channel triplets so LIGHT re-hues for free. The node
   config panel reuses the .92 settings-modal field language (.cfgm-l /
   .cfgm-i / .cfgm-t from shell.css) — not redefined here.

   Chrome (.vhead / .actions / .btn-primary / .btn-ghost) is shell.css's;
   the #v-cockpit section markup uses those directly. */

/* ============ LAYOUT ============ */
#v-cockpit.view.show{display:flex;flex-direction:column;height:calc(100vh - 40px);}
.ck-wrap{flex:1;min-height:0;display:flex;flex-direction:column;gap:14px;}

/* ============ DASHBOARD STRIP ============ */
.ck-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;}
.ck-stat{background:linear-gradient(165deg,var(--card),var(--surface));border:1px solid var(--border);border-radius:14px;padding:13px 15px;position:relative;overflow:hidden;}
.ck-stat::after{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent),transparent 70%);opacity:.6;}
.ck-stat .ck-sl{font-family:var(--font-mono);font-size:8px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;}
.ck-stat .ck-sv{font-family:var(--font-display);font-weight:900;font-size:23px;margin-top:5px;letter-spacing:.5px;}
.ck-stat .ck-sv small{font-size:12px;color:var(--text2);font-weight:500;}
.ck-stat .ck-sd{color:var(--text2);margin-top:3px;font-family:var(--font-mono);font-size:9px;}
.ck-stat.cy .ck-sv{color:var(--accent);text-shadow:0 0 22px var(--accent-glow);}
.ck-stat.gr .ck-sv{color:var(--green);}
.ck-stat.am .ck-sv{color:var(--amber);}
.ck-stat.vi .ck-sv{color:var(--violet);}

/* ============ FLOW TABS ============ */
.ck-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.ck-tab{display:flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:13.5px;font-weight:600;color:var(--text2);background:var(--surface);border:1px solid var(--border2);border-radius:10px;padding:8px 14px;cursor:pointer;user-select:none;transition:.15s;}
.ck-tab:hover{color:var(--text);}
.ck-tab .ck-dot{width:7px;height:7px;border-radius:50%;background:var(--muted);}
.ck-tab.on-flow .ck-dot{background:var(--green);box-shadow:0 0 8px rgba(var(--green-rgb),.6);}
.ck-tab.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim);}
.ck-tab .ck-rc{font-family:var(--font-mono);font-size:9px;color:var(--muted);}
.ck-tab.newf{color:var(--muted);border-style:dashed;}
.ck-tab.newf:hover{color:var(--accent);border-color:var(--accent);}

/* ============ BUILDER ============ */
.ck-builder{flex:1;min-height:0;display:grid;grid-template-columns:196px 1fr 300px;gap:12px;}

/* palette */
.ck-palette{background:linear-gradient(165deg,var(--card),var(--surface));border:1px solid var(--border);border-radius:16px;padding:14px 12px;overflow-y:auto;}
.ck-pal-h{font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.6px;margin-bottom:4px;}
.ck-pal-sub{font-family:var(--font-mono);font-size:8px;letter-spacing:1px;color:var(--muted);margin-bottom:12px;}
.ck-pal-group{font-family:var(--font-mono);font-size:8px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin:12px 2px 6px;}
.ck-pal-item{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:9px;border:1px solid var(--border);background:var(--surface2);margin-bottom:6px;cursor:grab;transition:.13s;user-select:none;}
.ck-pal-item:hover{border-color:var(--accent);transform:translateX(2px);}
.ck-pal-item:active{cursor:grabbing;}
.ck-pal-item .ck-pi{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;font-size:12px;flex-shrink:0;}
.ck-pal-item .ck-pt{font-family:var(--font-body);font-size:12.5px;font-weight:600;line-height:1.15;}
.ck-pal-item .ck-pt small{display:block;font-family:var(--font-mono);font-size:8px;color:var(--muted);font-weight:400;letter-spacing:.3px;}

/* stage */
.ck-stage{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--bg2);min-width:0;}
.ck-stagebar{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;}
.ck-stagebar .ck-ft{font-family:var(--font-display);font-size:13px;font-weight:700;letter-spacing:.4px;}
/* NB: NOT .sw — bindStaticViewInteractions() in shell.js binds a visual
   toggle to every global `.sw`. ck-sw is unbound; JS owns its click. */
.ck-sw{width:38px;height:21px;border-radius:20px;background:var(--border2);position:relative;flex-shrink:0;cursor:pointer;transition:.2s;}
.ck-sw::after{content:'';position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:var(--muted);transition:.2s;}
.ck-sw.on{background:linear-gradient(90deg,var(--accent-2),var(--accent));box-shadow:0 0 12px var(--accent-glow);}
.ck-sw.on::after{left:20px;background:var(--on-accent);}
.ck-stagebar .ck-stmeta{font-family:var(--font-mono);font-size:9px;color:var(--muted);letter-spacing:.5px;}
.ck-stagebar .ck-stmeta b{color:var(--text2);font-weight:500;}
.ck-stagebar .ck-push{margin-left:auto;display:flex;align-items:center;gap:8px;}
.ck-runbtn{font-family:var(--font-mono);font-size:10.5px;letter-spacing:1px;font-weight:700;padding:8px 16px;border-radius:9px;cursor:pointer;user-select:none;background:linear-gradient(90deg,var(--green),var(--green));color:var(--ck-on-green);border:none;box-shadow:0 0 16px rgba(var(--green-rgb),.4);transition:.15s;}
.ck-runbtn:hover{filter:brightness(1.08);}
.ck-runbtn.busy{background:var(--surface2);color:var(--muted);box-shadow:none;cursor:default;}

.ck-canvas{position:relative;flex:1;overflow:hidden;cursor:grab;
  background-color:var(--ck-canvas-bg);
  background-image:radial-gradient(var(--ck-grid) 1px,transparent 1px);
  background-size:22px 22px;}
.ck-canvas.panning{cursor:grabbing;}
.ck-world{position:absolute;top:0;left:0;transform-origin:0 0;}
.ck-edges{position:absolute;top:0;left:0;width:6000px;height:3000px;overflow:visible;pointer-events:none;}
.ck-edge{fill:none;stroke:var(--ck-edge);stroke-width:2.2;opacity:.8;transition:stroke .2s;}
.ck-edge.flow{stroke-dasharray:7 7;animation:ckDash .5s linear infinite;stroke-width:2.8;opacity:1;filter:drop-shadow(0 0 5px currentColor);}
@keyframes ckDash{to{stroke-dashoffset:-14;}}
/* edge hues — themed via status tokens; color set too so drop-shadow tracks */
.ck-edge.ac-cyan{stroke:var(--accent);color:var(--accent);}
.ck-edge.ac-violet{stroke:var(--violet);color:var(--violet);}
.ck-edge.ac-green{stroke:var(--green);color:var(--green);}
.ck-edge.ac-amber{stroke:var(--amber);color:var(--amber);}
.ck-edge.ac-pink{stroke:var(--pink);color:var(--pink);}
.ck-tempedge{fill:none;stroke:var(--accent);stroke-width:2.4;stroke-dasharray:5 5;opacity:.9;}

.ck-node{position:absolute;background:linear-gradient(165deg,var(--ck-node-bg-1),var(--ck-node-bg-2));border:1px solid var(--ck-node-border);border-radius:13px;padding:11px 13px;cursor:grab;user-select:none;transition:box-shadow .18s,border-color .18s,transform .05s;box-shadow:var(--shadow);}
.ck-node.grabbing{cursor:grabbing;box-shadow:var(--shadow-lg);z-index:20;}
.ck-node.sel{border-color:var(--ck-node-sel);box-shadow:0 0 0 1px var(--ck-node-sel),var(--shadow);}
.ck-node .ck-nhead{display:flex;align-items:center;gap:9px;}
.ck-node .ck-nico{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:13px;flex-shrink:0;}
.ck-node .ck-ntt{font-family:var(--font-display);font-size:12px;font-weight:700;letter-spacing:.2px;}
.ck-node .ck-nsub{font-family:var(--font-body);font-size:12px;color:var(--text2);margin-top:6px;line-height:1.3;}
.ck-node .ck-ntag{position:absolute;top:10px;right:12px;font-family:var(--font-mono);font-size:7.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);}
.ck-node .ck-badge{position:absolute;top:-9px;right:-9px;width:20px;height:20px;border-radius:50%;display:none;place-items:center;font-size:11px;font-weight:700;background:var(--green);color:var(--ck-on-green);box-shadow:0 0 12px rgba(var(--green-rgb),.6);}
.ck-node.done .ck-badge{display:grid;}
.ck-node.running{animation:ckPulse 1s ease-in-out infinite;}

/* accents — node icon chip bg + running ring; triplets so light re-hues */
.ck-ac-cyan .ck-nico{background:rgba(var(--accent-rgb),.14);color:var(--accent);}
.ck-ac-cyan.running{box-shadow:0 0 0 1px var(--accent),0 0 34px var(--accent-glow);border-color:var(--accent);}
.ck-ac-violet .ck-nico{background:rgba(var(--violet-rgb),.14);color:var(--violet);}
.ck-ac-violet.running{box-shadow:0 0 0 1px var(--violet),0 0 34px rgba(var(--violet-rgb),.5);border-color:var(--violet);}
.ck-ac-green .ck-nico{background:rgba(var(--green-rgb),.12);color:var(--green);}
.ck-ac-green.running{box-shadow:0 0 0 1px var(--green),0 0 34px rgba(var(--green-rgb),.5);border-color:var(--green);}
.ck-ac-amber .ck-nico{background:rgba(var(--amber-rgb),.13);color:var(--amber);}
.ck-ac-amber.running{box-shadow:0 0 0 1px var(--amber),0 0 34px rgba(var(--amber-rgb),.5);border-color:var(--amber);}
.ck-ac-pink .ck-nico{background:rgba(var(--pink-rgb),.13);color:var(--pink);}
.ck-ac-pink.running{box-shadow:0 0 0 1px var(--pink),0 0 34px rgba(var(--pink-rgb),.5);border-color:var(--pink);}
@keyframes ckPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}

/* same accent chips reused by palette item (.ck-pi) + inspector head (.ck-ii)
   — parent carries ck-ac-*, chip inherits; keeps hues out of inline style */
.ck-ac-cyan .ck-pi,.ck-ac-cyan .ck-ii{background:rgba(var(--accent-rgb),.14);color:var(--accent);}
.ck-ac-violet .ck-pi,.ck-ac-violet .ck-ii{background:rgba(var(--violet-rgb),.14);color:var(--violet);}
.ck-ac-green .ck-pi,.ck-ac-green .ck-ii{background:rgba(var(--green-rgb),.12);color:var(--green);}
.ck-ac-amber .ck-pi,.ck-ac-amber .ck-ii{background:rgba(var(--amber-rgb),.13);color:var(--amber);}
.ck-ac-pink .ck-pi,.ck-ac-pink .ck-ii{background:rgba(var(--pink-rgb),.13);color:var(--pink);}

.ck-port{position:absolute;top:50%;transform:translateY(-50%);width:13px;height:13px;border-radius:50%;background:var(--ck-port-bg);border:2px solid var(--ck-port-border);transition:.13s;z-index:5;}
.ck-port.in{left:-7px;}
.ck-port.out{right:-7px;cursor:crosshair;}
.ck-port.out:hover{border-color:var(--ck-port-hot);background:var(--ck-port-hot);box-shadow:0 0 10px var(--accent-glow);}
.ck-canvas.linking .ck-port.in{border-color:var(--ck-port-hot);box-shadow:0 0 10px var(--accent-glow);}
.ck-port.in.hot{background:var(--ck-port-hot);border-color:var(--ck-port-hot);}

/* canvas controls */
.ck-ctrls{position:absolute;left:12px;bottom:12px;display:flex;gap:6px;background:var(--surface);border:1px solid var(--border2);border-radius:10px;padding:5px;z-index:30;}
.ck-ctrls button{width:30px;height:30px;border-radius:7px;border:none;background:var(--surface2);color:var(--text2);cursor:pointer;font-size:14px;font-family:var(--font-mono);transition:.13s;}
.ck-ctrls button:hover{background:var(--accent-dim);color:var(--accent);}
.ck-zlvl{align-self:center;font-family:var(--font-mono);font-size:9px;color:var(--muted);padding:0 6px;min-width:38px;text-align:center;}
.ck-hint{position:absolute;right:12px;bottom:12px;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.5px;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 9px;z-index:30;line-height:1.5;}
.ck-hint b{color:var(--text2);}

/* inspector */
.ck-inspector{background:linear-gradient(165deg,var(--card),var(--surface));border:1px solid var(--border);border-radius:16px;display:flex;flex-direction:column;overflow:hidden;}
/* #ck-ins-top (shell.html) is the JS render target holding .ck-ins-h/.ck-ins-body;
   without this flex completion the body's flex:1/overflow-y:auto is inert and tall
   inspector content (PHASES P3+) clips at .ck-inspector's overflow:hidden, pushing
   the RUN LOG off the panel with it. */
#ck-ins-top{display:flex;flex-direction:column;min-height:0;}
.ck-ins-h{padding:13px 15px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;}
.ck-ins-h .ck-ii{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-size:14px;flex-shrink:0;}
.ck-ins-h .ck-it{font-family:var(--font-display);font-size:13px;font-weight:700;}
.ck-ins-h .ck-is{font-family:var(--font-mono);font-size:8px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;margin-top:2px;}
.ck-ins-body{padding:14px 15px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:8px;}
.ck-ins-empty{padding:40px 20px;text-align:center;color:var(--muted);}
.ck-ins-empty .ck-em-ico{font-size:34px;color:var(--border2);margin-bottom:12px;}
.ck-ins-empty .ck-em-t{font-family:var(--font-display);font-size:12px;color:var(--text2);margin-bottom:6px;}
.ck-ins-empty .ck-em-d{font-family:var(--font-body);font-size:12px;line-height:1.5;}

.ck-log-h{font-family:var(--font-mono);font-size:8px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;padding:11px 15px 7px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.ck-log-h .ck-clr{cursor:pointer;color:var(--muted);}
.ck-log-h .ck-clr:hover{color:var(--accent);}
.ck-log{max-height:150px;overflow-y:auto;padding:0 15px 14px;font-family:var(--font-mono);font-size:10px;line-height:1.65;}
.ck-log .ck-ln{display:flex;gap:8px;padding:2px 0;opacity:0;animation:ckLogIn .25s ease forwards;}
@keyframes ckLogIn{to{opacity:1;}}
.ck-log .ck-ts{color:var(--muted);flex-shrink:0;}
.ck-log .ck-msg{color:var(--text2);}
.ck-log .ck-msg .s-cyan{color:var(--accent);}
.ck-log .ck-msg .s-violet{color:var(--violet);}
.ck-log .ck-msg .s-green{color:var(--green);}
.ck-log .ck-msg .s-amber{color:var(--amber);}
.ck-log .ck-msg .s-pink{color:var(--pink);}
.ck-log-empty{padding:0 15px 14px;color:var(--muted);font-family:var(--font-mono);font-size:10px;}

/* toast */
.ck-toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--surface);border:1px solid var(--accent);border-radius:10px;padding:11px 18px;font-family:var(--font-mono);font-size:11px;color:var(--accent);box-shadow:0 0 24px var(--accent-glow);opacity:0;transition:.3s;z-index:400;pointer-events:none;}
.ck-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ghost (palette drag) */
.ck-ghost{position:fixed;z-index:410;pointer-events:none;background:linear-gradient(165deg,var(--card),var(--surface2));border:1px solid var(--accent);border-radius:12px;padding:10px 13px;box-shadow:0 0 22px var(--accent-glow);opacity:.92;display:flex;align-items:center;gap:9px;}
.ck-ghost .ck-pi{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;font-size:12px;}
.ck-ghost .ck-pt{font-family:var(--font-display);font-size:12px;font-weight:700;}

@media(max-width:1280px){
  .ck-builder{grid-template-columns:170px 1fr 260px;}
  .ck-strip{grid-template-columns:repeat(3,1fr);}
}
@media(max-width:980px){
  .ck-strip{grid-template-columns:repeat(2,1fr);}
  .ck-builder{grid-template-columns:1fr;}
  .ck-palette,.ck-inspector{display:none;}
}
