:root{
  --ink:#1c2530; --muted:#6b7480; --faint:#9aa3ad; --line:#e2e5ea; --line2:#eef0f3;
  --surface:#ffffff; --panel:#f7f8fa; --paper:#f6f5f1; --paper-ink:#3f4636;
  --accent:#4c6fa6; --accent-bg:#eef3fa; --accent-line:#c3d3e8;
  --send:#b8532e; --radius:8px; --card-radius:12px;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--panel);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;}
.app{max-width:1280px;margin:0 auto;padding:18px;}

/* header */
.hdr{background:var(--surface);border:0.5px solid var(--line);border-radius:var(--card-radius);overflow:hidden;margin-bottom:14px;}
.hdr-top{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:0.5px solid var(--line);}
.hdr-title{font-size:21px;font-weight:600;letter-spacing:-0.2px;}
.hdr-right{display:flex;align-items:center;gap:12px;}
.agentline{font-size:11px;font-family:var(--mono);color:var(--faint);}
.send-btn{background:var(--send);color:#fff;border:none;border-radius:var(--radius);padding:9px 22px;font-size:14px;font-weight:500;cursor:pointer;}
.send-btn:disabled{opacity:.45;cursor:not-allowed;}
.hdr-ctrls{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:11px 18px;}
.ctrl{display:flex;align-items:center;gap:9px;}
.ctrl-lbl{font-size:12px;font-weight:700;color:var(--ink,#222);text-transform:none;}
.seg{display:inline-flex;border:0.5px solid var(--line);border-radius:7px;overflow:hidden;}
.seg button{padding:6px 14px;font-size:12.5px;font-family:var(--sans);cursor:pointer;color:var(--muted);background:var(--surface);border:none;border-left:0.5px solid var(--line);transition:background .12s,color .12s;}
.seg button:first-child{border-left:none;}
.seg button:hover:not(.on){background:var(--panel);}
.seg button.on{background:var(--accent);color:#fff;font-weight:600;}
/* prod = live danger: red + bold when active (RV, 2026-08-04) */
.seg button.on[data-env="prod"], .seg button.on.env-prod{background:#c0392b;font-weight:700;}
.legend{margin-left:auto;display:flex;align-items:center;gap:16px;font-size:11px;color:var(--muted);}
.legend .sw{display:inline-flex;align-items:center;gap:6px;}
.legend .line-sh{width:14px;border-top:0.5px solid var(--faint);}
.legend .line-uq{width:14px;border-top:2px solid var(--accent);}

/* layout */
.grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:12px;align-items:start;}
.col{display:flex;flex-direction:column;gap:10px;}
.card{background:var(--surface);border:0.5px solid var(--line);border-radius:var(--card-radius);padding:12px 14px;}
.card h2{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted);margin:0 0 9px;font-weight:500;}
.card h2 .idx{color:var(--faint);text-transform:none;letter-spacing:0;}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.fgrid.two{grid-template-columns:repeat(2,1fr);}
.span3{grid-column:1/4;} .span2{grid-column:1/3;}
.fld{display:flex;flex-direction:column;gap:3px;min-width:0;}
.fld .k{font-family:var(--mono);font-size:10.5px;color:var(--faint);}
.fld input,.fld select{height:30px;border:0.5px solid var(--line);border-radius:6px;padding:5px 8px;font-size:12.5px;font-family:var(--mono);background:var(--surface);color:var(--ink);width:100%;}
.fld input:focus,.fld select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);}
/* portal-specific: thin left accent */
.fld.uq input,.fld.uq select{border-left:2px solid var(--accent);border-radius:0 6px 6px 0;}
/* ignored by active portal: recessed + muted */
.fld.off input,.fld.off select{background:var(--panel);color:var(--faint);}
.fld.off .k{color:var(--faint);}
.rowcards{display:flex;gap:10px;}
.rowcards>.card{flex:1;margin:0;}

/* json + response panels */
.jpanel{background:var(--paper);border:0.5px solid var(--line);border-radius:var(--card-radius);padding:12px 14px;overflow:hidden;}
.jpanel .jhead{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-family:var(--mono);font-size:11px;margin-bottom:6px;}
.jpanel pre{margin:0;white-space:pre;font-family:var(--mono);font-size:11.5px;line-height:1.6;color:var(--paper-ink);max-height:340px;overflow:auto;}
.jk{color:var(--muted);} .js{color:var(--paper-ink);}

/* endpoints */
.eplist{display:flex;flex-direction:column;gap:5px;}
.epgroup{font-size:10px;letter-spacing:.3px;color:var(--faint);margin:2px 0 4px;}
.ep{display:flex;align-items:center;gap:9px;border:0.5px solid var(--line);border-radius:7px;padding:7px 10px;cursor:pointer;background:var(--surface);text-align:left;font-family:inherit;width:100%;}
.ep:hover{border-color:var(--accent-line);}
.ep.sel{border-left:2px solid var(--accent);background:var(--accent-bg);}
.ep .m{font-family:var(--mono);font-size:10px;font-weight:500;min-width:36px;text-align:center;letter-spacing:.3px;}
.ep .m.post{color:var(--accent);} .ep .m.get{color:#3B6D11;}
.ep .path{font-family:var(--mono);font-size:11.5px;flex:1;color:var(--ink);}
.ep .tag{font-size:10.5px;color:var(--muted);}
.apchips{display:flex;flex-wrap:wrap;gap:5px;}
.apchip{font-family:var(--mono);font-size:10.5px;color:var(--muted);border:0.5px solid var(--line);border-radius:6px;padding:4px 8px;background:var(--panel);}

/* ops: jobs + timeline */
.ops{margin-top:12px;}
.opsgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:12px;}
.queue{border:0.5px solid var(--line);border-radius:var(--radius);overflow:hidden;min-height:120px;}
.queue .empty{padding:20px;color:var(--faint);text-align:center;font-size:12px;}
.jobRow{padding:9px 11px;border-bottom:0.5px solid var(--line2);cursor:pointer;}
.jobRow:last-child{border-bottom:none;} .jobRow:hover,.jobRow.sel{background:var(--accent-bg);}
.jobTop{display:flex;justify-content:space-between;gap:8px;font-size:12px;font-weight:500;}
.jobSub{font-size:11px;color:var(--muted);margin-top:3px;}
.pill{display:inline-block;padding:2px 7px;border-radius:999px;background:var(--panel);font-size:10px;color:var(--muted);}
.pill.RUNNING,.pill.ASSIGNED{background:#eef3fa;color:#185FA5;}
.pill.COMPLETED{background:#eef4ea;color:#3B6D11;}
.pill.WAITING_FOR_HUMAN{background:#f6f1e8;color:#7a5b00;}
.pill.FAILED,.pill.CANCELLED,.pill.TIMED_OUT{background:#f7efef;color:#9a3b34;}
.log{background:var(--paper);border:0.5px solid var(--line);border-radius:var(--radius);padding:12px 14px;font-family:var(--mono);font-size:12px;height:220px;overflow:auto;color:var(--paper-ink);}
.log .l{padding:2px 0;} .log .t{color:var(--faint);margin-right:8px;}
.evt-fill{color:#2c7a52;}.evt-step{color:#2f5aa0;}.evt-human{color:#8a5b00;}
.evt-error{color:#9a3b34;}.evt-done,.evt-complete{color:#2c7a52;font-weight:500;}
.pollState{font-size:11px;color:var(--muted);}

.plat-hidden{display:none!important;}
@media(max-width:980px){.grid,.opsgrid{grid-template-columns:1fr;}}

/* ── test scenarios strip ─────────────────────────────────────── */
.scnstrip{margin-bottom:14px;padding:11px 14px;}
.scnstrip-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;}
.scnstrip-lbl{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted);}
.scnstrip-hint{font-size:10.5px;color:var(--muted);}
.scnrow{display:flex;flex-wrap:wrap;gap:7px;}
.scnempty{font-size:11px;color:var(--muted);}
.scnbtn{display:flex;flex-direction:column;gap:2px;border:0.5px solid var(--line);border-radius:8px;padding:7px 11px;cursor:pointer;background:var(--surface);min-width:140px;text-align:left;position:relative;}
.scnbtn:hover{border-color:var(--accent);}
.scnbtn.on{border-left:2px solid var(--accent);background:#eef3fa;}
.scnbtn .st{font-size:12px;font-weight:500;color:var(--ink);}
.scnbtn .ss{font-size:10px;color:var(--muted);font-family:var(--mono,monospace);}
.scnbtn .dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:5px;}
/* delete is a real affordance now — it existed since v3.2.0 but at opacity:0
   until card-hover, so it was undiscoverable (RV asked for the facility that
   was already there, 2026-08-04) */
.scnbtn .del{position:absolute;top:2px;right:4px;font-size:13px;line-height:1;padding:2px 4px;color:var(--muted);opacity:.45;cursor:pointer;border-radius:4px;}
.scnbtn:hover .del{opacity:.8;}
.scnbtn .del:hover{opacity:1;color:#fff;background:#a3352d;}
.scnadd{display:flex;align-items:center;justify-content:center;border:0.5px dashed var(--line);border-radius:8px;padding:7px 13px;cursor:pointer;background:var(--surface);color:var(--muted);font-size:12px;min-width:44px;}
.scnadd:hover{border-color:var(--accent);color:var(--accent);}

/* ── live jobs / history tabs ─────────────────────────────────── */
.jtab{font-size:12px;padding:3px 11px;border-radius:6px;cursor:pointer;color:var(--muted);}
.jtab:hover{background:var(--panel);}
.jtab.on{background:var(--accent);color:#fff;font-weight:500;}
.histlist{display:flex;flex-direction:column;}
.histrow{display:flex;align-items:center;gap:10px;font-size:12px;padding:7px 4px;border-bottom:0.5px solid var(--line);font-family:var(--mono,monospace);}
.histrow:last-child{border-bottom:none;}
.histrow .hname{flex:1;font-family:var(--sans);}
.histpill{font-size:9.5px;padding:2px 8px;border-radius:999px;}
.hp-pass{background:#eef4ea;color:#3B6D11;}
.hp-fail{background:#f7efef;color:#9a3b34;}
.hp-hand{background:#f6f1e8;color:#7a5b00;}
.hp-run{background:#eef1f6;color:#4c6fa6;}

/* ── import JSON button + modal ───────────────────────────────── */
.jhead-actions{display:flex;align-items:center;gap:10px;}
.import-btn{font-size:11px;padding:3px 10px;border:0.5px solid var(--accent);color:var(--accent);background:var(--surface);border-radius:6px;cursor:pointer;}
.import-btn:hover{background:var(--accent);color:#fff;}
.modal-ov{display:none;position:fixed;inset:0;background:rgba(20,22,28,.44);z-index:50;align-items:center;justify-content:center;}
.modal{background:var(--surface);border:0.5px solid var(--line);border-radius:12px;width:min(620px,92vw);padding:18px 20px;box-shadow:0 12px 40px rgba(0,0,0,.18);}
.modal-head{font-size:15px;font-weight:500;color:var(--ink);}
.modal-sub{font-size:11.5px;color:var(--muted);margin:6px 0 12px;line-height:1.5;}
.modal-ta{width:100%;height:260px;font-family:var(--mono,monospace);font-size:11.5px;border:0.5px solid var(--line);border-radius:8px;padding:10px;resize:vertical;box-sizing:border-box;background:#fbfbf9;color:var(--ink);}
.modal-ta:focus{outline:none;border-color:var(--accent);}
.modal-err{color:#a3352d;font-size:11.5px;min-height:16px;margin-top:6px;font-family:var(--mono,monospace);}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px;}
.modal-cancel{font-size:12px;padding:6px 14px;border:0.5px solid var(--line);background:var(--surface);border-radius:7px;cursor:pointer;color:var(--muted);}
.modal-go{font-size:12px;padding:6px 16px;border:none;background:var(--accent);color:#fff;border-radius:7px;cursor:pointer;font-weight:500;}
.modal-cancel:hover{border-color:var(--accent);}.modal-go:hover{opacity:.9;}

/* ── run controls + scenario checkboxes ───────────────────────── */
.scnstrip-actions{display:flex;align-items:center;gap:9px;}
.run-btn{font-size:11px;padding:4px 12px;border:0.5px solid var(--accent);color:var(--accent);background:var(--surface);border-radius:6px;cursor:pointer;}
.run-btn:hover:not(:disabled){background:var(--accent);color:#fff;}
.run-btn.run-all{background:var(--accent);color:#fff;}
.run-btn.run-all:hover:not(:disabled){opacity:.9;}
.run-btn:disabled{opacity:.4;cursor:not-allowed;}
.runstatus{font-size:10.5px;color:var(--muted);font-family:var(--mono,monospace);}
.scnchk{position:absolute;top:5px;left:7px;}
.scnchk input{cursor:pointer;margin:0;}
.scnbtn{padding-left:24px;}
.scnbtn.picked{background:#eef3fa;border-color:var(--accent);}

/* ── run-all link (quiet, in strip) + context-aware primary button ── */
.selall{font-size:11px;color:var(--accent);cursor:pointer;display:inline-flex;align-items:center;gap:5px;user-select:none;}
.selall input{accent-color:var(--accent);width:13px;height:13px;cursor:pointer;margin:0;}
.selall:has(input:disabled){opacity:.4;cursor:not-allowed;}
#sendBtn:disabled{opacity:.45;cursor:not-allowed;filter:saturate(.4);}
.send-btn.is-run{background:#4c6fa6;}
.send-btn.is-run:hover{background:#3f5f92;}

/* ── run history: job id / auth id columns ────────────────────── */
.hidcol{width:70px;}
.hjob{color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px;font-family:var(--mono,monospace);font-size:11px;}
.hjob:hover{color:#3a5a8c;}
.hauth{background:#eef4ea;color:#3B6D11;font-size:9.5px;padding:2px 7px;border-radius:999px;font-family:var(--mono,monospace);margin-right:6px;white-space:nowrap;}
.hreason{font-size:10px;color:var(--muted);font-family:var(--mono,monospace);padding:0 4px 6px 60px;}
