@import '@fontsource/dm-sans/300.css'; @import '@fontsource/dm-sans/400.css'; @import '@fontsource/dm-sans/500.css'; @import '@fontsource/dm-sans/600.css'; @import '@fontsource/dm-sans/700.css'; @import '@fontsource/jetbrains-mono/400.css'; @import '@fontsource/jetbrains-mono/500.css'; @import '@fontsource/jetbrains-mono/600.css'; @import 'tailwindcss'; @theme { --color-background: #f8f9fb; --color-foreground: #1a1a2e; --color-muted: #eef0f4; --color-muted-foreground: #6b7280; --color-border: #e2e4ea; --color-primary: #0d9488; --color-primary-foreground: #ffffff; --color-accent: #eef0f4; --color-accent-foreground: #1a1a2e; --color-destructive: #ef4444; --color-card: #ffffff; --color-card-foreground: #1a1a2e; --color-success-bg: #ecfdf5; --color-success-fg: #059669; --color-warning-bg: #fffbeb; --color-warning-fg: #d97706; --color-error-bg: #fef2f2; --color-error-fg: #dc2626; --color-glow: rgba(13, 148, 136, 0.15); --color-glow-strong: rgba(13, 148, 136, 0.3); --color-sidebar: #ffffff; --color-sidebar-active: rgba(13, 148, 136, 0.08); --font-sans: 'DM Sans', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; --font-mono: 'JetBrains Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace; --radius: 0.625rem; } /* Dark theme overrides */ [data-theme="dark"] { --color-background: #0c0e14; --color-foreground: #e4e6ed; --color-muted: #1a1d28; --color-muted-foreground: #8b8fa4; --color-border: #252836; --color-primary: #14b8a6; --color-primary-foreground: #0c0e14; --color-accent: #1a1d28; --color-accent-foreground: #e4e6ed; --color-destructive: #f87171; --color-card: #13151e; --color-card-foreground: #e4e6ed; --color-success-bg: #052e16; --color-success-fg: #34d399; --color-warning-bg: #422006; --color-warning-fg: #fbbf24; --color-error-bg: #450a0a; --color-error-fg: #f87171; --color-glow: rgba(20, 184, 166, 0.12); --color-glow-strong: rgba(20, 184, 166, 0.25); --color-sidebar: #10121a; --color-sidebar-active: rgba(20, 184, 166, 0.1); } body { font-family: var(--font-sans); background-color: var(--color-background); color: var(--color-foreground); transition: background-color 0.3s ease, color 0.3s ease; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Subtle background pattern */ body::before { content: ''; position: fixed; inset: 0; z-index: -1; opacity: 0.4; background-image: radial-gradient(circle at 1px 1px, var(--color-border) 0.5px, transparent 0); background-size: 32px 32px; pointer-events: none; } /* Form controls */ input, select, textarea { color: var(--color-foreground); background-color: var(--color-background); border-color: var(--color-border); font-family: var(--font-sans); transition: border-color 0.2s ease, box-shadow 0.2s ease; } input:focus-visible, select:focus-visible, textarea:focus-visible { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-glow), 0 0 12px var(--color-glow); } button:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; border-radius: 0.375rem; } a:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; border-radius: 0.375rem; } /* Override browser autofill styles in dark mode */ [data-theme="dark"] input:-webkit-autofill, [data-theme="dark"] input:-webkit-autofill:hover, [data-theme="dark"] input:-webkit-autofill:focus, [data-theme="dark"] select:-webkit-autofill { -webkit-box-shadow: 0 0 0 1000px #13151e inset !important; -webkit-text-fill-color: #e4e6ed !important; caret-color: #e4e6ed; } /* Color scheme for native controls */ [data-theme="dark"] { color-scheme: dark; } [data-theme="light"] { color-scheme: light; } /* Scrollbar styling */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-muted-foreground); } /* Animations */ @keyframes fadeSlideIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } @keyframes pulseGlow { 0%, 100% { box-shadow: 0 0 4px var(--color-glow); } 50% { box-shadow: 0 0 16px var(--color-glow-strong); } } @keyframes countUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-slide-in { animation: fadeSlideIn 0.4s ease-out both; } .animate-shimmer { background: linear-gradient(90deg, var(--color-muted) 25%, var(--color-border) 50%, var(--color-muted) 75%); background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite; } .animate-pulse-glow { animation: pulseGlow 2s ease-in-out infinite; } .animate-count-up { animation: countUp 0.5s ease-out both; } /* Stagger children utility */ .stagger-children > * { animation: fadeSlideIn 0.4s ease-out both; } .stagger-children > *:nth-child(1) { animation-delay: 0ms; } .stagger-children > *:nth-child(2) { animation-delay: 60ms; } .stagger-children > *:nth-child(3) { animation-delay: 120ms; } .stagger-children > *:nth-child(4) { animation-delay: 180ms; } .stagger-children > *:nth-child(5) { animation-delay: 240ms; } .stagger-children > *:nth-child(6) { animation-delay: 300ms; } .font-mono { font-family: var(--font-mono); } /* Card highlight dim overlay for cross-entity navigation */ .nav-dim-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.4); z-index: 10; pointer-events: none; opacity: 0; transition: opacity 0.3s ease-in-out; } .nav-dim-overlay.active { opacity: 1; }