:root{--senton-1:#a78bfa;--senton-2:#e07ab0;--senton-3:#f59a4a;--grad:linear-gradient(135deg,var(--senton-1) 0%,var(--senton-2) 55%,var(--senton-3) 100%);--bg:#f4f5fa;--panel:#fff;--panel-2:#f1f2f7;--panel-3:#e9eaf2;--line:#e5e6ee;--line-2:#d8d9e4;--ink:#1f2230;--ink-soft:#6b6f80;--ink-faint:#9a9daf;--hi:#7c5cff;--hi-bg:color-mix(in srgb,var(--senton-1) 13%,transparent);--rail:#1c1530;--rail-2:#241b39;--rail-ink:#cdc6dd;--ok:#2f9e67;--warn:#d98a1c;--bad:#d65151;--info:#4a8fd6;--radius:12px;--shadow:0 6px 22px rgba(40,20,70,.08);--mono:ui-monospace,"Cascadia Code","SF Mono",Consolas,"Liberation Mono",monospace;color-scheme:light}:root[data-theme=dark]{--bg:#131019;--panel:#1b1826;--panel-2:#232030;--panel-3:#2b2739;--line:#2c2839;--line-2:#3a3549;--ink:#ece9f4;--ink-soft:#a49fb5;--ink-faint:#7a758b;--rail:#100c18;--rail-2:#171122;--shadow:0 8px 26px rgba(0,0,0,.4);--hi:#b7a2ff;color-scheme:dark}*{box-sizing:border-box}body,html{margin:0;height:100%}body{font:13.5px/1.45 Segoe UI,system-ui,-apple-system,Arial,sans-serif;color:var(--ink);background:var(--bg);overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--hi)}.hidden{display:none!important}.muted{color:var(--ink-soft)}.faint{color:var(--ink-faint)}.small{font-size:12px}.mono{font-family:var(--mono)}.grow{flex:1 1;min-width:0}.row{align-items:center;gap:8px}.col,.row{display:flex}.col{flex-direction:column;gap:10px}.wrap{flex-wrap:wrap}.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.senton-eyebrow{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.8px;text-transform:uppercase}.senton-eyebrow,.senton-gradient{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}svg.i{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.btn,.senton-btn-ghost,.senton-btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:9px;padding:7px 13px;font-weight:700;font-size:13px;cursor:pointer;border:1px solid transparent;text-decoration:none;white-space:nowrap;background:none}.senton-btn-primary{background:var(--grad);color:#fff;box-shadow:0 5px 14px rgba(224,122,176,.28)}.senton-btn-primary:hover{filter:brightness(1.05)}.senton-btn-ghost{background:var(--panel);color:var(--ink);border-color:var(--line-2)}.senton-btn-ghost:hover{border-color:var(--senton-1)}.btn.sm,.senton-btn-ghost.sm,.senton-btn-primary.sm{padding:4px 9px;font-size:12px;border-radius:7px}.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 35%,transparent)}.btn.plain{color:var(--ink-soft);font-weight:600}.btn.plain:hover{color:var(--ink);background:var(--panel-2)}button:disabled{opacity:.5;cursor:default}.ib{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:7px;border:0;background:none;color:var(--ink-soft);cursor:pointer;flex:none}.ib:hover{background:var(--panel-2);color:var(--ink)}.ib.on{background:var(--hi-bg);color:var(--hi)}input:not([type=checkbox]):not([type=radio]),select,textarea{background:var(--panel);border:1px solid var(--line-2);border-radius:8px;padding:6px 9px;width:100%;color:var(--ink);font-size:13px;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--senton-1) 50%,transparent);outline-offset:-1px;border-color:var(--senton-1)}textarea{resize:vertical}input[type=checkbox]{accent-color:var(--senton-1);width:14px;height:14px;cursor:pointer}label.f{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--ink-soft)}.form{display:grid;grid-gap:12px;gap:12px}.err{color:var(--bad);font-size:12.5px;font-weight:600;min-height:1em}.seg{display:inline-flex;background:var(--panel-2);border-radius:8px;padding:2px;gap:2px}.seg button{border:0;background:transparent;padding:4px 10px;border-radius:6px;font-weight:700;font-size:12px;cursor:pointer;color:var(--ink-soft)}.seg button.on{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}.pill{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:20px;font-size:11.5px;font-weight:700;white-space:nowrap;background:var(--panel-2);color:var(--ink-soft)}.pill.ok{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}.pill.bad{background:color-mix(in srgb,var(--bad) 13%,transparent);color:var(--bad)}.pill.warn{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}.pill.info{background:color-mix(in srgb,var(--info) 13%,transparent);color:var(--info)}.pill.hi{background:var(--hi-bg);color:var(--hi)}.m{font-family:var(--mono);font-weight:800;font-size:10.5px;letter-spacing:.2px;flex:none}.chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line-2);border-radius:6px;padding:1px 7px;font-size:11.5px;color:var(--ink-soft);background:var(--panel);max-width:100%}.avatar{width:26px;height:26px;display:inline-grid;place-items:center;color:#fff;font-weight:700;font-size:11px}.avatar,.dot{border-radius:50%;flex:none}.dot{width:8px;height:8px;display:inline-block}.app{display:grid;grid-template-rows:50px minmax(0,1fr);height:100vh}.top{gap:10px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--line);min-width:0}.brand,.top{display:flex;align-items:center}.brand{gap:9px;white-space:nowrap}.brand,.mark{font-weight:800}.mark{width:30px;height:30px;border-radius:9px;background:var(--grad);display:grid;place-items:center;color:#fff;font-size:15px;box-shadow:0 4px 12px rgba(167,139,250,.4);flex:none}.brand small{display:block;font-weight:600;font-size:10.5px;color:var(--ink-soft);margin-top:-2px}.wsbtn{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:6px 9px;border-radius:8px;font-weight:700;cursor:pointer;max-width:240px}.search,.wsbtn:hover{background:var(--panel-2)}.search{flex:0 1 380px;margin:0 auto;display:flex;align-items:center;gap:8px;border:1px solid var(--line-2);border-radius:9px;padding:5px 10px;color:var(--ink-faint);cursor:pointer}.search kbd{margin-left:auto;font:11px var(--mono);border:1px solid var(--line-2);border-radius:5px;padding:0 5px;background:var(--panel)}.envsel{width:190px}.body{display:grid;grid-template-columns:68px var(--side,290px) minmax(0,1fr) auto;min-height:0}.body.noside{grid-template-columns:68px 0 minmax(0,1fr) auto}.rail{background:linear-gradient(180deg,var(--rail-2),var(--rail));gap:3px;padding:8px 0;min-height:0;overflow-y:auto}.rail,.rail button{display:flex;flex-direction:column;align-items:center;color:var(--rail-ink)}.rail button{width:62px;border:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.1px;background:none;border-radius:10px;padding:7px 0 5px;gap:2px;font-size:9.5px;font-weight:700;cursor:pointer}.rail button:hover{background:rgba(255,255,255,.07);color:#fff}.rail button.on{background:rgba(167,139,250,.22);color:#fff;box-shadow:inset 3px 0 0 var(--senton-1)}.rail svg.i{width:18px;height:18px}.rail .sep{width:28px;height:1px;background:rgba(255,255,255,.1);margin:5px 0}.side{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden;position:relative}.side-head{display:flex;align-items:center;gap:6px;padding:10px 10px 8px}.side-head h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-soft);flex:1 1}.side-filter{padding:0 10px 8px;display:flex;gap:6px}.side-list{flex:1 1;overflow:auto;padding:0 6px 20px}.resizer{position:absolute;right:-3px;top:0;bottom:0;width:6px;cursor:col-resize;z-index:5}.resizer:hover{background:color-mix(in srgb,var(--senton-1) 40%,transparent)}.center{flex-direction:column;min-height:0;background:var(--panel)}.center,.tn{display:flex;min-width:0}.tn{align-items:center;gap:6px;padding:4px 6px;border-radius:7px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative}.tn:hover{background:var(--panel-2)}.tn.on{background:var(--hi-bg)}.tn .caret{width:14px;color:var(--ink-faint);flex:none;display:grid;place-items:center}.tn .caret svg{width:12px;height:12px;transition:transform .12s}.tn .caret.open svg{transform:rotate(90deg)}.tn .nm{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tn .more{opacity:0}.tn .more.open,.tn:hover .more{opacity:1}.tn.col-node{font-weight:700}.tn .m{width:42px;text-align:right}.tn.drop{box-shadow:inset 0 0 0 2px var(--senton-1)}.sect{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-faint);padding:12px 8px 4px}.tabs{align-items:stretch;border-bottom:1px solid var(--line);min-height:38px;overflow-x:auto;scrollbar-width:thin;flex:none}.tab,.tabs{display:flex;background:var(--panel-2)}.tab{align-items:center;gap:6px;padding:0 8px 0 12px;max-width:220px;min-width:120px;border-right:1px solid var(--line);cursor:pointer;font-size:12.5px;color:var(--ink-soft);position:relative}.tab.on{background:var(--panel);color:var(--ink)}.tab.on:after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--grad)}.tab .nm{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab .x{width:18px;height:18px;border-radius:5px;border:0;background:none;color:var(--ink-faint);cursor:pointer;display:grid;place-items:center}.tab .x:hover{background:var(--panel-3);color:var(--ink)}.tab .dirty{width:7px;height:7px;border-radius:50%;background:var(--senton-3)}.tabs .add{border:0;background:none;padding:0 12px;cursor:pointer;color:var(--ink-soft)}.tabs .add:hover{color:var(--ink)}.tabbody{flex:1 1;min-height:0;overflow:auto;display:flex;flex-direction:column}.crumbs{display:flex;align-items:center;gap:6px;padding:10px 16px 0;font-size:12.5px;color:var(--ink-soft);min-width:0}.crumbs .sep{color:var(--ink-faint)}.crumbs input.title{border:1px solid transparent;background:none;font-weight:700;color:var(--ink);padding:3px 6px;width:auto;min-width:60px;font-size:13.5px}.crumbs input.title:hover{border-color:var(--line-2)}.urlbar{display:flex;gap:8px;padding:10px 16px}.urlbox{flex:1 1;display:flex;border:1px solid var(--line-2);border-radius:9px;background:var(--panel);min-width:0}.urlbox:focus-within{border-color:var(--senton-1);box-shadow:0 0 0 2px color-mix(in srgb,var(--senton-1) 30%,transparent)}.urlbox select{width:104px;border:0;border-right:1px solid var(--line-2);border-radius:9px 0 0 9px;font-family:var(--mono);font-weight:800;font-size:12.5px;background:var(--panel-2)}.urlbox input:focus,.urlbox select:focus{outline:none}.urlbox .url{border:0;border-radius:0 9px 9px 0;font-family:var(--mono);font-size:13px}.send{min-width:92px}.vartext{position:relative;flex:1 1;min-width:0;display:flex}.vartext .hl{position:absolute;inset:0;pointer-events:none;padding:6px 9px;font-family:var(--mono);font-size:13px;white-space:pre;overflow:hidden;color:transparent;border:1px solid transparent}.vartext .hl mark{background:color-mix(in srgb,var(--senton-1) 22%,transparent);color:transparent;border-radius:4px}.vartext .hl mark.miss{background:color-mix(in srgb,var(--bad) 20%,transparent)}.vartext .hl mark.vault{background:color-mix(in srgb,var(--senton-3) 25%,transparent)}.subtabs{display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--line);overflow-x:auto;flex:none;align-items:center}.subtabs button{border:0;background:none;padding:8px 10px;font-weight:600;font-size:12.5px;color:var(--ink-soft);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.subtabs button.on{color:var(--ink);border-bottom-color:var(--senton-2)}.subtabs button sup{color:var(--ok);font-weight:800;margin-left:2px}.subtabs .right{margin-left:auto;display:flex;align-items:center;gap:8px;padding-left:10px}.split{flex:1 1;min-height:0;display:flex;flex-direction:column}.pane{padding:10px 16px;overflow:auto}.req-pane{flex:0 0 var(--req-h,42%);min-height:90px;display:flex;flex-direction:column;overflow:hidden}.req-pane .pane{flex:1 1}.hdrag{height:6px;flex:none;cursor:row-resize;border-top:1px solid var(--line);background:var(--panel-2)}.hdrag:hover{background:color-mix(in srgb,var(--senton-1) 30%,transparent)}.res-pane{flex:1 1;min-height:80px;display:flex;flex-direction:column;overflow:hidden}table.kv{width:100%;border-collapse:collapse;font-size:12.5px;table-layout:fixed}.kv th{text-align:left;font-size:11px;font-weight:700;color:var(--ink-soft);padding:5px 8px;background:var(--panel-2)}.kv td,.kv th{border:1px solid var(--line)}.kv td{padding:0;vertical-align:middle}.kv td input:not([type=checkbox]),.kv td select{border:0;border-radius:0;background:transparent;padding:6px 8px;font-family:var(--mono);font-size:12.5px}.kv td input:focus,.kv td select:focus{outline:2px solid color-mix(in srgb,var(--senton-1) 50%,transparent)}.kv td.c{text-align:center}.kv td.a,.kv td.c,.kv th.c{width:34px}.kv td.a{text-align:center}.kv th.a{width:34px}.kv tr.off td input:not([type=checkbox]){color:var(--ink-faint)}.kv tr:hover .ib{visibility:visible}.kv .ib{visibility:hidden;width:24px;height:24px}.kv tr.ghost td{background:color-mix(in srgb,var(--panel-2) 50%,transparent)}.code{display:flex;border:1px solid var(--line-2);border-radius:9px;overflow:hidden;background:var(--panel);min-height:160px;flex:1 1}.code .ln{padding:8px 6px 8px 10px;text-align:right;color:var(--ink-faint);-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--panel-2);overflow:hidden;min-width:40px}.code .ln,.code textarea{font:12.5px/1.55 var(--mono);white-space:pre}.code textarea{border:0;border-radius:0;padding:8px 10px;resize:none;overflow:auto;-moz-tab-size:2;tab-size:2;flex:1 1;min-height:100%}.code textarea:focus{outline:none}.viewer{font:12.5px/1.55 var(--mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:10px 14px;flex:1 1;overflow:auto}.viewer.nowrap{white-space:pre;word-break:normal}.j-k{color:#9b4dca}.j-s{color:#2f8a5b}.j-n{color:#c46a1c}.j-b{color:#3d7fd6}.j-null{color:#d65151}:root[data-theme=dark] .j-k{color:#c8a3ff}:root[data-theme=dark] .j-s{color:#7ed3a2}:root[data-theme=dark] .j-n{color:#f7b271}:root[data-theme=dark] .j-b{color:#7fb4ff}.viewer .lnum{display:inline-block;width:3.2em;color:var(--ink-faint);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:right;padding-right:12px}.resbar{display:flex;align-items:center;gap:12px;padding:0 12px;border-bottom:1px solid var(--line);min-height:38px;flex-wrap:wrap}.resbar .subtabs{border:0;padding:0}.stat{font-weight:700;font-size:12.5px}.stat.ok{color:var(--ok)}.stat.bad{color:var(--bad)}.stat.warn{color:var(--warn)}.res-empty{flex:1 1;display:grid;place-items:center;text-align:center;color:var(--ink-soft);padding:24px}.res-empty .big{width:64px;height:64px;border-radius:18px;background:var(--hi-bg);display:grid;place-items:center;margin:0 auto 12px;color:var(--hi)}.res-empty .big svg{width:30px;height:30px}.testrow{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}.hdr-tbl{width:100%;border-collapse:collapse;font-size:12.5px}.hdr-tbl td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top;word-break:break-all}.hdr-tbl td:first-child{font-weight:700;width:34%;color:var(--ink-soft)}.hdr-tbl th{text-align:left;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-faint);padding:6px 8px;border-bottom:1px solid var(--line)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--panel-3);border-top-color:var(--senton-2);animation:spin .8s linear infinite;margin:0 auto 10px}@keyframes spin{to{transform:rotate(1turn)}}.rp{width:var(--rp,380px);border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0;position:relative}.rp-icons{display:flex;justify-content:center;gap:4px;padding:8px;border-bottom:1px solid var(--line)}.rp-icons .ib.on{background:var(--panel-2);color:var(--ink)}.rp-icons .ib.wide{width:auto;padding:0 8px;display:inline-flex;gap:4px}.stats{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:12px;color:var(--ink-soft);margin-top:8px}.stats span{white-space:nowrap}.rp-head{display:flex;align-items:center;gap:4px;padding:10px 12px 6px}.rp-head b{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.rp-body{flex:1 1;overflow:auto;padding:4px 14px 14px;min-height:0}.rp .resizer{left:-3px;right:auto}.rp-collapsed{width:44px;border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;align-items:center;padding:8px 0;gap:4px}.ai-msg{margin:10px 0;font-size:13px;line-height:1.55;overflow-wrap:anywhere}.ai-msg.user{background:var(--panel-2);border-radius:12px;padding:9px 12px}.ai-msg.user .chip{margin-bottom:6px}.ai-msg.tool{display:flex;gap:7px;align-items:center;color:var(--ink-soft);font-size:12px;margin:4px 0}.ai-msg.tool svg{width:13px;height:13px}.ai-msg p{margin:6px 0}.ai-msg ol,.ai-msg ul{margin:6px 0;padding-left:20px}.ai-msg li{margin:2px 0}.ai-msg code{font:11.5px var(--mono);border:1px solid var(--line);border-radius:5px;padding:0 4px}.ai-msg code,.ai-msg pre{background:var(--panel-2)}.ai-msg pre{border-radius:8px;padding:8px 10px;overflow:auto;font:11.5px/1.5 var(--mono)}.ai-msg pre code{border:0;padding:0;background:none}.ai-msg table{border-collapse:collapse;font-size:11.5px;width:100%;margin:6px 0;display:block;overflow-x:auto}.ai-msg td,.ai-msg th{border-bottom:1px solid var(--line);padding:4px 6px;text-align:left;white-space:nowrap}.ai-msg th{color:var(--ink-soft);font-weight:700}.ai-msg h1,.ai-msg h2,.ai-msg h3,.ai-msg h4{font-size:13.5px;margin:10px 0 4px}.composer{margin:10px 12px 12px;border:1px solid var(--line-2);border-radius:12px;padding:8px 10px;background:var(--panel);box-shadow:var(--shadow)}.composer:focus-within{border-color:var(--senton-1)}.composer textarea{border:0;padding:4px 0;resize:none;min-height:52px;max-height:180px}.composer textarea:focus{outline:none}.composer .send-ai{width:30px;height:30px;border-radius:8px;border:0;background:var(--grad);color:#fff;display:grid;place-items:center;cursor:pointer}.suggest{display:flex;flex-direction:column;gap:6px;margin-top:12px}.suggest button{text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:8px 10px;cursor:pointer;font-size:12.5px;color:var(--ink)}.suggest button:hover{border-color:var(--senton-1);background:var(--hi-bg)}.ai-hero{text-align:center;padding:22px 6px 6px}.ai-hero .mark{width:44px;height:44px;border-radius:13px;margin:0 auto 10px}.comment{padding:9px 0;border-bottom:1px solid var(--line)}.page{padding:22px 28px 60px;max-width:1180px;width:100%}.page-head{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:14px}.page-head h1{margin:2px 0 0;font-size:24px;letter-spacing:-.3px}.page-head>.grow{flex:1 1 280px}.page-head .actions{margin-left:auto;gap:8px;align-items:center}.meta,.page-head .actions{display:flex;flex-wrap:wrap}.meta{gap:16px;color:var(--ink-soft);font-size:12.5px;margin:4px 0 14px}.meta span{display:inline-flex;align-items:center;gap:5px}.meta svg.i{width:14px;height:14px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;min-width:0}.card h3{margin:0 0 10px;font-size:14px;display:flex;align-items:center;gap:8px}.grid{display:grid;grid-gap:12px;gap:12px}.g2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.kpi .l{font-size:12px;font-weight:700}.kpi .s{font-size:11.5px;color:var(--ink-soft)}.kpi .v{font-size:24px;font-weight:800;margin-top:4px;letter-spacing:-.5px}.ptabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:6px 0 16px;overflow-x:auto}.ptabs button{border:0;background:none;padding:8px 12px;font-weight:600;color:var(--ink-soft);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.ptabs button.on{color:var(--ink);border-bottom-color:var(--senton-2)}table.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);font-weight:800;padding:8px 10px;white-space:nowrap}.tbl td,.tbl th{border-bottom:1px solid var(--line)}.tbl td{padding:9px 10px;vertical-align:middle}.tbl tr.click{cursor:pointer}.tbl tr.click:hover td{background:var(--panel-2)}.tbl td.num,.tbl th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tbl-wrap{overflow-x:auto}.bar{height:6px;background:var(--panel-2);overflow:hidden;min-width:60px}.bar,.bar i{border-radius:4px}.bar i{display:block;height:100%}.spark{display:flex;align-items:flex-end;gap:3px;height:70px}.spark div{flex:1 1;display:flex;flex-direction:column-reverse;border-radius:3px 3px 0 0;overflow:hidden;min-height:2px;background:var(--panel-2)}.spark i{display:block;background:var(--senton-1)}.spark i.e{background:var(--bad)}.empty{color:var(--ink-soft);text-align:center;padding:24px 10px}.loadmore{display:flex;justify-content:center;padding:10px 0 14px}.svc{cursor:pointer;transition:border-color .12s}.svc:hover{border-color:var(--senton-1)}.svc h4{margin:0 0 4px;font-size:14.5px}.desc-edit{width:100%;min-height:120px}.md p{margin:6px 0}.md code{font:12px var(--mono);background:var(--panel-2);padding:0 4px;border-radius:4px}.lint{display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:3px 10px;gap:3px 10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:12.5px;align-items:center}.lint .msg{grid-column:2;color:var(--ink)}.env-grid td input{font-family:var(--mono)}.menu{position:fixed;z-index:80;background:var(--panel);border:1px solid var(--line-2);border-radius:10px;box-shadow:0 12px 34px rgba(20,10,40,.22);padding:5px;min-width:190px;max-height:70vh;overflow:auto}.menu button{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;padding:7px 10px;border-radius:7px;cursor:pointer;font-size:13px;text-align:left;color:var(--ink)}.menu button:hover{background:var(--panel-2)}.menu button.danger{color:var(--bad)}.menu button.on{background:var(--hi-bg)}.menu hr{border:0;border-top:1px solid var(--line);margin:4px 2px}.menu .lbl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-faint);padding:6px 10px 3px}.modal-bg{position:fixed;inset:0;background:rgba(15,10,25,.45);display:grid;place-items:center;padding:16px;z-index:70;animation:fade .12s}.modal{background:var(--panel);border-radius:14px;width:min(520px,100%);max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal.wide{width:min(820px,100%)}.modal header{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;background:var(--panel);z-index:1}.modal header h2{margin:0;font-size:16px;flex:1 1}.modal .bd{padding:16px 18px}.modal footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--line)}@keyframes fade{0%{opacity:0}}.toasts{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:90;display:flex;flex-direction:column;gap:6px;align-items:center}.toast{background:var(--rail);color:#fff;padding:9px 16px;border-radius:10px;font-weight:600;box-shadow:0 10px 30px rgba(0,0,0,.3);max-width:calc(100vw - 32px)}.toast.bad{background:var(--bad)}.palette{width:min(620px,100%);align-self:start;margin-top:12vh}.palette input{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:14px 18px;font-size:15px}.palette input:focus{outline:none}.palette .res{max-height:50vh;overflow:auto;padding:6px}.palette .res button{display:flex;gap:10px;align-items:center;width:100%;border:0;background:none;padding:8px 10px;border-radius:8px;cursor:pointer;text-align:left}.palette .res button.on,.palette .res button:hover{background:var(--hi-bg)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;overflow:auto;background:radial-gradient(1200px 600px at 20% -10%,color-mix(in srgb,var(--senton-1) 22%,transparent),transparent),radial-gradient(900px 500px at 110% 110%,color-mix(in srgb,var(--senton-3) 18%,transparent),transparent),var(--bg)}.login{width:min(390px,100%);padding:26px;box-shadow:var(--shadow)}.login .brand{justify-content:center;margin-bottom:16px;font-size:18px}.login h1{margin:0 0 2px;font-size:22px}body:has(.login-wrap){overflow:auto}@media (max-width:1100px){.page-head h1{font-size:21px}.rp{position:fixed;right:0;top:50px;bottom:0;z-index:40;box-shadow:-10px 0 30px rgba(0,0,0,.15)}.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.body,.body.noside{grid-template-columns:48px 0 minmax(0,1fr) auto}.side{position:fixed;left:48px;top:50px;bottom:0;width:min(290px,80vw);z-index:30;box-shadow:10px 0 30px rgba(0,0,0,.15)}.body.noside .side,.brand small,.envsel-wrap,.search span{display:none}.rail button{width:40px;font-size:0;gap:0}.rail button .rbadge{font-size:9px}.g2,.g3{grid-template-columns:1fr}.page{padding:16px}.rp{width:100vw}}:root{--m-GET:#2f9e67;--m-POST:#d98a1c;--m-PUT:#4a8fd6;--m-PATCH:#8f7ae5;--m-DELETE:#d65151;--m-HEAD:#4ac6c0;--m-OPTIONS:#e07ab0}.page-head .senton-eyebrow{display:block;width:-moz-fit-content;width:fit-content}.flow-wrap{display:flex;flex-direction:column;height:100%;min-height:0}.flow-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);flex:none}.flow-name{border:1px solid transparent!important;font-weight:800;font-size:15px!important;max-width:360px;background:transparent!important}.flow-name:hover{border-color:var(--line-2)!important}.flow-main{flex:1 1;min-height:0;display:flex}.flow-palette{width:170px;flex:none;border-right:1px solid var(--line);padding:8px;display:flex;flex-direction:column;gap:4px;overflow:auto}.flow-palette button{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel);border-radius:9px;padding:7px 8px;cursor:pointer;font-weight:600;font-size:12.5px;text-align:left}.flow-palette button:hover:not(:disabled){border-color:var(--senton-1);background:var(--hi-bg)}.fp-ico{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;color:#fff;flex:none}.flow-canvas{flex:1 1;overflow:auto;background-color:var(--panel-2);background-image:radial-gradient(color-mix(in srgb,var(--ink-faint) 45%,transparent) 1px,transparent 1px);background-size:20px 20px}.flow-canvas,.flow-inner{position:relative}.flow-edges{position:absolute;left:0;top:0;overflow:visible}.fnode{position:absolute;background:var(--panel);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 4px 14px rgba(40,20,70,.08);-webkit-user-select:none;-moz-user-select:none;user-select:none}.fnode.sel{border-color:var(--hi);box-shadow:0 0 0 3px color-mix(in srgb,var(--senton-1) 35%,transparent)}.fnode.run-ok{border-color:var(--ok)}.fnode.run-bad{border-color:var(--bad);box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 20%,transparent)}.fnode-head{display:flex;align-items:center;gap:7px;padding:7px 8px;border-bottom:1px solid var(--line);cursor:-webkit-grab;cursor:grab;border-radius:12px 12px 0 0;background:color-mix(in srgb,var(--c) 9%,transparent);font-size:12.5px}.fnode-head:active{cursor:-webkit-grabbing;cursor:grabbing}.fnode-body{padding:8px;font-size:12.5px}.fnode-body input,.fnode-body select,.fnode-body textarea{padding:4px 7px;font-size:12.5px}.fnode-status{padding:5px 8px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fnode.run-bad .fnode-status{color:var(--bad)}.port{position:absolute;width:14px;height:14px;border-radius:50%;background:var(--panel);border:3px solid var(--c,var(--line-2))}.port.in{left:-8px;--c:var(--ink-faint)}.port.out{right:-8px;cursor:crosshair}.port.out:hover{transform:scale(1.25)}.port i{position:absolute;left:16px;top:-4px;font-style:normal;font-size:10.5px;font-weight:700;color:var(--c);white-space:nowrap;pointer-events:none}.flow-log{border-top:1px solid var(--line);flex:none;background:var(--panel)}.flow-log-body{display:flex;gap:10px;height:190px;padding:6px 12px}@media (max-width:760px){.flow-palette{width:120px}}.flow-main{position:relative}.flow-zoom{position:absolute;right:14px;top:10px;z-index:5;display:flex;align-items:center;gap:2px;background:var(--panel);border:1px solid var(--line-2);border-radius:9px;padding:2px 4px;box-shadow:var(--shadow)}.flow-zoom .ib{width:24px;height:24px;font-weight:800}.rail button{position:relative}.rail button .rbadge{position:absolute;top:2px;right:8px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--senton-2);color:#fff;font-size:9.5px;font-weight:800;display:grid;place-items:center}.improve-btn{border-color:color-mix(in srgb,var(--senton-3) 55%,var(--line-2))}.improve-btn svg{color:var(--senton-3)}.imp-row{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);cursor:pointer}.imp-row:last-child{border-bottom:0}.imp-row:hover{background:var(--panel-2)}.imp-row>input[type=checkbox]{margin-top:12px}.imp-vote{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:42px;padding:5px 4px;border:1px solid var(--line-2);border-radius:9px;background:var(--panel);color:var(--ink-soft);cursor:pointer;font-size:12px}.imp-vote.on,.imp-vote:hover{border-color:var(--senton-1)}.imp-vote.on{background:var(--hi-bg);color:var(--hi)}.imp-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:2px}@media (max-width:760px){.improve-btn span{display:none}}.role-chip{display:inline-flex;align-items:center;gap:5px;padding:1px 9px;border-radius:20px;font-size:11.5px;font-weight:700;white-space:nowrap;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent)}.role-chip:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c)}.role-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:8px;gap:8px}.role-pick button{text-align:left;background:var(--panel);border-radius:11px;padding:9px 11px;cursor:pointer;display:flex;flex-direction:column;gap:2px;border:1px solid var(--line-2);border-left:4px solid var(--c)}.role-pick button span{font-size:11.5px;color:var(--ink-soft);line-height:1.35}.role-pick button:hover:not(:disabled){background:color-mix(in srgb,var(--c) 7%,var(--panel))}.role-pick button.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 12%,var(--panel));box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 35%,transparent)}.rights{display:flex;flex-direction:column;gap:10px;max-height:56vh;overflow:auto;padding-right:4px}.rights-area{border:1px solid var(--line);border-radius:11px;overflow:hidden;flex:none}.rights-head{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);background:var(--panel-2);padding:6px 12px}.right-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border-top:1px solid var(--line)}.right-row:first-of-type{border-top:0}.kind{display:inline-block;min-width:52px;text-align:center;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;padding:2px 6px;border-radius:6px;flex:none}.k-see{background:color-mix(in srgb,var(--info) 13%,transparent);color:var(--info)}.k-use{background:color-mix(in srgb,var(--ok) 13%,transparent);color:var(--ok)}.k-edit{background:color-mix(in srgb,var(--senton-1) 18%,transparent);color:var(--hi)}.k-manage{background:color-mix(in srgb,var(--senton-3) 18%,transparent);color:#c56f1c}:root[data-theme=dark] .k-manage{color:#f7b271}.seg.tri button{min-width:58px}.seg.tri button.on.allow{background:color-mix(in srgb,var(--ok) 18%,var(--panel));color:var(--ok)}.seg.tri button.on.deny{background:color-mix(in srgb,var(--bad) 15%,var(--panel));color:var(--bad)}.eff{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:12px;flex:none}.eff.yes{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.eff.no{background:var(--panel-2);color:var(--ink-faint)}.switch{width:38px;height:22px;border-radius:12px;background:var(--line-2);position:relative;flex:none;cursor:pointer;transition:background .15s}.switch i{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .15s}.switch.on{background:var(--grad)}.switch.on i{left:19px}.access-block{padding:12px 14px}.access-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:6px;gap:6px}.access-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:9px;padding:6px 9px;cursor:pointer;font-size:13px;min-width:0}.access-item:hover{border-color:var(--senton-1)}.access-item.on{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 8%,transparent)}.access-item.off{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 7%,transparent)}table.matrix{border-collapse:separate;border-spacing:0;font-size:12.5px;width:100%}.matrix td,.matrix th{border-bottom:1px solid var(--line);padding:6px 8px}.matrix .mx-first{left:0;text-align:left;white-space:nowrap;z-index:1;min-width:230px}.matrix .mx-first,.matrix thead th{position:-webkit-sticky;position:sticky;background:var(--panel)}.matrix thead th{top:0;z-index:2}.matrix thead .mx-first{z-index:3}.mx-person{cursor:pointer;text-align:center;min-width:92px;max-width:110px;font-weight:700;vertical-align:bottom}.mx-person .avatar{margin:0 auto 3px}.mx-area td,.mx-person:hover{background:var(--panel-2)}.mx-area td{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);position:-webkit-sticky;position:sticky;left:0}.mx-cell{text-align:center;cursor:pointer;font-weight:800;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mx-cell.yes{color:var(--ok)}.mx-cell.no{color:var(--ink-faint)}.mx-cell:hover{background:var(--hi-bg)}.mx-cell.ov{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--senton-3) 70%,transparent);border-radius:6px}.mx-cell.locked{cursor:not-allowed;opacity:.75}.mx-cell[aria-busy=true]{opacity:.4}.matrix-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin:0 3px 0 10px;vertical-align:-1px}.matrix-legend i.yes{background:var(--ok)}.matrix-legend i.no{background:var(--line-2)}.matrix-legend i.ov{box-shadow:inset 0 0 0 2px var(--senton-3)}