osi-cards-lib 1.5.36 → 1.5.38

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/index.d.ts CHANGED
@@ -352,7 +352,6 @@ interface CardSection {
352
352
  type: SectionTypeInput;
353
353
  description?: string;
354
354
  subtitle?: string;
355
- columns?: number;
356
355
  /**
357
356
  * Explicit column span override - how many columns this section should span.
358
357
  * Takes precedence over preferredColumns.
@@ -408,28 +407,18 @@ interface CardSection {
408
407
  */
409
408
  layoutPriority?: LayoutPriority;
410
409
  /**
411
- * Priority band for layout ordering and condensation
412
- * - 'critical': Always visible, never condensed (overview, key contacts)
413
- * - 'important': Visible by default, condensed last (analytics, charts)
414
- * - 'standard': Normal priority (info, lists)
415
- * - 'optional': Can be collapsed first when space is limited
416
- */
417
- priority?: 'critical' | 'important' | 'standard' | 'optional';
418
- /**
419
- * Keep this section visible at the top during scroll
410
+ * Priority for layout ordering and condensation (1-3)
411
+ * - 1: Highest priority - Always visible, never condensed (overview, key contacts)
412
+ * - 2: Medium priority - Visible by default, condensed last (analytics, charts)
413
+ * - 3: Lowest priority - Normal priority, can be collapsed first (info, lists)
420
414
  */
421
- sticky?: boolean;
422
- /**
423
- * Group ID to keep related sections together in layout
424
- */
425
- groupId?: string;
415
+ priority?: 1 | 2 | 3;
426
416
  /**
427
417
  * Preferred column position (0-indexed) for column affinity
428
418
  */
429
419
  columnAffinity?: number;
430
420
  width?: number;
431
421
  collapsed?: boolean;
432
- emoji?: string;
433
422
  fields?: CardField[];
434
423
  items?: CardItem[];
435
424
  chartType?: 'bar' | 'line' | 'pie' | 'doughnut';
@@ -1376,15 +1365,13 @@ interface ISectionBuilder {
1376
1365
  withType(type: SectionTypeInput): ISectionBuilder;
1377
1366
  withDescription(description: string): ISectionBuilder;
1378
1367
  withSubtitle(subtitle: string): ISectionBuilder;
1379
- withColumns(columns: number): ISectionBuilder;
1380
1368
  withColSpan(span: number): ISectionBuilder;
1381
1369
  withPreferredColumns(columns: 1 | 2 | 3 | 4): ISectionBuilder;
1382
- withPriority(priority: 'critical' | 'important' | 'standard' | 'optional'): ISectionBuilder;
1370
+ withPriority(priority: 1 | 2 | 3): ISectionBuilder;
1383
1371
  withField(field: CardField): ISectionBuilder;
1384
1372
  withFields(fields: CardField[]): ISectionBuilder;
1385
1373
  withItem(item: CardItem): ISectionBuilder;
1386
1374
  withItems(items: CardItem[]): ISectionBuilder;
1387
- withEmoji(emoji: string): ISectionBuilder;
1388
1375
  withCollapsed(collapsed: boolean): ISectionBuilder;
1389
1376
  withMeta(key: string, value: unknown): ISectionBuilder;
1390
1377
  build(): CardSection;
@@ -1724,8 +1711,6 @@ interface BaseSectionProps {
1724
1711
  description?: string;
1725
1712
  /** Optional subtitle */
1726
1713
  subtitle?: string;
1727
- /** Column configuration */
1728
- columns?: number;
1729
1714
  /** Explicit column span override */
1730
1715
  colSpan?: number;
1731
1716
  /** Preferred column count */
@@ -1744,20 +1729,14 @@ interface BaseSectionProps {
1744
1729
  canGrow?: boolean;
1745
1730
  /** Layout priority (1=highest, 3=lowest) */
1746
1731
  layoutPriority?: 1 | 2 | 3;
1747
- /** Priority band */
1748
- priority?: 'critical' | 'important' | 'standard' | 'optional';
1749
- /** Keep visible during scroll */
1750
- sticky?: boolean;
1751
- /** Group ID for related sections */
1752
- groupId?: string;
1732
+ /** Priority for layout ordering (1-3, where 1 is highest) */
1733
+ priority?: 1 | 2 | 3;
1753
1734
  /** Preferred column position */
1754
1735
  columnAffinity?: number;
1755
1736
  /** Section width */
1756
1737
  width?: number;
1757
1738
  /** Collapsed state */
1758
1739
  collapsed?: boolean;
1759
- /** Optional emoji */
1760
- emoji?: string;
1761
1740
  /** Additional metadata */
1762
1741
  meta?: Record<string, unknown>;
1763
1742
  }
@@ -3547,8 +3526,8 @@ interface SectionManifestEntry {
3547
3526
  usesChartData?: boolean;
3548
3527
  defaultColumns: number;
3549
3528
  supportsCollapse: boolean;
3550
- supportsEmoji: boolean;
3551
3529
  requiresExternalLib?: string;
3530
+ supportsEmoji?: boolean;
3552
3531
  };
3553
3532
  aliases: string[];
3554
3533
  isInternal: boolean;
@@ -5961,6 +5940,10 @@ declare class SectionNormalizationService {
5961
5940
  * Get the priority band for a section type
5962
5941
  */
5963
5942
  getPriorityBandForType(type: string): PriorityBand;
5943
+ /**
5944
+ * Map PriorityBand to numeric priority (1-3)
5945
+ */
5946
+ mapPriorityBandToNumericPriority(priority?: PriorityBand): 1 | 2 | 3;
5964
5947
  /**
5965
5948
  * Maps a priority band string to a numeric layout priority (1-3).
5966
5949
  * Used by the row-first packing algorithm for efficient sorting.
@@ -8690,6 +8673,8 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
8690
8673
  private lastSectionHash;
8691
8674
  private itemKeyMap;
8692
8675
  private readonly HEIGHT_THRESHOLD;
8676
+ private initialLayoutPollingTimeout?;
8677
+ private itemElements;
8693
8678
  ngAfterViewInit(): void;
8694
8679
  ngOnChanges(changes: SimpleChanges): void;
8695
8680
  ngOnDestroy(): void;
@@ -8712,10 +8697,12 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
8712
8697
  private computeSectionHash;
8713
8698
  /**
8714
8699
  * Hybrid reordering: keep critical/important sections in order, reorder the rest
8700
+ * Enhanced to better match section heights for gap filling
8715
8701
  */
8716
8702
  private applyHybridReordering;
8717
8703
  /**
8718
- * Estimate section height for reordering (simple heuristic)
8704
+ * Estimate section height for reordering (enhanced heuristic)
8705
+ * More accurate estimation based on section type and content structure
8719
8706
  */
8720
8707
  private estimateSectionHeight;
8721
8708
  /**
@@ -8732,6 +8719,14 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
8732
8719
  * Cleanup absolute position polyfill observers
8733
8720
  */
8734
8721
  private cleanupAbsolutePositionPolyfill;
8722
+ /**
8723
+ * Cache element references to avoid repeated querySelectorAll calls
8724
+ */
8725
+ private cacheItemElements;
8726
+ /**
8727
+ * Clear cached element references when sections change
8728
+ */
8729
+ private clearItemElementCache;
8735
8730
  /**
8736
8731
  * Observe item resizes for absolute position updates
8737
8732
  */
@@ -8752,6 +8747,11 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
8752
8747
  * Calculate actual column heights from transforms and item heights for diagnostics
8753
8748
  */
8754
8749
  private calculateColumnHeights;
8750
+ /**
8751
+ * Ensure initial layout is calculated with retry mechanism if width is invalid
8752
+ * Simplified: Single RAF + one timeout retry
8753
+ */
8754
+ private ensureInitialLayout;
8755
8755
  static ɵfac: i0.ɵɵFactoryDeclaration<MasonryGridComponent, never>;
8756
8756
  static ɵcmp: i0.ɵɵComponentDeclaration<MasonryGridComponent, "app-masonry-grid", never, { "sections": { "alias": "sections"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; "minColumnWidth": { "alias": "minColumnWidth"; "required": false; }; "maxColumns": { "alias": "maxColumns"; "required": false; }; "containerWidth": { "alias": "containerWidth"; "required": false; }; "isStreaming": { "alias": "isStreaming"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; }, { "sectionEvent": "sectionEvent"; "layoutChange": "layoutChange"; "layoutCompleted": "layoutCompleted"; "layoutLog": "layoutLog"; }, never, never, true, never>;
8757
8757
  }
@@ -10238,7 +10238,7 @@ declare class ContactCardSectionComponent extends BaseSectionComponent implement
10238
10238
  label: string;
10239
10239
  }>;
10240
10240
  /**
10241
- * Get primary contact methods (email + phone, max 2)
10241
+ * Get primary contact methods (email + salesforce, max 2)
10242
10242
  * These are shown in collapsed state
10243
10243
  */
10244
10244
  getPrimaryActions(contact: any): Array<{
@@ -11488,11 +11488,11 @@ declare function packWithZeroGapsGuarantee(sections: CardSection[], columns?: nu
11488
11488
  * Do not edit manually - generated by scripts/generate-version.js
11489
11489
  *
11490
11490
  * Source of truth: version.config.json
11491
- * Last synced: 2025-12-12T21:21:07.663Z
11491
+ * Last synced: 2025-12-15T09:21:17.528Z
11492
11492
  */
11493
11493
  declare const VERSION = "1.5.19";
11494
- declare const BUILD_DATE = "2025-12-12T21:21:07.663Z";
11495
- declare const BUILD_HASH = "34c5699";
11494
+ declare const BUILD_DATE = "2025-12-15T09:21:17.528Z";
11495
+ declare const BUILD_HASH = "9010f4a";
11496
11496
  declare const BUILD_BRANCH = "main";
11497
11497
  interface VersionInfo {
11498
11498
  version: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osi-cards-lib",
3
- "version": "1.5.36",
3
+ "version": "1.5.38",
4
4
  "description": "Standalone OSI Cards library for Angular applications with CSS Layer support for easy style overrides",
5
5
  "keywords": [
6
6
  "angular",
@@ -95,4 +95,4 @@
95
95
  "*.css",
96
96
  "*.scss"
97
97
  ]
98
- }
98
+ }
@@ -167,3 +167,5 @@ if (require.main === module) {
167
167
  }
168
168
 
169
169
  module.exports = { updateAngularJson, findAngularJson };
170
+
171
+
@@ -212,7 +212,6 @@
212
212
 
213
213
  // Semantic z-index
214
214
  --osi-z-dropdown: 1000;
215
- --osi-z-sticky: 1020;
216
215
  --osi-z-fixed: 1030;
217
216
  --osi-z-modal-backdrop: 1040;
218
217
  --osi-z-modal: 1050;
@@ -60,7 +60,15 @@
60
60
  min-height: 0;
61
61
 
62
62
  // Font family - ensure consistent typography
63
- font-family: Helvetica, Helvetica Neue, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Arial, sans-serif !important;
63
+ font-family:
64
+ Helvetica,
65
+ Helvetica Neue,
66
+ -apple-system,
67
+ BlinkMacSystemFont,
68
+ Segoe UI,
69
+ Roboto,
70
+ Arial,
71
+ sans-serif !important;
64
72
 
65
73
  // Preserve 3D transforms for tilt effects
66
74
  perspective: 1200px;
@@ -181,7 +181,11 @@
181
181
  .ai-card-surface:hover {
182
182
  border: var(--osi-card-border-hover, 1px solid rgba(255, 121, 0, 0.5)) !important;
183
183
  background: var(--osi-card-background-hover, rgba(30, 30, 30, 0.8)) !important;
184
- box-shadow: var(--osi-card-shadow-hover, 0 20px 40px -5px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 121, 0, 0.2)) !important;
184
+ box-shadow: var(
185
+ --osi-card-shadow-hover,
186
+ 0 20px 40px -5px rgba(0, 0, 0, 0.4),
187
+ 0 0 0 1px rgba(255, 121, 0, 0.2)
188
+ ) !important;
185
189
  }
186
190
 
187
191
  // Section highlight animation for URL fragment scrolling
@@ -98,8 +98,8 @@
98
98
  }
99
99
 
100
100
  .skeleton-title {
101
- font-size: 1.5rem;
102
- font-weight: 600;
101
+ font-size: var(--card-header-title-font-size, 1.25rem);
102
+ font-weight: var(--card-header-title-font-weight, 700);
103
103
  color: var(--foreground, #1c1c1f);
104
104
  min-height: 2rem;
105
105
  display: flex;
@@ -203,3 +203,7 @@ app-card-streaming-indicator {
203
203
  white-space: nowrap;
204
204
  border: 0;
205
205
  }
206
+
207
+
208
+
209
+
@@ -686,7 +686,7 @@
686
686
  line-height: 1.2;
687
687
  }
688
688
 
689
- /* All sizing is now continuous via clamp() - no discrete breakpoints */
689
+ /* All sizing is now fixed - no responsive behavior */
690
690
 
691
691
  @media (prefers-reduced-motion: reduce) {
692
692
  .ai-card-surface {
@@ -232,7 +232,6 @@ $line-heights: (
232
232
  :root {
233
233
  --z-base: 1;
234
234
  --z-dropdown: 100;
235
- --z-sticky: 200;
236
235
  --z-fixed: 300;
237
236
  --z-modal-backdrop: 400;
238
237
  --z-modal: 500;
@@ -293,14 +293,8 @@
293
293
  // =====================================================================
294
294
 
295
295
  @mixin fluid-type($min-size, $max-size, $min-width: 320px, $max-width: 1200px) {
296
- font-size: clamp(
297
- #{$min-size},
298
- calc(
299
- #{$min-size} + (#{strip-unit($max-size)} - #{strip-unit($min-size)}) *
300
- ((100vw - #{$min-width}) / (#{strip-unit($max-width)} - #{strip-unit($min-width)}))
301
- ),
302
- #{$max-size}
303
- );
296
+ // Fixed font size - no responsive behavior
297
+ font-size: #{$min-size};
304
298
  }
305
299
 
306
300
  @function strip-unit($number) {
@@ -305,10 +305,19 @@ article.ai-card-surface {
305
305
 
306
306
  /* Angular Split variables */
307
307
  --_as-gutter-background-color: var(--as-gutter-background-color, #eeeeee);
308
- --_as-gutter-icon-horizontal: var(--as-gutter-icon-horizontal, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==));
309
- --_as-gutter-icon-vertical: var(--as-gutter-icon-vertical, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC));
310
- --_as-gutter-icon-disabled: var(--as-gutter-icon-disabled, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==));
311
- --_as-transition-duration: var(--as-transition-duration, .3s);
308
+ --_as-gutter-icon-horizontal: var(
309
+ --as-gutter-icon-horizontal,
310
+ url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)
311
+ );
312
+ --_as-gutter-icon-vertical: var(
313
+ --as-gutter-icon-vertical,
314
+ url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)
315
+ );
316
+ --_as-gutter-icon-disabled: var(
317
+ --as-gutter-icon-disabled,
318
+ url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)
319
+ );
320
+ --_as-transition-duration: var(--as-transition-duration, 0.3s);
312
321
  --_as-gutter-disabled-cursor: var(--as-gutter-disabled-cursor, default);
313
322
 
314
323
  /* Additional spacing variables for integration */
@@ -336,7 +345,7 @@ article.ai-card-surface {
336
345
  --section-card-padding: var(--spacing-md);
337
346
 
338
347
  /* Additional typography variables */
339
- --text-md: .875rem;
348
+ --text-md: 0.875rem;
340
349
  --font-light: 300;
341
350
  --font-normal: 400;
342
351
  --font-medium: 500;
@@ -351,28 +360,29 @@ article.ai-card-surface {
351
360
 
352
361
  /* Additional shadow variables */
353
362
  --radius-none: 0;
354
- --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);
355
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);
356
- --glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);
357
- --glow-md: 0 0 20px rgba(var(--accent-rgb), .2);
358
- --glow-lg: 0 0 30px rgba(var(--accent-rgb), .25);
359
- --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);
363
+ --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
364
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
365
+ --glow-sm: 0 0 10px rgba(var(--accent-rgb), 0.15);
366
+ --glow-md: 0 0 20px rgba(var(--accent-rgb), 0.2);
367
+ --glow-lg: 0 0 30px rgba(var(--accent-rgb), 0.25);
368
+ --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.2);
360
369
 
361
370
  /* Additional transition variables */
362
- --duration-base: .2s;
363
- --ease-in: cubic-bezier(.4, 0, 1, 1);
364
- --ease-out: cubic-bezier(0, 0, .2, 1);
365
- --ease-in-out: cubic-bezier(.4, 0, .2, 1);
366
- --ease-smooth: cubic-bezier(.4, 0, .6, 1);
371
+ --duration-base: 0.2s;
372
+ --ease-in: cubic-bezier(0.4, 0, 1, 1);
373
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
374
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
375
+ --ease-smooth: cubic-bezier(0.4, 0, 0.6, 1);
367
376
  --transition-base: all var(--duration-base) var(--ease-out);
368
377
  --transition-fast: all var(--duration-fast) var(--ease-out);
369
378
  --transition-slow: all var(--duration-slow) var(--ease-out);
370
- --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);
379
+ --transition-colors:
380
+ background-color var(--duration-base) var(--ease-out),
381
+ border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);
371
382
  --transition-shadow: box-shadow var(--duration-base) var(--ease-out);
372
383
  --transition-transform: transform var(--duration-base) var(--ease-out);
373
384
 
374
385
  /* Additional z-index variables */
375
- --z-sticky: 200;
376
386
  --z-fixed: 300;
377
387
  --z-modal-backdrop: 400;
378
388
 
@@ -383,21 +393,21 @@ article.ai-card-surface {
383
393
  --blur-lg: 16px;
384
394
  --blur-xl: 24px;
385
395
  --glass-blur: var(--blur-md);
386
- --glass-bg: rgba(0, 0, 0, .4);
387
- --glass-border: rgba(255, 255, 255, .1);
396
+ --glass-bg: rgba(0, 0, 0, 0.4);
397
+ --glass-border: rgba(255, 255, 255, 0.1);
388
398
 
389
399
  /* Opacity scale */
390
400
  --opacity-0: 0;
391
- --opacity-5: .05;
392
- --opacity-10: .1;
393
- --opacity-20: .2;
394
- --opacity-30: .3;
395
- --opacity-40: .4;
396
- --opacity-50: .5;
397
- --opacity-60: .6;
398
- --opacity-70: .7;
399
- --opacity-80: .8;
400
- --opacity-90: .9;
401
+ --opacity-5: 0.05;
402
+ --opacity-10: 0.1;
403
+ --opacity-20: 0.2;
404
+ --opacity-30: 0.3;
405
+ --opacity-40: 0.4;
406
+ --opacity-50: 0.5;
407
+ --opacity-60: 0.6;
408
+ --opacity-70: 0.7;
409
+ --opacity-80: 0.8;
410
+ --opacity-90: 0.9;
401
411
  --opacity-100: 1;
402
412
 
403
413
  /* Surface variables */
@@ -406,15 +416,15 @@ article.ai-card-surface {
406
416
  --surface-overlay: var(--glass-bg);
407
417
 
408
418
  /* Border variables */
409
- --border-light: rgba(var(--foreground-rgb), .08);
419
+ --border-light: rgba(var(--foreground-rgb), 0.08);
410
420
  --border-base: var(--border);
411
- --border-strong: rgba(var(--foreground-rgb), .2);
421
+ --border-strong: rgba(var(--foreground-rgb), 0.2);
412
422
 
413
423
  /* State opacity variables */
414
- --state-hover-opacity: .08;
415
- --state-active-opacity: .12;
416
- --state-focus-opacity: .16;
417
- --state-disabled-opacity: .5;
424
+ --state-hover-opacity: 0.08;
425
+ --state-active-opacity: 0.12;
426
+ --state-focus-opacity: 0.16;
427
+ --state-disabled-opacity: 0.5;
418
428
 
419
429
  /* OSI Card foreground */
420
430
  --osi-card-foreground: #1a1a2e;
@@ -447,7 +457,7 @@ article.ai-card-surface {
447
457
  --tw-ring-inset: ;
448
458
  --tw-ring-offset-width: 0px;
449
459
  --tw-ring-offset-color: #fff;
450
- --tw-ring-color: rgb(59 130 246 / .5);
460
+ --tw-ring-color: rgb(59 130 246 / 0.5);
451
461
  --tw-ring-offset-shadow: 0 0 #0000;
452
462
  --tw-ring-shadow: 0 0 #0000;
453
463
  --tw-shadow: 0 0 #0000;
@@ -142,7 +142,6 @@
142
142
  --osi-z-base: 0;
143
143
  --osi-z-raised: 10;
144
144
  --osi-z-dropdown: 100;
145
- --osi-z-sticky: 200;
146
145
  --osi-z-fixed: 300;
147
146
  --osi-z-modal: 400;
148
147
  --osi-z-popover: 500;
@@ -270,8 +270,8 @@
270
270
  }
271
271
 
272
272
  /* Priority-based visual indicators */
273
- .masonry-item--priority-critical {
274
- /* Critical sections get subtle emphasis */
273
+ .masonry-item[data-priority="1"] {
274
+ /* Priority 1 (highest) sections get subtle emphasis */
275
275
  &::before {
276
276
  content: "";
277
277
  position: absolute;
@@ -284,18 +284,12 @@
284
284
  }
285
285
  }
286
286
 
287
- .masonry-item--priority-important {
288
- /* Important sections - no special border, use unified styling */
287
+ .masonry-item[data-priority="2"],
288
+ .masonry-item[data-priority="3"] {
289
+ /* Priority 2 and 3 sections - no special border, use unified styling */
289
290
  /* Left accent border removed for consistency */
290
291
  }
291
292
 
292
- /* Sticky sections */
293
- .masonry-item--sticky {
294
- position: sticky !important;
295
- top: 0 !important;
296
- z-index: 10 !important;
297
- background: var(--card-background) !important;
298
- }
299
293
 
300
294
  /* Flex grow sections - expand to fill space */
301
295
  .masonry-item--flex-grow {
@@ -29,9 +29,9 @@
29
29
  visibility: visible !important;
30
30
  opacity: 1 !important;
31
31
 
32
- // Transparent container with 8px padding (library default)
32
+ // Transparent container with fixed padding (library default)
33
33
  // Must be set here immediately after all:initial to ensure application
34
- padding: 8px;
34
+ padding: 0;
35
35
  background: transparent !important;
36
36
  background-color: transparent !important;
37
37
 
@@ -60,11 +60,6 @@
60
60
 
61
61
  // Contain styles within shadow boundary
62
62
  contain: layout style;
63
-
64
- // Responsive: reduce padding on mobile
65
- @media (max-width: 480px) {
66
- padding: 4px;
67
- }
68
63
  }
69
64
 
70
65
  // Host context variations
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * OSI Cards - Responsive Design System
3
- *
3
+ *
4
4
  * Breakpoints and responsive utilities for cards and sections.
5
5
  */
6
6
 
@@ -89,32 +89,13 @@ $breakpoints: (
89
89
  .osi-card-container {
90
90
  @include container(card);
91
91
 
92
- // Base mobile styles
93
- --card-padding: 0.75rem;
92
+ // Fixed styles - no responsive behavior
93
+ --card-padding: 4px;
94
94
  --card-gap: 0.5rem;
95
95
  --card-title-size: 1rem;
96
96
  --section-title-size: 0.875rem;
97
97
  --field-label-size: 0.75rem;
98
98
  --field-value-size: 0.875rem;
99
-
100
- @include responsive("sm") {
101
- --card-padding: 1rem;
102
- --card-gap: 0.75rem;
103
- --card-title-size: 1.125rem;
104
- }
105
-
106
- @include responsive("md") {
107
- --card-padding: 1.25rem;
108
- --card-gap: 1rem;
109
- --card-title-size: 1.25rem;
110
- --section-title-size: 1rem;
111
- }
112
-
113
- @include responsive("lg") {
114
- --card-padding: 1.5rem;
115
- --card-gap: 1.25rem;
116
- --card-title-size: 1.375rem;
117
- }
118
99
  }
119
100
 
120
101
  // ============================================
@@ -189,10 +170,6 @@ $breakpoints: (
189
170
 
190
171
  .metric-value {
191
172
  font-size: 1.5rem;
192
-
193
- @include responsive("md") {
194
- font-size: 2rem;
195
- }
196
173
  }
197
174
  }
198
175
 
@@ -227,29 +204,29 @@ $breakpoints: (
227
204
  }
228
205
 
229
206
  // ============================================
230
- // Typography Responsive Utilities
207
+ // Typography Responsive Utilities (fixed)
231
208
  // ============================================
232
209
 
233
210
  .text-responsive {
234
- font-size: clamp(0.875rem, 2vw, 1rem);
211
+ font-size: 0.875rem;
235
212
  line-height: 1.5;
236
213
  }
237
214
 
238
215
  .heading-responsive {
239
- font-size: clamp(1.25rem, 4vw, 2rem);
216
+ font-size: 1.25rem;
240
217
  line-height: 1.2;
241
218
  }
242
219
 
243
220
  // ============================================
244
- // Spacing Responsive Utilities
221
+ // Spacing Responsive Utilities (fixed)
245
222
  // ============================================
246
223
 
247
224
  .space-responsive {
248
- padding: clamp(0.5rem, 2vw, 1.5rem);
225
+ padding: 0.5rem;
249
226
  }
250
227
 
251
228
  .gap-responsive {
252
- gap: clamp(0.5rem, 2vw, 1rem);
229
+ gap: 0.5rem;
253
230
  }
254
231
 
255
232
  // ============================================