Spaces:
Running
Running
/* Import JetBrains Mono font from Google Fonts - a clean monospace font good for code */ | |
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&display=swap'); | |
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); | |
/* Include Tailwind's base styles, component classes, and utility classes */ | |
@tailwind base; | |
@tailwind components; | |
@tailwind utilities; | |
/* | |
@layer base - This adds styles to Tailwind's 'base' layer | |
These CSS variables define the color palette for the entire application | |
The format is: --name: hue saturation lightness; | |
This makes it easy to reference colors using hsl(var(--name)) | |
*/ | |
@layer base { | |
:root { | |
/* Light mode color scheme */ | |
--background: 0 0% 100%; /* Pure white background */ | |
--foreground: 222.2 84% 4.9%; /* Very dark blue-gray text */ | |
--card: 0 0% 100%; /* White card backgrounds */ | |
--card-foreground: 222.2 84% 4.9%; /* Dark text on cards */ | |
--popover: 0 0% 100%; /* White popover backgrounds */ | |
--popover-foreground: 222.2 84% 4.9%; /* Dark text on popovers */ | |
--primary: 210 100% 50%; /* Bright blue for primary elements */ | |
--primary-foreground: 210 40% 98%; /* Very light blue text on primary elements */ | |
--secondary: 210 40% 96.1%; /* Light blue-gray for secondary elements */ | |
--secondary-foreground: 222.2 47.4% 11.2%; /* Dark text on secondary elements */ | |
--muted: 210 40% 96.1%; /* Light blue-gray for muted elements */ | |
--muted-foreground: 215.4 16.3% 46.9%; /* Medium gray text for muted elements */ | |
--accent: 210 40% 96.1%; /* Light blue-gray for accents */ | |
--accent-foreground: 222.2 47.4% 11.2%; /* Dark text on accents */ | |
--destructive: 0 84.2% 60.2%; /* Red for destructive actions */ | |
--destructive-foreground: 210 40% 98%; /* Light text on destructive elements */ | |
--border: 214.3 31.8% 91.4%; /* Light gray for borders */ | |
--input: 214.3 31.8% 91.4%; /* Light gray for input elements */ | |
--ring: 222.2 84% 4.9%; /* Dark color for focus rings */ | |
--radius: 0.75rem; /* Default border radius */ | |
/* Sidebar-specific colors for a distinct sidebar appearance */ | |
--sidebar-background: 210 50% 98%; /* Very light blue background */ | |
--sidebar-foreground: 220 40% 20%; /* Dark blue-gray text */ | |
--sidebar-primary: 210 100% 50%; /* Bright blue for primary sidebar elements */ | |
--sidebar-primary-foreground: 0 0% 100%; /* White text on primary sidebar elements */ | |
--sidebar-accent: 210 40% 95%; /* Light blue-gray for sidebar accents */ | |
--sidebar-accent-foreground: 220 40% 20%; /* Dark text on sidebar accents */ | |
--sidebar-border: 214.3 31.8% 91.4%; /* Light gray for sidebar borders */ | |
--sidebar-ring: 217.2 91.2% 59.8%; /* Blue for sidebar focus rings */ | |
} | |
/* Dark mode color scheme - applied when .dark class is present on an ancestor */ | |
.dark { | |
--background: 222.2 84% 4.9%; /* Very dark blue-gray background */ | |
--foreground: 210 40% 98%; /* Very light blue text */ | |
--card: 222.2 84% 4.9%; /* Dark card backgrounds */ | |
--card-foreground: 210 40% 98%; /* Light text on cards */ | |
--popover: 222.2 84% 4.9%; /* Dark popover backgrounds */ | |
--popover-foreground: 210 40% 98%; /* Light text on popovers */ | |
--primary: 210 100% 50%; /* Same bright blue for primary elements */ | |
--primary-foreground: 0 0% 100%; /* White text on primary elements */ | |
--secondary: 217.2 32.6% 17.5%; /* Dark blue-gray for secondary elements */ | |
--secondary-foreground: 210 40% 98%; /* Light text on secondary elements */ | |
--muted: 217.2 32.6% 17.5%; /* Dark blue-gray for muted elements */ | |
--muted-foreground: 215 20.2% 65.1%; /* Light gray text for muted elements */ | |
--accent: 217.2 32.6% 17.5%; /* Dark blue-gray for accents */ | |
--accent-foreground: 210 40% 98%; /* Light text on accents */ | |
--destructive: 0 62.8% 30.6%; /* Darker red for destructive actions */ | |
--destructive-foreground: 210 40% 98%; /* Light text on destructive elements */ | |
--border: 217.2 32.6% 17.5%; /* Dark gray for borders */ | |
--input: 217.2 32.6% 17.5%; /* Dark gray for input elements */ | |
--ring: 212.7 26.8% 83.9%; /* Light color for focus rings */ | |
/* Dark mode sidebar-specific colors */ | |
--sidebar-background: 222.2 47.4% 11.2%; /* Dark blue-gray background */ | |
--sidebar-foreground: 210 40% 98%; /* Light text */ | |
--sidebar-primary: 210 100% 50%; /* Same bright blue for primary sidebar elements */ | |
--sidebar-primary-foreground: 0 0% 100%; /* White text on primary sidebar elements */ | |
--sidebar-accent: 217.2 32.6% 17.5%; /* Dark blue-gray for sidebar accents */ | |
--sidebar-accent-foreground: 210 40% 98%; /* Light text on sidebar accents */ | |
--sidebar-border: 217.2 32.6% 17.5%; /* Dark gray for sidebar borders */ | |
--sidebar-ring: 210 40% 98%; /* Light color for sidebar focus rings */ | |
} | |
} | |
/* Additional base styles and utility classes */ | |
@layer base { | |
/* Apply border color to all elements with borders */ | |
* { | |
@apply border-border; | |
} | |
/* Set default background and text colors for the body */ | |
body { | |
@apply bg-background text-foreground; | |
font-feature-settings: "rlig" 1, "calt" 1; /* Enable font ligatures and contextual alternates */ | |
font-family: 'Inter', sans-serif; | |
scrollbar-width: thin; | |
scrollbar-color: rgba(255, 255, 255, 0.2) rgba(0, 0, 0, 0); | |
overflow-x: hidden; /* Prevent horizontal scrolling */ | |
} | |
/* Apply JetBrains Mono font to elements with .font-mono class */ | |
.font-mono { | |
font-family: 'JetBrains Mono', monospace; | |
} | |
/* Subtle drop shadow effect */ | |
.drop-shadow-subtle { | |
filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.05)); | |
} | |
/* Glass-like panel with transparency and blur effect */ | |
.glass-panel { | |
@apply bg-white/5 backdrop-blur-md border border-white/10 rounded-xl drop-shadow-subtle overflow-hidden; | |
} | |
/* Scale effect on hover */ | |
.hover-scale { | |
@apply transition-transform duration-200 hover:scale-105; | |
} | |
/* Card style for parameter or settings panels */ | |
.parameter-card { | |
@apply bg-white/10 dark:bg-gray-800/70 backdrop-blur-sm rounded-lg border border-white/10 dark:border-gray-700/40 transition-all duration-300 hover:shadow-md; | |
} | |
/* Horizontal divider for sidebar sections */ | |
.sidebar-divider { | |
@apply h-px w-full bg-gray-200 dark:bg-gray-700 my-4; | |
} | |
/* Container for sidebar sections with bottom padding */ | |
.sidebar-section { | |
@apply pb-5; | |
} | |
/* Custom scrollbar styling */ | |
::-webkit-scrollbar { | |
width: 6px; | |
height: 6px; | |
} | |
::-webkit-scrollbar-track { | |
background: transparent; | |
} | |
::-webkit-scrollbar-thumb { | |
background: rgba(255, 255, 255, 0.2); | |
border-radius: 3px; | |
} | |
::-webkit-scrollbar-thumb:hover { | |
background: rgba(255, 255, 255, 0.4); | |
} | |
/* Hide scrollbar but keep functionality */ | |
.scrollbar-none { | |
scrollbar-width: none; | |
-ms-overflow-style: none; | |
} | |
.scrollbar-none::-webkit-scrollbar { | |
display: none; | |
} | |
/* Text gradients */ | |
.text-gradient-white { | |
@apply bg-gradient-to-br from-white via-white/90 to-white/70 bg-clip-text text-transparent; | |
} | |
/* Cosmic background with stars */ | |
.stars { | |
background-image: | |
radial-gradient(2px 2px at 20px 30px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 40px 70px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 90px 40px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 160px 120px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 230px 190px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 270px 220px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 340px 280px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 410px 320px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 480px 390px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 550px 440px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 620px 490px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 690px 540px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 760px 590px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 830px 640px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 900px 690px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 970px 740px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 1040px 790px, #fff, rgba(0,0,0,0)), | |
radial-gradient(2px 2px at 1110px 840px, #fff, rgba(0,0,0,0)), | |
radial-gradient(1px 1px at 1180px 890px, #fff, rgba(0,0,0,0)); | |
background-size: 1200px 1000px; | |
background-repeat: repeat; | |
animation: stars-animation 100s linear infinite; | |
} | |
@keyframes stars-animation { | |
0% { | |
background-position: 0 0; | |
} | |
100% { | |
background-position: 1200px 1000px; | |
} | |
} | |
/* Apple-style category sections */ | |
.category-section { | |
padding: 5vh 0; | |
position: relative; | |
} | |
.category-section.in-view { | |
opacity: 1; | |
} | |
.category-title { | |
margin-bottom: 2rem; | |
position: relative; | |
display: inline-block; | |
will-change: auto; | |
} | |
/* Constant glow for subheaders */ | |
.text-glow { | |
text-shadow: 0 0 20px rgba(255, 255, 255, 0.4); | |
will-change: auto; | |
} | |
} | |
/* Animation utilities */ | |
@layer utilities { | |
.animate-fade-in { | |
animation: fadeIn 0.8s ease-out forwards; | |
} | |
@keyframes fadeIn { | |
from { | |
opacity: 0; | |
transform: translateY(15px); | |
} | |
to { | |
opacity: 1; | |
transform: translateY(0); | |
} | |
} | |
} | |