homepage: neon dual-speed ticker + emerald/cyan palette pass

- New DualSpeedTicker component (CSS keyframes, GPU-accelerated,
  pause on hover, 28px rows, 17s BEAT / 40s FORUM, refresh 5min)
- /api/ticker/beat-news: last 7 days from bb.native_articles
- /api/ticker/forum-posts: latest threads + replies interleaved
- Mounted at the bottom of Header so every page gets it
- Scoped .bb-neon palette on homepage root: section heads +
  text-shadow glow, neon-tinted card borders, emerald→cyan button
  gradient, cyan hover state on links, subscribe boxes neon-bordered
- CSS-only — no layout changes

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ryan Salazar
2026-05-21 23:58:12 +00:00
parent 5eaf64925f
commit aee67ef9f6
6 changed files with 490 additions and 1 deletions

View File

@@ -1364,3 +1364,126 @@ h1, h2, h3 {
color: #ffffff;
font-weight: 600;
}
/* ─── Neon homepage palette ─────────────────────────────────────────
Scoped to the homepage via `.bb-neon` on the root <div>. CSS-only
recolor: maps the existing blue accents (#3b82f6 / #60a5fa) to the
ticker's emerald + cyan, with subtle glows. No layout changes. */
.bb-neon {
--color-accent: #00ff9f;
--color-accent-dark: #00d4ff;
--color-accent-muted: rgba(0, 255, 159, 0.18);
--color-text-info: #00d4ff;
--color-text-info-strong: #00ff9f;
}
/* Section headings — emerald with subtle glow */
.bb-neon h2,
.bb-neon h3.font-heading,
.bb-neon .font-heading.section-title {
color: #00ff9f;
text-shadow: 0 0 6px rgba(0, 255, 159, 0.35);
letter-spacing: -0.01em;
}
/* Existing blue text → cyan */
.bb-neon .text-\[\#3b82f6\] {
color: #00d4ff !important;
text-shadow: 0 0 4px rgba(0, 212, 255, 0.25);
}
.bb-neon .text-\[\#60a5fa\] {
color: #00d4ff !important;
}
.bb-neon a:not(.bbt-item):not(.bbt-label):hover {
color: #00d4ff;
text-shadow: 0 0 4px rgba(0, 212, 255, 0.35);
}
/* Borders previously blue → neon-tinted, subtle */
.bb-neon .border-\[\#3b82f6\],
.bb-neon .border-\[\#3b82f6\\/30\],
.bb-neon .border-\[\#1e3a5f\] {
border-color: rgba(0, 255, 159, 0.35) !important;
}
/* Card border softening to neon */
.bb-neon .border-\[\#252525\],
.bb-neon .border-\[\#2a2a2a\] {
border-color: rgba(0, 255, 159, 0.14) !important;
}
/* Hover state on cards / clickable wrappers — cyan border + faint glow */
.bb-neon .border-\[\#252525\]:hover,
.bb-neon .border-\[\#2a2a2a\]:hover,
.bb-neon a:hover > .border-\[\#252525\],
.bb-neon a:hover > .border-\[\#2a2a2a\] {
border-color: rgba(0, 212, 255, 0.55) !important;
box-shadow: 0 0 14px rgba(0, 212, 255, 0.18);
}
/* Buttons previously blue → emerald→cyan gradient with black text */
.bb-neon .bg-\[\#3b82f6\],
.bb-neon button.bg-\[\#3b82f6\],
.bb-neon a.bg-\[\#3b82f6\] {
background: linear-gradient(90deg, #00ff9f 0%, #00d4ff 100%) !important;
color: #000 !important;
box-shadow: 0 0 14px rgba(0, 212, 255, 0.30);
border: none;
}
.bb-neon .bg-\[\#3b82f6\]:hover,
.bb-neon .hover\:bg-\[\#2563eb\]:hover,
.bb-neon button.bg-\[\#3b82f6\]:hover,
.bb-neon a.bg-\[\#3b82f6\]:hover {
background: linear-gradient(90deg, #14ffb0 0%, #4ee0ff 100%) !important;
box-shadow: 0 0 22px rgba(0, 255, 159, 0.45);
}
/* Category pills / tags / "AI" badges — cyan */
.bb-neon .bg-\[\#3b82f6\]\/20 {
background: rgba(0, 212, 255, 0.12) !important;
border-color: rgba(0, 212, 255, 0.35) !important;
}
/* Subscribe / newsletter accent boxes */
.bb-neon .bg-\[\#1a2535\],
.bb-neon .bg-\[\#0d1f35\] {
background-color: #050a0a !important;
border: 1px solid rgba(0, 255, 159, 0.25);
box-shadow: 0 0 18px rgba(0, 255, 159, 0.15);
}
/* Featured / hero container — neon outline + soft inner glow */
.bb-neon .featured-bento,
.bb-neon [data-featured-bento],
.bb-neon section[aria-label*="Featured"],
.bb-neon section[aria-label*="featured"] {
position: relative;
}
/* Skeletons keep their dim look — don't recolor */
.bb-neon .skeleton {
background: #0d0d0d;
}
/* Divider lines */
.bb-neon hr,
.bb-neon .h-px.bg-\[\#2a2a2a\],
.bb-neon .bg-\[\#222\] {
background-color: rgba(0, 255, 159, 0.15) !important;
}
/* Body / paragraph copy: lean toward spec's #d1d5db where currently muted */
.bb-neon .text-\[\#e8e8e8\],
.bb-neon .text-\[\#e0e0e0\] {
color: #d1d5db !important;
}
/* Focus rings on interactive elements */
.bb-neon .focus\:ring-\[\#3b82f6\]:focus,
.bb-neon .focus-visible\:ring-\[\#3b82f6\]:focus-visible {
--tw-ring-color: rgba(0, 212, 255, 0.6) !important;
}
.bb-neon .focus\:border-\[\#3b82f6\]:focus,
.bb-neon .focus-visible\:border-\[\#3b82f6\]:focus-visible {
border-color: #00d4ff !important;
}