:root{
  --bg:#0b0e14;
  --panel:#121723;
  --panel2:#1a2233;
  --txt:#eef2fb;
  --mut:#8b96ad;
  --line:#222b3d;
  --cyan:#22d3ee;
  --blue:#3b82f6;
  --purple:#8b5cf6;
  --violet:#a855f7;
  --grad:linear-gradient(135deg,#22d3ee 0%,#3b82f6 45%,#8b5cf6 100%);
  --grad-soft:linear-gradient(135deg,rgba(34,211,238,.16) 0%,rgba(139,92,246,.16) 100%);
  --green:#16c784;
  --red:#ea3943;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--bg);color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  overscroll-behavior:none;-webkit-font-smoothing:antialiased;}
#app{max-width:1180px;margin:0 auto;min-height:100vh;display:grid;
  grid-template-columns:230px 1fr 300px;gap:0;}
/* sidebar */
.sidebar{background:var(--panel);border-right:1px solid var(--line);padding:20px 14px;
  display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;}
.logo{font-weight:800;font-size:22px;display:flex;align-items:center;gap:9px;letter-spacing:.5px;}
.logo-mark{width:30px;height:30px;border-radius:8px;background:var(--grad);color:#0b0e14;
  display:flex;align-items:center;justify-content:center;font-weight:900;font-size:17px;flex-shrink:0;}
.logo{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;}
.sidebar nav{display:flex;flex-direction:column;gap:4px;}
.nav-item{background:none;border:none;color:var(--mut);font-size:15px;font-weight:600;
  text-align:left;padding:11px 13px;border-radius:12px;cursor:pointer;display:flex;align-items:center;gap:11px;}
.nav-item .ni{font-size:17px;width:20px;text-align:center;display:flex;align-items:center;justify-content:center;}
.nav-item .ni svg{width:19px;height:19px;display:block;}
.nav-item.active{background:var(--grad);color:#0b0d0a;}
.bal{margin-top:auto;font-size:13px;color:var(--mut);}
.bal b{color:var(--cyan);}
/* main */
.main{padding:0 18px;border-right:1px solid var(--line);min-height:100vh;}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 4px 14px;position:sticky;top:0;background:var(--bg);z-index:5;}
.topbar h1{font-size:24px;font-weight:800;margin:0;}
.top-actions{display:flex;gap:9px;align-items:center;}
.post-btn{background:var(--grad);border:none;border-radius:12px;color:#0b0d0a;font-weight:800;
  font-size:14px;padding:9px 18px;cursor:pointer;}
.post-btn:active{transform:scale(.96);}
.scope{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:10px;
  padding:8px 10px;font-size:13px;}
.query-wrap{padding:0 4px 14px;}
#query{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:13px;
  color:var(--txt);font-size:15px;padding:12px 14px;outline:none;}
#query:focus{border-color:var(--cyan);}
.feed{display:flex;flex-direction:column;gap:12px;padding-bottom:40px;}
/* discover pills + token rows */
.pills{display:flex;gap:8px;padding:10px 14px;overflow-x:auto;}
.pill{border:1px solid var(--line);background:var(--panel);color:var(--mut);border-radius:20px;
  padding:7px 16px;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;}
