/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MarketPulse AI â€” Professional Dark Financial Theme
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

:root {
  --bg0: #060a12;
  --bg1: #0b1120;
  --bg2: #0f1829;
  --bg3: #141e32;
  --bg-hover: #182238;
  --border: rgba(30,58,100,0.55);
  --border2: rgba(40,72,120,0.75);
  --text1: #eaf1fb;
  --text2: #9db3d2;
  --text3: #6f89ad;
  --accent: #00c8f8;
  --accent-dim: rgba(0,200,248,0.08);
  --accent-glow: rgba(0,200,248,0.2);
  --green: #00e87a;
  --green-dim: rgba(0,232,122,0.1);
  --red: #ff3d55;
  --red-dim: rgba(255,61,85,0.1);
  --yellow: #ffc107;
  --yellow-dim: rgba(255,193,7,0.1);
  --purple: #a855f7;
  --purple-dim: rgba(168,85,247,0.1);
  --orange: #f97316;
  --c-strong-buy: #00e87a;
  --c-buy: #4ade80;
  --c-hold: #ffc107;
  --c-sell: #f97316;
  --c-strong-sell: #ff3d55;
  --c-spec: #a855f7;
  --radius: 12px;
  --shadow: 0 8px 30px rgba(0,0,0,0.4);

  /* Header chrome height â€” kept in sync between header, ticker tape,
     main-content top offset, and the mobile drawer position. Adding
     env(safe-area-inset-top) makes the whole layout notch-aware on iOS. */
  --header-h: calc(58px + env(safe-area-inset-top, 0px));
  --ticker-h: 30px;
  /* Mobile bottom nav height. 0 on desktop â€” overridden in the mobile media
     query. Content padding-bottom and the drawer's bottom both subtract this
     so they never hide behind the bar. */
  --bottom-nav-h: 0px;
}

/* â”€â”€ Reset â”€â”€ */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:'Inter',sans-serif;
  background:var(--bg0);
  color:var(--text1);
  min-height:100vh;
  overflow-x:hidden;
  line-height:1.5;
}
a{text-decoration:none;color:inherit;}
button{font-family:'Inter',sans-serif;cursor:pointer;outline:none;}
select{font-family:'Inter',sans-serif;}
input{font-family:'Inter',sans-serif;}

