1// SPDX-License-Identifier: GPL-2.0-only
2// Copyright (c) 2025-present FERS Contributors (see AUTHORS.md).
4import { createTheme, responsiveFontSizes } from '@mui/material/styles';
7 * FERS "Deep Radar" Color Palette.
8 * A high-contrast, engineering-focused dark theme tailored for data visualization.
10export const fersColors = {
12 default: '#0b0e14', // Deep Gunmetal - Main app background
13 paper: '#151b24', // Lighter Gunmetal - Panels and Cards
14 canvas: '#020408', // Near Pitch Black - The 3D Void
15 // Glassmorphism overlay for HUD elements (labels)
16 overlay: 'rgba(21, 27, 36, 0.90)',
19 main: '#38bdf8', // Sky Blue - Active elements, Buttons
22 contrastText: '#0f172a',
25 main: '#fbbf24', // Amber - Selection, Highlights
28 contrastText: '#1e1b4b',
31 primary: '#f0f6fc', // Off-white for high readability
32 secondary: '#8b949e', // Muted blue-grey for labels
35 // 3D Scene Specific Semantics
37 default: '#38bdf8', // Cyan (Primary) - Standard Platform color
38 selected: '#fbbf24', // Amber (Secondary) - Selected Platform glow
39 emission: '#fbbf24', // Self-illumination color when selected
42 velocity: '#4ade80', // Neon Green - Vector forward
43 boresight: '#facc15', // Bright Yellow - Where the antenna points
44 motionPath: '#c084fc', // Lavender/Purple - Distinct from RF links
45 rcs: '#f97316', // Orange - RCS Sphere wireframe
49 strong: '#22c55e', // Emerald - Strong Signal / Lock
50 weak: '#ef4444', // Red - Sub-noise / Ghost signal
52 illuminator: '#eab308', // Yellow - Transmit Energy
53 scattered: '#06b6d4', // Cyan - Scattered Return
54 direct: '#d946ef', // Fuchsia - Interference / Direct Path
58// Create the Material UI theme instance
59let theme = createTheme({
63 main: fersColors.primary.main,
64 dark: fersColors.primary.dark,
65 light: fersColors.primary.light,
66 contrastText: fersColors.primary.contrastText,
69 main: fersColors.secondary.main,
70 dark: fersColors.secondary.dark,
71 light: fersColors.secondary.light,
72 contrastText: fersColors.secondary.contrastText,
75 default: fersColors.background.default,
76 paper: fersColors.background.paper,
79 primary: fersColors.text.primary,
80 secondary: fersColors.text.secondary,
81 disabled: fersColors.text.disabled,
83 divider: '#30363d', // Subtle border color
85 hover: 'rgba(56, 189, 248, 0.08)', // Tinted with primary
86 selected: 'rgba(56, 189, 248, 0.16)',
90 fontFamily: ['Inter', 'Roboto', 'sans-serif'].join(','),
93 letterSpacing: '0.02em',
97 letterSpacing: '0.1em',
101 borderRadius: 8, // More modern, slightly rounded corners
107 scrollbarColor: '#30363d #0b0e14',
108 '&::-webkit-scrollbar, & *::-webkit-scrollbar': {
109 backgroundColor: '#0b0e14',
113 '&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb':
116 backgroundColor: '#30363d',
118 border: '2px solid #0b0e14',
120 '&::-webkit-scrollbar-thumb:focus, & *::-webkit-scrollbar-thumb:focus':
122 backgroundColor: '#8b949e',
130 backgroundImage: 'none', // Remove the default MUI overlay lighten effect
131 border: '1px solid #30363d', // Add thin borders for definition
138 textTransform: 'none', // More modern text style
146theme = responsiveFontSizes(theme);