// The `scifi` preset: deep near-black panels in the dark, cool paper in the light, a cyan accent // that turns magenta under the pointer, glowing edges on every raised surface, and sharp corners. // Data, not a stylesheet — `defineTheme({ preset: 'scifi' })` renders it, and `presets.test.ts` // holds it to every pairing in `CONTRAST_PAIRS` plus the chart series' colour-blind floor. import type { ThemePreset } from './preset-shape'; export const SCIFI_PRESET: ThemePreset = { colors: { light: { bg: '240 245 250', 'bg-soft': '229 236 244', surface: '247 250 253', 'surface-raised': '255 255 255', fg: '20 28 42', 'fg-strong': '4 8 18', 'fg-muted': '70 84 104', line: '176 192 212', scrim: '2 4 10', accent: '0 108 135', 'accent-strong': '168 0 124', 'accent-fg': '255 255 255', success: '0 112 70', 'success-soft': '220 244 234', 'success-fg': '255 255 255', warning: '140 82 0', 'warning-soft': '252 240 214', 'warning-fg': '255 255 255', danger: '185 30 50', 'danger-soft': '253 228 232', 'danger-fg': '255 255 255', info: '30 90 190', 'info-soft': '225 236 252', 'info-fg': '255 255 255', 'chart-1': '0 112 140', 'chart-2': '179 5 130', 'chart-3': '189 107 14', 'chart-4': '59 110 49', 'chart-5': '70 70 210', 'chart-6': '188 28 13', 'chart-7': '106 97 20', 'chart-8': '60 60 60', }, dark: { bg: '5 7 13', 'bg-soft': '9 12 21', surface: '13 17 29', 'surface-raised': '20 26 42', fg: '210 225 240', 'fg-strong': '240 250 255', 'fg-muted': '125 145 170', line: '44 60 88', scrim: '0 0 0', accent: '0 229 255', 'accent-strong': '255 92 214', 'accent-fg': '2 8 16', success: '40 230 150', 'success-soft': '6 36 28', 'success-fg': '2 16 10', warning: '255 200 60', 'warning-soft': '40 30 6', 'warning-fg': '22 14 0', danger: '255 95 120', 'danger-soft': '46 12 22', 'danger-fg': '26 4 10', info: '110 170 255', 'info-soft': '10 26 50', 'info-fg': '2 10 24', 'chart-1': '48 229 255', 'chart-2': '238 88 205', 'chart-3': '170 255 90', 'chart-4': '255 175 26', 'chart-5': '148 130 255', 'chart-6': '255 110 90', 'chart-7': '88 198 148', 'chart-8': '204 214 216', }, }, // Dark only: a black drop shadow is invisible on a near-black page, so elevation there is an // accent hairline plus a halo, with the drop kept under it for depth. Light keeps the shipped // rungs, whose glows already read the (now cyan) accent. shadows: { dark: { xs: '0 0 0 1px rgb(var(--color-accent) / 0.14)', sm: '0 0 0 1px rgb(var(--color-accent) / 0.18), 0 2px 10px rgb(0 0 0 / 0.6)', md: '0 0 0 1px rgb(var(--color-accent) / 0.22), 0 0 18px rgb(var(--color-accent) / 0.12), 0 8px 24px rgb(0 0 0 / 0.6)', lg: '0 0 0 1px rgb(var(--color-accent) / 0.26), 0 0 28px rgb(var(--color-accent) / 0.14), 0 16px 40px rgb(0 0 0 / 0.7)', xl: '0 0 0 1px rgb(var(--color-accent) / 0.3), 0 0 40px rgb(var(--color-accent) / 0.16), 0 28px 64px rgb(0 0 0 / 0.75)', 'glow-sm': '0 0 8px rgb(var(--color-accent) / 0.6)', 'glow-md': '0 0 16px rgb(var(--color-accent) / 0.5)', 'glow-lg': '0 0 32px rgb(var(--color-accent) / 0.45)', // Coloured elevation in the second accent, so a lifted card reads magenta beside cyan edges. 'tinted-sm': '0 2px 10px rgb(var(--color-accent-strong) / 0.3)', 'tinted-md': '0 6px 20px rgb(var(--color-accent-strong) / 0.34)', 'tinted-lg': '0 14px 40px rgb(var(--color-accent-strong) / 0.38)', }, }, radius: { sm: '0.125rem', md: '0.25rem', lg: '0.375rem', xl: '0.5rem' }, };