diff --git a/src/app/layout/Footer.tsx b/src/app/layout/Footer.tsx index e6e4102..5dca349 100644 --- a/src/app/layout/Footer.tsx +++ b/src/app/layout/Footer.tsx @@ -13,7 +13,7 @@ function FooterCurve() { {/* white (page) above, navy below, with a smooth dip on the LEFT side */} {/* scroll-to-top button sitting in the dip (left side) */} @@ -23,12 +23,12 @@ function FooterCurve() { style={{ position: 'absolute', top: 8, left: '16.7%', transform: 'translateX(-50%)', width: 40, height: 40, borderRadius: '50%', cursor: 'pointer', - background: '#071d49', border: '2px solid rgba(255,255,255,0.25)', + background: '#032340', border: '2px solid rgba(255,255,255,0.25)', display: 'flex', alignItems: 'center', justifyContent: 'center', transition: 'transform 180ms, background 180ms', }} - onMouseEnter={(e) => { (e.currentTarget as HTMLElement).style.transform = 'translateX(-50%) translateY(-3px)'; (e.currentTarget as HTMLElement).style.background = '#c9a227' }} - onMouseLeave={(e) => { (e.currentTarget as HTMLElement).style.transform = 'translateX(-50%)'; (e.currentTarget as HTMLElement).style.background = '#071d49' }} + onMouseEnter={(e) => { (e.currentTarget as HTMLElement).style.transform = 'translateX(-50%) translateY(-3px)'; (e.currentTarget as HTMLElement).style.background = '#CD9E53' }} + onMouseLeave={(e) => { (e.currentTarget as HTMLElement).style.transform = 'translateX(-50%)'; (e.currentTarget as HTMLElement).style.background = '#032340' }} > @@ -36,8 +36,8 @@ function FooterCurve() { ) } -const NAVY = '#071d49' -const GOLD = '#c9a227' +const NAVY = '#032340' +const GOLD = '#CD9E53' /* round social buttons (gold filled, like the screenshot) */ const SOCIALS = [ diff --git a/src/components/ui/globe.tsx b/src/components/ui/globe.tsx index 4e97244..4870d4e 100644 --- a/src/components/ui/globe.tsx +++ b/src/components/ui/globe.tsx @@ -11,8 +11,8 @@ type Arc = { arcAlt: number; color: string } -const NAVY = '#071d49' -const COLORS = ['#22ade0', '#3b82f6', '#c9a227'] +const NAVY = '#032340' +const COLORS = ['#22ade0', '#3b82f6', '#CD9E53'] /* steel-trade arcs centred on Tehran/Shanghai */ const ARCS: Arc[] = [ diff --git a/src/content/integrations.ts b/src/content/integrations.ts index c3acffa..6fb527a 100644 --- a/src/content/integrations.ts +++ b/src/content/integrations.ts @@ -24,7 +24,7 @@ export type Integration = { /* Global steel data sources & exchanges, scattered across a 6×5 grid. Empty cells stay as faint placeholders for the "constellation" look. */ export const INTEGRATIONS: Integration[] = [ - { id: 'lme', name: 'London Metal Exchange', icon: 'exchange', accent: '#c9a227', col: 6, row: 1 }, + { id: 'lme', name: 'London Metal Exchange', icon: 'exchange', accent: '#CD9E53', col: 6, row: 1 }, { id: 'shfe', name: 'Shanghai Futures Exchange', icon: 'trending', accent: '#c0392b', col: 4, row: 2 }, { id: 'platts', name: 'S&P Global Platts', icon: 'chart', accent: '#2471a3', col: 6, row: 2 }, { id: 'reuters', name: 'Reuters', icon: 'newspaper', accent: '#e67e22', col: 3, row: 3 }, diff --git a/src/index.css b/src/index.css index e7df8db..28f1288 100644 --- a/src/index.css +++ b/src/index.css @@ -46,7 +46,7 @@ ═══════════════════════════════════════════════ */ :root { /* Raw brand colors */ - --color-navy: #071D49; + --color-navy: #032340; --color-blue: #00AEEF; --color-white: #FFFFFF; --color-gray-light: #E9EEF5; @@ -59,7 +59,7 @@ --paper-3: #d5dce8; /* tertiary surface */ /* Semantic text tokens — all navy scale */ - --ink: #071D49; /* primary text / headings */ + --ink: #032340; /* primary text / headings */ --ink-2: #0d2d6b; /* strong secondary */ --ink-3: #1a3f7a; /* medium emphasis */ --ink-4: #7C8798; /* muted / secondary text */ diff --git a/src/pages/AtAGlance/AtAGlance.tsx b/src/pages/AtAGlance/AtAGlance.tsx index 02cc695..0c74b75 100644 --- a/src/pages/AtAGlance/AtAGlance.tsx +++ b/src/pages/AtAGlance/AtAGlance.tsx @@ -8,14 +8,14 @@ export default function AtAGlance() { return (
{/* page header */} -
+
-
+
AT A GLANCE

diff --git a/src/pages/Home/sections/AtAGlanceSection.tsx b/src/pages/Home/sections/AtAGlanceSection.tsx index 4e8c4f7..926438a 100644 --- a/src/pages/Home/sections/AtAGlanceSection.tsx +++ b/src/pages/Home/sections/AtAGlanceSection.tsx @@ -2,8 +2,8 @@ import { useState } from 'react' import { AnimatePresence, motion } from 'framer-motion' import { useLang } from '@/context/LangContext' -const NAVY = '#071d49' -const GOLD = '#c9a227' +const NAVY = '#032340' +const GOLD = '#CD9E53' type Glance = { source: string diff --git a/src/pages/Home/sections/FactoryReportsScroll.tsx b/src/pages/Home/sections/FactoryReportsScroll.tsx index 6329848..31e8a6e 100644 --- a/src/pages/Home/sections/FactoryReportsScroll.tsx +++ b/src/pages/Home/sections/FactoryReportsScroll.tsx @@ -3,8 +3,8 @@ import { ArrowLeft } from 'lucide-react' import { useLang } from '@/context/LangContext' import { FACTORY_REPORTS, FACTORY_REPORTS_META, type FactoryReport, type ScrollDir } from '@/content/factoryReports' -const NAVY = '#071d49' -const GOLD = '#c9a227' +const NAVY = '#032340' +const GOLD = '#CD9E53' const EASE = [0.22, 1, 0.36, 1] as const /* native ScrollAnimation — slides child in from a direction when it enters view */ diff --git a/src/pages/Home/sections/HeroSection.tsx b/src/pages/Home/sections/HeroSection.tsx index ae922ca..f3e1b24 100644 --- a/src/pages/Home/sections/HeroSection.tsx +++ b/src/pages/Home/sections/HeroSection.tsx @@ -5,7 +5,7 @@ import { useLang } from '@/context/LangContext' gsap.registerPlugin(ScrollTrigger) -const NAVY = '#071d49' +const NAVY = '#032340' const PAPER = '#faf7f4' // cream background revealed under the de-zoom const HERO = { diff --git a/src/pages/Home/sections/IntegrationsSection.tsx b/src/pages/Home/sections/IntegrationsSection.tsx index 8b0ec31..6c8a105 100644 --- a/src/pages/Home/sections/IntegrationsSection.tsx +++ b/src/pages/Home/sections/IntegrationsSection.tsx @@ -7,8 +7,8 @@ import { Link } from 'react-router-dom' import { useLang } from '@/context/LangContext' import { INTEGRATIONS, INTEGRATIONS_META, type IntegrationIcon } from '@/content/integrations' -const NAVY = '#071d49' -const GOLD = '#c9a227' +const NAVY = '#032340' +const GOLD = '#CD9E53' const COLS = 6 const ROWS = 5 const EASE = [0.22, 1, 0.36, 1] as const diff --git a/src/pages/Home/sections/NewsletterMarquee.tsx b/src/pages/Home/sections/NewsletterMarquee.tsx index 271cc8f..7174f44 100644 --- a/src/pages/Home/sections/NewsletterMarquee.tsx +++ b/src/pages/Home/sections/NewsletterMarquee.tsx @@ -1,7 +1,7 @@ import { useLang } from '@/context/LangContext' -const NAVY = '#071d49' -const GOLD = '#c9a227' +const NAVY = '#032340' +const GOLD = '#CD9E53' /* خبرنامه فولاد — recent issue titles, scrolled as a continuous marquee. */ const ISSUES = { diff --git a/src/pages/Home/sections/RadarTechSection.tsx b/src/pages/Home/sections/RadarTechSection.tsx index 52d3199..8aa6558 100644 --- a/src/pages/Home/sections/RadarTechSection.tsx +++ b/src/pages/Home/sections/RadarTechSection.tsx @@ -8,14 +8,14 @@ import { RADAR_ITEMS } from '@/content/radar' type Area = { Icon: LucideIcon; color: string; title: string; desc: string } const RESEARCH_AREAS: Record<'fa' | 'en', Area[]> = { fa: [ - { Icon: Telescope, color: '#c9a227', title: 'آینده‌نگاری علمی', desc: 'به‌جای پیش‌بینی تک‌نقطه‌ای، با سناریوپردازی و تحلیل روند، چند آیندهٔ محتمل صنعت فولاد را ترسیم می‌کنیم.' }, + { Icon: Telescope, color: '#CD9E53', title: 'آینده‌نگاری علمی', desc: 'به‌جای پیش‌بینی تک‌نقطه‌ای، با سناریوپردازی و تحلیل روند، چند آیندهٔ محتمل صنعت فولاد را ترسیم می‌کنیم.' }, { Icon: Database, color: '#2471a3', title: 'تحلیل داده‌محور', desc: 'هر بینش بر پایهٔ داده‌های معتبر جهانی و داخلی است، نه گمانه‌زنی؛ تصمیم‌سازی با شواهد قابل‌اتکا.' }, { Icon: Scale, color: '#1e8449', title: 'بی‌طرفی و استقلال', desc: 'تحلیل‌های ما مستقل از منافع کوتاه‌مدت است؛ شفاف و بدون جانب‌داری از یک بازیگر خاص.' }, { Icon: Users, color: '#7d3c98', title: 'هم‌اندیشی خبرگان', desc: 'شبکه‌ای از مدیران، پژوهشگران و فعالان صنعت که دانش پراکنده را به بینش جمعی تبدیل می‌کند.' }, { Icon: Lightbulb, color: '#c0392b', title: 'از تحلیل تا اقدام', desc: 'یافته‌ها را به راهبردهای عملی و قابل‌اجرا برای رهبران صنعت ترجمه می‌کنیم، نه گزارش‌های روی طاقچه.' }, ], en: [ - { Icon: Telescope, color: '#c9a227', title: 'Scientific Foresight', desc: 'Instead of single-point prediction, we map several plausible futures of the steel industry through scenario planning.' }, + { Icon: Telescope, color: '#CD9E53', title: 'Scientific Foresight', desc: 'Instead of single-point prediction, we map several plausible futures of the steel industry through scenario planning.' }, { Icon: Database, color: '#2471a3', title: 'Data-Driven Analysis', desc: 'Every insight rests on credible global and domestic data — evidence, not guesswork.' }, { Icon: Scale, color: '#1e8449', title: 'Independence & Neutrality', desc: 'Our analysis is independent of short-term interests — transparent and unbiased toward any single actor.' }, { Icon: Users, color: '#7d3c98', title: 'Expert Collaboration', desc: 'A network of executives, researchers and practitioners turning scattered knowledge into collective insight.' }, diff --git a/src/pages/Home/sections/SpreadFeatures.tsx b/src/pages/Home/sections/SpreadFeatures.tsx index e5a51b7..ade4807 100644 --- a/src/pages/Home/sections/SpreadFeatures.tsx +++ b/src/pages/Home/sections/SpreadFeatures.tsx @@ -2,8 +2,8 @@ import { useRef, useState } from 'react' import { motion, AnimatePresence, useScroll, useMotionValueEvent } from 'framer-motion' import { useLang } from '@/context/LangContext' -const NAVY = '#071d49' -const GOLD = '#c9a227' +const NAVY = '#032340' +const GOLD = '#CD9E53' const EASE = [0.22, 1, 0.36, 1] as const type Feat = { diff --git a/src/pages/Radar/Radar.tsx b/src/pages/Radar/Radar.tsx index 236b8d9..dbd52d8 100644 --- a/src/pages/Radar/Radar.tsx +++ b/src/pages/Radar/Radar.tsx @@ -4,8 +4,8 @@ import { BarChart3, Cpu, Mountain, Globe, Zap, ChevronLeft, ChevronRight } from import { useLang } from '@/context/LangContext' import { RADAR_ITEMS, type RadarItem, type RadarCategory } from '@/content/radar' -const NAVY = '#071d49' -const GOLD = '#c9a227' +const NAVY = '#032340' +const GOLD = '#CD9E53' const PER_PAGE = 8 const CATEGORY_ICON: Record = {