feat(brand): AV BEAT 2026 rebrand — blue/navy/white identity

- New AvBeatLogo inline-SVG component (rounded-square emblem with
  forward-leaning AV monogram + horizontal beam detail) at
  src/components/AvBeatLogo.tsx, three variants (full/wordmark/icon).
- Header.tsx now uses the responsive AV BEAT logo lockup in the
  top-left, links to /, full lockup on desktop (emblem+wordmark+tagline),
  emblem+wordmark on tablet, emblem-only on mobile.
- Removed DualSpeedTicker (the 'RECENT FORUM POSTS' ticker strip);
  the news ticker / glow chrome does not match the new aesthetic and the
  forum row was the explicit removal target.
- Tailwind theme + globals.css now expose the AV BEAT 2026 palette as
  semantic tokens: --brand-blue (#1D4ED8), --brand-blue-bright (#38BDF8),
  --brand-navy (#0F172A), --brand-bg (#F8FAFC), --brand-surface, --brand-border,
  --brand-text, --brand-text-muted. Legacy --color-* aliases re-point to the
  new tokens so any inline-styled component re-themes for free.
- Site-wide hex sweep migrates 2,769 hardcoded color literals across 144
  files from the old dark-broadcast palette to the new tokens (orange
  -> blue, dark-brown -> white surface / navy text, cream -> navy).
- Layout body class flipped from 'bb-neon' to 'bg-brand-bg text-brand-text'
  so the dark glow chrome no longer leaks through the new light theme.
This commit is contained in:
2026-06-03 12:07:18 +00:00
parent 39d2bf9073
commit 8042024c4a
146 changed files with 2219 additions and 2081 deletions

View File

@@ -8,57 +8,64 @@ module.exports = {
theme: {
extend: {
colors: {
primary: '#1c1815',
secondary: '#231d18',
accent: '#F0A623',
'accent-dark': '#BA7517',
'accent-muted': '#412402',
'accent-red': '#D85A30',
'accent-red-dark': '#E24B4A',
background: '#1c1815',
card: '#231d18',
foreground: '#FBEFE0',
muted: '#C9BBA8',
border: '#3a322b',
'navy-mid': '#1e1e1e',
'navy-light': '#3a322b',
'ice-blue': '#231d18',
'top-bar': '#231d18',
'sub-nav': '#26201a',
// AV BEAT 2026 brand palette — semantic tokens.
// Use the `brand-*` classes in new code. The legacy aliases below
// (primary/secondary/accent/etc.) remap onto the same tokens so
// existing markup re-themes without a 2k-line find/replace.
'brand-blue': '#1D4ED8',
'brand-blue-bright': '#38BDF8',
'brand-navy': '#0F172A',
'brand-white': '#FFFFFF',
'brand-bg': '#F8FAFC',
'brand-surface': '#FFFFFF',
'brand-border': '#DCE6F2',
'brand-text': '#0F172A',
'brand-text-muted': '#475569',
// Legacy aliases → remap to new tokens.
primary: '#0F172A',
secondary: '#FFFFFF',
accent: '#1D4ED8',
'accent-dark': '#1E3A8A',
'accent-muted': '#DCE6F2',
'accent-red': '#1D4ED8',
'accent-red-dark': '#1E3A8A',
background: '#F8FAFC',
card: '#FFFFFF',
foreground: '#0F172A',
muted: '#475569',
border: '#DCE6F2',
'navy-mid': '#0F172A',
'navy-light': '#DCE6F2',
'ice-blue': '#F8FAFC',
'top-bar': '#FFFFFF',
'sub-nav': '#F8FAFC',
},
fontFamily: {
heading: ['Georgia', 'serif'],
body: ['Arial', 'Helvetica', 'sans-serif'],
mono: ['Courier New', 'monospace'],
heading: ['var(--font-sans)', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Helvetica', 'Arial', 'sans-serif'],
body: ['var(--font-sans)', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Helvetica', 'Arial', 'sans-serif'],
serif: ['var(--font-serif)', 'Georgia', 'serif'],
mono: ['ui-monospace', 'SF Mono', 'Menlo', 'Consolas', 'Courier New', 'monospace'],
},
maxWidth: {
container: '1200px',
},
boxShadow: {
card: '0 1px 4px rgba(0, 0, 0, 0.5)',
'card-hover': '0 4px 16px rgba(0, 0, 0, 0.6)',
nav: '0 2px 8px rgba(0, 0, 0, 0.5)',
card: '0 1px 2px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.04)',
'card-hover': '0 4px 12px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04)',
nav: '0 1px 0 rgba(15, 23, 42, 0.06)',
},
keyframes: {
'fade-in': {
'0%': { opacity: '0', transform: 'translateY(8px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
'page-enter': {
'0%': { opacity: '0', transform: 'translateY(6px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
shimmer: {
'0%': { backgroundPosition: '-200% 0' },
'100%': { backgroundPosition: '200% 0' },
},
'fade-in': { '0%': { opacity: '0', transform: 'translateY(8px)' }, '100%': { opacity: '1', transform: 'translateY(0)' } },
'page-enter': { '0%': { opacity: '0', transform: 'translateY(6px)' }, '100%': { opacity: '1', transform: 'translateY(0)' } },
shimmer: { '0%': { backgroundPosition: '-200% 0' }, '100%': { backgroundPosition: '200% 0' } },
},
animation: {
'fade-in': 'fade-in 0.35s ease forwards',
'fade-in': 'fade-in 0.35s ease forwards',
'page-enter': 'page-enter 0.4s ease forwards',
shimmer: 'shimmer 1.6s infinite linear',
shimmer: 'shimmer 1.6s infinite linear',
},
},
},
plugins: [],
};
};