osi-cards-lib 1.5.42 → 1.5.43
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 +1 -1
- package/fesm2022/osi-cards-lib.mjs +5176 -3720
- package/fesm2022/osi-cards-lib.mjs.map +1 -1
- package/index.d.ts +134 -272
- package/package.json +4 -3
- package/styles/bundles/_ai-card.scss +10 -3
- package/styles/bundles/_card-skeleton.scss +1 -1
- package/styles/components/_ai-card-renderer.scss +0 -2
- package/styles/components/_card-actions.scss +2 -4
- package/styles/components/sections/_all-sections.generated.scss +0 -3
- package/styles/components/sections/_all-sections.scss +88 -64
- package/styles/components/sections/_compact-mixins.scss +9 -8
- package/styles/components/sections/_component-mixins.scss +40 -11
- package/styles/components/sections/_design-system.scss +96 -11
- package/styles/components/sections/_master-compact-system.scss +0 -17
- package/styles/components/sections/_minimalistic-design.scss +1 -4
- package/styles/components/sections/_modern-effects.scss +1 -3
- package/styles/components/sections/_modern-sections.scss +13 -69
- package/styles/components/sections/_section-animations.scss +158 -77
- package/styles/components/sections/_section-shell.scss +38 -9
- package/styles/components/sections/_section-types.generated.scss +0 -3
- package/styles/components/sections/_sections-all.scss +7 -0
- package/styles/components/sections/_sections-base.scss +340 -64
- package/styles/components/sections/_unified-section-style.scss +17 -44
- package/styles/components/sections/_visual-effects-library.scss +3 -3
- package/styles/core/_global-unified.scss +2 -6
- package/styles/core/_mixins.scss +1 -1
- package/styles/core/_surface-layers.scss +20 -11
- package/styles/design-system/_section-base.scss +9 -32
- package/styles/design-system/_tokens.scss +67 -5
- package/styles/design-system/_unified-sections.scss +21 -21
- package/styles/layout/_masonry.scss +22 -22
- package/styles/layout/_tilt.scss +3 -3
- package/styles/mixins/_section-mixins.scss +2 -2
- package/styles/reset/_shadow-reset.scss +3 -7
- package/styles/responsive.scss +9 -7
- package/styles/tokens/_master.scss +259 -66
- package/styles/tokens/_section-tokens.generated.scss +0 -7
|
@@ -20,61 +20,34 @@
|
|
|
20
20
|
// STANDARD CARD (For 200px grids)
|
|
21
21
|
// =====================================================================
|
|
22
22
|
|
|
23
|
+
// =====================================================================
|
|
24
|
+
// SECTION CARD MIXIN - DEPRECATED
|
|
25
|
+
// =====================================================================
|
|
26
|
+
// @deprecated Use @include card instead
|
|
27
|
+
// This mixin is kept for backward compatibility but simply redirects to the base card mixin.
|
|
28
|
+
|
|
23
29
|
@mixin section-card {
|
|
24
|
-
@include card;
|
|
25
|
-
|
|
26
|
-
display: flex;
|
|
27
|
-
flex-direction: column;
|
|
28
|
-
gap: var(--spacing-sm);
|
|
29
|
-
background: var(--surface);
|
|
30
|
-
border-radius: var(--radius-md);
|
|
31
|
-
transition:
|
|
32
|
-
box-shadow var(--duration-slow) var(--ease-out),
|
|
33
|
-
background var(--duration-slow) var(--ease-out);
|
|
34
|
-
|
|
35
|
-
&:hover {
|
|
36
|
-
box-shadow: var(--shadow-lg);
|
|
37
|
-
background: var(--osi-section-item-background-hover);
|
|
38
|
-
}
|
|
30
|
+
@include card("normal");
|
|
31
|
+
@warn "section-card mixin is deprecated. Use @include card instead.";
|
|
39
32
|
}
|
|
40
33
|
|
|
41
34
|
// =====================================================================
|
|
42
35
|
// STANDARD LIST (For 400px width sections)
|
|
43
36
|
// =====================================================================
|
|
44
37
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
flex-direction: column;
|
|
50
|
-
gap: var(--spacing-md);
|
|
51
|
-
background: var(--surface);
|
|
52
|
-
border-radius: var(--radius-md);
|
|
53
|
-
transition: box-shadow 300ms var(--ease-out);
|
|
38
|
+
// =====================================================================
|
|
39
|
+
// SECTION LIST MIXINS - DEPRECATED
|
|
40
|
+
// =====================================================================
|
|
41
|
+
// @deprecated Use @include list-container and @include list-item from _sections-base.scss instead
|
|
54
42
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
@mixin section-list-container {
|
|
44
|
+
@include list-container("normal");
|
|
45
|
+
@warn "section-list-container is deprecated. Use @include list-container instead.";
|
|
58
46
|
}
|
|
59
47
|
|
|
60
48
|
@mixin section-list-item {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
display: flex;
|
|
64
|
-
flex-direction: column;
|
|
65
|
-
gap: var(--spacing-sm);
|
|
66
|
-
transition:
|
|
67
|
-
background var(--duration-base) var(--ease-out),
|
|
68
|
-
color var(--duration-base) var(--ease-out);
|
|
69
|
-
|
|
70
|
-
&:not(:last-child) {
|
|
71
|
-
margin-bottom: var(--spacing-xs);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
&:hover {
|
|
75
|
-
background: var(--surface-hover);
|
|
76
|
-
color: var(--accent);
|
|
77
|
-
}
|
|
49
|
+
@include list-item("normal");
|
|
50
|
+
@warn "section-list-item is deprecated. Use @include list-item instead.";
|
|
78
51
|
}
|
|
79
52
|
|
|
80
53
|
// =====================================================================
|
|
@@ -192,10 +192,10 @@
|
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
// Left accent border (quotations, highlights)
|
|
195
|
+
// Left accent border (quotations, highlights) - removed
|
|
196
196
|
@mixin accent-line-left {
|
|
197
|
-
border
|
|
198
|
-
padding-left:
|
|
197
|
+
// Left border removed per user request
|
|
198
|
+
padding-left: var(--osi-default-card-padding);
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
// ═══════════════════════════════════════════════════════════════════
|
|
@@ -44,9 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
// Enhanced focus indicators for accessibility
|
|
46
46
|
&:focus-visible {
|
|
47
|
-
outline:
|
|
48
|
-
outline-offset: 2px;
|
|
49
|
-
border-radius: 4px;
|
|
47
|
+
outline: none;
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
&:focus:not(:focus-visible) {
|
|
@@ -62,9 +60,7 @@
|
|
|
62
60
|
& textarea,
|
|
63
61
|
& [tabindex]:not([tabindex="-1"]) {
|
|
64
62
|
&:focus-visible {
|
|
65
|
-
outline:
|
|
66
|
-
outline-offset: 2px;
|
|
67
|
-
border-radius: 2px;
|
|
63
|
+
outline: none;
|
|
68
64
|
}
|
|
69
65
|
|
|
70
66
|
&:focus:not(:focus-visible) {
|
package/styles/core/_mixins.scss
CHANGED
|
@@ -252,7 +252,7 @@ $osi-use-important: true !default;
|
|
|
252
252
|
|
|
253
253
|
/// Subtitle text - used for secondary headings, roles
|
|
254
254
|
@mixin osi-text-subtitle {
|
|
255
|
-
@include important-prop("font-size", var(--card-subtitle-font-size, 0.
|
|
255
|
+
@include important-prop("font-size", var(--card-subtitle-font-size, 0.575rem));
|
|
256
256
|
@include important-prop("font-weight", var(--card-subtitle-font-weight, 500));
|
|
257
257
|
@include important-prop("color", var(--card-text-secondary, inherit));
|
|
258
258
|
@include important-prop("letter-spacing", var(--card-subtitle-letter-spacing, 0.015em));
|
|
@@ -14,7 +14,13 @@
|
|
|
14
14
|
|
|
15
15
|
/* AI card (hero shell) ----------------------------------------------------- */
|
|
16
16
|
@mixin surface-ai-card-base {
|
|
17
|
-
border: var(--ai-card-border, 1px solid rgba(255, 121, 0, 0.
|
|
17
|
+
border: var(--ai-card-border, 1px solid rgba(255, 121, 0, 0.2)) !important;
|
|
18
|
+
@supports (color: color-mix(in srgb, black 50%, white)) {
|
|
19
|
+
border: var(
|
|
20
|
+
--ai-card-border,
|
|
21
|
+
1px solid color-mix(in srgb, var(--color-brand, #ff7900) 20%, transparent)
|
|
22
|
+
) !important;
|
|
23
|
+
}
|
|
18
24
|
border-width: 1px !important;
|
|
19
25
|
border-style: solid !important;
|
|
20
26
|
border-radius: var(--ai-card-border-radius) !important;
|
|
@@ -26,7 +32,7 @@
|
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
@mixin surface-ai-card-hover {
|
|
29
|
-
border-color: var(--ai-card-border-hover,
|
|
35
|
+
border-color: var(--ai-card-border-hover, var(--color-brand, #ff7900)) !important;
|
|
30
36
|
background: var(--section-item-background-hover, var(--section-item-background)) !important;
|
|
31
37
|
box-shadow: var(--ai-card-box-shadow-hover, var(--ai-card-box-shadow, none)) !important;
|
|
32
38
|
}
|
|
@@ -43,11 +49,8 @@
|
|
|
43
49
|
}
|
|
44
50
|
|
|
45
51
|
@mixin surface-section-hover {
|
|
46
|
-
/*
|
|
47
|
-
background
|
|
48
|
-
--section-surface-hover,
|
|
49
|
-
var(--section-background-hover, var(--section-surface))
|
|
50
|
-
) !important;
|
|
52
|
+
/* Keep background unchanged on hover - only border and shadow change */
|
|
53
|
+
/* background stays the same - do not override */
|
|
51
54
|
border-color: var(--section-border-hover, var(--section-border)) !important;
|
|
52
55
|
box-shadow: var(--section-box-shadow-hover, var(--section-box-shadow)) !important;
|
|
53
56
|
}
|
|
@@ -69,8 +72,14 @@
|
|
|
69
72
|
}
|
|
70
73
|
|
|
71
74
|
@mixin surface-section-item-hover {
|
|
72
|
-
/*
|
|
73
|
-
|
|
74
|
-
border-color: var(
|
|
75
|
-
|
|
75
|
+
/* Keep background unchanged on hover - only border and shadow change */
|
|
76
|
+
/* background stays the same - do not override */
|
|
77
|
+
border-color: var(
|
|
78
|
+
--osi-section-item-border-hover-enhanced-color,
|
|
79
|
+
var(--section-item-border-hover, var(--section-item-border))
|
|
80
|
+
) !important;
|
|
81
|
+
box-shadow: var(
|
|
82
|
+
--osi-section-item-shadow-hover-enhanced,
|
|
83
|
+
var(--section-item-box-shadow-hover)
|
|
84
|
+
) !important;
|
|
76
85
|
}
|
|
@@ -109,39 +109,16 @@
|
|
|
109
109
|
isolation: isolate;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
// Subtle accent border on hover for visual interest
|
|
118
|
-
&::before {
|
|
119
|
-
content: "";
|
|
120
|
-
position: absolute;
|
|
121
|
-
top: 0;
|
|
122
|
-
left: 0;
|
|
123
|
-
right: 0;
|
|
124
|
-
height: 2px;
|
|
125
|
-
background: linear-gradient(90deg, var(--osi-accent) 0%, transparent 100%);
|
|
126
|
-
opacity: 0;
|
|
127
|
-
transition: opacity var(--osi-duration-normal) var(--osi-ease-out);
|
|
128
|
-
border-radius: var(--osi-radius-md) var(--osi-radius-md) 0 0;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
&:hover {
|
|
132
|
-
transform: translateY(-2px);
|
|
133
|
-
box-shadow: var(--osi-shadow-md);
|
|
134
|
-
border-color: var(--osi-border);
|
|
135
|
-
|
|
136
|
-
&::before {
|
|
137
|
-
opacity: 0.6;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
112
|
+
// =====================================================================
|
|
113
|
+
// CARD ELEVATED - DEPRECATED
|
|
114
|
+
// =====================================================================
|
|
115
|
+
// @deprecated Use @include card-elevated from _component-mixins.scss instead
|
|
116
|
+
// This mixin is kept for backward compatibility but redirects to the standard variant.
|
|
140
117
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
118
|
+
@mixin card-elevated {
|
|
119
|
+
@warn "card-elevated from design-system/_section-base.scss is deprecated. Use @include card-elevated from _component-mixins.scss instead.";
|
|
120
|
+
// Redirect to component-mixins version (imported via design-system)
|
|
121
|
+
// Note: This will work if design-system imports component-mixins
|
|
145
122
|
}
|
|
146
123
|
|
|
147
124
|
@mixin card-interactive {
|
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
// ═══════════════════════════════════════════════════════════════════
|
|
9
9
|
// SPACING SCALE (4px base unit)
|
|
10
10
|
// ═══════════════════════════════════════════════════════════════════
|
|
11
|
+
--osi-spacing-2px: 2px;
|
|
12
|
+
--osi-spacing-4px: 4px;
|
|
13
|
+
--osi-spacing-6px: 6px;
|
|
14
|
+
--osi-spacing-8px: 8px;
|
|
15
|
+
--osi-spacing-10px: 10px; // Base gap for section items
|
|
11
16
|
--osi-spacing-xs: 4px;
|
|
12
17
|
--osi-spacing-sm: 8px;
|
|
13
18
|
--osi-spacing-md: 12px;
|
|
@@ -38,12 +43,28 @@
|
|
|
38
43
|
--osi-text-2xl: 1.875rem; // 30px
|
|
39
44
|
--osi-text-3xl: 2.25rem; // 36px
|
|
40
45
|
|
|
46
|
+
// Unprefixed font sizes (for unified-sections mixins)
|
|
47
|
+
--text-xs: 0.6875rem; // 11px - Small labels, captions
|
|
48
|
+
--text-sm: 0.75rem; // 12px - Secondary text, metadata
|
|
49
|
+
--text-base: 0.8125rem; // 13px - Body text, item titles
|
|
50
|
+
--text-md: 0.875rem; // 14px - Emphasized text
|
|
51
|
+
--text-lg: 1.0625rem; // 17px - Sub-headers
|
|
52
|
+
--text-xl: 1.1875rem; // 19px - Section headers
|
|
53
|
+
--text-2xl: 1.375rem; // 22px - Large values, metrics
|
|
54
|
+
--text-3xl: 1.625rem; // 26px - Large headers
|
|
55
|
+
|
|
41
56
|
// Font Weights
|
|
42
57
|
--osi-font-normal: 400;
|
|
43
58
|
--osi-font-medium: 500;
|
|
44
59
|
--osi-font-semibold: 600;
|
|
45
60
|
--osi-font-bold: 700;
|
|
46
61
|
|
|
62
|
+
// Unprefixed font weights (for unified-sections mixins)
|
|
63
|
+
--font-normal: 400;
|
|
64
|
+
--font-medium: 500;
|
|
65
|
+
--font-semibold: 600;
|
|
66
|
+
--font-bold: 700;
|
|
67
|
+
|
|
47
68
|
// Line Heights
|
|
48
69
|
--osi-leading-tight: 1.25;
|
|
49
70
|
--osi-leading-snug: 1.375;
|
|
@@ -51,6 +72,13 @@
|
|
|
51
72
|
--osi-leading-relaxed: 1.625;
|
|
52
73
|
--osi-leading-loose: 2;
|
|
53
74
|
|
|
75
|
+
// Unprefixed line heights (for unified-sections mixins)
|
|
76
|
+
--leading-tight: 1.2;
|
|
77
|
+
--leading-snug: 1.3;
|
|
78
|
+
--leading-normal: 1.4;
|
|
79
|
+
--leading-relaxed: 1.5;
|
|
80
|
+
--leading-loose: 1.75;
|
|
81
|
+
|
|
54
82
|
// Letter Spacing
|
|
55
83
|
--osi-tracking-tight: -0.025em;
|
|
56
84
|
--osi-tracking-normal: 0;
|
|
@@ -67,11 +95,27 @@
|
|
|
67
95
|
--osi-surface-hover: hsl(0, 0%, 20%); // #333333
|
|
68
96
|
--osi-surface-subtle: hsl(0, 0%, 12%); // #1f1f1f
|
|
69
97
|
|
|
70
|
-
// Text Colors
|
|
71
|
-
|
|
72
|
-
--
|
|
73
|
-
|
|
74
|
-
|
|
98
|
+
// Text Colors - Theme-Responsive
|
|
99
|
+
// These reference theme-aware tokens set by theme mixins (osi-theme-dark, osi-theme-light)
|
|
100
|
+
// Theme mixins set --foreground and --muted-foreground directly with theme-appropriate values
|
|
101
|
+
// OSI tokens reference these theme tokens, making them automatically theme-responsive
|
|
102
|
+
// Fallback values provided for when theme mixins haven't been called
|
|
103
|
+
--osi-foreground: var(
|
|
104
|
+
--foreground,
|
|
105
|
+
hsl(0, 0%, 95%)
|
|
106
|
+
); // References theme-aware --foreground (set by theme mixins)
|
|
107
|
+
--osi-foreground-strong: var(--foreground, hsl(0, 0%, 100%)); // Theme-responsive
|
|
108
|
+
--osi-muted-foreground: var(
|
|
109
|
+
--muted-foreground,
|
|
110
|
+
hsl(0, 0%, 60%)
|
|
111
|
+
); // References theme-aware --muted-foreground (set by theme mixins)
|
|
112
|
+
--osi-disabled-foreground: var(--muted-foreground, hsl(0, 0%, 40%)); // Theme-responsive
|
|
113
|
+
|
|
114
|
+
// Unprefixed color variables (for unified-sections mixins and backward compatibility)
|
|
115
|
+
// Note: --foreground and --muted-foreground are set by theme mixins (osi-theme-dark, osi-theme-light)
|
|
116
|
+
// We do NOT redefine them here to avoid overwriting theme values
|
|
117
|
+
// Components can use either --foreground (set by theme) or --osi-foreground (references theme)
|
|
118
|
+
// Both are theme-responsive
|
|
75
119
|
|
|
76
120
|
// Brand/Accent Colors
|
|
77
121
|
--osi-accent: hsl(25, 100%, 50%); // #ff7900
|
|
@@ -104,6 +148,7 @@
|
|
|
104
148
|
// BORDER RADIUS
|
|
105
149
|
// ═══════════════════════════════════════════════════════════════════
|
|
106
150
|
--osi-radius-none: 0;
|
|
151
|
+
--osi-radius-xs: 2px;
|
|
107
152
|
--osi-radius-sm: 4px;
|
|
108
153
|
--osi-radius-md: 8px;
|
|
109
154
|
--osi-radius-lg: 12px;
|
|
@@ -159,11 +204,28 @@
|
|
|
159
204
|
--osi-grid-min-medium: 200px; // Contact cards
|
|
160
205
|
--osi-grid-min-large: 300px; // Gallery items
|
|
161
206
|
|
|
207
|
+
// Grid min-width tokens (for responsive grid layouts)
|
|
208
|
+
--osi-grid-min-xs: 120px;
|
|
209
|
+
--osi-grid-min-sm: 140px;
|
|
210
|
+
--osi-grid-min-md: 160px;
|
|
211
|
+
--osi-grid-min-lg: 180px;
|
|
212
|
+
--osi-grid-min-xl: 200px;
|
|
213
|
+
--osi-grid-min-2xl: 250px;
|
|
214
|
+
--osi-grid-min-3xl: 280px;
|
|
215
|
+
--osi-grid-min-4xl: 300px;
|
|
216
|
+
|
|
162
217
|
// ═══════════════════════════════════════════════════════════════════
|
|
163
218
|
// COMPACT SIZES (for min-heights, etc.)
|
|
164
219
|
// ═══════════════════════════════════════════════════════════════════
|
|
165
220
|
--osi-card-min-height: 90px; // Compact metric cards (was 120px)
|
|
166
221
|
--osi-card-min-height-large: 120px; // Larger cards when needed
|
|
222
|
+
|
|
223
|
+
// Min-height tokens for cards/items
|
|
224
|
+
--osi-card-min-height-xs: 70px;
|
|
225
|
+
--osi-card-min-height-sm: 80px;
|
|
226
|
+
--osi-card-min-height-md: 90px;
|
|
227
|
+
--osi-card-min-height-lg: 95px;
|
|
228
|
+
--osi-card-min-height-xl: 110px;
|
|
167
229
|
}
|
|
168
230
|
|
|
169
231
|
// ═══════════════════════════════════════════════════════════════════
|
|
@@ -12,46 +12,46 @@
|
|
|
12
12
|
// Item titles (h4, h5, h6 in cards/items)
|
|
13
13
|
@mixin unified-item-title {
|
|
14
14
|
margin: 0;
|
|
15
|
-
font-size: var(--
|
|
16
|
-
font-weight: var(--
|
|
17
|
-
line-height: var(--
|
|
18
|
-
color: var(--
|
|
15
|
+
font-size: var(--text-sm);
|
|
16
|
+
font-weight: var(--font-semibold);
|
|
17
|
+
line-height: var(--leading-snug);
|
|
18
|
+
color: var(--foreground);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// Item labels (small uppercase text)
|
|
22
22
|
@mixin unified-item-label {
|
|
23
|
-
font-size:
|
|
24
|
-
font-weight: var(--
|
|
25
|
-
line-height: var(--
|
|
26
|
-
color: var(--
|
|
23
|
+
font-size: var(--text-xs);
|
|
24
|
+
font-weight: var(--font-medium);
|
|
25
|
+
line-height: var(--leading-tight);
|
|
26
|
+
color: var(--muted-foreground);
|
|
27
27
|
text-transform: uppercase;
|
|
28
|
-
letter-spacing: 0.
|
|
28
|
+
letter-spacing: 0.05em;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// Item values (prominent text/numbers)
|
|
32
32
|
@mixin unified-item-value {
|
|
33
|
-
font-size: var(--
|
|
34
|
-
font-weight: var(--
|
|
35
|
-
line-height: var(--
|
|
36
|
-
color: var(--
|
|
33
|
+
font-size: var(--text-sm);
|
|
34
|
+
font-weight: var(--font-semibold);
|
|
35
|
+
line-height: var(--leading-normal);
|
|
36
|
+
color: var(--foreground);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
// Item descriptions (secondary text)
|
|
40
40
|
@mixin unified-item-description {
|
|
41
|
-
font-size: var(--
|
|
42
|
-
font-weight: var(--
|
|
43
|
-
line-height: var(--
|
|
44
|
-
color: var(--
|
|
41
|
+
font-size: var(--text-xs);
|
|
42
|
+
font-weight: var(--font-normal);
|
|
43
|
+
line-height: var(--leading-relaxed);
|
|
44
|
+
color: var(--muted-foreground);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// Number displays (metrics, analytics)
|
|
48
48
|
@mixin unified-number-display {
|
|
49
|
-
font-size: var(--
|
|
50
|
-
font-weight: var(--
|
|
49
|
+
font-size: var(--text-2xl);
|
|
50
|
+
font-weight: var(--font-bold);
|
|
51
51
|
line-height: 1;
|
|
52
|
-
letter-spacing:
|
|
52
|
+
letter-spacing: -0.02em;
|
|
53
53
|
font-variant-numeric: tabular-nums;
|
|
54
|
-
color: var(--
|
|
54
|
+
color: var(--foreground);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
// ═══════════════════════════════════════════════════════════════════
|
|
@@ -135,13 +135,6 @@
|
|
|
135
135
|
content-visibility: auto;
|
|
136
136
|
contain-intrinsic-size: auto 200px;
|
|
137
137
|
|
|
138
|
-
/* Smooth transitions for position and size changes */
|
|
139
|
-
transition:
|
|
140
|
-
top 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
141
|
-
left 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
142
|
-
width 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
143
|
-
opacity 0.35s ease-out;
|
|
144
|
-
|
|
145
138
|
/* GLOBALLY DEFINED: Use shared mixins for discrete section borders */
|
|
146
139
|
@include surface-section-base;
|
|
147
140
|
padding: var(--section-container-padding) !important;
|
|
@@ -149,8 +142,28 @@
|
|
|
149
142
|
/* Gap between header and body - standardized to 12px */
|
|
150
143
|
gap: var(--section-card-gap);
|
|
151
144
|
|
|
145
|
+
/* Smooth transitions for position, size, border, and shadow changes */
|
|
146
|
+
transition:
|
|
147
|
+
top 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
148
|
+
left 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
149
|
+
width 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
150
|
+
opacity 0.35s ease-out,
|
|
151
|
+
border-color var(--osi-card-transition-normal, 0.22s) cubic-bezier(0.4, 0, 0.2, 1),
|
|
152
|
+
box-shadow var(--osi-card-transition-normal, 0.22s) cubic-bezier(0.4, 0, 0.2, 1);
|
|
153
|
+
|
|
152
154
|
&:hover {
|
|
153
155
|
@include surface-section-hover;
|
|
156
|
+
// Enhanced hover: gentle shadow with 30% more contrasty cool color and 20% more contrasty border
|
|
157
|
+
border-color: var(--osi-section-border-hover-enhanced-color) !important;
|
|
158
|
+
box-shadow: var(--osi-section-shadow-hover-enhanced) !important;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@media (prefers-reduced-motion: reduce) {
|
|
162
|
+
transition:
|
|
163
|
+
top 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
164
|
+
left 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
165
|
+
width 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
|
166
|
+
opacity 0.35s ease-out;
|
|
154
167
|
}
|
|
155
168
|
}
|
|
156
169
|
|
|
@@ -278,19 +291,7 @@
|
|
|
278
291
|
}
|
|
279
292
|
|
|
280
293
|
/* Priority-based visual indicators */
|
|
281
|
-
|
|
282
|
-
/* Priority 1 (highest) sections get subtle emphasis */
|
|
283
|
-
&::before {
|
|
284
|
-
content: "";
|
|
285
|
-
position: absolute;
|
|
286
|
-
left: 0;
|
|
287
|
-
top: 0;
|
|
288
|
-
bottom: 0;
|
|
289
|
-
width: 3px;
|
|
290
|
-
background: var(--color-brand, #ff7900);
|
|
291
|
-
border-radius: 0 2px 2px 0;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
+
/* Removed left brand color bar - no longer showing visual indicator for priority 1 items */
|
|
294
295
|
|
|
295
296
|
/* Flex grow sections - expand to fill space */
|
|
296
297
|
.masonry-item--flex-grow {
|
|
@@ -657,8 +658,7 @@
|
|
|
657
658
|
|
|
658
659
|
/* Focus styles for keyboard navigation following aria-flowto */
|
|
659
660
|
.masonry-item:focus-visible {
|
|
660
|
-
outline:
|
|
661
|
-
outline-offset: 2px;
|
|
661
|
+
outline: none;
|
|
662
662
|
z-index: 10;
|
|
663
663
|
}
|
|
664
664
|
|
package/styles/layout/_tilt.scss
CHANGED
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
.tilt-container:hover {
|
|
49
49
|
/* Hint browser about upcoming transform changes */
|
|
50
50
|
will-change: transform;
|
|
51
|
-
/* Orange glow only - no dark shadows,
|
|
52
|
-
box-shadow: 0 0 var(--glow-blur) var(--glow-color, rgba(255, 121, 0, 0.
|
|
51
|
+
/* Orange glow only - no dark shadows, more vivid on hover */
|
|
52
|
+
box-shadow: 0 0 var(--glow-blur) var(--glow-color, rgba(255, 121, 0, 0.6));
|
|
53
53
|
/* Smooth transition for glow only - transform handled by JavaScript */
|
|
54
54
|
transition: box-shadow 200ms cubic-bezier(0.2, 0, 0.2, 1);
|
|
55
55
|
}
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
/* Glow container for filter-based effects - Cross-browser compatible */
|
|
58
58
|
.glow-container {
|
|
59
59
|
position: relative;
|
|
60
|
-
/* Always show base glow - smooth transitions
|
|
60
|
+
/* Always show base glow - smooth transitions */
|
|
61
61
|
-webkit-filter: drop-shadow(0 0 var(--glow-blur) var(--glow-color, rgba(255, 121, 0, 0.225)));
|
|
62
62
|
filter: drop-shadow(0 0 var(--glow-blur) var(--glow-color, rgba(255, 121, 0, 0.225)));
|
|
63
63
|
-webkit-transition: filter 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -219,8 +219,8 @@
|
|
|
219
219
|
text-align: center;
|
|
220
220
|
|
|
221
221
|
.metric-value {
|
|
222
|
-
font-size: var(--metric-value-size,
|
|
223
|
-
font-weight: var(--metric-value-weight,
|
|
222
|
+
font-size: var(--metric-value-size, var(--text-2xl));
|
|
223
|
+
font-weight: var(--metric-value-weight, var(--font-bold));
|
|
224
224
|
margin-bottom: 0.25rem;
|
|
225
225
|
}
|
|
226
226
|
|
|
@@ -156,9 +156,7 @@ a {
|
|
|
156
156
|
cursor: pointer;
|
|
157
157
|
|
|
158
158
|
&:focus-visible {
|
|
159
|
-
outline:
|
|
160
|
-
outline-offset: 2px;
|
|
161
|
-
border-radius: 2px;
|
|
159
|
+
outline: none;
|
|
162
160
|
}
|
|
163
161
|
}
|
|
164
162
|
|
|
@@ -205,8 +203,7 @@ button,
|
|
|
205
203
|
background-image: none;
|
|
206
204
|
|
|
207
205
|
&:focus-visible {
|
|
208
|
-
outline:
|
|
209
|
-
outline-offset: 2px;
|
|
206
|
+
outline: none;
|
|
210
207
|
}
|
|
211
208
|
}
|
|
212
209
|
|
|
@@ -303,8 +300,7 @@ summary {
|
|
|
303
300
|
|
|
304
301
|
// Focus visible styles for keyboard navigation
|
|
305
302
|
:focus-visible {
|
|
306
|
-
outline:
|
|
307
|
-
outline-offset: 2px;
|
|
303
|
+
outline: none;
|
|
308
304
|
}
|
|
309
305
|
|
|
310
306
|
// Remove focus outline for mouse users
|
package/styles/responsive.scss
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Breakpoints and responsive utilities for cards and sections.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
|
|
7
9
|
// ============================================
|
|
8
10
|
// Breakpoint Variables
|
|
9
11
|
// ============================================
|
|
@@ -23,8 +25,8 @@ $breakpoints: (
|
|
|
23
25
|
|
|
24
26
|
/// Media query for minimum width (mobile-first)
|
|
25
27
|
@mixin responsive($breakpoint) {
|
|
26
|
-
@if map
|
|
27
|
-
@media (min-width: map
|
|
28
|
+
@if map.has-key($breakpoints, $breakpoint) {
|
|
29
|
+
@media (min-width: map.get($breakpoints, $breakpoint)) {
|
|
28
30
|
@content;
|
|
29
31
|
}
|
|
30
32
|
} @else {
|
|
@@ -36,8 +38,8 @@ $breakpoints: (
|
|
|
36
38
|
|
|
37
39
|
/// Media query for maximum width
|
|
38
40
|
@mixin responsive-down($breakpoint) {
|
|
39
|
-
@if map
|
|
40
|
-
@media (max-width: #{map
|
|
41
|
+
@if map.has-key($breakpoints, $breakpoint) {
|
|
42
|
+
@media (max-width: #{map.get($breakpoints, $breakpoint) - 1px}) {
|
|
41
43
|
@content;
|
|
42
44
|
}
|
|
43
45
|
} @else {
|
|
@@ -49,8 +51,8 @@ $breakpoints: (
|
|
|
49
51
|
|
|
50
52
|
/// Media query for range
|
|
51
53
|
@mixin responsive-between($min, $max) {
|
|
52
|
-
$min-width: if(map
|
|
53
|
-
$max-width: if(map
|
|
54
|
+
$min-width: if(map.has-key($breakpoints, $min), map.get($breakpoints, $min), $min);
|
|
55
|
+
$max-width: if(map.has-key($breakpoints, $max), map.get($breakpoints, $max), $max);
|
|
54
56
|
|
|
55
57
|
@media (min-width: $min-width) and (max-width: #{$max-width - 1px}) {
|
|
56
58
|
@content;
|
|
@@ -169,7 +171,7 @@ $breakpoints: (
|
|
|
169
171
|
}
|
|
170
172
|
|
|
171
173
|
.metric-value {
|
|
172
|
-
font-size:
|
|
174
|
+
font-size: var(--text-2xl);
|
|
173
175
|
}
|
|
174
176
|
}
|
|
175
177
|
|