.nis-embed{
  --nbg:#0e0f13; --npanel:#1a1c22; --npanel2:#22252e; --nborder:#2e323d;
  --ntext:#e7e9ee; --nmuted:#9aa0ad; --naccent:#6c8cff; --naccent2:#8b5cf6;
  --nimg:#f59e0b; --ntxt:#22c55e; --ndanger:#ef4444;
  position:relative; width:100%; min-height:360px; border:1px solid var(--nborder);
  border-radius:12px; overflow:hidden; background:var(--nbg); color:var(--ntext);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  user-select:none; line-height:1.4;
}
.nis-embed *{box-sizing:border-box}
.nis-embed .nis-top{position:absolute;top:0;left:0;right:0;height:48px;display:flex;align-items:center;
  gap:6px;padding:0 12px;background:rgba(20,22,28,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--nborder);z-index:20;flex-wrap:nowrap;overflow-x:auto}
.nis-embed .nis-title{font-weight:700;margin-right:6px;white-space:nowrap;font-size:14px}
.nis-embed .nis-title b{color:var(--naccent)}
.nis-embed .nis-btn{background:var(--npanel2);color:var(--ntext);border:1px solid var(--nborder);
  padding:6px 11px;border-radius:8px;font-size:13px;cursor:pointer;transition:.15s;white-space:nowrap}
