:root{--bg:#f4f6f8;--panel:#fff;--ink:#132238;--muted:#6d7a8d;--line:#dce2e9;--blue:#1266f1;--blue-dark:#0a4ec7;--mint:#19b58c;--orange:#ed8d2a;--red:#d94444;--shadow:0 12px 35px rgba(24,40,72,.09);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}
body{margin:0;min-width:320px}
button,input,select,textarea{font:inherit}
.hidden{display:none!important}
.app-shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}
.sidebar{background:#0f1d31;color:#eef4ff;padding:24px 16px;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:11px;font-size:18px;padding:0 8px 28px}
.brand-mark{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:linear-gradient(135deg,#287af8,#11c0a2);color:white;font-weight:800;letter-spacing:-1px;box-shadow:0 9px 24px rgba(18,102,241,.28)}
.brand-mark.small{width:34px;height:34px;border-radius:10px;font-size:13px}
.sidebar nav{display:grid;gap:6px}
.nav-item{border:0;background:transparent;color:#9dacbf;padding:12px 13px;border-radius:10px;text-align:left;display:flex;justify-content:space-between;cursor:pointer}
.nav-item:hover,.nav-item.active{background:#1c2d45;color:#fff}
.sidebar-foot{margin-top:auto;border-top:1px solid #283950;padding:17px 8px 0;display:grid;gap:8px;font-size:12px;color:#9dacbf;overflow:hidden}
.text-button{border:0;background:none;color:#7aa8ff;text-align:left;padding:0;cursor:pointer}
.main{min-width:0}
.view{min-height:100vh}
.topbar{height:100px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:20px 32px}
.topbar h1{margin:2px 0 0;font-size:25px;letter-spacing:-.5px}
.eyebrow{font-size:10px;letter-spacing:1.8px;color:var(--blue);font-weight:800}
.primary,.secondary,.icon-button{border:0;border-radius:9px;padding:10px 16px;cursor:pointer;font-weight:700}
.primary{background:var(--blue);color:white;box-shadow:0 5px 14px rgba(18,102,241,.18)}
.primary:hover{background:var(--blue-dark)}
.secondary{background:#eef3fa;color:#263a55}
.wide{width:100%}
.cards{padding:28px 32px;display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
.workflow-card,.connection-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 3px 12px rgba(24,40,72,.03);cursor:pointer}
.workflow-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.card-top{display:flex;justify-content:space-between;gap:15px}
.card-title{font-size:17px;font-weight:750}
.card-meta{color:var(--muted);font-size:12px;margin-top:8px}
.status{padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800;height:max-content}
.status.active,.status.succeeded{background:#e4f8f1;color:#087b5c}
.status.draft,.status.queued{background:#edf2f8;color:#64748b}
.status.paused,.status.running{background:#fff2de;color:#a85c00}
.status.failed{background:#ffe8e8;color:#b52c2c}
.editor-bar{height:auto;min-height:72px;padding:12px 20px;gap:12px;flex-wrap:wrap}
.icon-button{font-size:22px;background:transparent;padding:8px}
.title-input{border:0;font-size:20px;font-weight:750;flex:1;min-width:160px}
.title-input:focus{outline:0;border-bottom:2px solid var(--blue)}
.status-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.save-state{font-size:11px;color:var(--muted)}
select,input,textarea{border:1px solid var(--line);border-radius:8px;padding:9px 10px;background:white;color:var(--ink)}
#editor-view{display:grid;grid-template-rows:auto minmax(0,1fr);height:100vh;min-height:0}
.editor-layout{display:grid;grid-template-columns:210px minmax(0,1fr) 280px;min-height:0;min-width:0}
.editor-layout>*{min-width:0;min-height:0}
.palette,.inspector{background:white;padding:18px;border-right:1px solid var(--line);overflow:auto}
.inspector{border-right:0;border-left:1px solid var(--line)}
.palette h3{margin:0}
.palette>p{font-size:12px;color:var(--muted);margin:5px 0 16px}
.module{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px;margin-bottom:8px;display:flex;gap:10px;text-align:left;align-items:center;cursor:pointer}
.module:hover{border-color:#91b7f7;background:#f7faff}
.module i{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#e9f1ff;color:var(--blue);font-style:normal;font-weight:800}
.module.trigger i{background:#e7f8f3;color:#078668}
.module.router i{background:#fff0e2;color:#b55d08}
.module span{font-size:13px;font-weight:700}
.module small{display:block;color:var(--muted);font-size:10px;margin-top:2px;font-weight:500}
.canvas-wrap{position:relative;overflow:auto;background-color:#f5f7fa;background-image:radial-gradient(#cfd7e2 1px,transparent 1px);background-size:22px 22px}
.canvas{position:relative;width:2000px;height:1200px}
.canvas-hint{position:absolute;z-index:3;margin:14px;max-width:calc(100% - 28px);background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:11px;color:var(--muted);pointer-events:none}
#edges{position:absolute;inset:0;width:2000px;height:1200px;pointer-events:none;z-index:1}
.edge{fill:none;stroke:#9aabc0;stroke-width:2}
.node{position:absolute;width:170px;min-height:74px;background:white;border:2px solid transparent;border-radius:13px;padding:11px;box-shadow:0 7px 24px rgba(23,41,69,.12);z-index:2;cursor:grab;user-select:none}
.node:active{cursor:grabbing}
.node.selected{border-color:var(--blue)}
.node.connecting{border-color:var(--orange);box-shadow:0 0 0 4px rgba(237,141,42,.15)}
.node-top{display:flex;gap:9px;align-items:center}
.node-icon{width:30px;height:30px;border-radius:9px;background:#e9f1ff;color:var(--blue);display:grid;place-items:center;font-weight:800}
.node.trigger .node-icon{background:#e7f8f3;color:#078668}
.node.router .node-icon{background:#fff0e2;color:#b55d08}
.node-name{font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.node-type{font-size:9px;color:var(--muted);margin-top:3px}
.port{position:absolute;width:10px;height:10px;border-radius:50%;background:#97a8bd;border:2px solid white;top:32px}
.port.in{left:-6px}
.port.out{right:-6px}
.empty-inspector{text-align:center;color:var(--muted);padding-top:90px}
.empty-inspector>div{font-size:32px}
.inspector label,.auth-card label,.dialog-field{display:grid;gap:6px;margin:14px 0;font-size:12px;font-weight:700}
.inspector textarea{font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}
.inspector-heading{display:flex;justify-content:space-between;align-items:center}
.badge{background:#edf3ff;color:var(--blue);font-size:10px;padding:5px 7px;border-radius:6px}
.danger-text{border:0;background:none;color:var(--red);font-size:11px;cursor:pointer}
.grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.inspector input,.inspector textarea,.inspector select,.dialog-field input,.dialog-field textarea,.dialog-field select{width:100%;min-width:0}
button:disabled{opacity:.55;cursor:wait}
.muted{color:var(--muted);font-size:11px}
.table-card{margin:28px 32px;background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.table-row{display:grid;grid-template-columns:1.4fr .8fr .8fr 1fr;gap:15px;padding:14px 17px;border-bottom:1px solid #edf0f4;align-items:center;font-size:13px}
.table-row.header{font-size:10px;color:var(--muted);font-weight:800;letter-spacing:.6px;background:#f9fafc}
.table-row:last-child{border-bottom:0}
.info-banner{margin:22px 32px 0;background:#eaf4ff;border:1px solid #cce3ff;color:#2a5d94;padding:12px 15px;border-radius:10px;font-size:12px}
.auth-shell{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,#e4edff,transparent 40%),linear-gradient(135deg,#f8fbff,#eef2f7)}
.auth-card{width:390px;background:white;border:1px solid var(--line);border-radius:20px;padding:34px;box-shadow:var(--shadow)}
.auth-card .brand-mark{margin-bottom:18px}
.auth-card h1{margin:0}
.auth-card>p{color:var(--muted);font-size:13px}
.error{color:var(--red);font-size:12px;min-height:16px}
dialog{border:0;border-radius:16px;padding:0;box-shadow:0 30px 80px rgba(7,20,41,.28);width:480px}
dialog::backdrop{background:rgba(15,29,49,.45)}
#dialog-form{padding:25px}
.dialog-close{float:right;border:0;background:none;font-size:24px;cursor:pointer}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.toast{position:fixed;right:22px;bottom:22px;z-index:20;background:#132238;color:white;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow);font-size:13px}
.empty-state{grid-column:1/-1;background:white;border:1px dashed #bdc8d5;border-radius:14px;padding:48px;text-align:center;color:var(--muted)}
@media(max-width:1200px){.editor-layout{grid-template-columns:180px minmax(0,1fr) 250px}
.app-shell{grid-template-columns:190px minmax(0,1fr)}
}
.table-row:not(.header){cursor:pointer}
.table-row:not(.header):hover{background:#f7faff}
.edge-rule{border-top:1px solid var(--line);padding-top:12px;margin-top:14px}
.edge-rule strong{font-size:11px}
.edge-rule select,.edge-rule input{width:100%;margin-top:6px;font-size:11px}
.log-list{max-height:420px;overflow:auto;background:#101b2d;color:#dfeafb;border-radius:9px;padding:10px;font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.log-row{padding:7px;border-bottom:1px solid #24344c}
.log-row:last-child{border:0}
dialog{width:560px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto}
dialog pre{white-space:pre-wrap;overflow-wrap:anywhere}
.log-row,.card-title,.card-meta{overflow-wrap:anywhere}
.auth-card{max-width:calc(100vw - 24px)}

@media(max-width:900px){
  .app-shell{grid-template-columns:minmax(0,1fr)}
  .sidebar{padding:12px 16px}
  .brand{padding:0 0 12px}
  .sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr))}
  .nav-item{padding:10px 8px;gap:6px}
  .sidebar-foot{margin-top:12px;padding:10px 0 0;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
  .view{min-height:0}
  #editor-view{height:auto;grid-template-rows:auto auto}
  .editor-layout{grid-template-columns:180px minmax(0,1fr);grid-template-rows:480px auto}
  .inspector{grid-column:1/-1;border-left:0;border-top:1px solid var(--line)}
  .empty-inspector{padding-top:12px}
  .table-card{overflow-x:auto}
  .table-row{min-width:650px}
}
@media(max-width:640px){
  .topbar{height:auto;min-height:90px;padding:18px 16px;gap:14px;flex-wrap:wrap}
  .topbar h1{font-size:22px}
  .editor-bar{gap:8px}
  .title-input{min-width:0;flex-basis:calc(100% - 56px)}
  .status-actions{gap:8px;width:100%}
  .save-state{width:100%}
  .editor-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 420px auto}
  .palette{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:16px}
  .palette>h3,.palette>p{grid-column:1/-1}
  .palette>p{margin:0 0 6px}
  .module{margin:0;gap:6px}
  .module i{flex-shrink:0}
  .module span{font-size:12px}
  .cards{padding:20px 16px;grid-template-columns:minmax(0,1fr)}
  .table-card{margin:20px 16px}
  .info-banner{margin:20px 16px 0}
  .auth-card{padding:24px}
  #dialog-form{padding:20px}
  .toast{left:16px;right:16px;bottom:16px}
}
/* Provider metadata and scalar connector forms share the existing visual system. */
.provider-banner{display:flex;gap:20px;align-items:center;justify-content:space-between;padding:18px 24px;margin:16px 0;border:1px solid #e4e8ed;border-radius:14px;background:#fff}
.provider-banner p{max-width:680px;overflow-wrap:anywhere}
.provider-banner button{flex-shrink:0}
.inspector .check-field{display:flex;align-items:center;gap:8px}
.inspector .check-field input{width:auto}
.node-top>div{min-width:0}
.node-icon{flex-shrink:0}
.node-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#module-list{min-width:0}
.inspector details{margin:16px 0}
.inspector summary{cursor:pointer;color:#526171;font-size:13px;margin-bottom:12px}
.module span{min-width:0;overflow-wrap:anywhere}
@media(max-width:760px){.provider-banner{flex-direction:column;align-items:stretch}.provider-banner button{width:100%}#module-list{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}
