Files
nuzlocke-tracker/frontend/src/index.css
Julian Tabel 4fbfcf9b29
All checks were successful
CI / backend-lint (push) Successful in 9s
CI / actions-lint (push) Successful in 15s
CI / frontend-lint (push) Successful in 21s
Fix WCAG AA color contrast violations across all pages
Replace incorrect perceived-brightness formula in Stats progress bars
with proper WCAG relative luminance calculation, and convert type bar
colors to hex values for reliable contrast detection. Add light: variant
classes to status badges, yellow/purple text, and admin nav links across
17 files. Darken light-mode status-active token and text-tertiary/muted
tokens. Add aria-labels to admin filter selects and flex-wrap for mobile
overflow on AdminEvolutions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:48:16 +01:00

131 lines
3.9 KiB
CSS

@import 'tailwindcss';
/* ── Geist font family (variable, self-hosted) ─────────────────── */
@font-face {
font-family: 'Geist Sans';
src: url('/fonts/GeistSans-Variable.woff2') format('woff2');
font-weight: 100 900;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Geist Mono';
src: url('/fonts/GeistMono-Variable.woff2') format('woff2');
font-weight: 100 900;
font-style: normal;
font-display: swap;
}
/* ── Tailwind v4 theme tokens ──────────────────────────────────── */
@theme {
/* Typography */
--font-sans: 'Geist Sans', ui-sans-serif, system-ui, sans-serif;
--font-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
/* Brand surfaces (dark-first) */
--color-surface-0: #0d1117;
--color-surface-1: #161b22;
--color-surface-2: #1c2128;
--color-surface-3: #21262d;
--color-surface-4: #282e36;
/* Brand accent (steel blue from logo) */
--color-accent-50: #e8f4fa;
--color-accent-100: #c5e3f2;
--color-accent-200: #9dcde6;
--color-accent-300: #7eb0ce;
--color-accent-400: #5c95b8;
--color-accent-500: #4a7d9e;
--color-accent-600: #395e73;
--color-accent-700: #2d4a5c;
--color-accent-800: #1f3340;
--color-accent-900: #142129;
/* Text on dark */
--color-text-primary: #e6edf3;
--color-text-secondary: #9198a1;
--color-text-tertiary: #8b949e;
--color-text-muted: #8b949e;
--color-text-link: #7eb0ce;
/* Borders */
--color-border-default: rgba(255, 255, 255, 0.08);
--color-border-muted: rgba(255, 255, 255, 0.04);
--color-border-accent: rgba(126, 176, 206, 0.3);
/* Status (tuned for dark surfaces) */
--color-status-alive: #2ea043;
--color-status-alive-bg: rgba(46, 160, 67, 0.15);
--color-status-dead: #da3633;
--color-status-dead-bg: rgba(218, 54, 51, 0.15);
--color-status-active: #3fb950;
--color-status-active-bg: rgba(63, 185, 80, 0.15);
--color-status-completed: #58a6ff;
--color-status-completed-bg: rgba(88, 166, 255, 0.15);
--color-status-failed: #f85149;
--color-status-failed-bg: rgba(248, 81, 73, 0.15);
}
@custom-variant light (&:where([data-theme="light"], [data-theme="light"] *));
/* ── Light mode overrides ─────────────────────────────────────── */
html[data-theme='light'] {
color-scheme: light;
/* Surfaces */
--color-surface-0: #ffffff;
--color-surface-1: #f6f8fa;
--color-surface-2: #eef1f4;
--color-surface-3: #d8dee4;
--color-surface-4: #ced5dc;
/* Accent (darkened for text contrast on light surfaces) */
--color-accent-200: #245f7e;
--color-accent-300: #1a5068;
--color-accent-400: #2d6a89;
/* Text */
--color-text-primary: #1f2328;
--color-text-secondary: #656d76;
--color-text-tertiary: #596069;
--color-text-muted: #596069;
--color-text-link: #1a5068;
/* Borders */
--color-border-default: rgba(0, 0, 0, 0.15);
--color-border-muted: rgba(0, 0, 0, 0.08);
--color-border-accent: rgba(57, 94, 115, 0.35);
/* Status (adjusted for light surfaces) */
--color-status-alive: #1a7f37;
--color-status-alive-bg: rgba(26, 127, 55, 0.1);
--color-status-dead: #cf222e;
--color-status-dead-bg: rgba(207, 34, 46, 0.1);
--color-status-active: #116b2b;
--color-status-active-bg: rgba(17, 107, 43, 0.08);
--color-status-completed: #0969da;
--color-status-completed-bg: rgba(9, 105, 218, 0.1);
--color-status-failed: #cf222e;
--color-status-failed-bg: rgba(207, 34, 46, 0.1);
}
/* ── Base layer ────────────────────────────────────────────────── */
@layer base {
html {
color-scheme: dark;
}
body {
@apply bg-surface-0 text-text-primary font-sans antialiased;
}
::selection {
@apply bg-accent-600/50 text-white;
}
}