.nis-embed .nis-btn:hover{border-color:var(--naccent);background:#2a2e39}
.nis-embed .nis-btn.pri{background:var(--naccent);border-color:var(--naccent);color:#fff}
.nis-embed .nis-btn.pri:hover{background:#5a7bff}
.nis-embed .nis-sp{flex:1}
.nis-embed .nis-hint{color:var(--nmuted);font-size:11px;white-space:nowrap}

.nis-embed .nis-vp{position:absolute;inset:48px 0 0 0;overflow:hidden;cursor:grab;
  background:radial-gradient(circle at 1px 1px,#23262f 1px,transparent 0) 0 0/24px 24px,var(--nbg)}
.nis-embed .nis-vp.pan{cursor:grabbing}
.nis-embed .nis-world{position:absolute;top:0;left:0;transform-origin:0 0}
.nis-embed .nis-svg{position:absolute;top:0;left:0;overflow:visible;pointer-events:none}
.nis-embed .nis-edge{fill:none;stroke:#5b6472;stroke-width:2.5}
.nis-embed .nis-edge.img{stroke:var(--nimg)}
.nis-embed .nis-edge.txt{stroke:var(--ntxt)}
.nis-embed .nis-edge.temp{stroke-dasharray:6 5;opacity:.85}

.nis-embed .nis-node{position:absolute;width:250px;background:var(--npanel);border:1px solid var(--nborder);
  border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,.45)}
.nis-embed .nis-node.sel{border-color:var(--naccent);box-shadow:0 0 0 2px rgba(108,140,255,.35),0 8px 30px rgba(0,0,0,.5)}
.nis-embed .nis-head{display:flex;align-items:center;gap:8px;padding:9px 11px;cursor:grab;
  border-bottom:1px solid var(--nborder);border-radius:12px 12px 0 0;font-size:13px;font-weight:600}
.nis-embed .nis-head .dot{width:9px;height:9px;border-radius:50%}
.nis-embed .nis-node.prompt   .nis-head{background:linear-gradient(90deg,#16311f,#1a1c22)}
.nis-embed .nis-node.prompt   .dot{background:var(--ntxt)}
.nis-embed .nis-node.image    .nis-head{background:linear-gradient(90deg,#3a2a10,#1a1c22)}
.nis-embed .nis-node.image    .dot{background:var(--nimg)}
.nis-embed .nis-node.generate .nis-head{background:linear-gradient(90deg,#26214a,#1a1c22)}
.nis-embed .nis-node.generate .dot{background:var(--naccent2)}
.nis-embed .nis-node.preview  .nis-head{background:linear-gradient(90deg,#12303a,#1a1c22)}
.nis-embed .nis-node.preview  .dot{background:#38bdf8}
.nis-embed .nis-head .x{margin-left:auto;color:var(--nmuted);cursor:pointer;font-size:15px;line-height:1;padding:0 2px}
.nis-embed .nis-head .x:hover{color:var(--ndanger)}
.nis-embed .nis-body{padding:11px}
.nis-embed .nis-node textarea,.nis-embed .nis-node select,.nis-embed .nis-node input[type=text]{
  width:100%;background:var(--npanel2);color:var(--ntext);border:1px solid var(--nborder);
  border-radius:8px;padding:8px;font-size:13px;font-family:inherit;resize:vertical}
.nis-embed .nis-node textarea{min-height:64px;user-select:text}
.nis-embed .nis-row{display:flex;gap:8px;margin-top:8px}
.nis-embed .nis-row>*{flex:1;min-width:0}
.nis-embed .nis-lbl{font-size:11px;color:var(--nmuted);margin:6px 0 3px}

.nis-embed .nis-port{position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid var(--nbg);
  cursor:crosshair;transform:translate(-50%,-50%);z-index:3}
.nis-embed .nis-port.in{left:0}
.nis-embed .nis-port.out{left:100%}
.nis-embed .nis-port.img{background:var(--nimg)}
.nis-embed .nis-port.txt{background:var(--ntxt)}
.nis-embed .nis-port:hover{box-shadow:0 0 0 4px rgba(255,255,255,.15)}
.nis-embed .nis-plbl{position:absolute;font-size:10px;color:var(--nmuted);pointer-events:none;white-space:nowrap;transform:translateY(-50%)}
.nis-embed .nis-plbl.in{left:12px}
.nis-embed .nis-plbl.out{right:12px}

.nis-embed .nis-thumb{margin-top:9px;width:100%;aspect-ratio:1;background:var(--npanel2);
  border:1px dashed var(--nborder);border-radius:8px;display:flex;align-items:center;justify-content:center;
  overflow:hidden;color:var(--nmuted);font-size:12px;text-align:center;padding:6px}
.nis-embed .nis-thumb img{width:100%;height:100%;object-fit:contain;display:block}
.nis-embed .nis-drop{cursor:pointer}
.nis-embed .nis-drop:hover{border-color:var(--naccent)}
.nis-embed .nis-status{font-size:11px;margin-top:7px;min-height:14px}
.nis-embed .nis-status.err{color:var(--ndanger)}
.nis-embed .nis-status.ok{color:var(--ntxt)}
.nis-embed .nis-status.run{color:var(--naccent)}
.nis-embed .nis-mini{display:flex;gap:6px;margin-top:8px}
.nis-embed .nis-mini .nis-btn{flex:1;padding:6px;font-size:12px}
.nis-embed .nis-spin{display:inline-block;width:11px;height:11px;border:2px solid rgba(255,255,255,.25);
  border-top-color:var(--naccent);border-radius:50%;animation:nis-sp .7s linear infinite;vertical-align:-1px;margin-right:5px}
@keyframes nis-sp{to{transform:rotate(360deg)}}
.nis-embed a.nis-dl{color:var(--naccent);font-size:11px;text-decoration:none;margin-top:6px;display:inline-block}

.nis-embed .nis-zoom{position:absolute;bottom:10px;left:12px;font-size:11px;color:var(--nmuted);
  background:rgba(20,22,28,.8);padding:4px 8px;border-radius:6px;border:1px solid var(--nborder);z-index:15}
.nis-embed .nis-ctx{position:absolute;background:var(--npanel);border:1px solid var(--nborder);border-radius:10px;
  padding:6px;display:none;z-index:40;box-shadow:0 10px 30px rgba(0,0,0,.5);min-width:150px}
.nis-embed .nis-ctx div{padding:8px 10px;border-radius:7px;font-size:13px;cursor:pointer;display:flex;gap:8px;align-items:center}
.nis-embed .nis-ctx div:hover{background:var(--npanel2)}
.nis-embed .nis-ctx .k{width:8px;height:8px;border-radius:50%}

.nis-embed .nis-modal-wrap{position:absolute;inset:0;background:rgba(0,0,0,.55);display:none;
  align-items:center;justify-content:center;z-index:60}
.nis-embed .nis-modal-wrap.open{display:flex}
.nis-embed .nis-modal{background:var(--npanel);border:1px solid var(--nborder);border-radius:14px;
  width:400px;max-width:92%;padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.nis-embed .nis-modal h3{margin:0 0 4px;font-size:16px}
.nis-embed .nis-modal p{margin:0 0 12px;color:var(--nmuted);font-size:12px}
.nis-embed .nis-modal label{display:block;font-size:12px;color:var(--nmuted);margin:10px 0 4px}
.nis-embed .nis-modal input{width:100%;background:var(--npanel2);color:var(--ntext);border:1px solid var(--nborder);
  border-radius:8px;padding:9px;font-size:13px;user-select:text}
.nis-embed .nis-modal .acts{display:flex;gap:8px;margin-top:16px;justify-content:flex-end;flex-wrap:wrap;align-items:center}
.nis-embed .nis-wflist{max-height:180px;overflow-y:auto;margin-top:4px;border:1px solid var(--nborder);border-radius:8px}
.nis-embed .nis-wfrow{display:flex;align-items:center;gap:6px;padding:6px 8px;border-bottom:1px solid var(--nborder);font-size:13px}
.nis-embed .nis-wfrow:last-child{border-bottom:0}
.nis-embed .nis-wfrow span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ntext)}
.nis-embed .nis-wfrow .nis-btn{padding:4px 9px;font-size:12px}
.nis-embed .nis-wfempty{padding:12px;text-align:center;color:var(--nmuted);font-size:12px}
.nis-embed .nis-modal .starter,.nis-embed .nis-node .starter{width:100%;margin-bottom:8px;background:var(--npanel2);color:var(--nmuted);border:1px solid var(--nborder);border-radius:8px;padding:6px 8px;font-size:12px}
