@font-face{font-family:"JetBrains Mono";src:url("/static/fonts/JetBrainsMono-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/static/fonts/JetBrainsMono-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/static/fonts/JetBrainsMono-SemiBold.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/static/fonts/JetBrainsMono-Bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

:root{
  --bg:#070b14;
  --card:rgba(12,18,32,.92);
  --stroke:rgba(140,200,210,.14);
  --text:#e7eef8;
  --muted:#7b8ba6;
  --dim:#5a6a84;
  --teal:#5eead4;
  --pink:#f9a8d4;
  --rose:#fb7185;
  --purple:#c4b5fd;
  --violet:#a78bfa;
  --amber:#fbbf24;
  --green:#4ade80;
  --red:#f87171;
  --cyan:#67e8f9;
  --blue:#7dd3fc;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%;background:#05070e;color:var(--text);
  font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  -webkit-font-smoothing:antialiased}
button,input,select,a{font-family:inherit}
button{cursor:pointer}
.page{
  min-height:100vh;
  background:
    radial-gradient(900px 520px at 8% -8%,rgba(167,139,250,.18),transparent 55%),
    radial-gradient(820px 480px at 100% 0%,rgba(45,212,191,.09),transparent 50%),
    radial-gradient(740px 420px at 90% 100%,rgba(251,113,133,.07),transparent 45%),
    #070b14;
  position:relative;
}
.page::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(150,190,210,.08) 1px,transparent 1px);
  background-size:20px 20px;
  mask-image:linear-gradient(180deg,rgba(0,0,0,.85),rgba(0,0,0,.25) 70%,rgba(0,0,0,.45));
}
.wrap{position:relative;z-index:1;max-width:1440px;margin:0 auto;padding:14px 18px 28px}

/* login */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{
  width:min(420px,100%);
  background:linear-gradient(180deg,rgba(18,26,46,.9),rgba(10,16,30,.94));
  border:1px solid var(--stroke);border-radius:22px;padding:36px 32px 28px;
  box-shadow:0 20px 50px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.05);
  text-align:center;
}
.login-card .mascot{margin:0 auto 14px}
.login-card h1{font-size:22px;letter-spacing:-.03em;margin-bottom:4px}
.login-card .sub{color:var(--muted);font-size:12px;margin-bottom:22px}
.field{text-align:left;margin-bottom:12px}
.field label{display:block;font-size:11px;color:var(--muted);letter-spacing:.08em;margin-bottom:6px}
.field input{
  width:100%;background:rgba(8,12,24,.8);border:1px solid rgba(140,200,210,.18);
  border-radius:10px;color:var(--text);padding:11px 12px;font-size:13px;outline:none;
}
.field input:focus{border-color:rgba(167,139,250,.6);box-shadow:0 0 0 3px rgba(167,139,250,.15)}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid transparent;border-radius:10px;padding:8px 14px;font-size:12px;font-weight:600;
  letter-spacing:.04em;transition:transform .12s,box-shadow .12s,background .12s;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:linear-gradient(180deg,#c4b5fd,#8b6cf0);color:#12082a;width:100%;padding:12px;margin-top:8px;
  box-shadow:0 0 18px rgba(167,139,250,.35)}