/* â”€â”€ Scrollbar â”€â”€ */
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-track{background:var(--bg0);}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px;}
::-webkit-scrollbar-thumb:hover{background:var(--accent);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   PWA LAUNCH SPLASH
   Full-screen, full-bleed overlay that matches the installed app
   icon (icon.svg). Auto-fades after 1s. JS removes it from the DOM
   once the animation completes, and skips it on same-session
   reloads so normal browsing isn't interrupted.
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.app-splash{
  position:fixed;inset:0;z-index:99999;
  display:flex;align-items:center;justify-content:center;
  padding:
    env(safe-area-inset-top, 0px)
    env(safe-area-inset-right, 0px)
    env(safe-area-inset-bottom, 0px)
    env(safe-area-inset-left, 0px);
  background:
    radial-gradient(ellipse at 50% 38%, rgba(0,200,248,0.10) 0%, rgba(0,200,248,0) 55%),
    radial-gradient(ellipse at 50% 62%, rgba(0,232,122,0.06) 0%, rgba(0,232,122,0) 60%),
    radial-gradient(ellipse at center, #0e1a33 0%, #060a12 75%);
  /* Hold briefly, then fade. `forwards` keeps the final (invisible) state so
     the overlay doesn't snap back into view before JS removes it. */
  animation:splashFadeOut 0.45s ease-out 1.0s forwards;
  will-change:opacity;
}
.app-splash.hidden{display:none !important;}
@keyframes splashFadeOut{
  from{opacity:1;}
  to  {opacity:0;visibility:hidden;pointer-events:none;}
}
.splash-inner{
  display:flex;flex-direction:column;align-items:center;gap:14px;
  padding:0 20px;
  animation:splashRise 0.55s cubic-bezier(.22,.61,.36,1) both;
}
@keyframes splashRise{
  from{opacity:0;transform:translateY(14px) scale(0.96);}
  to  {opacity:1;transform:translateY(0)    scale(1);}
}
.splash-icon-wrap{
  position:relative;
  width:124px;height:124px;
  border-radius:30px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(0,200,248,0.05);
  box-shadow:
    0 0 0 1px rgba(0,200,248,0.35),
    0 14px 48px rgba(0,200,248,0.30),
    0 0 80px rgba(0,232,122,0.22);
  animation:splashPulse 2.2s ease-in-out infinite;
}
@keyframes splashPulse{
  0%,100%{
    box-shadow:
      0 0 0 1px rgba(0,200,248,0.35),
      0 14px 48px rgba(0,200,248,0.30),
      0 0 80px rgba(0,232,122,0.22);
  }
  50%{
    box-shadow:
      0 0 0 1px rgba(0,200,248,0.55),
      0 18px 64px rgba(0,200,248,0.48),
      0 0 120px rgba(0,232,122,0.36);
  }
}
.splash-icon{
  display:block;width:108px;height:108px;
  border-radius:22px;
  filter:drop-shadow(0 6px 18px rgba(0,200,248,0.35));
}
.splash-title{
  font-size:30px;font-weight:800;letter-spacing:-0.5px;line-height:1;
  background:linear-gradient(90deg, #ffffff 0%, #cfe8ff 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  margin-top:6px;
}
.splash-ai{
  background:linear-gradient(90deg, #00c8f8 0%, #00e87a 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  margin-left:4px;font-weight:900;
}
.splash-tagline{
  font-size:11px;font-weight:700;letter-spacing:2.4px;text-transform:uppercase;
  color:#7c95b8;
}
.splash-spinner{
  width:28px;height:28px;margin-top:12px;
  border-radius:50%;
  border:3px solid rgba(0,200,248,0.18);
  border-top-color:var(--accent);
  animation:splashSpin 0.8s linear infinite;
}
@keyframes splashSpin{to{transform:rotate(360deg);}}
/* Narrow phones â€” tighten sizes */
@media (max-width:400px){
  .splash-icon-wrap{width:108px;height:108px;border-radius:26px;}
  .splash-icon{width:92px;height:92px;border-radius:20px;}
  .splash-title{font-size:26px;}
}
/* Respect prefers-reduced-motion â€” cut animations, keep a quick crossfade. */
@media (prefers-reduced-motion:reduce){
  .app-splash{animation:splashFadeOut 0.25s ease-out 0.6s forwards;}
  .splash-inner,.splash-icon-wrap,.splash-spinner{animation:none !important;}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   HEADER
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.header{
  position:fixed;top:0;left:0;right:0;z-index:1000;
  display:flex;align-items:center;gap:14px;
  padding:0 16px;height:var(--header-h);
  /* iPhone notch safe-area */
  padding-left:max(16px, env(safe-area-inset-left));
  padding-right:max(16px, env(safe-area-inset-right));
  padding-top:env(safe-area-inset-top);
  box-sizing:border-box;
  background:rgba(6,10,18,0.97);
  backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
}
.header-left{display:flex;align-items:center;gap:14px;flex-shrink:0;}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   LOGO â€” clickable, gradient, animated pulse
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.logo{
  display:flex;align-items:center;gap:11px;
  cursor:pointer;text-decoration:none;user-select:none;
  padding:4px 6px 4px 2px;border-radius:9px;
  transition:all .25s ease;
}
.logo:hover{background:rgba(0,200,248,.05);transform:translateY(-1px);}
.logo:active{transform:translateY(0);}

.logo-mark{
  position:relative;
  width:34px;height:34px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:10px;
  /* The icon.svg has its own dark plate + chart art, so the mark itself
     is just a transparent host with a soft cyan halo around it. */
  background:transparent;
  box-shadow:
    0 0 0 1px rgba(0,200,248,.28),
    0 4px 16px rgba(0,200,248,.30);
  overflow:visible;
}
.logo-mark::before{
  /* Soft outer glow that pulses subtly with the brand mark. */
  content:'';
  position:absolute;inset:-4px;border-radius:14px;
  background:radial-gradient(closest-side, rgba(0,200,248,.35), transparent 70%);
  filter:blur(4px);
  z-index:0;
  animation:logo-glow 3.2s ease-in-out infinite;
  pointer-events:none;
}
@keyframes logo-glow{
  0%,100%{opacity:.55;}
  50%    {opacity:.95;}
}
.logo-icon{
  position:relative;z-index:2;
  width:100%;height:100%;
  border-radius:10px;
  display:block;
  /* Crisp pixel rendering at small sizes; SVG handles its own scaling. */
  filter:drop-shadow(0 2px 8px rgba(0,200,248,.35));
}
.logo-pulse{
  position:absolute;inset:-2px;border-radius:12px;
  border:2px solid rgba(0,200,248,.6);
  animation:logo-ring 2.4s ease-out infinite;
  pointer-events:none;
}
.logo-pulse-2{animation-delay:1.2s;border-color:rgba(0,232,122,.55);}
@keyframes logo-ring{
  0%  {transform:scale(1);     opacity:0.8;}
  75% {transform:scale(1.45);  opacity:0;}
  100%{transform:scale(1.45);  opacity:0;}
}
.logo:hover .logo-mark{
  box-shadow:
    0 0 0 1px rgba(0,200,248,.5),
    0 6px 22px rgba(0,200,248,.55),
    inset 0 1px 0 rgba(255,255,255,.35);
}

.logo-text{
  display:flex;flex-direction:column;line-height:1;white-space:nowrap;
  font-size:17px;font-weight:800;letter-spacing:-0.4px;
  background:linear-gradient(90deg, #ffffff 0%, #cfe8ff 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
}
.logo-ai{
  background:linear-gradient(90deg, #00c8f8 0%, #00e87a 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  margin-left:4px;font-weight:900;
}
.logo-tag{
  -webkit-text-fill-color:initial;color:var(--text3);
  background:none;
  font-size:9px;font-weight:600;letter-spacing:1.2px;
  text-transform:uppercase;margin-top:3px;opacity:.75;
}
@media(max-width:900px){
  .logo-tag{display:none;}
  .logo-text{font-size:15px;}
}
.market-status{
  display:flex;align-items:center;gap:5px;
  font-size:11px;color:var(--text2);
  white-space:nowrap;flex-shrink:0;
}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--text3);flex-shrink:0;}
.status-dot.live{background:var(--green);box-shadow:0 0 6px var(--green);animation:blink 2s infinite;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:.45;}}

/* â”€â”€ Nav â€” 6 top-level items; dropdowns need overflow:visible to escape â”€â”€ */
.main-nav{
  display:flex;align-items:center;gap:2px;flex:1 1 auto;
  overflow:visible;           /* critical: lets dropdowns render outside the bar */
  min-width:0;
  padding:0 4px;
}
.nav-link{
  padding:6px 11px;font-size:12.5px;font-weight:500;color:var(--text2);
  border-radius:7px;transition:all .18s ease;white-space:nowrap;cursor:pointer;
  border-bottom:2px solid transparent;flex-shrink:0;
  display:inline-flex;align-items:center;gap:7px;height:34px;
}
.nav-link i{font-size:12px;width:14px;text-align:center;flex-shrink:0;}
.nav-link .nav-label{line-height:1;}
.nav-link:hover,.nav-link.active{color:var(--text1);background:var(--accent-dim);}
.nav-link.active{color:var(--accent);border-bottom-color:var(--accent);border-radius:7px 7px 0 0;}
.meme-nav{color:var(--yellow) !important;}
.meme-nav:hover,.meme-nav.active{background:var(--yellow-dim) !important;color:var(--yellow) !important;}
.meme-nav.active{border-bottom-color:var(--yellow) !important;}

/* â”€â”€ Nav groups (Markets / Signals / Intel) â€” desktop dropdowns â”€â”€ */
.nav-group{position:relative;display:inline-flex;align-items:stretch;flex-shrink:0;}
.nav-group-trigger{
  background:transparent;border:none;cursor:pointer;font-family:inherit;
  padding:6px 11px;font-size:12.5px;font-weight:500;color:var(--text2);
  border-radius:7px;transition:all .18s ease;white-space:nowrap;
  border-bottom:2px solid transparent;
  display:inline-flex;align-items:center;gap:7px;height:34px;
}
.nav-group-trigger i{font-size:12px;width:14px;text-align:center;flex-shrink:0;}
.nav-group-trigger .nav-label{line-height:1;}
.nav-caret{font-size:10px !important;width:10px !important;opacity:.7;transition:transform .2s ease;margin-left:2px;}
.nav-group:hover .nav-caret,
.nav-group.open .nav-caret{transform:rotate(180deg);opacity:1;}
.nav-group-trigger:hover,
.nav-group.open .nav-group-trigger,
.nav-group.has-active .nav-group-trigger{
  color:#ffffff;background:rgba(0,200,248,0.14);
}
.nav-group.has-active .nav-group-trigger{
  color:var(--accent);
  border-bottom-color:var(--accent);
  border-radius:7px 7px 0 0;
}
.nav-group-badge{
  background:linear-gradient(135deg,#ff9a3d,#ff5555);
  box-shadow:0 0 8px rgba(255,154,61,.45);
}

/* High-contrast dropdown panel */
.nav-dropdown{
  position:absolute;top:calc(100% + 6px);left:0;
  min-width:260px;
  background:#0d1629;                       /* solid, no transparency fight */
  background:linear-gradient(180deg, #111c33 0%, #0b1322 100%);
  border:1px solid rgba(0,200,248,0.22);
  border-radius:10px;padding:6px;
  box-shadow:
    0 18px 40px rgba(0,0,0,.55),
    0 0 0 1px rgba(0,200,248,.08) inset,
    0 8px 24px rgba(0,200,248,.06);
  z-index:1100;
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .14s ease, transform .14s ease, visibility .14s;
  display:flex;flex-direction:column;gap:2px;
}
.nav-group:hover .nav-dropdown,
.nav-group.open .nav-dropdown,
.nav-group:focus-within .nav-dropdown{
  opacity:1;visibility:visible;transform:translateY(0);
}
/* Invisible hover bridge so cursor can travel from trigger to menu without dropping */
.nav-dropdown::before{
  content:"";position:absolute;top:-8px;left:0;right:0;height:8px;
}
.nav-dd-label{
  font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;
  color:#9bb5d8;                            /* bright enough to read */
  padding:8px 10px 6px;
  border-bottom:1px solid rgba(255,255,255,.06);
  margin-bottom:4px;
}
.nav-dd-item{
  position:relative;
  display:grid !important;
  grid-template-columns:22px 1fr auto;
  align-items:center;gap:10px;
  padding:10px 12px !important;font-size:13px !important;
  font-weight:500;line-height:1.2;
  color:#d9e4f3 !important;                 /* high-contrast base text */
  border-radius:8px !important;border-bottom:none !important;
  white-space:nowrap;
  transition:background .14s ease, color .14s ease, transform .14s ease;
}
.nav-dd-item i{
  font-size:13px !important;width:22px;text-align:center;
  color:var(--accent);opacity:.95;
  grid-column:1;
}
.nav-dd-emoji{
  width:22px;text-align:center;font-size:15px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  grid-column:1;
}
.nav-dd-text{grid-column:2;}
.nav-dd-hint{
  grid-column:3;
  font-size:10.5px;font-weight:500;color:#7c95b8;
  margin-left:14px;
  font-family:'JetBrains Mono', monospace;
  letter-spacing:.2px;
  justify-self:end;
}
/* Badges inside dropdown items (Momentum count) sit just after the text,
   not in the hint column, so the hint stays right-aligned. */
.nav-dd-item .nav-badge{grid-column:2;justify-self:start;margin-left:4px;}
.nav-dd-item:hover{
  background:rgba(0,200,248,0.12) !important;
  color:#ffffff !important;
  transform:translateX(2px);
}
.nav-dd-item:hover .nav-dd-hint{color:#b9cde8;}
.nav-dd-item:hover i{opacity:1;filter:drop-shadow(0 0 6px rgba(0,200,248,.5));}
.nav-dd-item.active{
  background:rgba(0,200,248,0.16) !important;
  color:#ffffff !important;
}
.nav-dd-item.active i{color:var(--accent);}
.nav-dd-item.active::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:3px;height:20px;border-radius:3px;background:var(--accent);
  box-shadow:0 0 8px rgba(0,200,248,.6);
}
/* Keep accent colors on the themed items inside dropdowns */
.nav-dd-item.momentum-nav{color:#ffb06b !important;}
.nav-dd-item.momentum-nav i{color:#ff9a3d;}
.nav-dd-item.momentum-nav:hover{background:rgba(255,154,61,.14) !important;color:#fff !important;}
.nav-dd-item.meme-nav{color:#ffd86b !important;}
.nav-dd-item.meme-nav:hover{background:rgba(255,193,7,.14) !important;color:#fff !important;}
.nav-dd-item.watch-nav{color:#8cd8ff !important;}
.nav-dd-item.insider-nav{color:#c4a8ff !important;}
.nav-dd-item.insider-nav i{color:#a855f7;}

/* â”€â”€ Header right â”€â”€ */
.header-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.live-clock{
  font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--text2);
  white-space:nowrap;
}
.refresh-btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px;background:var(--green-dim);
  border:1px solid rgba(0,232,122,0.4);border-radius:6px;
  color:var(--green);font-size:11px;font-weight:700;letter-spacing:.5px;
  transition:all .2s ease;cursor:pointer;white-space:nowrap;
}
.refresh-btn:hover{background:rgba(0,232,122,0.22);transform:translateY(-1px);}
/* Warn state (amber): last successful refresh between 3â€“5 min ago. */
.refresh-btn.warn{
  background:rgba(245,183,89,0.15);border-color:rgba(245,183,89,0.45);color:#f5b759;
  animation:rb-warn-pulse 2.2s ease-in-out infinite;
}
/* Stale state (red): >5 min old â†’ the 5-min SLA has been broken.
   `.error` is kept as an alias for backward compatibility. */
.refresh-btn.error, .refresh-btn.stale{
  background:rgba(255,61,85,0.15);border-color:rgba(255,61,85,0.45);color:var(--red);
  animation:rb-stale-pulse 1.4s ease-in-out infinite;
}
@keyframes rb-warn-pulse  { 0%,100%{box-shadow:0 0 0 0 rgba(245,183,89,0);} 50%{box-shadow:0 0 0 4px rgba(245,183,89,0.18);} }
@keyframes rb-stale-pulse { 0%,100%{box-shadow:0 0 0 0 rgba(255,77,77,0);}  50%{box-shadow:0 0 0 4px rgba(255,77,77,0.22);} }

.rb-ago{
  font-size:10px;font-weight:500;color:var(--text2);opacity:.85;
  padding-left:4px;border-left:1px solid rgba(255,255,255,.12);margin-left:2px;
  font-family:'JetBrains Mono',monospace;
}

/* â”€â”€ Freshness popover (hover/tap on LIVE pill) â”€â”€ */
.refresh-wrap{position:relative;display:inline-flex;}
.freshness-popover{
  position:absolute;top:calc(100% + 8px);right:0;
  min-width:260px;max-width:92vw;
  background:linear-gradient(180deg,#111c33 0%,#0b1322 100%);
  border:1px solid rgba(0,200,248,0.22);border-radius:10px;
  box-shadow:0 12px 32px rgba(0,0,0,0.55),0 0 0 1px rgba(255,255,255,0.03) inset;
  padding:10px 12px;z-index:200;
  opacity:0;transform:translateY(-4px);pointer-events:none;
  transition:opacity .14s ease,transform .14s ease;
}
.refresh-wrap:hover .freshness-popover,
.refresh-wrap:focus-within .freshness-popover,
.refresh-btn:focus + .freshness-popover{
  opacity:1;transform:translateY(0);pointer-events:auto;
}
.fp-title{
  font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;
  color:#9bb5d8;margin-bottom:2px;
}
.fp-sub{
  font-size:11px;color:#d9e4f3;margin-bottom:8px;
  padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.06);
}
.fp-rows{display:flex;flex-direction:column;gap:4px;}
.fp-row{
  display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:8px;
  padding:4px 0;font-size:12px;color:#d9e4f3;
}
.fp-dot{
  width:8px;height:8px;border-radius:50%;
  background:var(--green);box-shadow:0 0 6px rgba(0,232,122,0.6);
}
.fp-row.fp-warn  .fp-dot{background:#f5b759;box-shadow:0 0 6px rgba(245,183,89,0.6);}
.fp-row.fp-stale .fp-dot{background:var(--red); box-shadow:0 0 6px rgba(255,77,77,0.6);}
.fp-name{color:#d9e4f3;}
.fp-row.fp-warn  .fp-name, .fp-row.fp-warn  .fp-age{color:#f5b759;}
.fp-row.fp-stale .fp-name, .fp-row.fp-stale .fp-age{color:var(--red);}
.fp-age{
  font-family:'JetBrains Mono',monospace;font-size:11px;
  color:#9bb5d8;letter-spacing:.2px;justify-self:end;
}
.fp-footer{
  margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,.06);
  font-size:10px;color:#7c95b8;text-align:center;letter-spacing:.4px;
}
.menu-toggle{
  display:none;padding:5px 9px;background:transparent;
  border:1px solid var(--border2);border-radius:6px;color:var(--text2);
  align-items:center;gap:6px;cursor:pointer;
  font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.5px;
}
.menu-toggle-label{display:none;}  /* hidden on desktop; shown on mobile below */

/* â”€â”€ Install App button (shown when beforeinstallprompt fires) â”€â”€ */
.install-btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 11px;height:34px;
  background:linear-gradient(135deg, rgba(0,200,248,0.18), rgba(0,232,122,0.12));
  border:1px solid rgba(0,200,248,0.45);border-radius:7px;
  color:#c9ecff;font-size:11px;font-weight:700;letter-spacing:.4px;
  text-transform:uppercase;cursor:pointer;white-space:nowrap;
  transition:all .2s ease;
  box-shadow:0 0 0 0 rgba(0,200,248,0);
  animation:install-pulse 2.8s ease-in-out infinite;
}
.install-btn i{font-size:12px;color:var(--accent);}
.install-btn:hover{
  background:linear-gradient(135deg, rgba(0,200,248,0.28), rgba(0,232,122,0.18));
  transform:translateY(-1px);color:#fff;
}
.install-btn[hidden]{display:none !important;}

/* On desktop / laptop the browser already exposes "Install MarketPulse" via
   the URL-bar icon, so the in-header button is redundant and only crowds the
   live-clock + freshness pill (overlapping at typical laptop widths). Hide
   it â‰¥901px; it remains available on phones / small tablets where there's
   no native install affordance. */
@media (min-width:901px){
  .install-btn{display:none !important;}
}
@keyframes install-pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(0,200,248,0);}
  50%    {box-shadow:0 0 0 4px rgba(0,200,248,.18);}
}

/* â”€â”€ iOS "Add to Home Screen" hint â”€â”€ */
.ios-install-hint{
  position:fixed;left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom, 0px));
  z-index:1200;
  animation:ios-ih-in .35s ease-out;
}
.ios-install-hint[hidden]{display:none !important;}
.ios-ih-inner{
  display:flex;align-items:center;gap:10px;
  max-width:560px;margin:0 auto;
  padding:11px 12px;
  background:linear-gradient(180deg, #111c33 0%, #0b1322 100%);
  border:1px solid rgba(0,200,248,0.4);
  border-radius:12px;
  box-shadow:0 12px 32px rgba(0,0,0,.5), 0 0 0 1px rgba(0,200,248,.08) inset;
  color:#eaf1fb;font-size:12.5px;line-height:1.4;
}
.ios-ih-icon{
  width:34px;height:34px;flex-shrink:0;
  display:grid;place-items:center;
  background:rgba(0,200,248,0.15);border-radius:9px;color:var(--accent);font-size:16px;
}
.ios-ih-text{flex:1;min-width:0;}
.ios-ih-text b{color:#fff;}
.ios-ih-text i{color:var(--accent);margin:0 3px;}
.ios-ih-text code{
  background:rgba(255,255,255,0.08);padding:1px 6px;border-radius:4px;
  font-family:'JetBrains Mono', ui-monospace, monospace;font-size:11.5px;color:#cfeeff;
}
/* Tint the banner for the self-signed LAN variant so it visually reads as an advisory, not an install CTA. */
.ios-install-hint[data-variant="cert"] .ios-ih-inner{
  border-color:rgba(245,183,89,0.5);
  box-shadow:0 12px 32px rgba(0,0,0,.5), 0 0 0 1px rgba(245,183,89,.1) inset;
}
.ios-install-hint[data-variant="cert"] .ios-ih-icon{
  background:rgba(245,183,89,0.15);color:#f5b759;
}
.ios-ih-close{
  background:transparent;border:none;color:#9db3d2;
  width:30px;height:30px;border-radius:6px;cursor:pointer;flex-shrink:0;
  display:grid;place-items:center;
}
.ios-ih-close:hover{background:rgba(255,255,255,.06);color:#fff;}
@keyframes ios-ih-in{
  from{opacity:0;transform:translateY(12px);}
  to  {opacity:1;transform:translateY(0);}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   TICKER TAPE
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.ticker-tape{
  position:fixed;top:var(--header-h);left:0;right:0;z-index:999;
  height:var(--ticker-h);background:var(--bg1);
  border-bottom:1px solid var(--border);
  overflow:hidden;display:flex;align-items:center;
}
.ticker-inner{
  display:inline-flex;align-items:center;
  white-space:nowrap;
  animation:scroll-left 80s linear infinite;
}
.ticker-inner:hover{animation-play-state:paused;}
@keyframes scroll-left{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.t-item{
  display:inline-flex;align-items:center;gap:5px;
  padding:0 16px;font-size:11.5px;
  font-family:'JetBrains Mono',monospace;
  border-right:1px solid var(--border);
}
.t-sym{font-weight:600;color:var(--text1);}
.t-price{color:var(--text2);}
.t-chg.up{color:var(--green);}
.t-chg.dn{color:var(--red);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MAIN CONTENT
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.main-content{
  margin-top:calc(var(--header-h) + var(--ticker-h));
  padding:20px 24px 40px;
  max-width:1640px;margin-left:auto;margin-right:auto;
}

/* â”€â”€ Tab Panels â”€â”€ */
.tab-panel{display:none;}
.tab-panel.active{display:block;animation:fadeUp .3s ease;}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}

/* â”€â”€ Panel Header â”€â”€ */
.panel-header{margin-bottom:20px;}
.panel-header h2{font-size:20px;font-weight:700;display:flex;align-items:center;gap:9px;margin-bottom:5px;}
.panel-header h2 i{color:var(--accent);}
.panel-header p{font-size:13px;color:var(--text2);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   OVERVIEW CARDS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.overview-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:14px;margin-bottom:20px;
}
.ov-card{
  position:relative;overflow:hidden;
  background:linear-gradient(145deg, var(--bg2) 0%, var(--bg1) 100%);
  border:1px solid var(--border);
  border-radius:var(--radius);padding:14px 16px 12px;
  position:relative;overflow:hidden;transition:all .2s ease;cursor:default;
}
.ov-card::after{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg, transparent, var(--accent) 40%, var(--accent) 60%, transparent);
  opacity:.9;
}
.ov-card.up::after{background:linear-gradient(90deg, transparent, var(--green) 30%, var(--green) 70%, transparent);}
.ov-card.dn::after{background:linear-gradient(90deg, transparent, var(--red) 30%, var(--red) 70%, transparent);}
.ov-card.neu::after{background:linear-gradient(90deg, transparent, var(--yellow) 30%, var(--yellow) 70%, transparent);}

/* Soft directional tint */
.ov-card.up  {background:linear-gradient(145deg, var(--bg2) 0%, rgba(0,232,122,.04) 100%);}
.ov-card.dn  {background:linear-gradient(145deg, var(--bg2) 0%, rgba(255,61,85,.05) 100%);}
.ov-card.neu {background:linear-gradient(145deg, var(--bg2) 0%, rgba(255,193,7,.04) 100%);}

/* Animated glow corner â€” subtle accent of card's theme color */
.ov-card-glow{
  position:absolute;top:-40%;right:-30%;
  width:160px;height:160px;border-radius:50%;
  pointer-events:none;opacity:.07;
  filter:blur(30px);
  transition:opacity .3s ease;
}
.ov-card:hover .ov-card-glow{opacity:.16;}
.ov-accent-cyan   .ov-card-glow{background:#00c8f8;}
.ov-accent-purple .ov-card-glow{background:#b26df0;}
.ov-accent-blue   .ov-card-glow{background:#4f8bff;}
.ov-accent-orange .ov-card-glow{background:#ff8c30;}
.ov-accent-gold   .ov-card-glow{background:#f7b500;}
.ov-accent-green  .ov-card-glow{background:#00e87a;}
.ov-accent-red    .ov-card-glow{background:#ff3d55;}
.ov-accent-yellow .ov-card-glow{background:#ffc107;}

.ov-card:hover{
  border-color:var(--border2);transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(0,0,0,.35), 0 2px 0 rgba(255,255,255,.02) inset;
}

/* â”€â”€ Top row: icon + label â”€â”€ */
.ov-top{
  display:flex;align-items:center;gap:10px;margin-bottom:10px;
  position:relative;z-index:1;
}
.ov-icon-wrap{
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:8px;
  background:rgba(255,255,255,.04);
  border:1px solid var(--border);
  flex-shrink:0;
}
.ov-icon-wrap i{font-size:14px;color:var(--text2);}
.ov-accent-cyan   .ov-icon-wrap{background:rgba(0,200,248,.1);  border-color:rgba(0,200,248,.3);}
.ov-accent-cyan   .ov-icon-wrap i{color:#00c8f8;}
.ov-accent-purple .ov-icon-wrap{background:rgba(178,109,240,.1);border-color:rgba(178,109,240,.3);}
.ov-accent-purple .ov-icon-wrap i{color:#b26df0;}
.ov-accent-blue   .ov-icon-wrap{background:rgba(79,139,255,.1); border-color:rgba(79,139,255,.3);}
.ov-accent-blue   .ov-icon-wrap i{color:#4f8bff;}
.ov-accent-orange .ov-icon-wrap{background:rgba(255,140,48,.1); border-color:rgba(255,140,48,.3);}
.ov-accent-orange .ov-icon-wrap i{color:#ff8c30;}
.ov-accent-gold   .ov-icon-wrap{background:rgba(247,181,0,.1);  border-color:rgba(247,181,0,.35);}
.ov-accent-gold   .ov-icon-wrap i{color:#f7b500;}
.ov-accent-green  .ov-icon-wrap{background:rgba(0,232,122,.1);  border-color:rgba(0,232,122,.35);}
.ov-accent-green  .ov-icon-wrap i{color:#00e87a;}
.ov-accent-red    .ov-icon-wrap{background:rgba(255,61,85,.1);  border-color:rgba(255,61,85,.35);}
.ov-accent-red    .ov-icon-wrap i{color:#ff3d55;}
.ov-accent-yellow .ov-icon-wrap{background:rgba(255,193,7,.1);  border-color:rgba(255,193,7,.35);}
.ov-accent-yellow .ov-icon-wrap i{color:#ffc107;}

.ov-label{
  font-size:10px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.8px;
}

.ov-value-row{position:relative;z-index:1;margin-bottom:8px;}
.ov-value{
  font-size:22px;font-weight:800;font-family:'JetBrains Mono',monospace;
  color:var(--text1);line-height:1.1;letter-spacing:-0.3px;
}

.ov-bottom{
  display:flex;align-items:center;gap:8px;position:relative;z-index:1;
  flex-wrap:wrap;
}
.ov-change-pill{
  display:inline-flex;align-items:center;gap:4px;
  font-size:11px;font-weight:700;
  font-family:'JetBrains Mono',monospace;
  padding:3px 8px;border-radius:5px;letter-spacing:.3px;
}
.ov-change-pill.up {background:rgba(0,232,122,.13); color:var(--green);}
.ov-change-pill.dn {background:rgba(255,61,85,.13); color:var(--red);}
.ov-change-pill.neu{background:rgba(255,193,7,.13); color:var(--yellow);}
.ov-arrow{font-size:8px;line-height:1;}
.ov-dollar{
  font-size:10px;font-weight:600;
  font-family:'JetBrains Mono',monospace;
  color:var(--text3);
}
.ov-dollar.up{color:rgba(0,232,122,.75);}
.ov-dollar.dn{color:rgba(255,61,85,.75);}

.ov-meta{
  margin-top:6px;font-size:9.5px;color:var(--text3);
  font-family:'JetBrains Mono',monospace;letter-spacing:.4px;
  position:relative;z-index:1;
}

/* Fear & Greed gauge bar */
.ov-gauge{margin-top:8px;position:relative;z-index:1;}
.ov-gauge-track{
  position:relative;height:6px;border-radius:3px;
  background:linear-gradient(90deg,
    #ff3d55 0%, #ff3d55 25%,
    #ff8c30 25%, #ff8c30 45%,
    #ffc107 45%, #ffc107 55%,
    #aee065 55%, #aee065 75%,
    #00e87a 75%, #00e87a 100%);
  opacity:.75;
}
.ov-gauge-fill{
  position:absolute;top:0;left:0;height:100%;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.2));
  border-radius:3px;
}
.ov-gauge-marker{
  position:absolute;top:50%;width:10px;height:10px;border-radius:50%;
  background:#fff;border:2px solid rgba(0,0,0,.6);
  transform:translate(-50%,-50%);
  box-shadow:0 0 8px rgba(255,255,255,.6);
}
.ov-gauge-scale{
  display:flex;justify-content:space-between;margin-top:4px;
  font-size:8px;color:var(--text3);
  font-family:'JetBrains Mono',monospace;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   CARDS & DASHBOARD GRID
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.card{
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--radius);padding:18px;
  transition:border-color .2s ease;
}
.card:hover{border-color:var(--border2);}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.card-header h3{font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px;color:var(--text1);}
.card-header h3 i{color:var(--accent);}
.view-all{font-size:11px;color:var(--accent);cursor:pointer;}
.view-all:hover{text-decoration:underline;}

.dashboard-grid{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:14px;
}
.sentiment-card{grid-column:span 3;}
.span5{grid-column:span 5;}
.span4{grid-column:span 4;}
.span3{grid-column:span 3;}

/* â”€â”€ Badges â”€â”€ */
.badge{
  padding:2px 8px;border-radius:4px;
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;
}
.badge-live{
  background:var(--green-dim);color:var(--green);
  border:1px solid rgba(0,232,122,.35);
  animation:blink 2.5s infinite;
}
.badge-new{
  background:rgba(168,85,247,.14);color:var(--purple);
  border:1px solid rgba(168,85,247,.35);
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   SENTIMENT GAUGE
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.gauge-wrap{
  position:relative;display:flex;justify-content:center;align-items:flex-end;
  margin-bottom:12px;
  width:100%;height:170px;
}
.gauge-wrap canvas{
  max-width:260px;max-height:160px;
  width:100% !important;height:100% !important;
}
.gauge-overlay{
  position:absolute;bottom:6px;left:50%;transform:translateX(-50%);
  text-align:center;pointer-events:none;
}
.gauge-num{display:block;font-size:30px;font-weight:800;font-family:'JetBrains Mono',monospace;}
.gauge-lbl{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--yellow);}

/* â”€â”€ Sentiment Breakdown â”€â”€ */
.sentiment-breakdown{display:flex;flex-direction:column;gap:9px;}
.sb-row{display:flex;align-items:center;gap:9px;font-size:11px;}
.sb-src{width:88px;color:var(--text2);flex-shrink:0;}
.sb-bar{flex:1;height:5px;background:var(--border);border-radius:3px;overflow:hidden;}
.sb-fill{height:100%;border-radius:3px;transition:width .5s ease;}
.sb-fill.bullish{background:linear-gradient(90deg,var(--green),#4ade80);}
.sb-fill.neutral{background:linear-gradient(90deg,var(--yellow),#fbbf24);}
.sb-fill.bearish{background:linear-gradient(90deg,var(--red),var(--orange));}
.sb-pct{width:32px;text-align:right;color:var(--text2);font-family:'JetBrains Mono',monospace;}

/* â”€â”€ Chart filters â”€â”€ */
.cfilters{display:flex;gap:4px;}
.cfbtn{
  padding:3px 9px;background:transparent;
  border:1px solid var(--border);border-radius:4px;
  color:var(--text2);font-size:11px;cursor:pointer;transition:all .2s ease;
  font-family:'JetBrains Mono',monospace;font-weight:600;letter-spacing:.4px;
}
.cfbtn.active,.cfbtn:hover{background:var(--accent-dim);border-color:var(--accent);color:var(--accent);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   SENTIMENT TREND â€” aligned, responsive
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.trend-card{display:flex;flex-direction:column;}
.trend-stats{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:8px;margin-bottom:10px;
}
.ts-item{
  display:flex;flex-direction:column;align-items:flex-start;gap:2px;
  padding:8px 10px;background:var(--bg1);border:1px solid var(--border);
  border-radius:7px;min-width:0;
}
.ts-lbl{
  font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;
  color:var(--text3);white-space:nowrap;
}
.ts-val{
  font-family:'JetBrains Mono',monospace;font-weight:800;font-size:18px;
  color:var(--text1);line-height:1.1;
}
.ts-val.up{color:var(--green);}
.ts-val.dn{color:var(--red);}
.ts-val.neu{color:var(--yellow);}
.ts-chg, .ts-bias{
  font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:600;
  color:var(--text3);letter-spacing:.3px;
}
.ts-chg.up{color:var(--green);}
.ts-chg.dn{color:var(--red);}
.ts-bias.bullish{color:var(--green);}
.ts-bias.bearish{color:var(--red);}
.ts-bias.neutral{color:var(--yellow);}

/* Chart wrapper â€” Chart.js with responsive:true needs a positioned
   parent with a definite height, or the canvas collapses or overflows */
.chart-wrap{
  position:relative;
  flex:1;
  min-height:200px;
  height:200px;
  width:100%;
}
.chart-wrap canvas{
  position:absolute !important;
  top:0;left:0;
  width:100% !important;
  height:100% !important;
}

@media(max-width:720px){
  .trend-stats{grid-template-columns:1fr 1fr;}
  .trend-stats .ts-item:last-child{grid-column:1/-1;}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   TRENDING LIST
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.trending-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:9px 10px;background:var(--bg1);border-radius:8px;
  margin-bottom:7px;transition:background .15s ease;cursor:default;
}
.trending-item:last-child{margin-bottom:0;}
.trending-item:hover{background:var(--bg3);}
.tr-left{display:flex;align-items:center;gap:10px;}
.tr-rank{font-size:10px;font-weight:600;color:var(--text3);width:16px;}
.tr-ticker{font-size:13px;font-weight:700;font-family:'JetBrains Mono',monospace;}
.tr-name{font-size:10px;color:var(--text2);}
.tr-right{display:flex;align-items:center;gap:10px;}
.tr-buzz{font-size:10px;color:var(--text3);}
.tr-score{font-size:12px;font-weight:700;}
.tr-score.bullish{color:var(--green);}
.tr-score.bearish{color:var(--red);}
.tr-score.neutral{color:var(--yellow);}
.tr-chg{font-size:11px;font-weight:600;font-family:'JetBrains Mono',monospace;}

/* "Trending from Feed" â€” differentiate visually from tracked trending */
.feed-trending-item .tr-ticker{color:#5ce1e6;}
.feed-trending-item .tr-ticker-block{min-width:0;}
.tr-ext{
  color:var(--text3); text-decoration:none; font-size:11px;
  padding:4px 6px; border-radius:5px; transition:color .15s, background .15s;
}
.tr-ext:hover{color:#5ce1e6; background:rgba(92,225,230,0.08);}

/* Per-source badges shown under each trending row */
.fsrc-row{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap;}
.fsrc{
  display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;
  font-size:9.5px;font-weight:700;letter-spacing:.4px;
  border:1px solid var(--border);background:var(--bg2);
}
.fsrc-st{color:#5ce1e6;border-color:rgba(92,225,230,.35);background:rgba(92,225,230,.08);}
.fsrc-yh{color:#b48cff;border-color:rgba(180,140,255,.35);background:rgba(180,140,255,.08);}
.fsrc-hn{color:#ff8c42;border-color:rgba(255,140,66,.35);background:rgba(255,140,66,.08);}
.fsrc-nw{color:#ffd76e;border-color:rgba(255,215,110,.35);background:rgba(255,215,110,.08);}
.fsrc-rd{color:#ff6b6b;border-color:rgba(255,107,107,.35);background:rgba(255,107,107,.08);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   HEATMAP
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.heatmap-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;}
.hm-cell{
  padding:11px 7px;border-radius:8px;text-align:center;
  cursor:default;transition:all .2s ease;
}
.hm-cell:hover{filter:brightness(1.15);transform:scale(1.03);}
.hm-sector{font-size:9.5px;font-weight:600;color:rgba(255,255,255,.65);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px;}
.hm-chg{font-size:13px;font-weight:700;color:#fff;}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   QUICK NEWS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.quick-news{display:flex;flex-direction:column;gap:11px;max-height:310px;overflow-y:auto;}
.qn-item{display:flex;gap:10px;padding-bottom:11px;border-bottom:1px solid var(--border);}
.qn-item:last-child{border-bottom:none;padding-bottom:0;}
.qn-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:5px;}
.qn-dot.bullish{background:var(--green);box-shadow:0 0 6px var(--green);}
.qn-dot.bearish{background:var(--red);box-shadow:0 0 6px var(--red);}
.qn-dot.neutral{background:var(--yellow);box-shadow:0 0 6px var(--yellow);}
.qn-title{font-size:12.5px;color:var(--text1);line-height:1.4;margin-bottom:3px;}
.qn-meta{display:flex;gap:7px;font-size:10px;color:var(--text3);}
.qn-src{color:var(--accent);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   TABLE CONTROLS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.table-controls{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.search-box{
  display:flex;align-items:center;gap:8px;
  background:var(--bg2);border:1px solid var(--border);border-radius:8px;
  padding:7px 12px;flex:1;min-width:180px;max-width:300px;
}
.search-box i{color:var(--text3);font-size:12px;}
.search-box input{background:transparent;border:none;outline:none;color:var(--text1);font-size:13px;width:100%;}
.search-box input::placeholder{color:var(--text3);}
.fgroup{display:flex;gap:8px;}
.fgroup select{
  background:var(--bg2);border:1px solid var(--border);border-radius:8px;
  padding:7px 12px;color:var(--text1);font-size:12.5px;cursor:pointer;outline:none;
  transition:border-color .2s ease;
}
.fgroup select:hover,.fgroup select:focus{border-color:var(--accent);}
.export-btn{
  display:flex;align-items:center;gap:6px;padding:7px 14px;
  background:var(--accent-dim);border:1px solid rgba(0,200,248,.35);
  border-radius:8px;color:var(--accent);font-size:12.5px;font-weight:600;
  transition:all .2s ease;margin-left:auto;
}
.export-btn:hover{background:var(--accent-glow);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   STOCK TABLE
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.table-wrap{
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--radius);overflow:auto;
}
.stock-table{width:100%;border-collapse:collapse;}
.stock-table thead th{
  padding:11px 14px;font-size:10.5px;font-weight:600;
  text-transform:uppercase;letter-spacing:.5px;color:var(--text3);
  background:var(--bg1);text-align:left;border-bottom:1px solid var(--border);
  white-space:nowrap;cursor:pointer;user-select:none;transition:color .15s;
}
.stock-table thead th:hover{color:var(--text1);}
.stock-table thead th i{margin-left:4px;opacity:.5;font-size:10px;transition:opacity .15s, color .15s;}
.stock-table thead th:hover i{opacity:.85;}
.stock-table thead th.sorted-asc,
.stock-table thead th.sorted-desc{color:#5ce1e6;}
.stock-table thead th.sorted-asc i,
.stock-table thead th.sorted-desc i{opacity:1;color:#5ce1e6;}

/* Inline ranking count badge (e.g. "Stock Rankings  25") */
.ranking-count{
  display:inline-block;
  margin-left:8px;padding:2px 8px;
  background:rgba(92,225,230,.12);border:1px solid rgba(92,225,230,.35);
  border-radius:999px;
  font-size:11px;font-weight:700;color:#5ce1e6;
  font-family:'JetBrains Mono',monospace;
  vertical-align:middle;
}
.stock-table tbody tr{border-bottom:1px solid var(--border);transition:background .12s ease;}
.stock-table tbody tr:last-child{border-bottom:none;}
.stock-table tbody tr:hover{background:rgba(255,255,255,.025);}
.stock-table td{padding:13px 14px;font-size:12.5px;color:var(--text1);white-space:nowrap;vertical-align:middle;}

/* â”€â”€ Stock info cell â”€â”€ */
.si-ticker{font-size:14px;font-weight:700;font-family:'JetBrains Mono',monospace;}
.si-name{font-size:10.5px;color:var(--text2);max-width:150px;overflow:hidden;text-overflow:ellipsis;margin-top:1px;}
.si-tags{display:flex;gap:3px;margin-top:4px;flex-wrap:wrap;}
.si-tag{
  padding:1px 5px;background:var(--accent-dim);border-radius:3px;
  font-size:9px;color:var(--accent);font-weight:600;
}

/* â”€â”€ Price cells â”€â”€ */
.pc-price{font-family:'JetBrains Mono',monospace;font-weight:600;}
.pc-chg{font-family:'JetBrains Mono',monospace;font-weight:600;}
.pc-chg.up{color:var(--green);}
.pc-chg.dn{color:var(--red);}

/* â”€â”€ Sentiment cell â”€â”€ */
.senti-cell{display:flex;align-items:center;gap:7px;}
.senti-bar{width:65px;height:5px;background:var(--border);border-radius:3px;overflow:hidden;}
.senti-fill{height:100%;border-radius:3px;}
.senti-fill.s5{background:var(--green);}
.senti-fill.s4{background:#4ade80;}
.senti-fill.s3{background:var(--yellow);}
.senti-fill.s2{background:var(--orange);}
.senti-fill.s1{background:var(--red);}
.senti-num{font-size:11.5px;font-weight:600;font-family:'JetBrains Mono',monospace;min-width:24px;}

/* â”€â”€ Social cell â”€â”€ */
.social-cell{display:flex;flex-direction:column;gap:2px;}
.sc-total{font-size:13px;font-weight:600;}
.sc-break{font-size:10px;color:var(--text3);}
.sc-r{color:#ff4500;}
.sc-t{color:#1d9bf0;}
.sc-s{color:#5cc85c;}

/* â”€â”€ Fundamentals cell â”€â”€ */
.fund-cell{display:flex;flex-direction:column;gap:3px;font-size:10.5px;}
.fund-row{display:flex;gap:5px;align-items:center;}
.fl{color:var(--text3);}
.fv{color:var(--text1);font-family:'JetBrains Mono',monospace;}
.fv.good{color:var(--green);}
.fv.bad{color:var(--red);}
.fv.na{color:var(--text3);}

/* â”€â”€ Political cell â”€â”€ */
.pol-cell{display:flex;flex-direction:column;gap:3px;}
.pol-badge{
  padding:2px 6px;border-radius:3px;font-size:9px;font-weight:700;
  text-transform:uppercase;display:inline-block;
}
.pol-badge.positive{background:var(--green-dim);color:var(--green);}
.pol-badge.negative{background:var(--red-dim);color:var(--red);}
.pol-badge.mixed{background:var(--yellow-dim);color:var(--yellow);}
.pol-badge.neutral{background:var(--accent-dim);color:var(--accent);}
.pol-note{font-size:10px;color:var(--text3);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.3;}

/* â”€â”€ Recommendation badge â”€â”€ */
.rec{
  padding:5px 10px;border-radius:6px;font-size:10.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;
}
.rec.strong-buy{background:rgba(0,232,122,.14);color:var(--c-strong-buy);border:1px solid rgba(0,232,122,.3);}
.rec.buy{background:rgba(74,222,128,.1);color:var(--c-buy);border:1px solid rgba(74,222,128,.28);}
.rec.hold{background:rgba(255,193,7,.1);color:var(--c-hold);border:1px solid rgba(255,193,7,.28);}
.rec.sell{background:rgba(249,115,22,.1);color:var(--c-sell);border:1px solid rgba(249,115,22,.28);}
.rec.strong-sell{background:rgba(255,61,85,.14);color:var(--c-strong-sell);border:1px solid rgba(255,61,85,.3);}
.rec.spec{background:rgba(168,85,247,.14);color:var(--c-spec);border:1px solid rgba(168,85,247,.3);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   CAP STATS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.cap-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px;}
.cap-stat{
  background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:14px;
}
.cap-stat-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;}
.cap-stat-value{font-size:19px;font-weight:700;font-family:'JetBrains Mono',monospace;}
.cap-stat-sub{font-size:11px;color:var(--text2);margin-top:3px;}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   SOCIAL BUZZ
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.social-platform-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px;}
.platform-card{padding:0;overflow:hidden;}
.platform-head{
  display:flex;align-items:center;gap:12px;padding:14px 18px;
  border-bottom:1px solid var(--border);
}
.platform-head h3{font-size:15px;font-weight:700;}
.platform-head span{font-size:10px;color:var(--text3);display:block;margin-top:2px;}
.platform-head i{font-size:22px;flex-shrink:0;}
.platform-pill{
  margin-left:auto;padding:3px 9px;border-radius:20px;font-size:10px;font-weight:600;
  background:var(--bg1);border:1px solid var(--border);color:var(--text2);white-space:nowrap;
}
.reddit-head{background:linear-gradient(135deg,#1a0800,#2d1300);border-left:3px solid #ff4500;}
.reddit-head i{color:#ff4500;}
.reddit2-head{background:linear-gradient(135deg,#0f0a1a,#1a0a26);border-left:3px solid #cc4500;}
.reddit2-head i{color:#ff7a3a;}
.twitter-head{background:linear-gradient(135deg,#00091a,#001f3d);border-left:3px solid #1d9bf0;}
.twitter-head i{color:#1d9bf0;}
.st-head{background:linear-gradient(135deg,#001a09,#002d14);border-left:3px solid #5cc85c;}
.st-head i{color:#5cc85c;}

/* StockTwits trending row (different layout from reddit-style posts) */
.st-trending-row{
  display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;
  padding:11px 18px;border-bottom:1px solid var(--border);transition:background .12s ease;
}
.st-trending-row:last-child{border-bottom:none;}
.st-trending-row:hover{background:rgba(92,200,92,.04);}
.stt-sym{font-weight:800;font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--text1);letter-spacing:.4px;}
.stt-title{font-size:11.5px;color:var(--text3);margin-top:2px;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
.stt-watchers{
  display:flex;flex-direction:column;align-items:flex-end;gap:1px;
  font-family:'JetBrains Mono',monospace;
}
.stt-w-val{font-size:13px;font-weight:700;color:#5cc85c;}
.stt-w-lbl{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;}
.stt-rank{
  width:26px;height:26px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;font-family:'JetBrains Mono',monospace;
  background:rgba(92,200,92,.10);color:#5cc85c;border:1px solid rgba(92,200,92,.25);
}
.stt-empty{padding:30px 18px;text-align:center;color:var(--text3);font-size:12px;line-height:1.55;}

/* â”€â”€ Social Post â”€â”€ */
.s-post{padding:13px 18px;border-bottom:1px solid var(--border);transition:background .12s ease;}
.s-post:last-child{border-bottom:none;}
.s-post:hover{background:rgba(255,255,255,.02);}
.sp-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;}
.sp-author{font-size:11.5px;font-weight:600;color:var(--text2);}
.sp-sub{font-size:10px;color:var(--text3);}
.sp-time{font-size:10px;color:var(--text3);}
.sp-content{font-size:12.5px;color:var(--text1);line-height:1.55;margin-bottom:8px;}
.sp-footer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.sp-tickers{display:flex;gap:3px;}
.sp-ticker{
  padding:1px 6px;background:var(--accent-dim);border-radius:3px;
  font-size:10px;color:var(--accent);font-weight:700;
}
.sp-likes{font-size:10px;color:var(--text3);display:flex;align-items:center;gap:3px;}
.sp-likes i{color:#ff4500;}
.sp-senti{
  padding:2px 7px;border-radius:10px;font-size:10px;font-weight:600;
}
.sp-senti.bullish{background:var(--green-dim);color:var(--green);}
.sp-senti.bearish{background:var(--red-dim);color:var(--red);}
.sp-senti.neutral{background:var(--yellow-dim);color:var(--yellow);}
.mt20{margin-top:16px;}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MOST MENTIONED â€” stats strip + podium + rank rows
   Replaces the old mentionsChart canvas with in-place
   DOM rendering so refresh cycles no longer flash the
   panel to white while Chart.js tears down.
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.most-mentioned-card{contain:layout paint;}
.mm-wrap{display:flex;flex-direction:column;gap:14px;padding:6px 2px 2px;min-height:240px;}

.mm-strip{
  display:grid;grid-template-columns:repeat(3,1fr);gap:10px;
  background:linear-gradient(180deg,rgba(0,200,248,.05),rgba(0,200,248,.01));
  border:1px solid var(--border);border-radius:10px;padding:10px 12px;
}
.mm-stat{display:flex;flex-direction:column;gap:2px;min-width:0;}
.mm-stat + .mm-stat{border-left:1px solid var(--border);padding-left:12px;}
.mm-stat-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.4px;font-weight:600;}
.mm-stat-val{display:flex;align-items:baseline;gap:8px;font-size:18px;font-weight:800;color:var(--text1);flex-wrap:wrap;}
.mm-stat-sym{font-size:17px;letter-spacing:.5px;}
.mm-stat-sub{font-size:11px;font-weight:700;padding:2px 7px;border-radius:10px;}

.mm-podium-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.mm-podium{
  position:relative;padding:14px 14px 12px;border-radius:10px;
  background:var(--bg2);border:1px solid var(--border);
  display:flex;flex-direction:column;gap:8px;overflow:hidden;
}
.mm-podium::before{
  content:"";position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,var(--accent),transparent);
}
.mm-rank-1::before{background:linear-gradient(90deg,#ffd54a,#ff9800);}
.mm-rank-2::before{background:linear-gradient(90deg,#cfd8e3,#8696aa);}
.mm-rank-3::before{background:linear-gradient(90deg,#cd7f32,#8b5a2b);}
.mm-rank-1{background:linear-gradient(180deg,rgba(255,193,7,.09),var(--bg2));}
.mm-rank-2{background:linear-gradient(180deg,rgba(180,195,220,.06),var(--bg2));}
.mm-rank-3{background:linear-gradient(180deg,rgba(205,127,50,.07),var(--bg2));}

.mm-rank-badge{
  position:absolute;top:10px;right:10px;display:flex;align-items:center;gap:5px;
  padding:3px 8px;border-radius:10px;font-size:10px;font-weight:700;
  background:rgba(255,255,255,.04);border:1px solid var(--border);color:var(--text2);
}
.mm-rank-1 .mm-rank-badge i{color:#ffd54a;}
.mm-rank-2 .mm-rank-badge i{color:#cfd8e3;}
.mm-rank-3 .mm-rank-badge i{color:#cd7f32;}

.mm-podium-head{display:flex;align-items:baseline;gap:10px;}
.mm-sym{font-size:22px;font-weight:800;letter-spacing:.6px;color:var(--text1);}
.mm-podium-chg{font-size:13px;font-weight:700;padding:2px 8px;border-radius:10px;}
.mm-podium-chg.up{background:var(--green-dim);color:var(--green);}
.mm-podium-chg.dn{background:var(--red-dim);color:var(--red);}
.mm-podium-chg.flat{background:var(--bg1);color:var(--text3);}

.mm-count{display:flex;align-items:baseline;gap:6px;font-size:24px;font-weight:800;color:var(--text1);}
.mm-count span{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.4px;}

.mm-breakdown{display:flex;gap:6px;flex-wrap:wrap;}
.mm-src{
  display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;
  padding:3px 7px;border-radius:8px;background:var(--bg1);border:1px solid var(--border);color:var(--text2);
}
.mm-src i{font-size:11px;}
.mm-src.src-rd i{color:#ff4500;}
.mm-src.src-tw i{color:#1d9bf0;}
.mm-src.src-st i{color:#5cc85c;}

.mm-sent{
  display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;
  padding:4px 9px;border-radius:10px;width:max-content;
}
.mm-sent-dot{width:6px;height:6px;border-radius:50%;display:inline-block;}
.mm-sent-pos{background:var(--green-dim);color:var(--green);}
.mm-sent-pos .mm-sent-dot{background:var(--green);box-shadow:0 0 6px var(--green);}
.mm-sent-neu{background:var(--yellow-dim);color:var(--yellow);}
.mm-sent-neu .mm-sent-dot{background:var(--yellow);}
.mm-sent-cau{background:rgba(249,115,22,.15);color:var(--orange);}
.mm-sent-cau .mm-sent-dot{background:var(--orange);}
.mm-sent-neg{background:var(--red-dim);color:var(--red);}
.mm-sent-neg .mm-sent-dot{background:var(--red);}

.mm-rows{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.mm-row{
  display:grid;grid-template-columns:44px 70px 1fr 70px 72px;align-items:center;gap:10px;
  padding:9px 12px;font-size:12.5px;border-bottom:1px solid var(--border);
}
.mm-row:last-child{border-bottom:none;}
.mm-row:nth-child(even){background:rgba(255,255,255,.01);}
.mm-row-rank{color:var(--text3);font-weight:700;font-size:11px;}
.mm-row-sym{font-weight:800;color:var(--text1);letter-spacing:.4px;}
.mm-row-bar{position:relative;height:8px;background:rgba(255,255,255,.04);border-radius:6px;overflow:hidden;}
.mm-row-fill{height:100%;border-radius:6px;transition:width .25s ease;}
.mm-row-fill.mm-sent-pos{background:linear-gradient(90deg,rgba(0,232,122,.35),var(--green));}
.mm-row-fill.mm-sent-neu{background:linear-gradient(90deg,rgba(255,193,7,.35),var(--yellow));}
.mm-row-fill.mm-sent-cau{background:linear-gradient(90deg,rgba(249,115,22,.35),var(--orange));}
.mm-row-fill.mm-sent-neg{background:linear-gradient(90deg,rgba(255,61,85,.35),var(--red));}
.mm-row-count{font-variant-numeric:tabular-nums;color:var(--text1);font-weight:700;text-align:right;}
.mm-row-chg{font-variant-numeric:tabular-nums;font-weight:700;text-align:right;padding:2px 8px;border-radius:10px;font-size:11px;}
.mm-row-chg.up{background:var(--green-dim);color:var(--green);}
.mm-row-chg.dn{background:var(--red-dim);color:var(--red);}
.mm-row-chg.flat{background:var(--bg1);color:var(--text3);}

.mm-footer{font-size:10.5px;color:var(--text3);text-align:center;padding-top:4px;}

.mm-empty{
  display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 16px;text-align:center;
  background:linear-gradient(180deg,rgba(255,255,255,.02),transparent);
  border:1px dashed var(--border);border-radius:10px;color:var(--text2);
}
.mm-empty i{font-size:28px;color:var(--text3);opacity:.6;}
.mm-empty-title{font-size:14px;font-weight:700;color:var(--text1);}
.mm-empty-sub{font-size:11.5px;color:var(--text3);max-width:520px;line-height:1.5;}

/* Tablet: collapse 3-col podium into 2 / 1 as needed */
@media (max-width: 900px){
  .mm-strip{grid-template-columns:1fr 1fr;}
  .mm-strip .mm-stat:nth-child(3){grid-column:1/-1;border-left:none;padding-left:0;border-top:1px solid var(--border);padding-top:8px;}
  .mm-stat + .mm-stat{border-left:none;padding-left:0;}
  .mm-stat:nth-child(2){border-left:1px solid var(--border);padding-left:12px;}
  .mm-podium-grid{grid-template-columns:1fr 1fr;}
  .mm-podium.mm-rank-3{grid-column:1/-1;}
  .mm-row{grid-template-columns:34px 60px 1fr 58px 62px;gap:8px;padding:8px 10px;}
}
@media (max-width: 600px){
  .mm-strip{grid-template-columns:1fr;}
  .mm-strip .mm-stat:nth-child(2){border-left:none;padding-left:0;border-top:1px solid var(--border);padding-top:8px;}
  .mm-strip .mm-stat:nth-child(3){border-top:1px solid var(--border);padding-top:8px;}
  .mm-podium-grid{grid-template-columns:1fr;}
  .mm-podium.mm-rank-3{grid-column:auto;}
  .mm-sym{font-size:19px;}
  .mm-count{font-size:20px;}
  .mm-row{grid-template-columns:28px 55px 1fr 52px 58px;font-size:11.5px;gap:6px;padding:7px 8px;}
  .mm-breakdown{gap:4px;}
  .mm-src{padding:2px 6px;font-size:10px;}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   NEWS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.news-filters{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap;}
.nfbtn{
  padding:6px 15px;background:var(--bg2);border:1px solid var(--border);
  border-radius:20px;color:var(--text2);font-size:12px;cursor:pointer;transition:all .2s ease;
}
.nfbtn.active,.nfbtn:hover{background:var(--accent-dim);border-color:var(--accent);color:var(--accent);}
.news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;}
.nc{
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);
  padding:16px;transition:all .2s ease;position:relative;overflow:hidden;
}
.nc:hover{border-color:var(--border2);transform:translateY(-2px);box-shadow:var(--shadow);}
.nc.breaking{border-color:var(--red);}
.nc.breaking::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--red);}
.nc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;}
.nc-src{font-size:10px;font-weight:700;color:var(--accent);text-transform:uppercase;}
.nc-time{font-size:10px;color:var(--text3);}
.nc-breaking{
  padding:2px 7px;background:var(--red-dim);border:1px solid var(--red);
  border-radius:4px;font-size:9px;font-weight:700;color:var(--red);
  text-transform:uppercase;animation:blink 1.5s infinite;
}
.nc-title{font-size:13.5px;font-weight:600;line-height:1.5;margin-bottom:8px;color:var(--text1);}
.nc-summary{font-size:12px;color:var(--text2);line-height:1.6;margin-bottom:11px;}
.nc-footer{display:flex;align-items:center;justify-content:space-between;}
.nc-tickers{display:flex;gap:4px;}
.nc-ticker{
  padding:2px 7px;background:var(--accent-dim);border-radius:4px;
  font-size:10px;font-weight:700;color:var(--accent);
}
.nc-senti{
  padding:3px 10px;border-radius:10px;font-size:10px;font-weight:700;text-transform:uppercase;
}
.nc-senti.bullish{background:var(--green-dim);color:var(--green);}
.nc-senti.bearish{background:var(--red-dim);color:var(--red);}
.nc-senti.neutral{background:var(--yellow-dim);color:var(--yellow);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   POLITICAL  (redesigned â€” 100% live data)
   Flicker guards:
     â€¢ no `transition: all` anywhere in this block
     â€¢ containers have stable `min-height` so async loads
       don't cause layout-shift repaints during scroll
     â€¢ `contain: layout paint` on cards isolates repaints
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* Climate summary strip at the top of the Political tab */
.political-climate{
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:14px 18px;margin-bottom:14px;
  background:linear-gradient(135deg, var(--bg2), var(--bg1));
  border:1px solid var(--border);border-radius:var(--radius);
  min-height:78px;flex-wrap:wrap;contain:layout paint;
}
.political-climate .pc-left{display:flex;flex-direction:column;gap:2px;}
.political-climate .pc-label{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;}
.political-climate .pc-value{font-size:22px;font-weight:800;line-height:1.1;}
.political-climate .pc-stats{display:flex;gap:22px;flex-wrap:wrap;}
.political-climate .pc-stat{display:flex;flex-direction:column;gap:2px;min-width:88px;}
.political-climate .pc-stat-label{font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.4px;}
.political-climate .pc-stat-value{font-size:16px;font-weight:700;color:var(--text1);}
.political-climate .pc-green{color:var(--green);}
.political-climate .pc-red{color:var(--red);}
.political-climate .pc-yellow{color:var(--yellow);}
.political-climate .pc-text3{color:var(--text3);}

.political-top-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px;
  align-items:stretch;
}
.political-top-grid > .card{min-height:320px;contain:layout paint;}
/* Radar container with reserved height so the chart doesn't jump-resize
   as the tab becomes visible or data refreshes. */
.radar-wrap{height:280px;position:relative;}
.radar-wrap canvas{width:100%!important;height:100%!important;}

#policyImpact{display:flex;flex-direction:column;gap:8px;min-height:260px;}
.pi-item{
  display:flex;align-items:center;gap:12px;padding:11px 14px;
  background:var(--bg1);border:1px solid var(--border);border-radius:8px;
  min-height:48px;contain:layout paint;
}
.pi-item.pi-empty{opacity:.55;}
.pi-icon{font-size:18px;flex-shrink:0;}
.pi-text{flex:1;font-size:12.5px;color:var(--text2);line-height:1.4;}
.pi-text strong{color:var(--text1);}
.pi-impact{
  font-size:11px;font-weight:700;padding:3px 9px;border-radius:5px;
  background:var(--bg2);border:1px solid var(--border);white-space:nowrap;
}
.pi-impact.pos{color:var(--green);border-color:rgba(0,232,122,.35);background:var(--green-dim);}
.pi-impact.neg{color:var(--red);  border-color:rgba(255,61,85,.35);background:var(--red-dim);}
.pi-impact.mix{color:var(--yellow);border-color:rgba(230,196,73,.35);background:var(--yellow-dim);}
.pi-impact.neu{color:var(--text3);}

/* â”€â”€ Policy events section (live news-driven) â”€â”€ */
.pe-section{margin-bottom:20px;}
#politicalEvents{display:flex;flex-direction:column;gap:10px;min-height:160px;}
.pe-card{
  background:var(--bg1);border:1px solid var(--border);border-radius:10px;
  padding:16px;display:grid;grid-template-columns:44px 1fr auto;gap:14px;
  align-items:flex-start;contain:layout paint;
}
.pe-card:hover{border-color:var(--border2);}
.pe-card.high{border-left:3px solid var(--red);}
.pe-card.medium{border-left:3px solid var(--yellow);}
.pe-card.positive{border-left:3px solid var(--green);}
.pe-icon{
  width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;
}
.pe-icon.risk{background:var(--red-dim);}
.pe-icon.warn{background:var(--yellow-dim);}
.pe-icon.pos{background:var(--green-dim);}
.pe-icon.info{background:var(--accent-dim);}
.pe-body{min-width:0;}
.pe-title{font-size:14px;font-weight:600;margin-bottom:6px;line-height:1.35;color:var(--text1);}
.pe-desc{font-size:12.5px;color:var(--text2);line-height:1.55;margin-bottom:10px;}
.pe-sectors{display:flex;gap:5px;flex-wrap:wrap;}
.pe-theme-tag{
  padding:3px 9px;background:var(--accent-dim);border:1px solid rgba(92,225,230,.35);
  border-radius:4px;font-size:10px;color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.3px;
}
.pe-chip{
  padding:3px 8px;background:var(--bg2);border:1px solid var(--border);
  border-radius:4px;font-size:10px;color:var(--text2);
}
.pe-meta{text-align:right;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:5px;min-width:86px;}
.pe-impact-badge{
  display:inline-block;padding:4px 10px;border-radius:6px;
  font-size:10px;font-weight:700;text-transform:uppercase;
}
.pe-impact-badge.bullish{background:var(--green-dim);color:var(--green);}
.pe-impact-badge.bearish{background:var(--red-dim);color:var(--red);}
.pe-impact-badge.mixed{background:var(--yellow-dim);color:var(--yellow);}
.pe-date{font-size:10.5px;color:var(--text3);}
.pe-link{
  font-size:10.5px;color:var(--accent);text-decoration:none;
  padding:3px 8px;background:var(--bg2);border:1px solid var(--border);border-radius:4px;
}
.pe-link:hover{border-color:var(--accent);}
.pe-empty{
  padding:30px 24px;text-align:center;background:var(--bg1);
  border:1px dashed var(--border);border-radius:10px;color:var(--text2);
}
.pe-empty i{font-size:32px;color:var(--text3);margin-bottom:10px;display:block;}
.pe-empty h4{font-size:14px;color:var(--text1);margin-bottom:8px;}
.pe-empty p{font-size:12.5px;color:var(--text2);line-height:1.5;max-width:520px;margin:0 auto;}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   TRUTH SOCIAL
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.truth-card{
  border:1px solid rgba(239,68,68,.22);
  background:linear-gradient(135deg, rgba(30,10,10,.35), var(--bg2));
  margin-top:20px;contain:layout paint;
}
.truth-live-dot{
  display:inline-block;width:8px;height:8px;border-radius:50%;
  background:#ef4444;margin-left:8px;vertical-align:middle;
  box-shadow:0 0 0 0 rgba(239,68,68,.6);animation:truthPulse 1.6s infinite;
}
@keyframes truthPulse{
  0%  {box-shadow:0 0 0 0 rgba(239,68,68,.6);}
  70% {box-shadow:0 0 0 9px rgba(239,68,68,0);}
  100%{box-shadow:0 0 0 0 rgba(239,68,68,0);}
}
.truth-header-actions{display:flex;align-items:center;gap:10px;}
.truth-overall{
  padding:4px 10px;border-radius:6px;font-size:11px;font-weight:700;
  background:var(--bg1);border:1px solid var(--border);color:var(--text2);
  text-transform:uppercase;letter-spacing:.5px;
}
.truth-overall.bullish{background:var(--green-dim);color:var(--green);border-color:var(--green);}
.truth-overall.bearish{background:var(--red-dim);color:var(--red);border-color:var(--red);}
.truth-overall.neutral{background:var(--yellow-dim);color:var(--yellow);border-color:var(--yellow);}
.truth-subtitle{font-size:12.5px;color:var(--text2);margin:6px 0 14px;line-height:1.5;}

.truth-grid{display:grid;grid-template-columns:minmax(240px,1fr) 2fr;gap:16px;}
.truth-section-title{font-size:12.5px;font-weight:700;color:var(--text2);margin-bottom:10px;letter-spacing:.3px;}
.truth-section-title .subtle{color:var(--text3);font-weight:500;font-size:11px;}

/* Nested scroll removed â€” was causing "white flash" during page scroll.
   List now flows with page scroll; visual "scroll area" achieved via
   min-height reservation so truth feeds don't cause layout shift when
   they load asynchronously. */
.truth-impact-list{display:flex;flex-direction:column;gap:8px;min-height:200px;}
.ti-row{
  display:grid;grid-template-columns:50px 1fr auto;align-items:center;gap:10px;
  padding:10px 12px;background:var(--bg1);border:1px solid var(--border);
  border-radius:8px;cursor:pointer;transition:border-color .15s ease;
}
.ti-row:hover{border-color:var(--accent);}
.ti-sym{font-family:'SF Mono','Monaco',monospace;font-weight:800;font-size:14px;color:var(--text1);letter-spacing:.5px;}
.ti-mid{display:flex;flex-direction:column;gap:3px;min-width:0;}
.ti-mentions{font-size:11px;color:var(--text3);}
.ti-sent-bar{height:5px;background:var(--bg3);border-radius:4px;overflow:hidden;}
.ti-sent-fill{height:100%;border-radius:4px;transition:width .25s ease;}
.ti-sent-fill.bullish{background:linear-gradient(90deg,#10b981,#34d399);}
.ti-sent-fill.bearish{background:linear-gradient(90deg,#ef4444,#f87171);}
.ti-sent-fill.neutral{background:linear-gradient(90deg,#6b7280,#9ca3af);}
.ti-rec{
  padding:4px 9px;border-radius:5px;font-size:10px;font-weight:800;letter-spacing:.5px;
  text-transform:uppercase;flex-shrink:0;
}
.ti-rec.buy{background:var(--green-dim);color:var(--green);}
.ti-rec.sell{background:var(--red-dim);color:var(--red);}
.ti-rec.watch{background:var(--yellow-dim);color:var(--yellow);}

.truth-feed{display:flex;flex-direction:column;gap:10px;min-height:200px;}
.tf-item{
  padding:12px 14px;background:var(--bg1);border:1px solid var(--border);border-radius:10px;
  transition:border-color .15s ease,background-color .15s ease;
}
.tf-item.bullish{border-left:3px solid var(--green);}
.tf-item.bearish{border-left:3px solid var(--red);}
.tf-item.neutral{border-left:3px solid var(--text3);}
.tf-item:hover{border-color:var(--border2);background:var(--bg2);}
.tf-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:7px;}
.tf-author{font-size:12px;font-weight:700;color:var(--text1);display:flex;align-items:center;gap:6px;}
.tf-author::before{
  content:'';display:inline-block;width:18px;height:18px;border-radius:50%;
  background:linear-gradient(135deg,#ef4444,#dc2626);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.15);
}
.tf-time{font-size:11px;color:var(--text3);}
.tf-content{font-size:13px;color:var(--text1);line-height:1.55;margin-bottom:8px;word-break:break-word;}
.tf-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:11px;}
.tf-chip{
  padding:2px 8px;background:var(--bg2);border:1px solid var(--border);border-radius:4px;
  font-family:'SF Mono','Monaco',monospace;font-weight:700;color:var(--accent);font-size:10.5px;
}
.tf-sent-badge{
  padding:2px 7px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;
}
.tf-sent-badge.bullish{background:var(--green-dim);color:var(--green);}
.tf-sent-badge.bearish{background:var(--red-dim);color:var(--red);}
.tf-sent-badge.neutral{background:var(--bg3);color:var(--text3);}
.tf-link{margin-left:auto;color:var(--text3);font-size:11px;}
.tf-link:hover{color:var(--accent);}

/* Dashboard mini Truth card */
.truth-mini-card{
  border:1px solid rgba(239,68,68,.18);
  background:linear-gradient(135deg, rgba(30,10,10,.25), var(--bg2));
}
.truth-mini-summary{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;}
.truth-mini-label{font-size:11.5px;color:var(--text2);font-weight:600;}
.truth-mini-overall{
  padding:3px 9px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;
  background:var(--bg1);color:var(--text2);border:1px solid var(--border);
}
.truth-mini-overall.bullish{background:var(--green-dim);color:var(--green);border-color:var(--green);}
.truth-mini-overall.bearish{background:var(--red-dim);color:var(--red);border-color:var(--red);}
.truth-mini-feed{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow-y:auto;}
.tmini-item{
  padding:8px 10px;background:var(--bg1);border:1px solid var(--border);border-radius:7px;
  font-size:12px;line-height:1.5;color:var(--text1);
}
.tmini-item.bullish{border-left:2px solid var(--green);}
.tmini-item.bearish{border-left:2px solid var(--red);}
.tmini-meta{display:flex;gap:6px;margin-top:5px;font-size:10px;color:var(--text3);flex-wrap:wrap;}
.tmini-meta .tmini-ticker{
  font-family:'SF Mono','Monaco',monospace;color:var(--accent);font-weight:700;
  padding:1px 5px;background:var(--bg2);border-radius:3px;
}

@media (max-width:900px){
  .truth-grid{grid-template-columns:1fr;}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MEME STOCKS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.meme-banner{
  display:flex;justify-content:space-between;align-items:flex-start;
  margin-bottom:20px;padding:18px 22px;
  background:linear-gradient(135deg,#12063a,#0a1535);
  border:1px solid rgba(168,85,247,.3);border-radius:var(--radius);
}
.meme-banner h2{font-size:22px;font-weight:800;margin-bottom:5px;}
.meme-banner p{font-size:13px;color:var(--text2);}
.risk-pill{
  display:flex;align-items:center;gap:7px;padding:10px 16px;
  background:rgba(255,61,85,.12);border:1px solid var(--red);
  border-radius:8px;font-size:11px;font-weight:700;color:var(--red);
  text-transform:uppercase;letter-spacing:.5px;animation:blink 3s infinite;
  flex-shrink:0;
}
.meme-stats-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px;
}
/* Live-insight ribbon spans the full width above the 4 stat cards */
.meme-insight{
  grid-column:1/-1;
  display:flex;align-items:center;gap:10px;
  padding:11px 16px;border-radius:10px;
  background:linear-gradient(135deg,rgba(168,85,247,.10),rgba(0,200,248,.06));
  border:1px solid rgba(168,85,247,.30);
  font-size:13px;color:var(--text1);line-height:1.45;
}
.meme-insight i.fa-brain{color:var(--purple);font-size:16px;flex-shrink:0;}
.meme-insight span{flex:1;}
.meme-insight b{color:var(--accent);font-weight:800;}
.meme-insight-loading{
  display:inline-flex;align-items:center;gap:5px;
  font-size:10.5px;color:var(--text3);font-weight:600;
  padding:3px 8px;border-radius:8px;background:rgba(255,255,255,.04);
  flex-shrink:0;
}

.ms-card{
  background:linear-gradient(135deg,#12063a,#0a1535);
  border:1px solid rgba(168,85,247,.2);border-radius:10px;
  padding:13px 14px;display:flex;flex-direction:column;gap:6px;
  transition:transform .15s ease, border-color .15s ease;
  position:relative;overflow:hidden;
}
.ms-card::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:rgba(168,85,247,.6);
}
.mscard-hot::before     {background:linear-gradient(180deg,#ff9a3d,#ff4500);}
.mscard-squeeze::before {background:linear-gradient(180deg,#ff4d6d,#ff3d55);}
.mscard-mover::before   {background:linear-gradient(180deg,#00e87a,#0098dc);}
.mscard-mentions::before{background:linear-gradient(180deg,#a855f7,#00c8f8);}

.ms-card[data-meme]{cursor:pointer;}
.ms-card[data-meme]:hover{transform:translateY(-2px);border-color:rgba(168,85,247,.6);}

.ms-card-head{
  display:flex;align-items:center;gap:6px;
  font-size:10px;color:rgba(168,85,247,.85);text-transform:uppercase;letter-spacing:.45px;font-weight:700;
}
.ms-card-head i{font-size:11px;}
.mscard-hot     .ms-card-head i{color:var(--orange);}
.mscard-squeeze .ms-card-head i{color:var(--red);}
.mscard-mover   .ms-card-head i{color:var(--accent);}
.mscard-mentions .ms-card-head i{color:var(--purple);}

.ms-label{font-size:10px;color:inherit;letter-spacing:.45px;margin:0;text-transform:uppercase;}

.ms-card-main{
  display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-height:30px;
}
.ms-card-sym{
  font-size:17px;font-weight:800;letter-spacing:.5px;color:var(--text1);
  font-family:'JetBrains Mono',monospace;
}
.ms-card-big{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1;}
.ms-card-big.ms-pending{color:var(--text3);font-size:18px;font-weight:600;}

.ms-sub{font-size:11px;color:var(--text3);margin:0;line-height:1.4;}
.ms-sub b{color:var(--text2);font-weight:700;}

/* Backwards-compat: keep .ms-value rule for any legacy renderers */
.ms-value{font-size:21px;font-weight:800;}

.meme-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;}

/* Velocity badge inside meme-card ticker line */
.mc-vel{
  display:inline-flex;align-items:center;gap:3px;
  margin-left:8px;padding:2px 7px;border-radius:8px;
  font-size:10px;font-weight:700;font-family:'JetBrains Mono',monospace;
  vertical-align:middle;
}
.mc-vel.vel-extreme{background:rgba(255,69,0,.18);color:#ff7a3a;border:1px solid rgba(255,69,0,.45);animation:blink 1.6s infinite;}
.mc-vel.vel-high   {background:rgba(255,154,61,.15);color:#ff9a3d;border:1px solid rgba(255,154,61,.35);}
.mc-vel.vel-normal {background:rgba(255,255,255,.04);color:var(--text3);border:1px solid var(--border);}
.mc-vel i{font-size:9px;}

/* Squeeze warning chip */
.mc-squeeze{
  display:inline-block;margin-bottom:10px;
  padding:4px 10px;border-radius:8px;
  background:linear-gradient(90deg,rgba(255,77,109,.15),rgba(255,61,85,.08));
  border:1px solid rgba(255,77,109,.35);
  font-size:11px;font-weight:700;color:#ff6b85;
  font-family:'JetBrains Mono',monospace;
}

/* â”€â”€ Meme card â”€â”€ */
.meme-card{
  background:linear-gradient(135deg,#100836,#091629);
  border:1px solid rgba(168,85,247,.2);border-radius:var(--radius);
  padding:16px;transition:all .2s ease;position:relative;overflow:hidden;
}
.meme-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--purple),var(--accent));
}
.meme-card:hover{border-color:rgba(168,85,247,.5);transform:translateY(-3px);box-shadow:0 12px 32px rgba(168,85,247,.15);}
.mc-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:13px;}
.mc-ticker{font-size:20px;font-weight:800;font-family:'JetBrains Mono',monospace;}
.mc-name{font-size:10.5px;color:var(--text3);margin-top:2px;}
.mc-price{text-align:right;}
.mc-pval{font-size:18px;font-weight:700;font-family:'JetBrains Mono',monospace;}
.mc-pchg{font-size:12px;font-weight:600;font-family:'JetBrains Mono',monospace;margin-top:2px;}
.mc-pchg.up{color:var(--green);}
.mc-pchg.dn{color:var(--red);}
.mc-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;}
.mc-metric{background:rgba(0,0,0,.25);border-radius:7px;padding:9px;}
.mc-mlabel{font-size:9.5px;color:rgba(168,85,247,.75);text-transform:uppercase;letter-spacing:.4px;margin-bottom:3px;}
.mc-mvalue{font-size:14px;font-weight:700;}
.mc-rockets{font-size:15px;letter-spacing:2px;}
.mc-sbar-wrap{margin-bottom:12px;}
.mc-sbar-head{font-size:10.5px;color:var(--text2);margin-bottom:5px;display:flex;justify-content:space-between;}
.mc-sbar{height:7px;background:var(--bg1);border-radius:4px;overflow:hidden;}
.mc-sfill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--purple),var(--accent));}
.mc-social{display:flex;gap:12px;font-size:10.5px;color:var(--text3);margin-bottom:12px;}
.mc-social span{display:flex;align-items:center;gap:3px;}
.mc-footer{
  display:flex;align-items:center;justify-content:space-between;
  padding:9px 12px;background:rgba(0,0,0,.2);border-radius:7px;
}
.mc-rec-label{font-size:10px;color:var(--text3);}
.mc-reason{font-size:10.5px;color:var(--text2);margin-top:8px;line-height:1.45;}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   AI SCORE + INSIGHT STYLES
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.ai-score-mini{
  display:flex;flex-direction:column;gap:1px;
}
.insight-row{background:rgba(0,200,248,0.03) !important;}
.insight-row:hover{background:rgba(0,200,248,0.05) !important;}
.ai-insight-cell{
  padding:10px 16px 14px !important;
  font-size:12px;
  color:var(--text2);
  line-height:1.7;
  border-bottom:1px solid var(--border);
  max-width:100%;
}
.ai-insight-cell .ai-insight-text{
  display:inline;
}
/* Visual separator between thesis bullets so a long analysis stays
   readable without forcing the full rankings row to wrap awkwardly. */
.ai-insight-cell .ai-insight-text strong{
  color:var(--text1);font-weight:600;
}
.ai-insight-badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 9px;background:var(--accent-dim);
  border:1px solid rgba(0,200,248,.25);border-radius:4px;
  font-size:10px;font-weight:700;color:var(--accent);
  text-transform:uppercase;letter-spacing:.5px;margin-right:10px;
  white-space:nowrap;vertical-align:middle;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   FOOTER
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.footer{
  border-top:1px solid var(--border);padding:18px 24px;
  background:var(--bg1);margin-top:40px;
}
.footer-inner{
  display:flex;justify-content:space-between;align-items:center;
  max-width:1640px;margin:0 auto;gap:20px;flex-wrap:wrap;
}
.footer-note{font-size:10.5px;color:var(--text3);display:block;margin-top:3px;}
.footer-right{text-align:right;display:flex;flex-direction:column;gap:4px;font-size:10.5px;color:var(--text3);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   RESPONSIVE
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
@media(max-width:1280px){
  .dashboard-grid{display:flex;flex-direction:column;}
  .social-platform-grid{grid-template-columns:1fr;}
  .political-top-grid{grid-template-columns:1fr;}
}
@media(max-width:900px){
  /* Base hide of horizontal nav â€” opened by .open class from the mobile rules below */
  .main-nav{display:none;}
}


/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   WEEKLY WATCHLIST â€” macro ribbon, earnings, setup cards
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.watch-nav{color:#5ce1e6!important;}
.watch-nav.active{color:#fff!important;background:linear-gradient(135deg,rgba(92,225,230,.18),rgba(0,200,248,.12))!important;}

/* â”€â”€â”€ Macro strip â”€â”€â”€ */
.macro-card{margin-bottom:20px;}
.macro-strip{
  display:grid;grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));gap:10px;
}
.macro-item{
  background:var(--bg2);border:1px solid var(--border);border-radius:10px;
  padding:12px 14px;position:relative;overflow:hidden;
  transition:transform .15s, border-color .15s;
}
.macro-item:hover{transform:translateY(-2px);border-color:var(--accent-dim);}
.macro-item .mi-label{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;margin-bottom:4px;}
.macro-item .mi-value{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700;color:var(--text1);line-height:1.1;}
.macro-item .mi-change{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:600;margin-top:3px;}
.macro-item .mi-change.up{color:var(--green);}
.macro-item .mi-change.dn{color:var(--red);}

/* â”€â”€â”€ Earnings list â”€â”€â”€ */
.earnings-card{margin-bottom:20px;}
.earnings-list{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:10px;
}
.earnings-item{
  display:flex;align-items:center;gap:10px;
  background:linear-gradient(135deg, rgba(255,193,7,.06), rgba(255,193,7,.02));
  border:1px solid rgba(255,193,7,.25);border-left:3px solid var(--yellow);
  border-radius:8px;padding:10px 12px;
}
.earnings-item.urgent{
  background:linear-gradient(135deg, rgba(255,61,85,.08), rgba(255,61,85,.02));
  border-color:rgba(255,61,85,.3);border-left-color:var(--red);
  animation:pulse-earnings 2.5s ease-in-out infinite;
}
@keyframes pulse-earnings{
  0%,100%{box-shadow:0 0 0 0 rgba(255,61,85,.2);}
  50%    {box-shadow:0 0 14px 0 rgba(255,61,85,.12);}
}
.ei-ticker{font-family:'JetBrains Mono',monospace;font-weight:800;font-size:15px;color:var(--text1);}
.ei-days{font-size:11px;color:var(--yellow);font-weight:700;}
.ei-date{font-size:11px;color:var(--text3);margin-top:2px;}

/* â”€â”€â”€ Watchlist controls â”€â”€â”€ */
.watchlist-controls{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:14px;margin-bottom:18px;padding:12px 14px;
  background:var(--bg2);border:1px solid var(--border);border-radius:10px;
}
.wc-filters{display:flex;flex-wrap:wrap;gap:6px;}
.wfbtn{
  padding:7px 13px;font-size:12px;font-weight:600;
  background:var(--bg3);border:1px solid var(--border);border-radius:6px;
  color:var(--text2);cursor:pointer;transition:.15s;
}
.wfbtn:hover{border-color:var(--accent-dim);color:var(--text1);}
.wfbtn.active{background:var(--accent);color:#021018;border-color:var(--accent);}
.wc-right{display:flex;align-items:center;gap:12px;}
.wc-updated{font-size:11px;color:var(--text3);font-family:'JetBrains Mono',monospace;}

/* â”€â”€â”€ Watchlist cards â”€â”€â”€ */
.watchlist-grid{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(380px, 1fr));gap:16px;
}
.wl-card{
  background:linear-gradient(145deg, var(--bg2), var(--bg3));
  border:1px solid var(--border);border-radius:12px;padding:16px;
  display:flex;flex-direction:column;gap:12px;
  position:relative;overflow:hidden;
  transition:transform .2s, border-color .2s, box-shadow .2s;
}
.wl-card:hover{transform:translateY(-3px);border-color:var(--accent-dim);box-shadow:0 10px 28px rgba(0,0,0,.35);}
.wl-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg, transparent, var(--accent), transparent);
  opacity:.8;
}
.wl-card.high::before {background:linear-gradient(90deg, transparent, var(--green), transparent);}
.wl-card.medium::before{background:linear-gradient(90deg, transparent, var(--yellow), transparent);}
.wl-card.low::before   {background:linear-gradient(90deg, transparent, #6b7aa0, transparent);}

.wl-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.wl-title{flex:1;}
.wl-ticker{font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:800;color:var(--text1);letter-spacing:.5px;}
.wl-name{font-size:12px;color:var(--text3);margin-top:2px;}
.wl-rank{
  display:flex;align-items:center;justify-content:center;
  width:36px;height:36px;border-radius:50%;
  background:var(--accent-dim);border:1px solid rgba(0,200,248,.4);
  font-family:'JetBrains Mono',monospace;font-weight:800;color:var(--accent);
  font-size:14px;flex-shrink:0;
}
.wl-price-block{text-align:right;}
.wl-price{font-family:'JetBrains Mono',monospace;font-size:16px;font-weight:700;color:var(--text1);}
.wl-change{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;}
.wl-change.up{color:var(--green);}
.wl-change.dn{color:var(--red);}

.wl-badges{display:flex;flex-wrap:wrap;gap:6px;}
.wl-setup-badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 10px;border-radius:5px;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.5px;
}
.wl-setup-badge.setup-earnings  {background:rgba(255,61,85,.18);color:var(--red);border:1px solid rgba(255,61,85,.35);}
.wl-setup-badge.setup-breakout  {background:rgba(0,232,122,.18);color:var(--green);border:1px solid rgba(0,232,122,.35);}
.wl-setup-badge.setup-momentum  {background:rgba(168,85,247,.18);color:var(--purple);border:1px solid rgba(168,85,247,.35);}
.wl-setup-badge.setup-oversold  {background:rgba(0,200,248,.18);color:var(--accent);border:1px solid rgba(0,200,248,.35);}
.wl-setup-badge.setup-value     {background:rgba(255,193,7,.18);color:var(--yellow);border:1px solid rgba(255,193,7,.35);}
.wl-setup-badge.setup-smart     {background:rgba(255,122,0,.18);color:var(--orange);border:1px solid rgba(255,122,0,.35);}
.wl-setup-badge.setup-watch     {background:rgba(100,120,150,.2);color:var(--text2);border:1px solid rgba(100,120,150,.35);}

/* Watchlist-filter empty state: "No X setups right now" + reason + closest candidates */
.wle-empty{
  grid-column:1 / -1;
  padding:32px 28px;text-align:center;
  background:linear-gradient(135deg,var(--bg2),var(--bg1));
  border:1px dashed var(--border);border-radius:14px;
}
.wle-empty .wle-icon{font-size:38px;margin-bottom:10px;}
.wle-empty h4{font-size:15px;font-weight:700;color:var(--text1);margin-bottom:10px;}
.wle-empty p{font-size:12.5px;color:var(--text2);line-height:1.55;max-width:520px;margin:0 auto 16px;}
.wle-candidates{
  display:flex;flex-direction:column;gap:6px;max-width:440px;margin:0 auto 14px;
  text-align:left;
}
.wle-cand-label{
  font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;
  margin-bottom:4px;text-align:center;
}
.wle-cand-row{
  display:grid;grid-template-columns:70px 1fr auto;align-items:center;gap:10px;
  padding:8px 12px;background:var(--bg1);border:1px solid var(--border);border-radius:7px;
  font-size:12px;
}
.wle-cand-sym{font-family:'SF Mono','Monaco',monospace;font-weight:800;color:#5ce1e6;font-size:12.5px;letter-spacing:.4px;}
.wle-cand-meta{color:var(--text2);font-size:11.5px;}
.wle-cand-setup{font-size:10.5px;color:var(--text3);font-weight:600;text-transform:uppercase;letter-spacing:.3px;}
.wle-hint{font-size:11px;color:var(--text3);margin-top:6px;}
.wle-hint strong{color:#5ce1e6;}

.wl-conviction{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 10px;border-radius:5px;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.5px;
}
.wl-conviction.high  {background:rgba(0,232,122,.16);color:var(--green);border:1px solid rgba(0,232,122,.32);}
.wl-conviction.medium{background:rgba(255,193,7,.16);color:var(--yellow);border:1px solid rgba(255,193,7,.32);}
.wl-conviction.low   {background:rgba(100,120,150,.2);color:var(--text2);border:1px solid rgba(100,120,150,.35);}

.wl-score-row{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;background:var(--bg1);border-radius:8px;
  border:1px solid var(--border);
}
.wl-score-num{
  font-family:'JetBrains Mono',monospace;font-size:24px;font-weight:800;
  min-width:58px;text-align:center;
}
.wl-score-bar-wrap{flex:1;}
.wl-score-label{font-size:10px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.6px;margin-bottom:4px;}
.wl-score-bar{height:6px;background:var(--bg3);border-radius:3px;overflow:hidden;}
.wl-score-fill{height:100%;border-radius:3px;transition:width .6s;}

.wl-levels{
  display:grid;grid-template-columns:repeat(3, 1fr);gap:8px;
}
.wl-level{
  background:var(--bg1);border:1px solid var(--border);border-radius:7px;
  padding:8px 10px;text-align:center;
}
.wl-level .ll-lbl{font-size:9px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.6px;margin-bottom:3px;}
.wl-level .ll-val{font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:700;}
.wl-level.entry  .ll-val{color:var(--accent);}
.wl-level.stop   .ll-val{color:var(--red);}
.wl-level.target .ll-val{color:var(--green);}

.wl-tech-row{
  display:grid;grid-template-columns:repeat(4, 1fr);gap:6px;
  padding:8px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);
}
.wl-tech{text-align:center;}
.wl-tech-lbl{font-size:9px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.5px;}
.wl-tech-val{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;color:var(--text1);margin-top:2px;}
.wl-tech-val.up{color:var(--green);}
.wl-tech-val.dn{color:var(--red);}
.wl-tech-val.warn{color:var(--yellow);}

.wl-reasons{
  display:flex;flex-direction:column;gap:5px;
  background:var(--bg1);border-radius:7px;padding:10px 12px;
  border-left:2px solid var(--accent);
}
.wl-reasons-head{font-size:10px;color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.6px;margin-bottom:3px;}
.wl-reason{font-size:12px;color:var(--text2);line-height:1.5;}

.wl-mini-chart{
  height:44px;width:100%;margin-top:4px;
}

.wl-footer{
  display:flex;align-items:center;justify-content:space-between;
  gap:8px;padding-top:8px;border-top:1px solid var(--border);
  font-size:11px;color:var(--text3);
}
.wl-options-dot{display:inline-flex;align-items:center;gap:4px;}
.wl-options-dot .dot{width:6px;height:6px;border-radius:50%;}
.wl-options-dot .dot.bull{background:var(--green);}
.wl-options-dot .dot.bear{background:var(--red);}
.wl-options-dot .dot.neu{background:var(--text3);}

.loading-placeholder{
  grid-column:1/-1;padding:40px;text-align:center;color:var(--text3);
  font-style:italic;
}

@media(max-width:700px){
  .watchlist-grid{grid-template-columns:1fr;}
  .macro-strip{grid-template-columns:repeat(2, 1fr);}
  .earnings-list{grid-template-columns:1fr;}
  .wl-levels{grid-template-columns:1fr;}
  .wl-tech-row{grid-template-columns:repeat(2, 1fr);}
}


/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   INSIDER & INSTITUTIONAL
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.insider-nav{color:#ffb74d!important;}
.insider-nav.active{color:#fff!important;background:linear-gradient(135deg,rgba(255,183,77,.18),rgba(255,122,0,.1))!important;}

.insider-latest-list{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));gap:10px;
}
.insider-trade{
  display:flex;align-items:center;gap:10px;
  background:var(--bg1);border:1px solid var(--border);border-radius:8px;
  padding:10px 12px;border-left:3px solid var(--green);
  transition:transform .15s;
}
.insider-trade:hover{transform:translateX(2px);border-color:var(--accent-dim);}
.insider-trade.sell{border-left-color:var(--red);background:linear-gradient(90deg, rgba(255,61,85,.05), transparent);}
.insider-trade.buy{border-left-color:var(--green);background:linear-gradient(90deg, rgba(0,232,122,.06), transparent);}
.it-ticker{font-family:'JetBrains Mono',monospace;font-weight:800;font-size:14px;min-width:50px;color:var(--text1);}
.it-body{flex:1;min-width:0;}
.it-insider{font-size:12px;color:var(--text1);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.it-title{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.4px;}
.it-meta{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--text2);margin-top:2px;}
.it-value{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13px;text-align:right;}
.it-value.buy{color:var(--green);}
.it-value.sell{color:var(--red);}
.it-date{font-size:10px;color:var(--text3);font-family:'JetBrains Mono',monospace;}

.insider-universe-list{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));gap:10px;
}
.insider-uni-card{
  background:var(--bg1);border:1px solid var(--border);border-radius:8px;padding:12px 14px;
  position:relative;
}
.insider-uni-card.bullish{border-left:3px solid var(--green);}
.insider-uni-card.bearish{border-left:3px solid var(--red);}
.insider-uni-card.neutral{border-left:3px solid var(--text3);}
.iu-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.iu-ticker{font-family:'JetBrains Mono',monospace;font-weight:800;font-size:16px;color:var(--text1);}
.iu-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:2px 7px;border-radius:4px;}
.iu-badge.bullish{background:rgba(0,232,122,.15);color:var(--green);}
.iu-badge.bearish{background:rgba(255,61,85,.15);color:var(--red);}
.iu-badge.neutral{background:rgba(100,120,150,.2);color:var(--text3);}
.iu-stats{display:flex;justify-content:space-between;font-size:11px;color:var(--text3);font-family:'JetBrains Mono',monospace;}
.iu-stats .up{color:var(--green);}
.iu-stats .dn{color:var(--red);}

.insider-symbol-picker select{
  padding:7px 11px;background:var(--bg1);border:1px solid var(--border);border-radius:6px;
  color:var(--text1);font-family:'JetBrains Mono',monospace;font-weight:700;
}
.insider-detail-grid{
  display:grid;grid-template-columns:1.5fr 1fr;gap:16px;
}
.idet-trades{max-height:420px;overflow-y:auto;padding-right:4px;}
.idet-stats{background:var(--bg1);border:1px solid var(--border);border-radius:8px;padding:14px 16px;}
.idet-stat-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--border);font-size:12px;}
.idet-stat-row:last-child{border-bottom:none;}
.idet-stat-lbl{color:var(--text3);}
.idet-stat-val{font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--text1);}
.idet-stat-val.big{font-size:18px;color:var(--accent);}

@media(max-width:800px){
  .insider-detail-grid{grid-template-columns:1fr;}
}


/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   ALERTS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.alerts-nav{color:#ff6b9d!important;}
.alerts-nav.active{color:#fff!important;background:linear-gradient(135deg,rgba(255,107,157,.18),rgba(255,61,85,.1))!important;}

.alert-count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;margin-left:4px;
  background:var(--red);color:#fff;
  border-radius:9px;font-size:10px;font-weight:800;
  animation:pulse-alert 1.8s ease-in-out infinite;
}
@keyframes pulse-alert{
  0%,100%{box-shadow:0 0 0 0 rgba(255,61,85,.5);}
  50%    {box-shadow:0 0 0 5px rgba(255,61,85,0);}
}

.alerts-layout{
  display:grid;grid-template-columns:360px 1fr;gap:16px;
}

.alert-form-card{position:sticky;top:76px;align-self:start;}
.alert-form{display:flex;flex-direction:column;gap:11px;padding-bottom:12px;}
.af-row{display:flex;flex-direction:column;gap:4px;}
.af-row label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text3);}
.af-row input, .af-row select{
  padding:8px 11px;background:var(--bg1);border:1px solid var(--border);border-radius:6px;
  color:var(--text1);font-size:13px;transition:.15s;
}
.af-row input:focus, .af-row select:focus{outline:none;border-color:var(--accent);}
.alert-add-btn{
  padding:10px 14px;background:linear-gradient(135deg, var(--accent), #5ce1e6);
  border:none;border-radius:7px;color:#021018;font-weight:700;cursor:pointer;
  font-size:13px;transition:.15s;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.alert-add-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,200,248,.35);}

.alert-settings{
  border-top:1px solid var(--border);padding-top:14px;
  display:flex;flex-direction:column;gap:9px;
}
.alert-settings h4{font-size:12px;color:var(--text2);margin:0 0 4px 0;display:flex;align-items:center;gap:6px;}
.alert-toggle{
  display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text2);
  cursor:pointer;user-select:none;
}
.alert-toggle input[type="checkbox"]{accent-color:var(--accent);width:15px;height:15px;}
.alert-toggle span{flex:1;}
.alert-perm-btn, .alert-test-btn{
  padding:5px 10px;background:var(--bg1);border:1px solid var(--border);
  color:var(--text2);border-radius:5px;cursor:pointer;font-size:11px;transition:.15s;
}
.alert-perm-btn:hover, .alert-test-btn:hover{border-color:var(--accent);color:var(--accent);}
#alertWebhookUrl{
  padding:7px 10px;background:var(--bg1);border:1px solid var(--border);
  border-radius:6px;color:var(--text1);font-size:11px;
  font-family:'JetBrains Mono',monospace;
}
.alert-test-btn{align-self:flex-start;}

.alert-list{display:flex;flex-direction:column;gap:8px;}
.alert-item{
  display:grid;grid-template-columns:auto 1fr auto auto;gap:12px;align-items:center;
  background:var(--bg1);border:1px solid var(--border);border-radius:7px;padding:10px 13px;
  transition:.15s;
}
.alert-item:hover{border-color:var(--accent-dim);}
.alert-item.triggered{
  background:linear-gradient(90deg, rgba(0,232,122,.08), transparent);
  border-left:3px solid var(--green);
}
.ai-sym{font-family:'JetBrains Mono',monospace;font-weight:800;font-size:14px;color:var(--text1);min-width:50px;}
.ai-cond{font-size:12px;color:var(--text2);}
.ai-cond .t-type{color:var(--accent);font-weight:600;}
.ai-cond .t-val{font-family:'JetBrains Mono',monospace;color:var(--text1);font-weight:700;margin-left:3px;}
.ai-note{font-size:11px;color:var(--text3);font-style:italic;}
.ai-status{padding:3px 9px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;}
.ai-status.armed{background:rgba(0,200,248,.15);color:var(--accent);}
.ai-status.triggered{background:rgba(0,232,122,.15);color:var(--green);}
.ai-del{
  background:transparent;border:none;color:var(--text3);cursor:pointer;padding:4px 8px;
  border-radius:4px;transition:.15s;
}
.ai-del:hover{background:rgba(255,61,85,.15);color:var(--red);}

.alert-history{display:flex;flex-direction:column;gap:6px;max-height:500px;overflow-y:auto;}
.ah-item{
  display:flex;gap:10px;align-items:center;
  background:var(--bg1);border:1px solid var(--border);border-radius:6px;padding:8px 11px;
  font-size:12px;
}
.ah-time{font-size:10px;color:var(--text3);font-family:'JetBrains Mono',monospace;min-width:70px;}
.ah-sym{font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--accent);min-width:50px;}
.ah-msg{flex:1;color:var(--text2);}

.clear-all-btn{
  background:transparent;border:1px solid var(--border);color:var(--text3);
  padding:4px 10px;border-radius:5px;cursor:pointer;font-size:11px;transition:.15s;
}
.clear-all-btn:hover{border-color:var(--red);color:var(--red);}

@media(max-width:800px){
  .alerts-layout{grid-template-columns:1fr;}
  .alert-form-card{position:static;}
}


/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   TOAST NOTIFICATIONS
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.toast-container{
  position:fixed;bottom:20px;right:20px;z-index:2000;
  display:flex;flex-direction:column;gap:10px;
}
.toast{
  background:linear-gradient(135deg, var(--bg2), var(--bg3));
  border:1px solid var(--accent);border-left:4px solid var(--accent);
  border-radius:8px;padding:12px 16px;
  box-shadow:0 10px 30px rgba(0,0,0,.4);
  color:var(--text1);
  display:flex;align-items:center;gap:10px;
  min-width:280px;max-width:400px;
  animation:toast-in .3s ease-out;
}
.toast.success{border-color:var(--green);border-left-color:var(--green);}
.toast.error  {border-color:var(--red);border-left-color:var(--red);}
.toast.warning{border-color:var(--yellow);border-left-color:var(--yellow);}
@keyframes toast-in{
  from{transform:translateX(120%);opacity:0;}
  to  {transform:translateX(0);opacity:1;}
}
@keyframes toast-out{
  from{transform:translateX(0);opacity:1;}
  to  {transform:translateX(120%);opacity:0;}
}
.toast.hiding{animation:toast-out .3s ease-in forwards;}
.toast-icon{font-size:18px;}
.toast-body{flex:1;font-size:13px;line-height:1.4;}
.toast-title{font-weight:700;margin-bottom:2px;}
.toast-close{background:none;border:none;color:var(--text3);cursor:pointer;font-size:18px;}


/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   BACKTEST CARD (inline with watchlist)
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.wl-backtest{
  display:grid;grid-template-columns:repeat(4, 1fr);gap:6px;
  padding:8px 10px;background:var(--bg1);border:1px solid var(--border);
  border-radius:7px;margin-top:6px;
}
.wl-bt{text-align:center;}
.wl-bt-lbl{font-size:9px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.5px;}
.wl-bt-val{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;color:var(--text1);margin-top:2px;}
.wl-bt-val.up{color:var(--green);}
.wl-bt-val.dn{color:var(--red);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MOMENTUM PULSE â€” the short-term trading engine
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.momentum-nav{color:#ff9a3d!important;position:relative;}
.momentum-nav.active{color:#fff!important;background:linear-gradient(135deg,rgba(255,154,61,.22),rgba(255,107,0,.14))!important;}
.momentum-nav i{filter:drop-shadow(0 0 6px rgba(255,154,61,.6));}

.nav-badge{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:16px;height:16px;padding:0 5px;margin-left:4px;
  background:linear-gradient(135deg,#ff9a3d,#ff5555);color:#fff;
  border-radius:8px;font-size:10px;font-weight:800;letter-spacing:.2px;
  box-shadow:0 0 10px rgba(255,154,61,.5);
}

/* hero header */
.momentum-hero{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  background:linear-gradient(135deg,rgba(255,154,61,.08) 0%,rgba(0,200,248,.06) 100%);
  border:1px solid rgba(255,154,61,.25);
  border-radius:12px;padding:18px 22px;margin-bottom:16px;
  position:relative;overflow:hidden;
}
.momentum-hero::before{
  content:'';position:absolute;inset:0;
  background:radial-gradient(600px 200px at 10% 100%,rgba(255,154,61,.15),transparent 60%);
  pointer-events:none;
}
.mom-hero-left{flex:1;min-width:280px;position:relative;}
.mom-hero-left h2{display:flex;align-items:center;gap:10px;font-size:22px;margin:0 0 6px;}
.mom-hero-left p{color:var(--text2);font-size:13px;margin:0;line-height:1.55;max-width:640px;}

.live-pill{
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 10px;background:rgba(0,232,122,.12);
  border:1px solid rgba(0,232,122,.35);border-radius:999px;
  font-size:10px;font-weight:800;letter-spacing:1px;color:#00e87a;
}
.live-dot{
  width:7px;height:7px;border-radius:50%;background:#00e87a;
  box-shadow:0 0 8px rgba(0,232,122,.7);
  animation:live-pulse 1.4s ease-in-out infinite;
}
@keyframes live-pulse{0%,100%{opacity:1;}50%{opacity:.35;}}

.mom-hero-right{display:flex;gap:18px;flex-shrink:0;flex-wrap:wrap;}
.mom-stat{text-align:center;min-width:80px;}
.mom-stat-v{font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:800;color:#fff;line-height:1;}
.mom-stat-l{font-size:10px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.6px;margin-top:4px;}

.mom-disclaimer{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;margin-bottom:16px;
  background:rgba(255,180,0,.08);border:1px solid rgba(255,180,0,.25);
  border-radius:8px;font-size:12px;color:var(--text2);
}
.mom-disclaimer i{color:#ffb400;font-size:16px;flex-shrink:0;}

/* plays grid */
.momentum-plays-card{overflow:visible;}
.momentum-plays{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;
  padding:4px;
}

.mplay{
  background:linear-gradient(180deg,var(--bg2) 0%,var(--bg1) 100%);
  border:1px solid var(--border);border-radius:12px;
  padding:14px;position:relative;overflow:hidden;
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.mplay:hover{transform:translateY(-2px);border-color:rgba(255,154,61,.4);box-shadow:0 8px 24px rgba(0,0,0,.35);}
.mplay::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,transparent,var(--accent,#ff9a3d),transparent);
  opacity:.6;
}
.mplay.conv-HIGH{--accent:#00e87a;border-color:rgba(0,232,122,.35);}
.mplay.conv-HIGH::before{background:linear-gradient(90deg,transparent,#00e87a 50%,transparent);opacity:.9;}
.mplay.conv-MEDIUM{--accent:#ff9a3d;}
.mplay.conv-LOW{--accent:#5a6478;opacity:.85;}
.mplay.dir-short{--accent:#ff4d4f;}
.mplay.dir-short::before{background:linear-gradient(90deg,transparent,#ff4d4f 50%,transparent);}

.mplay-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:10px;}
.mplay-sym{
  font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:800;color:#fff;
  letter-spacing:.5px;line-height:1;
}
.mplay-dir{
  display:inline-block;padding:2px 8px;margin-left:6px;
  background:rgba(0,232,122,.15);border:1px solid rgba(0,232,122,.35);
  color:#00e87a;border-radius:4px;font-size:10px;font-weight:800;letter-spacing:.8px;
  vertical-align:middle;
}
.mplay-dir.short{background:rgba(255,77,79,.15);border-color:rgba(255,77,79,.35);color:#ff4d4f;}
.mplay-price{font-family:'JetBrains Mono',monospace;font-size:15px;color:var(--text2);margin-top:2px;}
.mplay-price .chg{font-weight:700;margin-left:4px;}
.mplay-price .chg.up{color:var(--green);}
.mplay-price .chg.dn{color:var(--red);}

.mplay-score{text-align:right;flex-shrink:0;}
.mplay-score-v{
  font-family:'JetBrains Mono',monospace;font-size:26px;font-weight:800;
  color:var(--accent);line-height:1;
}
.mplay-score-l{font-size:10px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.6px;}
.mplay-conv{
  display:inline-block;padding:3px 10px;margin-top:4px;
  background:rgba(255,255,255,.06);color:var(--accent);
  border:1px solid currentColor;border-radius:999px;
  font-size:10px;font-weight:800;letter-spacing:.8px;
}

.mplay-trade{
  display:grid;grid-template-columns:repeat(4,1fr);gap:6px;
  margin:10px 0;padding:10px;
  background:var(--bg0);border:1px solid var(--border);border-radius:8px;
}
.mt-cell{text-align:center;}
.mt-lbl{font-size:9px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:3px;}
.mt-val{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;color:var(--text1);line-height:1.1;}
.mt-val.entry{color:var(--cyan);}
.mt-val.stop{color:var(--red);}
.mt-val.target{color:var(--green);}
.mt-val.rr{color:#ff9a3d;}

.mplay-meta{
  display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap;
}
.mm-chip{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 8px;background:var(--bg0);border:1px solid var(--border);
  border-radius:999px;font-size:10px;color:var(--text2);font-weight:600;
}
.mm-chip i{font-size:9px;}

.mplay-reasons{
  list-style:none;margin:0;padding:0;
}
.mplay-reasons li{
  font-size:12px;color:var(--text2);padding:3px 0;line-height:1.5;
  display:flex;align-items:flex-start;gap:6px;
}
.mplay-reasons li::before{content:'â€º';color:var(--accent);font-weight:800;}

.mplay-footer{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:10px;padding-top:10px;border-top:1px solid var(--border);
}
.mp-posts{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--text3);flex:1;min-width:0;}
.mp-posts a{color:var(--text2);text-decoration:none;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mp-posts a:hover{color:var(--cyan);}
.mp-actions{display:flex;gap:6px;flex-shrink:0;}
.mp-btn{
  padding:6px 10px;background:var(--bg0);border:1px solid var(--border);
  color:var(--text2);border-radius:6px;font-size:11px;font-weight:700;cursor:pointer;
  transition:all .15s ease;
}
.mp-btn:hover{color:#fff;border-color:var(--accent);background:rgba(255,154,61,.12);}
.mp-btn-trade{background:linear-gradient(135deg,rgba(0,232,122,.15),rgba(0,200,248,.1));border-color:rgba(0,232,122,.4);color:#00e87a;}
.mp-btn-trade:hover{background:linear-gradient(135deg,rgba(0,232,122,.25),rgba(0,200,248,.15));border-color:#00e87a;color:#fff;box-shadow:0 2px 10px rgba(0,232,122,.3);}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   PULSE FORECAST â€” 7-day directional outlook
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.forecast-hero{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  background:linear-gradient(135deg,rgba(0,200,248,.10),rgba(0,232,122,.08) 60%,rgba(160,80,255,.10));
  border:1px solid rgba(0,200,248,.25);
  border-radius:12px;padding:18px 22px;margin-bottom:16px;
  position:relative;overflow:hidden;
}
.forecast-hero::before{
  content:"";position:absolute;inset:0;background:radial-gradient(circle at 80% 20%,rgba(0,232,122,.12),transparent 60%);
  pointer-events:none;
}
.forecast-hero h2 i{color:#00c8f8;}
.fh-left{flex:1;min-width:280px;position:relative;}
.fh-left h2{display:flex;align-items:center;gap:10px;font-size:22px;margin:0 0 6px;}
.fh-left p{color:var(--text2);font-size:13px;margin:0;line-height:1.55;max-width:680px;}
.fh-right{display:flex;gap:22px;flex-shrink:0;flex-wrap:wrap;align-items:center;}
.forecast-hero .mom-stat-v.up{color:var(--green);}
.forecast-hero .mom-stat-v.down{color:var(--red);}
.forecast-hero .mom-stat-v.warn{color:#ff9a3d;}

/* Regime + hit-rate meta row under the description */
.fc-meta-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;}
.fc-regime-pill, .fc-hit-pill{
  display:inline-flex;align-items:center;gap:7px;
  padding:5px 12px;border-radius:999px;
  font-size:11.5px;font-weight:700;letter-spacing:.3px;
  cursor:pointer;user-select:none;
  background:rgba(124,149,184,.10);border:1px solid rgba(124,149,184,.30);
  color:var(--text2);
  transition:transform .12s ease, background .15s ease, border-color .15s ease;
}
.fc-regime-pill:hover, .fc-hit-pill:hover{transform:translateY(-1px);}
.fc-regime-pill i, .fc-hit-pill i{font-size:12px;}
.fc-regime-pill.regime-on{
  background:rgba(0,232,122,.10);border-color:rgba(0,232,122,.40);color:#00e87a;
}
.fc-regime-pill.regime-off{
  background:rgba(255,80,80,.10);border-color:rgba(255,80,80,.40);color:#ff7070;
}
.fc-regime-pill.regime-chop{
  background:rgba(255,180,0,.10);border-color:rgba(255,180,0,.35);color:#ffc94d;
}
.fc-regime-vix{font-family:'JetBrains Mono',monospace;font-weight:600;opacity:.85;}
.fc-hit-pill.hit-good{background:rgba(0,232,122,.10);border-color:rgba(0,232,122,.40);color:#00e87a;}
.fc-hit-pill.hit-mid {background:rgba(255,180,0,.10);border-color:rgba(255,180,0,.35);color:#ffc94d;}
.fc-hit-pill.hit-bad {background:rgba(255,80,80,.10);border-color:rgba(255,80,80,.40);color:#ff7070;}

/* Session pill (premarket / regular_open / regular / afterhours / closed) */
.fc-session-pill{
  display:inline-flex;align-items:center;gap:7px;
  padding:5px 12px;border-radius:999px;
  font-size:11.5px;font-weight:700;letter-spacing:.3px;
  cursor:pointer;user-select:none;
  background:rgba(124,149,184,.10);border:1px solid rgba(124,149,184,.30);
  color:var(--text2);
  transition:transform .12s ease;
}
.fc-session-pill:hover{transform:translateY(-1px);}
.fc-session-pill i{font-size:12px;}
.fc-session-w{font-family:'JetBrains Mono',monospace;font-weight:600;opacity:.85;}
.fc-session-pill.sess-pre   {background:rgba(0,200,248,.12);border-color:rgba(0,200,248,.40);color:#5ce1e6;}
.fc-session-pill.sess-open  {background:rgba(255,180,0,.12);border-color:rgba(255,180,0,.40);color:#ffc94d;}
.fc-session-pill.sess-reg   {background:rgba(0,232,122,.10);border-color:rgba(0,232,122,.35);color:#00e87a;}
.fc-session-pill.sess-after {background:rgba(160,80,255,.12);border-color:rgba(160,80,255,.40);color:#c79cff;}
.fc-session-pill.sess-closed{background:rgba(124,149,184,.08);border-color:rgba(124,149,184,.25);color:var(--text3);}

/* Pre-market chip on individual forecast cards */
.fc-chip.premarket{
  border-color:rgba(0,200,248,.40);background:rgba(0,200,248,.10);
  color:#5ce1e6;font-weight:800;
}
.fc-chip.premarket.up{color:var(--green);border-color:rgba(0,232,122,.45);background:rgba(0,232,122,.10);}
.fc-chip.premarket.dn{color:var(--red);  border-color:rgba(255,80,80,.45);background:rgba(255,80,80,.10);}

/* Collapse the hero to stacked layout on narrow screens so the stats
   row doesn't get crushed under the description paragraph. */
@media (max-width:900px){
  .forecast-hero{flex-direction:column;align-items:flex-start;}
  .fh-right{width:100%;justify-content:space-between;gap:10px;}
  .fh-right .mom-stat{min-width:60px;}
}

.forecast-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));
  gap:12px;
}
.forecast-grid-compact{
  grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin-top:10px;
}

.fc-card{
  position:relative;
  background:linear-gradient(180deg,rgba(15,25,42,.85),rgba(10,18,32,.85));
  border:1px solid var(--border);border-radius:14px;padding:14px;
  display:flex;flex-direction:column;gap:10px;
  transition:transform .15s ease, border-color .15s ease, box-shadow .2s ease;
}
.fc-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.4);}
.fc-card::before{
  content:"";position:absolute;top:0;left:0;right:0;height:3px;
  border-radius:14px 14px 0 0;
  background:linear-gradient(90deg,transparent, var(--fc-accent,#5a6478) 50%, transparent);
  opacity:.85;
}
.fc-bucket-strong-up{--fc-accent:#00e87a;border-color:rgba(0,232,122,.45);}
.fc-bucket-up{--fc-accent:#5ce1e6;border-color:rgba(92,225,230,.35);}
.fc-bucket-neutral{--fc-accent:#7c95b8;border-color:rgba(124,149,184,.25);opacity:.92;}
.fc-bucket-down{--fc-accent:#ff9a3d;border-color:rgba(255,154,61,.4);}
.fc-bucket-strong-down{--fc-accent:#ff4d4f;border-color:rgba(255,77,79,.45);}

.fc-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;}
.fc-sym-wrap{flex:1;min-width:0;}
.fc-sym{
  font-family:'JetBrains Mono',monospace;font-weight:800;font-size:18px;color:#fff;
  letter-spacing:.5px;
}
.fc-name{font-size:11px;color:var(--text3);line-height:1.3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;margin-top:1px;}
.fc-price{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--text2);margin-top:4px;}
.fc-price .chg{font-weight:700;margin-left:4px;}
.fc-price .chg.up{color:var(--green);}
.fc-price .chg.dn{color:var(--red);}

.fc-score{text-align:right;flex-shrink:0;}
.fc-score-v{
  font-family:'JetBrains Mono',monospace;font-weight:800;font-size:26px;line-height:1;
  color:var(--fc-accent,#7c95b8);
  text-shadow:0 0 14px color-mix(in srgb,var(--fc-accent,#7c95b8) 35%, transparent);
}
.fc-bucket-lbl{
  font-size:9px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;
  color:var(--fc-accent,#7c95b8);margin-top:2px;
}
.fc-conf{
  display:inline-flex;align-items:center;gap:4px;
  font-size:10px;color:var(--text3);font-weight:600;margin-top:4px;
}
.fc-conf i{font-size:9px;color:var(--fc-accent,#7c95b8);}

.fc-chips{display:flex;flex-wrap:wrap;gap:6px;}
.fc-chip{
  display:inline-flex;align-items:center;gap:4px;
  font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;
  padding:3px 8px;border-radius:8px;
  background:rgba(255,255,255,.04);border:1px solid var(--border);color:var(--text2);
}
.fc-chip.up{color:var(--green);border-color:rgba(0,232,122,.3);background:rgba(0,232,122,.08);}
.fc-chip.dn{color:var(--red);border-color:rgba(255,77,79,.3);background:rgba(255,77,79,.08);}
.fc-chip.buzz{color:#ff9a3d;border-color:rgba(255,154,61,.35);background:rgba(255,154,61,.08);}
.fc-chip.catalyst{color:#00c8f8;border-color:rgba(0,200,248,.35);background:rgba(0,200,248,.08);}
.fc-chip.earn-risk{color:#ff7070;border-color:rgba(255,80,80,.45);background:rgba(255,80,80,.10);font-weight:800;}
.fc-chip.sector{color:var(--text2);border-color:rgba(124,149,184,.30);background:rgba(124,149,184,.06);}

/* Cross-source validation chip â€” color reflects source agreement strength.
   Hover tooltip lists the per-source check breakdown (multi-line). */
.fc-chip.validation{font-weight:800;letter-spacing:.02em;}
.fc-chip.validation.val-good{color:#7af09c;border-color:rgba(0,232,122,.45);background:rgba(0,232,122,.10);}
.fc-chip.validation.val-mid {color:#ffd76b;border-color:rgba(255,193,7,.45);background:rgba(255,193,7,.10);}
.fc-chip.validation.val-bad {color:#ff8b8b;border-color:rgba(255,80,80,.50);background:rgba(255,80,80,.12);}

.fc-chip i{font-size:9px;}

/* Tag showing the source of the expected-range computation. "IV" = options
   implied vol (preferred); "ATR" = heuristic fallback when IV is missing. */
.fc-range-src{
  margin-left:8px;padding:1px 6px;border-radius:4px;
  font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:800;
  background:rgba(0,200,248,.15);color:#00c8f8;border:1px solid rgba(0,200,248,.3);
}
.fc-range-src.atr{background:rgba(124,149,184,.12);color:var(--text3);border-color:rgba(124,149,184,.25);}

.fc-range{
  display:flex;align-items:center;gap:8px;
  background:rgba(255,255,255,.03);border:1px dashed var(--border);
  border-radius:10px;padding:8px 12px;
  font-family:'JetBrains Mono',monospace;font-size:12px;
}
.fc-range-arrow{font-size:18px;font-weight:800;color:var(--fc-accent,#7c95b8);line-height:1;}
.fc-range-pct{font-weight:800;color:var(--fc-accent,#7c95b8);margin-right:auto;}
.fc-range-band{font-size:11px;color:var(--text3);}
.fc-range.up .fc-range-arrow,.fc-range.up .fc-range-pct{color:var(--green);}
.fc-range.dn .fc-range-arrow,.fc-range.dn .fc-range-pct{color:var(--red);}

.fc-drivers{
  list-style:none;display:flex;flex-direction:column;gap:5px;margin:0;padding:0;
}
.fc-driver{
  display:flex;align-items:center;gap:8px;
  font-size:12px;line-height:1.35;color:var(--text2);
  padding:6px 10px;border-radius:7px;
  background:rgba(255,255,255,.02);border:1px solid var(--border);
}
.fc-driver i{font-size:11px;width:14px;text-align:center;flex-shrink:0;color:var(--text3);}
.fc-driver.up i{color:var(--green);}
.fc-driver.dn i{color:var(--red);}
.fc-driver-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;}
.fc-driver-w{
  font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:800;
  padding:1px 7px;border-radius:6px;flex-shrink:0;
}
.fc-driver.up .fc-driver-w{background:rgba(0,232,122,.12);color:var(--green);}
.fc-driver.dn .fc-driver-w{background:rgba(255,77,79,.12);color:var(--red);}
.fc-driver-empty{
  list-style:none;font-size:11px;color:var(--text3);font-style:italic;
  padding:8px 4px;text-align:center;
}

.fc-warn{
  display:flex;align-items:center;gap:6px;
  font-size:11px;color:#ffb400;
  background:rgba(255,180,0,.08);border:1px solid rgba(255,180,0,.25);
  border-radius:7px;padding:6px 10px;
  line-height:1.35;
}
.fc-warn i{font-size:11px;flex-shrink:0;}

.fc-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:auto;}
.fc-actions .mp-btn{padding:7px 12px;font-size:11px;}

/* AVOID section â€” distinct visual identity */
.forecast-avoid-card{border-color:rgba(255,154,61,.3);}
.forecast-avoid-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px;
}
.fc-avoid{
  display:flex;flex-direction:column;gap:8px;
  padding:12px;border-radius:12px;
  background:linear-gradient(180deg,rgba(255,154,61,.06),rgba(255,77,79,.04));
  border:1px solid rgba(255,154,61,.25);
}
.fc-avoid-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.fc-avoid-head .fc-sym{font-size:16px;}
.fc-avoid-head .fc-name{max-width:160px;}
.fc-avoid-stats{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;}
.fc-avoid-stat{
  display:flex;flex-direction:column;align-items:flex-end;
  font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;
}
.fc-avoid-l{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;font-weight:800;}
.fc-avoid-stat .chg.up{color:var(--green);}
.fc-avoid-stat .chg.dn{color:var(--red);}
.fc-avoid-reason{
  font-size:11.5px;line-height:1.4;color:#ffb400;
  background:rgba(255,154,61,.08);border:1px solid rgba(255,154,61,.22);
  border-radius:8px;padding:7px 10px;
  display:flex;align-items:center;gap:6px;
}
.fc-avoid-reason i{flex-shrink:0;color:#ff9a3d;}

/* Neutral collapse details */
.forecast-neutral-details{
  border:1px solid var(--border);border-radius:12px;
  background:rgba(255,255,255,.02);
  padding:0;
}
.forecast-neutral-details summary{
  cursor:pointer;padding:12px 16px;font-size:13px;color:var(--text2);font-weight:700;
  list-style:none;
}
.forecast-neutral-details summary::-webkit-details-marker{display:none;}
.forecast-neutral-details[open] summary{border-bottom:1px solid var(--border);}
.forecast-neutral-details summary::before{
  content:'â–¸ ';color:var(--text3);transition:transform .15s ease;
  display:inline-block;margin-right:6px;
}
.forecast-neutral-details[open] summary::before{transform:rotate(90deg);}
.forecast-neutral-details > .forecast-grid{padding:14px;}

.empty-msg{
  text-align:center;color:var(--text3);font-size:12.5px;
  padding:24px 16px;font-style:italic;
}
.empty-msg i{margin-right:6px;color:var(--cyan);}

/* Forecast nav-link styling */
.forecast-nav i,.forecast-nav .nav-dd-text{color:#5ce1e6;}
.bs-item.forecast-nav i{color:#5ce1e6;}

/* live buzz feed */
.buzz-feed{
  max-height:560px;overflow-y:auto;padding:4px;
  display:flex;flex-direction:column;gap:8px;
}
.buzz-item{
  display:flex;align-items:flex-start;gap:10px;
  padding:10px 12px;background:var(--bg0);
  border:1px solid var(--border);border-radius:8px;
  transition:border-color .15s ease,background .15s ease;
}
.buzz-item:hover{border-color:rgba(255,154,61,.35);background:var(--bg1);}
.buzz-item.velocity-high{border-left:3px solid #ff9a3d;}
.buzz-item.velocity-extreme{border-left:3px solid #ff4d4f;background:rgba(255,77,79,.04);}

.buzz-sym{
  font-family:'JetBrains Mono',monospace;font-weight:800;color:#fff;
  font-size:15px;min-width:56px;flex-shrink:0;
}
.buzz-sym-sub{font-size:9px;color:var(--text3);font-weight:600;letter-spacing:.4px;}
.buzz-body{flex:1;min-width:0;}
.buzz-title{font-size:12px;color:var(--text1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.buzz-title a{color:inherit;text-decoration:none;}
.buzz-title a:hover{color:var(--cyan);}
.buzz-meta{font-size:10px;color:var(--text3);margin-top:4px;display:flex;gap:8px;}
.buzz-velocity{
  display:inline-flex;align-items:center;gap:3px;
  padding:2px 8px;border-radius:999px;
  font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:800;
  background:rgba(255,154,61,.15);color:#ff9a3d;flex-shrink:0;
}
.buzz-velocity.extreme{background:rgba(255,77,79,.18);color:#ff4d4f;}
.buzz-velocity.normal{background:var(--bg2);color:var(--text2);}

/* buzz heatmap */
.buzz-heatmap{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px;padding:4px;
  max-height:560px;overflow-y:auto;
}
.heat-cell{
  position:relative;aspect-ratio:1.4;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  border-radius:6px;padding:4px;
  background:var(--bg0);border:1px solid var(--border);
  cursor:pointer;transition:transform .15s ease;
}
.heat-cell:hover{transform:scale(1.05);z-index:2;}
.heat-sym{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:800;color:#fff;}
.heat-vel{font-size:10px;color:rgba(255,255,255,.85);font-weight:700;margin-top:2px;}
.heat-post{font-size:9px;color:rgba(255,255,255,.6);}
.heat-cell.bull{background:linear-gradient(135deg,rgba(0,232,122,var(--intensity,.3)),rgba(0,200,248,.1));border-color:rgba(0,232,122,.4);}
.heat-cell.bear{background:linear-gradient(135deg,rgba(255,77,79,var(--intensity,.3)),rgba(255,77,79,.05));border-color:rgba(255,77,79,.4);}
.heat-cell.neutral{background:linear-gradient(135deg,rgba(120,130,140,var(--intensity,.25)),rgba(120,130,140,.08));border-color:var(--border);}

/* scrollbar */
.buzz-feed::-webkit-scrollbar,.buzz-heatmap::-webkit-scrollbar{width:6px;}
.buzz-feed::-webkit-scrollbar-thumb,.buzz-heatmap::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}

@media (max-width:768px){
  .momentum-hero{flex-direction:column;align-items:flex-start;}
  .mom-hero-right{width:100%;justify-content:space-between;}
  .mplay-trade{grid-template-columns:repeat(2,1fr);}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   BROKER HUB â€” redirect-only, no API integration
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.broker-nav{color:#8affb9!important;}
.broker-nav.active{color:#fff!important;background:linear-gradient(135deg,rgba(0,232,122,.2),rgba(0,200,248,.1))!important;}

.broker-hero{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  background:linear-gradient(135deg,rgba(0,232,122,.08),rgba(0,200,248,.05));
  border:1px solid rgba(0,232,122,.25);border-radius:12px;padding:18px 22px;
  flex-wrap:wrap;margin-bottom:16px;
}
.bhero-left{flex:1;min-width:280px;}
.bhero-left h2{display:flex;align-items:center;gap:10px;font-size:22px;margin:0 0 6px;}
.bhero-left p{color:var(--text2);font-size:13px;margin:0;line-height:1.55;max-width:720px;}
.bhero-right{display:flex;gap:18px;flex-wrap:wrap;}

/* reusable buttons */
.btn-primary{
  padding:10px 18px;border:none;cursor:pointer;
  background:linear-gradient(135deg,#00c8f8,#5ce1e6);color:#0a0f1a;
  border-radius:6px;font-weight:800;font-size:13px;transition:transform .12s ease,box-shadow .12s ease;
}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,200,248,.35);}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none;}
.btn-mini{
  padding:6px 12px;cursor:pointer;background:var(--bg0);border:1px solid var(--border);
  color:var(--text2);border-radius:6px;font-size:11px;font-weight:700;transition:all .15s ease;
}
.btn-mini:hover{color:#fff;border-color:#5ce1e6;}
.btn-mini.danger{color:#ff9a9a;border-color:rgba(255,107,107,.25);}
.btn-mini.danger:hover{color:#ff4d4f;border-color:#ff4d4f;background:rgba(255,77,79,.1);}

/* Symbol lookup */
.broker-lookup{display:flex;gap:10px;align-items:center;padding:6px;flex-wrap:wrap;}
.broker-lookup input{
  flex:0 0 220px;padding:10px 12px;background:var(--bg0);border:1px solid var(--border);
  border-radius:6px;color:var(--text1);font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:800;
  text-transform:uppercase;letter-spacing:.6px;transition:border-color .15s ease;
}
.broker-lookup input:focus{outline:none;border-color:#5ce1e6;}
.broker-lookup-actions{display:flex;gap:6px;flex-wrap:wrap;flex:1;}
.bl-quick{
  padding:6px 10px;background:var(--bg0);border:1px solid var(--border);border-radius:6px;
  color:var(--text2);font-size:11px;font-weight:700;cursor:pointer;transition:all .15s ease;
  display:inline-flex;align-items:center;gap:6px;
}
.bl-quick:hover{color:#fff;border-color:#5ce1e6;background:var(--bg1);}
.bl-quick.default{border-color:rgba(0,232,122,.45);color:#00e87a;background:rgba(0,232,122,.08);}

/* Broker cards grid */
.broker-cards,.research-cards{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;padding:4px;
}
.bcard{
  position:relative;padding:16px;border:1px solid var(--border);border-radius:10px;
  background:linear-gradient(180deg,var(--bg2) 0%,var(--bg1) 100%);
  transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;
  display:flex;flex-direction:column;gap:8px;
}
.bcard:hover{transform:translateY(-2px);border-color:rgba(0,232,122,.4);box-shadow:0 6px 18px rgba(0,0,0,.3);}
.bcard.default{border-color:rgba(0,232,122,.55);background:linear-gradient(180deg,rgba(0,232,122,.06) 0%,var(--bg1) 100%);}
.bcard.default::after{
  content:'DEFAULT';position:absolute;top:10px;right:10px;
  font-size:9px;font-weight:800;letter-spacing:.8px;color:#00e87a;
  padding:2px 7px;border:1px solid rgba(0,232,122,.4);border-radius:999px;background:rgba(0,232,122,.1);
}
.bcard-top{display:flex;align-items:center;gap:10px;}
.bcard-logo{
  width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:14px;color:#fff;flex-shrink:0;
}
.bcard-name{font-weight:800;color:#fff;font-size:15px;line-height:1.2;}
.bcard-tag{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-top:2px;}
.bcard-desc{font-size:12px;color:var(--text2);line-height:1.5;flex:1;}
.bcard-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px;}
.bcard-badge{font-size:9px;padding:2px 7px;border-radius:999px;background:var(--bg0);border:1px solid var(--border);color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.4px;}
.bcard-badge.free{background:rgba(0,232,122,.12);color:#00e87a;border-color:rgba(0,232,122,.3);}
.bcard-badge.popular{background:rgba(255,154,61,.12);color:#ff9a3d;border-color:rgba(255,154,61,.3);}
.bcard-actions{display:flex;gap:6px;margin-top:auto;padding-top:6px;}
.bcard-open{
  flex:1;padding:8px 12px;background:var(--bg0);border:1px solid var(--border);
  border-radius:6px;color:var(--text1);font-size:12px;font-weight:700;cursor:pointer;text-align:center;
  transition:all .15s ease;
}
.bcard-open:hover{background:#5ce1e6;color:#0a0f1a;border-color:#5ce1e6;}
.bcard-star{
  padding:8px 10px;background:var(--bg0);border:1px solid var(--border);
  border-radius:6px;color:var(--text3);cursor:pointer;transition:all .15s ease;
}
.bcard-star:hover,.bcard-star.starred{color:#ffb400;border-color:rgba(255,180,0,.4);background:rgba(255,180,0,.08);}

/* Broker picker popover (triggered from momentum cards) */
.broker-popover-backdrop{
  position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.7);
  display:flex;align-items:center;justify-content:center;padding:20px;
  backdrop-filter:blur(4px);
  animation:fade-in .18s ease;
}
@keyframes fade-in{from{opacity:0;}to{opacity:1;}}
.broker-popover{
  width:100%;max-width:500px;max-height:85vh;overflow-y:auto;
  background:linear-gradient(180deg,var(--bg2) 0%,var(--bg1) 100%);
  border:1px solid var(--border);border-radius:12px;
  box-shadow:0 24px 60px rgba(0,0,0,.6);
}
.bpop-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-bottom:1px solid var(--border);
}
.bpop-header h3{margin:0;font-size:17px;}
.bpop-header h3 span{color:#5ce1e6;font-family:'JetBrains Mono',monospace;}
.tm-close{background:none;border:none;color:var(--text3);cursor:pointer;font-size:18px;padding:6px;}
.tm-close:hover{color:#ff4d4f;}

.bpop-plan{
  display:grid;grid-template-columns:repeat(4,1fr);gap:6px;
  margin:14px 18px 0;padding:10px;
  background:var(--bg0);border:1px solid var(--border);border-radius:8px;
}
.bpop-plan-cell{text-align:center;}
.bpop-plan-lbl{font-size:9px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:3px;}
.bpop-plan-val{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;color:var(--text1);}
.bpop-plan-val.entry{color:var(--cyan);}
.bpop-plan-val.stop{color:var(--red);}
.bpop-plan-val.target{color:var(--green);}

.bpop-body{padding:14px 18px 18px;}
.bpop-section-label{
  font-size:10px;color:var(--text3);font-weight:800;text-transform:uppercase;letter-spacing:.8px;
  margin:10px 0 6px;
}
.bpop-section-label:first-child{margin-top:0;}
.bpop-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;}
.bpop-item{
  display:flex;align-items:center;gap:8px;
  padding:8px 10px;background:var(--bg0);border:1px solid var(--border);
  border-radius:6px;color:var(--text1);font-size:12px;font-weight:700;cursor:pointer;text-decoration:none;
  transition:all .15s ease;
}
.bpop-item:hover{background:var(--bg1);border-color:#5ce1e6;transform:translateY(-1px);}
.bpop-item.default{border-color:rgba(0,232,122,.45);background:rgba(0,232,122,.06);}
.bpop-item .bcard-logo{width:24px;height:24px;font-size:10px;border-radius:5px;}
.bpop-item-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

@media (max-width:768px){
  .broker-hero{flex-direction:column;align-items:flex-start;}
  .bhero-right{width:100%;justify-content:space-between;}
  .broker-cards,.research-cards{grid-template-columns:1fr;}
  .bpop-plan{grid-template-columns:repeat(2,1fr);}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   BACK NAVIGATION â€” Back-to-top button + breadcrumb +
   drill-down back buttons for detail views.
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.back-to-top{
  position:fixed; bottom:28px; right:28px; z-index:1200;
  width:44px; height:44px; border-radius:50%;
  border:1px solid var(--border);
  background:linear-gradient(135deg, var(--bg1), var(--bg0));
  color:var(--text1); font-size:15px; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 6px 24px rgba(0,0,0,0.4);
  opacity:0; pointer-events:none;
  transform:translateY(12px);
  transition:opacity .2s ease, transform .2s ease, border-color .15s ease;
}
.back-to-top.visible{
  opacity:1; pointer-events:auto; transform:translateY(0);
}
.back-to-top:hover{
  border-color:#5ce1e6; color:#5ce1e6;
  transform:translateY(-2px);
}

/* Breadcrumb-style back-to-dashboard link inside sub-tabs */
.back-breadcrumb{
  display:inline-flex; align-items:center; gap:6px;
  padding:6px 12px;
  background:var(--bg1); border:1px solid var(--border); border-radius:999px;
  color:var(--text2); font-size:12px; font-weight:600;
  text-decoration:none; cursor:pointer;
  margin-bottom:12px;
  transition:all .15s ease;
}
.back-breadcrumb:hover{
  border-color:#5ce1e6; color:#5ce1e6;
  background:rgba(92,225,230,0.06);
}
.back-breadcrumb i{ font-size:10px; }

/* Drill-down back button (e.g. inside insider detail) */
.drilldown-back{
  display:inline-flex; align-items:center; gap:6px;
  padding:6px 10px; margin-bottom:10px;
  background:transparent; border:1px solid var(--border); border-radius:6px;
  color:var(--text2); font-size:12px; font-weight:600; cursor:pointer;
  transition:all .15s ease;
}
.drilldown-back:hover{ border-color:#5ce1e6; color:#5ce1e6; }

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   HELP-TIP SYSTEM ("How to read this" popover)
   Tiny â“˜ icon next to any card title; click
   opens a popover with metric explanations.
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.help-tip{
  display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;margin-left:6px;cursor:help;
  color:var(--text3);font-size:12px;border-radius:50%;
  transition:color .15s ease,background .15s ease;
  vertical-align:middle;user-select:none;
}
.help-tip:hover{color:#5ce1e6;background:rgba(92,225,230,.1);}
.help-tip i{font-size:12px;pointer-events:none;}

.help-popover{
  position:absolute;width:360px;max-width:calc(100vw - 24px);
  z-index:2000;background:var(--bg2);border:1px solid var(--border2);
  border-radius:10px;box-shadow:0 12px 40px rgba(0,0,0,.55);
  opacity:0;transform:translateY(-4px);
  transition:opacity .15s ease,transform .15s ease;
  overflow:hidden;
}
.help-popover.show{opacity:1;transform:translateY(0);}
.help-popover .hp-header{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:12px 14px;background:linear-gradient(135deg,rgba(92,225,230,.08),transparent);
  border-bottom:1px solid var(--border);
}
.help-popover .hp-title{
  font-size:12.5px;font-weight:700;color:#5ce1e6;
  text-transform:uppercase;letter-spacing:.5px;
}
.help-popover .hp-close{
  background:transparent;border:none;color:var(--text3);
  font-size:13px;cursor:pointer;padding:2px 4px;border-radius:4px;
  transition:color .15s,background .15s;
}
.help-popover .hp-close:hover{color:var(--text1);background:var(--bg3);}
.help-popover .hp-body{padding:10px 14px 14px;max-height:380px;overflow-y:auto;}
.help-popover .hp-row{
  display:grid;grid-template-columns:110px 1fr;gap:10px;
  padding:7px 0;border-bottom:1px solid rgba(255,255,255,.04);
}
.help-popover .hp-row:last-child{border-bottom:none;}
.help-popover .hp-k{
  font-size:11px;font-weight:700;color:var(--text1);
  letter-spacing:.2px;line-height:1.4;
}
.help-popover .hp-v{
  font-size:11.5px;color:var(--text2);line-height:1.5;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   SMART TRADE SIGNALS (Alerts tab, top card)
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.trade-signals-card{
  margin-bottom:20px;
  background:linear-gradient(180deg, rgba(18,28,48,0.92) 0%, rgba(12,20,36,0.92) 100%);
  border:1px solid rgba(90,150,240,0.25);
  box-shadow:0 10px 30px rgba(0,0,0,0.35), inset 0 1px 0 rgba(255,255,255,0.04);
}
.ts-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;}
.ts-header h3{display:flex;align-items:center;gap:9px;margin:0;}
.ts-count{
  display:inline-block;min-width:24px;text-align:center;padding:2px 7px;
  font-size:11px;font-weight:800;border-radius:10px;
  background:rgba(80,180,255,0.18);color:#8ecbff;border:1px solid rgba(80,180,255,0.35);
}
.ts-controls{display:flex;align-items:center;gap:8px;}
.ts-filters{display:inline-flex;background:rgba(15,25,42,0.7);border:1px solid rgba(80,120,180,0.25);border-radius:8px;padding:2px;}
.ts-filter{
  background:transparent;border:none;color:var(--text2);
  padding:5px 11px;font-size:11px;font-weight:600;letter-spacing:.3px;
  border-radius:6px;cursor:pointer;transition:background .15s, color .15s;
}
.ts-filter:hover{color:var(--text1);}
.ts-filter.active{background:rgba(80,150,240,0.22);color:#cfe5ff;box-shadow:inset 0 0 0 1px rgba(120,180,255,0.35);}
.ts-filter.buy.active{background:rgba(40,190,120,0.22);color:#8df0b3;box-shadow:inset 0 0 0 1px rgba(80,220,140,0.4);}
.ts-filter.sell.active{background:rgba(240,80,100,0.22);color:#ff9aa8;box-shadow:inset 0 0 0 1px rgba(240,100,120,0.4);}
.ts-filter.hi.active{background:rgba(255,180,50,0.22);color:#ffd99e;box-shadow:inset 0 0 0 1px rgba(255,190,80,0.4);}
.ts-refresh-btn{
  background:rgba(80,150,240,0.15);border:1px solid rgba(80,150,240,0.3);
  color:#8ecbff;border-radius:7px;padding:6px 9px;cursor:pointer;
  transition:background .15s, transform .3s;
}
.ts-refresh-btn:hover{background:rgba(80,150,240,0.28);}
.ts-refresh-btn:active i{transform:rotate(360deg);}
.ts-sub{color:var(--text3);font-size:12px;margin:6px 0 14px;line-height:1.55;}
.ts-sub strong{color:var(--text2);}

.ts-list{display:flex;flex-direction:column;gap:10px;}
.ts-empty{
  padding:30px 20px;text-align:center;color:var(--text3);font-size:13px;
  background:rgba(15,25,42,0.5);border:1px dashed rgba(80,120,180,0.25);border-radius:10px;
}
.ts-empty i{font-size:22px;display:block;margin-bottom:10px;color:rgba(120,160,220,0.65);}
.ts-empty p{margin:0;line-height:1.55;}
.ts-empty strong{color:var(--text1);}

.ts-row{
  display:grid;
  grid-template-columns: 230px 1fr 1.15fr auto;
  gap:14px;align-items:center;
  padding:12px 14px;
  background:rgba(16,26,44,0.85);
  border:1px solid rgba(80,120,180,0.18);
  border-left:4px solid rgba(80,120,180,0.35);
  border-radius:10px;
  transition:border-color .15s, background .15s, transform .15s;
  contain:layout paint;
}
.ts-row:hover{background:rgba(22,34,56,0.92);border-color:rgba(120,170,230,0.35);}
.ts-row.act-buy  { border-left-color:#3fd18a; }
.ts-row.act-sell { border-left-color:#ff6b88; }
.ts-row.conf-A   { box-shadow:0 0 0 1px rgba(255,190,80,0.25), 0 6px 18px rgba(0,0,0,0.25); }
.ts-row.ready    { background:linear-gradient(90deg, rgba(80,200,140,0.10) 0%, rgba(16,26,44,0.85) 30%); }
.ts-row.ready.act-sell { background:linear-gradient(90deg, rgba(240,90,110,0.10) 0%, rgba(16,26,44,0.85) 30%); }

.ts-left{display:flex;gap:12px;align-items:center;min-width:0;}
.ts-action{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:64px;}
.ts-act-lbl{
  font-size:11px;font-weight:900;letter-spacing:.8px;
  padding:5px 10px;border-radius:6px;
}
.ts-action.buy  .ts-act-lbl{background:rgba(60,200,130,0.22);color:#7bedb0;border:1px solid rgba(80,220,140,0.35);}
.ts-action.sell .ts-act-lbl{background:rgba(240,80,110,0.22);color:#ff95a8;border:1px solid rgba(240,100,120,0.35);}
.ts-grade{
  font-size:10px;font-weight:900;padding:2px 7px;border-radius:9px;letter-spacing:.5px;
}
.ts-grade.conf-A{background:rgba(255,190,80,0.18);color:#ffd58a;border:1px solid rgba(255,190,80,0.4);}
.ts-grade.conf-B{background:rgba(120,180,240,0.18);color:#a8cdf0;border:1px solid rgba(120,180,240,0.35);}
.ts-grade.conf-C{background:rgba(160,170,185,0.18);color:#c4ccda;border:1px solid rgba(160,170,185,0.3);}

.ts-sym-block{min-width:0;}
.ts-sym{font-size:16px;font-weight:800;color:var(--text1);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;}
.ts-price{font-size:12px;font-weight:600;color:var(--text2);}
.ts-price em{font-style:normal;font-size:11px;color:var(--text3);margin-left:3px;}
.ts-price.up em{color:#3fd18a;}
.ts-price.dn em{color:#ff6b88;}
.ts-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;font-size:10.5px;color:var(--text3);align-items:center;}
.ts-setup{background:rgba(80,150,240,0.14);color:#a8cdf0;padding:2px 7px;border-radius:5px;font-weight:600;letter-spacing:.2px;}
.ts-horizon{color:var(--text3);}
.ts-horizon i{margin-right:3px;opacity:.7;}
.ts-dist.dist-wait{color:#ffcf8a;}
.ts-dist.dist-live{color:#7bedb0;font-weight:700;}
.ts-fire{
  display:inline-flex;align-items:center;gap:3px;
  background:rgba(255,180,50,0.22);color:#ffd58a;
  padding:2px 7px;border-radius:5px;font-weight:800;font-size:9.5px;letter-spacing:.5px;
  border:1px solid rgba(255,190,80,0.4);
  animation:tsPulse 1.8s ease-in-out infinite;
}
@keyframes tsPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(255,190,80,0.35);}
  50%    {box-shadow:0 0 0 5px rgba(255,190,80,0);}
}

.ts-prices{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.ts-chip{
  display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;
  background:rgba(18,30,50,0.85);
  border:1px solid rgba(80,120,180,0.25);
  padding:5px 9px;border-radius:7px;
  color:var(--text2);cursor:pointer;
  transition:border-color .15s, background .15s, transform .1s;
  min-width:80px;
}
.ts-chip:hover{border-color:rgba(150,200,255,0.5);background:rgba(22,36,60,0.95);}
.ts-chip:active{transform:scale(0.97);}
.ts-chip.armed{border-color:rgba(80,220,140,0.55);background:rgba(35,80,55,0.6);}
.ts-chip.armed::after{content:' âœ“ armed';font-size:9px;color:#7bedb0;}
.ts-chip-lbl{font-size:9px;font-weight:800;letter-spacing:.7px;color:var(--text3);}
.ts-chip-val{font-size:13px;font-weight:800;color:var(--text1);font-variant-numeric:tabular-nums;}
.ts-chip-entry  .ts-chip-lbl{color:#8ecbff;}
.ts-chip-stop   .ts-chip-lbl{color:#ff9aa8;}
.ts-chip-target .ts-chip-lbl{color:#7bedb0;}
.ts-rr{
  display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;
  padding:5px 9px;border-radius:7px;background:rgba(15,22,38,0.7);
  border:1px dashed rgba(80,120,180,0.25);
}
.ts-rr-lbl{font-size:9px;font-weight:700;color:var(--text3);letter-spacing:.7px;}
.ts-rr-val{font-size:12px;font-weight:800;color:#d9c68a;font-variant-numeric:tabular-nums;}
.ts-rr.rr-great .ts-rr-val{color:#7bedb0;}
.ts-rr.rr-great{border-color:rgba(80,220,140,0.4);background:rgba(30,55,40,0.45);}
.ts-rr.rr-good  .ts-rr-val{color:#c6e695;}
.ts-rr.rr-meh   .ts-rr-val{color:#ffa88a;}

.ts-reasons{min-width:0;}
.ts-reasons-head{font-size:10px;font-weight:800;letter-spacing:.6px;color:var(--text3);text-transform:uppercase;margin-bottom:3px;}
.ts-reasons ul{margin:0;padding-left:16px;list-style:disc;color:var(--text2);font-size:11px;line-height:1.5;}
.ts-reasons ul li{margin:1px 0;}
.ts-pillars{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px;}
.tsp{
  font-size:9.5px;font-weight:700;letter-spacing:.3px;
  padding:2px 7px;border-radius:9px;
  background:rgba(30,45,72,0.75);color:var(--text2);
  border:1px solid rgba(80,120,180,0.22);
}
.tsp i{margin-right:3px;font-size:9px;opacity:.75;}
.tsp.up{color:#7bedb0;border-color:rgba(80,220,140,0.35);background:rgba(30,55,40,0.6);}
.tsp.dn{color:#ff9aa8;border-color:rgba(240,100,120,0.35);background:rgba(60,28,38,0.6);}

.ts-actions{display:flex;flex-direction:column;gap:6px;align-items:stretch;}
.ts-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:7px 11px;border-radius:7px;cursor:pointer;
  font-size:11px;font-weight:700;letter-spacing:.3px;
  background:rgba(80,150,240,0.16);color:#a8cdf0;
  border:1px solid rgba(80,150,240,0.32);
  transition:background .15s, transform .08s;
  white-space:nowrap;
}
.ts-btn:hover{background:rgba(80,150,240,0.28);}
.ts-btn:active{transform:translateY(1px);}
.ts-btn-armall{background:rgba(255,180,50,0.16);color:#ffd58a;border-color:rgba(255,190,80,0.35);}
.ts-btn-armall:hover{background:rgba(255,180,50,0.28);}
.ts-btn-trade{background:rgba(60,200,130,0.16);color:#7bedb0;border-color:rgba(80,220,140,0.35);}
.ts-btn-trade:hover{background:rgba(60,200,130,0.28);}

/* Responsive collapse */
@media (max-width:1100px){
  .ts-row{grid-template-columns:1fr 1fr;grid-template-areas: "l l" "p p" "r r" "a a";}
  .ts-left    {grid-area:l;}
  .ts-prices  {grid-area:p;}
  .ts-reasons {grid-area:r;}
  .ts-actions {grid-area:a;flex-direction:row;}
}
@media (max-width:640px){
  .ts-row{padding:10px;}
  .ts-chip{min-width:72px;padding:4px 7px;}
  .ts-chip-val{font-size:12px;}
  .ts-header{flex-direction:column;align-items:flex-start;gap:8px;}
  .ts-controls{width:100%;justify-content:space-between;}
  .ts-filter{padding:6px 10px;font-size:11px;}
  .ts-act-lbl{font-size:10px;padding:4px 8px;}
  .ts-sym{font-size:15px;}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MOBILE BOTTOM NAVIGATION + BOTTOM SHEET
   The primary navigation pattern on phones (â‰¤ 900px).
   - .bottom-nav: persistent 5-tab bar pinned to the bottom of the viewport.
   - .bottom-sheet: slide-up panel used to reveal a group's sub-items.
   Both are hidden on desktop; the desktop header nav remains primary there.
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.bottom-nav{display:none;}
.bottom-sheet{display:none;}

@media (max-width:900px){
  /* Reserve bottom space for the nav bar so content isn't hidden behind it.
     Uses env(safe-area-inset-bottom) for the iOS home indicator. */
  :root{
    --bottom-nav-h: calc(60px + env(safe-area-inset-bottom, 0px));
  }

  .bottom-nav{
    display:flex;
    position:fixed;left:0;right:0;bottom:0;
    z-index:1200;                /* above the legacy drawer, below the sheet */
    align-items:stretch;
    background:rgba(8,13,24,0.97);
    backdrop-filter:blur(24px);
    -webkit-backdrop-filter:blur(24px);
    border-top:1px solid rgba(0,200,248,0.18);
    box-shadow:0 -8px 28px rgba(0,0,0,0.45);
    padding:
      6px
      max(6px, env(safe-area-inset-right))
      calc(6px + env(safe-area-inset-bottom, 0px))
      max(6px, env(safe-area-inset-left));
    gap:2px;
  }
  .bn-item{
    flex:1 1 0;min-width:0;
    position:relative;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;
    background:transparent;border:none;
    color:#7c95b8;
    font-family:inherit;font-size:10.5px;font-weight:600;letter-spacing:.2px;
    padding:6px 4px;min-height:52px;
    border-radius:10px;
    cursor:pointer;
    transition:color .18s ease, background .18s ease, transform .12s ease;
    -webkit-tap-highlight-color:transparent;
  }
  .bn-item i{font-size:17px;line-height:1;transition:transform .18s ease, filter .18s ease;}
  .bn-label{line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
  .bn-item:hover{color:#cfe2f8;background:rgba(255,255,255,0.03);}
  .bn-item:active{transform:translateY(1px);background:rgba(0,200,248,0.08);}
  .bn-item.active{color:var(--accent);}
  .bn-item.active i{filter:drop-shadow(0 0 6px rgba(0,200,248,0.55));transform:translateY(-1px);}
  .bn-item.active::before{
    content:"";
    position:absolute;top:2px;left:50%;transform:translateX(-50%);
    width:26px;height:3px;border-radius:2px;
    background:linear-gradient(90deg,#00c8f8,#00e87a);
    box-shadow:0 0 8px rgba(0,200,248,0.55);
  }
  /* Small numeric badge on top-right of an item (e.g. Signals count, Alerts count) */
  .bn-badge{
    position:absolute;top:4px;right:calc(50% - 20px);
    min-width:16px;height:16px;padding:0 5px;
    display:inline-flex;align-items:center;justify-content:center;
    font-size:9px;font-weight:800;letter-spacing:.2px;color:#fff;
    background:linear-gradient(135deg,#ff9a3d,#ff5555);
    border-radius:9px;
    box-shadow:0 0 6px rgba(255,154,61,0.55);
  }
  /* Narrow phones â€” shrink labels so 5 tabs never clip */
  @media (max-width:380px){
    .bn-item{font-size:9.5px;padding:6px 2px;}
    .bn-item i{font-size:16px;}
    .bn-badge{right:calc(50% - 16px);}
  }

  /* Push the main content up so the last rows aren't hidden behind the bar. */
  .main-content{padding-bottom:calc(var(--bottom-nav-h) + 16px);}

  /* The legacy drawer stops above the bottom nav so the bar remains tappable. */
  .main-nav.open{bottom:var(--bottom-nav-h);}
  body.nav-open::before{bottom:var(--bottom-nav-h);}

  /* Hamburger is retired on mobile â€” the bottom nav's "More" tab replaces it. */
  .menu-toggle{display:none !important;}
}

/* â”€â”€ Bottom sheet (shared by Markets / Signals / Intel / More) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.bottom-sheet[aria-hidden="false"]{display:block;}
.bottom-sheet{
  position:fixed;inset:0;z-index:1500;
}
.bs-backdrop{
  position:absolute;inset:0;
  background:rgba(2,6,14,0.55);
  backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);
  animation:bsFadeIn .2s ease-out;
}
@keyframes bsFadeIn{from{opacity:0;}to{opacity:1;}}
.bs-panel{
  position:absolute;left:0;right:0;bottom:0;
  background:linear-gradient(180deg,#111c33 0%,#0b1322 100%);
  border-top:1px solid rgba(0,200,248,0.22);
  border-radius:18px 18px 0 0;
  padding:
    6px
    max(14px, env(safe-area-inset-right))
    calc(14px + env(safe-area-inset-bottom, 0px))
    max(14px, env(safe-area-inset-left));
  max-height:75vh;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  animation:bsSlideUp .26s cubic-bezier(.22,.61,.36,1);
  box-shadow:0 -12px 40px rgba(0,0,0,0.55), 0 0 0 1px rgba(0,200,248,.06) inset;
}
@keyframes bsSlideUp{from{transform:translateY(100%);}to{transform:translateY(0);}}
.bs-handle{
  width:42px;height:4px;border-radius:2px;
  background:rgba(255,255,255,.18);
  margin:6px auto 10px;
}
.bs-title{
  font-size:11px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;
  color:#9bb5d8;
  padding:4px 6px 10px;
  border-bottom:1px solid rgba(255,255,255,.06);
  margin-bottom:8px;
}
.bs-items{display:flex;flex-direction:column;gap:6px;}
.bs-item{
  display:flex;align-items:center;gap:14px;
  padding:14px 14px;min-height:54px;
  background:rgba(15,25,42,0.65);
  border:1px solid rgba(80,120,180,0.22);
  border-radius:12px;
  color:#d9e4f3;
  cursor:pointer;
  transition:background .15s ease, border-color .15s ease, transform .12s ease;
  text-align:left;
  font-family:inherit;font-size:14px;font-weight:600;
  -webkit-tap-highlight-color:transparent;
}
.bs-item i,
.bs-item .bs-emoji{
  font-size:17px;width:24px;text-align:center;color:var(--accent);flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
}
.bs-item .bs-emoji{font-size:18px;color:inherit;}
.bs-item .bs-text{
  flex:1 1 auto;min-width:0;
  display:flex;flex-direction:column;gap:2px;
}
.bs-item .bs-name{font-weight:700;color:inherit;line-height:1.1;}
.bs-item .bs-hint{font-size:11px;color:#8aa3c4;font-weight:500;line-height:1.2;font-family:'JetBrains Mono', monospace;letter-spacing:.2px;}
.bs-item .bs-badge{
  margin-left:auto;
  background:linear-gradient(135deg,#ff9a3d,#ff5555);
  color:#fff;font-size:10.5px;font-weight:800;
  padding:3px 9px;border-radius:10px;
  box-shadow:0 0 6px rgba(255,154,61,.5);
}
.bs-item:hover,.bs-item:active{
  background:rgba(0,200,248,.12);
  border-color:rgba(0,200,248,.4);
  color:#fff;
}
.bs-item.active{
  background:rgba(0,200,248,.18);
  border-color:rgba(0,200,248,.55);
  color:#8ecbff;
}
.bs-item.active i{filter:drop-shadow(0 0 6px rgba(0,200,248,.55));}
/* Themed overrides so Signals / Intel items retain their accent colors */
.bs-item.momentum-nav i{color:#ff9a3d;}
.bs-item.meme-nav{color:#ffd86b;}
.bs-item.watch-nav i{color:#5ce1e6;}
.bs-item.insider-nav i{color:#a855f7;}

/* Lock body scroll while a bottom sheet is open. Locking BOTH <html> and
   <body> + killing touch-action prevents iOS rubber-band from wobbling the
   whole fixed layer (which made the bottom-nav appear to scroll along with
   the user's drag inside the sheet). The panel itself is the only element
   allowed to receive touch scroll. */
html.bs-open,
body.bs-open{
  overflow:hidden;
  overscroll-behavior:none;
  touch-action:none;
}
body.bs-open{
  position:fixed;left:0;right:0;width:100%;
}
/* The backdrop must NEVER scroll â€” it just absorbs taps to close. */
.bs-backdrop{touch-action:none;}
/* The panel is the one place vertical drag is allowed. */
.bs-panel{touch-action:pan-y;}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MOBILE + TABLET â€” comprehensive responsive rules
   Tablet:  â‰¤ 900px  (mobile nav appears, grids collapse)
   Mobile:  â‰¤ 600px  (touch-optimized layout)
   Small:   â‰¤ 400px  (ultra-compact)
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* Global mobile touch-friendliness */
@media (hover:none) and (pointer:coarse){
  /* Any tappable button gets a minimum accessible hit area */
  button, .nav-link, .cfbtn, .wfbtn, .nfbtn, .ts-filter,
  .ts-chip, .ts-btn, .tsmenu-btn, .tsmenu-toggle,
  .pb-select, .bp-btn, .bpop-close, .mp-btn,
  .export-btn, .refresh-btn, .clear-all-btn, .alert-perm-btn,
  .alert-test-btn, .alert-add-btn {
    min-height:40px;
  }
  /* Disable hover lift transforms on touch â€” they feel sticky */
  .ov-card:hover, .card:hover, .tr-item:hover,
  .macro-item:hover, .rank-row:hover, .mplay:hover,
  .ts-row:hover, .trending-item:hover {
    transform:none !important;
  }
}

/* Prevent body scroll when mobile menu is open.
   On iOS, `overflow:hidden` alone doesn't stop rubber-band scrolling, so we
   pair it with `position:fixed` and have JS store/restore the scroll offset
   via `body.style.top`. `width:100%` avoids the content collapsing to 0 width
   when switched to fixed positioning. */
body.nav-open{
  overflow:hidden;
  position:fixed;
  left:0;right:0;
  width:100%;
  overscroll-behavior:contain;
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€ Tablet (â‰¤ 900px) â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width:900px){
  /* Header */
  .header{padding:0 10px;gap:8px;}
  .header-left{gap:8px;min-width:0;flex:0 1 auto;overflow:hidden;}
  .header-right{gap:6px;flex-shrink:0;}
  .logo-text{font-size:14px;}
  .logo-mark{width:30px;height:30px;}
  .logo-icon{font-size:15px;}
  .live-clock{display:none;}
  .market-status{font-size:10px;}
  .market-status span:not(.status-dot){max-width:80px;overflow:hidden;text-overflow:ellipsis;}

  /* Menu toggle â€” make it obvious: icon + "MENU" label + attention pulse */
  .menu-toggle{
    display:inline-flex;align-items:center;justify-content:center;gap:7px;
    min-height:40px;padding:0 12px;
    background:linear-gradient(135deg,rgba(0,200,248,0.22),rgba(0,232,122,0.14));
    border:1px solid rgba(0,200,248,0.55);
    color:#d9f1ff;font-size:16px;font-weight:800;
    box-shadow:0 0 0 0 rgba(0,200,248,0);
  }
  .menu-toggle i{font-size:17px;}
  .menu-toggle-label{
    display:inline;font-size:11px;font-weight:800;letter-spacing:1.2px;
    text-transform:uppercase;color:#cfeeff;
  }
  .menu-toggle.active{
    background:linear-gradient(135deg,rgba(0,200,248,0.34),rgba(0,232,122,0.18));
    color:#fff;border-color:rgba(0,200,248,0.85);
  }
  .menu-toggle.active i::before{content:"\f00d";} /* Font Awesome X */
  .menu-toggle.active .menu-toggle-label{display:none;} /* collapse to X only when open */
  /* Attention pulse â€” added on first visit via JS (class .menu-toggle-hint) */
  .menu-toggle.menu-toggle-hint{
    animation:menuTogglePulse 1.4s ease-out 0s 4;
  }
  @keyframes menuTogglePulse{
    0%  { box-shadow:0 0 0 0 rgba(0,200,248,0.55); transform:scale(1); }
    60% { box-shadow:0 0 0 14px rgba(0,200,248,0);  transform:scale(1.04); }
    100%{ box-shadow:0 0 0 0 rgba(0,200,248,0);    transform:scale(1); }
  }
  /* Very narrow phones: trim label to save room for the refresh pill */
  @media (max-width:380px){
    .menu-toggle-label{display:none;}
    .menu-toggle{padding:0 10px;min-width:42px;}
  }

  /* Mobile nav dropdown â€” full-width slide down, not fixed overlay.
     `top` uses the shared --header-h var so the drawer sits flush with the
     header on every phone (including iOS with a notch). Safe-area padding on
     the sides and bottom keeps tap targets clear of notches and the iOS home
     indicator. */
  .main-nav.open{
    position:fixed;
    top:var(--header-h);
    left:0;right:0;bottom:0;
    z-index:998;
    display:flex;flex-direction:column;
    background:rgba(6,10,18,0.98);backdrop-filter:blur(24px);
    -webkit-backdrop-filter:blur(24px);
    padding:
      14px
      max(12px, env(safe-area-inset-right))
      calc(90px + env(safe-area-inset-bottom, 0px))
      max(12px, env(safe-area-inset-left));
    gap:4px;
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    mask-image:none;-webkit-mask-image:none;
    border-bottom:1px solid var(--border);
    animation:navSlideDown .22s ease-out;
  }
  /* Scrim: a soft dark overlay behind the drawer so the page content
     underneath fades back. Rendered via ::before so we don't need extra HTML. */
  body.nav-open::before{
    content:"";
    position:fixed;
    top:var(--header-h);
    left:0;right:0;bottom:0;
    background:rgba(2,6,14,0.45);
    z-index:997;
    pointer-events:none;
    animation:navSlideDown .22s ease-out;
  }
  @keyframes navSlideDown{
    from{opacity:0;transform:translateY(-8px);}
    to  {opacity:1;transform:translateY(0);}
  }
  .main-nav.open .nav-link{
    text-align:left;border-radius:10px;border-bottom:none;
    padding:13px 14px;font-size:14px;font-weight:600;
    background:rgba(15,25,42,0.6);border:1px solid rgba(80,120,180,0.18);
    min-height:48px;
  }
  .main-nav.open .nav-link i{font-size:14px;width:18px;text-align:center;}
  .main-nav.open .nav-link.active{
    background:rgba(0,200,248,0.16);
    border-color:rgba(0,200,248,0.45);
    color:#8ecbff;
  }

  /* Mobile: flatten dropdown groups into labelled sections */
  .main-nav.open .nav-group{
    display:flex;flex-direction:column;gap:4px;
    width:100%;margin-top:6px;
  }
  .main-nav.open .nav-group-trigger{
    display:none; /* hide dropdown trigger; children become direct links */
  }
  .main-nav.open .nav-dropdown{
    position:static;opacity:1;visibility:visible;transform:none;
    background:transparent;border:none;box-shadow:none;backdrop-filter:none;
    padding:0;min-width:0;width:100%;
    display:flex;flex-direction:column;gap:4px;
  }
  .main-nav.open .nav-dropdown::before{display:none;}
  .main-nav.open .nav-dd-label{
    padding:10px 4px 4px;font-size:10px;color:#6b89b8;
    border-top:1px solid rgba(255,255,255,.06);margin-top:4px;
  }
  .main-nav.open .nav-group:first-of-type .nav-dd-label{border-top:none;margin-top:0;}
  .main-nav.open .nav-dd-item{
    display:flex !important;
    grid-template-columns:none;
    align-items:center;gap:12px;
    padding:13px 14px !important;font-size:14px !important;
    background:rgba(15,25,42,0.6);
    border:1px solid rgba(80,120,180,0.18) !important;
    border-radius:10px !important;
    min-height:48px;
    color:#d9e4f3 !important;
  }
  .main-nav.open .nav-dd-item i,
  .main-nav.open .nav-dd-emoji{
    font-size:16px !important;width:22px;text-align:center;flex-shrink:0;
  }
  .main-nav.open .nav-dd-text{
    flex:1 1 auto;min-width:0;font-weight:600;
    overflow:hidden;text-overflow:ellipsis;
  }
  .main-nav.open .nav-dd-hint{
    margin-left:auto;font-size:10.5px;opacity:.78;
    flex-shrink:0;color:#8aa3c4;
    font-family:'JetBrains Mono', monospace;
  }
  /* Top-level standalone items in the mobile drawer also need consistent alignment */
  .main-nav.open > .nav-link{
    display:flex;align-items:center;gap:12px;
  }
  .main-nav.open > .nav-link i{
    font-size:16px;width:22px;text-align:center;flex-shrink:0;
  }
  .main-nav.open > .nav-link .nav-label{flex:1;}
  .main-nav.open > .nav-link .alert-count,
  .main-nav.open > .nav-link .nav-badge{margin-left:auto;}
  .main-nav.open .nav-dd-item.active{
    background:rgba(0,200,248,0.16) !important;
    border-color:rgba(0,200,248,0.45) !important;
    color:#8ecbff !important;
  }
  .main-nav.open .nav-dd-item.active::before{display:none;}

  /* Dashboard grid â†’ single column */
  .dashboard-grid{display:flex;flex-direction:column;gap:14px;}
  .sentiment-card, .span5, .span4, .span3{grid-column:unset;}
  .overview-grid{grid-template-columns:repeat(2,1fr);gap:10px;}
  .social-platform-grid{grid-template-columns:1fr;}
  .political-top-grid{grid-template-columns:1fr;}

  /* Cap-stats and meme */
  .cap-stats{grid-template-columns:repeat(2,1fr);}
  .meme-stats-grid{grid-template-columns:repeat(2,1fr);}
  .meme-banner{flex-direction:column;gap:12px;padding:14px;}
  .meme-banner h2{font-size:18px;}
  .meme-insight{font-size:12px;padding:9px 12px;}
  .ms-card-big{font-size:20px;}
  .ms-card-sym{font-size:15px;}

  /* Political cards */
  .pe-card{grid-template-columns:40px 1fr;gap:12px;}
  .pe-card .pe-meta{grid-column:2/-1;text-align:left;align-items:flex-start;flex-direction:row;flex-wrap:wrap;min-width:0;}
  .political-climate{flex-direction:column;align-items:flex-start;gap:10px;}
  .political-climate .pc-stats{gap:14px;}

  /* Panel headers */
  .panel-header h2{font-size:17px;flex-wrap:wrap;gap:6px;}
  .panel-header p{font-size:12px;line-height:1.5;}

  /* Table controls */
  .table-controls{flex-direction:column;align-items:stretch;gap:8px;}
  .table-controls > *{width:100%;}
  .export-btn{margin-left:0;}

  /* Filter chip groups (wrap horizontally, scroll if still too wide) */
  .fgroup, .wfbtns, .nfbtns, .cfbtns, .ts-filters, .trend-filters, .mom-filters{
    flex-wrap:wrap;gap:6px;
  }
  .wfbtn, .nfbtn, .cfbtn, .mfbtn{padding:7px 11px;font-size:11px;}

  /* Alert form â€” single column labels */
  .alerts-layout{grid-template-columns:1fr !important;}
  .af-row{flex-direction:column;align-items:stretch;gap:4px;}
  .af-row label{width:auto;}
  .af-row input, .af-row select{width:100%;}

  /* Smart Trade Signals â€” stacked */
  .ts-row{grid-template-columns:1fr;grid-template-areas:"l" "p" "r" "a";gap:10px;padding:12px;}
  .ts-left   {grid-area:l;}
  .ts-prices {grid-area:p;}
  .ts-reasons{grid-area:r;}
  .ts-actions{grid-area:a;flex-direction:row;gap:8px;}
  .ts-actions .ts-btn{flex:1;}

  /* Broker picker modal */
  .bpop-modal{width:calc(100vw - 24px) !important;max-width:520px !important;}
  .bpop-grid{grid-template-columns:repeat(2,1fr) !important;}

  /* Watchlist cards â€” stack tech row */
  .wl-card .wl-tech-row{grid-template-columns:repeat(2,1fr) !important;}
  .wl-card .wl-levels{grid-template-columns:repeat(3,1fr);font-size:11px;}
  .wl-card .wl-backtest{grid-template-columns:repeat(2,1fr);}

  /* Momentum plays */
  .mplay{grid-template-columns:1fr !important;}

  /* Help popovers â€” fit viewport */
  .help-popover{
    left:12px !important;right:12px !important;
    width:auto !important;max-width:none !important;
    min-width:0 !important;
  }
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€ Mobile (â‰¤ 600px) â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width:600px){
  html{ -webkit-text-size-adjust:100%; }

  /* Shrink header + ticker on phones. We keep them in sync via CSS vars so
     the drawer, main content offset, and fixed-position overlays all track. */
  :root{
    --header-h: calc(56px + env(safe-area-inset-top, 0px));
    --ticker-h: 28px;
  }
  .main-content{padding:12px 10px 60px;}

  /* Hide the market-status label text, keep only the dot */
  .market-status span:not(.status-dot){display:none;}

  .refresh-btn{padding:6px 9px;font-size:10px;gap:4px;}
  .refresh-btn .rb-ago{display:none;}

  /* Install button â€” keep icon, hide text label on phones.
     Height matches .menu-toggle so the header chrome is vertically aligned. */
  .install-btn{padding:0;width:40px;height:40px;justify-content:center;gap:0;}
  .install-btn-text{display:none;}

  /* Logo â€” keep the mark visible, shrink text */
  .logo-text{font-size:13px;}

  /* Overview cards: 2 columns on phones */
  .overview-grid{grid-template-columns:repeat(2,1fr);gap:8px;}
  .ov-card{padding:10px 12px 10px;}
  .ov-card .ov-val{font-size:17px;}
  .ov-card .ov-lbl{font-size:10px;}

  /* Card body padding */
  .card{padding:12px;}
  .card-header{padding-bottom:10px;margin-bottom:10px;}
  .card-header h3{font-size:12px;flex-wrap:wrap;}

  .panel-header h2{font-size:16px;}

  /* Cap-stats single column */
  .cap-stats{grid-template-columns:1fr 1fr;gap:8px;}

  /* Tables: make obviously scrollable with a soft hint */
  .table-wrap{
    position:relative;
    background:linear-gradient(90deg, var(--bg2) 30%, rgba(255,255,255,0)),
               linear-gradient(90deg, rgba(255,255,255,0), var(--bg2) 70%) 100% 0,
               radial-gradient(farthest-side at 0, rgba(0,200,248,0.18), transparent),
               radial-gradient(farthest-side at 100% 0, rgba(0,200,248,0.18), transparent) 100% 0;
    background-repeat:no-repeat;
    background-size:40px 100%, 40px 100%, 14px 100%, 14px 100%;
    background-attachment:local, local, scroll, scroll;
    -webkit-overflow-scrolling:touch;
  }
  .stock-table{font-size:12px;}
  .stock-table thead th{padding:9px 9px;font-size:10px;}
  .stock-table tbody td{padding:8px 9px;}

  /* Ticker tape smaller */
  .t-item{font-size:10.5px;padding:0 12px;}

  /* Alerts card list buttons stack */
  .alert-form .alert-add-btn{width:100%;}
  .alerts-layout{gap:12px;}
  .alert-settings{padding:10px;}
  .alert-toggle{flex-wrap:wrap;}

  /* Smart Trade Signals â€” compact chips */
  .ts-sub{font-size:11px;}
  .ts-prices{gap:5px;}
  .ts-chip{min-width:64px;padding:5px 8px;flex:1 1 28%;}
  .ts-chip-lbl{font-size:8.5px;}
  .ts-chip-val{font-size:11.5px;}
  .ts-rr{flex:1 1 28%;}
  .ts-reasons ul{padding-left:14px;font-size:10.5px;}
  .ts-pillars{gap:4px;}
  .tsp{font-size:9px;padding:2px 6px;}
  .ts-action{min-width:54px;}

  /* Watchlist */
  .wl-card{padding:12px;}
  .wl-card .wl-levels{grid-template-columns:1fr 1fr 1fr;}
  .wl-card .wl-tech-row{grid-template-columns:repeat(2,1fr);}
  .wl-card .wl-backtest{grid-template-columns:repeat(2,1fr);gap:6px;font-size:10px;}

  /* Trending items */
  .trending-item{padding:8px;flex-wrap:wrap;gap:6px;}
  .tr-name{display:none;} /* save space; ticker + score remain */

  /* Buzz heatmap â€” keep grid but tighter */
  .buzz-heatmap{grid-template-columns:repeat(auto-fill, minmax(82px,1fr)) !important;}

  /* Toasts bottom-centered on mobile instead of top-right */
  .toast-container{
    top:auto !important;right:auto !important;
    bottom:12px !important;left:12px !important;
    max-width:calc(100vw - 24px) !important;
  }

  /* News cards */
  .nc{padding:10px;}
  .nc h4{font-size:13px;}

  /* Meme banner text smaller */
  .meme-banner h2{font-size:16px;}
  .meme-banner p{font-size:12px;}

  /* Fgroup stacking */
  .fgroup{flex-direction:column;gap:8px;}
  .fgroup > *{width:100%;}

  /* Keep nav links comfy tap size inside mobile drawer */
  .main-nav.open .nav-link{padding:14px 14px;}
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€ Ultra-compact (â‰¤ 400px) â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width:400px){
  .header{padding:0 8px;gap:6px;}
  .logo-mark{width:26px;height:26px;}
  .logo-icon{font-size:13px;}
  .logo-text{font-size:12px;}
  .logo-ai{font-size:11px;}
  .overview-grid{gap:6px;}
  .ov-card{padding:9px 10px;}
  .ov-card .ov-val{font-size:15px;}
  .main-content{padding:10px 8px 60px;}
  .ts-action{min-width:48px;flex-shrink:0;}
  .ts-act-lbl{padding:3px 6px;font-size:9.5px;}
  .ts-grade{font-size:9px;padding:1px 5px;}
  .card{padding:10px;}
  .bpop-grid{grid-template-columns:1fr !important;}
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   FIRST-LAUNCH DISCLAIMER MODAL
   Hard-blocks the UI on first visit + every 90 days. Dismissable only
   after explicit checkbox acknowledgement.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.disclaimer-modal{
  position:fixed;inset:0;z-index:9999;
  display:flex;align-items:center;justify-content:center;
  padding:20px;
}
.disc-backdrop{
  position:absolute;inset:0;
  background:rgba(8,12,22,.92);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.disc-panel{
  position:relative;
  max-width:680px;width:100%;
  max-height:90vh;overflow-y:auto;
  background:linear-gradient(180deg,rgba(20,28,48,.98) 0%,rgba(12,18,32,.98) 100%);
  border:1px solid rgba(124,149,184,.30);
  border-radius:16px;
  padding:32px 36px 26px;
  box-shadow:0 20px 60px rgba(0,0,0,.55), 0 0 0 1px rgba(255,255,255,.04) inset;
  color:var(--text);
  animation:discFadeIn .35s ease-out;
}
@keyframes discFadeIn{
  from{opacity:0;transform:translateY(12px) scale(.98);}
  to  {opacity:1;transform:none;}
}
.disc-icon{
  width:54px;height:54px;
  background:linear-gradient(135deg,rgba(0,232,122,.20),rgba(0,200,248,.18));
  border:1px solid rgba(0,232,122,.40);
  border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  margin-bottom:14px;
  font-size:22px;color:#7af09c;
}
.disc-panel h2{
  margin:0 0 10px;font-size:22px;letter-spacing:.01em;
  color:#fff;
}
.disc-lede{
  margin:0 0 22px;font-size:14px;line-height:1.6;color:var(--text2);
}
.disc-section{
  margin:18px 0;padding:14px 16px;
  background:rgba(124,149,184,.05);
  border:1px solid rgba(124,149,184,.18);
  border-radius:10px;
}
.disc-section h3{
  margin:0 0 10px;font-size:13px;letter-spacing:.04em;text-transform:uppercase;
  color:var(--text);display:flex;align-items:center;gap:8px;
}
.disc-section h3 i{color:#5ce1e6;}
.disc-section ul{margin:0;padding:0 0 0 20px;}
.disc-section li{
  font-size:13.5px;line-height:1.55;color:var(--text2);
  margin-bottom:6px;
}
.disc-section li b{color:var(--text);}
.disc-section-warn{
  background:rgba(255,193,7,.06);
  border-color:rgba(255,193,7,.30);
}
.disc-section-warn h3 i{color:#ffd76b;}
.disc-section-emph{
  background:rgba(255,80,80,.05);
  border-color:rgba(255,80,80,.30);
}
.disc-section-emph h3 i{color:#ff8b8b;}

.disc-actions{
  margin-top:24px;padding-top:20px;
  border-top:1px solid rgba(124,149,184,.18);
  display:flex;flex-direction:column;gap:14px;
}
.disc-check{
  display:flex;align-items:flex-start;gap:10px;
  font-size:13px;line-height:1.5;color:var(--text);
  cursor:pointer;
  padding:10px 12px;
  border:1px solid rgba(124,149,184,.20);
  border-radius:10px;
  background:rgba(124,149,184,.04);
  transition:border-color .2s,background .2s;
}
.disc-check:hover{border-color:rgba(0,232,122,.40);background:rgba(0,232,122,.04);}
.disc-check input{
  margin-top:2px;flex-shrink:0;
  width:18px;height:18px;
  accent-color:#00e87a;
  cursor:pointer;
}
.disc-btn{
  background:linear-gradient(135deg,#00b85f 0%,#00e87a 100%);
  color:#001f10;font-weight:800;font-size:14px;letter-spacing:.02em;
  padding:14px 18px;border-radius:10px;border:none;
  cursor:pointer;transition:all .2s;
  box-shadow:0 4px 14px rgba(0,232,122,.30);
}
.disc-btn:hover:not(:disabled){
  transform:translateY(-1px);
  box-shadow:0 6px 20px rgba(0,232,122,.45);
}
.disc-btn:disabled{
  background:rgba(124,149,184,.20);
  color:var(--text3);
  cursor:not-allowed;
  box-shadow:none;
}
@media (max-width:600px){
  .disc-panel{padding:22px 18px;border-radius:12px;}
  .disc-panel h2{font-size:18px;}
  .disc-section{padding:12px 13px;}
  .disc-section li{font-size:12.5px;}
}

/* "Limits & risks" pill in the forecast hero â€” visually emphatic so it's
   genuinely visible, not buried like most fintech disclaimers. */
.fc-limit-pill{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px;border-radius:14px;
  font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  background:rgba(255,193,7,.10);
  border:1px solid rgba(255,193,7,.40);
  color:#ffd76b;
  cursor:help;
  transition:background .2s;
}
.fc-limit-pill:hover{background:rgba(255,193,7,.18);}
.fc-limit-pill i{font-size:11px;}

/* ═══════════════════════════════════════════════════════════════════
   RADICAL TRANSPARENCY UI
   "Show your work" components: edge banner, source-health row,
   invalidation list, and DECLINED bucket card.
   ═══════════════════════════════════════════════════════════════════ */

/* Positioning banner: states the trade-off as the product itself. */
.fc-edge-banner{
  display:flex;align-items:center;gap:14px;
  padding:14px 18px;margin:14px 0 6px;
  background:linear-gradient(90deg,rgba(0,200,248,.06) 0%,rgba(0,232,122,.06) 100%);
  border:1px solid rgba(0,200,248,.30);
  border-radius:12px;
}
.fc-edge-icon{
  flex-shrink:0;width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;
  border-radius:10px;
  background:rgba(0,200,248,.15);color:#5ce1e6;font-size:16px;
  border:1px solid rgba(0,200,248,.40);
}
.fc-edge-text{flex:1;min-width:0;}
.fc-edge-title{
  font-weight:800;font-size:13px;letter-spacing:.04em;text-transform:uppercase;
  color:#5ce1e6;margin-bottom:4px;
}
.fc-edge-body{font-size:12.5px;line-height:1.55;color:var(--text2);}
.fc-edge-body b{color:var(--text);}
@media (max-width:600px){
  .fc-edge-banner{flex-direction:column;align-items:flex-start;gap:10px;}
}

/* Source-health row on every card. */
.fc-source-health{
  display:flex;align-items:center;gap:8px;
  padding:6px 9px;margin:8px 0;
  background:rgba(124,149,184,.05);
  border:1px solid rgba(124,149,184,.18);
  border-radius:8px;
  font-size:11px;
}
.sh-label{color:var(--text3);font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:10px;}
.sh-dots{display:inline-flex;gap:4px;}
.sh-dot{
  display:inline-block;width:9px;height:9px;border-radius:50%;
  border:1px solid rgba(255,255,255,.10);
  cursor:help;
}
.sh-dot.sh-ok  {background:#00e87a;box-shadow:0 0 4px rgba(0,232,122,.45);}
.sh-dot.sh-weak{background:#ffd76b;}
.sh-dot.sh-bad {background:#ff6b6b;box-shadow:0 0 4px rgba(255,80,80,.50);}
.sh-dot.sh-miss{background:rgba(124,149,184,.25);}
.sh-pct{margin-left:auto;font-weight:800;font-size:11px;}
.sh-pct-good{color:#7af09c;}
.sh-pct-mid {color:#ffd76b;}
.sh-pct-bad {color:#ff8b8b;}

/* Invalidation block: the "this signal is wrong if..." list. */
.fc-invalidate{
  margin-top:10px;padding:10px 12px;
  background:rgba(255,193,7,.05);
  border:1px solid rgba(255,193,7,.25);
  border-radius:8px;
}
.fc-invalidate-head{
  font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  color:#ffd76b;margin-bottom:6px;
}
.fc-invalidate-head i{margin-right:5px;}
.fc-invalidate ul{margin:0;padding:0 0 0 16px;}
.fc-invalidate li{
  font-size:12px;line-height:1.5;color:var(--text2);
  margin-bottom:3px;
}
.fc-invalidate li:last-child{margin-bottom:0;}

/* DECLINED card — algorithm refused to forecast. */
.fc-declined{
  border:1px dashed rgba(255,193,7,.45);
  background:linear-gradient(180deg,rgba(255,193,7,.04) 0%,rgba(124,149,184,.03) 100%);
  border-radius:12px;
  padding:14px 16px;
}
.fc-declined-head{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:12px;margin-bottom:10px;
}
.fc-declined-head .fc-sym{font-size:16px;font-weight:800;color:var(--text);}
.fc-declined-head .fc-name{font-size:11px;color:var(--text3);}
.fc-declined-stats{display:flex;gap:10px;}
.fc-declined-reason{
  padding:8px 11px;
  background:rgba(255,193,7,.08);
  border:1px solid rgba(255,193,7,.30);
  border-radius:8px;
  font-size:12.5px;line-height:1.5;color:#ffd76b;
  margin-bottom:8px;
}
.fc-declined-reason i{margin-right:6px;}

/* Declined section accordion. */
.forecast-declined-details{
  background:rgba(255,193,7,.04);
  border:1px solid rgba(255,193,7,.22);
  border-radius:12px;
  padding:6px 14px;
}
.forecast-declined-details summary{
  cursor:pointer;padding:8px 0;font-size:13px;color:var(--text);
  list-style:none;
}
.forecast-declined-details summary::-webkit-details-marker{display:none;}
.forecast-declined-details[open] summary{margin-bottom:10px;border-bottom:1px solid rgba(255,193,7,.18);}
