:root{
  --bg:#080c12; --panel:#0f1620; --panel2:#141d29; --line:#1f2b39;
  --ink:#e8eef5; --ink2:#a9b7c7; --muted:#6f8195;
  --up:#3fd68a; --down:#ff5d6c; --warn:#ffcc4d; --info:#4aa8ff;
  --dev:#ffcc4d; --sniper:#ff9f45; --kol:#41d9ff; --call:#a78bfa;
  --r:14px;
  font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);overflow-x:hidden}
body{min-height:100vh;background:radial-gradient(1000px 420px at 50% -8%,#14222a 0,transparent 65%),var(--bg)}
a{color:var(--info);text-decoration:none} a:hover{text-decoration:underline}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86em}
.muted{color:var(--muted)} .tiny{font-size:12px}
.up,.g{color:var(--up)} .down,.r{color:var(--down)} .warn{color:var(--warn)}
[hidden]{display:none!important}
button{font:inherit;cursor:pointer;border:0;border-radius:10px;background:var(--up);color:#06170e;font-weight:800;padding:10px 18px}
button:hover{filter:brightness(1.1)}
button.ghost{background:transparent;color:var(--ink2);border:1px solid var(--line);font-weight:500}
button.xs{padding:2px 8px;font-size:11px;border-radius:6px}

.top{display:flex;align-items:center;gap:16px;padding:12px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(8,12,18,.88);backdrop-filter:blur(8px);z-index:20}
.brand{display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:800;font-size:20px}
.brand:hover{text-decoration:none}
.logo{width:30px;height:30px}
.search{display:flex;gap:8px;flex:1;max-width:620px}
.search input{flex:1;min-width:0;background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:10px 12px;font:13px ui-monospace,Menlo,monospace}
.search input:focus{outline:2px solid var(--up);outline-offset:-1px}
.search.big input{padding:15px 16px;font-size:15px}
.search.big button{padding:15px 26px;font-size:16px}
.links{display:flex;gap:14px;margin-left:auto;font-size:13px}
.links a{color:var(--ink2)}
body.landing .top .search{visibility:hidden}

main{padding:20px;max-width:1280px;margin:0 auto}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
h3{font-size:15px;margin:0 0 10px;display:flex;align-items:center;gap:8px}
h3 small{font-weight:400;font-size:12px}
.cardhead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.cardhead h3{margin:0}

/* landing */
.hero{text-align:center;padding:34px 0 24px;max-width:780px;margin:0 auto}
.hero h1{font-size:clamp(36px,5.6vw,64px);line-height:1.02;margin:0 0 18px;letter-spacing:-.6px}
.lead{color:var(--ink2);font-size:17px;line-height:1.6;margin:0 auto 22px;max-width:660px}
.trend{margin-top:18px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;justify-content:center}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:5px 11px 5px 5px;color:var(--ink);font-size:13px;cursor:pointer}
.chip:hover{border-color:var(--ink2);text-decoration:none}
.chip img{width:22px;height:22px;border-radius:50%;object-fit:cover;background:#222}
.chip small{color:var(--muted)}
.chips.small{margin:0;justify-content:flex-end}
.chips.small .chip{padding:3px 10px;font-size:12px;font-weight:500;background:var(--panel2);color:var(--ink2)}
.chips.small .chip.on{color:var(--ink);border-color:var(--ink2)}
.demo{margin:10px 0 30px}

/* token bar */
.tokenbar{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-bottom:14px}
.timg{width:46px;height:46px;border-radius:12px;object-fit:cover;background:#1a2430}
.tname b{font-size:18px}
.ca{display:flex;align-items:center;gap:6px;margin-top:3px}
.ca code{color:var(--muted)}
.kv{display:flex;flex-direction:column;gap:2px}
.kv span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.kv b{font-size:17px} .kv small{font-size:12px}
.tlinks{display:flex;gap:12px;font-size:13px}
.live{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--up);animation:ping 1.6s infinite}
.live.stale .dot{background:var(--muted);animation:none}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(63,214,138,.6)}100%{box-shadow:0 0 0 10px rgba(63,214,138,0)}}

