osi-cards-lib 1.5.47 → 1.5.49

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.
@@ -0,0 +1,263 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { signal, Injectable, inject, Component } from '@angular/core';
5
+ import { B as BaseSectionComponent, S as SectionLayoutPreferenceService, a as SectionHeaderComponent, E as EmptyStateComponent, L as LucideIconsModule } from './osi-cards-lib-osi-cards-lib-B3nzP8za.mjs';
6
+ import * as i2 from 'lucide-angular';
7
+
8
+ /**
9
+ * Clipboard Service
10
+ *
11
+ * Enhanced clipboard service with history and formatting.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const clipboard = inject(ClipboardService);
16
+ *
17
+ * await clipboard.copy('Hello World');
18
+ * const text = await clipboard.paste();
19
+ * const history = clipboard.getHistory();
20
+ * ```
21
+ */
22
+ class ClipboardService {
23
+ constructor() {
24
+ this.history = signal([], ...(ngDevMode ? [{ debugName: "history" }] : []));
25
+ this.maxHistory = 10;
26
+ }
27
+ /**
28
+ * Copy text to clipboard
29
+ */
30
+ async copy(text) {
31
+ try {
32
+ await navigator.clipboard.writeText(text);
33
+ this.addToHistory(text, 'text');
34
+ }
35
+ catch (error) {
36
+ this.fallbackCopy(text);
37
+ this.addToHistory(text, 'text');
38
+ }
39
+ }
40
+ /**
41
+ * Copy HTML to clipboard
42
+ */
43
+ async copyHTML(html, plainText) {
44
+ try {
45
+ const blob = new Blob([html], { type: 'text/html' });
46
+ const data = [new ClipboardItem({ 'text/html': blob })];
47
+ await navigator.clipboard.write(data);
48
+ this.addToHistory(plainText, 'html');
49
+ }
50
+ catch (error) {
51
+ await this.copy(plainText);
52
+ }
53
+ }
54
+ /**
55
+ * Paste from clipboard
56
+ */
57
+ async paste() {
58
+ try {
59
+ return await navigator.clipboard.readText();
60
+ }
61
+ catch (error) {
62
+ throw new Error('Clipboard read permission denied');
63
+ }
64
+ }
65
+ /**
66
+ * Copy element content
67
+ */
68
+ async copyElement(element) {
69
+ const text = element.textContent || '';
70
+ await this.copy(text);
71
+ }
72
+ /**
73
+ * Get clipboard history
74
+ */
75
+ getHistory() {
76
+ return this.history();
77
+ }
78
+ /**
79
+ * Clear history
80
+ */
81
+ clearHistory() {
82
+ this.history.set([]);
83
+ }
84
+ /**
85
+ * Add to history
86
+ */
87
+ addToHistory(text, type) {
88
+ this.history.update((history) => {
89
+ const entry = {
90
+ text,
91
+ timestamp: new Date(),
92
+ type,
93
+ };
94
+ const newHistory = [entry, ...history];
95
+ return newHistory.slice(0, this.maxHistory);
96
+ });
97
+ }
98
+ /**
99
+ * Fallback copy method
100
+ */
101
+ fallbackCopy(text) {
102
+ const textarea = document.createElement('textarea');
103
+ textarea.value = text;
104
+ textarea.style.position = 'fixed';
105
+ textarea.style.opacity = '0';
106
+ document.body.appendChild(textarea);
107
+ textarea.select();
108
+ document.execCommand('copy');
109
+ document.body.removeChild(textarea);
110
+ }
111
+ /**
112
+ * Check if clipboard API is available
113
+ */
114
+ isAvailable() {
115
+ return !!(navigator.clipboard && navigator.clipboard.writeText);
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
118
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ClipboardService, providedIn: 'root' }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ClipboardService, decorators: [{
121
+ type: Injectable,
122
+ args: [{
123
+ providedIn: 'root',
124
+ }]
125
+ }] });
126
+
127
+ /**
128
+ * Overview Section Component
129
+ *
130
+ * Displays high-level summaries, executive dashboards, and key highlights.
131
+ * Supports newline characters in field values for better text formatting.
132
+ */
133
+ class OverviewSectionComponent extends BaseSectionComponent {
134
+ constructor() {
135
+ super(...arguments);
136
+ this.layoutService = inject(SectionLayoutPreferenceService);
137
+ this.clipboardService = inject(ClipboardService);
138
+ }
139
+ ngOnInit() {
140
+ // Register layout preference function for this section type
141
+ this.layoutService.register('overview', (section, availableColumns) => {
142
+ return this.calculateOverviewLayoutPreferences(section, availableColumns);
143
+ });
144
+ }
145
+ /**
146
+ * Calculate layout preferences for overview section based on content.
147
+ * Overview sections: 1 col default, can expand to 2
148
+ */
149
+ calculateOverviewLayoutPreferences(section, availableColumns) {
150
+ const fields = section.fields ?? [];
151
+ const fieldCount = fields.length;
152
+ // Overview sections: 1 col default, can expand to 2
153
+ let preferredColumns = 1;
154
+ if (fieldCount >= 6) {
155
+ preferredColumns = 2;
156
+ }
157
+ // Respect explicit preferences
158
+ if (section.preferredColumns) {
159
+ preferredColumns = section.preferredColumns;
160
+ }
161
+ preferredColumns = Math.min(preferredColumns, availableColumns);
162
+ return {
163
+ preferredColumns,
164
+ minColumns: (section.minColumns ?? 1),
165
+ maxColumns: Math.min((section.maxColumns ?? 2), availableColumns),
166
+ canShrinkToFill: true,
167
+ shrinkPriority: 15,
168
+ expandOnContent: {
169
+ fieldCount: 6, // Expand to 2 columns at 6+ fields
170
+ },
171
+ };
172
+ }
173
+ /**
174
+ * Get layout preferences for overview section.
175
+ */
176
+ getLayoutPreferences(availableColumns = 4) {
177
+ const servicePrefs = this.layoutService.getPreferences(this.section, availableColumns);
178
+ if (servicePrefs) {
179
+ return servicePrefs;
180
+ }
181
+ return this.calculateOverviewLayoutPreferences(this.section, availableColumns);
182
+ }
183
+ /**
184
+ * Format field value, converting newlines to HTML breaks
185
+ * For single text blocks (empty label), also style uppercase section headers
186
+ */
187
+ formatFieldValue(field) {
188
+ const value = this.getFieldValue(field);
189
+ if (value === null || value === undefined) {
190
+ return '';
191
+ }
192
+ const stringValue = String(value);
193
+ // If this is a single text block (no label), style uppercase headers
194
+ if (!field.label) {
195
+ // Split by lines and process each line
196
+ const lines = stringValue.split('\n');
197
+ const processedLines = lines.map((line, index) => {
198
+ const trimmed = line.trim();
199
+ // Check if line is an uppercase header (all caps, reasonable length, no lowercase letters)
200
+ if (trimmed.length > 0 &&
201
+ trimmed.length <= 50 &&
202
+ trimmed === trimmed.toUpperCase() &&
203
+ /^[A-Z\s&•\-]+$/.test(trimmed) &&
204
+ trimmed.length >= 2) {
205
+ // This is a section header
206
+ return `<span class="section-header">${trimmed}</span>`;
207
+ }
208
+ return line;
209
+ });
210
+ // Convert newlines to <br> tags for HTML rendering
211
+ return processedLines.join('<br>');
212
+ }
213
+ // Convert newlines to <br> tags for HTML rendering
214
+ return stringValue.replace(/\n/g, '<br>');
215
+ }
216
+ /**
217
+ * Copy section content to clipboard
218
+ */
219
+ async onCopySection() {
220
+ if (!this.section.fields?.length) {
221
+ return;
222
+ }
223
+ // Build text content from all fields
224
+ const textParts = [];
225
+ // Add title if available
226
+ if (this.section.title) {
227
+ textParts.push(this.section.title);
228
+ }
229
+ // Add description if available
230
+ if (this.section.description) {
231
+ textParts.push(this.section.description);
232
+ }
233
+ // Add field content
234
+ this.section.fields.forEach((field) => {
235
+ const value = this.getFieldValue(field);
236
+ if (value !== null && value !== undefined) {
237
+ const stringValue = String(value);
238
+ if (field.label) {
239
+ textParts.push(`${field.label}: ${stringValue}`);
240
+ }
241
+ else {
242
+ textParts.push(stringValue);
243
+ }
244
+ }
245
+ });
246
+ const textToCopy = textParts.join('\n\n');
247
+ try {
248
+ await this.clipboardService.copy(textToCopy);
249
+ }
250
+ catch (error) {
251
+ console.error('Failed to copy section content to clipboard', error);
252
+ }
253
+ }
254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: OverviewSectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: OverviewSectionComponent, isStandalone: true, selector: "lib-overview-section", usesInheritance: true, ngImport: i0, template: "<div class=\"ai-section ai-section--overview section-content\">\n <button\n type=\"button\"\n class=\"overview-section-copy-btn\"\n [attr.aria-label]=\"'Copy section: ' + (section.title || 'Overview')\"\n title=\"Copy section content\"\n (click)=\"onCopySection()\"\n (keydown.enter)=\"onCopySection()\"\n (keydown.space)=\"$event.preventDefault(); onCopySection()\"\n >\n <lucide-icon name=\"copy\" [size]=\"12\" aria-hidden=\"true\"></lucide-icon>\n </button>\n <lib-section-header *ngIf=\"section.title\" [title]=\"section.title\" [description]=\"section.description\">\n </lib-section-header>\n\n <div class=\"overview-grid\" *ngIf=\"section.fields?.length\">\n <div class=\"overview-item\" *ngFor=\"let field of section.fields\" [class.overview-item--single-text]=\"!field.label\">\n <div class=\"overview-item__label\" *ngIf=\"field.label\">{{ field.label }}</div>\n <div\n class=\"overview-item__value\"\n [innerHTML]=\"formatFieldValue(field)\"\n [class.overview-item__value--single-text]=\"!field.label\"\n ></div>\n </div>\n </div>\n\n <lib-empty-state *ngIf=\"!section.fields?.length\" message=\"No overview data\" icon=\"\uD83D\uDCCB\" variant=\"minimal\">\n </lib-empty-state>\n</div>\n", styles: [":root{--osi-spacing-2px: 2px;--osi-spacing-4px: 4px;--osi-spacing-6px: 6px;--osi-spacing-8px: 8px;--osi-spacing-10px: 10px;--osi-spacing-xs: 4px;--osi-spacing-sm: 8px;--osi-spacing-md: 12px;--osi-spacing-lg: 16px;--osi-spacing-xl: 24px;--osi-spacing-2xl: 32px;--osi-spacing-3xl: 48px;--osi-section-header-gap: 2px;--osi-section-padding: var(--osi-spacing-sm);--osi-section-gap: var(--osi-spacing-md);--osi-item-padding: var(--osi-spacing-sm);--osi-item-gap: var(--osi-spacing-xs);--osi-element-gap: 2px;--osi-text-xs: .75rem;--osi-text-sm: .875rem;--osi-text-base: 1rem;--osi-text-md: 1.125rem;--osi-text-lg: 1.25rem;--osi-text-xl: 1.5rem;--osi-text-2xl: 1.875rem;--osi-text-3xl: 2.25rem;--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--osi-font-normal: 400;--osi-font-medium: 500;--osi-font-semibold: 600;--osi-font-bold: 700;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--osi-leading-tight: 1.25;--osi-leading-snug: 1.375;--osi-leading-normal: 1.5;--osi-leading-relaxed: 1.625;--osi-leading-loose: 2;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75;--osi-tracking-tight: -.025em;--osi-tracking-normal: 0;--osi-tracking-wide: .025em;--osi-tracking-wider: .05em;--osi-surface: hsl(0, 0%, 10%);--osi-surface-raised: hsl(0, 0%, 15%);--osi-surface-hover: hsl(0, 0%, 20%);--osi-surface-subtle: hsl(0, 0%, 12%);--osi-foreground: var( --foreground, hsl(0, 0%, 95%) );--osi-foreground-strong: var(--foreground, hsl(0, 0%, 100%));--osi-muted-foreground: var( --muted-foreground, hsl(0, 0%, 60%) );--osi-disabled-foreground: var(--muted-foreground, hsl(0, 0%, 40%));--osi-accent: hsl(25, 100%, 50%);--osi-accent-bright: hsl(25, 100%, 60%);--osi-accent-muted: hsl(25, 50%, 40%);--osi-success: hsl(142, 71%, 45%);--osi-success-bg: hsla(142, 71%, 45%, .15);--osi-success-bright: hsl(142, 71%, 55%);--osi-error: hsl(0, 84%, 60%);--osi-error-bg: hsla(0, 84%, 60%, .15);--osi-error-bright: hsl(0, 84%, 70%);--osi-warning: hsl(45, 93%, 47%);--osi-warning-bg: hsla(45, 93%, 47%, .15);--osi-warning-bright: hsl(45, 93%, 57%);--osi-info: hsl(221, 83%, 53%);--osi-info-bg: hsla(221, 83%, 53%, .15);--osi-info-bright: hsl(221, 83%, 63%);--osi-border: hsla(0, 0%, 100%, .2);--osi-border-muted: hsla(0, 0%, 100%, .06);--osi-border-strong: hsla(0, 0%, 100%, .35);--osi-radius-none: 0;--osi-radius-xs: 2px;--osi-radius-sm: 4px;--osi-radius-md: 8px;--osi-radius-lg: 12px;--osi-radius-xl: 16px;--osi-radius-full: 9999px;--osi-shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--osi-shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--osi-shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--osi-shadow-xl: 0 20px 25px rgba(0, 0, 0, .15);--osi-shadow-2xl: 0 25px 50px rgba(0, 0, 0, .25);--osi-duration-fast: .15s;--osi-duration-normal: .2s;--osi-duration-medium: .3s;--osi-duration-slow: .6s;--osi-ease-linear: linear;--osi-ease-in: cubic-bezier(.4, 0, 1, 1);--osi-ease-out: cubic-bezier(0, 0, .2, 1);--osi-ease-in-out: cubic-bezier(.4, 0, .2, 1);--osi-ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--osi-z-base: 0;--osi-z-raised: 10;--osi-z-dropdown: 100;--osi-z-fixed: 300;--osi-z-modal: 400;--osi-z-popover: 500;--osi-z-tooltip: 600;--osi-grid-gap: var(--osi-spacing-md);--osi-grid-row-gap: var(--osi-grid-gap);--osi-grid-column-gap: var(--osi-grid-gap);--osi-grid-min-small: 140px;--osi-grid-min-medium: 200px;--osi-grid-min-large: 300px;--osi-grid-min-xs: 120px;--osi-grid-min-sm: 140px;--osi-grid-min-md: 160px;--osi-grid-min-lg: 180px;--osi-grid-min-xl: 200px;--osi-grid-min-2xl: 250px;--osi-grid-min-3xl: 280px;--osi-grid-min-4xl: 300px;--osi-card-min-height: 90px;--osi-card-min-height-large: 120px;--osi-card-min-height-xs: 70px;--osi-card-min-height-sm: 80px;--osi-card-min-height-md: 90px;--osi-card-min-height-lg: 95px;--osi-card-min-height-xl: 110px}@media (prefers-color-scheme: dark){:root{--osi-surface: hsl(0, 0%, 8%);--osi-surface-raised: hsl(0, 0%, 12%);--osi-surface-hover: hsl(0, 0%, 16%);--osi-border-muted: hsla(0, 0%, 100%, .04)}}@media (prefers-contrast: high){:root{--osi-border: hsla(0, 0%, 100%, .4);--osi-border-strong: hsla(0, 0%, 100%, .6)}}@media (prefers-reduced-motion: reduce){:root{--osi-duration-fast: 0ms;--osi-duration-normal: 0ms;--osi-duration-medium: 0ms;--osi-duration-slow: 0ms}}.osi-card-container{container-type:inline-size;container-name:card;--card-padding: 4px;--card-gap: .5rem;--card-title-size: 1rem;--section-title-size: .875rem;--field-label-size: .75rem;--field-value-size: .875rem}.masonry-container{--masonry-columns: 1}@media (min-width: 480px){.masonry-container{--masonry-columns: 2}}@media (min-width: 1024px){.masonry-container{--masonry-columns: 3}}@media (min-width: 1280px){.masonry-container{--masonry-columns: 4}}@container card (min-width: 400px){.masonry-container--container-responsive{--masonry-columns: 2}}@container card (min-width: 700px){.masonry-container--container-responsive{--masonry-columns: 3}}@container card (min-width: 1000px){.masonry-container--container-responsive{--masonry-columns: 4}}.ai-section--info .section-field-grid{grid-template-columns:1fr}@media (min-width: 480px){.ai-section--info .section-field-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.ai-section--info .section-field-grid{grid-template-columns:repeat(3,1fr)}}.ai-section--analytics .metric-grid{grid-template-columns:1fr}@media (min-width: 320px){.ai-section--analytics .metric-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 768px){.ai-section--analytics .metric-grid{grid-template-columns:repeat(3,1fr)}}.ai-section--analytics .metric-value{font-size:var(--text-2xl)}.ai-section--timeline .timeline-items{flex-direction:column}@media (min-width: 1024px){.ai-section--timeline .timeline-items{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory}.ai-section--timeline .timeline-items>*{scroll-snap-align:start;min-width:280px}}.ai-section--contact .contact-grid{grid-template-columns:1fr}@media (min-width: 480px){.ai-section--contact .contact-grid{grid-template-columns:repeat(2,1fr)}}.text-responsive{font-size:.875rem;line-height:1.5}.heading-responsive{font-size:1.25rem;line-height:1.2}.space-responsive{padding:.5rem}.gap-responsive{gap:.5rem}.touch-target{min-height:44px;min-width:44px}@media (min-width: 1024px){.touch-target{min-height:36px;min-width:36px}}@media (max-width: 767px){.hide-mobile{display:none!important}}@media (min-width: 768px){.hide-desktop{display:none!important}}.show-mobile{display:none!important}@media (max-width: 767px){.show-mobile{display:block!important}}.show-desktop{display:none!important}@media (min-width: 768px){.show-desktop{display:block!important}}@media print{.osi-card-container{--card-padding: 1rem;box-shadow:none;border:1px solid #ddd;break-inside:avoid}.masonry-container{--masonry-columns: 2;display:block}.masonry-container .masonry-item{break-inside:avoid;margin-bottom:1rem}.hide-print{display:none!important}}:root{--spacing-none: 0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 20px;--spacing-xl: 28px;--spacing-2xl: 40px;--spacing-3xl: 56px;--spacing-compact-xs: 3px;--spacing-compact-sm: 6px;--spacing-compact-md: 9px;--spacing-compact-base: 12px;--spacing-compact-lg: 16px;--section-card-min-height: 110px;--section-card-compact-height: 90px;--section-header-gap: 2px;--section-content-gap: var(--spacing-sm);--section-card-gap: var(--spacing-md);--section-card-padding: var(--spacing-md)}:root{--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75}:root{--radius-none: 0;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 7px;--radius-xl: 10px;--radius-2xl: 14px;--radius-full: 9999px}:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25)}@media (prefers-color-scheme: dark){:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5)}}:root{--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .6, 1);--transition-base: all var(--duration-base) var(--ease-out);--transition-fast: all var(--duration-fast) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: background-color var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);--transition-shadow: box-shadow var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out)}:root{--z-base: 1;--z-dropdown: 100;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 9999}:root{--blur-none: 0;--blur-sm: 4px;--blur-md: 8px;--blur-lg: 16px;--blur-xl: 24px;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: var(--blur-md)}@media (prefers-color-scheme: dark){:root{--glass-bg: rgba(0, 0, 0, .4);--glass-border: rgba(255, 255, 255, .1)}}:root{--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1}:root{--surface-base: var(--osi-section-item-background);--surface-raised: var(--osi-section-item-background-hover);--surface-overlay: var(--glass-bg);--border-light: rgba(var(--foreground-rgb), .08);--border-base: var(--border);--border-strong: rgba(var(--foreground-rgb), .2);--state-hover-opacity: .08;--state-active-opacity: .12;--state-focus-opacity: .16;--state-disabled-opacity: .5}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in-up{0%{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:translateZ(0) scale(.95)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes metal-sweep-ltr{0%{transform:translate(-100%);opacity:0}20%{opacity:.3}50%{opacity:.5}80%{opacity:.3}to{transform:translate(200%);opacity:0}}@keyframes metal-sweep-rtl{0%{transform:translate(200%);opacity:0}20%{opacity:.3}50%{opacity:.5}80%{opacity:.3}to{transform:translate(-100%);opacity:0}}@keyframes section-fade-in{0%{opacity:0}to{opacity:1}}@keyframes section-fade-in-up{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item],.metric-card,.list-item,.analytics-card{transition:none!important;animation:none!important}.unified-card:hover,.section-card:hover,[class*=__card]:hover,[class*=-card]:hover,[class*=__item]:hover,[class*=-item]:hover,.metric-card:hover,.list-item:hover,.analytics-card:hover{transform:none!important}}.unified-card{background:var(--osi-section-item-background);border:var(--osi-section-item-border);border-radius:var(--osi-section-item-border-radius);box-shadow:var(--osi-section-item-shadow);padding:var(--osi-section-item-padding-normal);display:flex;flex-direction:column;gap:var(--osi-section-item-gap);min-height:var(--card-min-height, auto);cursor:pointer;overflow-x:hidden;width:100%!important;max-width:100%!important;box-sizing:border-box!important;text-align:left;word-wrap:break-word;overflow-wrap:break-word;transition:var(--osi-section-item-transition);position:relative;overflow:hidden}.unified-card:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.unified-card:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.unified-card:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.unified-card:before{display:none}}.unified-card:hover{border-color:var(--osi-section-item-border-hover-enhanced-color);box-shadow:var(--osi-section-item-shadow-hover-enhanced)}.unified-card:focus-visible{outline:none}@media (prefers-reduced-motion: reduce){.unified-card{transition:none}}.section-card{background:var(--osi-section-item-background);border:var(--osi-section-item-border);border-radius:var(--osi-section-item-border-radius);box-shadow:var(--osi-section-item-shadow);padding:var(--osi-section-item-padding-normal);display:flex;flex-direction:column;gap:var(--osi-section-item-gap);min-height:var(--card-min-height, auto);cursor:pointer;overflow-x:hidden;width:100%!important;max-width:100%!important;box-sizing:border-box!important;text-align:left;word-wrap:break-word;overflow-wrap:break-word;transition:var(--osi-section-item-transition);position:relative;overflow:hidden}.section-card:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.section-card:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.section-card:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.section-card:before{display:none}}.section-card:hover{border-color:var(--osi-section-item-border-hover-enhanced-color);box-shadow:var(--osi-section-item-shadow-hover-enhanced)}.section-card:focus-visible{outline:none}@media (prefers-reduced-motion: reduce){.section-card{transition:none}}.section-card{width:100%!important;max-width:100%!important;box-sizing:border-box!important}.section-item{transition:border-color var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),box-shadow var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),var(--osi-section-item-transition);position:relative;overflow:hidden}.section-item:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.section-item:hover{border-color:var(--osi-section-item-border-hover-enhanced-color)!important;box-shadow:var(--osi-section-item-shadow-hover-enhanced)!important;background:var(--osi-section-item-background)!important}.section-item:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.section-item:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.section-item{transition:none}.section-item:after{display:none}}.status--completed,.status--success{color:#22c55e;background:#22c55e1a}.status--active,.status--in-progress{color:var(--accent);background:#ff79001a}.status--pending,.status--warning{color:#f59e0b;background:#f59e0b1a}.status--blocked,.status--cancelled,.status--delayed,.status--inactive,.status--error{color:#ef4444;background:#ef44441a}.status--default{color:var(--muted-foreground);background:var(--muted)}.priority--high{color:#ef4444;background:#ef44441a}.priority--medium{color:#f59e0b;background:#f59e0b1a}.priority--low{color:#22c55e;background:#22c55e1a}.priority--default{color:var(--muted-foreground);background:var(--muted)}.masonry-container .masonry-item:nth-child(4n+1) .section-item:before,.masonry-container .masonry-item:nth-child(4n+1) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+1) .section-card:before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+2) .section-item:before,.masonry-container .masonry-item:nth-child(4n+2) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+2) .section-card:before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):before{background:linear-gradient(270deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container .masonry-item:nth-child(4n+1) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+1) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+1) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+2) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+2) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+2) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-rtl .23s ease-out forwards!important}.masonry-container .masonry-item:nth-child(4n+3) .section-item:before,.masonry-container .masonry-item:nth-child(4n+3) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+3) .section-card:before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+4) .section-item:before,.masonry-container .masonry-item:nth-child(4n+4) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+4) .section-card:before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-item:before,.masonry-container .masonry-item[data-col-span=\"3\"] .unified-card:before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-card:before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-item:before,.masonry-container .masonry-item[data-col-span=\"4\"] .unified-card:before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-card:before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-item:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .unified-card:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-card:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-item:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .unified-card:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-card:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):before{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container .masonry-item:nth-child(4n+3) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+3) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+3) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+4) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+4) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+4) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-item:hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] .unified-card:hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-card:hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-item:hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] .unified-card:hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-card:hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-item:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .unified-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-item:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .unified-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-ltr .23s ease-out forwards!important}@supports (grid-template-rows: masonry){.masonry-container--native .masonry-item:nth-child(4n+1) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+1) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+1) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+2) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):before{background:linear-gradient(270deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container--native .masonry-item:nth-child(4n+1) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-rtl .23s ease-out forwards!important}.masonry-container--native .masonry-item:nth-child(4n+3) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+3) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+3) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+4) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):before{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container--native .masonry-item:nth-child(4n+3) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-ltr .23s ease-out forwards!important}}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item]{transition:none;animation:none}}@keyframes item-stream{0%{opacity:0;transform:translate3d(0,var(--osi-motion-distance-sm, 8px),0)}to{opacity:1;transform:translateZ(0)}}.ai-section h1,.ai-section h2,.ai-section h3,.ai-section h4,.ai-section h5,.ai-section h6,.ai-section [class*=title],.ai-section [class*=heading],.ai-section [class*=header]{margin-bottom:.05em!important;line-height:1.3!important}.ai-section br{margin-top:.05em!important;line-height:1.3!important}.ai-section p,.ai-section div,.ai-section span{line-height:1.3!important}.ai-section h1+p,.ai-section h1+div,.ai-section h1+span,.ai-section h2+p,.ai-section h2+div,.ai-section h2+span,.ai-section h3+p,.ai-section h3+div,.ai-section h3+span,.ai-section h4+p,.ai-section h4+div,.ai-section h4+span,.ai-section h5+p,.ai-section h5+div,.ai-section h5+span,.ai-section h6+p,.ai-section h6+div,.ai-section h6+span,.ai-section [class*=title]+p,.ai-section [class*=title]+div,.ai-section [class*=title]+span,.ai-section [class*=heading]+p,.ai-section [class*=heading]+div,.ai-section [class*=heading]+span,.ai-section [class*=header]+p,.ai-section [class*=header]+div,.ai-section [class*=header]+span{margin-top:.05em!important}.ai-section.ai-section--overview .overview-item--single-text .overview-item__value--single-text br{margin-top:7px!important;height:7px!important;line-height:1.3!important;display:block!important;content:\"\"}.ai-section{--section-accent: var(--osi-section-accent);--section-border: var(--osi-section-border);--section-border-hover: var(--osi-section-border-hover);--section-box-shadow: var(--osi-section-shadow);--section-background: var(--osi-section-background);--section-background-hover: var(--osi-section-background-hover);--section-backdrop-filter: var(--osi-section-backdrop-filter);--section-spacing-bottom: var(--osi-section-spacing-bottom, 12px);--section-glow-background: var(--osi-section-glow-background);--section-glow-opacity-hover: var(--osi-section-glow-opacity-hover);--section-title-underline-length: var(--osi-section-title-underline-length);--section-title-underline-hover-length: var(--osi-section-title-underline-hover-length);--section-title-underline-height: var(--osi-section-title-underline-height);--section-title-underline-offset: var(--osi-section-title-underline-offset);--section-title-hover-color: var(--osi-section-title-hover-color);width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;margin-bottom:var(--section-spacing-bottom, 12px)!important;margin-top:0!important;margin-left:0!important;margin-right:0!important;box-sizing:border-box!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;contain:layout style;transition:border-color var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),box-shadow var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1)}.ai-section *{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.ai-section:not(.masonry-item .ai-section){position:relative;display:flex;flex-direction:column;gap:var(--section-card-gap);padding:0!important;border-radius:var(--osi-section-item-border-radius);background:var(--section-background);border:var(--section-border);box-shadow:var(--section-box-shadow);width:100%!important;max-width:100%!important;box-sizing:border-box!important;transition:border-color var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),box-shadow var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1)}.ai-section:not(.masonry-item .ai-section):hover{border-color:var(--osi-section-border-hover-enhanced-color);box-shadow:var(--osi-section-shadow-hover-enhanced)}@media (prefers-reduced-motion: reduce){.ai-section:not(.masonry-item .ai-section){transition:none}}.masonry-item .ai-section{display:flex!important;flex-direction:column!important;gap:var(--osi-section-gap, 8px)!important;height:auto!important}.ai-section:hover{border-color:var(--osi-section-border-hover-enhanced-color);box-shadow:var(--osi-section-shadow-hover-enhanced)}@media (prefers-reduced-motion: reduce){.ai-section{transition:none}}.ai-section__header{display:flex;flex-direction:column;gap:var(--osi-section-header-gap);width:100%;box-sizing:border-box;flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;padding:0 0 var(--osi-section-header-padding-bottom) 0!important;border-bottom:none!important;background:transparent!important;margin:0!important;flex-wrap:wrap!important;gap:var(--osi-section-header-gap)!important;text-align:left!important}.ai-section__title{font-size:var(--section-title-font-size, .9375rem);font-weight:var(--section-title-font-weight, 700);letter-spacing:var(--section-title-letter-spacing, -.02em);line-height:var(--section-title-line-height, 1.3);color:var(--card-text-primary, #1c1c1f);margin:0;font-size:var(--osi-section-title-font-size)!important;font-weight:700!important;letter-spacing:var(--osi-section-title-letter-spacing)!important;line-height:var(--osi-section-title-line-height)!important;color:var(--osi-section-title-color)!important;opacity:1!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;position:relative!important;transition:var(--osi-section-title-transition)!important;padding:0!important;margin:0 0 var(--osi-section-title-margin-bottom) 0!important;text-align:left!important;font-family:inherit!important;border:none!important}.ai-section__title:before{content:\"\"!important;position:absolute!important;left:0!important;bottom:var(--osi-section-title-underline-offset)!important;width:var(--osi-section-title-underline-length)!important;height:var(--osi-section-title-underline-height)!important;background:var(--osi-section-title-underline-color)!important;border-radius:var(--radius-xs)!important;transition:width .22s ease,opacity .22s ease!important;transform-origin:left!important;opacity:.6!important}.ai-section__title:hover{color:var(--osi-section-title-color)!important}.ai-section__title:hover:before{width:var(--osi-section-title-underline-hover-length)!important;opacity:1!important}.ai-section__icon{display:none!important;width:var(--icon-size-section)!important;height:var(--icon-size-section)!important}.ai-section__details{display:flex!important;flex-direction:column!important;gap:var(--osi-section-header-gap)!important;align-items:flex-start!important;text-align:left!important}.ai-section__description{font-size:var(--section-description-font-size, .75rem);font-weight:400;color:var(--card-text-secondary, rgba(28, 28, 31, .6));line-height:1.3;margin:0;color:var(--osi-section-description-color)!important;letter-spacing:.01em!important;line-height:1.2!important;font-weight:400!important;overflow:hidden!important;text-overflow:ellipsis!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;margin-top:0!important;padding-top:0!important;text-align:left!important;transition:var(--osi-section-description-transition)!important;font-family:inherit!important}.ai-section:hover .ai-section__description{color:var(--osi-section-description-color-hover)!important}.ai-section__badge{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;font-size:.55rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#ff7900;background:#ff79001a;border-radius:4px;white-space:nowrap;display:none!important;padding:var(--tag-padding-y-sm) var(--tag-padding-x)!important;border-radius:var(--radius-sm)!important}.ai-section--contact-card .ai-section__badge,.ai-section--solutions .ai-section__badge,.ai-section--event .ai-section__badge,.ai-section--chart .ai-section__badge,.ai-section--financials .ai-section__badge{display:none!important;align-items:center!important;padding:var(--osi-section-badge-padding)!important;background:var(--osi-section-badge-bg)!important;color:var(--osi-section-badge-color)!important;border:none!important;box-shadow:none!important;border-radius:var(--osi-section-border-radius)!important;font-size:var(--card-meta-font-size, .6rem)!important;font-weight:var(--card-meta-font-weight, 500)!important;transition:opacity .2s ease,background .2s ease!important;line-height:1.2!important}.ai-section:hover .ai-section__badge{opacity:1!important;background:var(--osi-section-badge-bg-hover)!important}.ai-section__body{display:flex;flex-direction:column;gap:var(--osi-section-gap-internal);width:100%;box-sizing:border-box;padding:0!important;margin:0!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important}.ai-section .section-empty{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;padding:var(--osi-section-padding)!important;text-align:center!important;color:var(--muted-foreground)!important;min-height:auto!important;border-radius:var(--radius-md)!important;background:var(--osi-section-empty-bg)!important;border:var(--osi-section-empty-border)!important;transition:opacity .2s ease,background .2s ease!important}.ai-section .section-empty lucide-icon{margin-bottom:var(--osi-section-gap)!important;opacity:var(--osi-section-empty-icon-opacity)!important;color:var(--accent)!important;transition:all .2s ease!important}.ai-section .section-empty p{font-size:var(--font-section-description, .85rem)!important;margin:0!important;font-weight:500!important;font-family:inherit!important}.ai-section .section-empty:hover{background:var(--osi-section-empty-bg-hover)!important;border-color:var(--osi-section-empty-border-hover)!important}.ai-section .section-empty:hover lucide-icon{opacity:var(--osi-section-empty-icon-opacity-hover)!important}.ai-section--info{--section-accent: var(--osi-section-accent-info)}.ai-section--analytics{--section-accent: var(--osi-section-accent-analytics)}.ai-section--financials{--section-accent: var(--osi-section-accent-financials)}.ai-section--map{--section-accent: var(--osi-section-accent-map)}.ai-section--network-card{--section-accent: var(--osi-section-accent-network)}.ai-section--contact-card{--section-accent: var(--osi-section-accent-contact)}.ai-section--product{--section-accent: var(--osi-section-accent-product)}.ai-section--solutions{--section-accent: var(--osi-section-accent-solutions)}.ai-section--overview{--section-accent: var(--osi-section-accent-overview)}.ai-section--overview .ai-section__title{font-size:calc(var(--osi-section-title-font-size) - 1.5px)!important}.ai-section--list,.ai-section--info-list{--section-accent: var(--osi-section-accent-list)}.ai-section--event{--section-accent: var(--osi-section-accent-event)}.ai-section--chart{--section-accent: var(--osi-section-accent-chart)}.ai-section--text-reference{--section-accent: var(--osi-section-accent-reference)}.ai-section--quotation{--section-accent: var(--osi-section-accent-quotation)}.ai-card-surface--fullscreen .ai-section{--section-padding: var(--osi-section-padding);--section-spacing-bottom: var(--osi-section-spacing-bottom);--section-gap: var(--osi-section-gap);--section-gap-internal: var(--osi-section-gap-internal);--section-title-underline-length: var(--osi-section-title-underline-length);--section-title-underline-hover-length: var(--osi-section-title-underline-hover-length);--section-title-underline-height: var(--osi-section-title-underline-height);--section-title-underline-offset: var(--osi-section-title-underline-offset);--section-box-shadow: none !important;--section-box-shadow-hover: none !important}.ai-card-surface--fullscreen .masonry-item,.ai-card-surface--fullscreen .masonry-item:hover{box-shadow:var(--osi-section-shadow-fullscreen)!important}.ai-card-surface--fullscreen .ai-section__header{padding:0 0 var(--osi-section-header-padding-bottom) 0!important;gap:var(--osi-section-header-gap)!important}.ai-card-surface--fullscreen .ai-section__title{font-size:var(--card-title-font-size, .95rem)!important}.ai-card-surface--fullscreen .ai-section__body{gap:var(--osi-section-gap-internal)!important}.ai-card-surface--fullscreen .ai-section__description{font-size:var(--card-meta-font-size, .6rem)!important;margin-top:0!important;padding-top:0!important}.section-content{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;display:flex!important;flex-direction:column!important;padding:0!important;margin:0!important}.section-content>*{width:100%!important;max-width:100%!important;box-sizing:border-box!important}.ai-section--faq,.ai-section--faq .list,.ai-section--faq .item{min-width:0!important;width:100%!important;max-width:100%!important}:host{display:block;width:100%;position:relative}.ai-section--overview{position:relative}.overview-grid{display:flex;flex-direction:column;gap:var(--osi-section-item-gap-xs)!important;width:100%;max-width:100%;overflow-x:hidden;box-sizing:border-box}.overview-item{background:var(--osi-section-item-background);border:var(--osi-section-item-border);border-radius:var(--osi-section-item-border-radius);box-shadow:var(--osi-section-item-shadow);padding:var(--osi-section-item-padding-normal);gap:var(--osi-section-item-gap);min-height:var(--card-min-height, auto);cursor:pointer;overflow-x:hidden;width:100%!important;max-width:100%!important;box-sizing:border-box!important;text-align:left;display:flex;flex-direction:column;gap:var(--osi-section-item-gap-xs);padding:var(--space-6) var(--space-8);min-height:auto;max-width:100%;overflow:visible;box-sizing:border-box;word-wrap:break-word;overflow-wrap:break-word;transition:var(--osi-section-item-transition);position:relative;overflow:hidden}.overview-item:focus-visible{outline:none}@media (prefers-reduced-motion: reduce){.overview-item{transition:none}}.overview-item:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.overview-item:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.overview-item:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.overview-item:before{display:none}}.overview-item:hover{border-color:var(--osi-section-item-border-hover-enhanced-color);box-shadow:var(--osi-section-item-shadow-hover-enhanced)}.overview-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:var(--shadow-lg),0 0 0 4px rgba(var(--accent-rgb, 255, 121, 0),.1)}@media (prefers-reduced-motion: reduce){.overview-item{transition:none}.overview-item:hover{box-shadow:var(--shadow-md)}}.overview-item__label{font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-tight);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:var(--osi-section-item-gap-xs);color:var(--osi-muted-foreground, var(--muted-foreground));font-size:.875rem;letter-spacing:.01em}.overview-item__value{color:var(--osi-field-value-color, var(--foreground));font-weight:400;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word;max-width:100%}.overview-item__value ::ng-deep br{display:block;content:\"\";margin-top:8px;line-height:1.3}.overview-item--single-text{padding:var(--space-6) var(--space-8)}.overview-item--single-text .overview-item__value--single-text{white-space:pre-line;line-height:1.3;font-size:.8125rem}.overview-item--single-text .overview-item__value--single-text ::ng-deep br{display:block!important;content:\"\";height:7px!important;margin-top:7px!important;line-height:1.3!important}.overview-item--single-text .overview-item__value--single-text ::ng-deep .section-header{display:block;font-weight:700;font-size:.75rem;letter-spacing:.05em;color:var(--osi-muted-foreground, var(--muted-foreground));margin-top:.25em;margin-bottom:.05em;text-transform:uppercase}.overview-item--single-text .overview-item__value--single-text ::ng-deep .section-header:first-child{margin-top:0}.ai-section--overview .overview-item--single-text .overview-item__value--single-text ::ng-deep br{display:block!important;content:\"\";height:7px!important;margin-top:7px!important;line-height:1.3!important}@media (max-width: 767px){.overview-item{padding:var(--space-5) var(--space-6)}}@media (max-width: 479px){.overview-item{padding:var(--space-4) var(--space-5);gap:var(--osi-section-item-gap-xs)}.overview-item__value{font-size:.9rem}}@media (max-width: 319px){.overview-item{padding:var(--space-4) var(--space-5)}.overview-item__value{font-size:.875rem}}@media (prefers-reduced-motion: reduce){.overview-item{transition:none}.overview-item:hover{transform:none}}@media (prefers-contrast: high){.overview-item{border:1px solid var(--border, var(--osi-border))}}.ai-section--overview .overview-section-copy-btn,.section-content .overview-section-copy-btn,.overview-section-copy-btn{all:unset!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;position:absolute!important;top:0!important;right:0!important;flex-shrink:0!important;width:12px!important;min-width:12px!important;max-width:12px!important;height:12px!important;min-height:12px!important;max-height:12px!important;padding:0!important;border:none!important;border-radius:0!important;color:var(--muted-foreground, rgba(255, 255, 255, .6))!important;background:transparent!important;cursor:pointer!important;transition:color .2s ease,opacity .2s ease!important;opacity:.5!important;z-index:10!important;box-sizing:border-box!important}.overview-section-copy-btn:hover{color:var(--color-brand, #ff7900)!important;background:transparent!important;opacity:1!important}.overview-section-copy-btn:active{color:var(--color-brand, #ff7900)!important;background:transparent!important;opacity:.7!important}.overview-section-copy-btn:focus-visible{outline:2px solid var(--color-brand, #ff7900)!important;outline-offset:2px!important;color:var(--color-brand, #ff7900)!important;opacity:1!important}.overview-section-copy-btn lucide-icon{display:inline-flex!important;align-items:center!important;justify-content:center!important;vertical-align:middle!important}.overview-section-copy-btn lucide-icon svg{display:block!important;width:inherit!important;height:inherit!important;stroke:currentColor!important;fill:none!important;stroke-width:2!important;stroke-linecap:round!important;stroke-linejoin:round!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SectionHeaderComponent, selector: "lib-section-header", inputs: ["title", "description", "level", "headerClass", "titleClass", "descriptionClass"] }, { kind: "component", type: EmptyStateComponent, selector: "lib-empty-state", inputs: ["message", "icon", "actionLabel", "variant", "size", "containerClass"], outputs: ["action"] }, { kind: "ngmodule", type: LucideIconsModule }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }] }); }
256
+ }
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: OverviewSectionComponent, decorators: [{
258
+ type: Component,
259
+ args: [{ selector: 'lib-overview-section', standalone: true, imports: [CommonModule, SectionHeaderComponent, EmptyStateComponent, LucideIconsModule], template: "<div class=\"ai-section ai-section--overview section-content\">\n <button\n type=\"button\"\n class=\"overview-section-copy-btn\"\n [attr.aria-label]=\"'Copy section: ' + (section.title || 'Overview')\"\n title=\"Copy section content\"\n (click)=\"onCopySection()\"\n (keydown.enter)=\"onCopySection()\"\n (keydown.space)=\"$event.preventDefault(); onCopySection()\"\n >\n <lucide-icon name=\"copy\" [size]=\"12\" aria-hidden=\"true\"></lucide-icon>\n </button>\n <lib-section-header *ngIf=\"section.title\" [title]=\"section.title\" [description]=\"section.description\">\n </lib-section-header>\n\n <div class=\"overview-grid\" *ngIf=\"section.fields?.length\">\n <div class=\"overview-item\" *ngFor=\"let field of section.fields\" [class.overview-item--single-text]=\"!field.label\">\n <div class=\"overview-item__label\" *ngIf=\"field.label\">{{ field.label }}</div>\n <div\n class=\"overview-item__value\"\n [innerHTML]=\"formatFieldValue(field)\"\n [class.overview-item__value--single-text]=\"!field.label\"\n ></div>\n </div>\n </div>\n\n <lib-empty-state *ngIf=\"!section.fields?.length\" message=\"No overview data\" icon=\"\uD83D\uDCCB\" variant=\"minimal\">\n </lib-empty-state>\n</div>\n", styles: [":root{--osi-spacing-2px: 2px;--osi-spacing-4px: 4px;--osi-spacing-6px: 6px;--osi-spacing-8px: 8px;--osi-spacing-10px: 10px;--osi-spacing-xs: 4px;--osi-spacing-sm: 8px;--osi-spacing-md: 12px;--osi-spacing-lg: 16px;--osi-spacing-xl: 24px;--osi-spacing-2xl: 32px;--osi-spacing-3xl: 48px;--osi-section-header-gap: 2px;--osi-section-padding: var(--osi-spacing-sm);--osi-section-gap: var(--osi-spacing-md);--osi-item-padding: var(--osi-spacing-sm);--osi-item-gap: var(--osi-spacing-xs);--osi-element-gap: 2px;--osi-text-xs: .75rem;--osi-text-sm: .875rem;--osi-text-base: 1rem;--osi-text-md: 1.125rem;--osi-text-lg: 1.25rem;--osi-text-xl: 1.5rem;--osi-text-2xl: 1.875rem;--osi-text-3xl: 2.25rem;--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--osi-font-normal: 400;--osi-font-medium: 500;--osi-font-semibold: 600;--osi-font-bold: 700;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--osi-leading-tight: 1.25;--osi-leading-snug: 1.375;--osi-leading-normal: 1.5;--osi-leading-relaxed: 1.625;--osi-leading-loose: 2;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75;--osi-tracking-tight: -.025em;--osi-tracking-normal: 0;--osi-tracking-wide: .025em;--osi-tracking-wider: .05em;--osi-surface: hsl(0, 0%, 10%);--osi-surface-raised: hsl(0, 0%, 15%);--osi-surface-hover: hsl(0, 0%, 20%);--osi-surface-subtle: hsl(0, 0%, 12%);--osi-foreground: var( --foreground, hsl(0, 0%, 95%) );--osi-foreground-strong: var(--foreground, hsl(0, 0%, 100%));--osi-muted-foreground: var( --muted-foreground, hsl(0, 0%, 60%) );--osi-disabled-foreground: var(--muted-foreground, hsl(0, 0%, 40%));--osi-accent: hsl(25, 100%, 50%);--osi-accent-bright: hsl(25, 100%, 60%);--osi-accent-muted: hsl(25, 50%, 40%);--osi-success: hsl(142, 71%, 45%);--osi-success-bg: hsla(142, 71%, 45%, .15);--osi-success-bright: hsl(142, 71%, 55%);--osi-error: hsl(0, 84%, 60%);--osi-error-bg: hsla(0, 84%, 60%, .15);--osi-error-bright: hsl(0, 84%, 70%);--osi-warning: hsl(45, 93%, 47%);--osi-warning-bg: hsla(45, 93%, 47%, .15);--osi-warning-bright: hsl(45, 93%, 57%);--osi-info: hsl(221, 83%, 53%);--osi-info-bg: hsla(221, 83%, 53%, .15);--osi-info-bright: hsl(221, 83%, 63%);--osi-border: hsla(0, 0%, 100%, .2);--osi-border-muted: hsla(0, 0%, 100%, .06);--osi-border-strong: hsla(0, 0%, 100%, .35);--osi-radius-none: 0;--osi-radius-xs: 2px;--osi-radius-sm: 4px;--osi-radius-md: 8px;--osi-radius-lg: 12px;--osi-radius-xl: 16px;--osi-radius-full: 9999px;--osi-shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--osi-shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--osi-shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--osi-shadow-xl: 0 20px 25px rgba(0, 0, 0, .15);--osi-shadow-2xl: 0 25px 50px rgba(0, 0, 0, .25);--osi-duration-fast: .15s;--osi-duration-normal: .2s;--osi-duration-medium: .3s;--osi-duration-slow: .6s;--osi-ease-linear: linear;--osi-ease-in: cubic-bezier(.4, 0, 1, 1);--osi-ease-out: cubic-bezier(0, 0, .2, 1);--osi-ease-in-out: cubic-bezier(.4, 0, .2, 1);--osi-ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--osi-z-base: 0;--osi-z-raised: 10;--osi-z-dropdown: 100;--osi-z-fixed: 300;--osi-z-modal: 400;--osi-z-popover: 500;--osi-z-tooltip: 600;--osi-grid-gap: var(--osi-spacing-md);--osi-grid-row-gap: var(--osi-grid-gap);--osi-grid-column-gap: var(--osi-grid-gap);--osi-grid-min-small: 140px;--osi-grid-min-medium: 200px;--osi-grid-min-large: 300px;--osi-grid-min-xs: 120px;--osi-grid-min-sm: 140px;--osi-grid-min-md: 160px;--osi-grid-min-lg: 180px;--osi-grid-min-xl: 200px;--osi-grid-min-2xl: 250px;--osi-grid-min-3xl: 280px;--osi-grid-min-4xl: 300px;--osi-card-min-height: 90px;--osi-card-min-height-large: 120px;--osi-card-min-height-xs: 70px;--osi-card-min-height-sm: 80px;--osi-card-min-height-md: 90px;--osi-card-min-height-lg: 95px;--osi-card-min-height-xl: 110px}@media (prefers-color-scheme: dark){:root{--osi-surface: hsl(0, 0%, 8%);--osi-surface-raised: hsl(0, 0%, 12%);--osi-surface-hover: hsl(0, 0%, 16%);--osi-border-muted: hsla(0, 0%, 100%, .04)}}@media (prefers-contrast: high){:root{--osi-border: hsla(0, 0%, 100%, .4);--osi-border-strong: hsla(0, 0%, 100%, .6)}}@media (prefers-reduced-motion: reduce){:root{--osi-duration-fast: 0ms;--osi-duration-normal: 0ms;--osi-duration-medium: 0ms;--osi-duration-slow: 0ms}}.osi-card-container{container-type:inline-size;container-name:card;--card-padding: 4px;--card-gap: .5rem;--card-title-size: 1rem;--section-title-size: .875rem;--field-label-size: .75rem;--field-value-size: .875rem}.masonry-container{--masonry-columns: 1}@media (min-width: 480px){.masonry-container{--masonry-columns: 2}}@media (min-width: 1024px){.masonry-container{--masonry-columns: 3}}@media (min-width: 1280px){.masonry-container{--masonry-columns: 4}}@container card (min-width: 400px){.masonry-container--container-responsive{--masonry-columns: 2}}@container card (min-width: 700px){.masonry-container--container-responsive{--masonry-columns: 3}}@container card (min-width: 1000px){.masonry-container--container-responsive{--masonry-columns: 4}}.ai-section--info .section-field-grid{grid-template-columns:1fr}@media (min-width: 480px){.ai-section--info .section-field-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.ai-section--info .section-field-grid{grid-template-columns:repeat(3,1fr)}}.ai-section--analytics .metric-grid{grid-template-columns:1fr}@media (min-width: 320px){.ai-section--analytics .metric-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 768px){.ai-section--analytics .metric-grid{grid-template-columns:repeat(3,1fr)}}.ai-section--analytics .metric-value{font-size:var(--text-2xl)}.ai-section--timeline .timeline-items{flex-direction:column}@media (min-width: 1024px){.ai-section--timeline .timeline-items{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory}.ai-section--timeline .timeline-items>*{scroll-snap-align:start;min-width:280px}}.ai-section--contact .contact-grid{grid-template-columns:1fr}@media (min-width: 480px){.ai-section--contact .contact-grid{grid-template-columns:repeat(2,1fr)}}.text-responsive{font-size:.875rem;line-height:1.5}.heading-responsive{font-size:1.25rem;line-height:1.2}.space-responsive{padding:.5rem}.gap-responsive{gap:.5rem}.touch-target{min-height:44px;min-width:44px}@media (min-width: 1024px){.touch-target{min-height:36px;min-width:36px}}@media (max-width: 767px){.hide-mobile{display:none!important}}@media (min-width: 768px){.hide-desktop{display:none!important}}.show-mobile{display:none!important}@media (max-width: 767px){.show-mobile{display:block!important}}.show-desktop{display:none!important}@media (min-width: 768px){.show-desktop{display:block!important}}@media print{.osi-card-container{--card-padding: 1rem;box-shadow:none;border:1px solid #ddd;break-inside:avoid}.masonry-container{--masonry-columns: 2;display:block}.masonry-container .masonry-item{break-inside:avoid;margin-bottom:1rem}.hide-print{display:none!important}}:root{--spacing-none: 0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 20px;--spacing-xl: 28px;--spacing-2xl: 40px;--spacing-3xl: 56px;--spacing-compact-xs: 3px;--spacing-compact-sm: 6px;--spacing-compact-md: 9px;--spacing-compact-base: 12px;--spacing-compact-lg: 16px;--section-card-min-height: 110px;--section-card-compact-height: 90px;--section-header-gap: 2px;--section-content-gap: var(--spacing-sm);--section-card-gap: var(--spacing-md);--section-card-padding: var(--spacing-md)}:root{--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75}:root{--radius-none: 0;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 7px;--radius-xl: 10px;--radius-2xl: 14px;--radius-full: 9999px}:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25)}@media (prefers-color-scheme: dark){:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5)}}:root{--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .6, 1);--transition-base: all var(--duration-base) var(--ease-out);--transition-fast: all var(--duration-fast) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: background-color var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);--transition-shadow: box-shadow var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out)}:root{--z-base: 1;--z-dropdown: 100;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 9999}:root{--blur-none: 0;--blur-sm: 4px;--blur-md: 8px;--blur-lg: 16px;--blur-xl: 24px;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: var(--blur-md)}@media (prefers-color-scheme: dark){:root{--glass-bg: rgba(0, 0, 0, .4);--glass-border: rgba(255, 255, 255, .1)}}:root{--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1}:root{--surface-base: var(--osi-section-item-background);--surface-raised: var(--osi-section-item-background-hover);--surface-overlay: var(--glass-bg);--border-light: rgba(var(--foreground-rgb), .08);--border-base: var(--border);--border-strong: rgba(var(--foreground-rgb), .2);--state-hover-opacity: .08;--state-active-opacity: .12;--state-focus-opacity: .16;--state-disabled-opacity: .5}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in-up{0%{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:translateZ(0) scale(.95)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes metal-sweep-ltr{0%{transform:translate(-100%);opacity:0}20%{opacity:.3}50%{opacity:.5}80%{opacity:.3}to{transform:translate(200%);opacity:0}}@keyframes metal-sweep-rtl{0%{transform:translate(200%);opacity:0}20%{opacity:.3}50%{opacity:.5}80%{opacity:.3}to{transform:translate(-100%);opacity:0}}@keyframes section-fade-in{0%{opacity:0}to{opacity:1}}@keyframes section-fade-in-up{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item],.metric-card,.list-item,.analytics-card{transition:none!important;animation:none!important}.unified-card:hover,.section-card:hover,[class*=__card]:hover,[class*=-card]:hover,[class*=__item]:hover,[class*=-item]:hover,.metric-card:hover,.list-item:hover,.analytics-card:hover{transform:none!important}}.unified-card{background:var(--osi-section-item-background);border:var(--osi-section-item-border);border-radius:var(--osi-section-item-border-radius);box-shadow:var(--osi-section-item-shadow);padding:var(--osi-section-item-padding-normal);display:flex;flex-direction:column;gap:var(--osi-section-item-gap);min-height:var(--card-min-height, auto);cursor:pointer;overflow-x:hidden;width:100%!important;max-width:100%!important;box-sizing:border-box!important;text-align:left;word-wrap:break-word;overflow-wrap:break-word;transition:var(--osi-section-item-transition);position:relative;overflow:hidden}.unified-card:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.unified-card:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.unified-card:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.unified-card:before{display:none}}.unified-card:hover{border-color:var(--osi-section-item-border-hover-enhanced-color);box-shadow:var(--osi-section-item-shadow-hover-enhanced)}.unified-card:focus-visible{outline:none}@media (prefers-reduced-motion: reduce){.unified-card{transition:none}}.section-card{background:var(--osi-section-item-background);border:var(--osi-section-item-border);border-radius:var(--osi-section-item-border-radius);box-shadow:var(--osi-section-item-shadow);padding:var(--osi-section-item-padding-normal);display:flex;flex-direction:column;gap:var(--osi-section-item-gap);min-height:var(--card-min-height, auto);cursor:pointer;overflow-x:hidden;width:100%!important;max-width:100%!important;box-sizing:border-box!important;text-align:left;word-wrap:break-word;overflow-wrap:break-word;transition:var(--osi-section-item-transition);position:relative;overflow:hidden}.section-card:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.section-card:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.section-card:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.section-card:before{display:none}}.section-card:hover{border-color:var(--osi-section-item-border-hover-enhanced-color);box-shadow:var(--osi-section-item-shadow-hover-enhanced)}.section-card:focus-visible{outline:none}@media (prefers-reduced-motion: reduce){.section-card{transition:none}}.section-card{width:100%!important;max-width:100%!important;box-sizing:border-box!important}.section-item{transition:border-color var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),box-shadow var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),var(--osi-section-item-transition);position:relative;overflow:hidden}.section-item:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.section-item:hover{border-color:var(--osi-section-item-border-hover-enhanced-color)!important;box-shadow:var(--osi-section-item-shadow-hover-enhanced)!important;background:var(--osi-section-item-background)!important}.section-item:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.section-item:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.section-item{transition:none}.section-item:after{display:none}}.status--completed,.status--success{color:#22c55e;background:#22c55e1a}.status--active,.status--in-progress{color:var(--accent);background:#ff79001a}.status--pending,.status--warning{color:#f59e0b;background:#f59e0b1a}.status--blocked,.status--cancelled,.status--delayed,.status--inactive,.status--error{color:#ef4444;background:#ef44441a}.status--default{color:var(--muted-foreground);background:var(--muted)}.priority--high{color:#ef4444;background:#ef44441a}.priority--medium{color:#f59e0b;background:#f59e0b1a}.priority--low{color:#22c55e;background:#22c55e1a}.priority--default{color:var(--muted-foreground);background:var(--muted)}.masonry-container .masonry-item:nth-child(4n+1) .section-item:before,.masonry-container .masonry-item:nth-child(4n+1) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+1) .section-card:before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+2) .section-item:before,.masonry-container .masonry-item:nth-child(4n+2) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+2) .section-card:before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):before{background:linear-gradient(270deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container .masonry-item:nth-child(4n+1) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+1) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+1) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+2) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+2) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+2) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-rtl .23s ease-out forwards!important}.masonry-container .masonry-item:nth-child(4n+3) .section-item:before,.masonry-container .masonry-item:nth-child(4n+3) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+3) .section-card:before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+4) .section-item:before,.masonry-container .masonry-item:nth-child(4n+4) .unified-card:before,.masonry-container .masonry-item:nth-child(4n+4) .section-card:before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-item:before,.masonry-container .masonry-item[data-col-span=\"3\"] .unified-card:before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-card:before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-item:before,.masonry-container .masonry-item[data-col-span=\"4\"] .unified-card:before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-card:before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-item:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .unified-card:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-card:before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-item:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .unified-card:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-card:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-item:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .unified-card:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-card:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):before{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container .masonry-item:nth-child(4n+3) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+3) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+3) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+4) .section-item:hover:before,.masonry-container .masonry-item:nth-child(4n+4) .unified-card:hover:before,.masonry-container .masonry-item:nth-child(4n+4) .section-card:hover:before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-item:hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] .unified-card:hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] .section-card:hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-item:hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] .unified-card:hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] .section-card:hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):hover:before,.masonry-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-item:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .unified-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) .section-card:hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-item:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .unified-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) .section-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"2\"]:nth-child(odd) [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-item:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .unified-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] .section-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"3\"] [class*=-item]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-item:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .unified-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] .section-card:hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-card]:not([class*=__]):hover:before,.masonry-grid-container .masonry-item[data-col-span=\"4\"] [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-ltr .23s ease-out forwards!important}@supports (grid-template-rows: masonry){.masonry-container--native .masonry-item:nth-child(4n+1) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+1) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+1) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+2) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):before{background:linear-gradient(270deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container--native .masonry-item:nth-child(4n+1) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+1) [class*=-item]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+2) [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-rtl .23s ease-out forwards!important}.masonry-container--native .masonry-item:nth-child(4n+3) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+3) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+3) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-item:before,.masonry-container--native .masonry-item:nth-child(4n+4) .unified-card:before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-card:before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):before{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%)!important}.masonry-container--native .masonry-item:nth-child(4n+3) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+3) [class*=-item]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-item:hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) .unified-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) .section-card:hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-card]:not([class*=__]):hover:before,.masonry-container--native .masonry-item:nth-child(4n+4) [class*=-item]:not([class*=__]):hover:before{animation:metal-sweep-ltr .23s ease-out forwards!important}}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item]{transition:none;animation:none}}@keyframes item-stream{0%{opacity:0;transform:translate3d(0,var(--osi-motion-distance-sm, 8px),0)}to{opacity:1;transform:translateZ(0)}}.ai-section h1,.ai-section h2,.ai-section h3,.ai-section h4,.ai-section h5,.ai-section h6,.ai-section [class*=title],.ai-section [class*=heading],.ai-section [class*=header]{margin-bottom:.05em!important;line-height:1.3!important}.ai-section br{margin-top:.05em!important;line-height:1.3!important}.ai-section p,.ai-section div,.ai-section span{line-height:1.3!important}.ai-section h1+p,.ai-section h1+div,.ai-section h1+span,.ai-section h2+p,.ai-section h2+div,.ai-section h2+span,.ai-section h3+p,.ai-section h3+div,.ai-section h3+span,.ai-section h4+p,.ai-section h4+div,.ai-section h4+span,.ai-section h5+p,.ai-section h5+div,.ai-section h5+span,.ai-section h6+p,.ai-section h6+div,.ai-section h6+span,.ai-section [class*=title]+p,.ai-section [class*=title]+div,.ai-section [class*=title]+span,.ai-section [class*=heading]+p,.ai-section [class*=heading]+div,.ai-section [class*=heading]+span,.ai-section [class*=header]+p,.ai-section [class*=header]+div,.ai-section [class*=header]+span{margin-top:.05em!important}.ai-section.ai-section--overview .overview-item--single-text .overview-item__value--single-text br{margin-top:7px!important;height:7px!important;line-height:1.3!important;display:block!important;content:\"\"}.ai-section{--section-accent: var(--osi-section-accent);--section-border: var(--osi-section-border);--section-border-hover: var(--osi-section-border-hover);--section-box-shadow: var(--osi-section-shadow);--section-background: var(--osi-section-background);--section-background-hover: var(--osi-section-background-hover);--section-backdrop-filter: var(--osi-section-backdrop-filter);--section-spacing-bottom: var(--osi-section-spacing-bottom, 12px);--section-glow-background: var(--osi-section-glow-background);--section-glow-opacity-hover: var(--osi-section-glow-opacity-hover);--section-title-underline-length: var(--osi-section-title-underline-length);--section-title-underline-hover-length: var(--osi-section-title-underline-hover-length);--section-title-underline-height: var(--osi-section-title-underline-height);--section-title-underline-offset: var(--osi-section-title-underline-offset);--section-title-hover-color: var(--osi-section-title-hover-color);width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;margin-bottom:var(--section-spacing-bottom, 12px)!important;margin-top:0!important;margin-left:0!important;margin-right:0!important;box-sizing:border-box!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;contain:layout style;transition:border-color var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),box-shadow var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1)}.ai-section *{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.ai-section:not(.masonry-item .ai-section){position:relative;display:flex;flex-direction:column;gap:var(--section-card-gap);padding:0!important;border-radius:var(--osi-section-item-border-radius);background:var(--section-background);border:var(--section-border);box-shadow:var(--section-box-shadow);width:100%!important;max-width:100%!important;box-sizing:border-box!important;transition:border-color var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1),box-shadow var(--osi-card-transition-normal, .22s) cubic-bezier(.4,0,.2,1)}.ai-section:not(.masonry-item .ai-section):hover{border-color:var(--osi-section-border-hover-enhanced-color);box-shadow:var(--osi-section-shadow-hover-enhanced)}@media (prefers-reduced-motion: reduce){.ai-section:not(.masonry-item .ai-section){transition:none}}.masonry-item .ai-section{display:flex!important;flex-direction:column!important;gap:var(--osi-section-gap, 8px)!important;height:auto!important}.ai-section:hover{border-color:var(--osi-section-border-hover-enhanced-color);box-shadow:var(--osi-section-shadow-hover-enhanced)}@media (prefers-reduced-motion: reduce){.ai-section{transition:none}}.ai-section__header{display:flex;flex-direction:column;gap:var(--osi-section-header-gap);width:100%;box-sizing:border-box;flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;padding:0 0 var(--osi-section-header-padding-bottom) 0!important;border-bottom:none!important;background:transparent!important;margin:0!important;flex-wrap:wrap!important;gap:var(--osi-section-header-gap)!important;text-align:left!important}.ai-section__title{font-size:var(--section-title-font-size, .9375rem);font-weight:var(--section-title-font-weight, 700);letter-spacing:var(--section-title-letter-spacing, -.02em);line-height:var(--section-title-line-height, 1.3);color:var(--card-text-primary, #1c1c1f);margin:0;font-size:var(--osi-section-title-font-size)!important;font-weight:700!important;letter-spacing:var(--osi-section-title-letter-spacing)!important;line-height:var(--osi-section-title-line-height)!important;color:var(--osi-section-title-color)!important;opacity:1!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;position:relative!important;transition:var(--osi-section-title-transition)!important;padding:0!important;margin:0 0 var(--osi-section-title-margin-bottom) 0!important;text-align:left!important;font-family:inherit!important;border:none!important}.ai-section__title:before{content:\"\"!important;position:absolute!important;left:0!important;bottom:var(--osi-section-title-underline-offset)!important;width:var(--osi-section-title-underline-length)!important;height:var(--osi-section-title-underline-height)!important;background:var(--osi-section-title-underline-color)!important;border-radius:var(--radius-xs)!important;transition:width .22s ease,opacity .22s ease!important;transform-origin:left!important;opacity:.6!important}.ai-section__title:hover{color:var(--osi-section-title-color)!important}.ai-section__title:hover:before{width:var(--osi-section-title-underline-hover-length)!important;opacity:1!important}.ai-section__icon{display:none!important;width:var(--icon-size-section)!important;height:var(--icon-size-section)!important}.ai-section__details{display:flex!important;flex-direction:column!important;gap:var(--osi-section-header-gap)!important;align-items:flex-start!important;text-align:left!important}.ai-section__description{font-size:var(--section-description-font-size, .75rem);font-weight:400;color:var(--card-text-secondary, rgba(28, 28, 31, .6));line-height:1.3;margin:0;color:var(--osi-section-description-color)!important;letter-spacing:.01em!important;line-height:1.2!important;font-weight:400!important;overflow:hidden!important;text-overflow:ellipsis!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;margin-top:0!important;padding-top:0!important;text-align:left!important;transition:var(--osi-section-description-transition)!important;font-family:inherit!important}.ai-section:hover .ai-section__description{color:var(--osi-section-description-color-hover)!important}.ai-section__badge{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;font-size:.55rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#ff7900;background:#ff79001a;border-radius:4px;white-space:nowrap;display:none!important;padding:var(--tag-padding-y-sm) var(--tag-padding-x)!important;border-radius:var(--radius-sm)!important}.ai-section--contact-card .ai-section__badge,.ai-section--solutions .ai-section__badge,.ai-section--event .ai-section__badge,.ai-section--chart .ai-section__badge,.ai-section--financials .ai-section__badge{display:none!important;align-items:center!important;padding:var(--osi-section-badge-padding)!important;background:var(--osi-section-badge-bg)!important;color:var(--osi-section-badge-color)!important;border:none!important;box-shadow:none!important;border-radius:var(--osi-section-border-radius)!important;font-size:var(--card-meta-font-size, .6rem)!important;font-weight:var(--card-meta-font-weight, 500)!important;transition:opacity .2s ease,background .2s ease!important;line-height:1.2!important}.ai-section:hover .ai-section__badge{opacity:1!important;background:var(--osi-section-badge-bg-hover)!important}.ai-section__body{display:flex;flex-direction:column;gap:var(--osi-section-gap-internal);width:100%;box-sizing:border-box;padding:0!important;margin:0!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important}.ai-section .section-empty{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;padding:var(--osi-section-padding)!important;text-align:center!important;color:var(--muted-foreground)!important;min-height:auto!important;border-radius:var(--radius-md)!important;background:var(--osi-section-empty-bg)!important;border:var(--osi-section-empty-border)!important;transition:opacity .2s ease,background .2s ease!important}.ai-section .section-empty lucide-icon{margin-bottom:var(--osi-section-gap)!important;opacity:var(--osi-section-empty-icon-opacity)!important;color:var(--accent)!important;transition:all .2s ease!important}.ai-section .section-empty p{font-size:var(--font-section-description, .85rem)!important;margin:0!important;font-weight:500!important;font-family:inherit!important}.ai-section .section-empty:hover{background:var(--osi-section-empty-bg-hover)!important;border-color:var(--osi-section-empty-border-hover)!important}.ai-section .section-empty:hover lucide-icon{opacity:var(--osi-section-empty-icon-opacity-hover)!important}.ai-section--info{--section-accent: var(--osi-section-accent-info)}.ai-section--analytics{--section-accent: var(--osi-section-accent-analytics)}.ai-section--financials{--section-accent: var(--osi-section-accent-financials)}.ai-section--map{--section-accent: var(--osi-section-accent-map)}.ai-section--network-card{--section-accent: var(--osi-section-accent-network)}.ai-section--contact-card{--section-accent: var(--osi-section-accent-contact)}.ai-section--product{--section-accent: var(--osi-section-accent-product)}.ai-section--solutions{--section-accent: var(--osi-section-accent-solutions)}.ai-section--overview{--section-accent: var(--osi-section-accent-overview)}.ai-section--overview .ai-section__title{font-size:calc(var(--osi-section-title-font-size) - 1.5px)!important}.ai-section--list,.ai-section--info-list{--section-accent: var(--osi-section-accent-list)}.ai-section--event{--section-accent: var(--osi-section-accent-event)}.ai-section--chart{--section-accent: var(--osi-section-accent-chart)}.ai-section--text-reference{--section-accent: var(--osi-section-accent-reference)}.ai-section--quotation{--section-accent: var(--osi-section-accent-quotation)}.ai-card-surface--fullscreen .ai-section{--section-padding: var(--osi-section-padding);--section-spacing-bottom: var(--osi-section-spacing-bottom);--section-gap: var(--osi-section-gap);--section-gap-internal: var(--osi-section-gap-internal);--section-title-underline-length: var(--osi-section-title-underline-length);--section-title-underline-hover-length: var(--osi-section-title-underline-hover-length);--section-title-underline-height: var(--osi-section-title-underline-height);--section-title-underline-offset: var(--osi-section-title-underline-offset);--section-box-shadow: none !important;--section-box-shadow-hover: none !important}.ai-card-surface--fullscreen .masonry-item,.ai-card-surface--fullscreen .masonry-item:hover{box-shadow:var(--osi-section-shadow-fullscreen)!important}.ai-card-surface--fullscreen .ai-section__header{padding:0 0 var(--osi-section-header-padding-bottom) 0!important;gap:var(--osi-section-header-gap)!important}.ai-card-surface--fullscreen .ai-section__title{font-size:var(--card-title-font-size, .95rem)!important}.ai-card-surface--fullscreen .ai-section__body{gap:var(--osi-section-gap-internal)!important}.ai-card-surface--fullscreen .ai-section__description{font-size:var(--card-meta-font-size, .6rem)!important;margin-top:0!important;padding-top:0!important}.section-content{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;display:flex!important;flex-direction:column!important;padding:0!important;margin:0!important}.section-content>*{width:100%!important;max-width:100%!important;box-sizing:border-box!important}.ai-section--faq,.ai-section--faq .list,.ai-section--faq .item{min-width:0!important;width:100%!important;max-width:100%!important}:host{display:block;width:100%;position:relative}.ai-section--overview{position:relative}.overview-grid{display:flex;flex-direction:column;gap:var(--osi-section-item-gap-xs)!important;width:100%;max-width:100%;overflow-x:hidden;box-sizing:border-box}.overview-item{background:var(--osi-section-item-background);border:var(--osi-section-item-border);border-radius:var(--osi-section-item-border-radius);box-shadow:var(--osi-section-item-shadow);padding:var(--osi-section-item-padding-normal);gap:var(--osi-section-item-gap);min-height:var(--card-min-height, auto);cursor:pointer;overflow-x:hidden;width:100%!important;max-width:100%!important;box-sizing:border-box!important;text-align:left;display:flex;flex-direction:column;gap:var(--osi-section-item-gap-xs);padding:var(--space-6) var(--space-8);min-height:auto;max-width:100%;overflow:visible;box-sizing:border-box;word-wrap:break-word;overflow-wrap:break-word;transition:var(--osi-section-item-transition);position:relative;overflow:hidden}.overview-item:focus-visible{outline:none}@media (prefers-reduced-motion: reduce){.overview-item{transition:none}}.overview-item:before{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;border-radius:inherit;animation:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 20%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 60%,transparent 100%);width:50%;mix-blend-mode:overlay}.overview-item:hover:before{opacity:1;animation:metal-sweep-ltr .23s ease-out forwards}.overview-item:not(:hover):before{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.overview-item:before{display:none}}.overview-item:hover{border-color:var(--osi-section-item-border-hover-enhanced-color);box-shadow:var(--osi-section-item-shadow-hover-enhanced)}.overview-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:var(--shadow-lg),0 0 0 4px rgba(var(--accent-rgb, 255, 121, 0),.1)}@media (prefers-reduced-motion: reduce){.overview-item{transition:none}.overview-item:hover{box-shadow:var(--shadow-md)}}.overview-item__label{font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-tight);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:var(--osi-section-item-gap-xs);color:var(--osi-muted-foreground, var(--muted-foreground));font-size:.875rem;letter-spacing:.01em}.overview-item__value{color:var(--osi-field-value-color, var(--foreground));font-weight:400;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word;max-width:100%}.overview-item__value ::ng-deep br{display:block;content:\"\";margin-top:8px;line-height:1.3}.overview-item--single-text{padding:var(--space-6) var(--space-8)}.overview-item--single-text .overview-item__value--single-text{white-space:pre-line;line-height:1.3;font-size:.8125rem}.overview-item--single-text .overview-item__value--single-text ::ng-deep br{display:block!important;content:\"\";height:7px!important;margin-top:7px!important;line-height:1.3!important}.overview-item--single-text .overview-item__value--single-text ::ng-deep .section-header{display:block;font-weight:700;font-size:.75rem;letter-spacing:.05em;color:var(--osi-muted-foreground, var(--muted-foreground));margin-top:.25em;margin-bottom:.05em;text-transform:uppercase}.overview-item--single-text .overview-item__value--single-text ::ng-deep .section-header:first-child{margin-top:0}.ai-section--overview .overview-item--single-text .overview-item__value--single-text ::ng-deep br{display:block!important;content:\"\";height:7px!important;margin-top:7px!important;line-height:1.3!important}@media (max-width: 767px){.overview-item{padding:var(--space-5) var(--space-6)}}@media (max-width: 479px){.overview-item{padding:var(--space-4) var(--space-5);gap:var(--osi-section-item-gap-xs)}.overview-item__value{font-size:.9rem}}@media (max-width: 319px){.overview-item{padding:var(--space-4) var(--space-5)}.overview-item__value{font-size:.875rem}}@media (prefers-reduced-motion: reduce){.overview-item{transition:none}.overview-item:hover{transform:none}}@media (prefers-contrast: high){.overview-item{border:1px solid var(--border, var(--osi-border))}}.ai-section--overview .overview-section-copy-btn,.section-content .overview-section-copy-btn,.overview-section-copy-btn{all:unset!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;position:absolute!important;top:0!important;right:0!important;flex-shrink:0!important;width:12px!important;min-width:12px!important;max-width:12px!important;height:12px!important;min-height:12px!important;max-height:12px!important;padding:0!important;border:none!important;border-radius:0!important;color:var(--muted-foreground, rgba(255, 255, 255, .6))!important;background:transparent!important;cursor:pointer!important;transition:color .2s ease,opacity .2s ease!important;opacity:.5!important;z-index:10!important;box-sizing:border-box!important}.overview-section-copy-btn:hover{color:var(--color-brand, #ff7900)!important;background:transparent!important;opacity:1!important}.overview-section-copy-btn:active{color:var(--color-brand, #ff7900)!important;background:transparent!important;opacity:.7!important}.overview-section-copy-btn:focus-visible{outline:2px solid var(--color-brand, #ff7900)!important;outline-offset:2px!important;color:var(--color-brand, #ff7900)!important;opacity:1!important}.overview-section-copy-btn lucide-icon{display:inline-flex!important;align-items:center!important;justify-content:center!important;vertical-align:middle!important}.overview-section-copy-btn lucide-icon svg{display:block!important;width:inherit!important;height:inherit!important;stroke:currentColor!important;fill:none!important;stroke-width:2!important;stroke-linecap:round!important;stroke-linejoin:round!important}\n"] }]
260
+ }] });
261
+
262
+ export { OverviewSectionComponent };
263
+ //# sourceMappingURL=osi-cards-lib-overview-section.component-CF3hECQj.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osi-cards-lib-overview-section.component-CF3hECQj.mjs","sources":["../../../projects/osi-cards-lib/src/lib/services/clipboard.service.ts","../../../projects/osi-cards-lib/src/lib/components/sections/overview-section/overview-section.component.ts","../../../projects/osi-cards-lib/src/lib/components/sections/overview-section/overview-section.component.html"],"sourcesContent":["/**\n * Clipboard Service\n *\n * Enhanced clipboard service with history and formatting.\n *\n * @example\n * ```typescript\n * const clipboard = inject(ClipboardService);\n *\n * await clipboard.copy('Hello World');\n * const text = await clipboard.paste();\n * const history = clipboard.getHistory();\n * ```\n */\n\nimport { Injectable, signal } from '@angular/core';\n\nexport interface ClipboardEntry {\n text: string;\n timestamp: Date;\n type: 'text' | 'html' | 'image';\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClipboardService {\n private history = signal<ClipboardEntry[]>([]);\n private maxHistory = 10;\n\n /**\n * Copy text to clipboard\n */\n async copy(text: string): Promise<void> {\n try {\n await navigator.clipboard.writeText(text);\n this.addToHistory(text, 'text');\n } catch (error) {\n this.fallbackCopy(text);\n this.addToHistory(text, 'text');\n }\n }\n\n /**\n * Copy HTML to clipboard\n */\n async copyHTML(html: string, plainText: string): Promise<void> {\n try {\n const blob = new Blob([html], { type: 'text/html' });\n const data = [new ClipboardItem({ 'text/html': blob })];\n await navigator.clipboard.write(data);\n this.addToHistory(plainText, 'html');\n } catch (error) {\n await this.copy(plainText);\n }\n }\n\n /**\n * Paste from clipboard\n */\n async paste(): Promise<string> {\n try {\n return await navigator.clipboard.readText();\n } catch (error) {\n throw new Error('Clipboard read permission denied');\n }\n }\n\n /**\n * Copy element content\n */\n async copyElement(element: HTMLElement): Promise<void> {\n const text = element.textContent || '';\n await this.copy(text);\n }\n\n /**\n * Get clipboard history\n */\n getHistory(): ClipboardEntry[] {\n return this.history();\n }\n\n /**\n * Clear history\n */\n clearHistory(): void {\n this.history.set([]);\n }\n\n /**\n * Add to history\n */\n private addToHistory(text: string, type: ClipboardEntry['type']): void {\n this.history.update((history) => {\n const entry: ClipboardEntry = {\n text,\n timestamp: new Date(),\n type,\n };\n\n const newHistory = [entry, ...history];\n return newHistory.slice(0, this.maxHistory);\n });\n }\n\n /**\n * Fallback copy method\n */\n private fallbackCopy(text: string): void {\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n }\n\n /**\n * Check if clipboard API is available\n */\n isAvailable(): boolean {\n return !!(navigator.clipboard && navigator.clipboard.writeText);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { CardSection } from '../../../models';\nimport { ClipboardService } from '../../../services/clipboard.service';\nimport { SectionLayoutPreferenceService } from '../../../services/section-layout-preference.service';\nimport { LucideIconsModule } from '../../../icons';\nimport { EmptyStateComponent, SectionHeaderComponent } from '../../shared';\nimport { BaseSectionComponent, SectionLayoutPreferences } from '../base-section.component';\n\n/**\n * Overview Section Component\n *\n * Displays high-level summaries, executive dashboards, and key highlights.\n * Supports newline characters in field values for better text formatting.\n */\n@Component({\n selector: 'lib-overview-section',\n standalone: true,\n imports: [CommonModule, SectionHeaderComponent, EmptyStateComponent, LucideIconsModule],\n templateUrl: './overview-section.component.html',\n styleUrl: './overview-section.scss',\n})\nexport class OverviewSectionComponent extends BaseSectionComponent implements OnInit {\n private readonly layoutService = inject(SectionLayoutPreferenceService);\n private readonly clipboardService = inject(ClipboardService);\n\n ngOnInit(): void {\n // Register layout preference function for this section type\n this.layoutService.register('overview', (section: CardSection, availableColumns: number) => {\n return this.calculateOverviewLayoutPreferences(section, availableColumns);\n });\n }\n\n /**\n * Calculate layout preferences for overview section based on content.\n * Overview sections: 1 col default, can expand to 2\n */\n private calculateOverviewLayoutPreferences(\n section: CardSection,\n availableColumns: number\n ): SectionLayoutPreferences {\n const fields = section.fields ?? [];\n const fieldCount = fields.length;\n\n // Overview sections: 1 col default, can expand to 2\n let preferredColumns: 1 | 2 | 3 | 4 = 1;\n if (fieldCount >= 6) {\n preferredColumns = 2;\n }\n\n // Respect explicit preferences\n if (section.preferredColumns) {\n preferredColumns = section.preferredColumns;\n }\n\n preferredColumns = Math.min(preferredColumns, availableColumns) as 1 | 2 | 3 | 4;\n\n return {\n preferredColumns,\n minColumns: (section.minColumns ?? 1) as 1 | 2 | 3 | 4,\n maxColumns: Math.min((section.maxColumns ?? 2) as 1 | 2 | 3 | 4, availableColumns) as\n | 1\n | 2\n | 3\n | 4,\n canShrinkToFill: true,\n shrinkPriority: 15,\n expandOnContent: {\n fieldCount: 6, // Expand to 2 columns at 6+ fields\n },\n };\n }\n\n /**\n * Get layout preferences for overview section.\n */\n override getLayoutPreferences(availableColumns: number = 4): SectionLayoutPreferences {\n const servicePrefs = this.layoutService.getPreferences(this.section, availableColumns);\n if (servicePrefs) {\n return servicePrefs;\n }\n return this.calculateOverviewLayoutPreferences(this.section, availableColumns);\n }\n\n /**\n * Format field value, converting newlines to HTML breaks\n * For single text blocks (empty label), also style uppercase section headers\n */\n formatFieldValue(field: any): string {\n const value = this.getFieldValue(field);\n if (value === null || value === undefined) {\n return '';\n }\n const stringValue = String(value);\n\n // If this is a single text block (no label), style uppercase headers\n if (!field.label) {\n // Split by lines and process each line\n const lines = stringValue.split('\\n');\n const processedLines = lines.map((line, index) => {\n const trimmed = line.trim();\n // Check if line is an uppercase header (all caps, reasonable length, no lowercase letters)\n if (\n trimmed.length > 0 &&\n trimmed.length <= 50 &&\n trimmed === trimmed.toUpperCase() &&\n /^[A-Z\\s&•\\-]+$/.test(trimmed) &&\n trimmed.length >= 2\n ) {\n // This is a section header\n return `<span class=\"section-header\">${trimmed}</span>`;\n }\n return line;\n });\n // Convert newlines to <br> tags for HTML rendering\n return processedLines.join('<br>');\n }\n\n // Convert newlines to <br> tags for HTML rendering\n return stringValue.replace(/\\n/g, '<br>');\n }\n\n /**\n * Copy section content to clipboard\n */\n async onCopySection(): Promise<void> {\n if (!this.section.fields?.length) {\n return;\n }\n\n // Build text content from all fields\n const textParts: string[] = [];\n\n // Add title if available\n if (this.section.title) {\n textParts.push(this.section.title);\n }\n\n // Add description if available\n if (this.section.description) {\n textParts.push(this.section.description);\n }\n\n // Add field content\n this.section.fields.forEach((field) => {\n const value = this.getFieldValue(field);\n if (value !== null && value !== undefined) {\n const stringValue = String(value);\n if (field.label) {\n textParts.push(`${field.label}: ${stringValue}`);\n } else {\n textParts.push(stringValue);\n }\n }\n });\n\n const textToCopy = textParts.join('\\n\\n');\n\n try {\n await this.clipboardService.copy(textToCopy);\n } catch (error) {\n console.error('Failed to copy section content to clipboard', error);\n }\n }\n}\n","<div class=\"ai-section ai-section--overview section-content\">\n <button\n type=\"button\"\n class=\"overview-section-copy-btn\"\n [attr.aria-label]=\"'Copy section: ' + (section.title || 'Overview')\"\n title=\"Copy section content\"\n (click)=\"onCopySection()\"\n (keydown.enter)=\"onCopySection()\"\n (keydown.space)=\"$event.preventDefault(); onCopySection()\"\n >\n <lucide-icon name=\"copy\" [size]=\"12\" aria-hidden=\"true\"></lucide-icon>\n </button>\n <lib-section-header *ngIf=\"section.title\" [title]=\"section.title\" [description]=\"section.description\">\n </lib-section-header>\n\n <div class=\"overview-grid\" *ngIf=\"section.fields?.length\">\n <div class=\"overview-item\" *ngFor=\"let field of section.fields\" [class.overview-item--single-text]=\"!field.label\">\n <div class=\"overview-item__label\" *ngIf=\"field.label\">{{ field.label }}</div>\n <div\n class=\"overview-item__value\"\n [innerHTML]=\"formatFieldValue(field)\"\n [class.overview-item__value--single-text]=\"!field.label\"\n ></div>\n </div>\n </div>\n\n <lib-empty-state *ngIf=\"!section.fields?.length\" message=\"No overview data\" icon=\"📋\" variant=\"minimal\">\n </lib-empty-state>\n</div>\n"],"names":[],"mappings":"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"}