|
@@ -0,0 +1,1175 @@
|
|
|
|
|
+/**
|
|
|
|
|
+ * Styles.vala - CSS styles for the Spry Framework Website
|
|
|
|
|
+ *
|
|
|
|
|
+ * Inspired by astralis-css with purple/blue/green theme
|
|
|
|
|
+ * Modern, clean, techy design with Free/Libre spirit
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+namespace Styles {
|
|
|
|
|
+ public const string MAIN_CSS = """
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * CSS VARIABLES & DESIGN TOKENS
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+:root {
|
|
|
|
|
+ /* Primary: Deep Rich Purple */
|
|
|
|
|
+ --purple-50: #faf5ff;
|
|
|
|
|
+ --purple-100: #f3e8ff;
|
|
|
|
|
+ --purple-200: #e9d5ff;
|
|
|
|
|
+ --purple-300: #d8b4fe;
|
|
|
|
|
+ --purple-400: #c084fc;
|
|
|
|
|
+ --purple-500: #a855f7;
|
|
|
|
|
+ --purple-600: #9333ea;
|
|
|
|
|
+ --purple-700: #7c3aed;
|
|
|
|
|
+ --purple-800: #6b21a8;
|
|
|
|
|
+ --purple-900: #581c87;
|
|
|
|
|
+ --purple-950: #3b0764;
|
|
|
|
|
+
|
|
|
|
|
+ /* Secondary: Technology Blue */
|
|
|
|
|
+ --blue-50: #eff6ff;
|
|
|
|
|
+ --blue-100: #dbeafe;
|
|
|
|
|
+ --blue-200: #bfdbfe;
|
|
|
|
|
+ --blue-300: #93c5fd;
|
|
|
|
|
+ --blue-400: #60a5fa;
|
|
|
|
|
+ --blue-500: #3b82f6;
|
|
|
|
|
+ --blue-600: #2563eb;
|
|
|
|
|
+ --blue-700: #1d4ed8;
|
|
|
|
|
+ --blue-800: #1e40af;
|
|
|
|
|
+ --blue-900: #1e3a8a;
|
|
|
|
|
+ --blue-950: #172554;
|
|
|
|
|
+
|
|
|
|
|
+ /* Accent: Libre Green */
|
|
|
|
|
+ --green-50: #f0fdf4;
|
|
|
|
|
+ --green-100: #dcfce7;
|
|
|
|
|
+ --green-200: #bbf7d0;
|
|
|
|
|
+ --green-300: #86efac;
|
|
|
|
|
+ --green-400: #4ade80;
|
|
|
|
|
+ --green-500: #22c55e;
|
|
|
|
|
+ --green-600: #16a34a;
|
|
|
|
|
+ --green-700: #15803d;
|
|
|
|
|
+ --green-800: #166534;
|
|
|
|
|
+ --green-900: #14532d;
|
|
|
|
|
+ --green-950: #052e16;
|
|
|
|
|
+
|
|
|
|
|
+ /* Neutral */
|
|
|
|
|
+ --gray-50: #fafafa;
|
|
|
|
|
+ --gray-100: #f4f4f5;
|
|
|
|
|
+ --gray-200: #e4e4e7;
|
|
|
|
|
+ --gray-300: #d4d4d8;
|
|
|
|
|
+ --gray-400: #a1a1aa;
|
|
|
|
|
+ --gray-500: #71717a;
|
|
|
|
|
+ --gray-600: #52525b;
|
|
|
|
|
+ --gray-700: #3f3f46;
|
|
|
|
|
+ --gray-800: #27272a;
|
|
|
|
|
+ --gray-900: #18181b;
|
|
|
|
|
+ --gray-950: #09090b;
|
|
|
|
|
+
|
|
|
|
|
+ /* Semantic Colors */
|
|
|
|
|
+ --color-primary: var(--purple-700);
|
|
|
|
|
+ --color-primary-hover: var(--purple-800);
|
|
|
|
|
+ --color-primary-light: var(--purple-100);
|
|
|
|
|
+ --color-primary-lighter: var(--purple-50);
|
|
|
|
|
+
|
|
|
|
|
+ --color-secondary: var(--blue-600);
|
|
|
|
|
+ --color-secondary-hover: var(--blue-700);
|
|
|
|
|
+ --color-secondary-light: var(--blue-100);
|
|
|
|
|
+
|
|
|
|
|
+ --color-accent: var(--green-500);
|
|
|
|
|
+ --color-accent-hover: var(--green-600);
|
|
|
|
|
+ --color-accent-light: var(--green-100);
|
|
|
|
|
+
|
|
|
|
|
+ --color-bg: #ffffff;
|
|
|
|
|
+ --color-bg-secondary: var(--gray-50);
|
|
|
|
|
+ --color-surface: #ffffff;
|
|
|
|
|
+ --color-text: var(--gray-900);
|
|
|
|
|
+ --color-text-secondary: var(--gray-600);
|
|
|
|
|
+ --color-text-muted: var(--gray-400);
|
|
|
|
|
+ --color-border: var(--gray-200);
|
|
|
|
|
+
|
|
|
|
|
+ /* Typography */
|
|
|
|
|
+ --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
|
|
|
+ --font-mono: "JetBrains Mono", "Fira Code", monospace;
|
|
|
|
|
+
|
|
|
|
|
+ /* Spacing */
|
|
|
|
|
+ --space-1: 0.25rem;
|
|
|
|
|
+ --space-2: 0.5rem;
|
|
|
|
|
+ --space-3: 0.75rem;
|
|
|
|
|
+ --space-4: 1rem;
|
|
|
|
|
+ --space-6: 1.5rem;
|
|
|
|
|
+ --space-8: 2rem;
|
|
|
|
|
+ --space-12: 3rem;
|
|
|
|
|
+ --space-16: 4rem;
|
|
|
|
|
+ --space-24: 6rem;
|
|
|
|
|
+
|
|
|
|
|
+ /* Border Radius */
|
|
|
|
|
+ --radius-sm: 0.25rem;
|
|
|
|
|
+ --radius-md: 0.5rem;
|
|
|
|
|
+ --radius-lg: 0.75rem;
|
|
|
|
|
+ --radius-xl: 1rem;
|
|
|
|
|
+ --radius-2xl: 1.5rem;
|
|
|
|
|
+ --radius-full: 9999px;
|
|
|
|
|
+
|
|
|
|
|
+ /* Shadows */
|
|
|
|
|
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
|
|
|
|
|
+ --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1);
|
|
|
|
|
+ --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1);
|
|
|
|
|
+ --shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1);
|
|
|
|
|
+ --shadow-glow-purple: 0 0 40px rgba(124, 58, 237, 0.3);
|
|
|
|
|
+ --shadow-glow-blue: 0 0 40px rgba(37, 99, 235, 0.3);
|
|
|
|
|
+ --shadow-glow-green: 0 0 40px rgba(34, 197, 94, 0.3);
|
|
|
|
|
+
|
|
|
|
|
+ /* Transitions */
|
|
|
|
|
+ --transition-fast: 150ms ease;
|
|
|
|
|
+ --transition-base: 200ms ease;
|
|
|
|
|
+ --transition-slow: 300ms ease;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* Dark mode */
|
|
|
|
|
+@media (prefers-color-scheme: dark) {
|
|
|
|
|
+ :root {
|
|
|
|
|
+ --color-bg: var(--gray-900);
|
|
|
|
|
+ --color-bg-secondary: var(--gray-800);
|
|
|
|
|
+ --color-surface: var(--gray-800);
|
|
|
|
|
+ --color-text: var(--gray-50);
|
|
|
|
|
+ --color-text-secondary: var(--gray-300);
|
|
|
|
|
+ --color-text-muted: var(--gray-500);
|
|
|
|
|
+ --color-border: var(--gray-700);
|
|
|
|
|
+ --color-primary: var(--purple-400);
|
|
|
|
|
+ --color-primary-hover: var(--purple-300);
|
|
|
|
|
+ --color-primary-light: var(--purple-900);
|
|
|
|
|
+ --color-secondary: var(--blue-400);
|
|
|
|
|
+ --color-secondary-hover: var(--blue-300);
|
|
|
|
|
+ --color-secondary-light: var(--blue-900);
|
|
|
|
|
+ --color-accent: var(--green-400);
|
|
|
|
|
+ --color-accent-hover: var(--green-300);
|
|
|
|
|
+ --color-accent-light: var(--green-900);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * BASE RESET
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+*, *::before, *::after {
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+html {
|
|
|
|
|
+ scroll-behavior: smooth;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+body {
|
|
|
|
|
+ font-family: var(--font-sans);
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ line-height: 1.6;
|
|
|
|
|
+ color: var(--color-text);
|
|
|
|
|
+ background-color: var(--color-bg);
|
|
|
|
|
+ min-height: 100vh;
|
|
|
|
|
+ -webkit-font-smoothing: antialiased;
|
|
|
|
|
+ -moz-osx-font-smoothing: grayscale;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * TYPOGRAPHY
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+h1, h2, h3, h4, h5, h6 {
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ line-height: 1.2;
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+h1 { font-size: 3rem; letter-spacing: -0.02em; }
|
|
|
|
|
+h2 { font-size: 2.25rem; letter-spacing: -0.01em; }
|
|
|
|
|
+h3 { font-size: 1.5rem; }
|
|
|
|
|
+h4 { font-size: 1.25rem; }
|
|
|
|
|
+
|
|
|
|
|
+p {
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+ color: var(--color-text-secondary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+a {
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+ text-decoration: none;
|
|
|
|
|
+ transition: color var(--transition-fast);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+a:hover {
|
|
|
|
|
+ color: var(--color-primary-hover);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+code {
|
|
|
|
|
+ font-family: var(--font-mono);
|
|
|
|
|
+ font-size: 0.9em;
|
|
|
|
|
+ background: var(--color-bg-secondary);
|
|
|
|
|
+ padding: var(--space-1) var(--space-2);
|
|
|
|
|
+ border-radius: var(--radius-sm);
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+pre {
|
|
|
|
|
+ font-family: var(--font-mono);
|
|
|
|
|
+ background: var(--gray-900);
|
|
|
|
|
+ color: var(--gray-50);
|
|
|
|
|
+ padding: var(--space-4);
|
|
|
|
|
+ border-radius: var(--radius-lg);
|
|
|
|
|
+ overflow-x: auto;
|
|
|
|
|
+ font-size: 0.875rem;
|
|
|
|
|
+ line-height: 1.7;
|
|
|
|
|
+ margin: var(--space-4) 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+pre code {
|
|
|
|
|
+ background: none;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ color: inherit;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * LAYOUT
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.container {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ max-width: 1200px;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+ padding: 0 var(--space-6);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.section {
|
|
|
|
|
+ padding: var(--space-24) 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.section-header {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ margin-bottom: var(--space-12);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.section-header h2 {
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.section-header p {
|
|
|
|
|
+ font-size: 1.125rem;
|
|
|
|
|
+ max-width: 600px;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * HEADER & NAVIGATION
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.site-header {
|
|
|
|
|
+ position: sticky;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ z-index: 100;
|
|
|
|
|
+ background: rgba(255, 255, 255, 0.8);
|
|
|
|
|
+ backdrop-filter: blur(12px);
|
|
|
|
|
+ border-bottom: 1px solid var(--color-border);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (prefers-color-scheme: dark) {
|
|
|
|
|
+ .site-header {
|
|
|
|
|
+ background: rgba(24, 24, 27, 0.8);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.header-content {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ padding: var(--space-4) var(--space-6);
|
|
|
|
|
+ max-width: 1200px;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.logo {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: var(--space-2);
|
|
|
|
|
+ font-size: 1.5rem;
|
|
|
|
|
+ font-weight: 800;
|
|
|
|
|
+ color: var(--color-text);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.logo-icon {
|
|
|
|
|
+ width: 32px;
|
|
|
|
|
+ height: 32px;
|
|
|
|
|
+ background: linear-gradient(135deg, var(--purple-600), var(--blue-600));
|
|
|
|
|
+ border-radius: var(--radius-md);
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ color: white;
|
|
|
|
|
+ font-size: 1rem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.nav-links {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: var(--space-8);
|
|
|
|
|
+ list-style: none;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.nav-links a {
|
|
|
|
|
+ color: var(--color-text-secondary);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ padding: var(--space-2) 0;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.nav-links a:hover {
|
|
|
|
|
+ color: var(--color-text);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.nav-links a::after {
|
|
|
|
|
+ content: '';
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ bottom: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ width: 0;
|
|
|
|
|
+ height: 2px;
|
|
|
|
|
+ background: linear-gradient(90deg, var(--purple-600), var(--blue-600));
|
|
|
|
|
+ transition: width var(--transition-base);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.nav-links a:hover::after {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.nav-cta {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--purple-600), var(--blue-600));
|
|
|
|
|
+ color: white;
|
|
|
|
|
+ padding: var(--space-2) var(--space-4);
|
|
|
|
|
+ border-radius: var(--radius-md);
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ transition: transform var(--transition-fast), box-shadow var(--transition-fast);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.nav-cta:hover {
|
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
|
+ box-shadow: var(--shadow-glow-purple);
|
|
|
|
|
+ color: white;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * HERO SECTION
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.hero {
|
|
|
|
|
+ padding: var(--space-24) 0;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.hero::before {
|
|
|
|
|
+ content: '';
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ top: -50%;
|
|
|
|
|
+ left: -50%;
|
|
|
|
|
+ width: 200%;
|
|
|
|
|
+ height: 200%;
|
|
|
|
|
+ background: radial-gradient(circle at 30% 30%, var(--purple-100) 0%, transparent 50%),
|
|
|
|
|
+ radial-gradient(circle at 70% 70%, var(--blue-100) 0%, transparent 50%);
|
|
|
|
|
+ animation: hero-glow 20s ease-in-out infinite;
|
|
|
|
|
+ z-index: -1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (prefers-color-scheme: dark) {
|
|
|
|
|
+ .hero::before {
|
|
|
|
|
+ background: radial-gradient(circle at 30% 30%, var(--purple-950) 0%, transparent 50%),
|
|
|
|
|
+ radial-gradient(circle at 70% 70%, var(--blue-950) 0%, transparent 50%);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@keyframes hero-glow {
|
|
|
|
|
+ 0%, 100% { transform: translate(0, 0) rotate(0deg); }
|
|
|
|
|
+ 25% { transform: translate(2%, 2%) rotate(1deg); }
|
|
|
|
|
+ 50% { transform: translate(-1%, 3%) rotate(-1deg); }
|
|
|
|
|
+ 75% { transform: translate(1%, -2%) rotate(0.5deg); }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.hero-badge {
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: var(--space-2);
|
|
|
|
|
+ background: var(--color-primary-light);
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+ padding: var(--space-2) var(--space-4);
|
|
|
|
|
+ border-radius: var(--radius-full);
|
|
|
|
|
+ font-size: 0.875rem;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ margin-bottom: var(--space-6);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.hero h1 {
|
|
|
|
|
+ font-size: 4rem;
|
|
|
|
|
+ font-weight: 800;
|
|
|
|
|
+ margin-bottom: var(--space-6);
|
|
|
|
|
+ background: linear-gradient(135deg, var(--purple-700), var(--blue-600), var(--green-500));
|
|
|
|
|
+ -webkit-background-clip: text;
|
|
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
|
|
+ background-clip: text;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.hero-subtitle {
|
|
|
|
|
+ font-size: 1.5rem;
|
|
|
|
|
+ color: var(--color-text-secondary);
|
|
|
|
|
+ max-width: 700px;
|
|
|
|
|
+ margin: 0 auto var(--space-8);
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.hero-actions {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: var(--space-4);
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * BUTTONS
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.btn {
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: var(--space-2);
|
|
|
|
|
+ padding: var(--space-3) var(--space-6);
|
|
|
|
|
+ border-radius: var(--radius-lg);
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ font-size: 1rem;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ transition: all var(--transition-fast);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-primary {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--purple-600), var(--blue-600));
|
|
|
|
|
+ color: white;
|
|
|
|
|
+ box-shadow: var(--shadow-md);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-primary:hover {
|
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
|
+ box-shadow: var(--shadow-glow-purple);
|
|
|
|
|
+ color: white;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-secondary {
|
|
|
|
|
+ background: var(--color-surface);
|
|
|
|
|
+ color: var(--color-text);
|
|
|
|
|
+ border: 2px solid var(--color-border);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-secondary:hover {
|
|
|
|
|
+ border-color: var(--color-primary);
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-accent {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--green-500), var(--green-600));
|
|
|
|
|
+ color: white;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-accent:hover {
|
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
|
+ box-shadow: var(--shadow-glow-green);
|
|
|
|
|
+ color: white;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * FEATURE CARDS
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.features-grid {
|
|
|
|
|
+ display: grid;
|
|
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
|
|
|
+ gap: var(--space-6);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-card {
|
|
|
|
|
+ background: var(--color-surface);
|
|
|
|
|
+ border: 1px solid var(--color-border);
|
|
|
|
|
+ border-radius: var(--radius-xl);
|
|
|
|
|
+ padding: var(--space-8);
|
|
|
|
|
+ transition: all var(--transition-base);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-card:hover {
|
|
|
|
|
+ transform: translateY(-4px);
|
|
|
|
|
+ box-shadow: var(--shadow-lg);
|
|
|
|
|
+ border-color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-icon {
|
|
|
|
|
+ width: 48px;
|
|
|
|
|
+ height: 48px;
|
|
|
|
|
+ border-radius: var(--radius-lg);
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ font-size: 1.5rem;
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-icon.purple {
|
|
|
|
|
+ background: var(--purple-100);
|
|
|
|
|
+ color: var(--purple-600);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-icon.blue {
|
|
|
|
|
+ background: var(--blue-100);
|
|
|
|
|
+ color: var(--blue-600);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-icon.green {
|
|
|
|
|
+ background: var(--green-100);
|
|
|
|
|
+ color: var(--green-600);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-card h3 {
|
|
|
|
|
+ margin-bottom: var(--space-3);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.feature-card p {
|
|
|
|
|
+ margin-bottom: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * ECOSYSTEM SECTION
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-grid {
|
|
|
|
|
+ display: grid;
|
|
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
|
|
|
+ gap: var(--space-8);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card {
|
|
|
|
|
+ background: var(--color-surface);
|
|
|
|
|
+ border: 1px solid var(--color-border);
|
|
|
|
|
+ border-radius: var(--radius-2xl);
|
|
|
|
|
+ padding: var(--space-8);
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card::before {
|
|
|
|
|
+ content: '';
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ right: 0;
|
|
|
|
|
+ height: 4px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card.astralis::before {
|
|
|
|
|
+ background: linear-gradient(90deg, var(--blue-500), var(--blue-600));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card.inversion::before {
|
|
|
|
|
+ background: linear-gradient(90deg, var(--green-500), var(--green-600));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card.spry::before {
|
|
|
|
|
+ background: linear-gradient(90deg, var(--purple-500), var(--purple-600));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card h3 {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: var(--space-3);
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-logo {
|
|
|
|
|
+ width: 40px;
|
|
|
|
|
+ height: 40px;
|
|
|
|
|
+ border-radius: var(--radius-md);
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ font-weight: 800;
|
|
|
|
|
+ color: white;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card.astralis .ecosystem-logo {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--blue-500), var(--blue-700));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card.inversion .ecosystem-logo {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--green-500), var(--green-700));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card.spry .ecosystem-logo {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--purple-500), var(--purple-700));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecosystem-card .tag {
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ background: var(--color-bg-secondary);
|
|
|
|
|
+ padding: var(--space-1) var(--space-3);
|
|
|
|
|
+ border-radius: var(--radius-full);
|
|
|
|
|
+ font-size: 0.75rem;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ margin-right: var(--space-2);
|
|
|
|
|
+ margin-bottom: var(--space-2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * STATS SECTION
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.stats-grid {
|
|
|
|
|
+ display: grid;
|
|
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
|
|
|
+ gap: var(--space-6);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.stat-card {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ padding: var(--space-8);
|
|
|
|
|
+ background: var(--color-surface);
|
|
|
|
|
+ border: 1px solid var(--color-border);
|
|
|
|
|
+ border-radius: var(--radius-xl);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.stat-value {
|
|
|
|
|
+ font-size: 3rem;
|
|
|
|
|
+ font-weight: 800;
|
|
|
|
|
+ background: linear-gradient(135deg, var(--purple-600), var(--blue-600));
|
|
|
|
|
+ -webkit-background-clip: text;
|
|
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
|
|
+ background-clip: text;
|
|
|
|
|
+ margin-bottom: var(--space-2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.stat-label {
|
|
|
|
|
+ color: var(--color-text-secondary);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * PARTICLE CANVAS DEMO
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.demo-section {
|
|
|
|
|
+ background: var(--color-bg-secondary);
|
|
|
|
|
+ border-radius: var(--radius-2xl);
|
|
|
|
|
+ padding: var(--space-8);
|
|
|
|
|
+ margin: var(--space-8) 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ margin-bottom: var(--space-6);
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+ gap: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-controls {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: var(--space-3);
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-btn {
|
|
|
|
|
+ padding: var(--space-2) var(--space-4);
|
|
|
|
|
+ border-radius: var(--radius-md);
|
|
|
|
|
+ border: 1px solid var(--color-border);
|
|
|
|
|
+ background: var(--color-surface);
|
|
|
|
|
+ color: var(--color-text);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all var(--transition-fast);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-btn:hover {
|
|
|
|
|
+ border-color: var(--color-primary);
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-btn.active {
|
|
|
|
|
+ background: var(--color-primary);
|
|
|
|
|
+ color: white;
|
|
|
|
|
+ border-color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.particle-canvas {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 400px;
|
|
|
|
|
+ background: var(--gray-900);
|
|
|
|
|
+ border-radius: var(--radius-xl);
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * AURORA CANVAS DEMO
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.aurora-canvas {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 400px;
|
|
|
|
|
+ background: linear-gradient(180deg, #050510 0%, #0a0a20 50%, #0f0f2a 100%);
|
|
|
|
|
+ border-radius: var(--radius-xl);
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ box-shadow: inset 0 0 100px rgba(124, 58, 237, 0.1);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* Starfield background */
|
|
|
|
|
+.aurora-canvas::before {
|
|
|
|
|
+ content: '';
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ inset: 0;
|
|
|
|
|
+ background-image:
|
|
|
|
|
+ radial-gradient(1px 1px at 20% 30%, rgba(255,255,255,0.8), transparent),
|
|
|
|
|
+ radial-gradient(1px 1px at 40% 70%, rgba(255,255,255,0.6), transparent),
|
|
|
|
|
+ radial-gradient(1.5px 1.5px at 60% 20%, rgba(255,255,255,0.9), transparent),
|
|
|
|
|
+ radial-gradient(1px 1px at 80% 50%, rgba(255,255,255,0.5), transparent),
|
|
|
|
|
+ radial-gradient(1px 1px at 10% 80%, rgba(255,255,255,0.7), transparent),
|
|
|
|
|
+ radial-gradient(1.5px 1.5px at 90% 10%, rgba(255,255,255,0.8), transparent),
|
|
|
|
|
+ radial-gradient(1px 1px at 30% 50%, rgba(255,255,255,0.4), transparent),
|
|
|
|
|
+ radial-gradient(1px 1px at 70% 90%, rgba(255,255,255,0.6), transparent);
|
|
|
|
|
+ background-size: 200px 200px;
|
|
|
|
|
+ animation: twinkle 4s ease-in-out infinite alternate;
|
|
|
|
|
+ z-index: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@keyframes twinkle {
|
|
|
|
|
+ 0% { opacity: 0.5; }
|
|
|
|
|
+ 100% { opacity: 1; }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.aurora-wave {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ left: -20%;
|
|
|
|
|
+ right: -20%;
|
|
|
|
|
+ height: 80px;
|
|
|
|
|
+ top: var(--wave-y, 30%);
|
|
|
|
|
+ background: linear-gradient(90deg,
|
|
|
|
|
+ transparent 0%,
|
|
|
|
|
+ var(--wave-color1, #22c55e) 20%,
|
|
|
|
|
+ var(--wave-color2, #7c3aed) 50%,
|
|
|
|
|
+ var(--wave-color1, #22c55e) 80%,
|
|
|
|
|
+ transparent 100%
|
|
|
|
|
+ );
|
|
|
|
|
+ opacity: var(--wave-opacity, 0.5);
|
|
|
|
|
+ filter: blur(25px);
|
|
|
|
|
+ z-index: 1;
|
|
|
|
|
+ /* Subtle pulsing animation only - no dramatic movement */
|
|
|
|
|
+ animation: aurora-pulse 4s ease-in-out infinite;
|
|
|
|
|
+ animation-delay: var(--wave-delay, 0s);
|
|
|
|
|
+ /* Smooth transitions for server-side parameter changes */
|
|
|
|
|
+ transition: top 2s ease-in-out, opacity 2s ease-in-out;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* Gentle pulsing - just opacity and slight scale */
|
|
|
|
|
+@keyframes aurora-pulse {
|
|
|
|
|
+ 0%, 100% {
|
|
|
|
|
+ opacity: var(--wave-opacity, 0.5);
|
|
|
|
|
+ filter: blur(25px);
|
|
|
|
|
+ }
|
|
|
|
|
+ 50% {
|
|
|
|
|
+ opacity: calc(var(--wave-opacity, 0.5) * 1.3);
|
|
|
|
|
+ filter: blur(30px);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* Glow effect for waves */
|
|
|
|
|
+.aurora-wave::after {
|
|
|
|
|
+ content: '';
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ inset: -50%;
|
|
|
|
|
+ background: inherit;
|
|
|
|
|
+ filter: blur(40px);
|
|
|
|
|
+ opacity: 0.5;
|
|
|
|
|
+ animation: aurora-glow 4s ease-in-out infinite alternate;
|
|
|
|
|
+ animation-delay: var(--wave-delay, 0s);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@keyframes aurora-glow {
|
|
|
|
|
+ 0% { opacity: 0.3; filter: blur(40px); }
|
|
|
|
|
+ 100% { opacity: 0.6; filter: blur(60px); }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.aurora-stats {
|
|
|
|
|
+ display: grid;
|
|
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
|
|
|
+ gap: var(--space-4);
|
|
|
|
|
+ margin-top: var(--space-6);
|
|
|
|
|
+ padding: var(--space-4);
|
|
|
|
|
+ background: var(--color-surface);
|
|
|
|
|
+ border-radius: var(--radius-lg);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.aurora-stat {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.aurora-stat-value {
|
|
|
|
|
+ font-size: 1.5rem;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.aurora-stat-label {
|
|
|
|
|
+ font-size: 0.75rem;
|
|
|
|
|
+ color: var(--color-text-muted);
|
|
|
|
|
+ text-transform: uppercase;
|
|
|
|
|
+ letter-spacing: 0.05em;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.particle-info {
|
|
|
|
|
+ display: grid;
|
|
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
|
|
|
+ gap: var(--space-4);
|
|
|
|
|
+ margin-top: var(--space-6);
|
|
|
|
|
+ padding: var(--space-4);
|
|
|
|
|
+ background: var(--color-surface);
|
|
|
|
|
+ border-radius: var(--radius-lg);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.particle-stat {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.particle-stat-value {
|
|
|
|
|
+ font-size: 1.5rem;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.particle-stat-label {
|
|
|
|
|
+ font-size: 0.75rem;
|
|
|
|
|
+ color: var(--color-text-muted);
|
|
|
|
|
+ text-transform: uppercase;
|
|
|
|
|
+ letter-spacing: 0.05em;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * FREEDOM SECTION
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.freedom-section {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--green-50), var(--blue-50));
|
|
|
|
|
+ border-radius: var(--radius-2xl);
|
|
|
|
|
+ padding: var(--space-16);
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (prefers-color-scheme: dark) {
|
|
|
|
|
+ .freedom-section {
|
|
|
|
|
+ background: linear-gradient(135deg, var(--green-950), var(--blue-950));
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.freedom-icon {
|
|
|
|
|
+ font-size: 4rem;
|
|
|
|
|
+ margin-bottom: var(--space-6);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.freedom-section h2 {
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.freedom-section p {
|
|
|
|
|
+ max-width: 700px;
|
|
|
|
|
+ margin: 0 auto var(--space-8);
|
|
|
|
|
+ font-size: 1.125rem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.freedom-values {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ gap: var(--space-8);
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+ margin-bottom: var(--space-8);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.freedom-value {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: var(--space-2);
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.freedom-value svg {
|
|
|
|
|
+ color: var(--green-500);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * CODE BLOCKS
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.code-block {
|
|
|
|
|
+ background: var(--gray-900);
|
|
|
|
|
+ border-radius: var(--radius-xl);
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ margin: var(--space-6) 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.code-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ padding: var(--space-3) var(--space-4);
|
|
|
|
|
+ background: var(--gray-800);
|
|
|
|
|
+ border-bottom: 1px solid var(--gray-700);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.code-lang {
|
|
|
|
|
+ font-size: 0.75rem;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ color: var(--gray-400);
|
|
|
|
|
+ text-transform: uppercase;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.code-dots {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: var(--space-2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.code-dot {
|
|
|
|
|
+ width: 12px;
|
|
|
|
|
+ height: 12px;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.code-dot.red { background: #ff5f56; }
|
|
|
|
|
+.code-dot.yellow { background: #ffbd2e; }
|
|
|
|
|
+.code-dot.green { background: #27c93f; }
|
|
|
|
|
+
|
|
|
|
|
+.code-block pre {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ border-radius: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* Syntax highlighting */
|
|
|
|
|
+.code-keyword { color: #c792ea; }
|
|
|
|
|
+.code-type { color: #82aaff; }
|
|
|
|
|
+.code-string { color: #c3e88d; }
|
|
|
|
|
+.code-number { color: #f78c6c; }
|
|
|
|
|
+.code-comment { color: #546e7a; font-style: italic; }
|
|
|
|
|
+.code-function { color: #82aaff; }
|
|
|
|
|
+.code-operator { color: #89ddff; }
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * FOOTER
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.site-footer {
|
|
|
|
|
+ background: var(--color-bg-secondary);
|
|
|
|
|
+ border-top: 1px solid var(--color-border);
|
|
|
|
|
+ padding: var(--space-12) 0;
|
|
|
|
|
+ margin-top: var(--space-24);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-content {
|
|
|
|
|
+ display: grid;
|
|
|
|
|
+ grid-template-columns: 2fr 1fr 1fr 1fr;
|
|
|
|
|
+ gap: var(--space-8);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (max-width: 768px) {
|
|
|
|
|
+ .footer-content {
|
|
|
|
|
+ grid-template-columns: 1fr;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-brand {
|
|
|
|
|
+ max-width: 300px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (max-width: 768px) {
|
|
|
|
|
+ .footer-brand {
|
|
|
|
|
+ max-width: none;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-brand .logo {
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (max-width: 768px) {
|
|
|
|
|
+ .footer-brand .logo {
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-brand p {
|
|
|
|
|
+ font-size: 0.875rem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-section h4 {
|
|
|
|
|
+ margin-bottom: var(--space-4);
|
|
|
|
|
+ font-size: 0.875rem;
|
|
|
|
|
+ text-transform: uppercase;
|
|
|
|
|
+ letter-spacing: 0.05em;
|
|
|
|
|
+ color: var(--color-text-muted);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-links {
|
|
|
|
|
+ list-style: none;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-links li {
|
|
|
|
|
+ margin-bottom: var(--space-2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-links a {
|
|
|
|
|
+ color: var(--color-text-secondary);
|
|
|
|
|
+ font-size: 0.875rem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-links a:hover {
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-bottom {
|
|
|
|
|
+ margin-top: var(--space-8);
|
|
|
|
|
+ padding-top: var(--space-8);
|
|
|
|
|
+ border-top: 1px solid var(--color-border);
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+ gap: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (max-width: 768px) {
|
|
|
|
|
+ .footer-bottom {
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-bottom p {
|
|
|
|
|
+ font-size: 0.875rem;
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-social {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: var(--space-4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-social a {
|
|
|
|
|
+ color: var(--color-text-muted);
|
|
|
|
|
+ transition: color var(--transition-fast);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.footer-social a:hover {
|
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * RESPONSIVE
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+@media (max-width: 768px) {
|
|
|
|
|
+ h1 { font-size: 2.5rem; }
|
|
|
|
|
+ h2 { font-size: 1.75rem; }
|
|
|
|
|
+
|
|
|
|
|
+ .hero h1 { font-size: 2.5rem; }
|
|
|
|
|
+ .hero-subtitle { font-size: 1.125rem; }
|
|
|
|
|
+
|
|
|
|
|
+ .nav-links { display: none; }
|
|
|
|
|
+
|
|
|
|
|
+ .features-grid,
|
|
|
|
|
+ .ecosystem-grid {
|
|
|
|
|
+ grid-template-columns: 1fr;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .footer-content {
|
|
|
|
|
+ grid-template-columns: 1fr;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * VIEW TRANSITIONS (for smooth HTMX swaps)
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+/* View Transition API styles for cross-fade */
|
|
|
|
|
+::view-transition-old(root),
|
|
|
|
|
+::view-transition-new(root) {
|
|
|
|
|
+ animation-duration: 0.3s;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* Smooth wave entrance when added via HTMX */
|
|
|
|
|
+.aurora-wave.htmx-added {
|
|
|
|
|
+ animation: aurora-pulse 4s ease-in-out infinite;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * ANIMATIONS
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+@keyframes fade-in {
|
|
|
|
|
+ from { opacity: 0; transform: translateY(20px); }
|
|
|
|
|
+ to { opacity: 1; transform: translateY(0); }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@keyframes pulse {
|
|
|
|
|
+ 0%, 100% { opacity: 1; }
|
|
|
|
|
+ 50% { opacity: 0.5; }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@keyframes float {
|
|
|
|
|
+ 0%, 100% { transform: translateY(0); }
|
|
|
|
|
+ 50% { transform: translateY(-10px); }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.animate-fade-in {
|
|
|
|
|
+ animation: fade-in 0.6s ease-out;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.animate-pulse {
|
|
|
|
|
+ animation: pulse 2s ease-in-out infinite;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.animate-float {
|
|
|
|
|
+ animation: float 3s ease-in-out infinite;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* ============================================
|
|
|
|
|
+ * UTILITY CLASSES
|
|
|
|
|
+ * ============================================ */
|
|
|
|
|
+
|
|
|
|
|
+.text-center { text-align: center; }
|
|
|
|
|
+.text-left { text-align: left; }
|
|
|
|
|
+.text-right { text-align: right; }
|
|
|
|
|
+
|
|
|
|
|
+.text-primary { color: var(--color-primary); }
|
|
|
|
|
+.text-secondary { color: var(--color-text-secondary); }
|
|
|
|
|
+.text-muted { color: var(--color-text-muted); }
|
|
|
|
|
+.text-accent { color: var(--color-accent); }
|
|
|
|
|
+
|
|
|
|
|
+.font-bold { font-weight: 700; }
|
|
|
|
|
+.font-semibold { font-weight: 600; }
|
|
|
|
|
+
|
|
|
|
|
+.mt-4 { margin-top: var(--space-4); }
|
|
|
|
|
+.mb-4 { margin-bottom: var(--space-4); }
|
|
|
|
|
+.my-8 { margin-top: var(--space-8); margin-bottom: var(--space-8); }
|
|
|
|
|
+
|
|
|
|
|
+.hidden { display: none; }
|
|
|
|
|
+.flex { display: flex; }
|
|
|
|
|
+.grid { display: grid; }
|
|
|
|
|
+
|
|
|
|
|
+.items-center { align-items: center; }
|
|
|
|
|
+.justify-center { justify-content: center; }
|
|
|
|
|
+.justify-between { justify-content: space-between; }
|
|
|
|
|
+
|
|
|
|
|
+.gap-4 { gap: var(--space-4); }
|
|
|
|
|
+.gap-6 { gap: var(--space-6); }
|
|
|
|
|
+.gap-8 { gap: var(--space-8); }
|
|
|
|
|
+""";
|
|
|
|
|
+}
|