.pill.active{background:var(--grad);color:#0b0d0a;border-color:var(--cyan);}
.trow{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);cursor:pointer;}
.trow:hover{background:var(--panel);}
.trow .timg{width:38px;height:38px;border-radius:50%;flex-shrink:0;background:var(--panel2);object-fit:cover;position:relative;}
.trow .timg.txt{display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--cyan);}
.trow .net-badge{position:static;width:15px;height:15px;flex-shrink:0;}
.trow .tinfo{flex:1;min-width:0;}
.trow .tsym{font-weight:800;font-size:15px;}
.trow .tname{font-size:12.5px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.trow .tspark{flex-shrink:0;}
.trow .tright{text-align:right;flex-shrink:0;min-width:74px;}
.trow .tmc{font-size:13px;font-weight:700;}
.trow .tchg{font-size:12.5px;font-weight:700;}
.up{color:var(--green);}
.down{color:var(--red2);}
.post{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:15px;animation:pop .25s both;}
@keyframes pop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.post-head{display:flex;align-items:center;gap:11px;margin-bottom:9px;}
.av{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-weight:800;color:#0b0d0a;font-size:16px;flex-shrink:0;}
.pname{font-weight:700;font-size:15px;}
.phandle{font-size:12.5px;color:var(--mut);}
.follow{margin-left:auto;background:var(--panel2);border:1px solid var(--line);color:var(--cyan);
  font-weight:700;font-size:12.5px;padding:6px 14px;border-radius:20px;cursor:pointer;}
.follow.on{background:var(--grad);color:#0b0d0a;border-color:var(--cyan);}
.ptext{font-size:14.5px;line-height:1.45;margin-bottom:11px;}
.ptext .cash{color:var(--cyan);font-weight:700;}
.cmt-stream{max-height:96px;overflow-y:auto;margin:2px 0 11px;padding:8px 10px;
  background:var(--bg);border:1px solid var(--line);border-radius:11px;scrollbar-width:none;}
.cmt-stream::-webkit-scrollbar{display:none;}
.cmt{font-size:12.5px;line-height:1.4;color:var(--mut);padding:3px 0;}
.cmt b{color:var(--cyan);font-weight:700;margin-right:5px;}
.tk{display:flex;align-items:center;gap:11px;background:var(--panel2);border:1px solid var(--line);
  border-radius:14px;padding:11px 13px;margin-bottom:9px;}
.tk-ico-wrap{position:relative;flex-shrink:0;}
.tk-ico{width:38px;height:38px;border-radius:50%;background:var(--bg);display:flex;align-items:center;
  justify-content:center;font-weight:800;font-size:14px;overflow:hidden;flex-shrink:0;}
.tk-ico img{width:100%;height:100%;object-fit:cover;}
.tk-meta{flex:1;min-width:0;}
.tk-sym{font-weight:800;font-size:15px;}
.tk-mc{font-size:11.5px;color:var(--mut);}
.tk-spark{flex-shrink:0;}
.spark{width:74px;height:30px;flex-shrink:0;}
.tk-right{text-align:right;flex-shrink:0;}
.tk-price{font-weight:700;font-size:14.5px;}
.tk-chg{font-size:12px;font-weight:700;}
.net-badge{position:absolute;right:-4px;bottom:-4px;width:16px;height:16px;border-radius:50%;
  background:var(--bg);border:1px solid var(--line);object-fit:contain;padding:1px;}
.up{color:var(--green);}
.down{color:var(--red);}
.post-foot{display:flex;gap:18px;color:var(--mut);font-size:13px;padding-top:4px;}
.post-foot span{cursor:pointer;}
.time{margin-left:auto;font-size:12px;color:var(--mut);}
/* right */
.right{padding:18px 14px;display:flex;flex-direction:column;gap:14px;}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:14px;}
.panel-h{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);margin-bottom:11px;font-weight:700;}
.trend-list{display:flex;flex-direction:column;gap:9px;}
.ti{display:flex;align-items:center;gap:10px;cursor:pointer;}
.ti-ico{width:26px;height:26px;border-radius:50%;background:var(--panel2);display:flex;align-items:center;
  justify-content:center;font-size:11px;font-weight:800;overflow:hidden;flex-shrink:0;}
.ti-ico img{width:100%;height:100%;object-fit:cover;}
.ti-name{font-size:13.5px;font-weight:600;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ti-chg{font-size:12.5px;font-weight:700;}
/* profile */
.profile{text-align:center;padding:18px 4px;}
.p-av{width:84px;height:84px;border-radius:22px;margin:0 auto 12px;display:flex;align-items:center;
  justify-content:center;font-weight:900;font-size:34px;color:#0b0d0a;
  background:linear-gradient(135deg,#22d3ee,#8b5cf6);}
.p-name{font-size:20px;font-weight:800;}
.p-handle{color:var(--mut);font-size:14px;margin-bottom:14px;}
.connect{background:var(--grad);border:none;border-radius:12px;color:#0b0d0a;font-weight:800;
  font-size:14px;padding:11px 20px;cursor:pointer;margin-bottom:16px;}
.connect.on{background:var(--panel2);color:var(--cyan);border:1px solid var(--line);}
.p-synced{font-size:12px;color:var(--green);margin-bottom:14px;font-weight:700;}
.p-sync{font-size:12px;color:var(--mut);margin-bottom:14px;}
.stats{display:flex;justify-content:space-around;margin-bottom:16px;}
.stat{font-size:12px;color:var(--mut);}
.stat b{display:block;color:var(--txt);font-size:17px;font-weight:800;margin-top:3px;}
.pcard{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:11px;}
.pcard .lab{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:1px;}
.pcard .val{font-size:22px;font-weight:800;margin-top:5px;}
.pcard .val.green{color:var(--cyan);}
.empty{text-align:center;color:var(--mut);padding:40px 10px;font-size:14px;}
/* chart panel */
.detail{position:fixed;inset:0;background:var(--bg);z-index:80;display:flex;flex-direction:column;
  animation:fade .2s both;overflow-y:auto;}
.detail .d-top{display:flex;align-items:center;gap:12px;padding:16px 16px 8px;}
.detail .d-back{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:11px;
  width:40px;height:40px;font-size:18px;cursor:pointer;flex-shrink:0;}
.detail .d-head{flex:1;}
.detail .d-name{font-weight:800;font-size:19px;}
.detail .d-sub{font-size:12.5px;color:var(--mut);}
.detail .d-price{text-align:right;}
.detail .d-p{font-weight:800;font-size:19px;}
.detail .d-chg{font-size:13px;font-weight:700;}
.chart-wrap{padding:6px 12px 4px;}
#chart{width:100%;height:240px;display:block;background:var(--panel);border:1px solid var(--line);border-radius:14px;}
.d-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 14px;}
.d-stat{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:12px 14px;}
.d-stat .l{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px;}
.d-stat .v{font-size:16px;font-weight:800;margin-top:4px;}
.d-actions{padding:8px 14px 24px;display:flex;gap:10px;}
.d-actions button{flex:1;border:none;border-radius:13px;font-weight:800;font-size:14px;padding:13px;cursor:pointer;}
.d-trade{background:var(--grad);color:#0b0d0a;}
.d-scan{background:var(--panel2);border:1px solid var(--line);color:var(--txt);}
.d-ca{font-size:10.5px;color:var(--mut);word-break:break-all;padding:0 14px 8px;}
.d-open{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:11px;
  padding:0 14px;font-size:13px;font-weight:700;cursor:pointer;flex-shrink:0;}
.chart-iframe{width:100%;height:78vh;border:none;border-radius:14px;background:var(--panel);}

/* DEV view */
.dev-wrap{padding:6px 4px 30px;}
.dev-intro{font-size:13.5px;color:var(--mut);line-height:1.5;margin-bottom:14px;padding:0 4px;}
.dev-input{display:flex;gap:9px;padding:0 4px 16px;}
.dev-input input{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:13px;
  color:var(--txt);font-size:14px;padding:12px 14px;outline:none;}
.dev-input input:focus{border-color:var(--cyan);}
.dev-res{display:flex;flex-direction:column;gap:12px;}
.dev-summary{display:flex;align-items:center;justify-content:space-between;padding:0 6px;}
.dev-addr{font-size:13px;color:var(--mut);font-family:ui-monospace,Menlo,monospace;}
.dev-count{font-size:13px;font-weight:800;color:var(--cyan);}
.dev-token{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px;}
.dt-head{display:flex;align-items:center;gap:11px;margin-bottom:12px;}
.dt-ico{width:40px;height:40px;border-radius:11px;background:var(--panel2);object-fit:cover;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--cyan);overflow:hidden;}
.dt-ico.txt{padding:0;}
.dt-id{flex:1;min-width:0;}
.dt-sym{font-weight:800;font-size:16px;}
.dt-name{font-size:12.5px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dt-badge{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;padding:4px 9px;border-radius:20px;
  background:var(--panel2);border:1px solid var(--line);color:var(--mut);flex-shrink:0;}
.dt-badge.ok{background:rgba(22,199,132,.14);color:var(--green);border-color:transparent;}
.dt-badge.scam{background:rgba(234,57,67,.14);color:var(--red);border-color:transparent;}
.dt-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:11px;}
.dt-stat{background:var(--panel2);border:1px solid var(--line);border-radius:13px;padding:11px 13px;}
.dt-stat .l{font-size:10.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px;}
.dt-stat .v{font-size:16px;font-weight:800;margin-top:3px;}
.dt-price{font-size:15px;font-weight:800;margin-bottom:11px;}
.dt-price .dt-sub{font-size:12px;font-weight:600;color:var(--mut);}
.dt-ca{font-size:10.5px;color:var(--mut);word-break:break-all;margin:-6px 0 11px;font-family:ui-monospace,Menlo,monospace;}
.dt-deploy{font-size:11.5px;color:var(--mut);margin-bottom:11px;font-weight:600;}
.dt-chart-btn{width:100%;background:var(--grad);border:none;border-radius:12px;color:#0b0d0a;
  font-weight:800;font-size:14px;padding:11px;cursor:pointer;}
.dt-chart-btn:active{transform:scale(.98);}
.dev-connect{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--cyan);
  border-radius:12px;font-weight:800;font-size:13px;padding:10px;cursor:pointer;}
.dev-connect:active{transform:scale(.98);}
.dev-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:0 4px 4px;}
.dev-toggle{font-size:12.5px;color:var(--mut);display:flex;align-items:center;gap:7px;cursor:pointer;}
.dev-toggle input{accent-color:var(--cyan);width:15px;height:15px;}
.dev-sort{font-size:12px;color:var(--mut);display:flex;align-items:center;gap:6px;}
.dsort{background:var(--panel);border:1px solid var(--line);color:var(--mut);border-radius:16px;
  padding:5px 12px;font-size:12px;font-weight:700;cursor:pointer;}
.dsort.active{background:var(--grad);color:#0b0d0a;border-color:var(--cyan);}

/* mobile */
@media(max-width:900px){
  #app{grid-template-columns:64px 1fr;}
  .right{display:none;}
  .logo span:last-child,.nav-item span:not(.ni),.bal{display:none;}
  .nav-item{justify-content:center;}
  .sidebar{width:64px;padding:18px 8px;}
}
@media(max-width:768px){
  #app{grid-template-columns:1fr;}
  .sidebar{position:fixed!important;bottom:0!important;left:0!important;right:0!important;top:auto!important;
    flex-direction:row!important;width:100%!important;height:auto;z-index:30;
    border-right:none;border-top:1px solid var(--line);border-bottom:none;
    padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:#0d0f0b;justify-content:space-around;
    box-shadow:0 -4px 16px rgba(0,0,0,.4);}
  .sidebar .logo,.bal{display:none;}
  .sidebar nav{flex-direction:row!important;flex:1;gap:2px;}
  .nav-item{justify-content:center;flex:1;flex-direction:column;gap:3px;padding:7px 2px;border-radius:12px;}
  .nav-item .ni{width:auto;}
  .nav-item .ni svg{width:22px;height:22px;}
  .nav-item span:not(.ni){display:block;font-size:10px;font-weight:600;color:inherit;}
  .nav-item.active{background:var(--grad-soft);}
  .main{border-right:none;padding-bottom:90px;height:100vh;}
  .topbar{position:sticky;}
}
@media(max-width:900px) and (min-width:769px){
  #app{grid-template-columns:64px 1fr;}
  .right{display:none;}
  .logo span:last-child,.nav-item span:not(.ni),.bal{display:none;}
  .nav-item{justify-content:center;}
  .sidebar{width:64px;padding:18px 8px;}
}

/* Telegram compact (bot-menu) view: window is short/narrow -> bottom nav like lockin */
body.compact #app{grid-template-columns:1fr;height:100vh;overflow:hidden;}
body.compact .sidebar{position:fixed!important;bottom:0!important;left:0!important;right:0!important;top:auto!important;z-index:40;
  flex-direction:row!important;width:100%!important;height:auto;
  border-right:none;border-top:1px solid var(--line);border-bottom:none;
  padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:#0d0f0b;
  box-shadow:0 -4px 16px rgba(0,0,0,.4);justify-content:space-around;}
body.compact .sidebar .logo,body.compact .bal{display:none;}
body.compact .sidebar nav{flex-direction:row!important;flex:1;gap:2px;}
body.compact .nav-item{justify-content:center;flex:1;flex-direction:column;gap:3px;padding:7px 2px;border-radius:12px;}
body.compact .nav-item .ni{width:auto;}
body.compact .nav-item .ni svg{width:22px;height:22px;}
body.compact .nav-item span:not(.ni){display:block;font-size:10px;font-weight:600;color:inherit;}
body.compact .nav-item.active{background:var(--grad-soft);}
body.compact .nav-item.active .ni svg{stroke:var(--cyan);}
body.compact .main{border-right:none;overflow-y:auto;padding-bottom:90px;height:100vh;}
body.compact .right{display:none;}
body.compact .topbar{position:sticky;}
body.compact .query-wrap{padding:8px 4px;}

/* pump.fun */
.pump-hero{text-align:center;padding:48px 20px 30px;}
.pump-rocket{font-size:52px;margin-bottom:10px;animation:float 3s ease-in-out infinite;}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.pump-ht{font-size:22px;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;}
.pump-hs{font-size:13.5px;color:var(--mut);line-height:1.5;margin:10px auto 0;max-width:320px;}
.pump-ex{margin-top:16px;font-size:11px;color:var(--mut);word-break:break-all;}
.pump-ex span{color:var(--cyan);font-family:ui-monospace,Menlo,monospace;}
.pump-or{margin-top:14px;font-size:12px;color:var(--mut);opacity:.7;}
.pump-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px;margin-bottom:12px;}
.pump-card-top{display:flex;align-items:center;gap:11px;}
.pump-ico{width:42px;height:42px;border-radius:12px;object-fit:cover;flex-shrink:0;background:var(--panel2);}
.pump-ico.txt{display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--cyan);}
.pump-id{flex:1;min-width:0;}
.pump-sym{font-weight:800;font-size:16px;}
.pump-name{font-size:12px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pump-chg{font-weight:800;font-size:14px;}
.pump-chg.up{color:var(--green);}
.pump-chg.down{color:var(--red);}
.pump-price{font-size:20px;font-weight:800;margin:11px 0 10px;}
.pump-dex{font-size:11px;font-weight:600;color:var(--mut);margin-left:6px;}
.pump-stats{display:flex;gap:8px;margin-bottom:11px;}
.pump-stats>div{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:8px 6px;text-align:center;}
.pump-stats span{display:block;font-size:10px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px;}
.pump-stats b{font-size:13px;font-weight:800;}
.pump-ca{font-size:10px;color:var(--mut);word-break:break-all;font-family:ui-monospace,Menlo,monospace;margin-bottom:11px;}
.pump-trade{width:100%;background:var(--grad);border:none;border-radius:12px;color:#0b0e14;font-weight:800;font-size:14px;padding:11px;cursor:pointer;}
.pump-trade:active{transform:scale(.98);}

/* splash / entry screen */
#splash{position:fixed;inset:0;z-index:200;background:var(--bg);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;text-align:center;padding:30px;
  background:radial-gradient(120% 80% at 50% 0%,rgba(34,211,238,.10),transparent 60%),var(--bg);}
#app{display:none;}
body.entered #splash{opacity:0;pointer-events:none;transition:opacity .35s ease;}
body.entered #app{display:grid;}
.splash-logo{position:relative;width:104px;height:104px;display:flex;align-items:center;justify-content:center;}
.splash-ring{position:absolute;inset:0;border-radius:28px;
  background:conic-gradient(from 200deg,#22d3ee,#3b82f6,#8b5cf6,#22d3ee);
  -webkit-mask:radial-gradient(circle 34px at 50% 50%,transparent 98%,#000 100%);
  mask:radial-gradient(circle 34px at 50% 50%,transparent 98%,#000 100%);
  animation:spin 4s linear infinite;}
.splash-m{position:relative;width:72px;height:72px;border-radius:20px;display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:42px;color:#0b0e14;background:var(--grad);font-family:inherit;}
@keyframes spin{to{transform:rotate(360deg);}}
.splash-name{font-size:28px;font-weight:800;letter-spacing:.5px;margin-top:6px;}
.splash-sub{font-size:13px;color:var(--mut);margin-top:-6px;}
.splash-loader{display:flex;gap:6px;margin-top:10px;}
.splash-loader span{width:7px;height:7px;border-radius:50%;background:var(--grad);animation:blink 1.2s infinite both;}
.splash-loader span:nth-child(2){animation-delay:.2s;}
.splash-loader span:nth-child(3){animation-delay:.4s;}
@keyframes blink{0%,80%,100%{opacity:.25;transform:scale(.8);}40%{opacity:1;transform:scale(1);}}
.enter-btn{margin-top:22px;background:var(--grad);border:none;border-radius:14px;color:#0b0e14;
  font-weight:800;font-size:16px;padding:14px 34px;cursor:pointer;}
.enter-btn:active{transform:scale(.97);}

