@font-face{font-family:PPSupplySans;src:url(/fonts/PPSupplySans-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:PPSupplySans;src:url(/fonts/PPSupplySans-Medium.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:PPSupplySans;src:url(/fonts/PPSupplySans-Bold.woff) format("woff");font-weight:900;font-style:normal;font-display:swap}:root{--bg: #eceae4;--bg-1: #ffffff;--bg-2: #fbfbf9;--bg-3: #f2f2ee;--border: #deded9;--border-strong: #d2d2cc;--text: #101010;--text-dim: #3d3d39;--muted: #62625d;--accent: #111111;--accent-hover: #2c2c2c;--accent-dim: #e7e7e2;--danger: #c7352b;--danger-dim: #f6e3e1;--green: #16823a;--green-bg: #e4f1e9;--blue: #2f63c7;--blue-bg: #e7eefb;--amber: #97690f;--amber-bg: #f6eed9;--red: #c7352b;--red-bg: #f6e3e1;--gray: #6f6f69;--gray-bg: #eeeeea;--violet: #6d4ea8;--violet-bg: #efeafb;--mono: ui-monospace, "SF Mono", "JetBrains Mono", "Fira Code", Menlo, Consolas, monospace;--sans: "Inter", "Arial", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--brand: "PPSupplySans", "Helvetica Neue", Helvetica, Arial, sans-serif;--radius: 8px;--radius-sm: 6px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:linear-gradient(180deg,#ffffff80,#eceae4eb 22rem),var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1{font-family:var(--brand);font-size:23px;font-weight:900;letter-spacing:.02em;text-transform:uppercase;margin:0 0 4px}h2{font-size:15px;font-weight:600;margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted);margin:0}.small{font-size:12px}.link{color:var(--accent)}.link-strong{color:var(--text);font-weight:600}.link-strong:hover{color:var(--accent)}code,.mono,.mono-input{font-family:var(--mono);font-size:12.5px}.mono{background:var(--bg-3);border:1px solid var(--border);border-radius:4px;padding:1px 6px;color:var(--text-dim);word-break:break-all}.boot{display:grid;place-items:center;height:100vh}.login-screen{display:grid;place-items:center;min-height:100vh;padding:24px;background:radial-gradient(1200px 600px at 50% -10%,rgba(255,255,255,.7),transparent),var(--bg)}.login-card{width:100%;max-width:380px;background:var(--bg-1);border:1px solid var(--border);border-radius:12px;padding:28px;display:flex;flex-direction:column;gap:14px}.login-brand{display:flex;align-items:baseline;gap:8px}.login-sub{margin-top:-8px;margin-bottom:4px}.brand-spontent{font-family:var(--brand);font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--text)}.brand-app{font-family:var(--mono);color:var(--accent);font-size:13px}.brand-sep{color:var(--muted)}.app-shell{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 18px;background:var(--bg-1);border-bottom:1px solid var(--border);flex-shrink:0}.brand{display:flex;align-items:baseline;gap:8px;font-size:15px}.topbar-right{display:flex;align-items:center;gap:14px}.who{display:flex;align-items:center;gap:8px;font-size:13px}.who-name{color:var(--text-dim)}.who-role{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);border:1px solid var(--accent-dim);background:var(--accent-dim);padding:1px 6px;border-radius:4px}.body{display:flex;flex:1;min-height:0}.sidenav{width:200px;flex-shrink:0;background:var(--bg-1);border-right:1px solid var(--border);padding:14px 10px;display:flex;flex-direction:column;gap:2px}.nav-item{display:block;padding:8px 12px;border-radius:var(--radius-sm);color:var(--text-dim);font-weight:500}.nav-item:hover{background:var(--bg-2);text-decoration:none;color:var(--text)}.nav-item.active{background:var(--accent-dim);color:var(--text)}.nav-spacer{flex:1}.nav-foot{padding:0 12px;font-size:11px}.content{flex:1;overflow-y:auto;padding:24px 28px 60px}.page{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:18px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.breadcrumb{font-size:13px;color:var(--text-dim)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.stat-card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:4px}.stat-value{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.stat-label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.panel{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-actions,.modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px}.modal-actions{flex-wrap:wrap}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;font-weight:600;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:9px 12px;background:var(--bg-2);border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--bg-2)}.row-muted{opacity:.55}.cell-truncate{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-actions{white-space:nowrap}.count{font-variant-numeric:tabular-nums;font-weight:600}.url-cell{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:2px 8px;border-radius:99px;border:1px solid transparent;text-transform:lowercase;letter-spacing:.02em;white-space:nowrap}.badge-row{display:flex;flex-wrap:wrap;gap:5px}.badge-green{color:var(--green);background:var(--green-bg);border-color:#bfe0cb}.badge-blue{color:var(--blue);background:var(--blue-bg);border-color:#c4d6f5}.badge-amber{color:var(--amber);background:var(--amber-bg);border-color:#e6d6a6}.badge-red{color:var(--red);background:var(--red-bg);border-color:#ecc4bf}.badge-gray{color:var(--gray);background:var(--gray-bg);border-color:var(--border-strong)}.badge-violet{color:var(--violet);background:var(--violet-bg);border-color:#d6c9ee}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field.inline{margin-bottom:0}.field-row{display:flex;gap:14px}.field-row .field{flex:1}.field-label{font-size:12px;font-weight:600;color:var(--text-dim)}.field-hint{font-size:11.5px;color:var(--muted)}input,textarea,select{width:100%;background:var(--bg-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);padding:8px 10px;font-size:13px;font-family:inherit}input.mono-input,.mono-input{font-family:var(--mono);font-size:12.5px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}input:disabled,select:disabled{opacity:.55;cursor:not-allowed}textarea{resize:vertical}select{cursor:pointer}.subform{border-left:2px solid var(--border-strong);padding-left:14px;margin:4px 0 8px}.toggle-stack{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle-track{position:relative;width:36px;height:20px;background:var(--bg-3);border:1px solid var(--border-strong);border-radius:99px;transition:background .12s,border-color .12s;flex-shrink:0}.toggle-thumb{position:absolute;top:2px;left:2px;width:14px;height:14px;background:var(--text-dim);border-radius:50%;transition:transform .12s,background .12s}.toggle input:checked+.toggle-track{background:var(--accent-dim);border-color:var(--accent)}.toggle input:checked+.toggle-track .toggle-thumb{transform:translate(16px);background:var(--accent)}.toggle-label{font-size:13px;color:var(--text-dim)}.headers-editor{display:flex;flex-direction:column;gap:8px}.header-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:inherit;font-size:13px;font-weight:600;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{padding:5px 10px;font-size:12px}.btn-block{width:100%}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{background:var(--bg-2);border-color:var(--border-strong);color:var(--text-dim)}.btn-ghost:hover:not(:disabled){background:var(--bg-3);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#a82a22}.btn-danger-ghost{background:transparent;border-color:#e6b8b3;color:var(--danger)}.btn-danger-ghost:hover:not(:disabled){background:var(--danger-dim)}.icon-btn{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:14px;padding:4px 6px;border-radius:4px;line-height:1}.icon-btn:hover{color:var(--text);background:var(--bg-3)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#10101066;display:grid;place-items:start center;padding:48px 16px;overflow-y:auto;z-index:50}.modal{width:100%;background:var(--bg-1);border:1px solid var(--border-strong);border-radius:12px;box-shadow:0 20px 60px #1010102e}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:16px}.modal-body{padding:20px}.spinner-wrap{display:flex;align-items:center;gap:10px;padding:18px 4px}.spinner{width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty{text-align:center;padding:32px 16px;color:var(--text-dim)}.empty-title{font-weight:600;margin:0 0 4px}.empty-action{margin-top:14px}.error-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--red-bg);border:1px solid #ecc4bf;color:#9a241c;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px}.error-text{color:#9a241c}.ok-text{color:var(--green);font-size:13px}.def-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px 24px}.def-row{display:flex;flex-direction:column;gap:2px}.def-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.def-value{font-size:13.5px}.code-block{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;margin:0;font-family:var(--mono);font-size:12.5px;color:var(--text-dim);white-space:pre-wrap;word-break:break-word;max-height:360px;overflow:auto}.body-preview{max-height:420px}.filter-bar{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}.pager{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.pager-btns{display:flex;gap:8px}.confirm-inline{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.replay-cell{display:inline-flex;align-items:center;gap:8px}.warn-box{background:var(--amber-bg);border:1px solid #e6d6a6;border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:16px}.warn-box strong{color:var(--amber)}.key-reveal{background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:12px 14px;word-break:break-all}@keyframes sigpulse{to{stroke-dashoffset:-14}}@keyframes livepulse{0%{box-shadow:0 0 color-mix(in srgb,var(--green) 55%,transparent)}70%{box-shadow:0 0 0 6px transparent}to{box-shadow:0 0 0 0 transparent}}.sig-path{stroke-dasharray:5 4}.sig-path.flowing{stroke-dasharray:7 7;animation:sigpulse .7s linear infinite}.dotlive,.dot-idle{display:inline-block;width:7px;height:7px;border-radius:9999px;flex-shrink:0}.dotlive{background:var(--green);animation:livepulse 1.6s infinite}.dot-idle{background:color-mix(in srgb,var(--muted) 45%,transparent)}@media (prefers-reduced-motion: reduce){.sig-path.flowing,.dotlive{animation:none}}.flow-list{display:flex;flex-direction:column;gap:16px}.flow-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.flow-title{font-family:var(--brand);font-weight:900;text-transform:uppercase;letter-spacing:.02em;font-size:16px;color:var(--text)}.flow-title:hover{text-decoration:underline}.flow-sub{font-size:11.5px;color:var(--text-dim);margin-top:3px;word-break:break-all}.flow-meta{font-size:12px;color:var(--muted);white-space:nowrap}.flow-wrap{position:relative;display:grid;grid-template-columns:minmax(150px,1fr) minmax(220px,1.5fr);gap:0 56px}.flow-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:visible}.flow-col{position:relative;z-index:1;display:flex;flex-direction:column;gap:10px}.flow-col-src{justify-content:center}.flow-node{background:var(--bg-2);border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:var(--radius-sm);padding:10px 12px}.flow-node-dst{background:var(--bg-1)}.flow-node[data-state=flowing],.flow-node[data-state=on]{border-left-color:var(--green)}.flow-node[data-state=failing]{border-left-color:var(--red)}.flow-node-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.flow-node-title{font-weight:700;font-size:13px;word-break:break-all}.flow-node-sub{font-size:11px;color:var(--text-dim);margin-top:3px;word-break:break-all}.flow-live{display:flex;align-items:center;gap:7px;margin-top:8px;font-size:11px;color:var(--muted)}.flow-live.on{color:var(--green)}@media (max-width: 640px){.flow-wrap{grid-template-columns:1fr;gap:12px}.flow-svg{display:none}}.method-picker{display:flex;flex-wrap:wrap;gap:6px}.method-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--border-strong);border-radius:99px;font-size:12px;font-weight:600;font-family:var(--mono);color:var(--text-dim);background:var(--bg-2);cursor:pointer;-webkit-user-select:none;user-select:none}.method-chip:hover{border-color:var(--muted)}.method-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.method-chip input{width:auto;margin:0;accent-color:#ffffff}.flow-node-method{font-size:11px;color:var(--muted);margin-top:4px}