.btn-teal{background:linear-gradient(180deg,#5eead4,#14b8a6);color:#04221c}
.btn-ghost{background:rgba(255,255,255,.04);color:var(--text);border-color:rgba(140,200,210,.18)}
.btn-danger{background:linear-gradient(180deg,#fb7185,#e11d48);color:#fff;box-shadow:0 0 16px rgba(225,29,72,.35);font-weight:700}
.err{color:var(--red);font-size:12px;min-height:18px;margin-top:8px}

/* mascot */
.mascot{width:72px;height:72px;position:relative;flex-shrink:0}
.mascot svg{width:100%;height:100%;filter:drop-shadow(0 0 16px rgba(167,139,250,.55)) drop-shadow(0 8px 18px rgba(80,50,160,.35));overflow:visible}
.mascot .eyes{transform-origin:40px 41px}

/* header */
.header{display:grid;grid-template-columns:auto 1fr auto auto;gap:16px;align-items:center;padding:6px 0 14px}
.ident h1{font-size:26px;font-weight:700;letter-spacing:-.03em;line-height:1;color:#f4f7ff;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ident h1 .brand{background:linear-gradient(180deg,#ffffff,#dbe7ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.ident .row2{margin-top:8px;display:flex;align-items:center;gap:12px}
.running{display:inline-flex;align-items:center;gap:8px;color:var(--green);font-size:13px;font-weight:500}
.running .dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);display:block}
.running.is-halt{color:var(--red)}
.running.is-halt .dot{background:var(--red);box-shadow:0 0 8px var(--red)}
.badge{display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:999px;font-size:11px;font-weight:600;
  background:rgba(167,139,250,.16);color:#d8c9ff;border:1px solid rgba(196,181,253,.35)}
.balance{text-align:right}
.balance .amt{font-size:40px;font-weight:700;letter-spacing:-.04em;line-height:1;color:#f7fbff;text-shadow:0 0 24px rgba(180,200,255,.18)}
.balance .cap{margin-top:4px;font-size:11px;color:var(--muted)}
.toggle-wrap{display:flex;flex-direction:column;align-items:center;gap:6px;padding:0 6px}
.toggle{
  width:64px;height:30px;border-radius:999px;background:rgba(94,234,212,.15);
  border:1px solid rgba(94,234,212,.4);position:relative;display:flex;align-items:center;padding:3px;
}
.toggle.is-live{background:rgba(251,113,133,.18);border-color:rgba(251,113,133,.5)}
.toggle .knob{width:24px;height:24px;border-radius:50%;background:#5eead4;box-shadow:0 0 10px rgba(94,234,212,.6);
  transition:transform .2s,background .2s;transform:translateX(0)}
.toggle.is-live .knob{transform:translateX(32px);background:#fb7185;box-shadow:0 0 10px rgba(251,113,133,.6)}
.toggle-lab{font-size:10px;letter-spacing:.1em;color:var(--muted);font-weight:700}

/* cards / panels */
.card,.panel{
  background:linear-gradient(180deg,rgba(18,26,46,.78),rgba(10,16,30,.88));
  border:1px solid var(--stroke);border-radius:16px;
  padding:14px 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 8px 20px rgba(0,0,0,.18);
}
.sec-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px}
.sec-h h2{font-size:12px;font-weight:700;letter-spacing:.12em;color:#c9d6ea}
.sec-h .side{font-size:11px;color:var(--dim)}
.pill{font-size:10px;font-weight:700;letter-spacing:.08em;padding:3px 8px;border-radius:999px;
  border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:var(--dim);text-transform:uppercase}
.pill.ok{color:var(--green);border-color:rgba(74,222,128,.35);background:rgba(74,222,128,.12)}
.pill.wait{color:var(--amber);border-color:rgba(251,191,36,.35);background:rgba(251,191,36,.1)}
.pill.bad{color:var(--red);border-color:rgba(248,113,113,.35);background:rgba(248,113,113,.12)}

.slots{display:grid;grid-template-columns:1.35fr .85fr;gap:14px;margin-bottom:14px}
.ai-slot{border-color:rgba(167,139,250,.45);box-shadow:0 0 0 1px rgba(167,139,250,.15),0 0 28px rgba(167,139,250,.12),inset 0 1px 0 rgba(255,255,255,.04)}
.grid-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.grid-form .full{grid-column:1/-1}
.lab{font-size:11px;color:var(--muted);margin-bottom:5px;letter-spacing:.04em}
.in,.sel{
  width:100%;background:rgba(8,12,24,.75);border:1px solid rgba(140,200,210,.16);
  border-radius:9px;color:var(--text);padding:8px 10px;font-size:12px;outline:none;
}
.in:focus,.sel:focus{border-color:rgba(167,139,250,.55)}
.slot-actions{display:flex;gap:8px;align-items:flex-end;justify-content:flex-end;margin-top:4px}
.ex-toggle{display:flex;gap:6px}
.ex-toggle button{
  flex:1;padding:8px 10px;border-radius:9px;border:1px solid rgba(140,200,210,.16);
  background:rgba(8,12,24,.6);color:var(--muted);font-size:12px;font-weight:600;
}
.ex-toggle button.on{background:rgba(94,234,212,.12);border-color:rgba(94,234,212,.45);color:var(--teal)}

/* live flow */
.flow{margin-bottom:14px;padding:12px 16px 16px}
.flow-track{position:relative;height:100px;margin-top:8px}
.flow-rail{position:absolute;left:48px;right:48px;top:28px;height:0;border-top:2px dotted rgba(120,180,190,.28)}
.nodes{position:absolute;inset:0;display:flex;justify-content:space-between;align-items:flex-start;padding:0 4px}
.node{width:92px;display:flex;flex-direction:column;align-items:center;position:relative;z-index:2}
.node-orb{
  width:50px;height:50px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 35% 30%,rgba(30,42,64,.95),rgba(10,16,28,.95));
  border:1.5px solid rgba(140,200,210,.22);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 4px 10px rgba(0,0,0,.3);
  color:#9eb0c8;
}
.node-orb svg{width:20px;height:20px}
.node .lab{margin-top:6px;font-size:10px;font-weight:700;letter-spacing:.08em;color:#9aabc4}
.node .cnt{margin-top:1px;font-size:10px;color:var(--dim)}
.node.is-on .node-orb{
  border-color:rgba(var(--nc),1);color:rgb(var(--nc));
  box-shadow:0 0 0 4px rgba(var(--nc),.22),0 0 22px rgba(var(--nc),.7);
}
.node.is-on .lab{color:#eef4ff}
.node.is-done .node-orb{border-color:rgba(var(--nc),.45);color:rgb(var(--nc))}
.node.is-drop .node-orb{border-color:var(--red);color:var(--red)}
.packet{
  position:absolute;z-index:5;top:8px;transform:translateX(-50%);
  display:flex;align-items:center;gap:5px;
  background:linear-gradient(180deg,#fff3c4,#f5c84b);
  color:#2a1d04;font-size:10.5px;font-weight:700;letter-spacing:.04em;
  padding:3px 8px 3px 6px;border-radius:999px;
  box-shadow:0 0 16px rgba(251,191,36,.75),0 4px 10px rgba(0,0,0,.35);
  white-space:nowrap;pointer-events:none;
  transition:left .7s cubic-bezier(.22,.8,.28,1);
}
.packet .dot{width:7px;height:7px;border-radius:50%;background:#fff;box-shadow:0 0 6px #fff;display:block}

/* mid */
.mid{display:grid;grid-template-columns:1.4fr .7fr;gap:14px;margin-bottom:14px;min-height:340px}
.chart-box{min-height:340px;display:flex;flex-direction:column}
#tvchart{flex:1;min-height:280px;width:100%}
.chart-tools{display:flex;gap:8px;align-items:center}
.chart-tools select{background:rgba(8,12,24,.7);color:var(--text);border:1px solid var(--stroke);border-radius:8px;padding:4px 8px;font-size:11px}
.side-col{display:flex;flex-direction:column;gap:12px}
.kv{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid rgba(140,200,210,.08);font-size:12px}
.kv:last-child{border-bottom:0}
.kv span{color:var(--muted)}
.kv b{font-weight:600}
.side-long{color:var(--green)}
.side-short{color:var(--red)}
.pnl{font-size:22px;font-weight:700;margin-top:8px}
.pnl.up{color:var(--green)}
.pnl.down{color:var(--red)}

/* bottom */
.bottom{display:grid;grid-template-columns:1.05fr 1.15fr .7fr 1.1fr;gap:14px}
.agents{display:flex;flex-direction:column;gap:7px}
.acard{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;
  background:rgba(8,12,24,.5);border:1px solid rgba(140,200,210,.1);border-radius:10px;padding:7px 10px}
.acard .ico{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:rgba(var(--ac),.15);color:rgb(var(--ac))}
.acard .ico svg{width:14px;height:14px}
.acard .nm{font-size:11px;font-weight:700;letter-spacing:.08em}
.acard .ds{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl{width:100%;border-collapse:collapse;font-size:11px}
.tbl th{text-align:left;color:var(--dim);font-weight:600;padding:4px 6px;border-bottom:1px solid rgba(140,200,210,.1)}
.tbl td{padding:5px 6px;border-bottom:1px solid rgba(140,200,210,.06);white-space:nowrap}
.kpi{display:flex;flex-direction:column;gap:12px;padding:6px 4px}
.kpi .k{color:var(--muted);font-size:11px}
.kpi .v{font-size:28px;font-weight:700;letter-spacing:-.03em}
.kpi a{color:var(--cyan);font-size:11px}
.log-box{font-size:11px;line-height:1.55;color:#9eb0c8;height:230px;overflow:auto;font-variant-ligatures:none}
.log-box .l{white-space:nowrap}
.log-box .t{color:var(--dim);margin-right:6px}
.log-box .a{color:var(--purple);margin-right:6px}
.note{margin-top:16px;text-align:center;color:var(--dim);font-size:11px}
.msg{font-size:11px;color:var(--muted);min-height:14px;margin-top:6px}
.msg.ok{color:var(--green)}
.msg.bad{color:var(--red)}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;place-items:center;z-index:50;backdrop-filter:blur(4px)}
.modal-bg.show{display:grid}
.modal{width:min(420px,92vw);background:linear-gradient(180deg,#161e32,#0b101c);border:1px solid var(--stroke);
  border-radius:16px;padding:22px;box-shadow:0 20px 50px rgba(0,0,0,.5)}
.modal h3{margin-bottom:10px;font-size:16px}
.modal p{color:var(--muted);font-size:13px;line-height:1.5;margin-bottom:18px}
.modal .row{display:flex;gap:8px;justify-content:flex-end}

@media (max-width:1100px){
  .slots,.mid,.bottom{grid-template-columns:1fr}
  .header{grid-template-columns:auto 1fr; }
  .balance{grid-column:1/-1;text-align:left}
}
