.chart-tf-btn { padding:4px 9px; border-radius:4px; border:none; background:none; color:var(--text-faint); font-family:inherit; font-size:11px; font-weight:600; cursor:pointer; transition:all .15s; }
.chart-tf-btn:hover { color:var(--text); background:var(--surface); }
.chart-tf-btn.active { color:var(--text); background:var(--surface2); }
.chart-sep { flex:1; }
#chartContainer { flex:1; min-height:0; }
.tv-trades { height:140px; border-top:1px solid var(--border); flex-shrink:0; overflow:hidden; display:flex; flex-direction:column; }
.tv-trades-hdr { padding:6px 14px; font-size:10px; font-weight:700; color:var(--text-faint); text-transform:uppercase; letter-spacing:.05em; border-bottom:1px solid var(--border); flex-shrink:0; }
/* Holders/Trades tab strip */
.holders-tab { display:flex; gap:0; border-bottom:1px solid var(--border); flex-shrink:0; }
.holders-tab-btn { padding:7px 14px; font-size:11px; font-weight:700; color:rgba(255,255,255,.35); background:none; border:none; border-bottom:2px solid transparent; cursor:pointer; transition:all .15s; margin-bottom:-1px; }
.holders-tab-btn.active { color:#e0e0e0; border-bottom-color:var(--pink); }
.holders-tab-btn:hover { color:#c0c0c0; }
/* Live trades feed rows */
.live-trade-row {
  display:grid; grid-template-columns:36px 1fr 72px 52px; gap:0;
  padding:5px 2px; border-bottom:1px solid rgba(255,255,255,.03);
  font-family:var(--font-mono); font-size:10.5px; align-items:center;
  animation:tradeIn .25s ease;
}
@keyframes tradeIn { from { opacity:0; background:rgba(255,255,255,.06); } to { opacity:1; background:transparent; } }
.lt-buy { color:#00D97E; font-weight:800; font-size:10px; }
.lt-sell { color:#FF4545; font-weight:800; font-size:10px; }
.lt-usd { color:#e0e0e0; }
.lt-price { text-align:right; color:rgba(255,255,255,.5); font-size:10px; }
.lt-time { text-align:right; color:rgba(255,255,255,.3); font-size:10px; }
.lt-buy-row { background:rgba(0,217,126,.025); }
.lt-sell-row { background:rgba(255,69,69,.025); }
/* Holder rows */
.holder-row { display:flex; align-items:center; gap:8px; padding:8px 14px; border-bottom:1px solid rgba(255,255,255,.025); font-size:11px; }
.holder-rank { font-family:var(--font-mono); font-weight:700; color:rgba(255,255,255,.3); width:22px; flex-shrink:0; }
.holder-addr { font-family:var(--font-mono); color:rgba(255,255,255,.55); flex:1; cursor:pointer; }
.holder-addr:hover { color:#e0e0e0; }
.holder-pct { font-family:var(--font-mono); font-weight:700; color:#e0e0e0; min-width:40px; text-align:right; }
.holder-bar-wrap { width:70px; height:3px; background:rgba(255,255,255,.08); border-radius:2px; overflow:hidden; flex-shrink:0; }
.holder-bar { height:100%; background:var(--pink); border-radius:2px; }
.tv-trades-wrap { flex:1; overflow-y:auto; }
.tv-trades-wrap::-webkit-scrollbar { width:3px; }
.tv-trades-wrap::-webkit-scrollbar-thumb { background:rgba(255,255,255,.08); }
.trades-tbl { width:100%; border-collapse:collapse; font-size:11px; }
.trades-tbl th { padding:4px 14px; text-align:left; color:var(--text-faint); font-weight:500; position:sticky; top:0; background:var(--bg); border-bottom:1px solid var(--border); }
.trades-tbl td { padding:5px 14px; border-bottom:1px solid rgba(255,255,255,.025); font-family:var(--font-mono); }
.td-buy { color:var(--green); font-weight:700; }
.td-sell { color:var(--red); font-weight:700; }

/* Trade panel */
.tv-trade-panel { width:290px; flex-shrink:0; overflow-y:auto; overflow-x:hidden; padding:14px; padding-bottom:calc(var(--statusbar-h) + var(--ticker-h) + 14px); display:flex; flex-direction:column; gap:10px; }
.tv-trade-panel::-webkit-scrollbar { width:3px; }
.tv-trade-panel::-webkit-scrollbar-thumb { background:rgba(255,255,255,.08); }
.tp-section { background:var(--surface); border:1px solid var(--border); border-radius:var(--r); padding:13px; }
.tp-title { font-size:10px; font-weight:700; color:var(--text-faint); text-transform:uppercase; letter-spacing:.06em; margin-bottom:10px; }

/* DEX selector */
.dex-grid { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.dex-opt { display:flex; align-items:center; gap:5px; padding:6px 8px; background:var(--bg); border:1px solid var(--border); border-radius:var(--r-sm); cursor:pointer; transition:all .15s; font-size:11px; font-weight:600; color:var(--text-faint); }
.dex-opt:hover { border-color:var(--border2); color:var(--text); }
.dex-opt.active { border-color:var(--pink); color:var(--pink); background:rgba(104,38,153,.07); }

/* Bonding Curve trade panel elements */
.curve-badge { display:none; align-items:center; gap:6px; padding:6px 10px; background:rgba(255,140,0,.08); border:1px solid rgba(255,140,0,.3); border-radius:var(--r-sm); font-size:11px; font-weight:700; color:#ff8c00; margin-bottom:8px; }
.curve-badge svg { flex-shrink:0; }

/* ── Chart loading overlay ───────────────────────────────────────────────── */
#chartLoadingOverlay {
  position: absolute; inset: 0; z-index: 20;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: var(--bg); pointer-events: none;
  transition: opacity .25s ease;
}
#chartLoadingOverlay.fade-out { opacity: 0; }
#chartLoadingOverlay svg { width: 100%; height: 70px; overflow: visible; }
.clo-line {
  fill: none; stroke: rgba(104,38,153,.55); stroke-width: 1.8px;
  stroke-linecap: round; stroke-linejoin: round;
  filter: drop-shadow(0 0 4px rgba(104,38,153,.5));
}
.clo-pulse {
  fill: none; stroke: #fff; stroke-width: 2.5px;
  stroke-linecap: round; stroke-linejoin: round;
  stroke-dasharray: 60 1000;
  stroke-dashoffset: 0;
  filter: drop-shadow(0 0 6px rgba(255,255,255,.9));
  animation: clo-pulse-anim 1.6s ease-in-out infinite;
}
@keyframes clo-pulse-anim {
  0%   { stroke-dashoffset: 0; opacity: 1; }
  70%  { stroke-dashoffset: -480; opacity: .8; }
  100% { stroke-dashoffset: -600; opacity: 0; }
}
.clo-text {
  margin-top: 14px; font-size: 11px; font-weight: 600;
  color: rgba(255,255,255,.3); letter-spacing: .06em; text-transform: uppercase;
  animation: clo-blink 1.6s ease-in-out infinite;
}
@keyframes clo-blink {
  0%, 100% { opacity: .3; } 50% { opacity: .7; }
}
