osi-cards-lib 1.2.2 → 1.3.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.
|
@@ -5801,6 +5801,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
5801
5801
|
type: Output
|
|
5802
5802
|
}] } });
|
|
5803
5803
|
|
|
5804
|
+
/**
|
|
5805
|
+
* OsiCardsContainerComponent
|
|
5806
|
+
*
|
|
5807
|
+
* A wrapper component that automatically applies the `.osi-cards-container` class
|
|
5808
|
+
* to encapsulate OSI Cards styles and prevent CSS leakage into the host application.
|
|
5809
|
+
*
|
|
5810
|
+
* @example
|
|
5811
|
+
* ```html
|
|
5812
|
+
* <osi-cards-container>
|
|
5813
|
+
* <app-ai-card-renderer [cardConfig]="card"></app-ai-card-renderer>
|
|
5814
|
+
* </osi-cards-container>
|
|
5815
|
+
* ```
|
|
5816
|
+
*
|
|
5817
|
+
* @example
|
|
5818
|
+
* With theme support:
|
|
5819
|
+
* ```html
|
|
5820
|
+
* <osi-cards-container [theme]="'night'">
|
|
5821
|
+
* <app-ai-card-renderer [cardConfig]="card"></app-ai-card-renderer>
|
|
5822
|
+
* </osi-cards-container>
|
|
5823
|
+
* ```
|
|
5824
|
+
*/
|
|
5825
|
+
class OsiCardsContainerComponent {
|
|
5826
|
+
/**
|
|
5827
|
+
* Computed container class name.
|
|
5828
|
+
* Always includes 'osi-cards-container' base class.
|
|
5829
|
+
*/
|
|
5830
|
+
get containerClass() {
|
|
5831
|
+
return 'osi-cards-container';
|
|
5832
|
+
}
|
|
5833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: OsiCardsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: OsiCardsContainerComponent, isStandalone: true, selector: "osi-cards-container", ngImport: i0, template: `
|
|
5835
|
+
<div [class]="containerClass" [attr.data-theme]="theme">
|
|
5836
|
+
<ng-content></ng-content>
|
|
5837
|
+
</div>
|
|
5838
|
+
`, isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5839
|
+
}
|
|
5840
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: OsiCardsContainerComponent, decorators: [{
|
|
5841
|
+
type: Component,
|
|
5842
|
+
args: [{ selector: 'osi-cards-container', standalone: true, template: `
|
|
5843
|
+
<div [class]="containerClass" [attr.data-theme]="theme">
|
|
5844
|
+
<ng-content></ng-content>
|
|
5845
|
+
</div>
|
|
5846
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
|
|
5847
|
+
}] });
|
|
5848
|
+
|
|
5804
5849
|
/**
|
|
5805
5850
|
* Card Header Component
|
|
5806
5851
|
*
|
|
@@ -6236,12 +6281,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
6236
6281
|
* You may need to import from the main application source or
|
|
6237
6282
|
* extend the library exports. See integration documentation for details.
|
|
6238
6283
|
*
|
|
6239
|
-
* Styles entry
|
|
6284
|
+
* Styles entry points:
|
|
6285
|
+
* - 'osi-cards-lib/styles/_styles.scss' (global styles - may affect host app)
|
|
6286
|
+
* - 'osi-cards-lib/styles/_styles-scoped.scss' (scoped styles - recommended for integration)
|
|
6287
|
+
*
|
|
6288
|
+
* For scoped styles, wrap components in <osi-cards-container> or use class="osi-cards-container"
|
|
6240
6289
|
*/
|
|
6241
6290
|
|
|
6242
6291
|
/**
|
|
6243
6292
|
* Generated bundle index. Do not edit.
|
|
6244
6293
|
*/
|
|
6245
6294
|
|
|
6246
|
-
export { AICardRendererComponent, AnalyticsSectionComponent, BaseSectionComponent, BrandColorsSectionComponent, CardBodyComponent, CardDiffUtil, CardFooterComponent, CardHeaderComponent, CardPreviewComponent, CardSkeletonComponent, CardTypeGuards, CardUtils, ChartSectionComponent, ContactCardSectionComponent, EventMiddlewareService, EventSectionComponent, FallbackSectionComponent, FinancialsSectionComponent, IconService, InfoSectionComponent, ListSectionComponent, LucideIconsModule, MagneticTiltService, MapSectionComponent, MasonryGridComponent, NetworkCardSectionComponent, NewsSectionComponent, OverviewSectionComponent, PresetFactory, ProductSectionComponent, QuotationSectionComponent, SectionNormalizationService, SectionPluginRegistry, SectionRendererComponent, SectionUtilsService, SocialMediaSectionComponent, SolutionsSectionComponent, TextReferenceSectionComponent, ThemeService, areStylesLoaded, buildThemeFromBase, cloneCardConfig, createAnalyticsDashboard, createAnalyticsPreset, createCardFromPartial, createCompanyCard, createCompanyPreset, createContactCard, createContactPreset, createEmptyCard, createEnhancedCompanyCard, createErrorCard, createPartialTheme, createSkeletonCard, darkTheme, generateThemeFromPalette, getBreakpointFromWidth, getCSSVariableValue, highContrastTheme, isCSSVariableDefined, isCardComplete, lightTheme, mergeCardConfig, mergeSections, mergeThemes, prepareCardForStreaming, provideOSICards, updateCardIncremental, validateAndWarnStyles, validateCSSVariableNames, validateCardConfig, validateStyles, waitForStyles };
|
|
6295
|
+
export { AICardRendererComponent, AnalyticsSectionComponent, BaseSectionComponent, BrandColorsSectionComponent, CardBodyComponent, CardDiffUtil, CardFooterComponent, CardHeaderComponent, CardPreviewComponent, CardSkeletonComponent, CardTypeGuards, CardUtils, ChartSectionComponent, ContactCardSectionComponent, EventMiddlewareService, EventSectionComponent, FallbackSectionComponent, FinancialsSectionComponent, IconService, InfoSectionComponent, ListSectionComponent, LucideIconsModule, MagneticTiltService, MapSectionComponent, MasonryGridComponent, NetworkCardSectionComponent, NewsSectionComponent, OsiCardsContainerComponent, OverviewSectionComponent, PresetFactory, ProductSectionComponent, QuotationSectionComponent, SectionNormalizationService, SectionPluginRegistry, SectionRendererComponent, SectionUtilsService, SocialMediaSectionComponent, SolutionsSectionComponent, TextReferenceSectionComponent, ThemeService, areStylesLoaded, buildThemeFromBase, cloneCardConfig, createAnalyticsDashboard, createAnalyticsPreset, createCardFromPartial, createCompanyCard, createCompanyPreset, createContactCard, createContactPreset, createEmptyCard, createEnhancedCompanyCard, createErrorCard, createPartialTheme, createSkeletonCard, darkTheme, generateThemeFromPalette, getBreakpointFromWidth, getCSSVariableValue, highContrastTheme, isCSSVariableDefined, isCardComplete, lightTheme, mergeCardConfig, mergeSections, mergeThemes, prepareCardForStreaming, provideOSICards, updateCardIncremental, validateAndWarnStyles, validateCSSVariableNames, validateCardConfig, validateStyles, waitForStyles };
|
|
6247
6296
|
//# sourceMappingURL=osi-cards-lib.mjs.map
|
package/index.d.ts
CHANGED
|
@@ -1966,6 +1966,42 @@ declare class CardPreviewComponent implements OnInit, OnChanges, OnDestroy {
|
|
|
1966
1966
|
static ɵcmp: i0.ɵɵComponentDeclaration<CardPreviewComponent, "app-card-preview", never, { "generatedCard": { "alias": "generatedCard"; "required": false; }; "isGenerating": { "alias": "isGenerating"; "required": false; }; "isInitialized": { "alias": "isInitialized"; "required": false; }; "isFullscreen": { "alias": "isFullscreen"; "required": false; }; }, { "cardInteraction": "cardInteraction"; "fieldInteraction": "fieldInteraction"; "fullscreenToggle": "fullscreenToggle"; "agentAction": "agentAction"; "questionAction": "questionAction"; }, never, never, true, never>;
|
|
1967
1967
|
}
|
|
1968
1968
|
|
|
1969
|
+
/**
|
|
1970
|
+
* OsiCardsContainerComponent
|
|
1971
|
+
*
|
|
1972
|
+
* A wrapper component that automatically applies the `.osi-cards-container` class
|
|
1973
|
+
* to encapsulate OSI Cards styles and prevent CSS leakage into the host application.
|
|
1974
|
+
*
|
|
1975
|
+
* @example
|
|
1976
|
+
* ```html
|
|
1977
|
+
* <osi-cards-container>
|
|
1978
|
+
* <app-ai-card-renderer [cardConfig]="card"></app-ai-card-renderer>
|
|
1979
|
+
* </osi-cards-container>
|
|
1980
|
+
* ```
|
|
1981
|
+
*
|
|
1982
|
+
* @example
|
|
1983
|
+
* With theme support:
|
|
1984
|
+
* ```html
|
|
1985
|
+
* <osi-cards-container [theme]="'night'">
|
|
1986
|
+
* <app-ai-card-renderer [cardConfig]="card"></app-ai-card-renderer>
|
|
1987
|
+
* </osi-cards-container>
|
|
1988
|
+
* ```
|
|
1989
|
+
*/
|
|
1990
|
+
declare class OsiCardsContainerComponent {
|
|
1991
|
+
/**
|
|
1992
|
+
* Theme to apply to the container.
|
|
1993
|
+
* Can be 'day', 'night', or undefined (default).
|
|
1994
|
+
*/
|
|
1995
|
+
theme?: 'day' | 'night';
|
|
1996
|
+
/**
|
|
1997
|
+
* Computed container class name.
|
|
1998
|
+
* Always includes 'osi-cards-container' base class.
|
|
1999
|
+
*/
|
|
2000
|
+
get containerClass(): string;
|
|
2001
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OsiCardsContainerComponent, never>;
|
|
2002
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<OsiCardsContainerComponent, "osi-cards-container", never, {}, {}, never, ["*"], true, never>;
|
|
2003
|
+
}
|
|
2004
|
+
|
|
1969
2005
|
/**
|
|
1970
2006
|
* Card Header Component
|
|
1971
2007
|
*
|
|
@@ -2425,5 +2461,5 @@ declare class TextReferenceSectionComponent extends BaseSectionComponent<TextRef
|
|
|
2425
2461
|
static ɵcmp: i0.ɵɵComponentDeclaration<TextReferenceSectionComponent, "app-text-reference-section", never, {}, {}, never, never, true, never>;
|
|
2426
2462
|
}
|
|
2427
2463
|
|
|
2428
|
-
export { AICardRendererComponent, AnalyticsSectionComponent, BaseSectionComponent, BrandColorsSectionComponent, CardBodyComponent, CardDiffUtil, CardFooterComponent, CardHeaderComponent, CardPreviewComponent, CardSkeletonComponent, CardTypeGuards, CardUtils, ChartSectionComponent, ContactCardSectionComponent, EventMiddlewareService, EventSectionComponent, FallbackSectionComponent, FinancialsSectionComponent, IconService, InfoSectionComponent, ListSectionComponent, LucideIconsModule, MagneticTiltService, MapSectionComponent, MasonryGridComponent, NetworkCardSectionComponent, NewsSectionComponent, OverviewSectionComponent, PresetFactory, ProductSectionComponent, QuotationSectionComponent, SectionNormalizationService, SectionPluginRegistry, SectionRendererComponent, SectionUtilsService, SocialMediaSectionComponent, SolutionsSectionComponent, TextReferenceSectionComponent, ThemeService, areStylesLoaded, buildThemeFromBase, cloneCardConfig, createAnalyticsDashboard, createAnalyticsPreset, createCardFromPartial, createCompanyCard, createCompanyPreset, createContactCard, createContactPreset, createEmptyCard, createEnhancedCompanyCard, createErrorCard, createPartialTheme, createSkeletonCard, darkTheme, generateThemeFromPalette, getBreakpointFromWidth, getCSSVariableValue, highContrastTheme, isCSSVariableDefined, isCardComplete, lightTheme, mergeCardConfig, mergeSections, mergeThemes, prepareCardForStreaming, provideOSICards, updateCardIncremental, validateAndWarnStyles, validateCSSVariableNames, validateCardConfig, validateStyles, waitForStyles };
|
|
2464
|
+
export { AICardRendererComponent, AnalyticsSectionComponent, BaseSectionComponent, BrandColorsSectionComponent, CardBodyComponent, CardDiffUtil, CardFooterComponent, CardHeaderComponent, CardPreviewComponent, CardSkeletonComponent, CardTypeGuards, CardUtils, ChartSectionComponent, ContactCardSectionComponent, EventMiddlewareService, EventSectionComponent, FallbackSectionComponent, FinancialsSectionComponent, IconService, InfoSectionComponent, ListSectionComponent, LucideIconsModule, MagneticTiltService, MapSectionComponent, MasonryGridComponent, NetworkCardSectionComponent, NewsSectionComponent, OsiCardsContainerComponent, OverviewSectionComponent, PresetFactory, ProductSectionComponent, QuotationSectionComponent, SectionNormalizationService, SectionPluginRegistry, SectionRendererComponent, SectionUtilsService, SocialMediaSectionComponent, SolutionsSectionComponent, TextReferenceSectionComponent, ThemeService, areStylesLoaded, buildThemeFromBase, cloneCardConfig, createAnalyticsDashboard, createAnalyticsPreset, createCardFromPartial, createCompanyCard, createCompanyPreset, createContactCard, createContactPreset, createEmptyCard, createEnhancedCompanyCard, createErrorCard, createPartialTheme, createSkeletonCard, darkTheme, generateThemeFromPalette, getBreakpointFromWidth, getCSSVariableValue, highContrastTheme, isCSSVariableDefined, isCardComplete, lightTheme, mergeCardConfig, mergeSections, mergeThemes, prepareCardForStreaming, provideOSICards, updateCardIncremental, validateAndWarnStyles, validateCSSVariableNames, validateCardConfig, validateStyles, waitForStyles };
|
|
2429
2465
|
export type { AICardConfig, AgentCardAction, AnalyticsDashboardOptions, Breakpoint, CardAction, CardActionButtonType, CardChangeType, CardDiffResult, CardField, CardFieldInteractionEvent, CardItem, CardSection, CardType, CompanyCardOptions, ContactCardOptions, EmailConfig, EmailContact, EventFilter, EventHandler, EventMiddleware, EventTransformer, InfoSectionFieldInteraction, LegacyCardAction, MailCardAction, MasonryLayoutInfo, MousePosition, OSICardsLibConfig, OSICardsThemeConfig, PriorityValue, QuestionCardAction, RegisteredSectionPlugin, SectionInteraction, SectionPlugin, SectionPluginConfig, SectionPluginMetadata, SectionRenderEvent, StatusValue, StreamingStage, StyleValidationResult, ThemePreset, TiltCalculations, TrendValue, WebsiteCardAction };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "osi-cards-lib",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Standalone OSI Cards library for Angular applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -54,6 +54,12 @@
|
|
|
54
54
|
},
|
|
55
55
|
"./styles/_styles.scss": {
|
|
56
56
|
"default": "./styles/_styles.scss"
|
|
57
|
+
},
|
|
58
|
+
"./styles/_styles-scoped": {
|
|
59
|
+
"default": "./styles/_styles-scoped.scss"
|
|
60
|
+
},
|
|
61
|
+
"./styles/_styles-scoped.scss": {
|
|
62
|
+
"default": "./styles/_styles-scoped.scss"
|
|
57
63
|
}
|
|
58
64
|
},
|
|
59
65
|
"main": "./fesm2022/osi-cards-lib.mjs",
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/* ===================================================================
|
|
2
|
+
SCOPED OSI CARDS STYLES - Encapsulated to Prevent CSS Leakage
|
|
3
|
+
=================================================================== */
|
|
4
|
+
/*
|
|
5
|
+
* This stylesheet wraps all OSI Cards styles in .osi-cards-container
|
|
6
|
+
* to prevent CSS from affecting the host application.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* 1. Import this file instead of _styles.scss
|
|
10
|
+
* 2. Wrap your OSI Cards components in <div class="osi-cards-container">
|
|
11
|
+
*
|
|
12
|
+
* Example:
|
|
13
|
+
* <div class="osi-cards-container">
|
|
14
|
+
* <app-ai-card-renderer [cardConfig]="card"></app-ai-card-renderer>
|
|
15
|
+
* </div>
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
.osi-cards-container {
|
|
19
|
+
// Core variables and mixins (must come first)
|
|
20
|
+
@import 'core/variables-scoped';
|
|
21
|
+
@import 'core/mixins';
|
|
22
|
+
@import 'core/surface-layers';
|
|
23
|
+
@import 'core/global-scoped';
|
|
24
|
+
@import 'core/utilities';
|
|
25
|
+
@import 'core/animations';
|
|
26
|
+
|
|
27
|
+
// Layout styles
|
|
28
|
+
@import 'layout/tilt';
|
|
29
|
+
@import 'layout/masonry';
|
|
30
|
+
|
|
31
|
+
// Component styles
|
|
32
|
+
@import 'components/cards/ai-card';
|
|
33
|
+
@import 'components/sections/design-system'; /* Master design system - must import first */
|
|
34
|
+
@import 'components/sections/sections-base';
|
|
35
|
+
@import 'components/sections/section-types';
|
|
36
|
+
@import 'components/sections/section-shell';
|
|
37
|
+
@import 'components/sections/overview';
|
|
38
|
+
@import 'components/sections/analytics';
|
|
39
|
+
@import 'components/sections/news';
|
|
40
|
+
@import 'components/sections/social-media';
|
|
41
|
+
@import 'components/sections/info';
|
|
42
|
+
@import 'components/sections/map';
|
|
43
|
+
@import 'components/sections/list';
|
|
44
|
+
@import 'components/sections/contact';
|
|
45
|
+
@import 'components/sections/network';
|
|
46
|
+
@import 'components/sections/product';
|
|
47
|
+
@import 'components/sections/chart';
|
|
48
|
+
@import 'components/sections/event';
|
|
49
|
+
@import 'components/sections/financials';
|
|
50
|
+
@import 'components/sections/solutions';
|
|
51
|
+
@import 'components/sections/quotation';
|
|
52
|
+
@import 'components/sections/text-reference';
|
|
53
|
+
@import 'components/sections/brand-colors';
|
|
54
|
+
@import 'components/sections/fallback';
|
|
55
|
+
@import 'components/sections/unified-cards'; /* Must be last to override all section-specific styles */
|
|
56
|
+
@import 'components/sections/global-enforcement'; /* GLOBAL ENFORCEMENT - MUST BE ABSOLUTELY LAST to enforce all settings */
|
|
57
|
+
|
|
58
|
+
/* FINAL OVERRIDE - ABSOLUTELY NO BORDERS OR BORDER-LIKE EFFECTS */
|
|
59
|
+
h1.ai-card-title,
|
|
60
|
+
.ai-card-title,
|
|
61
|
+
article.ai-card-surface h1,
|
|
62
|
+
.ai-card-surface > h1,
|
|
63
|
+
.ai-card-surface .ai-card-title {
|
|
64
|
+
border: 0 !important;
|
|
65
|
+
border-width: 0 !important;
|
|
66
|
+
border-style: none !important;
|
|
67
|
+
border-top-width: 0 !important;
|
|
68
|
+
border-right-width: 0 !important;
|
|
69
|
+
border-bottom-width: 0 !important;
|
|
70
|
+
border-left-width: 0 !important;
|
|
71
|
+
box-shadow: none !important;
|
|
72
|
+
outline: 0 !important;
|
|
73
|
+
outline-width: 0 !important;
|
|
74
|
+
text-decoration: none !important;
|
|
75
|
+
background-image: none !important;
|
|
76
|
+
|
|
77
|
+
&::before,
|
|
78
|
+
&::after {
|
|
79
|
+
display: none !important;
|
|
80
|
+
content: none !important;
|
|
81
|
+
border: 0 !important;
|
|
82
|
+
box-shadow: none !important;
|
|
83
|
+
background: none !important;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Remove all styling from parent container */
|
|
88
|
+
.relative.h-full,
|
|
89
|
+
div[class*="relative"][class*="h-full"] {
|
|
90
|
+
position: static !important;
|
|
91
|
+
height: auto !important;
|
|
92
|
+
padding: 0 !important;
|
|
93
|
+
margin: 0 !important;
|
|
94
|
+
border: 0 !important;
|
|
95
|
+
background: none !important;
|
|
96
|
+
box-shadow: none !important;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Also ensure article itself has no borders */
|
|
100
|
+
article.ai-card-surface,
|
|
101
|
+
.ai-card-surface {
|
|
102
|
+
border: 0 !important;
|
|
103
|
+
border-width: 0 !important;
|
|
104
|
+
outline: 0 !important;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/* ===================================================================
|
|
2
|
+
SCOPED GLOBAL STYLES - Encapsulated for OSI Cards Container
|
|
3
|
+
=================================================================== */
|
|
4
|
+
/* These styles only apply within .osi-cards-container to prevent CSS leakage */
|
|
5
|
+
|
|
6
|
+
.osi-cards-container,
|
|
7
|
+
.osi-cards-container * {
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.osi-cards-container {
|
|
12
|
+
/* Scoped reset - only affects elements within container */
|
|
13
|
+
* {
|
|
14
|
+
margin: 0;
|
|
15
|
+
padding: 0;
|
|
16
|
+
outline-color: var(--ring, var(--osi-ring, #FF7900));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Scoped HTML element styles */
|
|
20
|
+
html {
|
|
21
|
+
font-size: var(--font-size, var(--osi-font-size, 16px));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Scoped body styles - only if body has the container class */
|
|
25
|
+
&.body,
|
|
26
|
+
body & {
|
|
27
|
+
font-family: Helvetica, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
|
|
28
|
+
background-color: var(--background, var(--osi-background, transparent));
|
|
29
|
+
color: var(--foreground, var(--osi-foreground, inherit));
|
|
30
|
+
line-height: 1.5;
|
|
31
|
+
|
|
32
|
+
/* Improved text rendering for sharpness */
|
|
33
|
+
-webkit-font-smoothing: antialiased;
|
|
34
|
+
-moz-osx-font-smoothing: grayscale;
|
|
35
|
+
text-rendering: optimizeLegibility;
|
|
36
|
+
font-feature-settings: 'kern' 1;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Scoped button styles */
|
|
40
|
+
button {
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
font-family: inherit;
|
|
43
|
+
|
|
44
|
+
// Enhanced focus indicators for accessibility
|
|
45
|
+
&:focus-visible {
|
|
46
|
+
outline: 2px solid var(--color-brand, var(--osi-color-brand, #FF7900));
|
|
47
|
+
outline-offset: 2px;
|
|
48
|
+
border-radius: 4px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&:focus:not(:focus-visible) {
|
|
52
|
+
outline: none;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Scoped focus styles for all interactive elements
|
|
57
|
+
a,
|
|
58
|
+
button,
|
|
59
|
+
input,
|
|
60
|
+
select,
|
|
61
|
+
textarea,
|
|
62
|
+
[tabindex]:not([tabindex="-1"]) {
|
|
63
|
+
&:focus-visible {
|
|
64
|
+
outline: 2px solid var(--color-brand, var(--osi-color-brand, #FF7900));
|
|
65
|
+
outline-offset: 2px;
|
|
66
|
+
border-radius: 2px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&:focus:not(:focus-visible) {
|
|
70
|
+
outline: none;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Scoped heading styles */
|
|
75
|
+
h1,
|
|
76
|
+
h2,
|
|
77
|
+
h3,
|
|
78
|
+
h4,
|
|
79
|
+
h5,
|
|
80
|
+
h6 {
|
|
81
|
+
margin: 0;
|
|
82
|
+
line-height: 1.2;
|
|
83
|
+
font-family: Helvetica, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
h1 {
|
|
87
|
+
font-size: var(--text-2xl, var(--osi-text-2xl, 1.375rem));
|
|
88
|
+
font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
h2 {
|
|
92
|
+
font-size: var(--text-xl, var(--osi-text-xl, 1.125rem));
|
|
93
|
+
font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
h3 {
|
|
97
|
+
font-size: var(--text-lg, var(--osi-text-lg, 1rem));
|
|
98
|
+
font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
h4 {
|
|
102
|
+
font-size: var(--text-base, var(--osi-text-base, 0.875rem));
|
|
103
|
+
font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Scoped paragraph styles */
|
|
107
|
+
p {
|
|
108
|
+
font-size: var(--text-base, var(--osi-text-base, 0.875rem));
|
|
109
|
+
font-weight: var(--font-weight-normal, var(--osi-font-weight-normal, 400));
|
|
110
|
+
line-height: 1.5;
|
|
111
|
+
margin: 0;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
/* ===================================================================
|
|
2
|
+
SCOPED CSS VARIABLES - Encapsulated for OSI Cards Container
|
|
3
|
+
=================================================================== */
|
|
4
|
+
/* Variables are scoped to .osi-cards-container to prevent CSS leakage */
|
|
5
|
+
/* Essential variables are also available on :root with --osi- prefix for fallback */
|
|
6
|
+
|
|
7
|
+
/* Import theme colors - these will be scoped */
|
|
8
|
+
@import 'variables/colors-scoped';
|
|
9
|
+
|
|
10
|
+
/* Scoped variables within container */
|
|
11
|
+
.osi-cards-container {
|
|
12
|
+
/* ===== BASE DESIGN TOKENS ===== */
|
|
13
|
+
--font-size-base: 14px;
|
|
14
|
+
--radius-base: 0.625rem;
|
|
15
|
+
--spacing-base: 0.25rem;
|
|
16
|
+
|
|
17
|
+
/* Base text scale - for reference and general use */
|
|
18
|
+
--text-xs: 0.75rem;
|
|
19
|
+
--text-sm: 0.875rem;
|
|
20
|
+
--text-base: 1rem;
|
|
21
|
+
--text-lg: 1.125rem;
|
|
22
|
+
--text-xl: 1.25rem;
|
|
23
|
+
--text-2xl: 1.5rem;
|
|
24
|
+
--text-3xl: 1.875rem;
|
|
25
|
+
--text-4xl: 2.25rem;
|
|
26
|
+
--text-5xl: 3rem;
|
|
27
|
+
--text-7xl: 4.5rem;
|
|
28
|
+
|
|
29
|
+
/* Base radius scale */
|
|
30
|
+
--radius-xs: 0.25rem;
|
|
31
|
+
--radius-sm: 0.375rem;
|
|
32
|
+
--radius-md: 0.5rem;
|
|
33
|
+
--radius-lg: 0.75rem;
|
|
34
|
+
--radius-xl: 1rem;
|
|
35
|
+
--radius-2xl: 1.5rem;
|
|
36
|
+
--radius-full: 9999px;
|
|
37
|
+
|
|
38
|
+
/* ===== UNIFIED CARD SYSTEM ===== */
|
|
39
|
+
--card-main-padding: 16px;
|
|
40
|
+
--card-padding-vertical: 12px;
|
|
41
|
+
--card-padding-horizontal: 16px;
|
|
42
|
+
--card-padding: 16px;
|
|
43
|
+
--card-padding-large: 20px;
|
|
44
|
+
--section-padding: 16px;
|
|
45
|
+
--card-min-height: auto;
|
|
46
|
+
--card-gap: clamp(6px, 0.6vw, 10px);
|
|
47
|
+
--card-gap-large: clamp(10px, 0.8vw, 14px);
|
|
48
|
+
|
|
49
|
+
/* Nested Element Spacing */
|
|
50
|
+
--card-nested-gap: clamp(3px, 0.4vw, 6px);
|
|
51
|
+
--section-header-gap: clamp(3px, 0.4vw, 6px);
|
|
52
|
+
--section-header-padding-bottom: clamp(3px, 0.4vw, 6px);
|
|
53
|
+
|
|
54
|
+
/* Card Backgrounds */
|
|
55
|
+
--card-background: var(--ai-card-background, rgba(255, 121, 0, 0.025));
|
|
56
|
+
--card-background-hover: var(--ai-card-background-hover, rgba(255, 121, 0, 0.055));
|
|
57
|
+
|
|
58
|
+
/* ===== 5 ELEMENT TYPE SYSTEM ===== */
|
|
59
|
+
/* 1. HERO CARDS */
|
|
60
|
+
--hero-card-border: 1px solid rgba(146, 153, 158, 0.15);
|
|
61
|
+
--hero-card-border-hover: rgba(255, 121, 0, 0.4);
|
|
62
|
+
--hero-card-background: var(--card);
|
|
63
|
+
--hero-card-background-hover: var(--card);
|
|
64
|
+
--hero-card-border-radius: 10px;
|
|
65
|
+
--hero-card-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
66
|
+
--hero-card-box-shadow-hover: 0 6px 16px rgba(0, 0, 0, 0.12);
|
|
67
|
+
--hero-card-hover-transform: translateY(-2px);
|
|
68
|
+
|
|
69
|
+
/* 2. BUTTONS & SELECTORS */
|
|
70
|
+
--button-border: 1px solid transparent;
|
|
71
|
+
--button-border-hover: 1px solid rgba(255, 121, 0, 0.4);
|
|
72
|
+
--button-background: var(--primary);
|
|
73
|
+
--button-background-hover: color-mix(in srgb, var(--primary) 85%, transparent);
|
|
74
|
+
--button-border-radius: 8px;
|
|
75
|
+
--button-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
|
|
76
|
+
--button-box-shadow-hover: 0 4px 8px rgba(0, 0, 0, 0.12);
|
|
77
|
+
--button-hover-transform: translateY(-1px);
|
|
78
|
+
|
|
79
|
+
/* 3. CARDS (.ai-card-surface) */
|
|
80
|
+
--ai-card-border: var(--theme-ai-card-border, none);
|
|
81
|
+
--ai-card-border-hover: var(--theme-ai-card-border-hover, var(--ai-card-border));
|
|
82
|
+
--ai-card-background: var(--theme-ai-card-background, var(--card-surface, var(--card-section-bg)));
|
|
83
|
+
--ai-card-background-hover: var(--theme-ai-card-background-hover, var(--card-surface-hover, var(--card-section-bg)));
|
|
84
|
+
--ai-card-border-radius: 12px;
|
|
85
|
+
--ai-card-box-shadow: var(--theme-ai-card-box-shadow, 0 2px 8px rgba(0, 0, 0, 0.08));
|
|
86
|
+
--ai-card-box-shadow-hover: var(--theme-ai-card-box-shadow-hover, 0 4px 16px rgba(0, 0, 0, 0.12));
|
|
87
|
+
--ai-card-hover-transform: none;
|
|
88
|
+
--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);
|
|
89
|
+
--ai-card-transition: var(--theme-ai-card-transition, var(--ai-card-transition-default));
|
|
90
|
+
|
|
91
|
+
/* 4. SECTIONS (.masonry-item) */
|
|
92
|
+
--section-border: var(--theme-section-border, 1px solid rgba(255, 255, 255, 0.04));
|
|
93
|
+
--section-border-hover: var(--theme-section-border-hover, 1px solid rgba(255, 121, 0, 0.15));
|
|
94
|
+
--section-border-radius: var(--card-border-radius);
|
|
95
|
+
--section-box-shadow-default: 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(255, 255, 255, 0.02);
|
|
96
|
+
--section-box-shadow-hover-default: 0 4px 12px rgba(0, 0, 0, 0.18), 0 0 0 1px rgba(255, 121, 0, 0.08);
|
|
97
|
+
--section-box-shadow: var(--theme-section-box-shadow, var(--section-box-shadow-default));
|
|
98
|
+
--section-box-shadow-hover: var(--theme-section-box-shadow-hover, var(--section-box-shadow-hover-default));
|
|
99
|
+
--section-hover-transform: none;
|
|
100
|
+
--section-transition: var(--theme-section-transition, none);
|
|
101
|
+
|
|
102
|
+
/* 5. SECTION ITEMS */
|
|
103
|
+
--section-item-border: var(--theme-section-item-border, 1px solid rgba(255, 255, 255, 0.03));
|
|
104
|
+
--section-item-border-hover: var(--theme-section-item-border-hover, 1px solid rgba(255, 121, 0, 0.12));
|
|
105
|
+
--section-item-background: var(--theme-section-item-background, var(--card-section-bg));
|
|
106
|
+
--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)));
|
|
107
|
+
--section-item-border-radius: var(--section-card-border-radius);
|
|
108
|
+
--section-item-box-shadow: var(--theme-section-item-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.08));
|
|
109
|
+
--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);
|
|
110
|
+
--section-item-box-shadow-hover: var(--theme-section-item-box-shadow-hover, var(--section-item-box-shadow-hover-default));
|
|
111
|
+
--section-item-hover-transform: var(--theme-section-item-hover-transform, none);
|
|
112
|
+
--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);
|
|
113
|
+
--section-item-transition: var(--theme-section-item-transition, var(--section-item-transition-default));
|
|
114
|
+
|
|
115
|
+
/* Legacy card variables */
|
|
116
|
+
--card-border: var(--theme-card-border, 1px solid rgba(146, 153, 158, 0.15));
|
|
117
|
+
--card-border-hover: var(--theme-card-border-hover, rgba(255, 121, 0, 0.4));
|
|
118
|
+
--card-background: var(--theme-card-background, var(--ai-card-background));
|
|
119
|
+
--card-background-hover: var(--theme-card-background-hover, var(--ai-card-background-hover));
|
|
120
|
+
--card-box-shadow: var(--theme-card-box-shadow, 0 1px 3px rgba(0, 0, 0, 0.08));
|
|
121
|
+
--card-box-shadow-hover: var(--theme-card-box-shadow-hover, 0 4px 12px rgba(0, 0, 0, 0.12));
|
|
122
|
+
|
|
123
|
+
/* Border radius */
|
|
124
|
+
--card-border-radius: 12px;
|
|
125
|
+
--card-border-radius-large: 16px;
|
|
126
|
+
--section-card-gap: 12px;
|
|
127
|
+
--section-card-border-radius: 10px;
|
|
128
|
+
--section-grid-min-width: 200px;
|
|
129
|
+
|
|
130
|
+
/* Card Hover State Aliases */
|
|
131
|
+
--card-hover-border: var(--theme-card-hover-border, var(--card-border-hover));
|
|
132
|
+
--card-hover-background: var(--theme-card-hover-background, var(--card-background-hover));
|
|
133
|
+
--card-hover-shadow: var(--theme-card-hover-shadow, var(--card-box-shadow-hover));
|
|
134
|
+
|
|
135
|
+
/* Legacy transform effects */
|
|
136
|
+
--card-hover-transform: var(--theme-card-hover-transform, none);
|
|
137
|
+
--card-hover-transform-scale: var(--theme-card-hover-transform-scale, none);
|
|
138
|
+
--card-hover-transform-slide: var(--theme-card-hover-transform-slide, none);
|
|
139
|
+
--card-box-shadow-hover-lift: var(--theme-card-box-shadow-hover-lift, var(--card-box-shadow-hover));
|
|
140
|
+
|
|
141
|
+
/* ===== UNIFIED TYPOGRAPHY SYSTEM ===== */
|
|
142
|
+
--section-title-font-size: clamp(1.3rem, 1.15rem + 0.4vw, 1.6rem);
|
|
143
|
+
--section-title-font-weight: 700;
|
|
144
|
+
--section-title-letter-spacing: -0.02em;
|
|
145
|
+
--section-title-line-height: 1.3;
|
|
146
|
+
--section-title-text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
|
|
147
|
+
--font-size-section-header: var(--section-title-font-size);
|
|
148
|
+
|
|
149
|
+
--card-title-font-size: clamp(1.05rem, 0.95rem + 0.3vw, 1.2rem);
|
|
150
|
+
--card-title-font-weight: 700;
|
|
151
|
+
--card-title-letter-spacing: -0.01em;
|
|
152
|
+
--card-title-line-height: 1.4;
|
|
153
|
+
--card-title-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
|
|
154
|
+
|
|
155
|
+
--card-subtitle-font-size: clamp(0.75rem, 0.67rem + 0.16vw, 0.9rem);
|
|
156
|
+
--card-subtitle-font-weight: 600;
|
|
157
|
+
--card-subtitle-letter-spacing: 0.015em;
|
|
158
|
+
--card-subtitle-line-height: 1.3;
|
|
159
|
+
|
|
160
|
+
--card-label-font-size: clamp(0.58rem, 0.52rem + 0.16vw, 0.72rem);
|
|
161
|
+
--card-label-font-weight: 800;
|
|
162
|
+
--card-label-letter-spacing: 0.065em;
|
|
163
|
+
--card-label-line-height: 1.25;
|
|
164
|
+
--card-label-text-transform: uppercase;
|
|
165
|
+
--card-label-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
|
166
|
+
|
|
167
|
+
--card-value-font-size: clamp(0.93rem, 0.85rem + 0.3vw, 1.08rem);
|
|
168
|
+
--card-value-font-size-large: clamp(1.35rem, 1.2rem + 0.5vw, 1.65rem);
|
|
169
|
+
--card-value-font-size-xl: clamp(1.8rem, 1.6rem + 0.6vw, 2.1rem);
|
|
170
|
+
--card-value-font-weight: 700;
|
|
171
|
+
--card-value-letter-spacing: -0.015em;
|
|
172
|
+
--card-value-line-height: 1.35;
|
|
173
|
+
--card-value-text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
174
|
+
|
|
175
|
+
--card-meta-font-size: clamp(0.68rem, 0.6rem + 0.16vw, 0.84rem);
|
|
176
|
+
--card-meta-font-weight: 500;
|
|
177
|
+
--card-meta-line-height: 1.3;
|
|
178
|
+
|
|
179
|
+
--card-text-small-font-size: clamp(0.48rem, 0.42rem + 0.13vw, 0.58rem);
|
|
180
|
+
|
|
181
|
+
/* Card Colors */
|
|
182
|
+
--card-text-primary: var(--foreground);
|
|
183
|
+
--card-text-secondary: var(--muted-foreground);
|
|
184
|
+
--card-text-muted: var(--muted-foreground);
|
|
185
|
+
--card-text-hover: var(--primary);
|
|
186
|
+
--card-text-label: var(--muted-foreground);
|
|
187
|
+
--card-meta-color: var(--muted-foreground);
|
|
188
|
+
|
|
189
|
+
/* Card Transitions */
|
|
190
|
+
--card-transition: all 0.28s cubic-bezier(0.4, 0, 0.2, 1);
|
|
191
|
+
--card-transition-fast: all 0.22s ease;
|
|
192
|
+
|
|
193
|
+
/* Entrance animations */
|
|
194
|
+
--ai-card-entrance-animation: fadeInUpSoft var(--duration-moderate) var(--ease-out-smooth) 10ms 1 normal both;
|
|
195
|
+
--section-entrance-animation: fadeInSoft var(--duration-moderate) var(--ease-out-smooth) 20ms 1 normal both;
|
|
196
|
+
--section-item-entrance-animation: fadeInScaleSoft var(--duration-normal) var(--ease-out-smooth) 30ms 1 normal both;
|
|
197
|
+
|
|
198
|
+
/* Legacy font aliases */
|
|
199
|
+
--font-section-label: var(--card-label-font-size);
|
|
200
|
+
--font-section-value: var(--card-value-font-size);
|
|
201
|
+
--font-section-value-lg: var(--card-title-font-size);
|
|
202
|
+
--font-section-value-xl: var(--card-value-font-size-large);
|
|
203
|
+
--font-section-value-2xl: var(--card-value-font-size-large);
|
|
204
|
+
--font-section-description: var(--card-subtitle-font-size);
|
|
205
|
+
--font-section-role: var(--card-subtitle-font-size);
|
|
206
|
+
--font-section-tag: var(--card-label-font-size);
|
|
207
|
+
--font-section-tag-sm: var(--card-label-font-size);
|
|
208
|
+
--font-section-tag-lg: var(--card-label-font-size);
|
|
209
|
+
--font-section-meta: var(--card-meta-font-size);
|
|
210
|
+
--font-section-name: var(--card-title-font-size);
|
|
211
|
+
|
|
212
|
+
/* Chart-specific aliases */
|
|
213
|
+
--font-chart-label: var(--card-label-font-size);
|
|
214
|
+
--font-chart-value: var(--card-value-font-size);
|
|
215
|
+
--font-chart-meta: var(--card-meta-font-size);
|
|
216
|
+
--font-chart-value-mobile: var(--card-value-font-size);
|
|
217
|
+
|
|
218
|
+
/* Contact-specific aliases */
|
|
219
|
+
--font-contact-name: var(--card-title-font-size);
|
|
220
|
+
--font-contact-role: var(--card-subtitle-font-size);
|
|
221
|
+
--font-contact-meta: var(--card-meta-font-size);
|
|
222
|
+
|
|
223
|
+
/* List-specific aliases */
|
|
224
|
+
--font-list-title: var(--card-title-font-size);
|
|
225
|
+
--font-list-subtitle: var(--card-subtitle-font-size);
|
|
226
|
+
--font-list-meta: var(--card-meta-font-size);
|
|
227
|
+
|
|
228
|
+
/* Overview-specific aliases */
|
|
229
|
+
--font-overview-label: var(--card-label-font-size);
|
|
230
|
+
--font-overview-value: var(--card-value-font-size);
|
|
231
|
+
|
|
232
|
+
/* Mobile label aliases */
|
|
233
|
+
--font-section-label-mobile: var(--card-label-font-size);
|
|
234
|
+
--font-section-description-mobile: var(--card-subtitle-font-size);
|
|
235
|
+
|
|
236
|
+
/* ===== UNIFIED SPACING SYSTEM ===== */
|
|
237
|
+
--spacing-xs: clamp(2px, 0.4vw, 6px);
|
|
238
|
+
--spacing-sm: clamp(4px, 0.6vw, 8px);
|
|
239
|
+
--spacing-md: clamp(6px, 0.8vw, 12px);
|
|
240
|
+
--spacing-lg: clamp(8px, 1vw, 14px);
|
|
241
|
+
--spacing-xl: clamp(10px, 1.2vw, 18px);
|
|
242
|
+
--spacing-2xl: clamp(12px, 1.4vw, 20px);
|
|
243
|
+
--spacing-3xl: clamp(14px, 1.6vw, 22px);
|
|
244
|
+
--spacing-4xl: clamp(16px, 1.8vw, 24px);
|
|
245
|
+
--spacing-5xl: clamp(18px, 2vw, 28px);
|
|
246
|
+
--spacing-6xl: clamp(20px, 2.2vw, 32px);
|
|
247
|
+
--spacing-7xl: clamp(22px, 2.4vw, 36px);
|
|
248
|
+
--spacing-8xl: clamp(24px, 2.6vw, 40px);
|
|
249
|
+
--spacing-9xl: clamp(26px, 2.8vw, 44px);
|
|
250
|
+
--spacing-10xl: clamp(28px, 3vw, 48px);
|
|
251
|
+
|
|
252
|
+
/* Grid Gaps */
|
|
253
|
+
--grid-gap-xs: 6px;
|
|
254
|
+
--grid-gap-sm: 8px;
|
|
255
|
+
--grid-gap-md: 12px;
|
|
256
|
+
--grid-gap-lg: 16px;
|
|
257
|
+
--grid-gap-xl: 20px;
|
|
258
|
+
--grid-gap-2xl: 24px;
|
|
259
|
+
--grid-gap-3xl: 32px;
|
|
260
|
+
|
|
261
|
+
--section-grid-gap: 8px;
|
|
262
|
+
--section-grid-gap-mobile: 9px;
|
|
263
|
+
--section-stack-gap: 12px;
|
|
264
|
+
--section-stack-gap-mobile: 9px;
|
|
265
|
+
|
|
266
|
+
--grid-gap-xs-mobile: 4px;
|
|
267
|
+
--grid-gap-sm-mobile: 4px;
|
|
268
|
+
--grid-gap-md-mobile: 4px;
|
|
269
|
+
|
|
270
|
+
/* Section Item Padding */
|
|
271
|
+
--section-item-padding: 8px;
|
|
272
|
+
--section-item-padding-mobile: 6px;
|
|
273
|
+
--section-item-gap: 6px;
|
|
274
|
+
--section-item-gap-mobile: 4px;
|
|
275
|
+
|
|
276
|
+
/* Metric Card Padding */
|
|
277
|
+
--metric-item-padding: 10px 12px;
|
|
278
|
+
--metric-item-gap: 6px;
|
|
279
|
+
--metric-item-gap-mobile: 4px;
|
|
280
|
+
|
|
281
|
+
/* List/Contact Item Padding */
|
|
282
|
+
--list-item-padding: 10px 12px;
|
|
283
|
+
--list-item-gap: 6px;
|
|
284
|
+
--list-item-gap-mobile: 4px;
|
|
285
|
+
|
|
286
|
+
/* Internal Card Element Gaps */
|
|
287
|
+
--card-element-gap-xs: 2px;
|
|
288
|
+
--card-element-gap-sm: 3px;
|
|
289
|
+
--card-element-gap-md: 4px;
|
|
290
|
+
--card-element-gap-lg: 6px;
|
|
291
|
+
--card-element-gap-xl: 8px;
|
|
292
|
+
--card-element-gap-2xl: 10px;
|
|
293
|
+
|
|
294
|
+
/* Tag/Badge Padding */
|
|
295
|
+
--tag-padding-x: 6px;
|
|
296
|
+
--tag-padding-y: 3px;
|
|
297
|
+
--tag-padding-x-sm: 4px;
|
|
298
|
+
--tag-padding-y-sm: 2px;
|
|
299
|
+
--tag-padding-x-lg: 7px;
|
|
300
|
+
--tag-padding-y-lg: 3px;
|
|
301
|
+
|
|
302
|
+
/* Border Accents */
|
|
303
|
+
--accent-border-width: 3px;
|
|
304
|
+
--accent-border-width-sm: 2px;
|
|
305
|
+
|
|
306
|
+
/* Icon Sizes */
|
|
307
|
+
--icon-size-xs: 10px;
|
|
308
|
+
--icon-size-sm: 13px;
|
|
309
|
+
--icon-size-md: 16px;
|
|
310
|
+
--icon-size-lg: 22px;
|
|
311
|
+
--icon-size-xl: 36px;
|
|
312
|
+
--icon-size-section: 18px;
|
|
313
|
+
|
|
314
|
+
/* Avatar Sizes */
|
|
315
|
+
--avatar-size-sm: 32px;
|
|
316
|
+
--avatar-size-md: 36px;
|
|
317
|
+
|
|
318
|
+
/* Progress Bar */
|
|
319
|
+
--progress-height: 2px;
|
|
320
|
+
--progress-margin: 4px 0;
|
|
321
|
+
|
|
322
|
+
/* ===== ANIMATION SYSTEM ===== */
|
|
323
|
+
--duration-instant: 40ms;
|
|
324
|
+
--duration-fast: 80ms;
|
|
325
|
+
--duration-normal: 160ms;
|
|
326
|
+
--duration-moderate: 220ms;
|
|
327
|
+
--duration-slow: 300ms;
|
|
328
|
+
--duration-slower: 380ms;
|
|
329
|
+
--duration-slowest: 460ms;
|
|
330
|
+
|
|
331
|
+
/* Motion Distances & Scale */
|
|
332
|
+
--motion-distance-xl: 12px;
|
|
333
|
+
--motion-distance-lg: 10px;
|
|
334
|
+
--motion-distance-md: 6px;
|
|
335
|
+
--motion-distance-sm: 4px;
|
|
336
|
+
--motion-distance-xs: 2px;
|
|
337
|
+
--motion-scale-soft-start: 0.992;
|
|
338
|
+
--motion-scale-soft-end: 1;
|
|
339
|
+
--motion-scale-pop: 1.015;
|
|
340
|
+
--motion-scale-pulse-min: 0.985;
|
|
341
|
+
--motion-scale-pulse-max: 1.015;
|
|
342
|
+
|
|
343
|
+
/* Animation Easing Functions */
|
|
344
|
+
--ease-out-smooth: cubic-bezier(0.23, 1, 0.32, 1);
|
|
345
|
+
--ease-in-out-smooth: cubic-bezier(0.4, 0, 0.2, 1);
|
|
346
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
347
|
+
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
|
348
|
+
--ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
|
|
349
|
+
--ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
|
|
350
|
+
|
|
351
|
+
/* Tilt & Interaction Timings */
|
|
352
|
+
--tilt-duration: 80ms;
|
|
353
|
+
--tilt-reset-duration: 300ms;
|
|
354
|
+
--shadow-duration: 100ms;
|
|
355
|
+
--glow-duration: 120ms;
|
|
356
|
+
--reflection-duration: 120ms;
|
|
357
|
+
|
|
358
|
+
/* Card Interaction Timings */
|
|
359
|
+
--card-hover-duration: 200ms;
|
|
360
|
+
--card-hover-delay: 0ms;
|
|
361
|
+
|
|
362
|
+
/* Animation Delays */
|
|
363
|
+
--stagger-delay-base: 25ms;
|
|
364
|
+
--stagger-delay-fast: 15ms;
|
|
365
|
+
--stagger-delay-slow: 45ms;
|
|
366
|
+
|
|
367
|
+
/* Performance Hints */
|
|
368
|
+
--animation-fill-mode: both;
|
|
369
|
+
--animation-play-state: running;
|
|
370
|
+
|
|
371
|
+
/* Legacy variables */
|
|
372
|
+
--master-color: var(--color-brand);
|
|
373
|
+
--master-color-dark: #CC5F00;
|
|
374
|
+
--master-color-light: #FF9933;
|
|
375
|
+
--master-color-pale: #FFE6CC;
|
|
376
|
+
--bg-color: var(--background);
|
|
377
|
+
--card-bg: var(--card);
|
|
378
|
+
--section-bg: var(--muted);
|
|
379
|
+
--border-color: var(--border);
|
|
380
|
+
--text-color: var(--foreground);
|
|
381
|
+
--text-muted: var(--muted-foreground);
|
|
382
|
+
--primary-color: var(--primary);
|
|
383
|
+
--primary-contrast: var(--primary-foreground);
|
|
384
|
+
--secondary-color: var(--secondary);
|
|
385
|
+
--secondary-contrast: var(--secondary-foreground);
|
|
386
|
+
--hover-bg: rgba(255, 121, 0, 0.1);
|
|
387
|
+
--placeholder-bg: rgba(255, 255, 255, 0.05);
|
|
388
|
+
--font-weight-medium: 500;
|
|
389
|
+
--font-weight-normal: 400;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/* Reduced motion support */
|
|
393
|
+
@media (prefers-reduced-motion: reduce) {
|
|
394
|
+
.osi-cards-container {
|
|
395
|
+
--duration-instant: 1ms;
|
|
396
|
+
--duration-fast: 1ms;
|
|
397
|
+
--duration-normal: 1ms;
|
|
398
|
+
--duration-moderate: 1ms;
|
|
399
|
+
--duration-slow: 1ms;
|
|
400
|
+
--duration-slower: 1ms;
|
|
401
|
+
--duration-slowest: 1ms;
|
|
402
|
+
|
|
403
|
+
--tilt-duration: 1ms;
|
|
404
|
+
--tilt-reset-duration: 1ms;
|
|
405
|
+
--shadow-duration: 1ms;
|
|
406
|
+
--glow-duration: 1ms;
|
|
407
|
+
--reflection-duration: 1ms;
|
|
408
|
+
|
|
409
|
+
--card-hover-duration: 1ms;
|
|
410
|
+
|
|
411
|
+
--stagger-delay-base: 0ms;
|
|
412
|
+
--stagger-delay-fast: 0ms;
|
|
413
|
+
--stagger-delay-slow: 0ms;
|
|
414
|
+
|
|
415
|
+
--ai-card-entrance-animation: none;
|
|
416
|
+
--section-entrance-animation: none;
|
|
417
|
+
--section-item-entrance-animation: none;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.osi-cards-container *,
|
|
421
|
+
.osi-cards-container *::before,
|
|
422
|
+
.osi-cards-container *::after {
|
|
423
|
+
animation-duration: 1ms !important;
|
|
424
|
+
animation-iteration-count: 1 !important;
|
|
425
|
+
transition-duration: 1ms !important;
|
|
426
|
+
scroll-behavior: auto !important;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/* ===================================================================
|
|
2
|
+
SCOPED COLOR VARIABLES - Encapsulated for OSI Cards Container
|
|
3
|
+
=================================================================== */
|
|
4
|
+
/* Colors are scoped to .osi-cards-container to prevent CSS leakage */
|
|
5
|
+
|
|
6
|
+
.osi-cards-container {
|
|
7
|
+
/* === BRAND & CORE COLORS === */
|
|
8
|
+
--color-white: #ffffff;
|
|
9
|
+
--color-black: #000000;
|
|
10
|
+
--color-brand: #ff7900;
|
|
11
|
+
--color-brand-dark: #CC5F00;
|
|
12
|
+
--color-brand-light: #FF9933;
|
|
13
|
+
|
|
14
|
+
/* Grayscale ramp */
|
|
15
|
+
--color-gray-50: #ffffff;
|
|
16
|
+
--color-gray-100: #fcfcfc;
|
|
17
|
+
--color-gray-150: #f7f7f7;
|
|
18
|
+
--color-gray-200: #f0f0f1;
|
|
19
|
+
--color-gray-300: #e9e9e9;
|
|
20
|
+
--color-gray-400: #92999e;
|
|
21
|
+
--color-gray-500: #5a5f62;
|
|
22
|
+
--color-gray-600: #343541;
|
|
23
|
+
--color-gray-700: #2a2a2a;
|
|
24
|
+
--color-gray-800: #232323;
|
|
25
|
+
--color-gray-850: #171717;
|
|
26
|
+
--color-gray-900: #000000;
|
|
27
|
+
|
|
28
|
+
--background: #ffffff;
|
|
29
|
+
--surface-contrast-color: #000000;
|
|
30
|
+
|
|
31
|
+
/* Default surface tokens */
|
|
32
|
+
--theme-ai-card-border: 0.5px solid color-mix(in srgb, var(--color-brand) 49%, transparent);
|
|
33
|
+
--theme-ai-card-border-hover: 0.5px solid var(--color-brand);
|
|
34
|
+
--theme-ai-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
35
|
+
--theme-ai-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
36
|
+
--theme-ai-card-box-shadow: 0 0 18px rgba(255, 121, 0, 0.3);
|
|
37
|
+
--theme-ai-card-box-shadow-hover: 0 0 24px rgba(255, 121, 0, 0.45);
|
|
38
|
+
--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);
|
|
39
|
+
|
|
40
|
+
--theme-card-border: 1px solid rgba(0, 0, 0, 0.16);
|
|
41
|
+
--theme-card-border-hover: var(--color-brand);
|
|
42
|
+
--theme-card-hover-border: var(--color-brand);
|
|
43
|
+
--theme-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
44
|
+
--theme-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
45
|
+
--theme-card-box-shadow: 0 4px 14px rgba(15, 15, 20, 0.06);
|
|
46
|
+
--theme-card-box-shadow-hover: 0 10px 24px rgba(10, 10, 16, 0.1);
|
|
47
|
+
--theme-card-box-shadow-hover-lift: 0 14px 32px rgba(6, 6, 10, 0.12);
|
|
48
|
+
--theme-card-hover-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
49
|
+
--theme-card-hover-shadow: 0 14px 30px rgba(8, 8, 12, 0.12);
|
|
50
|
+
|
|
51
|
+
--theme-section-border: 1px solid rgba(0, 0, 0, 0.08);
|
|
52
|
+
--theme-section-border-hover: 1px solid rgba(0, 0, 0, 0.1);
|
|
53
|
+
--theme-section-box-shadow: 0 8px 22px rgba(0, 0, 0, 0.08);
|
|
54
|
+
--theme-section-box-shadow-hover: 0 18px 40px rgba(0, 0, 0, 0.12);
|
|
55
|
+
--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);
|
|
56
|
+
--section-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
57
|
+
--section-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
58
|
+
--section-surface: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
59
|
+
--section-surface-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
60
|
+
|
|
61
|
+
--theme-section-item-border: 1px solid rgba(0, 0, 0, 0.14);
|
|
62
|
+
--theme-section-item-border-hover: 1px solid rgba(0, 0, 0, 0.22);
|
|
63
|
+
--theme-section-item-background: var(--section-surface);
|
|
64
|
+
--theme-section-item-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
65
|
+
--theme-section-item-box-shadow: 0 3px 12px rgba(0, 0, 0, 0.07);
|
|
66
|
+
--theme-section-item-box-shadow-hover: 0 8px 20px rgba(0, 0, 0, 0.12);
|
|
67
|
+
--theme-section-item-hover-transform: none;
|
|
68
|
+
--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);
|
|
69
|
+
|
|
70
|
+
/* Default theme colors */
|
|
71
|
+
--foreground: #1c1c1f;
|
|
72
|
+
--muted: #f4f4f6;
|
|
73
|
+
--muted-foreground: #555861;
|
|
74
|
+
--card: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
75
|
+
--card-foreground: #1c1c1f;
|
|
76
|
+
--card-surface: var(--card);
|
|
77
|
+
--card-surface-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
78
|
+
--card-section-bg: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
79
|
+
--card-section-card-bg: color-mix(in srgb, var(--card-section-bg) 90%, var(--surface-contrast-color) 10%);
|
|
80
|
+
--popover: #ffffff;
|
|
81
|
+
--popover-foreground: #1a1a1a;
|
|
82
|
+
--primary: #FF7900;
|
|
83
|
+
--primary-foreground: #ffffff;
|
|
84
|
+
--secondary: #f5f5f5;
|
|
85
|
+
--secondary-foreground: #1a1a1a;
|
|
86
|
+
--accent: #FF7900;
|
|
87
|
+
--accent-foreground: #ffffff;
|
|
88
|
+
--destructive: #d4183d;
|
|
89
|
+
--destructive-foreground: #ffffff;
|
|
90
|
+
--border: rgba(200, 200, 200, 0.5);
|
|
91
|
+
--input: transparent;
|
|
92
|
+
--input-background: #f9f9f9;
|
|
93
|
+
--switch-background: #e5e5e5;
|
|
94
|
+
--ring: rgba(255, 121, 0, 0.4);
|
|
95
|
+
--chart-1: #FF7900;
|
|
96
|
+
--chart-2: #FF9933;
|
|
97
|
+
--chart-3: #CC5F00;
|
|
98
|
+
--chart-4: #FFE6CC;
|
|
99
|
+
--chart-5: #FF4500;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* Dark theme support via data attribute on container */
|
|
103
|
+
.osi-cards-container[data-theme='night'],
|
|
104
|
+
.osi-cards-container [data-theme='night'] {
|
|
105
|
+
--background: #0a0a0a;
|
|
106
|
+
--surface-contrast-color: #ffffff;
|
|
107
|
+
--foreground: #ffffff;
|
|
108
|
+
--muted: #242424;
|
|
109
|
+
--muted-foreground: #aaaaaa;
|
|
110
|
+
--card: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
111
|
+
--card-foreground: #ffffff;
|
|
112
|
+
--card-surface: var(--card);
|
|
113
|
+
--card-surface-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
114
|
+
--card-section-bg: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
115
|
+
--card-section-card-bg: color-mix(in srgb, var(--card-section-bg) 90%, var(--surface-contrast-color) 10%);
|
|
116
|
+
--theme-ai-card-border: 0.5px solid color-mix(in srgb, var(--color-brand) 49%, transparent);
|
|
117
|
+
--theme-ai-card-border-hover: 0.5px solid var(--color-brand);
|
|
118
|
+
--theme-ai-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
119
|
+
--theme-ai-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
120
|
+
--theme-ai-card-box-shadow: 0 0 18px rgba(255, 121, 0, 0.3);
|
|
121
|
+
--theme-ai-card-box-shadow-hover: 0 0 24px rgba(255, 121, 0, 0.45);
|
|
122
|
+
|
|
123
|
+
--theme-card-border: 1px solid rgba(0, 0, 0, 0.16);
|
|
124
|
+
--theme-card-border-hover: var(--color-brand);
|
|
125
|
+
--theme-card-hover-border: var(--color-brand);
|
|
126
|
+
--theme-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
127
|
+
--theme-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
128
|
+
--theme-card-box-shadow: 0 6px 22px rgba(0, 0, 0, 0.58);
|
|
129
|
+
--theme-card-box-shadow-hover: 0 12px 32px rgba(0, 0, 0, 0.68);
|
|
130
|
+
--theme-card-box-shadow-hover-lift: 0 18px 42px rgba(0, 0, 0, 0.72);
|
|
131
|
+
--theme-card-hover-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
132
|
+
--theme-card-hover-shadow: 0 20px 44px rgba(0, 0, 0, 0.76);
|
|
133
|
+
|
|
134
|
+
--section-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
135
|
+
--section-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
136
|
+
--section-surface: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
137
|
+
--section-surface-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
138
|
+
--popover: #111111;
|
|
139
|
+
--popover-foreground: #ffffff;
|
|
140
|
+
--primary: #FF7900;
|
|
141
|
+
--primary-foreground: #ffffff;
|
|
142
|
+
--secondary: #333333;
|
|
143
|
+
--secondary-foreground: #ffffff;
|
|
144
|
+
--accent: #FF7900;
|
|
145
|
+
--accent-foreground: #000000;
|
|
146
|
+
--destructive: #d4183d;
|
|
147
|
+
--destructive-foreground: #ffffff;
|
|
148
|
+
--border: rgba(200, 200, 200, 0.3);
|
|
149
|
+
--input: transparent;
|
|
150
|
+
--input-background: #222222;
|
|
151
|
+
--switch-background: #333333;
|
|
152
|
+
--ring: rgba(255, 121, 0, 0.6);
|
|
153
|
+
--chart-1: #FF7900;
|
|
154
|
+
--chart-2: #FF9933;
|
|
155
|
+
--chart-3: #CC5F00;
|
|
156
|
+
--chart-4: #FFE6CC;
|
|
157
|
+
--chart-5: #FF4500;
|
|
158
|
+
|
|
159
|
+
/* Dark theme specific overrides */
|
|
160
|
+
--hero-card-border: 1px solid rgba(233, 233, 233, 0.3);
|
|
161
|
+
--hero-card-border-hover: rgba(233, 233, 233, 0.6);
|
|
162
|
+
--theme-section-border: 1px solid rgba(255, 255, 255, 0.08);
|
|
163
|
+
--theme-section-border-hover: 1px solid rgba(255, 255, 255, 0.08);
|
|
164
|
+
--theme-section-box-shadow: 0 12px 34px rgba(0, 0, 0, 0.6);
|
|
165
|
+
--theme-section-box-shadow-hover: 0 24px 48px rgba(0, 0, 0, 0.75);
|
|
166
|
+
--theme-section-item-border: 1px solid rgba(255, 255, 255, 0.16);
|
|
167
|
+
--theme-section-item-border-hover: 1px solid rgba(255, 255, 255, 0.28);
|
|
168
|
+
--theme-section-item-background: var(--section-surface);
|
|
169
|
+
--theme-section-item-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
170
|
+
--theme-section-item-box-shadow: 0 6px 18px rgba(0, 0, 0, 0.55);
|
|
171
|
+
--theme-section-item-box-shadow-hover: 0 16px 34px rgba(0, 0, 0, 0.7);
|
|
172
|
+
--theme-section-item-hover-transform: none;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* Light theme support via data attribute on container */
|
|
176
|
+
.osi-cards-container[data-theme='day'],
|
|
177
|
+
.osi-cards-container [data-theme='day'] {
|
|
178
|
+
--background: #ffffff;
|
|
179
|
+
--foreground: #1c1c1f;
|
|
180
|
+
--muted: #f4f4f6;
|
|
181
|
+
--muted-foreground: #555861;
|
|
182
|
+
--card: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
183
|
+
--card-foreground: #1c1c1f;
|
|
184
|
+
--card-surface: var(--card);
|
|
185
|
+
--card-surface-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
186
|
+
--card-section-bg: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
187
|
+
--card-section-card-bg: color-mix(in srgb, var(--card-section-bg) 88%, #ffffff);
|
|
188
|
+
--theme-ai-card-border: 0.5px solid color-mix(in srgb, var(--color-brand) 52%, transparent);
|
|
189
|
+
--theme-ai-card-border-hover: 0.5px solid var(--color-brand);
|
|
190
|
+
--theme-ai-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
191
|
+
--theme-ai-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
192
|
+
--theme-ai-card-box-shadow: 0 0 18px rgba(255, 121, 0, 0.3);
|
|
193
|
+
--theme-ai-card-box-shadow-hover: 0 0 24px rgba(255, 121, 0, 0.45);
|
|
194
|
+
|
|
195
|
+
--theme-card-border: 1px solid rgba(255, 255, 255, 0.22);
|
|
196
|
+
--theme-card-border-hover: var(--color-brand);
|
|
197
|
+
--theme-card-hover-border: var(--color-brand);
|
|
198
|
+
--theme-card-background: color-mix(in srgb, var(--background) 99%, var(--surface-contrast-color) 1%);
|
|
199
|
+
--theme-card-background-hover: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
200
|
+
--theme-card-box-shadow: 0 4px 14px rgba(15, 15, 20, 0.06);
|
|
201
|
+
--theme-card-box-shadow-hover: 0 10px 24px rgba(10, 10, 16, 0.1);
|
|
202
|
+
--theme-card-box-shadow-hover-lift: 0 14px 32px rgba(6, 6, 10, 0.12);
|
|
203
|
+
--theme-card-hover-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
204
|
+
--theme-card-hover-shadow: 0 14px 30px rgba(8, 8, 12, 0.12);
|
|
205
|
+
--section-background: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
206
|
+
--section-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
207
|
+
--section-surface: color-mix(in srgb, var(--background) 98%, var(--surface-contrast-color) 2%);
|
|
208
|
+
--section-surface-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
209
|
+
--popover: #ffffff;
|
|
210
|
+
--popover-foreground: #1a1a1a;
|
|
211
|
+
--primary: #FF7900;
|
|
212
|
+
--primary-foreground: #ffffff;
|
|
213
|
+
--secondary: #f5f5f5;
|
|
214
|
+
--secondary-foreground: #1a1a1a;
|
|
215
|
+
--accent: #FF7900;
|
|
216
|
+
--accent-foreground: #ffffff;
|
|
217
|
+
--destructive: #d4183d;
|
|
218
|
+
--destructive-foreground: #ffffff;
|
|
219
|
+
--border: rgba(200, 200, 200, 0.5);
|
|
220
|
+
--input: transparent;
|
|
221
|
+
--input-background: #f9f9f9;
|
|
222
|
+
--switch-background: #e5e5e5;
|
|
223
|
+
--ring: rgba(255, 121, 0, 0.4);
|
|
224
|
+
--chart-1: #FF7900;
|
|
225
|
+
--chart-2: #FF9933;
|
|
226
|
+
--chart-3: #CC5F00;
|
|
227
|
+
--chart-4: #FFE6CC;
|
|
228
|
+
--chart-5: #FF4500;
|
|
229
|
+
|
|
230
|
+
/* Light theme specific overrides */
|
|
231
|
+
--color-gray-700: #e0e0e0;
|
|
232
|
+
--color-gray-600: #d0d0d0;
|
|
233
|
+
--card-section-card-bg: color-mix(in srgb, var(--card-section-bg) 85%, #ffffff);
|
|
234
|
+
|
|
235
|
+
--hero-card-border: 1px solid rgba(146, 153, 158, 0.4);
|
|
236
|
+
--hero-card-border-hover: rgba(146, 153, 158, 0.7);
|
|
237
|
+
--theme-section-border: 1px solid rgba(0, 0, 0, 0.08);
|
|
238
|
+
--theme-section-border-hover: 1px solid rgba(0, 0, 0, 0.1);
|
|
239
|
+
--theme-section-box-shadow: 0 8px 22px rgba(0, 0, 0, 0.08);
|
|
240
|
+
--theme-section-box-shadow-hover: 0 18px 40px rgba(0, 0, 0, 0.12);
|
|
241
|
+
--theme-section-item-border: 1px solid rgba(0, 0, 0, 0.14);
|
|
242
|
+
--theme-section-item-border-hover: 1px solid rgba(0, 0, 0, 0.22);
|
|
243
|
+
--theme-section-item-background: var(--section-surface);
|
|
244
|
+
--theme-section-item-background-hover: color-mix(in srgb, var(--background) 97%, var(--surface-contrast-color) 3%);
|
|
245
|
+
--theme-section-item-box-shadow: 0 3px 12px rgba(0, 0, 0, 0.07);
|
|
246
|
+
--theme-section-item-box-shadow-hover: 0 8px 20px rgba(0, 0, 0, 0.12);
|
|
247
|
+
--theme-section-item-hover-transform: none;
|
|
248
|
+
}
|
|
249
|
+
|