:root{
  --bg:#0b0e11; --bg2:#0f141a; --card:#131a22; --card2:#172029; --line:#232e39;
  --fg:#e9eef3; --mut:#8a97a4; --acc:#4ea1ff; --acc2:#2b6fd6;
  --ok:#31d17e; --bad:#ff5567; --warn:#ffb733; --fire:#ff6a3d;
  --shadow:0 6px 24px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{margin:0}
body{background:radial-gradient(1200px 600px at 80% -10%,#122033 0,var(--bg) 55%);color:var(--fg);
  font:14px/1.55 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;min-height:100vh}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.muted{color:var(--mut)} .sm{font-size:12.5px} .xs{font-size:11.5px}
.err{color:var(--bad)} .warn{color:var(--warn)} .big{font-size:20px}
h2{font-size:14px;letter-spacing:.02em;margin:0;text-transform:uppercase;color:#cdd8e2}

/* inputs & buttons */
input,select{width:100%;margin-top:.3rem;padding:.55rem .6rem;border-radius:9px;border:1px solid var(--line);
  background:#0a0f14;color:var(--fg);font-size:14px;outline:none;transition:border-color .15s}
input:focus,select:focus{border-color:var(--acc)}
label{display:block;margin:.5rem 0;font-size:12.5px;color:var(--mut)}
button{cursor:pointer;border:1px solid var(--line);background:#1b242e;color:var(--fg);border-radius:9px;
  padding:.55rem .9rem;font-size:13.5px;font-weight:600;transition:.15s}
button:hover{border-color:var(--acc);transform:translateY(-1px)}
button:active{transform:translateY(0)}
button:disabled{opacity:.45;cursor:not-allowed;transform:none}
button.ghost{background:transparent;font-weight:500}
button.ghost.sm{padding:.3rem .6rem;font-size:12px}
button.ghost.xs{padding:.15rem .5rem;font-size:12px}
button.primary{background:linear-gradient(180deg,var(--acc),var(--acc2));border-color:transparent;color:#fff}
button.block{width:100%}
button.kill{background:linear-gradient(180deg,#3a1418,#2a0e11);border:1px solid #6e2630;color:#ff8b96;font-size:15px;font-weight:800;padding:.6rem 1.3rem;letter-spacing:.03em}
button.kill:hover{background:linear-gradient(180deg,#571a20,#3a1216);border-color:var(--bad);color:#fff}
button.fire{background:linear-gradient(180deg,var(--fire),#d8431f);border-color:transparent;color:#fff;font-weight:800}
button.danger{background:#2a1216;border-color:#7a2530;color:#ff9aa4}
button.danger:hover{background:#48191d;border-color:var(--bad);color:#fff}

/* login */
.auth{min-height:100vh;display:grid;place-items:center;padding:1rem}
.login-card{width:min(370px,94vw);background:var(--card);border:1px solid var(--line);border-radius:18px;
  padding:2rem 1.6rem;box-shadow:var(--shadow)}
.logo{font-size:20px;font-weight:800;letter-spacing:.06em}
.login-card .sub{color:var(--mut);margin:.2rem 0 1.2rem}
.login-card button{margin-top:.8rem}

/* topbar */
.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 1.1rem;
  border-bottom:1px solid var(--line);background:rgba(11,14,17,.85);backdrop-filter:blur(8px);position:sticky;top:0;z-index:10}
.brand{font-weight:800;letter-spacing:.05em}
.top-right{display:flex;gap:.55rem;align-items:center}
.chip{background:#1b242e;border:1px solid var(--line);border-radius:999px;padding:.15rem .6rem;font-size:12px;color:#cdd8e2}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok);margin-left:.3rem;box-shadow:0 0 8px var(--ok)}
.dot.off{background:var(--bad);box-shadow:0 0 8px var(--bad)}

/* kill bar */
.killbar{display:flex;gap:1rem;align-items:center;padding:.7rem 1.1rem;background:linear-gradient(180deg,#170e10,#120c0d);
  border-bottom:1px solid #35191d;position:sticky;top:47px;z-index:9}
.spacer-right{margin-left:auto}

/* layout */
/* Explicit fixed columns — a card growing pushes only the cards BELOW it in its own
   column, never reshuffles across columns (that cross-column jump on load looked bad). */
.wrap{max-width:1500px;margin:0 auto;padding:1.1rem;display:grid;grid-template-columns:1fr 1fr 1fr;gap:1.1rem;align-items:start}
.col{display:flex;flex-direction:column;gap:1.1rem;min-width:0}
.logwrap{max-width:1500px;margin:0 auto;padding:0 1.1rem 1.4rem}
@media(max-width:1200px){.wrap{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.wrap{grid-template-columns:1fr}.killbar{flex-wrap:wrap}}

/* cards */
.card{background:linear-gradient(180deg,var(--card),var(--bg2));border:1px solid var(--line);border-radius:16px;
  padding:1rem 1.1rem;box-shadow:var(--shadow)}
.card.accent{border-color:#294056}
.card.sell{border-color:#1f4536}
.card-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}

/* status */
.stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.7rem}
@media(max-width:520px){.stat-grid{grid-template-columns:1fr 1fr}}
.stat{background:#0d131a;border:1px solid var(--line);border-radius:11px;padding:.55rem .65rem;display:flex;flex-direction:column;gap:.2rem}
.stat span{color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.stat b{font-size:15px}
.rowline{display:flex;gap:.5rem;justify-content:space-between;align-items:center;margin-top:.55rem;overflow:hidden}
.rowline .mono{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.copyable{cursor:pointer}
.copyable:hover{color:var(--acc)}

/* pills */
.pill{padding:.1rem .55rem;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.pill.ok{background:rgba(49,209,126,.13);color:var(--ok)}
.pill.bad{background:rgba(255,85,103,.14);color:var(--bad)}
.pill.warn{background:rgba(255,183,51,.14);color:var(--warn)}

/* config */
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .8rem;margin-bottom:.7rem}
.field-grid label{margin:.2rem 0}

/* launch */
.inline{display:flex;gap:.7rem;align-items:center;margin:.6rem 0}
.problems{color:var(--bad);font-size:12.5px;white-space:pre-wrap;margin:.3rem 0 0;max-height:120px;overflow:auto}
.problems:empty{display:none}
.danger-zone{margin-top:.8rem;border:1px solid #35191d;border-radius:12px;padding:.3rem .8rem .8rem;background:#120c0d}
.danger-zone summary{cursor:pointer;color:#ff9aa4;font-weight:700;padding:.5rem 0;list-style:none}
.danger-zone summary::-webkit-details-marker{display:none}

/* sell */
.sell-value{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.6rem;margin:.7rem 0;background:#0c1512;border:1px solid #1f4536;border-radius:12px;padding:.7rem}
.sell-value b{display:block;margin-top:.15rem;color:#c7f0d8}
.sell-value .big{color:var(--ok)}
.pct-row{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:.6rem}
.sell-pct{background:#123024;border-color:#1f4536;color:#8ff0bf}
.sell-pct:hover{border-color:var(--ok);color:#fff}
.inline-lbl{margin:.3rem 0}

/* wallets table */
.table-scroll{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:11px}
/* fixed height (not max) so the card is the SAME size while loading and loaded —
   no vertical jump when the 20 rows arrive */
.table-scroll.tall{height:620px;max-height:620px}
.wdot{font-size:10px;vertical-align:middle}
.wdot.ok{color:var(--ok)} .wdot.bad{color:var(--bad)} .wdot.warn{color:var(--warn)}
.wtable{width:100%;border-collapse:collapse;font-size:12.5px}
.wtable th{position:sticky;top:0;background:#0d131a;color:var(--mut);text-align:left;padding:.45rem .6rem;font-weight:600;border-bottom:1px solid var(--line)}
.wtable td{padding:.4rem .6rem;border-bottom:1px solid #1a232c}
.wtable tr:hover td{background:#0f161d}
.wtable .addr{font-family:ui-monospace,Menlo,monospace}
.wtable .low{color:var(--warn)}

/* tracked spammers */
.card.track{border-color:#3a3355}
.card-actions{display:flex;gap:.35rem;align-items:center}

/* modal */
.modal{position:fixed;inset:0;background:rgba(4,6,8,.72);display:grid;place-items:center;z-index:40;padding:1rem}
.modal-card{width:min(420px,94vw);background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1.2rem 1.3rem;box-shadow:var(--shadow)}
.modal-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:.6rem}
.modal-card .block{margin-top:.8rem}
.track-list{display:flex;flex-direction:column;gap:.45rem;max-height:360px;overflow-y:auto;padding-right:.2rem}
.track-row{display:flex;align-items:flex-start;gap:.6rem;background:#0d131a;border:1px solid var(--line);border-radius:10px;padding:.5rem .6rem}
.track-main{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1}
.track-main b{font-size:13px}
.track-addr{color:var(--mut);cursor:pointer;word-break:break-all;line-height:1.35}
.track-addr:hover{color:var(--acc)}
.track-stats{display:flex;align-items:center;gap:.4rem;white-space:nowrap;flex-shrink:0;padding-top:.1rem}
.track-del{color:var(--mut);padding:.1rem .4rem}
.track-del:hover{color:var(--bad);border-color:var(--bad)}

/* fleet */
.fleet{display:flex;flex-direction:column;gap:.4rem}
.fleet .fbox{display:flex;justify-content:space-between;align-items:center;background:#0d131a;border:1px solid var(--line);border-radius:10px;padding:.45rem .7rem}

/* log */
.log{background:#080b0e;border:1px solid var(--line);border-radius:12px;padding:.8rem;height:260px;overflow:auto;
  white-space:pre-wrap;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;color:#bfe9cd;margin:0}

/* toast */
.toast{position:fixed;bottom:1.3rem;left:50%;transform:translateX(-50%);background:#172029;border:1px solid var(--acc);
  padding:.7rem 1.1rem;border-radius:12px;z-index:50;box-shadow:var(--shadow);max-width:90vw}