/* right now */
.now{margin-bottom:14px}
.headline{font-size:clamp(19px,2.3vw,25px);font-weight:800;line-height:1.3;margin-bottom:14px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.stat{background:var(--panel2);border-radius:10px;padding:10px 12px;border-top:3px solid var(--line)}
.stat.r{border-top-color:var(--down)} .stat.g{border-top-color:var(--up)} .stat.y{border-top-color:var(--warn)}
.stat span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.stat b{display:block;font-size:22px;margin:3px 0 2px;color:var(--ink)}
.stat small{font-size:12px;color:var(--ink2)}

/* holder map */
.main{display:grid;grid-template-columns:1fr 330px;gap:14px;align-items:start}
.map{position:relative;height:500px;border-radius:10px;overflow:hidden;background:#0b1118}
.tile{position:absolute;border:2px solid var(--panel);border-radius:6px;overflow:hidden;padding:5px 7px;cursor:pointer;transition:left .5s,top .5s,width .5s,height .5s,background-color .5s;color:#fff;line-height:1.15;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.tile>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile.odd{background-image:repeating-linear-gradient(135deg,transparent 0 6px,rgba(255,255,255,.06) 6px 9px)}
.tile.out{border-style:dashed;border-color:#3a4a5c}
.mapempty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.sortrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-2px 0 10px}
.sortrow .chips.small{justify-content:flex-start}
select{background:var(--panel2);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:5px 8px;font:inherit;font-size:13px}
.sw.odd{background:#242c37 repeating-linear-gradient(135deg,transparent 0 3px,rgba(255,255,255,.18) 3px 5px)}
th.sortable{cursor:pointer;user-select:none} th.sortable:hover,th.on{color:var(--ink)}
tr.outrow td{opacity:.65}
.tile.dim{opacity:.18}
.tile .p{font-weight:800;letter-spacing:-.3px}
.tile .v{font-size:12px;font-weight:600;opacity:.92;margin-top:1px}
.tile .w{font-size:10.5px;opacity:.65;font-family:ui-monospace,Menlo,monospace;margin-top:2px}
.tile .bd{display:flex;gap:3px;margin-bottom:2px;flex-wrap:wrap}
.tile .bd i{font-style:normal;font-size:9.5px;font-weight:800;padding:0 4px;border-radius:3px;background:rgba(6,12,18,.82);color:var(--ink)}
.tile .bd i.dev{color:var(--dev)} .tile .bd i.sniper,.tile .bd i.bundler{color:var(--sniper)} .tile .bd i.kol{color:var(--kol)} .tile .bd i.sell{color:var(--down)} .tile .bd i.add{color:var(--up)}
.tile.selling{box-shadow:inset 0 0 0 3px var(--down)}
.tile .drain{position:absolute;left:0;bottom:0;height:4px;background:rgba(6,12,18,.75)}
.tile.flash-b{animation:fb 1.1s} .tile.flash-s{animation:fs 1.1s}
@keyframes fb{0%{box-shadow:inset 0 0 0 4px #b6ffd6}100%{box-shadow:inset 0 0 0 0 transparent}}
@keyframes fs{0%{box-shadow:inset 0 0 0 4px #ff2c42}100%{box-shadow:inset 0 0 0 0 transparent}}
.tile:hover{border-color:#fff}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:12px;color:var(--ink2);align-items:center}
.legend.inline{margin:0}
.scale{display:inline-flex;align-items:center;gap:6px}
.scale i{display:inline-block;width:150px;height:10px;border-radius:5px}
.sw{display:inline-block;width:18px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:4px}
.mk{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:9px;font-weight:800;font-style:normal;color:#0b1118;margin-right:4px}
.mk.dev{background:var(--dev)} .mk.sniper{background:var(--sniper)} .mk.kol{background:var(--kol)} .mk.call{background:var(--call)}
#pending{margin:8px 0 0}

/* cast */
.cast{display:grid;gap:14px}
.who h3{margin-bottom:6px}
.who .big{font-size:17px;font-weight:800;margin-bottom:6px;line-height:1.3}
.who .line{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--ink2);padding:3px 0}
.who .line b{color:var(--ink);font-weight:600;text-align:right}
.who .mini{font-size:12.5px;padding:5px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:8px}
.who .mini:first-of-type{border-top:0}
.who .empty{color:var(--muted);font-size:13px;line-height:1.5}

.timeline{margin-top:14px}
.spark{width:100%;height:190px;display:block}
.spark text{font:10px ui-sans-serif,system-ui;fill:var(--muted)}

.two{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.ic{width:10px;height:10px;border-radius:50%;display:inline-block}
.ic.r{background:var(--down)} .ic.g{background:var(--up)}
.row{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:9px 0;border-top:1px solid var(--line);font-size:13.5px}
.row:first-child{border-top:0}
.row .sub{grid-column:1/-1;font-size:12px;color:var(--muted)}
.row .bar{grid-column:1/-1;height:5px;border-radius:3px;background:#1a2532;overflow:hidden}
.row .bar i{display:block;height:100%;border-radius:3px}
.empty{color:var(--muted);font-size:13.5px;padding:6px 0;line-height:1.5}
.tag{display:inline-block;font-size:10px;font-weight:800;padding:1px 6px;border-radius:5px;margin-left:5px;vertical-align:1px;border:1px solid var(--line);color:var(--ink2)}
.tag.dev{color:var(--dev);border-color:var(--dev)} .tag.sniper,.tag.bundler{color:var(--sniper);border-color:var(--sniper)} .tag.kol{color:var(--kol);border-color:var(--kol)}

.flow{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:8px}
.flow div{font-size:12px;color:var(--ink2)}
.flow .b{display:flex;height:7px;border-radius:4px;overflow:hidden;background:#1a2532;margin-top:4px;gap:2px}
.tape{max-height:360px;overflow:auto;font-size:13px}
.tr{display:grid;grid-template-columns:44px 1fr auto 44px;gap:8px;padding:5px 0;border-bottom:1px solid #16212d}
.tr .s{font-weight:800;font-size:11px;padding-top:2px}
.tr.b .s{color:var(--up)} .tr.s .s{color:var(--down)}
.tr.new{animation:flash 1.2s} @keyframes flash{from{background:#1d2b3a}}
.tr span:last-child{text-align:right}
details.more summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
details.more summary h3{margin:0}
details.more summary::after{content:"show ▾";color:var(--muted);font-size:12px}
details.more[open] summary::after{content:"hide ▴"}
.tablewrap{overflow:auto;max-height:440px;margin-top:10px}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{position:sticky;top:0;background:var(--panel);text-align:left;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:6px 8px;border-bottom:1px solid #16212d;white-space:nowrap}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}

.tip{position:fixed;z-index:40;pointer-events:none;min-width:220px;max-width:290px;background:rgba(10,16,24,.97);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.55;box-shadow:0 10px 30px rgba(0,0,0,.5)}
.tip .h{font-weight:700;margin-bottom:4px}
.tip .l{display:flex;justify-content:space-between;gap:12px;color:var(--ink2)}
.tip .l b{color:var(--ink);font-weight:600}
.tip .say{margin-top:6px;color:var(--ink);font-weight:600}

.err{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#3a1219;border:1px solid var(--down);color:#ffd6db;padding:12px 18px;border-radius:12px;z-index:30;max-width:90vw}
footer{max-width:1280px;margin:10px auto 0;padding:0 20px 40px}
.own{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.own .t{font-weight:700}
.own code{word-break:break-all}

@media (max-width:1000px){ .main{grid-template-columns:1fr} .cast{grid-template-columns:1fr 1fr} }
@media (max-width:720px){
  .top{flex-wrap:wrap}
  .top .search{order:3;max-width:none;flex-basis:100%}
  body.landing .top .search{display:none}
  main{padding:12px}
  .stats{grid-template-columns:1fr 1fr}
  .cast,.two,.flow{grid-template-columns:1fr}
  .map{height:420px}
  .chips.small{justify-content:flex-start}
}
