osi-cards-lib 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +763 -0
- package/esm2022/lib/components/ai-card-renderer/ai-card-renderer.component.mjs +911 -0
- package/esm2022/lib/components/card-preview/card-preview.component.mjs +74 -0
- package/esm2022/lib/components/card-skeleton/card-skeleton.component.mjs +24 -0
- package/esm2022/lib/components/masonry-grid/masonry-grid.component.mjs +330 -0
- package/esm2022/lib/components/section-renderer/section-renderer.component.mjs +166 -0
- package/esm2022/lib/components/sections/analytics-section/analytics-section.component.mjs +70 -0
- package/esm2022/lib/components/sections/base-section.component.mjs +335 -0
- package/esm2022/lib/components/sections/brand-colors-section/brand-colors-section.component.mjs +89 -0
- package/esm2022/lib/components/sections/chart-section/chart-section.component.mjs +92 -0
- package/esm2022/lib/components/sections/contact-card-section/contact-card-section.component.mjs +70 -0
- package/esm2022/lib/components/sections/event-section/event-section.component.mjs +32 -0
- package/esm2022/lib/components/sections/fallback-section/fallback-section.component.mjs +16 -0
- package/esm2022/lib/components/sections/financials-section/financials-section.component.mjs +53 -0
- package/esm2022/lib/components/sections/info-section.component.mjs +68 -0
- package/esm2022/lib/components/sections/list-section/list-section.component.mjs +36 -0
- package/esm2022/lib/components/sections/map-section/map-section.component.mjs +52 -0
- package/esm2022/lib/components/sections/network-card-section/network-card-section.component.mjs +41 -0
- package/esm2022/lib/components/sections/news-section/news-section.component.mjs +44 -0
- package/esm2022/lib/components/sections/overview-section/overview-section.component.mjs +47 -0
- package/esm2022/lib/components/sections/product-section/product-section.component.mjs +129 -0
- package/esm2022/lib/components/sections/quotation-section/quotation-section.component.mjs +39 -0
- package/esm2022/lib/components/sections/social-media-section/social-media-section.component.mjs +45 -0
- package/esm2022/lib/components/sections/solutions-section/solutions-section.component.mjs +29 -0
- package/esm2022/lib/components/sections/text-reference-section/text-reference-section.component.mjs +42 -0
- package/esm2022/lib/icons/index.mjs +2 -0
- package/esm2022/lib/icons/lucide-icons.module.mjs +91 -0
- package/esm2022/lib/models/card.model.mjs +111 -0
- package/esm2022/lib/models/index.mjs +2 -0
- package/esm2022/lib/services/icon.service.mjs +148 -0
- package/esm2022/lib/services/index.mjs +5 -0
- package/esm2022/lib/services/magnetic-tilt.service.mjs +224 -0
- package/esm2022/lib/services/section-normalization.service.mjs +243 -0
- package/esm2022/lib/services/section-utils.service.mjs +122 -0
- package/esm2022/lib/utils/card-diff.util.mjs +327 -0
- package/esm2022/lib/utils/index.mjs +3 -0
- package/esm2022/lib/utils/responsive.util.mjs +14 -0
- package/esm2022/osi-cards-lib.mjs +5 -0
- package/esm2022/public-api.mjs +57 -0
- package/fesm2022/osi-cards-lib.mjs +3960 -0
- package/index.d.ts +5 -0
- package/lib/components/ai-card-renderer/ai-card-renderer.component.d.ts +163 -0
- package/lib/components/card-preview/card-preview.component.d.ts +52 -0
- package/lib/components/card-skeleton/card-skeleton.component.d.ts +8 -0
- package/lib/components/masonry-grid/masonry-grid.component.d.ts +72 -0
- package/lib/components/section-renderer/section-renderer.component.d.ts +25 -0
- package/lib/components/sections/analytics-section/analytics-section.component.d.ts +32 -0
- package/lib/components/sections/base-section.component.d.ts +138 -0
- package/lib/components/sections/brand-colors-section/brand-colors-section.component.d.ts +28 -0
- package/lib/components/sections/chart-section/chart-section.component.d.ts +30 -0
- package/lib/components/sections/contact-card-section/contact-card-section.component.d.ts +35 -0
- package/lib/components/sections/event-section/event-section.component.d.ts +17 -0
- package/lib/components/sections/fallback-section/fallback-section.component.d.ts +7 -0
- package/lib/components/sections/financials-section/financials-section.component.d.ts +27 -0
- package/lib/components/sections/info-section.component.d.ts +33 -0
- package/lib/components/sections/list-section/list-section.component.d.ts +21 -0
- package/lib/components/sections/map-section/map-section.component.d.ts +22 -0
- package/lib/components/sections/network-card-section/network-card-section.component.d.ts +18 -0
- package/lib/components/sections/news-section/news-section.component.d.ts +16 -0
- package/lib/components/sections/overview-section/overview-section.component.d.ts +19 -0
- package/lib/components/sections/product-section/product-section.component.d.ts +57 -0
- package/lib/components/sections/quotation-section/quotation-section.component.d.ts +23 -0
- package/lib/components/sections/social-media-section/social-media-section.component.d.ts +11 -0
- package/lib/components/sections/solutions-section/solutions-section.component.d.ts +19 -0
- package/lib/components/sections/text-reference-section/text-reference-section.component.d.ts +25 -0
- package/lib/icons/index.d.ts +1 -0
- package/lib/icons/lucide-icons.module.d.ts +7 -0
- package/lib/models/card.model.d.ts +289 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/services/icon.service.d.ts +9 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/magnetic-tilt.service.d.ts +34 -0
- package/lib/services/section-normalization.service.d.ts +38 -0
- package/lib/services/section-utils.service.d.ts +46 -0
- package/lib/utils/card-diff.util.d.ts +52 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/responsive.util.d.ts +2 -0
- package/package.json +63 -0
- package/public-api.d.ts +50 -0
- package/styles/_styles.scss +95 -0
- package/styles/components/cards/_ai-card.scss +743 -0
- package/styles/components/sections/_analytics.scss +280 -0
- package/styles/components/sections/_brand-colors.scss +280 -0
- package/styles/components/sections/_chart.scss +494 -0
- package/styles/components/sections/_contact.scss +250 -0
- package/styles/components/sections/_design-system.scss +540 -0
- package/styles/components/sections/_event.scss +246 -0
- package/styles/components/sections/_fallback.scss +172 -0
- package/styles/components/sections/_financials.scss +258 -0
- package/styles/components/sections/_global-enforcement.scss +648 -0
- package/styles/components/sections/_info.scss +224 -0
- package/styles/components/sections/_list.scss +216 -0
- package/styles/components/sections/_map.scss +186 -0
- package/styles/components/sections/_network.scss +115 -0
- package/styles/components/sections/_news.scss +81 -0
- package/styles/components/sections/_overview.scss +159 -0
- package/styles/components/sections/_product.scss +906 -0
- package/styles/components/sections/_quotation.scss +151 -0
- package/styles/components/sections/_section-shell.scss +385 -0
- package/styles/components/sections/_section-types.scss +290 -0
- package/styles/components/sections/_sections-base.scss +332 -0
- package/styles/components/sections/_social-media.scss +88 -0
- package/styles/components/sections/_solutions.scss +205 -0
- package/styles/components/sections/_text-reference.scss +158 -0
- package/styles/components/sections/_unified-cards.scss +124 -0
- package/styles/core/_animations.scss +766 -0
- package/styles/core/_global.scss +66 -0
- package/styles/core/_mixins.scss +140 -0
- package/styles/core/_surface-layers.scss +76 -0
- package/styles/core/_utilities.scss +193 -0
- package/styles/core/_variables.scss +462 -0
- package/styles/core/variables/_colors.scss +212 -0
- package/styles/layout/_masonry.scss +60 -0
- package/styles/layout/_tilt.scss +214 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
/* Import theme colors first - this defines :root with theme system */
|
|
2
|
+
@import 'variables/colors';
|
|
3
|
+
|
|
4
|
+
/* Additional design tokens that extend the theme system */
|
|
5
|
+
:root,
|
|
6
|
+
:root[data-theme='night'],
|
|
7
|
+
:root[data-theme='day'] {
|
|
8
|
+
/* ===== BASE DESIGN TOKENS ===== */
|
|
9
|
+
--font-size-base: 14px;
|
|
10
|
+
--radius-base: 0.625rem;
|
|
11
|
+
--spacing-base: 0.25rem;
|
|
12
|
+
|
|
13
|
+
/* Base text scale - for reference and general use */
|
|
14
|
+
--text-xs: 0.75rem;
|
|
15
|
+
--text-sm: 0.875rem;
|
|
16
|
+
--text-base: 1rem;
|
|
17
|
+
--text-lg: 1.125rem;
|
|
18
|
+
--text-xl: 1.25rem;
|
|
19
|
+
--text-2xl: 1.5rem;
|
|
20
|
+
--text-3xl: 1.875rem;
|
|
21
|
+
--text-4xl: 2.25rem;
|
|
22
|
+
--text-5xl: 3rem;
|
|
23
|
+
--text-7xl: 4.5rem;
|
|
24
|
+
|
|
25
|
+
/* Base radius scale */
|
|
26
|
+
--radius-xs: 0.25rem;
|
|
27
|
+
--radius-sm: 0.375rem;
|
|
28
|
+
--radius-md: 0.5rem;
|
|
29
|
+
--radius-lg: 0.75rem;
|
|
30
|
+
--radius-xl: 1rem;
|
|
31
|
+
--radius-2xl: 1.5rem;
|
|
32
|
+
--radius-full: 9999px;
|
|
33
|
+
|
|
34
|
+
/* ===== UNIFIED CARD SYSTEM ===== */
|
|
35
|
+
/* All cards (metric, contact, list, etc.) use this consistent base */
|
|
36
|
+
/* Enhanced design: better padding, visible borders, depth shadows */
|
|
37
|
+
|
|
38
|
+
/* STANDARDIZED CARD VARIABLES - BALANCED DESIGN */
|
|
39
|
+
/* OPTIMIZED: Moderate padding for clean, professional look */
|
|
40
|
+
--card-main-padding: 16px; /* Main card container padding - balanced */
|
|
41
|
+
--card-padding-vertical: 12px; /* Balanced vertical rhythm */
|
|
42
|
+
--card-padding-horizontal: 16px; /* Balanced horizontal spacing */
|
|
43
|
+
--card-padding: 16px; /* Constant padding for sections and internal cards */
|
|
44
|
+
--card-padding-large: 20px; /* Larger padding for emphasis */
|
|
45
|
+
--section-padding: 16px; /* Fixed padding for all section internals */
|
|
46
|
+
--card-min-height: auto; /* COMPACT: No minimum height - cards fit content */
|
|
47
|
+
--card-gap: clamp(6px, 0.6vw, 10px); /* BALANCED: Internal element gap */
|
|
48
|
+
--card-gap-large: clamp(10px, 0.8vw, 14px); /* BALANCED: Larger gap */
|
|
49
|
+
|
|
50
|
+
/* Nested Element Spacing - UNIFIED (no calc() needed) */
|
|
51
|
+
--card-nested-gap: clamp(3px, 0.4vw, 6px); /* Same as card-gap for consistency */
|
|
52
|
+
--section-header-gap: clamp(3px, 0.4vw, 6px); /* Same as card-gap for consistency */
|
|
53
|
+
--section-header-padding-bottom: clamp(3px, 0.4vw, 6px); /* Same as card-gap for consistency */
|
|
54
|
+
|
|
55
|
+
/* Card Backgrounds default to AI-card skin but remain theme overridable */
|
|
56
|
+
--card-background: var(--ai-card-background, rgba(255, 121, 0, 0.025));
|
|
57
|
+
--card-background-hover: var(--ai-card-background-hover, rgba(255, 121, 0, 0.055));
|
|
58
|
+
|
|
59
|
+
/* ===== 5 ELEMENT TYPE SYSTEM ===== */
|
|
60
|
+
/* Global parameters for border, background, hover effect for each element type */
|
|
61
|
+
|
|
62
|
+
/* 1. HERO CARDS (.hero-feature-card) */
|
|
63
|
+
--hero-card-border: 1px solid rgba(146, 153, 158, 0.15);
|
|
64
|
+
--hero-card-border-hover: rgba(255, 121, 0, 0.4);
|
|
65
|
+
--hero-card-background: var(--card);
|
|
66
|
+
--hero-card-background-hover: var(--card);
|
|
67
|
+
--hero-card-border-radius: 10px;
|
|
68
|
+
--hero-card-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
69
|
+
--hero-card-box-shadow-hover: 0 6px 16px rgba(0, 0, 0, 0.12);
|
|
70
|
+
--hero-card-hover-transform: translateY(-2px);
|
|
71
|
+
|
|
72
|
+
/* 2. BUTTONS & SELECTORS (buttons, radio buttons, etc.) */
|
|
73
|
+
--button-border: 1px solid transparent;
|
|
74
|
+
--button-border-hover: 1px solid rgba(255, 121, 0, 0.4);
|
|
75
|
+
--button-background: var(--primary);
|
|
76
|
+
--button-background-hover: color-mix(in srgb, var(--primary) 85%, transparent);
|
|
77
|
+
--button-border-radius: 8px;
|
|
78
|
+
--button-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
|
|
79
|
+
--button-box-shadow-hover: 0 4px 8px rgba(0, 0, 0, 0.12);
|
|
80
|
+
--button-hover-transform: translateY(-1px);
|
|
81
|
+
|
|
82
|
+
/* 3. CARDS (.ai-card-surface) */
|
|
83
|
+
--ai-card-border: var(--theme-ai-card-border, none);
|
|
84
|
+
--ai-card-border-hover: var(--theme-ai-card-border-hover, var(--ai-card-border));
|
|
85
|
+
--ai-card-background: var(--theme-ai-card-background, var(--card-surface, var(--card-section-bg)));
|
|
86
|
+
--ai-card-background-hover: var(--theme-ai-card-background-hover, var(--card-surface-hover, var(--card-section-bg)));
|
|
87
|
+
--ai-card-border-radius: 12px;
|
|
88
|
+
--ai-card-box-shadow: var(--theme-ai-card-box-shadow, 0 2px 8px rgba(0, 0, 0, 0.08));
|
|
89
|
+
--ai-card-box-shadow-hover: var(--theme-ai-card-box-shadow-hover, 0 4px 16px rgba(0, 0, 0, 0.12));
|
|
90
|
+
--ai-card-hover-transform: none; /* No transform for cards */
|
|
91
|
+
--ai-card-transition-default: border 0.32s cubic-bezier(0.4, 0, 0.2, 1), background 0.32s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.32s cubic-bezier(0.4, 0, 0.2, 1);
|
|
92
|
+
--ai-card-transition: var(--theme-ai-card-transition, var(--ai-card-transition-default));
|
|
93
|
+
|
|
94
|
+
/* 4. SECTIONS (.masonry-item) - DISCRETE BORDERS */
|
|
95
|
+
--section-border: var(--theme-section-border, 1px solid rgba(255, 255, 255, 0.04));
|
|
96
|
+
--section-border-hover: var(--theme-section-border-hover, 1px solid rgba(255, 121, 0, 0.15));
|
|
97
|
+
/* Section backgrounds defined in colors file for theme switching */
|
|
98
|
+
--section-border-radius: var(--card-border-radius);
|
|
99
|
+
--section-box-shadow-default: 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(255, 255, 255, 0.02);
|
|
100
|
+
--section-box-shadow-hover-default: 0 4px 12px rgba(0, 0, 0, 0.18), 0 0 0 1px rgba(255, 121, 0, 0.08);
|
|
101
|
+
--section-box-shadow: var(--theme-section-box-shadow, var(--section-box-shadow-default));
|
|
102
|
+
--section-box-shadow-hover: var(--theme-section-box-shadow-hover, var(--section-box-shadow-hover-default));
|
|
103
|
+
--section-hover-transform: none; /* No transform for sections */
|
|
104
|
+
--section-transition: var(--theme-section-transition, none);
|
|
105
|
+
|
|
106
|
+
/* 5. SECTION ITEMS (.section-card, .chart-card, etc.) - DISCRETE BORDERS */
|
|
107
|
+
--section-item-border: var(--theme-section-item-border, 1px solid rgba(255, 255, 255, 0.03));
|
|
108
|
+
--section-item-border-hover: var(--theme-section-item-border-hover, 1px solid rgba(255, 121, 0, 0.12));
|
|
109
|
+
--section-item-background: var(--theme-section-item-background, var(--card-section-bg));
|
|
110
|
+
--section-item-background-hover: var(--theme-section-item-background-hover, color-mix(in srgb, var(--theme-section-item-background, var(--card-section-bg)) 97%, rgba(255, 121, 0, 0.03)));
|
|
111
|
+
--section-item-border-radius: var(--section-card-border-radius);
|
|
112
|
+
--section-item-box-shadow: var(--theme-section-item-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.08));
|
|
113
|
+
--section-item-box-shadow-hover-default: 0 3px 10px rgba(0, 0, 0, 0.14), 0 0 0 1px rgba(255, 121, 0, 0.1);
|
|
114
|
+
--section-item-box-shadow-hover: var(--theme-section-item-box-shadow-hover, var(--section-item-box-shadow-hover-default));
|
|
115
|
+
--section-item-hover-transform: var(--theme-section-item-hover-transform, none); /* No transform for section items */
|
|
116
|
+
--section-item-transition-default: background 300ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
117
|
+
--section-item-transition: var(--theme-section-item-transition, var(--section-item-transition-default));
|
|
118
|
+
|
|
119
|
+
/* Legacy card variables now map to dedicated theme tokens */
|
|
120
|
+
--card-border: var(--theme-card-border, 1px solid rgba(146, 153, 158, 0.15));
|
|
121
|
+
--card-border-hover: var(--theme-card-border-hover, rgba(255, 121, 0, 0.4));
|
|
122
|
+
--card-background: var(--theme-card-background, var(--ai-card-background));
|
|
123
|
+
--card-background-hover: var(--theme-card-background-hover, var(--ai-card-background-hover));
|
|
124
|
+
--card-box-shadow: var(--theme-card-box-shadow, 0 1px 3px rgba(0, 0, 0, 0.08));
|
|
125
|
+
--card-box-shadow-hover: var(--theme-card-box-shadow-hover, 0 4px 12px rgba(0, 0, 0, 0.12));
|
|
126
|
+
|
|
127
|
+
/* Border radius - unified */
|
|
128
|
+
--card-border-radius: 12px; /* MODERN: Standard radius - matches reference design */
|
|
129
|
+
--card-border-radius-large: 16px; /* MODERN: Larger radius - increased for prominence */
|
|
130
|
+
--section-card-gap: 12px; /* Gap between cards in section grids - increased spacing */
|
|
131
|
+
--section-card-border-radius: 10px; /* Radius for cards within sections (unified) */
|
|
132
|
+
--section-grid-min-width: 200px; /* SPACIOUS: Minimum column width - restored for better layout */
|
|
133
|
+
|
|
134
|
+
/* Card Hover State Aliases (for mixin compatibility) */
|
|
135
|
+
--card-hover-border: var(--theme-card-hover-border, var(--card-border-hover));
|
|
136
|
+
--card-hover-background: var(--theme-card-hover-background, var(--card-background-hover));
|
|
137
|
+
--card-hover-shadow: var(--theme-card-hover-shadow, var(--card-box-shadow-hover));
|
|
138
|
+
|
|
139
|
+
/* Legacy transform effects - deprecated */
|
|
140
|
+
--card-hover-transform: var(--theme-card-hover-transform, none);
|
|
141
|
+
--card-hover-transform-scale: var(--theme-card-hover-transform-scale, none);
|
|
142
|
+
--card-hover-transform-slide: var(--theme-card-hover-transform-slide, none);
|
|
143
|
+
--card-box-shadow-hover-lift: var(--theme-card-box-shadow-hover-lift, var(--card-box-shadow-hover));
|
|
144
|
+
|
|
145
|
+
/* ===== UNIFIED TYPOGRAPHY SYSTEM ===== */
|
|
146
|
+
/* Consistent font sizing across ALL card types and sections */
|
|
147
|
+
/* Enhanced with strategic emphasis and visual hierarchy */
|
|
148
|
+
|
|
149
|
+
/* Section Titles (e.g., "Key Contacts", "Company Overview") - PREMIUM */
|
|
150
|
+
--section-title-font-size: clamp(1.3rem, 1.15rem + 0.4vw, 1.6rem);
|
|
151
|
+
--section-title-font-weight: 700;
|
|
152
|
+
--section-title-letter-spacing: -0.02em;
|
|
153
|
+
--section-title-line-height: 1.3;
|
|
154
|
+
--section-title-text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
|
|
155
|
+
--font-size-section-header: var(--section-title-font-size);
|
|
156
|
+
|
|
157
|
+
/* Card Titles (individual cards within sections) - PROMINENT */
|
|
158
|
+
--card-title-font-size: clamp(1.05rem, 0.95rem + 0.3vw, 1.2rem);
|
|
159
|
+
--card-title-font-weight: 700;
|
|
160
|
+
--card-title-letter-spacing: -0.01em;
|
|
161
|
+
--card-title-line-height: 1.4;
|
|
162
|
+
--card-title-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
|
|
163
|
+
|
|
164
|
+
/* Card Subtitles/Roles - REFINED */
|
|
165
|
+
--card-subtitle-font-size: clamp(0.75rem, 0.67rem + 0.16vw, 0.9rem);
|
|
166
|
+
--card-subtitle-font-weight: 600;
|
|
167
|
+
--card-subtitle-letter-spacing: 0.015em;
|
|
168
|
+
--card-subtitle-line-height: 1.3;
|
|
169
|
+
|
|
170
|
+
/* Card Labels (e.g., "INDUSTRY", "FOUNDED") - CRISP & BOLD */
|
|
171
|
+
--card-label-font-size: clamp(0.58rem, 0.52rem + 0.16vw, 0.72rem);
|
|
172
|
+
--card-label-font-weight: 800;
|
|
173
|
+
--card-label-letter-spacing: 0.065em;
|
|
174
|
+
--card-label-line-height: 1.25;
|
|
175
|
+
--card-label-text-transform: uppercase;
|
|
176
|
+
--card-label-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
|
177
|
+
|
|
178
|
+
/* Card Values - EMPHASIZED */
|
|
179
|
+
--card-value-font-size: clamp(0.93rem, 0.85rem + 0.3vw, 1.08rem);
|
|
180
|
+
--card-value-font-size-large: clamp(1.35rem, 1.2rem + 0.5vw, 1.65rem);
|
|
181
|
+
--card-value-font-size-xl: clamp(1.8rem, 1.6rem + 0.6vw, 2.1rem);
|
|
182
|
+
--card-value-font-weight: 700;
|
|
183
|
+
--card-value-letter-spacing: -0.015em;
|
|
184
|
+
--card-value-line-height: 1.35;
|
|
185
|
+
--card-value-text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
186
|
+
|
|
187
|
+
/* Card Meta/Description Text - SUBTLE */
|
|
188
|
+
--card-meta-font-size: clamp(0.68rem, 0.6rem + 0.16vw, 0.84rem);
|
|
189
|
+
--card-meta-font-weight: 500;
|
|
190
|
+
--card-meta-line-height: 1.3;
|
|
191
|
+
|
|
192
|
+
/* Smallest text size - for compact lists and features */
|
|
193
|
+
--card-text-small-font-size: clamp(0.48rem, 0.42rem + 0.13vw, 0.58rem);
|
|
194
|
+
|
|
195
|
+
/* Card Colors - Standardized text colors (theme-aware, set in theme files) */
|
|
196
|
+
--card-text-primary: var(--foreground);
|
|
197
|
+
--card-text-secondary: var(--muted-foreground);
|
|
198
|
+
--card-text-muted: var(--muted-foreground);
|
|
199
|
+
--card-text-hover: var(--primary);
|
|
200
|
+
--card-text-label: var(--muted-foreground);
|
|
201
|
+
--card-meta-color: var(--muted-foreground);
|
|
202
|
+
|
|
203
|
+
/* Card Transitions */
|
|
204
|
+
--card-transition: all 0.28s cubic-bezier(0.4, 0, 0.2, 1); /* Standard transition */
|
|
205
|
+
--card-transition-fast: all 0.22s ease; /* Fast transition */
|
|
206
|
+
|
|
207
|
+
/* Layered surface entrance animations */
|
|
208
|
+
--ai-card-entrance-animation: fadeInUpSoft var(--duration-moderate) var(--ease-out-smooth) 10ms 1 normal both;
|
|
209
|
+
--section-entrance-animation: fadeInSoft var(--duration-moderate) var(--ease-out-smooth) 20ms 1 normal both;
|
|
210
|
+
--section-item-entrance-animation: fadeInScaleSoft var(--duration-normal) var(--ease-out-smooth) 30ms 1 normal both;
|
|
211
|
+
|
|
212
|
+
/* Removed mobile overrides - all sizing is now continuous via clamp() */
|
|
213
|
+
|
|
214
|
+
/* ===== LEGACY FONT ALIASES (for backward compatibility) ===== */
|
|
215
|
+
/* These map old variable names to the unified typography system */
|
|
216
|
+
--font-section-label: var(--card-label-font-size);
|
|
217
|
+
--font-section-value: var(--card-value-font-size);
|
|
218
|
+
--font-section-value-lg: var(--card-title-font-size);
|
|
219
|
+
--font-section-value-xl: var(--card-value-font-size-large);
|
|
220
|
+
--font-section-value-2xl: var(--card-value-font-size-large);
|
|
221
|
+
--font-section-description: var(--card-subtitle-font-size);
|
|
222
|
+
--font-section-role: var(--card-subtitle-font-size);
|
|
223
|
+
--font-section-tag: var(--card-label-font-size);
|
|
224
|
+
--font-section-tag-sm: var(--card-label-font-size);
|
|
225
|
+
--font-section-tag-lg: var(--card-label-font-size);
|
|
226
|
+
--font-section-meta: var(--card-meta-font-size);
|
|
227
|
+
--font-section-name: var(--card-title-font-size);
|
|
228
|
+
|
|
229
|
+
/* Chart-specific aliases */
|
|
230
|
+
--font-chart-label: var(--card-label-font-size);
|
|
231
|
+
--font-chart-value: var(--card-value-font-size);
|
|
232
|
+
--font-chart-meta: var(--card-meta-font-size);
|
|
233
|
+
--font-chart-value-mobile: var(--card-value-font-size);
|
|
234
|
+
|
|
235
|
+
/* Contact-specific aliases */
|
|
236
|
+
--font-contact-name: var(--card-title-font-size);
|
|
237
|
+
--font-contact-role: var(--card-subtitle-font-size);
|
|
238
|
+
--font-contact-meta: var(--card-meta-font-size);
|
|
239
|
+
|
|
240
|
+
/* List-specific aliases */
|
|
241
|
+
--font-list-title: var(--card-title-font-size);
|
|
242
|
+
--font-list-subtitle: var(--card-subtitle-font-size);
|
|
243
|
+
--font-list-meta: var(--card-meta-font-size);
|
|
244
|
+
|
|
245
|
+
/* Overview-specific aliases */
|
|
246
|
+
--font-overview-label: var(--card-label-font-size);
|
|
247
|
+
--font-overview-value: var(--card-value-font-size);
|
|
248
|
+
|
|
249
|
+
/* Mobile label aliases */
|
|
250
|
+
--font-section-label-mobile: var(--card-label-font-size);
|
|
251
|
+
--font-section-description-mobile: var(--card-subtitle-font-size);
|
|
252
|
+
|
|
253
|
+
/* ===== UNIFIED SPACING SYSTEM ===== */
|
|
254
|
+
/* All spacing MUST use these variables - NO hardcoded values allowed */
|
|
255
|
+
|
|
256
|
+
/* Item-Level Spacing (inside cards/sections) */
|
|
257
|
+
--spacing-xs: clamp(2px, 0.4vw, 6px);
|
|
258
|
+
--spacing-sm: clamp(4px, 0.6vw, 8px);
|
|
259
|
+
--spacing-md: clamp(6px, 0.8vw, 12px);
|
|
260
|
+
--spacing-lg: clamp(8px, 1vw, 14px);
|
|
261
|
+
--spacing-xl: clamp(10px, 1.2vw, 18px);
|
|
262
|
+
--spacing-2xl: clamp(12px, 1.4vw, 20px);
|
|
263
|
+
--spacing-3xl: clamp(14px, 1.6vw, 22px);
|
|
264
|
+
--spacing-4xl: clamp(16px, 1.8vw, 24px);
|
|
265
|
+
--spacing-5xl: clamp(18px, 2vw, 28px);
|
|
266
|
+
--spacing-6xl: clamp(20px, 2.2vw, 32px);
|
|
267
|
+
--spacing-7xl: clamp(22px, 2.4vw, 36px);
|
|
268
|
+
--spacing-8xl: clamp(24px, 2.6vw, 40px);
|
|
269
|
+
--spacing-9xl: clamp(26px, 2.8vw, 44px);
|
|
270
|
+
--spacing-10xl: clamp(28px, 3vw, 48px);
|
|
271
|
+
|
|
272
|
+
/* Grid Gaps - Standardized for all section grids */
|
|
273
|
+
--grid-gap-xs: 6px;
|
|
274
|
+
--grid-gap-sm: 8px;
|
|
275
|
+
--grid-gap-md: 12px;
|
|
276
|
+
--grid-gap-lg: 16px;
|
|
277
|
+
--grid-gap-xl: 20px;
|
|
278
|
+
--grid-gap-2xl: 24px;
|
|
279
|
+
--grid-gap-3xl: 32px;
|
|
280
|
+
|
|
281
|
+
/* Unified Section Grid Gap - LEGACY - Use --section-card-gap instead */
|
|
282
|
+
--section-grid-gap: 8px; /* Aliased to --section-card-gap for backward compatibility */
|
|
283
|
+
--section-grid-gap-mobile: 9px;
|
|
284
|
+
--section-stack-gap: 12px;
|
|
285
|
+
--section-stack-gap-mobile: 9px;
|
|
286
|
+
|
|
287
|
+
/* Grid Gaps Mobile */
|
|
288
|
+
--grid-gap-xs-mobile: 4px;
|
|
289
|
+
--grid-gap-sm-mobile: 4px;
|
|
290
|
+
--grid-gap-md-mobile: 4px;
|
|
291
|
+
|
|
292
|
+
/* Section Item Padding (for items INSIDE sections) */
|
|
293
|
+
--section-item-padding: 8px;
|
|
294
|
+
--section-item-padding-mobile: 6px;
|
|
295
|
+
--section-item-gap: 6px;
|
|
296
|
+
--section-item-gap-mobile: 4px;
|
|
297
|
+
|
|
298
|
+
/* Metric Card Padding (analytics, overview, info cards) */
|
|
299
|
+
--metric-item-padding: 10px 12px;
|
|
300
|
+
--metric-item-gap: 6px;
|
|
301
|
+
--metric-item-gap-mobile: 4px;
|
|
302
|
+
|
|
303
|
+
/* List/Contact Item Padding */
|
|
304
|
+
--list-item-padding: 10px 12px;
|
|
305
|
+
--list-item-gap: 6px;
|
|
306
|
+
--list-item-gap-mobile: 4px;
|
|
307
|
+
|
|
308
|
+
/* Internal Card Element Gaps */
|
|
309
|
+
--card-element-gap-xs: 2px;
|
|
310
|
+
--card-element-gap-sm: 3px;
|
|
311
|
+
--card-element-gap-md: 4px;
|
|
312
|
+
--card-element-gap-lg: 6px;
|
|
313
|
+
--card-element-gap-xl: 8px;
|
|
314
|
+
--card-element-gap-2xl: 10px;
|
|
315
|
+
|
|
316
|
+
/* Tag/Badge Padding */
|
|
317
|
+
--tag-padding-x: 6px;
|
|
318
|
+
--tag-padding-y: 3px;
|
|
319
|
+
--tag-padding-x-sm: 4px;
|
|
320
|
+
--tag-padding-y-sm: 2px;
|
|
321
|
+
--tag-padding-x-lg: 7px;
|
|
322
|
+
--tag-padding-y-lg: 3px;
|
|
323
|
+
|
|
324
|
+
/* Border Accents */
|
|
325
|
+
--accent-border-width: 3px;
|
|
326
|
+
--accent-border-width-sm: 2px;
|
|
327
|
+
|
|
328
|
+
/* Icon Sizes - Standardized */
|
|
329
|
+
--icon-size-xs: 10px;
|
|
330
|
+
--icon-size-sm: 13px;
|
|
331
|
+
--icon-size-md: 16px;
|
|
332
|
+
--icon-size-lg: 22px;
|
|
333
|
+
--icon-size-xl: 36px;
|
|
334
|
+
--icon-size-section: 18px;
|
|
335
|
+
|
|
336
|
+
/* Avatar Sizes */
|
|
337
|
+
--avatar-size-sm: 32px;
|
|
338
|
+
--avatar-size-md: 36px;
|
|
339
|
+
|
|
340
|
+
/* Progress Bar */
|
|
341
|
+
--progress-height: 2px;
|
|
342
|
+
--progress-margin: 4px 0;
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
/* ===== ANIMATION SYSTEM ===== */
|
|
346
|
+
/* Animation Durations - Standardized timing scale */
|
|
347
|
+
--duration-instant: 40ms;
|
|
348
|
+
--duration-fast: 80ms;
|
|
349
|
+
--duration-normal: 160ms;
|
|
350
|
+
--duration-moderate: 220ms;
|
|
351
|
+
--duration-slow: 300ms;
|
|
352
|
+
--duration-slower: 380ms;
|
|
353
|
+
--duration-slowest: 460ms;
|
|
354
|
+
|
|
355
|
+
/* Motion Distances & Scale - keeps animations consistent while lightweight */
|
|
356
|
+
--motion-distance-xl: 12px;
|
|
357
|
+
--motion-distance-lg: 10px;
|
|
358
|
+
--motion-distance-md: 6px;
|
|
359
|
+
--motion-distance-sm: 4px;
|
|
360
|
+
--motion-distance-xs: 2px;
|
|
361
|
+
--motion-scale-soft-start: 0.992;
|
|
362
|
+
--motion-scale-soft-end: 1;
|
|
363
|
+
--motion-scale-pop: 1.015;
|
|
364
|
+
--motion-scale-pulse-min: 0.985;
|
|
365
|
+
--motion-scale-pulse-max: 1.015;
|
|
366
|
+
|
|
367
|
+
/* Animation Easing Functions - Natural motion curves */
|
|
368
|
+
--ease-out-smooth: cubic-bezier(0.23, 1, 0.32, 1); /* Smooth deceleration */
|
|
369
|
+
--ease-in-out-smooth: cubic-bezier(0.4, 0, 0.2, 1); /* Balanced acceleration */
|
|
370
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* Spring-like bounce */
|
|
371
|
+
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55); /* Pronounced bounce */
|
|
372
|
+
--ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1); /* Exponential slowdown */
|
|
373
|
+
--ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955); /* Quadratic ease */
|
|
374
|
+
|
|
375
|
+
/* Tilt & Interaction Timings */
|
|
376
|
+
--tilt-duration: 80ms;
|
|
377
|
+
--tilt-reset-duration: 300ms;
|
|
378
|
+
--shadow-duration: 100ms;
|
|
379
|
+
--glow-duration: 120ms;
|
|
380
|
+
--reflection-duration: 120ms;
|
|
381
|
+
|
|
382
|
+
/* Card Interaction Timings */
|
|
383
|
+
--card-hover-duration: 200ms;
|
|
384
|
+
--card-hover-delay: 0ms;
|
|
385
|
+
|
|
386
|
+
/* Animation Delays - For staggered effects */
|
|
387
|
+
--stagger-delay-base: 25ms;
|
|
388
|
+
--stagger-delay-fast: 15ms;
|
|
389
|
+
--stagger-delay-slow: 45ms;
|
|
390
|
+
|
|
391
|
+
/* Performance Hints */
|
|
392
|
+
--animation-fill-mode: both;
|
|
393
|
+
--animation-play-state: running;
|
|
394
|
+
|
|
395
|
+
/* Legacy variables - kept for backward compatibility */
|
|
396
|
+
--master-color: var(--color-brand);
|
|
397
|
+
--master-color-dark: #CC5F00;
|
|
398
|
+
--master-color-light: #FF9933;
|
|
399
|
+
--master-color-pale: #FFE6CC;
|
|
400
|
+
--bg-color: var(--background);
|
|
401
|
+
--card-bg: var(--card);
|
|
402
|
+
--section-bg: var(--muted);
|
|
403
|
+
--border-color: var(--border);
|
|
404
|
+
--text-color: var(--foreground);
|
|
405
|
+
--text-muted: var(--muted-foreground);
|
|
406
|
+
--primary-color: var(--primary);
|
|
407
|
+
--primary-contrast: var(--primary-foreground);
|
|
408
|
+
--secondary-color: var(--secondary);
|
|
409
|
+
--secondary-contrast: var(--secondary-foreground);
|
|
410
|
+
--hover-bg: rgba(255, 121, 0, 0.1);
|
|
411
|
+
--placeholder-bg: rgba(255, 255, 255, 0.05);
|
|
412
|
+
--font-weight-medium: 500;
|
|
413
|
+
--font-weight-normal: 400;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/* ===== RESPONSIVE ANIMATION PREFERENCES ===== */
|
|
417
|
+
/* Reduced motion support for accessibility */
|
|
418
|
+
@media (prefers-reduced-motion: reduce) {
|
|
419
|
+
:root,
|
|
420
|
+
:root[data-theme='night'],
|
|
421
|
+
:root[data-theme='day'] {
|
|
422
|
+
/* Drastically reduce animation durations */
|
|
423
|
+
--duration-instant: 1ms;
|
|
424
|
+
--duration-fast: 1ms;
|
|
425
|
+
--duration-normal: 1ms;
|
|
426
|
+
--duration-moderate: 1ms;
|
|
427
|
+
--duration-slow: 1ms;
|
|
428
|
+
--duration-slower: 1ms;
|
|
429
|
+
--duration-slowest: 1ms;
|
|
430
|
+
|
|
431
|
+
/* Disable tilt animations */
|
|
432
|
+
--tilt-duration: 1ms;
|
|
433
|
+
--tilt-reset-duration: 1ms;
|
|
434
|
+
--shadow-duration: 1ms;
|
|
435
|
+
--glow-duration: 1ms;
|
|
436
|
+
--reflection-duration: 1ms;
|
|
437
|
+
|
|
438
|
+
/* Minimal card interactions */
|
|
439
|
+
--card-hover-duration: 1ms;
|
|
440
|
+
|
|
441
|
+
/* No stagger delays */
|
|
442
|
+
--stagger-delay-base: 0ms;
|
|
443
|
+
--stagger-delay-fast: 0ms;
|
|
444
|
+
--stagger-delay-slow: 0ms;
|
|
445
|
+
|
|
446
|
+
/* Disable layer entrance animations */
|
|
447
|
+
--ai-card-entrance-animation: none;
|
|
448
|
+
--section-entrance-animation: none;
|
|
449
|
+
--section-item-entrance-animation: none;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
*,
|
|
453
|
+
*::before,
|
|
454
|
+
*::after {
|
|
455
|
+
animation-duration: 1ms !important;
|
|
456
|
+
animation-iteration-count: 1 !important;
|
|
457
|
+
transition-duration: 1ms !important;
|
|
458
|
+
scroll-behavior: auto !important;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/* Animations are now consistent across all viewport sizes - controlled by prefers-reduced-motion only */
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* === BRAND & CORE COLORS === */
|
|
3
|
+
--color-white: #ffffff;
|
|
4
|
+
--color-black: #000000;
|
|
5
|
+
--color-brand: #ff7900;
|
|
6
|
+
--color-brand-dark: #CC5F00;
|
|
7
|
+
--color-brand-light: #FF9933;
|
|
8
|
+
|
|
9
|
+
/* Grayscale ramp */
|
|
10
|
+
--color-gray-50: #ffffff;
|
|
11
|
+
--color-gray-100: #fcfcfc;
|
|
12
|
+
--color-gray-150: #f7f7f7;
|
|
13
|
+
--color-gray-200: #f0f0f1;
|
|
14
|
+
--color-gray-300: #e9e9e9;
|
|
15
|
+
--color-gray-400: #92999e;
|
|
16
|
+
--color-gray-500: #5a5f62;
|
|
17
|
+
--color-gray-600: #343541;
|
|
18
|
+
--color-gray-700: #2a2a2a;
|
|
19
|
+
--color-gray-800: #232323;
|
|
20
|
+
--color-gray-850: #171717;
|
|
21
|
+
--color-gray-900: #000000;
|
|
22
|
+
|
|
23
|
+
--background: #ffffff;
|
|
24
|
+
--surface-contrast-color: #000000;
|
|
25
|
+
|
|
26
|
+
/* Default surface tokens (override per theme via data-theme) */
|
|
27
|
+
--theme-ai-card-border: 0.5px solid color-mix(in srgb, var(--color-brand) 49%, transparent);
|
|
28
|
+
--theme-ai-card-border-hover: 0.5px solid var(--color-brand);
|
|
29
|
+
--theme-ai-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
30
|
+
--theme-ai-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
31
|
+
--theme-ai-card-box-shadow: 0 0 18px rgba(255, 121, 0, 0.3); /* Orange glow only, intensified by 50% */
|
|
32
|
+
--theme-ai-card-box-shadow-hover: 0 0 24px rgba(255, 121, 0, 0.45); /* Orange glow only, intensified by 50% */
|
|
33
|
+
--theme-ai-card-transition: border 0.38s cubic-bezier(0.4, 0, 0.2, 1), background 0.38s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
34
|
+
|
|
35
|
+
--theme-card-border: 1px solid rgba(0, 0, 0, 0.16);
|
|
36
|
+
--theme-card-border-hover: var(--color-brand);
|
|
37
|
+
--theme-card-hover-border: var(--color-brand);
|
|
38
|
+
--theme-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
39
|
+
--theme-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
40
|
+
--theme-card-box-shadow: 0 4px 14px rgba(15, 15, 20, 0.06);
|
|
41
|
+
--theme-card-box-shadow-hover: 0 10px 24px rgba(10, 10, 16, 0.1);
|
|
42
|
+
--theme-card-box-shadow-hover-lift: 0 14px 32px rgba(6, 6, 10, 0.12);
|
|
43
|
+
--theme-card-hover-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
44
|
+
--theme-card-hover-shadow: 0 14px 30px rgba(8, 8, 12, 0.12);
|
|
45
|
+
|
|
46
|
+
--theme-section-border: 1px solid rgba(0, 0, 0, 0.08);
|
|
47
|
+
--theme-section-border-hover: 1px solid rgba(0, 0, 0, 0.1);
|
|
48
|
+
--theme-section-box-shadow: 0 8px 22px rgba(0, 0, 0, 0.08);
|
|
49
|
+
--theme-section-box-shadow-hover: 0 18px 40px rgba(0, 0, 0, 0.12);
|
|
50
|
+
--theme-section-transition: border-color 0.32s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.32s cubic-bezier(0.4, 0, 0.2, 1);
|
|
51
|
+
--section-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
52
|
+
--section-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
53
|
+
--section-surface: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
54
|
+
--section-surface-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
55
|
+
|
|
56
|
+
--theme-section-item-border: 1px solid rgba(0, 0, 0, 0.14);
|
|
57
|
+
--theme-section-item-border-hover: 1px solid rgba(0, 0, 0, 0.22);
|
|
58
|
+
--theme-section-item-background: var(--section-surface);
|
|
59
|
+
--theme-section-item-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
60
|
+
--theme-section-item-box-shadow: 0 3px 12px rgba(0, 0, 0, 0.07);
|
|
61
|
+
--theme-section-item-box-shadow-hover: 0 8px 20px rgba(0, 0, 0, 0.12);
|
|
62
|
+
--theme-section-item-hover-transform: none;
|
|
63
|
+
--theme-section-item-transition: border-color 0.22s cubic-bezier(0.4, 0, 0.2, 1), background 0.22s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.22s cubic-bezier(0.4, 0, 0.2, 1);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* === DARK THEME (Night Mode - React Design) === */
|
|
67
|
+
:root[data-theme='night'] {
|
|
68
|
+
--background: #0a0a0a;
|
|
69
|
+
--surface-contrast-color: #ffffff;
|
|
70
|
+
--foreground: #ffffff;
|
|
71
|
+
--muted: #242424;
|
|
72
|
+
--muted-foreground: #aaaaaa;
|
|
73
|
+
--card: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
74
|
+
--card-foreground: #ffffff;
|
|
75
|
+
--card-surface: var(--card);
|
|
76
|
+
--card-surface-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
77
|
+
--card-section-bg: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
78
|
+
--card-section-card-bg: color-mix(in srgb, var(--card-section-bg) 90%, var(--surface-contrast-color) 10%);
|
|
79
|
+
--theme-ai-card-border: 0.5px solid color-mix(in srgb, var(--color-brand) 49%, transparent);
|
|
80
|
+
--theme-ai-card-border-hover: 0.5px solid var(--color-brand);
|
|
81
|
+
--theme-ai-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
82
|
+
--theme-ai-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
83
|
+
--theme-ai-card-box-shadow: 0 0 18px rgba(255, 121, 0, 0.3); /* Orange glow only, intensified by 50% */
|
|
84
|
+
--theme-ai-card-box-shadow-hover: 0 0 24px rgba(255, 121, 0, 0.45); /* Orange glow only, intensified by 50% */
|
|
85
|
+
|
|
86
|
+
--theme-card-border: 1px solid rgba(0, 0, 0, 0.16);
|
|
87
|
+
--theme-card-border-hover: var(--color-brand);
|
|
88
|
+
--theme-card-hover-border: var(--color-brand);
|
|
89
|
+
--theme-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
90
|
+
--theme-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
91
|
+
--theme-card-box-shadow: 0 6px 22px rgba(0, 0, 0, 0.58);
|
|
92
|
+
--theme-card-box-shadow-hover: 0 12px 32px rgba(0, 0, 0, 0.68);
|
|
93
|
+
--theme-card-box-shadow-hover-lift: 0 18px 42px rgba(0, 0, 0, 0.72);
|
|
94
|
+
--theme-card-hover-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
95
|
+
--theme-card-hover-shadow: 0 20px 44px rgba(0, 0, 0, 0.76);
|
|
96
|
+
/* Sections lift off the darker card */
|
|
97
|
+
--section-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
98
|
+
--section-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
99
|
+
--section-surface: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
100
|
+
--section-surface-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
101
|
+
--popover: #111111;
|
|
102
|
+
--popover-foreground: #ffffff;
|
|
103
|
+
--primary: #FF7900;
|
|
104
|
+
--primary-foreground: #ffffff;
|
|
105
|
+
--secondary: #333333;
|
|
106
|
+
--secondary-foreground: #ffffff;
|
|
107
|
+
--accent: #FF7900;
|
|
108
|
+
--accent-foreground: #000000;
|
|
109
|
+
--destructive: #d4183d;
|
|
110
|
+
--destructive-foreground: #ffffff;
|
|
111
|
+
--border: rgba(200, 200, 200, 0.3);
|
|
112
|
+
--input: transparent;
|
|
113
|
+
--input-background: #222222;
|
|
114
|
+
--switch-background: #333333;
|
|
115
|
+
--ring: rgba(255, 121, 0, 0.6);
|
|
116
|
+
--chart-1: #FF7900;
|
|
117
|
+
--chart-2: #FF9933;
|
|
118
|
+
--chart-3: #CC5F00;
|
|
119
|
+
--chart-4: #FFE6CC;
|
|
120
|
+
--chart-5: #FF4500;
|
|
121
|
+
|
|
122
|
+
/* Theme-specific overrides for 5 element types - Dark theme */
|
|
123
|
+
--hero-card-border: 1px solid rgba(233, 233, 233, 0.3);
|
|
124
|
+
--hero-card-border-hover: rgba(233, 233, 233, 0.6);
|
|
125
|
+
--theme-section-border: 1px solid rgba(255, 255, 255, 0.08);
|
|
126
|
+
--theme-section-border-hover: 1px solid rgba(255, 255, 255, 0.08);
|
|
127
|
+
--theme-section-box-shadow: 0 12px 34px rgba(0, 0, 0, 0.6);
|
|
128
|
+
--theme-section-box-shadow-hover: 0 24px 48px rgba(0, 0, 0, 0.75);
|
|
129
|
+
--theme-section-item-border: 1px solid rgba(255, 255, 255, 0.16);
|
|
130
|
+
--theme-section-item-border-hover: 1px solid rgba(255, 255, 255, 0.28);
|
|
131
|
+
--theme-section-item-background: var(--section-surface);
|
|
132
|
+
--theme-section-item-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
133
|
+
--theme-section-item-box-shadow: 0 6px 18px rgba(0, 0, 0, 0.55);
|
|
134
|
+
--theme-section-item-box-shadow-hover: 0 16px 34px rgba(0, 0, 0, 0.7);
|
|
135
|
+
--theme-section-item-hover-transform: none;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* === LIGHT THEME (Day Mode - Inverted React Design) === */
|
|
139
|
+
:root[data-theme='day'] {
|
|
140
|
+
--background: #ffffff;
|
|
141
|
+
--foreground: #1c1c1f;
|
|
142
|
+
--muted: #f4f4f6;
|
|
143
|
+
--muted-foreground: #555861;
|
|
144
|
+
--card: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
145
|
+
--card-foreground: #1c1c1f;
|
|
146
|
+
--card-surface: var(--card);
|
|
147
|
+
--card-surface-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
148
|
+
--card-section-bg: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
149
|
+
--card-section-card-bg: color-mix(in srgb, var(--card-section-bg) 88%, #ffffff);
|
|
150
|
+
--theme-ai-card-border: 0.5px solid color-mix(in srgb, var(--color-brand) 52%, transparent);
|
|
151
|
+
--theme-ai-card-border-hover: 0.5px solid var(--color-brand);
|
|
152
|
+
--theme-ai-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
153
|
+
--theme-ai-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
154
|
+
--theme-ai-card-box-shadow: 0 0 18px rgba(255, 121, 0, 0.3); /* Orange glow only, intensified by 50% */
|
|
155
|
+
--theme-ai-card-box-shadow-hover: 0 0 24px rgba(255, 121, 0, 0.45); /* Orange glow only, intensified by 50% */
|
|
156
|
+
|
|
157
|
+
--theme-card-border: 1px solid rgba(255, 255, 255, 0.22);
|
|
158
|
+
--theme-card-border-hover: var(--color-brand);
|
|
159
|
+
--theme-card-hover-border: var(--color-brand);
|
|
160
|
+
--theme-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
161
|
+
--theme-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
162
|
+
--theme-card-box-shadow: 0 4px 14px rgba(15, 15, 20, 0.06);
|
|
163
|
+
--theme-card-box-shadow-hover: 0 10px 24px rgba(10, 10, 16, 0.1);
|
|
164
|
+
--theme-card-box-shadow-hover-lift: 0 14px 32px rgba(6, 6, 10, 0.12);
|
|
165
|
+
--theme-card-hover-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
166
|
+
--theme-card-hover-shadow: 0 14px 30px rgba(8, 8, 12, 0.12);
|
|
167
|
+
--section-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
168
|
+
--section-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
169
|
+
--section-surface: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
170
|
+
--section-surface-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
171
|
+
--popover: #ffffff;
|
|
172
|
+
--popover-foreground: #1a1a1a;
|
|
173
|
+
--primary: #FF7900;
|
|
174
|
+
--primary-foreground: #ffffff;
|
|
175
|
+
--secondary: #f5f5f5;
|
|
176
|
+
--secondary-foreground: #1a1a1a;
|
|
177
|
+
--accent: #FF7900;
|
|
178
|
+
--accent-foreground: #ffffff;
|
|
179
|
+
--destructive: #d4183d;
|
|
180
|
+
--destructive-foreground: #ffffff;
|
|
181
|
+
--border: rgba(200, 200, 200, 0.5);
|
|
182
|
+
--input: transparent;
|
|
183
|
+
--input-background: #f9f9f9;
|
|
184
|
+
--switch-background: #e5e5e5;
|
|
185
|
+
--ring: rgba(255, 121, 0, 0.4);
|
|
186
|
+
--chart-1: #FF7900;
|
|
187
|
+
--chart-2: #FF9933;
|
|
188
|
+
--chart-3: #CC5F00;
|
|
189
|
+
--chart-4: #FFE6CC;
|
|
190
|
+
--chart-5: #FF4500;
|
|
191
|
+
|
|
192
|
+
/* Light theme specific overrides for sections */
|
|
193
|
+
--color-gray-700: #e0e0e0;
|
|
194
|
+
--color-gray-600: #d0d0d0;
|
|
195
|
+
--card-section-card-bg: color-mix(in srgb, var(--card-section-bg) 85%, #ffffff);
|
|
196
|
+
|
|
197
|
+
/* Theme-specific overrides for 5 element types - Light theme */
|
|
198
|
+
--hero-card-border: 1px solid rgba(146, 153, 158, 0.4);
|
|
199
|
+
--hero-card-border-hover: rgba(146, 153, 158, 0.7);
|
|
200
|
+
--theme-section-border: 1px solid rgba(0, 0, 0, 0.08);
|
|
201
|
+
--theme-section-border-hover: 1px solid rgba(0, 0, 0, 0.1);
|
|
202
|
+
--theme-section-box-shadow: 0 8px 22px rgba(0, 0, 0, 0.08);
|
|
203
|
+
--theme-section-box-shadow-hover: 0 18px 40px rgba(0, 0, 0, 0.12);
|
|
204
|
+
--theme-section-item-border: 1px solid rgba(0, 0, 0, 0.14);
|
|
205
|
+
--theme-section-item-border-hover: 1px solid rgba(0, 0, 0, 0.22);
|
|
206
|
+
--theme-section-item-background: var(--section-surface);
|
|
207
|
+
--theme-section-item-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
208
|
+
--theme-section-item-box-shadow: 0 3px 12px rgba(0, 0, 0, 0.07);
|
|
209
|
+
--theme-section-item-box-shadow-hover: 0 8px 20px rgba(0, 0, 0, 0.12);
|
|
210
|
+
--theme-section-item-hover-transform: none;
|
|
211
|
+
}
|
|
212
|
+
|