osi-cards-lib 1.5.48 → 1.5.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/osi-cards-lib-osi-cards-lib-Cg-ENr-a.mjs +36196 -0
- package/fesm2022/osi-cards-lib-osi-cards-lib-Cg-ENr-a.mjs.map +1 -0
- package/fesm2022/osi-cards-lib-overview-section.component-BcpudPjx.mjs +263 -0
- package/fesm2022/osi-cards-lib-overview-section.component-BcpudPjx.mjs.map +1 -0
- package/fesm2022/osi-cards-lib.mjs +1 -36456
- package/fesm2022/osi-cards-lib.mjs.map +1 -1
- package/index.d.ts +5 -6
- package/package.json +1 -1
|
@@ -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-Cg-ENr-a.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-BcpudPjx.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"osi-cards-lib-overview-section.component-BcpudPjx.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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"}
|